diff --git a/3rdparty/libjpeg/CMakeLists.txt b/3rdparty/libjpeg/CMakeLists.txt index 028a583cff..65a9d1c8aa 100644 --- a/3rdparty/libjpeg/CMakeLists.txt +++ b/3rdparty/libjpeg/CMakeLists.txt @@ -9,7 +9,7 @@ ocv_include_directories(${CMAKE_CURRENT_SOURCE_DIR}) file(GLOB lib_srcs *.c) file(GLOB lib_hdrs *.h) -if(ANDROID OR IOS) +if(ANDROID OR IOS OR APPLE) ocv_list_filterout(lib_srcs jmemansi.c) else() ocv_list_filterout(lib_srcs jmemnobs.c) diff --git a/3rdparty/readme.txt b/3rdparty/readme.txt index ca46fbd576..64e2563a85 100644 --- a/3rdparty/readme.txt +++ b/3rdparty/readme.txt @@ -1,5 +1,5 @@ This folder contains libraries and headers of a few very popular still image codecs -used by highgui module. +used by imgcodecs module. The libraries and headers are preferably to build Win32 and Win64 versions of OpenCV. On UNIX systems all the libraries are automatically detected by configure script. In order to use these versions of libraries instead of system ones on UNIX systems you @@ -11,7 +11,7 @@ libjpeg 8d (8.4) - The Independent JPEG Group's JPEG software. See IGJ home page http://www.ijg.org for details and links to the source code - HAVE_JPEG preprocessor flag must be set to make highgui use libjpeg. + HAVE_JPEG preprocessor flag must be set to make imgcodecs use libjpeg. On UNIX systems configure script takes care of it. ------------------------------------------------------------------------------------ libpng 1.5.12 - Portable Network Graphics library. @@ -19,7 +19,7 @@ libpng 1.5.12 - Portable Network Graphics library. See libpng home page http://www.libpng.org for details and links to the source code - HAVE_PNG preprocessor flag must be set to make highgui use libpng. + HAVE_PNG preprocessor flag must be set to make imgcodecs use libpng. On UNIX systems configure script takes care of it. ------------------------------------------------------------------------------------ libtiff 4.0.2 - Tag Image File Format (TIFF) Software @@ -28,7 +28,7 @@ libtiff 4.0.2 - Tag Image File Format (TIFF) Software See libtiff home page http://www.remotesensing.org/libtiff/ for details and links to the source code - HAVE_TIFF preprocessor flag must be set to make highgui use libtiff. + HAVE_TIFF preprocessor flag must be set to make imgcodecs use libtiff. On UNIX systems configure script takes care of it. In this build support for ZIP (LZ77 compression) is turned on. ------------------------------------------------------------------------------------ @@ -37,7 +37,7 @@ zlib 1.2.7 - General purpose LZ77 compression library See zlib home page http://www.zlib.net for details and links to the source code - No preprocessor definition is needed to make highgui use this library - + No preprocessor definition is needed to make imgcodecs use this library - it is included automatically if either libpng or libtiff are used. ------------------------------------------------------------------------------------ jasper-1.900.1 - JasPer is a collection of software diff --git a/CMakeLists.txt b/CMakeLists.txt index 6eb38a3706..5c739cfb19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ # # ---------------------------------------------------------------------------- + + include(cmake/OpenCVMinDepVersions.cmake) if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3) @@ -135,6 +137,7 @@ OCV_OPTION(WITH_WEBP "Include WebP support" ON OCV_OPTION(WITH_OPENEXR "Include ILM support via OpenEXR" ON IF (NOT IOS) ) OCV_OPTION(WITH_OPENGL "Include OpenGL support" OFF IF (NOT ANDROID) ) OCV_OPTION(WITH_OPENNI "Include OpenNI support" OFF IF (NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_OPENNI2 "Include OpenNI2 support" OFF IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_PNG "Include PNG support" ON) OCV_OPTION(WITH_PVAPI "Include Prosilica GigE support" ON IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_GIGEAPI "Include Smartek GigE support" ON IF (NOT ANDROID AND NOT IOS) ) @@ -148,8 +151,8 @@ OCV_OPTION(WITH_TIFF "Include TIFF support" ON OCV_OPTION(WITH_UNICAP "Include Unicap support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) ) OCV_OPTION(WITH_V4L "Include Video 4 Linux support" ON IF (UNIX AND NOT ANDROID) ) OCV_OPTION(WITH_LIBV4L "Use libv4l for Video 4 Linux support" ON IF (UNIX AND NOT ANDROID) ) -OCV_OPTION(WITH_DSHOW "Build HighGUI with DirectShow support" ON IF (WIN32 AND NOT ARM) ) -OCV_OPTION(WITH_MSMF "Build HighGUI with Media Foundation support" OFF IF WIN32 ) +OCV_OPTION(WITH_DSHOW "Build VideoIO with DirectShow support" ON IF (WIN32 AND NOT ARM) ) +OCV_OPTION(WITH_MSMF "Build VideoIO with Media Foundation support" OFF IF WIN32 ) OCV_OPTION(WITH_XIMEA "Include XIMEA cameras support" OFF IF (NOT ANDROID AND NOT APPLE) ) OCV_OPTION(WITH_XINE "Include Xine support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) ) OCV_OPTION(WITH_CLP "Include Clp support (EPL)" OFF) @@ -335,6 +338,9 @@ if(DEFINED CMAKE_DEBUG_POSTFIX) set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}") endif() +if(INSTALL_CREATE_DISTRIB AND BUILD_SHARED_LIBS AND NOT DEFINED BUILD_opencv_world) + set(BUILD_opencv_world ON CACHE INTERNAL "") +endif() # ---------------------------------------------------------------------------- # Path for build/platform -specific headers @@ -552,7 +558,6 @@ endif() # ---------------------------------------------------------------------------- # Finalization: generate configuration-based files # ---------------------------------------------------------------------------- -ocv_track_build_dependencies() # Generate platform-dependent and configuration-dependent headers include(cmake/OpenCVGenHeaders.cmake) @@ -872,6 +877,11 @@ if(DEFINED WITH_OPENNI) THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})" ELSE NO) endif(DEFINED WITH_OPENNI) +if(DEFINED WITH_OPENNI2) + status(" OpenNI2:" HAVE_OPENNI2 THEN "YES (ver ${OPENNI2_VERSION_STRING}, build ${OPENNI2_VERSION_BUILD})" + ELSE NO) +endif(DEFINED WITH_OPENNI2) + if(DEFINED WITH_PVAPI) status(" PvAPI:" HAVE_PVAPI THEN YES ELSE NO) endif(DEFINED WITH_PVAPI) @@ -998,18 +1008,34 @@ endif() # ========================== python ========================== status("") -status(" Python:") -status(" Interpreter:" PYTHONINTERP_FOUND THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_STRING})" ELSE NO) -if(BUILD_opencv_python) - if(PYTHONLIBS_VERSION_STRING) - status(" Libraries:" HAVE_opencv_python THEN "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO) +status(" Python 2:") +status(" Interpreter:" PYTHON2INTERP_FOUND THEN "${PYTHON2_EXECUTABLE} (ver ${PYTHON2_VERSION_STRING})" ELSE NO) +if(BUILD_opencv_python2) + if(PYTHON2LIBS_VERSION_STRING) + status(" Libraries:" HAVE_opencv_python2 THEN "${PYTHON2_LIBRARIES} (ver ${PYTHON2LIBS_VERSION_STRING})" ELSE NO) else() - status(" Libraries:" HAVE_opencv_python THEN "${PYTHON_LIBRARIES}" ELSE NO) + status(" Libraries:" HAVE_opencv_python2 THEN "${PYTHON2_LIBRARIES}" ELSE NO) endif() - status(" numpy:" PYTHON_NUMPY_INCLUDE_DIRS THEN "${PYTHON_NUMPY_INCLUDE_DIRS} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)") - status(" packages path:" PYTHON_EXECUTABLE THEN "${PYTHON_PACKAGES_PATH}" ELSE "-") + status(" numpy:" PYTHON2_NUMPY_INCLUDE_DIRS THEN "${PYTHON2_NUMPY_INCLUDE_DIRS} (ver ${PYTHON2_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)") + status(" packages path:" PYTHON2_EXECUTABLE THEN "${PYTHON2_PACKAGES_PATH}" ELSE "-") endif() +status("") +status(" Python 3:") +status(" Interpreter:" PYTHON3INTERP_FOUND THEN "${PYTHON3_EXECUTABLE} (ver ${PYTHON3_VERSION_STRING})" ELSE NO) +if(BUILD_opencv_python3) + if(PYTHON3LIBS_VERSION_STRING) + status(" Libraries:" HAVE_opencv_python3 THEN "${PYTHON3_LIBRARIES} (ver ${PYTHON3LIBS_VERSION_STRING})" ELSE NO) + else() + status(" Libraries:" HAVE_opencv_python3 THEN "${PYTHON3_LIBRARIES}" ELSE NO) + endif() + status(" numpy:" PYTHON3_NUMPY_INCLUDE_DIRS THEN "${PYTHON3_NUMPY_INCLUDE_DIRS} (ver ${PYTHON3_NUMPY_VERSION})" ELSE "NO (Python3 wrappers can not be generated)") + status(" packages path:" PYTHON3_EXECUTABLE THEN "${PYTHON3_PACKAGES_PATH}" ELSE "-") +endif() + +status("") +status(" Python (for build):" PYTHON_DEFAULT_AVAILABLE THEN "${PYTHON_DEFAULT_EXECUTABLE}" ELSE NO) + # ========================== java ========================== status("") status(" Java:") diff --git a/apps/traincascade/CMakeLists.txt b/apps/traincascade/CMakeLists.txt index e560ed815c..59d48172da 100644 --- a/apps/traincascade/CMakeLists.txt +++ b/apps/traincascade/CMakeLists.txt @@ -1,4 +1,4 @@ -set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_ml opencv_imgproc opencv_photo opencv_objdetect opencv_highgui opencv_calib3d opencv_video opencv_features2d) +set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_imgproc opencv_objdetect opencv_imgcodecs opencv_highgui opencv_calib3d opencv_features2d) ocv_check_dependencies(${OPENCV_TRAINCASCADE_DEPS}) if(NOT OCV_DEPENDENCIES_FOUND) @@ -6,21 +6,18 @@ if(NOT OCV_DEPENDENCIES_FOUND) endif() project(traincascade) - -ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") -ocv_include_modules(${OPENCV_TRAINCASCADE_DEPS}) - -set(traincascade_files traincascade.cpp - cascadeclassifier.cpp cascadeclassifier.h - boost.cpp boost.h features.cpp traincascade_features.h - haarfeatures.cpp haarfeatures.h - lbpfeatures.cpp lbpfeatures.h - HOGfeatures.cpp HOGfeatures.h - imagestorage.cpp imagestorage.h) - set(the_target opencv_traincascade) -add_executable(${the_target} ${traincascade_files}) -target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) + +ocv_target_include_directories(${the_target} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") +ocv_target_include_modules(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) + +file(GLOB SRCS *.cpp) +file(GLOB HDRS *.h*) + +set(traincascade_files ${SRCS} ${HDRS}) + +ocv_add_executable(${the_target} ${traincascade_files}) +ocv_target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) set_target_properties(${the_target} PROPERTIES DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" diff --git a/apps/traincascade/boost.h b/apps/traincascade/boost.h index 0edf776a5b..48d4789b9c 100644 --- a/apps/traincascade/boost.h +++ b/apps/traincascade/boost.h @@ -2,7 +2,7 @@ #define _OPENCV_BOOST_H_ #include "traincascade_features.h" -#include "ml.h" +#include "old_ml.hpp" struct CvCascadeBoostParams : CvBoostParams { diff --git a/apps/traincascade/cascadeclassifier.h b/apps/traincascade/cascadeclassifier.h index 93be478b4e..6d6cb5b3f9 100644 --- a/apps/traincascade/cascadeclassifier.h +++ b/apps/traincascade/cascadeclassifier.h @@ -7,8 +7,6 @@ #include "lbpfeatures.h" #include "HOGfeatures.h" //new #include "boost.h" -#include "cv.h" -#include "cxcore.h" #define CC_CASCADE_FILENAME "cascade.xml" #define CC_PARAMS_FILENAME "params.xml" diff --git a/apps/traincascade/imagestorage.cpp b/apps/traincascade/imagestorage.cpp index e69a7df1ad..2f791240e4 100644 --- a/apps/traincascade/imagestorage.cpp +++ b/apps/traincascade/imagestorage.cpp @@ -1,6 +1,7 @@ #include "opencv2/core.hpp" +#include "opencv2/core/core_c.h" #include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #include "imagestorage.h" #include diff --git a/apps/traincascade/imagestorage.h b/apps/traincascade/imagestorage.h index fb68e25cb2..38ca52a8b5 100644 --- a/apps/traincascade/imagestorage.h +++ b/apps/traincascade/imagestorage.h @@ -1,9 +1,6 @@ #ifndef _OPENCV_IMAGESTORAGE_H_ #define _OPENCV_IMAGESTORAGE_H_ -#include "highgui.h" - - class CvCascadeImageReader { diff --git a/apps/traincascade/old_ml.hpp b/apps/traincascade/old_ml.hpp new file mode 100644 index 0000000000..6ec31a025d --- /dev/null +++ b/apps/traincascade/old_ml.hpp @@ -0,0 +1,2165 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#ifndef __OPENCV_ML_HPP__ +#define __OPENCV_ML_HPP__ + +#ifdef __cplusplus +# include "opencv2/core.hpp" +#endif + +#include "opencv2/core/core_c.h" +#include + +#ifdef __cplusplus + +#include +#include + +// Apple defines a check() macro somewhere in the debug headers +// that interferes with a method definiton in this header +#undef check + +/****************************************************************************************\ +* Main struct definitions * +\****************************************************************************************/ + +/* log(2*PI) */ +#define CV_LOG2PI (1.8378770664093454835606594728112) + +/* columns of matrix are training samples */ +#define CV_COL_SAMPLE 0 + +/* rows of matrix are training samples */ +#define CV_ROW_SAMPLE 1 + +#define CV_IS_ROW_SAMPLE(flags) ((flags) & CV_ROW_SAMPLE) + +struct CvVectors +{ + int type; + int dims, count; + CvVectors* next; + union + { + uchar** ptr; + float** fl; + double** db; + } data; +}; + +#if 0 +/* A structure, representing the lattice range of statmodel parameters. + It is used for optimizing statmodel parameters by cross-validation method. + The lattice is logarithmic, so must be greater then 1. */ +typedef struct CvParamLattice +{ + double min_val; + double max_val; + double step; +} +CvParamLattice; + +CV_INLINE CvParamLattice cvParamLattice( double min_val, double max_val, + double log_step ) +{ + CvParamLattice pl; + pl.min_val = MIN( min_val, max_val ); + pl.max_val = MAX( min_val, max_val ); + pl.step = MAX( log_step, 1. ); + return pl; +} + +CV_INLINE CvParamLattice cvDefaultParamLattice( void ) +{ + CvParamLattice pl = {0,0,0}; + return pl; +} +#endif + +/* Variable type */ +#define CV_VAR_NUMERICAL 0 +#define CV_VAR_ORDERED 0 +#define CV_VAR_CATEGORICAL 1 + +#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm" +#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn" +#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian" +#define CV_TYPE_NAME_ML_EM "opencv-ml-em" +#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree" +#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree" +#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp" +#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn" +#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees" +#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees" +#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees" + +#define CV_TRAIN_ERROR 0 +#define CV_TEST_ERROR 1 + +class CvStatModel +{ +public: + CvStatModel(); + virtual ~CvStatModel(); + + virtual void clear(); + + CV_WRAP virtual void save( const char* filename, const char* name=0 ) const; + CV_WRAP virtual void load( const char* filename, const char* name=0 ); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + +protected: + const char* default_model_name; +}; + +/****************************************************************************************\ +* Normal Bayes Classifier * +\****************************************************************************************/ + +/* The structure, representing the grid range of statmodel parameters. + It is used for optimizing statmodel accuracy by varying model parameters, + the accuracy estimate being computed by cross-validation. + The grid is logarithmic, so must be greater then 1. */ + +class CvMLData; + +struct CvParamGrid +{ + // SVM params type + enum { SVM_C=0, SVM_GAMMA=1, SVM_P=2, SVM_NU=3, SVM_COEF=4, SVM_DEGREE=5 }; + + CvParamGrid() + { + min_val = max_val = step = 0; + } + + CvParamGrid( double min_val, double max_val, double log_step ); + //CvParamGrid( int param_id ); + bool check() const; + + CV_PROP_RW double min_val; + CV_PROP_RW double max_val; + CV_PROP_RW double step; +}; + +inline CvParamGrid::CvParamGrid( double _min_val, double _max_val, double _log_step ) +{ + min_val = _min_val; + max_val = _max_val; + step = _log_step; +} + +class CvNormalBayesClassifier : public CvStatModel +{ +public: + CV_WRAP CvNormalBayesClassifier(); + virtual ~CvNormalBayesClassifier(); + + CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0 ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ); + + virtual float predict( const CvMat* samples, CV_OUT CvMat* results=0, CV_OUT CvMat* results_prob=0 ) const; + CV_WRAP virtual void clear(); + + CV_WRAP CvNormalBayesClassifier( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat() ); + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx = cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + bool update=false ); + CV_WRAP virtual float predict( const cv::Mat& samples, CV_OUT cv::Mat* results=0, CV_OUT cv::Mat* results_prob=0 ) const; + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + +protected: + int var_count, var_all; + CvMat* var_idx; + CvMat* cls_labels; + CvMat** count; + CvMat** sum; + CvMat** productsum; + CvMat** avg; + CvMat** inv_eigen_values; + CvMat** cov_rotate_mats; + CvMat* c; +}; + + +/****************************************************************************************\ +* K-Nearest Neighbour Classifier * +\****************************************************************************************/ + +// k Nearest Neighbors +class CvKNearest : public CvStatModel +{ +public: + + CV_WRAP CvKNearest(); + virtual ~CvKNearest(); + + CvKNearest( const CvMat* trainData, const CvMat* responses, + const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* sampleIdx=0, bool is_regression=false, + int maxK=32, bool updateBase=false ); + + virtual float find_nearest( const CvMat* samples, int k, CV_OUT CvMat* results=0, + const float** neighbors=0, CV_OUT CvMat* neighborResponses=0, CV_OUT CvMat* dist=0 ) const; + + CV_WRAP CvKNearest( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, int max_k=32 ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, + int maxK=32, bool updateBase=false ); + + virtual float find_nearest( const cv::Mat& samples, int k, cv::Mat* results=0, + const float** neighbors=0, cv::Mat* neighborResponses=0, + cv::Mat* dist=0 ) const; + CV_WRAP virtual float find_nearest( const cv::Mat& samples, int k, CV_OUT cv::Mat& results, + CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const; + + virtual void clear(); + int get_max_k() const; + int get_var_count() const; + int get_sample_count() const; + bool is_regression() const; + + virtual float write_results( int k, int k1, int start, int end, + const float* neighbor_responses, const float* dist, CvMat* _results, + CvMat* _neighbor_responses, CvMat* _dist, Cv32suf* sort_buf ) const; + + virtual void find_neighbors_direct( const CvMat* _samples, int k, int start, int end, + float* neighbor_responses, const float** neighbors, float* dist ) const; + +protected: + + int max_k, var_count; + int total; + bool regression; + CvVectors* samples; +}; + +/****************************************************************************************\ +* Support Vector Machines * +\****************************************************************************************/ + +// SVM training parameters +struct CvSVMParams +{ + CvSVMParams(); + CvSVMParams( int svm_type, int kernel_type, + double degree, double gamma, double coef0, + double Cvalue, double nu, double p, + CvMat* class_weights, CvTermCriteria term_crit ); + + CV_PROP_RW int svm_type; + CV_PROP_RW int kernel_type; + CV_PROP_RW double degree; // for poly + CV_PROP_RW double gamma; // for poly/rbf/sigmoid/chi2 + CV_PROP_RW double coef0; // for poly/sigmoid + + CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR + CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR + CV_PROP_RW double p; // for CV_SVM_EPS_SVR + CvMat* class_weights; // for CV_SVM_C_SVC + CV_PROP_RW CvTermCriteria term_crit; // termination criteria +}; + + +struct CvSVMKernel +{ + typedef void (CvSVMKernel::*Calc)( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + CvSVMKernel(); + CvSVMKernel( const CvSVMParams* params, Calc _calc_func ); + virtual bool create( const CvSVMParams* params, Calc _calc_func ); + virtual ~CvSVMKernel(); + + virtual void clear(); + virtual void calc( int vcount, int n, const float** vecs, const float* another, float* results ); + + const CvSVMParams* params; + Calc calc_func; + + virtual void calc_non_rbf_base( int vec_count, int vec_size, const float** vecs, + const float* another, float* results, + double alpha, double beta ); + virtual void calc_intersec( int vcount, int var_count, const float** vecs, + const float* another, float* results ); + virtual void calc_chi2( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_linear( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_rbf( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_poly( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); + virtual void calc_sigmoid( int vec_count, int vec_size, const float** vecs, + const float* another, float* results ); +}; + + +struct CvSVMKernelRow +{ + CvSVMKernelRow* prev; + CvSVMKernelRow* next; + float* data; +}; + + +struct CvSVMSolutionInfo +{ + double obj; + double rho; + double upper_bound_p; + double upper_bound_n; + double r; // for Solver_NU +}; + +class CvSVMSolver +{ +public: + typedef bool (CvSVMSolver::*SelectWorkingSet)( int& i, int& j ); + typedef float* (CvSVMSolver::*GetRow)( int i, float* row, float* dst, bool existed ); + typedef void (CvSVMSolver::*CalcRho)( double& rho, double& r ); + + CvSVMSolver(); + + CvSVMSolver( int count, int var_count, const float** samples, schar* y, + int alpha_count, double* alpha, double Cp, double Cn, + CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, + SelectWorkingSet select_working_set, CalcRho calc_rho ); + virtual bool create( int count, int var_count, const float** samples, schar* y, + int alpha_count, double* alpha, double Cp, double Cn, + CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, + SelectWorkingSet select_working_set, CalcRho calc_rho ); + virtual ~CvSVMSolver(); + + virtual void clear(); + virtual bool solve_generic( CvSVMSolutionInfo& si ); + + virtual bool solve_c_svc( int count, int var_count, const float** samples, schar* y, + double Cp, double Cn, CvMemStorage* storage, + CvSVMKernel* kernel, double* alpha, CvSVMSolutionInfo& si ); + virtual bool solve_nu_svc( int count, int var_count, const float** samples, schar* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + virtual bool solve_one_class( int count, int var_count, const float** samples, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual bool solve_eps_svr( int count, int var_count, const float** samples, const float* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual bool solve_nu_svr( int count, int var_count, const float** samples, const float* y, + CvMemStorage* storage, CvSVMKernel* kernel, + double* alpha, CvSVMSolutionInfo& si ); + + virtual float* get_row_base( int i, bool* _existed ); + virtual float* get_row( int i, float* dst ); + + int sample_count; + int var_count; + int cache_size; + int cache_line_size; + const float** samples; + const CvSVMParams* params; + CvMemStorage* storage; + CvSVMKernelRow lru_list; + CvSVMKernelRow* rows; + + int alpha_count; + + double* G; + double* alpha; + + // -1 - lower bound, 0 - free, 1 - upper bound + schar* alpha_status; + + schar* y; + double* b; + float* buf[2]; + double eps; + int max_iter; + double C[2]; // C[0] == Cn, C[1] == Cp + CvSVMKernel* kernel; + + SelectWorkingSet select_working_set_func; + CalcRho calc_rho_func; + GetRow get_row_func; + + virtual bool select_working_set( int& i, int& j ); + virtual bool select_working_set_nu_svm( int& i, int& j ); + virtual void calc_rho( double& rho, double& r ); + virtual void calc_rho_nu_svm( double& rho, double& r ); + + virtual float* get_row_svc( int i, float* row, float* dst, bool existed ); + virtual float* get_row_one_class( int i, float* row, float* dst, bool existed ); + virtual float* get_row_svr( int i, float* row, float* dst, bool existed ); +}; + + +struct CvSVMDecisionFunc +{ + double rho; + int sv_count; + double* alpha; + int* sv_index; +}; + + +// SVM model +class CvSVM : public CvStatModel +{ +public: + // SVM type + enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 }; + + // SVM kernel type + enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; + + // SVM params type + enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 }; + + CV_WRAP CvSVM(); + virtual ~CvSVM(); + + CvSVM( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0, + CvSVMParams params=CvSVMParams() ); + + virtual bool train( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx=0, const CvMat* sampleIdx=0, + CvSVMParams params=CvSVMParams() ); + + virtual bool train_auto( const CvMat* trainData, const CvMat* responses, + const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, + int kfold = 10, + CvParamGrid Cgrid = get_default_grid(CvSVM::C), + CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), + CvParamGrid pGrid = get_default_grid(CvSVM::P), + CvParamGrid nuGrid = get_default_grid(CvSVM::NU), + CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), + CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), + bool balanced=false ); + + virtual float predict( const CvMat* sample, bool returnDFVal=false ) const; + virtual float predict( const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal=false ) const; + + CV_WRAP CvSVM( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + CvSVMParams params=CvSVMParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), + CvSVMParams params=CvSVMParams() ); + + CV_WRAP virtual bool train_auto( const cv::Mat& trainData, const cv::Mat& responses, + const cv::Mat& varIdx, const cv::Mat& sampleIdx, CvSVMParams params, + int k_fold = 10, + CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), + CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), + CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), + CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), + CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), + CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), + bool balanced=false); + CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const; + CV_WRAP_AS(predict_all) virtual void predict( cv::InputArray samples, cv::OutputArray results ) const; + + CV_WRAP virtual int get_support_vector_count() const; + virtual const float* get_support_vector(int i) const; + virtual CvSVMParams get_params() const { return params; } + CV_WRAP virtual void clear(); + + virtual const CvSVMDecisionFunc* get_decision_function() const { return decision_func; } + + static CvParamGrid get_default_grid( int param_id ); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + CV_WRAP int get_var_count() const { return var_idx ? var_idx->cols : var_all; } + +protected: + + virtual bool set_params( const CvSVMParams& params ); + virtual bool train1( int sample_count, int var_count, const float** samples, + const void* responses, double Cp, double Cn, + CvMemStorage* _storage, double* alpha, double& rho ); + virtual bool do_train( int svm_type, int sample_count, int var_count, const float** samples, + const CvMat* responses, CvMemStorage* _storage, double* alpha ); + virtual void create_kernel(); + virtual void create_solver(); + + virtual float predict( const float* row_sample, int row_len, bool returnDFVal=false ) const; + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + void optimize_linear_svm(); + + CvSVMParams params; + CvMat* class_labels; + int var_all; + float** sv; + int sv_total; + CvMat* var_idx; + CvMat* class_weights; + CvSVMDecisionFunc* decision_func; + CvMemStorage* storage; + + CvSVMSolver* solver; + CvSVMKernel* kernel; + +private: + CvSVM(const CvSVM&); + CvSVM& operator = (const CvSVM&); +}; + +/****************************************************************************************\ +* Expectation - Maximization * +\****************************************************************************************/ +namespace cv +{ +class EM : public Algorithm +{ +public: + // Type of covariation matrices + enum {COV_MAT_SPHERICAL=0, COV_MAT_DIAGONAL=1, COV_MAT_GENERIC=2, COV_MAT_DEFAULT=COV_MAT_DIAGONAL}; + + // Default parameters + enum {DEFAULT_NCLUSTERS=5, DEFAULT_MAX_ITERS=100}; + + // The initial step + enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0}; + + CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, + const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, + EM::DEFAULT_MAX_ITERS, FLT_EPSILON)); + + virtual ~EM(); + CV_WRAP virtual void clear(); + + CV_WRAP virtual bool train(InputArray samples, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP virtual bool trainE(InputArray samples, + InputArray means0, + InputArray covs0=noArray(), + InputArray weights0=noArray(), + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP virtual bool trainM(InputArray samples, + InputArray probs0, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray()); + + CV_WRAP Vec2d predict(InputArray sample, + OutputArray probs=noArray()) const; + + CV_WRAP bool isTrained() const; + + AlgorithmInfo* info() const; + virtual void read(const FileNode& fn); + +protected: + + virtual void setTrainData(int startStep, const Mat& samples, + const Mat* probs0, + const Mat* means0, + const std::vector* covs0, + const Mat* weights0); + + bool doTrain(int startStep, + OutputArray logLikelihoods, + OutputArray labels, + OutputArray probs); + virtual void eStep(); + virtual void mStep(); + + void clusterTrainSamples(); + void decomposeCovs(); + void computeLogWeightDivDet(); + + Vec2d computeProbabilities(const Mat& sample, Mat* probs) const; + + // all inner matrices have type CV_64FC1 + CV_PROP_RW int nclusters; + CV_PROP_RW int covMatType; + CV_PROP_RW int maxIters; + CV_PROP_RW double epsilon; + + Mat trainSamples; + Mat trainProbs; + Mat trainLogLikelihoods; + Mat trainLabels; + + CV_PROP Mat weights; + CV_PROP Mat means; + CV_PROP std::vector covs; + + std::vector covsEigenValues; + std::vector covsRotateMats; + std::vector invCovsEigenValues; + Mat logWeightDivDet; +}; +} // namespace cv + +/****************************************************************************************\ +* Decision Tree * +\****************************************************************************************/\ +struct CvPair16u32s +{ + unsigned short* u; + int* i; +}; + + +#define CV_DTREE_CAT_DIR(idx,subset) \ + (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) + +struct CvDTreeSplit +{ + int var_idx; + int condensed_idx; + int inversed; + float quality; + CvDTreeSplit* next; + union + { + int subset[2]; + struct + { + float c; + int split_point; + } + ord; + }; +}; + +struct CvDTreeNode +{ + int class_idx; + int Tn; + double value; + + CvDTreeNode* parent; + CvDTreeNode* left; + CvDTreeNode* right; + + CvDTreeSplit* split; + + int sample_count; + int depth; + int* num_valid; + int offset; + int buf_idx; + double maxlr; + + // global pruning data + int complexity; + double alpha; + double node_risk, tree_risk, tree_error; + + // cross-validation pruning data + int* cv_Tn; + double* cv_node_risk; + double* cv_node_error; + + int get_num_valid(int vi) { return num_valid ? num_valid[vi] : sample_count; } + void set_num_valid(int vi, int n) { if( num_valid ) num_valid[vi] = n; } +}; + + +struct CvDTreeParams +{ + CV_PROP_RW int max_categories; + CV_PROP_RW int max_depth; + CV_PROP_RW int min_sample_count; + CV_PROP_RW int cv_folds; + CV_PROP_RW bool use_surrogates; + CV_PROP_RW bool use_1se_rule; + CV_PROP_RW bool truncate_pruned_tree; + CV_PROP_RW float regression_accuracy; + const float* priors; + + CvDTreeParams(); + CvDTreeParams( int max_depth, int min_sample_count, + float regression_accuracy, bool use_surrogates, + int max_categories, int cv_folds, + bool use_1se_rule, bool truncate_pruned_tree, + const float* priors ); +}; + + +struct CvDTreeTrainData +{ + CvDTreeTrainData(); + CvDTreeTrainData( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false ); + virtual ~CvDTreeTrainData(); + + virtual void set_data( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false, + bool _update_data=false ); + virtual void do_responses_copy(); + + virtual void get_vectors( const CvMat* _subsample_idx, + float* values, uchar* missing, float* responses, bool get_class_idx=false ); + + virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + // release all the data + virtual void clear(); + + int get_num_classes() const; + int get_var_type(int vi) const; + int get_work_var_count() const {return work_var_count;} + + virtual const float* get_ord_responses( CvDTreeNode* n, float* values_buf, int* sample_indices_buf ); + virtual const int* get_class_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); + virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); + virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, + const float** ord_values, const int** sorted_indices, int* sample_indices_buf ); + virtual int get_child_buf_idx( CvDTreeNode* n ); + + //////////////////////////////////// + + virtual bool set_params( const CvDTreeParams& params ); + virtual CvDTreeNode* new_node( CvDTreeNode* parent, int count, + int storage_idx, int offset ); + + virtual CvDTreeSplit* new_split_ord( int vi, float cmp_val, + int split_point, int inversed, float quality ); + virtual CvDTreeSplit* new_split_cat( int vi, float quality ); + virtual void free_node_data( CvDTreeNode* node ); + virtual void free_train_data(); + virtual void free_node( CvDTreeNode* node ); + + int sample_count, var_all, var_count, max_c_count; + int ord_var_count, cat_var_count, work_var_count; + bool have_labels, have_priors; + bool is_classifier; + int tflag; + + const CvMat* train_data; + const CvMat* responses; + CvMat* responses_copy; // used in Boosting + + int buf_count, buf_size; // buf_size is obsolete, please do not use it, use expression ((int64)buf->rows * (int64)buf->cols / buf_count) instead + bool shared; + int is_buf_16u; + + CvMat* cat_count; + CvMat* cat_ofs; + CvMat* cat_map; + + CvMat* counts; + CvMat* buf; + inline size_t get_length_subbuf() const + { + size_t res = (size_t)(work_var_count + 1) * (size_t)sample_count; + return res; + } + + CvMat* direction; + CvMat* split_buf; + + CvMat* var_idx; + CvMat* var_type; // i-th element = + // k<0 - ordered + // k>=0 - categorical, see k-th element of cat_* arrays + CvMat* priors; + CvMat* priors_mult; + + CvDTreeParams params; + + CvMemStorage* tree_storage; + CvMemStorage* temp_storage; + + CvDTreeNode* data_root; + + CvSet* node_heap; + CvSet* split_heap; + CvSet* cv_heap; + CvSet* nv_heap; + + cv::RNG* rng; +}; + +class CvDTree; +class CvForestTree; + +namespace cv +{ + struct DTreeBestSplitFinder; + struct ForestTreeBestSplitFinder; +} + +class CvDTree : public CvStatModel +{ +public: + CV_WRAP CvDTree(); + virtual ~CvDTree(); + + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + + virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ); + + // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + virtual float calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ); + + virtual CvDTreeNode* predict( const CvMat* sample, const CvMat* missingDataMask=0, + bool preprocessedInput=false ) const; + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvDTreeParams params=CvDTreeParams() ); + + CV_WRAP virtual CvDTreeNode* predict( const cv::Mat& sample, const cv::Mat& missingDataMask=cv::Mat(), + bool preprocessedInput=false ) const; + CV_WRAP virtual cv::Mat getVarImportance(); + + virtual const CvMat* get_var_importance(); + CV_WRAP virtual void clear(); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* fs, const char* name ) const; + + // special read & write methods for trees in the tree ensembles + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + virtual void write( CvFileStorage* fs ) const; + + const CvDTreeNode* get_root() const; + int get_pruned_tree_idx() const; + CvDTreeTrainData* get_data(); + +protected: + friend struct cv::DTreeBestSplitFinder; + + virtual bool do_train( const CvMat* _subsample_idx ); + + virtual void try_split_node( CvDTreeNode* n ); + virtual void split_node_data( CvDTreeNode* n ); + virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual double calc_node_dir( CvDTreeNode* node ); + virtual void complete_node_dir( CvDTreeNode* node ); + virtual void cluster_categories( const int* vectors, int vector_count, + int var_count, int* sums, int k, int* cluster_labels ); + + virtual void calc_node_value( CvDTreeNode* node ); + + virtual void prune_cv(); + virtual double update_tree_rnc( int T, int fold ); + virtual int cut_tree( int T, int fold, double min_alpha ); + virtual void free_prune_data(bool cut_tree); + virtual void free_tree(); + + virtual void write_node( CvFileStorage* fs, CvDTreeNode* node ) const; + virtual void write_split( CvFileStorage* fs, CvDTreeSplit* split ) const; + virtual CvDTreeNode* read_node( CvFileStorage* fs, CvFileNode* node, CvDTreeNode* parent ); + virtual CvDTreeSplit* read_split( CvFileStorage* fs, CvFileNode* node ); + virtual void write_tree_nodes( CvFileStorage* fs ) const; + virtual void read_tree_nodes( CvFileStorage* fs, CvFileNode* node ); + + CvDTreeNode* root; + CvMat* var_importance; + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + +public: + int pruned_tree_idx; +}; + + +/****************************************************************************************\ +* Random Trees Classifier * +\****************************************************************************************/ + +class CvRTrees; + +class CvForestTree: public CvDTree +{ +public: + CvForestTree(); + virtual ~CvForestTree(); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees* forest ); + + virtual int get_var_count() const {return data ? data->var_count : 0;} + virtual void read( CvFileStorage* fs, CvFileNode* node, CvRTrees* forest, CvDTreeTrainData* _data ); + + /* dummy methods to avoid warnings: BEGIN */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + /* dummy methods to avoid warnings: END */ + +protected: + friend struct cv::ForestTreeBestSplitFinder; + + virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); + CvRTrees* forest; +}; + + +struct CvRTParams : public CvDTreeParams +{ + //Parameters for the forest + CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance + CV_PROP_RW int nactive_vars; + CV_PROP_RW CvTermCriteria term_crit; + + CvRTParams(); + CvRTParams( int max_depth, int min_sample_count, + float regression_accuracy, bool use_surrogates, + int max_categories, const float* priors, bool calc_var_importance, + int nactive_vars, int max_num_of_trees_in_the_forest, + float forest_accuracy, int termcrit_type ); +}; + + +class CvRTrees : public CvStatModel +{ +public: + CV_WRAP CvRTrees(); + virtual ~CvRTrees(); + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvRTParams params=CvRTParams() ); + + virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); + virtual float predict( const CvMat* sample, const CvMat* missing = 0 ) const; + virtual float predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const; + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvRTParams params=CvRTParams() ); + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; + CV_WRAP virtual float predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; + CV_WRAP virtual cv::Mat getVarImportance(); + + CV_WRAP virtual void clear(); + + virtual const CvMat* get_var_importance(); + virtual float get_proximity( const CvMat* sample1, const CvMat* sample2, + const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const; + + virtual float calc_error( CvMLData* data, int type , std::vector* resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + + virtual float get_train_error(); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* fs, const char* name ) const; + + CvMat* get_active_var_mask(); + CvRNG* get_rng(); + + int get_tree_count() const; + CvForestTree* get_tree(int i) const; + +protected: + virtual cv::String getName() const; + + virtual bool grow_forest( const CvTermCriteria term_crit ); + + // array of the trees of the forest + CvForestTree** trees; + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + int ntrees; + int nclasses; + double oob_error; + CvMat* var_importance; + int nsamples; + + cv::RNG* rng; + CvMat* active_var_mask; +}; + +/****************************************************************************************\ +* Extremely randomized trees Classifier * +\****************************************************************************************/ +struct CvERTreeTrainData : public CvDTreeTrainData +{ + virtual void set_data( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + const CvDTreeParams& params=CvDTreeParams(), + bool _shared=false, bool _add_labels=false, + bool _update_data=false ); + virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, + const float** ord_values, const int** missing, int* sample_buf = 0 ); + virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); + virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); + virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); + virtual void get_vectors( const CvMat* _subsample_idx, float* values, uchar* missing, + float* responses, bool get_class_idx=false ); + virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); + const CvMat* missing_mask; +}; + +class CvForestERTree : public CvForestTree +{ +protected: + virtual double calc_node_dir( CvDTreeNode* node ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual void split_node_data( CvDTreeNode* n ); +}; + +class CvERTrees : public CvRTrees +{ +public: + CV_WRAP CvERTrees(); + virtual ~CvERTrees(); + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvRTParams params=CvRTParams()); + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvRTParams params=CvRTParams()); + virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); +protected: + virtual cv::String getName() const; + virtual bool grow_forest( const CvTermCriteria term_crit ); +}; + + +/****************************************************************************************\ +* Boosted tree classifier * +\****************************************************************************************/ + +struct CvBoostParams : public CvDTreeParams +{ + CV_PROP_RW int boost_type; + CV_PROP_RW int weak_count; + CV_PROP_RW int split_criteria; + CV_PROP_RW double weight_trim_rate; + + CvBoostParams(); + CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, + int max_depth, bool use_surrogates, const float* priors ); +}; + + +class CvBoost; + +class CvBoostTree: public CvDTree +{ +public: + CvBoostTree(); + virtual ~CvBoostTree(); + + virtual bool train( CvDTreeTrainData* trainData, + const CvMat* subsample_idx, CvBoost* ensemble ); + + virtual void scale( double s ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvBoost* ensemble, CvDTreeTrainData* _data ); + virtual void clear(); + + /* dummy methods to avoid warnings: BEGIN */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvDTreeParams params=CvDTreeParams() ); + virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void read( CvFileStorage* fs, CvFileNode* node, + CvDTreeTrainData* data ); + /* dummy methods to avoid warnings: END */ + +protected: + + virtual void try_split_node( CvDTreeNode* n ); + virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, + float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); + virtual void calc_node_value( CvDTreeNode* n ); + virtual double calc_node_dir( CvDTreeNode* n ); + + CvBoost* ensemble; +}; + + +class CvBoost : public CvStatModel +{ +public: + // Boosting type + enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 }; + + // Splitting criteria + enum { DEFAULT=0, GINI=1, MISCLASS=3, SQERR=4 }; + + CV_WRAP CvBoost(); + virtual ~CvBoost(); + + CvBoost( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvBoostParams params=CvBoostParams() ); + + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvBoostParams params=CvBoostParams(), + bool update=false ); + + virtual bool train( CvMLData* data, + CvBoostParams params=CvBoostParams(), + bool update=false ); + + virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, + bool raw_mode=false, bool return_sum=false ) const; + + CV_WRAP CvBoost( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvBoostParams params=CvBoostParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvBoostParams params=CvBoostParams(), + bool update=false ); + + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), + const cv::Range& slice=cv::Range::all(), bool rawMode=false, + bool returnSum=false ) const; + + virtual float calc_error( CvMLData* _data, int type , std::vector *resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} + + CV_WRAP virtual void prune( CvSlice slice ); + + CV_WRAP virtual void clear(); + + virtual void write( CvFileStorage* storage, const char* name ) const; + virtual void read( CvFileStorage* storage, CvFileNode* node ); + virtual const CvMat* get_active_vars(bool absolute_idx=true); + + CvSeq* get_weak_predictors(); + + CvMat* get_weights(); + CvMat* get_subtree_weights(); + CvMat* get_weak_response(); + const CvBoostParams& get_params() const; + const CvDTreeTrainData* get_data() const; + +protected: + + virtual bool set_params( const CvBoostParams& params ); + virtual void update_weights( CvBoostTree* tree ); + virtual void trim_weights(); + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + virtual void initialize_weights(double (&p)[2]); + + CvDTreeTrainData* data; + CvMat train_data_hdr, responses_hdr; + cv::Mat train_data_mat, responses_mat; + CvBoostParams params; + CvSeq* weak; + + CvMat* active_vars; + CvMat* active_vars_abs; + bool have_active_cat_vars; + + CvMat* orig_response; + CvMat* sum_response; + CvMat* weak_eval; + CvMat* subsample_mask; + CvMat* weights; + CvMat* subtree_weights; + bool have_subsample; +}; + + +/****************************************************************************************\ +* Gradient Boosted Trees * +\****************************************************************************************/ + +// DataType: STRUCT CvGBTreesParams +// Parameters of GBT (Gradient Boosted trees model), including single +// tree settings and ensemble parameters. +// +// weak_count - count of trees in the ensemble +// loss_function_type - loss function used for ensemble training +// subsample_portion - portion of whole training set used for +// every single tree training. +// subsample_portion value is in (0.0, 1.0]. +// subsample_portion == 1.0 when whole dataset is +// used on each step. Count of sample used on each +// step is computed as +// int(total_samples_count * subsample_portion). +// shrinkage - regularization parameter. +// Each tree prediction is multiplied on shrinkage value. + + +struct CvGBTreesParams : public CvDTreeParams +{ + CV_PROP_RW int weak_count; + CV_PROP_RW int loss_function_type; + CV_PROP_RW float subsample_portion; + CV_PROP_RW float shrinkage; + + CvGBTreesParams(); + CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, + float subsample_portion, int max_depth, bool use_surrogates ); +}; + +// DataType: CLASS CvGBTrees +// Gradient Boosting Trees (GBT) algorithm implementation. +// +// data - training dataset +// params - parameters of the CvGBTrees +// weak - array[0..(class_count-1)] of CvSeq +// for storing tree ensembles +// orig_response - original responses of the training set samples +// sum_response - predicitons of the current model on the training dataset. +// this matrix is updated on every iteration. +// sum_response_tmp - predicitons of the model on the training set on the next +// step. On every iteration values of sum_responses_tmp are +// computed via sum_responses values. When the current +// step is complete sum_response values become equal to +// sum_responses_tmp. +// sampleIdx - indices of samples used for training the ensemble. +// CvGBTrees training procedure takes a set of samples +// (train_data) and a set of responses (responses). +// Only pairs (train_data[i], responses[i]), where i is +// in sample_idx are used for training the ensemble. +// subsample_train - indices of samples used for training a single decision +// tree on the current step. This indices are countered +// relatively to the sample_idx, so that pairs +// (train_data[sample_idx[i]], responses[sample_idx[i]]) +// are used for training a decision tree. +// Training set is randomly splited +// in two parts (subsample_train and subsample_test) +// on every iteration accordingly to the portion parameter. +// subsample_test - relative indices of samples from the training set, +// which are not used for training a tree on the current +// step. +// missing - mask of the missing values in the training set. This +// matrix has the same size as train_data. 1 - missing +// value, 0 - not a missing value. +// class_labels - output class labels map. +// rng - random number generator. Used for spliting the +// training set. +// class_count - count of output classes. +// class_count == 1 in the case of regression, +// and > 1 in the case of classification. +// delta - Huber loss function parameter. +// base_value - start point of the gradient descent procedure. +// model prediction is +// f(x) = f_0 + sum_{i=1..weak_count-1}(f_i(x)), where +// f_0 is the base value. + + + +class CvGBTrees : public CvStatModel +{ +public: + + /* + // DataType: ENUM + // Loss functions implemented in CvGBTrees. + // + // SQUARED_LOSS + // problem: regression + // loss = (x - x')^2 + // + // ABSOLUTE_LOSS + // problem: regression + // loss = abs(x - x') + // + // HUBER_LOSS + // problem: regression + // loss = delta*( abs(x - x') - delta/2), if abs(x - x') > delta + // 1/2*(x - x')^2, if abs(x - x') <= delta, + // where delta is the alpha-quantile of pseudo responses from + // the training set. + // + // DEVIANCE_LOSS + // problem: classification + // + */ + enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; + + + /* + // Default constructor. Creates a model only (without training). + // Should be followed by one form of the train(...) function. + // + // API + // CvGBTrees(); + + // INPUT + // OUTPUT + // RESULT + */ + CV_WRAP CvGBTrees(); + + + /* + // Full form constructor. Creates a gradient boosting model and does the + // train. + // + // API + // CvGBTrees( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams() ); + + // INPUT + // trainData - a set of input feature vectors. + // size of matrix is + // x + // or x + // depending on the tflag parameter. + // matrix values are float. + // tflag - a flag showing how do samples stored in the + // trainData matrix row by row (tflag=CV_ROW_SAMPLE) + // or column by column (tflag=CV_COL_SAMPLE). + // responses - a vector of responses corresponding to the samples + // in trainData. + // varIdx - indices of used variables. zero value means that all + // variables are active. + // sampleIdx - indices of used samples. zero value means that all + // samples from trainData are in the training set. + // varType - vector of length. gives every + // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. + // varType = 0 means all variables are numerical. + // missingDataMask - a mask of misiing values in trainData. + // missingDataMask = 0 means that there are no missing + // values. + // params - parameters of GTB algorithm. + // OUTPUT + // RESULT + */ + CvGBTrees( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams() ); + + + /* + // Destructor. + */ + virtual ~CvGBTrees(); + + + /* + // Gradient tree boosting model training + // + // API + // virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + // INPUT + // trainData - a set of input feature vectors. + // size of matrix is + // x + // or x + // depending on the tflag parameter. + // matrix values are float. + // tflag - a flag showing how do samples stored in the + // trainData matrix row by row (tflag=CV_ROW_SAMPLE) + // or column by column (tflag=CV_COL_SAMPLE). + // responses - a vector of responses corresponding to the samples + // in trainData. + // varIdx - indices of used variables. zero value means that all + // variables are active. + // sampleIdx - indices of used samples. zero value means that all + // samples from trainData are in the training set. + // varType - vector of length. gives every + // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. + // varType = 0 means all variables are numerical. + // missingDataMask - a mask of misiing values in trainData. + // missingDataMask = 0 means that there are no missing + // values. + // params - parameters of GTB algorithm. + // update - is not supported now. (!) + // OUTPUT + // RESULT + // Error state. + */ + virtual bool train( const CvMat* trainData, int tflag, + const CvMat* responses, const CvMat* varIdx=0, + const CvMat* sampleIdx=0, const CvMat* varType=0, + const CvMat* missingDataMask=0, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + + /* + // Gradient tree boosting model training + // + // API + // virtual bool train( CvMLData* data, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ) {return false;} + + // INPUT + // data - training set. + // params - parameters of GTB algorithm. + // update - is not supported now. (!) + // OUTPUT + // RESULT + // Error state. + */ + virtual bool train( CvMLData* data, + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + + /* + // Response value prediction + // + // API + // virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + // INPUT + // sample - input sample of the same type as in the training set. + // missing - missing values mask. missing=0 if there are no + // missing values in sample vector. + // weak_responses - predictions of all of the trees. + // not implemented (!) + // slice - part of the ensemble used for prediction. + // slice = CV_WHOLE_SEQ when all trees are used. + // k - number of ensemble used. + // k is in {-1,0,1,..,}. + // in the case of classification problem + // ensembles are built. + // If k = -1 ordinary prediction is the result, + // otherwise function gives the prediction of the + // k-th ensemble only. + // OUTPUT + // RESULT + // Predicted value. + */ + virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, + CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + /* + // Response value prediction. + // Parallel version (in the case of TBB existence) + // + // API + // virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + // INPUT + // sample - input sample of the same type as in the training set. + // missing - missing values mask. missing=0 if there are no + // missing values in sample vector. + // weak_responses - predictions of all of the trees. + // not implemented (!) + // slice - part of the ensemble used for prediction. + // slice = CV_WHOLE_SEQ when all trees are used. + // k - number of ensemble used. + // k is in {-1,0,1,..,}. + // in the case of classification problem + // ensembles are built. + // If k = -1 ordinary prediction is the result, + // otherwise function gives the prediction of the + // k-th ensemble only. + // OUTPUT + // RESULT + // Predicted value. + */ + virtual float predict( const CvMat* sample, const CvMat* missing=0, + CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, + int k=-1 ) const; + + /* + // Deletes all the data. + // + // API + // virtual void clear(); + + // INPUT + // OUTPUT + // delete data, weak, orig_response, sum_response, + // weak_eval, subsample_train, subsample_test, + // sample_idx, missing, lass_labels + // delta = 0.0 + // RESULT + */ + CV_WRAP virtual void clear(); + + /* + // Compute error on the train/test set. + // + // API + // virtual float calc_error( CvMLData* _data, int type, + // std::vector *resp = 0 ); + // + // INPUT + // data - dataset + // type - defines which error is to compute: train (CV_TRAIN_ERROR) or + // test (CV_TEST_ERROR). + // OUTPUT + // resp - vector of predicitons + // RESULT + // Error value. + */ + virtual float calc_error( CvMLData* _data, int type, + std::vector *resp = 0 ); + + /* + // + // Write parameters of the gtb model and data. Write learned model. + // + // API + // virtual void write( CvFileStorage* fs, const char* name ) const; + // + // INPUT + // fs - file storage to read parameters from. + // name - model name. + // OUTPUT + // RESULT + */ + virtual void write( CvFileStorage* fs, const char* name ) const; + + + /* + // + // Read parameters of the gtb model and data. Read learned model. + // + // API + // virtual void read( CvFileStorage* fs, CvFileNode* node ); + // + // INPUT + // fs - file storage to read parameters from. + // node - file node. + // OUTPUT + // RESULT + */ + virtual void read( CvFileStorage* fs, CvFileNode* node ); + + + // new-style C++ interface + CV_WRAP CvGBTrees( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvGBTreesParams params=CvGBTreesParams() ); + + CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, + const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), + const cv::Mat& missingDataMask=cv::Mat(), + CvGBTreesParams params=CvGBTreesParams(), + bool update=false ); + + CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), + const cv::Range& slice = cv::Range::all(), + int k=-1 ) const; + +protected: + + /* + // Compute the gradient vector components. + // + // API + // virtual void find_gradient( const int k = 0); + + // INPUT + // k - used for classification problem, determining current + // tree ensemble. + // OUTPUT + // changes components of data->responses + // which correspond to samples used for training + // on the current step. + // RESULT + */ + virtual void find_gradient( const int k = 0); + + + /* + // + // Change values in tree leaves according to the used loss function. + // + // API + // virtual void change_values(CvDTree* tree, const int k = 0); + // + // INPUT + // tree - decision tree to change. + // k - used for classification problem, determining current + // tree ensemble. + // OUTPUT + // changes 'value' fields of the trees' leaves. + // changes sum_response_tmp. + // RESULT + */ + virtual void change_values(CvDTree* tree, const int k = 0); + + + /* + // + // Find optimal constant prediction value according to the used loss + // function. + // The goal is to find a constant which gives the minimal summary loss + // on the _Idx samples. + // + // API + // virtual float find_optimal_value( const CvMat* _Idx ); + // + // INPUT + // _Idx - indices of the samples from the training set. + // OUTPUT + // RESULT + // optimal constant value. + */ + virtual float find_optimal_value( const CvMat* _Idx ); + + + /* + // + // Randomly split the whole training set in two parts according + // to params.portion. + // + // API + // virtual void do_subsample(); + // + // INPUT + // OUTPUT + // subsample_train - indices of samples used for training + // subsample_test - indices of samples used for test + // RESULT + */ + virtual void do_subsample(); + + + /* + // + // Internal recursive function giving an array of subtree tree leaves. + // + // API + // void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); + // + // INPUT + // node - current leaf. + // OUTPUT + // count - count of leaves in the subtree. + // leaves - array of pointers to leaves. + // RESULT + */ + void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); + + + /* + // + // Get leaves of the tree. + // + // API + // CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); + // + // INPUT + // dtree - decision tree. + // OUTPUT + // len - count of the leaves. + // RESULT + // CvDTreeNode** - array of pointers to leaves. + */ + CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); + + + /* + // + // Is it a regression or a classification. + // + // API + // bool problem_type(); + // + // INPUT + // OUTPUT + // RESULT + // false if it is a classification problem, + // true - if regression. + */ + virtual bool problem_type() const; + + + /* + // + // Write parameters of the gtb model. + // + // API + // virtual void write_params( CvFileStorage* fs ) const; + // + // INPUT + // fs - file storage to write parameters to. + // OUTPUT + // RESULT + */ + virtual void write_params( CvFileStorage* fs ) const; + + + /* + // + // Read parameters of the gtb model and data. + // + // API + // virtual void read_params( CvFileStorage* fs ); + // + // INPUT + // fs - file storage to read parameters from. + // OUTPUT + // params - parameters of the gtb model. + // data - contains information about the structure + // of the data set (count of variables, + // their types, etc.). + // class_labels - output class labels map. + // RESULT + */ + virtual void read_params( CvFileStorage* fs, CvFileNode* fnode ); + int get_len(const CvMat* mat) const; + + + CvDTreeTrainData* data; + CvGBTreesParams params; + + CvSeq** weak; + CvMat* orig_response; + CvMat* sum_response; + CvMat* sum_response_tmp; + CvMat* sample_idx; + CvMat* subsample_train; + CvMat* subsample_test; + CvMat* missing; + CvMat* class_labels; + + cv::RNG* rng; + + int class_count; + float delta; + float base_value; + +}; + + + +/****************************************************************************************\ +* Artificial Neural Networks (ANN) * +\****************************************************************************************/ + +/////////////////////////////////// Multi-Layer Perceptrons ////////////////////////////// + +struct CvANN_MLP_TrainParams +{ + CvANN_MLP_TrainParams(); + CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, + double param1, double param2=0 ); + ~CvANN_MLP_TrainParams(); + + enum { BACKPROP=0, RPROP=1 }; + + CV_PROP_RW CvTermCriteria term_crit; + CV_PROP_RW int train_method; + + // backpropagation parameters + CV_PROP_RW double bp_dw_scale, bp_moment_scale; + + // rprop parameters + CV_PROP_RW double rp_dw0, rp_dw_plus, rp_dw_minus, rp_dw_min, rp_dw_max; +}; + + +class CvANN_MLP : public CvStatModel +{ +public: + CV_WRAP CvANN_MLP(); + CvANN_MLP( const CvMat* layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + virtual ~CvANN_MLP(); + + virtual void create( const CvMat* layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + virtual int train( const CvMat* inputs, const CvMat* outputs, + const CvMat* sampleWeights, const CvMat* sampleIdx=0, + CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), + int flags=0 ); + virtual float predict( const CvMat* inputs, CV_OUT CvMat* outputs ) const; + + CV_WRAP CvANN_MLP( const cv::Mat& layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + CV_WRAP virtual void create( const cv::Mat& layerSizes, + int activateFunc=CvANN_MLP::SIGMOID_SYM, + double fparam1=0, double fparam2=0 ); + + CV_WRAP virtual int train( const cv::Mat& inputs, const cv::Mat& outputs, + const cv::Mat& sampleWeights, const cv::Mat& sampleIdx=cv::Mat(), + CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), + int flags=0 ); + + CV_WRAP virtual float predict( const cv::Mat& inputs, CV_OUT cv::Mat& outputs ) const; + + CV_WRAP virtual void clear(); + + // possible activation functions + enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 }; + + // available training flags + enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }; + + virtual void read( CvFileStorage* fs, CvFileNode* node ); + virtual void write( CvFileStorage* storage, const char* name ) const; + + int get_layer_count() { return layer_sizes ? layer_sizes->cols : 0; } + const CvMat* get_layer_sizes() { return layer_sizes; } + double* get_weights(int layer) + { + return layer_sizes && weights && + (unsigned)layer <= (unsigned)layer_sizes->cols ? weights[layer] : 0; + } + + virtual void calc_activ_func_deriv( CvMat* xf, CvMat* deriv, const double* bias ) const; + +protected: + + virtual bool prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, + const CvMat* _sample_weights, const CvMat* sampleIdx, + CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ); + + // sequential random backpropagation + virtual int train_backprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); + + // RPROP algorithm + virtual int train_rprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); + + virtual void calc_activ_func( CvMat* xf, const double* bias ) const; + virtual void set_activ_func( int _activ_func=SIGMOID_SYM, + double _f_param1=0, double _f_param2=0 ); + virtual void init_weights(); + virtual void scale_input( const CvMat* _src, CvMat* _dst ) const; + virtual void scale_output( const CvMat* _src, CvMat* _dst ) const; + virtual void calc_input_scale( const CvVectors* vecs, int flags ); + virtual void calc_output_scale( const CvVectors* vecs, int flags ); + + virtual void write_params( CvFileStorage* fs ) const; + virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + + CvMat* layer_sizes; + CvMat* wbuf; + CvMat* sample_weights; + double** weights; + double f_param1, f_param2; + double min_val, max_val, min_val1, max_val1; + int activ_func; + int max_count, max_buf_sz; + CvANN_MLP_TrainParams params; + cv::RNG* rng; +}; + +/****************************************************************************************\ +* Auxilary functions declarations * +\****************************************************************************************/ + +/* Generates from multivariate normal distribution, where - is an + average row vector, - symmetric covariation matrix */ +CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, + CvRNG* rng CV_DEFAULT(0) ); + +/* Generates sample from gaussian mixture distribution */ +CVAPI(void) cvRandGaussMixture( CvMat* means[], + CvMat* covs[], + float weights[], + int clsnum, + CvMat* sample, + CvMat* sampClasses CV_DEFAULT(0) ); + +#define CV_TS_CONCENTRIC_SPHERES 0 + +/* creates test set */ +CVAPI(void) cvCreateTestSet( int type, CvMat** samples, + int num_samples, + int num_features, + CvMat** responses, + int num_classes, ... ); + +/****************************************************************************************\ +* Data * +\****************************************************************************************/ + +#define CV_COUNT 0 +#define CV_PORTION 1 + +struct CvTrainTestSplit +{ + CvTrainTestSplit(); + CvTrainTestSplit( int train_sample_count, bool mix = true); + CvTrainTestSplit( float train_sample_portion, bool mix = true); + + union + { + int count; + float portion; + } train_sample_part; + int train_sample_part_mode; + + bool mix; +}; + +class CvMLData +{ +public: + CvMLData(); + virtual ~CvMLData(); + + // returns: + // 0 - OK + // -1 - file can not be opened or is not correct + int read_csv( const char* filename ); + + const CvMat* get_values() const; + const CvMat* get_responses(); + const CvMat* get_missing() const; + + void set_header_lines_number( int n ); + int get_header_lines_number() const; + + void set_response_idx( int idx ); // old response become predictors, new response_idx = idx + // if idx < 0 there will be no response + int get_response_idx() const; + + void set_train_test_split( const CvTrainTestSplit * spl ); + const CvMat* get_train_sample_idx() const; + const CvMat* get_test_sample_idx() const; + void mix_train_and_test_idx(); + + const CvMat* get_var_idx(); + void chahge_var_idx( int vi, bool state ); // misspelled (saved for back compitability), + // use change_var_idx + void change_var_idx( int vi, bool state ); // state == true to set vi-variable as predictor + + const CvMat* get_var_types(); + int get_var_type( int var_idx ) const; + // following 2 methods enable to change vars type + // use these methods to assign CV_VAR_CATEGORICAL type for categorical variable + // with numerical labels; in the other cases var types are correctly determined automatically + void set_var_types( const char* str ); // str examples: + // "ord[0-17],cat[18]", "ord[0,2,4,10-12], cat[1,3,5-9,13,14]", + // "cat", "ord" (all vars are categorical/ordered) + void change_var_type( int var_idx, int type); // type in { CV_VAR_ORDERED, CV_VAR_CATEGORICAL } + + void set_delimiter( char ch ); + char get_delimiter() const; + + void set_miss_ch( char ch ); + char get_miss_ch() const; + + const std::map& get_class_labels_map() const; + +protected: + virtual void clear(); + + void str_to_flt_elem( const char* token, float& flt_elem, int& type); + void free_train_test_idx(); + + char delimiter; + char miss_ch; + //char flt_separator; + + CvMat* values; + CvMat* missing; + CvMat* var_types; + CvMat* var_idx_mask; + + CvMat* response_out; // header + CvMat* var_idx_out; // mat + CvMat* var_types_out; // mat + + int header_lines_number; + + int response_idx; + + int train_sample_count; + bool mix; + + int total_class_count; + std::map class_map; + + CvMat* train_sample_idx; + CvMat* test_sample_idx; + int* sample_idx; // data of train_sample_idx and test_sample_idx + + cv::RNG* rng; +}; + + +namespace cv +{ + +typedef CvStatModel StatModel; +typedef CvParamGrid ParamGrid; +typedef CvNormalBayesClassifier NormalBayesClassifier; +typedef CvKNearest KNearest; +typedef CvSVMParams SVMParams; +typedef CvSVMKernel SVMKernel; +typedef CvSVMSolver SVMSolver; +typedef CvSVM SVM; +typedef CvDTreeParams DTreeParams; +typedef CvMLData TrainData; +typedef CvDTree DecisionTree; +typedef CvForestTree ForestTree; +typedef CvRTParams RandomTreeParams; +typedef CvRTrees RandomTrees; +typedef CvERTreeTrainData ERTreeTRainData; +typedef CvForestERTree ERTree; +typedef CvERTrees ERTrees; +typedef CvBoostParams BoostParams; +typedef CvBoostTree BoostTree; +typedef CvBoost Boost; +typedef CvANN_MLP_TrainParams ANN_MLP_TrainParams; +typedef CvANN_MLP NeuralNet_MLP; +typedef CvGBTreesParams GradientBoostingTreeParams; +typedef CvGBTrees GradientBoostingTrees; + +template<> void DefaultDeleter::operator ()(CvDTreeSplit* obj) const; + +bool initModule_ml(void); +} + +#endif // __cplusplus +#endif // __OPENCV_ML_HPP__ + +/* End of file. */ diff --git a/apps/traincascade/old_ml_boost.cpp b/apps/traincascade/old_ml_boost.cpp new file mode 100644 index 0000000000..be4cd81f04 --- /dev/null +++ b/apps/traincascade/old_ml_boost.cpp @@ -0,0 +1,2162 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#include "old_ml_precomp.hpp" + +static inline double +log_ratio( double val ) +{ + const double eps = 1e-5; + + val = MAX( val, eps ); + val = MIN( val, 1. - eps ); + return log( val/(1. - val) ); +} + + +CvBoostParams::CvBoostParams() +{ + boost_type = CvBoost::REAL; + weak_count = 100; + weight_trim_rate = 0.95; + cv_folds = 0; + max_depth = 1; +} + + +CvBoostParams::CvBoostParams( int _boost_type, int _weak_count, + double _weight_trim_rate, int _max_depth, + bool _use_surrogates, const float* _priors ) +{ + boost_type = _boost_type; + weak_count = _weak_count; + weight_trim_rate = _weight_trim_rate; + split_criteria = CvBoost::DEFAULT; + cv_folds = 0; + max_depth = _max_depth; + use_surrogates = _use_surrogates; + priors = _priors; +} + + + +///////////////////////////////// CvBoostTree /////////////////////////////////// + +CvBoostTree::CvBoostTree() +{ + ensemble = 0; +} + + +CvBoostTree::~CvBoostTree() +{ + clear(); +} + + +void +CvBoostTree::clear() +{ + CvDTree::clear(); + ensemble = 0; +} + + +bool +CvBoostTree::train( CvDTreeTrainData* _train_data, + const CvMat* _subsample_idx, CvBoost* _ensemble ) +{ + clear(); + ensemble = _ensemble; + data = _train_data; + data->shared = true; + return do_train( _subsample_idx ); +} + + +bool +CvBoostTree::train( const CvMat*, int, const CvMat*, const CvMat*, + const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) +{ + assert(0); + return false; +} + + +bool +CvBoostTree::train( CvDTreeTrainData*, const CvMat* ) +{ + assert(0); + return false; +} + + +void +CvBoostTree::scale( double _scale ) +{ + CvDTreeNode* node = root; + + // traverse the tree and scale all the node values + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + node->value *= _scale; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } +} + + +void +CvBoostTree::try_split_node( CvDTreeNode* node ) +{ + CvDTree::try_split_node( node ); + + if( !node->left ) + { + // if the node has not been split, + // store the responses for the corresponding training samples + double* weak_eval = ensemble->get_weak_response()->data.db; + cv::AutoBuffer inn_buf(node->sample_count); + const int* labels = data->get_cv_labels( node, (int*)inn_buf ); + int i, count = node->sample_count; + double value = node->value; + + for( i = 0; i < count; i++ ) + weak_eval[labels[i]] = value; + } +} + + +double +CvBoostTree::calc_node_dir( CvDTreeNode* node ) +{ + char* dir = (char*)data->direction->data.ptr; + const double* weights = ensemble->get_subtree_weights()->data.db; + int i, n = node->sample_count, vi = node->split->var_idx; + double L, R; + + assert( !node->split->inversed ); + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + cv::AutoBuffer inn_buf(n); + const int* cat_labels = data->get_cat_var_data( node, vi, (int*)inn_buf ); + const int* subset = node->split->subset; + double sum = 0, sum_abs = 0; + + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d*w; sum_abs += (d & 1)*w; + dir[i] = (char)d; + } + + R = (sum_abs + sum) * 0.5; + L = (sum_abs - sum) * 0.5; + } + else // split on ordered var + { + cv::AutoBuffer inn_buf(2*n*sizeof(int)+n*sizeof(float)); + float* values_buf = (float*)(uchar*)inn_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int split_point = node->split->ord.split_point; + int n1 = node->get_num_valid(vi); + + assert( 0 <= split_point && split_point < n1-1 ); + L = R = 0; + + for( i = 0; i <= split_point; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + dir[idx] = (char)-1; + L += w; + } + + for( ; i < n1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + dir[idx] = (char)1; + R += w; + } + + for( ; i < n; i++ ) + dir[sorted_indices[i]] = (char)0; + } + + node->maxlr = MAX( L, R ); + return node->split->quality/(L + R); +} + + +CvDTreeSplit* +CvBoostTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, + CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(n*(3*sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int* responses_buf = sorted_indices_buf + n; + const int* responses = data->get_class_labels( node, responses_buf ); + const double* rcw0 = weights + n; + double lcw[2] = {0,0}, rcw[2]; + int i, best_i = -1; + double best_val = init_quality; + int boost_type = ensemble->get_params().boost_type; + int split_criteria = ensemble->get_params().split_criteria; + + rcw[0] = rcw0[0]; rcw[1] = rcw0[1]; + for( i = n1; i < n; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + rcw[responses[idx]] -= w; + } + + if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) + split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; + + if( split_criteria == CvBoost::GINI ) + { + double L = 0, R = rcw[0] + rcw[1]; + double lsum2 = 0, rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx], w2 = w*w; + double lv, rv; + idx = responses[idx]; + L += w; R -= w; + lv = lcw[idx]; rv = rcw[idx]; + lsum2 += 2*lv*w + w2; + rsum2 -= 2*rv*w - w2; + lcw[idx] = lv + w; rcw[idx] = rv - w; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + else + { + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = weights[idx]; + idx = responses[idx]; + lcw[idx] += w; + rcw[idx] -= w; + + if( values[i] + epsilon < values[i+1] ) + { + double val = lcw[0] + rcw[1], val2 = lcw[1] + rcw[0]; + val = MAX(val, val2); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + +template +class LessThanPtr +{ +public: + bool operator()(T* a, T* b) const { return *a < *b; } +}; + +CvDTreeSplit* +CvBoostTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + + int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); + cv::AutoBuffer inn_buf((2*mi+3)*sizeof(double) + mi*sizeof(double*)); + if( !_ext_buf) + inn_buf.allocate( base_size + 2*n*sizeof(int) ); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + int* responses_buf = cat_labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + double lcw[2]={0,0}, rcw[2]={0,0}; + + double* cjk = (double*)cv::alignPtr(base_buf,sizeof(double))+2; + const double* weights = ensemble->get_subtree_weights()->data.db; + double** dbl_ptr = (double**)(cjk + 2*mi); + int i, j, k, idx; + double L = 0, R; + double best_val = init_quality; + int best_subset = -1, subset_i; + int boost_type = ensemble->get_params().boost_type; + int split_criteria = ensemble->get_params().split_criteria; + + // init array of counters: + // c_{jk} - number of samples that have vi-th input variable = j and response = k. + for( j = -1; j < mi; j++ ) + cjk[j*2] = cjk[j*2+1] = 0; + + for( i = 0; i < n; i++ ) + { + double w = weights[i]; + j = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + k = responses[i]; + cjk[j*2 + k] += w; + } + + for( j = 0; j < mi; j++ ) + { + rcw[0] += cjk[j*2]; + rcw[1] += cjk[j*2+1]; + dbl_ptr[j] = cjk + j*2 + 1; + } + + R = rcw[0] + rcw[1]; + + if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) + split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; + + // sort rows of c_jk by increasing c_j,1 + // (i.e. by the weight of samples in j-th category that belong to class 1) + std::sort(dbl_ptr, dbl_ptr + mi, LessThanPtr()); + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + idx = (int)(dbl_ptr[subset_i] - cjk)/2; + const double* crow = cjk + idx*2; + double w0 = crow[0], w1 = crow[1]; + double weight = w0 + w1; + + if( weight < FLT_EPSILON ) + continue; + + lcw[0] += w0; rcw[0] -= w0; + lcw[1] += w1; rcw[1] -= w1; + + if( split_criteria == CvBoost::GINI ) + { + double lsum2 = lcw[0]*lcw[0] + lcw[1]*lcw[1]; + double rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; + + L += weight; + R -= weight; + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + else + { + double val = lcw[0] + rcw[1]; + double val2 = lcw[1] + rcw[0]; + + val = MAX(val, val2); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + idx = (int)(dbl_ptr[i] - cjk) >> 1; + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(2*n*(sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + + float* values_buf = (float*)ext_buf; + int* indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = indices_buf + n; + const float* values = 0; + const int* indices = 0; + data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); + float* responses_buf = (float*)(indices_buf + n); + const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); + + int i, best_i = -1; + double L = 0, R = weights[n]; + double best_val = init_quality, lsum = 0, rsum = node->value*R; + + // compensate for missing values + for( i = n1; i < n; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + rsum -= responses[idx]*w; + R -= w; + } + + // find the optimal split + for( i = 0; i < n1 - 1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + double t = responses[idx]*w; + L += w; R -= w; + lsum += t; rsum -= t; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const double* weights = ensemble->get_subtree_weights()->data.db; + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + float* responses_buf = (float*)(cat_labels_buf + n); + int* sample_indices_buf = (int*)(responses_buf + n); + const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); + + double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + double* counts = sum + mi + 1; + double** sum_ptr = (double**)(counts + mi); + double L = 0, R = 0, best_val = init_quality, lsum = 0, rsum = 0; + int i, best_subset = -1, subset_i; + + for( i = -1; i < mi; i++ ) + sum[i] = counts[i] = 0; + + // calculate sum response and weight of each category of the input var + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + double s = sum[idx] + responses[i]*w; + double nc = counts[idx] + w; + sum[idx] = s; + counts[idx] = nc; + } + + // calculate average response in each category + for( i = 0; i < mi; i++ ) + { + R += counts[i]; + rsum += sum[i]; + sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; + sum_ptr[i] = sum + i; + } + + std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); + + // revert back to unnormalized sums + // (there should be a very little loss in accuracy) + for( i = 0; i < mi; i++ ) + sum[i] *= counts[i]; + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + int idx = (int)(sum_ptr[subset_i] - sum); + double ni = counts[idx]; + + if( ni > FLT_EPSILON ) + { + double s = sum[idx]; + lsum += s; L += ni; + rsum -= s; R -= ni; + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + int idx = (int)(sum_ptr[i] - sum); + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + + +CvDTreeSplit* +CvBoostTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(n*(2*sizeof(int)+sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = indices_buf + n; + const float* values = 0; + const int* indices = 0; + data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); + + const double* weights = ensemble->get_subtree_weights()->data.db; + const char* dir = (char*)data->direction->data.ptr; + int n1 = node->get_num_valid(vi); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + int i, best_i = -1, best_inversed = 0; + double best_val; + double LL = 0, RL = 0, LR, RR; + double worst_val = node->maxlr; + double sum = 0, sum_abs = 0; + best_val = worst_val; + + for( i = 0; i < n1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + int d = dir[idx]; + sum += d*w; sum_abs += (d & 1)*w; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum)*0.5; + LR = (sum_abs - sum)*0.5; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int idx = indices[i]; + double w = weights[idx]; + int d = dir[idx]; + + if( d < 0 ) + { + LL += w; LR -= w; + if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL += w; RR -= w; + if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + + return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, + (values[best_i] + values[best_i+1])*0.5f, best_i, + best_inversed, (float)best_val ) : 0; +} + + +CvDTreeSplit* +CvBoostTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const char* dir = (char*)data->direction->data.ptr; + const double* weights = ensemble->get_subtree_weights()->data.db; + int n = node->sample_count; + int i, mi = data->cat_count->data.i[data->get_var_type(vi)]; + + int base_size = (2*mi+3)*sizeof(double); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*sizeof(int)); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + int* cat_labels_buf = (int*)ext_buf; + const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); + + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + CvDTreeSplit* split = data->new_split_cat( vi, 0 ); + double best_val = 0; + double* lc = (double*)cv::alignPtr(cat_labels_buf + n, sizeof(double)) + 1; + double* rc = lc + mi + 1; + + for( i = -1; i < mi; i++ ) + lc[i] = rc[i] = 0; + + // 1. for each category calculate the weight of samples + // sent to the left (lc) and to the right (rc) by the primary split + for( i = 0; i < n; i++ ) + { + int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; + double w = weights[i]; + int d = dir[i]; + double sum = lc[idx] + d*w; + double sum_abs = rc[idx] + (d & 1)*w; + lc[idx] = sum; rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + double sum = lc[i]; + double sum_abs = rc[i]; + lc[i] = (sum_abs - sum) * 0.5; + rc[i] = (sum_abs + sum) * 0.5; + } + + // 2. now form the split. + // in each category send all the samples to the same direction as majority + for( i = 0; i < mi; i++ ) + { + double lval = lc[i], rval = rc[i]; + if( lval > rval ) + { + split->subset[i >> 5] |= 1 << (i & 31); + best_val += lval; + } + else + best_val += rval; + } + + split->quality = (float)best_val; + if( split->quality <= node->maxlr ) + cvSetRemoveByPtr( data->split_heap, split ), split = 0; + + return split; +} + + +void +CvBoostTree::calc_node_value( CvDTreeNode* node ) +{ + int i, n = node->sample_count; + const double* weights = ensemble->get_weights()->data.db; + cv::AutoBuffer inn_buf(n*(sizeof(int) + ( data->is_classifier ? sizeof(int) : sizeof(int) + sizeof(float)))); + int* labels_buf = (int*)(uchar*)inn_buf; + const int* labels = data->get_cv_labels(node, labels_buf); + double* subtree_weights = ensemble->get_subtree_weights()->data.db; + double rcw[2] = {0,0}; + int boost_type = ensemble->get_params().boost_type; + + if( data->is_classifier ) + { + int* _responses_buf = labels_buf + n; + const int* _responses = data->get_class_labels(node, _responses_buf); + int m = data->get_num_classes(); + int* cls_count = data->counts->data.i; + for( int k = 0; k < m; k++ ) + cls_count[k] = 0; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = weights[idx]; + int r = _responses[i]; + rcw[r] += w; + cls_count[r]++; + subtree_weights[i] = w; + } + + node->class_idx = rcw[1] > rcw[0]; + + if( boost_type == CvBoost::DISCRETE ) + { + // ignore cat_map for responses, and use {-1,1}, + // as the whole ensemble response is computes as sign(sum_i(weak_response_i) + node->value = node->class_idx*2 - 1; + } + else + { + double p = rcw[1]/(rcw[0] + rcw[1]); + assert( boost_type == CvBoost::REAL ); + + // store log-ratio of the probability + node->value = 0.5*log_ratio(p); + } + } + else + { + // in case of regression tree: + // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, + // n is the number of samples in the node. + // * node risk is the sum of squared errors: sum_i((Y_i - )^2) + double sum = 0, sum2 = 0, iw; + float* values_buf = (float*)(labels_buf + n); + int* sample_indices_buf = (int*)(values_buf + n); + const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = weights[idx]/*priors[values[i] > 0]*/; + double t = values[i]; + rcw[0] += w; + subtree_weights[i] = w; + sum += t*w; + sum2 += t*t*w; + } + + iw = 1./rcw[0]; + node->value = sum*iw; + node->node_risk = sum2 - (sum*iw)*sum; + + // renormalize the risk, as in try_split_node the unweighted formula + // sqrt(risk)/n is used, rather than sqrt(risk)/sum(weights_i) + node->node_risk *= n*iw*n*iw; + } + + // store summary weights + subtree_weights[n] = rcw[0]; + subtree_weights[n+1] = rcw[1]; +} + + +void CvBoostTree::read( CvFileStorage* fs, CvFileNode* fnode, CvBoost* _ensemble, CvDTreeTrainData* _data ) +{ + CvDTree::read( fs, fnode, _data ); + ensemble = _ensemble; +} + +void CvBoostTree::read( CvFileStorage*, CvFileNode* ) +{ + assert(0); +} + +void CvBoostTree::read( CvFileStorage* _fs, CvFileNode* _node, + CvDTreeTrainData* _data ) +{ + CvDTree::read( _fs, _node, _data ); +} + + +/////////////////////////////////// CvBoost ///////////////////////////////////// + +CvBoost::CvBoost() +{ + data = 0; + weak = 0; + default_model_name = "my_boost_tree"; + + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + have_active_cat_vars = have_subsample = false; + + clear(); +} + + +void CvBoost::prune( CvSlice slice ) +{ + if( weak && weak->total > 0 ) + { + CvSeqReader reader; + int i, count = cvSliceLength( slice, weak ); + + cvStartReadSeq( weak, &reader ); + cvSetSeqReaderPos( &reader, slice.start_index ); + + for( i = 0; i < count; i++ ) + { + CvBoostTree* w; + CV_READ_SEQ_ELEM( w, reader ); + delete w; + } + + cvSeqRemoveSlice( weak, slice ); + } +} + + +void CvBoost::clear() +{ + if( weak ) + { + prune( CV_WHOLE_SEQ ); + cvReleaseMemStorage( &weak->storage ); + } + if( data ) + delete data; + weak = 0; + data = 0; + cvReleaseMat( &active_vars ); + cvReleaseMat( &active_vars_abs ); + cvReleaseMat( &orig_response ); + cvReleaseMat( &sum_response ); + cvReleaseMat( &weak_eval ); + cvReleaseMat( &subsample_mask ); + cvReleaseMat( &weights ); + cvReleaseMat( &subtree_weights ); + + have_subsample = false; +} + + +CvBoost::~CvBoost() +{ + clear(); +} + + +CvBoost::CvBoost( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, CvBoostParams _params ) +{ + weak = 0; + data = 0; + default_model_name = "my_boost_tree"; + + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + + train( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params ); +} + + +bool +CvBoost::set_params( const CvBoostParams& _params ) +{ + bool ok = false; + + CV_FUNCNAME( "CvBoost::set_params" ); + + __BEGIN__; + + params = _params; + if( params.boost_type != DISCRETE && params.boost_type != REAL && + params.boost_type != LOGIT && params.boost_type != GENTLE ) + CV_ERROR( CV_StsBadArg, "Unknown/unsupported boosting type" ); + + params.weak_count = MAX( params.weak_count, 1 ); + params.weight_trim_rate = MAX( params.weight_trim_rate, 0. ); + params.weight_trim_rate = MIN( params.weight_trim_rate, 1. ); + if( params.weight_trim_rate < FLT_EPSILON ) + params.weight_trim_rate = 1.f; + + if( params.boost_type == DISCRETE && + params.split_criteria != GINI && params.split_criteria != MISCLASS ) + params.split_criteria = MISCLASS; + if( params.boost_type == REAL && + params.split_criteria != GINI && params.split_criteria != MISCLASS ) + params.split_criteria = GINI; + if( (params.boost_type == LOGIT || params.boost_type == GENTLE) && + params.split_criteria != SQERR ) + params.split_criteria = SQERR; + + ok = true; + + __END__; + + return ok; +} + + +bool +CvBoost::train( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, + CvBoostParams _params, bool _update ) +{ + bool ok = false; + CvMemStorage* storage = 0; + + CV_FUNCNAME( "CvBoost::train" ); + + __BEGIN__; + + int i; + + set_params( _params ); + + cvReleaseMat( &active_vars ); + cvReleaseMat( &active_vars_abs ); + + if( !_update || !data ) + { + clear(); + data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, true, true ); + + if( data->get_num_classes() != 2 ) + CV_ERROR( CV_StsNotImplemented, + "Boosted trees can only be used for 2-class classification." ); + CV_CALL( storage = cvCreateMemStorage() ); + weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); + storage = 0; + } + else + { + data->set_data( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, true, true, true ); + } + + if ( (_params.boost_type == LOGIT) || (_params.boost_type == GENTLE) ) + data->do_responses_copy(); + + update_weights( 0 ); + + for( i = 0; i < params.weak_count; i++ ) + { + CvBoostTree* tree = new CvBoostTree; + if( !tree->train( data, subsample_mask, this ) ) + { + delete tree; + break; + } + //cvCheckArr( get_weak_response()); + cvSeqPush( weak, &tree ); + update_weights( tree ); + trim_weights(); + if( cvCountNonZero(subsample_mask) == 0 ) + break; + } + + if(weak->total > 0) + { + get_active_vars(); // recompute active_vars* maps and condensed_idx's in the splits. + data->is_classifier = true; + data->free_train_data(); + ok = true; + } + else + clear(); + + __END__; + + return ok; +} + +bool CvBoost::train( CvMLData* _data, + CvBoostParams _params, + bool update ) +{ + bool result = false; + + CV_FUNCNAME( "CvBoost::train" ); + + __BEGIN__; + + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* var_types = _data->get_var_types(); + const CvMat* train_sidx = _data->get_train_sample_idx(); + const CvMat* var_idx = _data->get_var_idx(); + + CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, + train_sidx, var_types, missing, _params, update ) ); + + __END__; + + return result; +} + +void CvBoost::initialize_weights(double (&p)[2]) +{ + p[0] = 1.; + p[1] = 1.; +} + +void +CvBoost::update_weights( CvBoostTree* tree ) +{ + CV_FUNCNAME( "CvBoost::update_weights" ); + + __BEGIN__; + + int i, n = data->sample_count; + double sumw = 0.; + int step = 0; + float* fdata = 0; + int *sample_idx_buf; + const int* sample_idx = 0; + cv::AutoBuffer inn_buf; + size_t _buf_size = (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ? (size_t)(data->sample_count)*sizeof(int) : 0; + if( !tree ) + _buf_size += n*sizeof(int); + else + { + if( have_subsample ) + _buf_size += data->get_length_subbuf()*(sizeof(float)+sizeof(uchar)); + } + inn_buf.allocate(_buf_size); + uchar* cur_buf_pos = (uchar*)inn_buf; + + if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) + { + step = CV_IS_MAT_CONT(data->responses_copy->type) ? + 1 : data->responses_copy->step / CV_ELEM_SIZE(data->responses_copy->type); + fdata = data->responses_copy->data.fl; + sample_idx_buf = (int*)cur_buf_pos; + cur_buf_pos = (uchar*)(sample_idx_buf + data->sample_count); + sample_idx = data->get_sample_indices( data->data_root, sample_idx_buf ); + } + CvMat* dtree_data_buf = data->buf; + size_t length_buf_row = data->get_length_subbuf(); + if( !tree ) // before training the first tree, initialize weights and other parameters + { + int* class_labels_buf = (int*)cur_buf_pos; + cur_buf_pos = (uchar*)(class_labels_buf + n); + const int* class_labels = data->get_class_labels(data->data_root, class_labels_buf); + // in case of logitboost and gentle adaboost each weak tree is a regression tree, + // so we need to convert class labels to floating-point values + + double w0 = 1./ n; + double p[2] = { 1., 1. }; + initialize_weights(p); + + cvReleaseMat( &orig_response ); + cvReleaseMat( &sum_response ); + cvReleaseMat( &weak_eval ); + cvReleaseMat( &subsample_mask ); + cvReleaseMat( &weights ); + cvReleaseMat( &subtree_weights ); + + CV_CALL( orig_response = cvCreateMat( 1, n, CV_32S )); + CV_CALL( weak_eval = cvCreateMat( 1, n, CV_64F )); + CV_CALL( subsample_mask = cvCreateMat( 1, n, CV_8U )); + CV_CALL( weights = cvCreateMat( 1, n, CV_64F )); + CV_CALL( subtree_weights = cvCreateMat( 1, n + 2, CV_64F )); + + if( data->have_priors ) + { + // compute weight scale for each class from their prior probabilities + int c1 = 0; + for( i = 0; i < n; i++ ) + c1 += class_labels[i]; + p[0] = data->priors->data.db[0]*(c1 < n ? 1./(n - c1) : 0.); + p[1] = data->priors->data.db[1]*(c1 > 0 ? 1./c1 : 0.); + p[0] /= p[0] + p[1]; + p[1] = 1. - p[0]; + } + + if (data->is_buf_16u) + { + unsigned short* labels = (unsigned short*)(dtree_data_buf->data.s + data->data_root->buf_idx*length_buf_row + + data->data_root->offset + (data->work_var_count-1)*data->sample_count); + for( i = 0; i < n; i++ ) + { + // save original categorical responses {0,1}, convert them to {-1,1} + orig_response->data.i[i] = class_labels[i]*2 - 1; + // make all the samples active at start. + // later, in trim_weights() deactivate/reactive again some, if need + subsample_mask->data.ptr[i] = (uchar)1; + // make all the initial weights the same. + weights->data.db[i] = w0*p[class_labels[i]]; + // set the labels to find (from within weak tree learning proc) + // the particular sample weight, and where to store the response. + labels[i] = (unsigned short)i; + } + } + else + { + int* labels = dtree_data_buf->data.i + data->data_root->buf_idx*length_buf_row + + data->data_root->offset + (data->work_var_count-1)*data->sample_count; + + for( i = 0; i < n; i++ ) + { + // save original categorical responses {0,1}, convert them to {-1,1} + orig_response->data.i[i] = class_labels[i]*2 - 1; + // make all the samples active at start. + // later, in trim_weights() deactivate/reactive again some, if need + subsample_mask->data.ptr[i] = (uchar)1; + // make all the initial weights the same. + weights->data.db[i] = w0*p[class_labels[i]]; + // set the labels to find (from within weak tree learning proc) + // the particular sample weight, and where to store the response. + labels[i] = i; + } + } + + if( params.boost_type == LOGIT ) + { + CV_CALL( sum_response = cvCreateMat( 1, n, CV_64F )); + + for( i = 0; i < n; i++ ) + { + sum_response->data.db[i] = 0; + fdata[sample_idx[i]*step] = orig_response->data.i[i] > 0 ? 2.f : -2.f; + } + + // in case of logitboost each weak tree is a regression tree. + // the target function values are recalculated for each of the trees + data->is_classifier = false; + } + else if( params.boost_type == GENTLE ) + { + for( i = 0; i < n; i++ ) + fdata[sample_idx[i]*step] = (float)orig_response->data.i[i]; + + data->is_classifier = false; + } + } + else + { + // at this moment, for all the samples that participated in the training of the most + // recent weak classifier we know the responses. For other samples we need to compute them + if( have_subsample ) + { + float* values = (float*)cur_buf_pos; + cur_buf_pos = (uchar*)(values + data->get_length_subbuf()); + uchar* missing = cur_buf_pos; + cur_buf_pos = missing + data->get_length_subbuf() * (size_t)CV_ELEM_SIZE(data->buf->type); + + CvMat _sample, _mask; + + // invert the subsample mask + cvXorS( subsample_mask, cvScalar(1.), subsample_mask ); + data->get_vectors( subsample_mask, values, missing, 0 ); + + _sample = cvMat( 1, data->var_count, CV_32F ); + _mask = cvMat( 1, data->var_count, CV_8U ); + + // run tree through all the non-processed samples + for( i = 0; i < n; i++ ) + if( subsample_mask->data.ptr[i] ) + { + _sample.data.fl = values; + _mask.data.ptr = missing; + values += _sample.cols; + missing += _mask.cols; + weak_eval->data.db[i] = tree->predict( &_sample, &_mask, true )->value; + } + } + + // now update weights and other parameters for each type of boosting + if( params.boost_type == DISCRETE ) + { + // Discrete AdaBoost: + // weak_eval[i] (=f(x_i)) is in {-1,1} + // err = sum(w_i*(f(x_i) != y_i))/sum(w_i) + // C = log((1-err)/err) + // w_i *= exp(C*(f(x_i) != y_i)) + + double C, err = 0.; + double scale[] = { 1., 0. }; + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]; + sumw += w; + err += w*(weak_eval->data.db[i] != orig_response->data.i[i]); + } + + if( sumw != 0 ) + err /= sumw; + C = err = -log_ratio( err ); + scale[1] = exp(err); + + sumw = 0; + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]* + scale[weak_eval->data.db[i] != orig_response->data.i[i]]; + sumw += w; + weights->data.db[i] = w; + } + + tree->scale( C ); + } + else if( params.boost_type == REAL ) + { + // Real AdaBoost: + // weak_eval[i] = f(x_i) = 0.5*log(p(x_i)/(1-p(x_i))), p(x_i)=P(y=1|x_i) + // w_i *= exp(-y_i*f(x_i)) + + for( i = 0; i < n; i++ ) + weak_eval->data.db[i] *= -orig_response->data.i[i]; + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i]*weak_eval->data.db[i]; + sumw += w; + weights->data.db[i] = w; + } + } + else if( params.boost_type == LOGIT ) + { + // LogitBoost: + // weak_eval[i] = f(x_i) in [-z_max,z_max] + // sum_response = F(x_i). + // F(x_i) += 0.5*f(x_i) + // p(x_i) = exp(F(x_i))/(exp(F(x_i)) + exp(-F(x_i))=1/(1+exp(-2*F(x_i))) + // reuse weak_eval: weak_eval[i] <- p(x_i) + // w_i = p(x_i)*1(1 - p(x_i)) + // z_i = ((y_i+1)/2 - p(x_i))/(p(x_i)*(1 - p(x_i))) + // store z_i to the data->data_root as the new target responses + + const double lb_weight_thresh = FLT_EPSILON; + const double lb_z_max = 10.; + /*float* responses_buf = data->get_resp_float_buf(); + const float* responses = 0; + data->get_ord_responses(data->data_root, responses_buf, &responses);*/ + + /*if( weak->total == 7 ) + putchar('*');*/ + + for( i = 0; i < n; i++ ) + { + double s = sum_response->data.db[i] + 0.5*weak_eval->data.db[i]; + sum_response->data.db[i] = s; + weak_eval->data.db[i] = -2*s; + } + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double p = 1./(1. + weak_eval->data.db[i]); + double w = p*(1 - p), z; + w = MAX( w, lb_weight_thresh ); + weights->data.db[i] = w; + sumw += w; + if( orig_response->data.i[i] > 0 ) + { + z = 1./p; + fdata[sample_idx[i]*step] = (float)MIN(z, lb_z_max); + } + else + { + z = 1./(1-p); + fdata[sample_idx[i]*step] = (float)-MIN(z, lb_z_max); + } + } + } + else + { + // Gentle AdaBoost: + // weak_eval[i] = f(x_i) in [-1,1] + // w_i *= exp(-y_i*f(x_i)) + assert( params.boost_type == GENTLE ); + + for( i = 0; i < n; i++ ) + weak_eval->data.db[i] *= -orig_response->data.i[i]; + + cvExp( weak_eval, weak_eval ); + + for( i = 0; i < n; i++ ) + { + double w = weights->data.db[i] * weak_eval->data.db[i]; + weights->data.db[i] = w; + sumw += w; + } + } + } + + // renormalize weights + if( sumw > FLT_EPSILON ) + { + sumw = 1./sumw; + for( i = 0; i < n; ++i ) + weights->data.db[i] *= sumw; + } + + __END__; +} + + +void +CvBoost::trim_weights() +{ + //CV_FUNCNAME( "CvBoost::trim_weights" ); + + __BEGIN__; + + int i, count = data->sample_count, nz_count = 0; + double sum, threshold; + + if( params.weight_trim_rate <= 0. || params.weight_trim_rate >= 1. ) + EXIT; + + // use weak_eval as temporary buffer for sorted weights + cvCopy( weights, weak_eval ); + + std::sort(weak_eval->data.db, weak_eval->data.db + count); + + // as weight trimming occurs immediately after updating the weights, + // where they are renormalized, we assume that the weight sum = 1. + sum = 1. - params.weight_trim_rate; + + for( i = 0; i < count; i++ ) + { + double w = weak_eval->data.db[i]; + if( sum <= 0 ) + break; + sum -= w; + } + + threshold = i < count ? weak_eval->data.db[i] : DBL_MAX; + + for( i = 0; i < count; i++ ) + { + double w = weights->data.db[i]; + int f = w >= threshold; + subsample_mask->data.ptr[i] = (uchar)f; + nz_count += f; + } + + have_subsample = nz_count < count; + + __END__; +} + + +const CvMat* +CvBoost::get_active_vars( bool absolute_idx ) +{ + CvMat* mask = 0; + CvMat* inv_map = 0; + CvMat* result = 0; + + CV_FUNCNAME( "CvBoost::get_active_vars" ); + + __BEGIN__; + + if( !weak ) + CV_ERROR( CV_StsError, "The boosted tree ensemble has not been trained yet" ); + + if( !active_vars || !active_vars_abs ) + { + CvSeqReader reader; + int i, j, nactive_vars; + CvBoostTree* wtree; + const CvDTreeNode* node; + + assert(!active_vars && !active_vars_abs); + mask = cvCreateMat( 1, data->var_count, CV_8U ); + inv_map = cvCreateMat( 1, data->var_count, CV_32S ); + cvZero( mask ); + cvSet( inv_map, cvScalar(-1) ); + + // first pass: compute the mask of used variables + cvStartReadSeq( weak, &reader ); + for( i = 0; i < weak->total; i++ ) + { + CV_READ_SEQ_ELEM(wtree, reader); + + node = wtree->get_root(); + assert( node != 0 ); + for(;;) + { + const CvDTreeNode* parent; + for(;;) + { + CvDTreeSplit* split = node->split; + for( ; split != 0; split = split->next ) + mask->data.ptr[split->var_idx] = 1; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + } + + nactive_vars = cvCountNonZero(mask); + + //if ( nactive_vars > 0 ) + { + active_vars = cvCreateMat( 1, nactive_vars, CV_32S ); + active_vars_abs = cvCreateMat( 1, nactive_vars, CV_32S ); + + have_active_cat_vars = false; + + for( i = j = 0; i < data->var_count; i++ ) + { + if( mask->data.ptr[i] ) + { + active_vars->data.i[j] = i; + active_vars_abs->data.i[j] = data->var_idx ? data->var_idx->data.i[i] : i; + inv_map->data.i[i] = j; + if( data->var_type->data.i[i] >= 0 ) + have_active_cat_vars = true; + j++; + } + } + + + // second pass: now compute the condensed indices + cvStartReadSeq( weak, &reader ); + for( i = 0; i < weak->total; i++ ) + { + CV_READ_SEQ_ELEM(wtree, reader); + node = wtree->get_root(); + for(;;) + { + const CvDTreeNode* parent; + for(;;) + { + CvDTreeSplit* split = node->split; + for( ; split != 0; split = split->next ) + { + split->condensed_idx = inv_map->data.i[split->var_idx]; + assert( split->condensed_idx >= 0 ); + } + + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + } + } + } + + result = absolute_idx ? active_vars_abs : active_vars; + + __END__; + + cvReleaseMat( &mask ); + cvReleaseMat( &inv_map ); + + return result; +} + + +float +CvBoost::predict( const CvMat* _sample, const CvMat* _missing, + CvMat* weak_responses, CvSlice slice, + bool raw_mode, bool return_sum ) const +{ + float value = -FLT_MAX; + + CvSeqReader reader; + double sum = 0; + int wstep = 0; + const float* sample_data; + + if( !weak ) + CV_Error( CV_StsError, "The boosted tree ensemble has not been trained yet" ); + + if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || + (_sample->cols != 1 && _sample->rows != 1) || + (_sample->cols + _sample->rows - 1 != data->var_all && !raw_mode) || + (active_vars && _sample->cols + _sample->rows - 1 != active_vars->cols && raw_mode) ) + CV_Error( CV_StsBadArg, + "the input sample must be 1d floating-point vector with the same " + "number of elements as the total number of variables or " + "as the number of variables used for training" ); + + if( _missing ) + { + if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || + !CV_ARE_SIZES_EQ(_missing, _sample) ) + CV_Error( CV_StsBadArg, + "the missing data mask must be 8-bit vector of the same size as input sample" ); + } + + int i, weak_count = cvSliceLength( slice, weak ); + if( weak_count >= weak->total ) + { + weak_count = weak->total; + slice.start_index = 0; + } + + if( weak_responses ) + { + if( !CV_IS_MAT(weak_responses) || + CV_MAT_TYPE(weak_responses->type) != CV_32FC1 || + (weak_responses->cols != 1 && weak_responses->rows != 1) || + weak_responses->cols + weak_responses->rows - 1 != weak_count ) + CV_Error( CV_StsBadArg, + "The output matrix of weak classifier responses must be valid " + "floating-point vector of the same number of components as the length of input slice" ); + wstep = CV_IS_MAT_CONT(weak_responses->type) ? 1 : weak_responses->step/sizeof(float); + } + + int var_count = active_vars->cols; + const int* vtype = data->var_type->data.i; + const int* cmap = data->cat_map->data.i; + const int* cofs = data->cat_ofs->data.i; + + cv::Mat sample = cv::cvarrToMat(_sample); + cv::Mat missing; + if(!_missing) + missing = cv::cvarrToMat(_missing); + + // if need, preprocess the input vector + if( !raw_mode ) + { + int sstep, mstep = 0; + const float* src_sample; + const uchar* src_mask = 0; + float* dst_sample; + uchar* dst_mask; + const int* vidx = active_vars->data.i; + const int* vidx_abs = active_vars_abs->data.i; + bool have_mask = _missing != 0; + + sample = cv::Mat(1, var_count, CV_32FC1); + missing = cv::Mat(1, var_count, CV_8UC1); + + dst_sample = sample.ptr(); + dst_mask = missing.ptr(); + + src_sample = _sample->data.fl; + sstep = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]); + + if( _missing ) + { + src_mask = _missing->data.ptr; + mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step; + } + + for( i = 0; i < var_count; i++ ) + { + int idx = vidx[i], idx_abs = vidx_abs[i]; + float val = src_sample[idx_abs*sstep]; + int ci = vtype[idx]; + uchar m = src_mask ? src_mask[idx_abs*mstep] : (uchar)0; + + if( ci >= 0 ) + { + int a = cofs[ci], b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1], + c = a; + int ival = cvRound(val); + if ( (ival != val) && (!m) ) + CV_Error( CV_StsBadArg, + "one of input categorical variable is not an integer" ); + + while( a < b ) + { + c = (a + b) >> 1; + if( ival < cmap[c] ) + b = c; + else if( ival > cmap[c] ) + a = c+1; + else + break; + } + + if( c < 0 || ival != cmap[c] ) + { + m = 1; + have_mask = true; + } + else + { + val = (float)(c - cofs[ci]); + } + } + + dst_sample[i] = val; + dst_mask[i] = m; + } + + if( !have_mask ) + missing.release(); + } + else + { + if( !CV_IS_MAT_CONT(_sample->type & (_missing ? _missing->type : -1)) ) + CV_Error( CV_StsBadArg, "In raw mode the input vectors must be continuous" ); + } + + cvStartReadSeq( weak, &reader ); + cvSetSeqReaderPos( &reader, slice.start_index ); + + sample_data = sample.ptr(); + + if( !have_active_cat_vars && missing.empty() && !weak_responses ) + { + for( i = 0; i < weak_count; i++ ) + { + CvBoostTree* wtree; + const CvDTreeNode* node; + CV_READ_SEQ_ELEM( wtree, reader ); + + node = wtree->get_root(); + while( node->left ) + { + CvDTreeSplit* split = node->split; + int vi = split->condensed_idx; + float val = sample_data[vi]; + int dir = val <= split->ord.c ? -1 : 1; + if( split->inversed ) + dir = -dir; + node = dir < 0 ? node->left : node->right; + } + sum += node->value; + } + } + else + { + const int* avars = active_vars->data.i; + const uchar* m = !missing.empty() ? missing.ptr() : 0; + + // full-featured version + for( i = 0; i < weak_count; i++ ) + { + CvBoostTree* wtree; + const CvDTreeNode* node; + CV_READ_SEQ_ELEM( wtree, reader ); + + node = wtree->get_root(); + while( node->left ) + { + const CvDTreeSplit* split = node->split; + int dir = 0; + for( ; !dir && split != 0; split = split->next ) + { + int vi = split->condensed_idx; + int ci = vtype[avars[vi]]; + float val = sample_data[vi]; + if( m && m[vi] ) + continue; + if( ci < 0 ) // ordered + dir = val <= split->ord.c ? -1 : 1; + else // categorical + { + int c = cvRound(val); + dir = CV_DTREE_CAT_DIR(c, split->subset); + } + if( split->inversed ) + dir = -dir; + } + + if( !dir ) + { + int diff = node->right->sample_count - node->left->sample_count; + dir = diff < 0 ? -1 : 1; + } + node = dir < 0 ? node->left : node->right; + } + if( weak_responses ) + weak_responses->data.fl[i*wstep] = (float)node->value; + sum += node->value; + } + } + + if( return_sum ) + value = (float)sum; + else + { + int cls_idx = sum >= 0; + if( raw_mode ) + value = (float)cls_idx; + else + value = (float)cmap[cofs[vtype[data->var_count]] + cls_idx]; + } + + return value; +} + +float CvBoost::calc_error( CvMLData* _data, int type, std::vector *resp ) +{ + float err = 0; + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); + const CvMat* var_types = _data->get_var_types(); + int* sidx = sample_idx ? sample_idx->data.i : 0; + int r_step = CV_IS_MAT_CONT(response->type) ? + 1 : response->step / CV_ELEM_SIZE(response->type); + bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; + int sample_count = sample_idx ? sample_idx->cols : 0; + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; + float* pred_resp = 0; + if( resp && (sample_count > 0) ) + { + resp->resize( sample_count ); + pred_resp = &((*resp)[0]); + } + if ( is_classifier ) + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 ); + if( pred_resp ) + pred_resp[i] = r; + int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; + err += d; + } + err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + } + else + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 ); + if( pred_resp ) + pred_resp[i] = r; + float d = r - response->data.fl[si*r_step]; + err += d*d; + } + err = sample_count ? err / (float)sample_count : -FLT_MAX; + } + return err; +} + +void CvBoost::write_params( CvFileStorage* fs ) const +{ + const char* boost_type_str = + params.boost_type == DISCRETE ? "DiscreteAdaboost" : + params.boost_type == REAL ? "RealAdaboost" : + params.boost_type == LOGIT ? "LogitBoost" : + params.boost_type == GENTLE ? "GentleAdaboost" : 0; + + const char* split_crit_str = + params.split_criteria == DEFAULT ? "Default" : + params.split_criteria == GINI ? "Gini" : + params.boost_type == MISCLASS ? "Misclassification" : + params.boost_type == SQERR ? "SquaredErr" : 0; + + if( boost_type_str ) + cvWriteString( fs, "boosting_type", boost_type_str ); + else + cvWriteInt( fs, "boosting_type", params.boost_type ); + + if( split_crit_str ) + cvWriteString( fs, "splitting_criteria", split_crit_str ); + else + cvWriteInt( fs, "splitting_criteria", params.split_criteria ); + + cvWriteInt( fs, "ntrees", weak->total ); + cvWriteReal( fs, "weight_trimming_rate", params.weight_trim_rate ); + + data->write_params( fs ); +} + + +void CvBoost::read_params( CvFileStorage* fs, CvFileNode* fnode ) +{ + CV_FUNCNAME( "CvBoost::read_params" ); + + __BEGIN__; + + CvFileNode* temp; + + if( !fnode || !CV_NODE_IS_MAP(fnode->tag) ) + return; + + data = new CvDTreeTrainData(); + CV_CALL( data->read_params(fs, fnode)); + data->shared = true; + + params.max_depth = data->params.max_depth; + params.min_sample_count = data->params.min_sample_count; + params.max_categories = data->params.max_categories; + params.priors = data->params.priors; + params.regression_accuracy = data->params.regression_accuracy; + params.use_surrogates = data->params.use_surrogates; + + temp = cvGetFileNodeByName( fs, fnode, "boosting_type" ); + if( !temp ) + return; + + if( temp && CV_NODE_IS_STRING(temp->tag) ) + { + const char* boost_type_str = cvReadString( temp, "" ); + params.boost_type = strcmp( boost_type_str, "DiscreteAdaboost" ) == 0 ? DISCRETE : + strcmp( boost_type_str, "RealAdaboost" ) == 0 ? REAL : + strcmp( boost_type_str, "LogitBoost" ) == 0 ? LOGIT : + strcmp( boost_type_str, "GentleAdaboost" ) == 0 ? GENTLE : -1; + } + else + params.boost_type = cvReadInt( temp, -1 ); + + if( params.boost_type < DISCRETE || params.boost_type > GENTLE ) + CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); + + temp = cvGetFileNodeByName( fs, fnode, "splitting_criteria" ); + if( temp && CV_NODE_IS_STRING(temp->tag) ) + { + const char* split_crit_str = cvReadString( temp, "" ); + params.split_criteria = strcmp( split_crit_str, "Default" ) == 0 ? DEFAULT : + strcmp( split_crit_str, "Gini" ) == 0 ? GINI : + strcmp( split_crit_str, "Misclassification" ) == 0 ? MISCLASS : + strcmp( split_crit_str, "SquaredErr" ) == 0 ? SQERR : -1; + } + else + params.split_criteria = cvReadInt( temp, -1 ); + + if( params.split_criteria < DEFAULT || params.boost_type > SQERR ) + CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); + + params.weak_count = cvReadIntByName( fs, fnode, "ntrees" ); + params.weight_trim_rate = cvReadRealByName( fs, fnode, "weight_trimming_rate", 0. ); + + __END__; +} + + + +void +CvBoost::read( CvFileStorage* fs, CvFileNode* node ) +{ + CV_FUNCNAME( "CvBoost::read" ); + + __BEGIN__; + + CvSeqReader reader; + CvFileNode* trees_fnode; + CvMemStorage* storage; + int i, ntrees; + + clear(); + read_params( fs, node ); + + if( !data ) + EXIT; + + trees_fnode = cvGetFileNodeByName( fs, node, "trees" ); + if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) + CV_ERROR( CV_StsParseError, " tag is missing" ); + + cvStartReadSeq( trees_fnode->data.seq, &reader ); + ntrees = trees_fnode->data.seq->total; + + if( ntrees != params.weak_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "The number of trees stored does not match tag value" ); + + CV_CALL( storage = cvCreateMemStorage() ); + weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); + + for( i = 0; i < ntrees; i++ ) + { + CvBoostTree* tree = new CvBoostTree(); + CV_CALL(tree->read( fs, (CvFileNode*)reader.ptr, this, data )); + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + cvSeqPush( weak, &tree ); + } + get_active_vars(); + + __END__; +} + + +void +CvBoost::write( CvFileStorage* fs, const char* name ) const +{ + CV_FUNCNAME( "CvBoost::write" ); + + __BEGIN__; + + CvSeqReader reader; + int i; + + cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_BOOSTING ); + + if( !weak ) + CV_ERROR( CV_StsBadArg, "The classifier has not been trained yet" ); + + write_params( fs ); + cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); + + cvStartReadSeq( weak, &reader ); + + for( i = 0; i < weak->total; i++ ) + { + CvBoostTree* tree; + CV_READ_SEQ_ELEM( tree, reader ); + cvStartWriteStruct( fs, 0, CV_NODE_MAP ); + tree->write( fs ); + cvEndWriteStruct( fs ); + } + + cvEndWriteStruct( fs ); + cvEndWriteStruct( fs ); + + __END__; +} + + +CvMat* +CvBoost::get_weights() +{ + return weights; +} + + +CvMat* +CvBoost::get_subtree_weights() +{ + return subtree_weights; +} + + +CvMat* +CvBoost::get_weak_response() +{ + return weak_eval; +} + + +const CvBoostParams& +CvBoost::get_params() const +{ + return params; +} + +CvSeq* CvBoost::get_weak_predictors() +{ + return weak; +} + +const CvDTreeTrainData* CvBoost::get_data() const +{ + return data; +} + +using namespace cv; + +CvBoost::CvBoost( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, + CvBoostParams _params ) +{ + weak = 0; + data = 0; + default_model_name = "my_boost_tree"; + active_vars = active_vars_abs = orig_response = sum_response = weak_eval = + subsample_mask = weights = subtree_weights = 0; + + train( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params ); +} + + +bool +CvBoost::train( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, + CvBoostParams _params, bool _update ) +{ + train_data_hdr = _train_data; + train_data_mat = _train_data; + responses_hdr = _responses; + responses_mat = _responses; + + CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; + + return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, + sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, + mmask.data.ptr ? &mmask : 0, _params, _update); +} + +float +CvBoost::predict( const Mat& _sample, const Mat& _missing, + const Range& slice, bool raw_mode, bool return_sum ) const +{ + CvMat sample = _sample, mmask = _missing; + /*if( weak_responses ) + { + int weak_count = cvSliceLength( slice, weak ); + if( weak_count >= weak->total ) + { + weak_count = weak->total; + slice.start_index = 0; + } + + if( !(weak_responses->data && weak_responses->type() == CV_32FC1 && + (weak_responses->cols == 1 || weak_responses->rows == 1) && + weak_responses->cols + weak_responses->rows - 1 == weak_count) ) + weak_responses->create(weak_count, 1, CV_32FC1); + pwr = &(wr = *weak_responses); + }*/ + return predict(&sample, _missing.empty() ? 0 : &mmask, 0, + slice == Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), + raw_mode, return_sum); +} + +/* End of file. */ diff --git a/apps/traincascade/old_ml_data.cpp b/apps/traincascade/old_ml_data.cpp new file mode 100644 index 0000000000..d221dcbf0f --- /dev/null +++ b/apps/traincascade/old_ml_data.cpp @@ -0,0 +1,792 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#include "old_ml_precomp.hpp" +#include + +#define MISS_VAL FLT_MAX +#define CV_VAR_MISS 0 + +CvTrainTestSplit::CvTrainTestSplit() +{ + train_sample_part_mode = CV_COUNT; + train_sample_part.count = -1; + mix = false; +} + +CvTrainTestSplit::CvTrainTestSplit( int _train_sample_count, bool _mix ) +{ + train_sample_part_mode = CV_COUNT; + train_sample_part.count = _train_sample_count; + mix = _mix; +} + +CvTrainTestSplit::CvTrainTestSplit( float _train_sample_portion, bool _mix ) +{ + train_sample_part_mode = CV_PORTION; + train_sample_part.portion = _train_sample_portion; + mix = _mix; +} + +//////////////// + +CvMLData::CvMLData() +{ + values = missing = var_types = var_idx_mask = response_out = var_idx_out = var_types_out = 0; + train_sample_idx = test_sample_idx = 0; + header_lines_number = 0; + sample_idx = 0; + response_idx = -1; + + train_sample_count = -1; + + delimiter = ','; + miss_ch = '?'; + //flt_separator = '.'; + + rng = &cv::theRNG(); +} + +CvMLData::~CvMLData() +{ + clear(); +} + +void CvMLData::free_train_test_idx() +{ + cvReleaseMat( &train_sample_idx ); + cvReleaseMat( &test_sample_idx ); + sample_idx = 0; +} + +void CvMLData::clear() +{ + class_map.clear(); + + cvReleaseMat( &values ); + cvReleaseMat( &missing ); + cvReleaseMat( &var_types ); + cvReleaseMat( &var_idx_mask ); + + cvReleaseMat( &response_out ); + cvReleaseMat( &var_idx_out ); + cvReleaseMat( &var_types_out ); + + free_train_test_idx(); + + total_class_count = 0; + + response_idx = -1; + + train_sample_count = -1; +} + + +void CvMLData::set_header_lines_number( int idx ) +{ + header_lines_number = std::max(0, idx); +} + +int CvMLData::get_header_lines_number() const +{ + return header_lines_number; +} + +static char *fgets_chomp(char *str, int n, FILE *stream) +{ + char *head = fgets(str, n, stream); + if( head ) + { + for(char *tail = head + strlen(head) - 1; tail >= head; --tail) + { + if( *tail != '\r' && *tail != '\n' ) + break; + *tail = '\0'; + } + } + return head; +} + + +int CvMLData::read_csv(const char* filename) +{ + const int M = 1000000; + const char str_delimiter[3] = { ' ', delimiter, '\0' }; + FILE* file = 0; + CvMemStorage* storage; + CvSeq* seq; + char *ptr; + float* el_ptr; + CvSeqReader reader; + int cols_count = 0; + uchar *var_types_ptr = 0; + + clear(); + + file = fopen( filename, "rt" ); + + if( !file ) + return -1; + + std::vector _buf(M); + char* buf = &_buf[0]; + + // skip header lines + for( int i = 0; i < header_lines_number; i++ ) + { + if( fgets( buf, M, file ) == 0 ) + { + fclose(file); + return -1; + } + } + + // read the first data line and determine the number of variables + if( !fgets_chomp( buf, M, file )) + { + fclose(file); + return -1; + } + + ptr = buf; + while( *ptr == ' ' ) + ptr++; + for( ; *ptr != '\0'; ) + { + if(*ptr == delimiter || *ptr == ' ') + { + cols_count++; + ptr++; + while( *ptr == ' ' ) ptr++; + } + else + ptr++; + } + + cols_count++; + + if ( cols_count == 0) + { + fclose(file); + return -1; + } + + // create temporary memory storage to store the whole database + el_ptr = new float[cols_count]; + storage = cvCreateMemStorage(); + seq = cvCreateSeq( 0, sizeof(*seq), cols_count*sizeof(float), storage ); + + var_types = cvCreateMat( 1, cols_count, CV_8U ); + cvZero( var_types ); + var_types_ptr = var_types->data.ptr; + + for(;;) + { + char *token = NULL; + int type; + token = strtok(buf, str_delimiter); + if (!token) + break; + for (int i = 0; i < cols_count-1; i++) + { + str_to_flt_elem( token, el_ptr[i], type); + var_types_ptr[i] |= type; + token = strtok(NULL, str_delimiter); + if (!token) + { + fclose(file); + delete [] el_ptr; + return -1; + } + } + str_to_flt_elem( token, el_ptr[cols_count-1], type); + var_types_ptr[cols_count-1] |= type; + cvSeqPush( seq, el_ptr ); + if( !fgets_chomp( buf, M, file ) ) + break; + } + fclose(file); + + values = cvCreateMat( seq->total, cols_count, CV_32FC1 ); + missing = cvCreateMat( seq->total, cols_count, CV_8U ); + var_idx_mask = cvCreateMat( 1, values->cols, CV_8UC1 ); + cvSet( var_idx_mask, cvRealScalar(1) ); + train_sample_count = seq->total; + + cvStartReadSeq( seq, &reader ); + for(int i = 0; i < seq->total; i++ ) + { + const float* sdata = (float*)reader.ptr; + float* ddata = values->data.fl + cols_count*i; + uchar* dm = missing->data.ptr + cols_count*i; + + for( int j = 0; j < cols_count; j++ ) + { + ddata[j] = sdata[j]; + dm[j] = ( fabs( MISS_VAL - sdata[j] ) <= FLT_EPSILON ); + } + CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); + } + + if ( cvNorm( missing, 0, CV_L1 ) <= FLT_EPSILON ) + cvReleaseMat( &missing ); + + cvReleaseMemStorage( &storage ); + delete []el_ptr; + return 0; +} + +const CvMat* CvMLData::get_values() const +{ + return values; +} + +const CvMat* CvMLData::get_missing() const +{ + CV_FUNCNAME( "CvMLData::get_missing" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + __END__; + + return missing; +} + +const std::map& CvMLData::get_class_labels_map() const +{ + return class_map; +} + +void CvMLData::str_to_flt_elem( const char* token, float& flt_elem, int& type) +{ + + char* stopstring = NULL; + flt_elem = (float)strtod( token, &stopstring ); + assert( stopstring ); + type = CV_VAR_ORDERED; + if ( *stopstring == miss_ch && strlen(stopstring) == 1 ) // missed value + { + flt_elem = MISS_VAL; + type = CV_VAR_MISS; + } + else + { + if ( (*stopstring != 0) && (*stopstring != '\n') && (strcmp(stopstring, "\r\n") != 0) ) // class label + { + int idx = class_map[token]; + if ( idx == 0) + { + total_class_count++; + idx = total_class_count; + class_map[token] = idx; + } + flt_elem = (float)idx; + type = CV_VAR_CATEGORICAL; + } + } +} + +void CvMLData::set_delimiter(char ch) +{ + CV_FUNCNAME( "CvMLData::set_delimited" ); + __BEGIN__; + + if (ch == miss_ch /*|| ch == flt_separator*/) + CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); + + delimiter = ch; + + __END__; +} + +char CvMLData::get_delimiter() const +{ + return delimiter; +} + +void CvMLData::set_miss_ch(char ch) +{ + CV_FUNCNAME( "CvMLData::set_miss_ch" ); + __BEGIN__; + + if (ch == delimiter/* || ch == flt_separator*/) + CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); + + miss_ch = ch; + + __END__; +} + +char CvMLData::get_miss_ch() const +{ + return miss_ch; +} + +void CvMLData::set_response_idx( int idx ) +{ + CV_FUNCNAME( "CvMLData::set_response_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + if ( idx >= values->cols) + CV_ERROR( CV_StsBadArg, "idx value is not correct" ); + + if ( response_idx >= 0 ) + chahge_var_idx( response_idx, true ); + if ( idx >= 0 ) + chahge_var_idx( idx, false ); + response_idx = idx; + + __END__; +} + +int CvMLData::get_response_idx() const +{ + CV_FUNCNAME( "CvMLData::get_response_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + return response_idx; +} + +void CvMLData::change_var_type( int var_idx, int type ) +{ + CV_FUNCNAME( "CvMLData::change_var_type" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + if ( var_idx < 0 || var_idx >= var_count) + CV_ERROR( CV_StsBadArg, "var_idx is not correct" ); + + if ( type != CV_VAR_ORDERED && type != CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "type is not correct" ); + + assert( var_types ); + if ( var_types->data.ptr[var_idx] == CV_VAR_CATEGORICAL && type == CV_VAR_ORDERED) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[var_idx] = (uchar)type; + + __END__; + + return; +} + +void CvMLData::set_var_types( const char* str ) +{ + CV_FUNCNAME( "CvMLData::set_var_types" ); + __BEGIN__; + + const char* ord = 0, *cat = 0; + int var_count = 0, set_var_type_count = 0; + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + assert( var_types ); + + ord = strstr( str, "ord" ); + cat = strstr( str, "cat" ); + if ( !ord && !cat ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + if ( !ord && strlen(cat) == 3 ) // str == "cat" + { + cvSet( var_types, cvScalarAll(CV_VAR_CATEGORICAL) ); + return; + } + + if ( !cat && strlen(ord) == 3 ) // str == "ord" + { + cvSet( var_types, cvScalarAll(CV_VAR_ORDERED) ); + return; + } + + if ( ord ) // parse ord str + { + char* stopstring = NULL; + if ( ord[3] != '[') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + ord += 4; // pass "ord[" + do + { + int b1 = (int)strtod( ord, &stopstring ); + if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + ord = stopstring + 1; + if ( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + if ( var_types->data.ptr[b1] == CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[b1] = CV_VAR_ORDERED; + set_var_type_count++; + } + else + { + if ( stopstring[0] == '-') + { + int b2 = (int)strtod( ord, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + ord = stopstring + 1; + for (int i = b1; i <= b2; i++) + { + if ( var_types->data.ptr[i] == CV_VAR_CATEGORICAL) + CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); + var_types->data.ptr[i] = CV_VAR_ORDERED; + } + set_var_type_count += b2 - b1 + 1; + } + else + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + } + } + while (*stopstring != ']'); + + if ( stopstring[1] != '\0' && stopstring[1] != ',') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + } + + if ( cat ) // parse cat str + { + char* stopstring = NULL; + if ( cat[3] != '[') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + cat += 4; // pass "cat[" + do + { + int b1 = (int)strtod( cat, &stopstring ); + if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + cat = stopstring + 1; + if ( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + var_types->data.ptr[b1] = CV_VAR_CATEGORICAL; + set_var_type_count++; + } + else + { + if ( stopstring[0] == '-') + { + int b2 = (int)strtod( cat, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + cat = stopstring + 1; + for (int i = b1; i <= b2; i++) + var_types->data.ptr[i] = CV_VAR_CATEGORICAL; + set_var_type_count += b2 - b1 + 1; + } + else + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + } + } + while (*stopstring != ']'); + + if ( stopstring[1] != '\0' && stopstring[1] != ',') + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + } + + if (set_var_type_count != var_count) + CV_ERROR( CV_StsBadArg, "types string is not correct" ); + + __END__; +} + +const CvMat* CvMLData::get_var_types() +{ + CV_FUNCNAME( "CvMLData::get_var_types" ); + __BEGIN__; + + uchar *var_types_out_ptr = 0; + int avcount, vt_size; + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + assert( var_idx_mask ); + + avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); + vt_size = avcount + (response_idx >= 0); + + if ( avcount == values->cols || (avcount == values->cols-1 && response_idx == values->cols-1) ) + return var_types; + + if ( !var_types_out || ( var_types_out && var_types_out->cols != vt_size ) ) + { + cvReleaseMat( &var_types_out ); + var_types_out = cvCreateMat( 1, vt_size, CV_8UC1 ); + } + + var_types_out_ptr = var_types_out->data.ptr; + for( int i = 0; i < var_types->cols; i++) + { + if (i == response_idx || !var_idx_mask->data.ptr[i]) continue; + *var_types_out_ptr = var_types->data.ptr[i]; + var_types_out_ptr++; + } + if ( response_idx >= 0 ) + *var_types_out_ptr = var_types->data.ptr[response_idx]; + + __END__; + + return var_types_out; +} + +int CvMLData::get_var_type( int var_idx ) const +{ + return var_types->data.ptr[var_idx]; +} + +const CvMat* CvMLData::get_responses() +{ + CV_FUNCNAME( "CvMLData::get_responses_ptr" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + var_count = values->cols; + + if ( response_idx < 0 || response_idx >= var_count ) + return 0; + if ( !response_out ) + response_out = cvCreateMatHeader( values->rows, 1, CV_32FC1 ); + else + cvInitMatHeader( response_out, values->rows, 1, CV_32FC1); + cvGetCol( values, response_out, response_idx ); + + __END__; + + return response_out; +} + +void CvMLData::set_train_test_split( const CvTrainTestSplit * spl) +{ + CV_FUNCNAME( "CvMLData::set_division" ); + __BEGIN__; + + int sample_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + sample_count = values->rows; + + float train_sample_portion; + + if (spl->train_sample_part_mode == CV_COUNT) + { + train_sample_count = spl->train_sample_part.count; + if (train_sample_count > sample_count) + CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); + train_sample_count = train_sample_count<=0 ? sample_count : train_sample_count; + } + else // dtype.train_sample_part_mode == CV_PORTION + { + train_sample_portion = spl->train_sample_part.portion; + if ( train_sample_portion > 1) + CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); + train_sample_portion = train_sample_portion <= FLT_EPSILON || + 1 - train_sample_portion <= FLT_EPSILON ? 1 : train_sample_portion; + train_sample_count = std::max(1, cvFloor( train_sample_portion * sample_count )); + } + + if ( train_sample_count == sample_count ) + { + free_train_test_idx(); + return; + } + + if ( train_sample_idx && train_sample_idx->cols != train_sample_count ) + free_train_test_idx(); + + if ( !sample_idx) + { + int test_sample_count = sample_count- train_sample_count; + sample_idx = (int*)cvAlloc( sample_count * sizeof(sample_idx[0]) ); + for (int i = 0; i < sample_count; i++ ) + sample_idx[i] = i; + train_sample_idx = cvCreateMatHeader( 1, train_sample_count, CV_32SC1 ); + *train_sample_idx = cvMat( 1, train_sample_count, CV_32SC1, &sample_idx[0] ); + + CV_Assert(test_sample_count > 0); + test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 ); + *test_sample_idx = cvMat( 1, test_sample_count, CV_32SC1, &sample_idx[train_sample_count] ); + } + + mix = spl->mix; + if ( mix ) + mix_train_and_test_idx(); + + __END__; +} + +const CvMat* CvMLData::get_train_sample_idx() const +{ + CV_FUNCNAME( "CvMLData::get_train_sample_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + return train_sample_idx; +} + +const CvMat* CvMLData::get_test_sample_idx() const +{ + CV_FUNCNAME( "CvMLData::get_test_sample_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + return test_sample_idx; +} + +void CvMLData::mix_train_and_test_idx() +{ + CV_FUNCNAME( "CvMLData::mix_train_and_test_idx" ); + __BEGIN__; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + __END__; + + if ( !sample_idx) + return; + + if ( train_sample_count > 0 && train_sample_count < values->rows ) + { + int n = values->rows; + for (int i = 0; i < n; i++) + { + int a = (*rng)(n); + int b = (*rng)(n); + int t; + CV_SWAP( sample_idx[a], sample_idx[b], t ); + } + } +} + +const CvMat* CvMLData::get_var_idx() +{ + CV_FUNCNAME( "CvMLData::get_var_idx" ); + __BEGIN__; + + int avcount = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + assert( var_idx_mask ); + + avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); + int* vidx; + + if ( avcount == values->cols ) + return 0; + + if ( !var_idx_out || ( var_idx_out && var_idx_out->cols != avcount ) ) + { + cvReleaseMat( &var_idx_out ); + var_idx_out = cvCreateMat( 1, avcount, CV_32SC1); + if ( response_idx >=0 ) + var_idx_mask->data.ptr[response_idx] = 0; + } + + vidx = var_idx_out->data.i; + + for(int i = 0; i < var_idx_mask->cols; i++) + if ( var_idx_mask->data.ptr[i] ) + { + *vidx = i; + vidx++; + } + + __END__; + + return var_idx_out; +} + +void CvMLData::chahge_var_idx( int vi, bool state ) +{ + change_var_idx( vi, state ); +} + +void CvMLData::change_var_idx( int vi, bool state ) +{ + CV_FUNCNAME( "CvMLData::change_var_idx" ); + __BEGIN__; + + int var_count = 0; + + if ( !values ) + CV_ERROR( CV_StsInternal, "data is empty" ); + + var_count = values->cols; + + if ( vi < 0 || vi >= var_count) + CV_ERROR( CV_StsBadArg, "variable index is not correct" ); + + assert( var_idx_mask ); + var_idx_mask->data.ptr[vi] = state; + + __END__; +} + +/* End of file. */ diff --git a/apps/traincascade/old_ml_inner_functions.cpp b/apps/traincascade/old_ml_inner_functions.cpp new file mode 100644 index 0000000000..10b43f93fe --- /dev/null +++ b/apps/traincascade/old_ml_inner_functions.cpp @@ -0,0 +1,1879 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#include "old_ml_precomp.hpp" + + +CvStatModel::CvStatModel() +{ + default_model_name = "my_stat_model"; +} + + +CvStatModel::~CvStatModel() +{ + clear(); +} + + +void CvStatModel::clear() +{ +} + + +void CvStatModel::save( const char* filename, const char* name ) const +{ + CvFileStorage* fs = 0; + + CV_FUNCNAME( "CvStatModel::save" ); + + __BEGIN__; + + CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_WRITE )); + if( !fs ) + CV_ERROR( CV_StsError, "Could not open the file storage. Check the path and permissions" ); + + write( fs, name ? name : default_model_name ); + + __END__; + + cvReleaseFileStorage( &fs ); +} + + +void CvStatModel::load( const char* filename, const char* name ) +{ + CvFileStorage* fs = 0; + + CV_FUNCNAME( "CvStatModel::load" ); + + __BEGIN__; + + CvFileNode* model_node = 0; + + CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_READ )); + if( !fs ) + EXIT; + + if( name ) + model_node = cvGetFileNodeByName( fs, 0, name ); + else + { + CvFileNode* root = cvGetRootFileNode( fs ); + if( root->data.seq->total > 0 ) + model_node = (CvFileNode*)cvGetSeqElem( root->data.seq, 0 ); + } + + read( fs, model_node ); + + __END__; + + cvReleaseFileStorage( &fs ); +} + + +void CvStatModel::write( CvFileStorage*, const char* ) const +{ + OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::write", "" ); +} + + +void CvStatModel::read( CvFileStorage*, CvFileNode* ) +{ + OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::read", "" ); +} + + +/* Calculates upper triangular matrix S, where A is a symmetrical matrix A=S'*S */ +static void cvChol( CvMat* A, CvMat* S ) +{ + int dim = A->rows; + + int i, j, k; + float sum; + + for( i = 0; i < dim; i++ ) + { + for( j = 0; j < i; j++ ) + CV_MAT_ELEM(*S, float, i, j) = 0; + + sum = 0; + for( k = 0; k < i; k++ ) + sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, i); + + CV_MAT_ELEM(*S, float, i, i) = (float)sqrt(CV_MAT_ELEM(*A, float, i, i) - sum); + + for( j = i + 1; j < dim; j++ ) + { + sum = 0; + for( k = 0; k < i; k++ ) + sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, j); + + CV_MAT_ELEM(*S, float, i, j) = + (CV_MAT_ELEM(*A, float, i, j) - sum) / CV_MAT_ELEM(*S, float, i, i); + + } + } +} + +/* Generates from multivariate normal distribution, where - is an + average row vector, - symmetric covariation matrix */ +CV_IMPL void cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, CvRNG* rng ) +{ + int dim = sample->cols; + int amount = sample->rows; + + CvRNG state = rng ? *rng : cvRNG( cvGetTickCount() ); + cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1) ); + + CvMat* utmat = cvCreateMat(dim, dim, sample->type); + CvMat* vect = cvCreateMatHeader(1, dim, sample->type); + + cvChol(cov, utmat); + + int i; + for( i = 0; i < amount; i++ ) + { + cvGetRow(sample, vect, i); + cvMatMulAdd(vect, utmat, mean, vect); + } + + cvReleaseMat(&vect); + cvReleaseMat(&utmat); +} + + +/* Generates of points from a discrete variate xi, + where Pr{xi = k} == probs[k], 0 < k < len - 1. */ +static void cvRandSeries( float probs[], int len, int sample[], int amount ) +{ + CvMat* univals = cvCreateMat(1, amount, CV_32FC1); + float* knots = (float*)cvAlloc( len * sizeof(float) ); + + int i, j; + + CvRNG state = cvRNG(-1); + cvRandArr(&state, univals, CV_RAND_UNI, cvScalarAll(0), cvScalarAll(1) ); + + knots[0] = probs[0]; + for( i = 1; i < len; i++ ) + knots[i] = knots[i - 1] + probs[i]; + + for( i = 0; i < amount; i++ ) + for( j = 0; j < len; j++ ) + { + if ( CV_MAT_ELEM(*univals, float, 0, i) <= knots[j] ) + { + sample[i] = j; + break; + } + } + + cvFree(&knots); +} + +/* Generates from gaussian mixture distribution */ +CV_IMPL void cvRandGaussMixture( CvMat* means[], + CvMat* covs[], + float weights[], + int clsnum, + CvMat* sample, + CvMat* sampClasses ) +{ + int dim = sample->cols; + int amount = sample->rows; + + int i, clss; + + int* sample_clsnum = (int*)cvAlloc( amount * sizeof(int) ); + CvMat** utmats = (CvMat**)cvAlloc( clsnum * sizeof(CvMat*) ); + CvMat* vect = cvCreateMatHeader(1, dim, CV_32FC1); + + CvMat* classes; + if( sampClasses ) + classes = sampClasses; + else + classes = cvCreateMat(1, amount, CV_32FC1); + + CvRNG state = cvRNG(-1); + cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1)); + + cvRandSeries(weights, clsnum, sample_clsnum, amount); + + for( i = 0; i < clsnum; i++ ) + { + utmats[i] = cvCreateMat(dim, dim, CV_32FC1); + cvChol(covs[i], utmats[i]); + } + + for( i = 0; i < amount; i++ ) + { + CV_MAT_ELEM(*classes, float, 0, i) = (float)sample_clsnum[i]; + cvGetRow(sample, vect, i); + clss = sample_clsnum[i]; + cvMatMulAdd(vect, utmats[clss], means[clss], vect); + } + + if( !sampClasses ) + cvReleaseMat(&classes); + for( i = 0; i < clsnum; i++ ) + cvReleaseMat(&utmats[i]); + cvFree(&utmats); + cvFree(&sample_clsnum); + cvReleaseMat(&vect); +} + + +CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data, + int num_of_clusters, CvMat* _centers ) +{ + CvMat* centers = _centers; + + CV_FUNCNAME("icvGenerateRandomClusterCenters"); + __BEGIN__; + + CvRNG rng; + CvMat data_comp, centers_comp; + CvPoint minLoc, maxLoc; // Not used, just for function "cvMinMaxLoc" + double minVal, maxVal; + int i; + int dim = data ? data->cols : 0; + + if( ICV_IS_MAT_OF_TYPE(data, CV_32FC1) ) + { + if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_32FC1) ) + { + CV_ERROR(CV_StsBadArg,""); + } + else if( !_centers ) + CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_32FC1)); + } + else if( ICV_IS_MAT_OF_TYPE(data, CV_64FC1) ) + { + if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_64FC1) ) + { + CV_ERROR(CV_StsBadArg,""); + } + else if( !_centers ) + CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_64FC1)); + } + else + CV_ERROR (CV_StsBadArg,""); + + if( num_of_clusters < 1 ) + CV_ERROR (CV_StsBadArg,""); + + rng = cvRNG(seed); + for (i = 0; i < dim; i++) + { + CV_CALL(cvGetCol (data, &data_comp, i)); + CV_CALL(cvMinMaxLoc (&data_comp, &minVal, &maxVal, &minLoc, &maxLoc)); + CV_CALL(cvGetCol (centers, ¢ers_comp, i)); + CV_CALL(cvRandArr (&rng, ¢ers_comp, CV_RAND_UNI, cvScalarAll(minVal), cvScalarAll(maxVal))); + } + + __END__; + + if( (cvGetErrStatus () < 0) || (centers != _centers) ) + cvReleaseMat (¢ers); + + return _centers ? _centers : centers; +} // end of icvGenerateRandomClusterCenters + +// By S. Dilman - begin - + +#define ICV_RAND_MAX 4294967296 // == 2^32 + +// static void cvRandRoundUni (CvMat* center, +// float radius_small, +// float radius_large, +// CvMat* desired_matrix, +// CvRNG* rng_state_ptr) +// { +// float rad, norm, coefficient; +// int dim, size, i, j; +// CvMat *cov, sample; +// CvRNG rng_local; + +// CV_FUNCNAME("cvRandRoundUni"); +// __BEGIN__ + +// rng_local = *rng_state_ptr; + +// CV_ASSERT ((radius_small >= 0) && +// (radius_large > 0) && +// (radius_small <= radius_large)); +// CV_ASSERT (center && desired_matrix && rng_state_ptr); +// CV_ASSERT (center->rows == 1); +// CV_ASSERT (center->cols == desired_matrix->cols); + +// dim = desired_matrix->cols; +// size = desired_matrix->rows; +// cov = cvCreateMat (dim, dim, CV_32FC1); +// cvSetIdentity (cov); +// cvRandMVNormal (center, cov, desired_matrix, &rng_local); + +// for (i = 0; i < size; i++) +// { +// rad = (float)(cvRandReal(&rng_local)*(radius_large - radius_small) + radius_small); +// cvGetRow (desired_matrix, &sample, i); +// norm = (float) cvNorm (&sample, 0, CV_L2); +// coefficient = rad / norm; +// for (j = 0; j < dim; j++) +// CV_MAT_ELEM (sample, float, 0, j) *= coefficient; +// } + +// __END__ + +// } + +// By S. Dilman - end - + +static int CV_CDECL +icvCmpIntegers( const void* a, const void* b ) +{ + return *(const int*)a - *(const int*)b; +} + + +static int CV_CDECL +icvCmpIntegersPtr( const void* _a, const void* _b ) +{ + int a = **(const int**)_a; + int b = **(const int**)_b; + return (a < b ? -1 : 0)|(a > b); +} + + +static int icvCmpSparseVecElems( const void* a, const void* b ) +{ + return ((CvSparseVecElem32f*)a)->idx - ((CvSparseVecElem32f*)b)->idx; +} + + +CvMat* +cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates ) +{ + CvMat* idx = 0; + + CV_FUNCNAME( "cvPreprocessIndexArray" ); + + __BEGIN__; + + int i, idx_total, idx_selected = 0, step, type, prev = INT_MIN, is_sorted = 1; + uchar* srcb = 0; + int* srci = 0; + int* dsti; + + if( !CV_IS_MAT(idx_arr) ) + CV_ERROR( CV_StsBadArg, "Invalid index array" ); + + if( idx_arr->rows != 1 && idx_arr->cols != 1 ) + CV_ERROR( CV_StsBadSize, "the index array must be 1-dimensional" ); + + idx_total = idx_arr->rows + idx_arr->cols - 1; + srcb = idx_arr->data.ptr; + srci = idx_arr->data.i; + + type = CV_MAT_TYPE(idx_arr->type); + step = CV_IS_MAT_CONT(idx_arr->type) ? 1 : idx_arr->step/CV_ELEM_SIZE(type); + + switch( type ) + { + case CV_8UC1: + case CV_8SC1: + // idx_arr is array of 1's and 0's - + // i.e. it is a mask of the selected components + if( idx_total != data_arr_size ) + CV_ERROR( CV_StsUnmatchedSizes, + "Component mask should contain as many elements as the total number of input variables" ); + + for( i = 0; i < idx_total; i++ ) + idx_selected += srcb[i*step] != 0; + + if( idx_selected == 0 ) + CV_ERROR( CV_StsOutOfRange, "No components/input_variables is selected!" ); + + break; + case CV_32SC1: + // idx_arr is array of integer indices of selected components + if( idx_total > data_arr_size ) + CV_ERROR( CV_StsOutOfRange, + "index array may not contain more elements than the total number of input variables" ); + idx_selected = idx_total; + // check if sorted already + for( i = 0; i < idx_total; i++ ) + { + int val = srci[i*step]; + if( val >= prev ) + { + is_sorted = 0; + break; + } + prev = val; + } + break; + default: + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported index array data type " + "(it should be 8uC1, 8sC1 or 32sC1)" ); + } + + CV_CALL( idx = cvCreateMat( 1, idx_selected, CV_32SC1 )); + dsti = idx->data.i; + + if( type < CV_32SC1 ) + { + for( i = 0; i < idx_total; i++ ) + if( srcb[i*step] ) + *dsti++ = i; + } + else + { + for( i = 0; i < idx_total; i++ ) + dsti[i] = srci[i*step]; + + if( !is_sorted ) + qsort( dsti, idx_total, sizeof(dsti[0]), icvCmpIntegers ); + + if( dsti[0] < 0 || dsti[idx_total-1] >= data_arr_size ) + CV_ERROR( CV_StsOutOfRange, "the index array elements are out of range" ); + + if( check_for_duplicates ) + { + for( i = 1; i < idx_total; i++ ) + if( dsti[i] <= dsti[i-1] ) + CV_ERROR( CV_StsBadArg, "There are duplicated index array elements" ); + } + } + + __END__; + + if( cvGetErrStatus() < 0 ) + cvReleaseMat( &idx ); + + return idx; +} + + +CvMat* +cvPreprocessVarType( const CvMat* var_type, const CvMat* var_idx, + int var_count, int* response_type ) +{ + CvMat* out_var_type = 0; + CV_FUNCNAME( "cvPreprocessVarType" ); + + if( response_type ) + *response_type = -1; + + __BEGIN__; + + int i, tm_size, tm_step; + //int* map = 0; + const uchar* src; + uchar* dst; + + if( !CV_IS_MAT(var_type) ) + CV_ERROR( var_type ? CV_StsBadArg : CV_StsNullPtr, "Invalid or absent var_type array" ); + + if( var_type->rows != 1 && var_type->cols != 1 ) + CV_ERROR( CV_StsBadSize, "var_type array must be 1-dimensional" ); + + if( !CV_IS_MASK_ARR(var_type)) + CV_ERROR( CV_StsUnsupportedFormat, "type mask must be 8uC1 or 8sC1 array" ); + + tm_size = var_type->rows + var_type->cols - 1; + tm_step = var_type->rows == 1 ? 1 : var_type->step/CV_ELEM_SIZE(var_type->type); + + if( /*tm_size != var_count &&*/ tm_size != var_count + 1 ) + CV_ERROR( CV_StsBadArg, + "type mask must be of + 1 size" ); + + if( response_type && tm_size > var_count ) + *response_type = var_type->data.ptr[var_count*tm_step] != 0; + + if( var_idx ) + { + if( !CV_IS_MAT(var_idx) || CV_MAT_TYPE(var_idx->type) != CV_32SC1 || + (var_idx->rows != 1 && var_idx->cols != 1) || !CV_IS_MAT_CONT(var_idx->type) ) + CV_ERROR( CV_StsBadArg, "var index array should be continuous 1-dimensional integer vector" ); + if( var_idx->rows + var_idx->cols - 1 > var_count ) + CV_ERROR( CV_StsBadSize, "var index array is too large" ); + //map = var_idx->data.i; + var_count = var_idx->rows + var_idx->cols - 1; + } + + CV_CALL( out_var_type = cvCreateMat( 1, var_count, CV_8UC1 )); + src = var_type->data.ptr; + dst = out_var_type->data.ptr; + + for( i = 0; i < var_count; i++ ) + { + //int idx = map ? map[i] : i; + assert( (unsigned)/*idx*/i < (unsigned)tm_size ); + dst[i] = (uchar)(src[/*idx*/i*tm_step] != 0); + } + + __END__; + + return out_var_type; +} + + +CvMat* +cvPreprocessOrderedResponses( const CvMat* responses, const CvMat* sample_idx, int sample_all ) +{ + CvMat* out_responses = 0; + + CV_FUNCNAME( "cvPreprocessOrderedResponses" ); + + __BEGIN__; + + int i, r_type, r_step; + const int* map = 0; + float* dst; + int sample_count = sample_all; + + if( !CV_IS_MAT(responses) ) + CV_ERROR( CV_StsBadArg, "Invalid response array" ); + + if( responses->rows != 1 && responses->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); + + if( responses->rows + responses->cols - 1 != sample_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "Response array must contain as many elements as the total number of samples" ); + + r_type = CV_MAT_TYPE(responses->type); + if( r_type != CV_32FC1 && r_type != CV_32SC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); + + r_step = responses->step ? responses->step / CV_ELEM_SIZE(responses->type) : 1; + + if( r_type == CV_32FC1 && CV_IS_MAT_CONT(responses->type) && !sample_idx ) + { + out_responses = cvCloneMat( responses ); + EXIT; + } + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || + (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) + CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); + if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) + CV_ERROR( CV_StsBadSize, "sample index array is too large" ); + map = sample_idx->data.i; + sample_count = sample_idx->rows + sample_idx->cols - 1; + } + + CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32FC1 )); + + dst = out_responses->data.fl; + if( r_type == CV_32FC1 ) + { + const float* src = responses->data.fl; + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + dst[i] = src[idx*r_step]; + } + } + else + { + const int* src = responses->data.i; + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + dst[i] = (float)src[idx*r_step]; + } + } + + __END__; + + return out_responses; +} + +CvMat* +cvPreprocessCategoricalResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all, + CvMat** out_response_map, CvMat** class_counts ) +{ + CvMat* out_responses = 0; + int** response_ptr = 0; + + CV_FUNCNAME( "cvPreprocessCategoricalResponses" ); + + if( out_response_map ) + *out_response_map = 0; + + if( class_counts ) + *class_counts = 0; + + __BEGIN__; + + int i, r_type, r_step; + int cls_count = 1, prev_cls, prev_i; + const int* map = 0; + const int* srci; + const float* srcfl; + int* dst; + int* cls_map; + int* cls_counts = 0; + int sample_count = sample_all; + + if( !CV_IS_MAT(responses) ) + CV_ERROR( CV_StsBadArg, "Invalid response array" ); + + if( responses->rows != 1 && responses->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); + + if( responses->rows + responses->cols - 1 != sample_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "Response array must contain as many elements as the total number of samples" ); + + r_type = CV_MAT_TYPE(responses->type); + if( r_type != CV_32FC1 && r_type != CV_32SC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); + + r_step = responses->rows == 1 ? 1 : responses->step / CV_ELEM_SIZE(responses->type); + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || + (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) + CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); + if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) + CV_ERROR( CV_StsBadSize, "sample index array is too large" ); + map = sample_idx->data.i; + sample_count = sample_idx->rows + sample_idx->cols - 1; + } + + CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32SC1 )); + + if( !out_response_map ) + CV_ERROR( CV_StsNullPtr, "out_response_map pointer is NULL" ); + + CV_CALL( response_ptr = (int**)cvAlloc( sample_count*sizeof(response_ptr[0]))); + + srci = responses->data.i; + srcfl = responses->data.fl; + dst = out_responses->data.i; + + for( i = 0; i < sample_count; i++ ) + { + int idx = map ? map[i] : i; + assert( (unsigned)idx < (unsigned)sample_all ); + if( r_type == CV_32SC1 ) + dst[i] = srci[idx*r_step]; + else + { + float rf = srcfl[idx*r_step]; + int ri = cvRound(rf); + if( ri != rf ) + { + char buf[100]; + sprintf( buf, "response #%d is not integral", idx ); + CV_ERROR( CV_StsBadArg, buf ); + } + dst[i] = ri; + } + response_ptr[i] = dst + i; + } + + qsort( response_ptr, sample_count, sizeof(int*), icvCmpIntegersPtr ); + + // count the classes + for( i = 1; i < sample_count; i++ ) + cls_count += *response_ptr[i] != *response_ptr[i-1]; + + if( cls_count < 2 ) + CV_ERROR( CV_StsBadArg, "There is only a single class" ); + + CV_CALL( *out_response_map = cvCreateMat( 1, cls_count, CV_32SC1 )); + + if( class_counts ) + { + CV_CALL( *class_counts = cvCreateMat( 1, cls_count, CV_32SC1 )); + cls_counts = (*class_counts)->data.i; + } + + // compact the class indices and build the map + prev_cls = ~*response_ptr[0]; + cls_count = -1; + cls_map = (*out_response_map)->data.i; + + for( i = 0, prev_i = -1; i < sample_count; i++ ) + { + int cur_cls = *response_ptr[i]; + if( cur_cls != prev_cls ) + { + if( cls_counts && cls_count >= 0 ) + cls_counts[cls_count] = i - prev_i; + cls_map[++cls_count] = prev_cls = cur_cls; + prev_i = i; + } + *response_ptr[i] = cls_count; + } + + if( cls_counts ) + cls_counts[cls_count] = i - prev_i; + + __END__; + + cvFree( &response_ptr ); + + return out_responses; +} + + +const float** +cvGetTrainSamples( const CvMat* train_data, int tflag, + const CvMat* var_idx, const CvMat* sample_idx, + int* _var_count, int* _sample_count, + bool always_copy_data ) +{ + float** samples = 0; + + CV_FUNCNAME( "cvGetTrainSamples" ); + + __BEGIN__; + + int i, j, var_count, sample_count, s_step, v_step; + bool copy_data; + const float* data; + const int *s_idx, *v_idx; + + if( !CV_IS_MAT(train_data) ) + CV_ERROR( CV_StsBadArg, "Invalid or NULL training data matrix" ); + + var_count = var_idx ? var_idx->cols + var_idx->rows - 1 : + tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; + sample_count = sample_idx ? sample_idx->cols + sample_idx->rows - 1 : + tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; + + if( _var_count ) + *_var_count = var_count; + + if( _sample_count ) + *_sample_count = sample_count; + + copy_data = tflag != CV_ROW_SAMPLE || var_idx || always_copy_data; + + CV_CALL( samples = (float**)cvAlloc(sample_count*sizeof(samples[0]) + + (copy_data ? 1 : 0)*var_count*sample_count*sizeof(samples[0][0])) ); + data = train_data->data.fl; + s_step = train_data->step / sizeof(samples[0][0]); + v_step = 1; + s_idx = sample_idx ? sample_idx->data.i : 0; + v_idx = var_idx ? var_idx->data.i : 0; + + if( !copy_data ) + { + for( i = 0; i < sample_count; i++ ) + samples[i] = (float*)(data + (s_idx ? s_idx[i] : i)*s_step); + } + else + { + samples[0] = (float*)(samples + sample_count); + if( tflag != CV_ROW_SAMPLE ) + CV_SWAP( s_step, v_step, i ); + + for( i = 0; i < sample_count; i++ ) + { + float* dst = samples[i] = samples[0] + i*var_count; + const float* src = data + (s_idx ? s_idx[i] : i)*s_step; + + if( !v_idx ) + for( j = 0; j < var_count; j++ ) + dst[j] = src[j*v_step]; + else + for( j = 0; j < var_count; j++ ) + dst[j] = src[v_idx[j]*v_step]; + } + } + + __END__; + + return (const float**)samples; +} + + +void +cvCheckTrainData( const CvMat* train_data, int tflag, + const CvMat* missing_mask, + int* var_all, int* sample_all ) +{ + CV_FUNCNAME( "cvCheckTrainData" ); + + if( var_all ) + *var_all = 0; + + if( sample_all ) + *sample_all = 0; + + __BEGIN__; + + // check parameter types and sizes + if( !CV_IS_MAT(train_data) || CV_MAT_TYPE(train_data->type) != CV_32FC1 ) + CV_ERROR( CV_StsBadArg, "train data must be floating-point matrix" ); + + if( missing_mask ) + { + if( !CV_IS_MAT(missing_mask) || !CV_IS_MASK_ARR(missing_mask) || + !CV_ARE_SIZES_EQ(train_data, missing_mask) ) + CV_ERROR( CV_StsBadArg, + "missing value mask must be 8-bit matrix of the same size as training data" ); + } + + if( tflag != CV_ROW_SAMPLE && tflag != CV_COL_SAMPLE ) + CV_ERROR( CV_StsBadArg, + "Unknown training data layout (must be CV_ROW_SAMPLE or CV_COL_SAMPLE)" ); + + if( var_all ) + *var_all = tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; + + if( sample_all ) + *sample_all = tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; + + __END__; +} + + +int +cvPrepareTrainData( const char* /*funcname*/, + const CvMat* train_data, int tflag, + const CvMat* responses, int response_type, + const CvMat* var_idx, + const CvMat* sample_idx, + bool always_copy_data, + const float*** out_train_samples, + int* _sample_count, + int* _var_count, + int* _var_all, + CvMat** out_responses, + CvMat** out_response_map, + CvMat** out_var_idx, + CvMat** out_sample_idx ) +{ + int ok = 0; + CvMat* _var_idx = 0; + CvMat* _sample_idx = 0; + CvMat* _responses = 0; + int sample_all = 0, sample_count = 0, var_all = 0, var_count = 0; + + CV_FUNCNAME( "cvPrepareTrainData" ); + + // step 0. clear all the output pointers to ensure we do not try + // to call free() with uninitialized pointers + if( out_responses ) + *out_responses = 0; + + if( out_response_map ) + *out_response_map = 0; + + if( out_var_idx ) + *out_var_idx = 0; + + if( out_sample_idx ) + *out_sample_idx = 0; + + if( out_train_samples ) + *out_train_samples = 0; + + if( _sample_count ) + *_sample_count = 0; + + if( _var_count ) + *_var_count = 0; + + if( _var_all ) + *_var_all = 0; + + __BEGIN__; + + if( !out_train_samples ) + CV_ERROR( CV_StsBadArg, "output pointer to train samples is NULL" ); + + CV_CALL( cvCheckTrainData( train_data, tflag, 0, &var_all, &sample_all )); + + if( sample_idx ) + CV_CALL( _sample_idx = cvPreprocessIndexArray( sample_idx, sample_all )); + if( var_idx ) + CV_CALL( _var_idx = cvPreprocessIndexArray( var_idx, var_all )); + + if( responses ) + { + if( !out_responses ) + CV_ERROR( CV_StsNullPtr, "output response pointer is NULL" ); + + if( response_type == CV_VAR_NUMERICAL ) + { + CV_CALL( _responses = cvPreprocessOrderedResponses( responses, + _sample_idx, sample_all )); + } + else + { + CV_CALL( _responses = cvPreprocessCategoricalResponses( responses, + _sample_idx, sample_all, out_response_map, 0 )); + } + } + + CV_CALL( *out_train_samples = + cvGetTrainSamples( train_data, tflag, _var_idx, _sample_idx, + &var_count, &sample_count, always_copy_data )); + + ok = 1; + + __END__; + + if( ok ) + { + if( out_responses ) + *out_responses = _responses, _responses = 0; + + if( out_var_idx ) + *out_var_idx = _var_idx, _var_idx = 0; + + if( out_sample_idx ) + *out_sample_idx = _sample_idx, _sample_idx = 0; + + if( _sample_count ) + *_sample_count = sample_count; + + if( _var_count ) + *_var_count = var_count; + + if( _var_all ) + *_var_all = var_all; + } + else + { + if( out_response_map ) + cvReleaseMat( out_response_map ); + cvFree( out_train_samples ); + } + + if( _responses != responses ) + cvReleaseMat( &_responses ); + cvReleaseMat( &_var_idx ); + cvReleaseMat( &_sample_idx ); + + return ok; +} + + +typedef struct CvSampleResponsePair +{ + const float* sample; + const uchar* mask; + int response; + int index; +} +CvSampleResponsePair; + + +static int +CV_CDECL icvCmpSampleResponsePairs( const void* a, const void* b ) +{ + int ra = ((const CvSampleResponsePair*)a)->response; + int rb = ((const CvSampleResponsePair*)b)->response; + int ia = ((const CvSampleResponsePair*)a)->index; + int ib = ((const CvSampleResponsePair*)b)->index; + + return ra < rb ? -1 : ra > rb ? 1 : ia - ib; + //return (ra > rb ? -1 : 0)|(ra < rb); +} + + +void +cvSortSamplesByClasses( const float** samples, const CvMat* classes, + int* class_ranges, const uchar** mask ) +{ + CvSampleResponsePair* pairs = 0; + CV_FUNCNAME( "cvSortSamplesByClasses" ); + + __BEGIN__; + + int i, k = 0, sample_count; + + if( !samples || !classes || !class_ranges ) + CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: some of the args are NULL pointers" ); + + if( classes->rows != 1 || CV_MAT_TYPE(classes->type) != CV_32SC1 ) + CV_ERROR( CV_StsBadArg, "classes array must be a single row of integers" ); + + sample_count = classes->cols; + CV_CALL( pairs = (CvSampleResponsePair*)cvAlloc( (sample_count+1)*sizeof(pairs[0]))); + + for( i = 0; i < sample_count; i++ ) + { + pairs[i].sample = samples[i]; + pairs[i].mask = (mask) ? (mask[i]) : 0; + pairs[i].response = classes->data.i[i]; + pairs[i].index = i; + assert( classes->data.i[i] >= 0 ); + } + + qsort( pairs, sample_count, sizeof(pairs[0]), icvCmpSampleResponsePairs ); + pairs[sample_count].response = -1; + class_ranges[0] = 0; + + for( i = 0; i < sample_count; i++ ) + { + samples[i] = pairs[i].sample; + if (mask) + mask[i] = pairs[i].mask; + classes->data.i[i] = pairs[i].response; + + if( pairs[i].response != pairs[i+1].response ) + class_ranges[++k] = i+1; + } + + __END__; + + cvFree( &pairs ); +} + + +void +cvPreparePredictData( const CvArr* _sample, int dims_all, + const CvMat* comp_idx, int class_count, + const CvMat* prob, float** _row_sample, + int as_sparse ) +{ + float* row_sample = 0; + int* inverse_comp_idx = 0; + + CV_FUNCNAME( "cvPreparePredictData" ); + + __BEGIN__; + + const CvMat* sample = (const CvMat*)_sample; + float* sample_data; + int sample_step; + int is_sparse = CV_IS_SPARSE_MAT(sample); + int d, sizes[CV_MAX_DIM]; + int i, dims_selected; + int vec_size; + + if( !is_sparse && !CV_IS_MAT(sample) ) + CV_ERROR( !sample ? CV_StsNullPtr : CV_StsBadArg, "The sample is not a valid vector" ); + + if( cvGetElemType( sample ) != CV_32FC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "Input sample must have 32fC1 type" ); + + CV_CALL( d = cvGetDims( sample, sizes )); + + if( !((is_sparse && d == 1) || (!is_sparse && d == 2 && (sample->rows == 1 || sample->cols == 1))) ) + CV_ERROR( CV_StsBadSize, "Input sample must be 1-dimensional vector" ); + + if( d == 1 ) + sizes[1] = 1; + + if( sizes[0] + sizes[1] - 1 != dims_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "The sample size is different from what has been used for training" ); + + if( !_row_sample ) + CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: The row_sample pointer is NULL" ); + + if( comp_idx && (!CV_IS_MAT(comp_idx) || comp_idx->rows != 1 || + CV_MAT_TYPE(comp_idx->type) != CV_32SC1) ) + CV_ERROR( CV_StsBadArg, "INTERNAL ERROR: invalid comp_idx" ); + + dims_selected = comp_idx ? comp_idx->cols : dims_all; + + if( prob ) + { + if( !CV_IS_MAT(prob) ) + CV_ERROR( CV_StsBadArg, "The output matrix of probabilities is invalid" ); + + if( (prob->rows != 1 && prob->cols != 1) || + (CV_MAT_TYPE(prob->type) != CV_32FC1 && + CV_MAT_TYPE(prob->type) != CV_64FC1) ) + CV_ERROR( CV_StsBadSize, + "The matrix of probabilities must be 1-dimensional vector of 32fC1 type" ); + + if( prob->rows + prob->cols - 1 != class_count ) + CV_ERROR( CV_StsUnmatchedSizes, + "The vector of probabilities must contain as many elements as " + "the number of classes in the training set" ); + } + + vec_size = !as_sparse ? dims_selected*sizeof(row_sample[0]) : + (dims_selected + 1)*sizeof(CvSparseVecElem32f); + + if( CV_IS_MAT(sample) ) + { + sample_data = sample->data.fl; + sample_step = CV_IS_MAT_CONT(sample->type) ? 1 : sample->step/sizeof(row_sample[0]); + + if( !comp_idx && CV_IS_MAT_CONT(sample->type) && !as_sparse ) + *_row_sample = sample_data; + else + { + CV_CALL( row_sample = (float*)cvAlloc( vec_size )); + + if( !comp_idx ) + for( i = 0; i < dims_selected; i++ ) + row_sample[i] = sample_data[sample_step*i]; + else + { + int* comp = comp_idx->data.i; + for( i = 0; i < dims_selected; i++ ) + row_sample[i] = sample_data[sample_step*comp[i]]; + } + + *_row_sample = row_sample; + } + + if( as_sparse ) + { + const float* src = (const float*)row_sample; + CvSparseVecElem32f* dst = (CvSparseVecElem32f*)row_sample; + + dst[dims_selected].idx = -1; + for( i = dims_selected - 1; i >= 0; i-- ) + { + dst[i].idx = i; + dst[i].val = src[i]; + } + } + } + else + { + CvSparseNode* node; + CvSparseMatIterator mat_iterator; + const CvSparseMat* sparse = (const CvSparseMat*)sample; + assert( is_sparse ); + + node = cvInitSparseMatIterator( sparse, &mat_iterator ); + CV_CALL( row_sample = (float*)cvAlloc( vec_size )); + + if( comp_idx ) + { + CV_CALL( inverse_comp_idx = (int*)cvAlloc( dims_all*sizeof(int) )); + memset( inverse_comp_idx, -1, dims_all*sizeof(int) ); + for( i = 0; i < dims_selected; i++ ) + inverse_comp_idx[comp_idx->data.i[i]] = i; + } + + if( !as_sparse ) + { + memset( row_sample, 0, vec_size ); + + for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) + { + int idx = *CV_NODE_IDX( sparse, node ); + if( inverse_comp_idx ) + { + idx = inverse_comp_idx[idx]; + if( idx < 0 ) + continue; + } + row_sample[idx] = *(float*)CV_NODE_VAL( sparse, node ); + } + } + else + { + CvSparseVecElem32f* ptr = (CvSparseVecElem32f*)row_sample; + + for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) + { + int idx = *CV_NODE_IDX( sparse, node ); + if( inverse_comp_idx ) + { + idx = inverse_comp_idx[idx]; + if( idx < 0 ) + continue; + } + ptr->idx = idx; + ptr->val = *(float*)CV_NODE_VAL( sparse, node ); + ptr++; + } + + qsort( row_sample, ptr - (CvSparseVecElem32f*)row_sample, + sizeof(ptr[0]), icvCmpSparseVecElems ); + ptr->idx = -1; + } + + *_row_sample = row_sample; + } + + __END__; + + if( inverse_comp_idx ) + cvFree( &inverse_comp_idx ); + + if( cvGetErrStatus() < 0 && _row_sample ) + { + cvFree( &row_sample ); + *_row_sample = 0; + } +} + + +static void +icvConvertDataToSparse( const uchar* src, int src_step, int src_type, + uchar* dst, int dst_step, int dst_type, + CvSize size, int* idx ) +{ + CV_FUNCNAME( "icvConvertDataToSparse" ); + + __BEGIN__; + + int i, j; + src_type = CV_MAT_TYPE(src_type); + dst_type = CV_MAT_TYPE(dst_type); + + if( CV_MAT_CN(src_type) != 1 || CV_MAT_CN(dst_type) != 1 ) + CV_ERROR( CV_StsUnsupportedFormat, "The function supports only single-channel arrays" ); + + if( src_step == 0 ) + src_step = CV_ELEM_SIZE(src_type); + + if( dst_step == 0 ) + dst_step = CV_ELEM_SIZE(dst_type); + + // if there is no "idx" and if both arrays are continuous, + // do the whole processing (copying or conversion) in a single loop + if( !idx && CV_ELEM_SIZE(src_type)*size.width == src_step && + CV_ELEM_SIZE(dst_type)*size.width == dst_step ) + { + size.width *= size.height; + size.height = 1; + } + + if( src_type == dst_type ) + { + int full_width = CV_ELEM_SIZE(dst_type)*size.width; + + if( full_width == sizeof(int) ) // another common case: copy int's or float's + for( i = 0; i < size.height; i++, src += src_step ) + *(int*)(dst + dst_step*(idx ? idx[i] : i)) = *(int*)src; + else + for( i = 0; i < size.height; i++, src += src_step ) + memcpy( dst + dst_step*(idx ? idx[i] : i), src, full_width ); + } + else if( src_type == CV_32SC1 && (dst_type == CV_32FC1 || dst_type == CV_64FC1) ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( dst_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((float*)_dst)[j] = (float)((int*)src)[j]; + else + for( j = 0; j < size.width; j++ ) + ((double*)_dst)[j] = ((int*)src)[j]; + } + else if( (src_type == CV_32FC1 || src_type == CV_64FC1) && dst_type == CV_32SC1 ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( src_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((int*)_dst)[j] = cvRound(((float*)src)[j]); + else + for( j = 0; j < size.width; j++ ) + ((int*)_dst)[j] = cvRound(((double*)src)[j]); + } + else if( (src_type == CV_32FC1 && dst_type == CV_64FC1) || + (src_type == CV_64FC1 && dst_type == CV_32FC1) ) + for( i = 0; i < size.height; i++, src += src_step ) + { + uchar* _dst = dst + dst_step*(idx ? idx[i] : i); + if( src_type == CV_32FC1 ) + for( j = 0; j < size.width; j++ ) + ((double*)_dst)[j] = ((float*)src)[j]; + else + for( j = 0; j < size.width; j++ ) + ((float*)_dst)[j] = (float)((double*)src)[j]; + } + else + CV_ERROR( CV_StsUnsupportedFormat, "Unsupported combination of input and output vectors" ); + + __END__; +} + + +void +cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, + const CvMat* centers, CvMat* dst_centers, + const CvMat* probs, CvMat* dst_probs, + const CvMat* sample_idx, int samples_all, + const CvMat* comp_idx, int dims_all ) +{ + CV_FUNCNAME( "cvWritebackLabels" ); + + __BEGIN__; + + int samples_selected = samples_all, dims_selected = dims_all; + + if( dst_labels && !CV_IS_MAT(dst_labels) ) + CV_ERROR( CV_StsBadArg, "Array of output labels is not a valid matrix" ); + + if( dst_centers ) + if( !ICV_IS_MAT_OF_TYPE(dst_centers, CV_32FC1) && + !ICV_IS_MAT_OF_TYPE(dst_centers, CV_64FC1) ) + CV_ERROR( CV_StsBadArg, "Array of cluster centers is not a valid matrix" ); + + if( dst_probs && !CV_IS_MAT(dst_probs) ) + CV_ERROR( CV_StsBadArg, "Probability matrix is not valid" ); + + if( sample_idx ) + { + CV_ASSERT( sample_idx->rows == 1 && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ); + samples_selected = sample_idx->cols; + } + + if( comp_idx ) + { + CV_ASSERT( comp_idx->rows == 1 && CV_MAT_TYPE(comp_idx->type) == CV_32SC1 ); + dims_selected = comp_idx->cols; + } + + if( dst_labels && (!labels || labels->data.ptr != dst_labels->data.ptr) ) + { + if( !labels ) + CV_ERROR( CV_StsNullPtr, "NULL labels" ); + + CV_ASSERT( labels->rows == 1 ); + + if( dst_labels->rows != 1 && dst_labels->cols != 1 ) + CV_ERROR( CV_StsBadSize, "Array of output labels should be 1d vector" ); + + if( dst_labels->rows + dst_labels->cols - 1 != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Size of vector of output labels is not equal to the total number of input samples" ); + + CV_ASSERT( labels->cols == samples_selected ); + + CV_CALL( icvConvertDataToSparse( labels->data.ptr, labels->step, labels->type, + dst_labels->data.ptr, dst_labels->step, dst_labels->type, + cvSize( 1, samples_selected ), sample_idx ? sample_idx->data.i : 0 )); + } + + if( dst_centers && (!centers || centers->data.ptr != dst_centers->data.ptr) ) + { + int i; + + if( !centers ) + CV_ERROR( CV_StsNullPtr, "NULL centers" ); + + if( centers->rows != dst_centers->rows ) + CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of rows in matrix of output centers" ); + + if( dst_centers->cols != dims_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Number of columns in matrix of output centers is " + "not equal to the total number of components in the input samples" ); + + CV_ASSERT( centers->cols == dims_selected ); + + for( i = 0; i < centers->rows; i++ ) + CV_CALL( icvConvertDataToSparse( centers->data.ptr + i*centers->step, 0, centers->type, + dst_centers->data.ptr + i*dst_centers->step, 0, dst_centers->type, + cvSize( 1, dims_selected ), comp_idx ? comp_idx->data.i : 0 )); + } + + if( dst_probs && (!probs || probs->data.ptr != dst_probs->data.ptr) ) + { + if( !probs ) + CV_ERROR( CV_StsNullPtr, "NULL probs" ); + + if( probs->cols != dst_probs->cols ) + CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of columns in output probability matrix" ); + + if( dst_probs->rows != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "Number of rows in output probability matrix is " + "not equal to the total number of input samples" ); + + CV_ASSERT( probs->rows == samples_selected ); + + CV_CALL( icvConvertDataToSparse( probs->data.ptr, probs->step, probs->type, + dst_probs->data.ptr, dst_probs->step, dst_probs->type, + cvSize( probs->cols, samples_selected ), + sample_idx ? sample_idx->data.i : 0 )); + } + + __END__; +} + +#if 0 +CV_IMPL void +cvStatModelMultiPredict( const CvStatModel* stat_model, + const CvArr* predict_input, + int flags, CvMat* predict_output, + CvMat* probs, const CvMat* sample_idx ) +{ + CvMemStorage* storage = 0; + CvMat* sample_idx_buffer = 0; + CvSparseMat** sparse_rows = 0; + int samples_selected = 0; + + CV_FUNCNAME( "cvStatModelMultiPredict" ); + + __BEGIN__; + + int i; + int predict_output_step = 1, sample_idx_step = 1; + int type; + int d, sizes[CV_MAX_DIM]; + int tflag = flags == CV_COL_SAMPLE; + int samples_all, dims_all; + int is_sparse = CV_IS_SPARSE_MAT(predict_input); + CvMat predict_input_part; + CvArr* sample = &predict_input_part; + CvMat probs_part; + CvMat* probs1 = probs ? &probs_part : 0; + + if( !CV_IS_STAT_MODEL(stat_model) ) + CV_ERROR( !stat_model ? CV_StsNullPtr : CV_StsBadArg, "Invalid statistical model" ); + + if( !stat_model->predict ) + CV_ERROR( CV_StsNotImplemented, "There is no \"predict\" method" ); + + if( !predict_input || !predict_output ) + CV_ERROR( CV_StsNullPtr, "NULL input or output matrices" ); + + if( !is_sparse && !CV_IS_MAT(predict_input) ) + CV_ERROR( CV_StsBadArg, "predict_input should be a matrix or a sparse matrix" ); + + if( !CV_IS_MAT(predict_output) ) + CV_ERROR( CV_StsBadArg, "predict_output should be a matrix" ); + + type = cvGetElemType( predict_input ); + if( type != CV_32FC1 || + (CV_MAT_TYPE(predict_output->type) != CV_32FC1 && + CV_MAT_TYPE(predict_output->type) != CV_32SC1 )) + CV_ERROR( CV_StsUnsupportedFormat, "The input or output matrix has unsupported format" ); + + CV_CALL( d = cvGetDims( predict_input, sizes )); + if( d > 2 ) + CV_ERROR( CV_StsBadSize, "The input matrix should be 1- or 2-dimensional" ); + + if( !tflag ) + { + samples_all = samples_selected = sizes[0]; + dims_all = sizes[1]; + } + else + { + samples_all = samples_selected = sizes[1]; + dims_all = sizes[0]; + } + + if( sample_idx ) + { + if( !CV_IS_MAT(sample_idx) ) + CV_ERROR( CV_StsBadArg, "Invalid sample_idx matrix" ); + + if( sample_idx->cols != 1 && sample_idx->rows != 1 ) + CV_ERROR( CV_StsBadSize, "sample_idx must be 1-dimensional matrix" ); + + samples_selected = sample_idx->rows + sample_idx->cols - 1; + + if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + if( samples_selected > samples_all ) + CV_ERROR( CV_StsBadSize, "sample_idx is too large vector" ); + } + else if( samples_selected != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, "sample_idx has incorrect size" ); + + sample_idx_step = sample_idx->step ? + sample_idx->step / CV_ELEM_SIZE(sample_idx->type) : 1; + } + + if( predict_output->rows != 1 && predict_output->cols != 1 ) + CV_ERROR( CV_StsBadSize, "predict_output should be a 1-dimensional matrix" ); + + if( predict_output->rows + predict_output->cols - 1 != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, "predict_output and predict_input have uncoordinated sizes" ); + + predict_output_step = predict_output->step ? + predict_output->step / CV_ELEM_SIZE(predict_output->type) : 1; + + if( probs ) + { + if( !CV_IS_MAT(probs) ) + CV_ERROR( CV_StsBadArg, "Invalid matrix of probabilities" ); + + if( probs->rows != samples_all ) + CV_ERROR( CV_StsUnmatchedSizes, + "matrix of probabilities must have as many rows as the total number of samples" ); + + if( CV_MAT_TYPE(probs->type) != CV_32FC1 ) + CV_ERROR( CV_StsUnsupportedFormat, "matrix of probabilities must have 32fC1 type" ); + } + + if( is_sparse ) + { + CvSparseNode* node; + CvSparseMatIterator mat_iterator; + CvSparseMat* sparse = (CvSparseMat*)predict_input; + + if( sample_idx && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + CV_CALL( sample_idx_buffer = cvCreateMat( 1, samples_all, CV_8UC1 )); + cvZero( sample_idx_buffer ); + for( i = 0; i < samples_selected; i++ ) + sample_idx_buffer->data.ptr[sample_idx->data.i[i*sample_idx_step]] = 1; + samples_selected = samples_all; + sample_idx = sample_idx_buffer; + sample_idx_step = 1; + } + + CV_CALL( sparse_rows = (CvSparseMat**)cvAlloc( samples_selected*sizeof(sparse_rows[0]))); + for( i = 0; i < samples_selected; i++ ) + { + if( sample_idx && sample_idx->data.ptr[i*sample_idx_step] == 0 ) + continue; + CV_CALL( sparse_rows[i] = cvCreateSparseMat( 1, &dims_all, type )); + if( !storage ) + storage = sparse_rows[i]->heap->storage; + else + { + // hack: to decrease memory footprint, make all the sparse matrices + // reside in the same storage + int elem_size = sparse_rows[i]->heap->elem_size; + cvReleaseMemStorage( &sparse_rows[i]->heap->storage ); + sparse_rows[i]->heap = cvCreateSet( 0, sizeof(CvSet), elem_size, storage ); + } + } + + // put each row (or column) of predict_input into separate sparse matrix. + node = cvInitSparseMatIterator( sparse, &mat_iterator ); + for( ; node != 0; node = cvGetNextSparseNode( &mat_iterator )) + { + int* idx = CV_NODE_IDX( sparse, node ); + int idx0 = idx[tflag ^ 1]; + int idx1 = idx[tflag]; + + if( sample_idx && sample_idx->data.ptr[idx0*sample_idx_step] == 0 ) + continue; + + assert( sparse_rows[idx0] != 0 ); + *(float*)cvPtrND( sparse, &idx1, 0, 1, 0 ) = *(float*)CV_NODE_VAL( sparse, node ); + } + } + + for( i = 0; i < samples_selected; i++ ) + { + int idx = i; + float response; + + if( sample_idx ) + { + if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) + { + idx = sample_idx->data.i[i*sample_idx_step]; + if( (unsigned)idx >= (unsigned)samples_all ) + CV_ERROR( CV_StsOutOfRange, "Some of sample_idx elements are out of range" ); + } + else if( CV_MAT_TYPE(sample_idx->type) == CV_8UC1 && + sample_idx->data.ptr[i*sample_idx_step] == 0 ) + continue; + } + + if( !is_sparse ) + { + if( !tflag ) + cvGetRow( predict_input, &predict_input_part, idx ); + else + { + cvGetCol( predict_input, &predict_input_part, idx ); + } + } + else + sample = sparse_rows[idx]; + + if( probs ) + cvGetRow( probs, probs1, idx ); + + CV_CALL( response = stat_model->predict( stat_model, (CvMat*)sample, probs1 )); + + if( CV_MAT_TYPE(predict_output->type) == CV_32FC1 ) + predict_output->data.fl[idx*predict_output_step] = response; + else + { + CV_ASSERT( cvRound(response) == response ); + predict_output->data.i[idx*predict_output_step] = cvRound(response); + } + } + + __END__; + + if( sparse_rows ) + { + int i; + for( i = 0; i < samples_selected; i++ ) + if( sparse_rows[i] ) + { + sparse_rows[i]->heap->storage = 0; + cvReleaseSparseMat( &sparse_rows[i] ); + } + cvFree( &sparse_rows ); + } + + cvReleaseMat( &sample_idx_buffer ); + cvReleaseMemStorage( &storage ); +} +#endif + +// By P. Yarykin - begin - + +void cvCombineResponseMaps (CvMat* _responses, + const CvMat* old_response_map, + CvMat* new_response_map, + CvMat** out_response_map) +{ + int** old_data = NULL; + int** new_data = NULL; + + CV_FUNCNAME ("cvCombineResponseMaps"); + __BEGIN__ + + int i,j; + int old_n, new_n, out_n; + int samples, free_response; + int* first; + int* responses; + int* out_data; + + if( out_response_map ) + *out_response_map = 0; + +// Check input data. + if ((!ICV_IS_MAT_OF_TYPE (_responses, CV_32SC1)) || + (!ICV_IS_MAT_OF_TYPE (old_response_map, CV_32SC1)) || + (!ICV_IS_MAT_OF_TYPE (new_response_map, CV_32SC1))) + { + CV_ERROR (CV_StsBadArg, "Some of input arguments is not the CvMat") + } + +// Prepare sorted responses. + first = new_response_map->data.i; + new_n = new_response_map->cols; + CV_CALL (new_data = (int**)cvAlloc (new_n * sizeof (new_data[0]))); + for (i = 0; i < new_n; i++) + new_data[i] = first + i; + qsort (new_data, new_n, sizeof(int*), icvCmpIntegersPtr); + + first = old_response_map->data.i; + old_n = old_response_map->cols; + CV_CALL (old_data = (int**)cvAlloc (old_n * sizeof (old_data[0]))); + for (i = 0; i < old_n; i++) + old_data[i] = first + i; + qsort (old_data, old_n, sizeof(int*), icvCmpIntegersPtr); + +// Count the number of different responses. + for (i = 0, j = 0, out_n = 0; i < old_n && j < new_n; out_n++) + { + if (*old_data[i] == *new_data[j]) + { + i++; + j++; + } + else if (*old_data[i] < *new_data[j]) + i++; + else + j++; + } + out_n += old_n - i + new_n - j; + +// Create and fill the result response maps. + CV_CALL (*out_response_map = cvCreateMat (1, out_n, CV_32SC1)); + out_data = (*out_response_map)->data.i; + memcpy (out_data, first, old_n * sizeof (int)); + + free_response = old_n; + for (i = 0, j = 0; i < old_n && j < new_n; ) + { + if (*old_data[i] == *new_data[j]) + { + *new_data[j] = (int)(old_data[i] - first); + i++; + j++; + } + else if (*old_data[i] < *new_data[j]) + i++; + else + { + out_data[free_response] = *new_data[j]; + *new_data[j] = free_response++; + j++; + } + } + for (; j < new_n; j++) + { + out_data[free_response] = *new_data[j]; + *new_data[j] = free_response++; + } + CV_ASSERT (free_response == out_n); + +// Change according to out response map. + samples = _responses->cols + _responses->rows - 1; + responses = _responses->data.i; + first = new_response_map->data.i; + for (i = 0; i < samples; i++) + { + responses[i] = first[responses[i]]; + } + + __END__ + + cvFree(&old_data); + cvFree(&new_data); + +} + + +static int icvGetNumberOfCluster( double* prob_vector, int num_of_clusters, float r, + float outlier_thresh, int normalize_probs ) +{ + int max_prob_loc = 0; + + CV_FUNCNAME("icvGetNumberOfCluster"); + __BEGIN__; + + double prob, maxprob, sum; + int i; + + CV_ASSERT(prob_vector); + CV_ASSERT(num_of_clusters >= 0); + + maxprob = prob_vector[0]; + max_prob_loc = 0; + sum = maxprob; + for( i = 1; i < num_of_clusters; i++ ) + { + prob = prob_vector[i]; + sum += prob; + if( prob > maxprob ) + { + max_prob_loc = i; + maxprob = prob; + } + } + if( normalize_probs && fabs(sum - 1.) > FLT_EPSILON ) + { + for( i = 0; i < num_of_clusters; i++ ) + prob_vector[i] /= sum; + } + if( fabs(r - 1.) > FLT_EPSILON && fabs(sum - 1.) < outlier_thresh ) + max_prob_loc = -1; + + __END__; + + return max_prob_loc; + +} // End of icvGetNumberOfCluster + + +void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, + const CvMat* labels ) +{ + CvMat* counts = 0; + + CV_FUNCNAME("icvFindClusterLabels"); + __BEGIN__; + + int nclusters, nsamples; + int i, j; + double* probs_data; + + CV_ASSERT( ICV_IS_MAT_OF_TYPE(probs, CV_64FC1) ); + CV_ASSERT( ICV_IS_MAT_OF_TYPE(labels, CV_32SC1) ); + + nclusters = probs->cols; + nsamples = probs->rows; + CV_ASSERT( nsamples == labels->cols ); + + CV_CALL( counts = cvCreateMat( 1, nclusters + 1, CV_32SC1 ) ); + CV_CALL( cvSetZero( counts )); + for( i = 0; i < nsamples; i++ ) + { + labels->data.i[i] = icvGetNumberOfCluster( probs->data.db + i*probs->cols, + nclusters, r, outlier_thresh, 1 ); + counts->data.i[labels->data.i[i] + 1]++; + } + CV_ASSERT((int)cvSum(counts).val[0] == nsamples); + // Filling empty clusters with the vector, that has the maximal probability + for( j = 0; j < nclusters; j++ ) // outliers are ignored + { + int maxprob_loc = -1; + double maxprob = 0; + + if( counts->data.i[j+1] ) // j-th class is not empty + continue; + // look for the presentative, which is not lonely in it's cluster + // and that has a maximal probability among all these vectors + probs_data = probs->data.db; + for( i = 0; i < nsamples; i++, probs_data++ ) + { + int label = labels->data.i[i]; + double prob; + if( counts->data.i[label+1] == 0 || + (counts->data.i[label+1] <= 1 && label != -1) ) + continue; + prob = *probs_data; + if( prob >= maxprob ) + { + maxprob = prob; + maxprob_loc = i; + } + } + // maxprob_loc == 0 <=> number of vectors less then number of clusters + CV_ASSERT( maxprob_loc >= 0 ); + counts->data.i[labels->data.i[maxprob_loc] + 1]--; + labels->data.i[maxprob_loc] = j; + counts->data.i[j + 1]++; + } + + __END__; + + cvReleaseMat( &counts ); +} // End of icvFindClusterLabels + +/* End of file */ diff --git a/apps/traincascade/old_ml_precomp.hpp b/apps/traincascade/old_ml_precomp.hpp new file mode 100644 index 0000000000..32ae269818 --- /dev/null +++ b/apps/traincascade/old_ml_precomp.hpp @@ -0,0 +1,376 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#ifndef __OPENCV_PRECOMP_H__ +#define __OPENCV_PRECOMP_H__ + +#include "opencv2/core.hpp" +#include "old_ml.hpp" +#include "opencv2/core/core_c.h" +#include "opencv2/core/utility.hpp" + +#include "opencv2/core/private.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#define ML_IMPL CV_IMPL +#define __BEGIN__ __CV_BEGIN__ +#define __END__ __CV_END__ +#define EXIT __CV_EXIT__ + +#define CV_MAT_ELEM_FLAG( mat, type, comp, vect, tflag ) \ + (( tflag == CV_ROW_SAMPLE ) \ + ? (CV_MAT_ELEM( mat, type, comp, vect )) \ + : (CV_MAT_ELEM( mat, type, vect, comp ))) + +/* Convert matrix to vector */ +#define ICV_MAT2VEC( mat, vdata, vstep, num ) \ + if( MIN( (mat).rows, (mat).cols ) != 1 ) \ + CV_ERROR( CV_StsBadArg, "" ); \ + (vdata) = ((mat).data.ptr); \ + if( (mat).rows == 1 ) \ + { \ + (vstep) = CV_ELEM_SIZE( (mat).type ); \ + (num) = (mat).cols; \ + } \ + else \ + { \ + (vstep) = (mat).step; \ + (num) = (mat).rows; \ + } + +/* get raw data */ +#define ICV_RAWDATA( mat, flags, rdata, sstep, cstep, m, n ) \ + (rdata) = (mat).data.ptr; \ + if( CV_IS_ROW_SAMPLE( flags ) ) \ + { \ + (sstep) = (mat).step; \ + (cstep) = CV_ELEM_SIZE( (mat).type ); \ + (m) = (mat).rows; \ + (n) = (mat).cols; \ + } \ + else \ + { \ + (cstep) = (mat).step; \ + (sstep) = CV_ELEM_SIZE( (mat).type ); \ + (n) = (mat).rows; \ + (m) = (mat).cols; \ + } + +#define ICV_IS_MAT_OF_TYPE( mat, mat_type) \ + (CV_IS_MAT( mat ) && CV_MAT_TYPE( mat->type ) == (mat_type) && \ + (mat)->cols > 0 && (mat)->rows > 0) + +/* + uchar* data; int sstep, cstep; - trainData->data + uchar* classes; int clstep; int ncl;- trainClasses + uchar* tmask; int tmstep; int ntm; - typeMask + uchar* missed;int msstep, mcstep; -missedMeasurements... + int mm, mn; == m,n == size,dim + uchar* sidx;int sistep; - sampleIdx + uchar* cidx;int cistep; - compIdx + int k, l; == n,m == dim,size (length of cidx, sidx) + int m, n; == size,dim +*/ +#define ICV_DECLARE_TRAIN_ARGS() \ + uchar* data; \ + int sstep, cstep; \ + uchar* classes; \ + int clstep; \ + int ncl; \ + uchar* tmask; \ + int tmstep; \ + int ntm; \ + uchar* missed; \ + int msstep, mcstep; \ + int mm, mn; \ + uchar* sidx; \ + int sistep; \ + uchar* cidx; \ + int cistep; \ + int k, l; \ + int m, n; \ + \ + data = classes = tmask = missed = sidx = cidx = NULL; \ + sstep = cstep = clstep = ncl = tmstep = ntm = msstep = mcstep = mm = mn = 0; \ + sistep = cistep = k = l = m = n = 0; + +#define ICV_TRAIN_DATA_REQUIRED( param, flags ) \ + if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_RAWDATA( *(param), (flags), data, sstep, cstep, m, n ); \ + k = n; \ + l = m; \ + } + +#define ICV_TRAIN_CLASSES_REQUIRED( param ) \ + if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *(param), classes, clstep, ncl ); \ + if( m != ncl ) \ + { \ + CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ + } \ + } + +#define ICV_ARG_NULL( param ) \ + if( (param) != NULL ) \ + { \ + CV_ERROR( CV_StsBadArg, #param " parameter must be NULL" ); \ + } + +#define ICV_MISSED_MEASUREMENTS_OPTIONAL( param, flags ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_8UC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_RAWDATA( *(param), (flags), missed, msstep, mcstep, mm, mn ); \ + if( mm != m || mn != n ) \ + { \ + CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ + } \ + } \ + } + +#define ICV_COMP_IDX_OPTIONAL( param ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *(param), cidx, cistep, k ); \ + if( k > n ) \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + } + +#define ICV_SAMPLE_IDX_OPTIONAL( param ) \ + if( param ) \ + { \ + if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ + { \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + else \ + { \ + ICV_MAT2VEC( *sampleIdx, sidx, sistep, l ); \ + if( l > m ) \ + CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ + } \ + } + +/****************************************************************************************/ +#define ICV_CONVERT_FLOAT_ARRAY_TO_MATRICE( array, matrice ) \ +{ \ + CvMat a, b; \ + int dims = (matrice)->cols; \ + int nsamples = (matrice)->rows; \ + int type = CV_MAT_TYPE((matrice)->type); \ + int i, offset = dims; \ + \ + CV_ASSERT( type == CV_32FC1 || type == CV_64FC1 ); \ + offset *= ((type == CV_32FC1) ? sizeof(float) : sizeof(double));\ + \ + b = cvMat( 1, dims, CV_32FC1 ); \ + cvGetRow( matrice, &a, 0 ); \ + for( i = 0; i < nsamples; i++, a.data.ptr += offset ) \ + { \ + b.data.fl = (float*)array[i]; \ + CV_CALL( cvConvert( &b, &a ) ); \ + } \ +} + +/****************************************************************************************\ +* Auxiliary functions declarations * +\****************************************************************************************/ + +/* Generates a set of classes centers in quantity that are generated as + uniform random vectors in parallelepiped, where is concentrated. Vectors in + should have horizontal orientation. If != NULL, the function doesn't + allocate any memory and stores generated centers in , returns . + If == NULL, the function allocates memory and creates the matrice. Centers + are supposed to be oriented horizontally. */ +CvMat* icvGenerateRandomClusterCenters( int seed, + const CvMat* data, + int num_of_clusters, + CvMat* centers CV_DEFAULT(0)); + +/* Fills the using by choosing the maximal probability. Outliers are + fixed by and have cluster label (-1). Function also controls that there + weren't "empty" clusters by filling empty clusters with the maximal probability vector. + If probs_sums != NULL, filles it with the sums of probabilities for each sample (it is + useful for normalizing probabilities' matrice of FCM) */ +void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, + const CvMat* labels ); + +typedef struct CvSparseVecElem32f +{ + int idx; + float val; +} +CvSparseVecElem32f; + +/* Prepare training data and related parameters */ +#define CV_TRAIN_STATMODEL_DEFRAGMENT_TRAIN_DATA 1 +#define CV_TRAIN_STATMODEL_SAMPLES_AS_ROWS 2 +#define CV_TRAIN_STATMODEL_SAMPLES_AS_COLUMNS 4 +#define CV_TRAIN_STATMODEL_CATEGORICAL_RESPONSE 8 +#define CV_TRAIN_STATMODEL_ORDERED_RESPONSE 16 +#define CV_TRAIN_STATMODEL_RESPONSES_ON_OUTPUT 32 +#define CV_TRAIN_STATMODEL_ALWAYS_COPY_TRAIN_DATA 64 +#define CV_TRAIN_STATMODEL_SPARSE_AS_SPARSE 128 + +int +cvPrepareTrainData( const char* /*funcname*/, + const CvMat* train_data, int tflag, + const CvMat* responses, int response_type, + const CvMat* var_idx, + const CvMat* sample_idx, + bool always_copy_data, + const float*** out_train_samples, + int* _sample_count, + int* _var_count, + int* _var_all, + CvMat** out_responses, + CvMat** out_response_map, + CvMat** out_var_idx, + CvMat** out_sample_idx=0 ); + +void +cvSortSamplesByClasses( const float** samples, const CvMat* classes, + int* class_ranges, const uchar** mask CV_DEFAULT(0) ); + +void +cvCombineResponseMaps (CvMat* _responses, + const CvMat* old_response_map, + CvMat* new_response_map, + CvMat** out_response_map); + +void +cvPreparePredictData( const CvArr* sample, int dims_all, const CvMat* comp_idx, + int class_count, const CvMat* prob, float** row_sample, + int as_sparse CV_DEFAULT(0) ); + +/* copies clustering [or batch "predict"] results + (labels and/or centers and/or probs) back to the output arrays */ +void +cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, + const CvMat* centers, CvMat* dst_centers, + const CvMat* probs, CvMat* dst_probs, + const CvMat* sample_idx, int samples_all, + const CvMat* comp_idx, int dims_all ); +#define cvWritebackResponses cvWritebackLabels + +#define XML_FIELD_NAME "_name" +CvFileNode* icvFileNodeGetChild(CvFileNode* father, const char* name); +CvFileNode* icvFileNodeGetChildArrayElem(CvFileNode* father, const char* name,int index); +CvFileNode* icvFileNodeGetNext(CvFileNode* n, const char* name); + + +void cvCheckTrainData( const CvMat* train_data, int tflag, + const CvMat* missing_mask, + int* var_all, int* sample_all ); + +CvMat* cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates=false ); + +CvMat* cvPreprocessVarType( const CvMat* type_mask, const CvMat* var_idx, + int var_all, int* response_type ); + +CvMat* cvPreprocessOrderedResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all ); + +CvMat* cvPreprocessCategoricalResponses( const CvMat* responses, + const CvMat* sample_idx, int sample_all, + CvMat** out_response_map, CvMat** class_counts=0 ); + +const float** cvGetTrainSamples( const CvMat* train_data, int tflag, + const CvMat* var_idx, const CvMat* sample_idx, + int* _var_count, int* _sample_count, + bool always_copy_data=false ); + +namespace cv +{ + struct DTreeBestSplitFinder + { + DTreeBestSplitFinder(){ splitSize = 0, tree = 0; node = 0; } + DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node); + DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ); + virtual ~DTreeBestSplitFinder() {} + virtual void operator()(const BlockedRange& range); + void join( DTreeBestSplitFinder& rhs ); + Ptr bestSplit; + Ptr split; + int splitSize; + CvDTree* tree; + CvDTreeNode* node; + }; + + struct ForestTreeBestSplitFinder : DTreeBestSplitFinder + { + ForestTreeBestSplitFinder() : DTreeBestSplitFinder() {} + ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ); + ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split ); + virtual void operator()(const BlockedRange& range); + }; +} + +#endif /* __ML_H__ */ diff --git a/apps/traincascade/old_ml_tree.cpp b/apps/traincascade/old_ml_tree.cpp new file mode 100644 index 0000000000..b7e346ccbc --- /dev/null +++ b/apps/traincascade/old_ml_tree.cpp @@ -0,0 +1,4151 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#include "old_ml_precomp.hpp" +#include + +using namespace cv; + +static const float ord_nan = FLT_MAX*0.5f; +static const int min_block_size = 1 << 16; +static const int block_size_delta = 1 << 10; + +CvDTreeTrainData::CvDTreeTrainData() +{ + var_idx = var_type = cat_count = cat_ofs = cat_map = + priors = priors_mult = counts = direction = split_buf = responses_copy = 0; + buf = 0; + tree_storage = temp_storage = 0; + + clear(); +} + + +CvDTreeTrainData::CvDTreeTrainData( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, const CvDTreeParams& _params, + bool _shared, bool _add_labels ) +{ + var_idx = var_type = cat_count = cat_ofs = cat_map = + priors = priors_mult = counts = direction = split_buf = responses_copy = 0; + buf = 0; + + tree_storage = temp_storage = 0; + + set_data( _train_data, _tflag, _responses, _var_idx, _sample_idx, + _var_type, _missing_mask, _params, _shared, _add_labels ); +} + + +CvDTreeTrainData::~CvDTreeTrainData() +{ + clear(); +} + + +bool CvDTreeTrainData::set_params( const CvDTreeParams& _params ) +{ + bool ok = false; + + CV_FUNCNAME( "CvDTreeTrainData::set_params" ); + + __BEGIN__; + + // set parameters + params = _params; + + if( params.max_categories < 2 ) + CV_ERROR( CV_StsOutOfRange, "params.max_categories should be >= 2" ); + params.max_categories = MIN( params.max_categories, 15 ); + + if( params.max_depth < 0 ) + CV_ERROR( CV_StsOutOfRange, "params.max_depth should be >= 0" ); + params.max_depth = MIN( params.max_depth, 25 ); + + params.min_sample_count = MAX(params.min_sample_count,1); + + if( params.cv_folds < 0 ) + CV_ERROR( CV_StsOutOfRange, + "params.cv_folds should be =0 (the tree is not pruned) " + "or n>0 (tree is pruned using n-fold cross-validation)" ); + + if( params.cv_folds == 1 ) + params.cv_folds = 0; + + if( params.regression_accuracy < 0 ) + CV_ERROR( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); + + ok = true; + + __END__; + + return ok; +} + +template +class LessThanPtr +{ +public: + bool operator()(T* a, T* b) const { return *a < *b; } +}; + +template +class LessThanIdx +{ +public: + LessThanIdx( const T* _arr ) : arr(_arr) {} + bool operator()(Idx a, Idx b) const { return arr[a] < arr[b]; } + const T* arr; +}; + +class LessThanPairs +{ +public: + bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } +}; + +void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, + const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, + bool _shared, bool _add_labels, bool _update_data ) +{ + CvMat* sample_indices = 0; + CvMat* var_type0 = 0; + CvMat* tmp_map = 0; + int** int_ptr = 0; + CvPair16u32s* pair16u32s_ptr = 0; + CvDTreeTrainData* data = 0; + float *_fdst = 0; + int *_idst = 0; + unsigned short* udst = 0; + int* idst = 0; + + CV_FUNCNAME( "CvDTreeTrainData::set_data" ); + + __BEGIN__; + + int sample_all = 0, r_type, cv_n; + int total_c_count = 0; + int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; + int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step + int vi, i, size; + char err[100]; + const int *sidx = 0, *vidx = 0; + + uint64 effective_buf_size = 0; + int effective_buf_height = 0, effective_buf_width = 0; + + if( _update_data && data_root ) + { + data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, + _sample_idx, _var_type, _missing_mask, _params, _shared, _add_labels ); + + // compare new and old train data + if( !(data->var_count == var_count && + cvNorm( data->var_type, var_type, CV_C ) < FLT_EPSILON && + cvNorm( data->cat_count, cat_count, CV_C ) < FLT_EPSILON && + cvNorm( data->cat_map, cat_map, CV_C ) < FLT_EPSILON) ) + CV_ERROR( CV_StsBadArg, + "The new training data must have the same types and the input and output variables " + "and the same categories for categorical variables" ); + + cvReleaseMat( &priors ); + cvReleaseMat( &priors_mult ); + cvReleaseMat( &buf ); + cvReleaseMat( &direction ); + cvReleaseMat( &split_buf ); + cvReleaseMemStorage( &temp_storage ); + + priors = data->priors; data->priors = 0; + priors_mult = data->priors_mult; data->priors_mult = 0; + buf = data->buf; data->buf = 0; + buf_count = data->buf_count; buf_size = data->buf_size; + sample_count = data->sample_count; + + direction = data->direction; data->direction = 0; + split_buf = data->split_buf; data->split_buf = 0; + temp_storage = data->temp_storage; data->temp_storage = 0; + nv_heap = data->nv_heap; cv_heap = data->cv_heap; + + data_root = new_node( 0, sample_count, 0, 0 ); + EXIT; + } + + clear(); + + var_all = 0; + rng = &cv::theRNG(); + + CV_CALL( set_params( _params )); + + // check parameter types and sizes + CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); + + train_data = _train_data; + responses = _responses; + + if( _tflag == CV_ROW_SAMPLE ) + { + ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); + dv_step = 1; + if( _missing_mask ) + ms_step = _missing_mask->step, mv_step = 1; + } + else + { + dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); + ds_step = 1; + if( _missing_mask ) + mv_step = _missing_mask->step, ms_step = 1; + } + tflag = _tflag; + + sample_count = sample_all; + var_count = var_all; + + if( _sample_idx ) + { + CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); + sidx = sample_indices->data.i; + sample_count = sample_indices->rows + sample_indices->cols - 1; + } + + if( _var_idx ) + { + CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); + vidx = var_idx->data.i; + var_count = var_idx->rows + var_idx->cols - 1; + } + + is_buf_16u = false; + if ( sample_count < 65536 ) + is_buf_16u = true; + + if( !CV_IS_MAT(_responses) || + (CV_MAT_TYPE(_responses->type) != CV_32SC1 && + CV_MAT_TYPE(_responses->type) != CV_32FC1) || + (_responses->rows != 1 && _responses->cols != 1) || + _responses->rows + _responses->cols - 1 != sample_all ) + CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " + "floating-point vector containing as many elements as " + "the total number of samples in the training data matrix" ); + + r_type = CV_VAR_CATEGORICAL; + if( _var_type ) + CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); + + CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); + + cat_var_count = 0; + ord_var_count = -1; + + is_classifier = r_type == CV_VAR_CATEGORICAL; + + // step 0. calc the number of categorical vars + for( vi = 0; vi < var_count; vi++ ) + { + char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; + var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; + } + + ord_var_count = ~ord_var_count; + cv_n = params.cv_folds; + // set the two last elements of var_type array to be able + // to locate responses and cross-validation labels using + // the corresponding get_* functions. + var_type->data.i[var_count] = cat_var_count; + var_type->data.i[var_count+1] = cat_var_count+1; + + // in case of single ordered predictor we need dummy cv_labels + // for safe split_node_data() operation + have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; + + work_var_count = var_count + (is_classifier ? 1 : 0) // for responses class_labels + + (have_labels ? 1 : 0); // for cv_labels + + shared = _shared; + buf_count = shared ? 2 : 1; + + buf_size = -1; // the member buf_size is obsolete + + effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated + effective_buf_width = sample_count; + effective_buf_height = work_var_count+1; + + if (effective_buf_width >= effective_buf_height) + effective_buf_height *= buf_count; + else + effective_buf_width *= buf_count; + + if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) + { + CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); + } + + + + if ( is_buf_16u ) + { + CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); + CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); + } + else + { + CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); + CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); + } + + size = is_classifier ? (cat_var_count+1) : cat_var_count; + size = !size ? 1 : size; + CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); + CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); + + size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; + size = !size ? 1 : size; + CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); + + // now calculate the maximum size of split, + // create memory storage that will keep nodes and splits of the decision tree + // allocate root node and the buffer for the whole training data + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); + tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); + tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); + CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); + CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); + + nv_size = var_count*sizeof(int); + nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); + + temp_block_size = nv_size; + + if( cv_n ) + { + if( sample_count < cv_n*MAX(params.min_sample_count,10) ) + CV_ERROR( CV_StsOutOfRange, + "The many folds in cross-validation for such a small dataset" ); + + cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); + temp_block_size = MAX(temp_block_size, cv_size); + } + + temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); + CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); + CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); + if( cv_size ) + CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); + + CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); + + max_c_count = 1; + + _fdst = 0; + _idst = 0; + if (ord_var_count) + _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); + if (is_buf_16u && (cat_var_count || is_classifier)) + _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); + + // transform the training data to convenient representation + for( vi = 0; vi <= var_count; vi++ ) + { + int ci; + const uchar* mask = 0; + int64 m_step = 0, step; + const int* idata = 0; + const float* fdata = 0; + int num_valid = 0; + + if( vi < var_count ) // analyze i-th input variable + { + int vi0 = vidx ? vidx[vi] : vi; + ci = get_var_type(vi); + step = ds_step; m_step = ms_step; + if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) + idata = _train_data->data.i + vi0*dv_step; + else + fdata = _train_data->data.fl + vi0*dv_step; + if( _missing_mask ) + mask = _missing_mask->data.ptr + vi0*mv_step; + } + else // analyze _responses + { + ci = cat_var_count; + step = CV_IS_MAT_CONT(_responses->type) ? + 1 : _responses->step / CV_ELEM_SIZE(_responses->type); + if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) + idata = _responses->data.i; + else + fdata = _responses->data.fl; + } + + if( (vi < var_count && ci>=0) || + (vi == var_count && is_classifier) ) // process categorical variable or response + { + int c_count, prev_label; + int* c_map; + + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + vi*sample_count); + else + idst = buf->data.i + vi*sample_count; + + // copy data + for( i = 0; i < sample_count; i++ ) + { + int val = INT_MAX, si = sidx ? sidx[i] : i; + if( !mask || !mask[(size_t)si*m_step] ) + { + if( idata ) + val = idata[(size_t)si*step]; + else + { + float t = fdata[(size_t)si*step]; + val = cvRound(t); + if( fabs(t - val) > FLT_EPSILON ) + { + sprintf( err, "%d-th value of %d-th (categorical) " + "variable is not an integer", i, vi ); + CV_ERROR( CV_StsBadArg, err ); + } + } + + if( val == INT_MAX ) + { + sprintf( err, "%d-th value of %d-th (categorical) " + "variable is too large", i, vi ); + CV_ERROR( CV_StsBadArg, err ); + } + num_valid++; + } + if (is_buf_16u) + { + _idst[i] = val; + pair16u32s_ptr[i].u = udst + i; + pair16u32s_ptr[i].i = _idst + i; + } + else + { + idst[i] = val; + int_ptr[i] = idst + i; + } + } + + c_count = num_valid > 0; + if (is_buf_16u) + { + std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); + // count the categories + for( i = 1; i < num_valid; i++ ) + if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) + c_count ++ ; + } + else + { + std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); + // count the categories + for( i = 1; i < num_valid; i++ ) + c_count += *int_ptr[i] != *int_ptr[i-1]; + } + + if( vi > 0 ) + max_c_count = MAX( max_c_count, c_count ); + cat_count->data.i[ci] = c_count; + cat_ofs->data.i[ci] = total_c_count; + + // resize cat_map, if need + if( cat_map->cols < total_c_count + c_count ) + { + tmp_map = cat_map; + CV_CALL( cat_map = cvCreateMat( 1, + MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); + for( i = 0; i < total_c_count; i++ ) + cat_map->data.i[i] = tmp_map->data.i[i]; + cvReleaseMat( &tmp_map ); + } + + c_map = cat_map->data.i + total_c_count; + total_c_count += c_count; + + c_count = -1; + if (is_buf_16u) + { + // compact the class indices and build the map + prev_label = ~*pair16u32s_ptr[0].i; + for( i = 0; i < num_valid; i++ ) + { + int cur_label = *pair16u32s_ptr[i].i; + if( cur_label != prev_label ) + c_map[++c_count] = prev_label = cur_label; + *pair16u32s_ptr[i].u = (unsigned short)c_count; + } + // replace labels for missing values with -1 + for( ; i < sample_count; i++ ) + *pair16u32s_ptr[i].u = 65535; + } + else + { + // compact the class indices and build the map + prev_label = ~*int_ptr[0]; + for( i = 0; i < num_valid; i++ ) + { + int cur_label = *int_ptr[i]; + if( cur_label != prev_label ) + c_map[++c_count] = prev_label = cur_label; + *int_ptr[i] = c_count; + } + // replace labels for missing values with -1 + for( ; i < sample_count; i++ ) + *int_ptr[i] = -1; + } + } + else if( ci < 0 ) // process ordered variable + { + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + vi*sample_count); + else + idst = buf->data.i + vi*sample_count; + + for( i = 0; i < sample_count; i++ ) + { + float val = ord_nan; + int si = sidx ? sidx[i] : i; + if( !mask || !mask[(size_t)si*m_step] ) + { + if( idata ) + val = (float)idata[(size_t)si*step]; + else + val = fdata[(size_t)si*step]; + + if( fabs(val) >= ord_nan ) + { + sprintf( err, "%d-th value of %d-th (ordered) " + "variable (=%g) is too large", i, vi, val ); + CV_ERROR( CV_StsBadArg, err ); + } + num_valid++; + } + + if (is_buf_16u) + udst[i] = (unsigned short)i; // TODO: memory corruption may be here + else + idst[i] = i; + _fdst[i] = val; + + } + if (is_buf_16u) + std::sort(udst, udst + sample_count, LessThanIdx(_fdst)); + else + std::sort(idst, idst + sample_count, LessThanIdx(_fdst)); + } + + if( vi < var_count ) + data_root->set_num_valid(vi, num_valid); + } + + // set sample labels + if (is_buf_16u) + udst = (unsigned short*)(buf->data.s + work_var_count*sample_count); + else + idst = buf->data.i + work_var_count*sample_count; + + for (i = 0; i < sample_count; i++) + { + if (udst) + udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; + else + idst[i] = sidx ? sidx[i] : i; + } + + if( cv_n ) + { + unsigned short* usdst = 0; + int* idst2 = 0; + + if (is_buf_16u) + { + usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); + for( i = vi = 0; i < sample_count; i++ ) + { + usdst[i] = (unsigned short)vi++; + vi &= vi < cv_n ? -1 : 0; + } + + for( i = 0; i < sample_count; i++ ) + { + int a = (*rng)(sample_count); + int b = (*rng)(sample_count); + unsigned short unsh = (unsigned short)vi; + CV_SWAP( usdst[a], usdst[b], unsh ); + } + } + else + { + idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; + for( i = vi = 0; i < sample_count; i++ ) + { + idst2[i] = vi++; + vi &= vi < cv_n ? -1 : 0; + } + + for( i = 0; i < sample_count; i++ ) + { + int a = (*rng)(sample_count); + int b = (*rng)(sample_count); + CV_SWAP( idst2[a], idst2[b], vi ); + } + } + } + + if ( cat_map ) + cat_map->cols = MAX( total_c_count, 1 ); + + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); + CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); + + have_priors = is_classifier && params.priors; + if( is_classifier ) + { + int m = get_num_classes(); + double sum = 0; + CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); + for( i = 0; i < m; i++ ) + { + double val = have_priors ? params.priors[i] : 1.; + if( val <= 0 ) + CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); + priors->data.db[i] = val; + sum += val; + } + + // normalize weights + if( have_priors ) + cvScale( priors, priors, 1./sum ); + + CV_CALL( priors_mult = cvCloneMat( priors )); + CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); + } + + + CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); + CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); + + __END__; + + if( data ) + delete data; + + if (_fdst) + cvFree( &_fdst ); + if (_idst) + cvFree( &_idst ); + cvFree( &int_ptr ); + cvFree( &pair16u32s_ptr); + cvReleaseMat( &var_type0 ); + cvReleaseMat( &sample_indices ); + cvReleaseMat( &tmp_map ); +} + +void CvDTreeTrainData::do_responses_copy() +{ + responses_copy = cvCreateMat( responses->rows, responses->cols, responses->type ); + cvCopy( responses, responses_copy); + responses = responses_copy; +} + +CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) +{ + CvDTreeNode* root = 0; + CvMat* isubsample_idx = 0; + CvMat* subsample_co = 0; + + bool isMakeRootCopy = true; + + CV_FUNCNAME( "CvDTreeTrainData::subsample_data" ); + + __BEGIN__; + + if( !data_root ) + CV_ERROR( CV_StsError, "No training data has been set" ); + + if( _subsample_idx ) + { + CV_CALL( isubsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); + + if( isubsample_idx->cols + isubsample_idx->rows - 1 == sample_count ) + { + const int* sidx = isubsample_idx->data.i; + for( int i = 0; i < sample_count; i++ ) + { + if( sidx[i] != i ) + { + isMakeRootCopy = false; + break; + } + } + } + else + isMakeRootCopy = false; + } + + if( isMakeRootCopy ) + { + // make a copy of the root node + CvDTreeNode temp; + int i; + root = new_node( 0, 1, 0, 0 ); + temp = *root; + *root = *data_root; + root->num_valid = temp.num_valid; + if( root->num_valid ) + { + for( i = 0; i < var_count; i++ ) + root->num_valid[i] = data_root->num_valid[i]; + } + root->cv_Tn = temp.cv_Tn; + root->cv_node_risk = temp.cv_node_risk; + root->cv_node_error = temp.cv_node_error; + } + else + { + int* sidx = isubsample_idx->data.i; + // co - array of count/offset pairs (to handle duplicated values in _subsample_idx) + int* co, cur_ofs = 0; + int vi, i; + int workVarCount = get_work_var_count(); + int count = isubsample_idx->rows + isubsample_idx->cols - 1; + + root = new_node( 0, count, 1, 0 ); + + CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); + cvZero( subsample_co ); + co = subsample_co->data.i; + for( i = 0; i < count; i++ ) + co[sidx[i]*2]++; + for( i = 0; i < sample_count; i++ ) + { + if( co[i*2] ) + { + co[i*2+1] = cur_ofs; + cur_ofs += co[i*2]; + } + else + co[i*2+1] = -1; + } + + cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); + for( vi = 0; vi < workVarCount; vi++ ) + { + int ci = get_var_type(vi); + + if( ci >= 0 || vi >= var_count ) + { + int num_valid = 0; + const int* src = CvDTreeTrainData::get_cat_var_data( data_root, vi, (int*)(uchar*)inn_buf ); + + if (is_buf_16u) + { + unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset); + for( i = 0; i < count; i++ ) + { + int val = src[sidx[i]]; + udst[i] = (unsigned short)val; + num_valid += val >= 0; + } + } + else + { + int* idst = buf->data.i + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset; + for( i = 0; i < count; i++ ) + { + int val = src[sidx[i]]; + idst[i] = val; + num_valid += val >= 0; + } + } + + if( vi < var_count ) + root->set_num_valid(vi, num_valid); + } + else + { + int *src_idx_buf = (int*)(uchar*)inn_buf; + float *src_val_buf = (float*)(src_idx_buf + sample_count); + int* sample_indices_buf = (int*)(src_val_buf + sample_count); + const int* src_idx = 0; + const float* src_val = 0; + get_ord_var_data( data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf ); + int j = 0, idx, count_i; + int num_valid = data_root->get_num_valid(vi); + + if (is_buf_16u) + { + unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + vi*sample_count + data_root->offset); + for( i = 0; i < num_valid; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + udst_idx[j] = (unsigned short)cur_ofs; + } + + root->set_num_valid(vi, j); + + for( ; i < sample_count; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + udst_idx[j] = (unsigned short)cur_ofs; + } + } + else + { + int* idst_idx = buf->data.i + root->buf_idx*get_length_subbuf() + + vi*sample_count + root->offset; + for( i = 0; i < num_valid; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + idst_idx[j] = cur_ofs; + } + + root->set_num_valid(vi, j); + + for( ; i < sample_count; i++ ) + { + idx = src_idx[i]; + count_i = co[idx*2]; + if( count_i ) + for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) + idst_idx[j] = cur_ofs; + } + } + } + } + // sample indices subsampling + const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); + if (is_buf_16u) + { + unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + + workVarCount*sample_count + root->offset); + for (i = 0; i < count; i++) + sample_idx_dst[i] = (unsigned short)sample_idx_src[sidx[i]]; + } + else + { + int* sample_idx_dst = buf->data.i + root->buf_idx*get_length_subbuf() + + workVarCount*sample_count + root->offset; + for (i = 0; i < count; i++) + sample_idx_dst[i] = sample_idx_src[sidx[i]]; + } + } + + __END__; + + cvReleaseMat( &isubsample_idx ); + cvReleaseMat( &subsample_co ); + + return root; +} + + +void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, + float* values, uchar* missing, + float* _responses, bool get_class_idx ) +{ + CvMat* subsample_idx = 0; + CvMat* subsample_co = 0; + + CV_FUNCNAME( "CvDTreeTrainData::get_vectors" ); + + __BEGIN__; + + int i, vi, total = sample_count, count = total, cur_ofs = 0; + int* sidx = 0; + int* co = 0; + + cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); + if( _subsample_idx ) + { + CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); + sidx = subsample_idx->data.i; + CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); + co = subsample_co->data.i; + cvZero( subsample_co ); + count = subsample_idx->cols + subsample_idx->rows - 1; + for( i = 0; i < count; i++ ) + co[sidx[i]*2]++; + for( i = 0; i < total; i++ ) + { + int count_i = co[i*2]; + if( count_i ) + { + co[i*2+1] = cur_ofs*var_count; + cur_ofs += count_i; + } + } + } + + if( missing ) + memset( missing, 1, count*var_count ); + + for( vi = 0; vi < var_count; vi++ ) + { + int ci = get_var_type(vi); + if( ci >= 0 ) // categorical + { + float* dst = values + vi; + uchar* m = missing ? missing + vi : 0; + const int* src = get_cat_var_data(data_root, vi, (int*)(uchar*)inn_buf); + + for( i = 0; i < count; i++, dst += var_count ) + { + int idx = sidx ? sidx[i] : i; + int val = src[idx]; + *dst = (float)val; + if( m ) + { + *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); + m += var_count; + } + } + } + else // ordered + { + float* dst = values + vi; + uchar* m = missing ? missing + vi : 0; + int count1 = data_root->get_num_valid(vi); + float *src_val_buf = (float*)(uchar*)inn_buf; + int* src_idx_buf = (int*)(src_val_buf + sample_count); + int* sample_indices_buf = src_idx_buf + sample_count; + const float *src_val = 0; + const int* src_idx = 0; + get_ord_var_data(data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf); + + for( i = 0; i < count1; i++ ) + { + int idx = src_idx[i]; + int count_i = 1; + if( co ) + { + count_i = co[idx*2]; + cur_ofs = co[idx*2+1]; + } + else + cur_ofs = idx*var_count; + if( count_i ) + { + float val = src_val[i]; + for( ; count_i > 0; count_i--, cur_ofs += var_count ) + { + dst[cur_ofs] = val; + if( m ) + m[cur_ofs] = 0; + } + } + } + } + } + + // copy responses + if( _responses ) + { + if( is_classifier ) + { + const int* src = get_class_labels(data_root, (int*)(uchar*)inn_buf); + for( i = 0; i < count; i++ ) + { + int idx = sidx ? sidx[i] : i; + int val = get_class_idx ? src[idx] : + cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; + _responses[i] = (float)val; + } + } + else + { + float* val_buf = (float*)(uchar*)inn_buf; + int* sample_idx_buf = (int*)(val_buf + sample_count); + const float* _values = get_ord_responses(data_root, val_buf, sample_idx_buf); + for( i = 0; i < count; i++ ) + { + int idx = sidx ? sidx[i] : i; + _responses[i] = _values[idx]; + } + } + } + + __END__; + + cvReleaseMat( &subsample_idx ); + cvReleaseMat( &subsample_co ); +} + + +CvDTreeNode* CvDTreeTrainData::new_node( CvDTreeNode* parent, int count, + int storage_idx, int offset ) +{ + CvDTreeNode* node = (CvDTreeNode*)cvSetNew( node_heap ); + + node->sample_count = count; + node->depth = parent ? parent->depth + 1 : 0; + node->parent = parent; + node->left = node->right = 0; + node->split = 0; + node->value = 0; + node->class_idx = 0; + node->maxlr = 0.; + + node->buf_idx = storage_idx; + node->offset = offset; + if( nv_heap ) + node->num_valid = (int*)cvSetNew( nv_heap ); + else + node->num_valid = 0; + node->alpha = node->node_risk = node->tree_risk = node->tree_error = 0.; + node->complexity = 0; + + if( params.cv_folds > 0 && cv_heap ) + { + int cv_n = params.cv_folds; + node->Tn = INT_MAX; + node->cv_Tn = (int*)cvSetNew( cv_heap ); + node->cv_node_risk = (double*)cvAlignPtr(node->cv_Tn + cv_n, sizeof(double)); + node->cv_node_error = node->cv_node_risk + cv_n; + } + else + { + node->Tn = 0; + node->cv_Tn = 0; + node->cv_node_risk = 0; + node->cv_node_error = 0; + } + + return node; +} + + +CvDTreeSplit* CvDTreeTrainData::new_split_ord( int vi, float cmp_val, + int split_point, int inversed, float quality ) +{ + CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); + split->var_idx = vi; + split->condensed_idx = INT_MIN; + split->ord.c = cmp_val; + split->ord.split_point = split_point; + split->inversed = inversed; + split->quality = quality; + split->next = 0; + + return split; +} + + +CvDTreeSplit* CvDTreeTrainData::new_split_cat( int vi, float quality ) +{ + CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); + int i, n = (max_c_count + 31)/32; + + split->var_idx = vi; + split->condensed_idx = INT_MIN; + split->inversed = 0; + split->quality = quality; + for( i = 0; i < n; i++ ) + split->subset[i] = 0; + split->next = 0; + + return split; +} + + +void CvDTreeTrainData::free_node( CvDTreeNode* node ) +{ + CvDTreeSplit* split = node->split; + free_node_data( node ); + while( split ) + { + CvDTreeSplit* next = split->next; + cvSetRemoveByPtr( split_heap, split ); + split = next; + } + node->split = 0; + cvSetRemoveByPtr( node_heap, node ); +} + + +void CvDTreeTrainData::free_node_data( CvDTreeNode* node ) +{ + if( node->num_valid ) + { + cvSetRemoveByPtr( nv_heap, node->num_valid ); + node->num_valid = 0; + } + // do not free cv_* fields, as all the cross-validation related data is released at once. +} + + +void CvDTreeTrainData::free_train_data() +{ + cvReleaseMat( &counts ); + cvReleaseMat( &buf ); + cvReleaseMat( &direction ); + cvReleaseMat( &split_buf ); + cvReleaseMemStorage( &temp_storage ); + cvReleaseMat( &responses_copy ); + cv_heap = nv_heap = 0; +} + + +void CvDTreeTrainData::clear() +{ + free_train_data(); + + cvReleaseMemStorage( &tree_storage ); + + cvReleaseMat( &var_idx ); + cvReleaseMat( &var_type ); + cvReleaseMat( &cat_count ); + cvReleaseMat( &cat_ofs ); + cvReleaseMat( &cat_map ); + cvReleaseMat( &priors ); + cvReleaseMat( &priors_mult ); + + node_heap = split_heap = 0; + + sample_count = var_all = var_count = max_c_count = ord_var_count = cat_var_count = 0; + have_labels = have_priors = is_classifier = false; + + buf_count = buf_size = 0; + shared = false; + + data_root = 0; + + rng = &cv::theRNG(); +} + + +int CvDTreeTrainData::get_num_classes() const +{ + return is_classifier ? cat_count->data.i[cat_var_count] : 0; +} + + +int CvDTreeTrainData::get_var_type(int vi) const +{ + return var_type->data.i[vi]; +} + +void CvDTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, + const float** ord_values, const int** sorted_indices, int* sample_indices_buf ) +{ + int vidx = var_idx ? var_idx->data.i[vi] : vi; + int node_sample_count = n->sample_count; + int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); + + const int* sample_indices = get_sample_indices(n, sample_indices_buf); + + if( !is_buf_16u ) + *sorted_indices = buf->data.i + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset; + else { + const unsigned short* short_indices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset ); + for( int i = 0; i < node_sample_count; i++ ) + sorted_indices_buf[i] = short_indices[i]; + *sorted_indices = sorted_indices_buf; + } + + if( tflag == CV_ROW_SAMPLE ) + { + for( int i = 0; i < node_sample_count && + ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = (*sorted_indices)[i]; + idx = sample_indices[idx]; + ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); + } + } + else + for( int i = 0; i < node_sample_count && + ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = (*sorted_indices)[i]; + idx = sample_indices[idx]; + ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); + } + + *ord_values = ord_values_buf; +} + + +const int* CvDTreeTrainData::get_class_labels( CvDTreeNode* n, int* labels_buf ) +{ + if (is_classifier) + return get_cat_var_data( n, var_count, labels_buf); + return 0; +} + +const int* CvDTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) +{ + return get_cat_var_data( n, get_work_var_count(), indices_buf ); +} + +const float* CvDTreeTrainData::get_ord_responses( CvDTreeNode* n, float* values_buf, int*sample_indices_buf ) +{ + int _sample_count = n->sample_count; + int r_step = CV_IS_MAT_CONT(responses->type) ? 1 : responses->step/CV_ELEM_SIZE(responses->type); + const int* indices = get_sample_indices(n, sample_indices_buf); + + for( int i = 0; i < _sample_count && + (((indices[i] >= 0) && !is_buf_16u) || ((indices[i] != 65535) && is_buf_16u)); i++ ) + { + int idx = indices[i]; + values_buf[i] = *(responses->data.fl + idx * r_step); + } + + return values_buf; +} + + +const int* CvDTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) +{ + if (have_labels) + return get_cat_var_data( n, get_work_var_count()- 1, labels_buf); + return 0; +} + + +const int* CvDTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf) +{ + const int* cat_values = 0; + if( !is_buf_16u ) + cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset; + else { + const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + + vi*sample_count + n->offset); + for( int i = 0; i < n->sample_count; i++ ) + cat_values_buf[i] = short_values[i]; + cat_values = cat_values_buf; + } + return cat_values; +} + + +int CvDTreeTrainData::get_child_buf_idx( CvDTreeNode* n ) +{ + int idx = n->buf_idx + 1; + if( idx >= buf_count ) + idx = shared ? 1 : 0; + return idx; +} + + +void CvDTreeTrainData::write_params( CvFileStorage* fs ) const +{ + CV_FUNCNAME( "CvDTreeTrainData::write_params" ); + + __BEGIN__; + + int vi, vcount = var_count; + + cvWriteInt( fs, "is_classifier", is_classifier ? 1 : 0 ); + cvWriteInt( fs, "var_all", var_all ); + cvWriteInt( fs, "var_count", var_count ); + cvWriteInt( fs, "ord_var_count", ord_var_count ); + cvWriteInt( fs, "cat_var_count", cat_var_count ); + + cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); + cvWriteInt( fs, "use_surrogates", params.use_surrogates ? 1 : 0 ); + + if( is_classifier ) + { + cvWriteInt( fs, "max_categories", params.max_categories ); + } + else + { + cvWriteReal( fs, "regression_accuracy", params.regression_accuracy ); + } + + cvWriteInt( fs, "max_depth", params.max_depth ); + cvWriteInt( fs, "min_sample_count", params.min_sample_count ); + cvWriteInt( fs, "cross_validation_folds", params.cv_folds ); + + if( params.cv_folds > 1 ) + { + cvWriteInt( fs, "use_1se_rule", params.use_1se_rule ? 1 : 0 ); + cvWriteInt( fs, "truncate_pruned_tree", params.truncate_pruned_tree ? 1 : 0 ); + } + + if( priors ) + cvWrite( fs, "priors", priors ); + + cvEndWriteStruct( fs ); + + if( var_idx ) + cvWrite( fs, "var_idx", var_idx ); + + cvStartWriteStruct( fs, "var_type", CV_NODE_SEQ+CV_NODE_FLOW ); + + for( vi = 0; vi < vcount; vi++ ) + cvWriteInt( fs, 0, var_type->data.i[vi] >= 0 ); + + cvEndWriteStruct( fs ); + + if( cat_count && (cat_var_count > 0 || is_classifier) ) + { + CV_ASSERT( cat_count != 0 ); + cvWrite( fs, "cat_count", cat_count ); + cvWrite( fs, "cat_map", cat_map ); + } + + __END__; +} + + +void CvDTreeTrainData::read_params( CvFileStorage* fs, CvFileNode* node ) +{ + CV_FUNCNAME( "CvDTreeTrainData::read_params" ); + + __BEGIN__; + + CvFileNode *tparams_node, *vartype_node; + CvSeqReader reader; + int vi, max_split_size, tree_block_size; + + is_classifier = (cvReadIntByName( fs, node, "is_classifier" ) != 0); + var_all = cvReadIntByName( fs, node, "var_all" ); + var_count = cvReadIntByName( fs, node, "var_count", var_all ); + cat_var_count = cvReadIntByName( fs, node, "cat_var_count" ); + ord_var_count = cvReadIntByName( fs, node, "ord_var_count" ); + + tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); + + if( tparams_node ) // training parameters are not necessary + { + params.use_surrogates = cvReadIntByName( fs, tparams_node, "use_surrogates", 1 ) != 0; + + if( is_classifier ) + { + params.max_categories = cvReadIntByName( fs, tparams_node, "max_categories" ); + } + else + { + params.regression_accuracy = + (float)cvReadRealByName( fs, tparams_node, "regression_accuracy" ); + } + + params.max_depth = cvReadIntByName( fs, tparams_node, "max_depth" ); + params.min_sample_count = cvReadIntByName( fs, tparams_node, "min_sample_count" ); + params.cv_folds = cvReadIntByName( fs, tparams_node, "cross_validation_folds" ); + + if( params.cv_folds > 1 ) + { + params.use_1se_rule = cvReadIntByName( fs, tparams_node, "use_1se_rule" ) != 0; + params.truncate_pruned_tree = + cvReadIntByName( fs, tparams_node, "truncate_pruned_tree" ) != 0; + } + + priors = (CvMat*)cvReadByName( fs, tparams_node, "priors" ); + if( priors ) + { + if( !CV_IS_MAT(priors) ) + CV_ERROR( CV_StsParseError, "priors must stored as a matrix" ); + priors_mult = cvCloneMat( priors ); + } + } + + CV_CALL( var_idx = (CvMat*)cvReadByName( fs, node, "var_idx" )); + if( var_idx ) + { + if( !CV_IS_MAT(var_idx) || + (var_idx->cols != 1 && var_idx->rows != 1) || + var_idx->cols + var_idx->rows - 1 != var_count || + CV_MAT_TYPE(var_idx->type) != CV_32SC1 ) + CV_ERROR( CV_StsParseError, + "var_idx (if exist) must be valid 1d integer vector containing elements" ); + + for( vi = 0; vi < var_count; vi++ ) + if( (unsigned)var_idx->data.i[vi] >= (unsigned)var_all ) + CV_ERROR( CV_StsOutOfRange, "some of var_idx elements are out of range" ); + } + + ////// read var type + CV_CALL( var_type = cvCreateMat( 1, var_count + 2, CV_32SC1 )); + + cat_var_count = 0; + ord_var_count = -1; + vartype_node = cvGetFileNodeByName( fs, node, "var_type" ); + + if( vartype_node && CV_NODE_TYPE(vartype_node->tag) == CV_NODE_INT && var_count == 1 ) + var_type->data.i[0] = vartype_node->data.i ? cat_var_count++ : ord_var_count--; + else + { + if( !vartype_node || CV_NODE_TYPE(vartype_node->tag) != CV_NODE_SEQ || + vartype_node->data.seq->total != var_count ) + CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); + + cvStartReadSeq( vartype_node->data.seq, &reader ); + + for( vi = 0; vi < var_count; vi++ ) + { + CvFileNode* n = (CvFileNode*)reader.ptr; + if( CV_NODE_TYPE(n->tag) != CV_NODE_INT || (n->data.i & ~1) ) + CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); + var_type->data.i[vi] = n->data.i ? cat_var_count++ : ord_var_count--; + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + var_type->data.i[var_count] = cat_var_count; + + ord_var_count = ~ord_var_count; + ////// + + if( cat_var_count > 0 || is_classifier ) + { + int ccount, total_c_count = 0; + CV_CALL( cat_count = (CvMat*)cvReadByName( fs, node, "cat_count" )); + CV_CALL( cat_map = (CvMat*)cvReadByName( fs, node, "cat_map" )); + + if( !CV_IS_MAT(cat_count) || !CV_IS_MAT(cat_map) || + (cat_count->cols != 1 && cat_count->rows != 1) || + CV_MAT_TYPE(cat_count->type) != CV_32SC1 || + cat_count->cols + cat_count->rows - 1 != cat_var_count + is_classifier || + (cat_map->cols != 1 && cat_map->rows != 1) || + CV_MAT_TYPE(cat_map->type) != CV_32SC1 ) + CV_ERROR( CV_StsParseError, + "Both cat_count and cat_map must exist and be valid 1d integer vectors of an appropriate size" ); + + ccount = cat_var_count + is_classifier; + + CV_CALL( cat_ofs = cvCreateMat( 1, ccount + 1, CV_32SC1 )); + cat_ofs->data.i[0] = 0; + max_c_count = 1; + + for( vi = 0; vi < ccount; vi++ ) + { + int val = cat_count->data.i[vi]; + if( val <= 0 ) + CV_ERROR( CV_StsOutOfRange, "some of cat_count elements are out of range" ); + max_c_count = MAX( max_c_count, val ); + cat_ofs->data.i[vi+1] = total_c_count += val; + } + + if( cat_map->cols + cat_map->rows - 1 != total_c_count ) + CV_ERROR( CV_StsBadSize, + "cat_map vector length is not equal to the total number of categories in all categorical vars" ); + } + + max_split_size = cvAlign(sizeof(CvDTreeSplit) + + (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); + + tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); + tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); + CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); + CV_CALL( node_heap = cvCreateSet( 0, sizeof(node_heap[0]), + sizeof(CvDTreeNode), tree_storage )); + CV_CALL( split_heap = cvCreateSet( 0, sizeof(split_heap[0]), + max_split_size, tree_storage )); + + __END__; +} + +/////////////////////// Decision Tree ///////////////////////// +CvDTreeParams::CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), + cv_folds(10), use_surrogates(true), use_1se_rule(true), + truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) +{} + +CvDTreeParams::CvDTreeParams( int _max_depth, int _min_sample_count, + float _regression_accuracy, bool _use_surrogates, + int _max_categories, int _cv_folds, + bool _use_1se_rule, bool _truncate_pruned_tree, + const float* _priors ) : + max_categories(_max_categories), max_depth(_max_depth), + min_sample_count(_min_sample_count), cv_folds (_cv_folds), + use_surrogates(_use_surrogates), use_1se_rule(_use_1se_rule), + truncate_pruned_tree(_truncate_pruned_tree), + regression_accuracy(_regression_accuracy), + priors(_priors) +{} + +CvDTree::CvDTree() +{ + data = 0; + var_importance = 0; + default_model_name = "my_tree"; + + clear(); +} + + +void CvDTree::clear() +{ + cvReleaseMat( &var_importance ); + if( data ) + { + if( !data->shared ) + delete data; + else + free_tree(); + data = 0; + } + root = 0; + pruned_tree_idx = -1; +} + + +CvDTree::~CvDTree() +{ + clear(); +} + + +const CvDTreeNode* CvDTree::get_root() const +{ + return root; +} + + +int CvDTree::get_pruned_tree_idx() const +{ + return pruned_tree_idx; +} + + +CvDTreeTrainData* CvDTree::get_data() +{ + return data; +} + + +bool CvDTree::train( const CvMat* _train_data, int _tflag, + const CvMat* _responses, const CvMat* _var_idx, + const CvMat* _sample_idx, const CvMat* _var_type, + const CvMat* _missing_mask, CvDTreeParams _params ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + clear(); + data = new CvDTreeTrainData( _train_data, _tflag, _responses, + _var_idx, _sample_idx, _var_type, + _missing_mask, _params, false ); + CV_CALL( result = do_train(0) ); + + __END__; + + return result; +} + +bool CvDTree::train( const Mat& _train_data, int _tflag, + const Mat& _responses, const Mat& _var_idx, + const Mat& _sample_idx, const Mat& _var_type, + const Mat& _missing_mask, CvDTreeParams _params ) +{ + train_data_hdr = _train_data; + train_data_mat = _train_data; + responses_hdr = _responses; + responses_mat = _responses; + + CvMat vidx=_var_idx, sidx=_sample_idx, vtype=_var_type, mmask=_missing_mask; + + return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, + vtype.data.ptr ? &vtype : 0, mmask.data.ptr ? &mmask : 0, _params); +} + + +bool CvDTree::train( CvMLData* _data, CvDTreeParams _params ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* var_types = _data->get_var_types(); + const CvMat* train_sidx = _data->get_train_sample_idx(); + const CvMat* var_idx = _data->get_var_idx(); + + CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, + train_sidx, var_types, missing, _params ) ); + + __END__; + + return result; +} + +bool CvDTree::train( CvDTreeTrainData* _data, const CvMat* _subsample_idx ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::train" ); + + __BEGIN__; + + clear(); + data = _data; + data->shared = true; + CV_CALL( result = do_train(_subsample_idx)); + + __END__; + + return result; +} + + +bool CvDTree::do_train( const CvMat* _subsample_idx ) +{ + bool result = false; + + CV_FUNCNAME( "CvDTree::do_train" ); + + __BEGIN__; + + root = data->subsample_data( _subsample_idx ); + + CV_CALL( try_split_node(root)); + + if( root->split ) + { + CV_Assert( root->left ); + CV_Assert( root->right ); + + if( data->params.cv_folds > 0 ) + CV_CALL( prune_cv() ); + + if( !data->shared ) + data->free_train_data(); + + result = true; + } + + __END__; + + return result; +} + + +void CvDTree::try_split_node( CvDTreeNode* node ) +{ + CvDTreeSplit* best_split = 0; + int i, n = node->sample_count, vi; + bool can_split = true; + double quality_scale; + + calc_node_value( node ); + + if( node->sample_count <= data->params.min_sample_count || + node->depth >= data->params.max_depth ) + can_split = false; + + if( can_split && data->is_classifier ) + { + // check if we have a "pure" node, + // we assume that cls_count is filled by calc_node_value() + int* cls_count = data->counts->data.i; + int nz = 0, m = data->get_num_classes(); + for( i = 0; i < m; i++ ) + nz += cls_count[i] != 0; + if( nz == 1 ) // there is only one class + can_split = false; + } + else if( can_split ) + { + if( sqrt(node->node_risk)/n < data->params.regression_accuracy ) + can_split = false; + } + + if( can_split ) + { + best_split = find_best_split(node); + // TODO: check the split quality ... + node->split = best_split; + } + if( !can_split || !best_split ) + { + data->free_node_data(node); + return; + } + + quality_scale = calc_node_dir( node ); + if( data->params.use_surrogates ) + { + // find all the surrogate splits + // and sort them by their similarity to the primary one + for( vi = 0; vi < data->var_count; vi++ ) + { + CvDTreeSplit* split; + int ci = data->get_var_type(vi); + + if( vi == best_split->var_idx ) + continue; + + if( ci >= 0 ) + split = find_surrogate_split_cat( node, vi ); + else + split = find_surrogate_split_ord( node, vi ); + + if( split ) + { + // insert the split + CvDTreeSplit* prev_split = node->split; + split->quality = (float)(split->quality*quality_scale); + + while( prev_split->next && + prev_split->next->quality > split->quality ) + prev_split = prev_split->next; + split->next = prev_split->next; + prev_split->next = split; + } + } + } + split_node_data( node ); + try_split_node( node->left ); + try_split_node( node->right ); +} + + +// calculate direction (left(-1),right(1),missing(0)) +// for each sample using the best split +// the function returns scale coefficients for surrogate split quality factors. +// the scale is applied to normalize surrogate split quality relatively to the +// best (primary) split quality. That is, if a surrogate split is absolutely +// identical to the primary split, its quality will be set to the maximum value = +// quality of the primary split; otherwise, it will be lower. +// besides, the function compute node->maxlr, +// minimum possible quality (w/o considering the above mentioned scale) +// for a surrogate split. Surrogate splits with quality less than node->maxlr +// are not discarded. +double CvDTree::calc_node_dir( CvDTreeNode* node ) +{ + char* dir = (char*)data->direction->data.ptr; + int i, n = node->sample_count, vi = node->split->var_idx; + double L, R; + + assert( !node->split->inversed ); + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + cv::AutoBuffer inn_buf(n*(!data->have_priors ? 1 : 2)); + int* labels_buf = (int*)inn_buf; + const int* labels = data->get_cat_var_data( node, vi, labels_buf ); + const int* subset = node->split->subset; + if( !data->have_priors ) + { + int sum = 0, sum_abs = 0; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? + CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d; sum_abs += d & 1; + dir[i] = (char)d; + } + + R = (sum_abs + sum) >> 1; + L = (sum_abs - sum) >> 1; + } + else + { + const double* priors = data->priors_mult->data.db; + double sum = 0, sum_abs = 0; + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + double w = priors[responses[i]]; + int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; + sum += d*w; sum_abs += (d & 1)*w; + dir[i] = (char)d; + } + + R = (sum_abs + sum) * 0.5; + L = (sum_abs - sum) * 0.5; + } + } + else // split on ordered var + { + int split_point = node->split->ord.split_point; + int n1 = node->get_num_valid(vi); + cv::AutoBuffer inn_buf(n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float))); + float* val_buf = (float*)(uchar*)inn_buf; + int* sorted_buf = (int*)(val_buf + n); + int* sample_idx_buf = sorted_buf + n; + const float* val = 0; + const int* sorted = 0; + data->get_ord_var_data( node, vi, val_buf, sorted_buf, &val, &sorted, sample_idx_buf); + + assert( 0 <= split_point && split_point < n1-1 ); + + if( !data->have_priors ) + { + for( i = 0; i <= split_point; i++ ) + dir[sorted[i]] = (char)-1; + for( ; i < n1; i++ ) + dir[sorted[i]] = (char)1; + for( ; i < n; i++ ) + dir[sorted[i]] = (char)0; + + L = split_point-1; + R = n1 - split_point + 1; + } + else + { + const double* priors = data->priors_mult->data.db; + int* responses_buf = sample_idx_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + L = R = 0; + + for( i = 0; i <= split_point; i++ ) + { + int idx = sorted[i]; + double w = priors[responses[idx]]; + dir[idx] = (char)-1; + L += w; + } + + for( ; i < n1; i++ ) + { + int idx = sorted[i]; + double w = priors[responses[idx]]; + dir[idx] = (char)1; + R += w; + } + + for( ; i < n; i++ ) + dir[sorted[i]] = (char)0; + } + } + node->maxlr = MAX( L, R ); + return node->split->quality/(L + R); +} + + +namespace cv +{ + +template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const +{ + fastFree(obj); +} + +DTreeBestSplitFinder::DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node) +{ + tree = _tree; + node = _node; + splitSize = tree->get_data()->split_heap->elem_size; + + bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(bestSplit.get(), 0, splitSize); + bestSplit->quality = -1; + bestSplit->condensed_idx = INT_MIN; + split.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(split.get(), 0, splitSize); + //haveSplit = false; +} + +DTreeBestSplitFinder::DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ) +{ + tree = finder.tree; + node = finder.node; + splitSize = tree->get_data()->split_heap->elem_size; + + bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memcpy(bestSplit.get(), finder.bestSplit.get(), splitSize); + split.reset((CvDTreeSplit*)fastMalloc(splitSize)); + memset(split.get(), 0, splitSize); +} + +void DTreeBestSplitFinder::operator()(const BlockedRange& range) +{ + int vi, vi1 = range.begin(), vi2 = range.end(); + int n = node->sample_count; + CvDTreeTrainData* data = tree->get_data(); + AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); + + for( vi = vi1; vi < vi2; vi++ ) + { + CvDTreeSplit *res; + int ci = data->get_var_type(vi); + if( node->get_num_valid(vi) <= 1 ) + continue; + + if( data->is_classifier ) + { + if( ci >= 0 ) + res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + else + res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + } + else + { + if( ci >= 0 ) + res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + else + res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); + } + + if( res && bestSplit->quality < split->quality ) + memcpy( bestSplit.get(), split.get(), splitSize ); + } +} + +void DTreeBestSplitFinder::join( DTreeBestSplitFinder& rhs ) +{ + if( bestSplit->quality < rhs.bestSplit->quality ) + memcpy( bestSplit.get(), rhs.bestSplit.get(), splitSize ); +} +} + + +CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) +{ + DTreeBestSplitFinder finder( this, node ); + + cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); + + CvDTreeSplit *bestSplit = 0; + if( finder.bestSplit->quality > 0 ) + { + bestSplit = data->new_split_cat( 0, -1.0f ); + memcpy( bestSplit, finder.bestSplit, finder.splitSize ); + } + + return bestSplit; +} + +CvDTreeSplit* CvDTree::find_split_ord_class( CvDTreeNode* node, int vi, + float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + int m = data->get_num_classes(); + + int base_size = 2*m*sizeof(int); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(3*sizeof(int)+sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, + &sorted_indices, sample_indices_buf ); + int* responses_buf = sample_indices_buf + n; + const int* responses = data->get_class_labels( node, responses_buf ); + + const int* rc0 = data->counts->data.i; + int* lc = (int*)base_buf; + int* rc = lc + m; + int i, best_i = -1; + double lsum2 = 0, rsum2 = 0, best_val = init_quality; + const double* priors = data->have_priors ? data->priors_mult->data.db : 0; + + // init arrays of class instance counters on both sides of the split + for( i = 0; i < m; i++ ) + { + lc[i] = 0; + rc[i] = rc0[i]; + } + + // compensate for missing values + for( i = n1; i < n; i++ ) + { + rc[responses[sorted_indices[i]]]--; + } + + if( !priors ) + { + int L = 0, R = n1; + + for( i = 0; i < m; i++ ) + rsum2 += (double)rc[i]*rc[i]; + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = responses[sorted_indices[i]]; + int lv, rv; + L++; R--; + lv = lc[idx]; rv = rc[idx]; + lsum2 += lv*2 + 1; + rsum2 -= rv*2 - 1; + lc[idx] = lv + 1; rc[idx] = rv - 1; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + else + { + double L = 0, R = 0; + for( i = 0; i < m; i++ ) + { + double wv = rc[i]*priors[i]; + R += wv; + rsum2 += wv*wv; + } + + for( i = 0; i < n1 - 1; i++ ) + { + int idx = responses[sorted_indices[i]]; + int lv, rv; + double p = priors[idx], p2 = p*p; + L += p; R -= p; + lv = lc[idx]; rv = rc[idx]; + lsum2 += p2*(lv*2 + 1); + rsum2 -= p2*(rv*2 - 1); + lc[idx] = lv + 1; rc[idx] = rv - 1; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + + +void CvDTree::cluster_categories( const int* vectors, int n, int m, + int* csums, int k, int* labels ) +{ + // TODO: consider adding priors (class weights) and sample weights to the clustering algorithm + int iters = 0, max_iters = 100; + int i, j, idx; + cv::AutoBuffer buf(n + k); + double *v_weights = buf, *c_weights = buf + n; + bool modified = true; + RNG* r = data->rng; + + // assign labels randomly + for( i = 0; i < n; i++ ) + { + int sum = 0; + const int* v = vectors + i*m; + labels[i] = i < k ? i : r->uniform(0, k); + + // compute weight of each vector + for( j = 0; j < m; j++ ) + sum += v[j]; + v_weights[i] = sum ? 1./sum : 0.; + } + + for( i = 0; i < n; i++ ) + { + int i1 = (*r)(n); + int i2 = (*r)(n); + CV_SWAP( labels[i1], labels[i2], j ); + } + + for( iters = 0; iters <= max_iters; iters++ ) + { + // calculate csums + for( i = 0; i < k; i++ ) + { + for( j = 0; j < m; j++ ) + csums[i*m + j] = 0; + } + + for( i = 0; i < n; i++ ) + { + const int* v = vectors + i*m; + int* s = csums + labels[i]*m; + for( j = 0; j < m; j++ ) + s[j] += v[j]; + } + + // exit the loop here, when we have up-to-date csums + if( iters == max_iters || !modified ) + break; + + modified = false; + + // calculate weight of each cluster + for( i = 0; i < k; i++ ) + { + const int* s = csums + i*m; + int sum = 0; + for( j = 0; j < m; j++ ) + sum += s[j]; + c_weights[i] = sum ? 1./sum : 0; + } + + // now for each vector determine the closest cluster + for( i = 0; i < n; i++ ) + { + const int* v = vectors + i*m; + double alpha = v_weights[i]; + double min_dist2 = DBL_MAX; + int min_idx = -1; + + for( idx = 0; idx < k; idx++ ) + { + const int* s = csums + idx*m; + double dist2 = 0., beta = c_weights[idx]; + for( j = 0; j < m; j++ ) + { + double t = v[j]*alpha - s[j]*beta; + dist2 += t*t; + } + if( min_dist2 > dist2 ) + { + min_dist2 = dist2; + min_idx = idx; + } + } + + if( min_idx != labels[i] ) + modified = true; + labels[i] = min_idx; + } + } +} + + +CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, + CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int m = data->get_num_classes(); + int _mi = data->cat_count->data.i[ci], mi = _mi; + + int base_size = m*(3 + mi)*sizeof(int) + (mi+1)*sizeof(double); + if( m > 2 && mi > data->params.max_categories ) + base_size += (m*std::min(data->params.max_categories, n) + mi)*sizeof(int); + else + base_size += mi*sizeof(int*); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + 2*n*sizeof(int)); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* lc = (int*)base_buf; + int* rc = lc + m; + int* _cjk = rc + m*2, *cjk = _cjk; + double* c_weights = (double*)alignPtr(cjk + m*mi, sizeof(double)); + + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + int* cluster_labels = 0; + int** int_ptr = 0; + int i, j, k, idx; + double L = 0, R = 0; + double best_val = init_quality; + int prevcode = 0, best_subset = -1, subset_i, subset_n, subtract = 0; + const double* priors = data->priors_mult->data.db; + + // init array of counters: + // c_{jk} - number of samples that have vi-th input variable = j and response = k. + for( j = -1; j < mi; j++ ) + for( k = 0; k < m; k++ ) + cjk[j*m + k] = 0; + + for( i = 0; i < n; i++ ) + { + j = ( labels[i] == 65535 && data->is_buf_16u) ? -1 : labels[i]; + k = responses[i]; + cjk[j*m + k]++; + } + + if( m > 2 ) + { + if( mi > data->params.max_categories ) + { + mi = MIN(data->params.max_categories, n); + cjk = (int*)(c_weights + _mi); + cluster_labels = cjk + m*mi; + cluster_categories( _cjk, _mi, m, cjk, mi, cluster_labels ); + } + subset_i = 1; + subset_n = 1 << mi; + } + else + { + assert( m == 2 ); + int_ptr = (int**)(c_weights + _mi); + for( j = 0; j < mi; j++ ) + int_ptr[j] = cjk + j*2 + 1; + std::sort(int_ptr, int_ptr + mi, LessThanPtr()); + subset_i = 0; + subset_n = mi; + } + + for( k = 0; k < m; k++ ) + { + int sum = 0; + for( j = 0; j < mi; j++ ) + sum += cjk[j*m + k]; + rc[k] = sum; + lc[k] = 0; + } + + for( j = 0; j < mi; j++ ) + { + double sum = 0; + for( k = 0; k < m; k++ ) + sum += cjk[j*m + k]*priors[k]; + c_weights[j] = sum; + R += c_weights[j]; + } + + for( ; subset_i < subset_n; subset_i++ ) + { + double weight; + int* crow; + double lsum2 = 0, rsum2 = 0; + + if( m == 2 ) + idx = (int)(int_ptr[subset_i] - cjk)/2; + else + { + int graycode = (subset_i>>1)^subset_i; + int diff = graycode ^ prevcode; + + // determine index of the changed bit. + Cv32suf u; + idx = diff >= (1 << 16) ? 16 : 0; + u.f = (float)(((diff >> 16) | diff) & 65535); + idx += (u.i >> 23) - 127; + subtract = graycode < prevcode; + prevcode = graycode; + } + + crow = cjk + idx*m; + weight = c_weights[idx]; + if( weight < FLT_EPSILON ) + continue; + + if( !subtract ) + { + for( k = 0; k < m; k++ ) + { + int t = crow[k]; + int lval = lc[k] + t; + int rval = rc[k] - t; + double p = priors[k], p2 = p*p; + lsum2 += p2*lval*lval; + rsum2 += p2*rval*rval; + lc[k] = lval; rc[k] = rval; + } + L += weight; + R -= weight; + } + else + { + for( k = 0; k < m; k++ ) + { + int t = crow[k]; + int lval = lc[k] - t; + int rval = rc[k] + t; + double p = priors[k], p2 = p*p; + lsum2 += p2*lval*lval; + rsum2 += p2*rval*rval; + lc[k] = lval; rc[k] = rval; + } + L -= weight; + R += weight; + } + + if( L > FLT_EPSILON && R > FLT_EPSILON ) + { + double val = (lsum2*R + rsum2*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f ); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + if( m == 2 ) + { + for( i = 0; i <= best_subset; i++ ) + { + idx = (int)(int_ptr[i] - cjk) >> 1; + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + else + { + for( i = 0; i < _mi; i++ ) + { + idx = cluster_labels ? cluster_labels[i] : i; + if( best_subset & (1 << idx) ) + split->subset[i >> 5] |= 1 << (i & 31); + } + } + } + return split; +} + + +CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + int n = node->sample_count; + int n1 = node->get_num_valid(vi); + + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate(2*n*(sizeof(int) + sizeof(float))); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + float* responses_buf = (float*)(sample_indices_buf + n); + const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); + + int i, best_i = -1; + double best_val = init_quality, lsum = 0, rsum = node->value*n; + int L = 0, R = n1; + + // compensate for missing values + for( i = n1; i < n; i++ ) + rsum -= responses[sorted_indices[i]]; + + // find the optimal split + for( i = 0; i < n1 - 1; i++ ) + { + float t = responses[sorted_indices[i]]; + L++; R--; + lsum += t; + rsum -= t; + + if( values[i] + epsilon < values[i+1] ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_i = i; + } + } + } + + CvDTreeSplit* split = 0; + if( best_i >= 0 ) + { + split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); + split->var_idx = vi; + split->ord.c = (values[best_i] + values[best_i+1])*0.5f; + split->ord.split_point = best_i; + split->inversed = 0; + split->quality = (float)best_val; + } + return split; +} + +CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +{ + int ci = data->get_var_type(vi); + int n = node->sample_count; + int mi = data->cat_count->data.i[ci]; + + int base_size = (mi+2)*sizeof(double) + (mi+1)*(sizeof(int) + sizeof(double*)); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + float* responses_buf = (float*)(labels_buf + n); + int* sample_indices_buf = (int*)(responses_buf + n); + const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); + + double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + int* counts = (int*)(sum + mi) + 1; + double** sum_ptr = (double**)(counts + mi); + int i, L = 0, R = 0; + double best_val = init_quality, lsum = 0, rsum = 0; + int best_subset = -1, subset_i; + + for( i = -1; i < mi; i++ ) + sum[i] = counts[i] = 0; + + // calculate sum response and weight of each category of the input var + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && data->is_buf_16u ) ? -1 : labels[i]; + double s = sum[idx] + responses[i]; + int nc = counts[idx] + 1; + sum[idx] = s; + counts[idx] = nc; + } + + // calculate average response in each category + for( i = 0; i < mi; i++ ) + { + R += counts[i]; + rsum += sum[i]; + sum[i] /= MAX(counts[i],1); + sum_ptr[i] = sum + i; + } + + std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); + + // revert back to unnormalized sums + // (there should be a very little loss of accuracy) + for( i = 0; i < mi; i++ ) + sum[i] *= counts[i]; + + for( subset_i = 0; subset_i < mi-1; subset_i++ ) + { + int idx = (int)(sum_ptr[subset_i] - sum); + int ni = counts[idx]; + + if( ni ) + { + double s = sum[idx]; + lsum += s; L += ni; + rsum -= s; R -= ni; + + if( L && R ) + { + double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + if( best_val < val ) + { + best_val = val; + best_subset = subset_i; + } + } + } + } + + CvDTreeSplit* split = 0; + if( best_subset >= 0 ) + { + split = _split ? _split : data->new_split_cat( 0, -1.0f); + split->var_idx = vi; + split->quality = (float)best_val; + memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + for( i = 0; i <= best_subset; i++ ) + { + int idx = (int)(sum_ptr[i] - sum); + split->subset[idx >> 5] |= 1 << (idx & 31); + } + } + return split; +} + +CvDTreeSplit* CvDTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const float epsilon = FLT_EPSILON*2; + const char* dir = (char*)data->direction->data.ptr; + int n = node->sample_count, n1 = node->get_num_valid(vi); + cv::AutoBuffer inn_buf; + if( !_ext_buf ) + inn_buf.allocate( n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float)) ); + uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; + float* values_buf = (float*)ext_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + int i, best_i = -1, best_inversed = 0; + double best_val; + + if( !data->have_priors ) + { + int LL = 0, RL = 0, LR, RR; + int worst_val = cvFloor(node->maxlr), _best_val = worst_val; + int sum = 0, sum_abs = 0; + + for( i = 0; i < n1; i++ ) + { + int d = dir[sorted_indices[i]]; + sum += d; sum_abs += d & 1; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum) >> 1; + LR = (sum_abs - sum) >> 1; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int d = dir[sorted_indices[i]]; + + if( d < 0 ) + { + LL++; LR--; + if( LL + RR > _best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL++; RR--; + if( RL + LR > _best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + best_val = _best_val; + } + else + { + double LL = 0, RL = 0, LR, RR; + double worst_val = node->maxlr; + double sum = 0, sum_abs = 0; + const double* priors = data->priors_mult->data.db; + int* responses_buf = sample_indices_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + best_val = worst_val; + + for( i = 0; i < n1; i++ ) + { + int idx = sorted_indices[i]; + double w = priors[responses[idx]]; + int d = dir[idx]; + sum += d*w; sum_abs += (d & 1)*w; + } + + // sum_abs = R + L; sum = R - L + RR = (sum_abs + sum)*0.5; + LR = (sum_abs - sum)*0.5; + + // initially all the samples are sent to the right by the surrogate split, + // LR of them are sent to the left by primary split, and RR - to the right. + // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. + for( i = 0; i < n1 - 1; i++ ) + { + int idx = sorted_indices[i]; + double w = priors[responses[idx]]; + int d = dir[idx]; + + if( d < 0 ) + { + LL += w; LR -= w; + if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = LL + RR; + best_i = i; best_inversed = 0; + } + } + else if( d > 0 ) + { + RL += w; RR -= w; + if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) + { + best_val = RL + LR; + best_i = i; best_inversed = 1; + } + } + } + } + return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, + (values[best_i] + values[best_i+1])*0.5f, best_i, best_inversed, (float)best_val ) : 0; +} + + +CvDTreeSplit* CvDTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) +{ + const char* dir = (char*)data->direction->data.ptr; + int n = node->sample_count; + int i, mi = data->cat_count->data.i[data->get_var_type(vi)], l_win = 0; + + int base_size = (2*(mi+1)+1)*sizeof(double) + (!data->have_priors ? 2*(mi+1)*sizeof(int) : 0); + cv::AutoBuffer inn_buf(base_size); + if( !_ext_buf ) + inn_buf.allocate(base_size + n*(sizeof(int) + (data->have_priors ? sizeof(int) : 0))); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + + int* labels_buf = (int*)ext_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + // LL - number of samples that both the primary and the surrogate splits send to the left + // LR - ... primary split sends to the left and the surrogate split sends to the right + // RL - ... primary split sends to the right and the surrogate split sends to the left + // RR - ... both send to the right + CvDTreeSplit* split = data->new_split_cat( vi, 0 ); + double best_val = 0; + double* lc = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; + double* rc = lc + mi + 1; + + for( i = -1; i < mi; i++ ) + lc[i] = rc[i] = 0; + + // for each category calculate the weight of samples + // sent to the left (lc) and to the right (rc) by the primary split + if( !data->have_priors ) + { + int* _lc = (int*)rc + 1; + int* _rc = _lc + mi + 1; + + for( i = -1; i < mi; i++ ) + _lc[i] = _rc[i] = 0; + + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; + int d = dir[i]; + int sum = _lc[idx] + d; + int sum_abs = _rc[idx] + (d & 1); + _lc[idx] = sum; _rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + int sum = _lc[i]; + int sum_abs = _rc[i]; + lc[i] = (sum_abs - sum) >> 1; + rc[i] = (sum_abs + sum) >> 1; + } + } + else + { + const double* priors = data->priors_mult->data.db; + int* responses_buf = labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + + for( i = 0; i < n; i++ ) + { + int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; + double w = priors[responses[i]]; + int d = dir[i]; + double sum = lc[idx] + d*w; + double sum_abs = rc[idx] + (d & 1)*w; + lc[idx] = sum; rc[idx] = sum_abs; + } + + for( i = 0; i < mi; i++ ) + { + double sum = lc[i]; + double sum_abs = rc[i]; + lc[i] = (sum_abs - sum) * 0.5; + rc[i] = (sum_abs + sum) * 0.5; + } + } + + // 2. now form the split. + // in each category send all the samples to the same direction as majority + for( i = 0; i < mi; i++ ) + { + double lval = lc[i], rval = rc[i]; + if( lval > rval ) + { + split->subset[i >> 5] |= 1 << (i & 31); + best_val += lval; + l_win++; + } + else + best_val += rval; + } + + split->quality = (float)best_val; + if( split->quality <= node->maxlr || l_win == 0 || l_win == mi ) + cvSetRemoveByPtr( data->split_heap, split ), split = 0; + + return split; +} + + +void CvDTree::calc_node_value( CvDTreeNode* node ) +{ + int i, j, k, n = node->sample_count, cv_n = data->params.cv_folds; + int m = data->get_num_classes(); + + int base_size = data->is_classifier ? m*cv_n*sizeof(int) : 2*cv_n*sizeof(double)+cv_n*sizeof(int); + int ext_size = n*(sizeof(int) + (data->is_classifier ? sizeof(int) : sizeof(int)+sizeof(float))); + cv::AutoBuffer inn_buf(base_size + ext_size); + uchar* base_buf = (uchar*)inn_buf; + uchar* ext_buf = base_buf + base_size; + + int* cv_labels_buf = (int*)ext_buf; + const int* cv_labels = data->get_cv_labels(node, cv_labels_buf); + + if( data->is_classifier ) + { + // in case of classification tree: + // * node value is the label of the class that has the largest weight in the node. + // * node risk is the weighted number of misclassified samples, + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated as the weighted number of + // misclassified samples with cv_labels(*)==j. + + // compute the number of instances of each class + int* cls_count = data->counts->data.i; + int* responses_buf = cv_labels_buf + n; + const int* responses = data->get_class_labels(node, responses_buf); + int* cv_cls_count = (int*)base_buf; + double max_val = -1, total_weight = 0; + int max_k = -1; + double* priors = data->priors_mult->data.db; + + for( k = 0; k < m; k++ ) + cls_count[k] = 0; + + if( cv_n == 0 ) + { + for( i = 0; i < n; i++ ) + cls_count[responses[i]]++; + } + else + { + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cv_cls_count[j*m + k] = 0; + + for( i = 0; i < n; i++ ) + { + j = cv_labels[i]; k = responses[i]; + cv_cls_count[j*m + k]++; + } + + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cls_count[k] += cv_cls_count[j*m + k]; + } + + if( data->have_priors && node->parent == 0 ) + { + // compute priors_mult from priors, take the sample ratio into account. + double sum = 0; + for( k = 0; k < m; k++ ) + { + int n_k = cls_count[k]; + priors[k] = data->priors->data.db[k]*(n_k ? 1./n_k : 0.); + sum += priors[k]; + } + sum = 1./sum; + for( k = 0; k < m; k++ ) + priors[k] *= sum; + } + + for( k = 0; k < m; k++ ) + { + double val = cls_count[k]*priors[k]; + total_weight += val; + if( max_val < val ) + { + max_val = val; + max_k = k; + } + } + + node->class_idx = max_k; + node->value = data->cat_map->data.i[ + data->cat_ofs->data.i[data->cat_var_count] + max_k]; + node->node_risk = total_weight - max_val; + + for( j = 0; j < cv_n; j++ ) + { + double sum_k = 0, sum = 0, max_val_k = 0; + max_val = -1; max_k = -1; + + for( k = 0; k < m; k++ ) + { + double w = priors[k]; + double val_k = cv_cls_count[j*m + k]*w; + double val = cls_count[k]*w - val_k; + sum_k += val_k; + sum += val; + if( max_val < val ) + { + max_val = val; + max_val_k = val_k; + max_k = k; + } + } + + node->cv_Tn[j] = INT_MAX; + node->cv_node_risk[j] = sum - max_val; + node->cv_node_error[j] = sum_k - max_val_k; + } + } + else + { + // in case of regression tree: + // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, + // n is the number of samples in the node. + // * node risk is the sum of squared errors: sum_i((Y_i - )^2) + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated + // using samples with cv_labels(*)==j as the test subset: + // error_j = sum_(i,cv_labels(i)==j)((Y_i - )^2), + // where node_value_j is the node value calculated + // as described in the previous bullet, and summation is done + // over the samples with cv_labels(*)==j. + + double sum = 0, sum2 = 0; + float* values_buf = (float*)(cv_labels_buf + n); + int* sample_indices_buf = (int*)(values_buf + n); + const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); + double *cv_sum = 0, *cv_sum2 = 0; + int* cv_count = 0; + + if( cv_n == 0 ) + { + for( i = 0; i < n; i++ ) + { + double t = values[i]; + sum += t; + sum2 += t*t; + } + } + else + { + cv_sum = (double*)base_buf; + cv_sum2 = cv_sum + cv_n; + cv_count = (int*)(cv_sum2 + cv_n); + + for( j = 0; j < cv_n; j++ ) + { + cv_sum[j] = cv_sum2[j] = 0.; + cv_count[j] = 0; + } + + for( i = 0; i < n; i++ ) + { + j = cv_labels[i]; + double t = values[i]; + double s = cv_sum[j] + t; + double s2 = cv_sum2[j] + t*t; + int nc = cv_count[j] + 1; + cv_sum[j] = s; + cv_sum2[j] = s2; + cv_count[j] = nc; + } + + for( j = 0; j < cv_n; j++ ) + { + sum += cv_sum[j]; + sum2 += cv_sum2[j]; + } + } + + node->node_risk = sum2 - (sum/n)*sum; + node->value = sum/n; + + for( j = 0; j < cv_n; j++ ) + { + double s = cv_sum[j], si = sum - s; + double s2 = cv_sum2[j], s2i = sum2 - s2; + int c = cv_count[j], ci = n - c; + double r = si/MAX(ci,1); + node->cv_node_risk[j] = s2i - r*r*ci; + node->cv_node_error[j] = s2 - 2*r*s + c*r*r; + node->cv_Tn[j] = INT_MAX; + } + } +} + + +void CvDTree::complete_node_dir( CvDTreeNode* node ) +{ + int vi, i, n = node->sample_count, nl, nr, d0 = 0, d1 = -1; + int nz = n - node->get_num_valid(node->split->var_idx); + char* dir = (char*)data->direction->data.ptr; + + // try to complete direction using surrogate splits + if( nz && data->params.use_surrogates ) + { + cv::AutoBuffer inn_buf(n*(2*sizeof(int)+sizeof(float))); + CvDTreeSplit* split = node->split->next; + for( ; split != 0 && nz; split = split->next ) + { + int inversed_mask = split->inversed ? -1 : 0; + vi = split->var_idx; + + if( data->get_var_type(vi) >= 0 ) // split on categorical var + { + int* labels_buf = (int*)(uchar*)inn_buf; + const int* labels = data->get_cat_var_data(node, vi, labels_buf); + const int* subset = split->subset; + + for( i = 0; i < n; i++ ) + { + int idx = labels[i]; + if( !dir[i] && ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) )) + + { + int d = CV_DTREE_CAT_DIR(idx,subset); + dir[i] = (char)((d ^ inversed_mask) - inversed_mask); + if( --nz ) + break; + } + } + } + else // split on ordered var + { + float* values_buf = (float*)(uchar*)inn_buf; + int* sorted_indices_buf = (int*)(values_buf + n); + int* sample_indices_buf = sorted_indices_buf + n; + const float* values = 0; + const int* sorted_indices = 0; + data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); + int split_point = split->ord.split_point; + int n1 = node->get_num_valid(vi); + + assert( 0 <= split_point && split_point < n-1 ); + + for( i = 0; i < n1; i++ ) + { + int idx = sorted_indices[i]; + if( !dir[idx] ) + { + int d = i <= split_point ? -1 : 1; + dir[idx] = (char)((d ^ inversed_mask) - inversed_mask); + if( --nz ) + break; + } + } + } + } + } + + // find the default direction for the rest + if( nz ) + { + for( i = nr = 0; i < n; i++ ) + nr += dir[i] > 0; + nl = n - nr - nz; + d0 = nl > nr ? -1 : nr > nl; + } + + // make sure that every sample is directed either to the left or to the right + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + if( !d ) + { + d = d0; + if( !d ) + d = d1, d1 = -d1; + } + d = d > 0; + dir[i] = (char)d; // remap (-1,1) to (0,1) + } +} + + +void CvDTree::split_node_data( CvDTreeNode* node ) +{ + int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; + char* dir = (char*)data->direction->data.ptr; + CvDTreeNode *left = 0, *right = 0; + int* new_idx = data->split_buf->data.i; + int new_buf_idx = data->get_child_buf_idx( node ); + int work_var_count = data->get_work_var_count(); + CvMat* buf = data->buf; + size_t length_buf_row = data->get_length_subbuf(); + cv::AutoBuffer inn_buf(n*(3*sizeof(int) + sizeof(float))); + int* temp_buf = (int*)(uchar*)inn_buf; + + complete_node_dir(node); + + for( i = nl = nr = 0; i < n; i++ ) + { + int d = dir[i]; + // initialize new indices for splitting ordered variables + new_idx[i] = (nl & (d-1)) | (nr & -d); // d ? ri : li + nr += d; + nl += d^1; + } + + bool split_input_data; + node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); + node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); + + split_input_data = node->depth + 1 < data->params.max_depth && + (node->left->sample_count > data->params.min_sample_count || + node->right->sample_count > data->params.min_sample_count); + + // split ordered variables, keep both halves sorted. + for( vi = 0; vi < data->var_count; vi++ ) + { + int ci = data->get_var_type(vi); + + if( ci >= 0 || !split_input_data ) + continue; + + int n1 = node->get_num_valid(vi); + float* src_val_buf = (float*)(uchar*)(temp_buf + n); + int* src_sorted_idx_buf = (int*)(src_val_buf + n); + int* src_sample_idx_buf = src_sorted_idx_buf + n; + const float* src_val = 0; + const int* src_sorted_idx = 0; + data->get_ord_var_data(node, vi, src_val_buf, src_sorted_idx_buf, &src_val, &src_sorted_idx, src_sample_idx_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = src_sorted_idx[i]; + + if (data->is_buf_16u) + { + unsigned short *ldst, *rdst, *ldst0, *rdst0; + //unsigned short tl, tr; + ldst0 = ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + + vi*scount + left->offset); + rdst0 = rdst = (unsigned short*)(ldst + nl); + + // split sorted + for( i = 0; i < n1; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + + left->set_num_valid(vi, (int)(ldst - ldst0)); + right->set_num_valid(vi, (int)(rdst - rdst0)); + + // split missing + for( ; i < n; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + } + else + { + int *ldst0, *ldst, *rdst0, *rdst; + ldst0 = ldst = buf->data.i + left->buf_idx*length_buf_row + + vi*scount + left->offset; + rdst0 = rdst = buf->data.i + right->buf_idx*length_buf_row + + vi*scount + right->offset; + + // split sorted + for( i = 0; i < n1; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + + left->set_num_valid(vi, (int)(ldst - ldst0)); + right->set_num_valid(vi, (int)(rdst - rdst0)); + + // split missing + for( ; i < n; i++ ) + { + int idx = temp_buf[i]; + int d = dir[idx]; + idx = new_idx[idx]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + } + + // split categorical vars, responses and cv_labels using new_idx relocation table + for( vi = 0; vi < work_var_count; vi++ ) + { + int ci = data->get_var_type(vi); + int n1 = node->get_num_valid(vi), nr1 = 0; + + if( ci < 0 || (vi < data->var_count && !split_input_data) ) + continue; + + int *src_lbls_buf = temp_buf + n; + const int* src_lbls = data->get_cat_var_data(node, vi, src_lbls_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = src_lbls[i]; + + if (data->is_buf_16u) + { + unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + + vi*scount + left->offset); + unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + + vi*scount + right->offset); + + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = (unsigned short)idx; + rdst++; + nr1 += (idx != 65535 )&d; + } + else + { + *ldst = (unsigned short)idx; + ldst++; + } + } + + if( vi < data->var_count ) + { + left->set_num_valid(vi, n1 - nr1); + right->set_num_valid(vi, nr1); + } + } + else + { + int *ldst = buf->data.i + left->buf_idx*length_buf_row + + vi*scount + left->offset; + int *rdst = buf->data.i + right->buf_idx*length_buf_row + + vi*scount + right->offset; + + for( i = 0; i < n; i++ ) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + nr1 += (idx >= 0)&d; + } + else + { + *ldst = idx; + ldst++; + } + + } + + if( vi < data->var_count ) + { + left->set_num_valid(vi, n1 - nr1); + right->set_num_valid(vi, nr1); + } + } + } + + + // split sample indices + int *sample_idx_src_buf = temp_buf + n; + const int* sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); + + for(i = 0; i < n; i++) + temp_buf[i] = sample_idx_src[i]; + + int pos = data->get_work_var_count(); + if (data->is_buf_16u) + { + unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + + pos*scount + left->offset); + unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + + pos*scount + right->offset); + for (i = 0; i < n; i++) + { + int d = dir[i]; + unsigned short idx = (unsigned short)temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + else + { + int* ldst = buf->data.i + left->buf_idx*length_buf_row + + pos*scount + left->offset; + int* rdst = buf->data.i + right->buf_idx*length_buf_row + + pos*scount + right->offset; + for (i = 0; i < n; i++) + { + int d = dir[i]; + int idx = temp_buf[i]; + if (d) + { + *rdst = idx; + rdst++; + } + else + { + *ldst = idx; + ldst++; + } + } + } + + // deallocate the parent node data that is not needed anymore + data->free_node_data(node); +} + +float CvDTree::calc_error( CvMLData* _data, int type, std::vector *resp ) +{ + float err = 0; + const CvMat* values = _data->get_values(); + const CvMat* response = _data->get_responses(); + const CvMat* missing = _data->get_missing(); + const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); + const CvMat* var_types = _data->get_var_types(); + int* sidx = sample_idx ? sample_idx->data.i : 0; + int r_step = CV_IS_MAT_CONT(response->type) ? + 1 : response->step / CV_ELEM_SIZE(response->type); + bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; + int sample_count = sample_idx ? sample_idx->cols : 0; + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; + float* pred_resp = 0; + if( resp && (sample_count > 0) ) + { + resp->resize( sample_count ); + pred_resp = &((*resp)[0]); + } + + if ( is_classifier ) + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 )->value; + if( pred_resp ) + pred_resp[i] = r; + int d = fabs((double)r - response->data.fl[(size_t)si*r_step]) <= FLT_EPSILON ? 0 : 1; + err += d; + } + err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + } + else + { + for( int i = 0; i < sample_count; i++ ) + { + CvMat sample, miss; + int si = sidx ? sidx[i] : i; + cvGetRow( values, &sample, si ); + if( missing ) + cvGetRow( missing, &miss, si ); + float r = (float)predict( &sample, missing ? &miss : 0 )->value; + if( pred_resp ) + pred_resp[i] = r; + float d = r - response->data.fl[(size_t)si*r_step]; + err += d*d; + } + err = sample_count ? err / (float)sample_count : -FLT_MAX; + } + return err; +} + +void CvDTree::prune_cv() +{ + CvMat* ab = 0; + CvMat* temp = 0; + CvMat* err_jk = 0; + + // 1. build tree sequence for each cv fold, calculate error_{Tj,beta_k}. + // 2. choose the best tree index (if need, apply 1SE rule). + // 3. store the best index and cut the branches. + + CV_FUNCNAME( "CvDTree::prune_cv" ); + + __BEGIN__; + + int ti, j, tree_count = 0, cv_n = data->params.cv_folds, n = root->sample_count; + // currently, 1SE for regression is not implemented + bool use_1se = data->params.use_1se_rule != 0 && data->is_classifier; + double* err; + double min_err = 0, min_err_se = 0; + int min_idx = -1; + + CV_CALL( ab = cvCreateMat( 1, 256, CV_64F )); + + // build the main tree sequence, calculate alpha's + for(;;tree_count++) + { + double min_alpha = update_tree_rnc(tree_count, -1); + if( cut_tree(tree_count, -1, min_alpha) ) + break; + + if( ab->cols <= tree_count ) + { + CV_CALL( temp = cvCreateMat( 1, ab->cols*3/2, CV_64F )); + for( ti = 0; ti < ab->cols; ti++ ) + temp->data.db[ti] = ab->data.db[ti]; + cvReleaseMat( &ab ); + ab = temp; + temp = 0; + } + + ab->data.db[tree_count] = min_alpha; + } + + ab->data.db[0] = 0.; + + if( tree_count > 0 ) + { + for( ti = 1; ti < tree_count-1; ti++ ) + ab->data.db[ti] = sqrt(ab->data.db[ti]*ab->data.db[ti+1]); + ab->data.db[tree_count-1] = DBL_MAX*0.5; + + CV_CALL( err_jk = cvCreateMat( cv_n, tree_count, CV_64F )); + err = err_jk->data.db; + + for( j = 0; j < cv_n; j++ ) + { + int tj = 0, tk = 0; + for( ; tk < tree_count; tj++ ) + { + double min_alpha = update_tree_rnc(tj, j); + if( cut_tree(tj, j, min_alpha) ) + min_alpha = DBL_MAX; + + for( ; tk < tree_count; tk++ ) + { + if( ab->data.db[tk] > min_alpha ) + break; + err[j*tree_count + tk] = root->tree_error; + } + } + } + + for( ti = 0; ti < tree_count; ti++ ) + { + double sum_err = 0; + for( j = 0; j < cv_n; j++ ) + sum_err += err[j*tree_count + ti]; + if( ti == 0 || sum_err < min_err ) + { + min_err = sum_err; + min_idx = ti; + if( use_1se ) + min_err_se = sqrt( sum_err*(n - sum_err) ); + } + else if( sum_err < min_err + min_err_se ) + min_idx = ti; + } + } + + pruned_tree_idx = min_idx; + free_prune_data(data->params.truncate_pruned_tree != 0); + + __END__; + + cvReleaseMat( &err_jk ); + cvReleaseMat( &ab ); + cvReleaseMat( &temp ); +} + + +double CvDTree::update_tree_rnc( int T, int fold ) +{ + CvDTreeNode* node = root; + double min_alpha = DBL_MAX; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; + if( t <= T || !node->left ) + { + node->complexity = 1; + node->tree_risk = node->node_risk; + node->tree_error = 0.; + if( fold >= 0 ) + { + node->tree_risk = node->cv_node_risk[fold]; + node->tree_error = node->cv_node_error[fold]; + } + break; + } + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + { + parent->complexity += node->complexity; + parent->tree_risk += node->tree_risk; + parent->tree_error += node->tree_error; + + parent->alpha = ((fold >= 0 ? parent->cv_node_risk[fold] : parent->node_risk) + - parent->tree_risk)/(parent->complexity - 1); + min_alpha = MIN( min_alpha, parent->alpha ); + } + + if( !parent ) + break; + + parent->complexity = node->complexity; + parent->tree_risk = node->tree_risk; + parent->tree_error = node->tree_error; + node = parent->right; + } + + return min_alpha; +} + + +int CvDTree::cut_tree( int T, int fold, double min_alpha ) +{ + CvDTreeNode* node = root; + if( !node->left ) + return 1; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; + if( t <= T || !node->left ) + break; + if( node->alpha <= min_alpha + FLT_EPSILON ) + { + if( fold >= 0 ) + node->cv_Tn[fold] = T; + else + node->Tn = T; + if( node == root ) + return 1; + break; + } + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + return 0; +} + + +void CvDTree::free_prune_data(bool _cut_tree) +{ + CvDTreeNode* node = root; + + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + // do not call cvSetRemoveByPtr( cv_heap, node->cv_Tn ) + // as we will clear the whole cross-validation heap at the end + node->cv_Tn = 0; + node->cv_node_error = node->cv_node_risk = 0; + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + { + if( _cut_tree && parent->Tn <= pruned_tree_idx ) + { + data->free_node( parent->left ); + data->free_node( parent->right ); + parent->left = parent->right = 0; + } + } + + if( !parent ) + break; + + node = parent->right; + } + + if( data->cv_heap ) + cvClearSet( data->cv_heap ); +} + + +void CvDTree::free_tree() +{ + if( root && data && data->shared ) + { + pruned_tree_idx = INT_MIN; + free_prune_data(true); + data->free_node(root); + root = 0; + } +} + +CvDTreeNode* CvDTree::predict( const CvMat* _sample, + const CvMat* _missing, bool preprocessed_input ) const +{ + cv::AutoBuffer catbuf; + + int i, mstep = 0; + const uchar* m = 0; + CvDTreeNode* node = root; + + if( !node ) + CV_Error( CV_StsError, "The tree has not been trained yet" ); + + if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || + (_sample->cols != 1 && _sample->rows != 1) || + (_sample->cols + _sample->rows - 1 != data->var_all && !preprocessed_input) || + (_sample->cols + _sample->rows - 1 != data->var_count && preprocessed_input) ) + CV_Error( CV_StsBadArg, + "the input sample must be 1d floating-point vector with the same " + "number of elements as the total number of variables used for training" ); + + const float* sample = _sample->data.fl; + int step = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(sample[0]); + + if( data->cat_count && !preprocessed_input ) // cache for categorical variables + { + int n = data->cat_count->cols; + catbuf.allocate(n); + for( i = 0; i < n; i++ ) + catbuf[i] = -1; + } + + if( _missing ) + { + if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || + !CV_ARE_SIZES_EQ(_missing, _sample) ) + CV_Error( CV_StsBadArg, + "the missing data mask must be 8-bit vector of the same size as input sample" ); + m = _missing->data.ptr; + mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step/sizeof(m[0]); + } + + const int* vtype = data->var_type->data.i; + const int* vidx = data->var_idx && !preprocessed_input ? data->var_idx->data.i : 0; + const int* cmap = data->cat_map ? data->cat_map->data.i : 0; + const int* cofs = data->cat_ofs ? data->cat_ofs->data.i : 0; + + while( node->Tn > pruned_tree_idx && node->left ) + { + CvDTreeSplit* split = node->split; + int dir = 0; + for( ; !dir && split != 0; split = split->next ) + { + int vi = split->var_idx; + int ci = vtype[vi]; + i = vidx ? vidx[vi] : vi; + float val = sample[(size_t)i*step]; + if( m && m[(size_t)i*mstep] ) + continue; + if( ci < 0 ) // ordered + dir = val <= split->ord.c ? -1 : 1; + else // categorical + { + int c; + if( preprocessed_input ) + c = cvRound(val); + else + { + c = catbuf[ci]; + if( c < 0 ) + { + int a = c = cofs[ci]; + int b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1]; + + int ival = cvRound(val); + if( ival != val ) + CV_Error( CV_StsBadArg, + "one of input categorical variable is not an integer" ); + + int sh = 0; + while( a < b ) + { + sh++; + c = (a + b) >> 1; + if( ival < cmap[c] ) + b = c; + else if( ival > cmap[c] ) + a = c+1; + else + break; + } + + if( c < 0 || ival != cmap[c] ) + continue; + + catbuf[ci] = c -= cofs[ci]; + } + } + c = ( (c == 65535) && data->is_buf_16u ) ? -1 : c; + dir = CV_DTREE_CAT_DIR(c, split->subset); + } + + if( split->inversed ) + dir = -dir; + } + + if( !dir ) + { + double diff = node->right->sample_count - node->left->sample_count; + dir = diff < 0 ? -1 : 1; + } + node = dir < 0 ? node->left : node->right; + } + + return node; +} + + +CvDTreeNode* CvDTree::predict( const Mat& _sample, const Mat& _missing, bool preprocessed_input ) const +{ + CvMat sample = _sample, mmask = _missing; + return predict(&sample, mmask.data.ptr ? &mmask : 0, preprocessed_input); +} + + +const CvMat* CvDTree::get_var_importance() +{ + if( !var_importance ) + { + CvDTreeNode* node = root; + double* importance; + if( !node ) + return 0; + var_importance = cvCreateMat( 1, data->var_count, CV_64F ); + cvZero( var_importance ); + importance = var_importance->data.db; + + for(;;) + { + CvDTreeNode* parent; + for( ;; node = node->left ) + { + CvDTreeSplit* split = node->split; + + if( !node->left || node->Tn <= pruned_tree_idx ) + break; + + for( ; split != 0; split = split->next ) + importance[split->var_idx] += split->quality; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); + } + + return var_importance; +} + + +void CvDTree::write_split( CvFileStorage* fs, CvDTreeSplit* split ) const +{ + int ci; + + cvStartWriteStruct( fs, 0, CV_NODE_MAP + CV_NODE_FLOW ); + cvWriteInt( fs, "var", split->var_idx ); + cvWriteReal( fs, "quality", split->quality ); + + ci = data->get_var_type(split->var_idx); + if( ci >= 0 ) // split on a categorical var + { + int i, n = data->cat_count->data.i[ci], to_right = 0, default_dir; + for( i = 0; i < n; i++ ) + to_right += CV_DTREE_CAT_DIR(i,split->subset) > 0; + + // ad-hoc rule when to use inverse categorical split notation + // to achieve more compact and clear representation + default_dir = to_right <= 1 || to_right <= MIN(3, n/2) || to_right <= n/3 ? -1 : 1; + + cvStartWriteStruct( fs, default_dir*(split->inversed ? -1 : 1) > 0 ? + "in" : "not_in", CV_NODE_SEQ+CV_NODE_FLOW ); + + for( i = 0; i < n; i++ ) + { + int dir = CV_DTREE_CAT_DIR(i,split->subset); + if( dir*default_dir < 0 ) + cvWriteInt( fs, 0, i ); + } + cvEndWriteStruct( fs ); + } + else + cvWriteReal( fs, !split->inversed ? "le" : "gt", split->ord.c ); + + cvEndWriteStruct( fs ); +} + + +void CvDTree::write_node( CvFileStorage* fs, CvDTreeNode* node ) const +{ + CvDTreeSplit* split; + + cvStartWriteStruct( fs, 0, CV_NODE_MAP ); + + cvWriteInt( fs, "depth", node->depth ); + cvWriteInt( fs, "sample_count", node->sample_count ); + cvWriteReal( fs, "value", node->value ); + + if( data->is_classifier ) + cvWriteInt( fs, "norm_class_idx", node->class_idx ); + + cvWriteInt( fs, "Tn", node->Tn ); + cvWriteInt( fs, "complexity", node->complexity ); + cvWriteReal( fs, "alpha", node->alpha ); + cvWriteReal( fs, "node_risk", node->node_risk ); + cvWriteReal( fs, "tree_risk", node->tree_risk ); + cvWriteReal( fs, "tree_error", node->tree_error ); + + if( node->left ) + { + cvStartWriteStruct( fs, "splits", CV_NODE_SEQ ); + + for( split = node->split; split != 0; split = split->next ) + write_split( fs, split ); + + cvEndWriteStruct( fs ); + } + + cvEndWriteStruct( fs ); +} + + +void CvDTree::write_tree_nodes( CvFileStorage* fs ) const +{ + //CV_FUNCNAME( "CvDTree::write_tree_nodes" ); + + __BEGIN__; + + CvDTreeNode* node = root; + + // traverse the tree and save all the nodes in depth-first order + for(;;) + { + CvDTreeNode* parent; + for(;;) + { + write_node( fs, node ); + if( !node->left ) + break; + node = node->left; + } + + for( parent = node->parent; parent && parent->right == node; + node = parent, parent = parent->parent ) + ; + + if( !parent ) + break; + + node = parent->right; + } + + __END__; +} + + +void CvDTree::write( CvFileStorage* fs, const char* name ) const +{ + //CV_FUNCNAME( "CvDTree::write" ); + + __BEGIN__; + + cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_TREE ); + + //get_var_importance(); + data->write_params( fs ); + //if( var_importance ) + //cvWrite( fs, "var_importance", var_importance ); + write( fs ); + + cvEndWriteStruct( fs ); + + __END__; +} + + +void CvDTree::write( CvFileStorage* fs ) const +{ + //CV_FUNCNAME( "CvDTree::write" ); + + __BEGIN__; + + cvWriteInt( fs, "best_tree_idx", pruned_tree_idx ); + + cvStartWriteStruct( fs, "nodes", CV_NODE_SEQ ); + write_tree_nodes( fs ); + cvEndWriteStruct( fs ); + + __END__; +} + + +CvDTreeSplit* CvDTree::read_split( CvFileStorage* fs, CvFileNode* fnode ) +{ + CvDTreeSplit* split = 0; + + CV_FUNCNAME( "CvDTree::read_split" ); + + __BEGIN__; + + int vi, ci; + + if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) + CV_ERROR( CV_StsParseError, "some of the splits are not stored properly" ); + + vi = cvReadIntByName( fs, fnode, "var", -1 ); + if( (unsigned)vi >= (unsigned)data->var_count ) + CV_ERROR( CV_StsOutOfRange, "Split variable index is out of range" ); + + ci = data->get_var_type(vi); + if( ci >= 0 ) // split on categorical var + { + int i, n = data->cat_count->data.i[ci], inversed = 0, val; + CvSeqReader reader; + CvFileNode* inseq; + split = data->new_split_cat( vi, 0 ); + inseq = cvGetFileNodeByName( fs, fnode, "in" ); + if( !inseq ) + { + inseq = cvGetFileNodeByName( fs, fnode, "not_in" ); + inversed = 1; + } + if( !inseq || + (CV_NODE_TYPE(inseq->tag) != CV_NODE_SEQ && CV_NODE_TYPE(inseq->tag) != CV_NODE_INT)) + CV_ERROR( CV_StsParseError, + "Either 'in' or 'not_in' tags should be inside a categorical split data" ); + + if( CV_NODE_TYPE(inseq->tag) == CV_NODE_INT ) + { + val = inseq->data.i; + if( (unsigned)val >= (unsigned)n ) + CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); + + split->subset[val >> 5] |= 1 << (val & 31); + } + else + { + cvStartReadSeq( inseq->data.seq, &reader ); + + for( i = 0; i < reader.seq->total; i++ ) + { + CvFileNode* inode = (CvFileNode*)reader.ptr; + val = inode->data.i; + if( CV_NODE_TYPE(inode->tag) != CV_NODE_INT || (unsigned)val >= (unsigned)n ) + CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); + + split->subset[val >> 5] |= 1 << (val & 31); + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + + // for categorical splits we do not use inversed splits, + // instead we inverse the variable set in the split + if( inversed ) + for( i = 0; i < (n + 31) >> 5; i++ ) + split->subset[i] ^= -1; + } + else + { + CvFileNode* cmp_node; + split = data->new_split_ord( vi, 0, 0, 0, 0 ); + + cmp_node = cvGetFileNodeByName( fs, fnode, "le" ); + if( !cmp_node ) + { + cmp_node = cvGetFileNodeByName( fs, fnode, "gt" ); + split->inversed = 1; + } + + split->ord.c = (float)cvReadReal( cmp_node ); + } + + split->quality = (float)cvReadRealByName( fs, fnode, "quality" ); + + __END__; + + return split; +} + + +CvDTreeNode* CvDTree::read_node( CvFileStorage* fs, CvFileNode* fnode, CvDTreeNode* parent ) +{ + CvDTreeNode* node = 0; + + CV_FUNCNAME( "CvDTree::read_node" ); + + __BEGIN__; + + CvFileNode* splits; + int i, depth; + + if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) + CV_ERROR( CV_StsParseError, "some of the tree elements are not stored properly" ); + + CV_CALL( node = data->new_node( parent, 0, 0, 0 )); + depth = cvReadIntByName( fs, fnode, "depth", -1 ); + if( depth != node->depth ) + CV_ERROR( CV_StsParseError, "incorrect node depth" ); + + node->sample_count = cvReadIntByName( fs, fnode, "sample_count" ); + node->value = cvReadRealByName( fs, fnode, "value" ); + if( data->is_classifier ) + node->class_idx = cvReadIntByName( fs, fnode, "norm_class_idx" ); + + node->Tn = cvReadIntByName( fs, fnode, "Tn" ); + node->complexity = cvReadIntByName( fs, fnode, "complexity" ); + node->alpha = cvReadRealByName( fs, fnode, "alpha" ); + node->node_risk = cvReadRealByName( fs, fnode, "node_risk" ); + node->tree_risk = cvReadRealByName( fs, fnode, "tree_risk" ); + node->tree_error = cvReadRealByName( fs, fnode, "tree_error" ); + + splits = cvGetFileNodeByName( fs, fnode, "splits" ); + if( splits ) + { + CvSeqReader reader; + CvDTreeSplit* last_split = 0; + + if( CV_NODE_TYPE(splits->tag) != CV_NODE_SEQ ) + CV_ERROR( CV_StsParseError, "splits tag must stored as a sequence" ); + + cvStartReadSeq( splits->data.seq, &reader ); + for( i = 0; i < reader.seq->total; i++ ) + { + CvDTreeSplit* split; + CV_CALL( split = read_split( fs, (CvFileNode*)reader.ptr )); + if( !last_split ) + node->split = last_split = split; + else + last_split = last_split->next = split; + + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + } + + __END__; + + return node; +} + + +void CvDTree::read_tree_nodes( CvFileStorage* fs, CvFileNode* fnode ) +{ + CV_FUNCNAME( "CvDTree::read_tree_nodes" ); + + __BEGIN__; + + CvSeqReader reader; + CvDTreeNode _root; + CvDTreeNode* parent = &_root; + int i; + parent->left = parent->right = parent->parent = 0; + + cvStartReadSeq( fnode->data.seq, &reader ); + + for( i = 0; i < reader.seq->total; i++ ) + { + CvDTreeNode* node; + + CV_CALL( node = read_node( fs, (CvFileNode*)reader.ptr, parent != &_root ? parent : 0 )); + if( !parent->left ) + parent->left = node; + else + parent->right = node; + if( node->split ) + parent = node; + else + { + while( parent && parent->right ) + parent = parent->parent; + } + + CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + } + + root = _root.left; + + __END__; +} + + +void CvDTree::read( CvFileStorage* fs, CvFileNode* fnode ) +{ + CvDTreeTrainData* _data = new CvDTreeTrainData(); + _data->read_params( fs, fnode ); + + read( fs, fnode, _data ); + get_var_importance(); +} + + +// a special entry point for reading weak decision trees from the tree ensembles +void CvDTree::read( CvFileStorage* fs, CvFileNode* node, CvDTreeTrainData* _data ) +{ + CV_FUNCNAME( "CvDTree::read" ); + + __BEGIN__; + + CvFileNode* tree_nodes; + + clear(); + data = _data; + + tree_nodes = cvGetFileNodeByName( fs, node, "nodes" ); + if( !tree_nodes || CV_NODE_TYPE(tree_nodes->tag) != CV_NODE_SEQ ) + CV_ERROR( CV_StsParseError, "nodes tag is missing" ); + + pruned_tree_idx = cvReadIntByName( fs, node, "best_tree_idx", -1 ); + read_tree_nodes( fs, tree_nodes ); + + __END__; +} + +Mat CvDTree::getVarImportance() +{ + return cvarrToMat(get_var_importance()); +} + +/* End of file. */ diff --git a/apps/traincascade/traincascade.cpp b/apps/traincascade/traincascade.cpp index e6e16ba896..d1c3e4e87a 100644 --- a/apps/traincascade/traincascade.cpp +++ b/apps/traincascade/traincascade.cpp @@ -1,6 +1,4 @@ #include "opencv2/core.hpp" - -#include "cv.h" #include "cascadeclassifier.h" using namespace std; @@ -13,6 +11,7 @@ int main( int argc, char* argv[] ) int numPos = 2000; int numNeg = 1000; int numStages = 20; + int numThreads = getNumThreads(); int precalcValBufSize = 256, precalcIdxBufSize = 256; bool baseFormatSave = false; @@ -36,6 +35,7 @@ int main( int argc, char* argv[] ) cout << " [-precalcValBufSize ]" << endl; cout << " [-precalcIdxBufSize ]" << endl; cout << " [-baseFormatSave]" << endl; + cout << " [-numThreads ]" << endl; cascadeParams.printDefaults(); stageParams.printDefaults(); for( int fi = 0; fi < fc; fi++ ) @@ -82,6 +82,10 @@ int main( int argc, char* argv[] ) { baseFormatSave = true; } + else if( !strcmp( argv[i], "-numThreads" ) ) + { + numThreads = atoi(argv[++i]); + } else if ( cascadeParams.scanAttr( argv[i], argv[i+1] ) ) { i++; } else if ( stageParams.scanAttr( argv[i], argv[i+1] ) ) { i++; } else if ( !set ) @@ -98,6 +102,7 @@ int main( int argc, char* argv[] ) } } + setNumThreads( numThreads ); classifier.train( cascadeDirName, vecName, bgName, diff --git a/apps/traincascade/traincascade_features.h b/apps/traincascade/traincascade_features.h index dfba7a3d43..c8f024b507 100644 --- a/apps/traincascade/traincascade_features.h +++ b/apps/traincascade/traincascade_features.h @@ -2,9 +2,6 @@ #define _OPENCV_FEATURES_H_ #include "imagestorage.h" -#include "cxcore.h" -#include "cv.h" -#include "ml.h" #include #define FEATURES "features" diff --git a/cmake/OpenCVConfig.cmake b/cmake/OpenCVConfig.cmake index 2d80f765b5..896a1901c1 100644 --- a/cmake/OpenCVConfig.cmake +++ b/cmake/OpenCVConfig.cmake @@ -11,7 +11,7 @@ # # Or you can search for specific OpenCV modules: # -# FIND_PACKAGE(OpenCV REQUIRED core highgui) +# FIND_PACKAGE(OpenCV REQUIRED core imgcodecs) # # If the module is found then OPENCV__FOUND is set to TRUE. # diff --git a/cmake/OpenCVDetectAndroidSDK.cmake b/cmake/OpenCVDetectAndroidSDK.cmake index 90e11761e7..d97e9ec74f 100644 --- a/cmake/OpenCVDetectAndroidSDK.cmake +++ b/cmake/OpenCVDetectAndroidSDK.cmake @@ -280,9 +280,6 @@ macro(add_android_project target path) string(REGEX REPLACE "LOCAL_MODULE[ ]*:=[ ]*([a-zA-Z_][a-zA-Z_0-9]*)[ ]*" "\\1" JNI_LIB_NAME "${JNI_LIB_NAME}") if(JNI_LIB_NAME) - ocv_include_modules_recurse(${android_proj_NATIVE_DEPS}) - ocv_include_directories("${path}/jni") - if(NATIVE_APP_GLUE) include_directories(${ANDROID_NDK}/sources/android/native_app_glue) list(APPEND android_proj_jni_files ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c) @@ -291,7 +288,9 @@ macro(add_android_project target path) endif() add_library(${JNI_LIB_NAME} MODULE ${android_proj_jni_files}) - target_link_libraries(${JNI_LIB_NAME} ${OPENCV_LINKER_LIBS} ${android_proj_NATIVE_DEPS}) + ocv_target_include_modules_recurse(${JNI_LIB_NAME} ${android_proj_NATIVE_DEPS}) + ocv_target_include_directories(${JNI_LIB_NAME} "${path}/jni") + ocv_target_link_libraries(${JNI_LIB_NAME} ${OPENCV_LINKER_LIBS} ${android_proj_NATIVE_DEPS}) set_target_properties(${JNI_LIB_NAME} PROPERTIES OUTPUT_NAME "${JNI_LIB_NAME}" diff --git a/cmake/OpenCVDetectPython.cmake b/cmake/OpenCVDetectPython.cmake index 95a26dbf32..91e62e38c6 100644 --- a/cmake/OpenCVDetectPython.cmake +++ b/cmake/OpenCVDetectPython.cmake @@ -1,101 +1,240 @@ -if(WIN32 AND NOT PYTHON_EXECUTABLE) - # search for executable with the same bitness as resulting binaries - # standard FindPythonInterp always prefers executable from system path - # this is really important because we are using the interpreter for numpy search and for choosing the install location - foreach(_CURRENT_VERSION ${Python_ADDITIONAL_VERSIONS} 2.7 "${MIN_VER_PYTHON}") - find_host_program(PYTHON_EXECUTABLE - NAMES python${_CURRENT_VERSION} python - PATHS - [HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] - [HKEY_CURRENT_USER\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] - NO_SYSTEM_ENVIRONMENT_PATH - ) - endforeach() -endif() -find_host_package(PythonInterp 2.7) -if(NOT PYTHONINTERP_FOUND) -find_host_package(PythonInterp "${MIN_VER_PYTHON}") +# Find specified Python version +# Arguments: +# preferred_version (value): Version to check for first +# min_version (value): Minimum supported version +# library_env (value): Name of Python library ENV variable to check +# include_dir_env (value): Name of Python include directory ENV variable to check +# found (variable): Set if interpreter found +# executable (variable): Output of executable found +# version_string (variable): Output of found version +# version_major (variable): Output of found major version +# version_minor (variable): Output of found minor version +# libs_found (variable): Set if libs found +# libs_version_string (variable): Output of found libs version +# libraries (variable): Output of found Python libraries +# library (variable): Output of found Python library +# debug_libraries (variable): Output of found Python debug libraries +# debug_library (variable): Output of found Python debug library +# include_path (variable): Output of found Python include path +# include_dir (variable): Output of found Python include dir +# include_dir2 (variable): Output of found Python include dir2 +# packages_path (variable): Output of found Python packages path +# numpy_include_dirs (variable): Output of found Python Numpy include dirs +# numpy_version (variable): Output of found Python Numpy version +function(find_python preferred_version min_version library_env include_dir_env + found executable version_string version_major version_minor + libs_found libs_version_string libraries library debug_libraries + debug_library include_path include_dir include_dir2 packages_path + numpy_include_dirs numpy_version) + + ocv_check_environment_variables(${executable}) + if(${executable}) + set(PYTHON_EXECUTABLE "${${executable}}") + endif() + + if(WIN32 AND NOT ${executable}) + # search for executable with the same bitness as resulting binaries + # standard FindPythonInterp always prefers executable from system path + # this is really important because we are using the interpreter for numpy search and for choosing the install location + foreach(_CURRENT_VERSION ${Python_ADDITIONAL_VERSIONS} "${preferred_version}" "${min_version}") + find_host_program(executable + NAMES python${_CURRENT_VERSION} python + PATHS + [HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] + [HKEY_CURRENT_USER\\\\SOFTWARE\\\\Python\\\\PythonCore\\\\${_CURRENT_VERSION}\\\\InstallPath] + NO_SYSTEM_ENVIRONMENT_PATH + ) + endforeach() + endif() + + find_host_package(PythonInterp "${preferred_version}") + if(NOT PYTHONINTERP_FOUND) + find_host_package(PythonInterp "${min_version}") + endif() + + if(PYTHONINTERP_FOUND) + # Copy outputs + set(_found ${PYTHONINTERP_FOUND}) + set(_executable ${PYTHON_EXECUTABLE}) + set(_version_string ${PYTHON_VERSION_STRING}) + set(_version_major ${PYTHON_VERSION_MAJOR}) + set(_version_minor ${PYTHON_VERSION_MINOR}) + set(_version_patch ${PYTHON_VERSION_PATCH}) + + # Clear find_host_package side effects + unset(PYTHONINTERP_FOUND) + unset(PYTHON_EXECUTABLE CACHE) + unset(PYTHON_VERSION_STRING) + unset(PYTHON_VERSION_MAJOR) + unset(PYTHON_VERSION_MINOR) + unset(PYTHON_VERSION_PATCH) + endif() + + if(_found) + set(_version_major_minor "${_version_major}.${_version_minor}") + + if(NOT ANDROID AND NOT IOS) + ocv_check_environment_variables(${library_env} ${include_dir_env}) + if(${library}) + set(PYTHON_LIBRARY "${${library_env}}") + endif() + if(${include_dir}) + set(PYTHON_INCLUDE_DIR "${${include_dir_env}}") + endif() + + # not using _version_string here, because it might not conform to the CMake version format + find_host_package(PythonLibs "${_version_major_minor}.${_version_patch}" EXACT) + + if(PYTHONLIBS_FOUND) + # Copy outputs + set(_libs_found ${PYTHONLIBS_FOUND}) + set(_libraries ${PYTHON_LIBRARIES}) + set(_include_path ${PYTHON_INCLUDE_PATH}) + set(_include_dirs ${PYTHON_INCLUDE_DIRS}) + set(_debug_libraries ${PYTHON_DEBUG_LIBRARIES}) + set(_libs_version_string ${PYTHONLIBS_VERSION_STRING}) + set(_debug_library ${PYTHON_DEBUG_LIBRARY}) + set(_library ${PYTHON_LIBRARY}) + set(_library_debug ${PYTHON_LIBRARY_DEBUG}) + set(_library_release ${PYTHON_LIBRARY_RELEASE}) + set(_include_dir ${PYTHON_INCLUDE_DIR}) + set(_include_dir2 ${PYTHON_INCLUDE_DIR2}) + + # Clear find_host_package side effects + unset(PYTHONLIBS_FOUND) + unset(PYTHON_LIBRARIES) + unset(PYTHON_INCLUDE_PATH) + unset(PYTHON_INCLUDE_DIRS) + unset(PYTHON_DEBUG_LIBRARIES) + unset(PYTHONLIBS_VERSION_STRING) + unset(PYTHON_DEBUG_LIBRARY CACHE) + unset(PYTHON_LIBRARY) + unset(PYTHON_LIBRARY_DEBUG) + unset(PYTHON_LIBRARY_RELEASE) + unset(PYTHON_LIBRARY CACHE) + unset(PYTHON_LIBRARY_DEBUG CACHE) + unset(PYTHON_LIBRARY_RELEASE CACHE) + unset(PYTHON_INCLUDE_DIR CACHE) + unset(PYTHON_INCLUDE_DIR2 CACHE) + endif() + endif() + + if(NOT ANDROID AND NOT IOS) + if(CMAKE_HOST_UNIX) + execute_process(COMMAND ${_executable} -c "from distutils.sysconfig import *; print(get_python_lib())" + RESULT_VARIABLE _cvpy_process + OUTPUT_VARIABLE _std_packages_path + OUTPUT_STRIP_TRAILING_WHITESPACE) + if("${_std_packages_path}" MATCHES "site-packages") + set(_packages_path "python${_version_major_minor}/site-packages") + else() #debian based assumed, install to the dist-packages. + set(_packages_path "python${_version_major_minor}/dist-packages") + endif() + if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${${packages_path}}") + set(_packages_path "lib${LIB_SUFFIX}/${_packages_path}") + else() + set(_packages_path "lib/${_packages_path}") + endif() + elseif(CMAKE_HOST_WIN32) + get_filename_component(_path "${_executable}" PATH) + file(TO_CMAKE_PATH "${_path}" _path) + if(NOT EXISTS "${_path}/Lib/site-packages") + unset(_path) + get_filename_component(_path "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_version_major_minor}\\InstallPath]" ABSOLUTE) + if(NOT _path) + get_filename_component(_path "[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_version_major_minor}\\InstallPath]" ABSOLUTE) + endif() + file(TO_CMAKE_PATH "${_path}" _path) + endif() + set(_packages_path "${_path}/Lib/site-packages") + unset(_path) + endif() + + set(_numpy_include_dirs ${${numpy_include_dirs}}) + + if(NOT _numpy_include_dirs) + if(CMAKE_CROSSCOMPILING) + message(STATUS "Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)") + message(STATUS "If you want to enable Python/Numpy support, set the following variables:") + message(STATUS " PYTHON2_INCLUDE_PATH") + message(STATUS " PYTHON2_LIBRARIES") + message(STATUS " PYTHON2_NUMPY_INCLUDE_DIRS") + message(STATUS " PYTHON3_INCLUDE_PATH") + message(STATUS " PYTHON3_LIBRARIES") + message(STATUS " PYTHON3_NUMPY_INCLUDE_DIRS") + else() + # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy + execute_process(COMMAND "${_executable}" -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))" + RESULT_VARIABLE _numpy_process + OUTPUT_VARIABLE _numpy_include_dirs + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT _numpy_process EQUAL 0) + unset(_numpy_include_dirs) + endif() + endif() + endif() + + if(_numpy_include_dirs) + file(TO_CMAKE_PATH "${_numpy_include_dirs}" _numpy_include_dirs) + if(CMAKE_CROSSCOMPILING) + if(NOT _numpy_version) + set(_numpy_version "undefined - cannot be probed because of the cross-compilation") + endif() + else() + execute_process(COMMAND "${_executable}" -c "import numpy; print(numpy.version.version)" + RESULT_VARIABLE _numpy_process + OUTPUT_VARIABLE _numpy_version + OUTPUT_STRIP_TRAILING_WHITESPACE) + endif() + endif() + endif(NOT ANDROID AND NOT IOS) + endif() + + # Export return values + set(${found} "${_found}" PARENT_SCOPE) + set(${executable} "${_executable}" CACHE FILEPATH "Path to Python interpretor") + set(${version_string} "${_version_string}" PARENT_SCOPE) + set(${version_major} "${_version_major}" PARENT_SCOPE) + set(${version_minor} "${_version_minor}" PARENT_SCOPE) + set(${libs_found} "${_libs_found}" PARENT_SCOPE) + set(${libs_version_string} "${_libs_version_string}" PARENT_SCOPE) + set(${libraries} "${_libraries}" PARENT_SCOPE) + set(${library} "${_library}" CACHE FILEPATH "Path to Python library") + set(${debug_libraries} "${_debug_libraries}" PARENT_SCOPE) + set(${debug_library} "${_debug_library}" CACHE FILEPATH "Path to Python debug") + set(${include_path} "${_include_path}" PARENT_SCOPE) + set(${include_dir} "${_include_dir}" CACHE PATH "Python include dir") + set(${include_dir2} "${_include_dir2}" CACHE PATH "Python include dir 2") + set(${packages_path} "${_packages_path}" CACHE PATH "Where to install the python packages.") + set(${numpy_include_dirs} ${_numpy_include_dirs} CACHE PATH "Path to numpy headers") + set(${numpy_version} "${_numpy_version}" PARENT_SCOPE) +endfunction(find_python) + +find_python(2.7 "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR + PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING + PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND + PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY + PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH + PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH + PYTHON2_NUMPY_INCLUDE_DIRS PYTHON2_NUMPY_VERSION) + +find_python(3.4 "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR + PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING + PYTHON3_VERSION_MAJOR PYTHON3_VERSION_MINOR PYTHON3LIBS_FOUND + PYTHON3LIBS_VERSION_STRING PYTHON3_LIBRARIES PYTHON3_LIBRARY + PYTHON3_DEBUG_LIBRARIES PYTHON3_LIBRARY_DEBUG PYTHON3_INCLUDE_PATH + PYTHON3_INCLUDE_DIR PYTHON3_INCLUDE_DIR2 PYTHON3_PACKAGES_PATH + PYTHON3_NUMPY_INCLUDE_DIRS PYTHON3_NUMPY_VERSION) + +# Use Python 2 as default Python interpreter +if(PYTHON2LIBS_FOUND) + set(PYTHON_DEFAULT_AVAILABLE "TRUE") + set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}") endif() unset(HAVE_SPHINX CACHE) -if(PYTHONINTERP_FOUND) - set(PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") - - if(NOT ANDROID AND NOT IOS) - ocv_check_environment_variables(PYTHON_LIBRARY PYTHON_INCLUDE_DIR) - # not using PYTHON_VERSION_STRING here, because it might not conform to the CMake version format - find_host_package(PythonLibs "${PYTHON_VERSION_MAJOR_MINOR}.${PYTHON_VERSION_PATCH}" EXACT) - endif() - - if(NOT ANDROID AND NOT IOS) - if(CMAKE_HOST_UNIX) - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print(get_python_lib())" - RESULT_VARIABLE PYTHON_CVPY_PROCESS - OUTPUT_VARIABLE PYTHON_STD_PACKAGES_PATH - OUTPUT_STRIP_TRAILING_WHITESPACE) - if("${PYTHON_STD_PACKAGES_PATH}" MATCHES "site-packages") - set(_PYTHON_PACKAGES_PATH "python${PYTHON_VERSION_MAJOR_MINOR}/site-packages") - else() #debian based assumed, install to the dist-packages. - set(_PYTHON_PACKAGES_PATH "python${PYTHON_VERSION_MAJOR_MINOR}/dist-packages") - endif() - if(EXISTS "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${PYTHON_PACKAGES_PATH}") - set(_PYTHON_PACKAGES_PATH "lib${LIB_SUFFIX}/${_PYTHON_PACKAGES_PATH}") - else() - set(_PYTHON_PACKAGES_PATH "lib/${_PYTHON_PACKAGES_PATH}") - endif() - elseif(CMAKE_HOST_WIN32) - get_filename_component(PYTHON_PATH "${PYTHON_EXECUTABLE}" PATH) - file(TO_CMAKE_PATH "${PYTHON_PATH}" PYTHON_PATH) - if(NOT EXISTS "${PYTHON_PATH}/Lib/site-packages") - unset(PYTHON_PATH) - get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE) - if(NOT PYTHON_PATH) - get_filename_component(PYTHON_PATH "[HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE) - endif() - file(TO_CMAKE_PATH "${PYTHON_PATH}" PYTHON_PATH) - endif() - set(_PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages") - endif() - SET(PYTHON_PACKAGES_PATH "${_PYTHON_PACKAGES_PATH}" CACHE PATH "Where to install the python packages.") - - if(NOT PYTHON_NUMPY_INCLUDE_DIRS) - if(CMAKE_CROSSCOMPILING) - message(STATUS "Cannot probe for Python/Numpy support (because we are cross-compiling OpenCV)") - message(STATUS "If you want to enable Python/Numpy support, set the following variables:") - message(STATUS " PYTHON_INCLUDE_PATH") - message(STATUS " PYTHON_LIBRARIES") - message(STATUS " PYTHON_NUMPY_INCLUDE_DIRS") - else() - # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy - execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))" - RESULT_VARIABLE PYTHON_NUMPY_PROCESS - OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS - OUTPUT_STRIP_TRAILING_WHITESPACE) - - if(NOT PYTHON_NUMPY_PROCESS EQUAL 0) - unset(PYTHON_NUMPY_INCLUDE_DIRS) - endif() - endif() - endif() - - if(PYTHON_NUMPY_INCLUDE_DIRS) - file(TO_CMAKE_PATH "${PYTHON_NUMPY_INCLUDE_DIRS}" _PYTHON_NUMPY_INCLUDE_DIRS) - set(PYTHON_NUMPY_INCLUDE_DIRS ${_PYTHON_NUMPY_INCLUDE_DIRS} CACHE PATH "Path to numpy headers") - if(CMAKE_CROSSCOMPILING) - if(NOT PYTHON_NUMPY_VERSION) - set(PYTHON_NUMPY_VERSION "undefined - cannot be probed because of the cross-compilation") - endif() - else() - execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import numpy; print(numpy.version.version)" - RESULT_VARIABLE PYTHON_NUMPY_PROCESS - OUTPUT_VARIABLE PYTHON_NUMPY_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - endif() - endif() - endif(NOT ANDROID AND NOT IOS) -endif() - if(BUILD_DOCS) find_host_program(SPHINX_BUILD sphinx-build) find_host_program(PLANTUML plantuml) diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake index 5520d05521..fec7be4d84 100644 --- a/cmake/OpenCVFindLibsVideo.cmake +++ b/cmake/OpenCVFindLibsVideo.cmake @@ -131,7 +131,7 @@ if(WITH_1394) if(HAVE_DC1394_2) ocv_parse_pkg("libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig" "") ocv_include_directories(${DC1394_2_INCLUDE_PATH}) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} + set(VIDEOIO_LIBRARIES ${VIDEOIO_LIBRARIES} "${DC1394_2_LIB_DIR}/libdc1394.a" "${CMU1394_LIB_DIR}/lib1394camera.a") endif(HAVE_DC1394_2) @@ -166,6 +166,11 @@ if(WITH_OPENNI) include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI.cmake") endif(WITH_OPENNI) +ocv_clear_vars(HAVE_OPENNI2) +if(WITH_OPENNI2) + include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI2.cmake") +endif(WITH_OPENNI2) + # --- XIMEA --- ocv_clear_vars(HAVE_XIMEA) if(WITH_XIMEA) @@ -234,7 +239,7 @@ if(WITH_FFMPEG) endif() endif(FFMPEG_INCLUDE_DIR) if(HAVE_FFMPEG) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a" + set(VIDEOIO_LIBRARIES ${VIDEOIO_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a" "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a" "${FFMPEG_LIB_DIR}/libswscale.a") ocv_include_directories(${FFMPEG_INCLUDE_DIR}) @@ -253,14 +258,15 @@ if(WITH_MSMF) check_include_file(Mfapi.h HAVE_MSMF) endif(WITH_MSMF) -# --- Extra HighGUI libs on Windows --- +# --- Extra HighGUI and VideoIO libs on Windows --- if(WIN32) - list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32 vfw32) + list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32) + list(APPEND VIDEOIO_LIBRARIES vfw32) if(MINGW64) - list(APPEND HIGHGUI_LIBRARIES avifil32 avicap32 winmm msvfw32) - list(REMOVE_ITEM HIGHGUI_LIBRARIES vfw32) + list(APPEND VIDEOIO_LIBRARIES avifil32 avicap32 winmm msvfw32) + list(REMOVE_ITEM VIDEOIO_LIBRARIES vfw32) elseif(MINGW) - list(APPEND HIGHGUI_LIBRARIES winmm) + list(APPEND VIDEOIO_LIBRARIES winmm) endif() endif(WIN32) diff --git a/cmake/OpenCVFindOpenNI2.cmake b/cmake/OpenCVFindOpenNI2.cmake new file mode 100644 index 0000000000..83acf1bc5d --- /dev/null +++ b/cmake/OpenCVFindOpenNI2.cmake @@ -0,0 +1,61 @@ +# Main variables: +# OPENNI2_LIBRARY and OPENNI2_INCLUDES to link OpenCV modules with OpenNI2 +# HAVE_OPENNI2 for conditional compilation OpenCV with/without OpenNI2 + +if(NOT "${OPENNI2_LIB_DIR}" STREQUAL "${OPENNI2_LIB_DIR_INTERNAL}") + unset(OPENNI2_LIBRARY CACHE) + unset(OPENNI2_LIB_DIR CACHE) +endif() + +if(NOT "${OPENNI2_INCLUDE_DIR}" STREQUAL "${OPENNI2_INCLUDE_DIR_INTERNAL}") + unset(OPENNI2_INCLUDES CACHE) + unset(OPENNI2_INCLUDE_DIR CACHE) +endif() + +if(WIN32) + if(NOT (MSVC64 OR MINGW64)) + find_file(OPENNI2_INCLUDES "OpenNI.h" PATHS "$ENV{OPEN_NI_INSTALL_PATH}Include" DOC "OpenNI2 c++ interface header") + find_library(OPENNI2_LIBRARY "OpenNI2" PATHS $ENV{OPENNI2_LIB} DOC "OpenNI2 library") + else() + find_file(OPENNI2_INCLUDES "OpenNI.h" PATHS "$ENV{OPEN_NI_INSTALL_PATH64}Include" DOC "OpenNI2 c++ interface header") + find_library(OPENNI2_LIBRARY "OpenNI2" PATHS $ENV{OPENNI2_LIB64} DOC "OpenNI2 library") + endif() +elseif(UNIX OR APPLE) + find_file(OPENNI2_INCLUDES "OpenNI.h" PATHS "/usr/include/ni2" "/usr/include/openni2" DOC "OpenNI2 c++ interface header") + find_library(OPENNI2_LIBRARY "OpenNI2" PATHS "/usr/lib" DOC "OpenNI2 library") +endif() + +if(OPENNI2_LIBRARY AND OPENNI2_INCLUDES) + set(HAVE_OPENNI2 TRUE) +endif() #if(OPENNI2_LIBRARY AND OPENNI2_INCLUDES) + +get_filename_component(OPENNI2_LIB_DIR "${OPENNI2_LIBRARY}" PATH) +get_filename_component(OPENNI2_INCLUDE_DIR ${OPENNI2_INCLUDES} PATH) + +if(HAVE_OPENNI2) + set(OPENNI2_LIB_DIR "${OPENNI2_LIB_DIR}" CACHE PATH "Path to OpenNI2 libraries" FORCE) + set(OPENNI2_INCLUDE_DIR "${OPENNI2_INCLUDE_DIR}" CACHE PATH "Path to OpenNI2 headers" FORCE) +endif() + +if(OPENNI2_LIBRARY) + set(OPENNI2_LIB_DIR_INTERNAL "${OPENNI2_LIB_DIR}" CACHE INTERNAL "This is the value of the last time OPENNI_LIB_DIR was set successfully." FORCE) +else() + message( WARNING, " OpenNI2 library directory (set by OPENNI2_LIB_DIR variable) is not found or does not have OpenNI2 libraries." ) +endif() + +if(OPENNI2_INCLUDES) + set(OPENNI2_INCLUDE_DIR_INTERNAL "${OPENNI2_INCLUDE_DIR}" CACHE INTERNAL "This is the value of the last time OPENNI2_INCLUDE_DIR was set successfully." FORCE) +else() + message( WARNING, " OpenNI2 include directory (set by OPENNI2_INCLUDE_DIR variable) is not found or does not have OpenNI2 include files." ) +endif() + +mark_as_advanced(FORCE OPENNI2_LIBRARY) +mark_as_advanced(FORCE OPENNI2_INCLUDES) + +if(HAVE_OPENNI2) + ocv_parse_header("${OPENNI2_INCLUDE_DIR}/OniVersion.h" ONI_VERSION_LINE ONI_VERSION_MAJOR ONI_VERSION_MINOR ONI_VERSION_MAINTENANCE ONI_VERSION_BUILD) + if(ONI_VERSION_MAJOR) + set(OPENNI2_VERSION_STRING ${ONI_VERSION_MAJOR}.${ONI_VERSION_MINOR}.${ONI_VERSION_MAINTENANCE} CACHE INTERNAL "OpenNI2 version") + set(OPENNI2_VERSION_BUILD ${ONI_VERSION_BUILD} CACHE INTERNAL "OpenNI2 build version") + endif() +endif() diff --git a/cmake/OpenCVGenInfoPlist.cmake b/cmake/OpenCVGenInfoPlist.cmake index 97c674ceb7..db418d1253 100644 --- a/cmake/OpenCVGenInfoPlist.cmake +++ b/cmake/OpenCVGenInfoPlist.cmake @@ -1,4 +1,7 @@ if(IOS) configure_file("${OpenCV_SOURCE_DIR}/platforms/ios/Info.plist.in" "${CMAKE_BINARY_DIR}/ios/Info.plist") +elseif(APPLE) + configure_file("${OpenCV_SOURCE_DIR}/platforms/osx/Info.plist.in" + "${CMAKE_BINARY_DIR}/osx/Info.plist") endif() diff --git a/cmake/OpenCVMinDepVersions.cmake b/cmake/OpenCVMinDepVersions.cmake index 9dae725481..e8591e26e2 100644 --- a/cmake/OpenCVMinDepVersions.cmake +++ b/cmake/OpenCVMinDepVersions.cmake @@ -1,5 +1,6 @@ set(MIN_VER_CMAKE 2.8.7) set(MIN_VER_CUDA 4.2) -set(MIN_VER_PYTHON 2.6) +set(MIN_VER_PYTHON2 2.6) +set(MIN_VER_PYTHON3 3.2) set(MIN_VER_ZLIB 1.2.3) set(MIN_VER_GTK 2.18.0) diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake index e6fa199119..d53f0666ec 100644 --- a/cmake/OpenCVModule.cmake +++ b/cmake/OpenCVModule.cmake @@ -6,16 +6,19 @@ # Global variables: # # OPENCV_MODULE_${the_module}_LOCATION +# OPENCV_MODULE_${the_module}_BINARY_DIR # OPENCV_MODULE_${the_module}_DESCRIPTION # OPENCV_MODULE_${the_module}_CLASS - PUBLIC|INTERNAL|BINDINGS # OPENCV_MODULE_${the_module}_HEADERS # OPENCV_MODULE_${the_module}_SOURCES # OPENCV_MODULE_${the_module}_DEPS - final flattened set of module dependencies +# OPENCV_MODULE_${the_module}_DEPS_TO_LINK - differs from above for world build only # OPENCV_MODULE_${the_module}_DEPS_EXT - non-module dependencies # OPENCV_MODULE_${the_module}_REQ_DEPS # OPENCV_MODULE_${the_module}_OPT_DEPS # OPENCV_MODULE_${the_module}_PRIVATE_REQ_DEPS # OPENCV_MODULE_${the_module}_PRIVATE_OPT_DEPS +# OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD # HAVE_${the_module} - for fast check of module availability # To control the setup of the module you could also set: @@ -53,6 +56,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD unset(OPENCV_MODULE_${mod}_OPT_DEPS CACHE) unset(OPENCV_MODULE_${mod}_PRIVATE_REQ_DEPS CACHE) unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE) + unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE) endforeach() # clean modules info which needs to be recalculated @@ -61,6 +65,7 @@ set(OPENCV_MODULES_BUILD "" CACHE INTERNAL "List of OpenCV modules incl set(OPENCV_MODULES_DISABLED_USER "" CACHE INTERNAL "List of OpenCV modules explicitly disabled by user") set(OPENCV_MODULES_DISABLED_AUTO "" CACHE INTERNAL "List of OpenCV modules implicitly disabled due to dependencies") set(OPENCV_MODULES_DISABLED_FORCE "" CACHE INTERNAL "List of OpenCV modules which can not be build in current configuration") +unset(OPENCV_WORLD_MODULES CACHE) # adds dependencies to OpenCV module # Usage: @@ -68,6 +73,7 @@ set(OPENCV_MODULES_DISABLED_FORCE "" CACHE INTERNAL "List of OpenCV modules whic # Notes: # * - can include full names of modules or full pathes to shared/static libraries or cmake targets macro(ocv_add_dependencies full_modname) + ocv_debug_message("ocv_add_dependencies(" ${full_modname} ${ARGN} ")") #we don't clean the dependencies here to allow this macro several times for every module foreach(d "REQUIRED" ${ARGN}) if(d STREQUAL "REQUIRED") @@ -105,6 +111,7 @@ endmacro() # Example: # ocv_add_module(yaom INTERNAL opencv_core opencv_highgui opencv_flann OPTIONAL opencv_cuda) macro(ocv_add_module _name) + ocv_debug_message("ocv_add_module(" ${_name} ${ARGN} ")") string(TOLOWER "${_name}" name) string(REGEX REPLACE "^opencv_" "" ${name} "${name}") set(the_module opencv_${name}) @@ -134,6 +141,8 @@ macro(ocv_add_module _name) set(OPENCV_MODULE_${the_module}_DESCRIPTION "${the_description}" CACHE INTERNAL "Brief description of ${the_module} module") set(OPENCV_MODULE_${the_module}_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Location of ${the_module} module sources") + set(OPENCV_MODULE_${the_module}_LINK_DEPS "" CACHE INTERNAL "") + # parse list of dependencies if("${ARGV1}" STREQUAL "INTERNAL" OR "${ARGV1}" STREQUAL "BINDINGS") set(OPENCV_MODULE_${the_module}_CLASS "${ARGV1}" CACHE INTERNAL "The category of the module") @@ -150,8 +159,14 @@ macro(ocv_add_module _name) endif() # add self to the world dependencies - if(NOT DEFINED OPENCV_MODULE_IS_PART_OF_WORLD AND NOT OPENCV_MODULE_${the_module}_CLASS STREQUAL "BINDINGS" OR OPENCV_MODULE_IS_PART_OF_WORLD) + if((NOT DEFINED OPENCV_MODULE_IS_PART_OF_WORLD AND NOT OPENCV_MODULE_${the_module}_CLASS STREQUAL "BINDINGS" + AND NOT OPENCV_PROCESSING_EXTRA_MODULES) + OR OPENCV_MODULE_IS_PART_OF_WORLD + ) + set(OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD ON CACHE INTERNAL "") ocv_add_dependencies(opencv_world OPTIONAL ${the_module}) + else() + set(OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD OFF CACHE INTERNAL "") endif() if(BUILD_${the_module}) @@ -164,12 +179,15 @@ macro(ocv_add_module _name) # stop processing of current file return() - else(OPENCV_INITIAL_PASS) + else() + set(OPENCV_MODULE_${the_module}_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "") if(NOT BUILD_${the_module}) return() # extra protection from redefinition endif() - project(${the_module}) - endif(OPENCV_INITIAL_PASS) + if((NOT OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD AND NOT ${the_module} STREQUAL opencv_world) OR NOT ${BUILD_opencv_world}) + project(${the_module}) + endif() + endif() endmacro() # excludes module from current configuration @@ -200,7 +218,11 @@ macro(ocv_glob_modules) # collect modules set(OPENCV_INITIAL_PASS ON) + set(OPENCV_PROCESSING_EXTRA_MODULES 0) foreach(__path ${ARGN}) + if("${__path}" STREQUAL "EXTRA") + set(OPENCV_PROCESSING_EXTRA_MODULES 1) + endif() get_filename_component(__path "${__path}" ABSOLUTE) list(FIND __directories_observed "${__path}" __pathIdx) @@ -222,16 +244,7 @@ macro(ocv_glob_modules) endif() list(APPEND __directories_observed "${__modpath}") - if(OCV_MODULE_RELOCATE_ON_INITIAL_PASS) - file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - file(COPY "${__modpath}/CMakeLists.txt" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - add_subdirectory("${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - if("${OPENCV_MODULE_opencv_${mod}_LOCATION}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - set(OPENCV_MODULE_opencv_${mod}_LOCATION "${__modpath}" CACHE PATH "" FORCE) - endif() - else() - add_subdirectory("${__modpath}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") - endif() + add_subdirectory("${__modpath}" "${CMAKE_CURRENT_BINARY_DIR}/${mod}/.${mod}") endif() endforeach() endif() @@ -244,15 +257,31 @@ macro(ocv_glob_modules) # create modules set(OPENCV_INITIAL_PASS OFF PARENT_SCOPE) set(OPENCV_INITIAL_PASS OFF) - foreach(m ${OPENCV_MODULES_BUILD}) - if(m MATCHES "^opencv_") - string(REGEX REPLACE "^opencv_" "" __shortname "${m}") - add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") - else() - message(WARNING "Check module name: ${m}") - add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") - endif() - endforeach() + if(${BUILD_opencv_world}) + add_subdirectory("${OPENCV_MODULE_opencv_world_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/world") + foreach(m ${OPENCV_MODULES_BUILD}) + if(NOT OPENCV_MODULE_${m}_IS_PART_OF_WORLD AND NOT ${m} STREQUAL opencv_world) + message(STATUS "Processing module ${m}...") + if(m MATCHES "^opencv_") + string(REGEX REPLACE "^opencv_" "" __shortname "${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") + else() + message(WARNING "Check module name: ${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") + endif() + endif() + endforeach() + else() + foreach(m ${OPENCV_MODULES_BUILD}) + if(m MATCHES "^opencv_") + string(REGEX REPLACE "^opencv_" "" __shortname "${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${__shortname}") + else() + message(WARNING "Check module name: ${m}") + add_subdirectory("${OPENCV_MODULE_${m}_LOCATION}" "${CMAKE_CURRENT_BINARY_DIR}/${m}") + endif() + endforeach() + endif() unset(__shortname) endmacro() @@ -394,11 +423,36 @@ function(__ocv_resolve_dependencies) __ocv_sort_modules_by_deps(OPENCV_MODULE_${m}_DEPS) ocv_list_sort(OPENCV_MODULE_${m}_DEPS_EXT) + set(LINK_DEPS ${OPENCV_MODULE_${m}_DEPS}) + + # process world + if(BUILD_opencv_world) + if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD) + list(APPEND OPENCV_WORLD_MODULES ${m}) + endif() + foreach(m2 ${OPENCV_MODULES_BUILD}) + if(OPENCV_MODULE_${m2}_IS_PART_OF_WORLD) + if(";${LINK_DEPS};" MATCHES ";${m2};") + list(REMOVE_ITEM LINK_DEPS ${m2}) + if(NOT (";${LINK_DEPS};" MATCHES ";opencv_world;") AND NOT (${m} STREQUAL opencv_world)) + list(APPEND LINK_DEPS opencv_world) + endif() + endif() + if(${m} STREQUAL opencv_world) + list(APPEND OPENCV_MODULE_opencv_world_DEPS_EXT ${OPENCV_MODULE_${m2}_DEPS_EXT}) + endif() + endif() + endforeach() + endif() + set(OPENCV_MODULE_${m}_DEPS ${OPENCV_MODULE_${m}_DEPS} CACHE INTERNAL "Flattened dependencies of ${m} module") set(OPENCV_MODULE_${m}_DEPS_EXT ${OPENCV_MODULE_${m}_DEPS_EXT} CACHE INTERNAL "Extra dependencies of ${m} module") + set(OPENCV_MODULE_${m}_DEPS_TO_LINK ${LINK_DEPS} CACHE INTERNAL "Flattened dependencies of ${m} module (for linker)") -# message(STATUS " module deps: ${OPENCV_MODULE_${m}_DEPS}") -# message(STATUS " extra deps: ${OPENCV_MODULE_${m}_DEPS_EXT}") +# message(STATUS " module deps of ${m}: ${OPENCV_MODULE_${m}_DEPS}") +# message(STATUS " module link deps of ${m}: ${OPENCV_MODULE_${m}_DEPS_TO_LINK}") +# message(STATUS " extra deps of ${m}: ${OPENCV_MODULE_${m}_DEPS_EXT}") +# message(STATUS "") endforeach() __ocv_sort_modules_by_deps(OPENCV_MODULES_BUILD) @@ -406,6 +460,7 @@ function(__ocv_resolve_dependencies) set(OPENCV_MODULES_PUBLIC ${OPENCV_MODULES_PUBLIC} CACHE INTERNAL "List of OpenCV modules marked for export") set(OPENCV_MODULES_BUILD ${OPENCV_MODULES_BUILD} CACHE INTERNAL "List of OpenCV modules included into the build") set(OPENCV_MODULES_DISABLED_AUTO ${OPENCV_MODULES_DISABLED_AUTO} CACHE INTERNAL "List of OpenCV modules implicitly disabled due to dependencies") + set(OPENCV_WORLD_MODULES ${OPENCV_WORLD_MODULES} CACHE INTERNAL "List of OpenCV modules included into the world") endfunction() @@ -422,18 +477,31 @@ macro(ocv_include_modules) endforeach() endmacro() -# setup include paths for the list of passed modules and recursively add dependent modules -macro(ocv_include_modules_recurse) +# setup include paths for the list of passed modules +macro(ocv_target_include_modules target) foreach(d ${ARGN}) if(d MATCHES "^opencv_" AND HAVE_${d}) if (EXISTS "${OPENCV_MODULE_${d}_LOCATION}/include") - ocv_include_directories("${OPENCV_MODULE_${d}_LOCATION}/include") - endif() - if(OPENCV_MODULE_${d}_DEPS) - ocv_include_modules(${OPENCV_MODULE_${d}_DEPS}) + ocv_target_include_directories(${target} "${OPENCV_MODULE_${d}_LOCATION}/include") endif() elseif(EXISTS "${d}") - ocv_include_directories("${d}") + ocv_target_include_directories(${target} "${d}") + endif() + endforeach() +endmacro() + +# setup include paths for the list of passed modules and recursively add dependent modules +macro(ocv_target_include_modules_recurse target) + foreach(d ${ARGN}) + if(d MATCHES "^opencv_" AND HAVE_${d}) + if (EXISTS "${OPENCV_MODULE_${d}_LOCATION}/include") + ocv_target_include_directories(${target} "${OPENCV_MODULE_${d}_LOCATION}/include") + endif() + if(OPENCV_MODULE_${d}_DEPS) + ocv_target_include_modules(${target} ${OPENCV_MODULE_${d}_DEPS}) + endif() + elseif(EXISTS "${d}") + ocv_target_include_directories(${target} "${d}") endif() endforeach() endmacro() @@ -441,11 +509,12 @@ endmacro() # setup include path for OpenCV headers for specified module # ocv_module_include_directories() macro(ocv_module_include_directories) - ocv_include_directories("${OPENCV_MODULE_${the_module}_LOCATION}/include" - "${OPENCV_MODULE_${the_module}_LOCATION}/src" - "${CMAKE_CURRENT_BINARY_DIR}" # for precompiled headers - ) - ocv_include_modules(${OPENCV_MODULE_${the_module}_DEPS} ${ARGN}) + ocv_target_include_directories(${the_module} + "${OPENCV_MODULE_${the_module}_LOCATION}/include" + "${OPENCV_MODULE_${the_module}_LOCATION}/src" + "${CMAKE_CURRENT_BINARY_DIR}" # for precompiled headers + ) + ocv_target_include_modules(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${ARGN}) endmacro() @@ -454,6 +523,8 @@ endmacro() # Usage: # ocv_set_module_sources([HEADERS] [SOURCES] ) macro(ocv_set_module_sources) + ocv_debug_message("ocv_set_module_sources(" ${ARGN} ")") + set(OPENCV_MODULE_${the_module}_HEADERS "") set(OPENCV_MODULE_${the_module}_SOURCES "") @@ -481,31 +552,50 @@ endmacro() # Usage: # ocv_glob_module_sources([EXCLUDE_CUDA] ) macro(ocv_glob_module_sources) + ocv_debug_message("ocv_glob_module_sources(" ${ARGN} ")") set(_argn ${ARGN}) list(FIND _argn "EXCLUDE_CUDA" exclude_cuda) if(NOT exclude_cuda EQUAL -1) list(REMOVE_AT _argn ${exclude_cuda}) endif() - file(GLOB_RECURSE lib_srcs "src/*.cpp") - file(GLOB_RECURSE lib_int_hdrs "src/*.hpp" "src/*.h") - file(GLOB lib_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") - file(GLOB lib_hdrs_detail "include/opencv2/${name}/detail/*.hpp" "include/opencv2/${name}/detail/*.h") - file(GLOB_RECURSE lib_srcs_apple "src/*.mm") + file(GLOB_RECURSE lib_srcs + "${CMAKE_CURRENT_LIST_DIR}/src/*.cpp" + ) + file(GLOB_RECURSE lib_int_hdrs + "${CMAKE_CURRENT_LIST_DIR}/src/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/src/*.h" + ) + file(GLOB lib_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h" + ) + file(GLOB lib_hdrs_detail + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/detail/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/detail/*.h" + ) if (APPLE) + file(GLOB_RECURSE lib_srcs_apple + "${CMAKE_CURRENT_LIST_DIR}/src/*.mm" + ) list(APPEND lib_srcs ${lib_srcs_apple}) endif() - ocv_source_group("Src" DIRBASE "${CMAKE_CURRENT_SOURCE_DIR}/src" FILES ${lib_srcs} ${lib_int_hdrs}) - ocv_source_group("Include" DIRBASE "${CMAKE_CURRENT_SOURCE_DIR}/include" FILES ${lib_hdrs} ${lib_hdrs_detail}) + ocv_source_group("Src" DIRBASE "${CMAKE_CURRENT_LIST_DIR}/src" FILES ${lib_srcs} ${lib_int_hdrs}) + ocv_source_group("Include" DIRBASE "${CMAKE_CURRENT_LIST_DIR}/include" FILES ${lib_hdrs} ${lib_hdrs_detail}) if (exclude_cuda EQUAL -1) - file(GLOB lib_cuda_srcs "src/cuda/*.cu") + file(GLOB lib_cuda_srcs + "${CMAKE_CURRENT_LIST_DIR}/src/cuda/*.cu" + ) set(cuda_objs "") set(lib_cuda_hdrs "") if(HAVE_CUDA) ocv_include_directories(${CUDA_INCLUDE_DIRS}) - file(GLOB lib_cuda_hdrs "src/cuda/*.hpp") + file(GLOB lib_cuda_hdrs + "${CMAKE_CURRENT_LIST_DIR}/src/cuda/*.hpp" + ) ocv_cuda_compile(cuda_objs ${lib_cuda_srcs} ${lib_cuda_hdrs}) source_group("Src\\Cuda" FILES ${lib_cuda_srcs} ${lib_cuda_hdrs}) @@ -516,17 +606,19 @@ macro(ocv_glob_module_sources) set(lib_cuda_hdrs "") endif() - file(GLOB cl_kernels "src/opencl/*.cl") + file(GLOB cl_kernels + "${CMAKE_CURRENT_LIST_DIR}/src/opencl/*.cl" + ) if(cl_kernels) + set(OCL_NAME opencl_kernels_${name}) ocv_include_directories(${OPENCL_INCLUDE_DIRS}) - string(REGEX REPLACE "opencv_" "" the_module_barename "${the_module}") add_custom_command( - OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp" - COMMAND ${CMAKE_COMMAND} -DMODULE_NAME="${the_module_barename}" -DCL_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp" + COMMAND ${CMAKE_COMMAND} -DMODULE_NAME="${name}" -DCL_DIR="${CMAKE_CURRENT_LIST_DIR}/src/opencl" -DOUTPUT="${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" -P "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake" DEPENDS ${cl_kernels} "${OpenCV_SOURCE_DIR}/cmake/cl2cpp.cmake") ocv_source_group("Src\\opencl\\kernels" FILES ${cl_kernels}) - ocv_source_group("Src\\opencl\\kernels\\autogenerated" FILES "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") - list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.cpp" "${CMAKE_CURRENT_BINARY_DIR}/opencl_kernels.hpp") + ocv_source_group("Src\\opencl\\kernels\\autogenerated" FILES "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp") + list(APPEND lib_srcs ${cl_kernels} "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.cpp" "${CMAKE_CURRENT_BINARY_DIR}/${OCL_NAME}.hpp") endif() ocv_set_module_sources(${_argn} HEADERS ${lib_hdrs} ${lib_hdrs_detail} @@ -537,29 +629,39 @@ endmacro() # creates new target, configures standard dependencies, compilers flags, install rules # Usage: # ocv_create_module() -# ocv_create_module(SKIP_LINK) +# ocv_create_module() macro(ocv_create_module) + ocv_debug_message("ocv_create_module(" ${ARGN} ")") + set(OPENCV_MODULE_${the_module}_LINK_DEPS "${OPENCV_MODULE_${the_module}_LINK_DEPS};${ARGN}" CACHE INTERNAL "") + if(${BUILD_opencv_world} AND OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD) + # nothing + set(the_module_target opencv_world) + else() + _ocv_create_module(${ARGN}) + set(the_module_target ${the_module}) + endif() +endmacro() + +macro(_ocv_create_module) # The condition we ought to be testing here is whether ocv_add_precompiled_headers will # be called at some point in the future. We can't look into the future, though, # so this will have to do. - if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/precomp.hpp") + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/precomp.hpp" AND NOT ${the_module} STREQUAL opencv_world) get_native_precompiled_header(${the_module} precomp.hpp) endif() - add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES} + ocv_add_library(${the_module} ${OPENCV_MODULE_TYPE} ${OPENCV_MODULE_${the_module}_HEADERS} ${OPENCV_MODULE_${the_module}_SOURCES} "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" ${${the_module}_pch}) if(NOT the_module STREQUAL opencv_ts) set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) endif() - if(NOT "${ARGN}" STREQUAL "SKIP_LINK") - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS}) - target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS}) - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) - if (HAVE_CUDA) - target_link_libraries(${the_module} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) - endif() + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_TO_LINK}) + ocv_target_link_libraries(${the_module} LINK_INTERFACE_LIBRARIES ${OPENCV_MODULE_${the_module}_DEPS_TO_LINK}) + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS_EXT} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${ARGN}) + if (HAVE_CUDA) + ocv_target_link_libraries(${the_module} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) endif() add_dependencies(opencv_modules ${the_module}) @@ -614,13 +716,16 @@ macro(ocv_create_module) endif() endforeach() endif() + _ocv_add_precompiled_headers(${the_module}) endmacro() # opencv precompiled headers macro (can add pch to modules and tests) # this macro must be called after any "add_definitions" commands, otherwise precompiled headers will not work # Usage: # ocv_add_precompiled_headers(${the_module}) -macro(ocv_add_precompiled_headers the_target) +macro(_ocv_add_precompiled_headers the_target) + ocv_debug_message("ocv_add_precompiled_headers(" ${the_target} ${ARGN} ")") + if("${the_target}" MATCHES "^opencv_test_.*$") SET(pch_path "test/test_") elseif("${the_target}" MATCHES "^opencv_perf_.*$") @@ -637,6 +742,7 @@ endmacro() # Usage: # ocv_define_module(module_name [INTERNAL] [EXCLUDE_CUDA] [REQUIRED] [] [OPTIONAL ]) macro(ocv_define_module module_name) + ocv_debug_message("ocv_define_module(" ${module_name} ${ARGN} ")") set(_argn ${ARGN}) set(exclude_cuda "") foreach(arg ${_argn}) @@ -647,10 +753,9 @@ macro(ocv_define_module module_name) endforeach() ocv_add_module(${module_name} ${_argn}) - ocv_module_include_directories() ocv_glob_module_sources(${exclude_cuda}) + ocv_module_include_directories() ocv_create_module() - ocv_add_precompiled_headers(${the_module}) ocv_add_accuracy_tests() ocv_add_perf_tests() @@ -685,7 +790,7 @@ macro(__ocv_parse_test_sources tests_type) set(__file_group_name "") set(__file_group_sources "") elseif(arg STREQUAL "DEPENDS_ON") - set(__currentvar "OPENCV_TEST_${the_module}_DEPS") + set(__currentvar "OPENCV_${tests_type}_${the_module}_DEPS") elseif("${__currentvar}" STREQUAL "__file_group_sources" AND NOT __file_group_name) set(__file_group_name "${arg}") else() @@ -700,20 +805,20 @@ endmacro() # this is a command for adding OpenCV performance tests to the module # ocv_add_perf_tests() function(ocv_add_perf_tests) - set(perf_path "${CMAKE_CURRENT_SOURCE_DIR}/perf") + ocv_debug_message("ocv_add_perf_tests(" ${ARGN} ")") + + set(perf_path "${CMAKE_CURRENT_LIST_DIR}/perf") if(BUILD_PERF_TESTS AND EXISTS "${perf_path}") __ocv_parse_test_sources(PERF ${ARGN}) - # opencv_highgui is required for imread/imwrite - set(perf_deps ${the_module} opencv_ts opencv_highgui ${OPENCV_PERF_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) + # opencv_imgcodecs is required for imread/imwrite + set(perf_deps ${the_module} opencv_ts opencv_imgcodecs ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) ocv_check_dependencies(${perf_deps}) if(OCV_DEPENDENCIES_FOUND) set(the_target "opencv_perf_${name}") # project(${the_target}) - ocv_module_include_directories(${perf_deps} "${perf_path}") - if(NOT OPENCV_PERF_${the_module}_SOURCES) file(GLOB_RECURSE perf_srcs "${perf_path}/*.cpp") file(GLOB_RECURSE perf_hdrs "${perf_path}/*.hpp" "${perf_path}/*.h") @@ -722,10 +827,13 @@ function(ocv_add_perf_tests) set(OPENCV_PERF_${the_module}_SOURCES ${perf_srcs} ${perf_hdrs}) endif() - get_native_precompiled_header(${the_target} perf_precomp.hpp) + if(NOT BUILD_opencv_world) + get_native_precompiled_header(${the_target} perf_precomp.hpp) + endif() - add_executable(${the_target} ${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch}) - target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${perf_deps} ${OPENCV_LINKER_LIBS}) + ocv_add_executable(${the_target} ${OPENCV_PERF_${the_module}_SOURCES} ${${the_target}_pch}) + ocv_target_include_modules(${the_target} ${perf_deps} "${perf_path}") + ocv_target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${perf_deps} ${OPENCV_LINKER_LIBS}) add_dependencies(opencv_perf_tests ${the_target}) # Additional target properties @@ -738,8 +846,9 @@ function(ocv_add_perf_tests) set_target_properties(${the_target} PROPERTIES FOLDER "tests performance") endif() - ocv_add_precompiled_headers(${the_target}) - + if(NOT BUILD_opencv_world) + _ocv_add_precompiled_headers(${the_target}) + endif() else(OCV_DEPENDENCIES_FOUND) # TODO: warn about unsatisfied dependencies endif(OCV_DEPENDENCIES_FOUND) @@ -752,21 +861,19 @@ endfunction() # this is a command for adding OpenCV accuracy/regression tests to the module # ocv_add_accuracy_tests([FILES ] [DEPENDS_ON] ) function(ocv_add_accuracy_tests) - set(test_path "${CMAKE_CURRENT_SOURCE_DIR}/test") - ocv_check_dependencies(${test_deps}) + ocv_debug_message("ocv_add_accuracy_tests(" ${ARGN} ")") + + set(test_path "${CMAKE_CURRENT_LIST_DIR}/test") if(BUILD_TESTS AND EXISTS "${test_path}") __ocv_parse_test_sources(TEST ${ARGN}) - # opencv_highgui is required for imread/imwrite - set(test_deps ${the_module} opencv_ts opencv_highgui ${OPENCV_TEST_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) + # opencv_imgcodecs is required for imread/imwrite + set(test_deps ${the_module} opencv_ts opencv_imgcodecs opencv_videoio ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_MODULE_opencv_ts_DEPS}) ocv_check_dependencies(${test_deps}) - if(OCV_DEPENDENCIES_FOUND) set(the_target "opencv_test_${name}") # project(${the_target}) - ocv_module_include_directories(${test_deps} "${test_path}") - if(NOT OPENCV_TEST_${the_module}_SOURCES) file(GLOB_RECURSE test_srcs "${test_path}/*.cpp") file(GLOB_RECURSE test_hdrs "${test_path}/*.hpp" "${test_path}/*.h") @@ -775,10 +882,13 @@ function(ocv_add_accuracy_tests) set(OPENCV_TEST_${the_module}_SOURCES ${test_srcs} ${test_hdrs}) endif() - get_native_precompiled_header(${the_target} test_precomp.hpp) - add_executable(${the_target} ${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch}) + if(NOT BUILD_opencv_world) + get_native_precompiled_header(${the_target} test_precomp.hpp) + endif() - target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${test_deps} ${OPENCV_LINKER_LIBS}) + ocv_add_executable(${the_target} ${OPENCV_TEST_${the_module}_SOURCES} ${${the_target}_pch}) + ocv_target_include_modules(${the_target} ${test_deps} "${test_path}") + ocv_target_link_libraries(${the_target} ${OPENCV_MODULE_${the_module}_DEPS} ${test_deps} ${OPENCV_LINKER_LIBS}) add_dependencies(opencv_tests ${the_target}) # Additional target properties @@ -795,7 +905,9 @@ function(ocv_add_accuracy_tests) get_target_property(LOC ${the_target} LOCATION) add_test(${the_target} "${LOC}") - ocv_add_precompiled_headers(${the_target}) + if(NOT BUILD_opencv_world) + _ocv_add_precompiled_headers(${the_target}) + endif() else(OCV_DEPENDENCIES_FOUND) # TODO: warn about unsatisfied dependencies endif(OCV_DEPENDENCIES_FOUND) @@ -807,24 +919,25 @@ function(ocv_add_accuracy_tests) endfunction() function(ocv_add_samples) + ocv_debug_message("ocv_add_samples(" ${ARGN} ")") + set(samples_path "${CMAKE_CURRENT_SOURCE_DIR}/samples") string(REGEX REPLACE "^opencv_" "" module_id ${the_module}) if(BUILD_EXAMPLES AND EXISTS "${samples_path}") - set(samples_deps ${the_module} ${OPENCV_MODULE_${the_module}_DEPS} opencv_highgui ${ARGN}) + set(samples_deps ${the_module} ${OPENCV_MODULE_${the_module}_DEPS} opencv_imgcodecs opencv_videoio opencv_highgui ${ARGN}) ocv_check_dependencies(${samples_deps}) if(OCV_DEPENDENCIES_FOUND) file(GLOB sample_sources "${samples_path}/*.cpp") - ocv_include_modules(${OPENCV_MODULE_${the_module}_DEPS}) foreach(source ${sample_sources}) get_filename_component(name "${source}" NAME_WE) set(the_target "example_${module_id}_${name}") - add_executable(${the_target} "${source}") - target_link_libraries(${the_target} ${samples_deps}) - + ocv_add_executable(${the_target} "${source}") + ocv_target_include_modules(${the_target} ${samples_deps}) + ocv_target_link_libraries(${the_target} ${samples_deps}) set_target_properties(${the_target} PROPERTIES PROJECT_LABEL "(sample) ${name}") if(ENABLE_SOLUTION_FOLDERS) @@ -847,82 +960,3 @@ function(ocv_add_samples) PERMISSIONS OWNER_READ GROUP_READ WORLD_READ COMPONENT samples) endif() endfunction() - -# internal macro; finds all link dependencies of the module -# should be used at the end of CMake processing -macro(__ocv_track_module_link_dependencies the_module optkind) - set(${the_module}_MODULE_DEPS_${optkind} "") - set(${the_module}_EXTRA_DEPS_${optkind} "") - - get_target_property(__module_type ${the_module} TYPE) - if(__module_type STREQUAL "STATIC_LIBRARY") - #in case of static library we have to inherit its dependencies (in right order!!!) - if(NOT DEFINED ${the_module}_LIB_DEPENDS_${optkind}) - ocv_split_libs_list(${the_module}_LIB_DEPENDS ${the_module}_LIB_DEPENDS_DBG ${the_module}_LIB_DEPENDS_OPT) - endif() - - set(__resolved_deps "") - set(__mod_depends ${${the_module}_LIB_DEPENDS_${optkind}}) - set(__has_cycle FALSE) - - while(__mod_depends) - list(GET __mod_depends 0 __dep) - list(REMOVE_AT __mod_depends 0) - if(__dep STREQUAL the_module) - set(__has_cycle TRUE) - else()#if("${OPENCV_MODULES_BUILD}" MATCHES "(^|;)${__dep}(;|$)") - ocv_regex_escape(__rdep "${__dep}") - if(__resolved_deps MATCHES "(^|;)${__rdep}(;|$)") - #all dependencies of this module are already resolved - list(APPEND ${the_module}_MODULE_DEPS_${optkind} "${__dep}") - else() - get_target_property(__module_type ${__dep} TYPE) - if(__module_type STREQUAL "STATIC_LIBRARY") - if(NOT DEFINED ${__dep}_LIB_DEPENDS_${optkind}) - ocv_split_libs_list(${__dep}_LIB_DEPENDS ${__dep}_LIB_DEPENDS_DBG ${__dep}_LIB_DEPENDS_OPT) - endif() - list(INSERT __mod_depends 0 ${${__dep}_LIB_DEPENDS_${optkind}} ${__dep}) - list(APPEND __resolved_deps "${__dep}") - elseif(NOT __module_type) - list(APPEND ${the_module}_EXTRA_DEPS_${optkind} "${__dep}") - endif() - endif() - #else() - # get_target_property(__dep_location "${__dep}" LOCATION) - endif() - endwhile() - - ocv_list_unique(${the_module}_MODULE_DEPS_${optkind}) - #ocv_list_reverse(${the_module}_MODULE_DEPS_${optkind}) - ocv_list_unique(${the_module}_EXTRA_DEPS_${optkind}) - #ocv_list_reverse(${the_module}_EXTRA_DEPS_${optkind}) - - if(__has_cycle) - # not sure if it can work - list(APPEND ${the_module}_MODULE_DEPS_${optkind} "${the_module}") - endif() - - unset(__dep_location) - unset(__mod_depends) - unset(__resolved_deps) - unset(__has_cycle) - unset(__rdep) - endif()#STATIC_LIBRARY - unset(__module_type) - - #message("${the_module}_MODULE_DEPS_${optkind}") - #message(" ${${the_module}_MODULE_DEPS_${optkind}}") - #message(" ${OPENCV_MODULE_${the_module}_DEPS}") - #message("") - #message("${the_module}_EXTRA_DEPS_${optkind}") - #message(" ${${the_module}_EXTRA_DEPS_${optkind}}") - #message("") -endmacro() - -# creates lists of build dependencies needed for external projects -macro(ocv_track_build_dependencies) - foreach(m ${OPENCV_MODULES_BUILD}) - __ocv_track_module_link_dependencies("${m}" OPT) - __ocv_track_module_link_dependencies("${m}" DBG) - endforeach() -endmacro() diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake index 8af30f1151..e5fb90e6ff 100644 --- a/cmake/OpenCVPCHSupport.cmake +++ b/cmake/OpenCVPCHSupport.cmake @@ -68,6 +68,15 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) endif() ENDFOREACH(item) + get_target_property(DIRINC ${_PCH_current_target} INCLUDE_DIRECTORIES ) + FOREACH(item ${DIRINC}) + if(item MATCHES "^${OpenCV_SOURCE_DIR}/modules/") + LIST(APPEND ${_out_compile_flags} "${_PCH_include_prefix}\"${item}\"") + else() + LIST(APPEND ${_out_compile_flags} "${_PCH_isystem_prefix}\"${item}\"") + endif() + ENDFOREACH(item) + GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${OpenCV_SOURCE_DIR} DEFINITIONS) #MESSAGE("_directory_flags ${_directory_flags} ${_global_definitions}" ) @@ -254,6 +263,9 @@ MACRO(ADD_PRECOMPILED_HEADER _targetName _input) endif() endif() + get_target_property(DIRINC ${_targetName} INCLUDE_DIRECTORIES) + set_target_properties(${_targetName}_pch_dephelp PROPERTIES INCLUDE_DIRECTORIES "${DIRINC}") + #MESSAGE("_compile_FLAGS: ${_compile_FLAGS}") #message("COMMAND ${CMAKE_CXX_COMPILER} ${_compile_FLAGS} -x c++-header -o ${_output} ${_input}") diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake index f2a0197f82..a7d449f1b9 100644 --- a/cmake/OpenCVUtils.cmake +++ b/cmake/OpenCVUtils.cmake @@ -42,6 +42,11 @@ macro(ocv_assert) endif() endmacro() +macro(ocv_debug_message) +# string(REPLACE ";" " " __msg "${ARGN}") +# message(STATUS "${__msg}") +endmacro() + macro(ocv_check_environment_variables) foreach(_var ${ARGN}) if(NOT DEFINED ${_var} AND DEFINED ENV{${_var}}) @@ -53,8 +58,18 @@ macro(ocv_check_environment_variables) endforeach() endmacro() +# rename modules target to world if needed +macro(_ocv_fix_target target_var) + if(BUILD_opencv_world) + if(OPENCV_MODULE_${${target_var}}_IS_PART_OF_WORLD) + set(${target_var} opencv_world) + endif() + endif() +endmacro() + # adds include directories in such way that directories from the OpenCV source tree go first function(ocv_include_directories) + ocv_debug_message("ocv_include_directories( ${ARGN} )") set(__add_before "") foreach(dir ${ARGN}) get_filename_component(__abs_dir "${dir}" ABSOLUTE) @@ -67,6 +82,30 @@ function(ocv_include_directories) include_directories(BEFORE ${__add_before}) endfunction() +# adds include directories in such way that directories from the OpenCV source tree go first +function(ocv_target_include_directories target) + _ocv_fix_target(target) + set(__params "") + foreach(dir ${ARGN}) + get_filename_component(__abs_dir "${dir}" ABSOLUTE) + if("${__abs_dir}" MATCHES "^${OpenCV_SOURCE_DIR}" OR "${__abs_dir}" MATCHES "^${OpenCV_BINARY_DIR}") + list(APPEND __params "${__abs_dir}") + else() + list(APPEND __params "${dir}") + endif() + endforeach() + if(CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories(${__params}) + else() + if(TARGET ${target}) + target_include_directories(${target} PRIVATE ${__params}) + else() + set(__new_inc "${OCV_TARGET_INCLUDE_DIRS_${target}};${__params}") + set(OCV_TARGET_INCLUDE_DIRS_${target} "${__new_inc}" CACHE INTERNAL "") + endif() + endif() +endfunction() + # clears all passed variables macro(ocv_clear_vars) foreach(_var ${ARGN}) @@ -265,16 +304,19 @@ macro(CHECK_MODULE module_name define) set(${define} 1) foreach(P "${ALIAS_INCLUDE_DIRS}") if(${P}) + list(APPEND VIDEOIO_INCLUDE_DIRS ${${P}}) list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}}) endif() endforeach() foreach(P "${ALIAS_LIBRARY_DIRS}") if(${P}) + list(APPEND VIDEOIO_LIBRARY_DIRS ${${P}}) list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}}) endif() endforeach() + list(APPEND VIDEOIO_LIBRARIES ${${ALIAS_LIBRARIES}}) list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}}) endif() endif() @@ -292,8 +334,8 @@ endfunction() macro(ocv_finalize_status) if(NOT OPENCV_SKIP_STATUS_FINALIZATION) - if(TARGET opencv_core) - execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OPENCV_BUILD_INFO_FILE}" "${opencv_core_BINARY_DIR}/version_string.inc" OUTPUT_QUIET) + if(DEFINED OPENCV_MODULE_opencv_core_BINARY_DIR) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OPENCV_BUILD_INFO_FILE}" "${OPENCV_MODULE_opencv_core_BINARY_DIR}/version_string.inc" OUTPUT_QUIET) endif() endif() endmacro() @@ -530,16 +572,20 @@ function(ocv_install_target) # message(STATUS "Process ${__target} dst=${__dst}...") if(DEFINED __dst) - get_target_property(fname ${__target} LOCATION_DEBUG) - if(fname MATCHES "\\.lib$") - string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") - install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Debug) - endif() + if(CMAKE_VERSION VERSION_LESS 2.8.12) + get_target_property(fname ${__target} LOCATION_DEBUG) + if(fname MATCHES "\\.lib$") + string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") + install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Debug) + endif() - get_target_property(fname ${__target} LOCATION_RELEASE) - if(fname MATCHES "\\.lib$") - string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") - install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Release) + get_target_property(fname ${__target} LOCATION_RELEASE) + if(fname MATCHES "\\.lib$") + string(REGEX REPLACE "\\.lib$" ".pdb" fname "${fname}") + install(FILES ${fname} DESTINATION ${__dst} CONFIGURATIONS Release) + endif() + else() + # CMake 2.8.12 brokes PDB support in STATIC libraries for MSVS endif() endif() endif() @@ -634,6 +680,9 @@ endmacro() ################################################################################################ # short command to setup source group function(ocv_source_group group) + if(BUILD_opencv_world AND OPENCV_MODULE_${the_module}_IS_PART_OF_WORLD) + set(group "${the_module}\\${group}") + endif() cmake_parse_arguments(SG "" "DIRBASE" "GLOB;GLOB_RECURSE;FILES" ${ARGN}) set(files "") if(SG_FILES) @@ -666,3 +715,39 @@ function(ocv_source_group group) source_group(${group} FILES ${files}) endif() endfunction() + +function(ocv_target_link_libraries target) + _ocv_fix_target(target) + set(LINK_DEPS ${ARGN}) + # process world + if(BUILD_opencv_world) + foreach(m ${OPENCV_MODULES_BUILD}) + if(OPENCV_MODULE_${m}_IS_PART_OF_WORLD) + if(";${LINK_DEPS};" MATCHES ";${m};") + list(REMOVE_ITEM LINK_DEPS ${m}) + if(NOT (";${LINK_DEPS};" MATCHES ";opencv_world;")) + list(APPEND LINK_DEPS opencv_world) + endif() + endif() + endif() + endforeach() + endif() + target_link_libraries(${target} ${LINK_DEPS}) +endfunction() + +function(_ocv_append_target_includes target) + if(DEFINED OCV_TARGET_INCLUDE_DIRS_${target}) + target_include_directories(${target} PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}}) + unset(OCV_TARGET_INCLUDE_DIRS_${target} CACHE) + endif() +endfunction() + +function(ocv_add_executable target) + add_executable(${target} ${ARGN}) + _ocv_append_target_includes(${target}) +endfunction() + +function(ocv_add_library target) + add_library(${target} ${ARGN}) + _ocv_append_target_includes(${target}) +endfunction() \ No newline at end of file diff --git a/cmake/templates/OpenCVConfig.cmake.in b/cmake/templates/OpenCVConfig.cmake.in index 24a9374ef8..5d97474f3a 100644 --- a/cmake/templates/OpenCVConfig.cmake.in +++ b/cmake/templates/OpenCVConfig.cmake.in @@ -12,7 +12,7 @@ # # Or you can search for specific OpenCV modules: # -# find_package(OpenCV REQUIRED core highgui) +# find_package(OpenCV REQUIRED core videoio) # # If the module is found then OPENCV__FOUND is set to TRUE. # @@ -141,6 +141,7 @@ SET(OpenCV_VERSION_STATUS "@OPENCV_VERSION_STATUS@") # ==================================================================== SET(OpenCV_LIB_COMPONENTS @OPENCV_MODULES_CONFIGCMAKE@) +SET(OpenCV_WORLD_COMPONENTS @OPENCV_WORLD_MODULES@) # ============================================================== # Extra include directories, needed by OpenCV 2 new structure @@ -200,8 +201,8 @@ foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS}) message(WARNING "${__cvcomponent} is required but was not found") endif() #indicate that module is NOT found - string(TOUPPER "${__cvcomponent}" __cvcomponent) - set(${__cvcomponent}_FOUND "${__cvcomponent}_FOUND-NOTFOUND") + string(TOUPPER "${__cvcomponent}" __cvcomponentUP) + set(${__cvcomponentUP}_FOUND "${__cvcomponentUP}_FOUND-NOTFOUND") else() list(APPEND OpenCV_FIND_COMPONENTS_ ${__cvcomponent}) # Not using list(APPEND) here, because OpenCV_LIBS may not exist yet. @@ -209,8 +210,31 @@ foreach(__cvcomponent ${OpenCV_FIND_COMPONENTS}) # to find_package(OpenCV) with different component lists add up. set(OpenCV_LIBS ${OpenCV_LIBS} "${__cvcomponent}") #indicate that module is found - string(TOUPPER "${__cvcomponent}" __cvcomponent) - set(${__cvcomponent}_FOUND 1) + string(TOUPPER "${__cvcomponent}" __cvcomponentUP) + set(${__cvcomponentUP}_FOUND 1) + endif() + if(OpenCV_SHARED AND ";${OpenCV_WORLD_COMPONENTS};" MATCHES ";${__cvcomponent};" AND NOT TARGET ${__cvcomponent}) + get_target_property(__implib_dbg opencv_world IMPORTED_IMPLIB_DEBUG) + get_target_property(__implib_release opencv_world IMPORTED_IMPLIB_RELEASE) + get_target_property(__location_dbg opencv_world IMPORTED_LOCATION_DEBUG) + get_target_property(__location_release opencv_world IMPORTED_LOCATION_RELEASE) + add_library(${__cvcomponent} SHARED IMPORTED) + if(__location_dbg) + set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(${__cvcomponent} PROPERTIES + IMPORTED_IMPLIB_DEBUG "${__implib_dbg}" + IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG "" + IMPORTED_LOCATION_DEBUG "${__location_dbg}" + ) + endif() + if(__location_release) + set_property(TARGET ${__cvcomponent} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(${__cvcomponent} PROPERTIES + IMPORTED_IMPLIB_RELEASE "${__implib_release}" + IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "" + IMPORTED_LOCATION_RELEASE "${__location_release}" + ) + endif() endif() endforeach() set(OpenCV_FIND_COMPONENTS ${OpenCV_FIND_COMPONENTS_}) @@ -321,6 +345,7 @@ macro(ocv_check_dependencies) set(OCV_DEPENDENCIES_FOUND TRUE) foreach(d ${ARGN}) if(NOT TARGET ${d}) + message(WARNING "OpenCV: Can't resolve dependency: ${d}") set(OCV_DEPENDENCIES_FOUND FALSE) break() endif() @@ -346,6 +371,10 @@ macro(ocv_include_modules) include_directories(BEFORE "${OpenCV_INCLUDE_DIRS}") endmacro() +macro(ocv_target_link_libraries) + target_link_libraries(${ARGN}) +endmacro() + # remove all matching elements from the list macro(ocv_list_filterout lst regex) foreach(item ${${lst}}) diff --git a/cmake/templates/cvconfig.h.in b/cmake/templates/cvconfig.h.in index 081fca5fe8..3eea4fafe4 100644 --- a/cmake/templates/cvconfig.h.in +++ b/cmake/templates/cvconfig.h.in @@ -132,6 +132,9 @@ /* OpenNI library */ #cmakedefine HAVE_OPENNI +/* OpenNI library */ +#cmakedefine HAVE_OPENNI2 + /* PNG codec */ #cmakedefine HAVE_PNG diff --git a/data/haarcascades/haarcascade_mcs_eyepair_big.xml b/data/haarcascades/haarcascade_mcs_eyepair_big.xml deleted file mode 100644 index c3ac7a1bac..0000000000 --- a/data/haarcascades/haarcascade_mcs_eyepair_big.xml +++ /dev/null @@ -1,8827 +0,0 @@ - - - -BOOST - HAAR - 45 - 11 - - 85 - - 0 - 19 - - <_> - 4 - -1.4563479423522949e+00 - - <_> - - 0 -1 0 1.0129979997873306e-01 - - -7.9546368122100830e-01 7.8110837936401367e-01 - <_> - - 0 -1 1 3.1212110072374344e-02 - - -7.2823482751846313e-01 6.2244427204132080e-01 - <_> - - 0 -1 2 -5.4906789213418961e-02 - - 6.6794431209564209e-01 -6.0760712623596191e-01 - <_> - - 0 -1 3 1.3104109466075897e-01 - - -4.8816078901290894e-01 6.7495757341384888e-01 - <_> - 6 - -1.4917520284652710e+00 - - <_> - - 0 -1 4 1.5072830021381378e-01 - - -6.3909012079238892e-01 8.0536258220672607e-01 - <_> - - 0 -1 5 2.2887440398335457e-02 - - -7.2313660383224487e-01 3.9929839968681335e-01 - <_> - - 0 -1 6 2.7674660086631775e-02 - - -7.0643997192382812e-01 4.8853880167007446e-01 - <_> - - 0 -1 7 3.1899858266115189e-02 - - -4.2184171080589294e-01 5.3921532630920410e-01 - <_> - - 0 -1 8 3.6972828209400177e-02 - - -4.2400631308555603e-01 5.6811082363128662e-01 - <_> - - 0 -1 9 -1.6711089760065079e-02 - - 4.6170559525489807e-01 -4.2389839887619019e-01 - <_> - 11 - -1.6821570396423340e+00 - - <_> - - 0 -1 10 2.1208600699901581e-01 - - -6.5022879838943481e-01 5.9933120012283325e-01 - <_> - - 0 -1 11 -2.2745320573449135e-02 - - 5.1935321092605591e-01 -4.4163998961448669e-01 - <_> - - 0 -1 12 2.1561959758400917e-02 - - -6.4395201206207275e-01 5.1543998718261719e-01 - <_> - - 0 -1 13 8.7526358664035797e-02 - - -3.7235569953918457e-01 4.8228278756141663e-01 - <_> - - 0 -1 14 1.7132370267063379e-03 - - -6.2590628862380981e-01 3.1931561231613159e-01 - <_> - - 0 -1 15 -1.2182939797639847e-01 - - 4.4271498918533325e-01 -2.8492081165313721e-01 - <_> - - 0 -1 16 -1.6568049788475037e-02 - - 4.3862259387969971e-01 -3.0607050657272339e-01 - <_> - - 0 -1 17 -8.0553777515888214e-02 - - 6.0115402936935425e-01 -1.9848510622978210e-02 - <_> - - 0 -1 18 9.4548419117927551e-02 - - -2.5033459067344666e-01 4.8005449771881104e-01 - <_> - - 0 -1 19 -9.6633229404687881e-03 - - 2.1125659346580505e-01 -2.5508201122283936e-01 - <_> - - 0 -1 20 -1.7194730462506413e-03 - - -7.4376249313354492e-01 1.3561910390853882e-01 - <_> - 19 - -2.4261860847473145e+00 - - <_> - - 0 -1 21 -2.9845130443572998e-01 - - 5.7684171199798584e-01 -5.6365752220153809e-01 - <_> - - 0 -1 22 8.4831789135932922e-02 - - -4.8785820603370667e-01 3.0233600735664368e-01 - <_> - - 0 -1 23 4.8235268332064152e-03 - - -4.1680189967155457e-01 5.4730242490768433e-01 - <_> - - 0 -1 24 2.4796100333333015e-02 - - -4.0749680995941162e-01 2.9871928691864014e-01 - <_> - - 0 -1 25 7.8466311097145081e-03 - - -6.6262972354888916e-01 3.0879470705986023e-01 - <_> - - 0 -1 26 8.8172443211078644e-02 - - -1.9640329480171204e-01 1.7876540124416351e-01 - <_> - - 0 -1 27 6.7136192228645086e-04 - - -4.5652940869331360e-01 4.7216510772705078e-01 - <_> - - 0 -1 28 -5.8130059187533334e-05 - - 1.8948759883642197e-02 -2.7900961041450500e-01 - <_> - - 0 -1 29 -7.0680370554327965e-03 - - 4.3155920505523682e-01 -5.2287191152572632e-01 - <_> - - 0 -1 30 1.0486739687621593e-02 - - -6.2000381946563721e-01 4.0068510174751282e-01 - <_> - - 0 -1 31 3.0196599662303925e-02 - - -7.2579962015151978e-01 1.9102710485458374e-01 - <_> - - 0 -1 32 2.2740899585187435e-03 - - -7.4379247426986694e-01 1.4359140396118164e-01 - <_> - - 0 -1 33 2.8281889390200377e-03 - - -7.0359271764755249e-01 2.0774589478969574e-01 - <_> - - 0 -1 34 9.4722010544501245e-05 - - -6.8661361932754517e-01 2.3000240325927734e-01 - <_> - - 0 -1 35 5.8486708439886570e-05 - - -7.4927699565887451e-01 1.7420600354671478e-01 - <_> - - 0 -1 36 -5.3329051297623664e-05 - - 1.9545179605484009e-01 -6.4602172374725342e-01 - <_> - - 0 -1 37 -1.9914070435333997e-05 - - 3.1910550594329834e-01 -5.0005888938903809e-01 - <_> - - 0 -1 38 -2.8483340516686440e-02 - - 2.7206888794898987e-01 -1.7283840477466583e-01 - <_> - - 0 -1 39 -7.0301168598234653e-03 - - 4.9069970846176147e-01 -2.5846821069717407e-01 - <_> - 16 - -1.6515820026397705e+00 - - <_> - - 0 -1 40 1.7105689644813538e-01 - - -5.6416177749633789e-01 5.4754227399826050e-01 - <_> - - 0 -1 41 -1.0497429966926575e-01 - - 4.7274130582809448e-01 -4.5322591066360474e-01 - <_> - - 0 -1 42 -3.1381469219923019e-02 - - 4.9009248614311218e-01 -3.5930469632148743e-01 - <_> - - 0 -1 43 6.2426690012216568e-02 - - -3.1271660327911377e-01 3.7389820814132690e-01 - <_> - - 0 -1 44 5.4725550115108490e-02 - - -4.3851169943809509e-01 3.3310478925704956e-01 - <_> - - 0 -1 45 4.7346241772174835e-03 - - -6.4141207933425903e-01 2.5311610102653503e-01 - <_> - - 0 -1 46 7.9919751733541489e-03 - - -4.6805310249328613e-01 2.4310259521007538e-01 - <_> - - 0 -1 47 1.6218619421124458e-02 - - -3.6558291316032410e-01 1.9355100393295288e-01 - <_> - - 0 -1 48 -2.7070839423686266e-03 - - -6.2368887662887573e-01 1.5246219933032990e-01 - <_> - - 0 -1 49 -1.4570339582860470e-02 - - 2.5488319993019104e-01 -1.0177270323038101e-01 - <_> - - 0 -1 50 -7.4289329349994659e-02 - - -5.9631901979446411e-01 1.4141720533370972e-01 - <_> - - 0 -1 51 1.7482470721006393e-02 - - 6.8981222808361053e-02 -8.0752617120742798e-01 - <_> - - 0 -1 52 7.4595998739823699e-04 - - 8.9970856904983521e-02 -7.5478130578994751e-01 - <_> - - 0 -1 53 6.8119657039642334e-01 - - 1.2513290345668793e-01 -5.9507852792739868e-01 - <_> - - 0 -1 54 -3.2223601010628045e-04 - - -5.4766350984573364e-01 1.4170460402965546e-01 - <_> - - 0 -1 55 -1.3318139826878905e-03 - - -4.6108511090278625e-01 8.7741702795028687e-02 - <_> - 21 - -1.8342440128326416e+00 - - <_> - - 0 -1 56 7.9966977238655090e-02 - - -6.6598808765411377e-01 4.2352628707885742e-01 - <_> - - 0 -1 57 -2.7264660224318504e-02 - - 3.3973929286003113e-01 -5.0634992122650146e-01 - <_> - - 0 -1 58 2.8883190825581551e-02 - - -4.9011540412902832e-01 4.0123671293258667e-01 - <_> - - 0 -1 59 3.9732199162244797e-02 - - -4.7746640443801880e-01 2.0590600371360779e-01 - <_> - - 0 -1 60 -9.7214527428150177e-02 - - 4.5142328739166260e-01 -4.6996578574180603e-01 - <_> - - 0 -1 61 7.0403199642896652e-03 - - -5.0513231754302979e-01 1.8722230195999146e-01 - <_> - - 0 -1 62 1.0033249855041504e-02 - - -6.0716050863265991e-01 2.0498579740524292e-01 - <_> - - 0 -1 63 -2.2186320275068283e-03 - - 2.7919989824295044e-01 -3.9091849327087402e-01 - <_> - - 0 -1 64 7.2839930653572083e-02 - - -8.7004872038960457e-03 -4.3667841796875000e+03 - <_> - - 0 -1 65 -6.8644046783447266e-02 - - 5.4671740531921387e-01 -9.7120396792888641e-02 - <_> - - 0 -1 66 8.3757557149510831e-05 - - -4.3773889541625977e-01 2.0737740397453308e-01 - <_> - - 0 -1 67 -1.8882959848269820e-03 - - 2.8053081035614014e-01 -1.1238359659910202e-01 - <_> - - 0 -1 68 -3.6242630332708359e-02 - - -6.3709640502929688e-01 1.4787060022354126e-01 - <_> - - 0 -1 69 -3.3338118344545364e-02 - - 4.7268480062484741e-01 -2.1240149438381195e-01 - <_> - - 0 -1 70 2.5847079232335091e-03 - - 1.2344239652156830e-01 -7.4099230766296387e-01 - <_> - - 0 -1 71 -2.0372489467263222e-02 - - 1.3778980076313019e-01 -1.9940899312496185e-01 - <_> - - 0 -1 72 3.6333200987428427e-03 - - 7.9361379146575928e-02 -7.6000207662582397e-01 - <_> - - 0 -1 73 4.6827611513435841e-03 - - -6.6145867109298706e-02 1.7332559823989868e-01 - <_> - - 0 -1 74 -4.8445351421833038e-03 - - 4.4801148772239685e-01 -1.5643960237503052e-01 - <_> - - 0 -1 75 2.4819609522819519e-01 - - -8.6152970790863037e-02 3.3757150173187256e-01 - <_> - - 0 -1 76 1.9421289861202240e-01 - - -1.4059330523014069e-01 5.1121640205383301e-01 - <_> - 26 - -1.6580430269241333e+00 - - <_> - - 0 -1 77 -9.6888672560453415e-03 - - 3.8957211375236511e-01 -4.8118248581886292e-01 - <_> - - 0 -1 78 2.9810279607772827e-01 - - -4.8006340861320496e-01 3.9554169774055481e-01 - <_> - - 0 -1 79 -9.8945433273911476e-03 - - 4.2066010832786560e-01 -3.4448111057281494e-01 - <_> - - 0 -1 80 5.6289549916982651e-02 - - -2.3237819969654083e-01 4.2001250386238098e-01 - <_> - - 0 -1 81 2.8186529874801636e-02 - - -5.4988211393356323e-01 1.9484530389308929e-01 - <_> - - 0 -1 82 4.7115761786699295e-02 - - 1.6842770576477051e-01 -5.3077638149261475e-01 - <_> - - 0 -1 83 -3.1187951099127531e-03 - - 1.9679939746856689e-01 -3.7416198849678040e-01 - <_> - - 0 -1 84 1.9423909485340118e-02 - - -4.4669228792190552e-01 1.6852539777755737e-01 - <_> - - 0 -1 85 -2.6180699467658997e-01 - - -8.3780890703201294e-01 6.1774950474500656e-02 - <_> - - 0 -1 86 -4.8632198013365269e-03 - - -4.8009449243545532e-01 6.6771760582923889e-02 - <_> - - 0 -1 87 3.8411598652601242e-02 - - 1.3380399346351624e-01 -5.8349931240081787e-01 - <_> - - 0 -1 88 5.7644587941467762e-03 - - 8.2218721508979797e-02 -8.1420588493347168e-01 - <_> - - 0 -1 89 -2.7703220024704933e-02 - - 4.7253361344337463e-01 -1.4942400157451630e-01 - <_> - - 0 -1 90 2.9970629839226604e-04 - - -3.5082170367240906e-01 1.1788990348577499e-01 - <_> - - 0 -1 91 6.6997818648815155e-03 - - -1.5635940432548523e-01 3.6560869216918945e-01 - <_> - - 0 -1 92 1.8159940736950375e-05 - - -3.1400790810585022e-01 1.2775659561157227e-01 - <_> - - 0 -1 93 -2.3775480221956968e-03 - - -7.1568191051483154e-01 7.5858749449253082e-02 - <_> - - 0 -1 94 -4.4308858923614025e-03 - - -5.7954931259155273e-01 6.5880201756954193e-02 - <_> - - 0 -1 95 8.2603342831134796e-02 - - 7.0020496845245361e-02 -6.6175222396850586e-01 - <_> - - 0 -1 96 -8.3666313439607620e-03 - - -4.9013429880142212e-01 9.3764282763004303e-02 - <_> - - 0 -1 97 -4.2126090265810490e-03 - - -5.8547890186309814e-01 7.7719986438751221e-02 - <_> - - 0 -1 98 1.4681339962407947e-03 - - -2.4955469369888306e-01 1.1525829881429672e-01 - <_> - - 0 -1 99 5.7278228923678398e-03 - - -1.1968609690666199e-01 4.2483189702033997e-01 - <_> - - 0 -1 100 6.5779332071542740e-03 - - 2.8237590566277504e-02 -4.0717759728431702e-01 - <_> - - 0 -1 101 1.2635639905056451e-05 - - -3.2787650823593140e-01 1.4637599885463715e-01 - <_> - - 0 -1 102 -4.6048699878156185e-03 - - 1.8424710631370544e-01 -2.3546899855136871e-01 - <_> - 31 - -1.7386059761047363e+00 - - <_> - - 0 -1 103 6.1627078801393509e-02 - - -6.3852781057357788e-01 3.3314740657806396e-01 - <_> - - 0 -1 104 4.2768982239067554e-03 - - -4.2443430423736572e-01 4.3040299415588379e-01 - <_> - - 0 -1 105 4.6536661684513092e-03 - - -3.5712578892707825e-01 3.4206199645996094e-01 - <_> - - 0 -1 106 8.9929848909378052e-02 - - -3.0818319320678711e-01 3.1036278605461121e-01 - <_> - - 0 -1 107 7.4353553354740143e-02 - - -4.1107970476150513e-01 2.7357169985771179e-01 - <_> - - 0 -1 108 1.8687270348891616e-03 - - -3.2678169012069702e-01 1.8466979265213013e-01 - <_> - - 0 -1 109 -6.2053278088569641e-03 - - 3.1079730391502380e-01 -2.4444060027599335e-01 - <_> - - 0 -1 110 -1.6329739242792130e-02 - - 2.4938680231571198e-01 -3.8487339019775391e-01 - <_> - - 0 -1 111 1.1337800323963165e-01 - - -4.3810528516769409e-01 1.5818390250205994e-01 - <_> - - 0 -1 112 7.4822813272476196e-02 - - 7.7593952417373657e-02 -6.1711072921752930e-01 - <_> - - 0 -1 113 -4.5132860541343689e-02 - - 5.9627789258956909e-01 -1.0650890320539474e-01 - <_> - - 0 -1 114 -1.0261160321533680e-02 - - 3.4028670191764832e-01 -7.6013132929801941e-02 - <_> - - 0 -1 115 1.9562950183171779e-04 - - -3.2240030169487000e-01 1.5930220484733582e-01 - <_> - - 0 -1 116 1.2749910354614258e-02 - - 3.4237869083881378e-02 -8.2333010435104370e-01 - <_> - - 0 -1 117 1.0267910547554493e-03 - - -3.3482649922370911e-01 1.4868380129337311e-01 - <_> - - 0 -1 118 1.1899939738214016e-02 - - -1.1105280369520187e-01 2.9978659749031067e-01 - <_> - - 0 -1 119 9.4404807314276695e-03 - - 6.3143752515316010e-02 -7.4914127588272095e-01 - <_> - - 0 -1 120 -4.4033881276845932e-03 - - 1.5069060027599335e-01 -1.2134409695863724e-01 - <_> - - 0 -1 121 8.2504339516162872e-03 - - 6.5444067120552063e-02 -7.5574231147766113e-01 - <_> - - 0 -1 122 -1.1925470083951950e-02 - - 1.1579179763793945e-01 -1.8231560289859772e-01 - <_> - - 0 -1 123 2.3744169156998396e-03 - - -2.3897719383239746e-01 1.9362419843673706e-01 - <_> - - 0 -1 124 1.8954979255795479e-02 - - -7.3902383446693420e-02 9.5206938683986664e-02 - <_> - - 0 -1 125 -6.4718048088252544e-03 - - 1.8825650215148926e-01 -2.7421408891677856e-01 - <_> - - 0 -1 126 1.1885800398886204e-02 - - -7.9389132559299469e-02 3.9397639036178589e-01 - <_> - - 0 -1 127 3.9641708135604858e-03 - - -3.1416910886764526e-01 1.5722210705280304e-01 - <_> - - 0 -1 128 -1.5312650240957737e-02 - - 4.3467319011688232e-01 -8.0059163272380829e-02 - <_> - - 0 -1 129 -4.4087409041821957e-03 - - -6.9355368614196777e-01 7.2660736739635468e-02 - <_> - - 0 -1 130 2.6811350136995316e-02 - - -2.8735099360346794e-02 4.3056601285934448e-01 - <_> - - 0 -1 131 1.2916729785501957e-02 - - -7.9113177955150604e-02 5.6161957979202271e-01 - <_> - - 0 -1 132 -2.8802119195461273e-03 - - -6.6846042871475220e-01 7.7757932245731354e-02 - <_> - - 0 -1 133 -7.7549487352371216e-02 - - 6.9363379478454590e-01 -7.2858713567256927e-02 - <_> - 33 - -1.6643459796905518e+00 - - <_> - - 0 -1 134 1.1415310204029083e-01 - - -4.6382120251655579e-01 3.8176709413528442e-01 - <_> - - 0 -1 135 4.8969490453600883e-03 - - -1.8987430632114410e-01 3.6797779798507690e-01 - <_> - - 0 -1 136 2.1013330668210983e-02 - - -3.9102751016616821e-01 3.0523461103439331e-01 - <_> - - 0 -1 137 -8.5326731204986572e-03 - - 4.0289008617401123e-01 -3.7945809960365295e-01 - <_> - - 0 -1 138 2.2233189083635807e-03 - - -5.8341151475906372e-01 2.0504960417747498e-01 - <_> - - 0 -1 139 -8.9455489069223404e-03 - - 1.0734400153160095e-01 -1.4078269898891449e-01 - <_> - - 0 -1 140 -4.4652701035374776e-05 - - 3.1881740689277649e-01 -2.4204300343990326e-01 - <_> - - 0 -1 141 -2.7766218781471252e-01 - - 3.1993478536605835e-01 -2.3212060332298279e-01 - <_> - - 0 -1 142 2.9992889612913132e-02 - - -4.8636630177497864e-01 1.5733970701694489e-01 - <_> - - 0 -1 143 1.0384639725089073e-02 - - -3.5761609673500061e-01 1.0168769955635071e-01 - <_> - - 0 -1 144 -9.9069289863109589e-03 - - 3.4743508696556091e-01 -2.0619870722293854e-01 - <_> - - 0 -1 145 -9.3680381774902344e-02 - - 5.4358488321304321e-01 -7.3790967464447021e-02 - <_> - - 0 -1 146 4.6968900278443471e-05 - - -3.6511829495429993e-01 2.0056860148906708e-01 - <_> - - 0 -1 147 -8.3182547241449356e-03 - - -5.2089792490005493e-01 5.1686830818653107e-02 - <_> - - 0 -1 148 -1.1552570015192032e-01 - - -6.0911101102828979e-01 9.2298023402690887e-02 - <_> - - 0 -1 149 4.5758039050269872e-05 - - -2.4188159406185150e-01 1.1205270141363144e-01 - <_> - - 0 -1 150 8.3619967103004456e-02 - - -1.6591419279575348e-01 2.9946151375770569e-01 - <_> - - 0 -1 151 -1.7055140342563391e-03 - - 6.6100686788558960e-02 -1.7834219336509705e-01 - <_> - - 0 -1 152 -5.0255719572305679e-02 - - 5.0841152667999268e-01 -1.0191909968852997e-01 - <_> - - 0 -1 153 -1.4493470080196857e-02 - - 3.3411300182342529e-01 -9.1295331716537476e-02 - <_> - - 0 -1 154 6.6773351281881332e-03 - - 7.0742093026638031e-02 -7.1941351890563965e-01 - <_> - - 0 -1 155 -2.4902720469981432e-03 - - 2.7122259140014648e-01 -2.8118500113487244e-01 - <_> - - 0 -1 156 5.9668770991265774e-03 - - 8.6890019476413727e-02 -5.5102467536926270e-01 - <_> - - 0 -1 157 8.9923879131674767e-03 - - -1.1156769841909409e-01 1.8312740325927734e-01 - <_> - - 0 -1 158 -1.8761169631034136e-03 - - 1.6583199799060822e-01 -2.9823789000511169e-01 - <_> - - 0 -1 159 4.4691809453070164e-03 - - 6.7625999450683594e-02 -5.9995788335800171e-01 - <_> - - 0 -1 160 4.9513768404722214e-02 - - -1.1853209882974625e-01 4.0671309828758240e-01 - <_> - - 0 -1 161 -5.2096061408519745e-02 - - -4.9050968885421753e-01 4.4450759887695312e-02 - <_> - - 0 -1 162 -5.7540610432624817e-02 - - 2.2163380682468414e-01 -2.2697730362415314e-01 - <_> - - 0 -1 163 -1.2027090415358543e-02 - - -7.8315860033035278e-01 2.5225780904293060e-02 - <_> - - 0 -1 164 4.3592308647930622e-03 - - 7.8445762395858765e-02 -5.4399901628494263e-01 - <_> - - 0 -1 165 1.0845139622688293e-02 - - 4.3532259762287140e-02 -7.5301069021224976e-01 - <_> - - 0 -1 166 -2.2464629728347063e-04 - - 1.8881680071353912e-01 -2.1684129536151886e-01 - <_> - 36 - -1.5700939893722534e+00 - - <_> - - 0 -1 167 1.5167570114135742e-01 - - -3.1243559718132019e-01 3.9714258909225464e-01 - <_> - - 0 -1 168 -5.6243538856506348e-03 - - 2.8443521261215210e-01 -4.6888008713722229e-01 - <_> - - 0 -1 169 -1.3363420031964779e-02 - - 2.9847151041030884e-01 -2.8974089026451111e-01 - <_> - - 0 -1 170 1.1973579972982407e-01 - - -2.5059941411018372e-01 3.6980310082435608e-01 - <_> - - 0 -1 171 2.9538029804825783e-02 - - -5.3302282094955444e-01 1.9540609419345856e-01 - <_> - - 0 -1 172 2.2876099683344364e-03 - - -3.9356181025505066e-01 2.2455599904060364e-01 - <_> - - 0 -1 173 3.3369789889547974e-05 - - -4.2540431022644043e-01 1.2474709749221802e-01 - <_> - - 0 -1 174 1.2203590013086796e-02 - - -1.1117500066757202e-01 3.3035451173782349e-01 - <_> - - 0 -1 175 2.8831530362367630e-02 - - -2.6190409064292908e-01 2.6021391153335571e-01 - <_> - - 0 -1 176 2.3157240357249975e-03 - - 5.2618000656366348e-02 -6.1872607469558716e-01 - <_> - - 0 -1 177 3.3288369886577129e-03 - - 7.9465217888355255e-02 -6.1543351411819458e-01 - <_> - - 0 -1 178 -4.1650598868727684e-03 - - 2.2358900308609009e-01 -2.8173050284385681e-01 - <_> - - 0 -1 179 -5.5534418672323227e-02 - - 5.3370571136474609e-01 -9.7847342491149902e-02 - <_> - - 0 -1 180 1.0430039837956429e-02 - - -3.1936469674110413e-01 1.3222220540046692e-01 - <_> - - 0 -1 181 7.3731052875518799e-01 - - 8.5652276873588562e-02 -5.6832748651504517e-01 - <_> - - 0 -1 182 2.1106310188770294e-02 - - 1.0350720025599003e-02 -4.3624758720397949e-01 - <_> - - 0 -1 183 1.8394569633528590e-03 - - -3.0258610844612122e-01 1.8252749741077423e-01 - <_> - - 0 -1 184 -6.2626888975501060e-03 - - -7.0305782556533813e-01 3.4566838294267654e-02 - <_> - - 0 -1 185 -2.5872439146041870e-03 - - 1.9593180716037750e-01 -2.5039601325988770e-01 - <_> - - 0 -1 186 7.9651866108179092e-03 - - 5.6051678955554962e-02 -4.8542159795761108e-01 - <_> - - 0 -1 187 -2.6494610309600830e-01 - - -7.4813681840896606e-01 5.7292331010103226e-02 - <_> - - 0 -1 188 -8.7696090340614319e-03 - - 5.5027532577514648e-01 -9.8186388611793518e-02 - <_> - - 0 -1 189 9.3607688322663307e-03 - - 8.7964951992034912e-02 -6.3283741474151611e-01 - <_> - - 0 -1 190 6.7315441556274891e-03 - - -1.1990720033645630e-01 2.6050290465354919e-01 - <_> - - 0 -1 191 -4.8705069348216057e-03 - - -6.7054021358489990e-01 6.8369716405868530e-02 - <_> - - 0 -1 192 -3.3518500626087189e-02 - - 4.3754190206527710e-01 -5.5987328290939331e-02 - <_> - - 0 -1 193 7.6086460612714291e-03 - - -2.5253391265869141e-01 1.9854959845542908e-01 - <_> - - 0 -1 194 1.8334789201617241e-02 - - 8.3083607256412506e-02 -4.9109730124473572e-01 - <_> - - 0 -1 195 -2.7305909898132086e-03 - - -4.8166638612747192e-01 8.7030112743377686e-02 - <_> - - 0 -1 196 -2.5308089330792427e-02 - - -5.1370352506637573e-01 3.1775940209627151e-02 - <_> - - 0 -1 197 -6.7148888483643532e-03 - - -4.6419641375541687e-01 8.6918152868747711e-02 - <_> - - 0 -1 198 -1.3796479906886816e-03 - - 1.1364360153675079e-01 -1.0997840017080307e-01 - <_> - - 0 -1 199 -1.7988620325922966e-02 - - -5.6473308801651001e-01 8.4838069975376129e-02 - <_> - - 0 -1 200 1.2048670032527298e-04 - - -3.3594891428947449e-01 1.1819580197334290e-01 - <_> - - 0 -1 201 -7.3997122235596180e-03 - - -7.1109187602996826e-01 5.0271350890398026e-02 - <_> - - 0 -1 202 -4.4395271688699722e-03 - - 2.4038110673427582e-01 -8.4818542003631592e-02 - <_> - 37 - -1.5616159439086914e+00 - - <_> - - 0 -1 203 6.7837378010153770e-03 - - -2.4474079906940460e-01 5.2373462915420532e-01 - <_> - - 0 -1 204 -2.6304289698600769e-02 - - 2.3381529748439789e-01 -4.2366439104080200e-01 - <_> - - 0 -1 205 7.0552483201026917e-02 - - -4.8068380355834961e-01 2.1674250066280365e-01 - <_> - - 0 -1 206 1.1588639765977859e-01 - - -2.1499669551849365e-01 2.6753580570220947e-01 - <_> - - 0 -1 207 1.0048950091004372e-02 - - -2.0594270527362823e-01 4.0484279394149780e-01 - <_> - - 0 -1 208 1.4628170058131218e-02 - - 4.5195270329713821e-02 -4.3382239341735840e-01 - <_> - - 0 -1 209 1.0691519826650620e-01 - - -4.0005341172218323e-01 1.5653589367866516e-01 - <_> - - 0 -1 210 2.1544670686125755e-02 - - -3.8369441032409668e-01 1.2536710500717163e-01 - <_> - - 0 -1 211 5.0607468001544476e-03 - - -1.3730029761791229e-01 5.3118318319320679e-01 - <_> - - 0 -1 212 -4.9039809964597225e-03 - - -6.9460391998291016e-01 7.7118568122386932e-02 - <_> - - 0 -1 213 5.5592060089111328e-02 - - 8.4951102733612061e-02 -6.1610800027847290e-01 - <_> - - 0 -1 214 -5.3959678858518600e-02 - - -3.7826099991798401e-01 3.3103808760643005e-02 - <_> - - 0 -1 215 3.6401430406840518e-05 - - -3.6711519956588745e-01 1.3446779549121857e-01 - <_> - - 0 -1 216 -5.5411658249795437e-03 - - -5.7400441169738770e-01 7.4292019009590149e-02 - <_> - - 0 -1 217 7.9086691141128540e-01 - - 7.7422752976417542e-02 -6.3653308153152466e-01 - <_> - - 0 -1 218 4.4924449175596237e-03 - - 6.8504527211189270e-02 -5.3273099660873413e-01 - <_> - - 0 -1 219 -6.8721971474587917e-03 - - -6.5151798725128174e-01 6.4900688827037811e-02 - <_> - - 0 -1 220 4.6454541385173798e-02 - - -1.1238980293273926e-01 2.0744140446186066e-01 - <_> - - 0 -1 221 6.0355630703270435e-03 - - -8.8757097721099854e-02 5.4748558998107910e-01 - <_> - - 0 -1 222 3.9944230229593813e-04 - - 8.6624041199684143e-02 -4.6936568617820740e-01 - <_> - - 0 -1 223 7.5040599331259727e-03 - - -9.2116452753543854e-02 5.3663599491119385e-01 - <_> - - 0 -1 224 -1.5840120613574982e-02 - - 3.8116949796676636e-01 -6.9548472762107849e-02 - <_> - - 0 -1 225 5.7859481312334538e-03 - - 8.0815151333808899e-02 -5.5126720666885376e-01 - <_> - - 0 -1 226 -6.8534379824995995e-03 - - 2.0171649754047394e-01 -2.9816129803657532e-01 - <_> - - 0 -1 227 -3.2146628655027598e-05 - - 1.6275359690189362e-01 -2.5661829113960266e-01 - <_> - - 0 -1 228 4.8393569886684418e-02 - - 6.8830713629722595e-02 -5.7602387666702271e-01 - <_> - - 0 -1 229 4.5954588800668716e-02 - - 5.7024329900741577e-02 -6.5287989377975464e-01 - <_> - - 0 -1 230 1.1721630580723286e-03 - - 1.0443740338087082e-01 -2.3838600516319275e-01 - <_> - - 0 -1 231 4.0837051346898079e-03 - - -8.1231042742729187e-02 5.0901311635971069e-01 - <_> - - 0 -1 232 -1.6486380249261856e-02 - - -5.5164510011672974e-01 6.5037772059440613e-02 - <_> - - 0 -1 233 -1.5899680554866791e-02 - - -6.0929298400878906e-01 6.0179140418767929e-02 - <_> - - 0 -1 234 -3.7392228841781616e-04 - - -4.7092041373252869e-01 9.4327569007873535e-02 - <_> - - 0 -1 235 4.5171450823545456e-02 - - -1.5723140537738800e-01 2.5750550627708435e-01 - <_> - - 0 -1 236 3.9194729179143906e-03 - - -1.1993490159511566e-01 4.1458979249000549e-01 - <_> - - 0 -1 237 4.8551987856626511e-03 - - 8.4063969552516937e-02 -5.1544702053070068e-01 - <_> - - 0 -1 238 4.9727171659469604e-02 - - -8.0618113279342651e-02 2.8510481119155884e-01 - <_> - - 0 -1 239 -2.5979800149798393e-02 - - 2.0879699289798737e-01 -1.9923439621925354e-01 - <_> - 41 - -1.4751789569854736e+00 - - <_> - - 0 -1 240 3.6881880369037390e-03 - - -2.0089849829673767e-01 5.8759230375289917e-01 - <_> - - 0 -1 241 1.2514260411262512e-01 - - -3.3750560879707336e-01 3.0424299836158752e-01 - <_> - - 0 -1 242 1.0761030018329620e-02 - - -1.7004770040512085e-01 4.1313949227333069e-01 - <_> - - 0 -1 243 5.7919409126043320e-02 - - 1.1780419945716858e-01 -5.8375751972198486e-01 - <_> - - 0 -1 244 1.4278049580752850e-02 - - -5.2599787712097168e-01 1.3024589419364929e-01 - <_> - - 0 -1 245 9.2770338058471680e-02 - - -2.8803780674934387e-01 2.0918029546737671e-01 - <_> - - 0 -1 246 -1.2687300331890583e-03 - - -6.8545269966125488e-01 6.7969717085361481e-02 - <_> - - 0 -1 247 -4.1586877778172493e-03 - - 1.5776990354061127e-01 -3.7061429023742676e-01 - <_> - - 0 -1 248 -2.6486739516258240e-03 - - 1.4115740358829498e-01 -3.8789930939674377e-01 - <_> - - 0 -1 249 3.3513078960822895e-05 - - -1.7047059535980225e-01 9.1491073369979858e-02 - <_> - - 0 -1 250 4.1814000724116340e-05 - - -3.3629861474037170e-01 1.5615530312061310e-01 - <_> - - 0 -1 251 -1.0579999536275864e-02 - - 5.1775962114334106e-01 -1.2346430122852325e-01 - <_> - - 0 -1 252 9.6945222467184067e-03 - - -9.3172810971736908e-02 5.4562288522720337e-01 - <_> - - 0 -1 253 2.5123909115791321e-02 - - 2.9200939461588860e-02 -3.9561650156974792e-01 - <_> - - 0 -1 254 -1.9009890820598230e-05 - - 1.3413070142269135e-01 -3.5932931303977966e-01 - <_> - - 0 -1 255 1.1085460428148508e-03 - - 7.0447176694869995e-02 -5.0175982713699341e-01 - <_> - - 0 -1 256 8.4646381437778473e-02 - - -1.4077399671077728e-01 2.9327180981636047e-01 - <_> - - 0 -1 257 -4.6889279037714005e-02 - - 5.4173952341079712e-01 -7.2838932275772095e-02 - <_> - - 0 -1 258 -1.9944239407777786e-02 - - -4.9865978956222534e-01 9.5483623445034027e-02 - <_> - - 0 -1 259 2.3346049711108208e-03 - - -3.4936821460723877e-01 8.6551502346992493e-02 - <_> - - 0 -1 260 -1.2524469755589962e-02 - - 4.2317241430282593e-01 -1.0624880343675613e-01 - <_> - - 0 -1 261 7.4971290305256844e-03 - - -7.7121920883655548e-02 3.3112499117851257e-01 - <_> - - 0 -1 262 -4.3038600124418736e-03 - - 4.4627100229263306e-01 -9.7493350505828857e-02 - <_> - - 0 -1 263 -2.4376739747822285e-03 - - -6.3246351480484009e-01 7.2243332862854004e-02 - <_> - - 0 -1 264 4.0068682283163071e-03 - - 7.4511006474494934e-02 -5.2885991334915161e-01 - <_> - - 0 -1 265 1.6935829818248749e-01 - - 1.9200190901756287e-02 -9.3619912862777710e-01 - <_> - - 0 -1 266 -5.1640910096466541e-03 - - -4.5252829790115356e-01 8.3753086626529694e-02 - <_> - - 0 -1 267 2.1301470696926117e-03 - - 5.9029411524534225e-02 -5.9486192464828491e-01 - <_> - - 0 -1 268 -1.0491809807717800e-03 - - 1.4820049703121185e-01 -2.5729310512542725e-01 - <_> - - 0 -1 269 6.5077878534793854e-03 - - -1.0978510230779648e-01 4.8351821303367615e-01 - <_> - - 0 -1 270 1.0791060049086809e-03 - - 8.5893951356410980e-02 -4.9897330999374390e-01 - <_> - - 0 -1 271 -1.1327429674565792e-02 - - -8.8535779714584351e-01 1.2531019747257233e-02 - <_> - - 0 -1 272 -7.9090192914009094e-02 - - 5.3530997037887573e-01 -7.0534676313400269e-02 - <_> - - 0 -1 273 8.9392989873886108e-02 - - -2.3977179080247879e-02 5.4723167419433594e-01 - <_> - - 0 -1 274 -1.1642159894108772e-02 - - 2.4973329901695251e-01 -1.4847369492053986e-01 - <_> - - 0 -1 275 7.8169062733650208e-02 - - 4.7635629773139954e-02 -5.1396459341049194e-01 - <_> - - 0 -1 276 -5.2542597986757755e-03 - - -4.8597300052642822e-01 7.2495378553867340e-02 - <_> - - 0 -1 277 5.8305509388446808e-02 - - 1.6267899423837662e-02 -5.8864599466323853e-01 - <_> - - 0 -1 278 5.8591919951140881e-03 - - -3.1926271319389343e-01 1.3474270701408386e-01 - <_> - - 0 -1 279 -2.9373338911682367e-03 - - 4.2839759588241577e-01 -9.2287540435791016e-02 - <_> - - 0 -1 280 -3.7391098885564134e-05 - - 2.0448459684848785e-01 -1.8515400588512421e-01 - <_> - 49 - -1.5896049737930298e+00 - - <_> - - 0 -1 281 -6.1791189946234226e-03 - - 2.8580269217491150e-01 -3.7005850672721863e-01 - <_> - - 0 -1 282 4.1821770370006561e-02 - - -5.3575879335403442e-01 1.6827170550823212e-01 - <_> - - 0 -1 283 5.7136882096529007e-03 - - -3.2001748681068420e-01 2.6822981238365173e-01 - <_> - - 0 -1 284 2.8650460299104452e-03 - - -4.2462509870529175e-01 1.3827459514141083e-01 - <_> - - 0 -1 285 2.9460960067808628e-03 - - -3.9784219861030579e-01 2.0654679834842682e-01 - <_> - - 0 -1 286 4.6483702026307583e-03 - - -1.9075180590152740e-01 2.4786050617694855e-01 - <_> - - 0 -1 287 2.3228039499372244e-03 - - -5.2134007215499878e-01 1.0562290251255035e-01 - <_> - - 0 -1 288 -7.4393101967871189e-03 - - 1.6785180568695068e-01 -2.1561630070209503e-01 - <_> - - 0 -1 289 2.8299659607000649e-04 - - -3.8065499067306519e-01 1.4934809505939484e-01 - <_> - - 0 -1 290 -1.3282369822263718e-02 - - 8.6049616336822510e-02 -2.3779979348182678e-01 - <_> - - 0 -1 291 -1.1417060159146786e-02 - - 4.0117940306663513e-01 -1.3484360277652740e-01 - <_> - - 0 -1 292 -1.4769020676612854e-01 - - -4.8844268918037415e-01 1.5933260321617126e-02 - <_> - - 0 -1 293 -3.2284119515679777e-04 - - 1.1826100200414658e-01 -3.8623189926147461e-01 - <_> - - 0 -1 294 -3.6730729334522039e-05 - - 1.0511270165443420e-01 -1.2332110106945038e-01 - <_> - - 0 -1 295 4.3103349162265658e-04 - - 8.0074340105056763e-02 -5.6408351659774780e-01 - <_> - - 0 -1 296 -8.7611482013016939e-04 - - -4.1123768687248230e-01 3.5481810569763184e-02 - <_> - - 0 -1 297 -3.6012110649608076e-04 - - -3.9288720488548279e-01 1.0729379951953888e-01 - <_> - - 0 -1 298 1.1329179629683495e-02 - - -7.7669121325016022e-02 3.0630418658256531e-01 - <_> - - 0 -1 299 -8.5942242294549942e-03 - - 4.0262201428413391e-01 -1.1348369717597961e-01 - <_> - - 0 -1 300 -1.1088109575212002e-02 - - 1.3112230598926544e-01 -1.6582110524177551e-01 - <_> - - 0 -1 301 -2.3962128907442093e-03 - - 1.8446379899978638e-01 -2.1245540678501129e-01 - <_> - - 0 -1 302 1.4491369947791100e-03 - - 1.3291729986667633e-01 -3.4224191308021545e-01 - <_> - - 0 -1 303 -2.3471130989491940e-03 - - -5.9373968839645386e-01 5.2677150815725327e-02 - <_> - - 0 -1 304 -3.3021058887243271e-02 - - 2.0655089616775513e-01 -1.1640720069408417e-01 - <_> - - 0 -1 305 -1.7596699297428131e-02 - - 1.1615789681673050e-01 -2.8771498799324036e-01 - <_> - - 0 -1 306 9.0615563094615936e-02 - - 4.9429651349782944e-02 -5.9598392248153687e-01 - <_> - - 0 -1 307 -4.1973239183425903e-01 - - -9.1762787103652954e-01 2.9144510626792908e-02 - <_> - - 0 -1 308 -4.5256591401994228e-03 - - 3.0929449200630188e-01 -1.1589109897613525e-01 - <_> - - 0 -1 309 -3.1792598747415468e-05 - - 1.2300709635019302e-01 -2.6961469650268555e-01 - <_> - - 0 -1 310 9.3048512935638428e-03 - - -1.6311720013618469e-01 4.5435959100723267e-01 - <_> - - 0 -1 311 1.8182669579982758e-01 - - -6.5462931990623474e-02 5.2403932809829712e-01 - <_> - - 0 -1 312 7.6404958963394165e-03 - - -2.8455978631973267e-01 9.9262543022632599e-02 - <_> - - 0 -1 313 5.8155450969934464e-03 - - -1.8076479434967041e-01 1.9177889823913574e-01 - <_> - - 0 -1 314 2.0472649484872818e-02 - - -4.2547050863504410e-02 4.9899381399154663e-01 - <_> - - 0 -1 315 -9.9484594538807869e-03 - - 4.5864629745483398e-01 -8.2073070108890533e-02 - <_> - - 0 -1 316 5.6835189461708069e-03 - - 7.0460416376590729e-02 -4.9191218614578247e-01 - <_> - - 0 -1 317 6.8594329059123993e-04 - - -2.5722059607505798e-01 1.3338489830493927e-01 - <_> - - 0 -1 318 8.5325147956609726e-03 - - 5.4296270012855530e-02 -4.8597770929336548e-01 - <_> - - 0 -1 319 -2.9188990592956543e-03 - - -3.6844459176063538e-01 8.7630286812782288e-02 - <_> - - 0 -1 320 -5.1809879951179028e-03 - - 2.6872760057449341e-01 -1.3063269853591919e-01 - <_> - - 0 -1 321 -9.3669425696134567e-03 - - 3.7982439994812012e-01 -8.4970362484455109e-02 - <_> - - 0 -1 322 2.1493609528988600e-03 - - 6.7364171147346497e-02 -3.8138151168823242e-01 - <_> - - 0 -1 323 7.9133054241538048e-03 - - 6.1179801821708679e-02 -4.7124278545379639e-01 - <_> - - 0 -1 324 3.3651650883257389e-03 - - -1.9406950473785400e-01 1.6957849264144897e-01 - <_> - - 0 -1 325 5.9752619563369080e-05 - - -3.1296211481094360e-01 9.8244443535804749e-02 - <_> - - 0 -1 326 -4.8905829899013042e-03 - - 2.4011640250682831e-01 -4.0517911314964294e-02 - <_> - - 0 -1 327 -1.6692260280251503e-02 - - -5.8297210931777954e-01 5.1860880106687546e-02 - <_> - - 0 -1 328 2.6945179700851440e-01 - - 2.1222369745373726e-02 -5.0650900602340698e-01 - <_> - - 0 -1 329 2.5985699892044067e-01 - - 4.3021328747272491e-02 -6.9706851243972778e-01 - <_> - 54 - -1.5319960117340088e+00 - - <_> - - 0 -1 330 9.6479244530200958e-03 - - -2.1499650180339813e-01 4.5064011216163635e-01 - <_> - - 0 -1 331 1.1707089841365814e-01 - - -4.5927199721336365e-01 1.4997510612010956e-01 - <_> - - 0 -1 332 -7.2843180969357491e-03 - - 2.0559869706630707e-01 -3.4988620877265930e-01 - <_> - - 0 -1 333 4.3017291318392381e-05 - - -2.9128479957580566e-01 1.4479379355907440e-01 - <_> - - 0 -1 334 -1.6313560307025909e-02 - - 3.6099588871002197e-01 -1.4882080256938934e-01 - <_> - - 0 -1 335 3.8464391231536865e-01 - - 4.7116551548242569e-02 -5.4356420040130615e-01 - <_> - - 0 -1 336 4.4735490519087762e-05 - - -4.7153618931770325e-01 1.0130570083856583e-01 - <_> - - 0 -1 337 2.8128800913691521e-03 - - 2.5190239772200584e-02 -3.8858410716056824e-01 - <_> - - 0 -1 338 6.5664112567901611e-02 - - -1.9981299340724945e-01 2.7820420265197754e-01 - <_> - - 0 -1 339 3.6691401153802872e-02 - - -3.2141581177711487e-01 8.3295859396457672e-02 - <_> - - 0 -1 340 1.9937170669436455e-02 - - 9.6269257366657257e-02 -4.8872131109237671e-01 - <_> - - 0 -1 341 -4.8181511461734772e-02 - - -4.3690940737724304e-01 4.0801100432872772e-02 - <_> - - 0 -1 342 -6.4909900538623333e-03 - - 1.5237170457839966e-01 -2.8793171048164368e-01 - <_> - - 0 -1 343 -2.1715220063924789e-03 - - -4.5620518922805786e-01 9.0800173580646515e-02 - <_> - - 0 -1 344 -1.9035710021853447e-02 - - 1.6175259649753571e-01 -2.4115300178527832e-01 - <_> - - 0 -1 345 -1.7119180411100388e-02 - - -5.1326441764831543e-01 4.2472470551729202e-02 - <_> - - 0 -1 346 -1.8220050260424614e-02 - - -7.0324420928955078e-01 4.4962640851736069e-02 - <_> - - 0 -1 347 -8.9265108108520508e-03 - - 4.3140518665313721e-01 -1.9158810377120972e-01 - <_> - - 0 -1 348 -8.3519242703914642e-02 - - -6.1536192893981934e-01 7.4886828660964966e-02 - <_> - - 0 -1 349 3.6072250804863870e-04 - - 5.7905141264200211e-02 -4.1235160827636719e-01 - <_> - - 0 -1 350 4.9997381865978241e-03 - - -6.9844640791416168e-02 5.6807458400726318e-01 - <_> - - 0 -1 351 -8.4604680538177490e-02 - - 5.8838641643524170e-01 -6.4438559114933014e-02 - <_> - - 0 -1 352 -2.5773020461201668e-02 - - -7.4485701322555542e-01 5.8126550167798996e-02 - <_> - - 0 -1 353 8.6997799575328827e-02 - - 8.3158798515796661e-03 -5.0057667493820190e-01 - <_> - - 0 -1 354 -4.9193361774086952e-03 - - -5.0268518924713135e-01 6.2273811548948288e-02 - <_> - - 0 -1 355 7.9372245818376541e-03 - - -1.0656870156526566e-01 4.9397408962249756e-01 - <_> - - 0 -1 356 2.3460648953914642e-03 - - 7.8172452747821808e-02 -4.3537878990173340e-01 - <_> - - 0 -1 357 -2.4173699319362640e-02 - - 1.4930419623851776e-01 -1.8787060678005219e-01 - <_> - - 0 -1 358 5.0533721223473549e-03 - - -1.0777329653501511e-01 3.3679130673408508e-01 - <_> - - 0 -1 359 -1.7847840487957001e-01 - - 3.2536488771438599e-01 -4.3528459966182709e-02 - <_> - - 0 -1 360 -9.2971222475171089e-03 - - -5.4683762788772583e-01 6.4206808805465698e-02 - <_> - - 0 -1 361 -4.5331679284572601e-03 - - -2.7402278780937195e-01 6.9679208099842072e-02 - <_> - - 0 -1 362 4.4196969829499722e-03 - - -2.6736640930175781e-01 1.2777979671955109e-01 - <_> - - 0 -1 363 -2.4256419390439987e-02 - - -7.3339939117431641e-01 3.4833770245313644e-02 - <_> - - 0 -1 364 1.2094249948859215e-02 - - 6.7233562469482422e-02 -4.4198140501976013e-01 - <_> - - 0 -1 365 -3.1668329029344022e-04 - - -3.4792518615722656e-01 8.6957253515720367e-02 - <_> - - 0 -1 366 6.6463160328567028e-03 - - -7.4840560555458069e-02 4.2975288629531860e-01 - <_> - - 0 -1 367 -8.7216906249523163e-03 - - 6.5960638225078583e-02 -1.1695290356874466e-01 - <_> - - 0 -1 368 3.8271831726888195e-05 - - -2.6323419809341431e-01 1.2117200344800949e-01 - <_> - - 0 -1 369 -2.7925189584493637e-02 - - 1.1978749930858612e-01 -1.0626199841499329e-01 - <_> - - 0 -1 370 -3.6273279692977667e-03 - - 1.2563459575176239e-01 -2.6336249709129333e-01 - <_> - - 0 -1 371 -1.1868350207805634e-02 - - 2.7150759100914001e-01 -5.8620139956474304e-02 - <_> - - 0 -1 372 4.4153559952974319e-02 - - -1.1503530293703079e-01 3.1426700949668884e-01 - <_> - - 0 -1 373 2.4056360125541687e-02 - - 7.5575739145278931e-02 -4.2317551374435425e-01 - <_> - - 0 -1 374 6.9733301643282175e-04 - - -9.7587190568447113e-02 3.2876640558242798e-01 - <_> - - 0 -1 375 -6.4465990290045738e-03 - - -7.1510308980941772e-01 2.5225099176168442e-02 - <_> - - 0 -1 376 -8.1870909780263901e-03 - - -7.6685047149658203e-01 3.2576881349086761e-02 - <_> - - 0 -1 377 -2.7694210875779390e-03 - - 2.4075849354267120e-01 -1.4446850121021271e-01 - <_> - - 0 -1 378 5.9827328659594059e-03 - - -7.9637400805950165e-02 3.3648189902305603e-01 - <_> - - 0 -1 379 7.5759701430797577e-03 - - -7.7287860214710236e-02 3.6068120598793030e-01 - <_> - - 0 -1 380 -3.7349949125200510e-03 - - 3.5057601332664490e-01 -1.0241500288248062e-01 - <_> - - 0 -1 381 3.2173299696296453e-03 - - 6.4644902944564819e-02 -5.0682359933853149e-01 - <_> - - 0 -1 382 5.2299688104540110e-04 - - 5.5405199527740479e-02 -4.9950990080833435e-01 - <_> - - 0 -1 383 4.8098989645950496e-04 - - -2.4837599694728851e-01 7.4951313436031342e-02 - <_> - 63 - -1.5442479848861694e+00 - - <_> - - 0 -1 384 -3.2547898590564728e-02 - - 2.5708261132240295e-01 -3.2944089174270630e-01 - <_> - - 0 -1 385 4.6782270073890686e-02 - - -3.3552670478820801e-01 1.4950010180473328e-01 - <_> - - 0 -1 386 1.1599030112847686e-03 - - -2.1494610607624054e-01 2.9501560330390930e-01 - <_> - - 0 -1 387 4.7644421458244324e-02 - - -1.7128750681877136e-01 9.9497273564338684e-02 - <_> - - 0 -1 388 6.2301728874444962e-02 - - -3.8296920061111450e-01 1.8469420075416565e-01 - <_> - - 0 -1 389 1.6393130645155907e-02 - - -4.8794609308242798e-01 1.9131919741630554e-01 - <_> - - 0 -1 390 6.3293199054896832e-03 - - -1.8209590017795563e-01 2.8313478827476501e-01 - <_> - - 0 -1 391 6.4573478884994984e-03 - - 3.9345800876617432e-02 -5.2096349000930786e-01 - <_> - - 0 -1 392 -2.5518420152366161e-03 - - 2.1809610724449158e-01 -2.0214560627937317e-01 - <_> - - 0 -1 393 2.6448559947311878e-03 - - -9.7657637670636177e-03 -5.8440917730331421e-01 - <_> - - 0 -1 394 3.3177100704051554e-05 - - -2.9121240973472595e-01 1.3445389270782471e-01 - <_> - - 0 -1 395 -4.0287282317876816e-03 - - 2.7975788712501526e-01 -1.0854139924049377e-01 - <_> - - 0 -1 396 1.7501820111647248e-03 - - 8.0245189368724823e-02 -5.1040309667587280e-01 - <_> - - 0 -1 397 -9.8289866000413895e-03 - - 2.2203339636325836e-01 -2.5279709696769714e-01 - <_> - - 0 -1 398 -1.1355300433933735e-02 - - -5.6477332115173340e-01 6.1788219958543777e-02 - <_> - - 0 -1 399 6.1084949411451817e-03 - - -1.2973600625991821e-01 3.1682729721069336e-01 - <_> - - 0 -1 400 -1.0406709770904854e-04 - - 1.2907129526138306e-01 -2.5948029756546021e-01 - <_> - - 0 -1 401 2.6019159704446793e-03 - - 4.8421688377857208e-02 -5.4648971557617188e-01 - <_> - - 0 -1 402 -5.9403157792985439e-03 - - -5.5114412307739258e-01 5.9723380953073502e-02 - <_> - - 0 -1 403 -4.0788599289953709e-03 - - 7.9743288457393646e-02 -1.7927250266075134e-01 - <_> - - 0 -1 404 -8.8134910911321640e-03 - - 3.8017749786376953e-01 -8.6376570165157318e-02 - <_> - - 0 -1 405 -2.3983590304851532e-02 - - -4.9645310640335083e-01 5.4226141422986984e-02 - <_> - - 0 -1 406 3.9569390937685966e-03 - - 5.1663581281900406e-02 -5.6799358129501343e-01 - <_> - - 0 -1 407 -1.3359559699892998e-02 - - 2.3724800348281860e-01 -3.2083779573440552e-02 - <_> - - 0 -1 408 8.6046587675809860e-03 - - -8.2463279366493225e-02 4.0011510252952576e-01 - <_> - - 0 -1 409 -8.4893424063920975e-03 - - -5.2815818786621094e-01 6.8383157253265381e-02 - <_> - - 0 -1 410 7.7398498542606831e-03 - - -4.3508920073509216e-01 6.3567712903022766e-02 - <_> - - 0 -1 411 5.4778340272605419e-03 - - 2.4115180596709251e-02 -4.5364230871200562e-01 - <_> - - 0 -1 412 -5.3739761933684349e-03 - - -4.8526778817176819e-01 6.2529832124710083e-02 - <_> - - 0 -1 413 -6.5155163407325745e-02 - - 3.3586868643760681e-01 -1.1969889700412750e-01 - <_> - - 0 -1 414 3.1082800123840570e-03 - - -9.3668088316917419e-02 3.1569510698318481e-01 - <_> - - 0 -1 415 -5.6411409750580788e-03 - - 4.1902360320091248e-01 -5.2446529269218445e-02 - <_> - - 0 -1 416 1.0050649754703045e-02 - - 6.9715507328510284e-02 -4.8279500007629395e-01 - <_> - - 0 -1 417 -6.4478779677301645e-04 - - -3.9206001162528992e-01 2.6635570451617241e-02 - <_> - - 0 -1 418 4.2866038711508736e-05 - - -2.8287550806999207e-01 9.8806321620941162e-02 - <_> - - 0 -1 419 5.5659800767898560e-02 - - 3.4592561423778534e-02 -5.7936602830886841e-01 - <_> - - 0 -1 420 -1.9027240574359894e-02 - - 1.2798109650611877e-01 -2.2252650558948517e-01 - <_> - - 0 -1 421 -5.4886029101908207e-03 - - 2.2120019793510437e-01 -1.4247809350490570e-01 - <_> - - 0 -1 422 -9.1977212578058243e-03 - - 1.1419790238142014e-01 -2.5367730855941772e-01 - <_> - - 0 -1 423 1.5616010129451752e-01 - - -2.4698130786418915e-02 6.4977157115936279e-01 - <_> - - 0 -1 424 1.0394269973039627e-01 - - -4.7591820359230042e-02 6.7088091373443604e-01 - <_> - - 0 -1 425 2.3722560144960880e-03 - - -2.5346800684928894e-01 1.2758140265941620e-01 - <_> - - 0 -1 426 6.3766101375222206e-03 - - -8.0695442855358124e-02 4.2792451381683350e-01 - <_> - - 0 -1 427 -1.3368749991059303e-02 - - 1.0521420091390610e-01 -4.7770101577043533e-02 - <_> - - 0 -1 428 -5.6055800087051466e-05 - - 1.2017639726400375e-01 -2.5983789563179016e-01 - <_> - - 0 -1 429 2.6153340004384518e-03 - - 4.9611940979957581e-02 -4.0553820133209229e-01 - <_> - - 0 -1 430 -8.5704872617498040e-04 - - 3.6326551437377930e-01 -8.2753598690032959e-02 - <_> - - 0 -1 431 4.0100780315697193e-03 - - 4.0156569331884384e-02 -5.6216222047805786e-01 - <_> - - 0 -1 432 1.5721879899501801e-02 - - -1.1804500222206116e-01 2.4654519557952881e-01 - <_> - - 0 -1 433 -2.6668920181691647e-03 - - -5.4068821668624878e-01 4.3663289397954941e-02 - <_> - - 0 -1 434 4.1414599865674973e-02 - - -8.2976840436458588e-02 3.3884221315383911e-01 - <_> - - 0 -1 435 4.8187570646405220e-03 - - 4.3414391577243805e-02 -4.0724611282348633e-01 - <_> - - 0 -1 436 -5.4356600157916546e-03 - - 3.3830219507217407e-01 -9.0368166565895081e-02 - <_> - - 0 -1 437 -4.6245800331234932e-03 - - 4.8925418406724930e-02 -1.0818439722061157e-01 - <_> - - 0 -1 438 -5.0910529680550098e-03 - - 3.3953168988227844e-01 -7.7847503125667572e-02 - <_> - - 0 -1 439 -6.9446121342480183e-03 - - -3.6882779002189636e-01 3.4155908972024918e-02 - <_> - - 0 -1 440 -5.2966130897402763e-03 - - -4.6671220660209656e-01 5.5030699819326401e-02 - <_> - - 0 -1 441 8.2239676266908646e-03 - - -1.9418859854340553e-02 2.7148181200027466e-01 - <_> - - 0 -1 442 -6.9603421725332737e-03 - - 1.3864019513130188e-01 -2.1237270534038544e-01 - <_> - - 0 -1 443 -3.5027971025556326e-03 - - 4.8216879367828369e-01 -8.9572787284851074e-02 - <_> - - 0 -1 444 -3.3562759199412540e-05 - - 1.7753930389881134e-01 -1.5390409529209137e-01 - <_> - - 0 -1 445 -1.1905809864401817e-02 - - -4.4905489683151245e-01 4.8765189945697784e-02 - <_> - - 0 -1 446 1.0403740452602506e-03 - - 6.9199390709400177e-02 -3.9061141014099121e-01 - <_> - 68 - -1.5824840068817139e+00 - - <_> - - 0 -1 447 1.1477550119161606e-01 - - -3.5392341017723083e-01 2.4686269462108612e-01 - <_> - - 0 -1 448 -8.3238538354635239e-03 - - 3.5804480314254761e-01 -2.9096409678459167e-01 - <_> - - 0 -1 449 3.3069178462028503e-02 - - -4.5017778873443604e-01 1.4678280055522919e-01 - <_> - - 0 -1 450 -9.8486011847853661e-03 - - 1.5487630665302277e-01 -1.5467190742492676e-01 - <_> - - 0 -1 451 -3.6737930495291948e-03 - - 2.7250599861145020e-01 -2.0117540657520294e-01 - <_> - - 0 -1 452 -3.5203520674258471e-03 - - 2.1894049644470215e-01 -3.0996188521385193e-01 - <_> - - 0 -1 453 -2.9107630252838135e-03 - - 1.7095150053501129e-01 -2.5036340951919556e-01 - <_> - - 0 -1 454 1.1107170023024082e-02 - - -2.9383128881454468e-01 9.0500317513942719e-02 - <_> - - 0 -1 455 4.5277690514922142e-03 - - -3.6567330360412598e-01 7.1812681853771210e-02 - <_> - - 0 -1 456 1.6910480335354805e-03 - - -2.4635620415210724e-01 1.4365090429782867e-01 - <_> - - 0 -1 457 -5.2848931401968002e-02 - - -4.8988130688667297e-01 5.8866269886493683e-02 - <_> - - 0 -1 458 2.7257269248366356e-02 - - -1.3318820297718048e-01 1.7798610031604767e-01 - <_> - - 0 -1 459 -1.0774610191583633e-01 - - 7.5734657049179077e-01 -4.5793280005455017e-02 - <_> - - 0 -1 460 6.2365201301872730e-03 - - 7.6347790658473969e-02 -4.6734619140625000e-01 - <_> - - 0 -1 461 -3.2917850185185671e-03 - - 2.5657090544700623e-01 -1.3669669628143311e-01 - <_> - - 0 -1 462 -7.0988652296364307e-03 - - -7.3587757349014282e-01 5.6788709014654160e-02 - <_> - - 0 -1 463 -2.0502239465713501e-02 - - -6.1333388090133667e-01 4.0661100298166275e-02 - <_> - - 0 -1 464 -5.7894989848136902e-02 - - -4.2337441444396973e-01 1.6256660223007202e-02 - <_> - - 0 -1 465 -7.0625008083879948e-03 - - 1.5070070326328278e-01 -2.1530729532241821e-01 - <_> - - 0 -1 466 -1.4774609589949250e-03 - - 9.9447593092918396e-02 -1.9990250468254089e-01 - <_> - - 0 -1 467 -5.9045450761914253e-03 - - 2.3448540270328522e-01 -1.3239750266075134e-01 - <_> - - 0 -1 468 4.9114958383142948e-03 - - 5.5307600647211075e-02 -4.1024419665336609e-01 - <_> - - 0 -1 469 -4.0302358567714691e-02 - - 5.1089602708816528e-01 -6.7178718745708466e-02 - <_> - - 0 -1 470 -3.1478509306907654e-02 - - -3.5742738842964172e-01 3.4691110253334045e-02 - <_> - - 0 -1 471 -2.0419940119609237e-04 - - 1.1907909810543060e-01 -2.6256930828094482e-01 - <_> - - 0 -1 472 6.1496188864111900e-03 - - 3.8344919681549072e-02 -7.0752871036529541e-01 - <_> - - 0 -1 473 -6.4982818439602852e-03 - - -5.7135289907455444e-01 4.1346888989210129e-02 - <_> - - 0 -1 474 -2.0436770282685757e-03 - - 2.1547719836235046e-01 -9.2143923044204712e-02 - <_> - - 0 -1 475 8.4923263639211655e-03 - - 5.7075109332799911e-02 -5.3487390279769897e-01 - <_> - - 0 -1 476 -2.2661099210381508e-03 - - 2.7374848723411560e-01 -1.8907399475574493e-01 - <_> - - 0 -1 477 -3.8180600386112928e-03 - - -4.9997299909591675e-01 5.6287519633769989e-02 - <_> - - 0 -1 478 1.9832929968833923e-01 - - -4.9284029752016068e-02 3.0991891026496887e-01 - <_> - - 0 -1 479 -5.3573800250887871e-03 - - 3.6525368690490723e-01 -8.1586323678493500e-02 - <_> - - 0 -1 480 -4.1200658306479454e-03 - - -4.9979409575462341e-01 3.3759441226720810e-02 - <_> - - 0 -1 481 2.7241830248385668e-03 - - -7.4961036443710327e-02 4.0402159094810486e-01 - <_> - - 0 -1 482 -1.1279270052909851e-02 - - -6.2540912628173828e-01 4.0539268404245377e-02 - <_> - - 0 -1 483 -2.6438670232892036e-02 - - 6.2469798326492310e-01 -5.0695668905973434e-02 - <_> - - 0 -1 484 9.3085810542106628e-02 - - -2.7736229822039604e-02 1.2201499938964844e-01 - <_> - - 0 -1 485 3.6821569665335119e-04 - - 6.3227869570255280e-02 -4.5462760329246521e-01 - <_> - - 0 -1 486 -2.6150209829211235e-02 - - 2.1615530550479889e-01 -3.4189209342002869e-02 - <_> - - 0 -1 487 -1.5219129621982574e-01 - - -5.6291139125823975e-01 5.0881389528512955e-02 - <_> - - 0 -1 488 -5.3802412003278732e-03 - - 1.1969149857759476e-01 -4.5463770627975464e-02 - <_> - - 0 -1 489 3.1421401072293520e-03 - - 3.5171128809452057e-02 -7.5333297252655029e-01 - <_> - - 0 -1 490 -2.3642999585717916e-03 - - -7.8145317733287811e-02 3.6591161042451859e-02 - <_> - - 0 -1 491 -3.4253650810569525e-03 - - 2.7961251139640808e-01 -1.0286819934844971e-01 - <_> - - 0 -1 492 -1.0126389563083649e-02 - - 1.2946769595146179e-01 -2.0795370638370514e-01 - <_> - - 0 -1 493 9.5109362155199051e-03 - - -6.4487166702747345e-02 4.5304939150810242e-01 - <_> - - 0 -1 494 -2.8382990509271622e-02 - - 1.8103609979152679e-01 -1.2647239863872528e-01 - <_> - - 0 -1 495 7.2591200470924377e-02 - - -1.3137449324131012e-01 2.1626609563827515e-01 - <_> - - 0 -1 496 5.6936382316052914e-03 - - -7.3818109929561615e-02 1.0788620263338089e-01 - <_> - - 0 -1 497 -5.4796910844743252e-03 - - 4.1715219616889954e-01 -6.7778319120407104e-02 - <_> - - 0 -1 498 -6.8001292645931244e-02 - - -5.7230949401855469e-01 5.9687018394470215e-02 - <_> - - 0 -1 499 4.1796491132117808e-05 - - -3.6016240715980530e-01 6.7770622670650482e-02 - <_> - - 0 -1 500 -6.0458998195827007e-03 - - -6.6702812910079956e-01 2.0666399970650673e-02 - <_> - - 0 -1 501 -8.9402851881459355e-04 - - 1.8525250256061554e-01 -1.3367660343647003e-01 - <_> - - 0 -1 502 -5.2337357774376869e-03 - - -6.4259058237075806e-01 3.8245800882577896e-02 - <_> - - 0 -1 503 -1.0876660235226154e-02 - - -6.5612989664077759e-01 3.0916240066289902e-02 - <_> - - 0 -1 504 1.0764590464532375e-02 - - -1.2209519743919373e-01 2.3244349658489227e-01 - <_> - - 0 -1 505 6.2717488035559654e-03 - - 3.6665380001068115e-02 -6.4267098903656006e-01 - <_> - - 0 -1 506 3.9870911277830601e-03 - - -1.0013840347528458e-01 2.6687619090080261e-01 - <_> - - 0 -1 507 5.6966538541018963e-03 - - 4.1680138558149338e-02 -6.2925517559051514e-01 - <_> - - 0 -1 508 -2.4660900235176086e-03 - - 3.0375760793685913e-01 -8.9954569935798645e-02 - <_> - - 0 -1 509 4.3577459291554987e-04 - - 5.6845329701900482e-02 -4.4916090369224548e-01 - <_> - - 0 -1 510 -8.6022150935605168e-04 - - -3.1331560015678406e-01 2.2231949493288994e-02 - <_> - - 0 -1 511 -3.6151748645352200e-05 - - 1.6037069261074066e-01 -1.5645219385623932e-01 - <_> - - 0 -1 512 -1.2417449615895748e-03 - - 3.6251470446586609e-01 -6.8029686808586121e-02 - <_> - - 0 -1 513 -9.3716438859701157e-03 - - -6.5667027235031128e-01 3.9296999573707581e-02 - <_> - - 0 -1 514 5.0649640616029501e-04 - - -9.9897801876068115e-02 2.5486990809440613e-01 - <_> - 71 - -1.4470269680023193e+00 - - <_> - - 0 -1 515 6.9536222144961357e-03 - - -3.0070298910140991e-01 2.8844910860061646e-01 - <_> - - 0 -1 516 1.5524399280548096e-01 - - -2.8483951091766357e-01 1.2542790174484253e-01 - <_> - - 0 -1 517 -9.5990058034658432e-03 - - 2.6636219024658203e-01 -2.2467589378356934e-01 - <_> - - 0 -1 518 8.2325551193207502e-04 - - -1.5014129877090454e-01 1.7611239850521088e-01 - <_> - - 0 -1 519 -6.3837850466370583e-03 - - -5.3211832046508789e-01 8.8923923671245575e-02 - <_> - - 0 -1 520 -1.8110420554876328e-02 - - 2.9294028878211975e-01 -1.8418279290199280e-01 - <_> - - 0 -1 521 -2.2221719846129417e-03 - - 2.3608820140361786e-01 -1.8082359433174133e-01 - <_> - - 0 -1 522 -4.2745987884700298e-03 - - 1.1372009664773941e-01 -2.8232550621032715e-01 - <_> - - 0 -1 523 -1.1924340389668941e-02 - - 3.0177098512649536e-01 -1.3063450157642365e-01 - <_> - - 0 -1 524 2.1337319631129503e-03 - - -2.0078870654106140e-01 1.0759650170803070e-01 - <_> - - 0 -1 525 3.9748410927131772e-05 - - -3.3652520179748535e-01 9.8408773541450500e-02 - <_> - - 0 -1 526 -7.4939359910786152e-03 - - 4.4728818535804749e-01 -1.2359820306301117e-01 - <_> - - 0 -1 527 -5.4673082195222378e-03 - - -3.7992051243782043e-01 9.0167470276355743e-02 - <_> - - 0 -1 528 -4.6410970389842987e-02 - - -4.7909379005432129e-01 2.2162070497870445e-02 - <_> - - 0 -1 529 -1.8335790373384953e-03 - - 1.4062260091304779e-01 -2.7500510215759277e-01 - <_> - - 0 -1 530 3.2272320822812617e-04 - - 4.4330291450023651e-02 -3.1671470403671265e-01 - <_> - - 0 -1 531 -2.0776148885488510e-03 - - 4.1858351230621338e-01 -7.0875823497772217e-02 - <_> - - 0 -1 532 -7.9464362934231758e-03 - - -7.9281628131866455e-01 1.9778270274400711e-02 - <_> - - 0 -1 533 1.8161779735237360e-03 - - -3.5335579514503479e-01 8.0757312476634979e-02 - <_> - - 0 -1 534 -1.3951859727967530e-04 - - 8.7176196277141571e-02 -2.3442719876766205e-01 - <_> - - 0 -1 535 -3.0605921056121588e-03 - - 1.9965550303459167e-01 -1.4475509524345398e-01 - <_> - - 0 -1 536 -3.5044189542531967e-02 - - -4.6923148632049561e-01 6.3744127750396729e-02 - <_> - - 0 -1 537 2.2343990206718445e-01 - - 3.6188349127769470e-02 -6.7740142345428467e-01 - <_> - - 0 -1 538 6.2643741257488728e-03 - - 5.3922589868307114e-02 -2.9957211017608643e-01 - <_> - - 0 -1 539 5.1456191577017307e-03 - - -8.5695646703243256e-02 3.4958600997924805e-01 - <_> - - 0 -1 540 -4.5792991295456886e-04 - - -3.7274828553199768e-01 5.2098128944635391e-02 - <_> - - 0 -1 541 -8.9521985501050949e-03 - - -5.5943322181701660e-01 4.5037239789962769e-02 - <_> - - 0 -1 542 -8.8845528662204742e-03 - - -8.2152491807937622e-01 1.9023310393095016e-02 - <_> - - 0 -1 543 -8.3964038640260696e-04 - - 1.3553179800510406e-01 -1.9439619779586792e-01 - <_> - - 0 -1 544 5.7581579312682152e-03 - - 3.4872371703386307e-02 -6.1317610740661621e-01 - <_> - - 0 -1 545 -3.2971119508147240e-03 - - 2.0933049917221069e-01 -1.1797709763050079e-01 - <_> - - 0 -1 546 6.6358018666505814e-03 - - -1.2625180184841156e-01 2.3151409626007080e-01 - <_> - - 0 -1 547 9.1771818697452545e-03 - - 4.2256359010934830e-02 -6.4281421899795532e-01 - <_> - - 0 -1 548 -1.8898380920290947e-02 - - -5.4784798622131348e-01 2.4022759869694710e-02 - <_> - - 0 -1 549 -1.3961439952254295e-02 - - 1.3342179358005524e-01 -1.8949310481548309e-01 - <_> - - 0 -1 550 3.9351810701191425e-03 - - 1.2323100119829178e-02 -4.8017400503158569e-01 - <_> - - 0 -1 551 2.8737629763782024e-03 - - -6.3833169639110565e-02 3.8450908660888672e-01 - <_> - - 0 -1 552 -2.1502410527318716e-03 - - 2.4967829883098602e-01 -8.3693861961364746e-02 - <_> - - 0 -1 553 -2.0945349708199501e-02 - - -4.6581479907035828e-01 5.9967949986457825e-02 - <_> - - 0 -1 554 1.2025360483676195e-03 - - -7.4031457304954529e-02 2.6217839121818542e-01 - <_> - - 0 -1 555 -1.2649910058826208e-03 - - -5.6358098983764648e-01 4.7350831329822540e-02 - <_> - - 0 -1 556 -3.5608751204563305e-05 - - 8.3944819867610931e-02 -9.2339277267456055e-02 - <_> - - 0 -1 557 1.7638429999351501e-03 - - -6.7106232047080994e-02 3.5390651226043701e-01 - <_> - - 0 -1 558 2.6478520594537258e-03 - - 4.9792490899562836e-02 -5.6108528375625610e-01 - <_> - - 0 -1 559 1.1421759845688939e-03 - - -8.0566927790641785e-02 3.1899300217628479e-01 - <_> - - 0 -1 560 -3.7144690286368132e-03 - - -2.1286490559577942e-01 6.6972009837627411e-02 - <_> - - 0 -1 561 4.6520791947841644e-03 - - 5.9289190918207169e-02 -4.5674440264701843e-01 - <_> - - 0 -1 562 -4.7056251205503941e-03 - - -2.4541069567203522e-01 2.4544840678572655e-02 - <_> - - 0 -1 563 7.1251969784498215e-03 - - 3.8318928331136703e-02 -6.4973872900009155e-01 - <_> - - 0 -1 564 -6.7658387124538422e-02 - - 4.0030410885810852e-01 -3.2079871743917465e-02 - <_> - - 0 -1 565 3.5729840397834778e-02 - - -7.0430107414722443e-02 3.0633118748664856e-01 - <_> - - 0 -1 566 -3.3828441053628922e-02 - - 5.0491297245025635e-01 -3.5456459969282150e-02 - <_> - - 0 -1 567 1.3351860456168652e-02 - - -1.7890280485153198e-01 1.4767180383205414e-01 - <_> - - 0 -1 568 8.7488196790218353e-02 - - 4.3538779020309448e-02 -4.6793699264526367e-01 - <_> - - 0 -1 569 3.6777120549231768e-03 - - -2.0427100360393524e-01 1.5148130059242249e-01 - <_> - - 0 -1 570 1.0766600025817752e-03 - - -9.6319787204265594e-02 3.5530230402946472e-01 - <_> - - 0 -1 571 5.2243531681597233e-03 - - 5.3389668464660645e-02 -4.5717859268188477e-01 - <_> - - 0 -1 572 -9.5345107838511467e-03 - - 1.4912480115890503e-01 -1.4985750615596771e-01 - <_> - - 0 -1 573 4.2573010432533920e-05 - - -1.3890530169010162e-01 1.5467180311679840e-01 - <_> - - 0 -1 574 -1.5596169978380203e-03 - - -5.4723149538040161e-01 3.4767109900712967e-02 - <_> - - 0 -1 575 7.6222111238166690e-04 - - -7.8980550169944763e-02 2.8355160355567932e-01 - <_> - - 0 -1 576 -2.1907720714807510e-02 - - -4.3671789765357971e-01 5.1701240241527557e-02 - <_> - - 0 -1 577 4.6507688239216805e-05 - - -3.1914091110229492e-01 6.2482111155986786e-02 - <_> - - 0 -1 578 -2.9253138927742839e-04 - - -2.4766990542411804e-01 8.4014937281608582e-02 - <_> - - 0 -1 579 3.0009269248694181e-03 - - -1.1042869836091995e-01 1.9720460474491119e-01 - <_> - - 0 -1 580 8.7042397353798151e-04 - - 6.7197367548942566e-02 -1.8366929888725281e-01 - <_> - - 0 -1 581 7.6602102490141988e-04 - - -6.4485676586627960e-02 3.2467260956764221e-01 - <_> - - 0 -1 582 3.3248408726649359e-05 - - -9.8362646996974945e-02 8.6462937295436859e-02 - <_> - - 0 -1 583 1.2568470556288958e-03 - - 4.9354679882526398e-02 -4.3177890777587891e-01 - <_> - - 0 -1 584 -9.7309090197086334e-03 - - -2.7393120527267456e-01 3.9641439914703369e-02 - <_> - - 0 -1 585 5.8255670592188835e-03 - - -7.0380076766014099e-02 3.0546179413795471e-01 - <_> - 77 - -1.4913309812545776e+00 - - <_> - - 0 -1 586 -6.9308779202401638e-03 - - 2.3897680640220642e-01 -3.3735579252243042e-01 - <_> - - 0 -1 587 6.3356258906424046e-03 - - -2.0606219768524170e-01 2.4546289443969727e-01 - <_> - - 0 -1 588 3.2951928675174713e-02 - - -4.8151299357414246e-01 1.3534410297870636e-01 - <_> - - 0 -1 589 -2.0294299349188805e-02 - - 2.4425999820232391e-01 -3.0648550391197205e-01 - <_> - - 0 -1 590 -8.0935731530189514e-03 - - 2.1754260361194611e-01 -2.3051339387893677e-01 - <_> - - 0 -1 591 -3.2209409400820732e-03 - - 2.4082750082015991e-01 -1.4753510057926178e-01 - <_> - - 0 -1 592 3.6949120461940765e-02 - - -2.8758960962295532e-01 1.7237929999828339e-01 - <_> - - 0 -1 593 1.0001210030168295e-03 - - -1.8483549356460571e-01 1.0649669915437698e-01 - <_> - - 0 -1 594 -4.9832418881123886e-05 - - 1.0084930062294006e-01 -3.7289780378341675e-01 - <_> - - 0 -1 595 4.6645071357488632e-02 - - 7.1331411600112915e-02 -4.2174908518791199e-01 - <_> - - 0 -1 596 2.9729669913649559e-03 - - -2.3385779559612274e-01 1.5728150308132172e-01 - <_> - - 0 -1 597 1.1885419953614473e-03 - - -2.1615119278430939e-01 8.5435479879379272e-02 - <_> - - 0 -1 598 -2.5504899676889181e-03 - - 2.4453009665012360e-01 -1.3642320036888123e-01 - <_> - - 0 -1 599 1.4580690301954746e-02 - - 6.3050612807273865e-02 -4.3805420398712158e-01 - <_> - - 0 -1 600 1.7621000006329268e-04 - - -3.5026490688323975e-01 9.7995147109031677e-02 - <_> - - 0 -1 601 -1.0763060301542282e-02 - - -5.5614972114562988e-01 5.2613109350204468e-02 - <_> - - 0 -1 602 -1.7733459826558828e-03 - - 2.1240839362144470e-01 -1.2885910272598267e-01 - <_> - - 0 -1 603 -5.6170229800045490e-03 - - -5.7895171642303467e-01 2.7056280523538589e-02 - <_> - - 0 -1 604 7.8137779235839844e-01 - - 4.3512191623449326e-02 -5.1112377643585205e-01 - <_> - - 0 -1 605 1.5521559864282608e-02 - - 1.7887489870190620e-02 -4.2302969098091125e-01 - <_> - - 0 -1 606 -6.0149789787828922e-03 - - -6.1993318796157837e-01 4.1468121111392975e-02 - <_> - - 0 -1 607 -1.2032959610223770e-02 - - 3.7520378828048706e-01 -5.2101939916610718e-02 - <_> - - 0 -1 608 5.7090952759608626e-04 - - -2.3000800609588623e-01 1.3806359469890594e-01 - <_> - - 0 -1 609 -3.5141059925081208e-05 - - 1.3613599538803101e-01 -1.3633610308170319e-01 - <_> - - 0 -1 610 3.8827958633191884e-04 - - 6.2043979763984680e-02 -4.0999558568000793e-01 - <_> - - 0 -1 611 -3.1813879031687975e-03 - - 4.3042609095573425e-01 -5.8574389666318893e-02 - <_> - - 0 -1 612 1.2359759770333767e-02 - - -5.3425218909978867e-02 4.4235768914222717e-01 - <_> - - 0 -1 613 5.3630769252777100e-03 - - 4.8345729708671570e-02 -3.6919850111007690e-01 - <_> - - 0 -1 614 6.7529240623116493e-03 - - -6.7788898944854736e-02 4.0632560849189758e-01 - <_> - - 0 -1 615 -1.1506180278956890e-02 - - -2.4940669536590576e-01 3.0043790116906166e-02 - <_> - - 0 -1 616 -6.5450267866253853e-03 - - -5.0393360853195190e-01 5.1048409193754196e-02 - <_> - - 0 -1 617 -6.4059509895741940e-03 - - -7.8335607051849365e-01 7.0806178264319897e-03 - <_> - - 0 -1 618 -4.7279968857765198e-03 - - -6.8467348814010620e-01 3.3867139369249344e-02 - <_> - - 0 -1 619 -5.2285747369751334e-04 - - 1.4660769701004028e-01 -6.7289963364601135e-02 - <_> - - 0 -1 620 -9.3035101890563965e-03 - - -4.0989071130752563e-01 5.7299319654703140e-02 - <_> - - 0 -1 621 6.8128891289234161e-03 - - 4.2919881641864777e-02 -2.4730630218982697e-01 - <_> - - 0 -1 622 4.6791278873570263e-04 - - -7.5994156301021576e-02 3.0771958827972412e-01 - <_> - - 0 -1 623 2.3431669920682907e-02 - - 1.0545349679887295e-02 -4.1394978761672974e-01 - <_> - - 0 -1 624 9.2174801975488663e-03 - - 5.8044180274009705e-02 -4.0034890174865723e-01 - <_> - - 0 -1 625 -7.8371819108724594e-03 - - 1.2945890426635742e-01 -7.3255613446235657e-02 - <_> - - 0 -1 626 3.5635009407997131e-03 - - -7.1402922272682190e-02 3.4709578752517700e-01 - <_> - - 0 -1 627 -5.3719929419457912e-03 - - 6.9731049239635468e-02 -6.1688169836997986e-02 - <_> - - 0 -1 628 4.3290190398693085e-02 - - 5.0334971398115158e-02 -4.5517569780349731e-01 - <_> - - 0 -1 629 -4.6179331839084625e-03 - - -4.9110341072082520e-01 3.5927779972553253e-02 - <_> - - 0 -1 630 -7.0018521510064602e-03 - - -6.0634332895278931e-01 3.3043950796127319e-02 - <_> - - 0 -1 631 -2.0546320825815201e-02 - - 3.7467220425605774e-01 -6.0966350138187408e-02 - <_> - - 0 -1 632 9.0153552591800690e-03 - - -8.1377029418945312e-02 2.8447070717811584e-01 - <_> - - 0 -1 633 1.6945270821452141e-02 - - 1.9947079941630363e-02 -4.2220640182495117e-01 - <_> - - 0 -1 634 8.2118361024186015e-04 - - -2.7205279469490051e-01 9.5590539276599884e-02 - <_> - - 0 -1 635 3.5344670322956517e-05 - - -7.9617857933044434e-02 7.4185736477375031e-02 - <_> - - 0 -1 636 -8.4219790995121002e-02 - - -4.8575800657272339e-01 4.2242940515279770e-02 - <_> - - 0 -1 637 4.3517339974641800e-02 - - -1.5482529997825623e-01 1.0759840160608292e-01 - <_> - - 0 -1 638 -8.3383917808532715e-03 - - 4.0242099761962891e-01 -8.3734147250652313e-02 - <_> - - 0 -1 639 -2.6848739944398403e-03 - - 2.5776070356369019e-01 -5.7312320917844772e-02 - <_> - - 0 -1 640 3.9407201111316681e-03 - - -9.5994941890239716e-02 2.4924820661544800e-01 - <_> - - 0 -1 641 -6.5882800845429301e-04 - - 1.2785859405994415e-01 -1.5311600267887115e-01 - <_> - - 0 -1 642 -1.1875710450112820e-02 - - -7.0702570676803589e-01 3.2913740724325180e-02 - <_> - - 0 -1 643 -2.3982020094990730e-02 - - -5.0821501016616821e-01 4.6551831066608429e-02 - <_> - - 0 -1 644 -2.0041069947183132e-03 - - -6.8692350387573242e-01 2.5760149583220482e-02 - <_> - - 0 -1 645 7.8222304582595825e-03 - - -4.8103228211402893e-02 2.1432960033416748e-01 - <_> - - 0 -1 646 1.0946569964289665e-02 - - -1.6195610165596008e-01 1.6880209743976593e-01 - <_> - - 0 -1 647 2.6802860200405121e-02 - - 5.6256961077451706e-02 -2.7505400776863098e-01 - <_> - - 0 -1 648 3.9884559810161591e-03 - - -1.2663219869136810e-01 2.1626690030097961e-01 - <_> - - 0 -1 649 -1.8008690327405930e-02 - - 1.4534379541873932e-01 -5.5422309786081314e-02 - <_> - - 0 -1 650 1.7189480364322662e-02 - - -6.7623190581798553e-02 4.0081891417503357e-01 - <_> - - 0 -1 651 -1.2231480330228806e-02 - - -8.2071441411972046e-01 2.1297780796885490e-02 - <_> - - 0 -1 652 1.5830479562282562e-02 - - 3.5207420587539673e-02 -6.0531431436538696e-01 - <_> - - 0 -1 653 -1.5264269895851612e-02 - - -2.7459529042243958e-01 2.2607039660215378e-02 - <_> - - 0 -1 654 3.8808338344097137e-02 - - 3.9623390883207321e-02 -5.8665269613265991e-01 - <_> - - 0 -1 655 1.6585539560765028e-03 - - 2.4927699938416481e-02 -1.7679250240325928e-01 - <_> - - 0 -1 656 -7.0774480700492859e-03 - - 3.9536350965499878e-01 -5.4568108171224594e-02 - <_> - - 0 -1 657 4.7583471314283088e-05 - - -9.0718649327754974e-02 6.7698262631893158e-02 - <_> - - 0 -1 658 4.4619271648116410e-05 - - -2.3770439624786377e-01 9.9762678146362305e-02 - <_> - - 0 -1 659 -1.1851030401885509e-02 - - 3.2351729273796082e-01 -3.9586558938026428e-02 - <_> - - 0 -1 660 -1.6401939792558551e-03 - - -2.9881209135055542e-01 7.3466911911964417e-02 - <_> - - 0 -1 661 -6.9199479185044765e-03 - - 4.3420779705047607e-01 -1.0284329950809479e-01 - <_> - - 0 -1 662 -1.1484259739518166e-02 - - -4.9977409839630127e-01 5.0039488822221756e-02 - <_> - 85 - -1.4498629570007324e+00 - - <_> - - 0 -1 663 5.7978169061243534e-03 - - -2.5478368997573853e-01 3.1262540817260742e-01 - <_> - - 0 -1 664 3.4410690423101187e-03 - - -1.4427100121974945e-01 1.4882120490074158e-01 - <_> - - 0 -1 665 1.6638059914112091e-01 - - -2.9001000523567200e-01 1.7310169339179993e-01 - <_> - - 0 -1 666 -7.4716238304972649e-03 - - 2.5105801224708557e-01 -2.0066189765930176e-01 - <_> - - 0 -1 667 -3.6712910514324903e-03 - - 2.5619038939476013e-01 -1.9867749512195587e-01 - <_> - - 0 -1 668 1.8908550555352122e-04 - - -1.2631610035896301e-01 1.1225890368223190e-01 - <_> - - 0 -1 669 -1.9562460947781801e-03 - - 2.2644129395484924e-01 -1.6129520535469055e-01 - <_> - - 0 -1 670 -8.1449178978800774e-03 - - 2.5742760300636292e-01 -7.2123177349567413e-02 - <_> - - 0 -1 671 6.4932177774608135e-03 - - -1.8143969774246216e-01 2.2572280466556549e-01 - <_> - - 0 -1 672 4.5387531281448901e-04 - - 2.3686420172452927e-02 -4.0528649091720581e-01 - <_> - - 0 -1 673 4.2509411287028342e-05 - - -2.9150670766830444e-01 1.1115519702434540e-01 - <_> - - 0 -1 674 -1.5767119824886322e-02 - - -7.3671698570251465e-01 1.0386019945144653e-02 - <_> - - 0 -1 675 -6.9369110278785229e-03 - - 1.6062590479850769e-01 -1.8799079954624176e-01 - <_> - - 0 -1 676 -3.2210960052907467e-03 - - 1.1640430241823196e-01 -1.8258500099182129e-01 - <_> - - 0 -1 677 -1.2131559662520885e-02 - - -6.3532382249832153e-01 3.5376798361539841e-02 - <_> - - 0 -1 678 -2.6418970082886517e-04 - - -2.4938230216503143e-01 5.5897600948810577e-02 - <_> - - 0 -1 679 1.1737859994173050e-01 - - 3.1205369159579277e-02 -7.4014288187026978e-01 - <_> - - 0 -1 680 -1.1690290411934257e-03 - - 7.8599072992801666e-02 -1.7284469306468964e-01 - <_> - - 0 -1 681 2.4764470756053925e-02 - - 5.1048379391431808e-02 -5.1298439502716064e-01 - <_> - - 0 -1 682 -4.2942222207784653e-03 - - 3.2294911146163940e-01 -9.1555416584014893e-02 - <_> - - 0 -1 683 1.2354889884591103e-02 - - -7.1046717464923859e-02 3.7195768952369690e-01 - <_> - - 0 -1 684 -2.3104460909962654e-02 - - -5.9680628776550293e-01 1.2195380404591560e-02 - <_> - - 0 -1 685 -2.0122020505368710e-03 - - 1.3106389343738556e-01 -2.0082409679889679e-01 - <_> - - 0 -1 686 -1.2122809886932373e-02 - - -3.3110201358795166e-01 3.2431658357381821e-02 - <_> - - 0 -1 687 -1.3967029750347137e-02 - - -4.7931128740310669e-01 5.2107390016317368e-02 - <_> - - 0 -1 688 7.5348587706685066e-03 - - -9.8858788609504700e-02 3.6169511079788208e-01 - <_> - - 0 -1 689 -1.6827749088406563e-02 - - -6.1323410272598267e-01 4.3719381093978882e-02 - <_> - - 0 -1 690 5.4655349813401699e-03 - - 2.9257390648126602e-02 -4.1502380371093750e-01 - <_> - - 0 -1 691 -5.7378439232707024e-03 - - -4.9381670355796814e-01 4.4704858213663101e-02 - <_> - - 0 -1 692 -9.9511053413152695e-03 - - 3.1045120954513550e-01 -6.0698598623275757e-02 - <_> - - 0 -1 693 2.8865570202469826e-03 - - -1.9001829624176025e-01 1.2568040192127228e-01 - <_> - - 0 -1 694 4.1129510849714279e-02 - - 3.0545100569725037e-02 -4.2006531357765198e-01 - <_> - - 0 -1 695 1.6931550204753876e-01 - - 3.2922860234975815e-02 -7.0118480920791626e-01 - <_> - - 0 -1 696 3.9114229381084442e-02 - - -1.2389829754829407e-01 2.5299561023712158e-01 - <_> - - 0 -1 697 1.4167210459709167e-01 - - -1.1856999993324280e-01 2.6716861128807068e-01 - <_> - - 0 -1 698 2.3257229477167130e-03 - - 2.7907749637961388e-02 -3.4009200334548950e-01 - <_> - - 0 -1 699 -2.6245389133691788e-02 - - 9.8266378045082092e-02 -2.5756400823593140e-01 - <_> - - 0 -1 700 1.8283349927514791e-03 - - -8.3703443408012390e-02 2.3101350665092468e-01 - <_> - - 0 -1 701 4.7496692277491093e-03 - - 6.1327129602432251e-02 -4.3593269586563110e-01 - <_> - - 0 -1 702 -4.3565989471971989e-03 - - -4.2383280396461487e-01 9.4382222741842270e-03 - <_> - - 0 -1 703 -3.8147179875522852e-03 - - -6.4637732505798340e-01 3.7270799279212952e-02 - <_> - - 0 -1 704 -2.1859859116375446e-03 - - 2.8486278653144836e-01 -1.9577220082283020e-01 - <_> - - 0 -1 705 -1.5153910499066114e-03 - - 1.6781100630760193e-01 -1.3713860511779785e-01 - <_> - - 0 -1 706 -3.2454739994136617e-05 - - 7.3632411658763885e-02 -7.7787682414054871e-02 - <_> - - 0 -1 707 1.1885840445756912e-02 - - -4.3111089617013931e-02 5.2360087633132935e-01 - <_> - - 0 -1 708 4.4173169881105423e-03 - - 4.5849800109863281e-02 -3.2220908999443054e-01 - <_> - - 0 -1 709 7.3544741608202457e-03 - - -7.6994776725769043e-02 2.8344219923019409e-01 - <_> - - 0 -1 710 -1.4129919931292534e-02 - - -3.9489749073982239e-01 4.1761901229619980e-02 - <_> - - 0 -1 711 6.3752778805792332e-03 - - 4.6900819987058640e-02 -4.8540329933166504e-01 - <_> - - 0 -1 712 2.3776849266141653e-03 - - 1.7367800697684288e-02 -2.0004540681838989e-01 - <_> - - 0 -1 713 -9.5808254554867744e-03 - - 3.6303970217704773e-01 -6.2879018485546112e-02 - <_> - - 0 -1 714 3.8879989006090909e-05 - - -8.1249810755252838e-02 8.1068873405456543e-02 - <_> - - 0 -1 715 -8.8017992675304413e-02 - - 4.4440689682960510e-01 -4.8520348966121674e-02 - <_> - - 0 -1 716 1.4197609852999449e-03 - - -1.0583449900150299e-01 2.3807370662689209e-01 - <_> - - 0 -1 717 8.2073677331209183e-03 - - 4.7994330525398254e-02 -4.6953499317169189e-01 - <_> - - 0 -1 718 -2.9159379191696644e-03 - - 3.7838110327720642e-01 -6.0855239629745483e-02 - <_> - - 0 -1 719 -1.2287500314414501e-02 - - 1.2594810128211975e-01 -1.7701840400695801e-01 - <_> - - 0 -1 720 -5.6836591102182865e-03 - - 2.3341970145702362e-01 -4.4496081769466400e-02 - <_> - - 0 -1 721 -1.3924470171332359e-02 - - -7.2878497838973999e-01 3.0758429318666458e-02 - <_> - - 0 -1 722 9.9232727661728859e-03 - - -3.9361201226711273e-02 3.4838870167732239e-01 - <_> - - 0 -1 723 1.0692769661545753e-02 - - -4.4223789125680923e-02 4.2715668678283691e-01 - <_> - - 0 -1 724 3.7554800655925646e-05 - - -6.4494386315345764e-02 1.2572330236434937e-01 - <_> - - 0 -1 725 2.7551440871320665e-04 - - 6.7445993423461914e-02 -3.4731999039649963e-01 - <_> - - 0 -1 726 3.5946661228081211e-05 - - -7.5870849192142487e-02 1.2495779991149902e-01 - <_> - - 0 -1 727 -4.1565788706066087e-05 - - 1.4327770471572876e-01 -1.5775039792060852e-01 - <_> - - 0 -1 728 2.9380898922681808e-03 - - -2.8900629281997681e-01 6.4528502523899078e-02 - <_> - - 0 -1 729 2.3380669951438904e-01 - - -3.8070231676101685e-02 6.0606312751770020e-01 - <_> - - 0 -1 730 -4.0552138671046123e-05 - - 1.7881380021572113e-01 -9.3907959759235382e-02 - <_> - - 0 -1 731 3.6401779652805999e-05 - - -1.7232389748096466e-01 1.4596420526504517e-01 - <_> - - 0 -1 732 1.2257539667189121e-02 - - 2.7358820661902428e-02 -5.9449177980422974e-01 - <_> - - 0 -1 733 3.4914221032522619e-05 - - -1.4092069864273071e-01 1.4110060036182404e-01 - <_> - - 0 -1 734 5.0704288296401501e-03 - - -1.1959090083837509e-01 3.3249089121818542e-01 - <_> - - 0 -1 735 -1.2888760305941105e-02 - - -6.8956321477890015e-01 3.1754989176988602e-02 - <_> - - 0 -1 736 -1.6707969829440117e-02 - - 9.8655208945274353e-02 -1.0937389731407166e-01 - <_> - - 0 -1 737 1.1148779653012753e-02 - - -6.3801966607570648e-02 3.4605810046195984e-01 - <_> - - 0 -1 738 -2.7799250092357397e-03 - - 2.0987810194492340e-01 -1.3359400629997253e-01 - <_> - - 0 -1 739 -2.4409759498666972e-04 - - 6.9238096475601196e-02 -3.1708741188049316e-01 - <_> - - 0 -1 740 -2.9775299131870270e-02 - - -4.1800031065940857e-01 3.2243121415376663e-02 - <_> - - 0 -1 741 -2.9159660916775465e-03 - - 1.3949039578437805e-01 -1.6484509408473969e-01 - <_> - - 0 -1 742 -3.3617448934819549e-05 - - 9.9441543221473694e-02 -8.6935497820377350e-02 - <_> - - 0 -1 743 -1.2755930423736572e-01 - - -5.9932261705398560e-01 3.4439250826835632e-02 - <_> - - 0 -1 744 1.1930080130696297e-02 - - 3.4306000918149948e-02 -5.4623407125473022e-01 - <_> - - 0 -1 745 1.2805329635739326e-02 - - 5.4770689457654953e-02 -3.3244410157203674e-01 - <_> - - 0 -1 746 -1.1016329750418663e-02 - - -3.3880481123924255e-01 1.9317859783768654e-02 - <_> - - 0 -1 747 -1.5256899641826749e-03 - - 1.9104599952697754e-01 -1.0740239918231964e-01 - - <_> - - <_> - 7 3 30 3 -1. - <_> - 17 3 10 3 3. - <_> - - <_> - 34 5 11 6 -1. - <_> - 34 8 11 3 2. - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 15 0 15 11 -1. - <_> - 20 0 5 11 3. - <_> - - <_> - 7 3 30 3 -1. - <_> - 17 3 10 3 3. - <_> - - <_> - 34 5 11 6 -1. - <_> - 34 8 11 3 2. - <_> - - <_> - 0 5 11 6 -1. - <_> - 0 8 11 3 2. - <_> - - <_> - 22 0 6 11 -1. - <_> - 22 0 3 11 2. - <_> - - <_> - 17 0 6 11 -1. - <_> - 20 0 3 11 2. - <_> - - <_> - 39 0 1 9 -1. - <_> - 36 3 1 3 3. - 1 - <_> - - <_> - 9 0 27 6 -1. - <_> - 18 0 9 6 3. - <_> - - <_> - 39 0 1 9 -1. - <_> - 36 3 1 3 3. - 1 - <_> - - <_> - 7 3 4 8 -1. - <_> - 7 7 4 4 2. - <_> - - <_> - 17 2 12 8 -1. - <_> - 21 2 4 8 3. - <_> - - <_> - 1 7 5 4 -1. - <_> - 1 9 5 2 2. - <_> - - <_> - 31 1 9 9 -1. - <_> - 34 4 3 3 9. - <_> - - <_> - 2 1 8 4 -1. - <_> - 2 3 8 2 2. - <_> - - <_> - 18 2 12 9 -1. - <_> - 22 2 4 9 3. - <_> - - <_> - 15 2 12 9 -1. - <_> - 19 2 4 9 3. - <_> - - <_> - 31 4 9 3 -1. - <_> - 34 4 3 3 3. - <_> - - <_> - 20 9 4 2 -1. - <_> - 20 9 2 1 2. - <_> - 22 10 2 1 2. - <_> - - <_> - 0 0 24 9 -1. - <_> - 8 3 8 3 9. - <_> - - <_> - 7 3 36 4 -1. - <_> - 16 3 18 4 2. - <_> - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 2 2. - <_> - - <_> - 22 0 6 10 -1. - <_> - 22 0 3 10 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 21 0 8 11 -1. - <_> - 21 0 4 11 2. - <_> - - <_> - 1 3 42 8 -1. - <_> - 1 3 21 4 2. - <_> - 22 7 21 4 2. - <_> - - <_> - 24 0 8 3 -1. - <_> - 26 2 4 3 2. - 1 - <_> - - <_> - 21 0 3 8 -1. - <_> - 19 2 3 4 2. - 1 - <_> - - <_> - 35 3 2 8 -1. - <_> - 35 7 2 4 2. - <_> - - <_> - 2 4 36 5 -1. - <_> - 11 4 18 5 2. - <_> - - <_> - 12 0 21 1 -1. - <_> - 19 0 7 1 3. - <_> - - <_> - 8 5 2 6 -1. - <_> - 8 8 2 3 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 2 7 2 4 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 42 4 2 2 -1. - <_> - 42 4 1 2 2. - 1 - <_> - - <_> - 3 4 2 2 -1. - <_> - 3 4 2 1 2. - 1 - <_> - - <_> - 23 6 16 5 -1. - <_> - 27 6 8 5 2. - <_> - - <_> - 10 2 2 4 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 6 3 33 3 -1. - <_> - 17 3 11 3 3. - <_> - - <_> - 31 1 9 9 -1. - <_> - 34 4 3 3 9. - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 2 2 3 3. - 1 - <_> - - <_> - 21 1 8 10 -1. - <_> - 21 1 4 10 2. - <_> - - <_> - 7 3 26 5 -1. - <_> - 20 3 13 5 2. - <_> - - <_> - 40 5 3 6 -1. - <_> - 40 8 3 3 2. - <_> - - <_> - 2 5 3 6 -1. - <_> - 2 8 3 3 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 10 9 11 2 -1. - <_> - 10 10 11 1 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 9 0 26 10 -1. - <_> - 9 0 13 5 2. - <_> - 22 5 13 5 2. - <_> - - <_> - 1 9 44 2 -1. - <_> - 23 9 22 1 2. - <_> - 1 10 22 1 2. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 0 0 45 9 -1. - <_> - 15 3 15 3 9. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 39 9 5 2 -1. - <_> - 39 10 5 1 2. - <_> - - <_> - 4 3 32 3 -1. - <_> - 12 3 16 3 2. - <_> - - <_> - 26 1 11 8 -1. - <_> - 26 3 11 4 2. - <_> - - <_> - 17 1 6 9 -1. - <_> - 20 1 3 9 2. - <_> - - <_> - 27 3 11 8 -1. - <_> - 27 7 11 4 2. - <_> - - <_> - 5 1 9 9 -1. - <_> - 8 4 3 3 9. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 3 11 8 -1. - <_> - 9 7 11 4 2. - <_> - - <_> - 38 5 6 2 -1. - <_> - 40 5 2 2 3. - <_> - - <_> - 8 9 16 1 -1. - <_> - 16 9 8 1 2. - <_> - - <_> - 18 0 15 10 -1. - <_> - 23 0 5 10 3. - <_> - - <_> - 3 9 4 2 -1. - <_> - 3 10 4 1 2. - <_> - - <_> - 31 5 2 2 -1. - <_> - 31 5 1 2 2. - <_> - - <_> - 12 0 20 6 -1. - <_> - 12 0 10 3 2. - <_> - 22 3 10 3 2. - <_> - - <_> - 31 0 10 6 -1. - <_> - 31 2 10 2 3. - <_> - - <_> - 7 10 4 1 -1. - <_> - 9 10 2 1 2. - <_> - - <_> - 25 0 15 4 -1. - <_> - 30 0 5 4 3. - <_> - - <_> - 5 10 6 1 -1. - <_> - 7 10 2 1 3. - <_> - - <_> - 38 5 4 4 -1. - <_> - 40 5 2 2 2. - <_> - 38 7 2 2 2. - <_> - - <_> - 3 5 4 4 -1. - <_> - 3 5 2 2 2. - <_> - 5 7 2 2 2. - <_> - - <_> - 15 2 18 9 -1. - <_> - 21 2 6 9 3. - <_> - - <_> - 12 0 15 11 -1. - <_> - 17 0 5 11 3. - <_> - - <_> - 8 1 6 1 -1. - <_> - 10 3 2 1 3. - 1 - <_> - - <_> - 9 0 27 7 -1. - <_> - 18 0 9 7 3. - <_> - - <_> - 10 2 3 4 -1. - <_> - 9 3 3 2 2. - 1 - <_> - - <_> - 18 3 9 8 -1. - <_> - 21 3 3 8 3. - <_> - - <_> - 0 5 11 6 -1. - <_> - 0 8 11 3 2. - <_> - - <_> - 1 3 44 8 -1. - <_> - 23 3 22 4 2. - <_> - 1 7 22 4 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 2 4 2 4 2. - <_> - - <_> - 24 3 11 8 -1. - <_> - 24 7 11 4 2. - <_> - - <_> - 3 1 39 9 -1. - <_> - 16 4 13 3 9. - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 11 4 22 6 -1. - <_> - 11 4 11 3 2. - <_> - 22 7 11 3 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 6 0 7 6 -1. - <_> - 6 2 7 2 3. - <_> - - <_> - 24 0 6 1 -1. - <_> - 24 0 3 1 2. - <_> - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - <_> - - <_> - 36 9 9 2 -1. - <_> - 36 10 9 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 18 9 10 2 -1. - <_> - 23 9 5 1 2. - <_> - 18 10 5 1 2. - <_> - - <_> - 7 0 30 6 -1. - <_> - 7 0 15 3 2. - <_> - 22 3 15 3 2. - <_> - - <_> - 21 5 3 6 -1. - <_> - 22 7 1 2 9. - <_> - - <_> - 16 9 10 2 -1. - <_> - 16 9 5 1 2. - <_> - 21 10 5 1 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 5 2 7 3 -1. - <_> - 5 3 7 1 3. - <_> - - <_> - 26 0 4 1 -1. - <_> - 26 0 2 1 2. - <_> - - <_> - 15 0 4 1 -1. - <_> - 17 0 2 1 2. - <_> - - <_> - 26 0 11 4 -1. - <_> - 26 2 11 2 2. - <_> - - <_> - 7 3 22 3 -1. - <_> - 18 3 11 3 2. - <_> - - <_> - 32 1 4 6 -1. - <_> - 34 1 2 3 2. - <_> - 32 4 2 3 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 3 2. - <_> - 11 4 2 3 2. - <_> - - <_> - 17 0 12 11 -1. - <_> - 21 0 4 11 3. - <_> - - <_> - 1 3 11 8 -1. - <_> - 1 7 11 4 2. - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 1 4 6 4 -1. - <_> - 3 4 2 4 3. - <_> - - <_> - 24 1 11 8 -1. - <_> - 24 3 11 4 2. - <_> - - <_> - 4 0 32 7 -1. - <_> - 12 0 16 7 2. - <_> - - <_> - 8 0 30 8 -1. - <_> - 23 0 15 4 2. - <_> - 8 4 15 4 2. - <_> - - <_> - 19 2 6 9 -1. - <_> - 22 2 3 9 2. - <_> - - <_> - 17 0 26 2 -1. - <_> - 30 0 13 1 2. - <_> - 17 1 13 1 2. - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 38 9 6 2 -1. - <_> - 38 10 6 1 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 1 10 8 1 2. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 36 3 4 4 -1. - <_> - 36 3 2 4 2. - <_> - - <_> - 17 0 2 3 -1. - <_> - 17 0 1 3 2. - 1 - <_> - - <_> - 25 1 11 6 -1. - <_> - 25 3 11 2 3. - <_> - - <_> - 16 10 12 1 -1. - <_> - 19 10 6 1 2. - <_> - - <_> - 11 1 32 4 -1. - <_> - 27 1 16 2 2. - <_> - 11 3 16 2 2. - <_> - - <_> - 10 1 11 6 -1. - <_> - 10 3 11 2 3. - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 10 7 11 4 -1. - <_> - 10 9 11 2 2. - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 4 8 2 1 -1. - <_> - 4 8 1 1 2. - 1 - <_> - - <_> - 39 2 5 3 -1. - <_> - 38 3 5 1 3. - 1 - <_> - - <_> - 6 2 3 5 -1. - <_> - 7 3 1 5 3. - 1 - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 15 1 12 10 -1. - <_> - 19 1 4 10 3. - <_> - - <_> - 5 3 32 3 -1. - <_> - 13 3 16 3 2. - <_> - - <_> - 30 5 6 2 -1. - <_> - 32 5 2 2 3. - <_> - - <_> - 17 2 6 5 -1. - <_> - 20 2 3 5 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 8 5 2 2. - <_> - - <_> - 33 4 6 4 -1. - <_> - 35 4 2 4 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 2 2. - <_> - - <_> - 21 1 24 6 -1. - <_> - 29 3 8 2 9. - <_> - - <_> - 8 3 10 8 -1. - <_> - 8 7 10 4 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 2 6 3 -1. - <_> - 8 3 6 1 3. - 1 - <_> - - <_> - 16 2 18 8 -1. - <_> - 22 2 6 8 3. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 27 4 2 5 -1. - <_> - 27 4 1 5 2. - 1 - <_> - - <_> - 2 0 36 10 -1. - <_> - 2 0 18 5 2. - <_> - 20 5 18 5 2. - <_> - - <_> - 26 1 2 1 -1. - <_> - 26 1 1 1 2. - <_> - - <_> - 15 2 12 9 -1. - <_> - 18 2 6 9 2. - <_> - - <_> - 31 4 9 6 -1. - <_> - 34 4 3 6 3. - <_> - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - <_> - - <_> - 35 2 3 4 -1. - <_> - 34 3 3 2 2. - 1 - <_> - - <_> - 5 9 6 2 -1. - <_> - 7 9 2 2 3. - <_> - - <_> - 40 5 4 2 -1. - <_> - 40 5 2 2 2. - <_> - - <_> - 19 0 3 3 -1. - <_> - 20 1 1 1 9. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 5 0 15 1 -1. - <_> - 10 0 5 1 3. - <_> - - <_> - 17 8 12 2 -1. - <_> - 23 8 6 1 2. - <_> - 17 9 6 1 2. - <_> - - <_> - 19 2 6 9 -1. - <_> - 22 2 3 9 2. - <_> - - <_> - 32 1 6 10 -1. - <_> - 34 1 2 10 3. - <_> - - <_> - 5 2 9 6 -1. - <_> - 8 4 3 2 9. - <_> - - <_> - 29 0 2 3 -1. - <_> - 28 1 2 1 3. - 1 - <_> - - <_> - 16 0 3 2 -1. - <_> - 17 1 1 2 3. - 1 - <_> - - <_> - 34 8 6 3 -1. - <_> - 36 8 2 3 3. - <_> - - <_> - 2 5 2 1 -1. - <_> - 3 5 1 1 2. - <_> - - <_> - 6 3 33 2 -1. - <_> - 17 3 11 2 3. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 5 5 9 2 -1. - <_> - 8 5 3 2 3. - <_> - - <_> - 17 1 12 10 -1. - <_> - 21 1 4 10 3. - <_> - - <_> - 0 4 11 6 -1. - <_> - 0 7 11 3 2. - <_> - - <_> - 29 9 11 2 -1. - <_> - 29 10 11 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 31 0 11 4 -1. - <_> - 31 1 11 2 2. - <_> - - <_> - 2 1 32 6 -1. - <_> - 2 1 16 3 2. - <_> - 18 4 16 3 2. - <_> - - <_> - 21 9 6 2 -1. - <_> - 24 9 3 1 2. - <_> - 21 10 3 1 2. - <_> - - <_> - 17 9 10 2 -1. - <_> - 17 9 5 1 2. - <_> - 22 10 5 1 2. - <_> - - <_> - 41 4 4 6 -1. - <_> - 41 4 2 6 2. - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 3 0 39 9 -1. - <_> - 16 3 13 3 9. - <_> - - <_> - 30 9 11 2 -1. - <_> - 30 10 11 1 2. - <_> - - <_> - 5 9 11 2 -1. - <_> - 5 10 11 1 2. - <_> - - <_> - 20 9 8 2 -1. - <_> - 24 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 5 2 3 3. - <_> - - <_> - 29 0 6 3 -1. - <_> - 31 0 2 3 3. - <_> - - <_> - 3 0 39 9 -1. - <_> - 16 3 13 3 9. - <_> - - <_> - 34 1 5 3 -1. - <_> - 34 2 5 1 3. - <_> - - <_> - 10 0 6 3 -1. - <_> - 12 0 2 3 3. - <_> - - <_> - 33 1 8 3 -1. - <_> - 33 2 8 1 3. - <_> - - <_> - 16 9 10 2 -1. - <_> - 16 9 5 1 2. - <_> - 21 10 5 1 2. - <_> - - <_> - 19 5 9 6 -1. - <_> - 22 5 3 6 3. - <_> - - <_> - 16 9 12 2 -1. - <_> - 20 9 4 2 3. - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 18 0 2 1 -1. - <_> - 18 0 1 1 2. - 1 - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 24 10 20 1 -1. - <_> - 24 10 10 1 2. - <_> - - <_> - 1 10 20 1 -1. - <_> - 11 10 10 1 2. - <_> - - <_> - 42 7 3 4 -1. - <_> - 42 9 3 2 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 33 1 6 3 -1. - <_> - 33 2 6 1 3. - <_> - - <_> - 12 4 3 2 -1. - <_> - 13 5 1 2 3. - 1 - <_> - - <_> - 26 1 11 8 -1. - <_> - 26 3 11 4 2. - <_> - - <_> - 3 4 30 3 -1. - <_> - 18 4 15 3 2. - <_> - - <_> - 17 0 12 9 -1. - <_> - 21 0 4 9 3. - <_> - - <_> - 2 0 9 4 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 19 0 12 1 -1. - <_> - 22 0 6 1 2. - <_> - - <_> - 7 0 28 5 -1. - <_> - 14 0 14 5 2. - <_> - - <_> - 26 5 11 6 -1. - <_> - 26 8 11 3 2. - <_> - - <_> - 4 5 4 2 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 40 7 5 4 -1. - <_> - 40 9 5 2 2. - <_> - - <_> - 5 5 34 6 -1. - <_> - 5 5 17 3 2. - <_> - 22 8 17 3 2. - <_> - - <_> - 7 2 38 3 -1. - <_> - 7 2 19 3 2. - <_> - - <_> - 3 8 1 2 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 31 7 2 2 -1. - <_> - 31 7 1 2 2. - 1 - <_> - - <_> - 0 0 45 9 -1. - <_> - 15 3 15 3 9. - <_> - - <_> - 35 9 6 2 -1. - <_> - 37 9 2 2 3. - <_> - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - <_> - - <_> - 19 5 9 6 -1. - <_> - 22 5 3 6 3. - <_> - - <_> - 7 2 3 3 -1. - <_> - 7 3 3 1 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 20 2 8 9 -1. - <_> - 22 2 4 9 2. - <_> - - <_> - 3 9 8 2 -1. - <_> - 5 9 4 2 2. - <_> - - <_> - 32 3 6 7 -1. - <_> - 34 3 2 7 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 9 0 4 2 2. - <_> - - <_> - 12 0 22 6 -1. - <_> - 23 0 11 3 2. - <_> - 12 3 11 3 2. - <_> - - <_> - 14 1 16 6 -1. - <_> - 14 1 8 3 2. - <_> - 22 4 8 3 2. - <_> - - <_> - 30 0 6 4 -1. - <_> - 32 0 2 4 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 1 2. - <_> - 6 5 2 1 2. - <_> - - <_> - 30 0 6 4 -1. - <_> - 32 0 2 4 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 17 5 9 6 -1. - <_> - 20 5 3 6 3. - <_> - - <_> - 30 5 4 2 -1. - <_> - 31 5 2 2 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 2 1 2. - 1 - <_> - - <_> - 19 7 12 4 -1. - <_> - 23 7 4 4 3. - <_> - - <_> - 7 2 10 6 -1. - <_> - 7 4 10 2 3. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 8 3 30 2 -1. - <_> - 18 3 10 2 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 7 3 32 8 -1. - <_> - 23 3 16 4 2. - <_> - 7 7 16 4 2. - <_> - - <_> - 7 3 3 8 -1. - <_> - 7 7 3 4 2. - <_> - - <_> - 17 0 12 11 -1. - <_> - 21 0 4 11 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 0 10 3 1 2. - <_> - - <_> - 31 5 9 6 -1. - <_> - 34 5 3 6 3. - <_> - - <_> - 6 1 2 6 -1. - <_> - 4 3 2 2 3. - 1 - <_> - - <_> - 27 1 2 1 -1. - <_> - 27 1 1 1 2. - <_> - - <_> - 16 0 8 1 -1. - <_> - 18 0 4 1 2. - <_> - - <_> - 33 2 6 3 -1. - <_> - 33 3 6 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 31 5 9 6 -1. - <_> - 34 5 3 6 3. - <_> - - <_> - 5 5 9 6 -1. - <_> - 8 5 3 6 3. - <_> - - <_> - 21 9 4 2 -1. - <_> - 23 9 2 1 2. - <_> - 21 10 2 1 2. - <_> - - <_> - 15 5 12 6 -1. - <_> - 19 5 4 6 3. - <_> - - <_> - 20 0 6 11 -1. - <_> - 20 0 3 11 2. - <_> - - <_> - 1 7 32 2 -1. - <_> - 9 7 16 2 2. - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 6 1 7 4 -1. - <_> - 6 2 7 2 2. - <_> - - <_> - 34 0 5 3 -1. - <_> - 34 1 5 1 3. - <_> - - <_> - 6 0 5 3 -1. - <_> - 6 1 5 1 3. - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 16 1 1 2 2. - 1 - <_> - - <_> - 7 0 34 8 -1. - <_> - 24 0 17 4 2. - <_> - 7 4 17 4 2. - <_> - - <_> - 17 0 2 3 -1. - <_> - 17 0 1 3 2. - 1 - <_> - - <_> - 35 9 4 2 -1. - <_> - 36 9 2 2 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 34 6 4 3 -1. - <_> - 34 7 4 1 3. - <_> - - <_> - 20 9 4 2 -1. - <_> - 20 9 2 1 2. - <_> - 22 10 2 1 2. - <_> - - <_> - 34 9 6 2 -1. - <_> - 36 9 2 2 3. - <_> - - <_> - 18 2 8 9 -1. - <_> - 22 2 4 9 2. - <_> - - <_> - 21 5 12 6 -1. - <_> - 25 5 4 6 3. - <_> - - <_> - 14 7 8 4 -1. - <_> - 16 7 4 4 2. - <_> - - <_> - 25 1 6 4 -1. - <_> - 25 1 3 4 2. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 15 7 2 1 2. - 1 - <_> - - <_> - 24 7 11 4 -1. - <_> - 24 9 11 2 2. - <_> - - <_> - 10 7 11 4 -1. - <_> - 10 9 11 2 2. - <_> - - <_> - 32 5 3 2 -1. - <_> - 33 5 1 2 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 11 2 3 4 -1. - <_> - 12 3 1 4 3. - 1 - <_> - - <_> - 21 0 12 5 -1. - <_> - 21 0 6 5 2. - <_> - - <_> - 6 4 3 4 -1. - <_> - 6 6 3 2 2. - <_> - - <_> - 38 7 7 4 -1. - <_> - 38 9 7 2 2. - <_> - - <_> - 21 4 3 4 -1. - <_> - 21 4 3 2 2. - 1 - <_> - - <_> - 35 0 7 4 -1. - <_> - 35 1 7 2 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 9 6 2 2. - <_> - - <_> - 33 3 6 8 -1. - <_> - 35 3 2 8 3. - <_> - - <_> - 15 0 4 1 -1. - <_> - 17 0 2 1 2. - <_> - - <_> - 30 2 12 9 -1. - <_> - 34 2 4 9 3. - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 30 3 12 8 -1. - <_> - 34 3 4 8 3. - <_> - - <_> - 3 3 12 8 -1. - <_> - 7 3 4 8 3. - <_> - - <_> - 24 8 2 2 -1. - <_> - 25 8 1 1 2. - <_> - 24 9 1 1 2. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 24 8 2 2 -1. - <_> - 25 8 1 1 2. - <_> - 24 9 1 1 2. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 20 0 22 2 -1. - <_> - 31 0 11 1 2. - <_> - 20 1 11 1 2. - <_> - - <_> - 3 0 22 2 -1. - <_> - 3 0 11 1 2. - <_> - 14 1 11 1 2. - <_> - - <_> - 29 0 3 9 -1. - <_> - 30 3 1 3 9. - <_> - - <_> - 12 4 6 3 -1. - <_> - 14 4 2 3 3. - <_> - - <_> - 41 0 4 2 -1. - <_> - 42 1 2 2 2. - 1 - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 21 5 12 4 -1. - <_> - 25 5 4 4 3. - <_> - - <_> - 10 0 11 9 -1. - <_> - 10 3 11 3 3. - <_> - - <_> - 1 4 44 6 -1. - <_> - 23 4 22 3 2. - <_> - 1 7 22 3 2. - <_> - - <_> - 1 1 42 9 -1. - <_> - 15 4 14 3 9. - <_> - - <_> - 39 4 3 2 -1. - <_> - 40 5 1 2 3. - 1 - <_> - - <_> - 1 3 2 6 -1. - <_> - 2 3 1 6 2. - <_> - - <_> - 33 3 3 3 -1. - <_> - 32 4 3 1 3. - 1 - <_> - - <_> - 16 0 12 11 -1. - <_> - 22 0 6 11 2. - <_> - - <_> - 24 6 11 4 -1. - <_> - 24 8 11 2 2. - <_> - - <_> - 15 9 12 1 -1. - <_> - 19 9 4 1 3. - <_> - - <_> - 33 3 3 3 -1. - <_> - 32 4 3 1 3. - 1 - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 30 0 6 2 -1. - <_> - 32 0 2 2 3. - <_> - - <_> - 10 9 4 2 -1. - <_> - 10 10 4 1 2. - <_> - - <_> - 42 0 2 3 -1. - <_> - 42 0 1 3 2. - 1 - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 37 2 3 4 -1. - <_> - 37 3 3 2 2. - <_> - - <_> - 5 0 9 4 -1. - <_> - 5 1 9 2 2. - <_> - - <_> - 43 9 2 2 -1. - <_> - 43 10 2 1 2. - <_> - - <_> - 14 0 14 2 -1. - <_> - 14 0 7 1 2. - <_> - 21 1 7 1 2. - <_> - - <_> - 34 6 4 2 -1. - <_> - 34 7 4 1 2. - <_> - - <_> - 18 0 8 1 -1. - <_> - 20 0 4 1 2. - <_> - - <_> - 23 6 4 4 -1. - <_> - 23 6 2 4 2. - <_> - - <_> - 0 9 44 2 -1. - <_> - 0 9 22 1 2. - <_> - 22 10 22 1 2. - <_> - - <_> - 10 0 32 5 -1. - <_> - 10 0 16 5 2. - <_> - - <_> - 3 0 32 5 -1. - <_> - 19 0 16 5 2. - <_> - - <_> - 12 4 3 3 -1. - <_> - 13 5 1 3 3. - 1 - <_> - - <_> - 19 0 18 7 -1. - <_> - 19 0 9 7 2. - <_> - - <_> - 10 2 3 4 -1. - <_> - 9 3 3 2 2. - 1 - <_> - - <_> - 24 2 2 1 -1. - <_> - 24 2 1 1 2. - <_> - - <_> - 5 2 10 4 -1. - <_> - 5 3 10 2 2. - <_> - - <_> - 12 0 26 9 -1. - <_> - 12 0 13 9 2. - <_> - - <_> - 1 9 6 2 -1. - <_> - 1 10 6 1 2. - <_> - - <_> - 24 2 2 1 -1. - <_> - 24 2 1 1 2. - <_> - - <_> - 18 3 9 8 -1. - <_> - 21 3 3 8 3. - <_> - - <_> - 26 5 11 6 -1. - <_> - 26 8 11 3 2. - <_> - - <_> - 11 5 22 4 -1. - <_> - 11 5 11 2 2. - <_> - 22 7 11 2 2. - <_> - - <_> - 14 0 20 6 -1. - <_> - 24 0 10 3 2. - <_> - 14 3 10 3 2. - <_> - - <_> - 7 0 12 3 -1. - <_> - 11 0 4 3 3. - <_> - - <_> - 41 7 4 4 -1. - <_> - 41 8 4 2 2. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 28 0 6 4 -1. - <_> - 30 0 2 4 3. - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 40 2 3 3 -1. - <_> - 39 3 3 1 3. - 1 - <_> - - <_> - 10 1 11 8 -1. - <_> - 10 3 11 4 2. - <_> - - <_> - 22 8 2 2 -1. - <_> - 23 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 7 3 3 3 -1. - <_> - 7 4 3 1 3. - <_> - - <_> - 19 0 8 11 -1. - <_> - 19 0 4 11 2. - <_> - - <_> - 0 10 22 1 -1. - <_> - 11 10 11 1 2. - <_> - - <_> - 12 0 24 6 -1. - <_> - 24 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 19 5 4 2 -1. - <_> - 19 5 4 1 2. - 1 - <_> - - <_> - 40 3 3 3 -1. - <_> - 39 4 3 1 3. - 1 - <_> - - <_> - 2 4 6 1 -1. - <_> - 2 4 3 1 2. - 1 - <_> - - <_> - 35 3 10 6 -1. - <_> - 35 3 5 6 2. - <_> - - <_> - 5 2 6 3 -1. - <_> - 5 3 6 1 3. - <_> - - <_> - 18 2 18 9 -1. - <_> - 24 2 6 9 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 27 0 2 2 -1. - <_> - 27 0 2 1 2. - 1 - <_> - - <_> - 7 1 26 4 -1. - <_> - 7 1 13 2 2. - <_> - 20 3 13 2 2. - <_> - - <_> - 34 8 9 3 -1. - <_> - 37 8 3 3 3. - <_> - - <_> - 2 8 9 3 -1. - <_> - 5 8 3 3 3. - <_> - - <_> - 22 8 2 2 -1. - <_> - 23 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 35 3 10 3 -1. - <_> - 35 3 5 3 2. - <_> - - <_> - 19 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 21 3 12 8 -1. - <_> - 24 3 6 8 2. - <_> - - <_> - 0 3 10 3 -1. - <_> - 5 3 5 3 2. - <_> - - <_> - 19 6 9 5 -1. - <_> - 22 6 3 5 3. - <_> - - <_> - 19 0 6 11 -1. - <_> - 22 0 3 11 2. - <_> - - <_> - 21 0 3 9 -1. - <_> - 22 3 1 3 9. - <_> - - <_> - 12 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 13 6 1 1 2. - <_> - - <_> - 20 9 8 2 -1. - <_> - 24 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 13 7 2 1 2. - 1 - <_> - - <_> - 31 5 3 3 -1. - <_> - 30 6 3 1 3. - 1 - <_> - - <_> - 8 1 3 3 -1. - <_> - 8 2 3 1 3. - <_> - - <_> - 34 1 4 3 -1. - <_> - 34 2 4 1 3. - <_> - - <_> - 7 1 5 3 -1. - <_> - 7 2 5 1 3. - <_> - - <_> - 31 1 1 2 -1. - <_> - 31 1 1 1 2. - 1 - <_> - - <_> - 21 8 2 2 -1. - <_> - 21 8 1 1 2. - <_> - 22 9 1 1 2. - <_> - - <_> - 26 9 10 2 -1. - <_> - 26 10 10 1 2. - <_> - - <_> - 9 0 6 3 -1. - <_> - 11 2 2 3 3. - 1 - <_> - - <_> - 21 0 12 4 -1. - <_> - 21 0 6 4 2. - <_> - - <_> - 12 5 2 6 -1. - <_> - 12 5 1 3 2. - <_> - 13 8 1 3 2. - <_> - - <_> - 12 4 30 3 -1. - <_> - 12 4 15 3 2. - <_> - - <_> - 4 4 30 3 -1. - <_> - 19 4 15 3 2. - <_> - - <_> - 39 5 6 6 -1. - <_> - 39 8 6 3 2. - <_> - - <_> - 2 3 6 4 -1. - <_> - 2 3 3 2 2. - <_> - 5 5 3 2 2. - <_> - - <_> - 25 0 4 1 -1. - <_> - 25 0 2 1 2. - <_> - - <_> - 12 10 12 1 -1. - <_> - 15 10 6 1 2. - <_> - - <_> - 27 1 2 1 -1. - <_> - 27 1 1 1 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 20 0 18 2 -1. - <_> - 29 0 9 1 2. - <_> - 20 1 9 1 2. - <_> - - <_> - 16 9 8 2 -1. - <_> - 16 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 35 2 4 5 -1. - <_> - 36 3 2 5 2. - 1 - <_> - - <_> - 7 0 6 3 -1. - <_> - 9 0 2 3 3. - <_> - - <_> - 39 3 4 3 -1. - <_> - 38 4 4 1 3. - 1 - <_> - - <_> - 14 8 1 2 -1. - <_> - 14 8 1 1 2. - 1 - <_> - - <_> - 31 7 2 2 -1. - <_> - 31 7 1 2 2. - 1 - <_> - - <_> - 14 7 2 2 -1. - <_> - 14 7 2 1 2. - 1 - <_> - - <_> - 32 0 6 9 -1. - <_> - 34 0 2 9 3. - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 14 1 18 4 -1. - <_> - 23 1 9 2 2. - <_> - 14 3 9 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 39 3 4 3 -1. - <_> - 38 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 44 0 1 8 -1. - <_> - 44 4 1 4 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 27 0 2 2 -1. - <_> - 27 0 2 1 2. - 1 - <_> - - <_> - 18 0 2 2 -1. - <_> - 18 0 1 2 2. - 1 - <_> - - <_> - 20 3 12 8 -1. - <_> - 24 3 4 8 3. - <_> - - <_> - 9 0 5 2 -1. - <_> - 9 1 5 1 2. - <_> - - <_> - 34 0 4 3 -1. - <_> - 34 1 4 1 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 8 1 3 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 3 26 6 -1. - <_> - 23 3 13 3 2. - <_> - 10 6 13 3 2. - <_> - - <_> - 10 0 11 8 -1. - <_> - 10 2 11 4 2. - <_> - - <_> - 40 2 3 3 -1. - <_> - 39 3 3 1 3. - 1 - <_> - - <_> - 4 0 20 2 -1. - <_> - 9 0 10 2 2. - <_> - - <_> - 21 3 12 8 -1. - <_> - 25 3 4 8 3. - <_> - - <_> - 12 3 12 8 -1. - <_> - 16 3 4 8 3. - <_> - - <_> - 15 10 15 1 -1. - <_> - 20 10 5 1 3. - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 2 3 2 6 -1. - <_> - 3 3 1 6 2. - <_> - - <_> - 18 9 10 2 -1. - <_> - 23 9 5 1 2. - <_> - 18 10 5 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 36 8 4 3 -1. - <_> - 37 8 2 3 2. - <_> - - <_> - 20 3 4 8 -1. - <_> - 22 3 2 8 2. - <_> - - <_> - 36 9 4 2 -1. - <_> - 37 9 2 2 2. - <_> - - <_> - 15 5 9 6 -1. - <_> - 18 5 3 6 3. - <_> - - <_> - 28 0 4 4 -1. - <_> - 29 0 2 4 2. - <_> - - <_> - 7 2 3 3 -1. - <_> - 7 3 3 1 3. - <_> - - <_> - 33 2 6 1 -1. - <_> - 35 4 2 1 3. - 1 - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 28 0 4 4 -1. - <_> - 29 0 2 4 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 33 2 6 1 -1. - <_> - 35 4 2 1 3. - 1 - <_> - - <_> - 12 2 1 6 -1. - <_> - 10 4 1 2 3. - 1 - <_> - - <_> - 35 1 2 3 -1. - <_> - 35 2 2 1 3. - <_> - - <_> - 19 8 2 2 -1. - <_> - 19 8 1 1 2. - <_> - 20 9 1 1 2. - <_> - - <_> - 43 6 1 4 -1. - <_> - 43 6 1 2 2. - 1 - <_> - - <_> - 2 6 4 1 -1. - <_> - 2 6 2 1 2. - 1 - <_> - - <_> - 4 3 32 3 -1. - <_> - 12 3 16 3 2. - <_> - - <_> - 32 5 6 2 -1. - <_> - 34 5 2 2 3. - <_> - - <_> - 15 0 8 7 -1. - <_> - 19 0 4 7 2. - <_> - - <_> - 35 2 4 3 -1. - <_> - 36 3 2 3 2. - 1 - <_> - - <_> - 15 2 2 3 -1. - <_> - 14 3 2 1 3. - 1 - <_> - - <_> - 42 5 2 3 -1. - <_> - 42 5 1 3 2. - 1 - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 13 0 21 1 -1. - <_> - 20 0 7 1 3. - <_> - - <_> - 9 4 1 6 -1. - <_> - 9 7 1 3 2. - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 9 1 26 8 -1. - <_> - 9 1 13 4 2. - <_> - 22 5 13 4 2. - <_> - - <_> - 19 5 8 6 -1. - <_> - 21 5 4 6 2. - <_> - - <_> - 15 3 12 8 -1. - <_> - 21 3 6 8 2. - <_> - - <_> - 20 0 6 1 -1. - <_> - 22 0 2 1 3. - <_> - - <_> - 7 0 12 2 -1. - <_> - 7 0 6 1 2. - <_> - 13 1 6 1 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 32 1 6 10 -1. - <_> - 34 1 2 10 3. - <_> - - <_> - 7 1 6 10 -1. - <_> - 9 1 2 10 3. - <_> - - <_> - 27 0 9 3 -1. - <_> - 30 0 3 3 3. - <_> - - <_> - 9 3 2 3 -1. - <_> - 8 4 2 1 3. - 1 - <_> - - <_> - 41 0 3 2 -1. - <_> - 42 1 1 2 3. - 1 - <_> - - <_> - 6 0 5 6 -1. - <_> - 6 2 5 2 3. - <_> - - <_> - 27 0 9 3 -1. - <_> - 30 0 3 3 3. - <_> - - <_> - 9 0 9 3 -1. - <_> - 12 0 3 3 3. - <_> - - <_> - 32 9 6 2 -1. - <_> - 34 9 2 2 3. - <_> - - <_> - 7 9 6 2 -1. - <_> - 9 9 2 2 3. - <_> - - <_> - 26 10 6 1 -1. - <_> - 26 10 3 1 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 16 9 8 2 -1. - <_> - 16 9 4 1 2. - <_> - 20 10 4 1 2. - <_> - - <_> - 18 2 12 9 -1. - <_> - 22 2 4 9 3. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 43 5 2 4 -1. - <_> - 43 7 2 2 2. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 15 4 16 2 -1. - <_> - 23 4 8 1 2. - <_> - 15 5 8 1 2. - <_> - - <_> - 12 5 16 2 -1. - <_> - 16 5 8 2 2. - <_> - - <_> - 19 2 9 9 -1. - <_> - 22 2 3 9 3. - <_> - - <_> - 19 9 2 2 -1. - <_> - 19 9 1 1 2. - <_> - 20 10 1 1 2. - <_> - - <_> - 20 1 8 10 -1. - <_> - 22 1 4 10 2. - <_> - - <_> - 0 2 39 9 -1. - <_> - 13 5 13 3 9. - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 32 5 3 3 -1. - <_> - 31 6 3 1 3. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - <_> - - <_> - 24 2 11 6 -1. - <_> - 24 4 11 2 3. - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 39 1 3 9 -1. - <_> - 40 4 1 3 9. - <_> - - <_> - 17 2 9 9 -1. - <_> - 20 2 3 9 3. - <_> - - <_> - 20 8 8 2 -1. - <_> - 22 8 4 2 2. - <_> - - <_> - 18 7 8 4 -1. - <_> - 20 7 4 4 2. - <_> - - <_> - 8 5 30 6 -1. - <_> - 23 5 15 3 2. - <_> - 8 8 15 3 2. - <_> - - <_> - 0 7 5 2 -1. - <_> - 0 8 5 1 2. - <_> - - <_> - 23 6 1 4 -1. - <_> - 22 7 1 2 2. - 1 - <_> - - <_> - 3 5 3 2 -1. - <_> - 4 5 1 2 3. - <_> - - <_> - 21 0 6 1 -1. - <_> - 23 0 2 1 3. - <_> - - <_> - 2 3 2 7 -1. - <_> - 3 3 1 7 2. - <_> - - <_> - 18 2 24 2 -1. - <_> - 30 2 12 1 2. - <_> - 18 3 12 1 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 34 0 3 3 -1. - <_> - 34 1 3 1 3. - <_> - - <_> - 17 1 2 2 -1. - <_> - 17 1 1 2 2. - 1 - <_> - - <_> - 34 0 3 3 -1. - <_> - 34 1 3 1 3. - <_> - - <_> - 21 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 25 9 2 2 -1. - <_> - 26 9 1 1 2. - <_> - 25 10 1 1 2. - <_> - - <_> - 18 9 2 2 -1. - <_> - 18 9 1 1 2. - <_> - 19 10 1 1 2. - <_> - - <_> - 31 4 2 2 -1. - <_> - 32 4 1 1 2. - <_> - 31 5 1 1 2. - <_> - - <_> - 4 2 1 4 -1. - <_> - 3 3 1 2 2. - 1 - <_> - - <_> - 31 4 2 2 -1. - <_> - 32 4 1 1 2. - <_> - 31 5 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 3 2. - <_> - 11 4 2 3 2. - <_> - - <_> - 19 0 20 7 -1. - <_> - 19 0 10 7 2. - <_> - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - <_> - - <_> - 23 6 4 1 -1. - <_> - 23 6 2 1 2. - 1 - <_> - - <_> - 0 1 2 10 -1. - <_> - 0 6 2 5 2. - <_> - - <_> - 1 10 44 1 -1. - <_> - 1 10 22 1 2. - <_> - - <_> - 12 4 4 4 -1. - <_> - 13 4 2 4 2. - <_> - - <_> - 30 2 12 5 -1. - <_> - 33 2 6 5 2. - <_> - - <_> - 12 2 3 4 -1. - <_> - 13 3 1 4 3. - 1 - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 33 2 4 3 -1. - <_> - 33 3 4 1 3. - <_> - - <_> - 18 0 2 3 -1. - <_> - 18 0 1 3 2. - 1 - <_> - - <_> - 35 0 6 6 -1. - <_> - 35 0 3 6 2. - <_> - - <_> - 4 0 6 6 -1. - <_> - 7 0 3 6 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 16 0 12 1 -1. - <_> - 19 0 6 1 2. - <_> - - <_> - 29 5 4 2 -1. - <_> - 29 5 2 2 2. - 1 - <_> - - <_> - 14 10 9 1 -1. - <_> - 17 10 3 1 3. - <_> - - <_> - 6 7 34 4 -1. - <_> - 23 7 17 2 2. - <_> - 6 9 17 2 2. - <_> - - <_> - 1 2 36 4 -1. - <_> - 19 2 18 4 2. - <_> - - <_> - 29 0 6 4 -1. - <_> - 31 0 2 4 3. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 5 2 2 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 8 2 3 3. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 7 0 16 2 -1. - <_> - 7 0 8 1 2. - <_> - 15 1 8 1 2. - <_> - - <_> - 21 1 16 2 -1. - <_> - 29 1 8 1 2. - <_> - 21 2 8 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 29 0 6 4 -1. - <_> - 31 0 2 4 3. - <_> - - <_> - 12 2 6 6 -1. - <_> - 14 4 2 2 9. - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 5 3 2 3 -1. - <_> - 5 4 2 1 3. - <_> - - <_> - 39 4 1 4 -1. - <_> - 39 5 1 2 2. - <_> - - <_> - 16 4 1 6 -1. - <_> - 16 4 1 3 2. - 1 - <_> - - <_> - 39 4 1 4 -1. - <_> - 39 5 1 2 2. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 5 4 1 4 -1. - <_> - 5 5 1 2 2. - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - <_> - - <_> - 42 2 2 2 -1. - <_> - 42 2 1 2 2. - 1 - <_> - - <_> - 3 2 2 2 -1. - <_> - 3 2 2 1 2. - 1 - <_> - - <_> - 33 9 6 2 -1. - <_> - 35 9 2 2 3. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 28 3 2 6 -1. - <_> - 28 3 2 3 2. - 1 - <_> - - <_> - 16 4 8 7 -1. - <_> - 18 4 4 7 2. - <_> - - <_> - 21 1 6 8 -1. - <_> - 21 1 3 8 2. - <_> - - <_> - 18 4 6 4 -1. - <_> - 21 4 3 4 2. - <_> - - <_> - 24 0 8 3 -1. - <_> - 24 0 4 3 2. - 1 - <_> - - <_> - 1 9 32 2 -1. - <_> - 9 9 16 2 2. - <_> - - <_> - 38 2 1 3 -1. - <_> - 38 3 1 1 3. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 32 2 6 1 -1. - <_> - 34 4 2 1 3. - 1 - <_> - - <_> - 0 10 2 1 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 43 9 2 2 -1. - <_> - 43 10 2 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 21 0 3 9 -1. - <_> - 22 3 1 3 9. - <_> - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 9 5 1 4 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 42 8 2 3 -1. - <_> - 42 9 2 1 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 43 8 1 3 -1. - <_> - 43 9 1 1 3. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 36 0 6 4 -1. - <_> - 38 0 2 4 3. - <_> - - <_> - 4 0 12 2 -1. - <_> - 4 0 6 1 2. - <_> - 10 1 6 1 2. - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 34 0 10 4 -1. - <_> - 34 1 10 2 2. - <_> - - <_> - 12 0 12 4 -1. - <_> - 18 0 6 4 2. - <_> - - <_> - 39 1 3 9 -1. - <_> - 40 4 1 3 9. - <_> - - <_> - 6 2 8 4 -1. - <_> - 6 3 8 2 2. - <_> - - <_> - 31 5 3 3 -1. - <_> - 30 6 3 1 3. - 1 - <_> - - <_> - 0 5 24 2 -1. - <_> - 12 5 12 2 2. - <_> - - <_> - 24 5 2 2 -1. - <_> - 24 5 1 2 2. - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 4 3 2 2. - 1 - <_> - - <_> - 10 1 26 8 -1. - <_> - 23 1 13 4 2. - <_> - 10 5 13 4 2. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 5 2 3 2. - <_> - 2 8 2 3 2. - <_> - - <_> - 24 9 11 2 -1. - <_> - 24 10 11 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 4 2 3 2. - <_> - - <_> - 44 3 1 8 -1. - <_> - 44 7 1 4 2. - <_> - - <_> - 0 3 1 8 -1. - <_> - 0 7 1 4 2. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 7 1 2 3. - 1 - <_> - - <_> - 20 8 8 2 -1. - <_> - 24 8 4 1 2. - <_> - 20 9 4 1 2. - <_> - - <_> - 0 1 45 9 -1. - <_> - 15 4 15 3 9. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 16 8 10 2 -1. - <_> - 16 8 5 1 2. - <_> - 21 9 5 1 2. - <_> - - <_> - 22 0 4 9 -1. - <_> - 22 0 2 9 2. - <_> - - <_> - 22 6 1 4 -1. - <_> - 22 6 1 2 2. - 1 - <_> - - <_> - 23 8 2 2 -1. - <_> - 24 8 1 1 2. - <_> - 23 9 1 1 2. - <_> - - <_> - 20 8 2 2 -1. - <_> - 20 8 1 1 2. - <_> - 21 9 1 1 2. - <_> - - <_> - 37 4 4 2 -1. - <_> - 39 4 2 1 2. - <_> - 37 5 2 1 2. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 29 1 3 2 -1. - <_> - 29 1 3 1 2. - 1 - <_> - - <_> - 0 3 10 2 -1. - <_> - 0 3 5 1 2. - <_> - 5 4 5 1 2. - <_> - - <_> - 36 0 6 4 -1. - <_> - 38 0 2 4 3. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 4 1 3 2. - <_> - - <_> - 36 10 6 1 -1. - <_> - 38 10 2 1 3. - <_> - - <_> - 3 10 6 1 -1. - <_> - 5 10 2 1 3. - <_> - - <_> - 33 7 2 2 -1. - <_> - 34 7 1 1 2. - <_> - 33 8 1 1 2. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 36 0 6 3 -1. - <_> - 38 0 2 3 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 36 0 6 3 -1. - <_> - 38 0 2 3 3. - <_> - - <_> - 3 0 6 3 -1. - <_> - 5 0 2 3 3. - <_> - - <_> - 33 0 8 2 -1. - <_> - 33 0 4 2 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 5 6 2 1 2. - <_> - 7 7 2 1 2. - <_> - - <_> - 31 0 10 2 -1. - <_> - 31 0 5 2 2. - <_> - - <_> - 13 0 18 6 -1. - <_> - 13 0 9 3 2. - <_> - 22 3 9 3 2. - <_> - - <_> - 26 0 1 2 -1. - <_> - 26 0 1 1 2. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 15 7 2 1 2. - 1 - <_> - - <_> - 41 0 4 4 -1. - <_> - 40 1 4 2 2. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 25 9 11 2 -1. - <_> - 25 10 11 1 2. - <_> - - <_> - 9 9 11 2 -1. - <_> - 9 10 11 1 2. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 0 0 44 6 -1. - <_> - 0 0 22 3 2. - <_> - 22 3 22 3 2. - <_> - - <_> - 20 0 8 11 -1. - <_> - 20 0 4 11 2. - <_> - - <_> - 17 4 8 7 -1. - <_> - 19 4 4 7 2. - <_> - - <_> - 34 7 4 3 -1. - <_> - 34 8 4 1 3. - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 29 0 3 7 -1. - <_> - 30 0 1 7 3. - <_> - - <_> - 13 0 3 7 -1. - <_> - 14 0 1 7 3. - <_> - - <_> - 14 6 18 4 -1. - <_> - 23 6 9 2 2. - <_> - 14 8 9 2 2. - <_> - - <_> - 9 9 4 1 -1. - <_> - 10 9 2 1 2. - <_> - - <_> - 23 8 6 3 -1. - <_> - 25 8 2 3 3. - <_> - - <_> - 18 3 6 5 -1. - <_> - 20 3 2 5 3. - <_> - - <_> - 23 0 10 1 -1. - <_> - 23 0 5 1 2. - 1 - <_> - - <_> - 21 0 2 11 -1. - <_> - 22 0 1 11 2. - <_> - - <_> - 22 7 9 3 -1. - <_> - 25 7 3 3 3. - <_> - - <_> - 14 7 9 3 -1. - <_> - 17 7 3 3 3. - <_> - - <_> - 20 0 6 2 -1. - <_> - 22 0 2 2 3. - <_> - - <_> - 19 0 6 2 -1. - <_> - 21 0 2 2 3. - <_> - - <_> - 23 0 10 1 -1. - <_> - 23 0 5 1 2. - 1 - <_> - - <_> - 22 0 1 10 -1. - <_> - 22 0 1 5 2. - 1 - <_> - - <_> - 22 1 4 1 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 22 1 4 1 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 18 1 6 1 -1. - <_> - 20 1 2 1 3. - <_> - - <_> - 21 0 16 2 -1. - <_> - 29 0 8 1 2. - <_> - 21 1 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 33 1 6 3 -1. - <_> - 33 2 6 1 3. - <_> - - <_> - 15 1 4 2 -1. - <_> - 16 2 2 2 2. - 1 - <_> - - <_> - 13 3 3 4 -1. - <_> - 14 4 1 4 3. - 1 - <_> - - <_> - 36 0 8 4 -1. - <_> - 36 1 8 2 2. - <_> - - <_> - 7 0 18 7 -1. - <_> - 16 0 9 7 2. - <_> - - <_> - 38 2 6 1 -1. - <_> - 40 4 2 1 3. - 1 - <_> - - <_> - 3 5 4 6 -1. - <_> - 3 5 2 3 2. - <_> - 5 8 2 3 2. - <_> - - <_> - 24 8 2 1 -1. - <_> - 24 8 1 1 2. - 1 - <_> - - <_> - 13 10 12 1 -1. - <_> - 16 10 6 1 2. - <_> - - <_> - 34 0 10 4 -1. - <_> - 34 1 10 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 1 10 2 2. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 33 0 6 3 -1. - <_> - 35 0 2 3 3. - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 27 0 12 2 -1. - <_> - 30 0 6 2 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 22 9 2 2 -1. - <_> - 23 9 1 1 2. - <_> - 22 10 1 1 2. - <_> - - <_> - 3 4 34 2 -1. - <_> - 20 4 17 2 2. - <_> - - <_> - 22 5 6 6 -1. - <_> - 25 5 3 3 2. - <_> - 22 8 3 3 2. - <_> - - <_> - 12 4 20 4 -1. - <_> - 12 4 10 2 2. - <_> - 22 6 10 2 2. - <_> - - <_> - 37 2 2 3 -1. - <_> - 37 3 2 1 3. - <_> - - <_> - 5 2 9 3 -1. - <_> - 5 3 9 1 3. - <_> - - <_> - 27 0 12 1 -1. - <_> - 30 0 6 1 2. - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 0 6 1 2. - <_> - - <_> - 30 0 6 3 -1. - <_> - 32 0 2 3 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 10 0 2 4 3. - <_> - - <_> - 34 3 3 3 -1. - <_> - 33 4 3 1 3. - 1 - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 36 9 6 2 -1. - <_> - 38 9 2 2 3. - <_> - - <_> - 3 9 6 2 -1. - <_> - 5 9 2 2 3. - <_> - - <_> - 34 3 3 3 -1. - <_> - 33 4 3 1 3. - 1 - <_> - - <_> - 16 10 12 1 -1. - <_> - 19 10 6 1 2. - <_> - - <_> - 23 0 1 10 -1. - <_> - 23 0 1 5 2. - 1 - <_> - - <_> - 1 5 32 4 -1. - <_> - 9 5 16 4 2. - <_> - - <_> - 20 1 6 10 -1. - <_> - 20 1 3 10 2. - <_> - - <_> - 0 6 44 5 -1. - <_> - 22 6 22 5 2. - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 0 3 18 4 -1. - <_> - 6 3 6 4 3. - <_> - - <_> - 30 3 4 2 -1. - <_> - 32 3 2 1 2. - <_> - 30 4 2 1 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 3 1 3 2 2. - 1 - <_> - - <_> - 33 10 6 1 -1. - <_> - 35 10 2 1 3. - <_> - - <_> - 6 10 6 1 -1. - <_> - 8 10 2 1 3. - <_> - - <_> - 28 5 4 3 -1. - <_> - 29 5 2 3 2. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 11 3 3 3 -1. - <_> - 12 4 1 3 3. - 1 - <_> - - <_> - 28 0 2 3 -1. - <_> - 27 1 2 1 3. - 1 - <_> - - <_> - 4 1 3 3 -1. - <_> - 5 2 1 3 3. - 1 - <_> - - <_> - 43 3 2 6 -1. - <_> - 43 5 2 2 3. - <_> - - <_> - 0 3 2 6 -1. - <_> - 0 5 2 2 3. - <_> - - <_> - 28 6 2 1 -1. - <_> - 28 6 1 1 2. - 1 - <_> - - <_> - 17 7 9 4 -1. - <_> - 20 7 3 4 3. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 18 2 6 3 -1. - <_> - 18 2 3 3 2. - 1 - <_> - - <_> - 38 4 4 2 -1. - <_> - 40 4 2 1 2. - <_> - 38 5 2 1 2. - <_> - - <_> - 14 3 16 2 -1. - <_> - 14 3 8 1 2. - <_> - 22 4 8 1 2. - <_> - - <_> - 38 4 4 2 -1. - <_> - 40 4 2 1 2. - <_> - 38 5 2 1 2. - <_> - - <_> - 12 0 3 9 -1. - <_> - 13 3 1 3 9. - <_> - - <_> - 33 0 6 3 -1. - <_> - 33 1 6 1 3. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 31 2 3 3 -1. - <_> - 32 3 1 3 3. - 1 - <_> - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - <_> - - <_> - 23 9 2 2 -1. - <_> - 24 9 1 1 2. - <_> - 23 10 1 1 2. - <_> - - <_> - 20 9 2 2 -1. - <_> - 20 9 1 1 2. - <_> - 21 10 1 1 2. - <_> - - <_> - 25 8 2 2 -1. - <_> - 26 8 1 1 2. - <_> - 25 9 1 1 2. - <_> - - <_> - 18 8 2 2 -1. - <_> - 18 8 1 1 2. - <_> - 19 9 1 1 2. - <_> - - <_> - 17 0 12 2 -1. - <_> - 20 0 6 2 2. - <_> - - <_> - 8 0 18 11 -1. - <_> - 14 0 6 11 3. - <_> - - <_> - 24 1 2 2 -1. - <_> - 25 1 1 1 2. - <_> - 24 2 1 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 20 2 1 1 2. - <_> - - <_> - 30 8 6 3 -1. - <_> - 32 8 2 3 3. - <_> - - <_> - 19 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 26 1 10 2 -1. - <_> - 31 1 5 1 2. - <_> - 26 2 5 1 2. - <_> - - <_> - 9 8 6 3 -1. - <_> - 11 8 2 3 3. - <_> - - <_> - 36 1 5 6 -1. - <_> - 36 3 5 2 3. - <_> - - <_> - 4 1 5 6 -1. - <_> - 4 3 5 2 3. - <_> - - <_> - 36 9 8 1 -1. - <_> - 36 9 4 1 2. - <_> - - <_> - 3 3 6 2 -1. - <_> - 3 3 3 2 2. - 1 - <_> - - <_> - 39 3 4 8 -1. - <_> - 39 3 2 8 2. - <_> - - <_> - 2 3 4 8 -1. - <_> - 4 3 2 8 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 0 5 38 6 -1. - <_> - 0 5 19 3 2. - <_> - 19 8 19 3 2. - <_> - - <_> - 43 0 2 4 -1. - <_> - 43 0 1 4 2. - 1 - <_> - - <_> - 14 6 16 4 -1. - <_> - 14 6 8 2 2. - <_> - 22 8 8 2 2. - <_> - - <_> - 43 0 2 4 -1. - <_> - 43 0 1 4 2. - 1 - <_> - - <_> - 12 4 3 4 -1. - <_> - 13 4 1 4 3. - diff --git a/data/haarcascades/haarcascade_mcs_eyepair_small.xml b/data/haarcascades/haarcascade_mcs_eyepair_small.xml deleted file mode 100644 index 6e22b44ea0..0000000000 --- a/data/haarcascades/haarcascade_mcs_eyepair_small.xml +++ /dev/null @@ -1,10091 +0,0 @@ - - - -BOOST - HAAR - 22 - 5 - - 133 - - 0 - 17 - - <_> - 7 - -1.7232350111007690e+00 - - <_> - - 0 -1 0 2.5266629457473755e-01 - - -7.7110642194747925e-01 8.0833798646926880e-01 - <_> - - 0 -1 1 5.6097120977938175e-03 - - -7.3824870586395264e-01 3.8851681351661682e-01 - <_> - - 0 -1 2 1.5298590064048767e-01 - - -5.5244392156600952e-01 6.4289671182632446e-01 - <_> - - 0 -1 3 -4.1561521589756012e-02 - - 4.6287709474563599e-01 -5.3415888547897339e-01 - <_> - - 0 -1 4 4.0643951296806335e-01 - - 1.7092859372496605e-02 -4.6732509765625000e+03 - <_> - - 0 -1 5 2.9633469879627228e-02 - - -4.4348448514938354e-01 5.0703012943267822e-01 - <_> - - 0 -1 6 1.0285720054525882e-04 - - -6.6466391086578369e-01 3.0207848548889160e-01 - <_> - 7 - -1.4015640020370483e+00 - - <_> - - 0 -1 7 3.3425179123878479e-01 - - -6.5658462047576904e-01 7.2224652767181396e-01 - <_> - - 0 -1 8 3.4681979566812515e-02 - - -6.5526360273361206e-01 5.4633998870849609e-01 - <_> - - 0 -1 9 -5.3489811718463898e-02 - - 4.9894320964813232e-01 -5.0774151086807251e-01 - <_> - - 0 -1 10 1.0272119939327240e-01 - - -2.8445309400558472e-01 4.0494489669799805e-01 - <_> - - 0 -1 11 1.4077969535719603e-04 - - -7.9020249843597412e-01 3.4440949559211731e-01 - <_> - - 0 -1 12 2.3227030038833618e-01 - - -1.3018049299716949e-01 4.3139758706092834e-01 - <_> - - 0 -1 13 8.0413393676280975e-02 - - -4.6376779675483704e-01 4.8824951052665710e-01 - <_> - 14 - -1.9015949964523315e+00 - - <_> - - 0 -1 14 3.5276851058006287e-01 - - -6.3080090284347534e-01 6.5199118852615356e-01 - <_> - - 0 -1 15 7.3224060237407684e-02 - - -5.9558337926864624e-01 4.8831069469451904e-01 - <_> - - 0 -1 16 -2.2634120658040047e-02 - - 4.1987290978431702e-01 -5.6545442342758179e-01 - <_> - - 0 -1 17 2.2298170626163483e-01 - - -3.1860861182212830e-01 4.8772248625755310e-01 - <_> - - 0 -1 18 1.8357429653406143e-02 - - -4.0862768888473511e-01 3.9951491355895996e-01 - <_> - - 0 -1 19 1.2711199815385044e-04 - - -4.7230800986289978e-01 2.0521849393844604e-01 - <_> - - 0 -1 20 1.0834160260856152e-02 - - 1.3318300247192383e-01 -7.7914947271347046e-01 - <_> - - 0 -1 21 -7.9301595687866211e-03 - - -5.9789812564849854e-01 4.9372468143701553e-02 - <_> - - 0 -1 22 2.9459610581398010e-01 - - -9.9943317472934723e-03 -3.9346069335937500e+03 - <_> - - 0 -1 23 2.3979870602488518e-02 - - 6.5359488129615784e-02 -5.0484991073608398e-01 - <_> - - 0 -1 24 1.0285720054525882e-04 - - -6.2231910228729248e-01 1.3749890029430389e-01 - <_> - - 0 -1 25 1.3282659649848938e-01 - - -3.4161621332168579e-01 2.7172261476516724e-01 - <_> - - 0 -1 26 -3.7376780062913895e-02 - - -7.4671339988708496e-01 1.1474339663982391e-01 - <_> - - 0 -1 27 7.3414398357272148e-03 - - -3.4962359070777893e-01 1.2929069995880127e-01 - <_> - 21 - -1.8471280336380005e+00 - - <_> - - 0 -1 28 3.5913649201393127e-01 - - -5.8520388603210449e-01 5.8315628767013550e-01 - <_> - - 0 -1 29 -9.2016262933611870e-03 - - 2.3378680646419525e-01 -5.2131319046020508e-01 - <_> - - 0 -1 30 -1.5467359684407711e-02 - - 3.3575141429901123e-01 -5.4084789752960205e-01 - <_> - - 0 -1 31 1.5523830056190491e-01 - - -4.6488308906555176e-01 4.3957579135894775e-01 - <_> - - 0 -1 32 -1.0378899984061718e-02 - - 2.2855420410633087e-01 -4.7472599148750305e-01 - <_> - - 0 -1 33 -7.5254109688103199e-03 - - 3.0168649554252625e-01 -2.8491249680519104e-01 - <_> - - 0 -1 34 -1.2629480625037104e-04 - - 2.2317290306091309e-01 -3.9811360836029053e-01 - <_> - - 0 -1 35 1.2507449719123542e-04 - - -3.6723288893699646e-01 1.3852049410343170e-01 - <_> - - 0 -1 36 -9.0782120823860168e-03 - - -6.8277508020401001e-01 1.0983029752969742e-01 - <_> - - 0 -1 37 -4.9800768494606018e-02 - - -7.1183747053146362e-01 9.5877766609191895e-02 - <_> - - 0 -1 38 1.0729680210351944e-01 - - -1.9828429445624352e-02 -2.6988120117187500e+03 - <_> - - 0 -1 39 -2.9545628931373358e-03 - - -5.9663408994674683e-01 1.4378489553928375e-01 - <_> - - 0 -1 40 1.2507449719123542e-04 - - -4.2198759317398071e-01 1.2654370069503784e-01 - <_> - - 0 -1 41 5.0712730735540390e-02 - - 3.6825660616159439e-02 -7.2819608449935913e-01 - <_> - - 0 -1 42 1.4936710067559034e-04 - - -5.3859847784042358e-01 1.2984189391136169e-01 - <_> - - 0 -1 43 2.4373650550842285e-01 - - 5.6961510330438614e-02 -7.1023291349411011e-01 - <_> - - 0 -1 44 -6.0015019029378891e-02 - - 2.4694560468196869e-01 -2.5020390748977661e-01 - <_> - - 0 -1 45 8.7412662804126740e-02 - - 5.8552309870719910e-02 -2.8725269436836243e-01 - <_> - - 0 -1 46 -9.0919047594070435e-02 - - -6.8815648555755615e-01 8.8074482977390289e-02 - <_> - - 0 -1 47 1.4819550514221191e-01 - - -8.3346709609031677e-02 5.1286262273788452e-01 - <_> - - 0 -1 48 2.1776199340820312e-01 - - -1.1302039772272110e-01 4.8981839418411255e-01 - <_> - 23 - -1.7498610019683838e+00 - - <_> - - 0 -1 49 2.4087640643119812e-01 - - -5.4511332511901855e-01 4.9997121095657349e-01 - <_> - - 0 -1 50 9.1455027461051941e-02 - - -5.4530072212219238e-01 3.6511918902397156e-01 - <_> - - 0 -1 51 6.2960892915725708e-02 - - -4.5040848851203918e-01 3.1278419494628906e-01 - <_> - - 0 -1 52 -4.4865939766168594e-02 - - 3.8191598653793335e-01 -4.0314820408821106e-01 - <_> - - 0 -1 53 -1.3774819672107697e-02 - - 2.5567761063575745e-01 -5.2795022726058960e-01 - <_> - - 0 -1 54 3.0930969864130020e-02 - - -3.2184159755706787e-01 3.2615759968757629e-01 - <_> - - 0 -1 55 2.8891479596495628e-03 - - -5.8948808908462524e-01 1.3433440029621124e-01 - <_> - - 0 -1 56 8.0474298447370529e-03 - - 1.3132849335670471e-01 -6.8602150678634644e-01 - <_> - - 0 -1 57 9.5555791631340981e-03 - - 9.8187282681465149e-02 -6.7927527427673340e-01 - <_> - - 0 -1 58 -3.1676879152655602e-03 - - 1.1390289664268494e-01 -2.3203469812870026e-01 - <_> - - 0 -1 59 -1.6496120020747185e-02 - - 2.5697690248489380e-01 -2.6603409647941589e-01 - <_> - - 0 -1 60 -9.6434041857719421e-02 - - -6.8036687374114990e-01 2.6103440672159195e-02 - <_> - - 0 -1 61 -1.0129880160093307e-02 - - 2.6537680625915527e-01 -2.8654828667640686e-01 - <_> - - 0 -1 62 3.5491649759933352e-04 - - -4.5001238584518433e-01 1.5570540726184845e-01 - <_> - - 0 -1 63 -1.0879360139369965e-02 - - 2.8526028990745544e-01 -2.2041590511798859e-01 - <_> - - 0 -1 64 -1.3320960104465485e-02 - - -6.2863361835479736e-01 7.5602389872074127e-02 - <_> - - 0 -1 65 9.1701131314039230e-03 - - 1.0672529786825180e-01 -5.6462252140045166e-01 - <_> - - 0 -1 66 -1.7562079429626465e-01 - - 6.0234647989273071e-01 -1.1059260368347168e-01 - <_> - - 0 -1 67 3.4105561673641205e-02 - - 1.3363470137119293e-01 -4.9567678570747375e-01 - <_> - - 0 -1 68 -6.4384371042251587e-02 - - -5.8806449174880981e-01 3.2023940235376358e-02 - <_> - - 0 -1 69 -4.6032480895519257e-02 - - -6.1432898044586182e-01 9.9403113126754761e-02 - <_> - - 0 -1 70 -3.8402248173952103e-02 - - 1.6040940582752228e-01 -1.8730519711971283e-01 - <_> - - 0 -1 71 -4.7098070383071899e-01 - - -8.1419098377227783e-01 6.2802910804748535e-02 - <_> - 26 - -1.6923429965972900e+00 - - <_> - - 0 -1 72 4.0789580345153809e-01 - - -2.1667710097972304e-04 4.0943940429687500e+03 - <_> - - 0 -1 73 2.2189030051231384e-01 - - -5.7190257310867310e-01 3.1764110922813416e-01 - <_> - - 0 -1 74 -6.7908123135566711e-02 - - 4.2148721218109131e-01 -4.6982499957084656e-01 - <_> - - 0 -1 75 8.1082796677947044e-03 - - 1.2259560078382492e-01 -4.1368159651756287e-01 - <_> - - 0 -1 76 1.7519680783152580e-02 - - -3.8625329732894897e-01 3.0897051095962524e-01 - <_> - - 0 -1 77 8.1193387508392334e-02 - - -6.3750207424163818e-01 3.8393190503120422e-01 - <_> - - 0 -1 78 1.4751380681991577e-01 - - -4.6316000819206238e-01 2.4519099295139313e-01 - <_> - - 0 -1 79 -4.6391459181904793e-03 - - 2.8011339902877808e-01 -3.1145840883255005e-01 - <_> - - 0 -1 80 -2.5532179279252887e-04 - - 2.1388280391693115e-01 -4.4669920206069946e-01 - <_> - - 0 -1 81 3.5182538628578186e-01 - - 2.3929810151457787e-02 -8.2447677850723267e-01 - <_> - - 0 -1 82 7.2416856884956360e-02 - - -3.8994240760803223e-01 1.8486149609088898e-01 - <_> - - 0 -1 83 -1.2314420193433762e-02 - - 1.1694400012493134e-01 -1.6245290637016296e-01 - <_> - - 0 -1 84 4.2064491659402847e-02 - - 1.0999520123004913e-01 -7.1583980321884155e-01 - <_> - - 0 -1 85 1.4708960056304932e-01 - - 6.4720317721366882e-02 -7.2780632972717285e-01 - <_> - - 0 -1 86 -8.5739437490701675e-03 - - -6.5120697021484375e-01 6.4630962908267975e-02 - <_> - - 0 -1 87 2.4884249432943761e-04 - - -3.8540419936180115e-01 1.0373640060424805e-01 - <_> - - 0 -1 88 3.0264389351941645e-04 - - -3.5174098610877991e-01 1.3352109491825104e-01 - <_> - - 0 -1 89 -3.9636630564928055e-02 - - 3.2420659065246582e-01 -1.9590090215206146e-01 - <_> - - 0 -1 90 3.9922460913658142e-02 - - -1.1895609647035599e-01 4.4634771347045898e-01 - <_> - - 0 -1 91 -1.4249280095100403e-01 - - 5.6414389610290527e-01 -6.4507760107517242e-02 - <_> - - 0 -1 92 3.6157241463661194e-01 - - -1.6855439543724060e-01 3.4748959541320801e-01 - <_> - - 0 -1 93 4.0057301521301270e-02 - - 5.9359360486268997e-02 -5.1402068138122559e-01 - <_> - - 0 -1 94 3.2065549748949707e-04 - - -5.2019292116165161e-01 1.0447859764099121e-01 - <_> - - 0 -1 95 7.5918599963188171e-02 - - 5.9021171182394028e-02 -6.0396432876586914e-01 - <_> - - 0 -1 96 8.8088903576135635e-03 - - -3.0517879128456116e-01 1.9598659873008728e-01 - <_> - - 0 -1 97 -1.1505999602377415e-02 - - -6.9035482406616211e-01 9.5966316759586334e-02 - <_> - 30 - -1.6187490224838257e+00 - - <_> - - 0 -1 98 8.9942701160907745e-02 - - -5.5803191661834717e-01 3.1510511040687561e-01 - <_> - - 0 -1 99 1.4116680622100830e-01 - - -3.5455980896949768e-01 3.4234490990638733e-01 - <_> - - 0 -1 100 -4.9074299633502960e-02 - - 2.8429248929023743e-01 -4.7629681229591370e-01 - <_> - - 0 -1 101 8.8981233537197113e-02 - - 2.1262410283088684e-01 -5.9201169013977051e-01 - <_> - - 0 -1 102 4.5736131072044373e-01 - - -3.4110060334205627e-01 3.1832331418991089e-01 - <_> - - 0 -1 103 -2.0847789710387588e-04 - - 9.2047147452831268e-02 -1.9282439351081848e-01 - <_> - - 0 -1 104 -2.5638268562033772e-04 - - 1.8027019500732422e-01 -5.0077557563781738e-01 - <_> - - 0 -1 105 -4.3627548962831497e-02 - - -7.0934057235717773e-01 2.6141040027141571e-02 - <_> - - 0 -1 106 -1.2148039968451485e-04 - - 1.7804700136184692e-01 -3.8742861151695251e-01 - <_> - - 0 -1 107 6.6614202223718166e-03 - - 9.5236569643020630e-02 -6.4199751615524292e-01 - <_> - - 0 -1 108 1.0133580304682255e-02 - - 4.5362278819084167e-02 -7.3915910720825195e-01 - <_> - - 0 -1 109 -7.4527491815388203e-03 - - 3.4663969278335571e-01 -4.1097310185432434e-01 - <_> - - 0 -1 110 1.8654769659042358e-01 - - 4.6516291797161102e-02 -7.6239591836929321e-01 - <_> - - 0 -1 111 3.4887841343879700e-01 - - 4.4766940176486969e-02 -3.7297439575195312e-01 - <_> - - 0 -1 112 9.0129990130662918e-03 - - 9.2422701418399811e-02 -5.6183439493179321e-01 - <_> - - 0 -1 113 -7.8636936843395233e-02 - - 4.5786789059638977e-01 -1.6657710075378418e-01 - <_> - - 0 -1 114 1.2116239964962006e-01 - - -8.3181731402873993e-02 5.2312797307968140e-01 - <_> - - 0 -1 115 1.8915069522336125e-03 - - -4.3309900164604187e-01 1.2311600148677826e-01 - <_> - - 0 -1 116 3.4766089171171188e-02 - - -3.8780850172042847e-01 1.3191400468349457e-01 - <_> - - 0 -1 117 5.2351798862218857e-02 - - -7.4684523046016693e-02 4.7566229104995728e-01 - <_> - - 0 -1 118 -3.0340079218149185e-02 - - 1.9884179532527924e-01 -2.3101469874382019e-01 - <_> - - 0 -1 119 6.8641840480268002e-03 - - -8.9482538402080536e-02 2.9374399781227112e-01 - <_> - - 0 -1 120 -7.1418210864067078e-02 - - -5.8315718173980713e-01 8.2432016730308533e-02 - <_> - - 0 -1 121 -8.4603831171989441e-02 - - -7.1703827381134033e-01 4.6565640717744827e-02 - <_> - - 0 -1 122 -5.9493448585271835e-02 - - 3.4731200337409973e-01 -1.1965610086917877e-01 - <_> - - 0 -1 123 1.0994940251111984e-01 - - -7.9890703782439232e-03 3.4111711382865906e-01 - <_> - - 0 -1 124 4.9111388623714447e-02 - - -1.0241589695215225e-01 4.6818280220031738e-01 - <_> - - 0 -1 125 3.6367809772491455e-01 - - -8.3159081637859344e-02 3.7145859003067017e-01 - <_> - - 0 -1 126 -1.5865339338779449e-01 - - 5.0474298000335693e-01 -8.3462662994861603e-02 - <_> - - 0 -1 127 -2.5151360780000687e-02 - - -4.5326530933380127e-01 7.8059017658233643e-02 - <_> - 33 - -1.6774560213088989e+00 - - <_> - - 0 -1 128 1.6495940089225769e-01 - - -6.3327008485794067e-01 2.1666599810123444e-01 - <_> - - 0 -1 129 -4.3875761330127716e-02 - - 3.2398268580436707e-01 -5.3654092550277710e-01 - <_> - - 0 -1 130 9.6001587808132172e-03 - - -5.3273487091064453e-01 1.8380840122699738e-01 - <_> - - 0 -1 131 7.8705519437789917e-02 - - -3.8046509027481079e-01 8.5777603089809418e-02 - <_> - - 0 -1 132 -9.9123762920498848e-03 - - 3.0974680185317993e-01 -3.0242699384689331e-01 - <_> - - 0 -1 133 2.1423709392547607e-01 - - -1.3076549768447876e-01 1.5465900301933289e-01 - <_> - - 0 -1 134 3.8553290069103241e-02 - - -4.1129979491233826e-01 2.2162139415740967e-01 - <_> - - 0 -1 135 2.4947660858742893e-04 - - -3.9588528871536255e-01 1.8671679496765137e-01 - <_> - - 0 -1 136 -2.3194089590106159e-04 - - 2.2963899374008179e-01 -2.8851020336151123e-01 - <_> - - 0 -1 137 1.0282140225172043e-02 - - 7.1141071617603302e-02 -7.4978381395339966e-01 - <_> - - 0 -1 138 1.9899800419807434e-02 - - -3.7339100241661072e-01 1.4279870688915253e-01 - <_> - - 0 -1 139 9.1035827994346619e-02 - - 7.0756226778030396e-02 -6.6389507055282593e-01 - <_> - - 0 -1 140 3.9384838193655014e-02 - - -2.2626769542694092e-01 2.4647849798202515e-01 - <_> - - 0 -1 141 1.0999630205333233e-02 - - -2.6254078745841980e-01 1.1630869656801224e-01 - <_> - - 0 -1 142 -5.1808681339025497e-02 - - -5.9614032506942749e-01 8.5982881486415863e-02 - <_> - - 0 -1 143 -7.3788218200206757e-02 - - 2.5938460230827332e-01 -1.0419789701700211e-01 - <_> - - 0 -1 144 4.6990741044282913e-02 - - -1.3505549728870392e-01 4.3088319897651672e-01 - <_> - - 0 -1 145 -9.7187450155615807e-03 - - -6.8422812223434448e-01 1.0987590253353119e-01 - <_> - - 0 -1 146 -3.5397530882619321e-04 - - 1.4434379339218140e-01 -3.2492259144783020e-01 - <_> - - 0 -1 147 1.4243640005588531e-02 - - 2.5580020621418953e-02 -7.0051062107086182e-01 - <_> - - 0 -1 148 -1.3059009611606598e-01 - - 4.8231971263885498e-01 -9.7855798900127411e-02 - <_> - - 0 -1 149 -1.7721720039844513e-02 - - -7.6230561733245850e-01 3.1668808311223984e-02 - <_> - - 0 -1 150 -9.2830806970596313e-03 - - -5.6193757057189941e-01 7.6575733721256256e-02 - <_> - - 0 -1 151 2.4865049635991454e-04 - - -4.1249978542327881e-01 1.3300099968910217e-01 - <_> - - 0 -1 152 -1.4796050265431404e-02 - - -6.9817942380905151e-01 5.2536390721797943e-02 - <_> - - 0 -1 153 1.4459720253944397e-01 - - 8.0330166965723038e-03 -8.6757528781890869e-01 - <_> - - 0 -1 154 1.5795610845088959e-02 - - -2.9273110628128052e-01 1.3636249303817749e-01 - <_> - - 0 -1 155 1.3104810379445553e-02 - - -2.2310920059680939e-01 5.7727438211441040e-01 - <_> - - 0 -1 156 2.2301739454269409e-01 - - -9.3301281332969666e-02 4.9452948570251465e-01 - <_> - - 0 -1 157 -4.9664869904518127e-02 - - -5.1878559589385986e-01 3.4580491483211517e-02 - <_> - - 0 -1 158 -4.5947611331939697e-02 - - -6.5967637300491333e-01 5.8844711631536484e-02 - <_> - - 0 -1 159 -1.0404409840703011e-02 - - 2.6226308941841125e-01 -1.8617649376392365e-01 - <_> - - 0 -1 160 2.9125370085239410e-02 - - -1.8833640217781067e-01 2.1089859306812286e-01 - <_> - 43 - -1.5980160236358643e+00 - - <_> - - 0 -1 161 -2.7601189911365509e-02 - - 2.8599020838737488e-01 -4.1096940636634827e-01 - <_> - - 0 -1 162 3.7857651710510254e-02 - - -4.5894971489906311e-01 1.3157080113887787e-01 - <_> - - 0 -1 163 8.7851449847221375e-02 - - -4.6392178535461426e-01 2.6767331361770630e-01 - <_> - - 0 -1 164 -6.6995318047702312e-03 - - 3.4441629052162170e-01 -3.5756340622901917e-01 - <_> - - 0 -1 165 -2.1192200074438006e-04 - - 2.8535151481628418e-01 -2.5099050998687744e-01 - <_> - - 0 -1 166 7.3331758379936218e-02 - - -5.1049250364303589e-01 2.0841999351978302e-01 - <_> - - 0 -1 167 7.0513516664505005e-02 - - -2.9435500502586365e-01 2.4908310174942017e-01 - <_> - - 0 -1 168 2.4877820396795869e-04 - - -4.5301368832588196e-01 1.1060699820518494e-01 - <_> - - 0 -1 169 -3.4712569322437048e-03 - - 2.8186500072479248e-01 -2.2025389969348907e-01 - <_> - - 0 -1 170 2.4717900669202209e-04 - - -2.4565899372100830e-01 8.6443759500980377e-02 - <_> - - 0 -1 171 1.2986420188099146e-04 - - -3.5027301311492920e-01 1.4678439497947693e-01 - <_> - - 0 -1 172 6.9045290350914001e-02 - - 3.0464420095086098e-02 -6.0509628057479858e-01 - <_> - - 0 -1 173 2.7935361140407622e-04 - - -6.0390001535415649e-01 8.6118496954441071e-02 - <_> - - 0 -1 174 -1.4282229542732239e-01 - - -5.7246452569961548e-01 7.2643920779228210e-02 - <_> - - 0 -1 175 -3.6195218563079834e-02 - - 1.4508500695228577e-01 -2.9879340529441833e-01 - <_> - - 0 -1 176 -3.0662279576063156e-02 - - 2.2187960147857666e-01 -1.6560579836368561e-01 - <_> - - 0 -1 177 4.1992411017417908e-02 - - -1.0774009674787521e-01 4.8182308673858643e-01 - <_> - - 0 -1 178 -7.9941511154174805e-02 - - -4.7171419858932495e-01 3.7495650351047516e-02 - <_> - - 0 -1 179 -6.4027868211269379e-02 - - -6.4578139781951904e-01 7.0583656430244446e-02 - <_> - - 0 -1 180 -2.1864910377189517e-04 - - 1.4576619863510132e-01 -2.6793161034584045e-01 - <_> - - 0 -1 181 -1.4113999903202057e-02 - - -7.7310252189636230e-01 4.3031539767980576e-02 - <_> - - 0 -1 182 -2.7583390474319458e-02 - - -4.6052241325378418e-01 1.2541879899799824e-02 - <_> - - 0 -1 183 3.2080090045928955e-01 - - 3.8655929267406464e-02 -8.0620688199996948e-01 - <_> - - 0 -1 184 3.5831309854984283e-02 - - -6.6294170916080475e-02 3.2638838887214661e-01 - <_> - - 0 -1 185 -7.9818010330200195e-02 - - 4.1679659485816956e-01 -9.1265693306922913e-02 - <_> - - 0 -1 186 -2.6545161381363869e-04 - - 1.1011809855699539e-01 -1.5701800584793091e-01 - <_> - - 0 -1 187 -2.4198470055125654e-04 - - 1.3520300388336182e-01 -2.4126259982585907e-01 - <_> - - 0 -1 188 6.9970320910215378e-03 - - 6.1209369450807571e-02 -4.9959999322891235e-01 - <_> - - 0 -1 189 1.8720689415931702e-01 - - 5.6549020111560822e-02 -5.1141732931137085e-01 - <_> - - 0 -1 190 2.5392429903149605e-02 - - 1.2943379580974579e-02 -5.7294350862503052e-01 - <_> - - 0 -1 191 1.9598169252276421e-02 - - -8.1028573215007782e-02 4.1770109534263611e-01 - <_> - - 0 -1 192 -3.0563350766897202e-02 - - -7.7354127168655396e-01 1.7834499478340149e-02 - <_> - - 0 -1 193 -1.7510980367660522e-02 - - -5.8982509374618530e-01 5.1176030188798904e-02 - <_> - - 0 -1 194 8.0173909664154053e-03 - - -8.8888056576251984e-02 2.5149890780448914e-01 - <_> - - 0 -1 195 3.0078329145908356e-02 - - -5.1423519849777222e-02 6.0266208648681641e-01 - <_> - - 0 -1 196 1.2652520090341568e-02 - - 5.2874740213155746e-02 -6.8241232633590698e-01 - <_> - - 0 -1 197 1.2671189324464649e-04 - - -3.3524969220161438e-01 8.1200607120990753e-02 - <_> - - 0 -1 198 1.8680329620838165e-01 - - -5.4362770169973373e-02 5.2354782819747925e-01 - <_> - - 0 -1 199 1.7570440471172333e-01 - - -5.7003289461135864e-02 6.1373281478881836e-01 - <_> - - 0 -1 200 1.0384310483932495e+00 - - 5.5142719298601151e-02 -6.1898940801620483e-01 - <_> - - 0 -1 201 -3.6805290728807449e-03 - - -3.4223210811614990e-01 8.9690372347831726e-02 - <_> - - 0 -1 202 -1.5596579760313034e-02 - - -6.7402267456054688e-01 2.3316940292716026e-02 - <_> - - 0 -1 203 7.3065250180661678e-03 - - -3.3753579854965210e-01 8.1490926444530487e-02 - <_> - 49 - -1.5710469484329224e+00 - - <_> - - 0 -1 204 1.8058590590953827e-01 - - -5.3006607294082642e-01 3.0238381028175354e-01 - <_> - - 0 -1 205 -1.4102189801633358e-02 - - 3.6992278695106506e-01 -3.2417449355125427e-01 - <_> - - 0 -1 206 -1.0875849984586239e-02 - - 2.5693210959434509e-01 -3.2424819469451904e-01 - <_> - - 0 -1 207 1.9429029896855354e-02 - - -2.1578429639339447e-01 2.5954779982566833e-01 - <_> - - 0 -1 208 -3.3504539169371128e-04 - - 1.5259739756584167e-01 -4.9001759290695190e-01 - <_> - - 0 -1 209 1.4867480099201202e-01 - - -2.5198081135749817e-01 2.3439890146255493e-01 - <_> - - 0 -1 210 -1.9672799855470657e-02 - - 2.4085490405559540e-01 -2.0880240201950073e-01 - <_> - - 0 -1 211 2.9412939329631627e-04 - - -2.0930929481983185e-01 8.3217248320579529e-02 - <_> - - 0 -1 212 -4.9362171441316605e-02 - - 1.7945680022239685e-01 -2.6339888572692871e-01 - <_> - - 0 -1 213 2.6121780276298523e-02 - - 2.5723719969391823e-02 -7.1571451425552368e-01 - <_> - - 0 -1 214 2.5359389837831259e-04 - - -3.6208280920982361e-01 1.4229419827461243e-01 - <_> - - 0 -1 215 2.3524250835180283e-02 - - 1.3082559406757355e-01 -3.1331199407577515e-01 - <_> - - 0 -1 216 2.8964199009351432e-04 - - -2.9553139209747314e-01 1.6127729415893555e-01 - <_> - - 0 -1 217 -5.6771971285343170e-03 - - -5.3372818231582642e-01 3.7908848375082016e-02 - <_> - - 0 -1 218 2.7393171330913901e-04 - - -3.8743188977241516e-01 1.0680560022592545e-01 - <_> - - 0 -1 219 -4.9558758735656738e-02 - - 2.5248089432716370e-01 -1.9702939689159393e-01 - <_> - - 0 -1 220 -3.1284131109714508e-02 - - -5.4901629686355591e-01 8.3271853625774384e-02 - <_> - - 0 -1 221 5.1301490515470505e-02 - - 5.6439649313688278e-02 -3.9528268575668335e-01 - <_> - - 0 -1 222 -6.5874107182025909e-02 - - -6.6007608175277710e-01 5.1039341837167740e-02 - <_> - - 0 -1 223 -4.2836990207433701e-02 - - -4.6951889991760254e-01 2.4805689230561256e-02 - <_> - - 0 -1 224 -3.9816949516534805e-02 - - -5.3903067111968994e-01 6.2565587460994720e-02 - <_> - - 0 -1 225 9.6334350109100342e-01 - - 7.0093147456645966e-02 -5.0512290000915527e-01 - <_> - - 0 -1 226 -9.0300403535366058e-02 - - -6.0602772235870361e-01 4.7844190150499344e-02 - <_> - - 0 -1 227 1.1647170037031174e-01 - - 3.7802059203386307e-02 -4.2558151483535767e-01 - <_> - - 0 -1 228 1.4104600250720978e-01 - - 5.3307779133319855e-02 -6.4774441719055176e-01 - <_> - - 0 -1 229 -2.2453929483890533e-01 - - -7.4235057830810547e-01 3.9420530200004578e-02 - <_> - - 0 -1 230 1.2207459658384323e-02 - - 4.1159488260746002e-02 -6.2470448017120361e-01 - <_> - - 0 -1 231 -1.2989179790019989e-01 - - -5.0202441215515137e-01 5.0608549267053604e-02 - <_> - - 0 -1 232 -1.3367730379104614e-01 - - -5.9807258844375610e-01 5.1502179354429245e-02 - <_> - - 0 -1 233 -2.7120931190438569e-04 - - 9.4227276742458344e-02 -1.8693520128726959e-01 - <_> - - 0 -1 234 -1.0169100016355515e-01 - - 3.2843610644340515e-01 -8.7932407855987549e-02 - <_> - - 0 -1 235 -1.0269139707088470e-01 - - 3.6913949251174927e-01 -9.3921191990375519e-02 - <_> - - 0 -1 236 -1.0396800003945827e-02 - - 2.7350321412086487e-01 -1.0995180159807205e-01 - <_> - - 0 -1 237 -2.1686570718884468e-02 - - -5.4310798645019531e-01 3.5409461706876755e-02 - <_> - - 0 -1 238 -1.0991159826517105e-02 - - 3.3133411407470703e-01 -9.4798907637596130e-02 - <_> - - 0 -1 239 3.3094190061092377e-02 - - -6.7603901028633118e-02 3.7596800923347473e-01 - <_> - - 0 -1 240 1.1286569759249687e-02 - - 5.9782750904560089e-02 -5.1132440567016602e-01 - <_> - - 0 -1 241 -2.7613660320639610e-02 - - -1.4082999527454376e-01 2.7692280709743500e-02 - <_> - - 0 -1 242 -2.4939039722084999e-02 - - -3.9404359459877014e-01 7.4676387012004852e-02 - <_> - - 0 -1 243 -2.0524069666862488e-02 - - -3.6042830348014832e-01 7.4041247367858887e-02 - <_> - - 0 -1 244 -7.4007459916174412e-03 - - 2.8367879986763000e-01 -1.0147889703512192e-01 - <_> - - 0 -1 245 6.7080897092819214e-01 - - 4.5882590115070343e-02 -3.3616951107978821e-01 - <_> - - 0 -1 246 -3.9679888635873795e-02 - - -5.2566331624984741e-01 5.4599281400442123e-02 - <_> - - 0 -1 247 -8.7327197194099426e-02 - - 1.6750040650367737e-01 -4.3622560799121857e-02 - <_> - - 0 -1 248 6.4611792564392090e-02 - - -7.3659181594848633e-02 3.8314640522003174e-01 - <_> - - 0 -1 249 -2.2105389833450317e-01 - - 1.0447829961776733e-01 -1.7116640508174896e-01 - <_> - - 0 -1 250 5.3933750838041306e-02 - - -2.9619699716567993e-01 9.6287600696086884e-02 - <_> - - 0 -1 251 -2.7547979727387428e-02 - - 1.2633620202541351e-01 -1.4370830357074738e-01 - <_> - - 0 -1 252 -7.9627260565757751e-02 - - -6.7207431793212891e-01 4.2808510363101959e-02 - <_> - 56 - -1.5772149562835693e+00 - - <_> - - 0 -1 253 3.9984458684921265e-01 - - -4.9297308921813965e-01 2.7820569276809692e-01 - <_> - - 0 -1 254 -1.1940109543502331e-02 - - 2.9590839147567749e-01 -2.9935190081596375e-01 - <_> - - 0 -1 255 8.0412777606397867e-04 - - -5.1374572515487671e-01 1.4820599555969238e-01 - <_> - - 0 -1 256 -6.8827301263809204e-02 - - 3.2834580540657043e-01 -2.1098789572715759e-01 - <_> - - 0 -1 257 -2.6670019142329693e-03 - - 1.6911430656909943e-01 -3.8614910840988159e-01 - <_> - - 0 -1 258 1.7666140571236610e-02 - - -2.7672740817070007e-01 2.1801890432834625e-01 - <_> - - 0 -1 259 7.4831801466643810e-03 - - -3.8488918542861938e-01 1.6186140477657318e-01 - <_> - - 0 -1 260 -1.6251010820269585e-02 - - -4.6217259764671326e-01 4.9147199839353561e-02 - <_> - - 0 -1 261 3.9933170774020255e-04 - - -4.5336130261421204e-01 1.0460279881954193e-01 - <_> - - 0 -1 262 -1.5297180041670799e-02 - - -1.4113479852676392e-01 1.1434920132160187e-01 - <_> - - 0 -1 263 -6.3068820163607597e-03 - - 1.6264270246028900e-01 -3.1081709265708923e-01 - <_> - - 0 -1 264 -1.2744629755616188e-02 - - -6.6173952817916870e-01 6.7844212055206299e-02 - <_> - - 0 -1 265 -1.0559420287609100e-01 - - -5.1333832740783691e-01 7.1062602102756500e-02 - <_> - - 0 -1 266 2.1958440542221069e-02 - - 1.3662010431289673e-02 -5.3517282009124756e-01 - <_> - - 0 -1 267 1.6034189611673355e-02 - - -3.5287639498710632e-01 1.0490509867668152e-01 - <_> - - 0 -1 268 -6.5577318891882896e-03 - - 2.1489949524402618e-01 -1.9894179701805115e-01 - <_> - - 0 -1 269 -1.1923479847609997e-02 - - -5.2076560258865356e-01 6.7639470100402832e-02 - <_> - - 0 -1 270 8.6674906313419342e-02 - - 5.8022700250148773e-02 -5.6969362497329712e-01 - <_> - - 0 -1 271 -2.3583239817526191e-04 - - 1.6676810383796692e-01 -2.1293079853057861e-01 - <_> - - 0 -1 272 2.2656060173176229e-04 - - -1.0723900049924850e-01 8.0340780317783356e-02 - <_> - - 0 -1 273 -3.8619268685579300e-02 - - -4.8281979560852051e-01 6.4317606389522552e-02 - <_> - - 0 -1 274 -3.6343471147119999e-03 - - 1.6469269990921021e-01 -1.2586009502410889e-01 - <_> - - 0 -1 275 -1.3567389547824860e-01 - - 6.8711781501770020e-01 -4.5401938259601593e-02 - <_> - - 0 -1 276 -5.9284181334078312e-03 - - -4.4602438807487488e-01 7.7744297683238983e-02 - <_> - - 0 -1 277 -3.8721960037946701e-02 - - -7.9545962810516357e-01 2.7273029088973999e-02 - <_> - - 0 -1 278 2.7111990493722260e-04 - - -6.1464820057153702e-02 8.6636051535606384e-02 - <_> - - 0 -1 279 -8.9391563087701797e-03 - - 3.2042619585990906e-01 -9.4426132738590240e-02 - <_> - - 0 -1 280 4.0600231289863586e-01 - - -1.4507249929010868e-02 4.0071460604667664e-01 - <_> - - 0 -1 281 3.5274639725685120e-01 - - -4.8782840371131897e-02 5.8633488416671753e-01 - <_> - - 0 -1 282 -2.6537929079495370e-04 - - 1.6140839457511902e-01 -2.1041369438171387e-01 - <_> - - 0 -1 283 -1.2319950386881828e-02 - - -5.9739661216735840e-01 4.0629621595144272e-02 - <_> - - 0 -1 284 -1.3849560171365738e-02 - - -6.8779480457305908e-01 2.8297599405050278e-02 - <_> - - 0 -1 285 -3.0354750924743712e-04 - - 1.1384069919586182e-01 -2.1501390635967255e-01 - <_> - - 0 -1 286 -3.9106961339712143e-02 - - -2.2600589692592621e-01 3.9526809006929398e-02 - <_> - - 0 -1 287 -2.8095500543713570e-02 - - -3.5950079560279846e-01 7.4736073613166809e-02 - <_> - - 0 -1 288 -2.1256110072135925e-01 - - -7.1098762750625610e-01 4.1869599372148514e-02 - <_> - - 0 -1 289 -7.9028336331248283e-03 - - 3.0954331159591675e-01 -8.6424186825752258e-02 - <_> - - 0 -1 290 1.1795709840953350e-02 - - 2.5133460760116577e-02 -6.6756761074066162e-01 - <_> - - 0 -1 291 -1.0672540403902531e-02 - - -5.7254207134246826e-01 3.8454119116067886e-02 - <_> - - 0 -1 292 1.9260150194168091e-01 - - 4.5295011252164841e-02 -3.5983958840370178e-01 - <_> - - 0 -1 293 2.7458968758583069e-01 - - 3.7602171301841736e-02 -6.7104452848434448e-01 - <_> - - 0 -1 294 -2.9315929859876633e-02 - - -5.7990521192550659e-01 3.4113410860300064e-02 - <_> - - 0 -1 295 -3.4563058614730835e-01 - - -7.7321988344192505e-01 2.6545749977231026e-02 - <_> - - 0 -1 296 1.0821919888257980e-01 - - 2.6538049802184105e-02 -5.1272237300872803e-01 - <_> - - 0 -1 297 1.5225330367684364e-02 - - -2.8461378812789917e-01 9.5019251108169556e-02 - <_> - - 0 -1 298 -1.3128579594194889e-02 - - 2.4167710542678833e-01 -9.8213009536266327e-02 - <_> - - 0 -1 299 3.9482329040765762e-02 - - -8.4126733243465424e-02 3.1721648573875427e-01 - <_> - - 0 -1 300 2.0438270270824432e-01 - - -9.0963877737522125e-02 2.7314299345016479e-01 - <_> - - 0 -1 301 -2.1871099306736141e-04 - - 1.2994079291820526e-01 -1.9457989931106567e-01 - <_> - - 0 -1 302 -9.3532271683216095e-02 - - 4.6456810832023621e-01 -6.9762058556079865e-02 - <_> - - 0 -1 303 2.3594809696078300e-02 - - -1.6312980651855469e-01 1.5879690647125244e-01 - <_> - - 0 -1 304 2.3572299629449844e-02 - - 3.4230828285217285e-02 -3.9106941223144531e-01 - <_> - - 0 -1 305 -2.8218850493431091e-02 - - 4.9798300862312317e-01 -5.4106999188661575e-02 - <_> - - 0 -1 306 -4.6584788709878922e-02 - - -4.2779120802879333e-01 4.1826229542493820e-02 - <_> - - 0 -1 307 1.1646820232272148e-02 - - 6.8037100136280060e-02 -3.5714611411094666e-01 - <_> - - 0 -1 308 -1.9526390731334686e-01 - - 2.1971330046653748e-01 -1.0934519767761230e-01 - <_> - 70 - -1.5406730175018311e+00 - - <_> - - 0 -1 309 -6.0963228344917297e-02 - - 2.6233229041099548e-01 -3.9964640140533447e-01 - <_> - - 0 -1 310 3.1858150032348931e-04 - - -1.8744090199470520e-01 1.2887619435787201e-01 - <_> - - 0 -1 311 -1.7338279634714127e-02 - - 1.5848200023174286e-01 -4.1080018877983093e-01 - <_> - - 0 -1 312 1.9554449617862701e-01 - - -4.1255399584770203e-01 1.6843290627002716e-01 - <_> - - 0 -1 313 -1.6848340630531311e-02 - - 1.5632760524749756e-01 -4.2258378863334656e-01 - <_> - - 0 -1 314 6.7765302956104279e-02 - - 8.8457070291042328e-02 -4.5746278762817383e-01 - <_> - - 0 -1 315 -2.1593479439616203e-02 - - 4.3105560541152954e-01 -1.1188620328903198e-01 - <_> - - 0 -1 316 2.2325530648231506e-02 - - -1.7106969654560089e-01 1.1900480091571808e-01 - <_> - - 0 -1 317 4.1217468678951263e-02 - - 1.1528480052947998e-01 -4.2701280117034912e-01 - <_> - - 0 -1 318 -2.0137800311204046e-04 - - 1.7593939602375031e-01 -2.0617599785327911e-01 - <_> - - 0 -1 319 2.0204859902150929e-04 - - -5.6596899032592773e-01 8.9145816862583160e-02 - <_> - - 0 -1 320 -3.0921408534049988e-01 - - 3.4555140137672424e-01 -1.0850270092487335e-01 - <_> - - 0 -1 321 -6.1448230408132076e-03 - - 1.8596710264682770e-01 -2.0050209760665894e-01 - <_> - - 0 -1 322 -1.2021329998970032e-01 - - -3.4771358966827393e-01 5.4678130894899368e-02 - <_> - - 0 -1 323 -1.4376080036163330e-01 - - -5.4118317365646362e-01 6.1214160174131393e-02 - <_> - - 0 -1 324 -1.2037059664726257e-01 - - -6.1475539207458496e-01 1.6389599069952965e-02 - <_> - - 0 -1 325 4.2673919349908829e-02 - - 6.1599899083375931e-02 -4.8987519741058350e-01 - <_> - - 0 -1 326 2.0105950534343719e-01 - - 1.9135080277919769e-02 -4.4107690453529358e-01 - <_> - - 0 -1 327 2.0882239937782288e-01 - - 6.1363980174064636e-02 -5.6655067205429077e-01 - <_> - - 0 -1 328 3.4317639074288309e-04 - - -3.7903869152069092e-01 8.0770552158355713e-02 - <_> - - 0 -1 329 1.1899280361831188e-02 - - 5.1373660564422607e-02 -5.1244020462036133e-01 - <_> - - 0 -1 330 -1.5274089761078358e-02 - - -6.5564781427383423e-01 3.1176609918475151e-02 - <_> - - 0 -1 331 2.0450940355658531e-02 - - -1.1008310317993164e-01 2.4426600337028503e-01 - <_> - - 0 -1 332 1.0915989987552166e-02 - - -3.0113309621810913e-01 8.4650352597236633e-02 - <_> - - 0 -1 333 6.5979440696537495e-03 - - -2.3539529740810394e-01 1.1103770136833191e-01 - <_> - - 0 -1 334 7.4403129518032074e-02 - - 2.6583429425954819e-02 -5.2900832891464233e-01 - <_> - - 0 -1 335 9.6808141097426414e-03 - - -3.1914350390434265e-01 9.1770917177200317e-02 - <_> - - 0 -1 336 2.9621220892295241e-04 - - -2.4492859840393066e-01 2.6193821430206299e-01 - <_> - - 0 -1 337 9.8016488552093506e-01 - - 4.3550208210945129e-02 -5.0767660140991211e-01 - <_> - - 0 -1 338 -3.1622480601072311e-02 - - -8.4246248006820679e-01 3.8115619681775570e-03 - <_> - - 0 -1 339 -2.3534629493951797e-02 - - -4.1606828570365906e-01 5.6047659367322922e-02 - <_> - - 0 -1 340 -2.7265268727205694e-04 - - 7.3260016739368439e-02 -1.2437839806079865e-01 - <_> - - 0 -1 341 3.2802440226078033e-02 - - 4.6918708831071854e-02 -5.4838627576828003e-01 - <_> - - 0 -1 342 2.9037919011898339e-04 - - -7.6424241065979004e-02 7.5254246592521667e-02 - <_> - - 0 -1 343 -2.0024979487061501e-02 - - -6.4532381296157837e-01 3.3612970262765884e-02 - <_> - - 0 -1 344 -2.7752740425057709e-04 - - 8.7540581822395325e-02 -9.9770903587341309e-02 - <_> - - 0 -1 345 7.7714829239994287e-04 - - -1.1906430125236511e-01 2.0813730359077454e-01 - <_> - - 0 -1 346 -3.3943509333766997e-04 - - 1.0715380311012268e-01 -3.6650410294532776e-01 - <_> - - 0 -1 347 -3.1033109873533249e-02 - - -3.9916810393333435e-01 8.1188216805458069e-02 - <_> - - 0 -1 348 -1.7289260402321815e-02 - - 3.8013750314712524e-01 -6.0977298766374588e-02 - <_> - - 0 -1 349 -1.5011649578809738e-02 - - -3.3468168973922729e-01 6.8933099508285522e-02 - <_> - - 0 -1 350 6.4567357301712036e-02 - - 6.5394707024097443e-02 -4.7988981008529663e-01 - <_> - - 0 -1 351 1.2624289840459824e-02 - - -2.0736390352249146e-01 1.0337830334901810e-01 - <_> - - 0 -1 352 2.3402009159326553e-02 - - 1.9422940909862518e-02 -2.9609990119934082e-01 - <_> - - 0 -1 353 1.0855530202388763e-01 - - 3.5537008196115494e-02 -5.5214291810989380e-01 - <_> - - 0 -1 354 4.5320361852645874e-02 - - 5.1564838737249374e-02 -2.5036799907684326e-01 - <_> - - 0 -1 355 -5.7765920646488667e-03 - - -3.6300620436668396e-01 6.0400400310754776e-02 - <_> - - 0 -1 356 4.2834520339965820e-02 - - -1.0816460102796555e-01 5.9968799352645874e-02 - <_> - - 0 -1 357 -6.7743198014795780e-03 - - 2.1504840254783630e-01 -9.3404106795787811e-02 - <_> - - 0 -1 358 1.1993249878287315e-02 - - 1.7558900639414787e-02 -7.4426478147506714e-01 - <_> - - 0 -1 359 -7.5555630028247833e-03 - - -3.8360419869422913e-01 4.8056539148092270e-02 - <_> - - 0 -1 360 5.1661770790815353e-02 - - -4.0535770356655121e-02 2.7973321080207825e-01 - <_> - - 0 -1 361 -3.4890910610556602e-03 - - 1.1065530031919479e-01 -1.8241560459136963e-01 - <_> - - 0 -1 362 -1.7821760475635529e-01 - - 4.6676158905029297e-01 -4.5715868473052979e-02 - <_> - - 0 -1 363 -3.9882469922304153e-02 - - -3.6969459056854248e-01 6.6279433667659760e-02 - <_> - - 0 -1 364 8.6848186329007149e-03 - - -9.0845301747322083e-02 2.9390209913253784e-01 - <_> - - 0 -1 365 -9.8893903195858002e-03 - - -5.9415078163146973e-01 3.5158470273017883e-02 - <_> - - 0 -1 366 1.2979790568351746e-01 - - -6.3968099653720856e-02 3.1669330596923828e-01 - <_> - - 0 -1 367 -2.2091900929808617e-02 - - -7.3574930429458618e-01 3.4748189151287079e-02 - <_> - - 0 -1 368 6.3688866794109344e-02 - - -4.8844788223505020e-02 1.8822559714317322e-01 - <_> - - 0 -1 369 -2.8462480986490846e-04 - - 1.4634150266647339e-01 -1.2434139847755432e-01 - <_> - - 0 -1 370 8.7389163672924042e-03 - - -8.8357016444206238e-02 3.6513170599937439e-01 - <_> - - 0 -1 371 -8.5483584553003311e-03 - - -3.7375131249427795e-01 4.9242861568927765e-02 - <_> - - 0 -1 372 -4.8324568197131157e-03 - - 3.0512019991874695e-01 -8.7134227156639099e-02 - <_> - - 0 -1 373 9.0768225491046906e-03 - - 5.4005049169063568e-02 -3.6545351147651672e-01 - <_> - - 0 -1 374 -4.1476011276245117e-02 - - -2.6398089528083801e-01 3.6431320011615753e-02 - <_> - - 0 -1 375 -1.7926920205354691e-02 - - -2.0585890114307404e-01 9.5735296607017517e-02 - <_> - - 0 -1 376 1.3466989621520042e-02 - - 4.0114641189575195e-02 -2.6507300138473511e-01 - <_> - - 0 -1 377 -1.0521490126848221e-02 - - 3.3944410085678101e-01 -6.2721483409404755e-02 - <_> - - 0 -1 378 9.0459967032074928e-03 - - -1.1153969913721085e-01 3.6552271246910095e-01 - <_> - 77 - -1.5132089853286743e+00 - - <_> - - 0 -1 379 2.9219689965248108e-01 - - -3.0517441034317017e-01 3.1100711226463318e-01 - <_> - - 0 -1 380 4.8884529620409012e-02 - - -4.3176358938217163e-01 9.0919703245162964e-02 - <_> - - 0 -1 381 -8.6104847490787506e-02 - - 2.3504100739955902e-01 -2.4588750302791595e-01 - <_> - - 0 -1 382 -3.7824749946594238e-02 - - 1.1865279823541641e-01 -1.6027280688285828e-01 - <_> - - 0 -1 383 5.1638111472129822e-03 - - -3.0879729986190796e-01 1.6927860677242279e-01 - <_> - - 0 -1 384 1.0608089715242386e-01 - - -3.2493358850479126e-01 2.0097799599170685e-01 - <_> - - 0 -1 385 -1.7758550122380257e-02 - - 1.1281190067529678e-01 -3.5320740938186646e-01 - <_> - - 0 -1 386 -4.9341689795255661e-02 - - 1.4547340571880341e-01 -2.6537749171257019e-01 - <_> - - 0 -1 387 2.5910969823598862e-02 - - 1.2290839850902557e-01 -4.1275170445442200e-01 - <_> - - 0 -1 388 5.6900721974670887e-03 - - -4.1842108964920044e-01 9.8855160176753998e-02 - <_> - - 0 -1 389 -1.0024379938840866e-01 - - 3.8681399822235107e-01 -9.5526076853275299e-02 - <_> - - 0 -1 390 -2.0592489454429597e-04 - - 1.0861500352621078e-01 -1.1460640281438828e-01 - <_> - - 0 -1 391 -2.4438640684820712e-04 - - 1.3918270170688629e-01 -2.2799800336360931e-01 - <_> - - 0 -1 392 -2.2062960488256067e-04 - - 2.0565949380397797e-01 -2.7677100896835327e-01 - <_> - - 0 -1 393 -9.5974102616310120e-02 - - 3.0785810947418213e-01 -1.1823830008506775e-01 - <_> - - 0 -1 394 -1.5439930558204651e-01 - - 4.4712421298027039e-01 -1.7546219751238823e-02 - <_> - - 0 -1 395 6.2385208904743195e-02 - - -1.2762880325317383e-01 2.6652419567108154e-01 - <_> - - 0 -1 396 -2.1663220599293709e-02 - - -5.5112272500991821e-01 7.8566007316112518e-02 - <_> - - 0 -1 397 2.4211770296096802e-01 - - -8.1605702638626099e-02 4.1426479816436768e-01 - <_> - - 0 -1 398 4.3407708406448364e-02 - - 2.9027709737420082e-02 -6.5751147270202637e-01 - <_> - - 0 -1 399 -2.5835740962065756e-04 - - 1.4794899523258209e-01 -1.8168459832668304e-01 - <_> - - 0 -1 400 -2.0531630143523216e-02 - - -3.0385929346084595e-01 5.8148749172687531e-02 - <_> - - 0 -1 401 -3.5120129585266113e-02 - - -7.7284640073776245e-01 3.3544670790433884e-02 - <_> - - 0 -1 402 9.0519672632217407e-01 - - 5.8951519429683685e-02 -4.0955621004104614e-01 - <_> - - 0 -1 403 -2.9139410704374313e-02 - - -4.9474939703941345e-01 4.9022089689970016e-02 - <_> - - 0 -1 404 -8.9205689728260040e-03 - - 1.7033359408378601e-01 -1.2763510644435883e-01 - <_> - - 0 -1 405 -6.8206740543246269e-03 - - -4.4272041320800781e-01 6.4747646450996399e-02 - <_> - - 0 -1 406 -1.1916610412299633e-02 - - -4.2080488801002502e-01 1.4589769765734673e-02 - <_> - - 0 -1 407 1.4910879544913769e-02 - - -2.6192238926887512e-01 9.8739542067050934e-02 - <_> - - 0 -1 408 -3.9695478975772858e-02 - - -5.7163047790527344e-01 1.5096279792487621e-02 - <_> - - 0 -1 409 -2.1801660477649420e-04 - - 1.2833200395107269e-01 -2.1621960401535034e-01 - <_> - - 0 -1 410 -4.5885100960731506e-02 - - -5.8307892084121704e-01 2.3085020482540131e-02 - <_> - - 0 -1 411 -3.7609770894050598e-02 - - -4.7697749733924866e-01 4.9783270806074142e-02 - <_> - - 0 -1 412 -7.9078450798988342e-03 - - 2.8025069832801819e-01 -8.0540910363197327e-02 - <_> - - 0 -1 413 3.9813838899135590e-02 - - -6.3936218619346619e-02 4.0940278768539429e-01 - <_> - - 0 -1 414 4.4679851271212101e-03 - - -6.8359166383743286e-02 1.8522049486637115e-01 - <_> - - 0 -1 415 -7.4347038753330708e-03 - - 2.9873400926589966e-01 -9.6865907311439514e-02 - <_> - - 0 -1 416 -2.6862850063480437e-04 - - 8.8527821004390717e-02 -1.4215320348739624e-01 - <_> - - 0 -1 417 -1.6553189605474472e-02 - - -4.9239259958267212e-01 4.9005638808012009e-02 - <_> - - 0 -1 418 9.2472568154335022e-02 - - 3.3866059035062790e-02 -4.1273859143257141e-01 - <_> - - 0 -1 419 2.5774519890546799e-02 - - -2.2871309518814087e-01 1.2359119951725006e-01 - <_> - - 0 -1 420 -2.7509099245071411e-01 - - -6.7499440908432007e-01 3.4330759197473526e-02 - <_> - - 0 -1 421 7.1902588009834290e-02 - - 4.1956070810556412e-02 -4.7635290026664734e-01 - <_> - - 0 -1 422 3.1190859153866768e-02 - - 2.7266679331660271e-02 -3.0001860857009888e-01 - <_> - - 0 -1 423 -1.7863180488348007e-02 - - -3.7337848544120789e-01 6.1663690954446793e-02 - <_> - - 0 -1 424 1.5114569664001465e-01 - - 5.1791738718748093e-02 -2.1886229515075684e-01 - <_> - - 0 -1 425 2.1793439984321594e-01 - - 6.1016459017992020e-02 -4.1775038838386536e-01 - <_> - - 0 -1 426 1.1218019761145115e-02 - - 3.4812860190868378e-02 -5.2636182308197021e-01 - <_> - - 0 -1 427 -1.8883459270000458e-01 - - 5.2004408836364746e-01 -4.3031368404626846e-02 - <_> - - 0 -1 428 -1.4107990078628063e-02 - - -6.1068981885910034e-01 4.0028609335422516e-02 - <_> - - 0 -1 429 -1.8044840544462204e-02 - - -2.6319840550422668e-01 7.3012411594390869e-02 - <_> - - 0 -1 430 6.5544890239834785e-03 - - -8.5429012775421143e-02 2.2411470115184784e-01 - <_> - - 0 -1 431 -1.2311659753322601e-02 - - -4.4297298789024353e-01 4.6654261648654938e-02 - <_> - - 0 -1 432 -7.6358742080628872e-03 - - 1.9960640370845795e-01 -5.2228130400180817e-02 - <_> - - 0 -1 433 -1.9270919263362885e-02 - - -7.6859807968139648e-01 2.4350909516215324e-02 - <_> - - 0 -1 434 9.6641881391406059e-03 - - -1.3469670712947845e-01 1.3244539499282837e-01 - <_> - - 0 -1 435 -1.2020190246403217e-02 - - 3.5538628697395325e-01 -5.2558019757270813e-02 - <_> - - 0 -1 436 -2.2079790011048317e-02 - - -6.7542260885238647e-01 1.2419540435075760e-02 - <_> - - 0 -1 437 -3.0078861163929105e-04 - - 1.2276499718427658e-01 -1.7497499287128448e-01 - <_> - - 0 -1 438 -3.7308711558580399e-02 - - 1.8548089265823364e-01 -9.7975112497806549e-02 - <_> - - 0 -1 439 4.5999120920896530e-02 - - 1.1436489969491959e-01 -2.4614730477333069e-01 - <_> - - 0 -1 440 8.2224510610103607e-02 - - -2.4108020588755608e-02 2.6900330185890198e-01 - <_> - - 0 -1 441 8.1898719072341919e-02 - - -3.9654031395912170e-02 5.0478577613830566e-01 - <_> - - 0 -1 442 4.6143731474876404e-01 - - -4.4239178299903870e-02 4.1229158639907837e-01 - <_> - - 0 -1 443 2.5755251408554614e-04 - - -1.7785720527172089e-01 1.2050230056047440e-01 - <_> - - 0 -1 444 1.5665199607610703e-02 - - -4.8571150749921799e-02 8.1546753644943237e-02 - <_> - - 0 -1 445 4.9880009144544601e-02 - - 4.2151898145675659e-02 -5.3030568361282349e-01 - <_> - - 0 -1 446 -2.7810079045593739e-03 - - 1.1986789852380753e-01 -1.9060449302196503e-01 - <_> - - 0 -1 447 -1.7600769177079201e-02 - - 1.8970359861850739e-01 -8.8979102671146393e-02 - <_> - - 0 -1 448 5.0103738903999329e-03 - - -3.1680819392204285e-01 6.1706308275461197e-02 - <_> - - 0 -1 449 5.5831652134656906e-03 - - -2.0722299814224243e-01 8.9394062757492065e-02 - <_> - - 0 -1 450 1.0134370066225529e-02 - - -7.0040181279182434e-02 4.8694871366024017e-02 - <_> - - 0 -1 451 1.7011690139770508e-01 - - 2.5866439566016197e-02 -7.2743201255798340e-01 - <_> - - 0 -1 452 1.2832039967179298e-02 - - -3.2375771552324295e-02 2.8207421302795410e-01 - <_> - - 0 -1 453 -2.1063549502287060e-04 - - 9.8073638975620270e-02 -1.7797160148620605e-01 - <_> - - 0 -1 454 -1.5745580196380615e-02 - - -3.9818260073661804e-01 2.1284950897097588e-02 - <_> - - 0 -1 455 5.3099099546670914e-02 - - 4.7397170215845108e-02 -3.5792729258537292e-01 - <_> - 67 - -1.5654580593109131e+00 - - <_> - - 0 -1 456 -1.2607829645276070e-02 - - 3.2892930507659912e-01 -2.8717321157455444e-01 - <_> - - 0 -1 457 6.9764256477355957e-02 - - -2.1456170082092285e-01 2.6850989460945129e-01 - <_> - - 0 -1 458 -4.1743788868188858e-02 - - 1.5136370062828064e-01 -3.8764739036560059e-01 - <_> - - 0 -1 459 1.0303430259227753e-01 - - -2.8481671214103699e-01 1.2986589968204498e-01 - <_> - - 0 -1 460 -9.6640773117542267e-02 - - -5.2456647157669067e-01 1.0953909903764725e-01 - <_> - - 0 -1 461 8.0958474427461624e-03 - - 5.1381088793277740e-02 -2.6674580574035645e-01 - <_> - - 0 -1 462 -2.2447129595093429e-04 - - 2.0919109880924225e-01 -2.4358089268207550e-01 - <_> - - 0 -1 463 1.2414649873971939e-01 - - -3.0061379075050354e-01 1.5729129314422607e-01 - <_> - - 0 -1 464 4.7367930412292480e-02 - - -8.4176316857337952e-02 4.1426560282707214e-01 - <_> - - 0 -1 465 -1.9609710201621056e-02 - - 3.4175410866737366e-01 -1.6074979305267334e-01 - <_> - - 0 -1 466 3.4829009324312210e-02 - - 7.5592942535877228e-02 -4.5084610581398010e-01 - <_> - - 0 -1 467 3.1012278795242310e-01 - - -3.9134029299020767e-02 1.4436219632625580e-01 - <_> - - 0 -1 468 2.9249370098114014e-01 - - -6.4225807785987854e-02 4.3533229827880859e-01 - <_> - - 0 -1 469 -2.3114589974284172e-02 - - 3.0709230899810791e-01 -8.9011840522289276e-02 - <_> - - 0 -1 470 2.7578460867516696e-04 - - -3.0701848864555359e-01 9.3834467232227325e-02 - <_> - - 0 -1 471 4.5587219297885895e-02 - - 3.8235291838645935e-02 -3.3477979898452759e-01 - <_> - - 0 -1 472 -2.4057110771536827e-02 - - -4.4573658704757690e-01 6.7070230841636658e-02 - <_> - - 0 -1 473 1.3616659678518772e-02 - - -6.1480499804019928e-02 4.2142671346664429e-01 - <_> - - 0 -1 474 -2.2992959246039391e-02 - - 3.6616420745849609e-01 -8.7241843342781067e-02 - <_> - - 0 -1 475 1.2585769593715668e-01 - - 3.7163209170103073e-02 -3.5607740283012390e-01 - <_> - - 0 -1 476 -8.1533789634704590e-02 - - -4.6987119317054749e-01 6.1010621488094330e-02 - <_> - - 0 -1 477 -2.4753381148912013e-04 - - 1.9363069534301758e-01 -1.8168680369853973e-01 - <_> - - 0 -1 478 -2.6028539286926389e-04 - - 8.4685117006301880e-02 -3.2848459482192993e-01 - <_> - - 0 -1 479 -2.2039060422684997e-04 - - 1.2290880084037781e-01 -1.5494909882545471e-01 - <_> - - 0 -1 480 1.9603030383586884e-01 - - 5.8126050978899002e-02 -4.5621550083160400e-01 - <_> - - 0 -1 481 1.4078690111637115e-01 - - 4.4675320386886597e-02 -5.6197601556777954e-01 - <_> - - 0 -1 482 -2.2961759532336146e-04 - - 1.1912509799003601e-01 -2.1606180071830750e-01 - <_> - - 0 -1 483 -1.9533330574631691e-02 - - -3.9051491022109985e-01 7.0104159414768219e-02 - <_> - - 0 -1 484 1.3873109593987465e-02 - - -7.2445243597030640e-02 3.7747910618782043e-01 - <_> - - 0 -1 485 -1.2634480663109571e-04 - - 9.5786243677139282e-02 -1.2607480585575104e-01 - <_> - - 0 -1 486 -2.4178609251976013e-02 - - -5.3298008441925049e-01 5.0309620797634125e-02 - <_> - - 0 -1 487 -1.4559309929609299e-02 - - 3.9040461182594299e-01 -1.1877249926328659e-01 - <_> - - 0 -1 488 -2.2580049699172378e-04 - - 1.9512599706649780e-01 -1.4849540591239929e-01 - <_> - - 0 -1 489 -2.1493160724639893e-01 - - -6.0010147094726562e-01 2.9111139476299286e-02 - <_> - - 0 -1 490 -1.2839700095355511e-02 - - 3.1576830148696899e-01 -7.2001501917839050e-02 - <_> - - 0 -1 491 -1.9878910854458809e-02 - - 3.2251578569412231e-01 -1.3537259399890900e-01 - <_> - - 0 -1 492 1.0035489685833454e-02 - - -5.6822560727596283e-02 4.6567371487617493e-01 - <_> - - 0 -1 493 -3.7623681128025055e-02 - - -4.2677378654479980e-01 6.4819470047950745e-02 - <_> - - 0 -1 494 1.1324769729981199e-04 - - -1.5958139300346375e-01 1.4778269827365875e-01 - <_> - - 0 -1 495 3.7978328764438629e-02 - - -6.5907582640647888e-02 4.0129879117012024e-01 - <_> - - 0 -1 496 3.9439778774976730e-02 - - -8.4525480866432190e-02 3.5665979981422424e-01 - <_> - - 0 -1 497 -8.9516127482056618e-03 - - -4.3341609835624695e-01 6.1983428895473480e-02 - <_> - - 0 -1 498 8.3888713270425797e-03 - - 4.6857211738824844e-02 -4.7389200329780579e-01 - <_> - - 0 -1 499 7.4398089200258255e-03 - - 4.2178198695182800e-02 -5.1433807611465454e-01 - <_> - - 0 -1 500 -1.0792319662868977e-02 - - -5.8029949665069580e-01 3.2290369272232056e-02 - <_> - - 0 -1 501 -1.7495209351181984e-02 - - -3.0535429716110229e-01 6.2918312847614288e-02 - <_> - - 0 -1 502 -2.0570710301399231e-02 - - 1.8253210186958313e-01 -1.2104229629039764e-01 - <_> - - 0 -1 503 -1.1084279685746878e-04 - - 1.0002639889717102e-01 -1.4502419531345367e-01 - <_> - - 0 -1 504 -1.1143789626657963e-02 - - -3.4728500247001648e-01 6.5074883401393890e-02 - <_> - - 0 -1 505 -9.1553200036287308e-03 - - 3.3986049890518188e-01 -1.3546380400657654e-01 - <_> - - 0 -1 506 -2.1860719425603747e-04 - - 1.4218950271606445e-01 -1.6001039743423462e-01 - <_> - - 0 -1 507 -8.7175592780113220e-02 - - 3.0803269147872925e-01 -7.5192652642726898e-02 - <_> - - 0 -1 508 7.8020721673965454e-02 - - -9.8369129002094269e-02 2.5249159336090088e-01 - <_> - - 0 -1 509 2.8408560319803655e-04 - - -3.8713818788528442e-01 4.7610171139240265e-02 - <_> - - 0 -1 510 -1.2072480283677578e-02 - - 2.1239200234413147e-01 -1.0058870166540146e-01 - <_> - - 0 -1 511 9.9354498088359833e-02 - - 2.4916980415582657e-02 -5.6729847192764282e-01 - <_> - - 0 -1 512 1.9157710485160351e-03 - - -5.0840312242507935e-01 4.1036780923604965e-02 - <_> - - 0 -1 513 -1.2407809845171869e-04 - - 7.8671306371688843e-02 -1.3265369832515717e-01 - <_> - - 0 -1 514 -5.2246060222387314e-02 - - 1.1491920053958893e-01 -1.7707020044326782e-01 - <_> - - 0 -1 515 -1.8520159937907010e-04 - - 7.4766620993614197e-02 -1.2861029803752899e-01 - <_> - - 0 -1 516 1.2496319599449635e-02 - - -3.7268429994583130e-02 5.8338952064514160e-01 - <_> - - 0 -1 517 -2.0702749490737915e-02 - - -4.5835781097412109e-01 2.9882829636335373e-02 - <_> - - 0 -1 518 -1.0285720054525882e-04 - - 1.1698140203952789e-01 -1.7797960340976715e-01 - <_> - - 0 -1 519 -2.9295669868588448e-02 - - -4.7592011094093323e-01 5.5395901203155518e-02 - <_> - - 0 -1 520 2.6850448921322823e-03 - - 9.5413416624069214e-02 -2.3697119951248169e-01 - <_> - - 0 -1 521 3.6398479342460632e-01 - - 2.4766860529780388e-02 -7.3781871795654297e-01 - <_> - - 0 -1 522 3.4822531044483185e-02 - - -3.7149909883737564e-02 5.8010172843933105e-01 - <_> - 99 - -1.5075240135192871e+00 - - <_> - - 0 -1 523 -6.6602258011698723e-03 - - 3.1043940782546997e-01 -1.9141380488872528e-01 - <_> - - 0 -1 524 8.8032007217407227e-02 - - -2.8957960009574890e-01 1.2161549925804138e-01 - <_> - - 0 -1 525 -8.2375640049576759e-03 - - 1.9459870457649231e-01 -2.7759641408920288e-01 - <_> - - 0 -1 526 4.1018098592758179e-01 - - 5.4545659571886063e-02 -6.9322890043258667e-01 - <_> - - 0 -1 527 -7.9229446128010750e-03 - - 1.3063080608844757e-01 -3.8455259799957275e-01 - <_> - - 0 -1 528 7.8757777810096741e-02 - - -1.8611170351505280e-01 1.0287279635667801e-01 - <_> - - 0 -1 529 1.0222750157117844e-01 - - -2.9705610871315002e-01 1.5016749501228333e-01 - <_> - - 0 -1 530 -6.4451918005943298e-02 - - -4.1343700885772705e-01 1.0809410363435745e-01 - <_> - - 0 -1 531 -3.6805730313062668e-02 - - 3.6842620372772217e-01 -1.1410260200500488e-01 - <_> - - 0 -1 532 -2.9369849711656570e-02 - - 3.2764801383018494e-01 -8.0264106392860413e-02 - <_> - - 0 -1 533 6.7123891785740852e-03 - - 8.8286422193050385e-02 -4.4459021091461182e-01 - <_> - - 0 -1 534 -1.5381410717964172e-01 - - -4.5621570944786072e-01 1.8093600869178772e-02 - <_> - - 0 -1 535 -2.5389369577169418e-02 - - -4.6903249621391296e-01 6.1550658196210861e-02 - <_> - - 0 -1 536 -2.9891099780797958e-02 - - -2.8205209970474243e-01 2.7893319725990295e-02 - <_> - - 0 -1 537 -2.3889240401331335e-04 - - 8.6677610874176025e-02 -3.5725289583206177e-01 - <_> - - 0 -1 538 9.6705302596092224e-02 - - 3.3406659960746765e-02 -2.0783829689025879e-01 - <_> - - 0 -1 539 9.1295214369893074e-03 - - -9.9172890186309814e-02 3.0859309434890747e-01 - <_> - - 0 -1 540 2.9348930716514587e-01 - - 8.1442613154649734e-03 -5.0951921939849854e-01 - <_> - - 0 -1 541 -8.3247363567352295e-02 - - -4.8498851060867310e-01 6.0873661190271378e-02 - <_> - - 0 -1 542 -8.3527393639087677e-02 - - -1.0333900153636932e-01 1.5871569514274597e-02 - <_> - - 0 -1 543 -1.2028300017118454e-01 - - -4.3540289998054504e-01 6.3313230872154236e-02 - <_> - - 0 -1 544 3.3538970351219177e-01 - - 1.3954630121588707e-02 -4.4239100813865662e-01 - <_> - - 0 -1 545 -1.6432419419288635e-02 - - -4.2601698637008667e-01 5.8607041835784912e-02 - <_> - - 0 -1 546 -1.9124349637422711e-04 - - 6.0554228723049164e-02 -7.7583022415637970e-02 - <_> - - 0 -1 547 2.3965220316313207e-04 - - -1.2831470370292664e-01 2.0453229546546936e-01 - <_> - - 0 -1 548 1.4102800190448761e-01 - - 4.2550500482320786e-02 -5.2618932723999023e-01 - <_> - - 0 -1 549 1.6046499833464622e-02 - - -2.4661840498447418e-01 8.1378452479839325e-02 - <_> - - 0 -1 550 5.3162779659032822e-02 - - 3.5204000771045685e-02 -2.8310409188270569e-01 - <_> - - 0 -1 551 -4.1723258793354034e-02 - - -2.9830178618431091e-01 8.0123953521251678e-02 - <_> - - 0 -1 552 -5.5392801761627197e-02 - - 2.2191530466079712e-01 -8.9730821549892426e-02 - <_> - - 0 -1 553 1.7957370728254318e-02 - - -9.2552073299884796e-02 2.5006940960884094e-01 - <_> - - 0 -1 554 -4.0468379855155945e-01 - - 1.8231350183486938e-01 -1.1424650251865387e-01 - <_> - - 0 -1 555 -1.2040740251541138e-01 - - 4.0144130587577820e-01 -4.9775429069995880e-02 - <_> - - 0 -1 556 1.2747700512409210e-01 - - 2.8634460642933846e-02 -3.6931669712066650e-01 - <_> - - 0 -1 557 -2.1081299928482622e-04 - - 1.0899789631366730e-01 -1.8358060717582703e-01 - <_> - - 0 -1 558 2.0266290754079819e-02 - - -1.1471740156412125e-01 2.3657630383968353e-01 - <_> - - 0 -1 559 -9.3857832252979279e-02 - - -4.4467198848724365e-01 4.6323359012603760e-02 - <_> - - 0 -1 560 -3.9089050143957138e-02 - - 9.0057179331779480e-02 -2.4328909814357758e-01 - <_> - - 0 -1 561 1.1693879961967468e-02 - - -1.3434140384197235e-01 1.5598419308662415e-01 - <_> - - 0 -1 562 -2.3392560251522809e-04 - - 1.0660090297460556e-01 -1.5031139552593231e-01 - <_> - - 0 -1 563 7.6654240489006042e-02 - - 4.6630710363388062e-02 -4.4846519827842712e-01 - <_> - - 0 -1 564 -6.6552842035889626e-03 - - 2.9908859729766846e-01 -1.4496180415153503e-01 - <_> - - 0 -1 565 6.4779841341078281e-03 - - 5.7015229016542435e-02 -3.5907289385795593e-01 - <_> - - 0 -1 566 -7.7762663364410400e-02 - - 5.0252002477645874e-01 -4.3528381735086441e-02 - <_> - - 0 -1 567 -1.3975870609283447e-01 - - 3.4654599428176880e-01 -5.2005261182785034e-02 - <_> - - 0 -1 568 -1.2759920209646225e-02 - - -6.6591322422027588e-01 2.0983880385756493e-02 - <_> - - 0 -1 569 1.1362520046532154e-02 - - 2.2282190620899200e-02 -6.6851091384887695e-01 - <_> - - 0 -1 570 -2.2312329709529877e-01 - - -4.6105810999870300e-01 6.2970318831503391e-03 - <_> - - 0 -1 571 2.2931410057935864e-04 - - -2.1111820638179779e-01 8.1771172583103180e-02 - <_> - - 0 -1 572 -6.0226261615753174e-02 - - 3.2546809315681458e-01 -2.1682400256395340e-02 - <_> - - 0 -1 573 3.0173239065334201e-04 - - -3.2320269942283630e-01 7.0820853114128113e-02 - <_> - - 0 -1 574 -2.6154008810408413e-04 - - 6.8223357200622559e-02 -1.0242590308189392e-01 - <_> - - 0 -1 575 -7.4847848154604435e-03 - - 2.2404240071773529e-01 -8.1188187003135681e-02 - <_> - - 0 -1 576 -1.8517110496759415e-02 - - -5.5280369520187378e-01 3.5704329609870911e-02 - <_> - - 0 -1 577 8.1348747014999390e-02 - - -7.7756702899932861e-02 2.3968160152435303e-01 - <_> - - 0 -1 578 -3.1357801053673029e-03 - - -3.5508909821510315e-01 3.3410448580980301e-02 - <_> - - 0 -1 579 -2.6459500077180564e-04 - - 1.0398519784212112e-01 -1.5494589507579803e-01 - <_> - - 0 -1 580 -7.7518890611827374e-03 - - 3.0721589922904968e-01 -1.4710199832916260e-01 - <_> - - 0 -1 581 -1.8430210184305906e-03 - - -3.9274838566780090e-01 4.6835970133543015e-02 - <_> - - 0 -1 582 2.1122969337739050e-04 - - -2.1824510395526886e-01 1.2243290245532990e-01 - <_> - - 0 -1 583 2.2105030075181276e-04 - - -1.8396340310573578e-01 8.9410737156867981e-02 - <_> - - 0 -1 584 -1.5965649485588074e-01 - - 9.6163272857666016e-02 -8.5151679813861847e-02 - <_> - - 0 -1 585 3.0088219791650772e-02 - - -3.9590418338775635e-02 4.7149899601936340e-01 - <_> - - 0 -1 586 -6.0294209979474545e-03 - - 1.9853250682353973e-01 -1.0366839915513992e-01 - <_> - - 0 -1 587 1.2534939683973789e-02 - - -4.6515099704265594e-02 3.7293449044227600e-01 - <_> - - 0 -1 588 2.4954970926046371e-02 - - 3.7810660898685455e-02 -2.1269759535789490e-01 - <_> - - 0 -1 589 9.9147337675094604e-01 - - 4.0480270981788635e-02 -4.2342019081115723e-01 - <_> - - 0 -1 590 5.2983271889388561e-03 - - 8.7228961288928986e-02 -2.7821278572082520e-01 - <_> - - 0 -1 591 1.9360490143299103e-01 - - -9.5363870263099670e-02 1.9188280403614044e-01 - <_> - - 0 -1 592 -7.6572492718696594e-02 - - 6.6240328550338745e-01 -4.9499049782752991e-03 - <_> - - 0 -1 593 2.8880339115858078e-02 - - -5.7680319994688034e-02 3.2165309786796570e-01 - <_> - - 0 -1 594 -1.4741529710590839e-02 - - -8.6476959288120270e-02 3.2484710216522217e-02 - <_> - - 0 -1 595 2.1824369207024574e-02 - - 5.7392548769712448e-02 -3.4417140483856201e-01 - <_> - - 0 -1 596 -2.2812260687351227e-01 - - -5.2481979131698608e-01 6.9780298508703709e-03 - <_> - - 0 -1 597 2.8111049532890320e-01 - - 2.4345170706510544e-02 -6.4987301826477051e-01 - <_> - - 0 -1 598 -2.2957239300012589e-02 - - -4.5815429091453552e-01 3.0206430703401566e-02 - <_> - - 0 -1 599 -6.0340039432048798e-02 - - 4.6401140093803406e-01 -3.7225980311632156e-02 - <_> - - 0 -1 600 2.7569150552153587e-02 - - 2.0976860076189041e-02 -6.9014948606491089e-01 - <_> - - 0 -1 601 2.6252120733261108e-04 - - -2.3853969573974609e-01 7.9771563410758972e-02 - <_> - - 0 -1 602 1.8969880416989326e-02 - - 3.1024020165205002e-02 -2.7818429470062256e-01 - <_> - - 0 -1 603 5.2282828092575073e-01 - - 1.7105970531702042e-02 -7.9434311389923096e-01 - <_> - - 0 -1 604 -3.1894691288471222e-02 - - 2.7892321348190308e-01 -5.4069779813289642e-02 - <_> - - 0 -1 605 1.5336290001869202e-02 - - 4.7054331749677658e-02 -3.6111220717430115e-01 - <_> - - 0 -1 606 -4.1970831155776978e-01 - - -5.9871810674667358e-01 1.1463830247521400e-02 - <_> - - 0 -1 607 -6.7562819458544254e-03 - - 2.2962200641632080e-01 -6.4722940325737000e-02 - <_> - - 0 -1 608 9.8668280988931656e-03 - - -3.7844020873308182e-02 3.3086231350898743e-01 - <_> - - 0 -1 609 -2.1733099594712257e-02 - - 1.0951089859008789e-01 -1.4006720483303070e-01 - <_> - - 0 -1 610 3.0340809375047684e-02 - - 5.3396178409457207e-03 -6.6312831640243530e-01 - <_> - - 0 -1 611 2.7025368763133883e-04 - - -1.5671209990978241e-01 9.8605990409851074e-02 - <_> - - 0 -1 612 -4.1527550667524338e-02 - - 2.3302739858627319e-01 -6.2329120934009552e-02 - <_> - - 0 -1 613 -6.1723008751869202e-02 - - 2.4158929288387299e-01 -9.5591858029365540e-02 - <_> - - 0 -1 614 5.9920018538832664e-03 - - 6.7654989659786224e-02 -3.3483079075813293e-01 - <_> - - 0 -1 615 1.0782639682292938e-01 - - -3.6601308733224869e-02 4.4913661479949951e-01 - <_> - - 0 -1 616 1.6222659498453140e-02 - - 1.7488269135355949e-02 -5.8311402797698975e-01 - <_> - - 0 -1 617 -1.0378819890320301e-02 - - -3.5658320784568787e-01 3.7005800753831863e-02 - <_> - - 0 -1 618 -8.4412395954132080e-03 - - 1.4305970072746277e-01 -5.0731118768453598e-02 - <_> - - 0 -1 619 1.4600029587745667e-01 - - 3.2515849918127060e-02 -4.5058611035346985e-01 - <_> - - 0 -1 620 9.8124182224273682e-01 - - 4.8845731653273106e-03 -6.5059781074523926e-01 - <_> - - 0 -1 621 -3.6866790056228638e-01 - - -7.3445898294448853e-01 1.8663220107555389e-02 - <_> - 105 - -1.4267690181732178e+00 - - <_> - - 0 -1 622 -3.5519830882549286e-02 - - 1.6178520023822784e-01 -3.5573509335517883e-01 - <_> - - 0 -1 623 9.1728484258055687e-03 - - -1.2603040039539337e-01 1.0709279775619507e-01 - <_> - - 0 -1 624 2.2142989933490753e-01 - - -7.7310669439611956e-06 -1.2306490478515625e+03 - <_> - - 0 -1 625 1.1212819814682007e-01 - - 9.6115162596106529e-03 -5.5913168191909790e-01 - <_> - - 0 -1 626 2.1457310765981674e-02 - - -3.3965739607810974e-01 1.6609320044517517e-01 - <_> - - 0 -1 627 -1.2972610071301460e-02 - - 2.3398900032043457e-01 -1.6110679507255554e-01 - <_> - - 0 -1 628 -6.6818781197071075e-03 - - 1.3475750386714935e-01 -2.7443009614944458e-01 - <_> - - 0 -1 629 2.5116768665611744e-04 - - -2.6400479674339294e-01 1.1184839904308319e-01 - <_> - - 0 -1 630 1.0441780090332031e-01 - - -2.7721598744392395e-01 1.2263719737529755e-01 - <_> - - 0 -1 631 -1.0307639837265015e-02 - - 4.3872699141502380e-01 -2.2572900354862213e-01 - <_> - - 0 -1 632 -6.5756477415561676e-02 - - -5.4897660017013550e-01 4.4870328158140182e-02 - <_> - - 0 -1 633 -2.3242520168423653e-02 - - 1.6870069503784180e-01 -2.0397870242595673e-01 - <_> - - 0 -1 634 5.6840728968381882e-02 - - -3.5381639003753662e-01 7.3760658502578735e-02 - <_> - - 0 -1 635 -2.8088671388104558e-04 - - 8.4769926965236664e-02 -8.9089483022689819e-02 - <_> - - 0 -1 636 -2.8891719877719879e-02 - - -5.3877258300781250e-01 4.8199739307165146e-02 - <_> - - 0 -1 637 4.8813000321388245e-03 - - -1.0961809754371643e-01 2.2785060107707977e-01 - <_> - - 0 -1 638 -2.2791069932281971e-04 - - 1.5159299969673157e-01 -1.5361729264259338e-01 - <_> - - 0 -1 639 1.7224539071321487e-02 - - 2.6369249448180199e-02 -3.9274901151657104e-01 - <_> - - 0 -1 640 1.9276510924100876e-02 - - 3.9136718958616257e-02 -5.3360277414321899e-01 - <_> - - 0 -1 641 -3.5349979996681213e-02 - - 1.6892379522323608e-01 -4.4725980609655380e-02 - <_> - - 0 -1 642 -2.4690220016054809e-04 - - 9.7651146352291107e-02 -2.2523930668830872e-01 - <_> - - 0 -1 643 -2.3808020341675729e-04 - - 9.1873168945312500e-02 -2.1025580167770386e-01 - <_> - - 0 -1 644 2.2629360319115222e-04 - - -1.3016159832477570e-01 1.7468020319938660e-01 - <_> - - 0 -1 645 -6.8512886762619019e-02 - - 2.2338220477104187e-01 -2.0693479478359222e-01 - <_> - - 0 -1 646 -2.2960439324378967e-02 - - -4.1528278589248657e-01 5.5889990180730820e-02 - <_> - - 0 -1 647 1.2331800162792206e-01 - - -7.2814382612705231e-02 3.2672670483589172e-01 - <_> - - 0 -1 648 -1.5494500100612640e-01 - - -7.8871738910675049e-01 3.1006429344415665e-02 - <_> - - 0 -1 649 -3.1475860625505447e-02 - - -5.5896019935607910e-01 3.1761251389980316e-02 - <_> - - 0 -1 650 -2.5482099503278732e-02 - - 2.5390678644180298e-01 -8.7028287351131439e-02 - <_> - - 0 -1 651 -2.5384381297044456e-04 - - 5.3705450147390366e-02 -1.2352950125932693e-01 - <_> - - 0 -1 652 -2.7292590588331223e-02 - - -5.1358467340469360e-01 3.6035798490047455e-02 - <_> - - 0 -1 653 5.0733588635921478e-02 - - -5.1689028739929199e-02 3.9950218796730042e-01 - <_> - - 0 -1 654 1.0531689971685410e-01 - - 3.4946650266647339e-02 -5.7199978828430176e-01 - <_> - - 0 -1 655 7.6800240203738213e-03 - - 4.9117371439933777e-02 -4.7948908805847168e-01 - <_> - - 0 -1 656 -2.7255711029283702e-04 - - 9.2809818685054779e-02 -1.9553889334201813e-01 - <_> - - 0 -1 657 -1.0534330271184444e-02 - - -5.1635378599166870e-01 3.9697758853435516e-02 - <_> - - 0 -1 658 -1.4953180216252804e-02 - - 1.6262400150299072e-01 -1.2715120613574982e-01 - <_> - - 0 -1 659 -6.0432821512222290e-02 - - 1.6455219686031342e-01 -3.7964299321174622e-02 - <_> - - 0 -1 660 -1.3054289855062962e-02 - - -6.0740822553634644e-01 3.1696751713752747e-02 - <_> - - 0 -1 661 1.6081769764423370e-01 - - -6.5205618739128113e-04 -4.5857870578765869e-01 - <_> - - 0 -1 662 3.4118819981813431e-02 - - -1.1646260321140289e-01 1.5788400173187256e-01 - <_> - - 0 -1 663 3.7732940167188644e-02 - - -3.8753949105739594e-02 1.3495290279388428e-01 - <_> - - 0 -1 664 3.0711879953742027e-02 - - 4.7742258757352829e-02 -4.3035370111465454e-01 - <_> - - 0 -1 665 -3.7949949502944946e-02 - - 1.1755629628896713e-01 -1.4889590442180634e-01 - <_> - - 0 -1 666 2.9360290616750717e-02 - - -7.5253017246723175e-02 2.9323920607566833e-01 - <_> - - 0 -1 667 2.5319901108741760e-01 - - -1.6658699512481689e-01 8.9499808847904205e-02 - <_> - - 0 -1 668 1.2959289550781250e-01 - - -5.5784460157155991e-02 3.4918808937072754e-01 - <_> - - 0 -1 669 -8.8244248181581497e-03 - - 2.7902889251708984e-01 -6.8206131458282471e-02 - <_> - - 0 -1 670 7.8791379928588867e-02 - - -1.5620680153369904e-01 1.1304420232772827e-01 - <_> - - 0 -1 671 -1.2836029753088951e-02 - - -2.3410409688949585e-01 6.8805016577243805e-02 - <_> - - 0 -1 672 -7.9522699117660522e-02 - - -2.5314009189605713e-01 6.0897290706634521e-02 - <_> - - 0 -1 673 3.9636820554733276e-02 - - -2.6448011398315430e-01 8.2383483648300171e-02 - <_> - - 0 -1 674 -2.4699120223522186e-01 - - 3.5435560345649719e-01 -6.6888548433780670e-02 - <_> - - 0 -1 675 -2.2949569392949343e-04 - - 1.1360239982604980e-01 -1.4772799611091614e-01 - <_> - - 0 -1 676 -1.3312259688973427e-02 - - 3.1586068868637085e-01 -5.5901419371366501e-02 - <_> - - 0 -1 677 1.3203780166804790e-02 - - 3.1486440449953079e-02 -2.6412960886955261e-01 - <_> - - 0 -1 678 -1.2269199825823307e-02 - - -5.9234237670898438e-01 2.4248689413070679e-02 - <_> - - 0 -1 679 -1.8059220165014267e-02 - - 3.3865630626678467e-01 -8.0696828663349152e-02 - <_> - - 0 -1 680 2.5429509696550667e-04 - - -2.2284899652004242e-01 7.4211597442626953e-02 - <_> - - 0 -1 681 7.8134778887033463e-03 - - -4.2979419231414795e-02 1.5614709258079529e-01 - <_> - - 0 -1 682 -1.0979229584336281e-02 - - 2.7910730242729187e-01 -5.6510798633098602e-02 - <_> - - 0 -1 683 -1.7990529537200928e-02 - - -6.0465961694717407e-01 3.1155569478869438e-02 - <_> - - 0 -1 684 1.1254849843680859e-02 - - 4.8717640340328217e-02 -3.3757600188255310e-01 - <_> - - 0 -1 685 -2.6132029597647488e-04 - - 1.0562919825315475e-01 -1.3438390195369720e-01 - <_> - - 0 -1 686 -5.1210080273449421e-03 - - -5.5222177505493164e-01 2.6566710323095322e-02 - <_> - - 0 -1 687 2.4672409519553185e-02 - - 9.7258696332573891e-03 -6.1605077981948853e-01 - <_> - - 0 -1 688 -6.7694962024688721e-02 - - -7.3660212755203247e-01 1.9528219476342201e-02 - <_> - - 0 -1 689 -2.8008190914988518e-02 - - -5.0814652442932129e-01 1.0170410387217999e-02 - <_> - - 0 -1 690 -7.1907560341060162e-03 - - 1.4633940160274506e-01 -1.0106740146875381e-01 - <_> - - 0 -1 691 -1.5178619883954525e-02 - - 2.2530260682106018e-01 -7.1203649044036865e-02 - <_> - - 0 -1 692 -1.7735399305820465e-02 - - 1.8737579882144928e-01 -9.3150086700916290e-02 - <_> - - 0 -1 693 2.6827311376109719e-04 - - -5.0975449383258820e-02 7.8092053532600403e-02 - <_> - - 0 -1 694 1.5329830348491669e-02 - - 3.1708821654319763e-02 -4.8529189825057983e-01 - <_> - - 0 -1 695 2.8564469539560378e-04 - - -7.4729010462760925e-02 7.3530480265617371e-02 - <_> - - 0 -1 696 -2.2120429202914238e-02 - - 2.7287200093269348e-01 -6.4062908291816711e-02 - <_> - - 0 -1 697 -2.1887499315198511e-04 - - 6.3031002879142761e-02 -9.6845053136348724e-02 - <_> - - 0 -1 698 -2.1083210594952106e-04 - - 1.0389020293951035e-01 -1.6525639593601227e-01 - <_> - - 0 -1 699 -6.2754601240158081e-03 - - 2.4225880205631256e-01 -7.5907923281192780e-02 - <_> - - 0 -1 700 -2.3757809773087502e-02 - - -3.8318058848381042e-01 4.0133509784936905e-02 - <_> - - 0 -1 701 1.1325069703161716e-02 - - -3.5525530576705933e-02 2.1164399385452271e-01 - <_> - - 0 -1 702 -7.2220653295516968e-02 - - -6.2676852941513062e-01 2.2165909409523010e-02 - <_> - - 0 -1 703 -4.5017611235380173e-02 - - -7.7151697874069214e-01 7.7348982449620962e-04 - <_> - - 0 -1 704 -6.2360418960452080e-03 - - 2.6456978917121887e-01 -5.3363479673862457e-02 - <_> - - 0 -1 705 -2.5355370598845184e-04 - - 4.0398750454187393e-02 -1.5795269608497620e-01 - <_> - - 0 -1 706 -4.6271558851003647e-02 - - -4.0787988901138306e-01 3.8921471685171127e-02 - <_> - - 0 -1 707 -1.1218659579753876e-02 - - 7.4395492672920227e-02 -1.3349680602550507e-01 - <_> - - 0 -1 708 4.2274970561265945e-02 - - 3.7559799849987030e-02 -3.5659119486808777e-01 - <_> - - 0 -1 709 7.1554719470441341e-03 - - 3.2838869839906693e-02 -3.9694920182228088e-01 - <_> - - 0 -1 710 2.8899949789047241e-01 - - 2.1863840520381927e-02 -5.6416589021682739e-01 - <_> - - 0 -1 711 -1.9863760098814964e-02 - - 2.2337679564952850e-01 -3.1122479587793350e-02 - <_> - - 0 -1 712 2.0147679373621941e-02 - - -1.3183030486106873e-01 1.0647880285978317e-01 - <_> - - 0 -1 713 2.1021129563450813e-02 - - -2.7941459789872169e-02 1.4968049526214600e-01 - <_> - - 0 -1 714 9.0801073238253593e-03 - - -7.1428433060646057e-02 2.1569679677486420e-01 - <_> - - 0 -1 715 -2.1075110882520676e-02 - - -6.3554888963699341e-01 1.4859089627861977e-02 - <_> - - 0 -1 716 -2.6902920217253268e-04 - - 1.0863730311393738e-01 -1.5047989785671234e-01 - <_> - - 0 -1 717 -3.1716268858872354e-04 - - 8.5656993091106415e-02 -1.2388020008802414e-01 - <_> - - 0 -1 718 2.5432288646697998e-01 - - -9.9662892520427704e-02 1.3793380558490753e-01 - <_> - - 0 -1 719 3.5156611353158951e-02 - - 2.7607070282101631e-02 -3.0855798721313477e-01 - <_> - - 0 -1 720 -3.1319420668296516e-04 - - 9.3362413346767426e-02 -1.5827369689941406e-01 - <_> - - 0 -1 721 2.2236700169742107e-04 - - -2.6805540546774864e-02 4.1680369526147842e-02 - <_> - - 0 -1 722 -2.2599179646931589e-04 - - 1.0316269844770432e-01 -1.5537780523300171e-01 - <_> - - 0 -1 723 1.3176410458981991e-02 - - 4.8204571008682251e-02 -1.6340050101280212e-01 - <_> - - 0 -1 724 -3.6689240485429764e-02 - - -5.6660032272338867e-01 2.1624589338898659e-02 - <_> - - 0 -1 725 2.5496680289506912e-02 - - -4.6478029340505600e-02 1.2218680232763290e-01 - <_> - - 0 -1 726 1.2762719765305519e-02 - - -1.1676809936761856e-01 1.2351939827203751e-01 - <_> - 133 - -1.4611779451370239e+00 - - <_> - - 0 -1 727 -1.2680550105869770e-02 - - 2.1946400403976440e-01 -3.0342951416969299e-01 - <_> - - 0 -1 728 2.0277220010757446e-01 - - -3.5292989015579224e-01 8.1888578832149506e-02 - <_> - - 0 -1 729 -4.2049158364534378e-02 - - 2.4808460474014282e-01 -1.7897559702396393e-01 - <_> - - 0 -1 730 3.7381589412689209e-02 - - -1.0807169973850250e-01 1.3556699454784393e-01 - <_> - - 0 -1 731 8.9879266917705536e-02 - - -3.1441110372543335e-01 1.1649979650974274e-01 - <_> - - 0 -1 732 -2.2849619563203305e-04 - - 1.2044479697942734e-01 -1.5876269340515137e-01 - <_> - - 0 -1 733 1.9768830388784409e-02 - - -1.0055690258741379e-01 3.5981228947639465e-01 - <_> - - 0 -1 734 -4.6854061074554920e-03 - - -2.2157269716262817e-01 9.4031356275081635e-02 - <_> - - 0 -1 735 -2.6115920627489686e-04 - - 7.3836371302604675e-02 -2.8550630807876587e-01 - <_> - - 0 -1 736 5.3100939840078354e-02 - - -5.6667480617761612e-02 2.3984040319919586e-01 - <_> - - 0 -1 737 -1.0975299665005878e-04 - - 1.1553339660167694e-01 -2.1104870736598969e-01 - <_> - - 0 -1 738 -3.0807471275329590e-01 - - -4.9161750078201294e-01 5.2133060991764069e-02 - <_> - - 0 -1 739 9.5257293432950974e-03 - - -9.3975499272346497e-02 3.0003049969673157e-01 - <_> - - 0 -1 740 4.7906499356031418e-02 - - 5.1006641238927841e-02 -4.5330038666725159e-01 - <_> - - 0 -1 741 8.1151742488145828e-03 - - 5.3590521216392517e-02 -3.8580769300460815e-01 - <_> - - 0 -1 742 1.1523259803652763e-02 - - -2.2294430434703827e-01 9.0755969285964966e-02 - <_> - - 0 -1 743 -5.7037029415369034e-02 - - 1.1402489989995956e-01 -1.7938560247421265e-01 - <_> - - 0 -1 744 -9.6343189477920532e-02 - - 2.5996109843254089e-01 -6.7842021584510803e-02 - <_> - - 0 -1 745 5.3852960467338562e-02 - - -8.2555137574672699e-02 3.7209570407867432e-01 - <_> - - 0 -1 746 3.2167631434276700e-04 - - -3.5077500343322754e-01 8.2111962139606476e-02 - <_> - - 0 -1 747 -5.6490749120712280e-02 - - -3.2298418879508972e-01 5.3876388818025589e-02 - <_> - - 0 -1 748 -2.7906559989787638e-04 - - 1.5583470463752747e-01 -2.5733149051666260e-01 - <_> - - 0 -1 749 -3.8215760141611099e-02 - - -4.8694840073585510e-01 3.7561759352684021e-02 - <_> - - 0 -1 750 7.6500251889228821e-03 - - -6.2206029891967773e-02 2.7779549360275269e-01 - <_> - - 0 -1 751 2.2391989827156067e-02 - - 5.6726191192865372e-02 -3.0967220664024353e-01 - <_> - - 0 -1 752 -2.8860570862889290e-02 - - 2.1716390550136566e-01 -5.9519559144973755e-02 - <_> - - 0 -1 753 6.9423289969563484e-03 - - -5.1059830933809280e-02 4.0468141436576843e-01 - <_> - - 0 -1 754 1.4006449840962887e-02 - - 4.9552779644727707e-02 -1.9979630410671234e-01 - <_> - - 0 -1 755 2.7382301050238311e-04 - - -3.0520731210708618e-01 6.9563962519168854e-02 - <_> - - 0 -1 756 -1.5174309723079205e-02 - - -3.8258409500122070e-01 2.1974159404635429e-02 - <_> - - 0 -1 757 -1.9322619482409209e-04 - - 1.1859290301799774e-01 -1.7502920329570770e-01 - <_> - - 0 -1 758 -5.8987581729888916e-01 - - -6.4281332492828369e-01 1.7073450610041618e-02 - <_> - - 0 -1 759 2.5915939477272332e-04 - - -2.3254489898681641e-01 6.4852282404899597e-02 - <_> - - 0 -1 760 5.7087451219558716e-01 - - 7.8144967555999756e-03 -6.5341699123382568e-01 - <_> - - 0 -1 761 8.8011100888252258e-02 - - -6.5030708909034729e-02 2.5226131081581116e-01 - <_> - - 0 -1 762 -1.1537440121173859e-02 - - 2.5898069143295288e-02 -4.8579961061477661e-02 - <_> - - 0 -1 763 -4.6533951163291931e-01 - - -4.9289149045944214e-01 3.6602970212697983e-02 - <_> - - 0 -1 764 6.1871910095214844e-01 - - -2.2136380430310965e-03 -7.4808281660079956e-01 - <_> - - 0 -1 765 5.3780531883239746e-01 - - 2.9165390878915787e-02 -5.1737898588180542e-01 - <_> - - 0 -1 766 2.5194421410560608e-01 - - -2.8567619621753693e-02 4.2214900255203247e-01 - <_> - - 0 -1 767 2.7490830048918724e-02 - - -1.2498860061168671e-01 1.5622389316558838e-01 - <_> - - 0 -1 768 1.8063139915466309e-01 - - -1.6325049102306366e-02 1.3234290480613708e-01 - <_> - - 0 -1 769 1.7386689782142639e-01 - - -4.8918601125478745e-02 4.1473680734634399e-01 - <_> - - 0 -1 770 -4.9942150712013245e-02 - - -4.7142308950424194e-01 3.7892449647188187e-02 - <_> - - 0 -1 771 8.2021749019622803e-01 - - 2.3966159671545029e-02 -5.4350042343139648e-01 - <_> - - 0 -1 772 2.5848631048575044e-04 - - -1.0571960359811783e-01 4.8736020922660828e-02 - <_> - - 0 -1 773 -8.0050835385918617e-03 - - 1.9601759314537048e-01 -7.0734307169914246e-02 - <_> - - 0 -1 774 3.1249779462814331e-01 - - -3.4612491726875305e-02 2.0727220177650452e-01 - <_> - - 0 -1 775 1.6595009714365005e-02 - - -5.5334791541099548e-02 3.2362830638885498e-01 - <_> - - 0 -1 776 6.6122892312705517e-03 - - 6.4811848104000092e-02 -1.0377670079469681e-01 - <_> - - 0 -1 777 -5.5534038692712784e-02 - - 9.1052807867527008e-02 -1.9427829980850220e-01 - <_> - - 0 -1 778 -4.2657270096242428e-03 - - -3.7216100096702576e-01 3.5128928720951080e-02 - <_> - - 0 -1 779 -7.1315821260213852e-03 - - -4.0014240145683289e-01 3.6378540098667145e-02 - <_> - - 0 -1 780 -1.5466910600662231e-01 - - 2.2419099509716034e-01 -6.4514227211475372e-02 - <_> - - 0 -1 781 -5.6720200926065445e-02 - - -2.7846959233283997e-01 6.5108783543109894e-02 - <_> - - 0 -1 782 -1.1758569628000259e-02 - - 1.9500179588794708e-01 -8.0316439270973206e-02 - <_> - - 0 -1 783 6.2118507921695709e-03 - - 4.8729728907346725e-02 -2.9427778720855713e-01 - <_> - - 0 -1 784 3.1163550913333893e-02 - - -3.9649609476327896e-02 1.0872240364551544e-01 - <_> - - 0 -1 785 -1.8731789663434029e-02 - - 2.5498849153518677e-01 -5.7060658931732178e-02 - <_> - - 0 -1 786 -1.9629219605121762e-04 - - 6.0982689261436462e-02 -1.0565000027418137e-01 - <_> - - 0 -1 787 -1.1253469623625278e-02 - - 2.4102079868316650e-01 -5.4933529347181320e-02 - <_> - - 0 -1 788 -1.8418630585074425e-02 - - -2.1543020009994507e-01 4.1859380900859833e-02 - <_> - - 0 -1 789 -2.6979470625519753e-02 - - -4.4044798612594604e-01 2.8259810060262680e-02 - <_> - - 0 -1 790 -3.1812430825084448e-04 - - 1.1263129860162735e-01 -1.5612870454788208e-01 - <_> - - 0 -1 791 -1.4269050210714340e-02 - - -2.2047680616378784e-01 6.3962973654270172e-02 - <_> - - 0 -1 792 4.1097350418567657e-02 - - -1.4404140412807465e-02 4.5113658905029297e-01 - <_> - - 0 -1 793 3.4184981137514114e-02 - - -2.3943960666656494e-02 5.3346621990203857e-01 - <_> - - 0 -1 794 -5.5098719894886017e-02 - - -4.4178238511085510e-01 1.4475960284471512e-02 - <_> - - 0 -1 795 1.5465440228581429e-02 - - 1.8221130594611168e-02 -6.2355637550354004e-01 - <_> - - 0 -1 796 5.3496570326387882e-03 - - -1.3820479810237885e-01 2.1783879399299622e-01 - <_> - - 0 -1 797 4.9904521554708481e-02 - - 2.7466949075460434e-02 -5.2732229232788086e-01 - <_> - - 0 -1 798 -5.7295501232147217e-01 - - -8.2962232828140259e-01 5.5375328520312905e-04 - <_> - - 0 -1 799 2.4806600064039230e-02 - - 1.0250580310821533e-01 -1.4922580122947693e-01 - <_> - - 0 -1 800 8.6801443248987198e-03 - - -7.5809933245182037e-02 2.3664160072803497e-01 - <_> - - 0 -1 801 -4.2660851031541824e-02 - - -4.8471969366073608e-01 3.0310539528727531e-02 - <_> - - 0 -1 802 2.7838671207427979e-01 - - -3.0852980911731720e-02 4.8810139298439026e-01 - <_> - - 0 -1 803 -1.0872329585254192e-02 - - -2.7875050902366638e-01 4.6971909701824188e-02 - <_> - - 0 -1 804 2.8905799263156950e-04 - - -9.7713083028793335e-02 1.0453590005636215e-01 - <_> - - 0 -1 805 8.3399498835206032e-03 - - -5.6789729744195938e-02 2.1990999579429626e-01 - <_> - - 0 -1 806 -4.5025609433650970e-03 - - 1.6819390654563904e-01 -4.7182761132717133e-02 - <_> - - 0 -1 807 9.1141611337661743e-03 - - -5.3859930485486984e-02 2.4945180118083954e-01 - <_> - - 0 -1 808 3.3482279628515244e-02 - - 3.9698779582977295e-02 -1.7840039730072021e-01 - <_> - - 0 -1 809 -1.6845509409904480e-02 - - -2.6923018693923950e-01 5.5552460253238678e-02 - <_> - - 0 -1 810 4.3367617763578892e-03 - - 4.5756489038467407e-02 -2.2537319362163544e-01 - <_> - - 0 -1 811 -1.2159480154514313e-01 - - 6.1395758390426636e-01 -2.2958070039749146e-02 - <_> - - 0 -1 812 -1.8687279894948006e-02 - - -3.6422011256217957e-01 2.3655790835618973e-02 - <_> - - 0 -1 813 -2.9130980372428894e-01 - - -6.2919682264328003e-01 1.7662050202488899e-02 - <_> - - 0 -1 814 -3.0170090030878782e-04 - - 7.9020306468009949e-02 -7.3823727667331696e-02 - <_> - - 0 -1 815 2.3048979346640408e-04 - - -1.1339560151100159e-01 1.2542079389095306e-01 - <_> - - 0 -1 816 3.1774640083312988e-02 - - 2.4091020226478577e-02 -2.3947270214557648e-01 - <_> - - 0 -1 817 -6.7688718438148499e-02 - - 2.0689809322357178e-01 -6.2361769378185272e-02 - <_> - - 0 -1 818 3.9785809814929962e-02 - - 1.3510519638657570e-02 -6.3863390684127808e-01 - <_> - - 0 -1 819 -2.0020859315991402e-02 - - -1.9689780473709106e-01 6.7728810012340546e-02 - <_> - - 0 -1 820 9.4509087502956390e-02 - - 1.8017550930380821e-02 -6.4405238628387451e-01 - <_> - - 0 -1 821 6.2699890695512295e-03 - - 3.1439051032066345e-02 -3.6409479379653931e-01 - <_> - - 0 -1 822 -1.3047580420970917e-01 - - -5.4852211475372314e-01 5.9488588012754917e-03 - <_> - - 0 -1 823 -2.7846038574352860e-04 - - 8.6191080510616302e-02 -1.2902879714965820e-01 - <_> - - 0 -1 824 -2.1837399899959564e-01 - - 1.2890920042991638e-01 -5.6212250143289566e-02 - <_> - - 0 -1 825 1.8505910038948059e-01 - - -4.7193650156259537e-02 2.9544681310653687e-01 - <_> - - 0 -1 826 1.6650650650262833e-02 - - -2.2515360265970230e-02 1.7831179499626160e-01 - <_> - - 0 -1 827 -2.3978849640116096e-04 - - 7.9010076820850372e-02 -1.5592630207538605e-01 - <_> - - 0 -1 828 5.8377008885145187e-02 - - -2.4694869294762611e-02 3.0555808544158936e-01 - <_> - - 0 -1 829 -5.8459650725126266e-02 - - 1.4798119664192200e-01 -8.9378252625465393e-02 - <_> - - 0 -1 830 -1.8526349216699600e-02 - - 9.2129699885845184e-02 -8.9743256568908691e-02 - <_> - - 0 -1 831 8.5416868329048157e-02 - - -2.6397809386253357e-02 4.8908311128616333e-01 - <_> - - 0 -1 832 -1.2663799524307251e-01 - - 4.7291919589042664e-02 -6.7399129271507263e-02 - <_> - - 0 -1 833 -1.9496470689773560e-01 - - 2.0691619813442230e-01 -6.1493389308452606e-02 - <_> - - 0 -1 834 1.2037090025842190e-02 - - 2.9463229700922966e-02 -6.0213238000869751e-01 - <_> - - 0 -1 835 -2.7944779139943421e-04 - - 8.1097796559333801e-02 -1.3745759427547455e-01 - <_> - - 0 -1 836 9.7354073077440262e-03 - - 4.1789319366216660e-02 -1.6302450001239777e-01 - <_> - - 0 -1 837 7.4306771159172058e-02 - - -1.4938850700855255e-01 7.8325100243091583e-02 - <_> - - 0 -1 838 1.4471059665083885e-02 - - -2.6114590466022491e-02 1.4204360544681549e-01 - <_> - - 0 -1 839 1.1855339631438255e-02 - - -5.1672890782356262e-02 2.6997640728950500e-01 - <_> - - 0 -1 840 2.1346539258956909e-02 - - -3.3866148442029953e-02 2.3027729988098145e-01 - <_> - - 0 -1 841 -4.9045171588659286e-02 - - 2.6968359947204590e-01 -5.4896000772714615e-02 - <_> - - 0 -1 842 -3.5839710384607315e-02 - - -2.9921030998229980e-01 2.2631939500570297e-02 - <_> - - 0 -1 843 -2.8866980574093759e-04 - - 6.0674369335174561e-02 -2.0742860436439514e-01 - <_> - - 0 -1 844 -3.1162720173597336e-02 - - -2.4761599302291870e-01 5.0196789205074310e-02 - <_> - - 0 -1 845 2.8370518703013659e-04 - - -1.9594480097293854e-01 5.6619770824909210e-02 - <_> - - 0 -1 846 -4.9621321260929108e-02 - - 8.6675882339477539e-01 -3.4514570143073797e-03 - <_> - - 0 -1 847 2.5349689531140029e-04 - - -1.3878400623798370e-01 8.2779698073863983e-02 - <_> - - 0 -1 848 5.7967979460954666e-02 - - -3.9648130536079407e-02 1.8818469345569611e-01 - <_> - - 0 -1 849 1.8554650247097015e-02 - - -1.9192659854888916e-01 6.3079372048377991e-02 - <_> - - 0 -1 850 1.9615100696682930e-02 - - 1.9008159637451172e-02 -1.9076730310916901e-01 - <_> - - 0 -1 851 -3.3448349684476852e-02 - - -2.9587069153785706e-01 4.4361710548400879e-02 - <_> - - 0 -1 852 -7.5647640042006969e-03 - - 2.5295218825340271e-01 -1.0904899984598160e-01 - <_> - - 0 -1 853 -1.8039060756564140e-02 - - 2.8772088885307312e-01 -3.8489419966936111e-02 - <_> - - 0 -1 854 -1.9565680122468621e-04 - - 9.4928987324237823e-02 -1.0129210352897644e-01 - <_> - - 0 -1 855 -2.0392619073390961e-02 - - -8.0093258619308472e-01 1.3064869679510593e-02 - <_> - - 0 -1 856 -9.0366922318935394e-02 - - 3.9404270052909851e-01 -1.9085280597209930e-02 - <_> - - 0 -1 857 -1.5236979722976685e-01 - - -6.4189267158508301e-01 1.7520749941468239e-02 - <_> - - 0 -1 858 -7.7142767608165741e-02 - - 3.0866208672523499e-01 -1.4502109959721565e-02 - <_> - - 0 -1 859 -8.8981278240680695e-03 - - -3.3481961488723755e-01 3.0804989859461784e-02 - - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 17 3 5 2 -1. - <_> - 17 4 5 1 2. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 1 2 20 2 -1. - <_> - 1 2 10 1 2. - <_> - 11 3 10 1 2. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 8 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 5 0 12 3 -1. - <_> - 9 0 4 3 3. - <_> - - <_> - 16 1 3 4 -1. - <_> - 16 3 3 2 2. - <_> - - <_> - 3 0 4 1 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 0 2 5 2 -1. - <_> - 0 3 5 1 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 17 3 5 2 -1. - <_> - 17 4 5 1 2. - <_> - - <_> - 2 1 12 1 -1. - <_> - 8 1 6 1 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 4 2 16 2 -1. - <_> - 8 2 8 2 2. - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 3 1 15 2 -1. - <_> - 8 1 5 2 3. - <_> - - <_> - 17 2 1 2 -1. - <_> - 17 2 1 1 2. - 1 - <_> - - <_> - 5 2 2 1 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 5 2 1 2 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 20 2 2 2 -1. - <_> - 20 2 1 2 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 6 2 10 2 -1. - <_> - 11 2 5 1 2. - <_> - 6 3 5 1 2. - <_> - - <_> - 4 2 1 2 -1. - <_> - 4 2 1 1 2. - 1 - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 2 1 20 4 -1. - <_> - 12 1 10 2 2. - <_> - 2 3 10 2 2. - <_> - - <_> - 1 0 5 4 -1. - <_> - 1 1 5 2 2. - <_> - - <_> - 10 4 12 1 -1. - <_> - 10 4 6 1 2. - <_> - - <_> - 0 4 12 1 -1. - <_> - 6 4 6 1 2. - <_> - - <_> - 10 2 6 3 -1. - <_> - 12 2 2 3 3. - <_> - - <_> - 8 2 6 3 -1. - <_> - 10 2 2 3 3. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 5 2 1 2 -1. - <_> - 5 2 1 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 4 2 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 4 0 5 2 -1. - <_> - 4 1 5 1 2. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 18 4 3 1 -1. - <_> - 19 4 1 1 3. - <_> - - <_> - 1 4 3 1 -1. - <_> - 2 4 1 1 3. - <_> - - <_> - 9 0 4 5 -1. - <_> - 9 0 2 5 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 8 2 8 2 -1. - <_> - 12 2 4 1 2. - <_> - 8 3 4 1 2. - <_> - - <_> - 6 2 8 2 -1. - <_> - 6 2 4 1 2. - <_> - 10 3 4 1 2. - <_> - - <_> - 16 1 5 3 -1. - <_> - 16 2 5 1 3. - <_> - - <_> - 0 1 21 3 -1. - <_> - 7 2 7 1 9. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 5 0 12 3 -1. - <_> - 8 0 6 3 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 9 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 3 5 2 2. - <_> - - <_> - 2 2 16 2 -1. - <_> - 6 2 8 2 2. - <_> - - <_> - 20 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 3 5 2 2. - <_> - - <_> - 0 1 5 4 -1. - <_> - 0 3 5 2 2. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 1 2 1 2. - 1 - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 15 0 4 3 -1. - <_> - 15 1 4 1 3. - <_> - - <_> - 10 0 2 5 -1. - <_> - 11 0 1 5 2. - <_> - - <_> - 9 1 6 4 -1. - <_> - 11 1 2 4 3. - <_> - - <_> - 6 1 9 4 -1. - <_> - 9 1 3 4 3. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 2 3 20 2 -1. - <_> - 12 3 10 1 2. - <_> - 2 4 10 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 3 5 2 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 2 1 18 4 -1. - <_> - 11 1 9 2 2. - <_> - 2 3 9 2 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 8 1 6 2 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 0 6 2 2. - <_> - 11 2 6 2 2. - <_> - - <_> - 6 1 16 4 -1. - <_> - 10 1 8 4 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 15 0 5 3 -1. - <_> - 15 1 5 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 7 0 1 4 -1. - <_> - 6 1 1 2 2. - 1 - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 0 4 12 1 -1. - <_> - 6 4 6 1 2. - <_> - - <_> - 3 3 16 2 -1. - <_> - 11 3 8 1 2. - <_> - 3 4 8 1 2. - <_> - - <_> - 3 0 4 3 -1. - <_> - 3 1 4 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 7 2 9 3 -1. - <_> - 10 2 3 3 3. - <_> - - <_> - 9 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 12 3 2 1 2. - <_> - 10 4 2 1 2. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 13 0 5 4 -1. - <_> - 13 1 5 2 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 10 0 6 5 -1. - <_> - 10 0 3 5 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 0 3 4 2. - <_> - - <_> - 4 2 12 1 -1. - <_> - 10 2 6 1 2. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 3 1 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 2 5 2 -1. - <_> - 0 3 5 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 1 2. - <_> - 0 4 11 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 10 1 1 4 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 6 0 10 2 -1. - <_> - 6 0 5 1 2. - <_> - 11 1 5 1 2. - <_> - - <_> - 16 0 5 3 -1. - <_> - 16 1 5 1 3. - <_> - - <_> - 1 0 5 3 -1. - <_> - 1 1 5 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 2 1 1 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 11 0 3 5 2. - <_> - - <_> - 16 4 6 1 -1. - <_> - 18 4 2 1 3. - <_> - - <_> - 0 4 6 1 -1. - <_> - 2 4 2 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 6 2 14 1 -1. - <_> - 6 2 7 1 2. - <_> - - <_> - 2 2 14 1 -1. - <_> - 9 2 7 1 2. - <_> - - <_> - 20 2 2 1 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 20 3 1 2 -1. - <_> - 20 4 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 16 0 3 3 -1. - <_> - 16 1 3 1 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 3 1 3 1 3. - <_> - - <_> - 7 2 10 2 -1. - <_> - 12 2 5 1 2. - <_> - 7 3 5 1 2. - <_> - - <_> - 5 2 10 2 -1. - <_> - 5 2 5 1 2. - <_> - 10 3 5 1 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 4 1 5 4 -1. - <_> - 4 3 5 2 2. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 0 1 18 1 -1. - <_> - 9 1 9 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 10 1 6 3 -1. - <_> - 12 1 2 3 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 3 1 10 2 -1. - <_> - 8 1 5 2 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 2 1 3 3. - <_> - - <_> - 11 1 2 3 -1. - <_> - 11 1 1 3 2. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 0 1 5 3 -1. - <_> - 0 2 5 1 3. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 2 1 20 4 -1. - <_> - 12 1 10 2 2. - <_> - 2 3 10 2 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 15 0 5 3 -1. - <_> - 15 1 5 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 5 3 10 2 -1. - <_> - 5 3 5 1 2. - <_> - 10 4 5 1 2. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 1 0 21 3 -1. - <_> - 8 1 7 1 9. - <_> - - <_> - 1 3 6 2 -1. - <_> - 3 3 2 2 3. - <_> - - <_> - 6 2 16 1 -1. - <_> - 10 2 8 1 2. - <_> - - <_> - 0 2 16 1 -1. - <_> - 4 2 8 1 2. - <_> - - <_> - 2 1 18 3 -1. - <_> - 8 2 6 1 9. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 6 0 10 4 -1. - <_> - 11 0 5 2 2. - <_> - 6 2 5 2 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 0 6 2 2. - <_> - 11 2 6 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 9 0 2 5 2. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 7 0 2 1 -1. - <_> - 7 0 1 1 2. - 1 - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 10 0 12 5 -1. - <_> - 13 0 6 5 2. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 3 5 2 2. - <_> - - <_> - 4 2 18 2 -1. - <_> - 13 2 9 1 2. - <_> - 4 3 9 1 2. - <_> - - <_> - 1 4 10 1 -1. - <_> - 6 4 5 1 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 8 1 6 2 3. - <_> - - <_> - 16 2 3 2 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 2 1 2 -1. - <_> - 4 3 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 16 2 3 3 -1. - <_> - 17 2 1 3 3. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 2 1 3 3. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 2 0 16 4 -1. - <_> - 2 0 8 2 2. - <_> - 10 2 8 2 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 0 3 4 2 -1. - <_> - 0 4 4 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 1 2. - <_> - 0 4 11 1 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 4 1 2. - <_> - 11 1 4 1 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 8 4 -1. - <_> - 8 1 4 4 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 9 1 9 4 -1. - <_> - 12 1 3 4 3. - <_> - - <_> - 4 1 9 4 -1. - <_> - 7 1 3 4 3. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 3 1 18 3 -1. - <_> - 9 2 6 1 9. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 21 0 1 3 -1. - <_> - 21 1 1 1 3. - <_> - - <_> - 0 1 18 4 -1. - <_> - 0 1 9 2 2. - <_> - 9 3 9 2 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 11 4 4 1 -1. - <_> - 12 4 2 1 2. - <_> - - <_> - 10 0 2 5 -1. - <_> - 11 0 1 5 2. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 16 0 3 3 -1. - <_> - 16 1 3 1 3. - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 1 1 3 3. - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 9 1 2 4 -1. - <_> - 10 1 1 4 2. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 2 1 1 2. - 1 - <_> - - <_> - 1 2 2 1 -1. - <_> - 1 2 1 1 2. - 1 - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 2 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 4 1 16 2 -1. - <_> - 8 1 8 2 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 0 1 3 2. - 1 - <_> - - <_> - 4 1 14 4 -1. - <_> - 11 1 7 2 2. - <_> - 4 3 7 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 3 1 1 1 3. - <_> - - <_> - 11 0 2 4 -1. - <_> - 11 0 1 4 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 1 9. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 2 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 4 2 18 1 -1. - <_> - 4 2 9 1 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 4 2 18 1 -1. - <_> - 4 2 9 1 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 1 4 4 1 -1. - <_> - 2 4 2 1 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 1 0 4 3 -1. - <_> - 1 1 4 1 3. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 3 1 2 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 3 1 2 2. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 1 0 18 3 -1. - <_> - 7 1 6 1 9. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 2 1 2. - <_> - 10 4 2 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 8 3 6 2 -1. - <_> - 8 3 3 1 2. - <_> - 11 4 3 1 2. - <_> - - <_> - 16 0 3 1 -1. - <_> - 17 0 1 1 3. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - 1 - <_> - - <_> - 7 2 1 2 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 12 4 10 1 -1. - <_> - 12 4 5 1 2. - <_> - - <_> - 9 0 2 3 -1. - <_> - 10 0 1 3 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 0 2 1 3. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 4 1 16 2 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 14 0 5 3 -1. - <_> - 14 1 5 1 3. - <_> - - <_> - 1 1 4 3 -1. - <_> - 3 1 2 3 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 1 3 16 2 -1. - <_> - 5 3 8 2 2. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 10 3 6 2 -1. - <_> - 12 3 2 2 3. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 15 0 1 2 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 3 2 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 11 0 9 1 -1. - <_> - 14 0 3 1 3. - <_> - - <_> - 8 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 9 1 -1. - <_> - 5 0 3 1 3. - <_> - - <_> - 13 0 5 4 -1. - <_> - 13 1 5 2 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 2 0 5 3 -1. - <_> - 2 1 5 1 3. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 1 2 2 -1. - <_> - 18 1 1 1 2. - <_> - 17 2 1 1 2. - <_> - - <_> - 9 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 9 2 6 3 -1. - <_> - 9 2 3 3 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 19 3 3 2 -1. - <_> - 19 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 2 4 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 3 0 16 4 -1. - <_> - 11 0 8 2 2. - <_> - 3 2 8 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 4 1 2. - <_> - 11 1 4 1 2. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 3 0 3 1 -1. - <_> - 4 0 1 1 3. - <_> - - <_> - 18 1 2 2 -1. - <_> - 19 1 1 1 2. - <_> - 18 2 1 1 2. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 1 1 2. - <_> - 3 2 1 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 11 1 4 4 -1. - <_> - 12 1 2 4 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 1 9. - <_> - - <_> - 11 1 4 4 -1. - <_> - 12 1 2 4 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 1 1 20 2 -1. - <_> - 6 1 10 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 9 0 6 2 -1. - <_> - 12 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 7 0 6 2 -1. - <_> - 7 0 3 1 2. - <_> - 10 1 3 1 2. - <_> - - <_> - 20 2 2 2 -1. - <_> - 20 2 1 2 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 0 2 1 3. - <_> - - <_> - 3 2 1 2 -1. - <_> - 3 3 1 1 2. - <_> - - <_> - 16 1 6 4 -1. - <_> - 19 1 3 2 2. - <_> - 16 3 3 2 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 0 1 3 2 2. - <_> - 3 3 3 2 2. - <_> - - <_> - 20 3 2 1 -1. - <_> - 20 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 1 1 1 3 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 1 9. - <_> - - <_> - 9 0 8 2 -1. - <_> - 9 0 4 2 2. - <_> - - <_> - 3 0 16 1 -1. - <_> - 11 0 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 6 2 10 2 -1. - <_> - 6 2 5 1 2. - <_> - 11 3 5 1 2. - <_> - - <_> - 8 2 8 3 -1. - <_> - 8 2 4 3 2. - <_> - - <_> - 6 2 8 3 -1. - <_> - 10 2 4 3 2. - <_> - - <_> - 18 0 1 3 -1. - <_> - 18 1 1 1 3. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 18 0 1 3 -1. - <_> - 18 1 1 1 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 3 1 1 1 3. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 1 4 2 2. - <_> - 4 3 4 2 2. - <_> - - <_> - 18 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 18 4 1 1 2. - <_> - - <_> - 2 2 2 1 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 19 4 2 1 -1. - <_> - 19 4 1 1 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 3 0 16 4 -1. - <_> - 11 0 8 2 2. - <_> - 3 2 8 2 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 1 1 1 2. - <_> - 6 2 1 1 2. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 5 3 3 1 -1. - <_> - 6 3 1 1 3. - <_> - - <_> - 1 1 21 3 -1. - <_> - 8 2 7 1 9. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 19 1 1 3 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 2 1 1 3 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 7 1 8 2 -1. - <_> - 11 1 4 1 2. - <_> - 7 2 4 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 11 2 3 3 -1. - <_> - 12 2 1 3 3. - <_> - - <_> - 8 1 3 4 -1. - <_> - 9 1 1 4 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 16 4 3 1 -1. - <_> - 17 4 1 1 3. - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 3 2 3 2 -1. - <_> - 4 2 1 2 3. - <_> - - <_> - 13 3 2 2 -1. - <_> - 14 3 1 1 2. - <_> - 13 4 1 1 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 1 2. - <_> - 11 4 2 1 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 4 2 1 -1. - <_> - 2 4 1 1 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 1 2 3 2. - <_> - - <_> - 6 2 8 1 -1. - <_> - 8 2 4 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 7 4 4 1 -1. - <_> - 8 4 2 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 0 3 4 2 -1. - <_> - 0 4 4 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 1 1 2. - <_> - 6 3 1 1 2. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 0 1 2 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 15 1 5 4 -1. - <_> - 15 3 5 2 2. - <_> - - <_> - 4 1 3 3 -1. - <_> - 4 2 3 1 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 3 2 2. - <_> - - <_> - 3 2 3 1 -1. - <_> - 4 2 1 1 3. - <_> - - <_> - 6 1 14 2 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 1 2 1 2. - 1 - <_> - - <_> - 10 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 4 1 12 2 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 0 0 22 2 -1. - <_> - 11 0 11 1 2. - <_> - 0 1 11 1 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 7 3 8 2 -1. - <_> - 7 3 4 1 2. - <_> - 11 4 4 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 1 1 1 2. - <_> - 6 2 1 1 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 6 0 10 4 -1. - <_> - 6 0 5 2 2. - <_> - 11 2 5 2 2. - <_> - - <_> - 16 0 6 5 -1. - <_> - 18 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 5 2 16 2 -1. - <_> - 9 2 8 2 2. - <_> - - <_> - 1 2 10 3 -1. - <_> - 6 2 5 3 2. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 14 1 8 4 -1. - <_> - 18 1 4 2 2. - <_> - 14 3 4 2 2. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 21 1 1 4 -1. - <_> - 21 3 1 2 2. - <_> - - <_> - 0 2 22 2 -1. - <_> - 0 2 11 1 2. - <_> - 11 3 11 1 2. - <_> - - <_> - 17 0 3 3 -1. - <_> - 17 1 3 1 3. - <_> - - <_> - 2 0 3 3 -1. - <_> - 2 1 3 1 3. - <_> - - <_> - 10 0 12 5 -1. - <_> - 13 0 6 5 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 11 2 2 3 2. - <_> - - <_> - 11 0 4 1 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 16 0 2 1 2. - <_> - 14 1 2 1 2. - <_> - - <_> - 0 3 20 2 -1. - <_> - 0 3 10 1 2. - <_> - 10 4 10 1 2. - <_> - - <_> - 13 1 9 2 -1. - <_> - 16 1 3 2 3. - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 4 2 1 2. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 8 2 3 1 2. - <_> - - <_> - 0 4 22 1 -1. - <_> - 11 4 11 1 2. - <_> - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 15 1 6 3 -1. - <_> - 17 1 2 3 3. - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 10 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 20 4 2 1 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 18 2 3 1 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 20 3 2 2 -1. - <_> - 21 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 2 12 2 -1. - <_> - 13 2 6 2 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 19 2 3 1 -1. - <_> - 20 2 1 1 3. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 2 0 18 3 -1. - <_> - 8 1 6 1 9. - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 0 1 2 3. - <_> - - <_> - 1 2 20 1 -1. - <_> - 6 2 10 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 8 2 3 2 -1. - <_> - 9 2 1 2 3. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 6 2 16 2 -1. - <_> - 10 2 8 2 2. - <_> - - <_> - 0 2 16 2 -1. - <_> - 4 2 8 2 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 11 3 2 1 2. - <_> - 9 4 2 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 11 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 2 0 16 3 -1. - <_> - 10 0 8 3 2. - <_> - - <_> - 5 4 12 1 -1. - <_> - 8 4 6 1 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 19 1 1 3 -1. - <_> - 19 2 1 1 3. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 1 2 1 2. - 1 - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 10 0 2 5 -1. - <_> - 10 0 1 5 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 1 4 2 2. - <_> - 4 3 4 2 2. - <_> - - <_> - 4 2 18 3 -1. - <_> - 10 3 6 1 9. - <_> - - <_> - 0 2 18 3 -1. - <_> - 6 3 6 1 9. - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 0 1 3 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 2 1 2. - 1 - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 2 16 1 -1. - <_> - 8 2 8 1 2. - <_> - - <_> - 17 2 2 1 -1. - <_> - 17 2 1 1 2. - <_> - - <_> - 0 0 4 5 -1. - <_> - 1 0 2 5 2. - <_> - - <_> - 13 1 3 3 -1. - <_> - 14 2 1 1 9. - <_> - - <_> - 4 1 5 4 -1. - <_> - 4 3 5 2 2. - <_> - - <_> - 18 3 2 2 -1. - <_> - 19 3 1 1 2. - <_> - 18 4 1 1 2. - <_> - - <_> - 8 2 4 2 -1. - <_> - 8 2 2 1 2. - <_> - 10 3 2 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 0 1 1 3. - <_> - - <_> - 18 0 4 2 -1. - <_> - 20 0 2 1 2. - <_> - 18 1 2 1 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 0 2 2 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 16 1 3 3 -1. - <_> - 17 2 1 1 9. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - <_> - - <_> - 6 1 3 3 -1. - <_> - 7 2 1 1 9. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 17 2 2 1 -1. - <_> - 17 2 1 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 2 2 1 -1. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 4 3 1 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 6 4 6 1 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 5 1 16 2 -1. - <_> - 13 1 8 1 2. - <_> - 5 2 8 1 2. - <_> - - <_> - 2 4 3 1 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 6 1 14 2 -1. - <_> - 13 1 7 1 2. - <_> - 6 2 7 1 2. - <_> - - <_> - 2 1 14 2 -1. - <_> - 2 1 7 1 2. - <_> - 9 2 7 1 2. - <_> - - <_> - 16 1 4 2 -1. - <_> - 16 2 4 1 2. - <_> - - <_> - 8 1 6 2 -1. - <_> - 8 1 3 1 2. - <_> - 11 2 3 1 2. - <_> - - <_> - 16 1 4 3 -1. - <_> - 16 2 4 1 3. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 2 4 1 2. - <_> - - <_> - 10 0 8 5 -1. - <_> - 10 0 4 5 2. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 19 0 2 1 -1. - <_> - 19 0 1 1 2. - 1 - <_> - - <_> - 0 0 20 4 -1. - <_> - 0 0 10 2 2. - <_> - 10 2 10 2 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 3 3 2 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 11 3 11 2 2. - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 19 1 2 2 -1. - <_> - 20 1 1 1 2. - <_> - 19 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 21 1 1 2 -1. - <_> - 21 2 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 6 3 8 2 -1. - <_> - 6 3 4 1 2. - <_> - 10 4 4 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 4 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 0 1 1 3. - <_> - - <_> - 17 1 4 2 -1. - <_> - 19 1 2 1 2. - <_> - 17 2 2 1 2. - <_> - - <_> - 1 1 4 2 -1. - <_> - 1 1 2 1 2. - <_> - 3 2 2 1 2. - <_> - - <_> - 18 1 2 1 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 2 1 2 1 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 3 0 1 2 2. - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 18 2 2 2 -1. - <_> - 19 2 1 1 2. - <_> - 18 3 1 1 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 20 2 1 2 -1. - <_> - 20 2 1 1 2. - 1 - <_> - - <_> - 2 2 2 1 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 13 0 5 2 -1. - <_> - 13 1 5 1 2. - <_> - - <_> - 6 3 10 2 -1. - <_> - 6 3 5 1 2. - <_> - 11 4 5 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 2 2 8 3 -1. - <_> - 6 2 4 3 2. - <_> - - <_> - 12 3 3 1 -1. - <_> - 13 3 1 1 3. - <_> - - <_> - 2 4 16 1 -1. - <_> - 10 4 8 1 2. - <_> - - <_> - 12 2 3 2 -1. - <_> - 13 2 1 2 3. - <_> - - <_> - 7 2 3 2 -1. - <_> - 8 2 1 2 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 9 2 1 1 2. - <_> - 10 3 1 1 2. - <_> - - <_> - 15 2 4 2 -1. - <_> - 17 2 2 1 2. - <_> - 15 3 2 1 2. - <_> - - <_> - 6 0 8 5 -1. - <_> - 8 0 4 5 2. - <_> - - <_> - 13 2 2 1 -1. - <_> - 13 2 1 1 2. - 1 - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 15 2 4 2 -1. - <_> - 17 2 2 1 2. - <_> - 15 3 2 1 2. - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 16 0 2 1 2. - <_> - 14 1 2 1 2. - <_> - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - <_> - - <_> - 3 2 3 2 -1. - <_> - 4 2 1 2 3. - <_> - - <_> - 9 0 10 3 -1. - <_> - 9 0 5 3 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 11 1 2 4 -1. - <_> - 11 1 1 4 2. - <_> - - <_> - 1 2 16 1 -1. - <_> - 9 2 8 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 5 2 3 1 -1. - <_> - 6 2 1 1 3. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 7 2 1 2 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 10 3 6 2 -1. - <_> - 12 3 2 2 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 0 0 22 4 -1. - <_> - 11 0 11 2 2. - <_> - 0 2 11 2 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 4 2 14 2 -1. - <_> - 11 2 7 1 2. - <_> - 4 3 7 1 2. - <_> - - <_> - 1 4 4 1 -1. - <_> - 2 4 2 1 2. - <_> - - <_> - 8 4 6 1 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 4 0 5 4 -1. - <_> - 4 1 5 2 2. - <_> - - <_> - 16 0 4 3 -1. - <_> - 16 1 4 1 3. - <_> - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - <_> - - <_> - 0 3 22 2 -1. - <_> - 0 3 11 1 2. - <_> - 11 4 11 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 4 6 1 -1. - <_> - 2 4 2 1 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 1 2 6 3 -1. - <_> - 3 2 2 3 3. - <_> - - <_> - 18 1 1 3 -1. - <_> - 18 2 1 1 3. - <_> - - <_> - 3 1 1 3 -1. - <_> - 3 2 1 1 3. - <_> - - <_> - 21 3 1 2 -1. - <_> - 21 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 10 0 4 4 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 2 0 12 3 -1. - <_> - 6 1 4 1 9. - <_> - - <_> - 10 0 8 4 -1. - <_> - 10 0 4 4 2. - <_> - - <_> - 4 0 8 4 -1. - <_> - 8 0 4 4 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 9 2 3 3 -1. - <_> - 10 2 1 3 3. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 6 1 6 4 -1. - <_> - 8 1 2 4 3. - <_> - - <_> - 6 2 10 2 -1. - <_> - 11 2 5 1 2. - <_> - 6 3 5 1 2. - <_> - - <_> - 2 1 15 3 -1. - <_> - 7 2 5 1 9. - <_> - - <_> - 14 1 2 1 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 4 2 15 1 -1. - <_> - 9 2 5 1 3. - <_> - - <_> - 4 2 3 1 -1. - <_> - 5 2 1 1 3. - <_> - - <_> - 14 1 2 1 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 0 1 9 2 -1. - <_> - 3 1 3 2 3. - <_> - - <_> - 21 2 1 2 -1. - <_> - 21 3 1 1 2. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 0 3 22 1 -1. - <_> - 0 3 11 1 2. - <_> - - <_> - 0 3 16 2 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 2 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 14 0 6 2 -1. - <_> - 17 0 3 1 2. - <_> - 14 1 3 1 2. - <_> - - <_> - 2 0 6 2 -1. - <_> - 2 0 3 1 2. - <_> - 5 1 3 1 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 18 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 16 0 3 2 -1. - <_> - 17 0 1 2 3. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 0 1 2 3. - <_> - - <_> - 12 1 2 4 -1. - <_> - 13 1 1 2 2. - <_> - 12 3 1 2 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 2 2. - <_> - 9 3 1 2 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 0 2 2 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 7 1 8 2 -1. - <_> - 7 1 4 1 2. - <_> - 11 2 4 1 2. - <_> - - <_> - 9 2 9 3 -1. - <_> - 12 3 3 1 9. - <_> - - <_> - 4 2 9 3 -1. - <_> - 7 3 3 1 9. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 7 2 8 3 -1. - <_> - 7 2 4 3 2. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 4 1 1 3. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 19 2 2 2 -1. - <_> - 20 2 1 1 2. - <_> - 19 3 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 21 0 1 4 -1. - <_> - 21 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 2 0 16 2 -1. - <_> - 6 0 8 2 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 3 1 16 2 -1. - <_> - 11 1 8 2 2. - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 4 1 1 3. - <_> - - <_> - 6 4 3 1 -1. - <_> - 7 4 1 1 3. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 4 2 16 1 -1. - <_> - 4 2 8 1 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 14 0 8 5 -1. - <_> - 14 0 4 5 2. - <_> - - <_> - 0 0 8 5 -1. - <_> - 4 0 4 5 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 6 1 3 2 -1. - <_> - 7 1 1 2 3. - <_> - - <_> - 15 1 3 3 -1. - <_> - 16 2 1 1 9. - <_> - - <_> - 4 1 3 3 -1. - <_> - 5 2 1 1 9. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 11 2 3 1 2. - <_> - - <_> - 10 0 12 2 -1. - <_> - 13 0 6 2 2. - <_> - - <_> - 0 2 22 3 -1. - <_> - 11 2 11 3 2. - <_> - - <_> - 15 4 2 1 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 15 1 6 2 -1. - <_> - 17 1 2 2 3. - <_> - - <_> - 8 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 11 3 4 1 -1. - <_> - 12 3 2 1 2. - <_> - - <_> - 7 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 1 2 6 1 -1. - <_> - 3 2 2 1 3. - <_> - - <_> - 7 0 8 2 -1. - <_> - 11 0 4 1 2. - <_> - 7 1 4 1 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 12 0 1 1 2. - <_> - 11 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 10 1 3 3 -1. - <_> - 11 1 1 3 3. - <_> - - <_> - 4 3 5 2 -1. - <_> - 4 4 5 1 2. - <_> - - <_> - 14 2 2 1 -1. - <_> - 14 2 1 1 2. - 1 - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 2 1 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 10 1 1 4 3. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 4 4 3 1 -1. - <_> - 5 4 1 1 3. - <_> - - <_> - 8 0 12 2 -1. - <_> - 14 0 6 1 2. - <_> - 8 1 6 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 1 1 1 9. - <_> - - <_> - 13 2 1 2 -1. - <_> - 13 2 1 1 2. - 1 - <_> - - <_> - 3 4 3 1 -1. - <_> - 4 4 1 1 3. - diff --git a/data/haarcascades/haarcascade_mcs_leftear.xml b/data/haarcascades/haarcascade_mcs_leftear.xml deleted file mode 100644 index 3598515165..0000000000 --- a/data/haarcascades/haarcascade_mcs_leftear.xml +++ /dev/null @@ -1,7633 +0,0 @@ - - - -BOOST - HAAR - 12 - 20 - - 65 - - 0 - 20 - - <_> - 7 - -1.6897829771041870e+00 - - <_> - - 0 -1 0 1.2798480689525604e-01 - - -7.1108317375183105e-01 8.3952748775482178e-01 - <_> - - 0 -1 1 5.0366270443191752e-05 - - -7.7958387136459351e-01 4.1161769628524780e-01 - <_> - - 0 -1 2 -1.1398220434784889e-02 - - 5.5991190671920776e-01 -5.2993881702423096e-01 - <_> - - 0 -1 3 2.8897399082779884e-02 - - -9.6023030579090118e-02 1.8446889519691467e-01 - <_> - - 0 -1 4 -5.7543441653251648e-03 - - 3.9083909988403320e-01 -7.0798218250274658e-01 - <_> - - 0 -1 5 1.2758660130202770e-02 - - -7.6031517982482910e-01 2.6452711224555969e-01 - <_> - - 0 -1 6 -4.1698651330079883e-05 - - 3.2332289218902588e-01 -5.7402020692825317e-01 - <_> - 12 - -1.6203830242156982e+00 - - <_> - - 0 -1 7 1.7598830163478851e-01 - - -5.9234100580215454e-01 7.8493958711624146e-01 - <_> - - 0 -1 8 3.8594089448451996e-02 - - -6.8187582492828369e-01 3.8166061043739319e-01 - <_> - - 0 -1 9 1.2052910029888153e-01 - - -3.7438058853149414e-01 5.2112519741058350e-01 - <_> - - 0 -1 10 2.1304990351200104e-01 - - 9.7819166257977486e-03 -6.5798282623291016e-01 - <_> - - 0 -1 11 -1.9179080426692963e-01 - - 8.8993859291076660e-01 -2.3742930591106415e-01 - <_> - - 0 -1 12 3.7649259902536869e-03 - - -9.2071659862995148e-02 1.5995720028877258e-01 - <_> - - 0 -1 13 -7.4397800490260124e-03 - - 3.5091850161552429e-01 -5.2880358695983887e-01 - <_> - - 0 -1 14 8.1300012767314911e-02 - - 4.7027029097080231e-02 -4.8141419887542725e-01 - <_> - - 0 -1 15 7.9818956553936005e-02 - - -3.0336898565292358e-01 5.7992082834243774e-01 - <_> - - 0 -1 16 3.9260480552911758e-02 - - -6.1189621686935425e-01 2.4700529873371124e-01 - <_> - - 0 -1 17 -8.6981123313307762e-03 - - 3.0427950620651245e-01 -4.3165320158004761e-01 - <_> - - 0 -1 18 5.5766489822417498e-05 - - -5.4995632171630859e-01 2.4196259677410126e-01 - <_> - 20 - -2.1234118938446045e+00 - - <_> - - 0 -1 19 1.9991339743137360e-01 - - -5.1076048612594604e-01 7.2653311491012573e-01 - <_> - - 0 -1 20 -1.6032690473366529e-04 - - 1.1732880026102066e-01 -1.9851410388946533e-01 - <_> - - 0 -1 21 6.2459441833198071e-03 - - -6.2454998493194580e-01 4.1317841410636902e-01 - <_> - - 0 -1 22 5.5343401618301868e-03 - - -8.2238370180130005e-01 2.2600589692592621e-01 - <_> - - 0 -1 23 1.0757610201835632e-01 - - -5.5525738000869751e-01 4.3564280867576599e-01 - <_> - - 0 -1 24 -9.9556613713502884e-03 - - 2.9808950424194336e-01 -3.0220919847488403e-01 - <_> - - 0 -1 25 -4.8354369937442243e-05 - - 4.4047379493713379e-01 -6.6946560144424438e-01 - <_> - - 0 -1 26 1.9743980374187231e-04 - - -2.5094148516654968e-01 1.9814400374889374e-01 - <_> - - 0 -1 27 -4.4098760554334149e-05 - - 3.0689230561256409e-01 -6.6775608062744141e-01 - <_> - - 0 -1 28 -1.7941730096936226e-02 - - 2.7399578690528870e-01 -2.9671499133110046e-01 - <_> - - 0 -1 29 5.3291041695047170e-05 - - -6.7100298404693604e-01 2.4690890312194824e-01 - <_> - - 0 -1 30 6.4407112076878548e-03 - - -5.2723282575607300e-01 2.4782879650592804e-01 - <_> - - 0 -1 31 -4.9925990402698517e-02 - - 8.2168322801589966e-01 -2.4012729525566101e-01 - <_> - - 0 -1 32 2.4148030206561089e-03 - - -3.8689721375703812e-02 1.9318090379238129e-01 - <_> - - 0 -1 33 6.2534123659133911e-02 - - -4.1077169775962830e-01 6.0665780305862427e-01 - <_> - - 0 -1 34 8.8917986431624740e-05 - - -6.7601591348648071e-01 3.1252190470695496e-01 - <_> - - 0 -1 35 -2.2447909577749670e-04 - - 1.8520550429821014e-01 -7.7942901849746704e-01 - <_> - - 0 -1 36 1.8156330042984337e-04 - - -6.6956442594528198e-01 1.5837380290031433e-01 - <_> - - 0 -1 37 5.0366270443191752e-05 - - -4.6770051121711731e-01 2.4539180099964142e-01 - <_> - - 0 -1 38 6.0776848840760067e-05 - - -6.8354898691177368e-01 1.8664689362049103e-01 - <_> - 12 - -1.4351799488067627e+00 - - <_> - - 0 -1 39 1.5990820527076721e-01 - - -6.2714368104934692e-01 7.2424608469009399e-01 - <_> - - 0 -1 40 7.6372842304408550e-03 - - 8.7740488350391388e-02 -5.2430278062820435e-01 - <_> - - 0 -1 41 6.0625150799751282e-03 - - -4.3119868636131287e-01 4.6857520937919617e-01 - <_> - - 0 -1 42 2.5897640734910965e-02 - - 1.5866510570049286e-02 -6.5979748964309692e-01 - <_> - - 0 -1 43 5.8885440230369568e-02 - - -2.1157009899616241e-01 6.7942970991134644e-01 - <_> - - 0 -1 44 1.1850179731845856e-01 - - -1.0366249829530716e-01 7.4645912647247314e-01 - <_> - - 0 -1 45 -1.6655250219628215e-03 - - -6.7015552520751953e-01 2.2192029654979706e-01 - <_> - - 0 -1 46 -4.4783479097532108e-05 - - 2.5404050946235657e-01 -4.9562969803810120e-01 - <_> - - 0 -1 47 -8.3481962792575359e-04 - - -7.3370438814163208e-01 2.0266470313072205e-01 - <_> - - 0 -1 48 -9.3157468363642693e-03 - - -7.3412007093429565e-01 7.2000503540039062e-02 - <_> - - 0 -1 49 -2.9555149376392365e-02 - - 5.1195901632308960e-01 -2.5446298718452454e-01 - <_> - - 0 -1 50 -7.9029072076082230e-03 - - -5.3299552202224731e-01 8.8295362889766693e-02 - <_> - 12 - -1.3800990581512451e+00 - - <_> - - 0 -1 51 9.8843306303024292e-02 - - -5.0631648302078247e-01 6.3027667999267578e-01 - <_> - - 0 -1 52 -4.2210938408970833e-03 - - 1.7837150394916534e-01 -3.3268490433692932e-01 - <_> - - 0 -1 53 2.9967099428176880e-02 - - -4.5201331377029419e-01 4.6473979949951172e-01 - <_> - - 0 -1 54 -1.6702869534492493e-01 - - 8.0514347553253174e-01 -4.0616780519485474e-02 - <_> - - 0 -1 55 1.9976759329438210e-02 - - 2.0976160466670990e-01 -7.3149591684341431e-01 - <_> - - 0 -1 56 8.1860616803169250e-02 - - -5.4268407821655273e-01 2.1634259819984436e-01 - <_> - - 0 -1 57 1.2709829956293106e-02 - - -2.4989350140094757e-01 4.7262668609619141e-01 - <_> - - 0 -1 58 -3.4979879856109619e-02 - - 3.0420958995819092e-01 -3.5224550962448120e-01 - <_> - - 0 -1 59 -1.3223739806562662e-03 - - -6.9712251424789429e-01 1.6912660002708435e-01 - <_> - - 0 -1 60 -2.3282319307327271e-02 - - 3.3972018957138062e-01 -3.6639729142189026e-01 - <_> - - 0 -1 61 -1.5517599880695343e-01 - - 7.3445862531661987e-01 -1.8277870118618011e-01 - <_> - - 0 -1 62 -3.9222039282321930e-02 - - 3.5923731327056885e-01 -1.1233209818601608e-01 - <_> - 37 - -2.0749111175537109e+00 - - <_> - - 0 -1 63 6.2616936862468719e-02 - - -4.8533481359481812e-01 6.1538851261138916e-01 - <_> - - 0 -1 64 1.1619539931416512e-02 - - -5.7667458057403564e-01 3.8557919859886169e-01 - <_> - - 0 -1 65 -5.7566948235034943e-03 - - 2.6634719967842102e-01 -8.2090580463409424e-01 - <_> - - 0 -1 66 9.2315487563610077e-03 - - -8.0720931291580200e-01 2.0323330163955688e-01 - <_> - - 0 -1 67 -3.3656319137662649e-03 - - 2.0334909856319427e-01 -7.4802142381668091e-01 - <_> - - 0 -1 68 1.2655390310101211e-04 - - -5.8880287408828735e-01 1.7631030082702637e-01 - <_> - - 0 -1 69 1.0345769673585892e-01 - - -4.2211589217185974e-01 3.3677190542221069e-01 - <_> - - 0 -1 70 -1.7050839960575104e-04 - - 1.8885380029678345e-01 -2.6626259088516235e-01 - <_> - - 0 -1 71 1.1793050362030044e-04 - - -7.1056002378463745e-01 2.2684849798679352e-01 - <_> - - 0 -1 72 -9.7460933029651642e-02 - - 4.2451021075248718e-01 -3.9501309394836426e-01 - <_> - - 0 -1 73 -1.7512679100036621e-02 - - 3.6552980542182922e-01 -3.5724669694900513e-01 - <_> - - 0 -1 74 1.7156290414277464e-04 - - -3.1259360909461975e-01 1.1446060240268707e-01 - <_> - - 0 -1 75 8.5574887692928314e-02 - - -2.0559160411357880e-01 8.9941620826721191e-01 - <_> - - 0 -1 76 1.1759579647332430e-03 - - -7.5939810276031494e-01 2.1389579772949219e-01 - <_> - - 0 -1 77 8.8068292825482786e-05 - - -6.0090541839599609e-01 2.5762718915939331e-01 - <_> - - 0 -1 78 2.3003520618658513e-04 - - -4.1466540098190308e-01 2.3084460198879242e-01 - <_> - - 0 -1 79 -3.4361891448497772e-04 - - 3.2730078697204590e-01 -7.4609941244125366e-01 - <_> - - 0 -1 80 1.5595999546349049e-02 - - -3.6050570011138916e-01 1.9414800405502319e-01 - <_> - - 0 -1 81 -6.5029867982957512e-05 - - 3.4985640645027161e-01 -5.5353438854217529e-01 - <_> - - 0 -1 82 8.0799087299965322e-05 - - -4.1298541426658630e-01 2.9194280505180359e-01 - <_> - - 0 -1 83 -1.7670560628175735e-02 - - 5.6811487674713135e-01 -3.0118390917778015e-01 - <_> - - 0 -1 84 5.2467430941760540e-03 - - -3.9970070123672485e-01 2.5405979156494141e-01 - <_> - - 0 -1 85 2.7624730137176812e-04 - - -4.6306419372558594e-01 2.7200910449028015e-01 - <_> - - 0 -1 86 -7.6283427188172936e-04 - - 4.7710940241813660e-01 -2.8456479310989380e-01 - <_> - - 0 -1 87 5.4720909247407690e-05 - - -5.9415602684020996e-01 2.8456559777259827e-01 - <_> - - 0 -1 88 -5.8523961342871189e-05 - - 1.8699720501899719e-01 -2.9498028755187988e-01 - <_> - - 0 -1 89 -2.3030990269035101e-04 - - 3.1419369578361511e-01 -5.2966248989105225e-01 - <_> - - 0 -1 90 1.2743050465360284e-03 - - -3.4386789798736572e-01 2.7126389741897583e-01 - <_> - - 0 -1 91 1.1066290317103267e-03 - - -4.5228588581085205e-01 2.4860590696334839e-01 - <_> - - 0 -1 92 -1.4225989580154419e-03 - - 3.3848088979721069e-01 -4.1214609146118164e-01 - <_> - - 0 -1 93 1.8614599481225014e-02 - - -1.9110870361328125e-01 6.4115452766418457e-01 - <_> - - 0 -1 94 4.5832890464225784e-05 - - -5.8493572473526001e-01 2.5314238667488098e-01 - <_> - - 0 -1 95 -9.9875287560280412e-05 - - 3.6051398515701294e-01 -5.3231191635131836e-01 - <_> - - 0 -1 96 -1.1277929879724979e-02 - - 2.7766379714012146e-01 -2.4176590144634247e-01 - <_> - - 0 -1 97 -1.5279600024223328e-01 - - 8.3433318138122559e-01 -1.8692030012607574e-01 - <_> - - 0 -1 98 -3.6294270306825638e-02 - - 3.9919948577880859e-01 -4.1119259595870972e-01 - <_> - - 0 -1 99 -4.5436818152666092e-02 - - 6.8093067407608032e-01 -1.4669400453567505e-01 - <_> - 13 - -1.8404649496078491e+00 - - <_> - - 0 -1 100 1.6328740119934082e-01 - - -6.0435330867767334e-01 5.5052411556243896e-01 - <_> - - 0 -1 101 9.7092619398608804e-05 - - -9.0228801965713501e-01 2.6281669735908508e-01 - <_> - - 0 -1 102 -2.7205731021240354e-04 - - 2.8341010212898254e-01 -8.1372922658920288e-01 - <_> - - 0 -1 103 1.8128680530935526e-03 - - -8.3362382650375366e-01 2.1307690441608429e-01 - <_> - - 0 -1 104 -8.7052993476390839e-03 - - 2.8303650021553040e-01 -7.2392731904983521e-01 - <_> - - 0 -1 105 -5.6872398999985307e-05 - - 1.3844889402389526e-01 -5.0287842750549316e-01 - <_> - - 0 -1 106 3.7435539066791534e-02 - - -1.0564589872956276e-02 -1.5556719970703125e+03 - <_> - - 0 -1 107 1.5324270352721214e-02 - - 1.3988590240478516e-01 -6.1316817998886108e-01 - <_> - - 0 -1 108 2.1410979330539703e-02 - - -2.2393199801445007e-01 5.6233572959899902e-01 - <_> - - 0 -1 109 1.9795040134340525e-04 - - -2.3459529876708984e-01 1.3877849280834198e-01 - <_> - - 0 -1 110 -5.1461639814078808e-03 - - -8.9666271209716797e-01 1.4354419708251953e-01 - <_> - - 0 -1 111 -3.3491749316453934e-02 - - 8.1797057390213013e-01 -8.1737898290157318e-02 - <_> - - 0 -1 112 -7.3674921877682209e-03 - - -6.5259951353073120e-01 1.7211680114269257e-01 - <_> - 20 - -1.3563539981842041e+00 - - <_> - - 0 -1 113 7.3508180677890778e-02 - - -4.6614921092987061e-01 5.0694358348846436e-01 - <_> - - 0 -1 114 8.5386466234922409e-03 - - -2.4482139945030212e-01 6.0921180248260498e-01 - <_> - - 0 -1 115 2.2265550494194031e-01 - - -2.3087610304355621e-01 4.4181710481643677e-01 - <_> - - 0 -1 116 7.4994042515754700e-02 - - 1.1506160348653793e-01 -5.5417829751968384e-01 - <_> - - 0 -1 117 -1.6755120456218719e-01 - - 7.4653017520904541e-01 -1.3431079685688019e-01 - <_> - - 0 -1 118 -2.4138720706105232e-02 - - -4.9592089653015137e-01 6.2578730285167694e-02 - <_> - - 0 -1 119 1.1620320379734039e-02 - - -1.7977459728717804e-01 5.6873577833175659e-01 - <_> - - 0 -1 120 4.8821419477462769e-02 - - 4.2774148285388947e-02 -6.0440838336944580e-01 - <_> - - 0 -1 121 3.5715501755475998e-02 - - -2.0169410109519958e-01 5.1855558156967163e-01 - <_> - - 0 -1 122 -1.7011469230055809e-02 - - -6.6163742542266846e-01 4.5137479901313782e-02 - <_> - - 0 -1 123 -1.6027579084038734e-02 - - 5.4205197095870972e-01 -1.8311430513858795e-01 - <_> - - 0 -1 124 9.6712950617074966e-03 - - 3.4085698425769806e-02 -3.6544409394264221e-01 - <_> - - 0 -1 125 -1.0325650218874216e-03 - - -7.0559221506118774e-01 1.2839829921722412e-01 - <_> - - 0 -1 126 -5.7438347721472383e-04 - - 2.0413300395011902e-01 -4.6021059155464172e-01 - <_> - - 0 -1 127 1.2579349568113685e-03 - - 1.9696569442749023e-01 -4.9659618735313416e-01 - <_> - - 0 -1 128 -2.3272659629583359e-02 - - -6.4083862304687500e-01 -1.3145440258085728e-02 - <_> - - 0 -1 129 -4.8163738101720810e-03 - - -7.4635922908782959e-01 1.1569319665431976e-01 - <_> - - 0 -1 130 2.6880908990278840e-04 - - -1.7020240426063538e-01 1.0989090055227280e-01 - <_> - - 0 -1 131 -9.1302618384361267e-03 - - -8.6084252595901489e-01 1.0507579892873764e-01 - <_> - - 0 -1 132 1.5290869772434235e-01 - - -3.0442950129508972e-01 2.9691061377525330e-01 - <_> - 27 - -1.4800649881362915e+00 - - <_> - - 0 -1 133 1.0870260000228882e-01 - - -3.9208391308784485e-01 4.2441639304161072e-01 - <_> - - 0 -1 134 -8.5436011431738734e-05 - - 1.1648490279912949e-01 -1.2261509895324707e-01 - <_> - - 0 -1 135 8.7897274643182755e-03 - - -2.2223709523677826e-01 5.8239942789077759e-01 - <_> - - 0 -1 136 1.9092390313744545e-02 - - -2.8222650289535522e-01 3.4780630469322205e-01 - <_> - - 0 -1 137 -1.4692190103232861e-02 - - 2.4436180293560028e-01 -4.4442260265350342e-01 - <_> - - 0 -1 138 1.7424240708351135e-02 - - 3.9642699062824249e-02 -5.0866502523422241e-01 - <_> - - 0 -1 139 6.9210886955261230e-02 - - -1.5061080455780029e-01 5.4918211698532104e-01 - <_> - - 0 -1 140 1.1516460031270981e-01 - - 4.7058542259037495e-03 -6.0872167348861694e-01 - <_> - - 0 -1 141 -9.0783968567848206e-02 - - 7.6661890745162964e-01 -1.1532770097255707e-01 - <_> - - 0 -1 142 9.3459866940975189e-02 - - 7.7324211597442627e-02 -7.2869849205017090e-01 - <_> - - 0 -1 143 1.4063410460948944e-01 - - -3.0280780792236328e-01 2.9996991157531738e-01 - <_> - - 0 -1 144 7.5702848844230175e-03 - - -2.5590381026268005e-01 3.4416630864143372e-01 - <_> - - 0 -1 145 8.1542655825614929e-03 - - 1.2018810212612152e-01 -8.5254168510437012e-01 - <_> - - 0 -1 146 8.7357666343450546e-03 - - -1.2177339941263199e-01 8.2226127386093140e-02 - <_> - - 0 -1 147 -6.9444780237972736e-03 - - -6.1111962795257568e-01 1.3486449420452118e-01 - <_> - - 0 -1 148 -4.3000229634344578e-03 - - -3.4730020165443420e-01 4.4554490596055984e-02 - <_> - - 0 -1 149 4.0720161050558090e-02 - - -1.2618629634380341e-01 6.0286152362823486e-01 - <_> - - 0 -1 150 -1.0009969584643841e-02 - - -4.5014089345932007e-01 1.8092009425163269e-01 - <_> - - 0 -1 151 1.1742020025849342e-02 - - 8.1721372902393341e-02 -8.0739098787307739e-01 - <_> - - 0 -1 152 -9.7789859864860773e-04 - - 6.6041916608810425e-02 -1.4142000675201416e-01 - <_> - - 0 -1 153 3.4487970173358917e-02 - - 1.0488150268793106e-01 -7.1635431051254272e-01 - <_> - - 0 -1 154 -2.4215620011091232e-02 - - -5.9454482793807983e-01 1.2400969862937927e-02 - <_> - - 0 -1 155 -3.7082370370626450e-02 - - 6.5830427408218384e-01 -1.2158200144767761e-01 - <_> - - 0 -1 156 -4.3632909655570984e-03 - - -6.5290719270706177e-01 1.2228529900312424e-01 - <_> - - 0 -1 157 -4.1692638769745827e-03 - - -7.3107779026031494e-01 7.7946297824382782e-02 - <_> - - 0 -1 158 6.0636870563030243e-02 - - -1.3061979785561562e-02 -8.0408149957656860e-01 - <_> - - 0 -1 159 1.5371589921414852e-02 - - 7.9872779548168182e-02 -8.5363340377807617e-01 - <_> - 25 - -1.3590339422225952e+00 - - <_> - - 0 -1 160 1.5033720061182976e-02 - - -5.3333657979965210e-01 3.4096190333366394e-01 - <_> - - 0 -1 161 -8.9624240994453430e-02 - - 1.8991500139236450e-01 -2.1448349952697754e-01 - <_> - - 0 -1 162 -5.1495251245796680e-03 - - 3.6764401197433472e-01 -3.1621339917182922e-01 - <_> - - 0 -1 163 5.6887358427047729e-02 - - -2.7120190858840942e-01 3.4590399265289307e-01 - <_> - - 0 -1 164 -1.2673810124397278e-01 - - 8.4647309780120850e-01 -6.7630723118782043e-02 - <_> - - 0 -1 165 -1.0681120306253433e-01 - - -2.8982621431350708e-01 8.3181828260421753e-02 - <_> - - 0 -1 166 1.7475779354572296e-01 - - -3.5948398709297180e-01 3.1073129177093506e-01 - <_> - - 0 -1 167 -2.4629090912640095e-03 - - -6.7824071645736694e-01 1.1908339709043503e-01 - <_> - - 0 -1 168 6.6053359769284725e-03 - - -2.4560730159282684e-01 3.7791371345520020e-01 - <_> - - 0 -1 169 1.0148379806196317e-04 - - -1.0097169876098633e-01 8.2711093127727509e-02 - <_> - - 0 -1 170 -1.8523789942264557e-02 - - -4.4592261314392090e-01 1.6946080327033997e-01 - <_> - - 0 -1 171 3.6602010950446129e-03 - - -1.0477670282125473e-01 9.4992779195308685e-02 - <_> - - 0 -1 172 -1.0257829912006855e-02 - - 4.3351659178733826e-01 -1.6978879272937775e-01 - <_> - - 0 -1 173 -9.8685777629725635e-05 - - 1.7843760550022125e-01 -2.6428279280662537e-01 - <_> - - 0 -1 174 -1.2446290347725153e-03 - - -7.2253531217575073e-01 1.0615690052509308e-01 - <_> - - 0 -1 175 1.1974680091952905e-04 - - -3.0318620800971985e-01 1.4623160660266876e-01 - <_> - - 0 -1 176 1.2079760199412704e-03 - - 1.3531659543514252e-01 -5.0457692146301270e-01 - <_> - - 0 -1 177 -1.9425910711288452e-01 - - -7.1733701229095459e-01 8.0573573708534241e-02 - <_> - - 0 -1 178 1.8599320203065872e-02 - - -1.6972489655017853e-01 4.2669999599456787e-01 - <_> - - 0 -1 179 3.0704800039529800e-02 - - 3.2838109880685806e-02 -7.2923952341079712e-01 - <_> - - 0 -1 180 2.1680949255824089e-02 - - -1.6750890016555786e-01 4.4789049029350281e-01 - <_> - - 0 -1 181 5.5604660883545876e-03 - - 9.6391409635543823e-02 -6.6830247640609741e-01 - <_> - - 0 -1 182 -5.6784078478813171e-03 - - -8.2064878940582275e-01 6.2949016690254211e-02 - <_> - - 0 -1 183 -3.0219739302992821e-02 - - 3.3288109302520752e-01 -8.1444039940834045e-02 - <_> - - 0 -1 184 2.4341929703950882e-02 - - 9.3220241367816925e-02 -6.9502758979797363e-01 - <_> - 32 - -1.4373550415039062e+00 - - <_> - - 0 -1 185 -3.9169401861727238e-03 - - 4.5325928926467896e-01 -3.0284589529037476e-01 - <_> - - 0 -1 186 1.0800900310277939e-01 - - 3.6738589406013489e-02 -7.2782218456268311e-01 - <_> - - 0 -1 187 1.5356090664863586e-01 - - -3.8900190591812134e-01 3.1287321448326111e-01 - <_> - - 0 -1 188 8.7726805359125137e-03 - - -1.5705280005931854e-01 8.2666940987110138e-02 - <_> - - 0 -1 189 -1.0571720078587532e-02 - - 2.4971100687980652e-01 -4.7014111280441284e-01 - <_> - - 0 -1 190 2.7240550145506859e-02 - - 6.0097638517618179e-02 -6.6213667392730713e-01 - <_> - - 0 -1 191 -3.6633450537919998e-02 - - 5.1044297218322754e-01 -1.7766149342060089e-01 - <_> - - 0 -1 192 1.3806289434432983e-01 - - -4.0644191205501556e-02 7.8849452733993530e-01 - <_> - - 0 -1 193 9.4720393419265747e-02 - - -4.3654170632362366e-01 1.9054649770259857e-01 - <_> - - 0 -1 194 -3.3387150615453720e-03 - - -6.8457669019699097e-01 9.6802540123462677e-02 - <_> - - 0 -1 195 1.1899480159627274e-04 - - -3.5843661427497864e-01 2.2279889881610870e-01 - <_> - - 0 -1 196 2.9007149860262871e-03 - - -1.5845039486885071e-01 6.6679857671260834e-02 - <_> - - 0 -1 197 1.2376639991998672e-02 - - -1.4206279814243317e-01 4.9320921301841736e-01 - <_> - - 0 -1 198 6.0215988196432590e-03 - - -1.4971609413623810e-01 2.1797719597816467e-01 - <_> - - 0 -1 199 -1.6887940466403961e-01 - - 7.1833407878875732e-01 -1.1091569811105728e-01 - <_> - - 0 -1 200 -7.4033271521329880e-03 - - 2.2573550045490265e-01 -3.2993030548095703e-01 - <_> - - 0 -1 201 -6.5029351972043514e-03 - - 4.7018998861312866e-01 -1.5201370418071747e-01 - <_> - - 0 -1 202 1.7706790240481496e-03 - - -1.4644999802112579e-01 9.4745017588138580e-02 - <_> - - 0 -1 203 1.7085459083318710e-02 - - 8.5357367992401123e-02 -8.2599818706512451e-01 - <_> - - 0 -1 204 -5.3032718598842621e-02 - - -6.5861982107162476e-01 -1.3727230252698064e-03 - <_> - - 0 -1 205 2.7725089341402054e-02 - - -1.4935420453548431e-01 4.4009518623352051e-01 - <_> - - 0 -1 206 5.8685488998889923e-02 - - 7.8679984435439110e-03 -4.4109138846397400e-01 - <_> - - 0 -1 207 -1.0465820319950581e-02 - - -5.8385229110717773e-01 1.0567150264978409e-01 - <_> - - 0 -1 208 -4.4063638895750046e-02 - - -5.9246909618377686e-01 5.7151052169501781e-03 - <_> - - 0 -1 209 -1.1932180263102055e-02 - - 2.3818169534206390e-01 -2.8293299674987793e-01 - <_> - - 0 -1 210 -1.2644910020753741e-03 - - 1.0124749690294266e-01 -3.3939999341964722e-01 - <_> - - 0 -1 211 -1.8404610455036163e-03 - - -6.7492902278900146e-01 9.5524467527866364e-02 - <_> - - 0 -1 212 -7.9289656132459641e-03 - - -6.7770427465438843e-01 3.4221731126308441e-02 - <_> - - 0 -1 213 5.7004559785127640e-03 - - -1.3198739290237427e-01 4.2710319161415100e-01 - <_> - - 0 -1 214 1.8237680196762085e-02 - - 3.0692299827933311e-02 -8.6847299337387085e-01 - <_> - - 0 -1 215 3.2086670398712158e-03 - - -1.3335919380187988e-01 4.3883138895034790e-01 - <_> - - 0 -1 216 1.2446580454707146e-02 - - 2.9371360316872597e-02 -7.8926819562911987e-01 - <_> - 34 - -1.3898090124130249e+00 - - <_> - - 0 -1 217 -1.2674730271100998e-02 - - 5.0484418869018555e-01 -2.5669950246810913e-01 - <_> - - 0 -1 218 1.1808129958808422e-02 - - 6.3001699745655060e-02 -4.0641498565673828e-01 - <_> - - 0 -1 219 2.5127220433205366e-03 - - -3.2253271341323853e-01 3.6614939570426941e-01 - <_> - - 0 -1 220 -3.5469220019876957e-03 - - 1.9579920172691345e-01 -1.5416850149631500e-01 - <_> - - 0 -1 221 3.9148680865764618e-02 - - -2.5791868567466736e-01 3.3852350711822510e-01 - <_> - - 0 -1 222 1.3151739537715912e-01 - - 2.7472509071230888e-02 -5.5891007184982300e-01 - <_> - - 0 -1 223 -1.6689460724592209e-02 - - 1.4658740162849426e-01 -5.2727991342544556e-01 - <_> - - 0 -1 224 6.4351540058851242e-03 - - -1.2016840279102325e-01 1.8379710614681244e-01 - <_> - - 0 -1 225 -6.3846178352832794e-02 - - 7.5390338897705078e-01 -1.0603629797697067e-01 - <_> - - 0 -1 226 -4.6943090856075287e-03 - - 2.0730340480804443e-01 -1.6408169269561768e-01 - <_> - - 0 -1 227 1.1263520456850529e-02 - - 1.0285060107707977e-01 -7.2724348306655884e-01 - <_> - - 0 -1 228 1.0440419428050518e-03 - - 1.3197229802608490e-01 -6.4476031064987183e-01 - <_> - - 0 -1 229 2.9053710401058197e-02 - - -3.2099440693855286e-01 1.9499249756336212e-01 - <_> - - 0 -1 230 1.2985640205442905e-02 - - -6.2498811632394791e-02 2.6551690697669983e-01 - <_> - - 0 -1 231 1.4938330277800560e-02 - - 8.0150052905082703e-02 -7.6676148176193237e-01 - <_> - - 0 -1 232 -3.4180350601673126e-02 - - -5.1320338249206543e-01 -3.6074419040232897e-03 - <_> - - 0 -1 233 4.3761111795902252e-02 - - -1.4384460449218750e-01 4.2616510391235352e-01 - <_> - - 0 -1 234 -1.1876770295202732e-03 - - 1.4837500452995300e-01 -5.0197489559650421e-02 - <_> - - 0 -1 235 -1.3196719810366631e-02 - - -7.6232409477233887e-01 7.9683482646942139e-02 - <_> - - 0 -1 236 -1.4940570108592510e-03 - - 2.2585479915142059e-01 -1.0884329676628113e-01 - <_> - - 0 -1 237 9.9800303578376770e-03 - - 7.7047176659107208e-02 -8.1608718633651733e-01 - <_> - - 0 -1 238 1.3630810426548123e-03 - - -1.0334450006484985e-01 2.0994339883327484e-01 - <_> - - 0 -1 239 -2.6497698854655027e-03 - - 4.8666700720787048e-01 -1.2183590233325958e-01 - <_> - - 0 -1 240 2.9017059132456779e-02 - - 3.0331170186400414e-02 -5.4417270421981812e-01 - <_> - - 0 -1 241 1.7291629686951637e-02 - - -1.3578090071678162e-01 4.4251319766044617e-01 - <_> - - 0 -1 242 1.9144080579280853e-03 - - -8.2041606307029724e-02 1.1203309893608093e-01 - <_> - - 0 -1 243 9.2138089239597321e-03 - - 9.5674678683280945e-02 -7.1387839317321777e-01 - <_> - - 0 -1 244 1.9401769340038300e-01 - - -3.3527439832687378e-01 1.6470989584922791e-01 - <_> - - 0 -1 245 -8.9092198759317398e-03 - - 4.5958560705184937e-01 -1.3180640339851379e-01 - <_> - - 0 -1 246 -1.6158509999513626e-02 - - -8.8425397872924805e-01 3.6370448768138885e-02 - <_> - - 0 -1 247 -4.3315120041370392e-02 - - 3.5693758726119995e-01 -1.4853119850158691e-01 - <_> - - 0 -1 248 -6.0759939253330231e-02 - - 3.1768760085105896e-01 -1.8056009709835052e-01 - <_> - - 0 -1 249 -2.8645009733736515e-03 - - 5.3059607744216919e-01 -1.1261919885873795e-01 - <_> - - 0 -1 250 1.1360960081219673e-02 - - 3.5099871456623077e-02 -4.7815018892288208e-01 - <_> - 37 - -1.3544019460678101e+00 - - <_> - - 0 -1 251 1.3970459811389446e-02 - - -3.0530300736427307e-01 4.1125300526618958e-01 - <_> - - 0 -1 252 -1.1679069697856903e-01 - - 1.4812999963760376e-01 -7.0709809660911560e-02 - <_> - - 0 -1 253 1.6397690400481224e-02 - - -3.0543169379234314e-01 3.0162781476974487e-01 - <_> - - 0 -1 254 -2.0286109298467636e-02 - - -2.3618179559707642e-01 1.2187310308218002e-01 - <_> - - 0 -1 255 3.3962181210517883e-01 - - -2.3415289819240570e-01 3.7955328822135925e-01 - <_> - - 0 -1 256 8.0632884055376053e-03 - - -5.6521987915039062e-01 1.2719720602035522e-01 - <_> - - 0 -1 257 -1.4234139816835523e-03 - - -5.8998572826385498e-01 1.1668500304222107e-01 - <_> - - 0 -1 258 3.9983680471777916e-03 - - -9.9398262798786163e-02 1.2795600295066833e-01 - <_> - - 0 -1 259 -9.4549506902694702e-03 - - -5.6156420707702637e-01 9.9381953477859497e-02 - <_> - - 0 -1 260 3.7270709872245789e-02 - - 8.4691196680068970e-02 -6.5302717685699463e-01 - <_> - - 0 -1 261 8.1806071102619171e-03 - - 6.4047202467918396e-02 -7.3235487937927246e-01 - <_> - - 0 -1 262 6.7418292164802551e-02 - - 4.3028471991419792e-03 -6.2574678659439087e-01 - <_> - - 0 -1 263 1.8985599279403687e-02 - - 7.0422857999801636e-02 -7.7566891908645630e-01 - <_> - - 0 -1 264 -3.0685300589539111e-04 - - 6.0799881815910339e-02 -7.3534972965717316e-02 - <_> - - 0 -1 265 1.0786009952425957e-02 - - -1.2505950033664703e-01 4.8208248615264893e-01 - <_> - - 0 -1 266 6.9674388505518436e-03 - - 8.3264723420143127e-02 -6.9356048107147217e-01 - <_> - - 0 -1 267 1.2767270207405090e-02 - - 6.4788013696670532e-02 -7.0968890190124512e-01 - <_> - - 0 -1 268 -1.4131699688732624e-02 - - -7.5622642040252686e-01 2.0618569105863571e-02 - <_> - - 0 -1 269 -1.5918679535388947e-02 - - 1.9603510200977325e-01 -2.7034899592399597e-01 - <_> - - 0 -1 270 9.9455211311578751e-03 - - -4.3780571222305298e-01 1.1859329789876938e-01 - <_> - - 0 -1 271 1.5286459587514400e-02 - - -1.9513919949531555e-01 2.6915138959884644e-01 - <_> - - 0 -1 272 5.9025101363658905e-03 - - -1.6288129985332489e-01 3.6743709444999695e-01 - <_> - - 0 -1 273 -6.9729480892419815e-03 - - 4.6202778816223145e-01 -1.5376560389995575e-01 - <_> - - 0 -1 274 -1.9449390470981598e-02 - - -5.3632599115371704e-01 3.1576488167047501e-02 - <_> - - 0 -1 275 -4.7259521670639515e-03 - - -7.3517972230911255e-01 7.3678806424140930e-02 - <_> - - 0 -1 276 -8.5517195984721184e-03 - - 3.5986369848251343e-01 -1.2420760095119476e-01 - <_> - - 0 -1 277 -9.8964512348175049e-02 - - 6.2507808208465576e-01 -8.6647883057594299e-02 - <_> - - 0 -1 278 -1.7731260508298874e-02 - - -5.7925891876220703e-01 2.5198649615049362e-02 - <_> - - 0 -1 279 -2.9190430417656898e-02 - - 5.7298821210861206e-01 -1.0151000320911407e-01 - <_> - - 0 -1 280 5.4621109738945961e-03 - - 4.4515479356050491e-02 -6.6922581195831299e-01 - <_> - - 0 -1 281 -6.8695018999278545e-03 - - -5.8384990692138672e-01 8.7239846587181091e-02 - <_> - - 0 -1 282 -1.7049070447683334e-03 - - 2.2694580256938934e-01 -8.1620521843433380e-02 - <_> - - 0 -1 283 5.8957659639418125e-03 - - -1.1778759956359863e-01 4.2724978923797607e-01 - <_> - - 0 -1 284 8.5842777043581009e-03 - - -5.4629139602184296e-02 1.0813979804515839e-01 - <_> - - 0 -1 285 1.2934260070323944e-02 - - 7.0849359035491943e-02 -7.3857682943344116e-01 - <_> - - 0 -1 286 1.9973270595073700e-02 - - 1.6626559663563967e-03 -7.6631492376327515e-01 - <_> - - 0 -1 287 5.5011189542710781e-03 - - 8.9468717575073242e-02 -5.3985279798507690e-01 - <_> - 38 - -1.3085269927978516e+00 - - <_> - - 0 -1 288 7.9501233994960785e-03 - - -2.7952459454536438e-01 4.3506631255149841e-01 - <_> - - 0 -1 289 -1.5085919760167599e-02 - - 5.9209001064300537e-01 -1.6481369733810425e-01 - <_> - - 0 -1 290 1.9475109875202179e-01 - - -3.1889539957046509e-01 2.8196701407432556e-01 - <_> - - 0 -1 291 -2.4689928977750242e-04 - - 9.6763692796230316e-02 -1.8406489491462708e-01 - <_> - - 0 -1 292 5.2499058656394482e-03 - - 1.5704880654811859e-01 -5.2710950374603271e-01 - <_> - - 0 -1 293 -1.2732569302897900e-04 - - 5.3218118846416473e-02 -1.6152860224246979e-01 - <_> - - 0 -1 294 -6.5984549000859261e-03 - - 2.1844869852066040e-01 -3.7529769539833069e-01 - <_> - - 0 -1 295 -1.2836559675633907e-02 - - 6.1008229851722717e-02 -1.1862020194530487e-01 - <_> - - 0 -1 296 -1.4707820117473602e-01 - - 7.9065358638763428e-01 -9.4447426497936249e-02 - <_> - - 0 -1 297 4.8533070832490921e-02 - - 4.9431171268224716e-02 -5.9807902574539185e-01 - <_> - - 0 -1 298 4.1398849338293076e-02 - - -3.1118649244308472e-01 2.4850000441074371e-01 - <_> - - 0 -1 299 5.9322831220924854e-03 - - -1.9105120003223419e-01 2.6189088821411133e-01 - <_> - - 0 -1 300 6.1201062053442001e-03 - - -1.4400300383567810e-01 3.8592028617858887e-01 - <_> - - 0 -1 301 -1.2118129990994930e-02 - - -5.7840502262115479e-01 3.1328909099102020e-02 - <_> - - 0 -1 302 7.5321048498153687e-03 - - 7.6200783252716064e-02 -7.1263229846954346e-01 - <_> - - 0 -1 303 9.4633679836988449e-03 - - -8.1573672592639923e-02 1.5981380641460419e-01 - <_> - - 0 -1 304 -6.4435349777340889e-03 - - -8.9533412456512451e-01 6.0908339917659760e-02 - <_> - - 0 -1 305 -1.3353319838643074e-02 - - 5.0735729932785034e-01 -1.4220820367336273e-01 - <_> - - 0 -1 306 -4.8206631094217300e-02 - - -7.0776158571243286e-01 8.7017923593521118e-02 - <_> - - 0 -1 307 -8.6862186435610056e-05 - - 9.2491082847118378e-02 -1.9064180552959442e-01 - <_> - - 0 -1 308 3.5890119615942240e-03 - - -1.1369240283966064e-01 4.5717659592628479e-01 - <_> - - 0 -1 309 2.5103650987148285e-03 - - -9.6626877784729004e-02 2.8315341472625732e-01 - <_> - - 0 -1 310 -1.6438219463452697e-03 - - -6.8512988090515137e-01 8.4855683147907257e-02 - <_> - - 0 -1 311 -1.1147640179842710e-03 - - 2.0340760052204132e-01 -9.5162183046340942e-02 - <_> - - 0 -1 312 3.3129220828413963e-03 - - -1.2348870187997818e-01 4.5109578967094421e-01 - <_> - - 0 -1 313 1.2473019771277905e-02 - - 8.5647627711296082e-02 -1.7752259969711304e-01 - <_> - - 0 -1 314 1.1887500062584877e-02 - - 7.9497292637825012e-02 -7.1333557367324829e-01 - <_> - - 0 -1 315 4.6640802174806595e-03 - - -1.1890850216150284e-01 1.6375760734081268e-01 - <_> - - 0 -1 316 -7.5049358420073986e-03 - - 4.5544099807739258e-01 -1.2412810325622559e-01 - <_> - - 0 -1 317 1.7780659720301628e-02 - - -1.0757599771022797e-01 1.6240009665489197e-01 - <_> - - 0 -1 318 -6.5337750129401684e-03 - - 4.3141070008277893e-01 -1.2603540718555450e-01 - <_> - - 0 -1 319 -2.4446230381727219e-02 - - -6.6479730606079102e-01 1.9722750410437584e-02 - <_> - - 0 -1 320 6.8284119479358196e-03 - - 8.7926700711250305e-02 -5.4765981435775757e-01 - <_> - - 0 -1 321 -1.7527850344777107e-02 - - -4.7350269556045532e-01 1.8452549353241920e-02 - <_> - - 0 -1 322 -5.6044701486825943e-03 - - 1.6700869798660278e-01 -2.8558060526847839e-01 - <_> - - 0 -1 323 5.6587088853120804e-02 - - 9.8792626522481441e-04 -9.0761202573776245e-01 - <_> - - 0 -1 324 -9.1678956523537636e-03 - - -5.7369470596313477e-01 8.6971327662467957e-02 - <_> - - 0 -1 325 -7.9324431717395782e-03 - - -7.1619319915771484e-01 4.7531701624393463e-02 - <_> - 44 - -1.3564130067825317e+00 - - <_> - - 0 -1 326 1.1259860359132290e-02 - - -3.2671540975570679e-01 3.7448620796203613e-01 - <_> - - 0 -1 327 -8.0411562521476299e-05 - - 1.3456510007381439e-01 -3.5597088932991028e-01 - <_> - - 0 -1 328 -1.0097360238432884e-02 - - 4.2515400052070618e-01 -2.0356260240077972e-01 - <_> - - 0 -1 329 -9.5205657184123993e-02 - - -2.6214841008186340e-01 4.4497821480035782e-02 - <_> - - 0 -1 330 2.1976239979267120e-01 - - -2.6376900076866150e-01 2.7963450551033020e-01 - <_> - - 0 -1 331 -1.4373429585248232e-03 - - 1.9384309649467468e-01 -6.6377736628055573e-02 - <_> - - 0 -1 332 -2.1600460633635521e-02 - - 5.2735280990600586e-01 -1.1125139892101288e-01 - <_> - - 0 -1 333 8.8454764336347580e-03 - - -1.6414600610733032e-01 1.7835170030593872e-01 - <_> - - 0 -1 334 3.5627551376819611e-02 - - -5.0226557254791260e-01 1.2036989629268646e-01 - <_> - - 0 -1 335 1.9948599860072136e-02 - - -2.4443860352039337e-01 2.0503400266170502e-01 - <_> - - 0 -1 336 -3.0674149747937918e-03 - - -5.3477287292480469e-01 1.1543580144643784e-01 - <_> - - 0 -1 337 -1.2012269580736756e-03 - - 1.2676300108432770e-01 -1.3938720524311066e-01 - <_> - - 0 -1 338 1.7143359407782555e-02 - - -1.0488930344581604e-01 4.8458871245384216e-01 - <_> - - 0 -1 339 7.7037338633090258e-04 - - -2.6416009664535522e-01 1.3753029704093933e-01 - <_> - - 0 -1 340 1.9928140100091696e-03 - - 1.0820219665765762e-01 -4.6027541160583496e-01 - <_> - - 0 -1 341 8.1858411431312561e-03 - - -1.1870039999485016e-01 1.8429510295391083e-01 - <_> - - 0 -1 342 2.0016850531101227e-01 - - -7.7433213591575623e-02 6.7445492744445801e-01 - <_> - - 0 -1 343 -1.2134050019085407e-02 - - 4.5361760258674622e-01 -3.2230481505393982e-02 - <_> - - 0 -1 344 1.1809550225734711e-02 - - -1.5140220522880554e-01 4.1091579198837280e-01 - <_> - - 0 -1 345 -5.3903311491012573e-02 - - 2.4644249677658081e-01 -1.6336809843778610e-02 - <_> - - 0 -1 346 2.5369100272655487e-02 - - 5.7606618851423264e-02 -8.1810200214385986e-01 - <_> - - 0 -1 347 4.0477071888744831e-03 - - 3.4279700368642807e-02 -3.8912689685821533e-01 - <_> - - 0 -1 348 2.3273769766092300e-03 - - -2.6318120956420898e-01 2.0111019909381866e-01 - <_> - - 0 -1 349 -1.4055520296096802e-02 - - -4.5798641443252563e-01 1.0322000086307526e-01 - <_> - - 0 -1 350 4.1040539741516113e-02 - - -1.0665339976549149e-01 4.9921628832817078e-01 - <_> - - 0 -1 351 1.7403350211679935e-03 - - -3.0963689088821411e-02 9.0507246553897858e-02 - <_> - - 0 -1 352 -5.9111667796969414e-03 - - -6.9301342964172363e-01 7.1324340999126434e-02 - <_> - - 0 -1 353 -8.4086872637271881e-02 - - 4.6972590684890747e-01 -4.9859449267387390e-02 - <_> - - 0 -1 354 1.2733220355585217e-03 - - -3.5704851150512695e-01 1.3806779682636261e-01 - <_> - - 0 -1 355 5.9486827813088894e-03 - - -1.5816900134086609e-01 2.8468400239944458e-01 - <_> - - 0 -1 356 -8.6815077811479568e-03 - - -7.6587718725204468e-01 6.2390629202127457e-02 - <_> - - 0 -1 357 -1.0674200020730495e-02 - - -5.5144512653350830e-01 5.6196320801973343e-02 - <_> - - 0 -1 358 1.7951499670743942e-02 - - 6.1362300068140030e-02 -6.4841997623443604e-01 - <_> - - 0 -1 359 1.9660689576994628e-04 - - -1.4563970267772675e-01 9.5173902809619904e-02 - <_> - - 0 -1 360 -1.3475000159814954e-03 - - -3.9846318960189819e-01 1.0717230290174484e-01 - <_> - - 0 -1 361 1.3271289644762874e-03 - - -7.6305247843265533e-02 1.5964789688587189e-01 - <_> - - 0 -1 362 3.9857891388237476e-03 - - -1.0918959975242615e-01 3.6956569552421570e-01 - <_> - - 0 -1 363 1.7747710226103663e-03 - - -5.8550398796796799e-02 7.1181796491146088e-02 - <_> - - 0 -1 364 -6.9627179764211178e-03 - - 3.6977839469909668e-01 -1.1677960306406021e-01 - <_> - - 0 -1 365 -9.0530123561620712e-03 - - -5.3131139278411865e-01 4.2773369699716568e-02 - <_> - - 0 -1 366 -5.0673801451921463e-02 - - 6.5122097730636597e-01 -6.6222466528415680e-02 - <_> - - 0 -1 367 -9.9803637713193893e-03 - - 1.7810410261154175e-01 -4.8675179481506348e-02 - <_> - - 0 -1 368 1.0967300273478031e-02 - - 6.3715361058712006e-02 -7.0216029882431030e-01 - <_> - - 0 -1 369 7.1746408939361572e-03 - - -9.5948472619056702e-02 1.5818059444427490e-01 - <_> - 45 - -1.2748670578002930e+00 - - <_> - - 0 -1 370 -1.4637179672718048e-02 - - 4.5756229758262634e-01 -2.5793579220771790e-01 - <_> - - 0 -1 371 -1.1372080189175904e-04 - - 1.4856390655040741e-01 -1.3528409600257874e-01 - <_> - - 0 -1 372 6.3527049496769905e-03 - - -1.8282939493656158e-01 5.0529718399047852e-01 - <_> - - 0 -1 373 2.4946528719738126e-04 - - -3.5463958978652954e-01 1.1956059932708740e-01 - <_> - - 0 -1 374 8.5882786661386490e-03 - - -3.6795818805694580e-01 1.9289310276508331e-01 - <_> - - 0 -1 375 -5.3795471787452698e-02 - - -9.2534601688385010e-01 -3.0407099984586239e-03 - <_> - - 0 -1 376 -1.2914909981191158e-02 - - 2.0769760012626648e-01 -2.8073310852050781e-01 - <_> - - 0 -1 377 6.5217018127441406e-02 - - 9.1229602694511414e-02 -3.9509040117263794e-01 - <_> - - 0 -1 378 -1.5482950024306774e-02 - - 5.5492401123046875e-01 -1.0178919881582260e-01 - <_> - - 0 -1 379 -7.0964470505714417e-02 - - -6.0590541362762451e-01 3.3235780894756317e-02 - <_> - - 0 -1 380 -1.4792110025882721e-01 - - 6.8140488862991333e-01 -9.2882059514522552e-02 - <_> - - 0 -1 381 3.2156299799680710e-02 - - -1.3000990450382233e-01 1.6143409907817841e-01 - <_> - - 0 -1 382 -5.5202730000019073e-03 - - 1.8147900700569153e-01 -3.2928371429443359e-01 - <_> - - 0 -1 383 1.7749259248375893e-02 - - -6.7472197115421295e-02 2.4095970392227173e-01 - <_> - - 0 -1 384 -1.4773460105061531e-02 - - -7.1976912021636963e-01 7.0244252681732178e-02 - <_> - - 0 -1 385 -2.1384380757808685e-02 - - -6.6300392150878906e-01 6.1542339622974396e-02 - <_> - - 0 -1 386 1.1285319924354553e-02 - - -1.1147149652242661e-01 4.2070099711418152e-01 - <_> - - 0 -1 387 5.3818488959223032e-04 - - 1.3580459356307983e-01 -3.6389431357383728e-01 - <_> - - 0 -1 388 -4.5372340828180313e-03 - - -6.2848389148712158e-01 7.5644947588443756e-02 - <_> - - 0 -1 389 -5.8880869299173355e-02 - - -4.4123521447181702e-01 5.2693258039653301e-03 - <_> - - 0 -1 390 3.7623539566993713e-02 - - 6.0741778463125229e-02 -7.3273491859436035e-01 - <_> - - 0 -1 391 4.9864239990711212e-03 - - -9.5100089907646179e-02 1.3218070566654205e-01 - <_> - - 0 -1 392 1.5848229825496674e-01 - - -2.3477560281753540e-01 2.0766119658946991e-01 - <_> - - 0 -1 393 -2.2148280404508114e-03 - - 1.3150349259376526e-01 -7.2531886398792267e-02 - <_> - - 0 -1 394 -2.4197169113904238e-03 - - 3.4369221329689026e-01 -1.3603129982948303e-01 - <_> - - 0 -1 395 1.3667210005223751e-02 - - -1.1352819949388504e-01 1.8905560672283173e-01 - <_> - - 0 -1 396 3.4907150268554688e-01 - - -2.0564649999141693e-01 2.0814339816570282e-01 - <_> - - 0 -1 397 -2.3180799558758736e-02 - - -7.0410561561584473e-01 6.5354611724615097e-03 - <_> - - 0 -1 398 -2.4704890325665474e-02 - - 4.3212160468101501e-01 -1.0485579818487167e-01 - <_> - - 0 -1 399 3.5061739385128021e-02 - - -5.6936308741569519e-02 2.4053120613098145e-01 - <_> - - 0 -1 400 -2.8482209891080856e-02 - - -6.4425909519195557e-01 6.7065469920635223e-02 - <_> - - 0 -1 401 9.4022173434495926e-03 - - -8.7327830493450165e-02 1.0236190259456635e-01 - <_> - - 0 -1 402 1.2662390246987343e-02 - - 6.4649492502212524e-02 -6.6464841365814209e-01 - <_> - - 0 -1 403 -1.8630980048328638e-04 - - 8.8812537491321564e-02 -1.4801080524921417e-01 - <_> - - 0 -1 404 -6.3631217926740646e-03 - - -6.1257928609848022e-01 7.0822767913341522e-02 - <_> - - 0 -1 405 -3.2741650938987732e-03 - - 1.6412730515003204e-01 -1.3364849984645844e-01 - <_> - - 0 -1 406 3.4096399322152138e-03 - - -1.2046200037002563e-01 3.2251781225204468e-01 - <_> - - 0 -1 407 -2.0664960611611605e-03 - - 8.0544687807559967e-02 -3.9290331304073334e-02 - <_> - - 0 -1 408 -7.1488898247480392e-03 - - 3.5944211483001709e-01 -1.1370600014925003e-01 - <_> - - 0 -1 409 1.4608979690819979e-03 - - -1.4393359422683716e-01 1.0468409955501556e-01 - <_> - - 0 -1 410 -1.2510320171713829e-02 - - 3.0024001002311707e-01 -1.3041430711746216e-01 - <_> - - 0 -1 411 -1.6470119357109070e-02 - - -3.4044870734214783e-01 2.2476559504866600e-02 - <_> - - 0 -1 412 -1.3765309937298298e-02 - - 4.4677600264549255e-01 -9.7284018993377686e-02 - <_> - - 0 -1 413 1.0946969996439293e-04 - - -2.0872430503368378e-01 1.5401780605316162e-01 - <_> - - 0 -1 414 -6.9605209864675999e-03 - - -8.2299548387527466e-01 4.8897851258516312e-02 - <_> - 50 - -1.2878630161285400e+00 - - <_> - - 0 -1 415 4.9184081144630909e-03 - - -3.2976099848747253e-01 3.1599700450897217e-01 - <_> - - 0 -1 416 -8.4240734577178955e-03 - - 3.2350379228591919e-01 -2.4553489685058594e-01 - <_> - - 0 -1 417 2.0760910212993622e-01 - - -2.7401238679885864e-01 2.4197450280189514e-01 - <_> - - 0 -1 418 -1.5002899803221226e-02 - - 8.3533883094787598e-02 -2.5596448779106140e-01 - <_> - - 0 -1 419 2.2144610993564129e-03 - - -2.2534610331058502e-01 2.2740550339221954e-01 - <_> - - 0 -1 420 -6.0699690133333206e-02 - - 1.8549209833145142e-01 -1.9505530595779419e-02 - <_> - - 0 -1 421 -5.6538339704275131e-02 - - 6.1330437660217285e-01 -8.7735809385776520e-02 - <_> - - 0 -1 422 -1.4412499964237213e-02 - - 2.4093009531497955e-01 -2.7344560623168945e-01 - <_> - - 0 -1 423 -1.4219420263543725e-03 - - -6.0177552700042725e-01 1.0058429837226868e-01 - <_> - - 0 -1 424 1.6331190243363380e-02 - - 2.1288860589265823e-02 -5.0142019987106323e-01 - <_> - - 0 -1 425 1.4106729999184608e-02 - - -1.8390950560569763e-01 2.6597890257835388e-01 - <_> - - 0 -1 426 -4.9360690172761679e-04 - - 3.0524199828505516e-02 -2.0498749613761902e-01 - <_> - - 0 -1 427 -7.0101441815495491e-03 - - 4.0488889813423157e-01 -1.1826159805059433e-01 - <_> - - 0 -1 428 6.4736358821392059e-02 - - 9.0163238346576691e-02 -4.8485979437828064e-01 - <_> - - 0 -1 429 -6.7224488593637943e-03 - - -5.4630178213119507e-01 7.3308691382408142e-02 - <_> - - 0 -1 430 -1.2748160399496555e-02 - - -6.7641848325729370e-01 3.2798580825328827e-02 - <_> - - 0 -1 431 -7.3234830051660538e-03 - - -6.3869500160217285e-01 5.4413169622421265e-02 - <_> - - 0 -1 432 -1.7713790759444237e-02 - - -7.4989777803421021e-01 6.3041099347174168e-03 - <_> - - 0 -1 433 -1.1022159829735756e-02 - - 4.7562441229820251e-01 -8.7812356650829315e-02 - <_> - - 0 -1 434 -7.2062062099575996e-03 - - -5.1175302267074585e-01 3.8222119212150574e-02 - <_> - - 0 -1 435 7.8669954091310501e-03 - - -1.0822050273418427e-01 4.3007129430770874e-01 - <_> - - 0 -1 436 1.4753219671547413e-02 - - 3.0923029407858849e-02 -5.8399969339370728e-01 - <_> - - 0 -1 437 -8.7396129965782166e-03 - - -5.5709302425384521e-01 6.5057590603828430e-02 - <_> - - 0 -1 438 -1.8765570130199194e-03 - - 2.0753450691699982e-01 -1.0404630005359650e-01 - <_> - - 0 -1 439 6.1403261497616768e-03 - - -8.8196322321891785e-02 5.0393581390380859e-01 - <_> - - 0 -1 440 -6.2455530278384686e-03 - - 4.5692878961563110e-01 -8.8871538639068604e-02 - <_> - - 0 -1 441 -6.5213078632950783e-03 - - -7.3358172178268433e-01 6.1022911220788956e-02 - <_> - - 0 -1 442 8.4276527166366577e-02 - - -5.1953801885247231e-03 -7.2847050428390503e-01 - <_> - - 0 -1 443 1.2186209671199322e-02 - - 8.0246433615684509e-02 -4.9406829476356506e-01 - <_> - - 0 -1 444 -5.2070740610361099e-02 - - 5.3785991668701172e-01 -2.6184149086475372e-02 - <_> - - 0 -1 445 -1.8056540284305811e-03 - - 1.2499610334634781e-01 -3.1014269590377808e-01 - <_> - - 0 -1 446 3.5525551065802574e-03 - - -1.4355179667472839e-01 9.3508958816528320e-02 - <_> - - 0 -1 447 2.1722750738263130e-02 - - 5.4289009422063828e-02 -6.9004470109939575e-01 - <_> - - 0 -1 448 1.5696860849857330e-02 - - -6.2646992504596710e-02 5.2328252792358398e-01 - <_> - - 0 -1 449 1.1486239731311798e-02 - - -1.7067709565162659e-01 2.5379261374473572e-01 - <_> - - 0 -1 450 -7.0110350847244263e-02 - - 2.1845239400863647e-01 -3.2540921121835709e-02 - <_> - - 0 -1 451 -2.3832129314541817e-02 - - -7.2852367162704468e-01 5.6103359907865524e-02 - <_> - - 0 -1 452 1.8152900040149689e-02 - - 7.9692779108881950e-03 -5.0108677148818970e-01 - <_> - - 0 -1 453 -4.9337781965732574e-03 - - -5.4861277341842651e-01 7.4599482119083405e-02 - <_> - - 0 -1 454 -2.8721539303660393e-02 - - -5.0967568159103394e-01 1.3899230398237705e-02 - <_> - - 0 -1 455 6.0404408723115921e-03 - - 8.0196216702461243e-02 -4.5811289548873901e-01 - <_> - - 0 -1 456 -1.7407380044460297e-02 - - -6.7178148031234741e-01 7.8524583950638771e-03 - <_> - - 0 -1 457 1.8755920231342316e-02 - - -7.0715762674808502e-02 5.2900022268295288e-01 - <_> - - 0 -1 458 7.5297430157661438e-03 - - -5.4971348494291306e-02 1.2586890161037445e-01 - <_> - - 0 -1 459 2.7714699506759644e-02 - - -9.4051122665405273e-02 3.9269289374351501e-01 - <_> - - 0 -1 460 -1.9136169925332069e-02 - - -6.1292767524719238e-01 4.3676119297742844e-02 - <_> - - 0 -1 461 -1.1729629710316658e-02 - - 4.0649351477622986e-01 -1.0054980218410492e-01 - <_> - - 0 -1 462 2.6842709630727768e-03 - - 6.1806179583072662e-02 -2.6040008664131165e-01 - <_> - - 0 -1 463 1.3504150323569775e-02 - - 6.3247829675674438e-02 -6.1916601657867432e-01 - <_> - - 0 -1 464 -4.8922952264547348e-03 - - -7.3288178443908691e-01 4.1912440210580826e-02 - <_> - 56 - -1.3936669826507568e+00 - - <_> - - 0 -1 465 1.0124780237674713e-02 - - -2.2478839755058289e-01 4.9562188982963562e-01 - <_> - - 0 -1 466 2.0572949945926666e-01 - - 2.6126179844141006e-02 -7.9092139005661011e-01 - <_> - - 0 -1 467 1.7348840832710266e-02 - - -3.8796889781951904e-01 2.0708920061588287e-01 - <_> - - 0 -1 468 -2.5478509068489075e-01 - - -5.7850080728530884e-01 1.2234980240464211e-02 - <_> - - 0 -1 469 -2.8602819889783859e-02 - - 1.7568160593509674e-01 -3.7877011299133301e-01 - <_> - - 0 -1 470 9.1557251289486885e-03 - - 5.8734539896249771e-02 -5.3387188911437988e-01 - <_> - - 0 -1 471 -6.7997328005731106e-03 - - 4.2286089062690735e-01 -1.5031290054321289e-01 - <_> - - 0 -1 472 -9.0167991816997528e-02 - - -4.7068008780479431e-01 1.9146749749779701e-02 - <_> - - 0 -1 473 -2.0075060427188873e-02 - - 1.5215730667114258e-01 -3.0286580324172974e-01 - <_> - - 0 -1 474 -1.5905030071735382e-01 - - 4.8262810707092285e-01 -5.5345159024000168e-02 - <_> - - 0 -1 475 1.0053060203790665e-01 - - -3.1768739223480225e-01 1.8654659390449524e-01 - <_> - - 0 -1 476 2.9778450261801481e-03 - - -4.3355960398912430e-02 3.0445128679275513e-01 - <_> - - 0 -1 477 -6.8455971777439117e-03 - - -6.5422862768173218e-01 5.7101141661405563e-02 - <_> - - 0 -1 478 -2.3462900891900063e-02 - - -7.4357628822326660e-01 1.1618070304393768e-02 - <_> - - 0 -1 479 8.4667708724737167e-03 - - -1.1318150162696838e-01 3.4910741448402405e-01 - <_> - - 0 -1 480 2.9225839301943779e-02 - - -3.8572481274604797e-01 2.5479009747505188e-01 - <_> - - 0 -1 481 1.1265130341053009e-01 - - -9.8677836358547211e-02 7.0809727907180786e-01 - <_> - - 0 -1 482 1.0059010237455368e-01 - - 3.9431888610124588e-02 -2.0872689783573151e-01 - <_> - - 0 -1 483 -1.4622969552874565e-02 - - 1.0739020258188248e-01 -4.4337108731269836e-01 - <_> - - 0 -1 484 5.9183081611990929e-03 - - 2.2479789331555367e-02 -4.7095221281051636e-01 - <_> - - 0 -1 485 -1.1137289926409721e-02 - - -5.3821432590484619e-01 7.1250103414058685e-02 - <_> - - 0 -1 486 2.0612619817256927e-01 - - 2.5029089301824570e-03 -5.5134499073028564e-01 - <_> - - 0 -1 487 1.9606389105319977e-02 - - 6.8830899894237518e-02 -5.8748298883438110e-01 - <_> - - 0 -1 488 1.4237780123949051e-02 - - -1.0993599891662598e-01 2.2019009292125702e-01 - <_> - - 0 -1 489 -1.1579900048673153e-02 - - -6.0401040315628052e-01 6.1112940311431885e-02 - <_> - - 0 -1 490 2.7201389893889427e-03 - - -8.6882777512073517e-02 2.1160760521888733e-01 - <_> - - 0 -1 491 4.3311892077326775e-03 - - -8.5722766816616058e-02 4.3251448869705200e-01 - <_> - - 0 -1 492 1.4856910565868020e-03 - - -3.5430859774351120e-02 1.4321969449520111e-01 - <_> - - 0 -1 493 -2.4972909595817327e-03 - - 4.2610010504722595e-01 -1.0974500328302383e-01 - <_> - - 0 -1 494 1.3857520185410976e-02 - - 2.1762149408459663e-02 -4.7706019878387451e-01 - <_> - - 0 -1 495 -2.3594869300723076e-02 - - -4.6244761347770691e-01 7.9718932509422302e-02 - <_> - - 0 -1 496 -3.0481400899589062e-03 - - 1.7503540217876434e-01 -2.9865878820419312e-01 - <_> - - 0 -1 497 -1.3127359561622143e-03 - - -5.5913221836090088e-01 7.1896396577358246e-02 - <_> - - 0 -1 498 -4.3319691903889179e-03 - - -8.0651438236236572e-01 1.5199059620499611e-02 - <_> - - 0 -1 499 -3.6742340307682753e-03 - - 4.2407768964767456e-01 -9.2443756759166718e-02 - <_> - - 0 -1 500 2.5564959272742271e-02 - - 2.9059829190373421e-02 -4.8274171352386475e-01 - <_> - - 0 -1 501 2.8129860758781433e-02 - - -8.0184653401374817e-02 5.2279758453369141e-01 - <_> - - 0 -1 502 8.8039072579704225e-05 - - -7.4344098567962646e-02 9.4045989215373993e-02 - <_> - - 0 -1 503 -4.6100970357656479e-03 - - -5.1046329736709595e-01 7.0259310305118561e-02 - <_> - - 0 -1 504 2.4607360828667879e-03 - - -7.3687382042407990e-02 1.7185910046100616e-01 - <_> - - 0 -1 505 -1.8461809959262609e-03 - - 3.2514411211013794e-01 -1.2517750263214111e-01 - <_> - - 0 -1 506 2.6498539955355227e-04 - - -1.0129640251398087e-01 5.4491110146045685e-02 - <_> - - 0 -1 507 1.3974959962069988e-02 - - 1.0203190147876740e-01 -3.9044409990310669e-01 - <_> - - 0 -1 508 3.3575310371816158e-03 - - -6.4226530492305756e-02 5.4202359169721603e-02 - <_> - - 0 -1 509 7.3201949708163738e-03 - - 5.9934031218290329e-02 -6.0588258504867554e-01 - <_> - - 0 -1 510 -1.2428000336512923e-03 - - 1.1665280163288116e-01 -7.2288237512111664e-02 - <_> - - 0 -1 511 -1.8044740427285433e-03 - - 3.4149900078773499e-01 -9.8468907177448273e-02 - <_> - - 0 -1 512 -4.8408531583845615e-03 - - -5.3094178438186646e-01 3.1446449458599091e-02 - <_> - - 0 -1 513 4.5861881226301193e-03 - - -1.6896879673004150e-01 1.9897870719432831e-01 - <_> - - 0 -1 514 1.3223010115325451e-02 - - 2.6502050459384918e-02 -6.1782538890838623e-01 - <_> - - 0 -1 515 -1.3310019858181477e-03 - - -3.7018761038780212e-01 8.9922286570072174e-02 - <_> - - 0 -1 516 -1.4923400012776256e-03 - - -3.2771658897399902e-01 6.3753470778465271e-02 - <_> - - 0 -1 517 2.3128539323806763e-03 - - 5.8098889887332916e-02 -5.7217907905578613e-01 - <_> - - 0 -1 518 -3.9470911026000977e-02 - - -5.9376251697540283e-01 2.4938920978456736e-03 - <_> - - 0 -1 519 1.1061299592256546e-02 - - -9.7631797194480896e-02 3.4335118532180786e-01 - <_> - - 0 -1 520 1.7588209593668580e-03 - - -3.3723760396242142e-02 1.8667000532150269e-01 - <_> - 53 - -1.3580759763717651e+00 - - <_> - - 0 -1 521 -4.3175318278372288e-03 - - 2.6701891422271729e-01 -3.5374870896339417e-01 - <_> - - 0 -1 522 1.3007350265979767e-02 - - 8.7024876847863197e-03 -7.5992470979690552e-01 - <_> - - 0 -1 523 4.8762829974293709e-03 - - -2.0284099876880646e-01 4.1433459520339966e-01 - <_> - - 0 -1 524 -1.0705440305173397e-02 - - 2.0144259929656982e-01 -2.9292601346969604e-01 - <_> - - 0 -1 525 -4.4717481359839439e-03 - - 2.9785239696502686e-01 -2.1515479683876038e-01 - <_> - - 0 -1 526 -1.0971710085868835e-01 - - -9.0043932199478149e-01 4.1688669472932816e-02 - <_> - - 0 -1 527 2.4193130433559418e-02 - - -1.7109879851341248e-01 3.1211599707603455e-01 - <_> - - 0 -1 528 2.4174679070711136e-02 - - 2.8407519683241844e-02 -5.3422790765762329e-01 - <_> - - 0 -1 529 2.1222220733761787e-02 - - -1.1979670077562332e-01 4.4222798943519592e-01 - <_> - - 0 -1 530 2.6180870831012726e-02 - - -5.3708368539810181e-01 8.5554197430610657e-02 - <_> - - 0 -1 531 -4.6309800818562508e-03 - - -6.3450610637664795e-01 7.8415229916572571e-02 - <_> - - 0 -1 532 -6.1208908446133137e-03 - - -5.8184450864791870e-01 5.6262150406837463e-02 - <_> - - 0 -1 533 2.4345550686120987e-02 - - -8.2362763583660126e-02 5.2085632085800171e-01 - <_> - - 0 -1 534 -1.0590479709208012e-02 - - -5.8450412750244141e-01 3.7550948560237885e-02 - <_> - - 0 -1 535 -8.4336008876562119e-03 - - -7.2815698385238647e-01 4.3281048536300659e-02 - <_> - - 0 -1 536 2.5999199599027634e-02 - - 2.3103030398488045e-02 -4.7821858525276184e-01 - <_> - - 0 -1 537 2.5073610246181488e-02 - - -1.0790230333805084e-01 3.5499471426010132e-01 - <_> - - 0 -1 538 2.9070028662681580e-01 - - 6.3703400082886219e-03 -8.6412417888641357e-01 - <_> - - 0 -1 539 1.7590269446372986e-01 - - -2.5589939951896667e-01 1.6987270116806030e-01 - <_> - - 0 -1 540 -3.2584410160779953e-02 - - -6.2721168994903564e-01 1.8344789743423462e-02 - <_> - - 0 -1 541 -4.1382450610399246e-02 - - 5.4475349187850952e-01 -1.0436189919710159e-01 - <_> - - 0 -1 542 -8.6197769269347191e-03 - - 1.4069239795207977e-01 -4.0490731596946716e-02 - <_> - - 0 -1 543 2.0080020185559988e-03 - - 9.3814283609390259e-02 -4.5978298783302307e-01 - <_> - - 0 -1 544 1.1478760279715061e-02 - - -2.3005740344524384e-01 1.8548269569873810e-01 - <_> - - 0 -1 545 -9.1993194073438644e-03 - - 4.3196168541908264e-01 -8.4990806877613068e-02 - <_> - - 0 -1 546 3.2873731106519699e-04 - - -3.2470309734344482e-01 1.2502589821815491e-01 - <_> - - 0 -1 547 1.6286820173263550e-02 - - -1.6808439791202545e-01 2.0208799839019775e-01 - <_> - - 0 -1 548 -8.8326708646491170e-04 - - 1.3341540098190308e-01 -8.0567203462123871e-02 - <_> - - 0 -1 549 -2.2098519839346409e-03 - - 3.2481029629707336e-01 -1.1913210153579712e-01 - <_> - - 0 -1 550 3.3911340869963169e-03 - - -6.4360022544860840e-01 9.3070819973945618e-02 - <_> - - 0 -1 551 -2.1501209586858749e-02 - - 1.2166000157594681e-01 -2.8132438659667969e-01 - <_> - - 0 -1 552 1.3594830408692360e-02 - - -7.4954092502593994e-02 1.1320699751377106e-01 - <_> - - 0 -1 553 -5.9626200236380100e-03 - - -6.0876357555389404e-01 5.5802300572395325e-02 - <_> - - 0 -1 554 -7.1367057971656322e-03 - - 1.3753290474414825e-01 -5.4944049566984177e-02 - <_> - - 0 -1 555 3.7937159650027752e-03 - - -9.7331270575523376e-02 3.5290411114692688e-01 - <_> - - 0 -1 556 4.2037001252174377e-01 - - -6.0830309987068176e-02 6.2353998422622681e-01 - <_> - - 0 -1 557 -1.3953109737485647e-03 - - -4.5005550980567932e-01 8.5933342576026917e-02 - <_> - - 0 -1 558 -9.1760727809742093e-04 - - -2.7361738681793213e-01 4.9933131784200668e-02 - <_> - - 0 -1 559 2.6983609423041344e-03 - - -9.6326000988483429e-02 4.4493889808654785e-01 - <_> - - 0 -1 560 1.8104390474036336e-03 - - 5.8886051177978516e-02 -2.8511041402816772e-01 - <_> - - 0 -1 561 -5.2683739922940731e-03 - - 5.0250577926635742e-01 -1.0216759890317917e-01 - <_> - - 0 -1 562 3.4583848901093006e-03 - - 5.8127861469984055e-02 -5.9851872920989990e-01 - <_> - - 0 -1 563 -3.5791560076177120e-03 - - -7.3496657609939575e-01 4.1422609239816666e-02 - <_> - - 0 -1 564 5.1315352320671082e-03 - - -9.3608200550079346e-02 1.7093980312347412e-01 - <_> - - 0 -1 565 -4.2571019381284714e-02 - - 4.8374500870704651e-01 -7.8032270073890686e-02 - <_> - - 0 -1 566 -1.4648390002548695e-02 - - -4.8706358671188354e-01 2.5201629847288132e-02 - <_> - - 0 -1 567 9.3548959121108055e-03 - - 3.9141140878200531e-02 -8.5132300853729248e-01 - <_> - - 0 -1 568 -7.7046807855367661e-03 - - 2.7295690774917603e-01 -1.0840819776058197e-01 - <_> - - 0 -1 569 -6.4468376338481903e-02 - - -8.0510532855987549e-01 4.7053340822458267e-02 - <_> - - 0 -1 570 -7.9486463218927383e-03 - - 3.0840569734573364e-01 -1.3387249410152435e-01 - <_> - - 0 -1 571 -3.9265598170459270e-03 - - 3.6305388808250427e-01 -1.0540190339088440e-01 - <_> - - 0 -1 572 -3.6044888198375702e-02 - - 5.8140981197357178e-01 -2.9684588662348688e-04 - <_> - - 0 -1 573 -7.6920147985219955e-03 - - 3.3190870285034180e-01 -1.0925249755382538e-01 - <_> - 65 - -1.3411600589752197e+00 - - <_> - - 0 -1 574 -4.9766711890697479e-03 - - 3.7934410572052002e-01 -2.4959290027618408e-01 - <_> - - 0 -1 575 -3.4589890390634537e-02 - - -4.4946050643920898e-01 3.9635330438613892e-02 - <_> - - 0 -1 576 1.9461639225482941e-02 - - -2.6357260346412659e-01 2.7247101068496704e-01 - <_> - - 0 -1 577 4.2663760483264923e-02 - - 2.9581360518932343e-02 -3.4751391410827637e-01 - <_> - - 0 -1 578 5.8530770242214203e-02 - - -3.0708679556846619e-01 2.0082889497280121e-01 - <_> - - 0 -1 579 -2.9736598953604698e-03 - - -5.4576981067657471e-01 2.3220159113407135e-02 - <_> - - 0 -1 580 7.7464492060244083e-03 - - -1.4597670733928680e-01 3.5159158706665039e-01 - <_> - - 0 -1 581 7.0320582017302513e-04 - - -3.5477969050407410e-01 1.4947199821472168e-01 - <_> - - 0 -1 582 -1.3183569535613060e-02 - - 4.9795240163803101e-01 -9.5576412975788116e-02 - <_> - - 0 -1 583 1.1360269971191883e-02 - - 4.4859439134597778e-02 -7.7702391147613525e-01 - <_> - - 0 -1 584 -5.3752749226987362e-03 - - -6.0436600446701050e-01 6.3452452421188354e-02 - <_> - - 0 -1 585 2.6277059223502874e-03 - - -5.9781100600957870e-02 1.6431820392608643e-01 - <_> - - 0 -1 586 -1.9063310464844108e-03 - - 3.4500768780708313e-01 -1.1078260093927383e-01 - <_> - - 0 -1 587 -5.5438909679651260e-02 - - 5.3140318393707275e-01 -3.9117269217967987e-02 - <_> - - 0 -1 588 2.2990850731730461e-02 - - -1.1105979979038239e-01 3.4139779210090637e-01 - <_> - - 0 -1 589 2.3013869300484657e-02 - - 1.9403599202632904e-02 -3.0652850866317749e-01 - <_> - - 0 -1 590 -3.2346909865736961e-03 - - 1.8446859717369080e-01 -2.1846550703048706e-01 - <_> - - 0 -1 591 1.9735300447791815e-03 - - -6.4886763691902161e-02 6.2509037554264069e-02 - <_> - - 0 -1 592 -1.0755480267107487e-02 - - 3.5955241322517395e-01 -1.1030949652194977e-01 - <_> - - 0 -1 593 -2.6936439797282219e-02 - - -7.0569419860839844e-01 1.5028079971671104e-02 - <_> - - 0 -1 594 2.8886420652270317e-02 - - 5.0576541572809219e-02 -7.2815430164337158e-01 - <_> - - 0 -1 595 5.7200351729989052e-03 - - -1.0274200141429901e-01 8.0553196370601654e-02 - <_> - - 0 -1 596 -1.7981380224227905e-02 - - -7.0609301328659058e-01 5.8095961809158325e-02 - <_> - - 0 -1 597 1.6353320097550750e-03 - - -9.0820826590061188e-02 1.2195230275392532e-01 - <_> - - 0 -1 598 -1.8810540204867721e-03 - - 3.1368181109428406e-01 -1.1835079640150070e-01 - <_> - - 0 -1 599 -1.6305189579725266e-02 - - -3.4470620751380920e-01 1.0644529946148396e-02 - <_> - - 0 -1 600 -1.6981370281428099e-03 - - 3.6481419205665588e-01 -1.0638120025396347e-01 - <_> - - 0 -1 601 2.1174369379878044e-02 - - 3.1025370582938194e-02 -2.7620419859886169e-01 - <_> - - 0 -1 602 -8.8443253189325333e-03 - - -6.9870138168334961e-01 5.1486968994140625e-02 - <_> - - 0 -1 603 3.6929589696228504e-03 - - -6.5479710698127747e-02 2.2728489711880684e-02 - <_> - - 0 -1 604 1.0892639867961407e-02 - - 6.1733219772577286e-02 -6.7477071285247803e-01 - <_> - - 0 -1 605 -1.2833529710769653e-01 - - 2.1409809589385986e-01 -3.3962771296501160e-02 - <_> - - 0 -1 606 -5.1236700266599655e-02 - - 1.5942020714282990e-01 -2.4341639876365662e-01 - <_> - - 0 -1 607 1.2321960180997849e-01 - - 2.5586610659956932e-02 -4.7473230957984924e-01 - <_> - - 0 -1 608 -1.9274000078439713e-03 - - 1.0943879932165146e-01 -3.3568400144577026e-01 - <_> - - 0 -1 609 -2.0102979615330696e-02 - - -5.1650160551071167e-01 2.9315050691366196e-02 - <_> - - 0 -1 610 1.8281549215316772e-02 - - -6.4036741852760315e-02 6.2557631731033325e-01 - <_> - - 0 -1 611 1.4739660546183586e-03 - - -1.6827440261840820e-01 1.0941269993782043e-01 - <_> - - 0 -1 612 -9.0881707146763802e-03 - - 2.4175269901752472e-01 -1.4523309469223022e-01 - <_> - - 0 -1 613 -4.5073218643665314e-02 - - -7.3592007160186768e-01 5.9004039503633976e-03 - <_> - - 0 -1 614 1.9067279994487762e-02 - - -1.0756839811801910e-01 3.3758550882339478e-01 - <_> - - 0 -1 615 -9.0190932154655457e-02 - - 3.0061250925064087e-01 -4.3286528438329697e-02 - <_> - - 0 -1 616 -2.4107230827212334e-02 - - 1.4867919683456421e-01 -2.2179369628429413e-01 - <_> - - 0 -1 617 4.2285379022359848e-02 - - -2.0657710731029510e-01 2.4372029304504395e-01 - <_> - - 0 -1 618 -1.9224429503083229e-02 - - -4.1109448671340942e-01 8.8076941668987274e-02 - <_> - - 0 -1 619 -1.8713049590587616e-02 - - -5.5512428283691406e-01 -3.5010900319321081e-05 - <_> - - 0 -1 620 -1.1740639805793762e-02 - - -7.4573528766632080e-01 4.6473011374473572e-02 - <_> - - 0 -1 621 3.5142578184604645e-02 - - 2.7216039597988129e-03 -4.9953749775886536e-01 - <_> - - 0 -1 622 -6.6481479443609715e-03 - - 1.9559350609779358e-01 -1.6296459734439850e-01 - <_> - - 0 -1 623 7.3291230946779251e-03 - - -5.7543341070413589e-02 8.1424511969089508e-02 - <_> - - 0 -1 624 -5.4579051211476326e-03 - - -5.4347038269042969e-01 5.7771220803260803e-02 - <_> - - 0 -1 625 1.0465289960848168e-04 - - -1.1724419891834259e-01 1.3367609679698944e-01 - <_> - - 0 -1 626 -1.7040430102497339e-03 - - 3.2203149795532227e-01 -1.0900110006332397e-01 - <_> - - 0 -1 627 -7.5647421181201935e-03 - - 4.4239428639411926e-01 -6.8382248282432556e-02 - <_> - - 0 -1 628 8.0183129757642746e-03 - - -1.5239569544792175e-01 2.4483230710029602e-01 - <_> - - 0 -1 629 -1.0649990290403366e-02 - - -6.2405461072921753e-01 2.1711019799113274e-02 - <_> - - 0 -1 630 -1.4240309828892350e-03 - - 8.9519590139389038e-02 -3.5850891470909119e-01 - <_> - - 0 -1 631 5.9712692163884640e-03 - - -4.6914869546890259e-01 5.2607439458370209e-02 - <_> - - 0 -1 632 1.6963120549917221e-02 - - -6.1023771762847900e-02 5.7392549514770508e-01 - <_> - - 0 -1 633 7.1414969861507416e-03 - - 2.8966020792722702e-02 -3.2176148891448975e-01 - <_> - - 0 -1 634 -9.5924977213144302e-03 - - -7.2410070896148682e-01 4.0414128452539444e-02 - <_> - - 0 -1 635 -4.1343858465552330e-03 - - -6.6965389251708984e-01 3.3574569970369339e-02 - <_> - - 0 -1 636 -4.4302479363977909e-03 - - -6.3991087675094604e-01 3.9288960397243500e-02 - <_> - - 0 -1 637 -2.6460499502718449e-03 - - 1.0181919671595097e-02 -1.8428249657154083e-01 - <_> - - 0 -1 638 -3.3010810613632202e-02 - - -6.4822387695312500e-01 4.6115010976791382e-02 - - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 0 0 12 16 -1. - <_> - 0 8 12 8 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 4 12 8 8 -1. - <_> - 4 12 4 8 2. - <_> - - <_> - 0 12 8 8 -1. - <_> - 4 12 4 8 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 3 4 6 12 -1. - <_> - 3 7 6 6 2. - <_> - - <_> - 8 0 4 18 -1. - <_> - 8 0 2 18 2. - <_> - - <_> - 0 0 4 18 -1. - <_> - 2 0 2 18 2. - <_> - - <_> - 1 0 10 16 -1. - <_> - 1 8 10 8 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 8 3 2 4 -1. - <_> - 7 4 2 2 2. - 1 - <_> - - <_> - 3 3 4 6 -1. - <_> - 3 5 4 2 3. - <_> - - <_> - 0 0 12 12 -1. - <_> - 0 6 12 6 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 8 3 1 8 -1. - <_> - 6 5 1 4 2. - 1 - <_> - - <_> - 2 0 8 1 -1. - <_> - 6 0 4 1 2. - <_> - - <_> - 11 0 1 8 -1. - <_> - 9 2 1 4 2. - 1 - <_> - - <_> - 4 3 8 1 -1. - <_> - 6 5 4 1 2. - 1 - <_> - - <_> - 8 4 4 13 -1. - <_> - 8 4 2 13 2. - <_> - - <_> - 3 0 1 8 -1. - <_> - 3 4 1 4 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 6 11 1 6 -1. - <_> - 6 11 1 3 2. - 1 - <_> - - <_> - 8 0 4 17 -1. - <_> - 8 0 2 17 2. - <_> - - <_> - 0 0 4 17 -1. - <_> - 2 0 2 17 2. - <_> - - <_> - 0 12 12 8 -1. - <_> - 0 14 12 4 2. - <_> - - <_> - 2 7 6 2 -1. - <_> - 5 7 3 2 2. - <_> - - <_> - 3 0 7 16 -1. - <_> - 3 8 7 8 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 3 8 6 8 -1. - <_> - 3 12 6 4 2. - <_> - - <_> - 1 7 8 12 -1. - <_> - 1 7 4 6 2. - <_> - 5 13 4 6 2. - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 5 2 1 2. - 1 - <_> - - <_> - 5 3 1 6 -1. - <_> - 5 5 1 2 3. - <_> - - <_> - 10 11 2 7 -1. - <_> - 10 11 1 7 2. - 1 - <_> - - <_> - 2 11 7 2 -1. - <_> - 2 11 7 1 2. - 1 - <_> - - <_> - 2 16 10 4 -1. - <_> - 2 16 5 4 2. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 9 7 3 3 -1. - <_> - 9 8 3 1 3. - <_> - - <_> - 6 4 4 3 -1. - <_> - 7 5 2 3 2. - 1 - <_> - - <_> - 8 4 4 3 -1. - <_> - 8 5 4 1 3. - <_> - - <_> - 4 11 5 4 -1. - <_> - 4 11 5 2 2. - 1 - <_> - - <_> - 7 4 2 4 -1. - <_> - 7 4 2 2 2. - 1 - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 2 2. - 1 - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 2 2. - 1 - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 0 7 12 4 -1. - <_> - 3 7 6 4 2. - <_> - - <_> - 0 16 1 2 -1. - <_> - 0 17 1 1 2. - <_> - - <_> - 3 16 6 4 -1. - <_> - 3 18 6 2 2. - <_> - - <_> - 0 16 10 4 -1. - <_> - 5 16 5 4 2. - <_> - - <_> - 8 6 4 12 -1. - <_> - 8 6 2 12 2. - <_> - - <_> - 0 5 4 11 -1. - <_> - 2 5 2 11 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 1 7 8 1 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 3 3 6 12 -1. - <_> - 3 7 6 4 3. - <_> - - <_> - 1 0 10 1 -1. - <_> - 1 0 5 1 2. - <_> - - <_> - 6 7 6 6 -1. - <_> - 4 9 6 2 3. - 1 - <_> - - <_> - 7 2 1 8 -1. - <_> - 7 4 1 4 2. - <_> - - <_> - 2 2 8 4 -1. - <_> - 2 4 8 2 2. - <_> - - <_> - 0 7 12 7 -1. - <_> - 3 7 6 7 2. - <_> - - <_> - 3 16 6 4 -1. - <_> - 3 18 6 2 2. - <_> - - <_> - 10 2 1 18 -1. - <_> - 10 11 1 9 2. - <_> - - <_> - 1 4 1 16 -1. - <_> - 1 12 1 8 2. - <_> - - <_> - 4 0 4 18 -1. - <_> - 4 9 4 9 2. - <_> - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 7 2 1 8 -1. - <_> - 7 4 1 4 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 5 2 2 3. - 1 - <_> - - <_> - 7 11 2 6 -1. - <_> - 7 11 2 3 2. - 1 - <_> - - <_> - 4 8 6 4 -1. - <_> - 6 10 2 4 3. - 1 - <_> - - <_> - 2 0 8 2 -1. - <_> - 2 1 8 1 2. - <_> - - <_> - 0 3 3 7 -1. - <_> - 1 3 1 7 3. - <_> - - <_> - 8 1 4 8 -1. - <_> - 8 5 4 4 2. - <_> - - <_> - 0 16 12 4 -1. - <_> - 0 17 12 2 2. - <_> - - <_> - 8 1 3 8 -1. - <_> - 8 5 3 4 2. - <_> - - <_> - 3 1 1 8 -1. - <_> - 3 5 1 4 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 6 2 1 4 2. - 1 - <_> - - <_> - 4 1 2 7 -1. - <_> - 5 1 1 7 2. - <_> - - <_> - 9 6 3 5 -1. - <_> - 10 6 1 5 3. - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 15 12 2 3. - <_> - - <_> - 0 0 12 10 -1. - <_> - 6 0 6 5 2. - <_> - 0 5 6 5 2. - <_> - - <_> - 0 4 3 7 -1. - <_> - 1 4 1 7 3. - <_> - - <_> - 2 2 8 2 -1. - <_> - 2 3 8 1 2. - <_> - - <_> - 5 1 1 6 -1. - <_> - 5 3 1 2 3. - <_> - - <_> - 7 5 4 7 -1. - <_> - 7 5 2 7 2. - 1 - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 2 10 8 10 -1. - <_> - 6 10 4 5 2. - <_> - 2 15 4 5 2. - <_> - - <_> - 3 0 2 20 -1. - <_> - 3 5 2 10 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 1 5 7 6 -1. - <_> - 1 7 7 2 3. - <_> - - <_> - 0 0 12 14 -1. - <_> - 0 7 12 7 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 10 10 2 4 -1. - <_> - 10 10 2 2 2. - 1 - <_> - - <_> - 3 4 2 1 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 0 10 2 -1. - <_> - 0 1 10 1 2. - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 1 7 2 3 -1. - <_> - 1 8 2 1 3. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 2 1 2. - 1 - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 0 0 4 16 -1. - <_> - 2 0 2 16 2. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 6 11 6 9 -1. - <_> - 6 11 3 9 2. - <_> - - <_> - 0 11 6 9 -1. - <_> - 3 11 3 9 2. - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 3 11 5 3 -1. - <_> - 2 12 5 1 3. - 1 - <_> - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 7 1 1 3. - 1 - <_> - - <_> - 7 9 3 2 -1. - <_> - 7 10 3 1 2. - <_> - - <_> - 1 18 1 2 -1. - <_> - 1 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 1 18 1 2 -1. - <_> - 1 19 1 1 2. - <_> - - <_> - 7 9 3 2 -1. - <_> - 7 10 3 1 2. - <_> - - <_> - 2 9 3 2 -1. - <_> - 2 10 3 1 2. - <_> - - <_> - 8 8 4 3 -1. - <_> - 8 9 4 1 3. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 0 4 8 11 -1. - <_> - 2 4 4 11 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 1 0 2 3 -1. - <_> - 1 1 2 1 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 10 12 2 6 -1. - <_> - 10 12 1 6 2. - 1 - <_> - - <_> - 2 12 6 2 -1. - <_> - 2 12 6 1 2. - 1 - <_> - - <_> - 4 14 8 5 -1. - <_> - 4 14 4 5 2. - <_> - - <_> - 0 15 8 3 -1. - <_> - 4 15 4 3 2. - <_> - - <_> - 6 7 6 6 -1. - <_> - 8 9 2 6 3. - 1 - <_> - - <_> - 6 7 6 6 -1. - <_> - 4 9 6 2 3. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 8 15 2 3 -1. - <_> - 7 16 2 1 3. - 1 - <_> - - <_> - 4 15 3 2 -1. - <_> - 5 16 1 2 3. - 1 - <_> - - <_> - 9 14 3 3 -1. - <_> - 8 15 3 1 3. - 1 - <_> - - <_> - 3 12 5 3 -1. - <_> - 2 13 5 1 3. - 1 - <_> - - <_> - 0 0 12 2 -1. - <_> - 3 0 6 2 2. - <_> - - <_> - 0 9 3 4 -1. - <_> - 0 10 3 2 2. - <_> - - <_> - 8 10 4 6 -1. - <_> - 8 12 4 2 3. - <_> - - <_> - 0 10 4 6 -1. - <_> - 0 12 4 2 3. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 2 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 0 5 3 2 -1. - <_> - 0 6 3 1 2. - <_> - - <_> - 8 14 2 3 -1. - <_> - 7 15 2 1 3. - 1 - <_> - - <_> - 4 14 3 2 -1. - <_> - 5 15 1 2 3. - 1 - <_> - - <_> - 3 2 3 8 -1. - <_> - 3 4 3 4 2. - <_> - - <_> - 3 7 8 12 -1. - <_> - 7 7 4 6 2. - <_> - 3 13 4 6 2. - <_> - - <_> - 4 6 4 3 -1. - <_> - 4 7 4 1 3. - <_> - - <_> - 3 11 6 8 -1. - <_> - 3 13 6 4 2. - <_> - - <_> - 6 12 2 6 -1. - <_> - 6 12 2 3 2. - 1 - <_> - - <_> - 4 3 8 16 -1. - <_> - 8 3 4 8 2. - <_> - 4 11 4 8 2. - <_> - - <_> - 0 2 8 16 -1. - <_> - 0 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 6 1 1 2. - 1 - <_> - - <_> - 0 1 12 2 -1. - <_> - 4 1 4 2 3. - <_> - - <_> - 9 4 3 5 -1. - <_> - 10 4 1 5 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 1 3 2 6 2. - <_> - - <_> - 11 17 1 2 -1. - <_> - 11 18 1 1 2. - <_> - - <_> - 0 17 1 2 -1. - <_> - 0 18 1 1 2. - <_> - - <_> - 11 17 1 3 -1. - <_> - 11 18 1 1 3. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 8 12 4 3. - <_> - - <_> - 1 5 3 6 -1. - <_> - 2 5 1 6 3. - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 9 10 3 3 -1. - <_> - 8 11 3 1 3. - 1 - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 4 10 6 2 3. - 1 - <_> - - <_> - 6 4 1 6 -1. - <_> - 4 6 1 2 3. - 1 - <_> - - <_> - 6 4 6 1 -1. - <_> - 8 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 2 16 10 4 -1. - <_> - 2 16 5 4 2. - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 7 15 2 2 -1. - <_> - 7 15 2 1 2. - 1 - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 8 1 3 2. - <_> - 1 11 1 3 2. - <_> - - <_> - 10 11 2 4 -1. - <_> - 9 12 2 2 2. - 1 - <_> - - <_> - 0 16 10 4 -1. - <_> - 5 16 5 4 2. - <_> - - <_> - 1 18 10 2 -1. - <_> - 1 19 10 1 2. - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 9 1 2 2. - <_> - 1 11 1 2 2. - <_> - - <_> - 9 12 3 3 -1. - <_> - 8 13 3 1 3. - 1 - <_> - - <_> - 3 12 3 3 -1. - <_> - 4 13 1 3 3. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 9 12 3 3 -1. - <_> - 8 13 3 1 3. - 1 - <_> - - <_> - 3 12 3 3 -1. - <_> - 4 13 1 3 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 5 5 3 2 2. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 7 5 2 3 2. - 1 - <_> - - <_> - 9 18 2 2 -1. - <_> - 9 19 2 1 2. - <_> - - <_> - 1 18 2 2 -1. - <_> - 1 19 2 1 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 0 1 3 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 2 1 4 3 -1. - <_> - 2 2 4 1 3. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 5 2 1 2. - <_> - - <_> - 10 10 2 6 -1. - <_> - 10 10 1 6 2. - <_> - - <_> - 0 12 4 4 -1. - <_> - 2 12 2 4 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 9 12 2 3 -1. - <_> - 8 13 2 1 3. - 1 - <_> - - <_> - 6 12 1 6 -1. - <_> - 6 12 1 3 2. - 1 - <_> - - <_> - 5 16 3 2 -1. - <_> - 5 17 3 1 2. - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 0 0 4 11 -1. - <_> - 2 0 2 11 2. - <_> - - <_> - 10 11 2 3 -1. - <_> - 9 12 2 1 3. - 1 - <_> - - <_> - 2 11 3 2 -1. - <_> - 3 12 1 2 3. - 1 - <_> - - <_> - 9 11 3 5 -1. - <_> - 10 12 1 5 3. - 1 - <_> - - <_> - 3 11 5 3 -1. - <_> - 2 12 5 1 3. - 1 - <_> - - <_> - 8 12 4 2 -1. - <_> - 8 13 4 1 2. - <_> - - <_> - 0 12 4 2 -1. - <_> - 0 13 4 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 0 5 2 8 -1. - <_> - 0 5 1 4 2. - <_> - 1 9 1 4 2. - <_> - - <_> - 8 8 3 4 -1. - <_> - 8 9 3 2 2. - <_> - - <_> - 1 8 3 4 -1. - <_> - 1 9 3 2 2. - <_> - - <_> - 0 0 12 16 -1. - <_> - 0 8 12 8 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - <_> - - <_> - 3 12 5 3 -1. - <_> - 2 13 5 1 3. - 1 - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 10 15 2 3 -1. - <_> - 10 16 2 1 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 3 6 8 12 -1. - <_> - 7 6 4 6 2. - <_> - 3 12 4 6 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 4 6 8 12 -1. - <_> - 8 6 4 6 2. - <_> - 4 12 4 6 2. - <_> - - <_> - 0 5 10 14 -1. - <_> - 0 5 5 7 2. - <_> - 5 12 5 7 2. - <_> - - <_> - 1 2 10 4 -1. - <_> - 1 4 10 2 2. - <_> - - <_> - 0 15 1 2 -1. - <_> - 0 16 1 1 2. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 5 14 2 2 -1. - <_> - 5 14 1 2 2. - 1 - <_> - - <_> - 0 9 12 1 -1. - <_> - 0 9 6 1 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 8 12 4 3 -1. - <_> - 7 13 4 1 3. - 1 - <_> - - <_> - 4 12 3 4 -1. - <_> - 5 13 1 4 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 7 1 2 1 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 3 1 2 1 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 2 7 8 10 -1. - <_> - 2 12 8 5 2. - <_> - - <_> - 0 9 2 10 -1. - <_> - 1 9 1 10 2. - <_> - - <_> - 9 9 3 2 -1. - <_> - 10 9 1 2 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 1 9 1 2 3. - <_> - - <_> - 8 6 4 3 -1. - <_> - 8 7 4 1 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 8 1 3 3. - <_> - - <_> - 0 8 4 12 -1. - <_> - 2 8 2 12 2. - <_> - - <_> - 6 7 1 3 -1. - <_> - 5 8 1 1 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 9 10 3 1 -1. - <_> - 10 10 1 1 3. - <_> - - <_> - 0 10 3 1 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 10 12 2 3 -1. - <_> - 9 13 2 1 3. - 1 - <_> - - <_> - 2 12 3 2 -1. - <_> - 3 13 1 2 3. - 1 - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 3 1 3 1 2. - <_> - - <_> - 1 7 8 12 -1. - <_> - 1 7 4 6 2. - <_> - 5 13 4 6 2. - <_> - - <_> - 7 6 4 1 -1. - <_> - 7 6 2 1 2. - <_> - - <_> - 1 0 10 2 -1. - <_> - 6 0 5 2 2. - <_> - - <_> - 10 2 1 4 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 2 2 4 1 -1. - <_> - 2 2 2 1 2. - 1 - <_> - - <_> - 4 15 8 4 -1. - <_> - 4 15 4 4 2. - <_> - - <_> - 0 14 8 5 -1. - <_> - 4 14 4 5 2. - <_> - - <_> - 8 12 4 5 -1. - <_> - 8 12 2 5 2. - <_> - - <_> - 0 10 4 7 -1. - <_> - 2 10 2 7 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 9 6 3 3 -1. - <_> - 9 7 3 1 3. - <_> - - <_> - 0 6 3 3 -1. - <_> - 0 7 3 1 3. - <_> - - <_> - 8 13 4 2 -1. - <_> - 8 14 4 1 2. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 8 1 3 3. - <_> - - <_> - 0 12 5 4 -1. - <_> - 0 14 5 2 2. - <_> - - <_> - 6 16 4 2 -1. - <_> - 8 16 2 1 2. - <_> - 6 17 2 1 2. - <_> - - <_> - 1 12 2 2 -1. - <_> - 1 12 1 1 2. - <_> - 2 13 1 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 0 16 1 2 -1. - <_> - 0 17 1 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 8 13 2 3 -1. - <_> - 7 14 2 1 3. - 1 - <_> - - <_> - 4 13 3 2 -1. - <_> - 5 14 1 2 3. - 1 - <_> - - <_> - 9 10 2 4 -1. - <_> - 10 10 1 2 2. - <_> - 9 12 1 2 2. - <_> - - <_> - 1 10 2 4 -1. - <_> - 1 10 1 2 2. - <_> - 2 12 1 2 2. - <_> - - <_> - 7 16 2 2 -1. - <_> - 7 16 2 1 2. - 1 - <_> - - <_> - 1 8 3 3 -1. - <_> - 2 8 1 3 3. - <_> - - <_> - 8 10 3 3 -1. - <_> - 8 11 3 1 3. - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 0 1 3 3. - <_> - - <_> - 5 8 4 6 -1. - <_> - 5 11 4 3 2. - <_> - - <_> - 6 5 6 1 -1. - <_> - 6 5 3 1 2. - 1 - <_> - - <_> - 7 15 2 2 -1. - <_> - 7 15 2 1 2. - 1 - <_> - - <_> - 5 15 2 2 -1. - <_> - 5 15 1 2 2. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 9 4 3 1 3. - <_> - - <_> - 4 4 3 4 -1. - <_> - 4 5 3 2 2. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 4 6 8 12 -1. - <_> - 8 6 4 6 2. - <_> - 4 12 4 6 2. - <_> - - <_> - 1 6 8 12 -1. - <_> - 1 6 4 6 2. - <_> - 5 12 4 6 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 8 10 4 3 -1. - <_> - 7 11 4 1 3. - 1 - <_> - - <_> - 0 0 12 14 -1. - <_> - 0 7 12 7 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 0 17 2 3 -1. - <_> - 0 18 2 1 3. - <_> - - <_> - 10 8 2 6 -1. - <_> - 11 8 1 3 2. - <_> - 10 11 1 3 2. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 8 1 3 2. - <_> - 1 11 1 3 2. - <_> - - <_> - 10 17 2 3 -1. - <_> - 10 18 2 1 3. - <_> - - <_> - 0 17 2 3 -1. - <_> - 0 18 2 1 3. - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 8 1 3 3. - <_> - - <_> - 0 6 3 14 -1. - <_> - 0 13 3 7 2. - <_> - - <_> - 9 8 3 3 -1. - <_> - 10 8 1 3 3. - <_> - - <_> - 0 8 3 3 -1. - <_> - 1 8 1 3 3. - <_> - - <_> - 9 9 3 3 -1. - <_> - 8 10 3 1 3. - 1 - <_> - - <_> - 3 9 3 3 -1. - <_> - 4 10 1 3 3. - 1 - <_> - - <_> - 8 7 4 1 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 0 7 4 1 -1. - <_> - 2 7 2 1 2. - <_> - - <_> - 0 0 12 7 -1. - <_> - 0 0 6 7 2. - <_> - - <_> - 3 12 4 3 -1. - <_> - 2 13 4 1 3. - 1 - <_> - - <_> - 8 10 3 3 -1. - <_> - 8 11 3 1 3. - <_> - - <_> - 1 10 3 3 -1. - <_> - 1 11 3 1 3. - <_> - - <_> - 6 13 1 6 -1. - <_> - 4 15 1 2 3. - 1 - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 1 8 3 4 -1. - <_> - 1 9 3 2 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - <_> - - <_> - 0 17 2 1 -1. - <_> - 1 17 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 9 10 3 2 -1. - <_> - 10 10 1 2 3. - <_> - - <_> - 0 10 3 2 -1. - <_> - 1 10 1 2 3. - <_> - - <_> - 9 7 3 3 -1. - <_> - 9 8 3 1 3. - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 2 9 3 4 -1. - <_> - 2 10 3 2 2. - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 7 1 1 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 0 1 3 -1. - <_> - 2 1 1 1 3. - <_> - - <_> - 9 11 1 8 -1. - <_> - 9 15 1 4 2. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 10 11 2 5 -1. - <_> - 10 11 1 5 2. - 1 - <_> - - <_> - 2 11 1 8 -1. - <_> - 2 15 1 4 2. - <_> - - <_> - 6 12 6 7 -1. - <_> - 6 12 3 7 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 6 12 6 7 -1. - <_> - 6 12 3 7 2. - <_> - - <_> - 0 12 6 7 -1. - <_> - 3 12 3 7 2. - <_> - - <_> - 8 2 1 8 -1. - <_> - 6 4 1 4 2. - 1 - <_> - - <_> - 4 2 8 1 -1. - <_> - 6 4 4 1 2. - 1 - <_> - - <_> - 9 10 3 3 -1. - <_> - 8 11 3 1 3. - 1 - <_> - - <_> - 3 10 3 3 -1. - <_> - 4 11 1 3 3. - 1 - <_> - - <_> - 2 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 3 4 6 12 -1. - <_> - 3 8 6 4 3. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 8 11 4 6 -1. - <_> - 8 13 4 2 3. - <_> - - <_> - 0 11 4 6 -1. - <_> - 0 13 4 2 3. - <_> - - <_> - 3 17 8 2 -1. - <_> - 7 17 4 1 2. - <_> - 3 18 4 1 2. - <_> - - <_> - 0 14 10 5 -1. - <_> - 5 14 5 5 2. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 9 1 3 6 -1. - <_> - 10 2 1 6 3. - 1 - <_> - - <_> - 0 0 12 18 -1. - <_> - 0 9 12 9 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 6 1 1 2. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 9 1 3 6 -1. - <_> - 10 2 1 6 3. - 1 - <_> - - <_> - 3 1 6 3 -1. - <_> - 2 2 6 1 3. - 1 - <_> - - <_> - 9 11 2 3 -1. - <_> - 8 12 2 1 3. - 1 - <_> - - <_> - 3 11 3 2 -1. - <_> - 4 12 1 2 3. - 1 - <_> - - <_> - 8 5 4 4 -1. - <_> - 8 6 4 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 5 17 3 3 -1. - <_> - 5 18 3 1 3. - <_> - - <_> - 4 15 1 3 -1. - <_> - 4 16 1 1 3. - <_> - - <_> - 10 10 2 4 -1. - <_> - 11 10 1 2 2. - <_> - 10 12 1 2 2. - <_> - - <_> - 0 10 2 4 -1. - <_> - 0 10 1 2 2. - <_> - 1 12 1 2 2. - <_> - - <_> - 9 4 3 6 -1. - <_> - 10 4 1 6 3. - <_> - - <_> - 0 4 3 6 -1. - <_> - 1 4 1 6 3. - <_> - - <_> - 10 7 2 6 -1. - <_> - 11 7 1 3 2. - <_> - 10 10 1 3 2. - <_> - - <_> - 0 7 2 6 -1. - <_> - 0 7 1 3 2. - <_> - 1 10 1 3 2. - <_> - - <_> - 10 8 2 3 -1. - <_> - 10 9 2 1 3. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 4 6 4 3 -1. - <_> - 4 7 4 1 3. - <_> - - <_> - 0 8 10 10 -1. - <_> - 0 8 5 5 2. - <_> - 5 13 5 5 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 1 6 4 1 -1. - <_> - 3 6 2 1 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 19 12 1 2. - <_> - - <_> - 3 18 1 2 -1. - <_> - 3 19 1 1 2. - <_> - - <_> - 10 10 2 6 -1. - <_> - 10 10 1 6 2. - <_> - - <_> - 0 10 2 6 -1. - <_> - 1 10 1 6 2. - <_> - - <_> - 8 0 1 8 -1. - <_> - 8 0 1 4 2. - 1 - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 0 8 12 2 -1. - <_> - 0 8 6 2 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - <_> - - <_> - 6 0 3 3 -1. - <_> - 7 0 1 3 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 0 1 3 3. - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 9 8 3 3 -1. - <_> - 9 9 3 1 3. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 6 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 6 2 1 3. - <_> - - <_> - 1 6 3 3 -1. - <_> - 1 7 3 1 3. - <_> - - <_> - 8 1 1 8 -1. - <_> - 6 3 1 4 2. - 1 - <_> - - <_> - 4 1 8 1 -1. - <_> - 6 3 4 1 2. - 1 - <_> - - <_> - 8 13 3 4 -1. - <_> - 7 14 3 2 2. - 1 - <_> - - <_> - 5 5 1 8 -1. - <_> - 5 7 1 4 2. - <_> - - <_> - 9 11 3 3 -1. - <_> - 8 12 3 1 3. - 1 - <_> - - <_> - 4 13 4 3 -1. - <_> - 5 14 2 3 2. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 5 1 4 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 5 1 4 3. - 1 - <_> - - <_> - 4 4 4 3 -1. - <_> - 3 5 4 1 3. - 1 - <_> - - <_> - 6 8 4 2 -1. - <_> - 6 9 4 1 2. - <_> - - <_> - 2 8 5 2 -1. - <_> - 2 9 5 1 2. - <_> - - <_> - 6 13 6 4 -1. - <_> - 6 15 6 2 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 11 1 1 3 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 1 1 3 1 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 8 4 3 7 -1. - <_> - 9 4 1 7 3. - <_> - - <_> - 1 4 3 7 -1. - <_> - 2 4 1 7 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 1 6 3 4 -1. - <_> - 2 6 1 4 3. - <_> - - <_> - 10 0 2 3 -1. - <_> - 10 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 10 5 1 3 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 6 1 6 9 -1. - <_> - 6 4 6 3 3. - <_> - - <_> - 4 1 2 9 -1. - <_> - 4 4 2 3 3. - <_> - - <_> - 4 1 8 18 -1. - <_> - 8 1 4 9 2. - <_> - 4 10 4 9 2. - <_> - - <_> - 4 14 4 6 -1. - <_> - 4 17 4 3 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 5 0 4 17 -1. - <_> - 5 0 2 17 2. - <_> - - <_> - 3 0 4 17 -1. - <_> - 5 0 2 17 2. - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 0 8 12 12 -1. - <_> - 6 8 6 12 2. - <_> - - <_> - 7 12 2 2 -1. - <_> - 8 12 1 1 2. - <_> - 7 13 1 1 2. - <_> - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 1 2 1 18 -1. - <_> - 1 11 1 9 2. - <_> - - <_> - 6 5 4 5 -1. - <_> - 6 5 2 5 2. - 1 - <_> - - <_> - 1 7 8 2 -1. - <_> - 5 7 4 2 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 8 9 2 8 -1. - <_> - 8 9 2 4 2. - 1 - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 2 2. - 1 - <_> - - <_> - 9 11 2 3 -1. - <_> - 8 12 2 1 3. - 1 - <_> - - <_> - 3 11 3 2 -1. - <_> - 4 12 1 2 3. - 1 - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 7 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 7 14 1 1 2. - <_> - - <_> - 3 13 2 2 -1. - <_> - 3 13 1 1 2. - <_> - 4 14 1 1 2. - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 3 2 7 3 -1. - <_> - 2 3 7 1 3. - 1 - <_> - - <_> - 10 18 2 2 -1. - <_> - 10 19 2 1 2. - <_> - - <_> - 0 18 2 2 -1. - <_> - 0 19 2 1 2. - <_> - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 3 1 6 3. - <_> - - <_> - 0 3 3 6 -1. - <_> - 1 3 1 6 3. - <_> - - <_> - 9 10 3 3 -1. - <_> - 9 11 3 1 3. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 9 11 2 2 -1. - <_> - 10 11 1 1 2. - <_> - 9 12 1 1 2. - <_> - - <_> - 1 11 2 2 -1. - <_> - 1 11 1 1 2. - <_> - 2 12 1 1 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 6 12 4 2 -1. - <_> - 6 12 4 1 2. - 1 - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 3 12 3 1 -1. - <_> - 4 13 1 1 3. - 1 - <_> - - <_> - 7 12 2 2 -1. - <_> - 8 12 1 1 2. - <_> - 7 13 1 1 2. - <_> - - <_> - 3 12 2 2 -1. - <_> - 3 12 1 1 2. - <_> - 4 13 1 1 2. - <_> - - <_> - 10 6 1 3 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 11 16 1 4 -1. - <_> - 11 17 1 2 2. - <_> - - <_> - 0 16 1 4 -1. - <_> - 0 17 1 2 2. - <_> - - <_> - 11 16 1 3 -1. - <_> - 11 17 1 1 3. - <_> - - <_> - 0 16 1 3 -1. - <_> - 0 17 1 1 3. - <_> - - <_> - 6 8 2 3 -1. - <_> - 5 9 2 1 3. - 1 - <_> - - <_> - 6 8 3 2 -1. - <_> - 7 9 1 2 3. - 1 - <_> - - <_> - 8 14 2 2 -1. - <_> - 9 14 1 1 2. - <_> - 8 15 1 1 2. - <_> - - <_> - 3 6 5 3 -1. - <_> - 3 7 5 1 3. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 0 1 3 -1. - <_> - 2 1 1 1 3. - <_> - - <_> - 8 5 4 11 -1. - <_> - 8 5 2 11 2. - <_> - - <_> - 1 15 4 2 -1. - <_> - 1 15 2 1 2. - <_> - 3 16 2 1 2. - <_> - - <_> - 7 3 3 10 -1. - <_> - 8 3 1 10 3. - <_> - - <_> - 2 3 3 10 -1. - <_> - 3 3 1 10 3. - <_> - - <_> - 8 13 3 2 -1. - <_> - 9 14 1 2 3. - 1 - <_> - - <_> - 4 13 2 3 -1. - <_> - 3 14 2 1 3. - 1 - <_> - - <_> - 0 1 12 6 -1. - <_> - 0 4 12 3 2. - <_> - - <_> - 1 6 2 4 -1. - <_> - 1 7 2 2 2. - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 0 3 1 2. - <_> - 6 1 3 1 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - <_> - - <_> - 2 0 3 3 -1. - <_> - 3 0 1 3 3. - <_> - - <_> - 6 4 3 3 -1. - <_> - 5 5 3 1 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 4 2 8 16 -1. - <_> - 8 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 0 2 8 16 -1. - <_> - 0 2 4 8 2. - <_> - 4 10 4 8 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 10 9 2 7 -1. - <_> - 10 9 1 7 2. - <_> - - <_> - 3 18 1 2 -1. - <_> - 3 19 1 1 2. - <_> - - <_> - 2 18 8 2 -1. - <_> - 6 18 4 1 2. - <_> - 2 19 4 1 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 4 6 4 1 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 5 4 1 2. - <_> - - <_> - 0 9 2 9 -1. - <_> - 1 9 1 9 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 4 5 8 4 -1. - <_> - 6 7 4 4 2. - 1 - <_> - - <_> - 8 10 3 3 -1. - <_> - 7 11 3 1 3. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 0 1 2 3. - <_> - - <_> - 9 11 3 3 -1. - <_> - 9 12 3 1 3. - <_> - - <_> - 3 14 2 2 -1. - <_> - 3 14 1 1 2. - <_> - 4 15 1 1 2. - <_> - - <_> - 0 13 12 7 -1. - <_> - 0 13 6 7 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 10 5 1 3 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 1 5 1 3 -1. - <_> - 1 6 1 1 3. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 4 2 8 1 -1. - <_> - 4 2 4 1 2. - 1 - <_> - - <_> - 8 8 4 3 -1. - <_> - 8 9 4 1 3. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 4 9 3 9 -1. - <_> - 5 12 1 3 9. - <_> - - <_> - 7 9 3 2 -1. - <_> - 8 9 1 2 3. - <_> - - <_> - 2 9 3 2 -1. - <_> - 3 9 1 2 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 3 6 1 3 -1. - <_> - 2 7 1 1 3. - 1 - <_> - - <_> - 3 2 4 2 -1. - <_> - 3 2 2 1 2. - <_> - 5 3 2 1 2. - <_> - - <_> - 6 3 4 3 -1. - <_> - 5 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 8 0 4 16 -1. - <_> - 8 0 2 16 2. - <_> - - <_> - 0 13 12 4 -1. - <_> - 3 13 6 4 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 3 1 2 1 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 0 4 3 3 -1. - <_> - 0 5 3 1 3. - <_> - - <_> - 8 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 1 2. - <_> - 3 12 1 1 2. - <_> - - <_> - 9 10 1 8 -1. - <_> - 7 12 1 4 2. - 1 - <_> - - <_> - 1 3 3 8 -1. - <_> - 2 3 1 8 3. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 2 15 3 4 -1. - <_> - 2 16 3 2 2. - <_> - - <_> - 8 4 3 6 -1. - <_> - 9 4 1 6 3. - <_> - - <_> - 1 4 3 6 -1. - <_> - 2 4 1 6 3. - <_> - - <_> - 8 12 2 3 -1. - <_> - 7 13 2 1 3. - 1 - <_> - - <_> - 3 10 8 1 -1. - <_> - 5 12 4 1 2. - 1 - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 0 16 6 3 -1. - <_> - 0 17 6 1 3. - <_> - - <_> - 8 12 2 2 -1. - <_> - 9 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 8 13 1 1 3. - 1 - <_> - - <_> - 3 11 2 2 -1. - <_> - 3 11 1 1 2. - <_> - 4 12 1 1 2. - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 3 12 3 1 -1. - <_> - 4 13 1 1 3. - 1 - <_> - - <_> - 9 12 2 3 -1. - <_> - 8 13 2 1 3. - 1 - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 0 14 12 6 -1. - <_> - 0 17 12 3 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 4 5 2 3 -1. - <_> - 5 5 1 3 2. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 4 8 5 2 -1. - <_> - 4 9 5 1 2. - <_> - - <_> - 0 4 3 5 -1. - <_> - 1 4 1 5 3. - <_> - - <_> - 9 2 3 8 -1. - <_> - 10 2 1 8 3. - <_> - - <_> - 0 2 3 8 -1. - <_> - 1 2 1 8 3. - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 6 9 6 5 -1. - <_> - 6 9 3 5 2. - 1 - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 6 1 6 1 -1. - <_> - 8 3 2 1 3. - 1 - <_> - - <_> - 8 12 1 3 -1. - <_> - 7 13 1 1 3. - 1 - <_> - - <_> - 4 12 3 1 -1. - <_> - 5 13 1 1 3. - 1 - <_> - - <_> - 7 2 2 18 -1. - <_> - 7 2 1 18 2. - <_> - - <_> - 3 2 2 18 -1. - <_> - 4 2 1 18 2. - <_> - - <_> - 8 15 1 3 -1. - <_> - 7 16 1 1 3. - 1 - <_> - - <_> - 4 15 3 1 -1. - <_> - 5 16 1 1 3. - 1 - <_> - - <_> - 7 14 2 2 -1. - <_> - 8 14 1 1 2. - <_> - 7 15 1 1 2. - <_> - - <_> - 3 14 2 2 -1. - <_> - 3 14 1 1 2. - <_> - 4 15 1 1 2. - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 6 2 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 2 1 2. - 1 - <_> - - <_> - 11 0 1 12 -1. - <_> - 11 6 1 6 2. - <_> - - <_> - 6 6 4 2 -1. - <_> - 7 7 2 2 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 7 0 1 2 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 0 1 3 3. - <_> - - <_> - 11 4 1 3 -1. - <_> - 11 5 1 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 8 2 1 2. - <_> - - <_> - 9 1 1 6 -1. - <_> - 9 1 1 3 2. - 1 - <_> - - <_> - 3 1 6 1 -1. - <_> - 3 1 3 1 2. - 1 - diff --git a/data/haarcascades/haarcascade_mcs_lefteye.xml b/data/haarcascades/haarcascade_mcs_lefteye.xml deleted file mode 100644 index d745e0593d..0000000000 --- a/data/haarcascades/haarcascade_mcs_lefteye.xml +++ /dev/null @@ -1,19209 +0,0 @@ - - - -BOOST - HAAR - 18 - 12 - - 279 - - 0 - 14 - - <_> - 16 - -1.7205799818038940e+00 - - <_> - - 0 -1 0 -2.2981660068035126e-01 - - 7.4487930536270142e-01 -6.7343497276306152e-01 - <_> - - 0 -1 1 1.5345169603824615e-01 - - -6.0078161954879761e-01 4.4485649466514587e-01 - <_> - - 0 -1 2 -6.0938559472560883e-02 - - 5.6126379966735840e-01 -3.1992331147193909e-01 - <_> - - 0 -1 3 1.0585549898678437e-04 - - -3.6046960949897766e-01 2.6835951209068298e-01 - <_> - - 0 -1 4 -2.3147630691528320e-01 - - 4.6166300773620605e-01 -2.0830430090427399e-01 - <_> - - 0 -1 5 1.7983419820666313e-02 - - 6.3770942389965057e-02 -5.2076548337936401e-01 - <_> - - 0 -1 6 3.9604099583812058e-05 - - -5.2314782142639160e-01 1.9505259394645691e-01 - <_> - - 0 -1 7 4.0414137765765190e-03 - - 1.0874629765748978e-01 -5.9878420829772949e-01 - <_> - - 0 -1 8 -7.6422527432441711e-02 - - 4.4672968983650208e-01 -1.5376919507980347e-01 - <_> - - 0 -1 9 9.0553581714630127e-02 - - -1.1280190199613571e-01 6.2832731008529663e-01 - <_> - - 0 -1 10 4.9092499539256096e-03 - - 1.0375600308179855e-01 -6.8671178817749023e-01 - <_> - - 0 -1 11 3.9859231561422348e-02 - - 5.3353060036897659e-02 -2.4778179824352264e-01 - <_> - - 0 -1 12 -1.4214900322258472e-02 - - -4.9093028903007507e-01 1.4295159280300140e-01 - <_> - - 0 -1 13 -5.9114010073244572e-03 - - 1.6157889366149902e-01 -1.5571700036525726e-01 - <_> - - 0 -1 14 -2.2955809533596039e-01 - - -3.0875959992408752e-01 2.2363129258155823e-01 - <_> - - 0 -1 15 -9.3946291599422693e-05 - - 2.8994649648666382e-01 -2.9955458641052246e-01 - <_> - 21 - -1.7609959840774536e+00 - - <_> - - 0 -1 16 1.2731809914112091e-01 - - -6.5400719642639160e-01 5.6866347789764404e-01 - <_> - - 0 -1 17 -7.4433487653732300e-01 - - 6.8870407342910767e-01 -3.4810429811477661e-01 - <_> - - 0 -1 18 6.2184786656871438e-05 - - -6.4049887657165527e-01 2.2681689262390137e-01 - <_> - - 0 -1 19 -7.6157607138156891e-02 - - 4.0833848714828491e-01 -6.9403909146785736e-02 - <_> - - 0 -1 20 -6.9555312395095825e-02 - - 4.6690088510513306e-01 -2.0247919857501984e-01 - <_> - - 0 -1 21 -1.0931000113487244e-01 - - 5.9584200382232666e-01 -2.1001909673213959e-01 - <_> - - 0 -1 22 3.5818720789393410e-05 - - -4.6520969271659851e-01 2.0896120369434357e-01 - <_> - - 0 -1 23 -8.0066677182912827e-03 - - -6.9932198524475098e-01 9.4288356602191925e-02 - <_> - - 0 -1 24 2.9570680111646652e-02 - - -1.5442650020122528e-01 4.6668368577957153e-01 - <_> - - 0 -1 25 7.4920160695910454e-03 - - 8.8588356971740723e-02 -6.7084282636642456e-01 - <_> - - 0 -1 26 -3.7168670445680618e-02 - - 2.5477749109268188e-01 -2.5164219737052917e-01 - <_> - - 0 -1 27 -1.2057279795408249e-01 - - 4.6008300781250000e-01 -1.1891700327396393e-01 - <_> - - 0 -1 28 -3.7710228934884071e-03 - - -6.1380928754806519e-01 8.6544543504714966e-02 - <_> - - 0 -1 29 3.5496661439538002e-05 - - -1.8688809871673584e-01 1.3584940135478973e-01 - <_> - - 0 -1 30 -1.6192409675568342e-03 - - -5.4013711214065552e-01 9.7694486379623413e-02 - <_> - - 0 -1 31 3.6828289012191817e-05 - - -1.5715110301971436e-01 1.7512370645999908e-01 - <_> - - 0 -1 32 4.0976690797833726e-05 - - -2.2035799920558929e-01 2.4334849417209625e-01 - <_> - - 0 -1 33 -7.0347607135772705e-02 - - 4.3083029985427856e-01 -1.2281300127506256e-01 - <_> - - 0 -1 34 9.4469271600246429e-02 - - -1.2159319967031479e-01 4.4967180490493774e-01 - <_> - - 0 -1 35 -1.1442740447819233e-02 - - -6.5516471862792969e-01 7.4961602687835693e-02 - <_> - - 0 -1 36 -5.3098648786544800e-03 - - -6.5974301099777222e-01 5.8748938143253326e-02 - <_> - 39 - -1.7233569622039795e+00 - - <_> - - 0 -1 37 2.4442139267921448e-01 - - -6.0776811838150024e-01 5.2004802227020264e-01 - <_> - - 0 -1 38 -6.6421680152416229e-02 - - 2.1783240139484406e-01 -2.1949340403079987e-01 - <_> - - 0 -1 39 3.8141721487045288e-01 - - 1.3418859907687875e-06 -4.1691070312500000e+04 - <_> - - 0 -1 40 -1.5484209358692169e-01 - - 1.4261369407176971e-01 -1.1163700371980667e-02 - <_> - - 0 -1 41 -7.9247541725635529e-02 - - 4.4047749042510986e-01 -3.5259070992469788e-01 - <_> - - 0 -1 42 -6.3354419544339180e-03 - - -6.7467969655990601e-01 1.1945989727973938e-01 - <_> - - 0 -1 43 5.4770321585237980e-03 - - -5.2936810255050659e-01 1.6708360612392426e-01 - <_> - - 0 -1 44 -1.8857400119304657e-01 - - 2.9692548513412476e-01 -2.7923458814620972e-01 - <_> - - 0 -1 45 -3.4621960949152708e-03 - - -5.9800887107849121e-01 1.0177610069513321e-01 - <_> - - 0 -1 46 3.3069919794797897e-02 - - -5.9684868901968002e-02 4.0516778826713562e-01 - <_> - - 0 -1 47 -3.0843779444694519e-02 - - 4.9073100090026855e-01 -1.1531980335712433e-01 - <_> - - 0 -1 48 -2.5913240388035774e-02 - - -4.9610319733619690e-01 4.5165680348873138e-02 - <_> - - 0 -1 49 -2.1639840677380562e-02 - - -7.2788608074188232e-01 5.8623861521482468e-02 - <_> - - 0 -1 50 4.8874882049858570e-03 - - 7.6803073287010193e-02 -5.8085972070693970e-01 - <_> - - 0 -1 51 -8.4114465862512589e-03 - - -4.4291898608207703e-01 9.5190443098545074e-02 - <_> - - 0 -1 52 -1.3218490406870842e-02 - - 3.1048420071601868e-01 -1.3905000686645508e-01 - <_> - - 0 -1 53 -3.2631229609251022e-02 - - -5.9402441978454590e-01 6.6915199160575867e-02 - <_> - - 0 -1 54 -4.8389490693807602e-03 - - 3.8958698511123657e-01 -7.7219173312187195e-02 - <_> - - 0 -1 55 -2.3557199165225029e-02 - - 3.6475318670272827e-01 -1.0228029638528824e-01 - <_> - - 0 -1 56 -1.6823610290884972e-02 - - -7.0283937454223633e-01 6.9169528782367706e-02 - <_> - - 0 -1 57 -1.2528980150818825e-02 - - -5.9154832363128662e-01 5.8638110756874084e-02 - <_> - - 0 -1 58 1.2736950069665909e-02 - - -7.8018456697463989e-02 4.6064260601997375e-01 - <_> - - 0 -1 59 -2.7947379276156425e-02 - - 2.6103180646896362e-01 -1.4536960422992706e-01 - <_> - - 0 -1 60 1.9469179213047028e-02 - - -1.0853669792413712e-01 2.9472211003303528e-01 - <_> - - 0 -1 61 1.0143560357391834e-02 - - 8.1535376608371735e-02 -3.9271530508995056e-01 - <_> - - 0 -1 62 1.6037160158157349e-01 - - -4.3566469103097916e-02 4.4445919990539551e-01 - <_> - - 0 -1 63 -3.1675389036536217e-03 - - 3.6521100997924805e-01 -8.6025007069110870e-02 - <_> - - 0 -1 64 1.2811190448701382e-02 - - 7.0604227483272552e-02 -5.2132707834243774e-01 - <_> - - 0 -1 65 -1.8773640692234039e-01 - - -5.3620547056198120e-01 4.9741908907890320e-02 - <_> - - 0 -1 66 -1.5811489894986153e-02 - - -5.6798452138900757e-01 4.5133739709854126e-02 - <_> - - 0 -1 67 8.5352314636111259e-03 - - 6.0936510562896729e-02 -4.3938818573951721e-01 - <_> - - 0 -1 68 -4.6653081662952900e-03 - - 5.1755487918853760e-01 -5.9410251677036285e-02 - <_> - - 0 -1 69 -7.9853478819131851e-03 - - -4.8022431135177612e-01 6.3563920557498932e-02 - <_> - - 0 -1 70 -1.5439819544553757e-02 - - 3.1821200251579285e-01 -1.5712760388851166e-01 - <_> - - 0 -1 71 2.2927390411496162e-02 - - 6.2798082828521729e-02 -5.4242467880249023e-01 - <_> - - 0 -1 72 -2.7168919332325459e-03 - - 2.7621048688888550e-01 -6.9310307502746582e-02 - <_> - - 0 -1 73 3.0373970512300730e-03 - - -7.2820127010345459e-02 4.1934990882873535e-01 - <_> - - 0 -1 74 9.4063878059387207e-03 - - 5.5666621774435043e-02 -4.3957179784774780e-01 - <_> - - 0 -1 75 -1.5984019264578819e-02 - - -6.0156708955764771e-01 4.4137120246887207e-02 - <_> - 47 - -1.7742869853973389e+00 - - <_> - - 0 -1 76 -1.0876799821853638e+00 - - 6.2948262691497803e-01 -4.1793939471244812e-01 - <_> - - 0 -1 77 1.1644390225410461e-01 - - -4.7279620170593262e-01 2.3814930021762848e-01 - <_> - - 0 -1 78 -1.6084710136055946e-02 - - 3.3747270703315735e-01 -2.7527529001235962e-01 - <_> - - 0 -1 79 -1.9196059554815292e-02 - - -5.5098891258239746e-01 5.5942028760910034e-02 - <_> - - 0 -1 80 -3.4257121384143829e-02 - - 3.0613619089126587e-01 -2.4234640598297119e-01 - <_> - - 0 -1 81 1.0649270378053188e-02 - - 9.3416690826416016e-02 -4.8975810408592224e-01 - <_> - - 0 -1 82 -2.2133740130811930e-03 - - -6.3952380418777466e-01 7.9130217432975769e-02 - <_> - - 0 -1 83 4.6288450248539448e-03 - - 5.3504310548305511e-02 -4.7028800845146179e-01 - <_> - - 0 -1 84 -4.1199862025678158e-03 - - -6.3564997911453247e-01 1.1187440156936646e-01 - <_> - - 0 -1 85 -7.0232590660452843e-03 - - -4.8968398571014404e-01 5.0502099096775055e-02 - <_> - - 0 -1 86 -4.6173902228474617e-03 - - -6.4962810277938843e-01 6.4744323492050171e-02 - <_> - - 0 -1 87 2.6568479835987091e-02 - - -8.1361226737499237e-02 1.0126339644193649e-01 - <_> - - 0 -1 88 1.4256539940834045e-01 - - 3.6757100373506546e-02 -8.6994658203125000e+03 - <_> - - 0 -1 89 -7.9922098666429520e-03 - - -6.2543541193008423e-01 5.8449558913707733e-02 - <_> - - 0 -1 90 3.2453221082687378e-01 - - -3.4219488501548767e-02 -7.6455332031250000e+03 - <_> - - 0 -1 91 -1.0454299859702587e-02 - - -4.6488571166992188e-01 8.2005582749843597e-02 - <_> - - 0 -1 92 4.8047330230474472e-02 - - -1.0950919985771179e-01 5.1447147130966187e-01 - <_> - - 0 -1 93 -1.3674950227141380e-02 - - 3.0582040548324585e-01 -2.5325518846511841e-01 - <_> - - 0 -1 94 -1.1149489879608154e-01 - - 3.4372371435165405e-01 -1.5271799266338348e-01 - <_> - - 0 -1 95 1.0649849660694599e-02 - - 5.3320560604333878e-02 -5.1434922218322754e-01 - <_> - - 0 -1 96 -1.3529709540307522e-02 - - -7.8338938951492310e-01 5.5736631155014038e-02 - <_> - - 0 -1 97 -1.2369109690189362e-01 - - 2.8146159648895264e-01 -1.6000339388847351e-01 - <_> - - 0 -1 98 -7.5496039353311062e-03 - - -6.1416012048721313e-01 7.6050773262977600e-02 - <_> - - 0 -1 99 3.1816150993108749e-02 - - 1.8631579354405403e-02 -5.5372542142868042e-01 - <_> - - 0 -1 100 1.4937350153923035e-01 - - -1.6261310083791614e-03 -4.7522329101562500e+03 - <_> - - 0 -1 101 4.6974778175354004e-02 - - 5.1585468463599682e-03 -6.3808971643447876e-01 - <_> - - 0 -1 102 1.3677899551112205e-04 - - -3.0559220910072327e-01 1.3623510301113129e-01 - <_> - - 0 -1 103 -3.2228238880634308e-02 - - 2.7725520730018616e-01 -1.2864060699939728e-01 - <_> - - 0 -1 104 -6.5994630567729473e-03 - - -4.7502130270004272e-01 7.8723862767219543e-02 - <_> - - 0 -1 105 2.0983880385756493e-02 - - -7.5561553239822388e-02 4.3078139424324036e-01 - <_> - - 0 -1 106 -1.0513519868254662e-02 - - 3.7563210725784302e-01 -8.3151116967201233e-02 - <_> - - 0 -1 107 -9.5620742067694664e-03 - - -4.2333251237869263e-01 4.3954260647296906e-02 - <_> - - 0 -1 108 1.4352190191857517e-04 - - -2.4214309453964233e-01 1.1349590122699738e-01 - <_> - - 0 -1 109 -3.2147951424121857e-02 - - 3.5538539290428162e-01 -7.4846312403678894e-02 - <_> - - 0 -1 110 1.7489150166511536e-02 - - -1.3482190668582916e-01 3.0287909507751465e-01 - <_> - - 0 -1 111 1.0752109810709953e-02 - - 2.5839660316705704e-02 -5.4003512859344482e-01 - <_> - - 0 -1 112 -1.1907819658517838e-01 - - 2.6561680436134338e-01 -1.0140880197286606e-01 - <_> - - 0 -1 113 6.6588749177753925e-03 - - 4.1985969990491867e-02 -2.9074609279632568e-01 - <_> - - 0 -1 114 8.3990991115570068e-03 - - 5.0455510616302490e-02 -4.8288908600807190e-01 - <_> - - 0 -1 115 6.0084648430347443e-02 - - -7.5537391006946564e-02 2.4068169295787811e-01 - <_> - - 0 -1 116 -7.4602258391678333e-03 - - -4.1957080364227295e-01 5.9073001146316528e-02 - <_> - - 0 -1 117 -6.0259260237216949e-02 - - 5.4446572065353394e-01 -2.6235830038785934e-02 - <_> - - 0 -1 118 -2.2176120430231094e-02 - - 3.2678040862083435e-01 -6.7592807114124298e-02 - <_> - - 0 -1 119 -8.3690620958805084e-02 - - 2.9330858588218689e-01 -6.7425176501274109e-02 - <_> - - 0 -1 120 1.7420809715986252e-02 - - -1.2961159646511078e-01 1.8764109909534454e-01 - <_> - - 0 -1 121 1.6660489141941071e-02 - - 4.7573059797286987e-02 -4.1587299108505249e-01 - <_> - - 0 -1 122 -2.0243639126420021e-02 - - -4.2727139592170715e-01 5.2154850214719772e-02 - <_> - 57 - -1.7197259664535522e+00 - - <_> - - 0 -1 123 -1.8867099285125732e-01 - - 5.1517981290817261e-01 -4.7023481130599976e-01 - <_> - - 0 -1 124 -1.6401160508394241e-02 - - 3.1213858723640442e-01 -2.1334600448608398e-01 - <_> - - 0 -1 125 9.6895441412925720e-02 - - -5.3204542398452759e-01 2.1343940496444702e-01 - <_> - - 0 -1 126 1.6825560480356216e-02 - - -1.7309989780187607e-02 2.9270818829536438e-01 - <_> - - 0 -1 127 -1.4376440085470676e-02 - - 3.2592949271202087e-01 -2.9534721374511719e-01 - <_> - - 0 -1 128 -2.5749910622835159e-02 - - 3.0064630508422852e-01 -1.2857210636138916e-01 - <_> - - 0 -1 129 -1.9781269133090973e-02 - - 4.6485328674316406e-01 -1.5703229606151581e-01 - <_> - - 0 -1 130 1.6008919104933739e-02 - - -3.1360808759927750e-02 4.0341329574584961e-01 - <_> - - 0 -1 131 6.0088648460805416e-03 - - -1.5660379827022552e-01 4.1428649425506592e-01 - <_> - - 0 -1 132 -2.9546849429607391e-02 - - 3.1660610437393188e-01 -1.0003100335597992e-01 - <_> - - 0 -1 133 -3.3541951328516006e-02 - - 2.7851161360740662e-01 -1.9055849313735962e-01 - <_> - - 0 -1 134 -5.6599538773298264e-02 - - 3.0037561058998108e-01 -8.3546951413154602e-02 - <_> - - 0 -1 135 -2.1559219807386398e-02 - - -5.5598390102386475e-01 8.8822707533836365e-02 - <_> - - 0 -1 136 1.5560880303382874e-02 - - -1.1910039931535721e-01 3.9585340023040771e-01 - <_> - - 0 -1 137 4.7825528308749199e-03 - - 8.7345741689205170e-02 -4.7982570528984070e-01 - <_> - - 0 -1 138 2.0485429093241692e-02 - - -3.5323940217494965e-02 3.6914229393005371e-01 - <_> - - 0 -1 139 -2.2292459383606911e-02 - - 4.0305820107460022e-01 -9.0521141886711121e-02 - <_> - - 0 -1 140 -3.6758739501237869e-02 - - 4.4758310914039612e-01 -7.4373558163642883e-02 - <_> - - 0 -1 141 9.3364156782627106e-05 - - -2.6075458526611328e-01 1.4131860435009003e-01 - <_> - - 0 -1 142 2.5202730670571327e-02 - - -9.2907711863517761e-02 2.2109919786453247e-01 - <_> - - 0 -1 143 7.8968331217765808e-03 - - 7.6843470335006714e-02 -5.0535291433334351e-01 - <_> - - 0 -1 144 9.2414859682321548e-03 - - 4.2619429528713226e-02 -5.8421218395233154e-01 - <_> - - 0 -1 145 -2.9902940988540649e-01 - - -6.1761599779129028e-01 3.8994479924440384e-02 - <_> - - 0 -1 146 -1.6395589336752892e-02 - - 1.6099959611892700e-01 -1.7298650741577148e-01 - <_> - - 0 -1 147 -8.5750846192240715e-03 - - -4.7212529182434082e-01 6.2937706708908081e-02 - <_> - - 0 -1 148 -2.9535809531807899e-02 - - -4.9239841103553772e-01 5.1177121698856354e-02 - <_> - - 0 -1 149 -3.2347880303859711e-02 - - 4.0244650840759277e-01 -7.1692280471324921e-02 - <_> - - 0 -1 150 -9.8570148111321032e-05 - - 1.1238799989223480e-01 -1.1841180175542831e-01 - <_> - - 0 -1 151 -6.0801780782639980e-03 - - 3.0995729565620422e-01 -8.0562673509120941e-02 - <_> - - 0 -1 152 -9.9669457995332778e-05 - - 1.0579430311918259e-01 -1.4792940020561218e-01 - <_> - - 0 -1 153 -2.1383209154009819e-02 - - -5.4032498598098755e-01 4.6587809920310974e-02 - <_> - - 0 -1 154 -3.6912590730935335e-03 - - 1.6310860216617584e-01 -1.0495279729366302e-01 - <_> - - 0 -1 155 -5.3881132043898106e-03 - - 2.3987619578838348e-01 -9.9885337054729462e-02 - <_> - - 0 -1 156 8.0342441797256470e-03 - - 8.5697777569293976e-02 -4.3955859541893005e-01 - <_> - - 0 -1 157 1.3848580420017242e-02 - - 4.9855940043926239e-02 -4.0910118818283081e-01 - <_> - - 0 -1 158 8.5337793279904872e-05 - - -1.0749509930610657e-01 1.1259689927101135e-01 - <_> - - 0 -1 159 8.9258137450087816e-05 - - -1.5447759628295898e-01 1.4948590099811554e-01 - <_> - - 0 -1 160 -3.5984220448881388e-03 - - 3.2772010564804077e-01 -1.0665640234947205e-01 - <_> - - 0 -1 161 -4.4713199138641357e-02 - - 3.8490360975265503e-01 -5.2156228572130203e-02 - <_> - - 0 -1 162 2.5462699122726917e-03 - - 9.3764789402484894e-02 -3.1739538908004761e-01 - <_> - - 0 -1 163 5.4153460077941418e-03 - - 4.4747829437255859e-02 -4.5446330308914185e-01 - <_> - - 0 -1 164 -3.8136299699544907e-02 - - 1.1968670040369034e-01 -2.8659410774707794e-02 - <_> - - 0 -1 165 3.9066441357135773e-02 - - -5.9036519378423691e-02 3.7312299013137817e-01 - <_> - - 0 -1 166 -7.3346862336620688e-05 - - 1.1904189735651016e-01 -8.6984328925609589e-02 - <_> - - 0 -1 167 8.6998203187249601e-05 - - -1.2818220257759094e-01 1.7282059788703918e-01 - <_> - - 0 -1 168 8.5675828158855438e-03 - - 8.4652923047542572e-02 -3.1986621022224426e-01 - <_> - - 0 -1 169 2.1785700693726540e-02 - - -9.5438472926616669e-02 2.6069849729537964e-01 - <_> - - 0 -1 170 -1.3853549957275391e-02 - - -4.2176169157028198e-01 6.7462787032127380e-02 - <_> - - 0 -1 171 1.3838020153343678e-02 - - 4.6685520559549332e-02 -4.1521659493446350e-01 - <_> - - 0 -1 172 6.4620330929756165e-02 - - 4.5818310230970383e-02 -4.2234459519386292e-01 - <_> - - 0 -1 173 -7.7921353280544281e-02 - - 1.3241249322891235e-01 -1.7063279449939728e-01 - <_> - - 0 -1 174 -1.3160440139472485e-03 - - -2.4945159256458282e-01 5.8696459978818893e-02 - <_> - - 0 -1 175 -8.0401099694427103e-05 - - 1.6288639605045319e-01 -1.3877080380916595e-01 - <_> - - 0 -1 176 -1.5328170359134674e-01 - - 8.4274210035800934e-02 -6.3795030117034912e-02 - <_> - - 0 -1 177 -3.7534290552139282e-01 - - -4.7942790389060974e-01 5.0034828484058380e-02 - <_> - - 0 -1 178 -6.5958919003605843e-03 - - -5.4609411954879761e-01 2.1260960027575493e-02 - <_> - - 0 -1 179 -2.6368419639766216e-03 - - 2.0740880072116852e-01 -9.0863786637783051e-02 - <_> - 87 - -1.5970319509506226e+00 - - <_> - - 0 -1 180 -1.3923250138759613e-01 - - 3.9778509736061096e-01 -4.2140689492225647e-01 - <_> - - 0 -1 181 -2.1697379648685455e-02 - - 3.5074549913406372e-01 -2.7210709452629089e-01 - <_> - - 0 -1 182 -1.6921959817409515e-02 - - 3.0072468519210815e-01 -2.0905600488185883e-01 - <_> - - 0 -1 183 -1.2638090550899506e-01 - - 2.7693378925323486e-01 -1.5910360217094421e-01 - <_> - - 0 -1 184 7.9917982220649719e-02 - - 1.9333909731358290e-03 -4.4651162109375000e+03 - <_> - - 0 -1 185 2.3830069229006767e-02 - - -8.2632936537265778e-02 4.6384599804878235e-01 - <_> - - 0 -1 186 2.7771110180765390e-03 - - -3.1618759036064148e-01 1.3602599501609802e-01 - <_> - - 0 -1 187 2.0749870687723160e-02 - - -7.9823397099971771e-02 4.0180650353431702e-01 - <_> - - 0 -1 188 -1.1794520169496536e-01 - - 1.3564899563789368e-01 -2.5304868817329407e-01 - <_> - - 0 -1 189 -1.0733289644122124e-02 - - -4.2779821157455444e-01 7.4749030172824860e-02 - <_> - - 0 -1 190 -4.8003909178078175e-03 - - -4.5992958545684814e-01 8.4859356284141541e-02 - <_> - - 0 -1 191 2.1411910653114319e-01 - - -3.9827909320592880e-02 5.4082971811294556e-01 - <_> - - 0 -1 192 1.8059259280562401e-02 - - -6.2530867755413055e-02 4.3062299489974976e-01 - <_> - - 0 -1 193 -4.3898928910493851e-02 - - -6.8367981910705566e-01 4.5472368597984314e-02 - <_> - - 0 -1 194 -3.3046580851078033e-02 - - -6.3071948289871216e-01 5.5151920765638351e-02 - <_> - - 0 -1 195 -6.1799539253115654e-03 - - -5.7958608865737915e-01 2.4057779461145401e-02 - <_> - - 0 -1 196 -3.7160899955779314e-03 - - 3.4918940067291260e-01 -9.0143196284770966e-02 - <_> - - 0 -1 197 -2.0229220390319824e-03 - - 2.5062409043312073e-01 -1.1073890328407288e-01 - <_> - - 0 -1 198 -2.9851049184799194e-03 - - -4.9283251166343689e-01 6.1420619487762451e-02 - <_> - - 0 -1 199 -2.1937670186161995e-02 - - -6.4279460906982422e-01 3.6441151052713394e-02 - <_> - - 0 -1 200 -2.9425110667943954e-02 - - 3.7635400891304016e-01 -8.1937380135059357e-02 - <_> - - 0 -1 201 2.8613150119781494e-02 - - -1.0507760196924210e-01 2.6363629102706909e-01 - <_> - - 0 -1 202 -3.1147850677371025e-02 - - 2.1914839744567871e-01 -1.3096660375595093e-01 - <_> - - 0 -1 203 1.5485489740967751e-02 - - 4.6385299414396286e-02 -5.3420221805572510e-01 - <_> - - 0 -1 204 3.5835360176861286e-03 - - -8.6932182312011719e-02 3.4212189912796021e-01 - <_> - - 0 -1 205 -4.2567998170852661e-02 - - -5.5589598417282104e-01 3.7941809743642807e-02 - <_> - - 0 -1 206 -2.7038659900426865e-02 - - -4.6420338749885559e-01 4.7554321587085724e-02 - <_> - - 0 -1 207 -2.4411270394921303e-02 - - 2.5650748610496521e-01 -4.9011740833520889e-02 - <_> - - 0 -1 208 -2.2230079397559166e-02 - - 1.4793260395526886e-01 -1.8224009871482849e-01 - <_> - - 0 -1 209 -3.2013750169426203e-03 - - -4.2445948719978333e-01 5.6803259998559952e-02 - <_> - - 0 -1 210 1.9253490492701530e-02 - - -9.1576658189296722e-02 2.6069998741149902e-01 - <_> - - 0 -1 211 -3.0006920918822289e-02 - - 3.1864610314369202e-01 -4.5917291194200516e-02 - <_> - - 0 -1 212 3.3000361174345016e-02 - - 4.2162541300058365e-02 -5.9096622467041016e-01 - <_> - - 0 -1 213 -2.3642620071768761e-02 - - -2.6040360331535339e-01 1.1056790128350258e-02 - <_> - - 0 -1 214 4.7398939728736877e-02 - - -4.0648590773344040e-02 5.2747577428817749e-01 - <_> - - 0 -1 215 5.8793718926608562e-03 - - 3.1395949423313141e-02 -5.6056851148605347e-01 - <_> - - 0 -1 216 -5.0995089113712311e-03 - - 1.6041420400142670e-01 -1.2821219861507416e-01 - <_> - - 0 -1 217 8.3196107298135757e-03 - - 6.2852732837200165e-02 -3.3706670999526978e-01 - <_> - - 0 -1 218 -1.0153040289878845e-02 - - -4.0614789724349976e-01 4.9781490117311478e-02 - <_> - - 0 -1 219 -1.4680469757877290e-04 - - 5.0883788615465164e-02 -1.3009959459304810e-01 - <_> - - 0 -1 220 -8.2523627497721463e-05 - - 9.2607311904430389e-02 -2.4926769733428955e-01 - <_> - - 0 -1 221 3.2566609978675842e-01 - - 1.7539579421281815e-02 -4.3454650044441223e-01 - <_> - - 0 -1 222 -1.7673589289188385e-01 - - 2.5083240866661072e-01 -7.6596006751060486e-02 - <_> - - 0 -1 223 -2.3230949416756630e-02 - - -8.7154947221279144e-02 4.1584961116313934e-02 - <_> - - 0 -1 224 -3.4149870276451111e-02 - - -5.3139698505401611e-01 3.1369328498840332e-02 - <_> - - 0 -1 225 7.6567879877984524e-03 - - 3.3216360956430435e-02 -4.6255061030387878e-01 - <_> - - 0 -1 226 -2.3248200304806232e-03 - - 2.8282898664474487e-01 -6.4993821084499359e-02 - <_> - - 0 -1 227 4.7129541635513306e-03 - - -5.6760489940643311e-02 4.7958448529243469e-01 - <_> - - 0 -1 228 1.2744029518216848e-03 - - -9.1237403452396393e-02 2.0502130687236786e-01 - <_> - - 0 -1 229 4.6741148829460144e-01 - - -8.2844244316220284e-03 6.4706552028656006e-01 - <_> - - 0 -1 230 2.2155679762363434e-01 - - 4.7312051057815552e-02 -4.3190020322799683e-01 - <_> - - 0 -1 231 -4.1782769560813904e-01 - - 2.3462800681591034e-01 -9.6403822302818298e-02 - <_> - - 0 -1 232 -6.9181760773062706e-03 - - -6.5903311967849731e-01 2.7876710519194603e-02 - <_> - - 0 -1 233 -9.3640871345996857e-03 - - -5.3879237174987793e-01 7.2180288843810558e-03 - <_> - - 0 -1 234 -5.8122459799051285e-02 - - -3.2751038670539856e-01 4.8486240208148956e-02 - <_> - - 0 -1 235 2.1331639587879181e-01 - - 3.8768779486417770e-02 -4.3802970647811890e-01 - <_> - - 0 -1 236 -1.3960640132427216e-01 - - -1.5554350614547729e-01 1.1561460047960281e-01 - <_> - - 0 -1 237 7.5554853538051248e-05 - - -6.5331228077411652e-02 6.6364876925945282e-02 - <_> - - 0 -1 238 -2.7876798994839191e-03 - - -3.4007069468498230e-01 4.9547281116247177e-02 - <_> - - 0 -1 239 8.9983027428388596e-03 - - -6.9725103676319122e-02 1.4761850237846375e-01 - <_> - - 0 -1 240 -1.1999090202152729e-02 - - -5.6046062707901001e-01 2.8065089136362076e-02 - <_> - - 0 -1 241 6.0021178796887398e-04 - - -1.0572089999914169e-01 1.5775670111179352e-01 - <_> - - 0 -1 242 9.2567745596170425e-03 - - 3.8413699716329575e-02 -3.8968989253044128e-01 - <_> - - 0 -1 243 3.4195061773061752e-02 - - -4.3271619826555252e-02 3.2461801171302795e-01 - <_> - - 0 -1 244 8.9471039245836437e-05 - - -1.2697300314903259e-01 1.1217790096998215e-01 - <_> - - 0 -1 245 -1.4595150016248226e-02 - - -4.6333798766136169e-01 2.1406309679150581e-02 - <_> - - 0 -1 246 -1.7585840076208115e-02 - - -6.9478857517242432e-01 1.9910650327801704e-02 - <_> - - 0 -1 247 -1.0673370212316513e-01 - - 2.2440390288829803e-01 -8.3739936351776123e-02 - <_> - - 0 -1 248 1.5211959835141897e-03 - - -7.0772707462310791e-02 2.1141250431537628e-01 - <_> - - 0 -1 249 4.4221947900950909e-03 - - -4.4280070811510086e-02 6.9831520318984985e-02 - <_> - - 0 -1 250 1.4256490394473076e-02 - - -7.4920579791069031e-02 1.8968519568443298e-01 - <_> - - 0 -1 251 -1.8462610244750977e-01 - - 4.4100850820541382e-01 -1.2149159796535969e-02 - <_> - - 0 -1 252 -3.7447769194841385e-02 - - 2.0523670315742493e-01 -6.5888322889804840e-02 - <_> - - 0 -1 253 -4.0164001286029816e-02 - - 1.1740049719810486e-01 -4.5672550797462463e-02 - <_> - - 0 -1 254 1.6907710582017899e-02 - - 3.6988031119108200e-02 -3.8368159532546997e-01 - <_> - - 0 -1 255 -2.0021539181470871e-02 - - 1.7874790728092194e-01 -6.1599351465702057e-02 - <_> - - 0 -1 256 -1.6288159787654877e-01 - - 1.2341959774494171e-01 -1.2213180214166641e-01 - <_> - - 0 -1 257 -3.4911129623651505e-02 - - -4.9633871763944626e-02 1.9904270768165588e-02 - <_> - - 0 -1 258 1.4563520252704620e-01 - - 3.0545150861144066e-02 -4.8735851049423218e-01 - <_> - - 0 -1 259 -5.5962290614843369e-02 - - 1.9134880602359772e-01 -1.5231589786708355e-02 - <_> - - 0 -1 260 4.5775189995765686e-02 - - -3.9633229374885559e-02 3.8051769137382507e-01 - <_> - - 0 -1 261 -8.0509930849075317e-03 - - -4.3102619051933289e-01 3.6386191844940186e-02 - <_> - - 0 -1 262 -2.2925350815057755e-02 - - -3.4417879581451416e-01 3.8492590188980103e-02 - <_> - - 0 -1 263 6.1498250812292099e-02 - - -1.6033710911870003e-02 5.0832337141036987e-01 - <_> - - 0 -1 264 -3.6888670176267624e-02 - - 3.9321890473365784e-01 -4.0520060807466507e-02 - <_> - - 0 -1 265 -5.3545171394944191e-03 - - 2.5463691353797913e-01 -1.1604879796504974e-01 - <_> - - 0 -1 266 -2.8639370575547218e-03 - - -4.9273601174354553e-01 2.9153689742088318e-02 - <_> - 105 - -1.6688350439071655e+00 - - <_> - - 0 -1 267 -1.4266750216484070e-01 - - 4.3372631072998047e-01 -3.4658440947532654e-01 - <_> - - 0 -1 268 1.2835499644279480e-01 - - -4.6544489264488220e-01 1.2816609442234039e-01 - <_> - - 0 -1 269 -3.6054801195859909e-02 - - 4.2594429850578308e-01 -1.7720609903335571e-01 - <_> - - 0 -1 270 -2.0345430821180344e-02 - - 1.5119360387325287e-01 -1.2275329977273941e-01 - <_> - - 0 -1 271 1.7666049301624298e-01 - - 1.5241350233554840e-01 -4.2538949847221375e-01 - <_> - - 0 -1 272 -1.6737949848175049e-01 - - 1.9125799834728241e-01 -1.8758560717105865e-01 - <_> - - 0 -1 273 2.9252300038933754e-02 - - -1.7955209314823151e-01 2.1316510438919067e-01 - <_> - - 0 -1 274 -1.5593099594116211e-01 - - 3.9090821146965027e-01 -6.6500350832939148e-02 - <_> - - 0 -1 275 1.6342889517545700e-02 - - -8.5122779011726379e-02 4.2280659079551697e-01 - <_> - - 0 -1 276 8.9803266746457666e-05 - - -2.4278439581394196e-01 1.0720120370388031e-01 - <_> - - 0 -1 277 1.1503130197525024e-01 - - -2.8022350743412971e-03 -2.7832890625000000e+03 - <_> - - 0 -1 278 2.8660349926212803e-05 - - -1.6912069916725159e-01 8.9088812470436096e-02 - <_> - - 0 -1 279 2.8660349926212803e-05 - - -2.9618909955024719e-01 9.9382899701595306e-02 - <_> - - 0 -1 280 -1.0209850035607815e-02 - - -4.8395550251007080e-01 5.6625138968229294e-02 - <_> - - 0 -1 281 -1.4060369692742825e-02 - - -4.1411420702934265e-01 6.3427872955799103e-02 - <_> - - 0 -1 282 -1.3348869979381561e-02 - - -4.6387439966201782e-01 2.8384190052747726e-02 - <_> - - 0 -1 283 -1.2555249966681004e-02 - - -6.1879467964172363e-01 4.2754668742418289e-02 - <_> - - 0 -1 284 2.7381330728530884e-02 - - -5.2704811096191406e-02 4.1978329420089722e-01 - <_> - - 0 -1 285 -4.6162471175193787e-02 - - 3.6497661471366882e-01 -7.2426289319992065e-02 - <_> - - 0 -1 286 -1.3097880408167839e-02 - - -5.7633280754089355e-01 4.7891929745674133e-02 - <_> - - 0 -1 287 -2.8415530920028687e-02 - - -6.0065191984176636e-01 4.4460929930210114e-02 - <_> - - 0 -1 288 -6.3479221425950527e-03 - - 3.4814509749412537e-01 -8.9059613645076752e-02 - <_> - - 0 -1 289 -9.7118411213159561e-03 - - -5.1781427860260010e-01 5.6316409260034561e-02 - <_> - - 0 -1 290 -2.1698420867323875e-02 - - 3.0704519152641296e-01 -9.7163833677768707e-02 - <_> - - 0 -1 291 -4.4276248663663864e-02 - - 2.5823259353637695e-01 -1.0374239832162857e-01 - <_> - - 0 -1 292 1.5846580266952515e-02 - - -1.1106160283088684e-01 1.7839249968528748e-01 - <_> - - 0 -1 293 -2.1498650312423706e-02 - - 3.4927240014076233e-01 -7.4306637048721313e-02 - <_> - - 0 -1 294 -2.9085460118949413e-03 - - -3.6909541487693787e-01 6.8516843020915985e-02 - <_> - - 0 -1 295 -3.1789109110832214e-02 - - 2.3799909651279449e-01 -1.1433179676532745e-01 - <_> - - 0 -1 296 1.0769370011985302e-02 - - 3.7151031196117401e-02 -2.5693479180335999e-01 - <_> - - 0 -1 297 -4.5090089552104473e-03 - - -5.7896959781646729e-01 4.4200599193572998e-02 - <_> - - 0 -1 298 -5.3212768398225307e-03 - - 8.4435231983661652e-02 -6.3949279487133026e-02 - <_> - - 0 -1 299 2.2673929110169411e-02 - - 5.1544409245252609e-02 -4.2098081111907959e-01 - <_> - - 0 -1 300 6.8509699776768684e-03 - - -3.7454128265380859e-02 4.5131939649581909e-01 - <_> - - 0 -1 301 9.6230360213667154e-05 - - -2.0744919776916504e-01 1.0465460270643234e-01 - <_> - - 0 -1 302 -2.1092059090733528e-02 - - 2.9160910844802856e-01 -6.2598362565040588e-02 - <_> - - 0 -1 303 -1.3403449952602386e-01 - - 2.1969069540500641e-01 -8.8791713118553162e-02 - <_> - - 0 -1 304 -2.5435289368033409e-02 - - 4.0824308991432190e-01 -2.4545410647988319e-02 - <_> - - 0 -1 305 1.0543379932641983e-02 - - -8.7642289698123932e-02 2.7179768681526184e-01 - <_> - - 0 -1 306 9.4132553786039352e-03 - - 1.4178940095007420e-02 -4.5865899324417114e-01 - <_> - - 0 -1 307 8.5997307905927300e-05 - - -2.3912850022315979e-01 9.1947212815284729e-02 - <_> - - 0 -1 308 1.0819079761859030e-04 - - -1.0928899794816971e-01 1.1509460210800171e-01 - <_> - - 0 -1 309 2.4240869283676147e-01 - - -6.7185372114181519e-02 2.8136798739433289e-01 - <_> - - 0 -1 310 -4.4038531184196472e-01 - - -4.3575769662857056e-01 2.1214749664068222e-02 - <_> - - 0 -1 311 -8.7453149259090424e-02 - - 1.1308129876852036e-01 -1.8478089570999146e-01 - <_> - - 0 -1 312 -4.1170339100062847e-03 - - 2.5076529383659363e-01 -3.2897919416427612e-02 - <_> - - 0 -1 313 -2.6375779882073402e-02 - - 3.1278228759765625e-01 -5.9065271168947220e-02 - <_> - - 0 -1 314 -7.3441797867417336e-03 - - -4.7725179791450500e-01 3.7147458642721176e-02 - <_> - - 0 -1 315 3.6828289012191817e-05 - - -1.3358670473098755e-01 1.3294130563735962e-01 - <_> - - 0 -1 316 1.0050609707832336e-02 - - -4.6177990734577179e-02 2.8381499648094177e-01 - <_> - - 0 -1 317 -1.0713540017604828e-02 - - -4.3290948867797852e-01 4.2332980781793594e-02 - <_> - - 0 -1 318 -1.0501730255782604e-02 - - -2.1639239788055420e-01 4.1059028357267380e-02 - <_> - - 0 -1 319 -1.7940669786185026e-03 - - 1.2304940074682236e-01 -1.3850529491901398e-01 - <_> - - 0 -1 320 1.5323059633374214e-02 - - 2.8011020272970200e-02 -3.7447929382324219e-01 - <_> - - 0 -1 321 -8.3098020404577255e-03 - - -5.2052259445190430e-01 2.8341950848698616e-02 - <_> - - 0 -1 322 3.0231740325689316e-02 - - -6.6902980208396912e-02 2.5790691375732422e-01 - <_> - - 0 -1 323 1.0883569717407227e-02 - - 6.2571577727794647e-02 -2.6860889792442322e-01 - <_> - - 0 -1 324 9.5374789088964462e-03 - - 2.9198259115219116e-02 -4.7998219728469849e-01 - <_> - - 0 -1 325 -3.9999200962483883e-03 - - 2.4949370324611664e-01 -6.5544649958610535e-02 - <_> - - 0 -1 326 9.2205414548516273e-03 - - 3.9968650788068771e-02 -3.7524449825286865e-01 - <_> - - 0 -1 327 -3.2748740166425705e-02 - - 2.6545938849449158e-01 -6.3016481697559357e-02 - <_> - - 0 -1 328 -2.3801359347999096e-03 - - 1.2308929860591888e-01 -2.7479890733957291e-02 - <_> - - 0 -1 329 1.6849349485710263e-03 - - -7.6166503131389618e-02 2.2750720381736755e-01 - <_> - - 0 -1 330 7.1630808524787426e-03 - - 3.9477579295635223e-02 -4.4354990124702454e-01 - <_> - - 0 -1 331 1.6813669353723526e-02 - - 3.3588510006666183e-02 -3.9953568577766418e-01 - <_> - - 0 -1 332 3.2795818697195500e-05 - - -1.5435990691184998e-01 9.5962576568126678e-02 - <_> - - 0 -1 333 -1.9717039540410042e-03 - - 2.3365209996700287e-01 -5.9957198798656464e-02 - <_> - - 0 -1 334 -2.6993690058588982e-02 - - -4.1374289989471436e-01 4.2008690536022186e-02 - <_> - - 0 -1 335 1.4177109301090240e-01 - - 3.9520148187875748e-02 -3.4029808640480042e-01 - <_> - - 0 -1 336 -1.3679260388016701e-02 - - -1.6057309508323669e-01 3.4863740205764771e-02 - <_> - - 0 -1 337 2.9184529557824135e-02 - - 4.3370950967073441e-02 -4.0030288696289062e-01 - <_> - - 0 -1 338 1.1129399761557579e-02 - - -7.8534290194511414e-02 1.7960290610790253e-01 - <_> - - 0 -1 339 -1.0935500264167786e-02 - - -3.6025050282478333e-01 4.2995098978281021e-02 - <_> - - 0 -1 340 -3.0513479941873811e-05 - - 8.9370213449001312e-02 -4.1889280080795288e-02 - <_> - - 0 -1 341 3.2795818697195500e-05 - - -1.8075449764728546e-01 9.5909386873245239e-02 - <_> - - 0 -1 342 -2.3117760196328163e-02 - - -2.6796799898147583e-01 1.0017570108175278e-02 - <_> - - 0 -1 343 1.3803930021822453e-02 - - 3.0247809365391731e-02 -4.1577160358428955e-01 - <_> - - 0 -1 344 1.4790579676628113e-02 - - -6.2628433108329773e-02 1.7893029749393463e-01 - <_> - - 0 -1 345 -1.4307799935340881e-01 - - -1.6115669906139374e-01 8.9231662452220917e-02 - <_> - - 0 -1 346 1.9987529143691063e-02 - - -4.7062009572982788e-02 1.6109189391136169e-01 - <_> - - 0 -1 347 1.4205900020897388e-02 - - 2.3043379187583923e-02 -5.4757040739059448e-01 - <_> - - 0 -1 348 -1.7248879885300994e-03 - - 9.4482786953449249e-02 -4.8485349863767624e-02 - <_> - - 0 -1 349 -1.3548379763960838e-02 - - 1.2788389623165131e-01 -9.9656976759433746e-02 - <_> - - 0 -1 350 6.2871202826499939e-02 - - 4.1690871119499207e-02 -3.6751130223274231e-01 - <_> - - 0 -1 351 -6.9153852760791779e-02 - - 2.7378571033477783e-01 -6.2963612377643585e-02 - <_> - - 0 -1 352 -2.1734459698200226e-01 - - 1.8304589390754700e-01 -9.9257007241249084e-02 - <_> - - 0 -1 353 2.7469780296087265e-02 - - -1.9286830723285675e-01 7.5987569987773895e-02 - <_> - - 0 -1 354 4.6957340091466904e-02 - - -1.8775250762701035e-02 4.6314349770545959e-01 - <_> - - 0 -1 355 1.8086720257997513e-02 - - -5.2328471094369888e-02 2.8864291310310364e-01 - <_> - - 0 -1 356 -1.3927269726991653e-02 - - 2.5085431337356567e-01 -1.9651040434837341e-01 - <_> - - 0 -1 357 -1.2526209652423859e-01 - - 1.4717139303684235e-01 -9.1146282851696014e-02 - <_> - - 0 -1 358 -1.0891130194067955e-02 - - -1.2665599584579468e-01 1.0399430058896542e-02 - <_> - - 0 -1 359 1.0924959555268288e-02 - - -3.5003058612346649e-02 4.4608950614929199e-01 - <_> - - 0 -1 360 3.2539550215005875e-02 - - 1.8497619777917862e-02 -5.9167790412902832e-01 - <_> - - 0 -1 361 -2.0845759660005569e-02 - - -3.9082339406013489e-01 3.4703880548477173e-02 - <_> - - 0 -1 362 -2.3641270399093628e-01 - - 4.8828721046447754e-01 -3.0029779300093651e-02 - <_> - - 0 -1 363 -1.5634840726852417e-01 - - -3.3450639247894287e-01 4.0134359151124954e-02 - <_> - - 0 -1 364 -4.2001541703939438e-02 - - 8.6142227053642273e-02 -2.4942040443420410e-02 - <_> - - 0 -1 365 2.5715960655361414e-03 - - -4.8461031168699265e-02 2.3894819617271423e-01 - <_> - - 0 -1 366 -1.7130700871348381e-02 - - -3.2887008786201477e-01 4.8260189592838287e-02 - <_> - - 0 -1 367 1.1991130188107491e-02 - - 3.7000309675931931e-02 -3.0085611343383789e-01 - <_> - - 0 -1 368 -1.0165110230445862e-02 - - 2.1159230172634125e-01 -1.3456389307975769e-01 - <_> - - 0 -1 369 3.1752940267324448e-02 - - -2.5855910032987595e-02 5.6194078922271729e-01 - <_> - - 0 -1 370 3.5542049445211887e-03 - - 7.7353782951831818e-02 -2.3569710552692413e-01 - <_> - - 0 -1 371 1.5985440462827682e-02 - - 3.7367980927228928e-02 -3.2395151257514954e-01 - <_> - 126 - -1.6429220438003540e+00 - - <_> - - 0 -1 372 -8.3694636821746826e-02 - - 3.4100440144538879e-01 -3.7553939223289490e-01 - <_> - - 0 -1 373 -1.3659610413014889e-02 - - 2.7409899234771729e-01 -2.1383710205554962e-01 - <_> - - 0 -1 374 -1.2971660122275352e-02 - - 2.8143510222434998e-01 -2.6921510696411133e-01 - <_> - - 0 -1 375 -2.4979710578918457e-02 - - 1.7793020606040955e-01 -1.1710070073604584e-01 - <_> - - 0 -1 376 -4.0136750787496567e-02 - - 2.8855401277542114e-01 -1.9427180290222168e-01 - <_> - - 0 -1 377 -6.0740387998521328e-03 - - 1.5903720259666443e-01 -1.4931740239262581e-02 - <_> - - 0 -1 378 2.8471080586314201e-02 - - -4.4332811236381531e-01 7.4799977242946625e-02 - <_> - - 0 -1 379 1.6766659915447235e-02 - - -6.0499768704175949e-02 4.2109870910644531e-01 - <_> - - 0 -1 380 -7.2914727032184601e-02 - - 2.0749080181121826e-01 -1.4727330207824707e-01 - <_> - - 0 -1 381 1.7743000760674477e-02 - - -4.8589050769805908e-02 1.1596550047397614e-01 - <_> - - 0 -1 382 -2.9501529410481453e-02 - - 2.9439669847488403e-01 -9.6627213060855865e-02 - <_> - - 0 -1 383 4.0625121444463730e-02 - - -2.6239100843667984e-02 4.6830970048904419e-01 - <_> - - 0 -1 384 -2.1779349073767662e-02 - - 3.1120860576629639e-01 -1.0223499685525894e-01 - <_> - - 0 -1 385 3.4435780253261328e-03 - - 5.6111920624971390e-02 -4.1161030530929565e-01 - <_> - - 0 -1 386 -5.5878269486129284e-03 - - 2.9298371076583862e-01 -9.6122913062572479e-02 - <_> - - 0 -1 387 -4.7618029639124870e-03 - - -4.6502849459648132e-01 5.9193320572376251e-02 - <_> - - 0 -1 388 -5.9781860560178757e-02 - - 3.5532829165458679e-01 -8.0377146601676941e-02 - <_> - - 0 -1 389 6.0978909023106098e-03 - - -1.6692450270056725e-02 1.6469989717006683e-01 - <_> - - 0 -1 390 -2.7368629351258278e-02 - - 2.6564338803291321e-01 -1.0004770010709763e-01 - <_> - - 0 -1 391 8.0997692421078682e-03 - - 1.8760479986667633e-02 -4.7523689270019531e-01 - <_> - - 0 -1 392 -2.5963999796658754e-03 - - -3.5978320240974426e-01 6.4545221626758575e-02 - <_> - - 0 -1 393 3.1593199819326401e-02 - - -3.7798259407281876e-02 2.3075990378856659e-01 - <_> - - 0 -1 394 1.0456099698785692e-04 - - -2.8685820102691650e-01 8.7096959352493286e-02 - <_> - - 0 -1 395 -5.1906198263168335e-02 - - 8.3963796496391296e-02 -2.0532630383968353e-02 - <_> - - 0 -1 396 2.4498499929904938e-02 - - -8.2814618945121765e-02 2.8475210070610046e-01 - <_> - - 0 -1 397 1.2566380202770233e-02 - - -4.5279160141944885e-02 2.1674649417400360e-01 - <_> - - 0 -1 398 -9.1318622231483459e-02 - - -4.4230499863624573e-01 4.7104880213737488e-02 - <_> - - 0 -1 399 6.6391900181770325e-03 - - 2.9059579595923424e-02 -5.2252948284149170e-01 - <_> - - 0 -1 400 1.7127700150012970e-02 - - 2.7933819219470024e-02 -5.7958590984344482e-01 - <_> - - 0 -1 401 -6.0757698520319536e-05 - - 1.0102690011262894e-01 -9.3878470361232758e-02 - <_> - - 0 -1 402 7.7282187703531235e-05 - - -1.3995659351348877e-01 1.4235240221023560e-01 - <_> - - 0 -1 403 -4.5266721397638321e-02 - - -1.5958879888057709e-01 1.3019920326769352e-02 - <_> - - 0 -1 404 -1.2739590369164944e-02 - - -4.1836729645729065e-01 4.6371258795261383e-02 - <_> - - 0 -1 405 4.7306739725172520e-03 - - -1.4719159901142120e-01 1.2549529969692230e-01 - <_> - - 0 -1 406 -6.8478072062134743e-03 - - -2.8655201196670532e-01 6.4936019480228424e-02 - <_> - - 0 -1 407 -1.4478339813649654e-02 - - -5.5746442079544067e-01 3.1902320683002472e-02 - <_> - - 0 -1 408 2.5321850553154945e-02 - - -5.1969718188047409e-02 4.0317040681838989e-01 - <_> - - 0 -1 409 1.4498929958790541e-03 - - -7.1278862655162811e-02 2.0445279777050018e-01 - <_> - - 0 -1 410 9.1836787760257721e-05 - - -1.3836619257926941e-01 1.3376340270042419e-01 - <_> - - 0 -1 411 8.9083143393509090e-05 - - -7.5781263411045074e-02 1.0304410010576248e-01 - <_> - - 0 -1 412 -8.0758632975630462e-05 - - 1.6445839405059814e-01 -1.1202610284090042e-01 - <_> - - 0 -1 413 8.9285433292388916e-02 - - 3.0930649489164352e-02 -5.7430011034011841e-01 - <_> - - 0 -1 414 1.5883229672908783e-02 - - -4.3224731087684631e-01 3.4075301140546799e-02 - <_> - - 0 -1 415 -1.4171909540891647e-02 - - 2.0276209712028503e-01 -7.9184897243976593e-02 - <_> - - 0 -1 416 3.5720940679311752e-02 - - -9.0391501784324646e-02 2.1999590098857880e-01 - <_> - - 0 -1 417 5.3087039850652218e-03 - - 2.1282069385051727e-02 -5.3097438812255859e-01 - <_> - - 0 -1 418 1.0967809706926346e-02 - - 3.4793078899383545e-02 -4.3127518892288208e-01 - <_> - - 0 -1 419 3.3630009740591049e-02 - - -6.4378000795841217e-02 2.2569869458675385e-01 - <_> - - 0 -1 420 1.1750670149922371e-02 - - 3.3364009112119675e-02 -4.9996230006217957e-01 - <_> - - 0 -1 421 -1.4994719531387091e-03 - - 2.1139480173587799e-01 -7.8302331268787384e-02 - <_> - - 0 -1 422 -1.8384349346160889e-01 - - 2.9695770144462585e-01 -5.3062479943037033e-02 - <_> - - 0 -1 423 -2.6374959945678711e-01 - - 2.0995129644870758e-01 -7.6504513621330261e-02 - <_> - - 0 -1 424 -4.7229680418968201e-01 - - -6.0007989406585693e-01 2.5197599083185196e-02 - <_> - - 0 -1 425 4.8492550849914551e-02 - - -3.1335938721895218e-02 2.7855190634727478e-01 - <_> - - 0 -1 426 -3.4002509713172913e-01 - - 2.3851110041141510e-01 -6.6435709595680237e-02 - <_> - - 0 -1 427 -1.1414799839258194e-02 - - -2.5477099418640137e-01 6.8611912429332733e-02 - <_> - - 0 -1 428 2.1057009696960449e-02 - - -4.4789239764213562e-02 3.5822269320487976e-01 - <_> - - 0 -1 429 -1.3073880109004676e-04 - - 1.0799950361251831e-01 -1.4292159676551819e-01 - <_> - - 0 -1 430 -1.6146369278430939e-02 - - -4.4975531101226807e-01 3.1903188675642014e-02 - <_> - - 0 -1 431 2.6404859498143196e-02 - - 3.0780889093875885e-02 -2.3807209730148315e-01 - <_> - - 0 -1 432 -1.4983680099248886e-02 - - -3.1624558568000793e-01 5.2957501262426376e-02 - <_> - - 0 -1 433 -6.6260308958590031e-03 - - 9.4783961772918701e-02 -3.7947028875350952e-02 - <_> - - 0 -1 434 9.4577856361865997e-03 - - -6.3235759735107422e-02 2.7814188599586487e-01 - <_> - - 0 -1 435 2.8465919196605682e-02 - - -4.0209379047155380e-02 2.9379189014434814e-01 - <_> - - 0 -1 436 3.2882608473300934e-02 - - -4.1350640356540680e-02 3.3133140206336975e-01 - <_> - - 0 -1 437 -8.3604697138071060e-03 - - -4.0812259912490845e-01 3.3069811761379242e-02 - <_> - - 0 -1 438 -3.0450399965047836e-02 - - 2.1827210485935211e-01 -7.1721799671649933e-02 - <_> - - 0 -1 439 -5.8005149476230145e-03 - - -2.9562330245971680e-01 3.7087250500917435e-02 - <_> - - 0 -1 440 4.8168208450078964e-03 - - 3.2777469605207443e-02 -4.2083171010017395e-01 - <_> - - 0 -1 441 1.5842430293560028e-03 - - -6.9716259837150574e-02 1.9365569949150085e-01 - <_> - - 0 -1 442 8.4104435518383980e-03 - - 2.9692530632019043e-02 -5.0313138961791992e-01 - <_> - - 0 -1 443 -1.0347180068492889e-04 - - 9.8363690078258514e-02 -8.6907006800174713e-02 - <_> - - 0 -1 444 8.2377959042787552e-03 - - 3.6999549716711044e-02 -3.8527131080627441e-01 - <_> - - 0 -1 445 1.1734689906006679e-04 - - -6.5492406487464905e-02 6.2266398221254349e-02 - <_> - - 0 -1 446 -9.8627153784036636e-04 - - 1.8917119503021240e-01 -8.0425269901752472e-02 - <_> - - 0 -1 447 -8.6078172898851335e-05 - - 8.2447282969951630e-02 -9.5376200973987579e-02 - <_> - - 0 -1 448 5.6891320273280144e-03 - - 3.3346530050039291e-02 -4.0205308794975281e-01 - <_> - - 0 -1 449 1.0112339805345982e-04 - - -1.0284639894962311e-01 1.1317410320043564e-01 - <_> - - 0 -1 450 -1.5918860211968422e-02 - - 1.3964639604091644e-01 -1.0537520051002502e-01 - <_> - - 0 -1 451 -1.0231309715891257e-04 - - 1.1990199983119965e-01 -2.0759420096874237e-01 - <_> - - 0 -1 452 -9.1397319920361042e-04 - - 1.6179299354553223e-01 -7.5580276548862457e-02 - <_> - - 0 -1 453 6.6993040964007378e-03 - - 2.5001080706715584e-02 -1.6416229307651520e-01 - <_> - - 0 -1 454 1.2699300423264503e-02 - - 2.2695040330290794e-02 -5.2739512920379639e-01 - <_> - - 0 -1 455 -1.3283169828355312e-02 - - -4.1160929203033447e-01 2.7053929865360260e-02 - <_> - - 0 -1 456 1.0245139710605145e-03 - - -8.0925337970256805e-02 1.6091230511665344e-01 - <_> - - 0 -1 457 8.1607067841105163e-05 - - -6.5392106771469116e-02 9.4981692731380463e-02 - <_> - - 0 -1 458 -2.1534129045903683e-03 - - 2.3994359374046326e-01 -6.9839999079704285e-02 - <_> - - 0 -1 459 -2.9751509428024292e-02 - - -6.1123019456863403e-01 1.7478989437222481e-02 - <_> - - 0 -1 460 -1.3032819330692291e-01 - - -2.5296679139137268e-01 4.5886538922786713e-02 - <_> - - 0 -1 461 -3.8392931222915649e-02 - - 1.5026639401912689e-01 -8.3300203084945679e-02 - <_> - - 0 -1 462 -2.0637670531868935e-02 - - -4.7749769687652588e-01 2.7316639199852943e-02 - <_> - - 0 -1 463 -9.2679895460605621e-03 - - 1.4952409267425537e-01 -5.3084261715412140e-02 - <_> - - 0 -1 464 1.2076119892299175e-02 - - -7.3878012597560883e-02 1.7311289906501770e-01 - <_> - - 0 -1 465 1.4252300374209881e-02 - - 1.0700870305299759e-02 -4.8483529686927795e-01 - <_> - - 0 -1 466 7.9848906025290489e-03 - - 3.1557928770780563e-02 -3.9823979139328003e-01 - <_> - - 0 -1 467 -7.6416457886807621e-05 - - 9.5197781920433044e-02 -6.6096171736717224e-02 - <_> - - 0 -1 468 9.6317751740571111e-05 - - -1.0664629936218262e-01 1.2682129442691803e-01 - <_> - - 0 -1 469 3.1491980189457536e-04 - - -5.2514318376779556e-02 2.4523379281163216e-02 - <_> - - 0 -1 470 5.1320712082087994e-03 - - -9.4310060143470764e-02 1.1926410347223282e-01 - <_> - - 0 -1 471 -7.8906886279582977e-02 - - 1.8964789807796478e-01 -6.1664801090955734e-02 - <_> - - 0 -1 472 -1.4321829658001661e-03 - - 1.4567589759826660e-01 -7.5513087213039398e-02 - <_> - - 0 -1 473 -4.5103628188371658e-02 - - -4.8482489585876465e-01 8.3793140947818756e-03 - <_> - - 0 -1 474 3.9267681131605059e-05 - - -9.8394133150577545e-02 1.1265549808740616e-01 - <_> - - 0 -1 475 -1.7501650378108025e-02 - - -4.4661688804626465e-01 5.6442890316247940e-02 - <_> - - 0 -1 476 2.5849869474768639e-02 - - 2.2946629673242569e-02 -4.1963219642639160e-01 - <_> - - 0 -1 477 -5.6344410404562950e-03 - - 3.7022929638624191e-02 -9.1434329748153687e-02 - <_> - - 0 -1 478 -1.6525749862194061e-01 - - -3.2120141386985779e-01 3.3446568995714188e-02 - <_> - - 0 -1 479 -7.4969837442040443e-05 - - 1.0247570276260376e-01 -1.3333749771118164e-01 - <_> - - 0 -1 480 -1.6051430255174637e-02 - - -2.6871579885482788e-01 3.8832820951938629e-02 - <_> - - 0 -1 481 4.8495661467313766e-02 - - -1.7611419782042503e-02 4.3210458755493164e-01 - <_> - - 0 -1 482 -5.8027990162372589e-02 - - 5.6749457120895386e-01 -1.8929490819573402e-02 - <_> - - 0 -1 483 9.3509042635560036e-03 - - -8.1999160349369049e-02 1.2645019590854645e-01 - <_> - - 0 -1 484 7.2834091261029243e-03 - - 3.6080401390790939e-02 -3.0698621273040771e-01 - <_> - - 0 -1 485 -3.6525551229715347e-02 - - 5.9447780251502991e-02 -6.5544642508029938e-02 - <_> - - 0 -1 486 -2.2749549243599176e-03 - - 2.0536370575428009e-01 -5.0366468727588654e-02 - <_> - - 0 -1 487 -4.5571658760309219e-02 - - -3.6782819032669067e-01 2.9857050627470016e-02 - <_> - - 0 -1 488 7.8613593359477818e-05 - - -1.0129989683628082e-01 9.8839581012725830e-02 - <_> - - 0 -1 489 7.4493337888270617e-04 - - 1.0422939807176590e-01 -2.8243300318717957e-01 - <_> - - 0 -1 490 6.7769076849799603e-05 - - -1.0194019973278046e-01 1.0684160143136978e-01 - <_> - - 0 -1 491 1.4976429753005505e-02 - - -5.4828610271215439e-02 1.1241599917411804e-01 - <_> - - 0 -1 492 -1.6552510205656290e-03 - - -2.5917539000511169e-01 4.0221069008111954e-02 - <_> - - 0 -1 493 -1.4255680143833160e-02 - - -3.6706781387329102e-01 1.6172470524907112e-02 - <_> - - 0 -1 494 -2.0518230739980936e-03 - - 1.9269070029258728e-01 -4.7873228788375854e-02 - <_> - - 0 -1 495 1.3053719699382782e-01 - - 6.2902332283556461e-03 -3.7563058733940125e-01 - <_> - - 0 -1 496 -8.3324328064918518e-02 - - -1.1892479658126831e-01 9.3024402856826782e-02 - <_> - - 0 -1 497 2.4922129511833191e-01 - - 7.7079031616449356e-03 -7.7056437730789185e-01 - <_> - 133 - -1.5156250000000000e+00 - - <_> - - 0 -1 498 -1.4404890127480030e-02 - - 3.4178748726844788e-01 -3.0290880799293518e-01 - <_> - - 0 -1 499 2.2667409479618073e-01 - - -3.3072739839553833e-01 1.6360230743885040e-01 - <_> - - 0 -1 500 -4.6934150159358978e-02 - - 2.7088809013366699e-01 -2.5283458828926086e-01 - <_> - - 0 -1 501 -7.4530718848109245e-03 - - 4.4813731312751770e-01 -6.0667719691991806e-02 - <_> - - 0 -1 502 -2.1492090076208115e-02 - - 1.8971429765224457e-01 -2.2000360488891602e-01 - <_> - - 0 -1 503 -5.7815029285848141e-03 - - 8.8426098227500916e-02 -3.0627530068159103e-02 - <_> - - 0 -1 504 3.9674431085586548e-02 - - -5.4195029661059380e-03 -1.4207619628906250e+03 - <_> - - 0 -1 505 1.3627589680254459e-02 - - -9.1195777058601379e-02 4.8344880342483521e-01 - <_> - - 0 -1 506 -6.5549151040613651e-03 - - 3.4027290344238281e-01 -1.1481580138206482e-01 - <_> - - 0 -1 507 5.1418822258710861e-03 - - -2.1465690433979034e-01 1.5631480515003204e-01 - <_> - - 0 -1 508 -7.1714469231665134e-03 - - 2.8908538818359375e-01 -1.1485029757022858e-01 - <_> - - 0 -1 509 -5.5360728874802589e-03 - - 2.1668159961700439e-01 -8.3817251026630402e-02 - <_> - - 0 -1 510 2.2245529294013977e-01 - - -6.5196859650313854e-03 -4.8679741210937500e+03 - <_> - - 0 -1 511 1.1557079851627350e-02 - - -4.5459240674972534e-02 3.0394679307937622e-01 - <_> - - 0 -1 512 -2.4631500244140625e-01 - - -5.1887249946594238e-01 5.1175419241189957e-02 - <_> - - 0 -1 513 -1.7819709610193968e-03 - - 3.4486059099435806e-02 -3.9163861423730850e-02 - <_> - - 0 -1 514 -8.7224133312702179e-03 - - 3.2543098926544189e-01 -7.6574653387069702e-02 - <_> - - 0 -1 515 -3.5658270120620728e-02 - - -5.9835660457611084e-01 3.8316339254379272e-02 - <_> - - 0 -1 516 -2.8903679922223091e-02 - - -6.3530182838439941e-01 2.4730689823627472e-02 - <_> - - 0 -1 517 -1.1647170037031174e-01 - - 1.8075680732727051e-01 -1.6352340579032898e-01 - <_> - - 0 -1 518 2.5810129940509796e-02 - - -1.0886339843273163e-01 2.3793080449104309e-01 - <_> - - 0 -1 519 -7.3603908531367779e-03 - - 1.9048359990119934e-01 -8.0013617873191833e-02 - <_> - - 0 -1 520 1.0619719978421926e-04 - - -2.4556909501552582e-01 9.5219768583774567e-02 - <_> - - 0 -1 521 -1.9719420000910759e-02 - - -4.7572961449623108e-01 3.7367928773164749e-02 - <_> - - 0 -1 522 -7.4374658288434148e-04 - - 9.1585151851177216e-02 -2.5668498873710632e-01 - <_> - - 0 -1 523 9.8219022154808044e-02 - - -7.0228829979896545e-02 3.3574399352073669e-01 - <_> - - 0 -1 524 5.3615029901266098e-03 - - 3.1214090064167976e-02 -6.7753881216049194e-01 - <_> - - 0 -1 525 -1.4868759550154209e-02 - - -5.8096957206726074e-01 4.2814828455448151e-02 - <_> - - 0 -1 526 -9.6412852406501770e-02 - - 1.3004289567470551e-01 -1.2678889930248260e-01 - <_> - - 0 -1 527 3.7894989363849163e-03 - - -6.5598629415035248e-02 1.5579770505428314e-01 - <_> - - 0 -1 528 -3.4858610015362501e-03 - - 2.1834029257297516e-01 -1.2221299856901169e-01 - <_> - - 0 -1 529 3.3498299121856689e-01 - - -2.4588150903582573e-02 1.7631460726261139e-01 - <_> - - 0 -1 530 -2.5738729164004326e-02 - - 1.4332139492034912e-01 -1.1177980154752731e-01 - <_> - - 0 -1 531 3.8507148623466492e-01 - - 1.4525639824569225e-02 -3.6296150088310242e-01 - <_> - - 0 -1 532 -2.8105419129133224e-02 - - -3.4287661314010620e-01 4.9306400120258331e-02 - <_> - - 0 -1 533 -1.8473409116268158e-02 - - -5.8932191133499146e-01 2.3863330483436584e-02 - <_> - - 0 -1 534 -1.3536689803004265e-02 - - -4.2912280559539795e-01 3.1943909823894501e-02 - <_> - - 0 -1 535 -2.3122949525713921e-02 - - 2.0142209529876709e-01 -5.0353039056062698e-02 - <_> - - 0 -1 536 2.1139409393072128e-02 - - -6.3899256289005280e-02 2.6525649428367615e-01 - <_> - - 0 -1 537 9.0067520737648010e-02 - - 1.1227900162339211e-02 -1.0319119691848755e-01 - <_> - - 0 -1 538 1.0382729582488537e-02 - - 3.5720501095056534e-02 -4.9541878700256348e-01 - <_> - - 0 -1 539 1.4825740363448858e-03 - - -2.4888260290026665e-02 2.3713339120149612e-02 - <_> - - 0 -1 540 1.2378430366516113e-01 - - 3.2288201153278351e-02 -5.3732192516326904e-01 - <_> - - 0 -1 541 -1.6116470098495483e-02 - - -4.8570340871810913e-01 2.7461700141429901e-02 - <_> - - 0 -1 542 1.5906639397144318e-02 - - 2.9240200296044350e-02 -4.5423740148544312e-01 - <_> - - 0 -1 543 -9.1634020209312439e-03 - - 1.0625120252370834e-01 -1.0080440342426300e-01 - <_> - - 0 -1 544 -1.9347349181771278e-02 - - 2.1739059686660767e-01 -6.9000512361526489e-02 - <_> - - 0 -1 545 -1.0325609706342220e-02 - - -4.0617129206657410e-01 2.8300719335675240e-02 - <_> - - 0 -1 546 -4.4596269726753235e-03 - - 1.3881349563598633e-01 -1.0167139768600464e-01 - <_> - - 0 -1 547 -1.3331240043044090e-02 - - 1.1168389767408371e-01 -5.7018160820007324e-02 - <_> - - 0 -1 548 1.4038089662790298e-02 - - -6.5833032131195068e-02 2.8126591444015503e-01 - <_> - - 0 -1 549 8.6190225556492805e-03 - - 3.1586680561304092e-02 -2.8932869434356689e-01 - <_> - - 0 -1 550 2.9386770725250244e-01 - - -4.6890590339899063e-02 3.0614718794822693e-01 - <_> - - 0 -1 551 -1.4868940226733685e-02 - - 1.7502120137214661e-01 -1.0025910101830959e-02 - <_> - - 0 -1 552 -4.3284989893436432e-02 - - 1.7161160707473755e-01 -9.6792109310626984e-02 - <_> - - 0 -1 553 1.2888509780168533e-02 - - -2.2928550839424133e-02 2.4185520410537720e-01 - <_> - - 0 -1 554 -3.4358419943600893e-03 - - 1.3518199324607849e-01 -1.0388469696044922e-01 - <_> - - 0 -1 555 -3.4035958349704742e-02 - - 2.5674760341644287e-01 -5.2028700709342957e-02 - <_> - - 0 -1 556 5.0311200320720673e-03 - - -8.4477551281452179e-02 1.6237409412860870e-01 - <_> - - 0 -1 557 -1.2706579582300037e-04 - - 1.0559009760618210e-01 -2.1253530681133270e-01 - <_> - - 0 -1 558 1.1165560223162174e-02 - - 2.6308910921216011e-02 -4.8655390739440918e-01 - <_> - - 0 -1 559 -5.2559740841388702e-02 - - 1.0851469635963440e-01 -1.1396080255508423e-01 - <_> - - 0 -1 560 -9.1416407376527786e-03 - - -4.0663948655128479e-01 3.4957569092512131e-02 - <_> - - 0 -1 561 -1.1083520203828812e-01 - - 4.1294351220130920e-01 -3.3939100801944733e-02 - <_> - - 0 -1 562 -5.7494291104376316e-03 - - 1.0465209931135178e-01 -1.1080049723386765e-01 - <_> - - 0 -1 563 -3.3833560347557068e-01 - - -4.2555201053619385e-01 2.9249390587210655e-02 - <_> - - 0 -1 564 -9.9934339523315430e-03 - - -5.3766322135925293e-01 1.9428819417953491e-02 - <_> - - 0 -1 565 -4.4573689810931683e-03 - - 1.8140719830989838e-01 -6.1098061501979828e-02 - <_> - - 0 -1 566 1.1739180423319340e-02 - - 2.7691790834069252e-02 -4.1605970263481140e-01 - <_> - - 0 -1 567 -2.0730029791593552e-03 - - 2.1511830389499664e-01 -4.4588111340999603e-02 - <_> - - 0 -1 568 4.3844608590006828e-03 - - 3.0381720513105392e-02 -3.9061251282691956e-01 - <_> - - 0 -1 569 8.9646214619278908e-03 - - 3.2070860266685486e-02 -3.7139549851417542e-01 - <_> - - 0 -1 570 4.3689231388270855e-03 - - -6.2611937522888184e-02 1.8630330264568329e-01 - <_> - - 0 -1 571 -2.2206110879778862e-02 - - -2.5213471055030823e-01 1.7384979873895645e-02 - <_> - - 0 -1 572 2.6817120611667633e-02 - - 1.8778100609779358e-02 -6.3347727060317993e-01 - <_> - - 0 -1 573 1.0099010250996798e-04 - - -8.9882403612136841e-02 9.2971943318843842e-02 - <_> - - 0 -1 574 -3.7158210761845112e-03 - - -4.4987940788269043e-01 2.5029459968209267e-02 - <_> - - 0 -1 575 -2.7535969857126474e-03 - - 2.6070469617843628e-01 -7.0969417691230774e-02 - <_> - - 0 -1 576 -2.1922899410128593e-02 - - -5.0777751207351685e-01 2.5180419906973839e-02 - <_> - - 0 -1 577 -7.0883962325751781e-04 - - -3.4276500344276428e-01 8.2241162657737732e-02 - <_> - - 0 -1 578 -1.6273240325972438e-03 - - 1.9682820141315460e-01 -6.2403131276369095e-02 - <_> - - 0 -1 579 1.4539799885824323e-03 - - 5.2250798791646957e-02 -2.9100200533866882e-01 - <_> - - 0 -1 580 1.2582080671563745e-04 - - -1.1654359847307205e-01 1.1046759784221649e-01 - <_> - - 0 -1 581 8.3695871580857784e-05 - - -5.2289471030235291e-02 6.1870351433753967e-02 - <_> - - 0 -1 582 -1.1398050264688209e-04 - - 1.5396890044212341e-01 -8.9202009141445160e-02 - <_> - - 0 -1 583 1.5188050456345081e-03 - - -6.1207320541143417e-02 1.2907339632511139e-01 - <_> - - 0 -1 584 1.5405760146677494e-02 - - 2.5000110268592834e-02 -4.4077640771865845e-01 - <_> - - 0 -1 585 -1.1019539670087397e-04 - - 1.0112199932336807e-01 -6.7201070487499237e-02 - <_> - - 0 -1 586 -1.9675830379128456e-02 - - -6.5486162900924683e-01 1.6996009275317192e-02 - <_> - - 0 -1 587 -9.9909037817269564e-04 - - 1.0255189985036850e-01 -5.9289220720529556e-02 - <_> - - 0 -1 588 1.2456219701562077e-04 - - -1.1078929901123047e-01 1.0348449647426605e-01 - <_> - - 0 -1 589 1.2445759784895927e-04 - - -9.5743909478187561e-02 8.3002902567386627e-02 - <_> - - 0 -1 590 -1.9823738839477301e-03 - - 2.1431520581245422e-01 -5.5398739874362946e-02 - <_> - - 0 -1 591 1.9654269516468048e-01 - - 3.1826499849557877e-02 -2.1685199439525604e-01 - <_> - - 0 -1 592 3.5871278960257769e-03 - - -7.4322208762168884e-02 1.4974950253963470e-01 - <_> - - 0 -1 593 1.0668500326573849e-02 - - 1.3024830259382725e-02 -3.1633579730987549e-01 - <_> - - 0 -1 594 -1.5692969784140587e-02 - - 1.8123820424079895e-01 -6.1613950878381729e-02 - <_> - - 0 -1 595 2.0100619643926620e-02 - - 4.4974848628044128e-02 -4.3339860439300537e-01 - <_> - - 0 -1 596 -9.3011429999023676e-04 - - 1.4157989621162415e-01 -7.2623051702976227e-02 - <_> - - 0 -1 597 1.2854380474891514e-04 - - -5.1621709018945694e-02 4.8192240297794342e-02 - <_> - - 0 -1 598 -1.0598390363156796e-02 - - -5.1592952013015747e-01 1.9994650036096573e-02 - <_> - - 0 -1 599 -3.3873081207275391e-02 - - -3.1708028912544250e-01 1.4665069989860058e-02 - <_> - - 0 -1 600 2.1664079278707504e-02 - - 2.8066530823707581e-02 -3.4886899590492249e-01 - <_> - - 0 -1 601 -1.6297819092869759e-02 - - 9.3040592968463898e-02 -3.0490709468722343e-02 - <_> - - 0 -1 602 -7.2641119360923767e-02 - - -4.7985389828681946e-01 2.1925760433077812e-02 - <_> - - 0 -1 603 5.9341657906770706e-03 - - -6.3595272600650787e-02 1.6068579256534576e-01 - <_> - - 0 -1 604 -1.2448200024664402e-02 - - -4.3582621216773987e-01 2.2979419678449631e-02 - <_> - - 0 -1 605 -1.4221160381566733e-04 - - 6.3076533377170563e-02 -5.0078488886356354e-02 - <_> - - 0 -1 606 1.4810540014877915e-03 - - -5.7667218148708344e-02 1.8284930288791656e-01 - <_> - - 0 -1 607 1.1081660341005772e-04 - - -4.7888830304145813e-02 6.6992476582527161e-02 - <_> - - 0 -1 608 1.5491439960896969e-02 - - 2.0301489159464836e-02 -4.8583671450614929e-01 - <_> - - 0 -1 609 8.7960972450673580e-05 - - -7.7099032700061798e-02 8.2995250821113586e-02 - <_> - - 0 -1 610 -8.1268692156299949e-04 - - 1.4406390488147736e-01 -7.3275357484817505e-02 - <_> - - 0 -1 611 2.4501960724592209e-02 - - 1.9293539226055145e-02 -2.7041348814964294e-01 - <_> - - 0 -1 612 1.5673150122165680e-01 - - 2.5848250836133957e-02 -4.0575191378593445e-01 - <_> - - 0 -1 613 -1.0019519925117493e-01 - - -1.7280450463294983e-01 2.8971340507268906e-02 - <_> - - 0 -1 614 1.6180109977722168e-01 - - 1.9680919125676155e-02 -5.0539332628250122e-01 - <_> - - 0 -1 615 -3.7529520690441132e-02 - - -3.0859738588333130e-01 2.8489660471677780e-03 - <_> - - 0 -1 616 -1.2014319747686386e-01 - - -3.2182079553604126e-01 2.8841979801654816e-02 - <_> - - 0 -1 617 -1.3690150342881680e-02 - - -1.2315540015697479e-01 3.3444989472627640e-02 - <_> - - 0 -1 618 -9.2323787510395050e-02 - - -4.9614500999450684e-01 1.8543859943747520e-02 - <_> - - 0 -1 619 5.1788990385830402e-03 - - 2.0374979823827744e-02 -1.4786289632320404e-01 - <_> - - 0 -1 620 6.2319580465555191e-03 - - -7.4262887239456177e-02 1.2185510247945786e-01 - <_> - - 0 -1 621 -7.8213810920715332e-03 - - 1.7759530246257782e-01 -5.1386699080467224e-02 - <_> - - 0 -1 622 -2.9573980718851089e-02 - - -5.0756359100341797e-01 1.9399100914597511e-02 - <_> - - 0 -1 623 -2.0324679091572762e-02 - - 1.2613779306411743e-01 -5.3594090044498444e-02 - <_> - - 0 -1 624 -1.2350369989871979e-01 - - 1.1639419943094254e-01 -8.7905816733837128e-02 - <_> - - 0 -1 625 1.0089900344610214e-01 - - -3.7132319994270802e-03 6.7068278789520264e-01 - <_> - - 0 -1 626 -3.3012818545103073e-02 - - 3.0562469363212585e-01 -3.8450431078672409e-02 - <_> - - 0 -1 627 -9.6318349242210388e-02 - - 9.8391599953174591e-02 -1.0821569710969925e-01 - <_> - - 0 -1 628 2.5214108824729919e-01 - - -2.1154910326004028e-02 4.7930648922920227e-01 - <_> - - 0 -1 629 -1.8898699432611465e-02 - - 9.6985623240470886e-02 -5.0776910036802292e-02 - <_> - - 0 -1 630 1.9470909610390663e-02 - - -6.6984340548515320e-02 1.8598070740699768e-01 - <_> - 129 - -1.5292299985885620e+00 - - <_> - - 0 -1 631 -5.1301288604736328e-01 - - 3.3763039112091064e-01 -2.2183430194854736e-01 - <_> - - 0 -1 632 7.8631602227687836e-03 - - -3.0860590934753418e-01 1.5021920204162598e-01 - <_> - - 0 -1 633 -2.0650109276175499e-02 - - 2.4393220245838165e-01 -2.7323541045188904e-01 - <_> - - 0 -1 634 3.9594681002199650e-03 - - -1.5568819642066956e-01 1.0008449852466583e-01 - <_> - - 0 -1 635 4.6596791595220566e-02 - - 1.2480390258133411e-02 -1.1247110595703125e+03 - <_> - - 0 -1 636 1.0768139734864235e-02 - - -7.4103012681007385e-02 1.0300619900226593e-01 - <_> - - 0 -1 637 8.1597883254289627e-03 - - -2.4266499280929565e-01 1.9986270368099213e-01 - <_> - - 0 -1 638 -6.2675480730831623e-03 - - 1.4820539951324463e-01 -2.9992321133613586e-01 - <_> - - 0 -1 639 5.9478268958628178e-03 - - -2.5873249769210815e-01 1.5703390538692474e-01 - <_> - - 0 -1 640 1.0514389723539352e-02 - - -1.6781389713287354e-01 2.4174839258193970e-01 - <_> - - 0 -1 641 1.2243539839982986e-01 - - -1.0682729631662369e-01 3.4612360596656799e-01 - <_> - - 0 -1 642 -1.2968529760837555e-01 - - 1.7437599599361420e-01 -9.9371053278446198e-02 - <_> - - 0 -1 643 1.0830949759110808e-04 - - -2.4865290522575378e-01 1.1169169843196869e-01 - <_> - - 0 -1 644 -3.2252158969640732e-02 - - 4.9016430974006653e-01 -4.2964339256286621e-02 - <_> - - 0 -1 645 -2.5078749284148216e-02 - - 3.1889361143112183e-01 -7.7969953417778015e-02 - <_> - - 0 -1 646 4.5832060277462006e-02 - - -1.3419570028781891e-01 1.7994479835033417e-01 - <_> - - 0 -1 647 8.3064418286085129e-03 - - 4.0255438536405563e-02 -4.5553040504455566e-01 - <_> - - 0 -1 648 4.2619768530130386e-02 - - -2.5493569672107697e-02 1.3568879663944244e-01 - <_> - - 0 -1 649 9.1548979980871081e-05 - - -1.4997710287570953e-01 1.4062370359897614e-01 - <_> - - 0 -1 650 3.5599898546934128e-02 - - -1.0049650073051453e-01 2.1603369712829590e-01 - <_> - - 0 -1 651 -1.6404399648308754e-02 - - -5.2405780553817749e-01 3.6675389856100082e-02 - <_> - - 0 -1 652 2.1164799109101295e-02 - - -3.7107881158590317e-02 1.4676739275455475e-01 - <_> - - 0 -1 653 -3.9462938904762268e-02 - - 2.6762869954109192e-01 -7.5594186782836914e-02 - <_> - - 0 -1 654 -1.7847089096903801e-02 - - 2.7940970659255981e-01 -1.5671769157052040e-02 - <_> - - 0 -1 655 3.4505259245634079e-03 - - -1.2894910573959351e-01 1.6325439512729645e-01 - <_> - - 0 -1 656 4.5687720179557800e-02 - - -2.0606290549039841e-02 2.2645039856433868e-01 - <_> - - 0 -1 657 2.1002419292926788e-02 - - -6.2005609273910522e-02 3.2014068961143494e-01 - <_> - - 0 -1 658 -3.5569739993661642e-03 - - 1.2843169271945953e-01 -8.8760308921337128e-02 - <_> - - 0 -1 659 -3.3646691590547562e-02 - - -6.8887227773666382e-01 3.4305639564990997e-02 - <_> - - 0 -1 660 1.3083280064165592e-02 - - 4.2031999677419662e-02 -5.2689850330352783e-01 - <_> - - 0 -1 661 1.6660310328006744e-02 - - 3.0601609498262405e-02 -5.3826010227203369e-01 - <_> - - 0 -1 662 -2.0924070850014687e-02 - - 1.4591710269451141e-01 -1.2979130446910858e-01 - <_> - - 0 -1 663 -6.1694860458374023e-02 - - 4.4396570324897766e-01 -3.8369540125131607e-02 - <_> - - 0 -1 664 -1.1972390115261078e-02 - - -5.6048041582107544e-01 2.3270620033144951e-02 - <_> - - 0 -1 665 1.7969259992241859e-02 - - 2.5026360526680946e-02 -5.7432591915130615e-01 - <_> - - 0 -1 666 1.5994659624993801e-03 - - -1.2418950349092484e-01 5.0742890685796738e-02 - <_> - - 0 -1 667 1.1695439927279949e-02 - - -7.6160527765750885e-02 2.0521469414234161e-01 - <_> - - 0 -1 668 -1.8982479814440012e-03 - - 8.0279447138309479e-02 -5.7309560477733612e-02 - <_> - - 0 -1 669 -1.4634410035796463e-04 - - 1.3708490133285522e-01 -1.2562429904937744e-01 - <_> - - 0 -1 670 7.8092161566019058e-03 - - 7.9615786671638489e-02 -3.4894898533821106e-01 - <_> - - 0 -1 671 -1.0443309694528580e-01 - - 2.3222529888153076e-01 -6.3237018883228302e-02 - <_> - - 0 -1 672 -2.1482400596141815e-02 - - 1.7266969382762909e-01 -5.5806308984756470e-02 - <_> - - 0 -1 673 -1.0828889906406403e-02 - - 1.2797969579696655e-01 -1.1637309938669205e-01 - <_> - - 0 -1 674 -4.2471490800380707e-02 - - -6.1273592710494995e-01 2.4606749415397644e-02 - <_> - - 0 -1 675 -3.9633461274206638e-03 - - 1.8390260636806488e-01 -8.8654592633247375e-02 - <_> - - 0 -1 676 3.5160180181264877e-02 - - -4.3068870902061462e-02 9.6340909600257874e-02 - <_> - - 0 -1 677 3.4553930163383484e-03 - - -6.2918446958065033e-02 2.4171499907970428e-01 - <_> - - 0 -1 678 -1.7584810033440590e-02 - - -6.1676180362701416e-01 1.7409879714250565e-02 - <_> - - 0 -1 679 -4.4287440180778503e-01 - - 3.0737930536270142e-01 -4.9208190292119980e-02 - <_> - - 0 -1 680 1.1836509656859562e-04 - - -5.3511910140514374e-02 8.2968451082706451e-02 - <_> - - 0 -1 681 1.2763170525431633e-04 - - -1.0692539811134338e-01 1.5963360667228699e-01 - <_> - - 0 -1 682 1.4990289928391576e-03 - - -1.0284440219402313e-01 5.9363570064306259e-02 - <_> - - 0 -1 683 -1.4185680076479912e-02 - - 1.6787010431289673e-01 -8.2064323127269745e-02 - <_> - - 0 -1 684 2.6423510164022446e-02 - - 1.5141439624130726e-02 -2.1549950540065765e-01 - <_> - - 0 -1 685 1.2152690032962710e-04 - - -2.1429139375686646e-01 6.7536190152168274e-02 - <_> - - 0 -1 686 -4.4034000486135483e-02 - - -3.8516381382942200e-01 2.7985649183392525e-02 - <_> - - 0 -1 687 2.3079359903931618e-02 - - 3.9007559418678284e-02 -3.5704460740089417e-01 - <_> - - 0 -1 688 -1.6983019188046455e-02 - - 6.1767920851707458e-02 -6.1761811375617981e-02 - <_> - - 0 -1 689 -3.9452780038118362e-02 - - -5.4356932640075684e-01 2.4140410125255585e-02 - <_> - - 0 -1 690 4.0568120777606964e-02 - - -2.8023310005664825e-02 3.5063418745994568e-01 - <_> - - 0 -1 691 -5.1757961511611938e-02 - - 3.3024019002914429e-01 -4.0171168744564056e-02 - <_> - - 0 -1 692 4.5709200203418732e-02 - - 7.3070619255304337e-03 -5.9012347459793091e-01 - <_> - - 0 -1 693 -1.5325520187616348e-02 - - -4.6291810274124146e-01 2.6863809674978256e-02 - <_> - - 0 -1 694 -3.0978990718722343e-02 - - -1.9480030238628387e-01 7.2842082008719444e-03 - <_> - - 0 -1 695 -8.9987199753522873e-03 - - -3.5020849108695984e-01 3.4169800579547882e-02 - <_> - - 0 -1 696 -2.3777019232511520e-02 - - 1.4519110321998596e-01 -9.0197078883647919e-02 - <_> - - 0 -1 697 2.7441870421171188e-02 - - -5.9784799814224243e-02 2.1248030662536621e-01 - <_> - - 0 -1 698 -1.6080979257822037e-02 - - 1.2772220373153687e-01 -1.1560890078544617e-01 - <_> - - 0 -1 699 -1.8815989606082439e-03 - - 1.8263660371303558e-01 -6.9723732769489288e-02 - <_> - - 0 -1 700 -2.0570179447531700e-02 - - 1.3511329889297485e-01 -5.6678831577301025e-02 - <_> - - 0 -1 701 2.1246779710054398e-02 - - 2.7247950434684753e-02 -4.5481869578361511e-01 - <_> - - 0 -1 702 -1.8843259662389755e-02 - - 2.0364369451999664e-01 -3.9924360811710358e-02 - <_> - - 0 -1 703 -3.1697001308202744e-02 - - 1.4882990717887878e-01 -7.5314097106456757e-02 - <_> - - 0 -1 704 -3.9388950914144516e-02 - - -4.0445148944854736e-01 3.7166859954595566e-02 - <_> - - 0 -1 705 1.6863539814949036e-02 - - 3.7964358925819397e-02 -2.9315468668937683e-01 - <_> - - 0 -1 706 -5.8874640613794327e-02 - - 2.9816859960556030e-01 -3.0451029539108276e-02 - <_> - - 0 -1 707 -1.0891259647905827e-02 - - -4.0626329183578491e-01 2.7517719194293022e-02 - <_> - - 0 -1 708 -1.0890879639191553e-04 - - 1.0424339771270752e-01 -9.9079273641109467e-02 - <_> - - 0 -1 709 -9.3655682576354593e-05 - - 1.1488509923219681e-01 -1.0301840305328369e-01 - <_> - - 0 -1 710 3.8378849625587463e-02 - - -6.6913731396198273e-02 1.5582619607448578e-01 - <_> - - 0 -1 711 -1.3334819674491882e-01 - - 1.7475730180740356e-01 -8.1824399530887604e-02 - <_> - - 0 -1 712 -2.3333270102739334e-02 - - -3.1016799807548523e-01 2.8489509597420692e-02 - <_> - - 0 -1 713 3.2015360891819000e-02 - - 3.0259899795055389e-02 -3.9357221126556396e-01 - <_> - - 0 -1 714 4.2134500108659267e-03 - - -3.0290320515632629e-02 1.9074229896068573e-01 - <_> - - 0 -1 715 1.4553000219166279e-02 - - 2.1159080788493156e-02 -4.7899720072746277e-01 - <_> - - 0 -1 716 1.6254920046776533e-04 - - -4.1702289134263992e-02 6.6818341612815857e-02 - <_> - - 0 -1 717 5.1241990178823471e-02 - - -2.5901550427079201e-02 3.8924860954284668e-01 - <_> - - 0 -1 718 -1.9014719873666763e-02 - - -6.8240302801132202e-01 7.9030347988009453e-03 - <_> - - 0 -1 719 -1.1731980339391157e-04 - - 1.0345830023288727e-01 -9.2772170901298523e-02 - <_> - - 0 -1 720 -1.2399390339851379e-02 - - -4.8494198918342590e-01 2.2405119612812996e-02 - <_> - - 0 -1 721 1.1162629816681147e-03 - - -6.2404781579971313e-02 1.5988099575042725e-01 - <_> - - 0 -1 722 -2.3414581082761288e-03 - - -5.0930368900299072e-01 5.6651391088962555e-02 - <_> - - 0 -1 723 -1.1256740253884345e-04 - - 1.0419259965419769e-01 -9.9077150225639343e-02 - <_> - - 0 -1 724 1.4960099942982197e-03 - - 5.8264009654521942e-02 -3.1069689989089966e-01 - <_> - - 0 -1 725 1.1897009972017258e-04 - - -9.6467606723308563e-02 1.1709649860858917e-01 - <_> - - 0 -1 726 -1.1693680426105857e-03 - - 1.5217749774456024e-01 -7.0818759500980377e-02 - <_> - - 0 -1 727 7.4839929584413767e-04 - - -6.9360353052616119e-02 1.5075220167636871e-01 - <_> - - 0 -1 728 -4.1113719344139099e-03 - - -2.8900811076164246e-01 1.1448180302977562e-02 - <_> - - 0 -1 729 -1.4193469542078674e-04 - - 1.1926650255918503e-01 -9.4971269369125366e-02 - <_> - - 0 -1 730 -1.1901040124939755e-04 - - 6.4288787543773651e-02 -4.7796919941902161e-02 - <_> - - 0 -1 731 1.0498589836061001e-04 - - -9.6632666885852814e-02 1.1538989841938019e-01 - <_> - - 0 -1 732 -8.3408653736114502e-03 - - 4.4604659080505371e-02 -4.0829408913850784e-02 - <_> - - 0 -1 733 8.9393332600593567e-03 - - -4.0271699428558350e-02 3.0788379907608032e-01 - <_> - - 0 -1 734 -1.0168400331167504e-04 - - 8.3439879119396210e-02 -2.9669430106878281e-02 - <_> - - 0 -1 735 1.0159109660889953e-04 - - -1.6794000566005707e-01 6.1446961015462875e-02 - <_> - - 0 -1 736 -2.0380979403853416e-02 - - -4.6373328566551208e-01 1.0819310322403908e-02 - <_> - - 0 -1 737 -1.4813670422881842e-03 - - 1.4306089282035828e-01 -6.7024730145931244e-02 - <_> - - 0 -1 738 1.0961569845676422e-02 - - -1.0202170163393021e-01 5.0610020756721497e-02 - <_> - - 0 -1 739 2.2087350953370333e-03 - - -5.7063940912485123e-02 1.7626209557056427e-01 - <_> - - 0 -1 740 1.6278350725769997e-02 - - 1.6349399462342262e-02 -2.6355540752410889e-01 - <_> - - 0 -1 741 -4.9292189069092274e-03 - - -4.0084150433540344e-01 2.4711510166525841e-02 - <_> - - 0 -1 742 -1.1716609587892890e-03 - - 8.4607273340225220e-02 -7.5489796698093414e-02 - <_> - - 0 -1 743 -2.2133199498057365e-02 - - -7.9881209135055542e-01 1.3015880249440670e-02 - <_> - - 0 -1 744 6.0050230473279953e-02 - - -3.0599929392337799e-02 6.5180040895938873e-02 - <_> - - 0 -1 745 -8.2345595583319664e-03 - - 1.3700689375400543e-01 -7.2879850864410400e-02 - <_> - - 0 -1 746 1.8302880227565765e-02 - - 3.8170479238033295e-02 -3.0564299225807190e-01 - <_> - - 0 -1 747 -1.6368640353903174e-03 - - -2.9228380322456360e-01 3.1695071607828140e-02 - <_> - - 0 -1 748 -3.6952439695596695e-02 - - -5.2291387319564819e-01 6.8037798628211021e-03 - <_> - - 0 -1 749 -2.5132870301604271e-02 - - -4.9405440688133240e-01 1.8722509965300560e-02 - <_> - - 0 -1 750 8.7387202074751258e-04 - - -6.0590930283069611e-02 1.1999309808015823e-01 - <_> - - 0 -1 751 9.7723852377384901e-05 - - -9.9694482982158661e-02 9.9611878395080566e-02 - <_> - - 0 -1 752 -3.6560039967298508e-02 - - -3.4698799252510071e-02 2.3705899715423584e-02 - <_> - - 0 -1 753 -1.4096960425376892e-01 - - -5.1033538579940796e-01 1.7134699970483780e-02 - <_> - - 0 -1 754 -1.8492950126528740e-02 - - 1.3546580076217651e-01 -3.7599481642246246e-02 - <_> - - 0 -1 755 5.4302928037941456e-03 - - -7.4597582221031189e-02 1.3267649710178375e-01 - <_> - - 0 -1 756 -2.8979010879993439e-02 - - -5.6868058443069458e-01 1.4711700379848480e-02 - <_> - - 0 -1 757 -4.1912179440259933e-03 - - 1.4587999880313873e-01 -7.6463460922241211e-02 - <_> - - 0 -1 758 9.9395290017127991e-02 - - 7.5935330241918564e-03 -3.0430629849433899e-01 - <_> - - 0 -1 759 3.4069079905748367e-02 - - -6.6836699843406677e-02 1.5439170598983765e-01 - <_> - 170 - -1.5202269554138184e+00 - - <_> - - 0 -1 760 -1.0689979791641235e-01 - - 3.0658951401710510e-01 -2.4631050229072571e-01 - <_> - - 0 -1 761 -3.0084479600191116e-02 - - 1.4610590040683746e-01 -4.8218939453363419e-02 - <_> - - 0 -1 762 -3.5000830888748169e-02 - - 3.1755268573760986e-01 -1.4478039741516113e-01 - <_> - - 0 -1 763 1.1025959998369217e-01 - - 2.1238500252366066e-02 -1.6012300550937653e-01 - <_> - - 0 -1 764 1.2484409846365452e-02 - - -2.7466261386871338e-01 1.8460549414157867e-01 - <_> - - 0 -1 765 1.5061490237712860e-02 - - -1.3149070739746094e-01 1.6390870511531830e-01 - <_> - - 0 -1 766 -2.2057349979877472e-01 - - 1.9639089703559875e-01 -2.3069189488887787e-01 - <_> - - 0 -1 767 -3.2599259167909622e-02 - - 1.2439730018377304e-01 -8.7648376822471619e-02 - <_> - - 0 -1 768 6.1759902164340019e-03 - - -3.8324919342994690e-01 9.4517536461353302e-02 - <_> - - 0 -1 769 3.0340310186147690e-02 - - -2.1559499204158783e-02 2.3994560539722443e-01 - <_> - - 0 -1 770 -2.6346590369939804e-02 - - 2.5143679976463318e-01 -1.2570610642433167e-01 - <_> - - 0 -1 771 4.7478739172220230e-02 - - -2.3006409406661987e-02 2.8789579868316650e-01 - <_> - - 0 -1 772 -3.3347800374031067e-02 - - 2.8133860230445862e-01 -1.0144259780645370e-01 - <_> - - 0 -1 773 -2.9174150899052620e-02 - - 1.7805859446525574e-01 -1.1817619949579239e-01 - <_> - - 0 -1 774 -2.8386740013957024e-02 - - 3.9562720060348511e-01 -4.9916889518499374e-02 - <_> - - 0 -1 775 1.8951019272208214e-02 - - 2.5329099968075752e-02 -5.3371077775955200e-01 - <_> - - 0 -1 776 1.4761690050363541e-02 - - 3.4711509943008423e-02 -5.0349467992782593e-01 - <_> - - 0 -1 777 -2.7541309595108032e-02 - - 2.5491359829902649e-01 -7.7761203050613403e-02 - <_> - - 0 -1 778 1.1286890134215355e-02 - - 2.7794640511274338e-02 -6.3489568233489990e-01 - <_> - - 0 -1 779 -7.1040529012680054e-01 - - -4.6786320209503174e-01 3.7275071372278035e-04 - <_> - - 0 -1 780 1.6402329504489899e-01 - - -6.7450031638145447e-02 2.5602969527244568e-01 - <_> - - 0 -1 781 8.4193330258131027e-03 - - -9.0232700109481812e-02 2.0609809458255768e-01 - <_> - - 0 -1 782 -1.4688509702682495e-01 - - 3.6004349589347839e-01 -4.9512550234794617e-02 - <_> - - 0 -1 783 -1.9554210826754570e-02 - - 3.0653059482574463e-01 -6.3451543450355530e-02 - <_> - - 0 -1 784 -1.0444919578731060e-02 - - 1.3290570676326752e-01 -1.2827059626579285e-01 - <_> - - 0 -1 785 1.1062329635024071e-02 - - 4.0686979889869690e-02 -6.2988758087158203e-01 - <_> - - 0 -1 786 -1.5040210448205471e-02 - - -5.8461701869964600e-01 2.3117769509553909e-02 - <_> - - 0 -1 787 -1.0194590140599757e-04 - - 1.1996640264987946e-01 -7.9124547541141510e-02 - <_> - - 0 -1 788 9.0414949227124453e-05 - - -1.3601270318031311e-01 1.1836279928684235e-01 - <_> - - 0 -1 789 1.6496310010552406e-02 - - 1.5407649800181389e-02 -3.3741968870162964e-01 - <_> - - 0 -1 790 1.1918049858650193e-04 - - -1.3498629629611969e-01 1.2214670330286026e-01 - <_> - - 0 -1 791 4.4636961072683334e-02 - - -3.5782538354396820e-02 3.5916471481323242e-01 - <_> - - 0 -1 792 8.9213429018855095e-03 - - -1.7042760550975800e-01 9.7737736999988556e-02 - <_> - - 0 -1 793 -2.0977169275283813e-02 - - 9.9603489041328430e-02 -4.4926621019840240e-02 - <_> - - 0 -1 794 -3.7320230156183243e-02 - - 3.2442098855972290e-01 -4.5821111649274826e-02 - <_> - - 0 -1 795 -1.9962401129305363e-03 - - 8.7733283638954163e-02 -6.3953131437301636e-02 - <_> - - 0 -1 796 1.8080769106745720e-02 - - 3.3306188881397247e-02 -4.8791229724884033e-01 - <_> - - 0 -1 797 1.8776309490203857e-01 - - -1.0865679942071438e-03 -4.6595638990402222e-01 - <_> - - 0 -1 798 2.3192439228296280e-02 - - 3.2641470432281494e-02 -4.3289509415626526e-01 - <_> - - 0 -1 799 1.0338190011680126e-02 - - -8.7577022612094879e-02 1.5071089565753937e-01 - <_> - - 0 -1 800 1.9133120775222778e-02 - - 2.5895679369568825e-02 -5.3015732765197754e-01 - <_> - - 0 -1 801 -8.1426696851849556e-05 - - 8.0925822257995605e-02 -9.6267983317375183e-02 - <_> - - 0 -1 802 1.8560849130153656e-02 - - -7.0968322455883026e-02 1.6962639987468719e-01 - <_> - - 0 -1 803 -5.5964579805731773e-03 - - -4.1663470864295959e-01 3.0378060415387154e-02 - <_> - - 0 -1 804 1.7773959785699844e-02 - - -5.4257538169622421e-02 2.2561490535736084e-01 - <_> - - 0 -1 805 -5.9832010418176651e-02 - - 2.2946140170097351e-01 -1.5503049828112125e-02 - <_> - - 0 -1 806 1.1668549850583076e-02 - - 2.5527859106659889e-02 -4.8873430490493774e-01 - <_> - - 0 -1 807 1.7624149098992348e-02 - - -3.2836209982633591e-02 4.1528310626745224e-02 - <_> - - 0 -1 808 -5.2833881229162216e-02 - - -2.8491690754890442e-01 4.6531789004802704e-02 - <_> - - 0 -1 809 -2.0954129286110401e-03 - - -4.8794639110565186e-01 5.3593020886182785e-02 - <_> - - 0 -1 810 -1.0130889859283343e-04 - - 1.1240509897470474e-01 -1.0334850102663040e-01 - <_> - - 0 -1 811 1.9346430199220777e-03 - - 4.9751780927181244e-02 -3.7111181020736694e-01 - <_> - - 0 -1 812 1.1420589726185426e-04 - - -1.2482249736785889e-01 1.6466249525547028e-01 - <_> - - 0 -1 813 -8.1585953012108803e-05 - - 9.6103258430957794e-02 -7.6807789504528046e-02 - <_> - - 0 -1 814 -2.5518139824271202e-02 - - 2.0780040323734283e-01 -6.0223940759897232e-02 - <_> - - 0 -1 815 -5.0616629421710968e-02 - - -6.6633218526840210e-01 1.2990869581699371e-02 - <_> - - 0 -1 816 -1.1321919737383723e-04 - - 1.1620879918336868e-01 -1.0486110299825668e-01 - <_> - - 0 -1 817 -4.8787519335746765e-03 - - 1.5851399302482605e-01 -9.6751511096954346e-02 - <_> - - 0 -1 818 1.2007780373096466e-02 - - 3.2958209514617920e-02 -3.6023509502410889e-01 - <_> - - 0 -1 819 -3.9686369709670544e-03 - - 5.8895830065011978e-02 -2.0575989782810211e-01 - <_> - - 0 -1 820 1.1987470090389252e-01 - - -9.4282791018486023e-02 1.2716309726238251e-01 - <_> - - 0 -1 821 -1.5101430006325245e-02 - - 1.5447859466075897e-01 -9.8814398050308228e-02 - <_> - - 0 -1 822 -3.5253658890724182e-02 - - 1.9022279977798462e-01 -6.3464179635047913e-02 - <_> - - 0 -1 823 -8.2858894020318985e-03 - - 1.9287189841270447e-01 -2.4786539375782013e-02 - <_> - - 0 -1 824 -2.7197180315852165e-03 - - 1.7318749427795410e-01 -7.0693030953407288e-02 - <_> - - 0 -1 825 -1.1073380301240832e-04 - - 7.6669231057167053e-02 -7.7580787241458893e-02 - <_> - - 0 -1 826 -1.2925160117447376e-02 - - -5.0933468341827393e-01 2.3266840726137161e-02 - <_> - - 0 -1 827 -1.0003760457038879e-02 - - 2.0728209614753723e-01 -1.1720780283212662e-01 - <_> - - 0 -1 828 -1.6457470133900642e-02 - - -4.5447981357574463e-01 2.3052949458360672e-02 - <_> - - 0 -1 829 -1.5172669664025307e-02 - - -2.0384129881858826e-01 2.0879639312624931e-02 - <_> - - 0 -1 830 -4.1150279343128204e-02 - - -4.8526081442832947e-01 2.3375000804662704e-02 - <_> - - 0 -1 831 8.7554886704310775e-05 - - -8.3170637488365173e-02 1.1491040140390396e-01 - <_> - - 0 -1 832 -1.4003519900143147e-03 - - 1.7052119970321655e-01 -7.9897612333297729e-02 - <_> - - 0 -1 833 -1.4320029877126217e-02 - - -2.7978140115737915e-01 2.7644220739603043e-02 - <_> - - 0 -1 834 1.0536990128457546e-02 - - 3.2726321369409561e-02 -3.0974090099334717e-01 - <_> - - 0 -1 835 1.0322839953005314e-02 - - -2.2037370130419731e-02 1.5700039267539978e-01 - <_> - - 0 -1 836 -2.9464110266417265e-03 - - 9.5506630837917328e-02 -1.1159860342741013e-01 - <_> - - 0 -1 837 -4.6543750911951065e-02 - - 5.2395242452621460e-01 -1.0266710072755814e-02 - <_> - - 0 -1 838 2.7587810531258583e-02 - - 1.7757529392838478e-02 -6.0755622386932373e-01 - <_> - - 0 -1 839 1.2779200077056885e-01 - - -2.9550189152359962e-02 1.9193689525127411e-01 - <_> - - 0 -1 840 -2.7071989607065916e-03 - - 1.3288849592208862e-01 -7.5121462345123291e-02 - <_> - - 0 -1 841 4.0517508983612061e-02 - - -1.8285209313035011e-02 2.3398989439010620e-01 - <_> - - 0 -1 842 -2.3226549848914146e-02 - - 1.1037539690732956e-01 -9.5945753157138824e-02 - <_> - - 0 -1 843 7.4146009981632233e-02 - - -2.4014929309487343e-02 2.1431709825992584e-01 - <_> - - 0 -1 844 -6.0976808890700340e-03 - - 2.0429180562496185e-01 -5.2113000303506851e-02 - <_> - - 0 -1 845 -1.5246089547872543e-02 - - 1.8430249392986298e-01 -5.7474389672279358e-02 - <_> - - 0 -1 846 2.0064720883965492e-03 - - -1.5901429951190948e-01 6.6750071942806244e-02 - <_> - - 0 -1 847 1.3912119902670383e-03 - - -6.6726118326187134e-02 1.6028690338134766e-01 - <_> - - 0 -1 848 9.6176161605399102e-05 - - -1.0783439874649048e-01 9.7965776920318604e-02 - <_> - - 0 -1 849 8.7600788101553917e-03 - - -2.6547059416770935e-02 1.6017149388790131e-01 - <_> - - 0 -1 850 -2.5330010801553726e-02 - - -4.5312818884849548e-01 2.3176750168204308e-02 - <_> - - 0 -1 851 9.3010559794493020e-05 - - -7.4414081871509552e-02 3.9705768227577209e-02 - <_> - - 0 -1 852 1.2664360110647976e-04 - - -8.8862143456935883e-02 1.0938200354576111e-01 - <_> - - 0 -1 853 1.0378329898230731e-04 - - -7.9622171819210052e-02 7.4162423610687256e-02 - <_> - - 0 -1 854 -1.1490810429677367e-03 - - -2.8735539317131042e-01 3.2963339239358902e-02 - <_> - - 0 -1 855 -3.7716159131377935e-03 - - 1.6333040595054626e-01 -5.5975660681724548e-02 - <_> - - 0 -1 856 -6.6916510462760925e-02 - - -3.2906571030616760e-01 3.0911309644579887e-02 - <_> - - 0 -1 857 -4.6153448522090912e-02 - - 3.1598469614982605e-01 -1.0006040334701538e-02 - <_> - - 0 -1 858 -1.4114130288362503e-02 - - 1.9118440151214600e-01 -5.4341658949851990e-02 - <_> - - 0 -1 859 -6.7449989728629589e-03 - - -4.3027278780937195e-01 1.7616849392652512e-02 - <_> - - 0 -1 860 -1.2470459565520287e-02 - - -6.0290211439132690e-01 1.4293249696493149e-02 - <_> - - 0 -1 861 -1.8420180305838585e-02 - - -3.8589200377464294e-01 2.0133590325713158e-02 - <_> - - 0 -1 862 -9.0734250843524933e-03 - - -4.3166559934616089e-01 1.8881799653172493e-02 - <_> - - 0 -1 863 -1.0161520185647532e-04 - - 6.7857377231121063e-02 -5.7537410408258438e-02 - <_> - - 0 -1 864 -1.2353780039120466e-04 - - 9.7375743091106415e-02 -9.2362031340599060e-02 - <_> - - 0 -1 865 9.8377313406672329e-05 - - -5.8235950767993927e-02 9.5380887389183044e-02 - <_> - - 0 -1 866 -1.0639090090990067e-01 - - -2.8306511044502258e-01 3.2923609018325806e-02 - <_> - - 0 -1 867 -6.3616447150707245e-02 - - 1.6447669267654419e-01 -6.0573101043701172e-02 - <_> - - 0 -1 868 1.7245480790734291e-02 - - -6.3979178667068481e-02 1.5430940687656403e-01 - <_> - - 0 -1 869 -6.7837438546121120e-03 - - -6.7650020122528076e-01 1.3685920275747776e-02 - <_> - - 0 -1 870 1.9993700087070465e-02 - - -8.1984132528305054e-02 1.0957500338554382e-01 - <_> - - 0 -1 871 -1.0575350373983383e-02 - - 1.0185450315475464e-01 -3.5512648522853851e-02 - <_> - - 0 -1 872 -1.1901520338142291e-04 - - 1.0208100080490112e-01 -9.6003718674182892e-02 - <_> - - 0 -1 873 6.7127197980880737e-03 - - -2.5669310241937637e-02 1.2060379981994629e-01 - <_> - - 0 -1 874 -1.9734390079975128e-02 - - 9.2925436794757843e-02 -1.0922320187091827e-01 - <_> - - 0 -1 875 5.9160222299396992e-03 - - -5.6094389408826828e-02 4.0212169289588928e-02 - <_> - - 0 -1 876 1.6886599361896515e-02 - - 2.5720449164509773e-02 -3.1899920105934143e-01 - <_> - - 0 -1 877 -8.1426696851849556e-05 - - 4.8319049179553986e-02 -5.6603148579597473e-02 - <_> - - 0 -1 878 9.8076612630393356e-05 - - -8.0048993229866028e-02 1.1017669737339020e-01 - <_> - - 0 -1 879 2.1393799688667059e-03 - - 2.7048120275139809e-02 -1.7649430036544800e-01 - <_> - - 0 -1 880 -1.1872709728777409e-03 - - 1.5653279423713684e-01 -5.3677041083574295e-02 - <_> - - 0 -1 881 9.3500297516584396e-03 - - 2.2035079076886177e-02 -3.8529750704765320e-01 - <_> - - 0 -1 882 -1.2907490134239197e-02 - - 8.5855528712272644e-02 -9.4352141022682190e-02 - <_> - - 0 -1 883 -8.6925812065601349e-03 - - 8.2323811948299408e-02 -1.1261750012636185e-01 - <_> - - 0 -1 884 2.6225339621305466e-02 - - -7.9598203301429749e-02 2.1438419818878174e-01 - <_> - - 0 -1 885 5.5324658751487732e-02 - - -3.4370798617601395e-02 6.1817649751901627e-02 - <_> - - 0 -1 886 -1.3645890355110168e-01 - - -3.9608588814735413e-01 2.2642590105533600e-02 - <_> - - 0 -1 887 4.3763849139213562e-01 - - -2.1257020533084869e-02 4.2141160368919373e-01 - <_> - - 0 -1 888 4.0124261379241943e-01 - - 1.3478119857609272e-02 -6.4437031745910645e-01 - <_> - - 0 -1 889 5.1928348839282990e-02 - - 1.6244180500507355e-02 -1.4291189610958099e-01 - <_> - - 0 -1 890 2.2155599668622017e-02 - - -7.8738972544670105e-02 1.1867050081491470e-01 - <_> - - 0 -1 891 -1.7905909568071365e-02 - - 1.0405159741640091e-01 -4.2793579399585724e-02 - <_> - - 0 -1 892 -2.6157870888710022e-02 - - 1.9521349668502808e-01 -4.7064788639545441e-02 - <_> - - 0 -1 893 7.9303726553916931e-02 - - -5.7728658430278301e-03 5.2964019775390625e-01 - <_> - - 0 -1 894 9.9063310772180557e-03 - - -5.4969910532236099e-02 1.7010359466075897e-01 - <_> - - 0 -1 895 -1.4349560660775751e-04 - - 7.5154699385166168e-02 -6.8524919450283051e-02 - <_> - - 0 -1 896 -1.0576599743217230e-04 - - 8.9321687817573547e-02 -1.1271840333938599e-01 - <_> - - 0 -1 897 1.2682359665632248e-02 - - 5.6463040411472321e-02 -4.3287089467048645e-01 - <_> - - 0 -1 898 -5.5023408494889736e-03 - - -4.4382581114768982e-01 1.5241930261254311e-02 - <_> - - 0 -1 899 2.9810098931193352e-03 - - 1.8084000796079636e-02 -1.3332369923591614e-01 - <_> - - 0 -1 900 3.4131971001625061e-01 - - -2.1042600274085999e-02 3.8421440124511719e-01 - <_> - - 0 -1 901 -2.4069199338555336e-02 - - 1.0723180323839188e-01 -8.4255319088697433e-03 - <_> - - 0 -1 902 2.8575219213962555e-02 - - 1.8834419548511505e-02 -4.4038540124893188e-01 - <_> - - 0 -1 903 1.1502469715196639e-04 - - -5.5220138281583786e-02 5.1889371126890182e-02 - <_> - - 0 -1 904 -6.2718510162085295e-04 - - 1.2168680131435394e-01 -6.9152280688285828e-02 - <_> - - 0 -1 905 -4.9285031855106354e-03 - - 1.1893810331821442e-01 -1.8929530680179596e-01 - <_> - - 0 -1 906 9.6798430604394525e-05 - - -8.4179729223251343e-02 9.3380309641361237e-02 - <_> - - 0 -1 907 -8.0068537499755621e-05 - - 9.5557212829589844e-02 -6.4218439161777496e-02 - <_> - - 0 -1 908 -9.6070143627002835e-05 - - 7.3091097176074982e-02 -1.0720100253820419e-01 - <_> - - 0 -1 909 -9.3654278316535056e-05 - - 6.4983196556568146e-02 -8.2975886762142181e-02 - <_> - - 0 -1 910 -2.9613949358463287e-02 - - -3.4413290023803711e-01 2.1603949368000031e-02 - <_> - - 0 -1 911 1.9738359376788139e-02 - - -7.4910469353199005e-02 1.6203530132770538e-01 - <_> - - 0 -1 912 -5.4622910916805267e-02 - - -5.3843551874160767e-01 1.5826219692826271e-02 - <_> - - 0 -1 913 2.5406960397958755e-02 - - -3.2018769532442093e-02 1.3851889967918396e-01 - <_> - - 0 -1 914 -1.5373529866337776e-02 - - 1.3621629774570465e-01 -6.8222098052501678e-02 - <_> - - 0 -1 915 9.0687759220600128e-02 - - -4.4694212265312672e-03 3.5965418815612793e-01 - <_> - - 0 -1 916 -2.5126760825514793e-02 - - 1.7240080237388611e-01 -5.1155138760805130e-02 - <_> - - 0 -1 917 3.0066540930420160e-03 - - -3.8472808897495270e-02 1.0702560096979141e-01 - <_> - - 0 -1 918 8.4653347730636597e-03 - - 2.3478979244828224e-02 -3.7509509921073914e-01 - <_> - - 0 -1 919 9.7920412372332066e-05 - - -5.0908301025629044e-02 4.6732418239116669e-02 - <_> - - 0 -1 920 -8.7232358055189252e-05 - - 9.9191993474960327e-02 -8.3799272775650024e-02 - <_> - - 0 -1 921 4.9487859942018986e-03 - - -4.5264169573783875e-02 9.2176407575607300e-02 - <_> - - 0 -1 922 -2.6660770177841187e-02 - - -3.8041749596595764e-01 1.9671360030770302e-02 - <_> - - 0 -1 923 8.6467640358023345e-05 - - -7.9427041113376617e-02 9.1969177126884460e-02 - <_> - - 0 -1 924 -1.8532250542193651e-03 - - 1.7682300508022308e-01 -4.7148969024419785e-02 - <_> - - 0 -1 925 -1.4915529638528824e-02 - - -3.3692631125450134e-01 2.3903379216790199e-02 - <_> - - 0 -1 926 -1.0222809761762619e-01 - - -5.5827599763870239e-01 1.2426029890775681e-02 - <_> - - 0 -1 927 5.2015138790011406e-03 - - 3.2800421118736267e-02 -1.4631250500679016e-01 - <_> - - 0 -1 928 9.3680468853563070e-04 - - -6.0438130050897598e-02 1.3095420598983765e-01 - <_> - - 0 -1 929 -7.4108080007135868e-03 - - -3.4674128890037537e-01 2.6007879525423050e-02 - <_> - 193 - -1.4360860586166382e+00 - - <_> - - 0 -1 930 -1.8665779381990433e-02 - - 2.9802250862121582e-01 -2.0164360105991364e-01 - <_> - - 0 -1 931 1.7876209318637848e-01 - - -2.8841730952262878e-01 8.5440836846828461e-02 - <_> - - 0 -1 932 -2.4368170648813248e-02 - - 2.9561281204223633e-01 -1.7508549988269806e-01 - <_> - - 0 -1 933 1.5175679326057434e-01 - - 5.5181410163640976e-02 -8.0556839704513550e-02 - <_> - - 0 -1 934 4.3565638363361359e-02 - - -3.0507868528366089e-01 9.0460099279880524e-02 - <_> - - 0 -1 935 -2.8217849321663380e-03 - - 1.3479979336261749e-01 -4.5820970088243484e-02 - <_> - - 0 -1 936 2.9153481125831604e-01 - - -2.5042079389095306e-02 -5.2862347412109375e+02 - <_> - - 0 -1 937 5.6751398369669914e-03 - - -2.0208150148391724e-01 1.3647970557212830e-01 - <_> - - 0 -1 938 -5.4361000657081604e-02 - - 2.1826750040054321e-01 -1.1021830141544342e-01 - <_> - - 0 -1 939 -1.8514929339289665e-02 - - 9.9700883030891418e-02 -8.7660886347293854e-02 - <_> - - 0 -1 940 1.0826139710843563e-02 - - -9.0239629149436951e-02 2.3028810322284698e-01 - <_> - - 0 -1 941 -5.4915390908718109e-02 - - 1.4848540723323822e-01 -1.5246839821338654e-01 - <_> - - 0 -1 942 -1.0018239915370941e-01 - - 3.1870540976524353e-01 -5.9569828212261200e-02 - <_> - - 0 -1 943 -1.2449700385332108e-02 - - 1.9122719764709473e-01 -8.6464017629623413e-02 - <_> - - 0 -1 944 -2.4818619713187218e-02 - - -4.2524629831314087e-01 4.8842970281839371e-02 - <_> - - 0 -1 945 -1.0368289798498154e-01 - - -3.7893599271774292e-01 -2.5603040121495724e-03 - <_> - - 0 -1 946 -2.7756340801715851e-02 - - 2.0152160525321960e-01 -9.3846760690212250e-02 - <_> - - 0 -1 947 1.2664039968512952e-04 - - -1.0433270037174225e-01 5.8694850653409958e-02 - <_> - - 0 -1 948 1.0114379983860999e-04 - - -2.1999250352382660e-01 7.4510157108306885e-02 - <_> - - 0 -1 949 -2.2384760901331902e-02 - - -5.4830861091613770e-01 3.2939050346612930e-02 - <_> - - 0 -1 950 1.2907509692013264e-02 - - 3.2581768929958344e-02 -4.3887349963188171e-01 - <_> - - 0 -1 951 -2.8063610196113586e-02 - - 2.8911450505256653e-01 -6.3902527093887329e-02 - <_> - - 0 -1 952 1.5816820785403252e-02 - - -7.7197156846523285e-02 2.3951299488544464e-01 - <_> - - 0 -1 953 1.1950709857046604e-02 - - 1.5830170363187790e-02 -5.3843390941619873e-01 - <_> - - 0 -1 954 -8.8720219209790230e-03 - - -4.2367440462112427e-01 3.3000521361827850e-02 - <_> - - 0 -1 955 3.6972928792238235e-02 - - -7.0859201252460480e-02 3.5152399539947510e-01 - <_> - - 0 -1 956 3.9606958627700806e-02 - - -4.6960968524217606e-02 3.6596560478210449e-01 - <_> - - 0 -1 957 -6.6295927762985229e-01 - - -3.0152958631515503e-01 9.6956668421626091e-03 - <_> - - 0 -1 958 2.4906129110604525e-03 - - 4.4226419180631638e-02 -3.2908758521080017e-01 - <_> - - 0 -1 959 -1.3971859589219093e-02 - - 1.5589240193367004e-01 -1.1601889878511429e-01 - <_> - - 0 -1 960 -1.1375070363283157e-01 - - 1.1485689878463745e-01 -1.3213649392127991e-01 - <_> - - 0 -1 961 2.9911810159683228e-01 - - 6.8873511627316475e-03 -3.8814491033554077e-01 - <_> - - 0 -1 962 1.7687779664993286e-01 - - -5.3250420838594437e-02 3.0713948607444763e-01 - <_> - - 0 -1 963 1.1000049859285355e-01 - - -6.1691209673881531e-02 2.2423219680786133e-01 - <_> - - 0 -1 964 1.1481890454888344e-02 - - -3.6849450320005417e-02 3.6994668841362000e-01 - <_> - - 0 -1 965 -4.3482281267642975e-02 - - 6.6759057343006134e-02 -8.2093171775341034e-02 - <_> - - 0 -1 966 -3.2705739140510559e-03 - - -3.1203529238700867e-01 3.6861110478639603e-02 - <_> - - 0 -1 967 -1.9539929926395416e-02 - - 2.0876990258693695e-01 -6.3567101955413818e-02 - <_> - - 0 -1 968 1.1419560015201569e-01 - - 3.7483099848031998e-02 -3.3699938654899597e-01 - <_> - - 0 -1 969 -5.4715350270271301e-02 - - -6.4842391014099121e-01 5.5782468989491463e-03 - <_> - - 0 -1 970 -2.0697079598903656e-02 - - -4.0871649980545044e-01 2.7801020070910454e-02 - <_> - - 0 -1 971 1.6291709616780281e-02 - - -3.0260639265179634e-02 2.3359869420528412e-01 - <_> - - 0 -1 972 1.5691660344600677e-02 - - 3.3188868314027786e-02 -3.6992970108985901e-01 - <_> - - 0 -1 973 -1.4982360415160656e-02 - - -5.0467449426651001e-01 2.6605149731040001e-02 - <_> - - 0 -1 974 1.6306430101394653e-01 - - 2.4150509387254715e-02 -4.5440959930419922e-01 - <_> - - 0 -1 975 -2.9636370018124580e-02 - - 3.2348120212554932e-01 -1.9519040361046791e-02 - <_> - - 0 -1 976 -2.1226789802312851e-02 - - 3.5008680820465088e-01 -3.6894138902425766e-02 - <_> - - 0 -1 977 -1.8383020162582397e-01 - - 1.1249549686908722e-01 -1.2387230247259140e-01 - <_> - - 0 -1 978 -1.9727550446987152e-02 - - 2.2184500098228455e-01 -5.3758859634399414e-02 - <_> - - 0 -1 979 -5.5899647995829582e-03 - - 8.0602303147315979e-02 -7.4731111526489258e-02 - <_> - - 0 -1 980 -2.0963780581951141e-02 - - -3.9255261421203613e-01 2.8758550062775612e-02 - <_> - - 0 -1 981 -1.6138730570673943e-02 - - 1.1986479908227921e-01 -1.2855109572410583e-01 - <_> - - 0 -1 982 -7.6363878324627876e-03 - - 1.7836730182170868e-01 -6.4110390841960907e-02 - <_> - - 0 -1 983 2.8579769656062126e-02 - - -7.4946638196706772e-03 1.2914970517158508e-01 - <_> - - 0 -1 984 -2.0712960511445999e-02 - - 9.4717502593994141e-02 -1.3751709461212158e-01 - <_> - - 0 -1 985 3.3245470840483904e-03 - - 4.3691419064998627e-02 -4.3515149503946304e-02 - <_> - - 0 -1 986 -1.5657799318432808e-02 - - 1.1052600294351578e-01 -9.3203462660312653e-02 - <_> - - 0 -1 987 -8.9033246040344238e-03 - - 2.1368870139122009e-01 -5.7228211313486099e-02 - <_> - - 0 -1 988 -2.2517060860991478e-02 - - -5.4505091905593872e-01 2.4187430739402771e-02 - <_> - - 0 -1 989 -9.1859940439462662e-03 - - 5.9040650725364685e-02 -6.6338866949081421e-02 - <_> - - 0 -1 990 -1.9304599612951279e-02 - - -3.4585410356521606e-01 2.9562819749116898e-02 - <_> - - 0 -1 991 5.9454459697008133e-03 - - -3.1828779727220535e-02 1.5746699273586273e-01 - <_> - - 0 -1 992 -2.1486129611730576e-02 - - -5.1556599140167236e-01 1.9380800426006317e-02 - <_> - - 0 -1 993 -1.4807850122451782e-02 - - -4.4625368714332581e-01 2.5272980332374573e-02 - <_> - - 0 -1 994 4.1915681213140488e-02 - - 4.0864139795303345e-02 -2.2498999536037445e-01 - <_> - - 0 -1 995 1.8542360514402390e-02 - - -4.5628201216459274e-02 1.2479899823665619e-01 - <_> - - 0 -1 996 -2.1978599950671196e-02 - - 1.6626510024070740e-01 -6.8181529641151428e-02 - <_> - - 0 -1 997 -2.2305909544229507e-02 - - 1.2176349759101868e-01 -4.6996518969535828e-02 - <_> - - 0 -1 998 2.7781110256910324e-02 - - -3.6972120404243469e-02 2.8523659706115723e-01 - <_> - - 0 -1 999 -1.7994759604334831e-02 - - 1.0447979718446732e-01 -9.9000662565231323e-02 - <_> - - 0 -1 1000 1.4754800125956535e-02 - - 2.1869139745831490e-02 -4.3043890595436096e-01 - <_> - - 0 -1 1001 -7.7450848184525967e-03 - - 3.2999970018863678e-02 -9.8474316298961639e-02 - <_> - - 0 -1 1002 -2.7451539412140846e-02 - - 1.9599549472332001e-01 -5.0378508865833282e-02 - <_> - - 0 -1 1003 -3.0835710931569338e-03 - - -3.3752480149269104e-01 3.3910509198904037e-02 - <_> - - 0 -1 1004 -7.1450988762080669e-03 - - -6.7807298898696899e-01 1.1928509920835495e-02 - <_> - - 0 -1 1005 -1.1973819928243756e-03 - - 1.2777930498123169e-01 -5.5520929396152496e-02 - <_> - - 0 -1 1006 1.2104130291845649e-04 - - -9.7394056618213654e-02 9.9989913403987885e-02 - <_> - - 0 -1 1007 1.1540119885466993e-04 - - -3.8101248443126678e-02 5.3142480552196503e-02 - <_> - - 0 -1 1008 -1.0320250294171274e-04 - - 1.1880250275135040e-01 -8.2887932658195496e-02 - <_> - - 0 -1 1009 3.0217070132493973e-02 - - 1.3077120296657085e-02 -4.2511129379272461e-01 - <_> - - 0 -1 1010 1.4480530284345150e-02 - - -6.4665600657463074e-02 1.3651260733604431e-01 - <_> - - 0 -1 1011 7.6259230263531208e-03 - - 2.1206660196185112e-02 -4.8069199919700623e-01 - <_> - - 0 -1 1012 1.2706779874861240e-02 - - 2.0432170480489731e-02 -3.8036710023880005e-01 - <_> - - 0 -1 1013 -7.0849858224391937e-02 - - -6.7007941007614136e-01 5.8502932079136372e-03 - <_> - - 0 -1 1014 -3.6607089638710022e-01 - - -6.5651381015777588e-01 1.1938090436160564e-02 - <_> - - 0 -1 1015 6.7676370963454247e-03 - - -5.4737601429224014e-02 1.3349209725856781e-01 - <_> - - 0 -1 1016 -5.8495830744504929e-03 - - 5.5006939917802811e-02 -1.7087200284004211e-01 - <_> - - 0 -1 1017 -1.3192510232329369e-02 - - 2.0252169668674469e-01 -4.6748850494623184e-02 - <_> - - 0 -1 1018 -2.6243979111313820e-02 - - 1.7131200432777405e-01 -5.1742289215326309e-02 - <_> - - 0 -1 1019 -1.9836300611495972e-01 - - 6.8348598480224609e-01 -5.4989140480756760e-03 - <_> - - 0 -1 1020 -9.1264583170413971e-02 - - -3.8122451305389404e-01 2.4656090885400772e-02 - <_> - - 0 -1 1021 5.1045559346675873e-02 - - 4.7809281386435032e-03 -5.1388448476791382e-01 - <_> - - 0 -1 1022 -6.2677852809429169e-02 - - 1.6051210463047028e-01 -6.9291412830352783e-02 - <_> - - 0 -1 1023 2.1998759359121323e-02 - - -6.3557699322700500e-02 1.0258419811725616e-01 - <_> - - 0 -1 1024 -9.8559096455574036e-02 - - 4.1666871309280396e-01 -2.2982550784945488e-02 - <_> - - 0 -1 1025 -7.8866537660360336e-03 - - 1.4133100211620331e-01 -6.2746547162532806e-02 - <_> - - 0 -1 1026 5.7192011736333370e-03 - - 1.4939470216631889e-02 -5.6794857978820801e-01 - <_> - - 0 -1 1027 -1.2656320177484304e-04 - - 1.5409049391746521e-01 -2.7226370573043823e-01 - <_> - - 0 -1 1028 -1.5363659709692001e-02 - - -5.5752921104431152e-01 1.6629980877041817e-02 - <_> - - 0 -1 1029 1.1747309938073158e-02 - - -2.8669150546193123e-02 8.4919847548007965e-02 - <_> - - 0 -1 1030 -6.6546360030770302e-03 - - 1.5057440102100372e-01 -5.8735769242048264e-02 - <_> - - 0 -1 1031 -8.2943234592676163e-03 - - -4.9023759365081787e-01 1.1976949870586395e-02 - <_> - - 0 -1 1032 -1.9957730174064636e-01 - - -3.2048851251602173e-01 2.4448549374938011e-02 - <_> - - 0 -1 1033 9.1623470187187195e-02 - - -1.1565860360860825e-02 1.2121780216693878e-01 - <_> - - 0 -1 1034 6.1579290777444839e-03 - - 2.3432880640029907e-02 -3.4702080488204956e-01 - <_> - - 0 -1 1035 -6.6728810779750347e-03 - - 1.3372699916362762e-01 -6.0459390282630920e-02 - <_> - - 0 -1 1036 1.1792629811679944e-04 - - -1.1258299648761749e-01 6.9133318960666656e-02 - <_> - - 0 -1 1037 -1.1926449835300446e-02 - - 1.3051030039787292e-01 -3.8503900170326233e-02 - <_> - - 0 -1 1038 6.1339139938354492e-03 - - 1.7326330766081810e-02 -4.5990580320358276e-01 - <_> - - 0 -1 1039 -3.7309920787811279e-01 - - -3.4024098515510559e-01 2.0620759576559067e-02 - <_> - - 0 -1 1040 3.2631669193506241e-02 - - 1.4541059732437134e-02 -5.0915217399597168e-01 - <_> - - 0 -1 1041 -3.3705669920891523e-03 - - 1.6251499950885773e-01 -2.7433190494775772e-02 - <_> - - 0 -1 1042 9.6422692877240479e-05 - - -8.0862849950790405e-02 8.7025731801986694e-02 - <_> - - 0 -1 1043 -1.3675920665264130e-01 - - 4.6943631023168564e-02 -5.4120488464832306e-02 - <_> - - 0 -1 1044 -1.8601629883050919e-02 - - 1.1531089991331100e-01 -7.5560040771961212e-02 - <_> - - 0 -1 1045 -3.9706271141767502e-02 - - -4.1564889252185822e-02 3.4207019954919815e-02 - <_> - - 0 -1 1046 -9.7793333232402802e-02 - - -2.5549450516700745e-01 3.2621458172798157e-02 - <_> - - 0 -1 1047 -1.2463969737291336e-01 - - 1.3530750572681427e-01 -5.6000139564275742e-02 - <_> - - 0 -1 1048 -7.3466179892420769e-03 - - 1.3280290365219116e-01 -5.9977211058139801e-02 - <_> - - 0 -1 1049 -9.1007994487881660e-03 - - 8.4215812385082245e-02 -9.5823230221867561e-03 - <_> - - 0 -1 1050 -5.4712329059839249e-02 - - -7.4970638751983643e-01 9.1644506901502609e-03 - <_> - - 0 -1 1051 7.8011681325733662e-03 - - -5.8472141623497009e-02 7.5802512466907501e-02 - <_> - - 0 -1 1052 1.1504740454256535e-02 - - -5.4455708712339401e-02 1.3103820383548737e-01 - <_> - - 0 -1 1053 -3.0265720561146736e-03 - - 4.3595738708972931e-02 -3.9831820875406265e-02 - <_> - - 0 -1 1054 3.9084558375179768e-03 - - -7.0230223238468170e-02 1.1850009858608246e-01 - <_> - - 0 -1 1055 -1.7115350812673569e-02 - - -4.8753368854522705e-01 4.2606718838214874e-02 - <_> - - 0 -1 1056 7.2391182184219360e-02 - - -3.0713820829987526e-02 2.8776410222053528e-01 - <_> - - 0 -1 1057 2.0542759448289871e-02 - - -7.5590826570987701e-02 1.0416489839553833e-01 - <_> - - 0 -1 1058 1.2337979860603809e-02 - - 3.3167198300361633e-02 -2.3291139304637909e-01 - <_> - - 0 -1 1059 -4.0956601500511169e-02 - - 2.4578510224819183e-01 -3.2600268721580505e-02 - <_> - - 0 -1 1060 2.2755319252610207e-02 - - 2.3990869522094727e-02 -3.3137750625610352e-01 - <_> - - 0 -1 1061 -2.6924870908260345e-03 - - 6.6952548921108246e-02 -1.1627510190010071e-01 - <_> - - 0 -1 1062 1.0185319930315018e-02 - - -6.4380377531051636e-02 1.7856849730014801e-01 - <_> - - 0 -1 1063 2.1892699878662825e-03 - - 2.8202280402183533e-02 -1.9460220634937286e-01 - <_> - - 0 -1 1064 1.7614009976387024e-01 - - 1.6212200745940208e-02 -4.5734050869941711e-01 - <_> - - 0 -1 1065 -2.4204170331358910e-03 - - 1.7359940707683563e-01 -3.7762571126222610e-02 - <_> - - 0 -1 1066 -1.4709460083395243e-03 - - 1.4086340367794037e-01 -5.3505048155784607e-02 - <_> - - 0 -1 1067 -1.7629310488700867e-02 - - -4.3374711275100708e-01 1.7910350114107132e-02 - <_> - - 0 -1 1068 5.3175981156527996e-03 - - 2.6618450880050659e-02 -2.9816010594367981e-01 - <_> - - 0 -1 1069 1.8915910040959716e-03 - - 3.5916399210691452e-02 -2.0904560387134552e-01 - <_> - - 0 -1 1070 1.3355260016396642e-03 - - 4.0930848568677902e-02 -1.8434959650039673e-01 - <_> - - 0 -1 1071 -6.9594341330230236e-03 - - 1.7677329480648041e-01 -1.7047759145498276e-02 - <_> - - 0 -1 1072 9.1313078883104026e-05 - - -7.4369266629219055e-02 9.6271850168704987e-02 - <_> - - 0 -1 1073 -4.2544947937130928e-03 - - 4.4604320079088211e-02 -6.3106119632720947e-02 - <_> - - 0 -1 1074 -1.0578350338619202e-04 - - 9.1437682509422302e-02 -8.2973442971706390e-02 - <_> - - 0 -1 1075 -1.0263289732392877e-04 - - 1.0793939977884293e-01 -7.9892612993717194e-02 - <_> - - 0 -1 1076 -2.4791778996586800e-03 - - -2.5868308544158936e-01 2.6286249980330467e-02 - <_> - - 0 -1 1077 -1.6074670478701591e-02 - - 1.0526800155639648e-01 -6.5673381090164185e-02 - <_> - - 0 -1 1078 -1.4310239814221859e-02 - - -4.9289679527282715e-01 1.5973109751939774e-02 - <_> - - 0 -1 1079 -8.8974033133126795e-05 - - 5.8744948357343674e-02 -4.5313041657209396e-02 - <_> - - 0 -1 1080 1.0300390422344208e-03 - - -5.5908720940351486e-02 1.4394310116767883e-01 - <_> - - 0 -1 1081 3.9175990968942642e-03 - - 2.9270060360431671e-02 -1.9770559668540955e-01 - <_> - - 0 -1 1082 1.0633670171955600e-04 - - -1.0704860091209412e-01 9.6238046884536743e-02 - <_> - - 0 -1 1083 4.2181659489870071e-02 - - -1.0299479588866234e-02 5.1465499401092529e-01 - <_> - - 0 -1 1084 -1.2948510237038136e-02 - - 1.9178110361099243e-01 -3.9072200655937195e-02 - <_> - - 0 -1 1085 -1.1697240173816681e-02 - - 6.8906992673873901e-02 -2.0180009305477142e-02 - <_> - - 0 -1 1086 1.4815540052950382e-02 - - -6.4537003636360168e-02 1.1534599959850311e-01 - <_> - - 0 -1 1087 1.2253019667696208e-04 - - -1.3507540524005890e-01 6.0662679374217987e-02 - <_> - - 0 -1 1088 -3.1337419059127569e-03 - - 1.1237639933824539e-01 -6.6894769668579102e-02 - <_> - - 0 -1 1089 -6.8492516875267029e-02 - - 3.1228348612785339e-01 -1.0049100033938885e-02 - <_> - - 0 -1 1090 2.8148779645562172e-02 - - 1.1834469623863697e-02 -5.9781688451766968e-01 - <_> - - 0 -1 1091 3.8532231003046036e-02 - - -2.2291859611868858e-02 1.8402780592441559e-01 - <_> - - 0 -1 1092 7.2883451357483864e-03 - - -4.7932468354701996e-02 1.4016370475292206e-01 - <_> - - 0 -1 1093 -6.5842391923069954e-03 - - -4.4751879572868347e-01 1.1767829768359661e-02 - <_> - - 0 -1 1094 -1.1306579835945740e-04 - - 6.5438106656074524e-02 -1.0187850147485733e-01 - <_> - - 0 -1 1095 -4.1586891748011112e-03 - - -2.5771650671958923e-01 2.0321190357208252e-02 - <_> - - 0 -1 1096 3.0523419380187988e-02 - - 1.7388790845870972e-02 -3.7316098809242249e-01 - <_> - - 0 -1 1097 -8.5078412666916847e-04 - - -3.9039680361747742e-01 8.0188266932964325e-02 - <_> - - 0 -1 1098 -1.0892679711105302e-04 - - 8.3534307777881622e-02 -8.1396430730819702e-02 - <_> - - 0 -1 1099 -1.9891309738159180e-01 - - -4.6180391311645508e-01 5.7829180732369423e-03 - <_> - - 0 -1 1100 -3.1243480741977692e-02 - - 2.5022289156913757e-01 -3.0032670125365257e-02 - <_> - - 0 -1 1101 2.3447209969162941e-02 - - -2.5061629712581635e-02 1.9670550525188446e-01 - <_> - - 0 -1 1102 1.1578369885683060e-02 - - 1.7265379428863525e-02 -3.8913309574127197e-01 - <_> - - 0 -1 1103 -2.6445279363542795e-03 - - 6.9367542862892151e-02 -4.0608219802379608e-02 - <_> - - 0 -1 1104 3.5718798637390137e-02 - - -3.0876770615577698e-02 2.2570140659809113e-01 - <_> - - 0 -1 1105 -3.2863069325685501e-02 - - -5.2084881067276001e-01 1.5310989692807198e-02 - <_> - - 0 -1 1106 1.2007729709148407e-01 - - 9.3891620635986328e-03 -5.9657102823257446e-01 - <_> - - 0 -1 1107 -6.8977959454059601e-03 - - 7.1826606988906860e-02 -3.8691330701112747e-02 - <_> - - 0 -1 1108 -1.1164099851157516e-04 - - 9.0559646487236023e-02 -7.4175752699375153e-02 - <_> - - 0 -1 1109 -8.6451061069965363e-03 - - -4.6491929888725281e-01 1.1580149643123150e-02 - <_> - - 0 -1 1110 1.1185959738213569e-04 - - -7.8282259404659271e-02 8.7556958198547363e-02 - <_> - - 0 -1 1111 -3.3530138898640871e-03 - - 6.3597083091735840e-02 -8.3768010139465332e-02 - <_> - - 0 -1 1112 -4.3913818895816803e-02 - - -7.4856078624725342e-01 8.7825870141386986e-03 - <_> - - 0 -1 1113 -3.0952990055084229e-03 - - 1.6955019533634186e-01 -3.9198450744152069e-02 - <_> - - 0 -1 1114 3.2301219180226326e-03 - - -1.2238019704818726e-01 6.1057928949594498e-02 - <_> - - 0 -1 1115 -4.5945771038532257e-02 - - -3.0185928940773010e-01 8.8831810280680656e-03 - <_> - - 0 -1 1116 3.7468101829290390e-02 - - 1.5233550220727921e-02 -4.4433480501174927e-01 - <_> - - 0 -1 1117 -9.6279982244595885e-04 - - 1.4550130069255829e-01 -5.5346839129924774e-02 - <_> - - 0 -1 1118 9.5942807092797011e-05 - - -8.0140501260757446e-02 8.4200643002986908e-02 - <_> - - 0 -1 1119 1.2208779808133841e-03 - - -6.0854949057102203e-02 1.3992980122566223e-01 - <_> - - 0 -1 1120 1.0304830357199535e-04 - - -9.1390810906887054e-02 9.0698756277561188e-02 - <_> - - 0 -1 1121 6.7147910594940186e-03 - - 1.7061460763216019e-02 -4.7845649719238281e-01 - <_> - - 0 -1 1122 1.1389680003048852e-04 - - -1.2051180005073547e-01 6.1523791402578354e-02 - <_> - 246 - -1.5257749557495117e+00 - - <_> - - 0 -1 1123 -2.4859240278601646e-02 - - 3.2212960720062256e-01 -1.7630000412464142e-01 - <_> - - 0 -1 1124 -2.5715090334415436e-02 - - 2.1644030511379242e-01 -2.0330239832401276e-01 - <_> - - 0 -1 1125 1.0584949702024460e-01 - - 1.0783869947772473e-04 5.5255950927734375e+02 - <_> - - 0 -1 1126 -8.6654294282197952e-03 - - 8.9402712881565094e-02 -8.5205726325511932e-02 - <_> - - 0 -1 1127 -1.1314759962260723e-02 - - 1.7304340004920959e-01 -1.8126599490642548e-01 - <_> - - 0 -1 1128 -5.1866549998521805e-02 - - 2.4890810251235962e-01 -8.6208656430244446e-02 - <_> - - 0 -1 1129 -4.5156660489737988e-03 - - 2.8406441211700439e-01 -1.1907359957695007e-01 - <_> - - 0 -1 1130 -1.5003410167992115e-02 - - 1.8889980018138885e-01 -8.7035499513149261e-02 - <_> - - 0 -1 1131 -1.0107509791851044e-02 - - 2.6107978820800781e-01 -9.6679881215095520e-02 - <_> - - 0 -1 1132 -3.4547690302133560e-02 - - 1.9014529883861542e-01 -9.6255972981452942e-02 - <_> - - 0 -1 1133 -4.4875599443912506e-02 - - 2.4909320473670959e-01 -8.9669972658157349e-02 - <_> - - 0 -1 1134 2.1081630140542984e-02 - - -2.1065710484981537e-01 5.6633379310369492e-02 - <_> - - 0 -1 1135 -4.0543689392507076e-03 - - 2.0171619951725006e-01 -7.8482761979103088e-02 - <_> - - 0 -1 1136 -2.4460731074213982e-03 - - -2.7655521035194397e-01 2.7891060337424278e-02 - <_> - - 0 -1 1137 1.0416610166430473e-04 - - -2.1726490557193756e-01 6.8724997341632843e-02 - <_> - - 0 -1 1138 -7.0905950851738453e-03 - - 3.9171610027551651e-02 -7.2237558662891388e-02 - <_> - - 0 -1 1139 4.2705261148512363e-03 - - 3.4430060535669327e-02 -4.5147350430488586e-01 - <_> - - 0 -1 1140 2.1259069442749023e-02 - - 4.3162569403648376e-02 -4.9452671408653259e-01 - <_> - - 0 -1 1141 -2.9957989230751991e-02 - - 1.6304069757461548e-01 -9.0024642646312714e-02 - <_> - - 0 -1 1142 -4.7675549983978271e-02 - - -5.6908601522445679e-01 3.1040430068969727e-02 - <_> - - 0 -1 1143 -2.1358959376811981e-02 - - -3.6729431152343750e-01 2.9709909111261368e-02 - <_> - - 0 -1 1144 -1.7130080610513687e-02 - - 1.9964259862899780e-01 -6.1701580882072449e-02 - <_> - - 0 -1 1145 2.6973700150847435e-02 - - -9.1998912394046783e-02 1.4968660473823547e-01 - <_> - - 0 -1 1146 1.5395210124552250e-02 - - 5.8998059481382370e-02 -4.0311428904533386e-01 - <_> - - 0 -1 1147 -1.3613039627671242e-02 - - -3.9532521367073059e-01 2.6161760091781616e-02 - <_> - - 0 -1 1148 -1.0206910222768784e-01 - - -1.6730350255966187e-01 2.6923289522528648e-02 - <_> - - 0 -1 1149 -4.5802921056747437e-02 - - 1.1230929940938950e-01 -9.9279657006263733e-02 - <_> - - 0 -1 1150 -5.1968779414892197e-02 - - 1.9432289898395538e-01 -5.0929531455039978e-02 - <_> - - 0 -1 1151 -4.2487609386444092e-01 - - 3.5886010527610779e-01 -3.4976560622453690e-02 - <_> - - 0 -1 1152 7.9517379403114319e-02 - - 2.0976619794964790e-02 -1.9810600578784943e-01 - <_> - - 0 -1 1153 -4.5309830456972122e-02 - - 2.5174209475517273e-01 -4.7164641320705414e-02 - <_> - - 0 -1 1154 4.0600001811981201e-02 - - 5.9903971850872040e-03 -5.0524187088012695e-01 - <_> - - 0 -1 1155 -2.8276300057768822e-02 - - -4.4258609414100647e-01 2.4936830624938011e-02 - <_> - - 0 -1 1156 9.3841962516307831e-02 - - 1.7748980317264795e-03 -4.3988320231437683e-01 - <_> - - 0 -1 1157 -1.1791589856147766e-01 - - -3.4417560696601868e-01 3.3724360167980194e-02 - <_> - - 0 -1 1158 -1.5139310061931610e-01 - - 6.0411769896745682e-02 -5.3201220929622650e-02 - <_> - - 0 -1 1159 -2.2562649846076965e-01 - - -3.2119071483612061e-01 3.5429101437330246e-02 - <_> - - 0 -1 1160 1.2930350378155708e-02 - - 3.3611949533224106e-02 -3.9412268996238708e-01 - <_> - - 0 -1 1161 -2.4919810239225626e-03 - - 1.7061330378055573e-01 -6.2898688018321991e-02 - <_> - - 0 -1 1162 -2.4559959769248962e-02 - - -4.1337108612060547e-01 1.7610160633921623e-02 - <_> - - 0 -1 1163 4.1320499777793884e-01 - - -3.9126798510551453e-02 2.6587060093879700e-01 - <_> - - 0 -1 1164 -3.0522849410772324e-02 - - -3.8158100843429565e-01 3.6273371428251266e-02 - <_> - - 0 -1 1165 -9.8860889673233032e-02 - - -2.6913830637931824e-01 3.9270389825105667e-02 - <_> - - 0 -1 1166 1.1311320122331381e-04 - - -1.4554770290851593e-01 5.6427501142024994e-02 - <_> - - 0 -1 1167 7.7236247307155281e-05 - - -1.0340359807014465e-01 8.8167242705821991e-02 - <_> - - 0 -1 1168 1.9930439069867134e-02 - - 8.3390101790428162e-03 -4.1726669669151306e-01 - <_> - - 0 -1 1169 -3.3970959484577179e-02 - - 2.3175339400768280e-01 -4.0641728788614273e-02 - <_> - - 0 -1 1170 -2.8630539774894714e-02 - - -5.5509167909622192e-01 1.6257530078291893e-02 - <_> - - 0 -1 1171 4.9788239412009716e-03 - - 3.1474281102418900e-02 -2.8877478837966919e-01 - <_> - - 0 -1 1172 -5.6940698996186256e-03 - - 2.3032620549201965e-01 -2.0171329379081726e-02 - <_> - - 0 -1 1173 1.9577480852603912e-03 - - -5.6104071438312531e-02 1.6390749812126160e-01 - <_> - - 0 -1 1174 -1.0736430063843727e-02 - - 1.3881990313529968e-01 -5.9501811861991882e-02 - <_> - - 0 -1 1175 -3.9446078240871429e-02 - - -5.3395891189575195e-01 1.8544889986515045e-02 - <_> - - 0 -1 1176 -2.5590090081095695e-02 - - -3.0474209785461426e-01 2.0556690171360970e-02 - <_> - - 0 -1 1177 -2.9707629233598709e-02 - - -4.3856319785118103e-01 2.0257510244846344e-02 - <_> - - 0 -1 1178 1.1870719754369929e-04 - - -5.5606078356504440e-02 5.5818539112806320e-02 - <_> - - 0 -1 1179 6.0403849929571152e-03 - - -6.2561951577663422e-02 1.4033129811286926e-01 - <_> - - 0 -1 1180 -2.3701060563325882e-03 - - 1.0411810129880905e-01 -4.6637579798698425e-02 - <_> - - 0 -1 1181 -5.6802731007337570e-02 - - 1.4273630082607269e-01 -6.4138323068618774e-02 - <_> - - 0 -1 1182 1.2178280390799046e-02 - - -5.7620238512754440e-02 1.5788230299949646e-01 - <_> - - 0 -1 1183 -4.0311398915946484e-03 - - -3.2791781425476074e-01 2.9163230210542679e-02 - <_> - - 0 -1 1184 5.4544620215892792e-03 - - -3.4765560179948807e-02 2.2650560736656189e-01 - <_> - - 0 -1 1185 -1.2505230307579041e-01 - - 1.1683230102062225e-01 -7.3438726365566254e-02 - <_> - - 0 -1 1186 -1.6150200366973877e-01 - - 1.4328670501708984e-01 -7.7370628714561462e-03 - <_> - - 0 -1 1187 -1.5369510650634766e-01 - - -4.0407729148864746e-01 2.5253390893340111e-02 - <_> - - 0 -1 1188 1.3832460157573223e-02 - - -9.6680596470832825e-03 2.2449059784412384e-01 - <_> - - 0 -1 1189 -1.9752800464630127e-02 - - -2.7250349521636963e-01 3.1350579112768173e-02 - <_> - - 0 -1 1190 -1.0762990452349186e-02 - - -3.8410690426826477e-01 1.3031579554080963e-02 - <_> - - 0 -1 1191 2.1228760480880737e-02 - - 2.6058429852128029e-02 -3.0802738666534424e-01 - <_> - - 0 -1 1192 -9.2247471911832690e-05 - - 4.5628391206264496e-02 -5.6000810116529465e-02 - <_> - - 0 -1 1193 -1.9652589689940214e-03 - - 1.3385680317878723e-01 -6.4132191240787506e-02 - <_> - - 0 -1 1194 2.8215510770678520e-02 - - 1.5388909727334976e-02 -2.1875369548797607e-01 - <_> - - 0 -1 1195 1.2585399963427335e-04 - - -1.3956110179424286e-01 5.9270460158586502e-02 - <_> - - 0 -1 1196 -6.9362311623990536e-03 - - 2.1816599369049072e-01 -2.0222889259457588e-02 - <_> - - 0 -1 1197 -1.7958630342036486e-03 - - 1.5875579416751862e-01 -4.6382639557123184e-02 - <_> - - 0 -1 1198 9.5576168969273567e-03 - - -3.9091229438781738e-02 1.3414810597896576e-01 - <_> - - 0 -1 1199 -6.2396150082349777e-02 - - -4.6752119064331055e-01 1.8674060702323914e-02 - <_> - - 0 -1 1200 -1.0964560351567343e-04 - - 3.8066919893026352e-02 -5.3127989172935486e-02 - <_> - - 0 -1 1201 -1.9344469532370567e-02 - - -4.7804948687553406e-01 1.6591800376772881e-02 - <_> - - 0 -1 1202 7.8327268362045288e-02 - - 1.8126649782061577e-02 -3.9800310134887695e-01 - <_> - - 0 -1 1203 -3.6987459659576416e-01 - - 1.5705190598964691e-01 -5.0288591533899307e-02 - <_> - - 0 -1 1204 -4.6618398278951645e-02 - - 1.8562039732933044e-01 -4.7500848770141602e-02 - <_> - - 0 -1 1205 -2.2177870571613312e-01 - - 3.6903271079063416e-01 -2.1891359239816666e-02 - <_> - - 0 -1 1206 1.0199939832091331e-02 - - -2.0008459687232971e-02 1.8920080363750458e-01 - <_> - - 0 -1 1207 -1.3876829762011766e-03 - - 1.3981680572032928e-01 -5.5062200874090195e-02 - <_> - - 0 -1 1208 1.0204740101471543e-04 - - -1.5539169311523438e-01 9.1232098639011383e-02 - <_> - - 0 -1 1209 9.5603638328611851e-05 - - -9.6878476440906525e-02 8.0248139798641205e-02 - <_> - - 0 -1 1210 -5.3494791500270367e-03 - - 7.3209710419178009e-02 -5.5011261254549026e-02 - <_> - - 0 -1 1211 1.3007720001041889e-02 - - 2.4103149771690369e-02 -3.1236580014228821e-01 - <_> - - 0 -1 1212 2.9070049524307251e-02 - - -3.7642810493707657e-02 2.0871339738368988e-01 - <_> - - 0 -1 1213 2.1258399647194892e-04 - - -1.9390119612216949e-01 4.2593110352754593e-02 - <_> - - 0 -1 1214 1.2767249718308449e-02 - - 3.7468269467353821e-02 -3.4924089908599854e-01 - <_> - - 0 -1 1215 -3.5076010972261429e-02 - - 2.3502109944820404e-01 -3.6161709576845169e-02 - <_> - - 0 -1 1216 8.1403086369391531e-05 - - -3.2067000865936279e-02 5.0400421023368835e-02 - <_> - - 0 -1 1217 -1.7410600557923317e-02 - - 9.9460333585739136e-02 -7.5129806995391846e-02 - <_> - - 0 -1 1218 -5.4158121347427368e-03 - - 1.5448880195617676e-01 -5.9565600007772446e-02 - <_> - - 0 -1 1219 -2.7247680351138115e-02 - - -3.5382598638534546e-01 2.4235310032963753e-02 - <_> - - 0 -1 1220 -2.2197259590029716e-02 - - -2.9720589518547058e-01 2.1416569128632545e-02 - <_> - - 0 -1 1221 -8.5453793406486511e-02 - - 7.3914438486099243e-02 -9.8143801093101501e-02 - <_> - - 0 -1 1222 -2.6743279770016670e-02 - - -3.8940310478210449e-01 5.3767771460115910e-03 - <_> - - 0 -1 1223 -8.2498956471681595e-03 - - 1.9860340654850006e-01 -3.9557371288537979e-02 - <_> - - 0 -1 1224 -2.2797500714659691e-02 - - 9.9678412079811096e-02 -6.2613576650619507e-02 - <_> - - 0 -1 1225 9.7113639640156180e-05 - - -8.4188252687454224e-02 9.3866080045700073e-02 - <_> - - 0 -1 1226 2.9884429648518562e-02 - - -2.3356929421424866e-02 1.4618140459060669e-01 - <_> - - 0 -1 1227 -2.6803839951753616e-02 - - 1.4178399741649628e-01 -6.2550060451030731e-02 - <_> - - 0 -1 1228 -1.9411399960517883e-02 - - -6.3382750749588013e-01 1.6149589791893959e-02 - <_> - - 0 -1 1229 1.2110219895839691e-01 - - 2.3238999769091606e-02 -3.4702530503273010e-01 - <_> - - 0 -1 1230 9.2202579253353179e-05 - - -7.8421503305435181e-02 4.3959248811006546e-02 - <_> - - 0 -1 1231 1.7242589965462685e-02 - - 2.6261070743203163e-02 -2.9944649338722229e-01 - <_> - - 0 -1 1232 -1.1420710012316704e-02 - - -3.6522969603538513e-01 7.9645831137895584e-03 - <_> - - 0 -1 1233 -2.0810069516301155e-02 - - 1.3638339936733246e-01 -5.4033048450946808e-02 - <_> - - 0 -1 1234 -1.4103479683399200e-02 - - -3.7893921136856079e-01 1.3394010253250599e-02 - <_> - - 0 -1 1235 -4.7581768594682217e-03 - - -3.3748060464859009e-01 2.0751159638166428e-02 - <_> - - 0 -1 1236 1.6709830611944199e-02 - - -2.8125260025262833e-02 7.9117581248283386e-02 - <_> - - 0 -1 1237 -7.5444072484970093e-02 - - 3.5082611441612244e-01 -1.9444769248366356e-02 - <_> - - 0 -1 1238 1.7338210344314575e-01 - - -3.3310770522803068e-03 4.4801530241966248e-01 - <_> - - 0 -1 1239 -1.4232039451599121e-01 - - -2.2757869958877563e-01 3.3073060214519501e-02 - <_> - - 0 -1 1240 -2.2956749889999628e-03 - - 6.3606172800064087e-02 -3.3936798572540283e-02 - <_> - - 0 -1 1241 -1.0921280045295134e-04 - - 8.7956167757511139e-02 -9.4514213502407074e-02 - <_> - - 0 -1 1242 -1.5123720280826092e-02 - - 1.1071979999542236e-01 -2.7487419545650482e-02 - <_> - - 0 -1 1243 2.1835550665855408e-02 - - -4.8312459141016006e-02 1.4729049801826477e-01 - <_> - - 0 -1 1244 8.3796076476573944e-02 - - 1.6879159957170486e-02 -2.2147430479526520e-01 - <_> - - 0 -1 1245 -3.8371179252862930e-02 - - -5.2152740955352783e-01 1.4304329641163349e-02 - <_> - - 0 -1 1246 1.7588760238140821e-03 - - -4.3274711817502975e-02 4.0150411427021027e-02 - <_> - - 0 -1 1247 -1.6422629356384277e-02 - - -5.8441460132598877e-01 1.0517139919102192e-02 - <_> - - 0 -1 1248 1.2245160341262817e-01 - - -9.6191419288516045e-03 1.8290150165557861e-01 - <_> - - 0 -1 1249 -2.7571219950914383e-02 - - -5.1605522632598877e-01 1.2647570110857487e-02 - <_> - - 0 -1 1250 -2.2236290574073792e-01 - - 3.4756079316139221e-01 -1.0084490291774273e-02 - <_> - - 0 -1 1251 -2.2003330290317535e-02 - - -2.8134641051292419e-01 2.2772060707211494e-02 - <_> - - 0 -1 1252 -4.2912889271974564e-02 - - -4.7846621274948120e-01 1.2552970089018345e-02 - <_> - - 0 -1 1253 -1.4352230355143547e-02 - - 1.6642050445079803e-01 -4.6472709625959396e-02 - <_> - - 0 -1 1254 -4.1513590258546174e-04 - - -2.5722318887710571e-01 7.7890746295452118e-02 - <_> - - 0 -1 1255 1.2504369951784611e-03 - - -4.4778529554605484e-02 1.6678680479526520e-01 - <_> - - 0 -1 1256 1.7647480592131615e-02 - - 7.0636598393321037e-03 -3.3736529946327209e-01 - <_> - - 0 -1 1257 -3.4471070393919945e-03 - - 7.5172327458858490e-02 -8.8124260306358337e-02 - <_> - - 0 -1 1258 -5.0494200550019741e-03 - - 1.0575070232152939e-01 -8.7237127125263214e-02 - <_> - - 0 -1 1259 -3.4959301352500916e-02 - - -4.6849849820137024e-01 1.5208450146019459e-02 - <_> - - 0 -1 1260 1.3161719776690006e-02 - - -5.8647651225328445e-02 7.0248216390609741e-02 - <_> - - 0 -1 1261 -3.0560119077563286e-02 - - 2.3170590400695801e-01 -4.3255310505628586e-02 - <_> - - 0 -1 1262 1.0238910093903542e-02 - - 3.1525779515504837e-02 -2.3876720666885376e-01 - <_> - - 0 -1 1263 2.4965599179267883e-02 - - 1.8794050440192223e-02 -3.6637490987777710e-01 - <_> - - 0 -1 1264 -3.2253500074148178e-02 - - 1.1270649731159210e-01 -2.9213100671768188e-02 - <_> - - 0 -1 1265 7.8411642462015152e-03 - - -7.2421632707118988e-02 1.4066340029239655e-01 - <_> - - 0 -1 1266 -1.4276880538091063e-03 - - 1.5807349979877472e-01 -6.6449962556362152e-02 - <_> - - 0 -1 1267 1.1470150202512741e-03 - - 4.9573831260204315e-02 -1.4308080077171326e-01 - <_> - - 0 -1 1268 -8.6412113159894943e-03 - - 7.2913803160190582e-02 -5.3943529725074768e-02 - <_> - - 0 -1 1269 1.1576799442991614e-03 - - -5.4953150451183319e-02 1.2435220181941986e-01 - <_> - - 0 -1 1270 1.1792180157499388e-04 - - -4.8270799219608307e-02 5.9082880616188049e-02 - <_> - - 0 -1 1271 6.5883439965546131e-03 - - 2.6230650022625923e-02 -2.6026728749275208e-01 - <_> - - 0 -1 1272 2.1313619799911976e-03 - - -5.6807540357112885e-02 2.5055360794067383e-01 - <_> - - 0 -1 1273 1.1035949923098087e-02 - - 2.8926210477948189e-02 -2.4025170505046844e-01 - <_> - - 0 -1 1274 9.8337702453136444e-02 - - -1.6552689485251904e-03 9.9841469526290894e-01 - <_> - - 0 -1 1275 -3.6867920309305191e-02 - - 3.0115479230880737e-01 -1.9335890188813210e-02 - <_> - - 0 -1 1276 -2.2431310266256332e-02 - - 3.6680039763450623e-01 -8.6105773225426674e-03 - <_> - - 0 -1 1277 9.2809292254969478e-05 - - -1.1851680278778076e-01 7.0009030401706696e-02 - <_> - - 0 -1 1278 6.0986801981925964e-03 - - 1.9825110211968422e-02 -5.1059758663177490e-01 - <_> - - 0 -1 1279 -1.0700259736040607e-04 - - 8.6945056915283203e-02 -7.9039849340915680e-02 - <_> - - 0 -1 1280 -1.1850359849631786e-02 - - -3.4886360168457031e-01 2.8463730588555336e-02 - <_> - - 0 -1 1281 -1.0024739895015955e-03 - - 1.2310550361871719e-01 -5.6302350014448166e-02 - <_> - - 0 -1 1282 -9.6648662292864174e-05 - - 5.9419918805360794e-02 -5.0511650741100311e-02 - <_> - - 0 -1 1283 -1.2687359936535358e-02 - - 1.6123920679092407e-01 -4.1998729109764099e-02 - <_> - - 0 -1 1284 2.0934140309691429e-02 - - 1.3292470015585423e-02 -2.5384590029716492e-01 - <_> - - 0 -1 1285 -8.7683666497468948e-03 - - -2.2354759275913239e-01 2.7231190353631973e-02 - <_> - - 0 -1 1286 -7.8724078775849193e-05 - - 5.1653359085321426e-02 -3.4923698753118515e-02 - <_> - - 0 -1 1287 -4.5617809519171715e-03 - - 1.8845909833908081e-01 -3.6218199878931046e-02 - <_> - - 0 -1 1288 2.0101569592952728e-02 - - -1.2270460277795792e-01 5.8831069618463516e-02 - <_> - - 0 -1 1289 -3.1801089644432068e-03 - - 1.2960070371627808e-01 -6.7920677363872528e-02 - <_> - - 0 -1 1290 5.7645021006464958e-03 - - 1.8351480364799500e-02 -2.4903400242328644e-01 - <_> - - 0 -1 1291 1.0693079791963100e-02 - - 9.6924025565385818e-03 -5.9504520893096924e-01 - <_> - - 0 -1 1292 2.8986420948058367e-03 - - 5.1718991249799728e-02 -1.0468599945306778e-01 - <_> - - 0 -1 1293 1.3929660618305206e-01 - - -1.7674539238214493e-02 3.9723560214042664e-01 - <_> - - 0 -1 1294 1.1850619921460748e-04 - - -4.4557079672813416e-02 5.6994900107383728e-02 - <_> - - 0 -1 1295 -1.8981580436229706e-01 - - -2.1773189306259155e-01 2.9134890064597130e-02 - <_> - - 0 -1 1296 -5.5389281362295151e-02 - - -2.5266540050506592e-01 1.0798510164022446e-02 - <_> - - 0 -1 1297 -1.0122820094693452e-04 - - 8.2761690020561218e-02 -7.4456267058849335e-02 - <_> - - 0 -1 1298 5.2048019133508205e-03 - - -2.6181850582361221e-02 7.8894980251789093e-02 - <_> - - 0 -1 1299 -5.3310650400817394e-03 - - 1.0743349790573120e-01 -7.3078803718090057e-02 - <_> - - 0 -1 1300 3.1986359506845474e-02 - - -4.6606259420514107e-03 3.6849200725555420e-01 - <_> - - 0 -1 1301 6.1502759344875813e-03 - - 3.5163421183824539e-02 -1.9803290069103241e-01 - <_> - - 0 -1 1302 -7.9923700541257858e-03 - - 4.9680449068546295e-02 -4.3847151100635529e-02 - <_> - - 0 -1 1303 7.9515464603900909e-03 - - -5.0392020493745804e-02 1.3661290705204010e-01 - <_> - - 0 -1 1304 6.9977752864360809e-02 - - -8.1138126552104950e-03 3.4194231033325195e-01 - <_> - - 0 -1 1305 5.3981081582605839e-03 - - 3.4939639270305634e-02 -1.8219280242919922e-01 - <_> - - 0 -1 1306 7.9396478831768036e-02 - - 2.4603689089417458e-02 -2.8492900729179382e-01 - <_> - - 0 -1 1307 2.5731830392032862e-03 - - -3.3786009997129440e-02 1.9118849933147430e-01 - <_> - - 0 -1 1308 1.5055339783430099e-02 - - 1.5328220091760159e-02 -4.0066361427307129e-01 - <_> - - 0 -1 1309 -7.9386271536350250e-03 - - 1.2507259845733643e-01 -4.7316979616880417e-02 - <_> - - 0 -1 1310 -1.1256839934503660e-04 - - 8.2493722438812256e-02 -6.8745993077754974e-02 - <_> - - 0 -1 1311 -1.0478479816811159e-04 - - 8.4922343492507935e-02 -7.9465553164482117e-02 - <_> - - 0 -1 1312 1.0192309855483472e-04 - - -5.1062118262052536e-02 6.2753282487392426e-02 - <_> - - 0 -1 1313 1.2042010348523036e-04 - - -7.9890377819538116e-02 1.0798239707946777e-01 - <_> - - 0 -1 1314 -3.0539339408278465e-02 - - -4.6622350811958313e-01 8.6310431361198425e-03 - <_> - - 0 -1 1315 -1.4449549838900566e-02 - - -2.3427480459213257e-01 2.6667300611734390e-02 - <_> - - 0 -1 1316 5.5837441235780716e-02 - - 1.5657029580324888e-03 -5.9545511007308960e-01 - <_> - - 0 -1 1317 1.1898560449481010e-02 - - -4.8378799110651016e-02 1.1720660328865051e-01 - <_> - - 0 -1 1318 2.3296780884265900e-02 - - 3.9587449282407761e-03 -2.4597780406475067e-01 - <_> - - 0 -1 1319 -9.4626396894454956e-02 - - 5.1669899374246597e-02 -1.2657889723777771e-01 - <_> - - 0 -1 1320 -1.1996289715170860e-02 - - 5.7097338140010834e-02 -1.0790690034627914e-01 - <_> - - 0 -1 1321 3.3058781176805496e-02 - - -4.4020261615514755e-02 2.2163359820842743e-01 - <_> - - 0 -1 1322 6.1287730932235718e-02 - - 1.3820749707520008e-02 -3.8039529323577881e-01 - <_> - - 0 -1 1323 -8.0876126885414124e-02 - - 2.1562319993972778e-01 -3.4390449523925781e-02 - <_> - - 0 -1 1324 -1.1805639951489866e-04 - - 3.8330901414155960e-02 -3.7074659019708633e-02 - <_> - - 0 -1 1325 -8.8057601824402809e-03 - - 7.8959703445434570e-02 -7.9623617231845856e-02 - <_> - - 0 -1 1326 2.3725049570202827e-02 - - -2.6400180533528328e-02 1.3833920657634735e-01 - <_> - - 0 -1 1327 -1.3849999755620956e-02 - - 1.8637719750404358e-01 -4.6536069363355637e-02 - <_> - - 0 -1 1328 -1.6478329896926880e-02 - - -4.7374120354652405e-01 2.0242879167199135e-02 - <_> - - 0 -1 1329 4.9397401511669159e-02 - - 1.4704129658639431e-02 -4.0255519747734070e-01 - <_> - - 0 -1 1330 -9.9877286702394485e-03 - - 6.6189177334308624e-02 -2.5849020108580589e-02 - <_> - - 0 -1 1331 -4.5243981294333935e-03 - - 9.7362592816352844e-02 -6.8595573306083679e-02 - <_> - - 0 -1 1332 -2.5442579761147499e-02 - - -1.0062149912118912e-01 7.2136692702770233e-02 - <_> - - 0 -1 1333 -1.9979789853096008e-02 - - 1.2334229797124863e-01 -4.8690248280763626e-02 - <_> - - 0 -1 1334 8.5907518863677979e-02 - - 1.7899649217724800e-02 -1.2917029857635498e-01 - <_> - - 0 -1 1335 2.4627919774502516e-03 - - 2.1522510796785355e-02 -2.7410501241683960e-01 - <_> - - 0 -1 1336 -9.7198048024438322e-05 - - 1.8001170456409454e-01 -3.0150210857391357e-01 - <_> - - 0 -1 1337 1.0423920117318630e-02 - - -5.4001849144697189e-02 1.2072809785604477e-01 - <_> - - 0 -1 1338 -1.3543060049414635e-02 - - -4.4932109117507935e-01 2.1867370232939720e-02 - <_> - - 0 -1 1339 -1.2225230224430561e-02 - - 1.0308980196714401e-01 -6.8183869123458862e-02 - <_> - - 0 -1 1340 -5.4508589208126068e-02 - - -3.1953170895576477e-01 1.8314510583877563e-02 - <_> - - 0 -1 1341 1.1417720088502392e-04 - - -7.2025686502456665e-02 8.4036201238632202e-02 - <_> - - 0 -1 1342 3.3673789352178574e-02 - - 1.7297180369496346e-02 -3.4836369752883911e-01 - <_> - - 0 -1 1343 -1.6943500377237797e-03 - - 1.9118130207061768e-01 -3.8169119507074356e-02 - <_> - - 0 -1 1344 4.3568409979343414e-02 - - 3.3935939427465200e-03 -2.2542549669742584e-01 - <_> - - 0 -1 1345 -1.5978990122675896e-02 - - -1.7443810403347015e-01 3.3246420323848724e-02 - <_> - - 0 -1 1346 -1.7225230112671852e-03 - - 6.4159378409385681e-02 -2.8688399121165276e-02 - <_> - - 0 -1 1347 -1.1562029831111431e-02 - - -2.5792458653450012e-01 2.6155490428209305e-02 - <_> - - 0 -1 1348 8.8590721134096384e-05 - - -5.9500779956579208e-02 8.7054483592510223e-02 - <_> - - 0 -1 1349 1.8556630238890648e-03 - - -4.5497611165046692e-02 1.4414270222187042e-01 - <_> - - 0 -1 1350 -1.1980470299022272e-04 - - 4.4530108571052551e-02 -6.0078341513872147e-02 - <_> - - 0 -1 1351 -9.8948839877266437e-05 - - 8.0990999937057495e-02 -7.4739851057529449e-02 - <_> - - 0 -1 1352 -9.8720411187969148e-05 - - 1.0564380139112473e-01 -8.1821396946907043e-02 - <_> - - 0 -1 1353 8.2602314651012421e-03 - - 2.4992190301418304e-02 -2.4782909452915192e-01 - <_> - - 0 -1 1354 9.8948839877266437e-05 - - -7.5029492378234863e-02 7.9507932066917419e-02 - <_> - - 0 -1 1355 4.7536417841911316e-03 - - 4.3906200677156448e-02 -1.2667590379714966e-01 - <_> - - 0 -1 1356 -7.1766801178455353e-02 - - -7.3415267467498779e-01 2.7243639342486858e-03 - <_> - - 0 -1 1357 2.7130648959428072e-03 - - -7.5170762836933136e-02 7.5650051236152649e-02 - <_> - - 0 -1 1358 -2.5248030200600624e-02 - - 2.0795029401779175e-01 -2.9544029384851456e-02 - <_> - - 0 -1 1359 -3.2913060858845711e-03 - - 1.3707050681114197e-01 -4.0945030748844147e-02 - <_> - - 0 -1 1360 -1.1903030099347234e-04 - - 7.7548287808895111e-02 -1.7951180040836334e-01 - <_> - - 0 -1 1361 -1.7214129911735654e-03 - - 1.2350810319185257e-01 -4.7916881740093231e-02 - <_> - - 0 -1 1362 1.9237160682678223e-02 - - -6.1758807860314846e-03 4.0595421195030212e-01 - <_> - - 0 -1 1363 -1.6620019450783730e-03 - - -1.8583220243453979e-01 3.3767789602279663e-02 - <_> - - 0 -1 1364 -7.1353819221258163e-03 - - 1.6217699646949768e-01 -1.4994939789175987e-02 - <_> - - 0 -1 1365 -1.0784330079331994e-03 - - 1.0595580190420151e-01 -6.8027436733245850e-02 - <_> - - 0 -1 1366 1.3168440200388432e-02 - - 2.5256929919123650e-02 -2.4681550264358521e-01 - <_> - - 0 -1 1367 4.3766219168901443e-02 - - 8.1717539578676224e-03 -6.8213367462158203e-01 - <_> - - 0 -1 1368 9.7744129598140717e-03 - - -8.9659281075000763e-03 3.3161351084709167e-01 - <_> - 279 - -1.4309279918670654e+00 - - <_> - - 0 -1 1369 -1.8712989985942841e-02 - - 3.1699758768081665e-01 -1.7198270559310913e-01 - <_> - - 0 -1 1370 1.3795300037600100e-04 - - -2.1540990471839905e-01 6.6136591136455536e-02 - <_> - - 0 -1 1371 6.7428596317768097e-02 - - -5.2226951811462641e-04 -3.5010319824218750e+03 - <_> - - 0 -1 1372 -2.4965980648994446e-01 - - -2.7784270048141479e-01 5.9022889472544193e-03 - <_> - - 0 -1 1373 -2.6605049148201942e-02 - - 2.6684170961380005e-01 -1.3904400169849396e-01 - <_> - - 0 -1 1374 -2.3173440247774124e-02 - - 1.3601189851760864e-01 -1.0871589928865433e-01 - <_> - - 0 -1 1375 -5.5514220148324966e-03 - - 1.9473889470100403e-01 -1.4551539719104767e-01 - <_> - - 0 -1 1376 7.0825159549713135e-02 - - -2.6063209772109985e-01 7.9021461308002472e-02 - <_> - - 0 -1 1377 -2.3554509505629539e-02 - - 2.9026520252227783e-01 -7.8398458659648895e-02 - <_> - - 0 -1 1378 -4.3396450579166412e-02 - - 2.4802340567111969e-01 -4.1862510144710541e-02 - <_> - - 0 -1 1379 3.9755448698997498e-02 - - -8.2383207976818085e-02 2.5565001368522644e-01 - <_> - - 0 -1 1380 -4.7884290106594563e-03 - - 9.1564856469631195e-02 -8.8997103273868561e-02 - <_> - - 0 -1 1381 1.1186640040250495e-04 - - -1.7876160144805908e-01 9.3426421284675598e-02 - <_> - - 0 -1 1382 1.8653420731425285e-02 - - -6.4205586910247803e-02 3.7113490700721741e-01 - <_> - - 0 -1 1383 4.3760719709098339e-03 - - -1.9954790174961090e-01 7.6214671134948730e-02 - <_> - - 0 -1 1384 -1.4996459707617760e-02 - - 1.8930730223655701e-01 -2.2424779832363129e-02 - <_> - - 0 -1 1385 5.5244299583137035e-03 - - -7.4144102632999420e-02 2.5318071246147156e-01 - <_> - - 0 -1 1386 -5.6609991006553173e-03 - - -3.3977329730987549e-01 3.1114479526877403e-02 - <_> - - 0 -1 1387 -5.7609830982983112e-03 - - 1.1648339778184891e-01 -1.1574240028858185e-01 - <_> - - 0 -1 1388 -2.6480090618133545e-01 - - 1.8164689838886261e-01 -7.6448231935501099e-02 - <_> - - 0 -1 1389 -3.2054901123046875e-02 - - 2.7392259240150452e-01 -4.6557001769542694e-02 - <_> - - 0 -1 1390 5.6860670447349548e-03 - - -2.5537090376019478e-02 1.2572510540485382e-01 - <_> - - 0 -1 1391 -4.1426587849855423e-03 - - 9.9965266883373260e-02 -1.3714949786663055e-01 - <_> - - 0 -1 1392 -2.5222830474376678e-02 - - -2.1590410172939301e-01 3.3361118286848068e-02 - <_> - - 0 -1 1393 -1.0513579763937742e-04 - - 5.9993639588356018e-02 -2.2432969510555267e-01 - <_> - - 0 -1 1394 3.2108161598443985e-02 - - -4.5822519809007645e-02 2.6781380176544189e-01 - <_> - - 0 -1 1395 -1.0873610153794289e-02 - - -3.4296339750289917e-01 3.7043921649456024e-02 - <_> - - 0 -1 1396 -1.0672210156917572e-01 - - -1.8248610198497772e-01 2.3051809519529343e-02 - <_> - - 0 -1 1397 9.5376763492822647e-03 - - 3.3178020268678665e-02 -3.1444761157035828e-01 - <_> - - 0 -1 1398 -1.5397969633340836e-02 - - -4.4942921400070190e-01 2.5554839521646500e-02 - <_> - - 0 -1 1399 -1.8874239176511765e-02 - - 8.9738510549068451e-02 -1.1818610131740570e-01 - <_> - - 0 -1 1400 -1.3807339593768120e-02 - - -4.0170770883560181e-01 3.7115719169378281e-03 - <_> - - 0 -1 1401 -4.8676962032914162e-03 - - -3.6395189166069031e-01 2.8655750676989555e-02 - <_> - - 0 -1 1402 1.1547089554369450e-02 - - -4.3462570756673813e-02 2.4953410029411316e-01 - <_> - - 0 -1 1403 1.8631519749760628e-02 - - -5.1945161074399948e-02 2.0126770436763763e-01 - <_> - - 0 -1 1404 2.2162059321999550e-02 - - -2.8367469087243080e-02 1.8125070631504059e-01 - <_> - - 0 -1 1405 -1.3282280415296555e-02 - - -4.3967109918594360e-01 2.3154130205512047e-02 - <_> - - 0 -1 1406 -4.7818228602409363e-02 - - 1.5270139276981354e-01 -6.4764626324176788e-02 - <_> - - 0 -1 1407 -7.0768646895885468e-02 - - 2.2559310495853424e-01 -4.6383719891309738e-02 - <_> - - 0 -1 1408 2.4587990716099739e-02 - - -7.9800963401794434e-02 1.2262780219316483e-01 - <_> - - 0 -1 1409 -2.9572639614343643e-03 - - -2.5401321053504944e-01 3.7109810858964920e-02 - <_> - - 0 -1 1410 7.7164188027381897e-02 - - 3.1731691211462021e-02 -2.7239298820495605e-01 - <_> - - 0 -1 1411 3.5500440746545792e-02 - - -4.7737870365381241e-02 2.3480390012264252e-01 - <_> - - 0 -1 1412 2.4486819282174110e-02 - - -2.2118499502539635e-02 1.6140830516815186e-01 - <_> - - 0 -1 1413 2.2626599296927452e-02 - - -5.0503190606832504e-02 2.0568129420280457e-01 - <_> - - 0 -1 1414 7.3773749172687531e-03 - - 3.1938448548316956e-02 -1.6982619464397430e-01 - <_> - - 0 -1 1415 -1.2515950016677380e-02 - - 1.2577000260353088e-01 -7.3859736323356628e-02 - <_> - - 0 -1 1416 2.1496510598808527e-03 - - 6.6499963402748108e-02 -1.5948709845542908e-01 - <_> - - 0 -1 1417 3.2783868908882141e-01 - - -3.5387851297855377e-02 2.9959291219711304e-01 - <_> - - 0 -1 1418 -1.2928809970617294e-02 - - -4.2437180876731873e-01 1.4925819821655750e-02 - <_> - - 0 -1 1419 -2.9543310403823853e-02 - - -2.5968870520591736e-01 3.0672630295157433e-02 - <_> - - 0 -1 1420 1.3888539746403694e-02 - - -2.9191760346293449e-02 2.6650959253311157e-01 - <_> - - 0 -1 1421 -1.4243409968912601e-02 - - 1.1419390141963959e-01 -7.5002923607826233e-02 - <_> - - 0 -1 1422 -2.4950960651040077e-02 - - -4.4170901179313660e-01 1.2046439573168755e-02 - <_> - - 0 -1 1423 -1.3908210210502148e-02 - - -2.9652971029281616e-01 3.4981660544872284e-02 - <_> - - 0 -1 1424 1.2620849534869194e-02 - - 3.8449760526418686e-02 -3.2533881068229675e-01 - <_> - - 0 -1 1425 -7.8615900129079819e-03 - - 1.6396899521350861e-01 -5.0281271338462830e-02 - <_> - - 0 -1 1426 1.3247850351035595e-02 - - -4.8171751201152802e-02 1.3091330230236053e-01 - <_> - - 0 -1 1427 -1.9628429785370827e-02 - - -3.0828440189361572e-01 2.6105429977178574e-02 - <_> - - 0 -1 1428 -1.1116229870822281e-04 - - 4.9499809741973877e-02 -6.9948449730873108e-02 - <_> - - 0 -1 1429 -6.2212720513343811e-03 - - 2.5001430511474609e-01 -3.9167519658803940e-02 - <_> - - 0 -1 1430 -7.5383752118796110e-05 - - 6.1046328395605087e-02 -7.2739817202091217e-02 - <_> - - 0 -1 1431 -3.9724968373775482e-03 - - 1.8301470577716827e-01 -4.4407390058040619e-02 - <_> - - 0 -1 1432 -4.9981191754341125e-02 - - -8.9163497090339661e-02 1.4388060197234154e-02 - <_> - - 0 -1 1433 2.9629090800881386e-02 - - 2.6251930743455887e-02 -3.2541900873184204e-01 - <_> - - 0 -1 1434 3.1110059469938278e-02 - - -3.3575788140296936e-02 4.5157098770141602e-01 - <_> - - 0 -1 1435 -7.4198678135871887e-02 - - 1.0326889902353287e-01 -7.6938740909099579e-02 - <_> - - 0 -1 1436 3.9898898452520370e-02 - - -2.5839729234576225e-02 1.5435829758644104e-01 - <_> - - 0 -1 1437 -6.2805712223052979e-03 - - -2.6195061206817627e-01 2.7357010170817375e-02 - <_> - - 0 -1 1438 -4.1073351167142391e-03 - - 1.4708800613880157e-01 -5.0326839089393616e-02 - <_> - - 0 -1 1439 -4.9765571020543575e-03 - - 8.6656570434570312e-02 -8.3321280777454376e-02 - <_> - - 0 -1 1440 5.6225311011075974e-02 - - -9.0561211109161377e-03 1.3645470142364502e-01 - <_> - - 0 -1 1441 -6.7956328392028809e-02 - - 2.2713039815425873e-01 -3.3235240727663040e-02 - <_> - - 0 -1 1442 8.5731752216815948e-02 - - 3.3442281186580658e-02 -2.3163549602031708e-01 - <_> - - 0 -1 1443 1.7541209235787392e-02 - - -6.9512091577053070e-02 1.1899550259113312e-01 - <_> - - 0 -1 1444 -1.7374299932271242e-03 - - 9.2172093689441681e-02 -2.2669219970703125e-01 - <_> - - 0 -1 1445 2.1910879760980606e-02 - - -4.3604359030723572e-02 2.0508739352226257e-01 - <_> - - 0 -1 1446 -7.7593423426151276e-02 - - -3.1961518526077271e-01 7.1907751262187958e-03 - <_> - - 0 -1 1447 9.2180138453841209e-03 - - -7.5073778629302979e-02 1.0250449925661087e-01 - <_> - - 0 -1 1448 2.6055829599499702e-02 - - 1.3381079770624638e-02 -2.5850158929824829e-01 - <_> - - 0 -1 1449 2.8278680518269539e-02 - - 2.4392090737819672e-02 -3.4649389982223511e-01 - <_> - - 0 -1 1450 -2.8839879669249058e-03 - - 4.6307310461997986e-02 -3.9890531450510025e-02 - <_> - - 0 -1 1451 -3.2021909952163696e-02 - - -4.2234519124031067e-01 1.6014119610190392e-02 - <_> - - 0 -1 1452 8.2102023065090179e-02 - - 1.8811950460076332e-02 -3.5674419999122620e-01 - <_> - - 0 -1 1453 -1.6890240833163261e-02 - - 1.8055370450019836e-01 -3.9605740457773209e-02 - <_> - - 0 -1 1454 3.9422731846570969e-02 - - -4.7247570008039474e-02 1.5648010373115540e-01 - <_> - - 0 -1 1455 -3.4644010011106730e-03 - - 1.0405050218105316e-01 -8.3477586507797241e-02 - <_> - - 0 -1 1456 8.5640960605815053e-05 - - -6.7565880715847015e-02 6.6931001842021942e-02 - <_> - - 0 -1 1457 -2.3889070376753807e-02 - - 1.9076910614967346e-01 -3.8808900862932205e-02 - <_> - - 0 -1 1458 1.0652880184352398e-02 - - -6.8672597408294678e-02 1.1517660319805145e-01 - <_> - - 0 -1 1459 4.0198648348450661e-03 - - 4.3745230883359909e-02 -1.7597760260105133e-01 - <_> - - 0 -1 1460 2.8608399443328381e-03 - - 4.2260829359292984e-02 -2.9830691218376160e-01 - <_> - - 0 -1 1461 -1.3064390420913696e-01 - - -3.3777090907096863e-01 1.9081590697169304e-02 - <_> - - 0 -1 1462 8.4700539708137512e-02 - - 2.7477950789034367e-03 -6.2895822525024414e-01 - <_> - - 0 -1 1463 1.0658860264811665e-04 - - -9.3349710106849670e-02 7.5861856341362000e-02 - <_> - - 0 -1 1464 -6.0290478169918060e-02 - - -2.0990860462188721e-01 5.9476150199770927e-03 - <_> - - 0 -1 1465 2.5699030607938766e-02 - - 2.2030049934983253e-02 -3.1111681461334229e-01 - <_> - - 0 -1 1466 -9.2062582552898675e-05 - - 5.0981931388378143e-02 -4.3970961123704910e-02 - <_> - - 0 -1 1467 -1.6737770056352019e-03 - - -2.6017209887504578e-01 2.4308089166879654e-02 - <_> - - 0 -1 1468 -2.1178390830755234e-02 - - 1.5146270394325256e-01 -6.5389521420001984e-02 - <_> - - 0 -1 1469 2.3533850908279419e-03 - - 2.2910179570317268e-02 -2.8287449479103088e-01 - <_> - - 0 -1 1470 5.3083989769220352e-02 - - -1.6384899616241455e-02 3.8097709417343140e-01 - <_> - - 0 -1 1471 3.9989359676837921e-02 - - -2.1868970245122910e-02 3.1823658943176270e-01 - <_> - - 0 -1 1472 -6.6623869352042675e-03 - - 1.5217649936676025e-01 -2.1288560703396797e-02 - <_> - - 0 -1 1473 -4.5556358993053436e-02 - - -7.7857428789138794e-01 8.6588803678750992e-03 - <_> - - 0 -1 1474 3.0047509353607893e-03 - - -5.2169818431138992e-02 7.0881247520446777e-02 - <_> - - 0 -1 1475 -7.3779281228780746e-03 - - 1.9265919923782349e-01 -3.5522188991308212e-02 - <_> - - 0 -1 1476 9.5453477115370333e-05 - - -9.7466319799423218e-02 9.6455052495002747e-02 - <_> - - 0 -1 1477 -1.0967990383505821e-02 - - 8.8278792798519135e-02 -7.3955200612545013e-02 - <_> - - 0 -1 1478 -8.9160412549972534e-01 - - -3.5863798856735229e-01 3.7620719522237778e-03 - <_> - - 0 -1 1479 -1.0846470296382904e-01 - - -3.3631581068038940e-01 1.9724899902939796e-02 - <_> - - 0 -1 1480 -1.0542329982854426e-04 - - 9.7968801856040955e-02 -6.4257159829139709e-02 - <_> - - 0 -1 1481 -9.3890920281410217e-02 - - 8.7082400918006897e-02 -7.8961193561553955e-02 - <_> - - 0 -1 1482 9.5453477115370333e-05 - - -5.9822808951139450e-02 5.6823138147592545e-02 - <_> - - 0 -1 1483 -9.8177138715982437e-03 - - 1.6365979611873627e-01 -4.4457729905843735e-02 - <_> - - 0 -1 1484 -9.3185197329148650e-05 - - 5.6417450308799744e-02 -3.6796100437641144e-02 - <_> - - 0 -1 1485 9.4171933596953750e-05 - - -8.0542407929897308e-02 8.3805859088897705e-02 - <_> - - 0 -1 1486 8.7554886704310775e-05 - - -4.0428161621093750e-02 5.6475739926099777e-02 - <_> - - 0 -1 1487 -2.7950000017881393e-02 - - -6.4220017194747925e-01 9.8489876836538315e-03 - <_> - - 0 -1 1488 -2.2207939997315407e-02 - - 1.1385910212993622e-01 -7.4823513627052307e-02 - <_> - - 0 -1 1489 -3.5269840154796839e-03 - - 5.6313350796699524e-02 -1.1280319839715958e-01 - <_> - - 0 -1 1490 9.3353092670440674e-03 - - 1.5176270157098770e-02 -1.7910550534725189e-01 - <_> - - 0 -1 1491 7.9498797655105591e-02 - - -4.1115999221801758e-02 2.0831950008869171e-01 - <_> - - 0 -1 1492 -6.4745172858238220e-02 - - 5.9019170701503754e-02 -5.9164099395275116e-02 - <_> - - 0 -1 1493 -3.7454050779342651e-01 - - -3.1103798747062683e-01 2.5050660595297813e-02 - <_> - - 0 -1 1494 -1.4513680071104318e-04 - - 3.6691628396511078e-02 -4.0914330631494522e-02 - <_> - - 0 -1 1495 7.7395797707140446e-03 - - 2.5194179266691208e-02 -2.8290599584579468e-01 - <_> - - 0 -1 1496 4.1609802283346653e-03 - - -6.7230418324470520e-02 1.1040230095386505e-01 - <_> - - 0 -1 1497 -1.0994499549269676e-02 - - -2.7069330215454102e-01 2.5201620534062386e-02 - <_> - - 0 -1 1498 -7.6759129762649536e-02 - - -1.7894430458545685e-01 1.5741320326924324e-02 - <_> - - 0 -1 1499 -2.9416190460324287e-02 - - 1.4778959751129150e-01 -6.1628758907318115e-02 - <_> - - 0 -1 1500 2.8790929913520813e-01 - - 1.5145620331168175e-02 -4.0490359067916870e-01 - <_> - - 0 -1 1501 -1.0059560008812696e-04 - - 7.6832540333271027e-02 -8.3564698696136475e-02 - <_> - - 0 -1 1502 4.2243651114404202e-03 - - -2.9256410896778107e-02 1.2022250145673752e-01 - <_> - - 0 -1 1503 -2.5259390473365784e-02 - - -2.8604280948638916e-01 2.1992789581418037e-02 - <_> - - 0 -1 1504 -6.4038828015327454e-02 - - -2.1891179680824280e-01 1.0843659751117229e-02 - <_> - - 0 -1 1505 -7.0518881082534790e-02 - - 4.5709618926048279e-01 -1.6392199322581291e-02 - <_> - - 0 -1 1506 -7.0195732405409217e-05 - - 3.6932911723852158e-02 -3.7064079195261002e-02 - <_> - - 0 -1 1507 2.9889319557696581e-03 - - -3.7548080086708069e-02 1.8391540646553040e-01 - <_> - - 0 -1 1508 -3.4994310699403286e-03 - - 1.1269920319318771e-01 -5.1340840756893158e-02 - <_> - - 0 -1 1509 2.4127110838890076e-02 - - -4.1499000042676926e-02 1.7326690256595612e-01 - <_> - - 0 -1 1510 5.6061740033328533e-03 - - 1.2599259614944458e-02 -4.9376100301742554e-01 - <_> - - 0 -1 1511 -6.8790130317211151e-03 - - 1.2688520550727844e-01 -4.7930359840393066e-02 - <_> - - 0 -1 1512 -9.9475309252738953e-03 - - -3.0533370375633240e-01 3.5668209195137024e-02 - <_> - - 0 -1 1513 -6.0581211000680923e-03 - - 1.0993719846010208e-01 -5.5137481540441513e-02 - <_> - - 0 -1 1514 -8.6769327521324158e-02 - - 5.6110959500074387e-02 -9.3765012919902802e-02 - <_> - - 0 -1 1515 -1.0192230343818665e-01 - - 5.9622108936309814e-01 -1.1424260213971138e-02 - <_> - - 0 -1 1516 1.6004019975662231e-01 - - 7.1362429298460484e-03 -4.4572108983993530e-01 - <_> - - 0 -1 1517 3.9025470614433289e-03 - - -4.5999579131603241e-02 1.2214680016040802e-01 - <_> - - 0 -1 1518 1.1425039730966091e-02 - - 3.5727649927139282e-02 -4.2463791370391846e-01 - <_> - - 0 -1 1519 4.8979889601469040e-02 - - -3.1489778310060501e-02 2.0362310111522675e-01 - <_> - - 0 -1 1520 -1.3469650410115719e-02 - - -1.7559459805488586e-01 1.9817389547824860e-02 - <_> - - 0 -1 1521 1.0275639593601227e-02 - - 2.7038760483264923e-02 -2.3310990631580353e-01 - <_> - - 0 -1 1522 6.2424209900200367e-03 - - 3.4217160195112228e-02 -3.3560711145401001e-01 - <_> - - 0 -1 1523 -1.8931780010461807e-02 - - 1.2230350077152252e-01 -5.0813648849725723e-02 - <_> - - 0 -1 1524 1.9672000408172607e-01 - - 2.1031980868428946e-03 -3.7800818681716919e-01 - <_> - - 0 -1 1525 1.3458089902997017e-02 - - 1.8042970448732376e-02 -3.0950629711151123e-01 - <_> - - 0 -1 1526 -1.0042759822681546e-04 - - 3.4072581678628922e-02 -4.0977768599987030e-02 - <_> - - 0 -1 1527 -1.0216310329269618e-04 - - 7.3899388313293457e-02 -7.5234226882457733e-02 - <_> - - 0 -1 1528 -1.2140619568526745e-02 - - 1.2632420659065247e-01 -3.7841018289327621e-02 - <_> - - 0 -1 1529 -1.1189839802682400e-02 - - 1.6342529654502869e-01 -3.5992480814456940e-02 - <_> - - 0 -1 1530 -8.0074174329638481e-03 - - 3.0394570901989937e-02 -4.6366918832063675e-02 - <_> - - 0 -1 1531 -1.3145169941708446e-03 - - 1.1306670308113098e-01 -5.6612670421600342e-02 - <_> - - 0 -1 1532 -1.1575019918382168e-02 - - -7.0984877645969391e-02 2.3284029215574265e-02 - <_> - - 0 -1 1533 1.3627949357032776e-01 - - 1.2413679622113705e-02 -5.0667232275009155e-01 - <_> - - 0 -1 1534 -3.9589088410139084e-02 - - -9.5774747431278229e-02 8.6489180102944374e-03 - <_> - - 0 -1 1535 -1.6751129180192947e-02 - - -2.5233340263366699e-01 2.2889090701937675e-02 - <_> - - 0 -1 1536 -9.3176960945129395e-05 - - 8.7076880037784576e-02 -6.7520499229431152e-02 - <_> - - 0 -1 1537 -2.8843290638178587e-03 - - 1.1290279775857925e-01 -5.2280839532613754e-02 - <_> - - 0 -1 1538 3.0579629819840193e-03 - - 3.5874661058187485e-02 -1.8656499683856964e-01 - <_> - - 0 -1 1539 9.7428957815282047e-05 - - -1.1454830318689346e-01 5.5013570934534073e-02 - <_> - - 0 -1 1540 1.2528899824246764e-03 - - -5.5488720536231995e-02 1.4234280586242676e-01 - <_> - - 0 -1 1541 -1.0249209590256214e-03 - - -1.7321769893169403e-01 3.8605920970439911e-02 - <_> - - 0 -1 1542 -9.3161962926387787e-02 - - -5.7080817222595215e-01 7.1864281781017780e-03 - <_> - - 0 -1 1543 -1.1855579941766337e-04 - - 7.3641091585159302e-02 -7.7750876545906067e-02 - <_> - - 0 -1 1544 -1.0393650154583156e-04 - - 4.2040091007947922e-02 -3.4394789487123489e-02 - <_> - - 0 -1 1545 1.0028410179074854e-04 - - -7.0151716470718384e-02 1.0055100172758102e-01 - <_> - - 0 -1 1546 9.8116062581539154e-03 - - -5.7586219161748886e-02 1.2543989717960358e-01 - <_> - - 0 -1 1547 -1.6187250614166260e-02 - - -2.1058849990367889e-01 2.9680129140615463e-02 - <_> - - 0 -1 1548 -7.9579830169677734e-02 - - 2.7109518647193909e-01 -8.4382239729166031e-03 - <_> - - 0 -1 1549 -1.1105289449915290e-03 - - -1.0552699863910675e-01 5.2781209349632263e-02 - <_> - - 0 -1 1550 -1.4178539626300335e-02 - - 7.4876338243484497e-02 -3.7788759917020798e-02 - <_> - - 0 -1 1551 -3.7608280777931213e-02 - - 3.1014311313629150e-01 -1.9222050905227661e-02 - <_> - - 0 -1 1552 7.7960239723324776e-03 - - 2.0659619942307472e-02 -2.0293909311294556e-01 - <_> - - 0 -1 1553 -3.7200350780040026e-03 - - -1.5401360392570496e-01 3.6573860794305801e-02 - <_> - - 0 -1 1554 2.3217389360070229e-02 - - 1.3617049902677536e-02 -1.3466610014438629e-01 - <_> - - 0 -1 1555 1.6200500540435314e-03 - - -4.9910828471183777e-02 1.3622540235519409e-01 - <_> - - 0 -1 1556 -1.4102110266685486e-01 - - 6.7398101091384888e-02 -3.9583180099725723e-02 - <_> - - 0 -1 1557 4.9663311801850796e-03 - - 2.7015270665287971e-02 -2.0322099328041077e-01 - <_> - - 0 -1 1558 6.2545441091060638e-02 - - -2.0299300551414490e-02 2.7076178789138794e-01 - <_> - - 0 -1 1559 3.5370729863643646e-02 - - 1.4647419564425945e-02 -4.1517329216003418e-01 - <_> - - 0 -1 1560 1.1029910296201706e-02 - - 3.1699210405349731e-02 -2.4132180213928223e-01 - <_> - - 0 -1 1561 6.4016189426183701e-03 - - -4.8948030918836594e-02 1.1326249688863754e-01 - <_> - - 0 -1 1562 -4.9354950897395611e-03 - - 1.4654329419136047e-01 -4.8041410744190216e-02 - <_> - - 0 -1 1563 1.1353639885783195e-02 - - 1.7729170620441437e-02 -3.4834858775138855e-01 - <_> - - 0 -1 1564 1.7991849454119802e-03 - - 3.1500369310379028e-02 -1.1007600277662277e-01 - <_> - - 0 -1 1565 -2.0583570003509521e-03 - - 1.3763889670372009e-01 -3.8278561085462570e-02 - <_> - - 0 -1 1566 -1.1583940126001835e-02 - - -1.9790500402450562e-01 2.1540040150284767e-02 - <_> - - 0 -1 1567 -1.7315410077571869e-03 - - 1.4173020422458649e-01 -3.8997210562229156e-02 - <_> - - 0 -1 1568 -8.4372592391446233e-04 - - 1.3655510544776917e-01 -8.0693908035755157e-02 - <_> - - 0 -1 1569 -9.1473877429962158e-02 - - -4.4754090905189514e-01 1.1962350457906723e-02 - <_> - - 0 -1 1570 -1.8104219809174538e-02 - - 7.7289618551731110e-02 -2.3545600473880768e-02 - <_> - - 0 -1 1571 -1.1535269732121378e-04 - - 7.6836310327053070e-02 -6.8134322762489319e-02 - <_> - - 0 -1 1572 1.0906109586358070e-02 - - 7.2263278998434544e-03 -6.9704157114028931e-01 - <_> - - 0 -1 1573 1.7245879862457514e-03 - - -5.0353311002254486e-02 1.2810109555721283e-01 - <_> - - 0 -1 1574 2.0589210093021393e-01 - - -1.3300600461661816e-02 2.7169388532638550e-01 - <_> - - 0 -1 1575 -3.1669791787862778e-02 - - -3.3548399806022644e-01 1.5808839350938797e-02 - <_> - - 0 -1 1576 1.2097669765353203e-02 - - -7.1846768260002136e-02 1.8981289118528366e-02 - <_> - - 0 -1 1577 -9.8784686997532845e-05 - - 6.6305041313171387e-02 -7.9649433493614197e-02 - <_> - - 0 -1 1578 3.4662809222936630e-02 - - -2.4243790656328201e-02 2.2660750150680542e-01 - <_> - - 0 -1 1579 4.1574249044060707e-03 - - -2.3725839331746101e-02 2.2775200009346008e-01 - <_> - - 0 -1 1580 1.3625459372997284e-01 - - 1.2545660138130188e-02 -1.8698890507221222e-01 - <_> - - 0 -1 1581 -1.8796479701995850e-01 - - -4.9749028682708740e-01 1.0914600454270840e-02 - <_> - - 0 -1 1582 -6.8078853189945221e-02 - - 6.5818381309509277e-01 -4.3843579478561878e-03 - <_> - - 0 -1 1583 4.1167731396853924e-03 - - 4.0211249142885208e-02 -1.4137159287929535e-01 - <_> - - 0 -1 1584 1.2222830206155777e-02 - - 1.7555380240082741e-02 -1.2423080205917358e-01 - <_> - - 0 -1 1585 -3.0194509774446487e-02 - - 2.8969380259513855e-01 -2.0085370168089867e-02 - <_> - - 0 -1 1586 -1.3630479574203491e-02 - - -7.2930537164211273e-02 2.0471939817070961e-02 - <_> - - 0 -1 1587 -4.9170460551977158e-02 - - 1.4496059715747833e-01 -4.1022989898920059e-02 - <_> - - 0 -1 1588 -1.8805779516696930e-02 - - -3.0851051211357117e-01 2.8086919337511063e-02 - <_> - - 0 -1 1589 3.0058639124035835e-02 - - 1.2547640129923820e-02 -4.4722351431846619e-01 - <_> - - 0 -1 1590 1.1746119707822800e-02 - - -5.7717248797416687e-02 8.7828032672405243e-02 - <_> - - 0 -1 1591 1.0928919911384583e-01 - - -6.8391263484954834e-02 9.7572147846221924e-02 - <_> - - 0 -1 1592 9.1915056109428406e-03 - - -7.4181012809276581e-02 7.3394171893596649e-02 - <_> - - 0 -1 1593 1.8468169867992401e-01 - - 9.3096662312746048e-03 -5.8784562349319458e-01 - <_> - - 0 -1 1594 6.8637598305940628e-03 - - 3.0968079343438148e-02 -1.7277500033378601e-01 - <_> - - 0 -1 1595 -1.9742390140891075e-03 - - 1.3069419562816620e-01 -3.8030050694942474e-02 - <_> - - 0 -1 1596 -2.6963930577039719e-03 - - 1.6244409978389740e-01 -3.5481378436088562e-02 - <_> - - 0 -1 1597 -5.8013908565044403e-02 - - -4.3749481439590454e-01 1.2770510278642178e-02 - <_> - - 0 -1 1598 8.9008668437600136e-03 - - 4.3059259653091431e-02 -3.7901559472084045e-01 - <_> - - 0 -1 1599 -1.6740450635552406e-02 - - -4.0966311097145081e-01 1.0411660186946392e-02 - <_> - - 0 -1 1600 2.6413789018988609e-03 - - -4.0057808160781860e-02 2.1676640212535858e-01 - <_> - - 0 -1 1601 -8.0486387014389038e-03 - - -2.7881771326065063e-01 1.9777970388531685e-02 - <_> - - 0 -1 1602 -6.0376349836587906e-02 - - 5.3534799814224243e-01 -1.1424889788031578e-02 - <_> - - 0 -1 1603 2.3124070838093758e-02 - - 1.6458159312605858e-02 -3.2125988602638245e-01 - <_> - - 0 -1 1604 2.0322829484939575e-01 - - -2.3145940154790878e-02 2.3903259634971619e-01 - <_> - - 0 -1 1605 9.2585664242506027e-03 - - 1.1980939656496048e-02 -4.3842160701751709e-01 - <_> - - 0 -1 1606 -9.3168877356220037e-05 - - 3.8687478750944138e-02 -3.7797808647155762e-02 - <_> - - 0 -1 1607 -3.0643379688262939e-01 - - -5.5774372816085815e-01 9.6901366487145424e-03 - <_> - - 0 -1 1608 9.9146942375227809e-05 - - -5.5330239236354828e-02 6.6835246980190277e-02 - <_> - - 0 -1 1609 -2.0753950811922550e-03 - - 1.5105390548706055e-01 -3.7970088422298431e-02 - <_> - - 0 -1 1610 1.7292000120505691e-03 - - 3.7206560373306274e-02 -1.2662950158119202e-01 - <_> - - 0 -1 1611 4.1486289352178574e-02 - - -7.8654065728187561e-03 5.9286290407180786e-01 - <_> - - 0 -1 1612 -2.1392209455370903e-03 - - -2.1703329682350159e-01 2.5509839877486229e-02 - <_> - - 0 -1 1613 -1.2593599967658520e-03 - - -1.5436570346355438e-01 3.1676661223173141e-02 - <_> - - 0 -1 1614 -5.2773267962038517e-03 - - 4.0892910212278366e-02 -2.8415739536285400e-02 - <_> - - 0 -1 1615 -1.1125040240585804e-02 - - 1.6232059895992279e-01 -3.0745169147849083e-02 - <_> - - 0 -1 1616 -1.6761909937486053e-03 - - -3.3090171217918396e-01 1.7768569290637970e-02 - <_> - - 0 -1 1617 -1.0530459985602647e-04 - - 7.5438939034938812e-02 -6.6933870315551758e-02 - <_> - - 0 -1 1618 7.3067108169198036e-03 - - 5.1727588288486004e-03 -5.5249291658401489e-01 - <_> - - 0 -1 1619 9.5791132480371743e-05 - - -7.4921347200870514e-02 8.6354851722717285e-02 - <_> - - 0 -1 1620 -9.3413247668650001e-05 - - 4.8558268696069717e-02 -4.0378730744123459e-02 - <_> - - 0 -1 1621 4.6156500466167927e-03 - - -3.7532798945903778e-02 1.3340139389038086e-01 - <_> - - 0 -1 1622 -4.1042149066925049e-02 - - 2.9821568727493286e-01 -6.6182389855384827e-03 - <_> - - 0 -1 1623 7.1153012104332447e-03 - - -2.1631240844726562e-02 2.3582610487937927e-01 - <_> - - 0 -1 1624 -3.1066430732607841e-02 - - -5.8610522747039795e-01 3.6739821080118418e-03 - <_> - - 0 -1 1625 4.5988909900188446e-02 - - 1.6935029998421669e-02 -3.1026428937911987e-01 - <_> - - 0 -1 1626 -1.1326739937067032e-01 - - 1.5654860436916351e-01 -5.0538508221507072e-03 - <_> - - 0 -1 1627 6.4136488363146782e-03 - - -5.3936250507831573e-02 1.0013920068740845e-01 - <_> - - 0 -1 1628 3.6615829914808273e-02 - - 8.5446005687117577e-03 -1.5964660048484802e-01 - <_> - - 0 -1 1629 -1.7147939652204514e-02 - - 1.4192830026149750e-01 -5.3749438375234604e-02 - <_> - - 0 -1 1630 5.3531897719949484e-04 - - 1.1440339684486389e-01 -2.3302769660949707e-01 - <_> - - 0 -1 1631 1.1444079689681530e-02 - - 1.2468489818274975e-02 -3.9174211025238037e-01 - <_> - - 0 -1 1632 8.3751561760436743e-05 - - -4.9933150410652161e-02 5.4828610271215439e-02 - <_> - - 0 -1 1633 -1.8420179840177298e-03 - - 1.4353500306606293e-01 -3.7544708698987961e-02 - <_> - - 0 -1 1634 4.5310789719223976e-03 - - 1.0783690027892590e-02 -1.8584489822387695e-01 - <_> - - 0 -1 1635 -6.4388299360871315e-03 - - -3.6381769180297852e-01 1.2662259861826897e-02 - <_> - - 0 -1 1636 5.8657680638134480e-03 - - -5.0155811011791229e-02 9.5346279442310333e-02 - <_> - - 0 -1 1637 7.2214446961879730e-02 - - 2.0769899711012840e-02 -2.3239180445671082e-01 - <_> - - 0 -1 1638 1.1799850035458803e-03 - - 3.0479110777378082e-02 -1.0156790167093277e-01 - <_> - - 0 -1 1639 -9.1386884450912476e-03 - - 1.4592429995536804e-01 -3.5100910812616348e-02 - <_> - - 0 -1 1640 -1.1487520299851894e-02 - - 6.6731408238410950e-02 -4.0960971266031265e-02 - <_> - - 0 -1 1641 5.9421849437057972e-03 - - 2.6715600863099098e-02 -2.0938999950885773e-01 - <_> - - 0 -1 1642 1.5967000275850296e-02 - - -2.5690900161862373e-02 1.6294980049133301e-01 - <_> - - 0 -1 1643 -1.0477179894223809e-03 - - 1.1148150265216827e-01 -4.4679220765829086e-02 - <_> - - 0 -1 1644 -1.7775410087779164e-03 - - 5.1736749708652496e-02 -3.4007608890533447e-02 - <_> - - 0 -1 1645 2.2314190864562988e-02 - - 1.1056879535317421e-02 -4.7578111290931702e-01 - <_> - - 0 -1 1646 -1.2075630016624928e-02 - - 7.8382678329944611e-02 -3.8613840937614441e-02 - <_> - - 0 -1 1647 5.9365699999034405e-03 - - -4.0792420506477356e-02 1.2774890661239624e-01 - - <_> - - <_> - 2 0 9 12 -1. - <_> - 2 4 9 4 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 13 9 4 2 -1. - <_> - 13 10 4 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 6 0 6 10 3. - <_> - - <_> - 13 9 4 2 -1. - <_> - 13 10 4 1 2. - <_> - - <_> - 1 9 4 2 -1. - <_> - 1 10 4 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - <_> - - <_> - 7 1 7 6 -1. - <_> - 7 3 7 2 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 13 1 5 4 -1. - <_> - 13 3 5 2 2. - <_> - - <_> - 2 0 9 12 -1. - <_> - 2 4 9 4 3. - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - <_> - - <_> - 1 5 10 6 -1. - <_> - 1 8 10 3 2. - <_> - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 2 2 2. - 1 - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 2 0 11 6 -1. - <_> - 2 2 11 2 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 7 3 4 2 3. - 1 - <_> - - <_> - 0 5 12 6 -1. - <_> - 0 5 6 3 2. - <_> - 6 8 6 3 2. - <_> - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 8 7 4 -1. - <_> - 0 10 7 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 6 0 6 11 3. - <_> - - <_> - 0 10 4 2 -1. - <_> - 0 11 4 1 2. - <_> - - <_> - 13 3 3 3 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 2 2. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 7 4 4 5 -1. - <_> - 8 4 2 5 2. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 0 9 3 -1. - <_> - 5 1 9 1 3. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 7 0 8 8 -1. - <_> - 7 2 8 4 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 3 16 8 -1. - <_> - 0 3 8 4 2. - <_> - 8 7 8 4 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 14 6 4 3 -1. - <_> - 14 6 2 3 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 15 3 3 2 -1. - <_> - 15 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 8 4 10 8 -1. - <_> - 8 8 10 4 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 2 5 2 4 2. - <_> - - <_> - 14 7 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 7 2 6 1 -1. - <_> - 9 4 2 1 3. - 1 - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 9 2 1 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 2 2 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 10 4 1 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - <_> - - <_> - 9 0 4 7 -1. - <_> - 10 1 2 7 2. - 1 - <_> - - <_> - 0 4 2 6 -1. - <_> - 0 7 2 3 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 0 8 4 -1. - <_> - 6 0 8 2 2. - 1 - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 6 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 4 0 9 8 -1. - <_> - 4 2 9 4 2. - <_> - - <_> - 9 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 6 4 6 6 -1. - <_> - 8 6 2 2 9. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 5 4 2 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 0 7 5 2 -1. - <_> - 0 8 5 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - <_> - - <_> - 4 10 4 2 -1. - <_> - 5 10 2 2 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 5 5 2 3 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 0 2 2 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 0 1 2 3. - <_> - - <_> - 0 8 18 4 -1. - <_> - 6 8 6 4 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 0 2 2 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 6 1 8 6 -1. - <_> - 6 3 8 2 3. - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 7 6 8 2 -1. - <_> - 9 6 4 2 2. - <_> - - <_> - 6 4 2 3 -1. - <_> - 6 4 1 3 2. - 1 - <_> - - <_> - 5 0 9 6 -1. - <_> - 5 2 9 2 3. - <_> - - <_> - 2 1 11 4 -1. - <_> - 2 2 11 2 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 14 2 1 2 2. - 1 - <_> - - <_> - 4 2 2 3 -1. - <_> - 3 3 2 1 3. - 1 - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 14 5 4 4 -1. - <_> - 14 5 2 4 2. - <_> - - <_> - 1 6 10 6 -1. - <_> - 1 9 10 3 2. - <_> - - <_> - 14 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 0 5 4 5 -1. - <_> - 2 5 2 5 2. - <_> - - <_> - 10 3 3 3 -1. - <_> - 11 4 1 3 3. - 1 - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 9 6 3 1 2. - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 6 2 1 2. - <_> - - <_> - 6 2 8 4 -1. - <_> - 6 3 8 2 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 5 0 8 2 2. - <_> - - <_> - 9 3 2 6 -1. - <_> - 7 5 2 2 3. - 1 - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 7 5 4 3 -1. - <_> - 7 5 2 3 2. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 1 8 2 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 0 2 18 10 -1. - <_> - 0 2 9 5 2. - <_> - 9 7 9 5 2. - <_> - - <_> - 6 0 6 9 -1. - <_> - 8 0 2 9 3. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 5 1 7 4 -1. - <_> - 5 2 7 2 2. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 0 6 2 -1. - <_> - 11 0 2 2 3. - <_> - - <_> - 3 0 6 2 -1. - <_> - 5 0 2 2 3. - <_> - - <_> - 9 5 3 5 -1. - <_> - 10 5 1 5 3. - <_> - - <_> - 6 5 3 5 -1. - <_> - 7 5 1 5 3. - <_> - - <_> - 17 4 1 6 -1. - <_> - 17 6 1 2 3. - <_> - - <_> - 0 2 1 9 -1. - <_> - 0 5 1 3 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - <_> - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - <_> - - <_> - 16 2 2 2 -1. - <_> - 16 2 1 2 2. - 1 - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 2 1 2. - 1 - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 1 1 16 10 -1. - <_> - 5 1 8 10 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 2 0 16 10 -1. - <_> - 6 0 8 10 2. - <_> - - <_> - 0 0 16 10 -1. - <_> - 4 0 8 10 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 14 11 2 1 2. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 0 2 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - <_> - - <_> - 6 3 7 3 -1. - <_> - 6 4 7 1 3. - <_> - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - <_> - - <_> - 5 4 10 2 -1. - <_> - 5 5 10 1 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 17 4 1 8 -1. - <_> - 17 8 1 4 2. - <_> - - <_> - 0 4 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 5 7 12 3 -1. - <_> - 9 7 4 3 3. - <_> - - <_> - 3 2 4 2 -1. - <_> - 4 3 2 2 2. - 1 - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 4 0 7 4 -1. - <_> - 4 1 7 2 2. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 1 10 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 1 2 3 3. - <_> - - <_> - 3 1 6 3 -1. - <_> - 5 1 2 3 3. - <_> - - <_> - 8 1 5 4 -1. - <_> - 8 2 5 2 2. - <_> - - <_> - 9 1 9 1 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 7 2 7 3 -1. - <_> - 7 3 7 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 16 1 2 2 2. - <_> - 14 3 2 2 2. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 0 1 4 4 -1. - <_> - 0 1 2 2 2. - <_> - 2 3 2 2 2. - <_> - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 7 1 2 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 2 2 16 10 -1. - <_> - 10 2 8 5 2. - <_> - 2 7 8 5 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 1 6 1 9. - <_> - - <_> - 9 0 1 8 -1. - <_> - 9 0 1 4 2. - 1 - <_> - - <_> - 4 9 6 3 -1. - <_> - 6 9 2 3 3. - <_> - - <_> - 8 9 2 3 -1. - <_> - 8 9 1 3 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 12 0 6 6 2. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 0 0 6 6 2. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 1 18 6 -1. - <_> - 6 3 6 2 9. - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 9 0 8 1 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 0 1 18 8 -1. - <_> - 9 1 9 4 2. - <_> - 0 5 9 4 2. - <_> - - <_> - 0 2 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 8 7 4 3 -1. - <_> - 8 8 4 1 3. - <_> - - <_> - 3 0 4 2 -1. - <_> - 4 0 2 2 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 5 8 9 3 -1. - <_> - 5 9 9 1 3. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 6 10 12 1 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 10 12 1 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 7 2 8 10 -1. - <_> - 11 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 5 3 2 6 -1. - <_> - 5 5 2 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 4 18 7 -1. - <_> - 6 4 6 7 3. - <_> - - <_> - 7 2 8 10 -1. - <_> - 11 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 3 2 8 10 -1. - <_> - 3 2 4 5 2. - <_> - 7 7 4 5 2. - <_> - - <_> - 9 4 1 6 -1. - <_> - 7 6 1 2 3. - 1 - <_> - - <_> - 9 4 6 1 -1. - <_> - 11 6 2 1 3. - 1 - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 14 5 4 3 -1. - <_> - 15 5 2 3 2. - <_> - - <_> - 3 10 1 2 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - <_> - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - <_> - - <_> - 4 3 4 3 -1. - <_> - 5 4 2 3 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 0 2 14 10 -1. - <_> - 0 2 7 5 2. - <_> - 7 7 7 5 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 6 0 6 6 3. - <_> - - <_> - 1 1 12 4 -1. - <_> - 1 2 12 2 2. - <_> - - <_> - 5 1 10 6 -1. - <_> - 5 3 10 2 3. - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 14 8 4 2 -1. - <_> - 14 9 4 1 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 6 4 1 2. - 1 - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - <_> - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - <_> - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 6 0 9 4 -1. - <_> - 6 1 9 2 2. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 9 3 3 4 -1. - <_> - 8 4 3 2 2. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - <_> - - <_> - 2 0 11 8 -1. - <_> - 2 2 11 4 2. - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 4 2 1 2. - 1 - <_> - - <_> - 6 4 2 2 -1. - <_> - 6 4 1 2 2. - 1 - <_> - - <_> - 15 8 1 2 -1. - <_> - 15 9 1 1 2. - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 9 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 3 2 14 8 -1. - <_> - 3 2 7 8 2. - <_> - - <_> - 0 4 18 6 -1. - <_> - 6 4 6 6 3. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 9 4 3 1 2. - 1 - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 8 5 3 1 3. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 1 4 1 3 -1. - <_> - 1 5 1 1 3. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 1 10 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 0 0 10 8 -1. - <_> - 0 4 10 4 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - <_> - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - <_> - - <_> - 7 1 7 3 -1. - <_> - 7 2 7 1 3. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 4 1 10 2 -1. - <_> - 9 1 5 2 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 1 9 12 2 -1. - <_> - 7 9 6 2 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 5 4 5 6 -1. - <_> - 5 7 5 3 2. - <_> - - <_> - 14 3 3 3 -1. - <_> - 13 4 3 1 3. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 5 4 1 3 3. - 1 - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 5 2 1 2. - <_> - - <_> - 4 4 2 2 -1. - <_> - 4 5 2 1 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 16 2 2 10 -1. - <_> - 16 2 1 10 2. - <_> - - <_> - 0 2 2 10 -1. - <_> - 1 2 1 10 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 5 2 3 6 -1. - <_> - 5 4 3 2 3. - <_> - - <_> - 13 7 4 1 -1. - <_> - 13 7 2 1 2. - <_> - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 10 5 2 3 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 10 1 3 6 -1. - <_> - 11 2 1 6 3. - 1 - <_> - - <_> - 8 1 6 3 -1. - <_> - 7 2 6 1 3. - 1 - <_> - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - <_> - - <_> - 16 8 1 4 -1. - <_> - 16 9 1 2 2. - <_> - - <_> - 5 0 5 6 -1. - <_> - 5 2 5 2 3. - <_> - - <_> - 10 5 2 3 -1. - <_> - 10 5 1 3 2. - 1 - <_> - - <_> - 8 5 3 2 -1. - <_> - 8 5 3 1 2. - 1 - <_> - - <_> - 16 8 1 4 -1. - <_> - 16 9 1 2 2. - <_> - - <_> - 1 8 1 4 -1. - <_> - 1 9 1 2 2. - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 8 4 5 2 -1. - <_> - 8 5 5 1 2. - <_> - - <_> - 5 2 8 10 -1. - <_> - 5 2 4 5 2. - <_> - 9 7 4 5 2. - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - <_> - - <_> - 0 2 1 10 -1. - <_> - 0 7 1 5 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 15 8 2 2 -1. - <_> - 16 8 1 1 2. - <_> - 15 9 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 5 4 6 8 -1. - <_> - 5 8 6 4 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - <_> - - <_> - 5 2 10 4 -1. - <_> - 5 3 10 2 2. - <_> - - <_> - 1 8 2 3 -1. - <_> - 1 9 2 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 0 0 18 9 -1. - <_> - 0 0 9 9 2. - <_> - - <_> - 0 4 15 8 -1. - <_> - 5 4 5 8 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 3 3. - 1 - <_> - - <_> - 0 2 14 10 -1. - <_> - 7 2 7 10 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 12 3 6 2 -1. - <_> - 12 4 6 1 2. - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 10 4 3 2 -1. - <_> - 10 5 3 1 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 5 4 1 2. - <_> - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 15 9 2 3 -1. - <_> - 15 10 2 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 8 2 1 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 0 2 18 8 -1. - <_> - 0 2 9 4 2. - <_> - 9 6 9 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 8 8 4 4 -1. - <_> - 8 9 4 2 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 8 1 4 2 -1. - <_> - 9 1 2 2 2. - <_> - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 8 2 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 8 2 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 10 1 4 3 -1. - <_> - 10 1 2 3 2. - <_> - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 1 4 10 4 -1. - <_> - 6 4 5 4 2. - <_> - - <_> - 13 0 2 1 -1. - <_> - 13 0 1 1 2. - <_> - - <_> - 0 3 1 6 -1. - <_> - 0 5 1 2 3. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 4 2 10 1 -1. - <_> - 4 2 5 1 2. - <_> - - <_> - 3 0 4 2 -1. - <_> - 4 0 2 2 2. - <_> - - <_> - 9 0 5 8 -1. - <_> - 9 2 5 4 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 0 9 3 1 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 5 2 12 3 -1. - <_> - 5 3 12 1 3. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 0 4 10 -1. - <_> - 14 5 4 5 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - <_> - - <_> - 3 2 2 9 -1. - <_> - 3 5 2 3 3. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 0 4 4 7 -1. - <_> - 2 4 2 7 2. - <_> - - <_> - 15 7 3 3 -1. - <_> - 16 8 1 1 9. - <_> - - <_> - 0 3 3 1 -1. - <_> - 1 3 1 1 3. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 4 10 3 -1. - <_> - 0 5 10 1 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 0 12 11 -1. - <_> - 4 0 4 11 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 7 0 6 3 -1. - <_> - 9 0 2 3 3. - <_> - - <_> - 5 0 6 3 -1. - <_> - 7 0 2 3 3. - <_> - - <_> - 0 0 18 5 -1. - <_> - 6 0 6 5 3. - <_> - - <_> - 4 0 7 4 -1. - <_> - 4 1 7 2 2. - <_> - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 2 1 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - <_> - - <_> - 3 2 11 6 -1. - <_> - 3 4 11 2 3. - <_> - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 2 0 16 11 -1. - <_> - 2 0 8 11 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 16 5 2 4 -1. - <_> - 16 6 2 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 7 1 6 4 -1. - <_> - 7 2 6 2 2. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 7 2 8 8 -1. - <_> - 11 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - <_> - - <_> - 7 2 8 8 -1. - <_> - 11 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 3 2 8 8 -1. - <_> - 3 2 4 4 2. - <_> - 7 6 4 4 2. - <_> - - <_> - 17 6 1 6 -1. - <_> - 17 8 1 2 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - <_> - - <_> - 2 4 4 5 -1. - <_> - 3 4 2 5 2. - <_> - - <_> - 13 3 3 3 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 7 10 6 1 -1. - <_> - 9 10 2 1 3. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 4 1 1 2. - 1 - <_> - - <_> - 9 2 9 1 -1. - <_> - 12 5 3 1 3. - 1 - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 4 1 4 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 1 5 1 3 2. - <_> - - <_> - 4 2 11 3 -1. - <_> - 4 3 11 1 3. - <_> - - <_> - 4 4 2 1 -1. - <_> - 4 4 1 1 2. - 1 - <_> - - <_> - 17 1 1 8 -1. - <_> - 17 3 1 4 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 5 2 9 10 -1. - <_> - 8 2 3 10 3. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 1 6 8 -1. - <_> - 6 1 3 8 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 8 0 5 2 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 5 2. - <_> - 0 5 9 5 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 9 4 1 -1. - <_> - 7 9 2 1 2. - <_> - - <_> - 16 1 2 3 -1. - <_> - 16 2 2 1 3. - <_> - - <_> - 7 2 1 3 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 2 1 2. - 1 - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 11 2 1 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 2 11 6 1 -1. - <_> - 4 11 2 1 3. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 0 10 4 1 -1. - <_> - 1 10 2 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 2 4 16 8 -1. - <_> - 10 4 8 4 2. - <_> - 2 8 8 4 2. - <_> - - <_> - 6 0 1 4 -1. - <_> - 6 1 1 2 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 3 0 9 3 -1. - <_> - 3 1 9 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - <_> - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - <_> - - <_> - 5 4 6 8 -1. - <_> - 5 4 3 4 2. - <_> - 8 8 3 4 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 6 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 1 1 1 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 0 0 6 8 -1. - <_> - 0 4 6 4 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 10 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 3 4 3 2. - <_> - 9 6 4 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 17 2 1 3 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 6 0 4 4 -1. - <_> - 6 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 0 3 18 3 -1. - <_> - 6 3 6 3 3. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 2 10 4 2. - <_> - - <_> - 8 10 10 2 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 0 10 10 2 -1. - <_> - 5 10 5 2 2. - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - <_> - - <_> - 12 8 6 4 -1. - <_> - 12 10 6 2 2. - <_> - - <_> - 6 5 6 4 -1. - <_> - 8 5 2 4 3. - <_> - - <_> - 14 6 1 6 -1. - <_> - 14 9 1 3 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 10 2 1 2. - <_> - - <_> - 14 6 4 6 -1. - <_> - 16 6 2 3 2. - <_> - 14 9 2 3 2. - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 6 2 3 2. - <_> - 2 9 2 3 2. - <_> - - <_> - 13 1 4 4 -1. - <_> - 13 1 2 4 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 0 4 2 2. - <_> - - <_> - 1 4 14 6 -1. - <_> - 8 4 7 6 2. - <_> - - <_> - 6 3 9 6 -1. - <_> - 6 5 9 2 3. - <_> - - <_> - 1 9 1 2 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 6 7 8 1 -1. - <_> - 8 7 4 1 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 5 4 9 4 -1. - <_> - 5 6 9 2 2. - <_> - - <_> - 2 3 1 2 -1. - <_> - 2 3 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 9 2 6 2 2. - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 1 0 16 4 -1. - <_> - 9 0 8 2 2. - <_> - 1 2 8 2 2. - <_> - - <_> - 3 3 1 3 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 13 2 4 2 2. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 4 1 1 2. - 1 - <_> - - <_> - 4 4 2 1 -1. - <_> - 4 4 1 1 2. - 1 - <_> - - <_> - 13 3 5 3 -1. - <_> - 12 4 5 1 3. - 1 - <_> - - <_> - 5 3 3 5 -1. - <_> - 6 4 1 5 3. - 1 - <_> - - <_> - 14 4 3 5 -1. - <_> - 15 4 1 5 3. - <_> - - <_> - 1 4 3 5 -1. - <_> - 2 4 1 5 3. - <_> - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - <_> - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - <_> - - <_> - 12 0 6 10 -1. - <_> - 14 0 2 10 3. - <_> - - <_> - 4 6 8 2 -1. - <_> - 6 6 4 2 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 4 4 -1. - <_> - 6 0 2 4 2. - <_> - - <_> - 13 7 5 2 -1. - <_> - 13 8 5 1 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 8 11 8 1 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - <_> - - <_> - 8 2 4 4 -1. - <_> - 8 3 4 2 2. - <_> - - <_> - 0 1 6 9 -1. - <_> - 2 1 2 9 3. - <_> - - <_> - 13 1 3 10 -1. - <_> - 14 1 1 10 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 2 3 16 6 -1. - <_> - 10 3 8 3 2. - <_> - 2 6 8 3 2. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 1 0 14 12 -1. - <_> - 8 0 7 12 2. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 0 0 1 9 -1. - <_> - 0 3 1 3 3. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 2 1 3 10 -1. - <_> - 3 1 1 10 3. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 13 6 5 3 -1. - <_> - 13 7 5 1 3. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 13 6 5 3 -1. - <_> - 13 7 5 1 3. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 3 9 12 3 -1. - <_> - 7 9 4 3 3. - <_> - - <_> - 0 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 0 6 5 3 -1. - <_> - 0 7 5 1 3. - <_> - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - <_> - - <_> - 3 5 8 4 -1. - <_> - 3 6 8 2 2. - <_> - - <_> - 16 3 2 6 -1. - <_> - 16 5 2 2 3. - <_> - - <_> - 0 3 2 6 -1. - <_> - 0 5 2 2 3. - <_> - - <_> - 6 0 8 4 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 4 1 11 4 -1. - <_> - 4 2 11 2 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 2 12 4 2. - <_> - - <_> - 14 0 2 4 -1. - <_> - 14 0 1 4 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 4 1 2. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 5 4 1 2. - 1 - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 10 4 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 3 5 2 -1. - <_> - 8 4 5 1 2. - <_> - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 11 5 4 4 -1. - <_> - 11 7 4 2 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 15 8 3 2 -1. - <_> - 15 9 3 1 2. - <_> - - <_> - 0 8 3 2 -1. - <_> - 0 9 3 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 5 3 2 2 2. - <_> - - <_> - 4 2 14 8 -1. - <_> - 11 2 7 4 2. - <_> - 4 6 7 4 2. - <_> - - <_> - 1 3 4 4 -1. - <_> - 1 3 2 2 2. - <_> - 3 5 2 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 7 1 6 2 -1. - <_> - 9 1 2 2 3. - <_> - - <_> - 5 1 6 2 -1. - <_> - 7 1 2 2 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 4 2 14 8 -1. - <_> - 11 2 7 4 2. - <_> - 4 6 7 4 2. - <_> - - <_> - 5 4 4 4 -1. - <_> - 5 4 2 4 2. - 1 - <_> - - <_> - 12 4 6 6 -1. - <_> - 15 4 3 3 2. - <_> - 12 7 3 3 2. - <_> - - <_> - 0 11 12 1 -1. - <_> - 6 11 6 1 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - <_> - - <_> - 0 3 2 3 -1. - <_> - 1 3 1 3 2. - <_> - - <_> - 11 4 6 6 -1. - <_> - 14 4 3 3 2. - <_> - 11 7 3 3 2. - <_> - - <_> - 1 4 6 6 -1. - <_> - 1 4 3 3 2. - <_> - 4 7 3 3 2. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - <_> - - <_> - 14 2 3 4 -1. - <_> - 13 3 3 2 2. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - <_> - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 0 4 3 2. - <_> - - <_> - 0 0 18 9 -1. - <_> - 6 0 6 9 3. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 0 8 6 4 -1. - <_> - 0 10 6 2 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - <_> - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 3 2 4 -1. - <_> - 5 3 1 4 2. - 1 - <_> - - <_> - 8 0 3 5 -1. - <_> - 9 0 1 5 3. - <_> - - <_> - 7 0 3 5 -1. - <_> - 8 0 1 5 3. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 5 1 7 6 -1. - <_> - 5 3 7 2 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 0 2 6 4 -1. - <_> - 0 2 3 2 2. - <_> - 3 4 3 2 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 14 7 2 4 -1. - <_> - 14 8 2 2 2. - <_> - - <_> - 2 7 2 4 -1. - <_> - 2 8 2 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - <_> - - <_> - 6 3 8 8 -1. - <_> - 10 3 4 4 2. - <_> - 6 7 4 4 2. - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 7 7 5 3 -1. - <_> - 7 8 5 1 3. - <_> - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 3 0 9 3 -1. - <_> - 3 1 9 1 3. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 5 1 7 2 -1. - <_> - 5 2 7 1 2. - <_> - - <_> - 7 1 8 4 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 5 2 12 8 -1. - <_> - 11 2 6 4 2. - <_> - 5 6 6 4 2. - <_> - - <_> - 4 3 8 8 -1. - <_> - 4 3 4 4 2. - <_> - 8 7 4 4 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - <_> - - <_> - 12 0 3 12 -1. - <_> - 13 0 1 12 3. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - <_> - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - <_> - - <_> - 16 5 1 6 -1. - <_> - 16 5 1 3 2. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - <_> - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - <_> - - <_> - 9 2 7 3 -1. - <_> - 8 3 7 1 3. - 1 - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 5 6 4 1 -1. - <_> - 6 6 2 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - <_> - - <_> - 16 4 2 7 -1. - <_> - 16 4 1 7 2. - <_> - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - <_> - - <_> - 11 0 2 6 -1. - <_> - 11 0 1 6 2. - <_> - - <_> - 4 1 4 4 -1. - <_> - 6 1 2 4 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 16 4 2 7 -1. - <_> - 16 4 1 7 2. - <_> - - <_> - 0 4 2 7 -1. - <_> - 1 4 1 7 2. - <_> - - <_> - 13 3 2 2 -1. - <_> - 13 3 1 2 2. - 1 - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 2 5 1 9. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - <_> - - <_> - 2 1 10 3 -1. - <_> - 7 1 5 3 2. - <_> - - <_> - 2 1 16 3 -1. - <_> - 6 1 8 3 2. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 1 9. - <_> - - <_> - 0 6 8 2 -1. - <_> - 0 7 8 1 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 16 8 1 1 2. - <_> - 15 9 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 15 5 2 6 -1. - <_> - 15 5 1 6 2. - <_> - - <_> - 1 5 2 6 -1. - <_> - 2 5 1 6 2. - <_> - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 4 6 8 6 -1. - <_> - 4 6 4 3 2. - <_> - 8 9 4 3 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - <_> - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - <_> - - <_> - 15 9 1 3 -1. - <_> - 15 10 1 1 3. - <_> - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - <_> - - <_> - 7 0 4 5 -1. - <_> - 8 0 2 5 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 1 2 12 8 -1. - <_> - 1 2 6 4 2. - <_> - 7 6 6 4 2. - <_> - - <_> - 1 9 16 3 -1. - <_> - 5 9 8 3 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 0 1 11 4 -1. - <_> - 0 2 11 2 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 2 4 2 2. - <_> - - <_> - 8 5 2 1 -1. - <_> - 9 5 1 1 2. - <_> - - <_> - 8 4 3 4 -1. - <_> - 9 4 1 4 3. - <_> - - <_> - 6 1 6 11 -1. - <_> - 8 1 2 11 3. - <_> - - <_> - 16 2 2 8 -1. - <_> - 16 6 2 4 2. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 3 1 2 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 0 4 2 2. - <_> - - <_> - 0 0 16 2 -1. - <_> - 4 0 8 2 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 11 0 7 6 2. - <_> - 4 6 7 6 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 3 1 12 6 -1. - <_> - 7 3 4 2 9. - <_> - - <_> - 0 0 14 12 -1. - <_> - 0 0 7 6 2. - <_> - 7 6 7 6 2. - <_> - - <_> - 10 5 8 4 -1. - <_> - 14 5 4 2 2. - <_> - 10 7 4 2 2. - <_> - - <_> - 0 5 8 4 -1. - <_> - 0 5 4 2 2. - <_> - 4 7 4 2 2. - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 14 4 1 2 -1. - <_> - 14 5 1 1 2. - <_> - - <_> - 3 4 1 2 -1. - <_> - 3 5 1 1 2. - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 2 14 9 -1. - <_> - 7 2 7 9 2. - <_> - - <_> - 11 3 2 2 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 2 1 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 12 0 6 2 -1. - <_> - 12 0 3 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 3 5 2 1 -1. - <_> - 4 5 1 1 2. - <_> - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 3 0 2 11 -1. - <_> - 4 0 1 11 2. - <_> - - <_> - 13 4 3 4 -1. - <_> - 14 5 1 4 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 0 10 8 2 -1. - <_> - 4 10 4 2 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 16 10 2 1 2. - <_> - 14 11 2 1 2. - <_> - - <_> - 0 10 4 2 -1. - <_> - 0 10 2 1 2. - <_> - 2 11 2 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 10 9 8 2 -1. - <_> - 14 9 4 1 2. - <_> - 10 10 4 1 2. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 6 6 -1. - <_> - 12 8 6 3 2. - <_> - - <_> - 0 5 6 6 -1. - <_> - 0 8 6 3 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 9 4 3 8 2. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 4 8 2 2. - <_> - - <_> - 15 2 3 4 -1. - <_> - 14 3 3 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 2 2. - 1 - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 4 1 6 6 -1. - <_> - 4 3 6 2 3. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 1 1 7 3. - 1 - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 10 1 1 2. - <_> - - <_> - 17 3 1 6 -1. - <_> - 17 5 1 2 3. - <_> - - <_> - 0 3 1 6 -1. - <_> - 0 5 1 2 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 3 0 9 2 -1. - <_> - 3 1 9 1 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 10 6 6 2 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 11 5 6 5 -1. - <_> - 13 5 2 5 3. - <_> - - <_> - 0 3 16 9 -1. - <_> - 4 3 8 9 2. - <_> - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 6 0 6 12 2. - <_> - - <_> - 5 1 8 10 -1. - <_> - 5 1 4 10 2. - <_> - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - <_> - - <_> - 12 2 2 6 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 1 8 1 3 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - <_> - - <_> - 0 5 12 5 -1. - <_> - 4 5 4 5 3. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - <_> - - <_> - 8 5 4 4 -1. - <_> - 9 5 2 4 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 3 1 1 3. - 1 - <_> - - <_> - 0 0 4 10 -1. - <_> - 0 5 4 5 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 3 0 12 9 -1. - <_> - 3 3 12 3 3. - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 12 1 6 9 -1. - <_> - 14 1 2 9 3. - <_> - - <_> - 6 5 3 4 -1. - <_> - 7 5 1 4 3. - <_> - - <_> - 9 1 1 8 -1. - <_> - 7 3 1 4 2. - 1 - <_> - - <_> - 9 1 8 1 -1. - <_> - 11 3 4 1 2. - 1 - <_> - - <_> - 9 0 1 8 -1. - <_> - 9 0 1 4 2. - 1 - <_> - - <_> - 0 1 6 9 -1. - <_> - 2 1 2 9 3. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - <_> - - <_> - 6 0 4 5 -1. - <_> - 7 0 2 5 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 9 0 8 1 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 12 3 6 4 -1. - <_> - 15 3 3 2 2. - <_> - 12 5 3 2 2. - <_> - - <_> - 0 3 6 4 -1. - <_> - 0 3 3 2 2. - <_> - 3 5 3 2 2. - <_> - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - <_> - - <_> - 5 3 3 4 -1. - <_> - 6 4 1 4 3. - 1 - <_> - - <_> - 3 8 12 4 -1. - <_> - 7 8 4 4 3. - <_> - - <_> - 6 1 1 3 -1. - <_> - 5 2 1 1 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 14 5 3 2 2. - 1 - <_> - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 2 2 3 3 -1. - <_> - 3 2 1 3 3. - <_> - - <_> - 8 4 3 5 -1. - <_> - 9 4 1 5 3. - <_> - - <_> - 0 1 18 10 -1. - <_> - 0 1 9 5 2. - <_> - 9 6 9 5 2. - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 2 4 12 4 -1. - <_> - 5 4 6 4 2. - <_> - - <_> - 7 1 4 3 -1. - <_> - 7 2 4 1 3. - <_> - - <_> - 1 6 6 3 -1. - <_> - 3 6 2 3 3. - <_> - - <_> - 13 3 4 9 -1. - <_> - 13 3 2 9 2. - <_> - - <_> - 1 3 4 9 -1. - <_> - 3 3 2 9 2. - <_> - - <_> - 7 11 10 1 -1. - <_> - 7 11 5 1 2. - <_> - - <_> - 0 9 14 3 -1. - <_> - 7 9 7 3 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 5 1 12 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 2 2 3 2. - 1 - <_> - - <_> - 10 5 3 1 -1. - <_> - 11 6 1 1 3. - 1 - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 15 1 3 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 4 5 4 3 -1. - <_> - 5 5 2 3 2. - <_> - - <_> - 11 11 4 1 -1. - <_> - 12 11 2 1 2. - <_> - - <_> - 0 4 12 6 -1. - <_> - 4 4 4 6 3. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - <_> - - <_> - 7 8 5 4 -1. - <_> - 7 9 5 2 2. - <_> - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 6 3 9 6 -1. - <_> - 9 5 3 2 9. - <_> - - <_> - 5 4 6 4 -1. - <_> - 7 4 2 4 3. - <_> - - <_> - 8 5 8 3 -1. - <_> - 8 5 4 3 2. - <_> - - <_> - 2 5 8 3 -1. - <_> - 6 5 4 3 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 8 5 1 3 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 2 1 2. - 1 - <_> - - <_> - 5 3 3 7 -1. - <_> - 6 3 1 7 3. - <_> - - <_> - 10 5 4 4 -1. - <_> - 12 5 2 2 2. - <_> - 10 7 2 2 2. - <_> - - <_> - 4 5 4 4 -1. - <_> - 4 5 2 2 2. - <_> - 6 7 2 2 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 12 6 3 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - <_> - - <_> - 10 1 4 4 -1. - <_> - 11 1 2 4 2. - <_> - - <_> - 9 1 3 8 -1. - <_> - 9 1 3 4 2. - 1 - <_> - - <_> - 5 1 8 3 -1. - <_> - 5 1 4 3 2. - <_> - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 5 0 6 2 -1. - <_> - 7 0 2 2 3. - <_> - - <_> - 10 0 8 1 -1. - <_> - 10 0 4 1 2. - <_> - - <_> - 1 0 16 1 -1. - <_> - 5 0 8 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 0 2 10 8 -1. - <_> - 0 2 5 4 2. - <_> - 5 6 5 4 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 7 4 6 8 -1. - <_> - 7 8 6 4 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 9 3 2 -1. - <_> - 9 10 3 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 1 2 2. - 1 - <_> - - <_> - 8 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - <_> - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 11 9 1 3 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 6 9 1 3 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - <_> - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - <_> - - <_> - 12 4 4 6 -1. - <_> - 14 4 2 3 2. - <_> - 12 7 2 3 2. - <_> - - <_> - 2 4 4 6 -1. - <_> - 2 4 2 3 2. - <_> - 4 7 2 3 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 13 2 5 3 -1. - <_> - 12 3 5 1 3. - 1 - <_> - - <_> - 5 3 3 4 -1. - <_> - 6 4 1 4 3. - 1 - <_> - - <_> - 10 10 3 1 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 3 4 3 2 -1. - <_> - 3 5 3 1 2. - <_> - - <_> - 10 9 3 1 -1. - <_> - 11 9 1 1 3. - <_> - - <_> - 5 2 3 2 -1. - <_> - 5 2 3 1 2. - 1 - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 5 10 3 1 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 8 2 3 3 -1. - <_> - 8 3 3 1 3. - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 5 4 1 2. - 1 - <_> - - <_> - 6 2 6 2 -1. - <_> - 8 2 2 2 3. - <_> - - <_> - 3 4 10 4 -1. - <_> - 3 4 5 2 2. - <_> - 8 6 5 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 0 1 1 3. - <_> - - <_> - 16 4 2 6 -1. - <_> - 16 4 1 6 2. - <_> - - <_> - 5 10 8 2 -1. - <_> - 7 10 4 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 9 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 11 6 7 3 -1. - <_> - 11 7 7 1 3. - <_> - - <_> - 0 6 7 3 -1. - <_> - 0 7 7 1 3. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 11 3 1 -1. - <_> - 15 11 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 2 3 4 4 -1. - <_> - 2 3 2 2 2. - <_> - 4 5 2 2 2. - <_> - - <_> - 15 6 2 2 -1. - <_> - 15 6 1 2 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 2 1 2. - 1 - <_> - - <_> - 4 3 12 4 -1. - <_> - 4 4 12 2 2. - <_> - - <_> - 2 5 4 2 -1. - <_> - 2 5 2 1 2. - <_> - 4 6 2 1 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 3 2 10 4 -1. - <_> - 3 3 10 2 2. - <_> - - <_> - 12 6 6 6 -1. - <_> - 12 9 6 3 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 16 8 1 2 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 1 8 1 2 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 1 10 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 0 3 2 4 -1. - <_> - 0 4 2 2 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 5 1 2 9. - <_> - - <_> - 7 0 6 6 -1. - <_> - 7 2 6 2 3. - <_> - - <_> - 0 4 16 7 -1. - <_> - 8 4 8 7 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 10 4 4 3 2. - <_> - 6 7 4 3 2. - <_> - - <_> - 3 2 4 3 -1. - <_> - 4 3 2 3 2. - 1 - <_> - - <_> - 10 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 4 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 15 4 2 6 -1. - <_> - 15 4 2 3 2. - 1 - <_> - - <_> - 3 4 6 2 -1. - <_> - 3 4 3 2 2. - 1 - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 0 0 12 12 -1. - <_> - 4 0 4 12 3. - <_> - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - <_> - - <_> - 3 7 3 1 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 3 4 1 3. - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 2 5 2 9. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 0 2 14 8 -1. - <_> - 0 2 7 4 2. - <_> - 7 6 7 4 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 13 10 3 1 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 7 0 5 2 -1. - <_> - 7 1 5 1 2. - <_> - - <_> - 3 0 3 12 -1. - <_> - 4 0 1 12 3. - <_> - - <_> - 7 9 6 3 -1. - <_> - 9 9 2 3 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - <_> - - <_> - 4 10 4 1 -1. - <_> - 5 10 2 1 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 2 2 10 10 -1. - <_> - 7 2 5 10 2. - <_> - - <_> - 7 2 8 5 -1. - <_> - 7 2 4 5 2. - <_> - - <_> - 3 2 8 5 -1. - <_> - 7 2 4 5 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 11 4 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 6 9 3 -1. - <_> - 0 7 9 1 3. - <_> - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - <_> - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - <_> - - <_> - 3 1 9 6 -1. - <_> - 3 3 9 2 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - <_> - - <_> - 1 8 2 2 -1. - <_> - 1 8 1 1 2. - <_> - 2 9 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 9 5 2 1 3. - <_> - - <_> - 2 9 3 3 -1. - <_> - 2 10 3 1 3. - <_> - - <_> - 5 8 8 3 -1. - <_> - 5 9 8 1 3. - <_> - - <_> - 0 9 6 2 -1. - <_> - 0 10 6 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 6 4 5 1 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 9 0 5 2 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 14 2 3 2 -1. - <_> - 15 3 1 2 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 2 2 4 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 2 2 16 1 -1. - <_> - 6 2 8 1 2. - <_> - - <_> - 7 4 1 2 -1. - <_> - 7 4 1 1 2. - 1 - <_> - - <_> - 13 4 5 3 -1. - <_> - 12 5 5 1 3. - 1 - <_> - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - <_> - - <_> - 15 4 3 2 -1. - <_> - 15 5 3 1 2. - <_> - - <_> - 0 2 18 4 -1. - <_> - 0 2 9 2 2. - <_> - 9 4 9 2 2. - <_> - - <_> - 10 3 2 1 -1. - <_> - 10 3 1 1 2. - 1 - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 10 10 4 2 2. - <_> - - <_> - 8 3 1 6 -1. - <_> - 8 3 1 3 2. - 1 - <_> - - <_> - 9 4 8 5 -1. - <_> - 9 4 4 5 2. - <_> - - <_> - 1 4 8 5 -1. - <_> - 5 4 4 5 2. - <_> - - <_> - 9 5 4 1 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 5 5 4 1 -1. - <_> - 6 5 2 1 2. - <_> - - <_> - 13 6 4 6 -1. - <_> - 15 6 2 3 2. - <_> - 13 9 2 3 2. - <_> - - <_> - 1 6 4 6 -1. - <_> - 1 6 2 3 2. - <_> - 3 9 2 3 2. - <_> - - <_> - 5 6 10 4 -1. - <_> - 10 6 5 2 2. - <_> - 5 8 5 2 2. - <_> - - <_> - 2 3 3 7 -1. - <_> - 3 3 1 7 3. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 16 1 2 9 -1. - <_> - 13 4 2 3 3. - 1 - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 6 3 9 6 -1. - <_> - 6 6 9 3 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 5 6 2 4 -1. - <_> - 4 7 2 2 2. - 1 - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 3 2 9 -1. - <_> - 1 3 1 9 2. - <_> - - <_> - 15 4 3 2 -1. - <_> - 16 5 1 2 3. - 1 - <_> - - <_> - 3 4 2 3 -1. - <_> - 2 5 2 1 3. - 1 - <_> - - <_> - 6 1 12 4 -1. - <_> - 6 2 12 2 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 12 1 2 1 -1. - <_> - 12 1 1 1 2. - 1 - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 2 1 2. - 1 - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - <_> - - <_> - 0 1 10 1 -1. - <_> - 5 1 5 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 3 2 2 2 2. - 1 - <_> - - <_> - 15 4 1 2 -1. - <_> - 15 4 1 1 2. - 1 - <_> - - <_> - 3 4 2 1 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 8 4 2 6 -1. - <_> - 8 7 2 3 2. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 14 8 1 3 -1. - <_> - 14 9 1 1 3. - <_> - - <_> - 3 8 1 3 -1. - <_> - 3 9 1 1 3. - <_> - - <_> - 13 2 4 3 -1. - <_> - 14 3 2 3 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 9 4 3 8 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 2 1 9 2 -1. - <_> - 5 4 3 2 3. - 1 - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 3 5 1 2 -1. - <_> - 3 6 1 1 2. - <_> - - <_> - 11 1 4 2 -1. - <_> - 11 2 4 1 2. - <_> - - <_> - 4 1 4 2 -1. - <_> - 4 2 4 1 2. - <_> - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - <_> - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - <_> - - <_> - 13 4 5 3 -1. - <_> - 12 5 5 1 3. - 1 - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 5 1 5 3. - 1 - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 2 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 9 4 9 2 2. - <_> - 0 6 9 2 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 6 0 6 1 -1. - <_> - 8 0 2 1 3. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 3 4 1 3. - <_> - - <_> - 3 6 11 3 -1. - <_> - 3 7 11 1 3. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 7 1 3 2. - 1 - <_> - - <_> - 0 2 18 7 -1. - <_> - 6 2 6 7 3. - <_> - - <_> - 12 1 6 4 -1. - <_> - 12 1 3 4 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 3 1 3 4 2. - <_> - - <_> - 11 1 2 7 -1. - <_> - 11 1 1 7 2. - 1 - <_> - - <_> - 2 4 9 4 -1. - <_> - 2 6 9 2 2. - <_> - - <_> - 9 3 3 1 -1. - <_> - 10 3 1 1 3. - <_> - - <_> - 0 0 6 10 -1. - <_> - 2 0 2 10 3. - <_> - - <_> - 10 4 4 6 -1. - <_> - 11 4 2 6 2. - <_> - - <_> - 4 4 4 6 -1. - <_> - 5 4 2 6 2. - <_> - - <_> - 11 0 4 3 -1. - <_> - 12 0 2 3 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 8 3 3 5 -1. - <_> - 9 3 1 5 3. - <_> - - <_> - 7 3 3 5 -1. - <_> - 8 3 1 5 3. - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 4 2 4 3. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 2 1 2. - 1 - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 1 1 2. - <_> - 6 11 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 4 11 8 1 2. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 1 10 12 2 -1. - <_> - 5 10 4 2 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 1 11 8 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 4 4 4 -1. - <_> - 10 4 2 2 2. - <_> - 8 6 2 2 2. - <_> - - <_> - 6 4 4 4 -1. - <_> - 6 4 2 2 2. - <_> - 8 6 2 2 2. - <_> - - <_> - 8 4 3 1 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 8 2 2 3 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 6 3 3 1 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 8 0 2 2 -1. - <_> - 9 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 1 8 2 4 -1. - <_> - 1 9 2 2 2. - <_> - - <_> - 10 9 6 3 -1. - <_> - 10 10 6 1 3. - <_> - - <_> - 2 9 6 3 -1. - <_> - 2 10 6 1 3. - <_> - - <_> - 6 9 10 3 -1. - <_> - 6 10 10 1 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 7 1 4 5 -1. - <_> - 8 1 2 5 2. - <_> - - <_> - 0 6 6 3 -1. - <_> - 0 7 6 1 3. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 5 3 3 4 -1. - <_> - 5 4 3 2 2. - <_> - - <_> - 11 1 2 3 -1. - <_> - 11 1 1 3 2. - 1 - <_> - - <_> - 8 6 2 6 -1. - <_> - 9 6 1 6 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 9 0 9 3 2. - <_> - 0 3 9 3 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 14 5 4 6 -1. - <_> - 14 5 2 6 2. - <_> - - <_> - 6 4 1 4 -1. - <_> - 5 5 1 2 2. - 1 - <_> - - <_> - 4 0 10 12 -1. - <_> - 4 6 10 6 2. - <_> - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 1 8 2 2. - <_> - - <_> - 2 0 9 4 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - <_> - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 0 2 1 10 -1. - <_> - 0 7 1 5 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 5 1 1 2. - 1 - <_> - - <_> - 5 5 2 1 -1. - <_> - 5 5 1 1 2. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 6 2 -1. - <_> - 8 0 3 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 8 3 4 2 -1. - <_> - 8 3 4 1 2. - 1 - <_> - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - <_> - - <_> - 1 4 2 6 -1. - <_> - 2 4 1 6 2. - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 7 1 2 2. - 1 - <_> - - <_> - 1 7 4 1 -1. - <_> - 1 7 2 1 2. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 2 2 10 3 -1. - <_> - 7 2 5 3 2. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 7 4 7 2 -1. - <_> - 7 5 7 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 3 0 7 6 -1. - <_> - 3 2 7 2 3. - <_> - - <_> - 4 1 12 4 -1. - <_> - 4 2 12 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 6 6 4 2. - <_> - - <_> - 3 4 3 4 -1. - <_> - 3 6 3 2 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - <_> - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - <_> - - <_> - 9 0 6 5 -1. - <_> - 11 0 2 5 3. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 6 9 6 2 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 7 10 2 2 3. - <_> - - <_> - 14 1 3 2 -1. - <_> - 15 2 1 2 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 8 0 6 3 -1. - <_> - 8 1 6 1 3. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 5 0 4 4 -1. - <_> - 4 1 4 2 2. - 1 - <_> - - <_> - 10 7 6 1 -1. - <_> - 12 7 2 1 3. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 2 1 16 2 -1. - <_> - 6 1 8 2 2. - <_> - - <_> - 6 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 4 2 6 -1. - <_> - 1 4 1 6 2. - <_> - - <_> - 9 3 2 4 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 0 6 6 4 -1. - <_> - 0 6 3 2 2. - <_> - 3 8 3 2 2. - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 5 1 5 3. - 1 - <_> - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - <_> - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - <_> - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 4 1 4 3. - <_> - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 9 5 6 2 2. - <_> - 3 7 6 2 2. - <_> - - <_> - 3 9 9 3 -1. - <_> - 3 10 9 1 3. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 12 1 -1. - <_> - 5 11 6 1 2. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 5 2 6 3 -1. - <_> - 5 3 6 1 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 4 9 1 3 -1. - <_> - 4 10 1 1 3. - <_> - - <_> - 10 5 8 3 -1. - <_> - 10 6 8 1 3. - <_> - - <_> - 0 5 8 3 -1. - <_> - 0 6 8 1 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 6 10 2 2 -1. - <_> - 6 10 1 1 2. - <_> - 7 11 1 1 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 5 1 4 3. - <_> - - <_> - 10 6 4 2 -1. - <_> - 12 6 2 1 2. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 6 4 2 -1. - <_> - 4 6 2 1 2. - <_> - 6 7 2 1 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 3 4 15 6 -1. - <_> - 8 6 5 2 9. - <_> - - <_> - 0 6 12 2 -1. - <_> - 4 6 4 2 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 0 2 18 3 -1. - <_> - 6 2 6 3 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 7 6 1 -1. - <_> - 4 7 2 1 3. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 2 1 2. - 1 - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 6 2 6 10 -1. - <_> - 9 2 3 10 2. - <_> - - <_> - 5 3 12 9 -1. - <_> - 8 3 6 9 2. - <_> - - <_> - 0 1 16 9 -1. - <_> - 4 1 8 9 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - <_> - - <_> - 0 5 6 5 -1. - <_> - 2 5 2 5 3. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 5 2. - <_> - 0 6 9 5 2. - <_> - - <_> - 6 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 2 1 4 6 -1. - <_> - 3 1 2 6 2. - <_> - - <_> - 12 2 6 1 -1. - <_> - 12 2 3 1 2. - 1 - <_> - - <_> - 6 2 1 6 -1. - <_> - 6 2 1 3 2. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 0 1 16 1 -1. - <_> - 4 1 8 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 6 1 4 3 -1. - <_> - 6 2 4 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 6 1 9 8 -1. - <_> - 6 3 9 4 2. - <_> - - <_> - 3 5 7 4 -1. - <_> - 3 7 7 2 2. - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 0 1 4 1 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 1 9 3 -1. - <_> - 4 2 9 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 12 0 4 2 -1. - <_> - 13 0 2 2 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 7 3 10 6 -1. - <_> - 12 3 5 3 2. - <_> - 7 6 5 3 2. - <_> - - <_> - 2 0 4 3 -1. - <_> - 3 0 2 3 2. - <_> - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - <_> - - <_> - 4 2 2 1 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 3 3. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 9 4 8 6 -1. - <_> - 13 4 4 3 2. - <_> - 9 7 4 3 2. - <_> - - <_> - 1 4 8 6 -1. - <_> - 1 4 4 3 2. - <_> - 5 7 4 3 2. - <_> - - <_> - 10 5 4 3 -1. - <_> - 9 6 4 1 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 1 10 1 2 -1. - <_> - 1 11 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 5 4 11 8 -1. - <_> - 5 8 11 4 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 9 3 2 2. - <_> - - <_> - 6 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 9 2 2 4 -1. - <_> - 9 2 2 2 2. - 1 - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 3 1 1 2. - 1 - <_> - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 3 2 2 2 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 10 6 3 3 -1. - <_> - 9 7 3 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 7 3 6 6 -1. - <_> - 9 5 2 2 9. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 2 2. - <_> - - <_> - 7 4 6 6 -1. - <_> - 9 4 2 6 3. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 3 3. - 1 - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 1 5 2 3 -1. - <_> - 1 6 2 1 3. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 0 1 1 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 0 1 1 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 0 0 4 1 -1. - <_> - 1 0 2 1 2. - <_> - - <_> - 6 4 12 4 -1. - <_> - 10 4 4 4 3. - <_> - - <_> - 4 3 6 2 -1. - <_> - 6 3 2 2 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 5 3 2 1 -1. - <_> - 6 3 1 1 2. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 8 3 1 2 -1. - <_> - 8 4 1 1 2. - <_> - - <_> - 10 0 4 8 -1. - <_> - 10 0 2 8 2. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 8 0 8 2 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 9 4 2 2 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 7 4 2 2 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 8 3 1 6 -1. - <_> - 8 6 1 3 2. - <_> - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - <_> - - <_> - 2 2 12 4 -1. - <_> - 2 3 12 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - <_> - - <_> - 5 2 8 2 -1. - <_> - 5 2 4 2 2. - <_> - - <_> - 1 2 12 6 -1. - <_> - 1 2 6 3 2. - <_> - 7 5 6 3 2. - <_> - - <_> - 15 8 3 3 -1. - <_> - 15 9 3 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 8 5 3 4 -1. - <_> - 9 6 1 4 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 8 8 2 2 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 5 2 2 2 -1. - <_> - 6 2 1 2 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 2 4 12 4 -1. - <_> - 6 4 4 4 3. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 4 7 2 3 -1. - <_> - 3 8 2 1 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 8 1 4 -1. - <_> - 7 9 1 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 2 2. - 1 - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 2 1 2. - 1 - <_> - - <_> - 10 7 1 3 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 2 11 14 1 -1. - <_> - 9 11 7 1 2. - <_> - - <_> - 8 10 10 2 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 0 10 10 2 -1. - <_> - 5 10 5 2 2. - <_> - - <_> - 8 11 10 1 -1. - <_> - 8 11 5 1 2. - <_> - - <_> - 0 11 10 1 -1. - <_> - 5 11 5 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 4 1 2 -1. - <_> - 3 4 1 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 10 4 1 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - <_> - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - <_> - - <_> - 0 8 18 1 -1. - <_> - 9 8 9 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 1 9. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 15 4 2 3 -1. - <_> - 14 5 2 1 3. - 1 - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 1 2 2 2. - <_> - - <_> - 15 4 2 3 -1. - <_> - 14 5 2 1 3. - 1 - <_> - - <_> - 3 4 3 2 -1. - <_> - 4 5 1 2 3. - 1 - diff --git a/data/haarcascades/haarcascade_mcs_lefteye_alt.xml b/data/haarcascades/haarcascade_mcs_lefteye_alt.xml deleted file mode 100644 index 085875218b..0000000000 --- a/data/haarcascades/haarcascade_mcs_lefteye_alt.xml +++ /dev/null @@ -1,24071 +0,0 @@ - - - - - - 18 12 - - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -5.4611408710479736e-001 - 8.2068818807601929e-001 - -7.5621801614761353e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 1.9197000563144684e-001 - -7.4652588367462158e-001 - 5.0908601284027100e-001 - <_> - - <_> - - - - <_> - 1 6 2 1 -1. - <_> - 2 6 1 1 2. - 0 - -1.0090269643114880e-004 - 4.2689380049705505e-001 - -5.5786168575286865e-001 - <_> - - <_> - - - - <_> - 9 1 3 6 -1. - <_> - 7 3 3 2 3. - 1 - -9.2340409755706787e-002 - 4.4454950094223022e-001 - -1.2654660642147064e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -7.1513116359710693e-002 - 6.0273522138595581e-001 - -2.4365329742431641e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 5.8654979511629790e-005 - -5.7338011264801025e-001 - 2.3801539838314056e-001 - <_> - - <_> - - - - <_> - 1 8 4 2 -1. - <_> - 1 9 4 1 2. - 0 - 4.3697938963305205e-005 - -4.0486478805541992e-001 - 2.1698260307312012e-001 - <_> - - <_> - - - - <_> - 15 6 2 1 -1. - <_> - 15 6 1 1 2. - 0 - -1.0192039917455986e-004 - 1.9003869593143463e-001 - -2.0315149426460266e-001 - <_> - - <_> - - - - <_> - 1 6 2 1 -1. - <_> - 2 6 1 1 2. - 0 - 1.0126679990207776e-004 - -2.1862569451332092e-001 - 4.6297249197959900e-001 - -1.9446439743041992e+000 - -1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.0576202869415283e-001 - 8.1088548898696899e-001 - -6.3504821062088013e-001 - <_> - - <_> - - - - <_> - 1 4 17 8 -1. - <_> - 1 8 17 4 2. - 0 - 2.8249558806419373e-001 - -6.3604378700256348e-001 - 5.8339637517929077e-001 - <_> - - <_> - - - - <_> - 3 2 10 9 -1. - <_> - 3 5 10 3 3. - 0 - 4.9681571125984192e-001 - -2.7583679184317589e-002 - -2.0745629882812500e+003 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 7 3 2 2 3. - 1 - -5.2082080394029617e-002 - 2.6939961314201355e-001 - -5.1909279078245163e-002 - <_> - - <_> - - - - <_> - 0 2 12 10 -1. - <_> - 0 7 12 5 2. - 0 - 8.6202162504196167e-001 - 1.9688610918819904e-003 - -2.0273730468750000e+003 - <_> - - <_> - - - - <_> - 14 5 4 4 -1. - <_> - 14 5 2 4 2. - 0 - -6.9935750216245651e-003 - 1.8710659444332123e-001 - -1.7539620399475098e-001 - <_> - - <_> - - - - <_> - 1 5 6 4 -1. - <_> - 3 5 2 4 3. - 0 - -1.8909620121121407e-002 - 3.9160171151161194e-001 - -3.6989161372184753e-001 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 7 3 2 2 3. - 1 - -2.5043029338121414e-002 - 5.7452820241451263e-002 - -5.9267260134220123e-002 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -5.7229399681091309e-002 - 4.6264800429344177e-001 - -2.2969110310077667e-001 - <_> - - <_> - - - - <_> - 12 9 5 2 -1. - <_> - 12 10 5 1 2. - 0 - 4.6097549784462899e-005 - -3.5773921012878418e-001 - 1.4059029519557953e-001 - <_> - - <_> - - - - <_> - 1 9 5 2 -1. - <_> - 1 10 5 1 2. - 0 - 5.8821111451834440e-005 - -4.8682320117950439e-001 - 2.3461140692234039e-001 - <_> - - <_> - - - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - 0 - 8.3586022257804871e-002 - -1.5363390743732452e-001 - 7.1024411916732788e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -4.7323051840066910e-003 - -8.1375300884246826e-001 - 1.5069650113582611e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 5.7054250501096249e-003 - 1.2084300071001053e-001 - -7.2984558343887329e-001 - <_> - - <_> - - - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - 0 - 4.2972271330654621e-003 - 7.5880967080593109e-002 - -8.0118077993392944e-001 - -1.7692639827728271e+000 - 0 - -1 - <_> - - - <_> - - <_> - - - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - 0 - 6.2623426318168640e-002 - -6.7264968156814575e-001 - 6.5457260608673096e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -7.4647617340087891e-001 - 5.7469171285629272e-001 - -4.3637180328369141e-001 - <_> - - <_> - - - - <_> - 0 5 4 4 -1. - <_> - 2 5 2 4 2. - 0 - -1.7294099554419518e-002 - 4.6898889541625977e-001 - -3.9281249046325684e-001 - <_> - - <_> - - - - <_> - 1 8 17 4 -1. - <_> - 1 10 17 2 2. - 0 - 2.1398400887846947e-002 - -5.9292298555374146e-001 - 1.9770659506320953e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -3.5737060010433197e-002 - 5.5622661113739014e-001 - -2.0223970711231232e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - 3.2078200019896030e-003 - 7.4256651103496552e-002 - -7.2774058580398560e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -3.8174460642039776e-003 - -6.7518317699432373e-001 - 1.1311540007591248e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - 3.7939909379929304e-003 - 8.9654907584190369e-002 - -7.3344737291336060e-001 - <_> - - <_> - - - - <_> - 7 5 4 3 -1. - <_> - 9 5 2 3 2. - 0 - -1.8273390829563141e-002 - 4.4436338543891907e-001 - -1.8418380618095398e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - -5.3060338832437992e-003 - -7.0876628160476685e-001 - 7.8580521047115326e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.1829390190541744e-002 - 8.9572936296463013e-002 - -7.3483431339263916e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 4.8425127752125263e-003 - 4.7504398971796036e-002 - -3.6813148856163025e-001 - <_> - - <_> - - - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - 0 - 5.3384378552436829e-003 - 1.0396180301904678e-001 - -6.1680471897125244e-001 - <_> - - <_> - - - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - -2.8934059664607048e-002 - 2.3010690510272980e-001 - -9.5079377293586731e-002 - <_> - - <_> - - - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - 2.0601950585842133e-002 - -1.4737619459629059e-001 - 3.8007509708404541e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -1.0493800044059753e-002 - -6.4840590953826904e-001 - 9.1139681637287140e-002 - <_> - - <_> - - - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - 0 - 6.2527976930141449e-002 - 1.6974839568138123e-001 - -2.9701429605484009e-001 - <_> - - <_> - - - - <_> - 9 2 3 6 -1. - <_> - 7 4 3 2 3. - 1 - -9.4582162797451019e-002 - 1.9255830347537994e-001 - -2.5837939232587814e-002 - -1.7514940500259399e+000 - 1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.5237879753112793e-001 - 7.1485751867294312e-001 - -5.8257007598876953e-001 - <_> - - <_> - - - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - 0 - 1.9623799622058868e-001 - -5.0717341899871826e-001 - 3.0529379844665527e-001 - <_> - - <_> - - - - <_> - 4 5 2 4 -1. - <_> - 4 5 2 2 2. - 1 - -3.5102769732475281e-002 - 3.8133320212364197e-001 - -4.4005489349365234e-001 - <_> - - <_> - - - - <_> - 12 2 6 2 -1. - <_> - 14 4 2 2 3. - 1 - 8.6640313267707825e-002 - -3.1253110617399216e-002 - 4.1132459044456482e-001 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 4 18 2 2. - 0 - 3.6519891023635864e-001 - -1.7459569498896599e-003 - -2.0211540527343750e+003 - <_> - - <_> - - - - <_> - 7 6 6 2 -1. - <_> - 7 6 3 2 2. - 0 - -5.2979141473770142e-002 - 5.6572532653808594e-001 - -9.0168356895446777e-002 - <_> - - <_> - - - - <_> - 5 6 6 2 -1. - <_> - 8 6 3 2 2. - 0 - -1.3122299686074257e-002 - 2.8803709149360657e-001 - -3.0250340700149536e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - 0 - 1.3766849588137120e-004 - -5.2591192722320557e-001 - 1.6913980245590210e-001 - <_> - - <_> - - - - <_> - 1 5 2 6 -1. - <_> - 2 5 1 6 2. - 0 - 1.3008220493793488e-001 - -4.6197711490094662e-003 - -1.0582030029296875e+003 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.5327390283346176e-002 - -6.9445407390594482e-001 - 7.1856021881103516e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - -9.6624903380870819e-003 - -6.1284822225570679e-001 - 9.1272346675395966e-002 - <_> - - <_> - - - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - 0 - 8.8566377758979797e-002 - -1.5997810661792755e-001 - 3.6896151304244995e-001 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.7188939750194550e-003 - -6.3978141546249390e-001 - 9.2079572379589081e-002 - <_> - - <_> - - - - <_> - 4 0 11 8 -1. - <_> - 4 2 11 4 2. - 0 - -1.4510180056095123e-001 - 4.1528600454330444e-001 - -1.4322389662265778e-001 - <_> - - <_> - - - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - 1.7310230061411858e-002 - -1.5397289395332336e-001 - 4.0401691198348999e-001 - <_> - - <_> - - - - <_> - 13 8 5 2 -1. - <_> - 13 9 5 1 2. - 0 - 2.3151350615080446e-004 - -2.0172169804573059e-001 - 1.2100940197706223e-001 - <_> - - <_> - - - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - 0 - 4.4627388706430793e-004 - -3.9083960652351379e-001 - 1.2552070617675781e-001 - <_> - - <_> - - - - <_> - 12 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.3271129690110683e-002 - -1.0739839822053909e-001 - 2.6234090328216553e-001 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 5 0 8 9 2. - 0 - -1.1344719678163528e-001 - 2.6222631335258484e-001 - -2.0850320160388947e-001 - <_> - - <_> - - - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - 0 - 8.8979126885533333e-003 - 4.9091130495071411e-002 - -5.0896888971328735e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - -2.4719990789890289e-002 - -7.5905930995941162e-001 - 4.9361631274223328e-002 - <_> - - <_> - - - - <_> - 12 4 3 3 -1. - <_> - 13 5 1 3 3. - 1 - -3.3265918493270874e-002 - 3.4829610586166382e-001 - -5.9630129486322403e-002 - <_> - - <_> - - - - <_> - 6 1 6 2 -1. - <_> - 8 1 2 2 3. - 0 - -2.2988099604845047e-002 - -6.5046131610870361e-001 - 6.4039543271064758e-002 - <_> - - <_> - - - - <_> - 13 0 4 4 -1. - <_> - 12 1 4 2 2. - 1 - -3.1392410397529602e-002 - 2.1976619958877563e-001 - -6.0772381722927094e-002 - <_> - - <_> - - - - <_> - 5 0 4 4 -1. - <_> - 6 1 2 4 2. - 1 - -4.7737959772348404e-002 - 5.1002371311187744e-001 - -7.2028681635856628e-002 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - 3.2071519643068314e-002 - -7.6109372079372406e-002 - 2.5640499591827393e-001 - <_> - - <_> - - - - <_> - 1 0 15 6 -1. - <_> - 6 2 5 2 9. - 0 - 4.4289338588714600e-001 - -6.8526968359947205e-002 - 5.6304061412811279e-001 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - -1.1486619710922241e-002 - 1.5239420533180237e-001 - -4.0200568735599518e-002 - <_> - - <_> - - - - <_> - 2 5 6 3 -1. - <_> - 4 5 2 3 3. - 0 - -1.9018840044736862e-002 - 3.1413850188255310e-001 - -1.2248709797859192e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -6.8585639819502831e-003 - -6.6252797842025757e-001 - 5.7304140180349350e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 9.8197776824235916e-003 - 4.3627310544252396e-002 - -6.7724108695983887e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - -7.0927143096923828e-002 - 5.4129147529602051e-001 - -7.2669401764869690e-002 - <_> - - <_> - - - - <_> - 5 0 7 4 -1. - <_> - 5 1 7 2 2. - 0 - 2.3212930187582970e-002 - -1.1495050042867661e-001 - 2.9792940616607666e-001 - <_> - - <_> - - - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - 0 - -6.4186761155724525e-003 - -4.9147358536720276e-001 - 3.9359170943498611e-002 - <_> - - <_> - - - - <_> - 1 8 3 3 -1. - <_> - 1 9 3 1 3. - 0 - 1.4896850101649761e-002 - 4.8360548913478851e-002 - -5.7956790924072266e-001 - <_> - - <_> - - - - <_> - 10 7 7 2 -1. - <_> - 10 8 7 1 2. - 0 - 3.0226260423660278e-003 - -1.1061940342187881e-001 - 5.2919808775186539e-002 - <_> - - <_> - - - - <_> - 5 0 4 2 -1. - <_> - 6 0 2 2 2. - 0 - -6.6905869171023369e-003 - -4.3806540966033936e-001 - 6.6940046846866608e-002 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 5 1 2 3. - 0 - 7.2806091047823429e-003 - -6.5536737442016602e-002 - 2.7438428997993469e-001 - -1.9025980234146118e+000 - 2 - -1 - <_> - - - <_> - - <_> - - - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - -1.0395430028438568e-001 - 6.2448638677597046e-001 - -5.9380972385406494e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - -9.0995300561189651e-003 - 2.8107839822769165e-001 - -2.3319789767265320e-001 - <_> - - <_> - - - - <_> - 0 0 15 12 -1. - <_> - 0 4 15 4 3. - 0 - 1.1043469905853271e+000 - 1.3428430538624525e-003 - -1.8338730468750000e+003 - <_> - - <_> - - - - <_> - 7 4 10 8 -1. - <_> - 7 8 10 4 2. - 0 - 1.5152810513973236e-001 - -5.4776471853256226e-001 - 1.7032749950885773e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -1.8869370222091675e-002 - 5.1096087694168091e-001 - -3.8751450181007385e-001 - <_> - - <_> - - - - <_> - 9 2 4 6 -1. - <_> - 10 3 2 6 2. - 1 - -2.5966409593820572e-002 - 5.9833060950040817e-002 - -8.0629907548427582e-002 - <_> - - <_> - - - - <_> - 9 2 6 4 -1. - <_> - 8 3 6 2 2. - 1 - -3.3599171787500381e-002 - 4.0842789411544800e-001 - -3.2333779335021973e-001 - <_> - - <_> - - - - <_> - 7 2 6 4 -1. - <_> - 7 3 6 2 2. - 0 - -3.8244638592004776e-002 - 4.9302589893341064e-001 - -1.6094090044498444e-001 - <_> - - <_> - - - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - 0 - 2.1556170657277107e-002 - -5.7558798789978027e-001 - 1.5593230724334717e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -5.5178638547658920e-002 - 3.1259340047836304e-001 - -2.3921109735965729e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -3.8735559210181236e-003 - 5.4549610614776611e-001 - -1.0063389688730240e-001 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - -1.4108420349657536e-002 - -7.3762410879135132e-001 - 5.7357121258974075e-002 - <_> - - <_> - - - - <_> - 0 6 2 4 -1. - <_> - 0 8 2 2 2. - 0 - -6.0528269968926907e-003 - -5.5406332015991211e-001 - 7.6832607388496399e-002 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - 1.8572619184851646e-002 - 3.2866738736629486e-002 - -6.4792937040328979e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - 1.2845859862864017e-002 - 7.3656037449836731e-002 - -5.7360821962356567e-001 - <_> - - <_> - - - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.0417309589684010e-002 - -1.0239619761705399e-001 - 2.5212439894676208e-001 - <_> - - <_> - - - - <_> - 0 10 5 2 -1. - <_> - 0 11 5 1 2. - 0 - -5.2642878144979477e-003 - -5.9819197654724121e-001 - 6.9865286350250244e-002 - <_> - - <_> - - - - <_> - 2 10 16 2 -1. - <_> - 10 10 8 1 2. - <_> - 2 11 8 1 2. - 0 - 2.7880489826202393e-002 - 4.3994851410388947e-002 - -5.0984817743301392e-001 - <_> - - <_> - - - - <_> - 4 2 9 3 -1. - <_> - 4 3 9 1 3. - 0 - 2.3825490847229958e-002 - -1.2183369696140289e-001 - 3.1688851118087769e-001 - <_> - - <_> - - - - <_> - 6 1 8 4 -1. - <_> - 6 2 8 2 2. - 0 - -2.0250659435987473e-002 - 3.3406090736389160e-001 - -1.0055329650640488e-001 - <_> - - <_> - - - - <_> - 3 0 9 4 -1. - <_> - 3 1 9 2 2. - 0 - 3.2774340361356735e-002 - -1.2221919745206833e-001 - 3.1050428748130798e-001 - <_> - - <_> - - - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - -1.1297949822619557e-004 - 1.0250750184059143e-001 - -2.0995940268039703e-001 - <_> - - <_> - - - - <_> - 2 4 12 5 -1. - <_> - 8 4 6 5 2. - 0 - -9.5565170049667358e-002 - 3.0095851421356201e-001 - -1.3452769815921783e-001 - <_> - - <_> - - - - <_> - 10 0 4 2 -1. - <_> - 11 0 2 2 2. - 0 - 6.3593629747629166e-003 - 6.4052909612655640e-002 - -4.9904870986938477e-001 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -7.0063141174614429e-003 - 3.0243200063705444e-001 - -1.1930730193853378e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 1.7500750720500946e-002 - -5.7251829653978348e-002 - 4.4421580433845520e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -7.2048557922244072e-003 - -6.1189258098602295e-001 - 6.4432121813297272e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -5.6282947771251202e-003 - 2.4128329753875732e-001 - -8.9441202580928802e-002 - <_> - - <_> - - - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - 0 - -4.9876999109983444e-003 - -6.7359071969985962e-001 - 5.8322191238403320e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 2.3166439495980740e-003 - -8.9238733053207397e-002 - 1.2162160128355026e-001 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - 0 - -6.7102159373462200e-003 - 3.7631779909133911e-001 - -9.5407336950302124e-002 - <_> - - <_> - - - - <_> - 11 0 4 2 -1. - <_> - 12 0 2 2 2. - 0 - 5.0830701366066933e-003 - 7.4287436902523041e-002 - -3.9065170288085938e-001 - <_> - - <_> - - - - <_> - 4 0 8 9 -1. - <_> - 4 3 8 3 3. - 0 - 1.8377199769020081e-001 - -6.3876979053020477e-002 - 5.6611680984497070e-001 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - 0 - -6.0653341934084892e-003 - 1.4651310443878174e-001 - -2.5797340273857117e-001 - <_> - - <_> - - - - <_> - 3 0 6 2 -1. - <_> - 5 0 2 2 3. - 0 - -2.0235970616340637e-002 - -5.4194480180740356e-001 - 5.7601358741521835e-002 - <_> - - <_> - - - - <_> - 14 7 4 3 -1. - <_> - 14 8 4 1 3. - 0 - -2.6110339909791946e-002 - -6.0285919904708862e-001 - 1.7485620453953743e-002 - <_> - - <_> - - - - <_> - 9 1 6 3 -1. - <_> - 11 3 2 3 3. - 1 - -1.0403200238943100e-001 - -2.4455690383911133e-001 - 1.2605750560760498e-001 - <_> - - <_> - - - - <_> - 7 5 6 3 -1. - <_> - 9 6 2 1 9. - 0 - -5.3566411137580872e-002 - 2.5159069895744324e-001 - -1.0152529925107956e-001 - <_> - - <_> - - - - <_> - 6 5 4 2 -1. - <_> - 7 5 2 2 2. - 0 - -6.7835198715329170e-003 - 3.3641210198402405e-001 - -9.6368037164211273e-002 - <_> - - <_> - - - - <_> - 14 7 4 3 -1. - <_> - 14 8 4 1 3. - 0 - 3.0316449701786041e-002 - 1.7477709800004959e-002 - -6.0695719718933105e-001 - <_> - - <_> - - - - <_> - 0 7 4 3 -1. - <_> - 0 8 4 1 3. - 0 - 2.0985240116715431e-002 - 4.0398400276899338e-002 - -7.3442429304122925e-001 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.9706780090928078e-002 - 3.1928699463605881e-002 - -7.5477129220962524e-001 - -1.8514059782028198e+000 - 3 - -1 - <_> - - - <_> - - <_> - - - - <_> - 2 2 9 8 -1. - <_> - 2 4 9 4 2. - 0 - -1.7423079907894135e-001 - 6.1390841007232666e-001 - -4.7894141077995300e-001 - <_> - - <_> - - - - <_> - 9 6 6 2 -1. - <_> - 11 6 2 2 3. - 0 - 3.7291038781404495e-002 - -2.7487620711326599e-001 - 6.9311857223510742e-001 - <_> - - <_> - - - - <_> - 7 2 2 2 -1. - <_> - 7 2 2 1 2. - 1 - 7.1578949689865112e-002 - 3.4122820943593979e-002 - -1.7707500000000000e+003 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - -5.8419991284608841e-002 - 9.5094732940196991e-002 - -3.5735588520765305e-002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 9 3 3 2 2. - 1 - -6.8234533071517944e-002 - 4.3610438704490662e-001 - -2.7024009823799133e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 4.6446189284324646e-002 - -5.3858101367950439e-001 - 1.2908129394054413e-001 - <_> - - <_> - - - - <_> - 1 4 4 6 -1. - <_> - 3 4 2 6 2. - 0 - -1.8313050270080566e-002 - 2.4637509882450104e-001 - -2.9880639910697937e-001 - <_> - - <_> - - - - <_> - 9 2 1 6 -1. - <_> - 7 4 1 2 3. - 1 - 4.5683261007070541e-002 - -1.9792109727859497e-002 - 2.9861330986022949e-001 - <_> - - <_> - - - - <_> - 9 2 6 1 -1. - <_> - 11 4 2 1 3. - 1 - -3.8607221096754074e-002 - 3.2478851079940796e-001 - -1.9968329370021820e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -5.3359329700469971e-002 - 5.1778447628021240e-001 - -1.1112260073423386e-001 - <_> - - <_> - - - - <_> - 5 3 7 3 -1. - <_> - 5 4 7 1 3. - 0 - 2.5140959769487381e-002 - -9.0483076870441437e-002 - 5.9572058916091919e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 6 0 6 12 3. - 0 - -2.1597529947757721e-001 - 2.0755149424076080e-001 - -2.4115790426731110e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 2.9019270092248917e-002 - -1.0131660103797913e-001 - 4.7087991237640381e-001 - <_> - - <_> - - - - <_> - 14 2 4 10 -1. - <_> - 14 7 4 5 2. - 0 - 1.4864710159599781e-002 - -2.8045138716697693e-001 - 1.1898139864206314e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -3.2239339780062437e-003 - 4.2325741052627563e-001 - -1.0377889871597290e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -5.6671360507607460e-003 - -5.9137248992919922e-001 - 9.7125522792339325e-002 - <_> - - <_> - - - - <_> - 0 7 4 4 -1. - <_> - 0 9 4 2 2. - 0 - 1.0033809667220339e-004 - -4.6385771036148071e-001 - 7.2615653276443481e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.6071398854255676e-001 - -6.1538481712341309e-001 - 5.5276088416576385e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -3.1085009686648846e-003 - -5.7536369562149048e-001 - 6.0731589794158936e-002 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - 6.1288890428841114e-003 - 7.4672959744930267e-002 - -5.2534508705139160e-001 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 1 9. - 0 - -2.2192759439349174e-002 - 3.2507351040840149e-001 - -1.1742109805345535e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -2.9342940077185631e-002 - -6.4161187410354614e-001 - 4.9035649746656418e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 7.7600688673555851e-003 - 6.9918327033519745e-002 - -4.5949921011924744e-001 - <_> - - <_> - - - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - 0 - 1.7340639606118202e-002 - -1.0505460202693939e-001 - 2.8804540634155273e-001 - <_> - - <_> - - - - <_> - 2 2 9 8 -1. - <_> - 2 4 9 4 2. - 0 - -1.7411990463733673e-001 - -2.7445599436759949e-001 - 1.2657789885997772e-001 - <_> - - <_> - - - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - 0 - 1.1415860056877136e-001 - -9.0350322425365448e-002 - 2.8193458914756775e-001 - <_> - - <_> - - - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - 0 - -3.4428309649229050e-002 - 4.5843648910522461e-001 - -7.3989093303680420e-002 - <_> - - <_> - - - - <_> - 12 10 6 2 -1. - <_> - 15 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - 9.6141622634604573e-005 - -1.2745319306850433e-001 - 1.1268970370292664e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -4.9724201671779156e-003 - 2.7802708745002747e-001 - -1.0591570287942886e-001 - <_> - - <_> - - - - <_> - 13 4 3 2 -1. - <_> - 13 4 3 1 2. - 1 - -6.3664510846138000e-002 - 5.5961591005325317e-001 - -2.6394790038466454e-003 - <_> - - <_> - - - - <_> - 5 4 2 3 -1. - <_> - 5 4 1 3 2. - 1 - -2.6674149557948112e-002 - 4.9559178948402405e-001 - -6.9073468446731567e-002 - <_> - - <_> - - - - <_> - 12 10 6 2 -1. - <_> - 15 10 3 1 2. - <_> - 12 11 3 1 2. - 0 - 1.4223149977624416e-002 - 3.5259280353784561e-002 - -4.1093349456787109e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 0 10 3 1 2. - <_> - 3 11 3 1 2. - 0 - 3.2638079574098811e-005 - -1.8650929629802704e-001 - 1.4809480309486389e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 9 10 8 1 2. - <_> - 1 11 8 1 2. - 0 - 2.3983500897884369e-002 - 4.9719810485839844e-002 - -5.1264011859893799e-001 - <_> - - <_> - - - - <_> - 7 0 9 2 -1. - <_> - 10 3 3 2 3. - 1 - -5.0319589674472809e-002 - 8.3218432962894440e-002 - -2.9233419895172119e-001 - <_> - - <_> - - - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - 0 - -1.1278240010142326e-002 - -6.7043042182922363e-001 - 3.4270301461219788e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.5662490874528885e-002 - 2.2888509929180145e-001 - -1.3197310268878937e-001 - <_> - - <_> - - - - <_> - 8 0 6 2 -1. - <_> - 10 0 2 2 3. - 0 - 2.1419739350676537e-002 - 3.7937160581350327e-002 - -4.5889899134635925e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - -3.4534449223428965e-003 - 3.3343398571014404e-001 - -7.5317703187465668e-002 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 5.8356970548629761e-003 - 3.6585651338100433e-002 - -3.8631778955459595e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 5.0293467938899994e-003 - 5.2214898169040680e-002 - -5.0938832759857178e-001 - <_> - - <_> - - - - <_> - 9 5 2 3 -1. - <_> - 8 6 2 1 3. - 1 - 3.3139381557703018e-002 - -2.7443800121545792e-002 - 3.2198739051818848e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - -8.7034106254577637e-003 - 1.7421320080757141e-001 - -1.4240099489688873e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -8.2512637600302696e-003 - -6.9030272960662842e-001 - 3.4187458455562592e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - -1.4581499621272087e-002 - -6.0555249452590942e-001 - 3.1542379409074783e-002 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - -1.1998149752616882e-001 - 3.4346449375152588e-001 - -1.8667690455913544e-002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 9 3 3 2 2. - 1 - -6.8040207028388977e-002 - -2.2389249503612518e-001 - 9.7281388938426971e-002 - <_> - - <_> - - - - <_> - 10 0 3 7 -1. - <_> - 11 1 1 7 3. - 1 - -3.5576358437538147e-002 - 9.8187446594238281e-002 - -2.1791150793433189e-002 - <_> - - <_> - - - - <_> - 8 0 7 3 -1. - <_> - 7 1 7 1 3. - 1 - -3.0443429946899414e-002 - 2.4923379719257355e-001 - -9.3816317617893219e-002 - <_> - - <_> - - - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - 0 - -5.6799547746777534e-003 - 2.1073240041732788e-001 - -1.0627429932355881e-001 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - 9.0224146842956543e-003 - 4.8349138349294662e-002 - -4.5440268516540527e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 9 4 9 4 2. - <_> - 0 8 9 4 2. - 0 - 2.6591160893440247e-001 - 2.9608080163598061e-002 - -6.3526999950408936e-001 - <_> - - <_> - - - - <_> - 2 4 4 5 -1. - <_> - 3 4 2 5 2. - 0 - -3.5959859378635883e-003 - 1.3883949816226959e-001 - -1.4947269856929779e-001 - -1.7941249608993530e+000 - 4 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.8246339261531830e-001 - 6.5487307310104370e-001 - -4.6831071376800537e-001 - <_> - - <_> - - - - <_> - 2 4 15 3 -1. - <_> - 7 4 5 3 3. - 0 - -6.9158546626567841e-002 - 2.5979688763618469e-001 - -3.5439720749855042e-001 - <_> - - <_> - - - - <_> - 4 2 4 4 -1. - <_> - 5 3 2 4 2. - 1 - -5.1030728965997696e-002 - 6.5509510040283203e-001 - -2.4366210401058197e-001 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 16 6 2 3 2. - <_> - 14 9 2 3 2. - 0 - 6.6160508431494236e-003 - -1.4317570626735687e-001 - 1.9473850727081299e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 6 2 3 2. - <_> - 2 9 2 3 2. - 0 - 4.6910191886126995e-003 - -3.7824809551239014e-001 - 1.7687709629535675e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - -2.8749920427799225e-002 - -3.2157620787620544e-001 - 1.8641479313373566e-002 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 1.0602179827401415e-004 - -4.5742839574813843e-001 - 1.3976849615573883e-001 - <_> - - <_> - - - - <_> - 12 3 3 3 -1. - <_> - 11 4 3 1 3. - 1 - 1.1274269782006741e-002 - -9.0355128049850464e-002 - 2.1887609362602234e-001 - <_> - - <_> - - - - <_> - 6 3 3 3 -1. - <_> - 7 4 1 3 3. - 1 - -2.7582680806517601e-002 - 4.1455930471420288e-001 - -1.3666220009326935e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 2.3641479492653161e-004 - -4.6728670597076416e-001 - 1.1781200021505356e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -1.1871670186519623e-001 - 3.1791681051254272e-001 - -1.6469870507717133e-001 - <_> - - <_> - - - - <_> - 12 0 2 9 -1. - <_> - 9 3 2 3 3. - 1 - 1.9392369687557220e-001 - 5.0983601249754429e-003 - -8.0679917335510254e-001 - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 9 3 3 2 3. - 1 - -1.8230450153350830e-001 - -3.8811311125755310e-001 - 1.5172429382801056e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 4 18 4 3. - 0 - -2.5526711344718933e-001 - 1.5723639726638794e-001 - -4.0902090072631836e-001 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 2.4411959573626518e-002 - -1.1094090342521667e-001 - 4.6774199604988098e-001 - <_> - - <_> - - - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 2 2. - 0 - 2.8254329663468525e-005 - -2.1161890029907227e-001 - 2.0330640673637390e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 2.8164679184556007e-002 - -1.1879099905490875e-001 - 3.5778549313545227e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - 0 - -1.2130060233175755e-002 - -6.4840310811996460e-001 - 6.2937177717685699e-002 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -9.7364839166402817e-003 - -6.3039177656173706e-001 - 5.1388788968324661e-002 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 6 0 6 6 3. - 0 - -1.6935800015926361e-001 - 2.0276680588722229e-001 - -1.8470560014247894e-001 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - 0 - 3.0143039301037788e-002 - -1.2960250675678253e-001 - 2.7041170001029968e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - 0 - 1.2918629683554173e-002 - 3.7680979818105698e-002 - -4.9257808923721313e-001 - <_> - - <_> - - - - <_> - 3 5 6 2 -1. - <_> - 3 5 3 1 2. - <_> - 6 6 3 1 2. - 0 - -7.4791330844163895e-003 - 3.2607930898666382e-001 - -1.0927549749612808e-001 - <_> - - <_> - - - - <_> - 8 0 3 2 -1. - <_> - 9 0 1 2 3. - 0 - -6.3150310888886452e-003 - -5.7017749547958374e-001 - 5.1293510943651199e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - 0 - -5.5133788846433163e-003 - -4.2573130130767822e-001 - 6.7410148680210114e-002 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - 0 - -2.5038039311766624e-002 - 3.4961760044097900e-001 - -1.0028000175952911e-001 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 1.5786489471793175e-002 - 6.5336212515830994e-002 - -4.7719699144363403e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -2.0188970956951380e-003 - 2.0141409337520599e-001 - -1.3781909644603729e-001 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - 1.5845090150833130e-002 - 4.6465918421745300e-002 - -6.0951578617095947e-001 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 4.4102370738983154e-003 - 1.5361309982836246e-002 - -6.8296772241592407e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 5.4094279184937477e-003 - -7.9418838024139404e-002 - 3.7774890661239624e-001 - <_> - - <_> - - - - <_> - 10 9 3 3 -1. - <_> - 11 9 1 3 3. - 0 - -9.1723483055830002e-003 - -5.0129491090774536e-001 - 4.2223211377859116e-002 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 5.8078318834304810e-003 - -9.7935520112514496e-002 - 3.0242648720741272e-001 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 9.6367846708744764e-005 - -1.2192639708518982e-001 - 1.6515390574932098e-001 - <_> - - <_> - - - - <_> - 7 10 4 1 -1. - <_> - 8 10 2 1 2. - 0 - -9.0094821644015610e-005 - 1.8640710413455963e-001 - -1.6429470479488373e-001 - <_> - - <_> - - - - <_> - 5 1 9 4 -1. - <_> - 5 2 9 2 2. - 0 - -4.2277779430150986e-002 - 4.2195519804954529e-001 - -5.8824878185987473e-002 - <_> - - <_> - - - - <_> - 6 3 6 4 -1. - <_> - 6 4 6 2 2. - 0 - -2.1149210631847382e-002 - 2.0251630246639252e-001 - -1.3794210553169250e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - 8.2650636613834649e-005 - -1.9383859634399414e-001 - 1.1907099932432175e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 8.7700327858328819e-003 - 4.4557921588420868e-002 - -5.6677401065826416e-001 - <_> - - <_> - - - - <_> - 7 0 7 8 -1. - <_> - 7 2 7 4 2. - 0 - 1.1755479872226715e-001 - -4.2800500988960266e-002 - 3.6108881235122681e-001 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - 0 - 9.6330074593424797e-003 - 5.1822990179061890e-002 - -5.2042788267135620e-001 - <_> - - <_> - - - - <_> - 13 8 5 3 -1. - <_> - 13 9 5 1 3. - 0 - -2.0586889237165451e-002 - -4.0654578804969788e-001 - 2.5355400517582893e-002 - <_> - - <_> - - - - <_> - 5 3 5 3 -1. - <_> - 4 4 5 1 3. - 1 - -2.6531819254159927e-002 - 3.0200049281120300e-001 - -7.8816160559654236e-002 - <_> - - <_> - - - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 2 2. - <_> - 10 8 1 2 2. - 0 - 1.0697710327804089e-002 - -3.5472430288791656e-002 - 2.2002260386943817e-001 - <_> - - <_> - - - - <_> - 0 8 5 3 -1. - <_> - 0 9 5 1 3. - 0 - 2.2925930097699165e-002 - 3.5583890974521637e-002 - -6.5233951807022095e-001 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - -1.6979500651359558e-002 - -3.5206571221351624e-001 - 2.8009910136461258e-002 - <_> - - <_> - - - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - 1.8478220328688622e-002 - 4.4543039053678513e-002 - -5.0304412841796875e-001 - <_> - - <_> - - - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 2 2. - <_> - 10 8 1 2 2. - 0 - -4.4793421402573586e-003 - 2.5836798548698425e-001 - -4.2940050363540649e-002 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 6 6 1 2 2. - <_> - 7 8 1 2 2. - 0 - 5.6482921354472637e-003 - -8.1515468657016754e-002 - 2.7649441361427307e-001 - <_> - - <_> - - - - <_> - 10 9 3 3 -1. - <_> - 11 9 1 3 3. - 0 - 7.8102410770952702e-003 - 3.8798350840806961e-002 - -4.4269979000091553e-001 - <_> - - <_> - - - - <_> - 5 9 3 3 -1. - <_> - 6 9 1 3 3. - 0 - -9.2882793396711349e-003 - -5.6610691547393799e-001 - 3.7403721362352371e-002 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -9.3019756604917347e-005 - 1.2570169568061829e-001 - -1.2166970223188400e-001 - <_> - - <_> - - - - <_> - 0 1 4 11 -1. - <_> - 2 1 2 11 2. - 0 - 1.2011100351810455e-001 - -2.8434859588742256e-002 - 7.4229037761688232e-001 - -1.7087210416793823e+000 - 5 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5502790957689285e-002 - 7.6810652017593384e-001 - -3.4562450647354126e-001 - <_> - - <_> - - - - <_> - 6 1 10 9 -1. - <_> - 6 4 10 3 3. - 0 - -2.0711760222911835e-001 - 3.3520048856735229e-001 - -3.5342261195182800e-001 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - -3.8090940564870834e-002 - 6.4589887857437134e-001 - -1.9888919591903687e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 1 - -1.1236749589443207e-002 - 1.9605120643973351e-002 - -1.3818189501762390e-001 - <_> - - <_> - - - - <_> - 1 4 2 5 -1. - <_> - 2 4 1 5 2. - 0 - -4.5111398212611675e-003 - 2.2876060009002686e-001 - -3.1510901451110840e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -1.9242960261180997e-003 - 2.1156929433345795e-001 - -1.3428880274295807e-001 - <_> - - <_> - - - - <_> - 0 6 7 6 -1. - <_> - 0 9 7 3 2. - 0 - 4.1934859007596970e-002 - -4.9654480814933777e-001 - 1.0631070286035538e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - 3.3527929335832596e-003 - -7.7351443469524384e-002 - 3.3729350566864014e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 5.6215040385723114e-003 - -8.1691898405551910e-002 - 4.6233668923377991e-001 - <_> - - <_> - - - - <_> - 3 5 12 6 -1. - <_> - 7 5 4 6 3. - 0 - -2.0378379151225090e-002 - 1.3168209791183472e-001 - -3.5178178548812866e-001 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 7 9 4 3 2. - 0 - -3.2714441418647766e-002 - -6.3405597209930420e-001 - 7.7019467949867249e-002 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 0 5 3 2. - 0 - 1.9768450409173965e-002 - -2.1647900342941284e-001 - 1.9565519690513611e-001 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - 0 - 2.9163479339331388e-003 - -3.5658559203147888e-001 - 9.7441449761390686e-002 - <_> - - <_> - - - - <_> - 12 4 2 3 -1. - <_> - 11 5 2 1 3. - 1 - -1.1110129766166210e-002 - 1.6842029988765717e-001 - -1.1107269674539566e-001 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 2.0324539393186569e-002 - -9.7157396376132965e-002 - 3.7280368804931641e-001 - <_> - - <_> - - - - <_> - 12 4 2 3 -1. - <_> - 11 5 2 1 3. - 1 - -4.3062889017164707e-003 - 3.4338738769292831e-002 - -3.7133701145648956e-002 - <_> - - <_> - - - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - -2.1981669589877129e-002 - 3.8905361294746399e-001 - -1.0749849677085876e-001 - <_> - - <_> - - - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - 0 - 1.0463249869644642e-002 - 5.8108348399400711e-002 - -4.9651509523391724e-001 - <_> - - <_> - - - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - 0 - -3.6034088581800461e-002 - -4.9659618735313416e-001 - 6.0606569051742554e-002 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - -2.8891820460557938e-002 - -5.7386201620101929e-001 - 3.3857319504022598e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.1050649918615818e-002 - 4.5335989445447922e-002 - -5.9945368766784668e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.1056279763579369e-002 - -4.3665930628776550e-001 - 4.1093189269304276e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -1.7272779718041420e-002 - 1.7343489825725555e-001 - -1.7528730630874634e-001 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - 0 - -3.6496959626674652e-002 - 3.9858031272888184e-001 - -8.1219650804996490e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - -8.0351969227194786e-003 - -5.2099347114562988e-001 - 6.8034321069717407e-002 - <_> - - <_> - - - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - 0 - 3.9475150406360626e-002 - -9.3318670988082886e-002 - 3.1671538949012756e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - 9.7668059170246124e-003 - 6.1611980199813843e-002 - -4.7003281116485596e-001 - <_> - - <_> - - - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - 0 - 1.4267800375819206e-002 - -4.1417431086301804e-002 - 3.2682031393051147e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - -1.4627629891037941e-002 - 2.5459268689155579e-001 - -9.2211320996284485e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.7443440407514572e-002 - 2.1452540159225464e-001 - -1.1371590197086334e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - -7.8959967941045761e-003 - -4.2572760581970215e-001 - 6.0067750513553619e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 7.7234968543052673e-002 - 3.8733281195163727e-002 - -5.4066091775894165e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - 0 - 5.0929659046232700e-003 - 4.5729279518127441e-002 - -4.5329090952873230e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - 8.4982849657535553e-003 - -1.1133170127868652e-001 - 1.9510190188884735e-001 - <_> - - <_> - - - - <_> - 2 0 11 8 -1. - <_> - 2 2 11 4 2. - 0 - -1.3983149826526642e-001 - 2.7004420757293701e-001 - -1.1368890106678009e-001 - <_> - - <_> - - - - <_> - 4 1 12 11 -1. - <_> - 4 1 6 11 2. - 0 - 2.3544949293136597e-001 - -3.8515809923410416e-002 - 2.3026439547538757e-001 - <_> - - <_> - - - - <_> - 3 11 8 1 -1. - <_> - 5 11 4 1 2. - 0 - 1.0409420356154442e-002 - 4.4020529836416245e-002 - -5.2599149942398071e-001 - <_> - - <_> - - - - <_> - 10 3 2 4 -1. - <_> - 10 4 2 2 2. - 0 - -4.2654508724808693e-003 - 1.0057310014963150e-001 - -1.2344259768724442e-001 - <_> - - <_> - - - - <_> - 6 3 4 4 -1. - <_> - 6 4 4 2 2. - 0 - 1.1060579679906368e-002 - -8.1759817898273468e-002 - 3.6806258559226990e-001 - <_> - - <_> - - - - <_> - 15 2 3 4 -1. - <_> - 15 3 3 2 2. - 0 - -1.7567450180649757e-002 - -3.7257051467895508e-001 - 4.9060110002756119e-002 - <_> - - <_> - - - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - 0 - 1.1153019964694977e-002 - 3.1007820740342140e-002 - -6.5017551183700562e-001 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - 1.4512670226395130e-002 - 4.9902249127626419e-002 - -3.2837110757827759e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - -2.2447660565376282e-002 - -4.2730820178985596e-001 - 5.1438558846712112e-002 - <_> - - <_> - - - - <_> - 7 9 8 3 -1. - <_> - 9 9 4 3 2. - 0 - -1.1137849651277065e-004 - 1.0777100175619125e-001 - -1.4144800603389740e-001 - <_> - - <_> - - - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - 0 - -6.8043689243495464e-003 - 2.5245690345764160e-001 - -8.8355191051959991e-002 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - 0 - 1.1319419718347490e-004 - -9.0738296508789063e-002 - 1.1057420074939728e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - 9.8332180641591549e-005 - -1.4923529326915741e-001 - 1.4092969894409180e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 7 0 4 3 2. - 0 - -4.1529871523380280e-002 - -5.3849858045578003e-001 - 3.7263870239257813e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - -8.4064602560829371e-005 - 1.7529909312725067e-001 - -1.1037810146808624e-001 - <_> - - <_> - - - - <_> - 3 7 15 4 -1. - <_> - 8 7 5 4 3. - 0 - -6.0910630971193314e-002 - 6.7305542528629303e-002 - -5.1418140530586243e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 2.8795659542083740e-001 - -4.7617539763450623e-002 - 4.4013059139251709e-001 - <_> - - <_> - - - - <_> - 12 1 4 6 -1. - <_> - 14 1 2 3 2. - <_> - 12 4 2 3 2. - 0 - 6.4567220397293568e-003 - -1.1678449809551239e-001 - 1.9663040339946747e-001 - <_> - - <_> - - - - <_> - 1 1 14 4 -1. - <_> - 1 2 14 2 2. - 0 - 3.3024981617927551e-002 - -1.1936070024967194e-001 - 2.1602100133895874e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5381961166858673e-002 - -3.8685059547424316e-001 - 5.3844269365072250e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -2.0128320902585983e-002 - -6.3146728277206421e-001 - 3.5852450877428055e-002 - <_> - - <_> - - - - <_> - 5 2 9 3 -1. - <_> - 5 3 9 1 3. - 0 - -2.9262129217386246e-002 - 3.1658959388732910e-001 - -7.7322661876678467e-002 - <_> - - <_> - - - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - -2.1860150620341301e-002 - -5.4143399000167847e-001 - 3.9601378142833710e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -7.7890069223940372e-003 - 1.6942089796066284e-001 - -1.2422429770231247e-001 - <_> - - <_> - - - - <_> - 3 9 8 3 -1. - <_> - 5 9 4 3 2. - 0 - -3.8938779383897781e-002 - -5.5230420827865601e-001 - 3.6004111170768738e-002 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - 2.9549999162554741e-002 - 1.2396270409226418e-002 - -4.6334400773048401e-001 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 5.7805092073976994e-003 - -4.6647120267152786e-002 - 4.0929031372070313e-001 - <_> - - <_> - - - - <_> - 8 9 6 3 -1. - <_> - 10 9 2 3 3. - 0 - -1.6484359279274940e-002 - -1.6388489305973053e-001 - 3.5984411835670471e-002 - <_> - - <_> - - - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - 0 - -7.8519893577322364e-005 - 1.3505099713802338e-001 - -1.4988400042057037e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - 5.7466499507427216e-002 - -1.0657619684934616e-002 - 2.4209600687026978e-001 - <_> - - <_> - - - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - -4.9877569079399109e-002 - 4.3212598562240601e-001 - -3.9752040058374405e-002 - -1.6544970273971558e+000 - 6 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.3002170249819756e-002 - -3.5921901464462280e-001 - 7.2445052862167358e-001 - <_> - - <_> - - - - <_> - 6 4 11 8 -1. - <_> - 6 8 11 4 2. - 0 - 2.8081539273262024e-001 - -3.1760689616203308e-001 - 2.8313899040222168e-001 - <_> - - <_> - - - - <_> - 0 4 16 8 -1. - <_> - 4 4 8 8 2. - 0 - -1.0230190306901932e-001 - 2.7121749520301819e-001 - -4.0805050730705261e-001 - <_> - - <_> - - - - <_> - 14 2 1 9 -1. - <_> - 14 5 1 3 3. - 0 - -7.0124780759215355e-003 - 9.5718100666999817e-002 - -1.6140650212764740e-001 - <_> - - <_> - - - - <_> - 0 6 15 2 -1. - <_> - 5 6 5 2 3. - 0 - 2.9238969087600708e-001 - -2.9914049082435668e-004 - -1.5149759521484375e+003 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 9 5 3 2 2. - 1 - -2.8283270075917244e-002 - 2.6549229025840759e-001 - -1.3133880496025085e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 3.6253510043025017e-003 - -2.3768079280853271e-001 - 4.5994341373443604e-001 - <_> - - <_> - - - - <_> - 10 1 1 6 -1. - <_> - 8 3 1 2 3. - 1 - -2.9781410470604897e-002 - 2.1161870658397675e-001 - -1.3860809616744518e-002 - <_> - - <_> - - - - <_> - 3 2 1 9 -1. - <_> - 3 5 1 3 3. - 0 - -1.6370929777622223e-002 - 1.9874550402164459e-001 - -3.2648208737373352e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 6.4193690195679665e-003 - -3.6268979310989380e-001 - 1.1069930344820023e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -5.7248339056968689e-002 - 1.9361220300197601e-001 - -2.6778540015220642e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 8.4205381572246552e-003 - -1.3904230296611786e-001 - 2.9838430881500244e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -5.7426397688686848e-003 - 3.2052099704742432e-001 - -1.0433880239725113e-001 - <_> - - <_> - - - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - 0 - -3.6206389777362347e-003 - 1.6167849302291870e-001 - -6.5803676843643188e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -1.8714519217610359e-002 - 1.9818380475044250e-001 - -1.6230210661888123e-001 - <_> - - <_> - - - - <_> - 8 0 6 3 -1. - <_> - 10 0 2 3 3. - 0 - -4.3710019439458847e-002 - -7.4743181467056274e-001 - 4.9251399934291840e-002 - <_> - - <_> - - - - <_> - 5 0 6 6 -1. - <_> - 5 2 6 2 3. - 0 - -7.1742817759513855e-002 - 4.3014928698539734e-001 - -8.6288601160049438e-002 - <_> - - <_> - - - - <_> - 8 0 6 4 -1. - <_> - 10 0 2 4 3. - 0 - -3.6524080205708742e-003 - 1.3674829900264740e-001 - -1.4051650464534760e-001 - <_> - - <_> - - - - <_> - 5 6 4 1 -1. - <_> - 6 6 2 1 2. - 0 - -3.2031999435275793e-003 - 3.3417999744415283e-001 - -1.0332349687814713e-001 - <_> - - <_> - - - - <_> - 8 0 6 3 -1. - <_> - 10 0 2 3 3. - 0 - -2.8293890878558159e-002 - -3.2057279348373413e-001 - 4.5155089348554611e-002 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - -2.3787179961800575e-002 - -4.5069369673728943e-001 - 6.9767661392688751e-002 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - -3.1126540154218674e-002 - -7.7986258268356323e-001 - 1.2120390310883522e-002 - <_> - - <_> - - - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - 0 - -1.9434019923210144e-002 - -6.2219220399856567e-001 - 3.9394930005073547e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.0646529272198677e-002 - 3.6222419142723083e-001 - -8.2135513424873352e-002 - <_> - - <_> - - - - <_> - 4 0 7 3 -1. - <_> - 4 1 7 1 3. - 0 - 1.6532849520444870e-002 - -1.1575960367918015e-001 - 2.7401360869407654e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -9.4688721001148224e-003 - -6.1177402734756470e-001 - 4.4638238847255707e-002 - <_> - - <_> - - - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - 0 - 1.5371610061265528e-004 - -2.5191861391067505e-001 - 9.6505373716354370e-002 - <_> - - <_> - - - - <_> - 2 3 16 9 -1. - <_> - 2 3 8 9 2. - 0 - 2.5918158888816833e-001 - -4.7843091189861298e-002 - 2.3324379324913025e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -2.5841780006885529e-002 - 1.7269480228424072e-001 - -1.4205309748649597e-001 - <_> - - <_> - - - - <_> - 6 0 12 11 -1. - <_> - 6 0 6 11 2. - 0 - -3.9961761236190796e-001 - -2.4384410679340363e-001 - 1.7345370724797249e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 2.1105909347534180e-001 - -6.1212010681629181e-002 - 4.1000100970268250e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - -1.6058450564742088e-002 - -6.0403078794479370e-001 - 5.7624060660600662e-002 - <_> - - <_> - - - - <_> - 1 3 6 4 -1. - <_> - 1 3 3 2 2. - <_> - 4 5 3 2 2. - 0 - -1.6918450593948364e-002 - 1.9921250641345978e-001 - -1.2271139770746231e-001 - <_> - - <_> - - - - <_> - 15 2 3 4 -1. - <_> - 15 3 3 2 2. - 0 - 1.4193099923431873e-002 - 5.4869029670953751e-002 - -3.7617999315261841e-001 - <_> - - <_> - - - - <_> - 0 2 3 4 -1. - <_> - 0 3 3 2 2. - 0 - -2.4758260697126389e-002 - -7.1052777767181396e-001 - 3.3381890505552292e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.8228559494018555e-001 - -6.2711232900619507e-001 - 3.2499440014362335e-002 - <_> - - <_> - - - - <_> - 6 3 2 5 -1. - <_> - 6 3 1 5 2. - 1 - -2.6878060773015022e-002 - 3.0796620249748230e-001 - -7.3240749537944794e-002 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - 1.3228660449385643e-002 - 6.9501012563705444e-002 - -4.0926951169967651e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 2.9470060020685196e-002 - -8.1747382879257202e-002 - 2.9929721355438232e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 6.3013629987835884e-003 - -1.4912730455398560e-001 - 1.6093279421329498e-001 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - -2.0139260217547417e-002 - -5.0678992271423340e-001 - 4.0891159325838089e-002 - <_> - - <_> - - - - <_> - 3 2 13 4 -1. - <_> - 3 3 13 2 2. - 0 - -4.9374740570783615e-002 - 2.5256040692329407e-001 - -8.5726343095302582e-002 - <_> - - <_> - - - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - 1.9452260807156563e-002 - -7.3688283562660217e-002 - 3.0949079990386963e-001 - <_> - - <_> - - - - <_> - 13 4 4 7 -1. - <_> - 13 4 2 7 2. - 0 - -3.2352220267057419e-002 - 2.1833789348602295e-001 - -6.8243682384490967e-002 - <_> - - <_> - - - - <_> - 0 8 7 2 -1. - <_> - 0 9 7 1 2. - 0 - 1.5072959649842232e-004 - -3.2836580276489258e-001 - 6.6381722688674927e-002 - <_> - - <_> - - - - <_> - 13 6 2 6 -1. - <_> - 13 8 2 2 3. - 0 - -6.1889938078820705e-003 - 1.3249829411506653e-001 - -7.4239932000637054e-002 - <_> - - <_> - - - - <_> - 3 6 2 6 -1. - <_> - 3 8 2 2 3. - 0 - 6.3619641587138176e-003 - -1.2829330563545227e-001 - 1.5975730121135712e-001 - <_> - - <_> - - - - <_> - 2 5 16 4 -1. - <_> - 10 5 8 2 2. - <_> - 2 7 8 2 2. - 0 - 1.2205489724874496e-001 - 3.1172819435596466e-002 - -5.6808418035507202e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 10 9 1 2. - <_> - 9 11 9 1 2. - 0 - 2.7129599824547768e-002 - 3.4967660903930664e-002 - -5.5332547426223755e-001 - <_> - - <_> - - - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - 0 - 1.5683429955970496e-004 - -1.0362909734249115e-001 - 1.1349440366029739e-001 - <_> - - <_> - - - - <_> - 2 4 2 7 -1. - <_> - 3 4 1 7 2. - 0 - -5.7905660942196846e-003 - 1.3157980144023895e-001 - -1.3856770098209381e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 1.8190830014646053e-003 - -7.3361650109291077e-002 - 1.6932620108127594e-001 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.8002679571509361e-002 - -5.8490717411041260e-001 - 3.2903790473937988e-002 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - 0 - -1.8526639789342880e-002 - 3.2005688548088074e-001 - -6.2653139233589172e-002 - <_> - - <_> - - - - <_> - 6 1 5 3 -1. - <_> - 6 2 5 1 3. - 0 - 2.0345499739050865e-002 - -8.0804906785488129e-002 - 2.5780761241912842e-001 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.6274280846118927e-002 - -5.7635939121246338e-001 - 2.5872429832816124e-002 - <_> - - <_> - - - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - 0 - 8.5418839007616043e-003 - 3.3990539610385895e-002 - -4.9847429990768433e-001 - <_> - - <_> - - - - <_> - 6 0 6 2 -1. - <_> - 8 0 2 2 3. - 0 - -2.0960260182619095e-002 - -4.7946169972419739e-001 - 3.4324679523706436e-002 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - 1.5699770301580429e-002 - -6.5722920000553131e-002 - 2.9684039950370789e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 12 7 2 2 2. - 0 - 1.7905479762703180e-003 - -6.5733380615711212e-002 - 9.4904549419879913e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 5.4030250757932663e-003 - 3.9892349392175674e-002 - -4.1660529375076294e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - -4.7734947875142097e-003 - 2.7001398801803589e-001 - -1.5953589975833893e-001 - <_> - - <_> - - - - <_> - 4 6 2 4 -1. - <_> - 4 7 2 2 2. - 0 - 2.9232229571789503e-003 - -1.0599870234727859e-001 - 1.8253239989280701e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - 3.9620529860258102e-003 - -5.7123549282550812e-002 - 2.0644719898700714e-001 - <_> - - <_> - - - - <_> - 4 8 4 4 -1. - <_> - 5 8 2 4 2. - 0 - 1.2356759980320930e-002 - 4.0755268186330795e-002 - -4.4443848729133606e-001 - <_> - - <_> - - - - <_> - 16 5 2 4 -1. - <_> - 16 5 1 4 2. - 0 - -1.2156190350651741e-002 - 1.8296989798545837e-001 - -3.4999419003725052e-002 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 1 5 1 4 2. - 0 - -3.7678279913961887e-003 - 1.4462789893150330e-001 - -1.2491580098867416e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 15 0 3 1 2. - 1 - 1.9276840612292290e-002 - -6.2840022146701813e-002 - 1.9151060283184052e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 2 2. - 1 - -5.4216519929468632e-003 - 2.1568669378757477e-001 - -8.9786492288112640e-002 - <_> - - <_> - - - - <_> - 16 6 2 4 -1. - <_> - 16 7 2 2 2. - 0 - -2.0339300855994225e-002 - -5.9200441837310791e-001 - 1.6503969207406044e-002 - <_> - - <_> - - - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - 0 - 1.1275880038738251e-002 - 3.1583100557327271e-002 - -5.1892447471618652e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 0 1 2 3. - 0 - -9.7946176538243890e-005 - 1.4691540598869324e-001 - -1.6081510484218597e-001 - <_> - - <_> - - - - <_> - 1 0 3 2 -1. - <_> - 2 0 1 2 3. - 0 - -1.6277630347758532e-003 - 1.8870960175991058e-001 - -9.3803331255912781e-002 - <_> - - <_> - - - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - 0 - 8.7238460779190063e-002 - 5.5480118840932846e-002 - -2.6414340734481812e-001 - -1.7957290410995483e+000 - 7 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.7292431592941284e-002 - 6.6972970962524414e-001 - -3.2153728604316711e-001 - <_> - - <_> - - - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - 0 - -5.4918038845062256e-001 - 4.3484970927238464e-001 - -2.9871198534965515e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -1.2416520155966282e-002 - 2.6745811104774475e-001 - -3.9999490976333618e-001 - <_> - - <_> - - - - <_> - 2 10 14 2 -1. - <_> - 2 11 14 1 2. - 0 - 7.2453971952199936e-003 - -4.2438769340515137e-001 - 2.0234079658985138e-001 - <_> - - <_> - - - - <_> - 0 4 16 8 -1. - <_> - 0 8 16 4 2. - 0 - 3.6846119165420532e-001 - -3.5139828920364380e-001 - 2.0377729833126068e-001 - <_> - - <_> - - - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - 0 - 1.1723440140485764e-002 - -1.8664820492267609e-001 - 3.3893829584121704e-001 - <_> - - <_> - - - - <_> - 5 1 8 1 -1. - <_> - 9 1 4 1 2. - 0 - -5.2209510467946529e-003 - 2.1541909873485565e-001 - -2.0584990084171295e-001 - <_> - - <_> - - - - <_> - 3 1 15 6 -1. - <_> - 8 3 5 2 9. - 0 - 5.2216267585754395e-001 - -7.7104539377614856e-004 - 5.6350582838058472e-001 - <_> - - <_> - - - - <_> - 2 8 2 4 -1. - <_> - 2 9 2 2 2. - 0 - 1.0613870108500123e-004 - -2.3261800408363342e-001 - 1.3210240006446838e-001 - <_> - - <_> - - - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - -1.8034329637885094e-002 - -6.0396319627761841e-001 - 3.4430969506502151e-002 - <_> - - <_> - - - - <_> - 0 4 10 2 -1. - <_> - 0 4 5 1 2. - <_> - 5 5 5 1 2. - 0 - -2.3259000852704048e-002 - 3.5783469676971436e-001 - -8.5259757936000824e-002 - <_> - - <_> - - - - <_> - 9 4 3 2 -1. - <_> - 9 5 3 1 2. - 0 - 1.0407639667391777e-002 - -5.1958288997411728e-002 - 3.1198269128799438e-001 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - -1.1971450410783291e-002 - -4.9050408601760864e-001 - 5.4528221487998962e-002 - <_> - - <_> - - - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - 0 - -3.7426669150590897e-003 - 4.4125020503997803e-002 - -5.3650841116905212e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 6 5 2 2 2. - 0 - 1.8917659297585487e-002 - -8.1747300922870636e-002 - 4.1203048825263977e-001 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - 1.1007690045516938e-004 - -1.3551560044288635e-001 - 8.5857532918453217e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - 1.3918640092015266e-002 - 4.8517379909753799e-002 - -5.8116322755813599e-001 - <_> - - <_> - - - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - -1.0104410350322723e-002 - 1.5834890305995941e-001 - -6.0111179947853088e-002 - <_> - - <_> - - - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - 0 - -1.8620710819959641e-002 - 2.7867808938026428e-001 - -1.0338810086250305e-001 - <_> - - <_> - - - - <_> - 15 9 1 2 -1. - <_> - 15 10 1 1 2. - 0 - 5.7289921678602695e-003 - 2.8767310082912445e-002 - -3.4044471383094788e-001 - <_> - - <_> - - - - <_> - 2 9 1 2 -1. - <_> - 2 10 1 1 2. - 0 - 9.1226633230689913e-005 - -2.5967589020729065e-001 - 1.1362390220165253e-001 - <_> - - <_> - - - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - -1.7600089311599731e-002 - 8.0204762518405914e-002 - -6.6199533641338348e-002 - <_> - - <_> - - - - <_> - 6 5 4 6 -1. - <_> - 6 5 2 3 2. - <_> - 8 8 2 3 2. - 0 - 5.6003769859671593e-003 - -1.7382130026817322e-001 - 1.4224979281425476e-001 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 7 1 4 3 2. - 0 - -4.1345998644828796e-002 - -6.0982871055603027e-001 - 3.9992429316043854e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 9 0 9 1 2. - 0 - 3.1171320006251335e-002 - -8.9795216917991638e-002 - 2.6572328805923462e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 9.2339180409908295e-003 - -1.3240410387516022e-001 - 1.7500220239162445e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.9637310653924942e-003 - 2.7044069766998291e-001 - -8.2514546811580658e-002 - <_> - - <_> - - - - <_> - 13 0 3 12 -1. - <_> - 14 0 1 12 3. - 0 - -1.0435279691591859e-003 - 1.2740360200405121e-001 - -1.4733490347862244e-001 - <_> - - <_> - - - - <_> - 2 0 3 12 -1. - <_> - 3 0 1 12 3. - 0 - -3.6916971206665039e-002 - -5.5704081058502197e-001 - 4.0161561220884323e-002 - <_> - - <_> - - - - <_> - 12 5 3 7 -1. - <_> - 13 5 1 7 3. - 0 - -3.4235499333590269e-003 - 1.6954079270362854e-001 - -1.0382679849863052e-001 - <_> - - <_> - - - - <_> - 3 5 3 7 -1. - <_> - 4 5 1 7 3. - 0 - -3.4884609282016754e-002 - -7.6003962755203247e-001 - 2.8784649446606636e-002 - <_> - - <_> - - - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - -1.4949830074328929e-004 - 5.8567389845848083e-002 - -8.6837686598300934e-002 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - 0 - -8.4154512733221054e-003 - -4.5848670601844788e-001 - 4.6183209866285324e-002 - <_> - - <_> - - - - <_> - 12 3 4 1 -1. - <_> - 13 4 2 1 2. - 1 - 2.5011990219354630e-002 - -1.2734670192003250e-002 - 1.5709209442138672e-001 - <_> - - <_> - - - - <_> - 6 3 1 4 -1. - <_> - 5 4 1 2 2. - 1 - -9.9370932730380446e-005 - 9.6763700246810913e-002 - -2.2434939444065094e-001 - <_> - - <_> - - - - <_> - 8 3 5 2 -1. - <_> - 8 4 5 1 2. - 0 - 2.1338040009140968e-002 - -2.7949279174208641e-002 - 4.5690038800239563e-001 - <_> - - <_> - - - - <_> - 6 4 6 5 -1. - <_> - 8 4 2 5 3. - 0 - -1.9381210207939148e-002 - 1.3209809362888336e-001 - -1.5854920446872711e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.7130910456180573e-002 - -4.0985769033432007e-001 - 6.9916889071464539e-002 - <_> - - <_> - - - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - 3.7448350340127945e-002 - -4.7214321792125702e-002 - 4.6269690990447998e-001 - <_> - - <_> - - - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - -1.6145069152116776e-002 - 1.5716019272804260e-001 - -6.5406262874603271e-002 - <_> - - <_> - - - - <_> - 4 2 3 3 -1. - <_> - 5 3 1 3 3. - 1 - 1.3192090205848217e-002 - -9.3616731464862823e-002 - 2.3192650079727173e-001 - <_> - - <_> - - - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - 0 - 7.4546551331877708e-003 - 3.3262088894844055e-002 - -4.8058581352233887e-001 - <_> - - <_> - - - - <_> - 7 9 3 3 -1. - <_> - 8 9 1 3 3. - 0 - 6.5358411520719528e-003 - 3.9861779659986496e-002 - -5.2071362733840942e-001 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -1.1007690045516938e-004 - 1.0615369677543640e-001 - -1.4794890582561493e-001 - <_> - - <_> - - - - <_> - 6 4 6 5 -1. - <_> - 9 4 3 5 2. - 0 - -5.4008360952138901e-002 - 2.6703369617462158e-001 - -7.9568542540073395e-002 - <_> - - <_> - - - - <_> - 2 1 16 11 -1. - <_> - 2 1 8 11 2. - 0 - -2.1774560213088989e-001 - 1.6545580327510834e-001 - -5.5510718375444412e-002 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - 1.2961000204086304e-002 - 3.8905121386051178e-002 - -5.3931367397308350e-001 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - -1.4969130046665668e-002 - 3.0878359079360962e-001 - -7.2156012058258057e-002 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 5.1595158874988556e-003 - 4.1552640497684479e-002 - -4.4410169124603271e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -1.0106719855684787e-004 - 1.3232690095901489e-001 - -1.2352719902992249e-001 - <_> - - <_> - - - - <_> - 9 4 4 1 -1. - <_> - 10 5 2 1 2. - 1 - -1.2458950281143188e-002 - 1.4162090420722961e-001 - -1.2240760028362274e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -1.8788089975714684e-002 - 2.9809600114822388e-001 - -6.1062760651111603e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.9027970507740974e-002 - 1.8160690367221832e-001 - -1.0429889708757401e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.2969439849257469e-002 - 2.6630058884620667e-001 - -7.0843391120433807e-002 - <_> - - <_> - - - - <_> - 0 3 16 4 -1. - <_> - 0 4 16 2 2. - 0 - -4.8657860606908798e-002 - 1.8037420511245728e-001 - -1.1353269964456558e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - 1.0443449718877673e-004 - -1.1833500117063522e-001 - 1.7454829812049866e-001 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - -1.3140009832568467e-004 - 1.4330400526523590e-001 - -1.4002929627895355e-001 - <_> - - <_> - - - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - 0 - -7.7764278650283813e-001 - -8.1180518865585327e-001 - 4.8811929300427437e-003 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 3.0272060632705688e-001 - -4.6920161694288254e-002 - 4.6565508842468262e-001 - <_> - - <_> - - - - <_> - 15 7 1 4 -1. - <_> - 15 8 1 2 2. - 0 - 1.2083619832992554e-002 - 1.3714229688048363e-002 - -4.8584228754043579e-001 - <_> - - <_> - - - - <_> - 2 7 1 4 -1. - <_> - 2 8 1 2 2. - 0 - 8.3657556388061494e-005 - -1.4557360112667084e-001 - 1.2107980251312256e-001 - <_> - - <_> - - - - <_> - 1 8 17 4 -1. - <_> - 1 10 17 2 2. - 0 - 1.2459480203688145e-002 - -3.1913518905639648e-001 - 4.5050200074911118e-002 - <_> - - <_> - - - - <_> - 1 8 12 3 -1. - <_> - 5 8 4 3 3. - 0 - -9.6598379313945770e-002 - -4.7412630915641785e-001 - 3.4393358975648880e-002 - <_> - - <_> - - - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - 8.3489827811717987e-003 - -6.4854227006435394e-002 - 1.3588410615921021e-001 - <_> - - <_> - - - - <_> - 5 1 4 3 -1. - <_> - 6 1 2 3 2. - 0 - -9.6687171608209610e-003 - -3.8394901156425476e-001 - 4.5654650777578354e-002 - <_> - - <_> - - - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - -2.0871540531516075e-002 - 1.1647360026836395e-001 - -4.6159781515598297e-002 - <_> - - <_> - - - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - 2.4644650518894196e-002 - -6.0594830662012100e-002 - 2.8827700018882751e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - 0 - -1.3068989850580692e-002 - 1.7769919335842133e-001 - -1.0170739889144897e-001 - <_> - - <_> - - - - <_> - 0 5 2 4 -1. - <_> - 0 6 2 2 2. - 0 - 1.0740649886429310e-002 - 3.3637721091508865e-002 - -5.8304959535598755e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -5.6638391688466072e-003 - -8.2890021800994873e-001 - 1.0463479906320572e-002 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - 1.3703710283152759e-004 - -1.0685860365629196e-001 - 1.6701389849185944e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 7.2855940088629723e-003 - 2.0125189796090126e-002 - -4.8965498805046082e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 1.0730550275184214e-004 - -1.1978050321340561e-001 - 1.2677900493144989e-001 - <_> - - <_> - - - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - 0 - -1.1701670155161992e-004 - 1.2513719499111176e-001 - -8.4742642939090729e-002 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - -1.0570519953034818e-004 - 1.5671330690383911e-001 - -1.0472840070724487e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - -9.8277851939201355e-003 - -4.2486619949340820e-001 - 1.2776750139892101e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -1.0262790136039257e-002 - -4.7308981418609619e-001 - 3.1395319849252701e-002 - <_> - - <_> - - - - <_> - 3 6 12 2 -1. - <_> - 7 6 4 2 3. - 0 - -1.1773769743740559e-002 - 7.4253700673580170e-002 - -1.9689300656318665e-001 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -3.9177751168608665e-003 - -3.1191331148147583e-001 - 4.5671850442886353e-002 - <_> - - <_> - - - - <_> - 5 0 11 2 -1. - <_> - 5 1 11 1 2. - 0 - 2.3346070200204849e-002 - -5.2008550614118576e-002 - 1.7973770201206207e-001 - <_> - - <_> - - - - <_> - 6 0 3 2 -1. - <_> - 6 1 3 1 2. - 0 - -2.2126040421426296e-003 - 1.5479539334774017e-001 - -1.0545700043439865e-001 - <_> - - <_> - - - - <_> - 8 0 10 4 -1. - <_> - 8 1 10 2 2. - 0 - 1.4761550724506378e-001 - 7.4690231122076511e-003 - -8.0544400215148926e-001 - <_> - - <_> - - - - <_> - 0 0 10 4 -1. - <_> - 0 1 10 2 2. - 0 - 7.2484388947486877e-003 - -1.5604910254478455e-001 - 1.2632860243320465e-001 - <_> - - <_> - - - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - 0 - -2.1801209077239037e-002 - 2.4090659618377686e-001 - -6.4087331295013428e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.1350140925496817e-003 - -3.7679758667945862e-001 - 4.4631399214267731e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 9 4 9 4 2. - <_> - 0 8 9 4 2. - 0 - 2.9509729146957397e-001 - 1.6203410923480988e-002 - -8.1572759151458740e-001 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 0 4 18 4 2. - 0 - -5.1936417818069458e-001 - -6.4044600725173950e-001 - 1.7519079148769379e-002 - -1.6902129650115967e+000 - 8 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.4664139151573181e-002 - 6.5977567434310913e-001 - -3.1582540273666382e-001 - <_> - - <_> - - - - <_> - 10 4 7 3 -1. - <_> - 10 5 7 1 3. - 0 - -1.1273490265011787e-002 - 2.3457850515842438e-001 - -1.5769450366497040e-001 - <_> - - <_> - - - - <_> - 5 2 4 4 -1. - <_> - 6 3 2 4 2. - 1 - -4.1530959308147430e-002 - 4.2379489541053772e-001 - -2.8518509864807129e-001 - <_> - - <_> - - - - <_> - 0 4 18 7 -1. - <_> - 6 4 6 7 3. - 0 - -2.0448620617389679e-001 - 1.8061810731887817e-001 - -3.2812160253524780e-001 - <_> - - <_> - - - - <_> - 4 2 3 4 -1. - <_> - 3 3 3 2 2. - 1 - -4.1392319835722446e-003 - 1.4234000444412231e-001 - -3.6734649538993835e-001 - <_> - - <_> - - - - <_> - 3 0 12 8 -1. - <_> - 6 0 6 8 2. - 0 - -1.1119210161268711e-002 - 7.2978653013706207e-002 - -1.3348829746246338e-001 - <_> - - <_> - - - - <_> - 0 8 8 4 -1. - <_> - 0 10 8 2 2. - 0 - 6.3189188949763775e-003 - -5.1101410388946533e-001 - 6.5231300890445709e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -2.7547220233827829e-003 - 3.2231101393699646e-001 - -7.8560419380664825e-002 - <_> - - <_> - - - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - 0 - 1.5909250825643539e-002 - -1.1302089691162109e-001 - 3.5444441437721252e-001 - <_> - - <_> - - - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - -3.4309048205614090e-002 - 1.4863179624080658e-001 - -5.9663631021976471e-002 - <_> - - <_> - - - - <_> - 7 4 1 2 -1. - <_> - 7 4 1 1 2. - 1 - 9.5747098384890705e-005 - -2.0395369827747345e-001 - 2.1945419907569885e-001 - <_> - - <_> - - - - <_> - 2 0 16 12 -1. - <_> - 2 6 16 6 2. - 0 - 1.2961600720882416e-001 - -2.5850468873977661e-001 - 1.4311419427394867e-001 - <_> - - <_> - - - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - -3.7369730416685343e-003 - 1.5821619331836700e-001 - -2.3684109747409821e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - 0 - 5.9748939238488674e-003 - -2.0868189632892609e-001 - 1.5647380053997040e-001 - <_> - - <_> - - - - <_> - 0 2 10 4 -1. - <_> - 0 2 5 2 2. - <_> - 5 4 5 2 2. - 0 - -6.5518669784069061e-002 - 2.7740669250488281e-001 - -9.4154737889766693e-002 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - -1.5643499791622162e-002 - -6.5276598930358887e-001 - 5.8415610343217850e-002 - <_> - - <_> - - - - <_> - 3 5 4 2 -1. - <_> - 3 5 2 1 2. - <_> - 5 6 2 1 2. - 0 - -5.3621069528162479e-003 - 3.0472820997238159e-001 - -9.0583823621273041e-002 - <_> - - <_> - - - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - 8.4986742585897446e-003 - 9.4854839146137238e-002 - -3.7641200423240662e-001 - <_> - - <_> - - - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - -2.2054940462112427e-002 - -5.6978279352188110e-001 - 4.1174288839101791e-002 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - 8.9925974607467651e-003 - 1.1008080095052719e-002 - -6.8029582500457764e-001 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - 0 - 2.6960580144077539e-003 - -8.6102768778800964e-002 - 2.7503418922424316e-001 - <_> - - <_> - - - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - 0 - -7.4433060362935066e-003 - -4.6109339594841003e-001 - 2.5336729362607002e-002 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - 0 - 1.1906769941560924e-004 - -2.0586380362510681e-001 - 1.0493390262126923e-001 - <_> - - <_> - - - - <_> - 17 4 1 8 -1. - <_> - 17 8 1 4 2. - 0 - 3.6572828888893127e-002 - 4.1884351521730423e-002 - -2.6558640599250793e-001 - <_> - - <_> - - - - <_> - 0 4 1 8 -1. - <_> - 0 8 1 4 2. - 0 - 1.0328489588573575e-003 - -2.8002429008483887e-001 - 8.4565736353397369e-002 - <_> - - <_> - - - - <_> - 11 4 6 2 -1. - <_> - 14 4 3 1 2. - <_> - 11 5 3 1 2. - 0 - 5.5017122067511082e-003 - -8.3080992102622986e-002 - 1.7881210148334503e-001 - <_> - - <_> - - - - <_> - 1 4 6 2 -1. - <_> - 1 4 3 1 2. - <_> - 4 5 3 1 2. - 0 - -4.2574931867420673e-003 - 1.8285669386386871e-001 - -1.2856319546699524e-001 - <_> - - <_> - - - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - 0 - -1.0948719864245504e-004 - 1.1554790288209915e-001 - -1.7279610037803650e-001 - <_> - - <_> - - - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - 0 - 1.3575569726526737e-002 - 4.7628160566091537e-002 - -4.7959300875663757e-001 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.3205070048570633e-002 - -5.5575007200241089e-001 - 2.9028749093413353e-002 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - 9.1635938733816147e-003 - 3.5378590226173401e-002 - -5.2760952711105347e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - 0 - -3.6201209295541048e-003 - 1.2984579801559448e-001 - -2.5827971100807190e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 8 3 6 1 3. - 1 - -2.8150960803031921e-002 - 1.8013629317283630e-001 - -1.2052509933710098e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 4 1 4 3. - 0 - -7.5367003679275513e-002 - -2.5096911191940308e-001 - 1.4794659800827503e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - 0 - -1.0179110104218125e-003 - 1.9308570027351379e-001 - -1.0838530212640762e-001 - <_> - - <_> - - - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - 0 - -2.0971980690956116e-001 - 7.4706457555294037e-002 - -3.4369520843029022e-002 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 4 1 4 3. - 0 - -4.5241750776767731e-002 - -3.0122849345207214e-001 - 6.1180669814348221e-002 - <_> - - <_> - - - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - 0 - -1.0068370029330254e-002 - -3.1977829337120056e-001 - 1.5929570421576500e-002 - <_> - - <_> - - - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - 0 - 3.3460659906268120e-003 - 5.1246169954538345e-002 - -3.5894161462783813e-001 - <_> - - <_> - - - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - 0 - -4.8623997718095779e-003 - 2.8305920958518982e-001 - -6.4877010881900787e-002 - <_> - - <_> - - - - <_> - 6 2 5 2 -1. - <_> - 6 3 5 1 2. - 0 - 9.2780962586402893e-003 - -6.8402752280235291e-002 - 3.2526910305023193e-001 - <_> - - <_> - - - - <_> - 6 0 11 4 -1. - <_> - 6 1 11 2 2. - 0 - 2.8777100145816803e-002 - -7.4719488620758057e-002 - 1.4238749444484711e-001 - <_> - - <_> - - - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - 0 - 5.2759349346160889e-003 - 4.1597399860620499e-002 - -4.2687159776687622e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.6956008523702621e-002 - 1.8709599971771240e-001 - -9.9286213517189026e-002 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - 1.1527239985298365e-004 - -1.2309949845075607e-001 - 1.6146050393581390e-001 - <_> - - <_> - - - - <_> - 2 1 16 10 -1. - <_> - 2 1 8 10 2. - 0 - 1.0096299648284912e-001 - -6.3704922795295715e-002 - 1.3727569580078125e-001 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - 0 - 1.7564980685710907e-001 - -5.5898111313581467e-002 - 3.2327750325202942e-001 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - -7.0847300812602043e-003 - -6.1462122201919556e-001 - 1.9988279789686203e-002 - <_> - - <_> - - - - <_> - 2 6 4 4 -1. - <_> - 3 6 2 4 2. - 0 - -5.4999678395688534e-003 - 1.5109080076217651e-001 - -1.2012190371751785e-001 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - 1.1683329648803920e-004 - -6.3201643526554108e-002 - 1.0248489677906036e-001 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - -1.2892209633719176e-004 - 1.5073929727077484e-001 - -1.2984649837017059e-001 - <_> - - <_> - - - - <_> - 12 0 3 4 -1. - <_> - 13 0 1 4 3. - 0 - 1.0021899826824665e-002 - 4.4182330369949341e-002 - -4.2501309514045715e-001 - <_> - - <_> - - - - <_> - 2 2 8 1 -1. - <_> - 4 4 4 1 2. - 1 - -6.4188748598098755e-002 - -4.0792858600616455e-001 - 4.2033798992633820e-002 - <_> - - <_> - - - - <_> - 12 0 3 4 -1. - <_> - 13 0 1 4 3. - 0 - -1.6842419281601906e-002 - -5.1279681921005249e-001 - 2.1104399114847183e-002 - <_> - - <_> - - - - <_> - 3 0 3 4 -1. - <_> - 4 0 1 4 3. - 0 - 7.4764918535947800e-003 - 4.9902040511369705e-002 - -3.2437339425086975e-001 - <_> - - <_> - - - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - 0 - 7.5663411989808083e-003 - -6.9152683019638062e-002 - 1.9746780395507813e-001 - <_> - - <_> - - - - <_> - 1 1 6 4 -1. - <_> - 1 1 3 2 2. - <_> - 4 3 3 2 2. - 0 - -1.8151780590415001e-002 - 1.8264299631118774e-001 - -9.8603516817092896e-002 - <_> - - <_> - - - - <_> - 8 0 4 2 -1. - <_> - 8 1 4 1 2. - 0 - -1.5309340320527554e-002 - 2.5585418939590454e-001 - -5.7670980691909790e-002 - <_> - - <_> - - - - <_> - 4 10 6 1 -1. - <_> - 6 10 2 1 3. - 0 - -1.2537280097603798e-002 - -6.0015022754669189e-001 - 3.1305689364671707e-002 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -1.1186859756708145e-001 - -7.3224097490310669e-001 - 5.4572842782363296e-004 - <_> - - <_> - - - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - -1.6405830159783363e-002 - 7.0568412542343140e-002 - -2.3586690425872803e-001 - <_> - - <_> - - - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - 0 - -1.1206840164959431e-002 - 2.9805409908294678e-001 - -4.6159930527210236e-002 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 9.1227758675813675e-003 - 4.7872390598058701e-002 - -3.7525078654289246e-001 - <_> - - <_> - - - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - 0 - -2.4092409876175225e-004 - 1.4520640671253204e-001 - -1.2162090092897415e-001 - <_> - - <_> - - - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - 0 - 3.3112149685621262e-003 - -2.1473629772663116e-001 - 7.5015850365161896e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 1.0689670452848077e-003 - -8.6991913616657257e-002 - 1.4234369993209839e-001 - <_> - - <_> - - - - <_> - 3 2 3 10 -1. - <_> - 4 2 1 10 3. - 0 - -4.2576111853122711e-002 - -7.0083147287368774e-001 - 2.2004570811986923e-002 - <_> - - <_> - - - - <_> - 0 3 18 6 -1. - <_> - 9 3 9 3 2. - <_> - 0 6 9 3 2. - 0 - -2.2859150171279907e-001 - -6.2275588512420654e-001 - 2.0604349672794342e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 2 2. - 1 - 1.1048560030758381e-002 - -8.8343963027000427e-002 - 2.0929630100727081e-001 - <_> - - <_> - - - - <_> - 12 4 4 3 -1. - <_> - 11 5 4 1 3. - 1 - 2.6190899312496185e-002 - -3.0436459928750992e-002 - 2.1788010001182556e-001 - <_> - - <_> - - - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - 1.1006950400769711e-002 - -9.0961061418056488e-002 - 2.2373570501804352e-001 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 14 8 1 1 2. - <_> - 13 9 1 1 2. - 0 - -1.1149870260851458e-004 - 1.0055939853191376e-001 - -8.2711242139339447e-002 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 1 2. - <_> - 4 9 1 1 2. - 0 - 1.1044929851777852e-004 - -1.1131429672241211e-001 - 1.4033970236778259e-001 - <_> - - <_> - - - - <_> - 5 6 12 4 -1. - <_> - 8 6 6 4 2. - 0 - -5.2578408271074295e-002 - 7.1729972958564758e-002 - -4.0962688624858856e-002 - <_> - - <_> - - - - <_> - 0 7 15 3 -1. - <_> - 5 7 5 3 3. - 0 - -1.9955919682979584e-001 - -5.7830357551574707e-001 - 2.8734490275382996e-002 - <_> - - <_> - - - - <_> - 12 1 3 2 -1. - <_> - 13 2 1 2 3. - 1 - 1.7149249091744423e-002 - 1.4304569922387600e-002 - -1.8541809916496277e-001 - <_> - - <_> - - - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - -2.4047069251537323e-002 - -4.6827080845832825e-001 - 3.2377708703279495e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -4.2632492259144783e-003 - 1.4178739488124847e-001 - -7.2884447872638702e-002 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - 0 - -3.3538329880684614e-003 - 1.9119140505790710e-001 - -8.2784809172153473e-002 - <_> - - <_> - - - - <_> - 10 6 8 3 -1. - <_> - 10 7 8 1 3. - 0 - 7.0240199565887451e-002 - 9.9507197737693787e-003 - -6.9990187883377075e-001 - <_> - - <_> - - - - <_> - 2 0 10 3 -1. - <_> - 2 1 10 1 3. - 0 - 1.6852239146828651e-002 - -8.8816717267036438e-002 - 1.6883240640163422e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 8 1 4 1 3. - 0 - -1.3070680201053619e-002 - 2.4888229370117188e-001 - -6.2759302556514740e-002 - <_> - - <_> - - - - <_> - 2 5 3 7 -1. - <_> - 3 5 1 7 3. - 0 - -3.5220220685005188e-002 - -6.2048029899597168e-001 - 2.4633679538965225e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - -1.7316380515694618e-002 - -3.3864679932594299e-001 - 3.6917239427566528e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - 2.2072130814194679e-002 - 3.8453228771686554e-002 - -4.1064238548278809e-001 - <_> - - <_> - - - - <_> - 5 0 10 1 -1. - <_> - 5 0 5 1 2. - 0 - 1.0351699776947498e-002 - -1.0224519670009613e-001 - 1.5435679256916046e-001 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -3.6150650121271610e-003 - 2.0694419741630554e-001 - -8.1435896456241608e-002 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - -1.0313490033149719e-001 - 1.6327729821205139e-001 - -9.8083086311817169e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 7.9715962056070566e-004 - -1.0221719741821289e-001 - 1.7463779449462891e-001 - <_> - - <_> - - - - <_> - 9 7 2 3 -1. - <_> - 9 7 1 3 2. - 1 - 2.6026399806141853e-002 - 6.9349119439721107e-003 - -7.0387297868728638e-001 - <_> - - <_> - - - - <_> - 9 7 3 2 -1. - <_> - 9 7 3 1 2. - 1 - -3.2695080153644085e-003 - 5.7468920946121216e-002 - -2.6737850904464722e-001 - <_> - - <_> - - - - <_> - 11 4 2 3 -1. - <_> - 11 4 1 3 2. - 1 - -3.0334599316120148e-002 - 1.6826699674129486e-001 - -4.4392518699169159e-002 - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.4671649336814880e-002 - -3.3905708789825439e-001 - 6.1771869659423828e-002 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 14 8 1 1 2. - <_> - 13 9 1 1 2. - 0 - 8.4309016529005021e-005 - -1.1972939968109131e-001 - 1.5170879662036896e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 1 2. - <_> - 4 9 1 1 2. - 0 - -1.0392320109531283e-004 - 1.4664840698242188e-001 - -1.1560360342264175e-001 - <_> - - <_> - - - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - -1.0691150091588497e-002 - 1.1423820257186890e-001 - -1.0983390361070633e-001 - -1.6809680461883545e+000 - 9 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 6 6 2 -1. - <_> - 5 6 2 2 3. - 0 - 4.0128160268068314e-002 - -3.1783500313758850e-001 - 6.2470978498458862e-001 - <_> - - <_> - - - - <_> - 7 4 9 8 -1. - <_> - 7 8 9 4 2. - 0 - 2.5893148779869080e-001 - -2.7941200137138367e-001 - 2.5360828638076782e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -8.1663876771926880e-002 - 3.0437821149826050e-001 - -3.2352921366691589e-001 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 14 5 2 2 2. - 1 - 1.7201349139213562e-002 - -1.6664890572428703e-002 - 1.2985409796237946e-001 - <_> - - <_> - - - - <_> - 4 5 2 4 -1. - <_> - 4 5 2 2 2. - 1 - -4.2179729789495468e-002 - 2.4032059311866760e-001 - -3.2194539904594421e-001 - <_> - - <_> - - - - <_> - 7 2 9 6 -1. - <_> - 7 4 9 2 3. - 0 - -6.1821538954973221e-002 - 6.6948533058166504e-002 - -1.1838900297880173e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 4.1967527940869331e-003 - -4.2374908924102783e-001 - 1.1120550334453583e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - -2.2552030161023140e-002 - 2.6725378632545471e-001 - -9.9779993295669556e-002 - <_> - - <_> - - - - <_> - 6 7 6 1 -1. - <_> - 8 7 2 1 3. - 0 - 8.3527207374572754e-002 - 4.9182821065187454e-002 - 9.3193750000000000e+002 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 10 4 1 4 3. - 1 - -6.6923439502716064e-002 - -4.3197348713874817e-001 - 2.2907970473170280e-002 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -2.4421349167823792e-002 - 2.3052230477333069e-001 - -1.9583049416542053e-001 - <_> - - <_> - - - - <_> - 10 5 3 1 -1. - <_> - 11 6 1 1 3. - 1 - -4.8728468827903271e-003 - 9.6525266766548157e-002 - -1.5255169570446014e-001 - <_> - - <_> - - - - <_> - 8 5 1 3 -1. - <_> - 7 6 1 1 3. - 1 - -1.1779139749705791e-002 - 3.8318601250648499e-001 - -9.9813573062419891e-002 - <_> - - <_> - - - - <_> - 5 3 8 4 -1. - <_> - 5 5 8 2 2. - 0 - 5.5238891392946243e-002 - -8.1039026379585266e-002 - 4.2088559269905090e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -1.6514550894498825e-002 - 1.9347189366817474e-001 - -1.6414490342140198e-001 - <_> - - <_> - - - - <_> - 12 1 6 6 -1. - <_> - 15 1 3 3 2. - <_> - 12 4 3 3 2. - 0 - 2.9398869723081589e-002 - -4.0197629481554031e-002 - 1.6494549810886383e-001 - <_> - - <_> - - - - <_> - 1 1 6 6 -1. - <_> - 1 1 3 3 2. - <_> - 4 4 3 3 2. - 0 - -2.7306059375405312e-002 - 2.1020489931106567e-001 - -1.5619710087776184e-001 - <_> - - <_> - - - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - 0 - -1.1370140127837658e-002 - -6.3955801725387573e-001 - 3.8152929395437241e-002 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - 0 - -9.6206590533256531e-003 - 1.7184859514236450e-001 - -1.4077569544315338e-001 - <_> - - <_> - - - - <_> - 7 0 8 9 -1. - <_> - 7 3 8 3 3. - 0 - -2.4804919958114624e-001 - 9.6059650182723999e-002 - -3.5033728927373886e-002 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.9431810826063156e-002 - -8.1926092505455017e-002 - 2.9813900589942932e-001 - <_> - - <_> - - - - <_> - 14 1 4 4 -1. - <_> - 16 1 2 2 2. - <_> - 14 3 2 2 2. - 0 - 9.2512750998139381e-003 - -2.8675759211182594e-002 - 1.2367840111255646e-001 - <_> - - <_> - - - - <_> - 0 1 4 4 -1. - <_> - 0 1 2 2 2. - <_> - 2 3 2 2 2. - 0 - -7.5025227852165699e-003 - 1.9024680554866791e-001 - -1.4312489330768585e-001 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - 1.8332319334149361e-002 - 5.1443781703710556e-002 - -4.5784160494804382e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - -2.4709559977054596e-002 - -5.5311012268066406e-001 - 4.3773401528596878e-002 - <_> - - <_> - - - - <_> - 13 7 5 3 -1. - <_> - 13 8 5 1 3. - 0 - 3.5510540008544922e-002 - 5.7641528546810150e-003 - -5.0709831714630127e-001 - <_> - - <_> - - - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - 0 - 2.0895810797810555e-002 - 4.5377410948276520e-002 - -4.9842038750648499e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -3.5481620579957962e-002 - 1.5418830513954163e-001 - -1.4000199735164642e-001 - <_> - - <_> - - - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - 0 - -1.7126219347119331e-002 - -4.8520579934120178e-001 - 4.5199479907751083e-002 - <_> - - <_> - - - - <_> - 5 6 10 6 -1. - <_> - 10 6 5 3 2. - <_> - 5 9 5 3 2. - 0 - -4.3498359620571136e-002 - -2.1836410462856293e-001 - 2.4818979203701019e-002 - <_> - - <_> - - - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - -9.6786877838894725e-004 - 9.3692511320114136e-002 - -2.0849959552288055e-001 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 2.8028149157762527e-002 - -9.8437979817390442e-002 - 2.1405869722366333e-001 - <_> - - <_> - - - - <_> - 3 0 7 8 -1. - <_> - 3 2 7 4 2. - 0 - -1.1709540337324142e-001 - 2.7563339471817017e-001 - -8.0759562551975250e-002 - <_> - - <_> - - - - <_> - 2 0 16 11 -1. - <_> - 2 0 8 11 2. - 0 - 3.1854110956192017e-001 - -3.7302598357200623e-002 - 2.0321239531040192e-001 - <_> - - <_> - - - - <_> - 0 0 12 11 -1. - <_> - 6 0 6 11 2. - 0 - 1.8708510696887970e-001 - -4.2003840208053589e-002 - 4.5461919903755188e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - -1.1449670273577794e-004 - 1.1597789824008942e-001 - -2.3541730642318726e-001 - <_> - - <_> - - - - <_> - 4 1 4 4 -1. - <_> - 5 2 2 4 2. - 1 - 3.5649940371513367e-002 - -6.6509492695331573e-002 - 2.8327891230583191e-001 - <_> - - <_> - - - - <_> - 4 2 14 10 -1. - <_> - 11 2 7 5 2. - <_> - 4 7 7 5 2. - 0 - 3.8561020046472549e-002 - -9.1676719486713409e-002 - 9.5089800655841827e-002 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 2.9842848889529705e-003 - 4.8733729869127274e-002 - -3.4843000769615173e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - 0 - 1.2221869837958366e-004 - -1.0448929667472839e-001 - 1.0433969646692276e-001 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - 1.7984049394726753e-002 - -5.5451318621635437e-002 - 2.8990921378135681e-001 - <_> - - <_> - - - - <_> - 11 4 4 1 -1. - <_> - 12 5 2 1 2. - 1 - -3.0522119253873825e-002 - 3.2600420713424683e-001 - -1.2342750094830990e-002 - <_> - - <_> - - - - <_> - 7 4 1 4 -1. - <_> - 6 5 1 2 2. - 1 - -8.8787982240319252e-003 - 1.8352979421615601e-001 - -1.2553639709949493e-001 - <_> - - <_> - - - - <_> - 10 0 3 3 -1. - <_> - 11 0 1 3 3. - 0 - -8.1907752901315689e-003 - -4.6439141035079956e-001 - 5.7022649794816971e-002 - <_> - - <_> - - - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - 0 - 7.2757308371365070e-003 - 2.9556749388575554e-002 - -4.8011448979377747e-001 - <_> - - <_> - - - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - 1.0632930207066238e-004 - -1.1848829686641693e-001 - 1.2452460080385208e-001 - <_> - - <_> - - - - <_> - 1 0 14 4 -1. - <_> - 1 1 14 2 2. - 0 - 4.3366391211748123e-002 - -8.5436671972274780e-002 - 1.7945680022239685e-001 - <_> - - <_> - - - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - 0 - -1.7917420715093613e-002 - 2.2749659419059753e-001 - -7.3550216853618622e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.4122040718793869e-002 - 3.2454338669776917e-001 - -4.7602940350770950e-002 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - 4.5866120606660843e-002 - 1.6963159665465355e-002 - -6.1907947063446045e-001 - <_> - - <_> - - - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - 0 - -2.6154519990086555e-002 - -3.7108859419822693e-001 - 3.9997719228267670e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - -2.3461949080228806e-002 - 1.2756420671939850e-001 - -2.2292949259281158e-002 - <_> - - <_> - - - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - 1.5133329667150974e-002 - 2.7855740860104561e-002 - -5.6463587284088135e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - 0 - -3.8169771432876587e-002 - -6.7978310585021973e-001 - 1.9624669104814529e-002 - <_> - - <_> - - - - <_> - 6 0 3 1 -1. - <_> - 7 0 1 1 3. - 0 - -6.0274768620729446e-003 - -6.0235649347305298e-001 - 1.9473260268568993e-002 - <_> - - <_> - - - - <_> - 0 2 18 6 -1. - <_> - 9 2 9 3 2. - <_> - 0 5 9 3 2. - 0 - -2.0226030051708221e-001 - -4.1042789816856384e-001 - 3.3139400184154510e-002 - <_> - - <_> - - - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - 0 - 1.3556970655918121e-001 - 3.2679639756679535e-002 - -4.9395999312400818e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - 0 - -1.0420950275147334e-004 - 1.7653250694274902e-001 - -1.2747409939765930e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - 0 - 1.2260209769010544e-004 - -1.2935620546340942e-001 - 1.2286009639501572e-001 - <_> - - <_> - - - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 0 - -1.8132160184904933e-003 - 2.1865940093994141e-001 - -8.7909542024135590e-002 - <_> - - <_> - - - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - 0 - 1.4558799564838409e-002 - -7.1452066302299500e-002 - 2.0318900048732758e-001 - <_> - - <_> - - - - <_> - 17 2 1 6 -1. - <_> - 17 4 1 2 3. - 0 - -2.2111190482974052e-002 - -5.1411151885986328e-001 - 3.8326159119606018e-002 - <_> - - <_> - - - - <_> - 0 2 1 6 -1. - <_> - 0 4 1 2 3. - 0 - 1.2102689594030380e-002 - 3.4980859607458115e-002 - -3.5819360613822937e-001 - <_> - - <_> - - - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - 0 - -1.6234850510954857e-002 - -6.7572712898254395e-001 - 1.3337399810552597e-002 - <_> - - <_> - - - - <_> - 8 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - 1.2108719965908676e-004 - -9.7839273512363434e-002 - 1.3967449963092804e-001 - <_> - - <_> - - - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - 0 - 6.9925719872117043e-003 - 3.2864410430192947e-002 - -2.6933521032333374e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - 0 - -1.1492669727886096e-004 - 1.5019279718399048e-001 - -9.2902913689613342e-002 - <_> - - <_> - - - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - 0 - -6.2735271640121937e-003 - 1.9764299690723419e-001 - -1.4036740362644196e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - 3.4272519405931234e-003 - -5.6488610804080963e-002 - 2.3865149915218353e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 12 7 2 1 2. - 0 - 6.5099778585135937e-003 - -3.5633251070976257e-002 - 7.3461838066577911e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - 0 - 4.3461588211357594e-003 - -1.1661099642515182e-001 - 1.2772659957408905e-001 - <_> - - <_> - - - - <_> - 11 6 7 3 -1. - <_> - 11 7 7 1 3. - 0 - -6.7506477236747742e-002 - -6.3980489969253540e-001 - 6.2549579888582230e-003 - <_> - - <_> - - - - <_> - 0 6 7 3 -1. - <_> - 0 7 7 1 3. - 0 - 2.7710430324077606e-002 - 3.0216189101338387e-002 - -4.6095389127731323e-001 - <_> - - <_> - - - - <_> - 9 0 2 3 -1. - <_> - 9 0 1 3 2. - 0 - 8.6712799966335297e-003 - 1.9897650927305222e-002 - -2.8020209074020386e-001 - <_> - - <_> - - - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - -3.3389169722795486e-002 - 3.4334081411361694e-001 - -3.8698211312294006e-002 - <_> - - <_> - - - - <_> - 15 4 2 6 -1. - <_> - 15 4 1 6 2. - 0 - -5.2936229854822159e-002 - -7.2460907697677612e-001 - 6.3011539168655872e-003 - <_> - - <_> - - - - <_> - 1 4 2 6 -1. - <_> - 2 4 1 6 2. - 0 - -4.5043029822409153e-003 - 9.2780143022537231e-002 - -1.4180530607700348e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 14 0 2 4 2. - 0 - -3.1233350746333599e-003 - 1.7233259975910187e-001 - -2.9970449209213257e-001 - <_> - - <_> - - - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - 0 - 6.6139260306954384e-003 - -9.9938079714775085e-002 - 1.9661809504032135e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - -1.7207840457558632e-002 - -4.2743620276451111e-001 - 4.8802521079778671e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - 2.2534899413585663e-002 - 3.0614370480179787e-002 - -5.1239258050918579e-001 - <_> - - <_> - - - - <_> - 12 2 6 3 -1. - <_> - 11 3 6 1 3. - 1 - 1.5610080212354660e-002 - -6.8048216402530670e-002 - 1.4999119937419891e-001 - <_> - - <_> - - - - <_> - 6 2 3 6 -1. - <_> - 7 3 1 6 3. - 1 - 2.0428750663995743e-002 - -5.9653080999851227e-002 - 2.4934889376163483e-001 - <_> - - <_> - - - - <_> - 11 11 4 1 -1. - <_> - 12 11 2 1 2. - 0 - 6.6278302110731602e-003 - 1.2023109942674637e-002 - -3.2418128848075867e-001 - <_> - - <_> - - - - <_> - 7 0 2 4 -1. - <_> - 8 0 1 4 2. - 0 - -1.1010710150003433e-002 - -4.1893360018730164e-001 - 3.2063160091638565e-002 - <_> - - <_> - - - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - 0 - -2.5190298911184072e-003 - 1.9416549801826477e-001 - -7.9592078924179077e-002 - <_> - - <_> - - - - <_> - 3 11 4 1 -1. - <_> - 4 11 2 1 2. - 0 - 4.5439349487423897e-003 - 2.7912829071283340e-002 - -4.7302699089050293e-001 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -1.0793250112328678e-004 - 1.0455460101366043e-001 - -9.8342873156070709e-002 - <_> - - <_> - - - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - -1.1960390023887157e-002 - -5.5645018815994263e-001 - 2.4031320586800575e-002 - <_> - - <_> - - - - <_> - 14 4 3 1 -1. - <_> - 15 5 1 1 3. - 1 - -1.2221559882164001e-004 - 9.5023281872272491e-002 - -1.3685759902000427e-001 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 7 3 1 3 3. - 1 - -2.0170589908957481e-002 - 1.6795089840888977e-001 - -7.6120890676975250e-002 - <_> - - <_> - - - - <_> - 12 4 3 8 -1. - <_> - 13 4 1 8 3. - 0 - -8.3070956170558929e-003 - 1.7039400339126587e-001 - -6.0343630611896515e-002 - <_> - - <_> - - - - <_> - 3 4 3 8 -1. - <_> - 4 4 1 8 3. - 0 - -3.4953389316797256e-002 - -6.3390421867370605e-001 - 2.3547450080513954e-002 - <_> - - <_> - - - - <_> - 9 0 4 6 -1. - <_> - 10 1 2 6 2. - 1 - -1.2870649993419647e-001 - -5.5947631597518921e-001 - 1.0227069724351168e-003 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - -5.2872750908136368e-002 - 2.0933540165424347e-001 - -6.2754176557064056e-002 - <_> - - <_> - - - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - 2.1988220512866974e-002 - -2.8742890805006027e-002 - 3.2623329758644104e-001 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - -2.7929820120334625e-002 - -8.0376791954040527e-001 - 1.8866369500756264e-002 - <_> - - <_> - - - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - 1.6517540439963341e-002 - 3.4300331026315689e-002 - -3.3194449543952942e-001 - <_> - - <_> - - - - <_> - 6 0 6 6 -1. - <_> - 6 2 6 2 3. - 0 - 1.2578460574150085e-001 - -6.5953016281127930e-002 - 2.7026090025901794e-001 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.2017370318062603e-004 - -1.2451259791851044e-001 - 8.0808043479919434e-002 - <_> - - <_> - - - - <_> - 0 2 1 4 -1. - <_> - 0 3 1 2 2. - 0 - 3.7558379117399454e-003 - 4.6920169144868851e-002 - -2.4560800194740295e-001 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -6.4232251606881618e-003 - -3.0731809139251709e-001 - 3.6565799266099930e-002 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 3.4200940281152725e-003 - 4.0808930993080139e-002 - -2.8372159600257874e-001 - <_> - - <_> - - - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - 0 - -2.1825190633535385e-003 - 1.1226759850978851e-001 - -2.4832399562001228e-002 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -5.2442201413214207e-003 - 1.9796860218048096e-001 - -6.2690652906894684e-002 - -1.6043150424957275e+000 - 10 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.5449662506580353e-002 - 6.5984207391738892e-001 - -2.8083300590515137e-001 - <_> - - <_> - - - - <_> - 13 2 2 8 -1. - <_> - 13 4 2 4 2. - 0 - -5.5504930205643177e-003 - 1.3949079811573029e-001 - -1.9948430359363556e-001 - <_> - - <_> - - - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - 0 - -1.2023960053920746e-001 - 3.5877311229705811e-001 - -3.1004118919372559e-001 - <_> - - <_> - - - - <_> - 11 0 2 8 -1. - <_> - 9 2 2 4 2. - 1 - 2.0659500733017921e-002 - 2.4529699236154556e-002 - -1.6617469489574432e-001 - <_> - - <_> - - - - <_> - 7 0 8 2 -1. - <_> - 9 2 4 2 2. - 1 - -1.4058920741081238e-001 - 4.2553600668907166e-001 - -1.3463549315929413e-001 - <_> - - <_> - - - - <_> - 13 8 5 2 -1. - <_> - 13 9 5 1 2. - 0 - 1.3962809462100267e-003 - -1.6868929564952850e-001 - 4.4305529445409775e-002 - <_> - - <_> - - - - <_> - 0 8 5 2 -1. - <_> - 0 9 5 1 2. - 0 - 9.3446177197620273e-004 - -4.8740088939666748e-001 - 9.9577173590660095e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -3.8250170648097992e-002 - 2.6871618628501892e-001 - -1.5085490047931671e-001 - <_> - - <_> - - - - <_> - 4 5 4 2 -1. - <_> - 4 5 2 1 2. - <_> - 6 6 2 1 2. - 0 - 1.1073240078985691e-002 - -9.0580292046070099e-002 - 3.9891949295997620e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - -3.4222271293401718e-002 - -5.4190230369567871e-001 - 5.8256920427083969e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -1.6340370057150722e-003 - 1.5135709941387177e-001 - -2.5593858957290649e-001 - <_> - - <_> - - - - <_> - 17 0 1 12 -1. - <_> - 17 6 1 6 2. - 0 - 5.6902751326560974e-002 - 2.4959880858659744e-002 - -2.5529161095619202e-001 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - 0 - 5.4659740999341011e-003 - -2.6191771030426025e-001 - 1.2557169795036316e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 3.7860060110688210e-003 - -9.2318423092365265e-002 - 3.1680619716644287e-001 - <_> - - <_> - - - - <_> - 4 10 10 2 -1. - <_> - 4 11 10 1 2. - 0 - 6.2198941595852375e-003 - -2.4663870036602020e-001 - 1.0715399682521820e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - -3.3108259085565805e-003 - 2.6593479514122009e-001 - -4.2567960917949677e-002 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 11 3 2 2 3. - 1 - -2.4268100038170815e-002 - 7.8301817178726196e-002 - -3.3432251214981079e-001 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - 4.4654891826212406e-003 - 4.4951941817998886e-002 - -3.6068201065063477e-001 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - 5.0136880017817020e-003 - 4.8014611005783081e-002 - -4.8307308554649353e-001 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -3.6905671004205942e-003 - 2.3733210563659668e-001 - -7.7101498842239380e-002 - <_> - - <_> - - - - <_> - 4 4 2 4 -1. - <_> - 4 6 2 2 2. - 0 - 2.6699999347329140e-002 - -7.0286177098751068e-002 - 3.1604859232902527e-001 - <_> - - <_> - - - - <_> - 13 5 1 2 -1. - <_> - 13 5 1 1 2. - 1 - -1.4216369949281216e-002 - 1.9163979589939117e-001 - -1.4565619640052319e-002 - <_> - - <_> - - - - <_> - 5 5 2 1 -1. - <_> - 5 5 1 1 2. - 1 - 4.9798311665654182e-003 - -9.3808017671108246e-002 - 3.3386421203613281e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - 1.0780889540910721e-002 - 4.4129341840744019e-002 - -3.5146710276603699e-001 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - -8.0803576856851578e-003 - -4.5045539736747742e-001 - 4.2515419423580170e-002 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -6.2959468923509121e-003 - -5.0585079193115234e-001 - 2.6853339746594429e-002 - <_> - - <_> - - - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - 0 - 4.2930860072374344e-003 - 4.4392760843038559e-002 - -4.2409139871597290e-001 - <_> - - <_> - - - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - 0 - -3.6001540720462799e-002 - 3.6739090085029602e-001 - -5.6275039911270142e-002 - <_> - - <_> - - - - <_> - 2 4 2 7 -1. - <_> - 3 4 1 7 2. - 0 - -3.6325119435787201e-003 - 1.0696999728679657e-001 - -1.7666119337081909e-001 - <_> - - <_> - - - - <_> - 6 6 6 1 -1. - <_> - 8 6 2 1 3. - 0 - -7.6885600574314594e-003 - 1.3644680380821228e-001 - -1.4830610156059265e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.5619632601737976e-002 - -3.6476480960845947e-001 - 5.2671018987894058e-002 - <_> - - <_> - - - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - -1.3787600211799145e-002 - 1.4529299736022949e-001 - -1.4805309474468231e-001 - <_> - - <_> - - - - <_> - 4 1 9 6 -1. - <_> - 4 3 9 2 3. - 0 - -1.6259980201721191e-001 - 3.4896880388259888e-001 - -7.1005232632160187e-002 - <_> - - <_> - - - - <_> - 10 4 3 2 -1. - <_> - 11 5 1 2 3. - 1 - -9.7861498594284058e-002 - -6.8113172054290771e-001 - 6.0920282267034054e-003 - <_> - - <_> - - - - <_> - 8 4 2 3 -1. - <_> - 7 5 2 1 3. - 1 - -1.5198419801890850e-002 - 2.3462030291557312e-001 - -1.0035049915313721e-001 - <_> - - <_> - - - - <_> - 1 9 17 2 -1. - <_> - 1 10 17 1 2. - 0 - 9.0543217957019806e-003 - -2.2936539351940155e-001 - 7.7951073646545410e-002 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - 7.3727401904761791e-003 - 3.9879500865936279e-002 - -4.8354309797286987e-001 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - 0 - -1.8954079598188400e-002 - 9.6944183111190796e-002 - -5.5643040686845779e-002 - <_> - - <_> - - - - <_> - 7 0 3 5 -1. - <_> - 8 0 1 5 3. - 0 - 1.2283699586987495e-002 - 4.3389499187469482e-002 - -4.2138868570327759e-001 - <_> - - <_> - - - - <_> - 15 5 3 3 -1. - <_> - 15 6 3 1 3. - 0 - -1.8302969634532928e-002 - -4.2719489336013794e-001 - 2.2162979468703270e-002 - <_> - - <_> - - - - <_> - 1 0 15 6 -1. - <_> - 6 2 5 2 9. - 0 - 4.3101060390472412e-001 - -5.1615860313177109e-002 - 3.4026700258255005e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - 1.1051310226321220e-002 - -2.4313559755682945e-002 - 3.2357591390609741e-001 - <_> - - <_> - - - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - 0 - -4.4691780209541321e-001 - 2.7657490968704224e-001 - -6.6980779170989990e-002 - <_> - - <_> - - - - <_> - 14 3 3 6 -1. - <_> - 14 3 3 3 2. - 1 - 5.9630710631608963e-002 - 2.8453519567847252e-002 - -3.4650930762290955e-001 - <_> - - <_> - - - - <_> - 0 1 14 11 -1. - <_> - 7 1 7 11 2. - 0 - 2.0880649983882904e-001 - -4.9901269376277924e-002 - 3.6606788635253906e-001 - <_> - - <_> - - - - <_> - 16 4 2 8 -1. - <_> - 17 4 1 4 2. - <_> - 16 8 1 4 2. - 0 - 5.6081339716911316e-003 - -7.8487291932106018e-002 - 1.3186110556125641e-001 - <_> - - <_> - - - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - -5.5167000740766525e-002 - 5.1011168956756592e-001 - -3.3664189279079437e-002 - <_> - - <_> - - - - <_> - 12 3 3 3 -1. - <_> - 11 4 3 1 3. - 1 - 1.1171470396220684e-002 - -3.7235900759696960e-002 - 1.1104430258274078e-001 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - -1.5330309979617596e-002 - 2.4683140218257904e-001 - -7.2548203170299530e-002 - <_> - - <_> - - - - <_> - 3 4 12 3 -1. - <_> - 6 4 6 3 2. - 0 - -3.9592171087861061e-003 - 7.2863176465034485e-002 - -2.8057581186294556e-001 - <_> - - <_> - - - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - 0 - 8.4626460447907448e-003 - 3.6698680371046066e-002 - -3.9774340391159058e-001 - <_> - - <_> - - - - <_> - 7 3 5 2 -1. - <_> - 7 4 5 1 2. - 0 - 1.6352999955415726e-002 - -3.7106141448020935e-002 - 4.3486309051513672e-001 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - -2.0322609692811966e-002 - 1.9888140261173248e-001 - -8.6129508912563324e-002 - <_> - - <_> - - - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - 0 - -9.3476366600953043e-005 - 8.8922351598739624e-002 - -8.2700327038764954e-002 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - 9.6907848492264748e-003 - -8.2258842885494232e-002 - 1.9518549740314484e-001 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - 7.2766090743243694e-003 - 5.5776178836822510e-002 - -2.9502439498901367e-001 - <_> - - <_> - - - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - 0 - -1.1845510016428307e-004 - 1.2008129805326462e-001 - -1.3027560710906982e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -1.1836069636046886e-002 - -3.0786681175231934e-001 - 5.2134670317173004e-002 - <_> - - <_> - - - - <_> - 0 11 10 1 -1. - <_> - 5 11 5 1 2. - 0 - 1.1582080274820328e-002 - -6.4603932201862335e-002 - 2.4226869642734528e-001 - <_> - - <_> - - - - <_> - 12 7 2 3 -1. - <_> - 11 8 2 1 3. - 1 - 1.6641300171613693e-002 - 2.3613739758729935e-002 - -3.2030880451202393e-001 - <_> - - <_> - - - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - -1.4670539647340775e-002 - -4.1521430015563965e-001 - 3.6382548511028290e-002 - <_> - - <_> - - - - <_> - 7 0 6 8 -1. - <_> - 10 0 3 4 2. - <_> - 7 4 3 4 2. - 0 - -7.1266278624534607e-002 - 8.8978268206119537e-002 - -2.7521649375557899e-002 - <_> - - <_> - - - - <_> - 5 0 6 8 -1. - <_> - 5 0 3 4 2. - <_> - 8 4 3 4 2. - 0 - -4.5930789783596992e-003 - 1.0312590003013611e-001 - -1.5684939920902252e-001 - <_> - - <_> - - - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - -2.1038690581917763e-002 - -4.1231220960617065e-001 - 2.6362419128417969e-002 - <_> - - <_> - - - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - -1.1634599650278687e-004 - 8.8270559906959534e-002 - -1.7683100700378418e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.0351010132580996e-004 - -4.0812540799379349e-002 - 4.4485118240118027e-002 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - 1.1750919744372368e-002 - 3.7474468350410461e-002 - -4.4839090108871460e-001 - <_> - - <_> - - - - <_> - 7 1 5 2 -1. - <_> - 7 2 5 1 2. - 0 - 1.6365600749850273e-002 - -5.3337760269641876e-002 - 2.3957200348377228e-001 - <_> - - <_> - - - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - 0 - -1.4152539893984795e-002 - -3.4904539585113525e-001 - 4.0583450347185135e-002 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - 1.8640389665961266e-002 - -7.8919850289821625e-002 - 1.7504720389842987e-001 - <_> - - <_> - - - - <_> - 4 0 2 2 -1. - <_> - 4 0 2 1 2. - 1 - 1.7988409847021103e-002 - 3.3721260726451874e-002 - -4.2088210582733154e-001 - <_> - - <_> - - - - <_> - 6 0 8 2 -1. - <_> - 6 1 8 1 2. - 0 - -1.4597839675843716e-002 - 1.7850220203399658e-001 - -7.9207688570022583e-002 - <_> - - <_> - - - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - -1.1776429601013660e-002 - 2.0177559554576874e-001 - -6.4572930335998535e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -3.0500749126076698e-003 - 1.7109319567680359e-001 - -8.1359818577766418e-002 - <_> - - <_> - - - - <_> - 2 0 4 9 -1. - <_> - 3 0 2 9 2. - 0 - -5.5906981229782104e-002 - -6.9485092163085938e-001 - 1.9316319376230240e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 8.7083891034126282e-002 - 1.9366340711712837e-002 - -5.7769888639450073e-001 - <_> - - <_> - - - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - 0 - -4.5398990623652935e-003 - 1.1768320202827454e-001 - -1.1205779761075974e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 7 1 2 2. - 1 - -1.5185469761490822e-002 - 1.2016219645738602e-001 - -4.3419301509857178e-002 - <_> - - <_> - - - - <_> - 2 7 2 2 -1. - <_> - 2 7 2 1 2. - 1 - 7.1984431706368923e-003 - -3.5740990191698074e-002 - 3.8612338900566101e-001 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - 1.0633750207489356e-004 - -1.0959289968013763e-001 - 5.4616861045360565e-002 - <_> - - <_> - - - - <_> - 1 8 12 3 -1. - <_> - 5 8 4 3 3. - 0 - -1.0189989954233170e-001 - -4.9526950716972351e-001 - 2.5969929993152618e-002 - <_> - - <_> - - - - <_> - 14 10 1 2 -1. - <_> - 14 11 1 1 2. - 0 - -1.2038920249324292e-004 - 1.2273380160331726e-001 - -4.1162900626659393e-002 - <_> - - <_> - - - - <_> - 3 10 1 2 -1. - <_> - 3 11 1 1 2. - 0 - 1.0814509732881561e-004 - -1.6402480006217957e-001 - 8.0438762903213501e-002 - <_> - - <_> - - - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - 0 - 1.0482760146260262e-002 - 3.9343621581792831e-002 - -2.6814600825309753e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -7.9093724489212036e-003 - -4.1322740912437439e-001 - 3.0046500265598297e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - 1.3081150129437447e-002 - -3.3539541065692902e-002 - 2.3053109645843506e-001 - <_> - - <_> - - - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - -1.9690599292516708e-002 - -5.0715428590774536e-001 - 2.3815410211682320e-002 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -1.0433509945869446e-002 - 1.2601679563522339e-001 - -1.9142389297485352e-002 - <_> - - <_> - - - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - 0 - 6.1845351010560989e-003 - 2.4645360186696053e-002 - -5.0535571575164795e-001 - <_> - - <_> - - - - <_> - 14 11 4 1 -1. - <_> - 15 11 2 1 2. - 0 - -2.0149839110672474e-003 - 1.5200349688529968e-001 - -5.0570148974657059e-002 - <_> - - <_> - - - - <_> - 0 11 4 1 -1. - <_> - 1 11 2 1 2. - 0 - 1.0860039765248075e-004 - -1.1278349906206131e-001 - 1.1125960201025009e-001 - <_> - - <_> - - - - <_> - 9 11 3 1 -1. - <_> - 10 11 1 1 3. - 0 - -8.9575027232058346e-005 - 1.1708500236272812e-001 - -1.0333900153636932e-001 - <_> - - <_> - - - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - 0 - 5.3389421664178371e-003 - 1.8005790188908577e-002 - -7.1671330928802490e-001 - <_> - - <_> - - - - <_> - 7 0 6 1 -1. - <_> - 9 0 2 1 3. - 0 - 1.1697039939463139e-002 - 1.3067330233752728e-002 - -2.3360380530357361e-001 - <_> - - <_> - - - - <_> - 1 0 15 2 -1. - <_> - 6 0 5 2 3. - 0 - 3.2932709902524948e-002 - -7.0233866572380066e-002 - 1.7548230290412903e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -4.5324359089136124e-002 - -8.2326531410217285e-001 - 3.6954008974134922e-003 - <_> - - <_> - - - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - 0 - -3.7475579883903265e-003 - 1.8588210642337799e-001 - -6.2639318406581879e-002 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - -3.2647240906953812e-002 - -2.0567889511585236e-001 - 1.8942670896649361e-002 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 6 1 2 3. - 1 - 1.1062870034947991e-003 - -1.0367350280284882e-001 - 1.1428149789571762e-001 - <_> - - <_> - - - - <_> - 10 5 6 2 -1. - <_> - 13 5 3 1 2. - <_> - 10 6 3 1 2. - 0 - 5.4914089851081371e-003 - -3.9914030581712723e-002 - 7.6856799423694611e-002 - <_> - - <_> - - - - <_> - 2 5 6 2 -1. - <_> - 2 5 3 1 2. - <_> - 5 6 3 1 2. - 0 - -8.2964627072215080e-003 - 2.3060120642185211e-001 - -6.2546901404857635e-002 - <_> - - <_> - - - - <_> - 14 3 3 6 -1. - <_> - 14 3 3 3 2. - 1 - 3.8128688931465149e-002 - 1.9407819956541061e-002 - -1.4901480078697205e-001 - <_> - - <_> - - - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - -1.4787280559539795e-001 - -3.2149869203567505e-001 - 3.7092790007591248e-002 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - 6.4178421162068844e-003 - 3.7069149315357208e-002 - -9.5326058566570282e-002 - <_> - - <_> - - - - <_> - 5 4 2 2 -1. - <_> - 5 5 2 1 2. - 0 - -3.7382061127573252e-003 - 1.1806769669055939e-001 - -9.5922879874706268e-002 - <_> - - <_> - - - - <_> - 11 3 2 2 -1. - <_> - 11 3 1 2 2. - 1 - -2.5352180004119873e-002 - 2.7664989233016968e-001 - -1.6709599643945694e-002 - <_> - - <_> - - - - <_> - 7 3 2 2 -1. - <_> - 7 3 2 1 2. - 1 - 2.7535870671272278e-002 - 2.2979779168963432e-002 - -5.0430482625961304e-001 - <_> - - <_> - - - - <_> - 15 7 1 4 -1. - <_> - 15 8 1 2 2. - 0 - -7.9183047637343407e-003 - -3.1630870699882507e-001 - 1.2571889907121658e-002 - <_> - - <_> - - - - <_> - 2 7 1 4 -1. - <_> - 2 8 1 2 2. - 0 - 1.0292990191373974e-004 - -1.1330749839544296e-001 - 9.1955177485942841e-002 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - 9.0557747171260417e-005 - -6.9846302270889282e-002 - 7.2148926556110382e-002 - <_> - - <_> - - - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - 0 - 1.1734660074580461e-004 - -1.1082249879837036e-001 - 1.0122229903936386e-001 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - -1.1783619993366301e-004 - 1.4102859795093536e-001 - -9.9544271826744080e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.4811719767749310e-002 - -4.0603488683700562e-001 - 2.6852559298276901e-002 - <_> - - <_> - - - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - 0 - 8.3802377048414201e-005 - -9.3584023416042328e-002 - 9.4989858567714691e-002 - <_> - - <_> - - - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - 0 - -9.0464636741671711e-005 - 1.3583730161190033e-001 - -8.0927208065986633e-002 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -6.3471987843513489e-002 - 1.2211640179157257e-001 - -8.2948893308639526e-002 - <_> - - <_> - - - - <_> - 3 3 12 3 -1. - <_> - 3 4 12 1 3. - 0 - -5.0417210906744003e-002 - 2.3326510190963745e-001 - -5.5467769503593445e-002 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - 2.5994319468736649e-002 - -4.3605301529169083e-002 - 2.7403908967971802e-001 - <_> - - <_> - - - - <_> - 5 0 2 5 -1. - <_> - 6 0 1 5 2. - 0 - -1.2084789574146271e-002 - -3.1832659244537354e-001 - 3.7234660238027573e-002 - <_> - - <_> - - - - <_> - 5 9 12 2 -1. - <_> - 5 9 6 2 2. - 0 - 1.7179569229483604e-002 - -6.3782699406147003e-002 - 1.1758829653263092e-001 - <_> - - <_> - - - - <_> - 0 5 7 3 -1. - <_> - 0 6 7 1 3. - 0 - -5.8567680418491364e-002 - -5.9245938062667847e-001 - 1.9378069788217545e-002 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - -8.1442911177873611e-003 - 1.8517829477787018e-001 - -2.3492490872740746e-002 - <_> - - <_> - - - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - 0 - 8.7976995855569839e-003 - 2.1573910489678383e-002 - -5.3710401058197021e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - 5.8270487934350967e-003 - -3.1742990016937256e-002 - 7.7318146824836731e-002 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 4.2799380607903004e-003 - -6.8623512983322144e-002 - 1.5985569357872009e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - 0 - -4.7798909246921539e-002 - 1.6202180087566376e-001 - -7.1953997015953064e-002 - <_> - - <_> - - - - <_> - 0 0 6 8 -1. - <_> - 0 4 6 4 2. - 0 - 1.5101620554924011e-001 - 2.1610440686345100e-002 - -5.1186197996139526e-001 - <_> - - <_> - - - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - 0 - 1.3851689873263240e-003 - 5.1120720803737640e-002 - -1.0381700098514557e-001 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -1.0411830153316259e-003 - -2.4396219849586487e-001 - 4.4499509036540985e-002 - <_> - - <_> - - - - <_> - 13 6 4 6 -1. - <_> - 15 6 2 3 2. - <_> - 13 9 2 3 2. - 0 - -1.3037609867751598e-002 - 1.8388019502162933e-001 - -5.6118920445442200e-002 - <_> - - <_> - - - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - 0 - -1.9242310896515846e-002 - -6.6036051511764526e-001 - 1.8416849896311760e-002 - <_> - - <_> - - - - <_> - 12 2 6 4 -1. - <_> - 12 2 3 4 2. - 0 - -2.0210029557347298e-002 - 8.8172823190689087e-002 - -1.2076240032911301e-001 - <_> - - <_> - - - - <_> - 0 3 18 1 -1. - <_> - 6 3 6 1 3. - 0 - 3.0882719904184341e-002 - -5.6851759552955627e-002 - 2.4138830602169037e-001 - -1.6223280429840088e+000 - 11 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 5 6 1 2 2. - 0 - 6.2742438167333603e-003 - -3.5164728760719299e-001 - 6.6317689418792725e-001 - <_> - - <_> - - - - <_> - 5 2 10 6 -1. - <_> - 5 4 10 2 3. - 0 - -1.5394939482212067e-001 - 3.9916568994522095e-001 - -2.2923450171947479e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.3952860385179520e-002 - 3.0574640631675720e-001 - -2.3735469579696655e-001 - <_> - - <_> - - - - <_> - 11 5 7 6 -1. - <_> - 11 8 7 3 2. - 0 - 2.6925180107355118e-002 - -2.9053428769111633e-001 - 6.1234891414642334e-002 - <_> - - <_> - - - - <_> - 3 3 12 3 -1. - <_> - 6 3 6 3 2. - 0 - 2.4537709355354309e-001 - -1.2837280519306660e-003 - -9.9616601562500000e+002 - <_> - - <_> - - - - <_> - 10 4 6 3 -1. - <_> - 10 5 6 1 3. - 0 - -1.7590580508112907e-002 - 8.4333486855030060e-002 - -4.2432200163602829e-002 - <_> - - <_> - - - - <_> - 7 5 1 3 -1. - <_> - 6 6 1 1 3. - 1 - -6.7204791121184826e-003 - 2.9420810937881470e-001 - -1.7958919703960419e-001 - <_> - - <_> - - - - <_> - 3 2 15 6 -1. - <_> - 3 4 15 2 3. - 0 - -1.0374490171670914e-001 - 4.9512971192598343e-002 - -6.5407678484916687e-002 - <_> - - <_> - - - - <_> - 0 4 4 6 -1. - <_> - 2 4 2 6 2. - 0 - -2.3250220343470573e-002 - 1.6588999330997467e-001 - -2.5045189261436462e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.7479000166058540e-003 - 2.8132739663124084e-001 - -5.3847521543502808e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.5907990057021379e-003 - 2.8163778781890869e-001 - -1.1151909828186035e-001 - <_> - - <_> - - - - <_> - 15 2 3 10 -1. - <_> - 15 7 3 5 2. - 0 - 1.4214930124580860e-002 - -1.9974599778652191e-001 - 7.9408131539821625e-002 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -2.7745040133595467e-002 - 3.2554331421852112e-001 - -8.1984512507915497e-002 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 12 6 1 2 2. - 0 - 4.1590719483792782e-003 - -1.0548809915781021e-001 - 2.7419880032539368e-001 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 5 6 1 2 2. - 0 - 6.2689487822353840e-003 - 1.1671839654445648e-001 - -4.6409261226654053e-001 - <_> - - <_> - - - - <_> - 9 4 4 2 -1. - <_> - 9 5 4 1 2. - 0 - 1.3945819810032845e-002 - -3.6791551858186722e-002 - 3.2415330410003662e-001 - <_> - - <_> - - - - <_> - 0 1 12 11 -1. - <_> - 4 1 4 11 3. - 0 - -2.2212809324264526e-001 - -5.3910827636718750e-001 - 5.5958230048418045e-002 - <_> - - <_> - - - - <_> - 9 2 3 7 -1. - <_> - 10 3 1 7 3. - 1 - -2.3864409886300564e-003 - -7.8881077468395233e-002 - 9.0365253388881683e-002 - <_> - - <_> - - - - <_> - 9 2 7 3 -1. - <_> - 8 3 7 1 3. - 1 - -3.1010150909423828e-002 - 1.8916240334510803e-001 - -1.3666459918022156e-001 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 1 - -1.5247239498421550e-003 - 7.9918026924133301e-002 - -1.2402609735727310e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -4.4612451456487179e-003 - -3.5095998644828796e-001 - 6.1154339462518692e-002 - <_> - - <_> - - - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - 0 - -3.6754929460585117e-003 - -3.6432039737701416e-001 - 3.5381581634283066e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -3.1164109241217375e-003 - -4.8517960309982300e-001 - 4.2554508894681931e-002 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.4400090798735619e-002 - 1.5710610151290894e-001 - -1.2803450226783752e-001 - <_> - - <_> - - - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - 0 - -3.1188679859042168e-002 - -5.2750992774963379e-001 - 3.5487588495016098e-002 - <_> - - <_> - - - - <_> - 9 1 2 4 -1. - <_> - 9 2 2 2 2. - 0 - -1.3291889801621437e-002 - 2.8033518791198730e-001 - -3.7135049700737000e-002 - <_> - - <_> - - - - <_> - 0 4 18 4 -1. - <_> - 6 4 6 4 3. - 0 - -1.0183650255203247e-001 - 8.5829548537731171e-002 - -2.5175920128822327e-001 - <_> - - <_> - - - - <_> - 12 3 3 6 -1. - <_> - 13 3 1 6 3. - 0 - 2.4131929501891136e-002 - -5.3279381245374680e-002 - 3.5114678740501404e-001 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 3 1 6 3. - 0 - -1.0242820280836895e-004 - 1.2026040256023407e-001 - -1.6874420642852783e-001 - <_> - - <_> - - - - <_> - 14 1 2 4 -1. - <_> - 13 2 2 2 2. - 1 - -2.9411478899419308e-003 - -1.2087970227003098e-001 - 8.8245153427124023e-002 - <_> - - <_> - - - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - 0 - -2.4746619164943695e-002 - 3.2455161213874817e-001 - -5.1918510347604752e-002 - <_> - - <_> - - - - <_> - 8 0 7 4 -1. - <_> - 8 1 7 2 2. - 0 - 1.8161980435252190e-002 - -9.7702257335186005e-002 - 1.5214580297470093e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -7.9903062433004379e-003 - -4.3365329504013062e-001 - 3.9535731077194214e-002 - <_> - - <_> - - - - <_> - 3 1 12 2 -1. - <_> - 3 1 6 2 2. - 0 - 1.8511410802602768e-002 - -1.3791340589523315e-001 - 1.2306600064039230e-001 - <_> - - <_> - - - - <_> - 0 0 16 12 -1. - <_> - 8 0 8 12 2. - 0 - 1.8645690381526947e-001 - -7.2554931044578552e-002 - 3.1433451175689697e-001 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - 9.2281810939311981e-003 - -1.0550970211625099e-002 - 1.6694310307502747e-001 - <_> - - <_> - - - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - 0 - -9.0786498039960861e-003 - -3.6311098933219910e-001 - 4.1659221053123474e-002 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 1 - -1.7083000391721725e-002 - -3.8664668798446655e-001 - 6.8237301893532276e-003 - <_> - - <_> - - - - <_> - 6 9 1 2 -1. - <_> - 6 9 1 1 2. - 1 - -7.1345129981637001e-004 - 7.3019772768020630e-002 - -2.0337800681591034e-001 - <_> - - <_> - - - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - -7.2595099918544292e-003 - 7.5123466551303864e-002 - -7.3528602719306946e-002 - <_> - - <_> - - - - <_> - 4 1 4 2 -1. - <_> - 5 2 2 2 2. - 1 - 1.2274079956114292e-002 - -9.0814672410488129e-002 - 1.5959280729293823e-001 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 5 4 2 2. - 0 - 1.0794389992952347e-002 - -6.5551146864891052e-002 - 1.2086050212383270e-001 - <_> - - <_> - - - - <_> - 4 4 2 4 -1. - <_> - 4 6 2 2 2. - 0 - 2.4046689271926880e-002 - -6.6829457879066467e-002 - 2.6401260495185852e-001 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.6337579116225243e-002 - -6.0672587156295776e-001 - 1.6483150422573090e-002 - <_> - - <_> - - - - <_> - 0 2 14 8 -1. - <_> - 0 2 7 4 2. - <_> - 7 6 7 4 2. - 0 - 2.0875459909439087e-001 - 3.0014140531420708e-002 - -4.3378108739852905e-001 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 16 1 1 4 3. - 1 - 1.7724540084600449e-002 - 3.5838410258293152e-002 - -2.7149319648742676e-001 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 2 1 4 1 3. - 1 - -3.3346381038427353e-002 - -4.2977070808410645e-001 - 3.1222699210047722e-002 - <_> - - <_> - - - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - 1.1433180043241009e-004 - -7.5262703001499176e-002 - 1.0365139693021774e-001 - <_> - - <_> - - - - <_> - 3 6 10 6 -1. - <_> - 3 6 5 3 2. - <_> - 8 9 5 3 2. - 0 - 5.8417830616235733e-002 - 5.5789869278669357e-002 - -2.5008231401443481e-001 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - -3.0410559847950935e-002 - 1.2386819720268250e-001 - -1.1707239784300327e-002 - <_> - - <_> - - - - <_> - 6 3 3 2 -1. - <_> - 6 4 3 1 2. - 0 - 8.6924238130450249e-003 - -4.1130390018224716e-002 - 3.5336831212043762e-001 - <_> - - <_> - - - - <_> - 9 1 2 1 -1. - <_> - 9 1 1 1 2. - 0 - 1.0731499787652865e-004 - -1.2875890731811523e-001 - 1.0753930360078812e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 7.6319379732012749e-003 - 3.1681880354881287e-002 - -4.6472150087356567e-001 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 8 1 3 1 3. - 0 - -7.4789589270949364e-003 - 1.9505509734153748e-001 - -7.2351843118667603e-002 - <_> - - <_> - - - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - 0 - 8.6427042260766029e-003 - 3.1191099435091019e-002 - -4.9181848764419556e-001 - <_> - - <_> - - - - <_> - 5 0 12 3 -1. - <_> - 5 1 12 1 3. - 0 - 1.7501849681138992e-002 - -5.8864939957857132e-002 - 9.5755502581596375e-002 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 7 3 1 3 3. - 1 - 1.6813769936561584e-002 - -5.8993399143218994e-002 - 2.1193510293960571e-001 - <_> - - <_> - - - - <_> - 13 4 1 3 -1. - <_> - 12 5 1 1 3. - 1 - -6.4404280856251717e-003 - 1.1298300325870514e-001 - -5.3965609520673752e-002 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - 6.1326851136982441e-003 - 3.7554848939180374e-002 - -3.5011461377143860e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.9694160376675427e-005 - -1.1506149917840958e-001 - 1.1556260287761688e-001 - <_> - - <_> - - - - <_> - 5 4 3 1 -1. - <_> - 6 5 1 1 3. - 1 - -9.7881779074668884e-003 - 1.5670649707317352e-001 - -8.1091910600662231e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 6.8345926702022552e-002 - -6.8403100594878197e-003 - 4.5982140302658081e-001 - <_> - - <_> - - - - <_> - 0 3 6 3 -1. - <_> - 0 4 6 1 3. - 0 - 2.8495989739894867e-002 - 3.0876770615577698e-002 - -4.4429719448089600e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - -1.0740839934442192e-004 - 1.3578890264034271e-001 - -9.5775328576564789e-002 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -2.5251049548387527e-002 - 2.1702249348163605e-001 - -5.6038159877061844e-002 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - -2.6355799287557602e-002 - -6.2069612741470337e-001 - 1.1239909566938877e-002 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - -1.7481319606304169e-002 - -4.6592488884925842e-001 - 2.7867669239640236e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.3110379688441753e-002 - -4.2753320932388306e-001 - 2.7280420064926147e-002 - <_> - - <_> - - - - <_> - 5 9 7 3 -1. - <_> - 5 10 7 1 3. - 0 - -1.4925089664757252e-002 - 2.6826688647270203e-001 - -5.1737930625677109e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 6.1949039809405804e-003 - 5.6169319897890091e-002 - -2.9064020514488220e-001 - <_> - - <_> - - - - <_> - 0 2 3 2 -1. - <_> - 0 3 3 1 2. - 0 - -1.3175229541957378e-002 - -4.2517969012260437e-001 - 2.5214929133653641e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -1.8924409523606300e-002 - -4.2502859234809875e-001 - 1.8218439072370529e-002 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 1.3100420124828815e-002 - 3.1988378614187241e-002 - -3.6357548832893372e-001 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 0 2 1 2. - 1 - 1.0436940006911755e-002 - -8.0210663378238678e-002 - 1.3946530222892761e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 2 2. - 1 - -7.9071624204516411e-003 - 2.0094929635524750e-001 - -6.7795939743518829e-002 - <_> - - <_> - - - - <_> - 2 0 16 1 -1. - <_> - 2 0 8 1 2. - 0 - 1.3043300248682499e-002 - -7.3729388415813446e-002 - 1.0887020081281662e-001 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - -2.2031240165233612e-002 - 3.7282109260559082e-001 - -3.5342540591955185e-002 - <_> - - <_> - - - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - -1.8900850787758827e-002 - 1.3418090343475342e-001 - -7.4449099600315094e-002 - <_> - - <_> - - - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - -1.1057750321924686e-002 - 2.1446719765663147e-001 - -6.2393780797719955e-002 - <_> - - <_> - - - - <_> - 15 1 3 4 -1. - <_> - 14 2 3 2 2. - 1 - -9.3442380428314209e-002 - -3.8823649287223816e-001 - 2.2986009716987610e-003 - <_> - - <_> - - - - <_> - 3 1 4 3 -1. - <_> - 4 2 2 3 2. - 1 - -3.4701049327850342e-002 - 2.8782969713211060e-001 - -4.2191769927740097e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - 1.2548220343887806e-002 - 3.6994919180870056e-002 - -2.0595429837703705e-001 - <_> - - <_> - - - - <_> - 2 1 14 2 -1. - <_> - 2 2 14 1 2. - 0 - 3.3881239593029022e-002 - -4.9688011407852173e-002 - 2.8468221426010132e-001 - <_> - - <_> - - - - <_> - 12 1 3 10 -1. - <_> - 13 1 1 10 3. - 0 - -4.0402419865131378e-002 - -5.4226320981979370e-001 - 1.7669109627604485e-002 - <_> - - <_> - - - - <_> - 8 6 1 3 -1. - <_> - 7 7 1 1 3. - 1 - -8.7337046861648560e-003 - 2.2132049500942230e-001 - -5.3990170359611511e-002 - <_> - - <_> - - - - <_> - 3 6 15 3 -1. - <_> - 8 7 5 1 9. - 0 - -5.9824731200933456e-002 - 4.8347260802984238e-002 - -5.7685390114784241e-002 - <_> - - <_> - - - - <_> - 0 6 15 3 -1. - <_> - 5 7 5 1 9. - 0 - -2.9451259970664978e-001 - -4.5838949084281921e-001 - 2.7871569618582726e-002 - <_> - - <_> - - - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - 0 - -2.6713800430297852e-001 - 9.2300467193126678e-002 - -1.3205750286579132e-001 - <_> - - <_> - - - - <_> - 3 1 8 6 -1. - <_> - 3 3 8 2 3. - 0 - -1.2219720333814621e-001 - 2.4488289654254913e-001 - -5.3463630378246307e-002 - <_> - - <_> - - - - <_> - 11 2 3 1 -1. - <_> - 12 3 1 1 3. - 1 - -1.5119279734790325e-002 - -1.0751979798078537e-001 - 2.1027600392699242e-002 - <_> - - <_> - - - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - -1.5298509970307350e-002 - -4.4954741001129150e-001 - 2.7843480929732323e-002 - <_> - - <_> - - - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - 0 - -3.9626029320061207e-003 - -3.3244648575782776e-001 - 2.9125649482011795e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - 8.6580650531686842e-005 - -9.9431760609149933e-002 - 1.0358399897813797e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.9694160376675427e-005 - -8.4918417036533356e-002 - 8.7375417351722717e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - -1.1532790085766464e-004 - 1.3404299318790436e-001 - -8.5288509726524353e-002 - <_> - - <_> - - - - <_> - 12 1 3 10 -1. - <_> - 13 1 1 10 3. - 0 - -5.7475361973047256e-003 - 9.7248457372188568e-002 - -5.3111761808395386e-002 - <_> - - <_> - - - - <_> - 4 2 4 3 -1. - <_> - 5 2 2 3 2. - 0 - 8.7824072688817978e-003 - 4.3460998684167862e-002 - -2.4040910601615906e-001 - <_> - - <_> - - - - <_> - 13 9 4 3 -1. - <_> - 13 10 4 1 3. - 0 - 1.8991909921169281e-002 - 1.5963919460773468e-002 - -5.0120067596435547e-001 - <_> - - <_> - - - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - 0 - 3.8471799343824387e-002 - -4.3374348431825638e-002 - 2.4480819702148438e-001 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - 8.7654506787657738e-003 - 2.1779999136924744e-002 - -2.5518739223480225e-001 - <_> - - <_> - - - - <_> - 3 11 2 1 -1. - <_> - 4 11 1 1 2. - 0 - -1.1589690257096663e-004 - 1.0173690319061279e-001 - -1.0155139863491058e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - 1.0908189869951457e-004 - -9.1913960874080658e-002 - 9.1868981719017029e-002 - <_> - - <_> - - - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - 0 - 8.5531923105008900e-005 - -1.0584980249404907e-001 - 1.1017540097236633e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - -1.0539990034885705e-004 - 1.4530989527702332e-001 - -9.5378302037715912e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - 0 - 1.2168530374765396e-002 - -5.1483400166034698e-002 - 1.9467009603977203e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - 1.3115240260958672e-002 - 4.1314240545034409e-002 - -3.1291571259498596e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 9.6014147857204080e-005 - -9.9624000489711761e-002 - 1.0027159750461578e-001 - <_> - - <_> - - - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - -2.5422589853405952e-002 - 1.1692500114440918e-001 - -1.8570020794868469e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -1.9213970750570297e-002 - 1.4327329397201538e-001 - -6.9922059774398804e-002 - <_> - - <_> - - - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - 4.7866098582744598e-002 - 1.1692809872329235e-002 - -1.2271200120449066e-001 - <_> - - <_> - - - - <_> - 6 4 6 2 -1. - <_> - 9 4 3 2 2. - 0 - -1.1262509971857071e-002 - 1.1598969995975494e-001 - -9.3254141509532928e-002 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - -1.6207929700613022e-002 - 2.4618209898471832e-001 - -4.3379079550504684e-002 - <_> - - <_> - - - - <_> - 0 7 7 2 -1. - <_> - 0 8 7 1 2. - 0 - 1.4976999955251813e-004 - -2.4557319283485413e-001 - 4.6069670468568802e-002 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - 1.4740769751369953e-002 - 1.0909680277109146e-002 - -6.3333719968795776e-001 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - 9.7150652436539531e-005 - -1.5137399733066559e-001 - 7.5497470796108246e-002 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - -1.2693350203335285e-002 - -2.3802100121974945e-001 - 4.0871001780033112e-002 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 7.0101968944072723e-002 - 1.5777869150042534e-002 - -6.2344980239868164e-001 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -9.0956473723053932e-003 - 2.2302170097827911e-001 - -5.0494540482759476e-002 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - 1.0229200124740601e-002 - 4.6729099005460739e-002 - -2.4563209712505341e-001 - <_> - - <_> - - - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - 0 - -1.9207410514354706e-002 - 2.1942460536956787e-001 - -4.6960771083831787e-002 - <_> - - <_> - - - - <_> - 5 8 1 4 -1. - <_> - 5 9 1 2 2. - 0 - 1.0802529868669808e-004 - -1.0915499925613403e-001 - 8.9894726872444153e-002 - <_> - - <_> - - - - <_> - 16 2 1 9 -1. - <_> - 13 5 1 3 3. - 1 - 5.9888280928134918e-002 - -1.2375240214169025e-002 - 3.0649530887603760e-001 - <_> - - <_> - - - - <_> - 2 2 9 1 -1. - <_> - 5 5 3 1 3. - 1 - -1.2133570015430450e-001 - -4.4181579351425171e-001 - 2.2245900705456734e-002 - <_> - - <_> - - - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - 0 - 1.0026310337707400e-004 - -7.5078979134559631e-002 - 7.0171989500522614e-002 - <_> - - <_> - - - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - 0 - 1.0822709737112746e-004 - -9.5590889453887939e-002 - 9.7991749644279480e-002 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - -1.0740839934442192e-004 - 8.9312888681888580e-002 - -5.8937720954418182e-002 - <_> - - <_> - - - - <_> - 4 9 4 3 -1. - <_> - 5 9 2 3 2. - 0 - 8.1779044121503830e-003 - 2.8866490349173546e-002 - -3.2336440682411194e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - -1.2426340021193027e-002 - 1.5125119686126709e-001 - -8.9751720428466797e-002 - <_> - - <_> - - - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - 0 - -1.6673840582370758e-002 - 1.6337050497531891e-001 - -6.1544839292764664e-002 - <_> - - <_> - - - - <_> - 11 2 2 3 -1. - <_> - 11 3 2 1 3. - 0 - 1.1108940234407783e-003 - -4.4395659118890762e-002 - 5.8737680315971375e-002 - <_> - - <_> - - - - <_> - 5 2 2 3 -1. - <_> - 5 3 2 1 3. - 0 - 6.3430960290133953e-003 - -6.7445211112499237e-002 - 1.5874649584293365e-001 - <_> - - <_> - - - - <_> - 1 1 16 3 -1. - <_> - 5 1 8 3 2. - 0 - -4.5497350394725800e-002 - 1.2980030477046967e-001 - -9.6899092197418213e-002 - <_> - - <_> - - - - <_> - 3 4 8 4 -1. - <_> - 3 5 8 2 2. - 0 - -2.6433700695633888e-002 - 9.4376727938652039e-002 - -1.0849659889936447e-001 - <_> - - <_> - - - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - 0 - -2.1796820685267448e-002 - -5.6385380029678345e-001 - 2.1219300106167793e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - 8.7439846247434616e-003 - 3.2976679503917694e-002 - -2.8045099973678589e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - 0 - 7.8902099630795419e-005 - -6.3391529023647308e-002 - 5.9122908860445023e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - 0 - 8.6580650531686842e-005 - -9.6938036382198334e-002 - 1.0047750174999237e-001 - -1.6293729543685913e+000 - 12 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1782609857618809e-002 - -4.1238281130790710e-001 - 8.6988270282745361e-001 - <_> - - <_> - - - - <_> - 8 3 3 3 -1. - <_> - 8 4 3 1 3. - 0 - -1.7742900177836418e-002 - 7.5632858276367188e-001 - -1.5877389907836914e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 4.3491688556969166e-003 - -1.3528199493885040e-001 - 7.0891678333282471e-001 - <_> - - <_> - - - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - 0 - 1.4091270044445992e-002 - -1.6412720084190369e-001 - 6.1424720287322998e-001 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -5.7054432108998299e-003 - 5.4331731796264648e-001 - -1.6219259798526764e-001 - <_> - - <_> - - - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - 1.5776239335536957e-002 - -3.4152381122112274e-002 - 1.8973289430141449e-001 - <_> - - <_> - - - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - 8.0932863056659698e-003 - -1.9709299504756927e-001 - 3.2210728526115417e-001 - <_> - - <_> - - - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - 0 - -5.9854150749742985e-003 - 5.6217777729034424e-001 - -6.9357901811599731e-002 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 1 9. - 0 - -1.8062319606542587e-002 - 3.7098649144172668e-001 - -1.2705039978027344e-001 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - -3.6759639624506235e-003 - 4.1142329573631287e-001 - -7.1537837386131287e-002 - <_> - - <_> - - - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - 0 - -2.1540250163525343e-003 - 3.7564289569854736e-001 - -9.1973446309566498e-002 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - 0 - -3.0050940811634064e-002 - 3.1198319792747498e-001 - -9.8297983407974243e-002 - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - -5.1365699619054794e-005 - 2.3951590061187744e-001 - -1.6076980531215668e-001 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - 0 - 7.7373638749122620e-002 - -2.3487670347094536e-002 - 5.5488550662994385e-001 - <_> - - <_> - - - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - 0 - -4.0747709572315216e-002 - 2.6812228560447693e-001 - -1.4000350236892700e-001 - <_> - - <_> - - - - <_> - 8 3 6 4 -1. - <_> - 8 3 3 4 2. - 0 - 4.0594231337308884e-002 - 2.7258900925517082e-002 - -2.6374179124832153e-001 - <_> - - <_> - - - - <_> - 3 4 8 3 -1. - <_> - 7 4 4 3 2. - 0 - -4.7825898946030065e-005 - 9.3977712094783783e-002 - -3.5795810818672180e-001 - <_> - - <_> - - - - <_> - 6 2 6 4 -1. - <_> - 6 3 6 2 2. - 0 - 4.4379208236932755e-002 - -7.2088733315467834e-002 - 4.6868190169334412e-001 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 5.8061368763446808e-003 - -3.3395549654960632e-001 - 1.0214909911155701e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - 8.8028358295559883e-003 - -2.5739600881934166e-002 - 4.3644779920578003e-001 - <_> - - <_> - - - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - 0 - 9.0131545439362526e-003 - -5.1000531762838364e-002 - 5.7023537158966064e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - -2.5290340185165405e-002 - -3.5979458689689636e-001 - 7.1303091943264008e-002 - <_> - - <_> - - - - <_> - 0 0 14 12 -1. - <_> - 0 0 7 6 2. - <_> - 7 6 7 6 2. - 0 - -1.9525140523910522e-001 - -4.8977100849151611e-001 - 5.6384291499853134e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -2.6473659090697765e-003 - -3.3710619807243347e-001 - 3.4158378839492798e-002 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - -3.9261409256141633e-005 - 1.5813310444355011e-001 - -2.0216089487075806e-001 - <_> - - <_> - - - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - 0 - 2.2714860737323761e-002 - -6.4444392919540405e-002 - 4.4198501110076904e-001 - <_> - - <_> - - - - <_> - 4 1 4 3 -1. - <_> - 5 2 2 3 2. - 1 - -3.9951600134372711e-002 - 3.7973031401634216e-001 - -6.2915429472923279e-002 - <_> - - <_> - - - - <_> - 6 3 12 6 -1. - <_> - 10 3 4 6 3. - 0 - -2.4356140196323395e-001 - -3.0749571323394775e-001 - 3.1852040439844131e-002 - <_> - - <_> - - - - <_> - 0 4 16 7 -1. - <_> - 8 4 8 7 2. - 0 - -4.3897500634193420e-001 - 3.9641711115837097e-001 - -6.5206609666347504e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -4.0617240301799029e-005 - 1.3962450623512268e-001 - -1.2550500035285950e-001 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - 4.3697938963305205e-005 - -1.2014800310134888e-001 - 2.5546219944953918e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.3634141087532043e-002 - -4.5507898926734924e-001 - 5.1609288901090622e-002 - <_> - - <_> - - - - <_> - 5 0 5 4 -1. - <_> - 5 1 5 2 2. - 0 - 3.1138129532337189e-002 - -8.3802923560142517e-002 - 2.9366040229797363e-001 - <_> - - <_> - - - - <_> - 6 11 8 1 -1. - <_> - 8 11 4 1 2. - 0 - 1.5724230557680130e-002 - 1.6777889803051949e-002 - -7.4661827087402344e-001 - <_> - - <_> - - - - <_> - 3 0 11 3 -1. - <_> - 3 1 11 1 3. - 0 - -2.2827949374914169e-002 - 3.1140440702438354e-001 - -7.4142500758171082e-002 - <_> - - <_> - - - - <_> - 6 11 8 1 -1. - <_> - 8 11 4 1 2. - 0 - 6.6454121842980385e-003 - 2.6253340765833855e-002 - -2.1291309595108032e-001 - <_> - - <_> - - - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - 0 - 1.2331400066614151e-002 - 4.0855400264263153e-002 - -5.2558171749114990e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - 2.4869399145245552e-002 - 1.6519179567694664e-002 - -2.4012239277362823e-001 - <_> - - <_> - - - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - 0 - -7.0881461724638939e-003 - -3.2228660583496094e-001 - 6.2019370496273041e-002 - <_> - - <_> - - - - <_> - 6 1 6 4 -1. - <_> - 6 2 6 2 2. - 0 - -3.4650731831789017e-002 - 4.3350049853324890e-001 - -4.8822090029716492e-002 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - 7.6578720472753048e-003 - 6.4763158559799194e-002 - -3.2527589797973633e-001 - <_> - - <_> - - - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - 0 - -3.9454981684684753e-002 - 1.6538539528846741e-001 - -1.3421210646629333e-001 - <_> - - <_> - - - - <_> - 3 4 12 7 -1. - <_> - 6 4 6 7 2. - 0 - -1.9214299321174622e-001 - -3.7593689560890198e-001 - 6.3063777983188629e-002 - -1.7363870143890381e+000 - 13 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.5497770160436630e-002 - -3.6309579014778137e-001 - 8.4555262327194214e-001 - <_> - - <_> - - - - <_> - 9 0 3 8 -1. - <_> - 9 0 3 4 2. - 1 - -2.0898319780826569e-001 - -2.8083321452140808e-001 - 1.0766410082578659e-001 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.6195109132677317e-003 - 6.7817902565002441e-001 - -1.9760650396347046e-001 - <_> - - <_> - - - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - 0 - -7.8276582062244415e-003 - 5.6059402227401733e-001 - -1.3372389972209930e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 1.3660199940204620e-002 - -1.0383050143718719e-001 - 6.4858847856521606e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 3.1465899664908648e-003 - -1.2784099578857422e-001 - 4.7746801376342773e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - 4.9735051579773426e-003 - -6.6067576408386230e-002 - 5.3896760940551758e-001 - <_> - - <_> - - - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - 1.8216289579868317e-002 - -8.9344531297683716e-002 - 4.2037069797515869e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 1 9. - 0 - -1.4441680163145065e-002 - 2.7944031357765198e-001 - -1.3541069626808167e-001 - <_> - - <_> - - - - <_> - 9 5 1 2 -1. - <_> - 9 6 1 1 2. - 0 - 3.9981860027182847e-005 - -1.3476949930191040e-001 - 1.3061609864234924e-001 - <_> - - <_> - - - - <_> - 5 6 4 2 -1. - <_> - 6 6 2 2 2. - 0 - -1.1218409985303879e-002 - 5.5477607250213623e-001 - -5.4050721228122711e-002 - <_> - - <_> - - - - <_> - 13 3 2 3 -1. - <_> - 12 4 2 1 3. - 1 - 3.8257170468568802e-002 - -2.9511810280382633e-003 - 3.5025680065155029e-001 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - -3.1136209145188332e-002 - 3.9581200480461121e-001 - -7.7712006866931915e-002 - <_> - - <_> - - - - <_> - 5 3 8 8 -1. - <_> - 9 3 4 4 2. - <_> - 5 7 4 4 2. - 0 - 5.6127890944480896e-002 - 6.5231159329414368e-002 - -4.5123818516731262e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - -4.6596338506788015e-005 - 1.9990539550781250e-001 - -1.5452989935874939e-001 - <_> - - <_> - - - - <_> - 4 5 12 7 -1. - <_> - 7 5 6 7 2. - 0 - -1.2514979578554630e-002 - 4.8256270587444305e-002 - -1.9997639954090118e-001 - <_> - - <_> - - - - <_> - 0 0 12 10 -1. - <_> - 4 0 4 10 3. - 0 - 1.7952239513397217e-001 - 6.5345346927642822e-002 - -5.0162881612777710e-001 - <_> - - <_> - - - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 0 - 4.3697938963305205e-005 - -1.4098809659481049e-001 - 1.1703769862651825e-001 - <_> - - <_> - - - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - 0 - -4.6865958720445633e-003 - -3.5993480682373047e-001 - 7.2028510272502899e-002 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 3.5626258701086044e-002 - -6.4041122794151306e-002 - 4.4865629076957703e-001 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - 1.3676189817488194e-002 - -5.7538058608770370e-002 - 4.1195538640022278e-001 - <_> - - <_> - - - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - 0 - 2.8455330058932304e-002 - -8.2572557032108307e-002 - 3.0728879570960999e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 3.9930879138410091e-003 - 7.9742781817913055e-002 - -3.5738870501518250e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 4.0958970785140991e-002 - -6.2663957476615906e-002 - 4.1727420687675476e-001 - <_> - - <_> - - - - <_> - 1 11 6 1 -1. - <_> - 3 11 2 1 3. - 0 - -5.7679559104144573e-003 - -4.0190890431404114e-001 - 6.0980260372161865e-002 - <_> - - <_> - - - - <_> - 11 1 6 8 -1. - <_> - 13 1 2 8 3. - 0 - -1.6978530213236809e-002 - 1.5577870607376099e-001 - -1.2832540273666382e-001 - <_> - - <_> - - - - <_> - 1 1 6 8 -1. - <_> - 3 1 2 8 3. - 0 - -8.0770384520292282e-003 - 1.2041939795017242e-001 - -1.6271419823169708e-001 - <_> - - <_> - - - - <_> - 4 2 12 7 -1. - <_> - 7 2 6 7 2. - 0 - 1.8030419945716858e-002 - 3.4709710627794266e-002 - -2.6759231090545654e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.5382760204374790e-002 - 5.6882061064243317e-002 - -3.9767611026763916e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - -9.9336765706539154e-003 - 3.6032059788703918e-001 - -6.6026233136653900e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -2.8156090993434191e-003 - -5.1109760999679565e-001 - 4.4887579977512360e-002 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - 2.9914719983935356e-002 - -7.5402297079563141e-002 - 3.0369639396667480e-001 - <_> - - <_> - - - - <_> - 0 10 16 2 -1. - <_> - 0 10 8 1 2. - <_> - 8 11 8 1 2. - 0 - -9.0450989082455635e-003 - -2.8374141454696655e-001 - 7.8973956406116486e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 1.5734959393739700e-002 - -5.7694129645824432e-002 - 5.4260098934173584e-001 - <_> - - <_> - - - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - 0 - 4.1617371607571840e-005 - -1.3004170358181000e-001 - 1.5200050175189972e-001 - <_> - - <_> - - - - <_> - 6 0 12 12 -1. - <_> - 6 0 6 12 2. - 0 - 2.3746499419212341e-001 - 1.7602339386940002e-002 - -4.4681221246719360e-001 - <_> - - <_> - - - - <_> - 0 1 16 11 -1. - <_> - 8 1 8 11 2. - 0 - -6.0572451353073120e-001 - 3.2846671342849731e-001 - -7.1565687656402588e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - 1.4338710345327854e-002 - -6.4759388566017151e-002 - 3.0051338672637939e-001 - <_> - - <_> - - - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - 0 - 6.4899460412561893e-003 - -8.5719607770442963e-002 - 2.4065899848937988e-001 - <_> - - <_> - - - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - 0 - -3.9261409256141633e-005 - 9.5390006899833679e-002 - -9.0216562151908875e-002 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.6325189284980297e-003 - -3.5685008764266968e-001 - 5.8603391051292419e-002 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 11 6 3 1 3. - 1 - -3.4756339155137539e-003 - 5.5268160998821259e-002 - -8.1110060214996338e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - 5.3725110774394125e-005 - -1.5239860117435455e-001 - 1.4978319406509399e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 9 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.9981860027182847e-005 - 1.6690729558467865e-001 - -1.3983109593391418e-001 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 6.6550569608807564e-003 - -3.4786760807037354e-002 - 4.9454191327095032e-001 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - 3.6582579923560843e-005 - -1.8221789598464966e-001 - 7.0058353245258331e-002 - <_> - - <_> - - - - <_> - 0 9 14 1 -1. - <_> - 7 9 7 1 2. - 0 - 2.4936700239777565e-002 - -5.5899091064929962e-002 - 3.3210518956184387e-001 - <_> - - <_> - - - - <_> - 8 11 2 1 -1. - <_> - 8 11 1 1 2. - 0 - -2.2233650088310242e-003 - -4.7210049629211426e-001 - 3.9656650274991989e-002 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - 3.0253460630774498e-002 - 3.7779778242111206e-002 - -3.8744398951530457e-001 - <_> - - <_> - - - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - 0 - -2.5146869942545891e-002 - 2.5839841365814209e-001 - -6.3479728996753693e-002 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 9 1 1 1 2. - 0 - -3.9261409256141633e-005 - 1.1035069823265076e-001 - -1.5140140056610107e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.5253789499402046e-002 - 4.0381500124931335e-001 - -4.1429519653320313e-002 - <_> - - <_> - - - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - 0 - -2.6092969346791506e-003 - -2.9758319258689880e-001 - 5.6268099695444107e-002 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 10 4 1 2 3. - 1 - -5.0167189911007881e-003 - 4.0989220142364502e-002 - -9.0509623289108276e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 5.5015629186527804e-005 - -1.0549169778823853e-001 - 1.4567929506301880e-001 - <_> - - <_> - - - - <_> - 4 6 12 5 -1. - <_> - 7 6 6 5 2. - 0 - -2.1134430170059204e-001 - -3.9282271265983582e-001 - 6.5089040435850620e-003 - <_> - - <_> - - - - <_> - 2 6 12 5 -1. - <_> - 5 6 6 5 2. - 0 - 5.2607029676437378e-002 - 3.4969959408044815e-002 - -4.7080901265144348e-001 - <_> - - <_> - - - - <_> - 12 0 6 12 -1. - <_> - 14 0 2 12 3. - 0 - -2.3675639182329178e-002 - 2.1920250356197357e-001 - -1.7777769267559052e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -8.3744488656520844e-003 - -4.8220250010490417e-001 - 3.3246569335460663e-002 - <_> - - <_> - - - - <_> - 12 0 6 12 -1. - <_> - 14 0 2 12 3. - 0 - -1.8032009899616241e-001 - -5.0746428966522217e-001 - 4.7727171331644058e-003 - <_> - - <_> - - - - <_> - 0 0 6 12 -1. - <_> - 2 0 2 12 3. - 0 - -8.0522168427705765e-003 - 1.3129340112209320e-001 - -1.2621930241584778e-001 - <_> - - <_> - - - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - 0 - -1.3076379895210266e-002 - 1.8919549882411957e-001 - -5.6553479284048080e-002 - <_> - - <_> - - - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - 0 - 1.9346589222550392e-002 - -3.0950130894780159e-002 - 5.7245761156082153e-001 - <_> - - <_> - - - - <_> - 12 5 4 1 -1. - <_> - 13 5 2 1 2. - 0 - 6.9990791380405426e-003 - -3.7769541144371033e-002 - 4.1835439205169678e-001 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -1.4297800138592720e-002 - 1.0722269862890244e-001 - -1.4301869273185730e-001 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - -5.0943519454449415e-005 - 9.8646506667137146e-002 - -8.9524149894714355e-002 - <_> - - <_> - - - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 1 9. - 0 - -1.4215099625289440e-002 - 2.3867559432983398e-001 - -6.0889568179845810e-002 - <_> - - <_> - - - - <_> - 10 5 1 2 -1. - <_> - 10 6 1 1 2. - 0 - 4.4006508687743917e-005 - -1.2491259723901749e-001 - 9.6516169607639313e-002 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 2.8896171133965254e-003 - 5.1770750433206558e-002 - -2.7633678913116455e-001 - <_> - - <_> - - - - <_> - 16 1 2 8 -1. - <_> - 14 3 2 4 2. - 1 - -1.4485709369182587e-001 - -3.9524438977241516e-001 - 1.4283739961683750e-002 - <_> - - <_> - - - - <_> - 3 6 10 6 -1. - <_> - 3 6 5 3 2. - <_> - 8 9 5 3 2. - 0 - -7.4485607445240021e-002 - -3.5406059026718140e-001 - 3.9224278181791306e-002 - <_> - - <_> - - - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - -2.4072000756859779e-002 - 2.3231640458106995e-001 - -3.2994810491800308e-002 - <_> - - <_> - - - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - 1.9683260470628738e-002 - -5.4490741342306137e-002 - 2.5256949663162231e-001 - <_> - - <_> - - - - <_> - 13 4 3 4 -1. - <_> - 13 4 3 2 2. - 1 - 1.7556510865688324e-002 - 3.3798649907112122e-002 - -1.7246970534324646e-001 - <_> - - <_> - - - - <_> - 1 4 12 6 -1. - <_> - 1 4 6 3 2. - <_> - 7 7 6 3 2. - 0 - 1.5962730348110199e-001 - 3.2824710011482239e-002 - -4.9014711380004883e-001 - <_> - - <_> - - - - <_> - 13 3 2 3 -1. - <_> - 12 4 2 1 3. - 1 - 1.5168360434472561e-002 - -3.1594321131706238e-002 - 1.3700030744075775e-001 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - -1.8054259940981865e-002 - 1.8131910264492035e-001 - -7.3166027665138245e-002 - -1.7063260078430176e+000 - 14 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5180639028549194e-002 - 6.9966208934783936e-001 - -3.5598480701446533e-001 - <_> - - <_> - - - - <_> - 8 3 3 3 -1. - <_> - 8 4 3 1 3. - 0 - -2.4972269311547279e-002 - 6.5660268068313599e-001 - -1.3398469984531403e-001 - <_> - - <_> - - - - <_> - 5 3 3 3 -1. - <_> - 6 4 1 3 3. - 1 - -4.5527230948209763e-002 - 5.7874792814254761e-001 - -1.2656690180301666e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -6.7877001129090786e-003 - 3.2121130824089050e-001 - -9.2314563691616058e-002 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 1.0429969988763332e-002 - -8.6593657732009888e-002 - 6.6687929630279541e-001 - <_> - - <_> - - - - <_> - 10 4 6 6 -1. - <_> - 12 6 2 2 9. - 0 - 1.9914349913597107e-001 - -1.1814249679446220e-002 - 2.8926709294319153e-001 - <_> - - <_> - - - - <_> - 2 4 6 6 -1. - <_> - 4 6 2 2 9. - 0 - -1.3934800028800964e-001 - 2.7977100014686584e-001 - -1.1972069740295410e-001 - <_> - - <_> - - - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - 0 - -3.4900620579719543e-002 - 6.0853272676467896e-001 - -3.3297471702098846e-002 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 4.1045788675546646e-003 - 7.4957266449928284e-002 - -5.1426941156387329e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - 1.1164579540491104e-002 - -4.2139139026403427e-002 - 3.2087740302085876e-001 - <_> - - <_> - - - - <_> - 4 11 6 1 -1. - <_> - 6 11 2 1 3. - 0 - 5.9737460687756538e-003 - 5.8269631117582321e-002 - -5.2123707532882690e-001 - <_> - - <_> - - - - <_> - 11 5 2 4 -1. - <_> - 12 5 1 2 2. - <_> - 11 7 1 2 2. - 0 - -1.0200380347669125e-002 - 2.6471599936485291e-001 - -4.6848529018461704e-003 - <_> - - <_> - - - - <_> - 5 5 2 4 -1. - <_> - 5 5 1 2 2. - <_> - 6 7 1 2 2. - 0 - 6.4758108928799629e-003 - -1.0912910103797913e-001 - 3.3013060688972473e-001 - <_> - - <_> - - - - <_> - 5 5 12 4 -1. - <_> - 5 7 12 2 2. - 0 - 4.2913921177387238e-002 - -2.7027499675750732e-001 - 5.7806611061096191e-002 - <_> - - <_> - - - - <_> - 2 3 2 2 -1. - <_> - 2 3 2 1 2. - 1 - 7.2694900445640087e-003 - 6.7417383193969727e-002 - -3.9489638805389404e-001 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - 5.2788378670811653e-003 - 4.4355489313602448e-002 - -4.2548438906669617e-001 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 3 5 2 2 2. - <_> - 5 7 2 2 2. - 0 - -2.2712450474500656e-002 - 4.3758571147918701e-001 - -5.6706890463829041e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - -1.8580600619316101e-002 - -6.1528331041336060e-001 - 4.0651239454746246e-002 - <_> - - <_> - - - - <_> - 6 4 6 3 -1. - <_> - 6 5 6 1 3. - 0 - -5.2815988659858704e-002 - 3.9717459678649902e-001 - -5.5707391351461411e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 2.7739210054278374e-003 - 7.1527756750583649e-002 - -3.6739039421081543e-001 - <_> - - <_> - - - - <_> - 2 0 12 2 -1. - <_> - 8 0 6 2 2. - 0 - -2.1746100857853889e-002 - 1.3615989685058594e-001 - -1.5944430232048035e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -1.6994749894365668e-003 - -2.8949651122093201e-001 - 7.2794176638126373e-002 - <_> - - <_> - - - - <_> - 6 4 5 8 -1. - <_> - 6 6 5 4 2. - 0 - 7.4074663221836090e-002 - 3.6687631160020828e-002 - -4.8284009099006653e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.5314641445875168e-002 - -2.9834219813346863e-001 - 6.0024339705705643e-002 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 4.3436840176582336e-002 - -3.6994270980358124e-002 - 6.1292910575866699e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - -9.1329999268054962e-003 - 9.7552441060543060e-002 - -8.2057207822799683e-002 - <_> - - <_> - - - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 2 9. - 0 - -9.7359552979469299e-002 - 1.0101430118083954e-001 - -1.9310599565505981e-001 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 6 1 2 3. - 1 - 3.7818439304828644e-002 - -8.6803017184138298e-003 - 4.1474840044975281e-001 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - -2.5347029790282249e-002 - 4.2153739929199219e-001 - -4.4529590755701065e-002 - <_> - - <_> - - - - <_> - 10 11 4 1 -1. - <_> - 11 11 2 1 2. - 0 - 2.7832679916173220e-003 - 4.8425801098346710e-002 - -3.4922879934310913e-001 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - 2.3268889635801315e-002 - -6.6568560898303986e-002 - 2.6760068535804749e-001 - <_> - - <_> - - - - <_> - 11 0 4 3 -1. - <_> - 12 0 2 3 2. - 0 - 3.1013819389045238e-003 - 7.8247211873531342e-002 - -3.5030668973922729e-001 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - 0 - 1.1671819724142551e-002 - 3.1337831169366837e-002 - -4.9763050675392151e-001 - <_> - - <_> - - - - <_> - 17 0 1 10 -1. - <_> - 17 5 1 5 2. - 0 - 4.7239661216735840e-002 - 2.2004479542374611e-002 - -5.3065848350524902e-001 - <_> - - <_> - - - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - 0 - -1.4776130206882954e-002 - -3.2586520910263062e-001 - 5.5654410272836685e-002 - <_> - - <_> - - - - <_> - 2 5 15 2 -1. - <_> - 7 5 5 2 3. - 0 - -1.9921749830245972e-001 - -5.2553087472915649e-001 - 3.2468371093273163e-002 - <_> - - <_> - - - - <_> - 4 11 4 1 -1. - <_> - 5 11 2 1 2. - 0 - -4.0785730816423893e-003 - -4.8107388615608215e-001 - 2.9926039278507233e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -7.1787680499255657e-003 - 1.9346639513969421e-001 - -8.5371166467666626e-002 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - 6.9532832130789757e-003 - 4.7720771282911301e-002 - -3.3479538559913635e-001 - <_> - - <_> - - - - <_> - 9 2 3 3 -1. - <_> - 9 3 3 1 3. - 0 - -1.2821669690310955e-002 - 2.1228149533271790e-001 - -4.3001249432563782e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - 0 - -4.7380151227116585e-003 - -4.9310049414634705e-001 - 3.3275339752435684e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -5.1670171320438385e-002 - 6.1839159578084946e-002 - -8.9411988854408264e-002 - <_> - - <_> - - - - <_> - 2 1 9 1 -1. - <_> - 5 4 3 1 3. - 1 - -1.2189070135354996e-001 - -5.4505228996276855e-001 - 3.2852120697498322e-002 - <_> - - <_> - - - - <_> - 14 8 4 3 -1. - <_> - 14 9 4 1 3. - 0 - -1.5401430428028107e-002 - -3.1807848811149597e-001 - 1.4967699535191059e-002 - <_> - - <_> - - - - <_> - 0 0 2 11 -1. - <_> - 1 0 1 11 2. - 0 - 3.3675070852041245e-002 - -2.7233030647039413e-002 - 5.3073042631149292e-001 - <_> - - <_> - - - - <_> - 16 6 2 6 -1. - <_> - 17 6 1 3 2. - <_> - 16 9 1 3 2. - 0 - 5.6405509822070599e-003 - -3.3072780817747116e-002 - 8.4785066545009613e-002 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 0 6 1 3 2. - <_> - 1 9 1 3 2. - 0 - 5.1956089009763673e-005 - -2.0156539976596832e-001 - 8.2180216908454895e-002 - <_> - - <_> - - - - <_> - 8 6 3 1 -1. - <_> - 9 6 1 1 3. - 0 - -2.8447040822356939e-003 - 1.3294629752635956e-001 - -7.7659137547016144e-002 - <_> - - <_> - - - - <_> - 0 3 12 6 -1. - <_> - 4 3 4 6 3. - 0 - 1.4447699487209320e-001 - 3.8755510002374649e-002 - -3.7729701399803162e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 1.5187789686024189e-002 - -1.8020100891590118e-002 - 3.1634598970413208e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - -3.1923990696668625e-002 - 2.9422530531883240e-001 - -4.8749800771474838e-002 - <_> - - <_> - - - - <_> - 8 0 5 3 -1. - <_> - 8 1 5 1 3. - 0 - 1.8610840663313866e-002 - -5.6667249649763107e-002 - 2.1379719674587250e-001 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - 4.9478588625788689e-003 - 4.7943778336048126e-002 - -3.1509420275688171e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - -4.6161081641912460e-002 - -4.7610089182853699e-001 - 2.9308699071407318e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 1.1872449889779091e-002 - -3.6026339977979660e-002 - 4.1018471121788025e-001 - <_> - - <_> - - - - <_> - 17 5 1 4 -1. - <_> - 17 6 1 2 2. - 0 - -6.2818480655550957e-003 - -2.1089139580726624e-001 - 2.9605450108647346e-002 - <_> - - <_> - - - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - 0 - 3.4704189747571945e-003 - 4.0655650198459625e-002 - -3.3085140585899353e-001 - <_> - - <_> - - - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - 7.5958840548992157e-002 - 3.6941869184374809e-003 - -3.6771050095558167e-001 - <_> - - <_> - - - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - -4.2840991169214249e-002 - 2.3720830678939819e-001 - -6.0800980776548386e-002 - <_> - - <_> - - - - <_> - 13 4 1 4 -1. - <_> - 13 6 1 2 2. - 0 - -1.1817189864814281e-002 - -2.4793669581413269e-001 - 1.3696460053324699e-002 - <_> - - <_> - - - - <_> - 4 4 1 4 -1. - <_> - 4 6 1 2 2. - 0 - 1.2998480349779129e-002 - -6.2347020953893661e-002 - 2.9573059082031250e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -5.3825829178094864e-002 - 2.1070300042629242e-001 - -6.8099439144134521e-002 - <_> - - <_> - - - - <_> - 4 0 2 4 -1. - <_> - 5 0 1 4 2. - 0 - -1.0883940383791924e-002 - -4.7151368856430054e-001 - 3.1116139143705368e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -3.0772840604186058e-002 - 4.0928280353546143e-001 - -4.0188588201999664e-002 - <_> - - <_> - - - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - 0 - 2.6424789801239967e-002 - -5.2670851349830627e-002 - 2.5522339344024658e-001 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 1 5 4 2. - 0 - 4.2143590748310089e-002 - -1.1854399740695953e-001 - 1.2375999987125397e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - -6.8667740561068058e-003 - -3.4111011028289795e-001 - 3.9649881422519684e-002 - <_> - - <_> - - - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - 0 - -7.9784085974097252e-003 - 2.3357069492340088e-001 - -4.1538249701261520e-002 - <_> - - <_> - - - - <_> - 0 4 12 6 -1. - <_> - 0 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - 1.5251199901103973e-001 - 3.2831441611051559e-002 - -3.8840961456298828e-001 - <_> - - <_> - - - - <_> - 17 7 1 3 -1. - <_> - 17 8 1 1 3. - 0 - -5.2495389245450497e-003 - -2.9752320051193237e-001 - 1.9470980390906334e-002 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 5 5 1 1 3. - 0 - 6.6419220529496670e-003 - -3.4735631197690964e-002 - 3.4990420937538147e-001 - <_> - - <_> - - - - <_> - 13 0 4 4 -1. - <_> - 12 1 4 2 2. - 1 - 1.7110049724578857e-002 - -3.3298000693321228e-002 - 9.1474249958992004e-002 - <_> - - <_> - - - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - -9.7776986658573151e-003 - -4.3720889091491699e-001 - 2.9044499620795250e-002 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -2.5141129735857248e-003 - 1.2397520244121552e-001 - -7.6406501233577728e-002 - <_> - - <_> - - - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - 0 - 6.4081619493663311e-003 - -3.2332200556993484e-002 - 3.6264058947563171e-001 - <_> - - <_> - - - - <_> - 5 6 8 1 -1. - <_> - 7 6 4 1 2. - 0 - -8.7686367332935333e-003 - 1.0199560225009918e-001 - -1.2560969591140747e-001 - <_> - - <_> - - - - <_> - 1 2 4 4 -1. - <_> - 1 2 2 2 2. - <_> - 3 4 2 2 2. - 0 - -6.6744568757712841e-003 - 1.0714609920978546e-001 - -1.1194419860839844e-001 - <_> - - <_> - - - - <_> - 12 3 2 1 -1. - <_> - 12 3 1 1 2. - 1 - -2.5654099881649017e-002 - 6.4865481853485107e-001 - -7.8786844387650490e-003 - <_> - - <_> - - - - <_> - 5 2 2 2 -1. - <_> - 5 2 2 1 2. - 1 - 1.9749540835618973e-002 - 3.7323061376810074e-002 - -3.4825590252876282e-001 - <_> - - <_> - - - - <_> - 12 1 6 3 -1. - <_> - 11 2 6 1 3. - 1 - -2.0802859216928482e-002 - 8.4190078079700470e-002 - -3.6445919424295425e-002 - <_> - - <_> - - - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - 2.2063199430704117e-002 - -5.9582170099020004e-002 - 2.1152189373970032e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 5.3523709066212177e-003 - 2.7724659070372581e-002 - -4.0503290295600891e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 2.5603959802538157e-003 - 5.0967320799827576e-002 - -2.6350560784339905e-001 - <_> - - <_> - - - - <_> - 12 0 4 5 -1. - <_> - 13 1 2 5 2. - 1 - -3.0307959765195847e-002 - 5.4715231060981750e-002 - -9.5685377717018127e-002 - <_> - - <_> - - - - <_> - 3 5 12 7 -1. - <_> - 7 5 4 7 3. - 0 - -2.6106768846511841e-001 - -3.2228010892868042e-001 - 3.1508989632129669e-002 - <_> - - <_> - - - - <_> - 12 5 3 4 -1. - <_> - 13 6 1 4 3. - 1 - -2.8650289401412010e-002 - 3.4172570705413818e-001 - -2.2077450528740883e-002 - <_> - - <_> - - - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - 6.1903461813926697e-002 - -1.6342630609869957e-002 - 6.5226632356643677e-001 - <_> - - <_> - - - - <_> - 5 8 8 4 -1. - <_> - 9 8 4 2 2. - <_> - 5 10 4 2 2. - 0 - -3.1047720462083817e-002 - -3.6522111296653748e-001 - 3.4920029342174530e-002 - <_> - - <_> - - - - <_> - 2 9 12 1 -1. - <_> - 8 9 6 1 2. - 0 - -3.5979911684989929e-002 - 2.1591410040855408e-001 - -5.5970121175050735e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 5.9886161237955093e-002 - 4.4573429971933365e-002 - -3.0152690410614014e-001 - <_> - - <_> - - - - <_> - 0 7 1 3 -1. - <_> - 0 8 1 1 3. - 0 - 3.9145331829786301e-003 - 3.1792480498552322e-002 - -3.2067620754241943e-001 - <_> - - <_> - - - - <_> - 14 6 1 4 -1. - <_> - 14 6 1 2 2. - 1 - -2.9716869816184044e-002 - -2.5787210464477539e-001 - 3.7697579711675644e-002 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - -2.2731749340891838e-002 - -3.6135891079902649e-001 - 2.9329940676689148e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -4.0700128674507141e-001 - -5.6401658058166504e-001 - 1.7949940636754036e-002 - <_> - - <_> - - - - <_> - 4 4 4 4 -1. - <_> - 3 5 4 2 2. - 1 - -1.9415460526943207e-002 - 1.4522629976272583e-001 - -7.1183227002620697e-002 - <_> - - <_> - - - - <_> - 14 6 1 4 -1. - <_> - 14 6 1 2 2. - 1 - -5.8602709032129496e-005 - 2.3447860032320023e-002 - -7.4233293533325195e-002 - <_> - - <_> - - - - <_> - 4 6 4 1 -1. - <_> - 4 6 2 1 2. - 1 - -4.1794691234827042e-002 - -4.3648260831832886e-001 - 3.1634360551834106e-002 - <_> - - <_> - - - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - 0 - 3.1113259494304657e-002 - -2.8742879629135132e-002 - 4.2367678880691528e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 4.9094129353761673e-003 - 2.8096439316868782e-002 - -3.5525271296501160e-001 - <_> - - <_> - - - - <_> - 2 0 16 4 -1. - <_> - 2 1 16 2 2. - 0 - 4.3127149343490601e-002 - -6.3333027064800262e-002 - 1.2167730182409286e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - 0 - -6.1103478074073792e-003 - 1.5755009651184082e-001 - -6.5233632922172546e-002 - <_> - - <_> - - - - <_> - 13 1 3 1 -1. - <_> - 14 2 1 1 3. - 1 - -8.4811979904770851e-003 - -3.1289771199226379e-001 - 4.7166388481855392e-002 - <_> - - <_> - - - - <_> - 4 1 1 8 -1. - <_> - 4 3 1 4 2. - 0 - -1.6476139426231384e-002 - 1.1513979732990265e-001 - -8.6872749030590057e-002 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 4 18 2 2. - 0 - -2.7051448822021484e-001 - -4.4175881147384644e-001 - 2.5920050218701363e-002 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - -3.1307939440011978e-002 - 4.0796020627021790e-001 - -2.7346299961209297e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -8.5358042269945145e-003 - -2.1038420498371124e-001 - 3.9202261716127396e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - 4.6511092223227024e-003 - 4.8896100372076035e-002 - -2.0760509371757507e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.0118389764102176e-004 - 1.2528030574321747e-001 - -2.1875940263271332e-001 - <_> - - <_> - - - - <_> - 9 1 7 3 -1. - <_> - 8 2 7 1 3. - 1 - -2.7405759319663048e-002 - 1.5803159773349762e-001 - -7.3161102831363678e-002 - <_> - - <_> - - - - <_> - 14 5 2 2 -1. - <_> - 14 6 2 1 2. - 0 - 1.3358670286834240e-002 - -1.0327829979360104e-002 - 1.9837729632854462e-001 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -1.6863640397787094e-002 - 1.5782469511032104e-001 - -8.3013407886028290e-002 - <_> - - <_> - - - - <_> - 10 0 6 5 -1. - <_> - 12 2 2 5 3. - 1 - -4.6753689646720886e-002 - 2.1774150431156158e-002 - -1.2496709823608398e-001 - <_> - - <_> - - - - <_> - 8 0 5 6 -1. - <_> - 6 2 5 2 3. - 1 - -2.4787309765815735e-001 - -5.5887281894683838e-001 - 1.9629070535302162e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - 1.5863390639424324e-002 - -4.4667821377515793e-002 - 3.5529270768165588e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.4960109293460846e-002 - -2.6829180121421814e-001 - 4.8722568899393082e-002 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - 0 - -4.2794410546775907e-005 - 8.3423823118209839e-002 - -7.9932630062103271e-002 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - -1.7223030328750610e-002 - -5.3263998031616211e-001 - 1.9519500434398651e-002 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - -1.3742740266025066e-003 - 7.8433223068714142e-002 - -1.6823059320449829e-001 - <_> - - <_> - - - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - 0 - 9.1677848249673843e-003 - -5.8949600905179977e-002 - 1.9434289634227753e-001 - <_> - - <_> - - - - <_> - 1 10 17 2 -1. - <_> - 1 11 17 1 2. - 0 - -2.4254640564322472e-002 - -5.3892469406127930e-001 - 1.2915720231831074e-002 - -1.6296470165252686e+000 - 15 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.9386109709739685e-002 - 6.7190408706665039e-001 - -2.7040511369705200e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - -9.8521290346980095e-003 - 1.5782390534877777e-001 - -1.1456169933080673e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -2.3724600672721863e-002 - 3.0622988939285278e-001 - -3.1042310595512390e-001 - <_> - - <_> - - - - <_> - 7 4 11 8 -1. - <_> - 7 8 11 4 2. - 0 - 1.8008269369602203e-001 - -4.3263959884643555e-001 - 3.6715991795063019e-002 - <_> - - <_> - - - - <_> - 7 3 1 3 -1. - <_> - 7 4 1 1 3. - 0 - -7.8437011688947678e-003 - 3.9657589793205261e-001 - -1.3096019625663757e-001 - <_> - - <_> - - - - <_> - 11 6 7 6 -1. - <_> - 11 9 7 3 2. - 0 - 1.4490400254726410e-001 - 6.3096016645431519e-002 - -1.8521189689636230e-001 - <_> - - <_> - - - - <_> - 0 6 7 6 -1. - <_> - 0 9 7 3 2. - 0 - 5.7838220149278641e-002 - -4.3671241402626038e-001 - 9.5829539000988007e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 0 3 3 2. - 0 - 8.6507797241210938e-003 - -1.9749960303306580e-001 - 1.3382530212402344e-001 - <_> - - <_> - - - - <_> - 1 10 13 2 -1. - <_> - 1 11 13 1 2. - 0 - 4.4434559531509876e-003 - -2.8863328695297241e-001 - 8.0679617822170258e-002 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - -1.1448189616203308e-002 - 2.0668460428714752e-001 - -2.9727399349212646e-002 - <_> - - <_> - - - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - -1.5179160051047802e-002 - -5.1914721727371216e-001 - 3.8224801421165466e-002 - <_> - - <_> - - - - <_> - 9 3 3 6 -1. - <_> - 10 4 1 6 3. - 1 - -7.7604092657566071e-002 - -4.6431368589401245e-001 - 1.1916999705135822e-002 - <_> - - <_> - - - - <_> - 6 5 6 4 -1. - <_> - 8 5 2 4 3. - 0 - -1.8936419859528542e-002 - 1.1738669872283936e-001 - -1.8909810483455658e-001 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - 0 - -1.0080969892442226e-002 - -4.3171709775924683e-001 - 4.2613830417394638e-002 - <_> - - <_> - - - - <_> - 3 0 10 4 -1. - <_> - 3 1 10 2 2. - 0 - 5.0424810498952866e-002 - -8.4850631654262543e-002 - 2.1506150066852570e-001 - <_> - - <_> - - - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - 0 - -6.4389303326606750e-002 - 1.7555430531501770e-001 - -1.0601290315389633e-001 - <_> - - <_> - - - - <_> - 2 6 6 2 -1. - <_> - 4 6 2 2 3. - 0 - -2.1437110379338264e-002 - 2.1907110512256622e-001 - -8.4247410297393799e-002 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - -9.1345440596342087e-003 - -4.1084781289100647e-001 - 5.6968819350004196e-002 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - 9.5703564584255219e-003 - -5.5861141532659531e-002 - 3.6446011066436768e-001 - <_> - - <_> - - - - <_> - 14 5 4 3 -1. - <_> - 14 5 2 3 2. - 0 - 9.4563569873571396e-003 - -3.7393100559711456e-002 - 1.3930140435695648e-001 - <_> - - <_> - - - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - 0 - -2.3805219680070877e-002 - -1.5813879668712616e-001 - 1.2095350027084351e-001 - <_> - - <_> - - - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - 0 - 2.3389449343085289e-002 - 2.1982479840517044e-002 - -4.8894658684730530e-001 - <_> - - <_> - - - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - 0 - -1.4841769821941853e-002 - -4.2008030414581299e-001 - 4.2827770113945007e-002 - <_> - - <_> - - - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - 0 - -1.9951960071921349e-002 - -3.8262298703193665e-001 - 1.7620539292693138e-002 - <_> - - <_> - - - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - 0 - -5.5557182058691978e-003 - -3.3374428749084473e-001 - 4.9041308462619781e-002 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - 7.5748967938125134e-003 - 2.9259499162435532e-002 - -1.7972069978713989e-001 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - 0 - 1.0564279742538929e-002 - 3.8666039705276489e-002 - -3.8292339444160461e-001 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - 8.7607624009251595e-003 - -1.6946149989962578e-002 - 1.9596639275550842e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -8.9941717684268951e-002 - 1.3279989361763000e-001 - -1.0967929661273956e-001 - <_> - - <_> - - - - <_> - 8 0 4 6 -1. - <_> - 8 2 4 2 3. - 0 - -3.2798118889331818e-002 - 2.1123570203781128e-001 - -5.2206270396709442e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.9366537034511566e-002 - -3.1673339009284973e-001 - 5.1063869148492813e-002 - <_> - - <_> - - - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - 0 - 4.8841950483620167e-003 - -5.1112260669469833e-002 - 2.8360730409622192e-001 - <_> - - <_> - - - - <_> - 0 7 7 4 -1. - <_> - 0 8 7 2 2. - 0 - 3.5134568810462952e-002 - 3.0124710872769356e-002 - -4.3692100048065186e-001 - <_> - - <_> - - - - <_> - 13 2 3 1 -1. - <_> - 14 3 1 1 3. - 1 - 8.8909007608890533e-003 - 4.1621170938014984e-002 - -3.7158828973770142e-001 - <_> - - <_> - - - - <_> - 5 2 1 3 -1. - <_> - 4 3 1 1 3. - 1 - -1.5983669087290764e-002 - -5.1140671968460083e-001 - 2.4840809404850006e-002 - <_> - - <_> - - - - <_> - 12 3 4 3 -1. - <_> - 11 4 4 1 3. - 1 - -6.4470201730728149e-002 - -2.1385170519351959e-001 - 1.8365900032222271e-003 - <_> - - <_> - - - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - 3.3956471830606461e-002 - -4.1229560971260071e-002 - 3.3696550130844116e-001 - <_> - - <_> - - - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - 0 - -2.0578580442816019e-003 - 6.2026239931583405e-002 - -6.6379219293594360e-002 - <_> - - <_> - - - - <_> - 2 5 2 5 -1. - <_> - 3 5 1 5 2. - 0 - -1.9420420285314322e-003 - 7.9117313027381897e-002 - -1.9388359785079956e-001 - <_> - - <_> - - - - <_> - 5 0 10 3 -1. - <_> - 5 1 10 1 3. - 0 - -2.0667409524321556e-002 - 1.7511230707168579e-001 - -5.5765930563211441e-002 - <_> - - <_> - - - - <_> - 5 0 5 3 -1. - <_> - 5 1 5 1 3. - 0 - 1.1788690462708473e-002 - -8.2900352776050568e-002 - 1.5535129606723785e-001 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 14 1 4 1 3. - 0 - 1.8824249505996704e-002 - 3.0222170054912567e-002 - -4.0415239334106445e-001 - <_> - - <_> - - - - <_> - 7 4 1 3 -1. - <_> - 7 5 1 1 3. - 0 - -8.3997547626495361e-003 - 2.0664639770984650e-001 - -6.2480248510837555e-002 - <_> - - <_> - - - - <_> - 6 5 6 4 -1. - <_> - 6 5 3 4 2. - 0 - 5.8516681194305420e-002 - -5.4968580603599548e-002 - 2.5411149859428406e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - 0 - 2.0517799258232117e-001 - -6.1518680304288864e-002 - 2.1540619432926178e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -4.0942661464214325e-002 - 2.0580589771270752e-001 - -6.6298596560955048e-002 - <_> - - <_> - - - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - 0 - -2.0694980397820473e-002 - -3.8925689458847046e-001 - 3.6689650267362595e-002 - <_> - - <_> - - - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - 0 - 2.5016449391841888e-002 - -3.2912530004978180e-002 - 2.2270810604095459e-001 - <_> - - <_> - - - - <_> - 3 0 3 10 -1. - <_> - 4 0 1 10 3. - 0 - -3.4674070775508881e-002 - -5.1711809635162354e-001 - 2.5168089196085930e-002 - <_> - - <_> - - - - <_> - 9 6 3 2 -1. - <_> - 10 6 1 2 3. - 0 - -3.4877469297498465e-003 - 1.1860589683055878e-001 - -1.0493949800729752e-001 - <_> - - <_> - - - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - 0 - 6.0133477672934532e-003 - 3.0495999380946159e-002 - -3.5960870981216431e-001 - <_> - - <_> - - - - <_> - 9 0 6 5 -1. - <_> - 11 0 2 5 3. - 0 - 8.6038149893283844e-003 - 6.1225108802318573e-002 - -2.3886460065841675e-001 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - 7.0930928923189640e-003 - 5.0354178994894028e-002 - -2.4130879342556000e-001 - <_> - - <_> - - - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - 0 - -8.2711968570947647e-003 - 1.7760099470615387e-001 - -6.8700566887855530e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 5 1 3 3. - 0 - -7.6021431013941765e-003 - 1.5871450304985046e-001 - -7.1639142930507660e-002 - <_> - - <_> - - - - <_> - 9 6 3 2 -1. - <_> - 10 6 1 2 3. - 0 - -2.9862489551305771e-002 - -3.8224980235099792e-001 - 8.9862719178199768e-003 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -6.5749119967222214e-003 - 2.2762650251388550e-001 - -6.0182739049196243e-002 - <_> - - <_> - - - - <_> - 10 5 2 3 -1. - <_> - 9 6 2 1 3. - 1 - 2.6771429926156998e-002 - -1.8169719725847244e-002 - 2.0630699396133423e-001 - <_> - - <_> - - - - <_> - 0 5 18 2 -1. - <_> - 6 5 6 2 3. - 0 - -2.6554858684539795e-001 - -4.8712089657783508e-001 - 2.7063539251685143e-002 - <_> - - <_> - - - - <_> - 11 3 4 4 -1. - <_> - 13 3 2 2 2. - <_> - 11 5 2 2 2. - 0 - -2.6141930371522903e-002 - 1.9213640689849854e-001 - -2.7676820755004883e-002 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 6 1 2 3. - 1 - -3.9902370423078537e-002 - -4.2627981305122375e-001 - 2.9879650101065636e-002 - <_> - - <_> - - - - <_> - 10 8 6 2 -1. - <_> - 13 8 3 1 2. - <_> - 10 9 3 1 2. - 0 - -3.6611340474337339e-003 - 1.0172230005264282e-001 - -4.3250489979982376e-002 - <_> - - <_> - - - - <_> - 2 8 6 2 -1. - <_> - 2 8 3 1 2. - <_> - 5 9 3 1 2. - 0 - 4.8367520794272423e-003 - -6.7465707659721375e-002 - 1.9671800732612610e-001 - <_> - - <_> - - - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - 0 - -1.6790149733424187e-002 - -3.9753469824790955e-001 - 3.7431109696626663e-002 - <_> - - <_> - - - - <_> - 9 6 4 2 -1. - <_> - 9 6 4 1 2. - 1 - -1.2243920005857944e-002 - 5.5608421564102173e-002 - -2.0048050582408905e-001 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 6.1686821281909943e-002 - -1.0107450187206268e-002 - 2.9090631008148193e-001 - <_> - - <_> - - - - <_> - 5 4 8 4 -1. - <_> - 5 4 4 2 2. - <_> - 9 6 4 2 2. - 0 - -7.1395501494407654e-002 - -6.0413521528244019e-001 - 1.9080249592661858e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - 9.5230207080021501e-005 - -4.3509960174560547e-002 - 4.5345060527324677e-002 - <_> - - <_> - - - - <_> - 6 8 5 4 -1. - <_> - 6 9 5 2 2. - 0 - -1.0757230222225189e-002 - 1.9926990568637848e-001 - -5.0487600266933441e-002 - <_> - - <_> - - - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - 2.2588269785046577e-002 - -1.5318900346755981e-002 - 1.7491130530834198e-001 - <_> - - <_> - - - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - -2.1975219249725342e-002 - -4.5546808838844299e-001 - 2.2921970114111900e-002 - <_> - - <_> - - - - <_> - 13 2 3 3 -1. - <_> - 12 3 3 1 3. - 1 - -1.8598889932036400e-002 - 6.3289977610111237e-002 - -2.2360650822520256e-002 - <_> - - <_> - - - - <_> - 5 2 3 3 -1. - <_> - 6 3 1 3 3. - 1 - 4.1398629546165466e-002 - -2.9707899317145348e-002 - 3.4164550900459290e-001 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - -1.5574470162391663e-002 - 1.1719810217618942e-001 - -5.0286509096622467e-002 - <_> - - <_> - - - - <_> - 3 3 3 2 -1. - <_> - 3 4 3 1 2. - 0 - -2.9469770379364491e-003 - 9.2899397015571594e-002 - -1.4018329977989197e-001 - <_> - - <_> - - - - <_> - 4 3 14 6 -1. - <_> - 11 3 7 3 2. - <_> - 4 6 7 3 2. - 0 - 1.5679700300097466e-003 - -4.5396000146865845e-002 - 5.7984590530395508e-002 - <_> - - <_> - - - - <_> - 2 3 8 6 -1. - <_> - 2 3 4 3 2. - <_> - 6 6 4 3 2. - 0 - 1.2352210283279419e-001 - 1.8805639818310738e-002 - -5.6560719013214111e-001 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.0430569818709046e-004 - 8.0288991332054138e-002 - -1.1547219753265381e-001 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - -9.7123868763446808e-003 - -3.7258410453796387e-001 - 3.0633870512247086e-002 - <_> - - <_> - - - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - 1 - -1.7766250297427177e-002 - 1.8392249941825867e-001 - -3.2872468233108521e-002 - <_> - - <_> - - - - <_> - 6 4 1 2 -1. - <_> - 6 4 1 1 2. - 1 - 1.5392260684166104e-004 - -1.1578179895877838e-001 - 9.7096182405948639e-002 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - -3.6866529844701290e-003 - -2.7469968795776367e-001 - 5.0014968961477280e-002 - <_> - - <_> - - - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - -1.6139489412307739e-001 - 1.6754530370235443e-001 - -6.5458148717880249e-002 - <_> - - <_> - - - - <_> - 2 0 16 12 -1. - <_> - 2 0 8 12 2. - 0 - -2.0767639577388763e-001 - 5.1562719047069550e-002 - -1.7276130616664886e-002 - <_> - - <_> - - - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - 0 - 3.3081259578466415e-002 - -4.6209480613470078e-002 - 2.2093529999256134e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -1.0417399927973747e-002 - 1.2907770276069641e-001 - -8.3780996501445770e-002 - <_> - - <_> - - - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - 0 - 3.3997350838035345e-003 - 3.1802389770746231e-002 - -2.9635548591613770e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - -1.5930660068988800e-002 - 1.0412970185279846e-001 - -6.9342762231826782e-002 - <_> - - <_> - - - - <_> - 0 4 12 7 -1. - <_> - 4 4 4 7 3. - 0 - -2.3908320069313049e-001 - -5.0697857141494751e-001 - 2.0860239863395691e-002 - <_> - - <_> - - - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - 0 - 4.0117949247360229e-003 - -2.8569610789418221e-002 - 1.7320330440998077e-001 - <_> - - <_> - - - - <_> - 6 2 4 3 -1. - <_> - 7 2 2 3 2. - 0 - -5.7363999076187611e-003 - -1.8128049373626709e-001 - 5.3030159324407578e-002 - <_> - - <_> - - - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - 0 - -2.1724679972976446e-003 - 1.4318360388278961e-001 - -4.6536020934581757e-002 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 6 3 3 1 3. - 0 - -1.1111910454928875e-002 - 2.0232780277729034e-001 - -4.8444561660289764e-002 - <_> - - <_> - - - - <_> - 11 4 1 2 -1. - <_> - 11 5 1 1 2. - 0 - -1.0085949907079339e-004 - 5.5502779781818390e-002 - -6.3348926603794098e-002 - <_> - - <_> - - - - <_> - 6 4 1 6 -1. - <_> - 4 6 1 2 3. - 1 - -2.1863000467419624e-002 - 1.3861429691314697e-001 - -7.0301473140716553e-002 - <_> - - <_> - - - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - 0 - 2.9870280623435974e-001 - 5.3018219769001007e-003 - -4.9552699923515320e-001 - <_> - - <_> - - - - <_> - 0 5 16 7 -1. - <_> - 8 5 8 7 2. - 0 - -2.9273781180381775e-001 - 2.2202910482883453e-001 - -5.9545800089836121e-002 - <_> - - <_> - - - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - 0 - 5.7936239987611771e-002 - 1.7134670168161392e-002 - -6.2441098690032959e-001 - <_> - - <_> - - - - <_> - 0 11 12 1 -1. - <_> - 6 11 6 1 2. - 0 - 8.2372408360242844e-003 - -6.5199822187423706e-002 - 1.7533220350742340e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.0964090004563332e-002 - 2.3662520572543144e-002 - -3.8045209646224976e-001 - <_> - - <_> - - - - <_> - 4 4 2 2 -1. - <_> - 4 4 1 1 2. - <_> - 5 5 1 1 2. - 0 - -1.9963670056313276e-003 - 1.6336169838905334e-001 - -6.1245940625667572e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - -2.6385689154267311e-002 - 1.3814860582351685e-001 - -1.7998920753598213e-002 - <_> - - <_> - - - - <_> - 6 3 2 2 -1. - <_> - 6 3 2 1 2. - 1 - 2.4890769273042679e-002 - 2.2105880081653595e-002 - -4.3824601173400879e-001 - <_> - - <_> - - - - <_> - 7 2 5 3 -1. - <_> - 7 3 5 1 3. - 0 - 3.3625978976488113e-002 - -4.6475131064653397e-002 - 1.9136969745159149e-001 - <_> - - <_> - - - - <_> - 1 2 2 7 -1. - <_> - 2 2 1 7 2. - 0 - -2.6936049107462168e-003 - 6.9527350366115570e-002 - -1.3958020508289337e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - -1.6001410782337189e-002 - 1.7003299295902252e-001 - -2.2912779822945595e-002 - <_> - - <_> - - - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - -2.2382080554962158e-002 - 2.7026671171188354e-001 - -4.0354069322347641e-002 - <_> - - <_> - - - - <_> - 11 3 5 8 -1. - <_> - 11 7 5 4 2. - 0 - -9.0552508831024170e-002 - -7.1423888206481934e-001 - 8.3871074020862579e-003 - <_> - - <_> - - - - <_> - 1 6 2 6 -1. - <_> - 1 6 1 3 2. - <_> - 2 9 1 3 2. - 0 - 1.9464749842882156e-002 - 2.0357880741357803e-002 - -5.0658088922500610e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - -8.7326802313327789e-003 - 4.5126538723707199e-002 - -4.7429598867893219e-002 - <_> - - <_> - - - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - 0 - 2.2775048855692148e-003 - -1.0658310353755951e-001 - 1.0186749696731567e-001 - <_> - - <_> - - - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - 3.3961221575737000e-002 - -9.4395978376269341e-003 - 8.8545367121696472e-002 - <_> - - <_> - - - - <_> - 5 1 3 5 -1. - <_> - 6 2 1 5 3. - 1 - -3.6761499941349030e-002 - 2.4322110414505005e-001 - -4.4136319309473038e-002 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 13 3 1 1 2. - <_> - 12 4 1 1 2. - 0 - -1.1103870201623067e-004 - 4.3608471751213074e-002 - -4.5845959335565567e-002 - <_> - - <_> - - - - <_> - 4 3 2 2 -1. - <_> - 4 3 1 1 2. - <_> - 5 4 1 1 2. - 0 - -1.0285600001225248e-004 - 9.3662150204181671e-002 - -1.0273990035057068e-001 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - 1.0630009695887566e-002 - 3.1317610293626785e-002 - -4.0388751029968262e-001 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - -1.8916089087724686e-002 - -6.6609549522399902e-001 - 1.2026290409266949e-002 - <_> - - <_> - - - - <_> - 14 1 3 6 -1. - <_> - 15 2 1 6 3. - 1 - 4.4989351183176041e-002 - -2.2083500400185585e-002 - 3.1624680757522583e-001 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - 0 - -9.3135945498943329e-003 - 2.4396809935569763e-001 - -3.4472171217203140e-002 - <_> - - <_> - - - - <_> - 13 10 2 1 -1. - <_> - 13 10 1 1 2. - 0 - -1.1829029972432181e-004 - 7.6737791299819946e-002 - -7.4983909726142883e-002 - <_> - - <_> - - - - <_> - 0 6 15 4 -1. - <_> - 0 8 15 2 2. - 0 - -3.6458101123571396e-002 - -6.8958371877670288e-001 - 1.3191980309784412e-002 - <_> - - <_> - - - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - 0 - -1.8806230509653687e-003 - 7.5947493314743042e-002 - -4.7749940305948257e-002 - <_> - - <_> - - - - <_> - 3 11 6 1 -1. - <_> - 5 11 2 1 3. - 0 - 8.1947557628154755e-003 - 2.6319609954953194e-002 - -3.6540159583091736e-001 - <_> - - <_> - - - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - 0 - -4.3926942162215710e-003 - -4.3237671256065369e-001 - 1.5065680257976055e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 1 9. - 0 - -2.3078089579939842e-002 - 1.3706269860267639e-001 - -6.0588121414184570e-002 - <_> - - <_> - - - - <_> - 0 4 18 4 -1. - <_> - 9 4 9 2 2. - <_> - 0 6 9 2 2. - 0 - -1.5273529291152954e-001 - -4.8930040001869202e-001 - 1.8007790669798851e-002 - <_> - - <_> - - - - <_> - 0 0 16 12 -1. - <_> - 8 0 8 12 2. - 0 - 5.0859832763671875e-001 - -1.8213309347629547e-002 - 5.0210291147232056e-001 - <_> - - <_> - - - - <_> - 2 2 16 2 -1. - <_> - 2 2 8 2 2. - 0 - 5.1210429519414902e-003 - -9.2683613300323486e-002 - 7.1713283658027649e-002 - <_> - - <_> - - - - <_> - 3 0 9 6 -1. - <_> - 3 2 9 2 3. - 0 - -1.5781129896640778e-001 - 4.0578329563140869e-001 - -2.4888839572668076e-002 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - -1.0054220445454121e-002 - -2.6102149486541748e-001 - 2.1513199433684349e-002 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - 1.0722960345447063e-002 - 2.1149590611457825e-002 - -4.4449388980865479e-001 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -4.4461651705205441e-003 - 1.4982509613037109e-001 - -6.8097911775112152e-002 - <_> - - <_> - - - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - 0 - -1.0270509665133432e-004 - 9.1675288975238800e-002 - -9.6970669925212860e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - -2.3320950567722321e-002 - -1.9236829876899719e-001 - 3.7209238857030869e-002 - <_> - - <_> - - - - <_> - 5 3 5 3 -1. - <_> - 4 4 5 1 3. - 1 - -2.6009110733866692e-002 - 1.7083279788494110e-001 - -5.8662418276071548e-002 - <_> - - <_> - - - - <_> - 12 5 6 7 -1. - <_> - 14 5 2 7 3. - 0 - -1.3390360400080681e-002 - 1.3289719820022583e-001 - -1.0905700176954269e-001 - <_> - - <_> - - - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - 0 - 1.1657520197331905e-002 - -4.7384869307279587e-002 - 1.9837440550327301e-001 - <_> - - <_> - - - - <_> - 3 1 15 1 -1. - <_> - 8 1 5 1 3. - 0 - -1.5216249972581863e-002 - 9.0810291469097137e-002 - -8.1595033407211304e-002 - <_> - - <_> - - - - <_> - 4 2 8 2 -1. - <_> - 4 2 4 1 2. - <_> - 8 3 4 1 2. - 0 - -5.0137271173298359e-003 - 1.3411369919776917e-001 - -8.9783012866973877e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -2.8997131157666445e-003 - 1.3354049623012543e-001 - -2.7490219101309776e-002 - <_> - - <_> - - - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - 0 - 4.5744711160659790e-001 - -6.3561663031578064e-002 - 1.5566839277744293e-001 - <_> - - <_> - - - - <_> - 12 5 6 6 -1. - <_> - 14 5 2 6 3. - 0 - -1.3599389791488647e-001 - -4.9014529585838318e-001 - 9.3379104509949684e-003 - <_> - - <_> - - - - <_> - 0 5 6 6 -1. - <_> - 2 5 2 6 3. - 0 - -3.2645169645547867e-002 - 1.6510139405727386e-001 - -6.5266229212284088e-002 - <_> - - <_> - - - - <_> - 10 2 6 1 -1. - <_> - 10 2 3 1 2. - 1 - 8.3665400743484497e-002 - -4.8871468752622604e-003 - 7.4069589376449585e-001 - <_> - - <_> - - - - <_> - 8 2 1 6 -1. - <_> - 8 2 1 3 2. - 1 - -6.5547451376914978e-002 - 4.9933698773384094e-001 - -1.6801070421934128e-002 - <_> - - <_> - - - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 1 2. - <_> - 9 6 2 1 2. - 0 - -7.5683398172259331e-003 - 9.0739540755748749e-002 - -3.3331640064716339e-002 - <_> - - <_> - - - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 1 2. - <_> - 7 6 2 1 2. - 0 - 1.2663889676332474e-002 - -3.5381950438022614e-002 - 2.8114819526672363e-001 - <_> - - <_> - - - - <_> - 13 10 2 1 -1. - <_> - 13 10 1 1 2. - 0 - 1.0308570199413225e-004 - -6.0301329940557480e-002 - 9.2195279896259308e-002 - <_> - - <_> - - - - <_> - 3 10 2 1 -1. - <_> - 4 10 1 1 2. - 0 - -8.6807813204359263e-005 - 9.1417297720909119e-002 - -1.0815770179033279e-001 - <_> - - <_> - - - - <_> - 17 4 1 6 -1. - <_> - 17 6 1 2 3. - 0 - 7.5817271135747433e-003 - 2.9872510582208633e-002 - -1.7231559753417969e-001 - <_> - - <_> - - - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - 0 - 2.0975960418581963e-002 - 4.0259808301925659e-002 - -2.1657769381999969e-001 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - 0 - 1.2732270173728466e-002 - 2.3903559893369675e-002 - -3.2514059543609619e-001 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -8.6572989821434021e-003 - 2.0860520005226135e-001 - -4.3289590626955032e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - 9.5848739147186279e-003 - 4.0576349943876266e-002 - -2.5737819075584412e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - 2.6772130280733109e-002 - -8.6598917841911316e-002 - 1.0538879781961441e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.4040360227227211e-002 - 1.9790090620517731e-001 - -5.0357129424810410e-002 - <_> - - <_> - - - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - 0 - 9.7764357633423060e-005 - -9.0779386460781097e-002 - 9.9890656769275665e-002 - <_> - - <_> - - - - <_> - 11 0 3 3 -1. - <_> - 12 0 1 3 3. - 0 - -6.4859418198466301e-003 - -2.3571990430355072e-001 - 4.4631820172071457e-002 - <_> - - <_> - - - - <_> - 4 10 2 2 -1. - <_> - 4 10 1 1 2. - <_> - 5 11 1 1 2. - 0 - -1.1004119733115658e-004 - 1.1131180077791214e-001 - -8.0598853528499603e-002 - <_> - - <_> - - - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - 3.5401768982410431e-002 - -4.6270359307527542e-003 - 3.5879731178283691e-001 - <_> - - <_> - - - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - 3.8854090962558985e-003 - 4.6248920261859894e-002 - -1.9142200052738190e-001 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -2.7548590674996376e-002 - -4.6502590179443359e-001 - 6.3705849461257458e-003 - <_> - - <_> - - - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - 0 - 1.2218310439493507e-004 - -6.8593278527259827e-002 - 1.2230750173330307e-001 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - -1.0193839989369735e-004 - 4.5737609267234802e-002 - -4.4129759073257446e-002 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 1.4042990282177925e-002 - 2.5051740929484367e-002 - -3.3193638920783997e-001 - <_> - - <_> - - - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - 0 - -9.1185698693152517e-005 - 4.5867718756198883e-002 - -4.8201519995927811e-002 - <_> - - <_> - - - - <_> - 0 2 4 4 -1. - <_> - 0 3 4 2 2. - 0 - -1.3652809895575047e-002 - -2.2167709469795227e-001 - 3.6618560552597046e-002 - <_> - - <_> - - - - <_> - 14 4 3 1 -1. - <_> - 15 4 1 1 3. - 0 - -1.3016860000789165e-002 - -6.6395550966262817e-001 - 6.4530200324952602e-003 - <_> - - <_> - - - - <_> - 1 4 3 1 -1. - <_> - 2 4 1 1 3. - 0 - -3.0348210129886866e-003 - 1.9975389540195465e-001 - -4.4125560671091080e-002 - -1.5289800167083740e+000 - 16 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - 0 - 8.8687296956777573e-003 - -3.2520338892936707e-001 - 7.5342357158660889e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - -2.8394820168614388e-002 - 5.3487628698348999e-001 - -1.6648720204830170e-001 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -3.0085170641541481e-002 - 3.2912710309028625e-001 - -2.3674790561199188e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -8.8486373424530029e-003 - 3.1169471144676208e-001 - -1.4142170548439026e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 1.4256549999117851e-002 - -1.0750769823789597e-001 - 4.5222070813179016e-001 - <_> - - <_> - - - - <_> - 5 6 10 6 -1. - <_> - 10 6 5 3 2. - <_> - 5 9 5 3 2. - 0 - -2.0950550213456154e-002 - -1.9999259710311890e-001 - 5.3246650844812393e-002 - <_> - - <_> - - - - <_> - 4 2 8 8 -1. - <_> - 4 2 4 4 2. - <_> - 8 6 4 4 2. - 0 - -6.9642797112464905e-002 - -4.6795380115509033e-001 - 5.3968351334333420e-002 - <_> - - <_> - - - - <_> - 14 2 3 4 -1. - <_> - 13 3 3 2 2. - 1 - -6.3666269183158875e-002 - -2.7843418717384338e-001 - 1.0408580303192139e-002 - <_> - - <_> - - - - <_> - 4 2 4 3 -1. - <_> - 5 3 2 3 2. - 1 - -4.7214139252901077e-002 - 2.9560580849647522e-001 - -9.3614630401134491e-002 - <_> - - <_> - - - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - 0 - 1.4078790321946144e-002 - -4.5739430934190750e-002 - 3.3025279641151428e-001 - <_> - - <_> - - - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - 0 - -1.0570909827947617e-002 - 3.6789980530738831e-001 - -5.9032700955867767e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.2845669873058796e-002 - -1.1354859918355942e-001 - 3.0396461486816406e-001 - <_> - - <_> - - - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - 0 - 8.8591687381267548e-003 - 7.5328573584556580e-002 - -3.4735369682312012e-001 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - 8.7100565433502197e-003 - -2.5546409189701080e-002 - 3.1419700384140015e-001 - <_> - - <_> - - - - <_> - 1 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -2.4336729198694229e-002 - 1.5685400366783142e-001 - -1.4091870188713074e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - 2.0705789327621460e-002 - -1.3573260605335236e-001 - 9.9381998181343079e-002 - <_> - - <_> - - - - <_> - 6 3 2 3 -1. - <_> - 6 4 2 1 3. - 0 - 6.4271190203726292e-003 - -8.6527682840824127e-002 - 2.5319969654083252e-001 - <_> - - <_> - - - - <_> - 3 5 12 2 -1. - <_> - 3 6 12 1 2. - 0 - 1.4646859839558601e-002 - -1.3291080296039581e-001 - 1.4640970528125763e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -2.0743489265441895e-002 - 1.4069710671901703e-001 - -1.3886369764804840e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -9.7419740632176399e-003 - -5.1748061180114746e-001 - 4.0649030357599258e-002 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - -6.0930829495191574e-003 - -4.0435808897018433e-001 - 4.6360980719327927e-002 - <_> - - <_> - - - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - 0 - -2.5379290804266930e-002 - 3.0655589699745178e-001 - -3.5374239087104797e-002 - <_> - - <_> - - - - <_> - 2 1 8 1 -1. - <_> - 4 3 4 1 2. - 1 - -6.1475291848182678e-002 - -3.8354039192199707e-001 - 4.7201968729496002e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.2456119991838932e-002 - 3.3344469964504242e-002 - -4.9855390191078186e-001 - <_> - - <_> - - - - <_> - 6 7 6 3 -1. - <_> - 6 8 6 1 3. - 0 - 2.1596459671854973e-002 - -7.4448928236961365e-002 - 2.3217280209064484e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.2071918249130249e-002 - -3.6879450082778931e-001 - 5.1230560988187790e-002 - <_> - - <_> - - - - <_> - 5 4 3 1 -1. - <_> - 6 5 1 1 3. - 1 - -1.7727240920066833e-002 - 2.6015728712081909e-001 - -6.7504949867725372e-002 - <_> - - <_> - - - - <_> - 10 5 4 2 -1. - <_> - 12 5 2 1 2. - <_> - 10 6 2 1 2. - 0 - -1.2539019808173180e-002 - 2.1004550158977509e-001 - -2.3079540580511093e-002 - <_> - - <_> - - - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - 1.5370660461485386e-002 - -7.7269732952117920e-002 - 2.3955790698528290e-001 - <_> - - <_> - - - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - 0 - -5.0980560481548309e-003 - -4.3999078869819641e-001 - 1.7386879771947861e-002 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -2.8011109679937363e-003 - -4.4160670042037964e-001 - 3.2729189842939377e-002 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -1.5965040074661374e-003 - -1.4084090292453766e-001 - 4.0539931505918503e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -1.9109409768134356e-003 - -2.8206449747085571e-001 - 5.5733498185873032e-002 - <_> - - <_> - - - - <_> - 12 5 6 2 -1. - <_> - 15 5 3 1 2. - <_> - 12 6 3 1 2. - 0 - 5.7939320802688599e-002 - -1.5600599581375718e-003 - -7.8283268213272095e-001 - <_> - - <_> - - - - <_> - 0 5 6 2 -1. - <_> - 0 5 3 1 2. - <_> - 3 6 3 1 2. - 0 - -7.5398529879748821e-003 - 2.0363679528236389e-001 - -7.2035230696201324e-002 - <_> - - <_> - - - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - 0 - 4.2799189686775208e-003 - 5.1637120544910431e-002 - -2.6890641450881958e-001 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - 0 - -3.8095400668680668e-003 - 3.0433818697929382e-001 - -4.3821170926094055e-002 - <_> - - <_> - - - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - 0 - 6.6761439666152000e-003 - 4.3164499104022980e-002 - -3.7114360928535461e-001 - <_> - - <_> - - - - <_> - 3 5 4 2 -1. - <_> - 3 5 2 1 2. - <_> - 5 6 2 1 2. - 0 - -7.2293779812753201e-003 - 2.7686190605163574e-001 - -5.2161470055580139e-002 - <_> - - <_> - - - - <_> - 3 1 15 4 -1. - <_> - 3 2 15 2 2. - 0 - 4.3478921055793762e-002 - -7.0697076618671417e-002 - 1.4227619767189026e-001 - <_> - - <_> - - - - <_> - 7 1 4 3 -1. - <_> - 8 1 2 3 2. - 0 - 8.6060278117656708e-003 - 3.9228759706020355e-002 - -3.4136408567428589e-001 - <_> - - <_> - - - - <_> - 7 0 6 3 -1. - <_> - 7 1 6 1 3. - 0 - 1.6463410109281540e-002 - -7.1609079837799072e-002 - 1.5261730551719666e-001 - <_> - - <_> - - - - <_> - 0 0 13 3 -1. - <_> - 0 1 13 1 3. - 0 - -2.6798190549015999e-002 - 2.5057008862495422e-001 - -6.0030229389667511e-002 - <_> - - <_> - - - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - 0 - -1.3578269630670547e-002 - -5.7186329364776611e-001 - 2.3683719336986542e-002 - <_> - - <_> - - - - <_> - 3 2 3 2 -1. - <_> - 3 3 3 1 2. - 0 - -5.4585109464824200e-003 - 1.3189469277858734e-001 - -1.0400889813899994e-001 - <_> - - <_> - - - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - 0 - -1.0323669994249940e-004 - 8.6108498275279999e-002 - -7.8769676387310028e-002 - <_> - - <_> - - - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - 0 - -4.0363529697060585e-003 - -4.4107070565223694e-001 - 3.1886640936136246e-002 - <_> - - <_> - - - - <_> - 6 5 12 3 -1. - <_> - 9 5 6 3 2. - 0 - -2.5648690760135651e-002 - 7.3849938809871674e-002 - -9.3154169619083405e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -6.7097870633006096e-003 - 1.6499599814414978e-001 - -7.4880279600620270e-002 - <_> - - <_> - - - - <_> - 16 6 2 6 -1. - <_> - 16 6 1 6 2. - 0 - -9.9235828965902328e-003 - 1.8079340457916260e-001 - -6.5171472728252411e-002 - <_> - - <_> - - - - <_> - 4 10 3 2 -1. - <_> - 5 10 1 2 3. - 0 - -6.9562699645757675e-003 - -5.2876442670822144e-001 - 2.5368360802531242e-002 - <_> - - <_> - - - - <_> - 16 7 2 4 -1. - <_> - 16 7 1 4 2. - 0 - 8.2617141306400299e-003 - -5.0331529229879379e-002 - 2.9480621218681335e-001 - <_> - - <_> - - - - <_> - 0 6 2 6 -1. - <_> - 1 6 1 6 2. - 0 - 3.3671088516712189e-002 - -1.6121190041303635e-002 - 6.7309892177581787e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 6.3832988962531090e-003 - 2.5124080479145050e-002 - -4.9571260809898376e-001 - <_> - - <_> - - - - <_> - 4 3 6 3 -1. - <_> - 4 3 3 3 2. - 1 - 1.1697970330715179e-002 - 4.3101280927658081e-002 - -2.4264599382877350e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 16 1 1 2 2. - 1 - -1.2845739722251892e-002 - -3.6139601469039917e-001 - 4.5609131455421448e-002 - <_> - - <_> - - - - <_> - 2 1 2 2 -1. - <_> - 2 1 2 1 2. - 1 - 1.3638010248541832e-002 - 3.0973179265856743e-002 - -3.6637219786643982e-001 - <_> - - <_> - - - - <_> - 4 0 10 1 -1. - <_> - 4 0 5 1 2. - 0 - 8.9795887470245361e-003 - -1.0917530208826065e-001 - 1.0718029737472534e-001 - <_> - - <_> - - - - <_> - 1 0 16 4 -1. - <_> - 1 1 16 2 2. - 0 - -7.2535842657089233e-002 - 3.0982971191406250e-001 - -3.4692220389842987e-002 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.1674970388412476e-002 - 3.3513750880956650e-002 - -2.6671060919761658e-001 - <_> - - <_> - - - - <_> - 3 0 7 2 -1. - <_> - 3 1 7 1 2. - 0 - 1.4128520153462887e-002 - -7.4317902326583862e-002 - 1.9508810341358185e-001 - <_> - - <_> - - - - <_> - 9 9 6 3 -1. - <_> - 11 9 2 3 3. - 0 - -3.2944388687610626e-002 - -3.3596301078796387e-001 - 1.2414090335369110e-002 - <_> - - <_> - - - - <_> - 3 9 6 3 -1. - <_> - 5 9 2 3 3. - 0 - 1.3753149658441544e-002 - 4.0032509714365005e-002 - -2.6519769430160522e-001 - <_> - - <_> - - - - <_> - 13 3 4 3 -1. - <_> - 12 4 4 1 3. - 1 - -3.3233430236577988e-002 - 1.6016100347042084e-001 - -2.2260909900069237e-002 - <_> - - <_> - - - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - 6.1078928411006927e-003 - -4.8795029520988464e-002 - 2.0597800612449646e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.0937879793345928e-002 - -2.0160789787769318e-001 - 4.1750270873308182e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -1.0795599780976772e-002 - -2.4597220122814178e-001 - 4.4583730399608612e-002 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - -1.4712370000779629e-002 - 8.2067541778087616e-002 - -4.7636579722166061e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - -3.1026970595121384e-002 - 3.1423869729042053e-001 - -3.3792741596698761e-002 - <_> - - <_> - - - - <_> - 0 4 18 3 -1. - <_> - 6 4 6 3 3. - 0 - -7.8690350055694580e-002 - 5.8236971497535706e-002 - -2.0244419574737549e-001 - <_> - - <_> - - - - <_> - 0 0 12 12 -1. - <_> - 6 0 6 12 2. - 0 - 1.0032179951667786e-001 - -4.5807100832462311e-002 - 2.7768740057945251e-001 - <_> - - <_> - - - - <_> - 9 5 4 2 -1. - <_> - 11 5 2 1 2. - <_> - 9 6 2 1 2. - 0 - -4.2365980334579945e-005 - 5.0709828734397888e-002 - -7.6038338243961334e-002 - <_> - - <_> - - - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - 0 - -5.2146702073514462e-003 - 2.2490769624710083e-001 - -4.9134440720081329e-002 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -1.0706060129450634e-004 - 6.7870803177356720e-002 - -8.7166316807270050e-002 - <_> - - <_> - - - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - 0 - -3.8535310886800289e-003 - 2.6514551043510437e-001 - -3.8151159882545471e-002 - <_> - - <_> - - - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - 0 - -6.6675869747996330e-003 - -1.8696850538253784e-001 - 3.4325890243053436e-002 - <_> - - <_> - - - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 1 9. - 0 - -7.2776339948177338e-003 - 9.9364303052425385e-002 - -9.7539342939853668e-002 - <_> - - <_> - - - - <_> - 6 5 6 7 -1. - <_> - 6 5 3 7 2. - 0 - 8.5002653300762177e-002 - -4.4809039682149887e-002 - 2.5511339306831360e-001 - <_> - - <_> - - - - <_> - 1 7 12 2 -1. - <_> - 4 7 6 2 2. - 0 - 2.2640319541096687e-002 - 3.7417881190776825e-002 - -2.6542389392852783e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -1.4759110286831856e-002 - -1.4441870152950287e-001 - 2.6218270882964134e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -6.9840638898313046e-003 - 1.9986990094184875e-001 - -5.5323310196399689e-002 - <_> - - <_> - - - - <_> - 11 3 3 5 -1. - <_> - 12 3 1 5 3. - 0 - -1.2002780102193356e-002 - 2.7846589684486389e-001 - -3.5339098423719406e-002 - <_> - - <_> - - - - <_> - 0 4 12 8 -1. - <_> - 4 4 4 8 3. - 0 - -1.9566120207309723e-001 - -3.2644128799438477e-001 - 3.1533479690551758e-002 - <_> - - <_> - - - - <_> - 11 2 3 6 -1. - <_> - 12 2 1 6 3. - 0 - 2.8940979391336441e-002 - -2.4071710184216499e-002 - 2.0041519403457642e-001 - <_> - - <_> - - - - <_> - 4 2 3 6 -1. - <_> - 5 2 1 6 3. - 0 - -4.9572459829505533e-005 - 1.0405100136995316e-001 - -1.0776259750127792e-001 - <_> - - <_> - - - - <_> - 13 4 4 1 -1. - <_> - 14 5 2 1 2. - 1 - -3.3607240766286850e-003 - 9.9615901708602905e-002 - -8.3951607346534729e-002 - <_> - - <_> - - - - <_> - 6 10 3 1 -1. - <_> - 7 10 1 1 3. - 0 - -9.8188247648067772e-005 - 1.0282000154256821e-001 - -9.2874817550182343e-002 - <_> - - <_> - - - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - 0 - -1.1810559779405594e-002 - -2.9324960708618164e-001 - 3.6554131656885147e-002 - <_> - - <_> - - - - <_> - 8 2 2 3 -1. - <_> - 8 3 2 1 3. - 0 - -6.8092541769146919e-003 - 1.9611120223999023e-001 - -5.6822441518306732e-002 - <_> - - <_> - - - - <_> - 13 4 4 1 -1. - <_> - 14 5 2 1 2. - 1 - 3.2623611390590668e-002 - -9.4473883509635925e-003 - 5.0844651460647583e-001 - <_> - - <_> - - - - <_> - 5 4 1 4 -1. - <_> - 4 5 1 2 2. - 1 - -4.2930259369313717e-003 - 9.2036433517932892e-002 - -1.1842270195484161e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 3 18 6 2. - 0 - -8.6469340324401855e-001 - -3.9508619904518127e-001 - 2.5425970554351807e-002 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - 1.0441480204463005e-002 - 2.7400210499763489e-002 - -3.3969599008560181e-001 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - 2.1257670596241951e-002 - 1.0770229622721672e-002 - -5.4437619447708130e-001 - <_> - - <_> - - - - <_> - 3 0 2 1 -1. - <_> - 4 0 1 1 2. - 0 - 8.5998326539993286e-005 - -8.6119651794433594e-002 - 1.0474950075149536e-001 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 1 2 1 2. - 0 - -1.1877079668920487e-004 - 1.3329850137233734e-001 - -2.2571019828319550e-001 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -1.2582539580762386e-002 - 1.0203540325164795e-001 - -9.2602252960205078e-002 - <_> - - <_> - - - - <_> - 8 5 2 1 -1. - <_> - 8 5 1 1 2. - 0 - 8.5820167441852391e-005 - -1.1563900113105774e-001 - 8.9998990297317505e-002 - <_> - - <_> - - - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - 0 - 9.5666181296110153e-003 - 3.7725161761045456e-002 - -2.4878449738025665e-001 - <_> - - <_> - - - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - 0 - -5.7672890834510326e-003 - -5.6385320425033569e-001 - 1.1175219900906086e-002 - <_> - - <_> - - - - <_> - 1 0 6 10 -1. - <_> - 3 0 2 10 3. - 0 - -3.7847689818590879e-003 - 6.8087071180343628e-002 - -1.2581770122051239e-001 - <_> - - <_> - - - - <_> - 12 3 6 9 -1. - <_> - 14 6 2 3 9. - 0 - -2.5486249476671219e-002 - 5.7677350938320160e-002 - -9.9549897015094757e-002 - <_> - - <_> - - - - <_> - 0 3 6 9 -1. - <_> - 2 6 2 3 9. - 0 - 7.5713947415351868e-002 - -3.6518439650535583e-002 - 2.8699418902397156e-001 - <_> - - <_> - - - - <_> - 14 1 2 4 -1. - <_> - 13 2 2 2 2. - 1 - -9.0637598186731339e-003 - -7.7375017106533051e-002 - 4.0799569338560104e-002 - <_> - - <_> - - - - <_> - 0 4 14 4 -1. - <_> - 0 4 7 2 2. - <_> - 7 6 7 2 2. - 0 - 1.0294229723513126e-002 - -1.1247719824314117e-001 - 8.7451197206974030e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - -6.5298741683363914e-003 - 7.0183053612709045e-002 - -8.9181199669837952e-002 - <_> - - <_> - - - - <_> - 0 1 8 10 -1. - <_> - 2 1 4 10 2. - 0 - -9.5547690987586975e-002 - -2.7765339612960815e-001 - 3.4830510616302490e-002 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - -1.1343659833073616e-002 - -3.5542330145835876e-001 - 2.3554539307951927e-002 - <_> - - <_> - - - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - 0 - -1.0126819688593969e-004 - 9.1516196727752686e-002 - -9.3038432300090790e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.8029360100626945e-002 - 1.9349269568920135e-001 - -2.5129379704594612e-002 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - -1.7232729122042656e-002 - 2.7890768647193909e-001 - -3.8710448890924454e-002 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - 0 - -1.1195029946975410e-004 - 5.0033789128065109e-002 - -8.3999648690223694e-002 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - 5.9721581637859344e-003 - 3.3347249031066895e-002 - -2.6903629302978516e-001 - <_> - - <_> - - - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - 0 - -2.3551829508505762e-004 - 6.8747326731681824e-002 - -9.7762331366539001e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - 0 - 4.1608728468418121e-002 - -4.2120318859815598e-002 - 2.1496939659118652e-001 - <_> - - <_> - - - - <_> - 8 10 3 1 -1. - <_> - 9 10 1 1 3. - 0 - -3.4065970685333014e-003 - -2.2874389588832855e-001 - 1.5017420053482056e-002 - <_> - - <_> - - - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - -1.0731370275607333e-004 - 8.7367862462997437e-002 - -9.8653607070446014e-002 - <_> - - <_> - - - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - 0 - -4.6097549784462899e-005 - 9.9156707525253296e-002 - -7.0301808416843414e-002 - <_> - - <_> - - - - <_> - 7 10 2 1 -1. - <_> - 8 10 1 1 2. - 0 - 9.1741916548926383e-005 - -7.4249409139156342e-002 - 1.2826450169086456e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 0 - 1.1397949856473133e-004 - -9.6481591463088989e-002 - 9.6139311790466309e-002 - <_> - - <_> - - - - <_> - 3 8 10 4 -1. - <_> - 3 8 5 2 2. - <_> - 8 10 5 2 2. - 0 - 5.6666661053895950e-002 - 1.8062859773635864e-002 - -5.1227068901062012e-001 - <_> - - <_> - - - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 3 3. - 1 - -1.8091689795255661e-002 - 1.6024060547351837e-001 - -1.6382170841097832e-002 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - 4.2913880199193954e-002 - -1.9014870747923851e-002 - 4.5053559541702271e-001 - <_> - - <_> - - - - <_> - 8 9 6 2 -1. - <_> - 10 9 2 2 3. - 0 - -1.5276740305125713e-002 - -2.7582061290740967e-001 - 2.9354600235819817e-002 - <_> - - <_> - - - - <_> - 6 9 6 1 -1. - <_> - 8 9 2 1 3. - 0 - -9.3131810426712036e-003 - -2.5190541148185730e-001 - 3.3755309879779816e-002 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 5 4 2 2. - 0 - 3.0541479587554932e-002 - -3.3350829035043716e-002 - 1.2646000087261200e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 6 4 6 8 3. - 0 - -1.9827249646186829e-001 - 7.0513941347599030e-002 - -1.3399259746074677e-001 - <_> - - <_> - - - - <_> - 12 5 6 5 -1. - <_> - 14 5 2 5 3. - 0 - -2.1315490826964378e-002 - 1.2407120317220688e-001 - -9.3437470495700836e-002 - <_> - - <_> - - - - <_> - 5 5 4 2 -1. - <_> - 5 5 2 1 2. - <_> - 7 6 2 1 2. - 0 - -5.5536180734634399e-003 - 1.6640309989452362e-001 - -5.1540210843086243e-002 - <_> - - <_> - - - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - 0 - 2.9454020783305168e-002 - -4.1273329406976700e-002 - 2.5026160478591919e-001 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - 0 - 1.0502000077394769e-004 - -1.0847820341587067e-001 - 8.3983741700649261e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 17 8 1 1 2. - <_> - 16 9 1 1 2. - 0 - -1.0733069939306006e-004 - 8.3531558513641357e-002 - -5.6373700499534607e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - 0 - -4.6264020056696609e-005 - 1.3745079934597015e-001 - -6.8600043654441833e-002 - <_> - - <_> - - - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - -1.5310499817132950e-002 - -1.9469089806079865e-001 - 2.8970900923013687e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - -3.3486049622297287e-002 - -6.2618911266326904e-001 - 1.2297869659960270e-002 - <_> - - <_> - - - - <_> - 6 6 10 6 -1. - <_> - 11 6 5 3 2. - <_> - 6 9 5 3 2. - 0 - -1.1582080274820328e-001 - -4.2694661021232605e-001 - 1.9071470014750957e-003 - <_> - - <_> - - - - <_> - 4 3 4 4 -1. - <_> - 4 5 4 2 2. - 0 - 3.2180320471525192e-002 - -3.6031588912010193e-002 - 2.1900460124015808e-001 - <_> - - <_> - - - - <_> - 12 3 2 2 -1. - <_> - 12 3 1 2 2. - 1 - 9.9619124084711075e-003 - -2.2418439388275146e-002 - 8.1508889794349670e-002 - <_> - - <_> - - - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - -2.3083880543708801e-002 - -4.9076971411705017e-001 - 1.7307329922914505e-002 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.1683529737638310e-004 - 1.0331380367279053e-001 - -2.0561179518699646e-001 - <_> - - <_> - - - - <_> - 1 0 16 2 -1. - <_> - 1 0 8 1 2. - <_> - 9 1 8 1 2. - 0 - 7.8267622739076614e-003 - -6.6107340157032013e-002 - 1.5025080740451813e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -6.3460809178650379e-003 - -3.0913439393043518e-001 - 1.4155699871480465e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - 2.0096169319003820e-003 - -4.6867091208696365e-002 - 2.0841519534587860e-001 - <_> - - <_> - - - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - 1 - -3.3369109034538269e-002 - 4.1900089383125305e-001 - -3.8494879845529795e-003 - <_> - - <_> - - - - <_> - 6 4 1 2 -1. - <_> - 6 4 1 1 2. - 1 - -2.6893829926848412e-003 - -1.3875140249729156e-001 - 6.3448376953601837e-002 - -1.5681409835815430e+000 - 17 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 3.3631179481744766e-002 - -2.7505779266357422e-001 - 7.1009528636932373e-001 - <_> - - <_> - - - - <_> - 8 1 9 9 -1. - <_> - 8 4 9 3 3. - 0 - -1.2867219746112823e-001 - 1.1402829736471176e-001 - -2.5071978569030762e-001 - <_> - - <_> - - - - <_> - 5 1 9 1 -1. - <_> - 8 4 3 1 3. - 1 - 1.8553440272808075e-001 - -7.1051809936761856e-004 - -2.0411979980468750e+003 - <_> - - <_> - - - - <_> - 8 5 4 2 -1. - <_> - 10 5 2 1 2. - <_> - 8 6 2 1 2. - 0 - -1.0022269561886787e-002 - 3.6850100755691528e-001 - -1.1276180297136307e-001 - <_> - - <_> - - - - <_> - 5 2 4 4 -1. - <_> - 6 3 2 4 2. - 1 - -4.8808779567480087e-002 - 3.3759531378746033e-001 - -2.0759710669517517e-001 - <_> - - <_> - - - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - 2.6742409914731979e-002 - -1.8537110090255737e-001 - 2.4919350445270538e-001 - <_> - - <_> - - - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - -1.0245149955153465e-002 - 2.5566178560256958e-001 - -1.6401439905166626e-001 - <_> - - <_> - - - - <_> - 15 2 3 10 -1. - <_> - 15 7 3 5 2. - 0 - 2.8364270925521851e-002 - -1.3210600614547729e-001 - 1.0085999965667725e-001 - <_> - - <_> - - - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - -1.9492400810122490e-002 - 1.1866439878940582e-001 - -2.2919100522994995e-001 - <_> - - <_> - - - - <_> - 16 2 2 10 -1. - <_> - 16 7 2 5 2. - 0 - 6.5401881933212280e-002 - 3.9086669683456421e-002 - -4.4828139245510101e-002 - <_> - - <_> - - - - <_> - 0 2 2 10 -1. - <_> - 0 7 2 5 2. - 0 - 9.7863655537366867e-003 - -2.8531849384307861e-001 - 9.7677417099475861e-002 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 5 0 8 9 2. - 0 - -5.3927909582853317e-002 - 9.3449726700782776e-002 - -2.7780878543853760e-001 - <_> - - <_> - - - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - -4.8246569931507111e-003 - 2.2555319964885712e-001 - -1.0125789791345596e-001 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 1.5018019825220108e-002 - -8.2751229405403137e-002 - 2.6553609967231750e-001 - <_> - - <_> - - - - <_> - 2 4 6 2 -1. - <_> - 2 4 3 1 2. - <_> - 5 5 3 1 2. - 0 - -9.9249351769685745e-003 - 2.6004979014396667e-001 - -9.1353721916675568e-002 - <_> - - <_> - - - - <_> - 16 4 2 6 -1. - <_> - 16 4 1 6 2. - 0 - -6.5024420619010925e-003 - 9.9367111921310425e-002 - -7.1672402322292328e-002 - <_> - - <_> - - - - <_> - 0 4 2 6 -1. - <_> - 1 4 1 6 2. - 0 - -3.4381379373371601e-003 - 1.2497270107269287e-001 - -1.8109659850597382e-001 - <_> - - <_> - - - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - 0 - -6.3433339819312096e-003 - 3.7100249528884888e-001 - -5.0013199448585510e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 2.4360060691833496e-002 - -3.6683601140975952e-001 - 5.0595879554748535e-002 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - 8.0591458827257156e-003 - 3.8355801254510880e-002 - -3.9722838997840881e-001 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -4.4672801159322262e-003 - 2.8062960505485535e-001 - -5.8162041008472443e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - 3.4330900758504868e-002 - -3.9409149438142776e-002 - 2.3248769342899323e-001 - <_> - - <_> - - - - <_> - 7 5 2 3 -1. - <_> - 6 6 2 1 3. - 1 - 3.3590178936719894e-002 - 5.8214940130710602e-002 - -3.7649789452552795e-001 - <_> - - <_> - - - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - -4.8359300941228867e-002 - -3.1998670101165771e-001 - 3.7257380783557892e-002 - <_> - - <_> - - - - <_> - 9 4 2 3 -1. - <_> - 8 5 2 1 3. - 1 - -1.6094490885734558e-002 - 1.6750979423522949e-001 - -1.1763060092926025e-001 - <_> - - <_> - - - - <_> - 15 8 3 3 -1. - <_> - 15 9 3 1 3. - 0 - 1.2275910004973412e-002 - 1.5325929969549179e-002 - -2.7663159370422363e-001 - <_> - - <_> - - - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - 0 - 9.4588464125990868e-003 - 4.2470309883356094e-002 - -3.5148349404335022e-001 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - 5.2011879161000252e-003 - -4.8598669469356537e-002 - 2.2258450090885162e-001 - <_> - - <_> - - - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - 0 - -3.6433428525924683e-002 - -4.5761460065841675e-001 - 2.9529940336942673e-002 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - 0 - -3.7194520700722933e-003 - 2.8547590970993042e-001 - -3.9135500788688660e-002 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - -2.4795390199869871e-003 - 2.2883270680904388e-001 - -6.0576260089874268e-002 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - -5.4941270500421524e-003 - -3.0932080745697021e-001 - 2.9831670224666595e-002 - <_> - - <_> - - - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - 0 - 4.2734388262033463e-003 - -5.9098191559314728e-002 - 2.2960080206394196e-001 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - 2.8899749740958214e-003 - 3.2622959464788437e-002 - -2.0528559386730194e-001 - <_> - - <_> - - - - <_> - 1 3 10 2 -1. - <_> - 1 3 5 1 2. - <_> - 6 4 5 1 2. - 0 - -2.1825909614562988e-002 - 1.9279049336910248e-001 - -7.3136076331138611e-002 - <_> - - <_> - - - - <_> - 9 3 3 2 -1. - <_> - 9 4 3 1 2. - 0 - 1.3574689626693726e-002 - -1.6170579940080643e-002 - 2.6534038782119751e-001 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 4.0199640206992626e-003 - 3.2929629087448120e-002 - -4.1653159260749817e-001 - <_> - - <_> - - - - <_> - 15 0 3 4 -1. - <_> - 16 1 1 4 3. - 1 - -3.7281829863786697e-002 - -2.7529978752136230e-001 - 2.0595779642462730e-002 - <_> - - <_> - - - - <_> - 0 1 16 1 -1. - <_> - 4 1 8 1 2. - 0 - 2.8378039598464966e-002 - -5.6658681482076645e-002 - 2.2680400311946869e-001 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - 0 - -1.8549919128417969e-002 - 2.8250589966773987e-001 - -5.3727861493825912e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 0 2 3 2. - 0 - 8.8881962001323700e-003 - 4.3956100940704346e-002 - -3.6961129307746887e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -6.3639208674430847e-003 - -3.8934838771820068e-001 - 1.6238860785961151e-002 - <_> - - <_> - - - - <_> - 3 4 8 6 -1. - <_> - 5 4 4 6 2. - 0 - -2.3416770622134209e-002 - -1.8020549416542053e-001 - 6.5479606389999390e-002 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -2.0741058979183435e-003 - 1.5390050411224365e-001 - -8.0369636416435242e-002 - <_> - - <_> - - - - <_> - 2 4 12 8 -1. - <_> - 5 4 6 8 2. - 0 - -3.9896711707115173e-002 - 8.4819942712783813e-002 - -1.8152259290218353e-001 - <_> - - <_> - - - - <_> - 4 2 14 9 -1. - <_> - 4 2 7 9 2. - 0 - -5.8487498760223389e-001 - -5.4407620429992676e-001 - -2.0537020172923803e-003 - <_> - - <_> - - - - <_> - 2 3 12 9 -1. - <_> - 8 3 6 9 2. - 0 - 1.8590870499610901e-001 - -3.4733101725578308e-002 - 3.7966889142990112e-001 - <_> - - <_> - - - - <_> - 3 1 12 3 -1. - <_> - 3 1 6 3 2. - 0 - 4.4944491237401962e-002 - -1.0628589987754822e-001 - 1.2806500494480133e-001 - <_> - - <_> - - - - <_> - 6 2 3 3 -1. - <_> - 6 3 3 1 3. - 0 - -2.2796489298343658e-002 - 3.6542838811874390e-001 - -4.0509790182113647e-002 - <_> - - <_> - - - - <_> - 8 1 6 2 -1. - <_> - 10 1 2 2 3. - 0 - -2.6358839124441147e-002 - -5.2112942934036255e-001 - 3.0187880620360374e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3396210744976997e-003 - 1.8814109265804291e-001 - -7.4049197137355804e-002 - <_> - - <_> - - - - <_> - 15 8 1 4 -1. - <_> - 15 9 1 2 2. - 0 - -1.2243230594322085e-004 - 5.7484649121761322e-002 - -3.9915520697832108e-002 - <_> - - <_> - - - - <_> - 2 8 1 4 -1. - <_> - 2 9 1 2 2. - 0 - 1.1718519817804918e-004 - -1.4954920113086700e-001 - 8.1642888486385345e-002 - <_> - - <_> - - - - <_> - 15 10 1 2 -1. - <_> - 15 11 1 1 2. - 0 - 4.4519607909023762e-003 - 1.6601830720901489e-002 - -1.5385159850120544e-001 - <_> - - <_> - - - - <_> - 2 10 1 2 -1. - <_> - 2 11 1 1 2. - 0 - 1.0932450095424429e-004 - -1.7002880573272705e-001 - 8.5956446826457977e-002 - <_> - - <_> - - - - <_> - 6 2 6 6 -1. - <_> - 8 4 2 2 9. - 0 - -8.5179023444652557e-002 - 8.5408963263034821e-002 - -1.3447010517120361e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - 0 - -5.0164520740509033e-002 - 1.8779170513153076e-001 - -6.7191623151302338e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -3.1386420130729675e-002 - -6.1028450727462769e-001 - 1.9187970086932182e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 1.9179229857400060e-003 - -5.8911509811878204e-002 - 2.1525830030441284e-001 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - 2.4344459176063538e-002 - 1.1284279637038708e-002 - -3.6955431103706360e-001 - <_> - - <_> - - - - <_> - 6 9 5 2 -1. - <_> - 6 10 5 1 2. - 0 - -7.3110237717628479e-003 - 3.1973779201507568e-001 - -3.3365249633789063e-002 - <_> - - <_> - - - - <_> - 9 10 6 2 -1. - <_> - 11 10 2 2 3. - 0 - -2.2101389244198799e-002 - -2.7678531408309937e-001 - 1.2874299660325050e-002 - <_> - - <_> - - - - <_> - 3 10 6 2 -1. - <_> - 5 10 2 2 3. - 0 - -2.0385779440402985e-002 - -5.1266109943389893e-001 - 2.0121119916439056e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -1.1750890314579010e-001 - -1.9588080048561096e-001 - 2.0088920369744301e-002 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - -1.2457219883799553e-002 - -3.6020371317863464e-001 - 2.8396470472216606e-002 - <_> - - <_> - - - - <_> - 9 1 2 3 -1. - <_> - 9 2 2 1 3. - 0 - -6.5784770995378494e-003 - 1.8908539414405823e-001 - -4.3369468301534653e-002 - <_> - - <_> - - - - <_> - 0 2 18 4 -1. - <_> - 0 2 9 2 2. - <_> - 9 4 9 2 2. - 0 - 1.3688610494136810e-001 - 1.9999820739030838e-002 - -5.4874652624130249e-001 - <_> - - <_> - - - - <_> - 15 3 3 4 -1. - <_> - 15 4 3 2 2. - 0 - -2.8810320422053337e-002 - -5.5651491880416870e-001 - 1.0983499698340893e-002 - <_> - - <_> - - - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - 0 - 1.5747509896755219e-002 - 2.4598199874162674e-002 - -4.0236338973045349e-001 - <_> - - <_> - - - - <_> - 10 4 2 2 -1. - <_> - 11 4 1 1 2. - <_> - 10 5 1 1 2. - 0 - -7.6313503086566925e-005 - 5.5196251720190048e-002 - -8.7640739977359772e-002 - <_> - - <_> - - - - <_> - 4 4 3 4 -1. - <_> - 5 4 1 4 3. - 0 - -5.6491168215870857e-003 - 1.4749449491500854e-001 - -6.3069596886634827e-002 - <_> - - <_> - - - - <_> - 16 1 1 9 -1. - <_> - 13 4 1 3 3. - 1 - -1.7864599823951721e-001 - -7.5675052404403687e-001 - 3.4561890643090010e-003 - <_> - - <_> - - - - <_> - 2 1 9 1 -1. - <_> - 5 4 3 1 3. - 1 - -1.1177310347557068e-001 - -3.3842530846595764e-001 - 2.9908629134297371e-002 - <_> - - <_> - - - - <_> - 12 1 6 4 -1. - <_> - 15 1 3 2 2. - <_> - 12 3 3 2 2. - 0 - 1.7611680552363396e-002 - -2.5893269106745720e-002 - 1.0236769914627075e-001 - <_> - - <_> - - - - <_> - 1 0 14 4 -1. - <_> - 1 1 14 2 2. - 0 - 2.5229709222912788e-002 - -1.0067760199308395e-001 - 1.1171419918537140e-001 - <_> - - <_> - - - - <_> - 12 0 4 9 -1. - <_> - 13 0 2 9 2. - 0 - -7.2196209803223610e-003 - 1.3222789764404297e-001 - -1.1153940111398697e-001 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -7.0246332325041294e-003 - -6.2780529260635376e-001 - 1.3513820245862007e-002 - <_> - - <_> - - - - <_> - 3 4 12 4 -1. - <_> - 6 4 6 4 2. - 0 - 5.8054771274328232e-002 - 1.9251599907875061e-002 - -4.7624149918556213e-001 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.0157009586691856e-002 - 1.8371550738811493e-001 - -5.8640699833631516e-002 - <_> - - <_> - - - - <_> - 12 0 4 9 -1. - <_> - 13 0 2 9 2. - 0 - -4.5374549925327301e-002 - -4.7950971126556396e-001 - 1.7445040866732597e-002 - <_> - - <_> - - - - <_> - 2 0 4 9 -1. - <_> - 3 0 2 9 2. - 0 - -1.0695769742596895e-004 - 6.9972157478332520e-002 - -1.4726209640502930e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -8.7402779608964920e-003 - -1.8943889439105988e-001 - 4.4850360602140427e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 1.4455690048635006e-002 - 2.9286550357937813e-002 - -3.3406850695610046e-001 - <_> - - <_> - - - - <_> - 10 3 4 5 -1. - <_> - 11 3 2 5 2. - 0 - -1.1007389985024929e-002 - 1.6767920553684235e-001 - -4.5263808220624924e-002 - <_> - - <_> - - - - <_> - 3 10 3 2 -1. - <_> - 4 10 1 2 3. - 0 - -8.1059811636805534e-003 - -5.3664588928222656e-001 - 1.8926989287137985e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - 0 - 9.3566756695508957e-003 - -5.6550279259681702e-002 - 1.6391740739345551e-001 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -1.1989709921181202e-002 - 9.8681986331939697e-002 - -9.3427039682865143e-002 - <_> - - <_> - - - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - -1.8332680687308311e-002 - 1.5537080168724060e-001 - -4.7529440373182297e-002 - <_> - - <_> - - - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - 2.2228980436921120e-002 - -5.3477160632610321e-002 - 1.7177890241146088e-001 - <_> - - <_> - - - - <_> - 8 2 2 2 -1. - <_> - 9 2 1 1 2. - <_> - 8 3 1 1 2. - 0 - 9.7822019597515464e-005 - -8.8446229696273804e-002 - 1.0630639642477036e-001 - <_> - - <_> - - - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - 0 - 9.5454830443486571e-005 - -8.7844558060169220e-002 - 1.0228630155324936e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - 8.2959644496440887e-003 - 7.7602830715477467e-003 - -5.8247411251068115e-001 - <_> - - <_> - - - - <_> - 1 8 2 1 -1. - <_> - 1 8 1 1 2. - 1 - -8.2757556810975075e-005 - 6.4984649419784546e-002 - -1.3101190328598022e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 1.9920749962329865e-001 - 1.6709130257368088e-002 - -3.1872358918190002e-001 - <_> - - <_> - - - - <_> - 2 6 4 4 -1. - <_> - 2 6 2 2 2. - <_> - 4 8 2 2 2. - 0 - 1.3613670133054256e-002 - -6.2816083431243896e-002 - 1.7845809459686279e-001 - <_> - - <_> - - - - <_> - 13 0 4 10 -1. - <_> - 14 0 2 10 2. - 0 - -3.4157780464738607e-003 - 6.6462337970733643e-002 - -8.9528001844882965e-002 - <_> - - <_> - - - - <_> - 1 0 4 10 -1. - <_> - 2 0 2 10 2. - 0 - 8.7696220725774765e-003 - 5.9173680841922760e-002 - -1.9932749867439270e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -3.2113050110638142e-003 - 8.9376598596572876e-002 - -8.6342461407184601e-002 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - 0 - -6.0520251281559467e-003 - 1.8127410113811493e-001 - -4.9871731549501419e-002 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - -2.3850060533732176e-003 - 1.0447499901056290e-001 - -3.4482009708881378e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -2.1687719970941544e-002 - -4.5468750596046448e-001 - 2.1641310304403305e-002 - <_> - - <_> - - - - <_> - 10 7 3 1 -1. - <_> - 11 7 1 1 3. - 0 - 9.2866670456714928e-005 - -5.9006929397583008e-002 - 5.5168408900499344e-002 - <_> - - <_> - - - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - 0 - -1.4913419727236032e-003 - 1.6070629656314850e-001 - -5.8827608823776245e-002 - <_> - - <_> - - - - <_> - 10 10 8 2 -1. - <_> - 14 10 4 1 2. - <_> - 10 11 4 1 2. - 0 - 3.9107990451157093e-003 - -5.9656649827957153e-002 - 9.3852207064628601e-002 - <_> - - <_> - - - - <_> - 2 6 2 6 -1. - <_> - 2 8 2 2 3. - 0 - 3.5528650041669607e-003 - -1.0640110075473785e-001 - 9.0040393173694611e-002 - <_> - - <_> - - - - <_> - 13 9 3 2 -1. - <_> - 13 10 3 1 2. - 0 - 1.2945669703185558e-002 - 1.9677519798278809e-002 - -1.7321330308914185e-001 - <_> - - <_> - - - - <_> - 2 9 3 2 -1. - <_> - 2 10 3 1 2. - 0 - 8.4259969298727810e-005 - -2.3065930604934692e-001 - 5.5004071444272995e-002 - <_> - - <_> - - - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - -1.6149960458278656e-002 - 3.1157720834016800e-002 - -9.7619056701660156e-002 - <_> - - <_> - - - - <_> - 4 4 6 2 -1. - <_> - 4 4 3 2 2. - 1 - -1.3370880484580994e-001 - -4.6099790930747986e-001 - 2.0583210512995720e-002 - <_> - - <_> - - - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 0 - -8.7964879348874092e-003 - 3.0732661485671997e-001 - -2.7057770639657974e-002 - <_> - - <_> - - - - <_> - 0 10 10 1 -1. - <_> - 5 10 5 1 2. - 0 - 5.8513940311968327e-003 - -5.1156919449567795e-002 - 1.6160629689693451e-001 - <_> - - <_> - - - - <_> - 4 3 12 9 -1. - <_> - 4 3 6 9 2. - 0 - 9.2029757797718048e-002 - -4.0357459336519241e-002 - 1.0516119748353958e-001 - <_> - - <_> - - - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - 0 - 1.0794289846671745e-004 - -9.3203842639923096e-002 - 9.3569189310073853e-002 - <_> - - <_> - - - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - -9.2651713639497757e-003 - -3.9545240998268127e-001 - 2.5677639991044998e-002 - <_> - - <_> - - - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - -1.4052440412342548e-002 - -5.9753012657165527e-001 - 1.5152829699218273e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -8.1634595990180969e-003 - 9.5714226365089417e-002 - -9.5124170184135437e-002 - <_> - - <_> - - - - <_> - 7 3 1 6 -1. - <_> - 7 3 1 3 2. - 1 - -7.2123326361179352e-002 - 3.2383221387863159e-001 - -2.8505349531769753e-002 - <_> - - <_> - - - - <_> - 15 2 2 4 -1. - <_> - 14 3 2 2 2. - 1 - -1.4225790277123451e-002 - 7.5030997395515442e-002 - -4.6096429228782654e-002 - <_> - - <_> - - - - <_> - 3 2 4 2 -1. - <_> - 4 3 2 2 2. - 1 - 4.9291448667645454e-003 - -7.9523496329784393e-002 - 1.3036440312862396e-001 - <_> - - <_> - - - - <_> - 6 4 12 6 -1. - <_> - 12 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - -1.2931670062243938e-002 - -1.2009199708700180e-001 - 4.2189829051494598e-002 - <_> - - <_> - - - - <_> - 0 4 12 6 -1. - <_> - 0 4 6 3 2. - <_> - 6 7 6 3 2. - 0 - 1.8171440064907074e-001 - 2.2706279531121254e-002 - -4.8832720518112183e-001 - <_> - - <_> - - - - <_> - 10 3 1 4 -1. - <_> - 10 4 1 2 2. - 0 - -2.9113100841641426e-002 - -6.3608497381210327e-001 - 8.8415952632203698e-004 - <_> - - <_> - - - - <_> - 7 3 1 4 -1. - <_> - 7 4 1 2 2. - 0 - 5.7110278867185116e-003 - -3.9759650826454163e-002 - 2.3626869916915894e-001 - <_> - - <_> - - - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - 0 - 9.4733629375696182e-003 - 2.2379960864782333e-002 - -1.7788839340209961e-001 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 9.1282920911908150e-003 - 3.3228699117898941e-002 - -2.5719881057739258e-001 - <_> - - <_> - - - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - -1.7273770645260811e-002 - 1.6270759701728821e-001 - -2.1705560386180878e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 5.9155421331524849e-003 - 2.9015779495239258e-002 - -2.9269620776176453e-001 - <_> - - <_> - - - - <_> - 1 2 16 1 -1. - <_> - 5 2 8 1 2. - 0 - 3.2589450478553772e-002 - -3.7038650363683701e-002 - 2.3939940333366394e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 6.0267271474003792e-003 - 4.7315951436758041e-002 - -2.2438630461692810e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.1691940017044544e-002 - 1.1056809872388840e-001 - -3.3759210258722305e-002 - <_> - - <_> - - - - <_> - 5 1 3 2 -1. - <_> - 5 2 3 1 2. - 0 - -4.0161567740142345e-003 - 1.0859990119934082e-001 - -7.9750627279281616e-002 - <_> - - <_> - - - - <_> - 7 3 9 1 -1. - <_> - 10 3 3 1 3. - 0 - -2.7831029146909714e-003 - 6.5243370831012726e-002 - -1.0473190248012543e-001 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 1.0584440315142274e-004 - -8.9639373123645782e-002 - 9.8210841417312622e-002 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 9 2 6 1 2. - 1 - -1.5233529731631279e-002 - -6.2021549791097641e-002 - 1.6327550634741783e-002 - <_> - - <_> - - - - <_> - 9 2 2 6 -1. - <_> - 9 2 1 6 2. - 1 - -5.0070729106664658e-002 - -4.4011878967285156e-001 - 2.0913720130920410e-002 - <_> - - <_> - - - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - -5.1066437736153603e-003 - -5.4624948650598526e-002 - 3.3620700240135193e-002 - <_> - - <_> - - - - <_> - 2 5 3 6 -1. - <_> - 2 7 3 2 3. - 0 - 1.1259020306169987e-002 - -6.2500476837158203e-002 - 1.5815970301628113e-001 - <_> - - <_> - - - - <_> - 12 3 4 2 -1. - <_> - 13 4 2 2 2. - 1 - -2.9940709471702576e-002 - 9.9289081990718842e-002 - -1.5471179969608784e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 5 4 2 2 2. - 1 - -5.5130548775196075e-002 - -6.7135852575302124e-001 - 1.5666810795664787e-002 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 17 8 1 2 2. - <_> - 16 10 1 2 2. - 0 - -5.5883829481899738e-003 - 1.7980380356311798e-001 - -2.3508859798312187e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 8 1 2 2. - <_> - 1 10 1 2 2. - 0 - 1.0726720211096108e-004 - -1.2116920202970505e-001 - 7.4779331684112549e-002 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -5.8314870111644268e-003 - 1.4616240561008453e-001 - -5.4507091641426086e-002 - <_> - - <_> - - - - <_> - 7 2 3 2 -1. - <_> - 8 2 1 2 3. - 0 - 8.7257036939263344e-003 - 1.9625810906291008e-002 - -4.1208940744400024e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -2.4206570815294981e-003 - 1.5835359692573547e-001 - -3.8983419537544250e-002 - <_> - - <_> - - - - <_> - 8 5 2 3 -1. - <_> - 7 6 2 1 3. - 1 - -2.1286660805344582e-002 - 2.2240610420703888e-001 - -3.5136040300130844e-002 - <_> - - <_> - - - - <_> - 10 4 2 1 -1. - <_> - 10 4 1 1 2. - 1 - 3.1091319397091866e-002 - 4.7937040217220783e-003 - -7.7131432294845581e-001 - <_> - - <_> - - - - <_> - 8 4 1 2 -1. - <_> - 8 4 1 1 2. - 1 - 1.7936730757355690e-002 - 1.5124980360269547e-002 - -5.3765070438385010e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - 2.1349859889596701e-003 - -5.1612630486488342e-002 - 1.4234930276870728e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 3 3. - 1 - -3.0158199369907379e-002 - -3.8654580712318420e-001 - 2.1317519247531891e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - 1.3773770071566105e-002 - -2.7151010930538177e-002 - 1.3596110045909882e-001 - <_> - - <_> - - - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - 0 - 4.1484188288450241e-002 - 1.2364120222628117e-002 - -6.0026621818542480e-001 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - 6.5589502453804016e-002 - -3.6776699125766754e-003 - 7.8460097312927246e-001 - <_> - - <_> - - - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - 1.1003009974956512e-002 - -6.3236251473426819e-002 - 1.5475340187549591e-001 - <_> - - <_> - - - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - -2.8239460662007332e-002 - -5.1131701469421387e-001 - 4.6110339462757111e-003 - <_> - - <_> - - - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - -1.2187300249934196e-002 - 2.7354350686073303e-001 - -3.5504270344972610e-002 - <_> - - <_> - - - - <_> - 15 2 3 3 -1. - <_> - 15 3 3 1 3. - 0 - 8.2632675766944885e-003 - 2.6573730632662773e-002 - -1.7602869868278503e-001 - <_> - - <_> - - - - <_> - 0 2 3 3 -1. - <_> - 0 3 3 1 3. - 0 - 5.9086610563099384e-003 - 4.5535139739513397e-002 - -1.7905420064926147e-001 - <_> - - <_> - - - - <_> - 0 2 18 3 -1. - <_> - 0 3 18 1 3. - 0 - 3.0929259955883026e-002 - -6.4203962683677673e-002 - 1.4781139791011810e-001 - <_> - - <_> - - - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - 0 - -6.3848549127578735e-001 - 3.0681729316711426e-001 - -2.5509320199489594e-002 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 7.2267033159732819e-002 - 2.5428939610719681e-002 - -3.7467381358146667e-001 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 5 7 2 2 2. - 1 - -1.5226610004901886e-002 - 1.6329860687255859e-001 - -4.9246568232774734e-002 - <_> - - <_> - - - - <_> - 4 9 14 1 -1. - <_> - 4 9 7 1 2. - 0 - 1.2331340461969376e-002 - -4.1064839810132980e-002 - 8.4209568798542023e-002 - <_> - - <_> - - - - <_> - 4 9 6 2 -1. - <_> - 6 9 2 2 3. - 0 - 1.0107300244271755e-002 - 3.6028161644935608e-002 - -2.2353689372539520e-001 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - 2.2511450573801994e-002 - 1.1696700006723404e-002 - -3.9479258656501770e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - 0 - -8.2349717558827251e-005 - 1.1120089888572693e-001 - -6.8608567118644714e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - 0 - 1.0324839968234301e-004 - -6.6275127232074738e-002 - 6.7079029977321625e-002 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - 0 - 8.9090077381115407e-005 - -1.0303229838609695e-001 - 9.4525799155235291e-002 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - -4.1240658611059189e-002 - -7.6241451501846313e-001 - 4.3533057905733585e-003 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - 9.7355383331887424e-005 - -1.1680190265178680e-001 - 6.3053049147129059e-002 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - 0 - -1.0743820166680962e-004 - 6.4560279250144958e-002 - -5.4237850010395050e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 7.5144548900425434e-003 - 3.3215470612049103e-002 - -2.5936529040336609e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -1.2152430135756731e-003 - 7.2427697479724884e-002 - -3.1113930046558380e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - 1.8813109491020441e-003 - -5.5175848305225372e-002 - 1.3634249567985535e-001 - <_> - - <_> - - - - <_> - 11 0 2 1 -1. - <_> - 11 0 1 1 2. - 0 - -5.5010379292070866e-003 - -4.3706288933753967e-001 - 1.2440679594874382e-002 - <_> - - <_> - - - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - 0 - -5.6884759105741978e-003 - -5.7385152578353882e-001 - 1.2120500206947327e-002 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 9 2 9 4 2. - <_> - 0 6 9 4 2. - 0 - -3.1402000784873962e-001 - -5.8456861972808838e-001 - 1.0485970415174961e-002 - <_> - - <_> - - - - <_> - 2 5 14 6 -1. - <_> - 2 8 14 3 2. - 0 - -5.1054090261459351e-002 - -8.1812131404876709e-001 - 7.2916587814688683e-003 - <_> - - <_> - - - - <_> - 9 8 1 3 -1. - <_> - 9 9 1 1 3. - 0 - -3.5786549560725689e-003 - 1.6817580163478851e-001 - -3.0429689213633537e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - 0 - -8.9935383584816009e-005 - 9.6470743417739868e-002 - -7.6730802655220032e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - 0 - -9.1117057309020311e-005 - 1.1266720294952393e-001 - -9.5239438116550446e-002 - <_> - - <_> - - - - <_> - 4 4 1 3 -1. - <_> - 3 5 1 1 3. - 1 - -2.6042489334940910e-002 - -7.2348618507385254e-001 - 1.0882630012929440e-002 - <_> - - <_> - - - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - 0 - 8.9935383584816009e-005 - -8.0347903072834015e-002 - 9.3099772930145264e-002 - <_> - - <_> - - - - <_> - 8 8 2 1 -1. - <_> - 9 8 1 1 2. - 0 - 3.9171269163489342e-003 - 2.3305200040340424e-002 - -3.5824480652809143e-001 - <_> - - <_> - - - - <_> - 4 9 14 2 -1. - <_> - 4 9 7 2 2. - 0 - 1.1886080354452133e-001 - 4.6478789299726486e-003 - -5.0907981395721436e-001 - <_> - - <_> - - - - <_> - 0 9 14 2 -1. - <_> - 7 9 7 2 2. - 0 - 1.2497439980506897e-001 - -1.1920450255274773e-002 - 6.2223482131958008e-001 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 9 2 1 2. - 0 - 3.2638079574098811e-005 - -5.9718921780586243e-002 - 2.8372069820761681e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - 0 - -3.3235920127481222e-003 - -3.6871388554573059e-001 - 1.8724299967288971e-002 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 7 4 5 1 3. - 0 - 3.6250781267881393e-002 - -2.9849739745259285e-002 - 2.6220449805259705e-001 - <_> - - <_> - - - - <_> - 5 5 3 2 -1. - <_> - 6 6 1 2 3. - 1 - 4.5288298279047012e-003 - -5.9577301144599915e-002 - 1.1369310319423676e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - 0 - -1.1289530084468424e-004 - 6.7611873149871826e-002 - -5.3027831017971039e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 1 2. - <_> - 3 9 1 1 2. - 0 - 9.4089351478032768e-005 - -9.8176851868629456e-002 - 8.5162512958049774e-002 - <_> - - <_> - - - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - 0 - -5.3257388062775135e-003 - 1.2211889773607254e-001 - -9.0576842427253723e-002 - <_> - - <_> - - - - <_> - 2 1 3 7 -1. - <_> - 3 1 1 7 3. - 0 - -2.8568990528583527e-002 - -4.1049700975418091e-001 - 2.1933330222964287e-002 - <_> - - <_> - - - - <_> - 12 7 3 1 -1. - <_> - 13 7 1 1 3. - 0 - -1.9717009272426367e-003 - 1.6750890016555786e-001 - -6.1077561229467392e-002 - -1.5810970067977905e+000 - 18 - -1 - diff --git a/data/haarcascades/haarcascade_mcs_mouth.xml b/data/haarcascades/haarcascade_mcs_mouth.xml deleted file mode 100644 index 277a2eb678..0000000000 --- a/data/haarcascades/haarcascade_mcs_mouth.xml +++ /dev/null @@ -1,17680 +0,0 @@ - - - -BOOST - HAAR - 25 - 15 - - 218 - - 0 - 17 - - <_> - 13 - -1.4372119903564453e+00 - - <_> - - 0 -1 0 -1.1928550153970718e-01 - - 7.8541821241378784e-01 -4.5413601398468018e-01 - <_> - - 0 -1 1 -6.4164772629737854e-02 - - -7.4076807498931885e-01 2.6520359516143799e-01 - <_> - - 0 -1 2 9.1076180338859558e-02 - - -2.0633709430694580e-01 8.4009462594985962e-01 - <_> - - 0 -1 3 -1.1293300241231918e-01 - - 8.2841217517852783e-01 -1.8663629889488220e-01 - <_> - - 0 -1 4 -7.4193343520164490e-02 - - 8.3546602725982666e-01 -1.5277010202407837e-01 - <_> - - 0 -1 5 2.1404659491963685e-05 - - -7.1694560348987579e-02 1.8583349883556366e-01 - <_> - - 0 -1 6 -9.9697530269622803e-02 - - 6.8704581260681152e-01 -1.7217309772968292e-01 - <_> - - 0 -1 7 -9.0041361749172211e-02 - - 7.3102378845214844e-01 -1.3687719404697418e-01 - <_> - - 0 -1 8 2.5138311320915818e-04 - - -3.4698268771171570e-01 3.6477771401405334e-01 - <_> - - 0 -1 9 1.6144449546118267e-05 - - -3.0854660272598267e-01 2.3200240731239319e-01 - <_> - - 0 -1 10 1.9363909814273939e-05 - - -3.8198560476303101e-01 2.4041070044040680e-01 - <_> - - 0 -1 11 6.9673648104071617e-03 - - 5.4587811231613159e-02 -7.4870657920837402e-01 - <_> - - 0 -1 12 -4.7189309261739254e-03 - - -7.4766868352890015e-01 1.2058690190315247e-01 - <_> - 13 - -1.5416599512100220e+00 - - <_> - - 0 -1 13 -1.0063350200653076e-01 - - 7.8480839729309082e-01 -3.8668298721313477e-01 - <_> - - 0 -1 14 -3.6676760762929916e-02 - - 5.4532337188720703e-01 -4.0126779675483704e-01 - <_> - - 0 -1 15 8.1556223332881927e-02 - - -1.3153980672359467e-01 8.0849581956863403e-01 - <_> - - 0 -1 16 -1.0641860216856003e-01 - - 6.7823898792266846e-01 -2.0833569765090942e-01 - <_> - - 0 -1 17 1.5630740672349930e-02 - - -3.7497881054878235e-01 3.1505098938941956e-01 - <_> - - 0 -1 18 7.1129046380519867e-02 - - -1.5573850274085999e-01 7.0505428314208984e-01 - <_> - - 0 -1 19 7.3663912713527679e-02 - - -1.5476830303668976e-01 6.7158848047256470e-01 - <_> - - 0 -1 20 -1.0592950275167823e-04 - - 1.3653880357742310e-01 -2.6701828837394714e-01 - <_> - - 0 -1 21 -1.9239520188421011e-03 - - -7.2614389657974243e-01 1.3645769655704498e-01 - <_> - - 0 -1 22 2.3057300131767988e-03 - - 7.0613697171211243e-02 -6.4231842756271362e-01 - <_> - - 0 -1 23 1.8073299434036016e-03 - - 1.3556429743766785e-01 -7.0507860183715820e-01 - <_> - - 0 -1 24 -6.6433362662792206e-02 - - 6.1587882041931152e-01 -1.4002630114555359e-01 - <_> - - 0 -1 25 -6.8927720189094543e-02 - - 6.7659240961074829e-01 -1.2249880284070969e-01 - <_> - 29 - -1.5324319601058960e+00 - - <_> - - 0 -1 26 -1.8226550519466400e-01 - - 5.9615147113800049e-01 -3.1954830884933472e-01 - <_> - - 0 -1 27 2.8932818770408630e-01 - - -2.4015160277485847e-02 3.7627071142196655e-01 - <_> - - 0 -1 28 -4.2456621304154396e-03 - - -7.1173977851867676e-01 1.2147200107574463e-01 - <_> - - 0 -1 29 5.4568149149417877e-02 - - -1.8221180140972137e-01 4.5972719788551331e-01 - <_> - - 0 -1 30 -4.4434829615056515e-03 - - -5.3546768426895142e-01 1.6558359563350677e-01 - <_> - - 0 -1 31 -2.0492389798164368e-02 - - -8.7706089019775391e-01 -1.5163989737629890e-02 - <_> - - 0 -1 32 -4.8007471486926079e-03 - - -5.4314231872558594e-01 1.3561309874057770e-01 - <_> - - 0 -1 33 1.2266600131988525e-01 - - 1.1244720220565796e-01 -6.5744018554687500e-01 - <_> - - 0 -1 34 -5.5254979088203982e-05 - - 1.5367390215396881e-01 -3.8419818878173828e-01 - <_> - - 0 -1 35 -1.1318609863519669e-01 - - 4.9271959066390991e-01 -1.0942760109901428e-01 - <_> - - 0 -1 36 7.9295687377452850e-02 - - -1.6474610567092896e-01 4.7205179929733276e-01 - <_> - - 0 -1 37 1.4872930012643337e-02 - - 7.4014373123645782e-02 -5.9262758493423462e-01 - <_> - - 0 -1 38 5.3839791566133499e-02 - - -2.1115440130233765e-01 3.5378909111022949e-01 - <_> - - 0 -1 39 -7.5959272682666779e-02 - - 5.9318017959594727e-01 -1.0900689661502838e-01 - <_> - - 0 -1 40 1.1581660062074661e-01 - - -9.8490521311759949e-02 5.9403347969055176e-01 - <_> - - 0 -1 41 -1.6082640737295151e-02 - - 3.7941950559616089e-01 -1.6540519893169403e-01 - <_> - - 0 -1 42 6.7254770547151566e-03 - - 9.3757107853889465e-02 -7.0609378814697266e-01 - <_> - - 0 -1 43 -6.1188410967588425e-02 - - -4.3810299038887024e-01 7.9622969031333923e-02 - <_> - - 0 -1 44 -5.5152038112282753e-03 - - -7.0193570852279663e-01 7.8178927302360535e-02 - <_> - - 0 -1 45 -1.9885340332984924e-01 - - -6.7261308431625366e-01 5.6049771606922150e-02 - <_> - - 0 -1 46 1.9447319209575653e-02 - - -1.1651100218296051e-01 4.1515278816223145e-01 - <_> - - 0 -1 47 -4.6706218272447586e-03 - - -6.0901588201522827e-01 1.0499799996614456e-01 - <_> - - 0 -1 48 4.0827528573572636e-03 - - 6.8996846675872803e-02 -5.4908710718154907e-01 - <_> - - 0 -1 49 -2.0197959616780281e-02 - - 2.8849300742149353e-01 -1.8048889935016632e-01 - <_> - - 0 -1 50 5.0443068146705627e-02 - - -8.9770630002021790e-02 4.6099209785461426e-01 - <_> - - 0 -1 51 -5.0139562226831913e-03 - - -4.8208698630332947e-01 5.8809980750083923e-02 - <_> - - 0 -1 52 8.5741933435201645e-03 - - 5.6864671409130096e-02 -5.9790831804275513e-01 - <_> - - 0 -1 53 -1.2162449769675732e-02 - - 1.4463059604167938e-01 -1.1683259904384613e-01 - <_> - - 0 -1 54 -1.9329390488564968e-03 - - -5.4508608579635620e-01 6.0978390276432037e-02 - <_> - 34 - -1.4849940538406372e+00 - - <_> - - 0 -1 55 -3.2055098563432693e-02 - - 4.2800301313400269e-01 -4.2589429020881653e-01 - <_> - - 0 -1 56 -1.2310340255498886e-01 - - 5.1212418079376221e-01 -2.0555849373340607e-01 - <_> - - 0 -1 57 -5.8588259853422642e-03 - - -7.1018207073211670e-01 1.0759060084819794e-01 - <_> - - 0 -1 58 9.7714133560657501e-02 - - -1.4779579639434814e-01 4.5711749792098999e-01 - <_> - - 0 -1 59 -5.2739460021257401e-02 - - 3.7437671422958374e-01 -2.1838270127773285e-01 - <_> - - 0 -1 60 5.8418910950422287e-02 - - -1.3862940669059753e-01 4.9932828545570374e-01 - <_> - - 0 -1 61 8.8756918907165527e-02 - - -1.3158950209617615e-01 6.2165617942810059e-01 - <_> - - 0 -1 62 1.4587669633328915e-02 - - 9.1569669544696808e-02 -5.8156752586364746e-01 - <_> - - 0 -1 63 1.0446000099182129e-01 - - 5.2740359678864479e-03 -5.6644519531250000e+04 - <_> - - 0 -1 64 -8.4322784096002579e-03 - - -4.8660460114479065e-01 9.7961761057376862e-02 - <_> - - 0 -1 65 4.0655929595232010e-02 - - 1.3915790617465973e-01 -3.6560159921646118e-01 - <_> - - 0 -1 66 6.3366899266839027e-03 - - 6.4174547791481018e-02 -6.2454712390899658e-01 - <_> - - 0 -1 67 1.5845589339733124e-02 - - -1.7919149994850159e-01 2.8899058699607849e-01 - <_> - - 0 -1 68 -7.4686333537101746e-02 - - 5.4240232706069946e-01 -1.3147279620170593e-01 - <_> - - 0 -1 69 4.7695250250399113e-03 - - 9.6534043550491333e-02 -6.5611547231674194e-01 - <_> - - 0 -1 70 -5.3522668778896332e-02 - - 4.6368008852005005e-01 -1.3534300029277802e-01 - <_> - - 0 -1 71 -6.3648750074207783e-03 - - -6.6245639324188232e-01 6.8485736846923828e-02 - <_> - - 0 -1 72 -2.4473370611667633e-01 - - -8.1813371181488037e-01 4.5079968869686127e-02 - <_> - - 0 -1 73 -2.4634969886392355e-03 - - -7.6818048954010010e-01 4.9584589898586273e-02 - <_> - - 0 -1 74 -3.5803489387035370e-02 - - 3.7496039271354675e-01 -1.4479289948940277e-01 - <_> - - 0 -1 75 -5.6720529682934284e-03 - - -6.1275362968444824e-01 9.3584716320037842e-02 - <_> - - 0 -1 76 -1.3268710114061832e-02 - - 2.8637841343879700e-01 -2.5518891215324402e-01 - <_> - - 0 -1 77 -6.2518939375877380e-03 - - -5.8967739343643188e-01 6.7711167037487030e-02 - <_> - - 0 -1 78 7.3092570528388023e-03 - - 2.7219809591770172e-02 -5.7148611545562744e-01 - <_> - - 0 -1 79 2.5819439440965652e-02 - - -1.3260079920291901e-01 3.0502519011497498e-01 - <_> - - 0 -1 80 -2.1107880398631096e-02 - - 1.2006290256977081e-01 -1.4752650260925293e-01 - <_> - - 0 -1 81 4.0848340839147568e-02 - - -1.7368830740451813e-01 2.5304460525512695e-01 - <_> - - 0 -1 82 -1.7947599291801453e-02 - - -7.1176171302795410e-01 5.8369800448417664e-02 - <_> - - 0 -1 83 -1.3889590278267860e-02 - - -6.7781329154968262e-01 4.3563000857830048e-02 - <_> - - 0 -1 84 -9.8488982766866684e-03 - - 1.4792129397392273e-01 -8.9746527373790741e-02 - <_> - - 0 -1 85 -6.5984703600406647e-02 - - 5.6838017702102661e-01 -6.8174257874488831e-02 - <_> - - 0 -1 86 -1.8370660254731774e-03 - - -4.9869379401206970e-01 7.7964358031749725e-02 - <_> - - 0 -1 87 -2.7765180915594101e-02 - - 2.6799491047859192e-01 -1.3826249539852142e-01 - <_> - - 0 -1 88 9.9889356642961502e-03 - - 4.4561941176652908e-02 -7.3173791170120239e-01 - <_> - 42 - -1.5437099933624268e+00 - - <_> - - 0 -1 89 -4.5638348907232285e-02 - - 6.2754231691360474e-01 -2.4949370324611664e-01 - <_> - - 0 -1 90 -3.1067680567502975e-02 - - 6.4278161525726318e-01 -1.6719000041484833e-01 - <_> - - 0 -1 91 3.0193419661372900e-03 - - -2.3993469774723053e-01 3.6768180131912231e-01 - <_> - - 0 -1 92 3.1567640602588654e-02 - - -1.1476919800043106e-01 5.7501727342605591e-01 - <_> - - 0 -1 93 -6.4146341755986214e-03 - - 2.1546250581741333e-01 -3.7687700986862183e-01 - <_> - - 0 -1 94 -5.7010860182344913e-03 - - -4.5338240265846252e-01 9.4688847661018372e-02 - <_> - - 0 -1 95 1.8903000652790070e-01 - - 8.0115526914596558e-02 -7.1848851442337036e-01 - <_> - - 0 -1 96 1.2939789891242981e-01 - - 1.0937190055847168e-01 -5.1970487833023071e-01 - <_> - - 0 -1 97 -6.5768390893936157e-02 - - 5.0031042098999023e-01 -1.2387350201606750e-01 - <_> - - 0 -1 98 -4.0884059853851795e-03 - - -5.1180112361907959e-01 5.9422370046377182e-02 - <_> - - 0 -1 99 -3.0664270743727684e-02 - - 2.9646489024162292e-01 -1.7412480711936951e-01 - <_> - - 0 -1 100 2.7700960636138916e-03 - - 8.4690727293491364e-02 -4.0095150470733643e-01 - <_> - - 0 -1 101 -6.2402039766311646e-03 - - -5.5609232187271118e-01 8.0085046589374542e-02 - <_> - - 0 -1 102 1.0515259578824043e-02 - - -1.3094049692153931e-01 3.6127111315727234e-01 - <_> - - 0 -1 103 1.8179269507527351e-02 - - -1.2451809644699097e-01 3.5565629601478577e-01 - <_> - - 0 -1 104 5.3037698380649090e-03 - - 6.3822023570537567e-02 -6.1784660816192627e-01 - <_> - - 0 -1 105 -1.9478060305118561e-01 - - -7.2289019823074341e-01 4.7576818615198135e-02 - <_> - - 0 -1 106 7.2230421938002110e-03 - - 4.5338228344917297e-02 -5.4608362913131714e-01 - <_> - - 0 -1 107 5.0375838764011860e-03 - - 8.0446831881999969e-02 -4.8174721002578735e-01 - <_> - - 0 -1 108 -7.1934829466044903e-03 - - -5.0189918279647827e-01 1.2870029546320438e-02 - <_> - - 0 -1 109 -4.4941599480807781e-03 - - -5.8627098798751831e-01 6.3467502593994141e-02 - <_> - - 0 -1 110 8.7413139641284943e-02 - - -6.7620240151882172e-02 4.7970318794250488e-01 - <_> - - 0 -1 111 -3.7701569497585297e-02 - - 3.9133429527282715e-01 -9.7880929708480835e-02 - <_> - - 0 -1 112 3.0070370994508266e-03 - - 4.8492491245269775e-02 -2.4722249805927277e-01 - <_> - - 0 -1 113 9.7409866750240326e-02 - - -6.6901072859764099e-02 5.8135199546813965e-01 - <_> - - 0 -1 114 -4.0166568942368031e-03 - - -5.4565542936325073e-01 3.6392461508512497e-02 - <_> - - 0 -1 115 1.0492489673197269e-02 - - -1.0874660313129425e-01 3.2534250617027283e-01 - <_> - - 0 -1 116 2.4965999647974968e-02 - - -1.1378960311412811e-01 3.0565109848976135e-01 - <_> - - 0 -1 117 1.3010300695896149e-01 - - -1.2204769998788834e-01 3.0353659391403198e-01 - <_> - - 0 -1 118 -8.4372088313102722e-02 - - -6.9431221485137939e-01 1.7885660752654076e-02 - <_> - - 0 -1 119 -2.9267850331962109e-03 - - -5.4018348455429077e-01 5.6407321244478226e-02 - <_> - - 0 -1 120 -2.0674509927630424e-02 - - 4.1809210181236267e-01 -6.8534046411514282e-02 - <_> - - 0 -1 121 -5.1450639963150024e-02 - - -6.2890982627868652e-01 5.2987698465585709e-02 - <_> - - 0 -1 122 -8.9261196553707123e-03 - - -4.6443560719490051e-01 2.3655079305171967e-02 - <_> - - 0 -1 123 -8.3048470318317413e-02 - - 3.3041968941688538e-01 -9.3869760632514954e-02 - <_> - - 0 -1 124 1.1336999945342541e-02 - - -9.7960032522678375e-02 3.4840530157089233e-01 - <_> - - 0 -1 125 8.2777902483940125e-02 - - -1.1593910306692123e-01 2.6809579133987427e-01 - <_> - - 0 -1 126 -4.7884881496429443e-02 - - -6.0792112350463867e-01 2.2236289456486702e-02 - <_> - - 0 -1 127 -3.8582698907703161e-03 - - -4.6889010071754456e-01 5.5454041808843613e-02 - <_> - - 0 -1 128 -3.3453129231929779e-02 - - 4.1926679015159607e-01 -6.3108846545219421e-02 - <_> - - 0 -1 129 1.2603639625012875e-02 - - -1.2276329845190048e-01 2.1752209961414337e-01 - <_> - - 0 -1 130 2.6260089129209518e-02 - - 1.6289670020341873e-02 -5.6887590885162354e-01 - <_> - 64 - -1.5637760162353516e+00 - - <_> - - 0 -1 131 -1.9779309630393982e-02 - - 4.4720950722694397e-01 -2.5737971067428589e-01 - <_> - - 0 -1 132 -9.1997236013412476e-03 - - 4.3978941440582275e-01 -1.3823099434375763e-01 - <_> - - 0 -1 133 2.2242579609155655e-02 - - -1.7611500620841980e-01 3.4068119525909424e-01 - <_> - - 0 -1 134 5.3650550544261932e-03 - - -1.0874909907579422e-01 1.6310940682888031e-01 - <_> - - 0 -1 135 7.4250137805938721e-01 - - 4.6233131433837116e-04 -1.4172740478515625e+03 - <_> - - 0 -1 136 -1.2899990379810333e-01 - - 4.2209368944168091e-01 -1.2642090022563934e-01 - <_> - - 0 -1 137 4.2140239477157593e-01 - - 3.0299068894237280e-03 1.2071870117187500e+03 - <_> - - 0 -1 138 -1.4317120611667633e-01 - - 5.0700122117996216e-01 -1.0911709815263748e-01 - <_> - - 0 -1 139 4.4366121292114258e-03 - - -2.2188140451908112e-01 2.4461059272289276e-01 - <_> - - 0 -1 140 3.0177310109138489e-03 - - 1.0722339898347855e-01 -3.4702050685882568e-01 - <_> - - 0 -1 141 -4.8220949247479439e-03 - - -6.5341192483901978e-01 8.0343447625637054e-02 - <_> - - 0 -1 142 3.6278828978538513e-02 - - -2.2070750594139099e-01 2.2424909472465515e-01 - <_> - - 0 -1 143 -1.6759949922561646e-01 - - 4.0590721368789673e-01 -1.0541699826717377e-01 - <_> - - 0 -1 144 -5.0991941243410110e-02 - - 3.4522831439971924e-01 -1.2064740061759949e-01 - <_> - - 0 -1 145 1.6163529828190804e-02 - - -1.4651750028133392e-01 3.6967509984970093e-01 - <_> - - 0 -1 146 8.3268675953149796e-03 - - 6.4239829778671265e-02 -5.4906690120697021e-01 - <_> - - 0 -1 147 -7.2614871896803379e-03 - - -6.1058157682418823e-01 5.3833089768886566e-02 - <_> - - 0 -1 148 -4.2785529047250748e-02 - - 3.4355071187019348e-01 -1.0584419965744019e-01 - <_> - - 0 -1 149 -5.5888559669256210e-02 - - -4.2134630680084229e-01 8.5534237325191498e-02 - <_> - - 0 -1 150 1.0770390182733536e-01 - - 7.9667679965496063e-02 -5.1052689552307129e-01 - <_> - - 0 -1 151 -4.8622798203723505e-05 - - 1.1649709939956665e-01 -3.0223610997200012e-01 - <_> - - 0 -1 152 2.7271810919046402e-02 - - -8.3197653293609619e-02 3.4107041358947754e-01 - <_> - - 0 -1 153 2.7942128945142031e-03 - - 8.3613917231559753e-02 -4.5217469334602356e-01 - <_> - - 0 -1 154 -5.9649557806551456e-03 - - -5.8149677515029907e-01 5.8847118169069290e-02 - <_> - - 0 -1 155 -3.6455120891332626e-02 - - 2.9876148700714111e-01 -1.1639650166034698e-01 - <_> - - 0 -1 156 5.6035928428173065e-02 - - -1.1897490173578262e-01 3.4904998540878296e-01 - <_> - - 0 -1 157 1.9068910041823983e-03 - - 6.2339980155229568e-02 -5.2227342128753662e-01 - <_> - - 0 -1 158 -3.1480301171541214e-02 - - -5.9882801771163940e-01 2.2110050544142723e-02 - <_> - - 0 -1 159 -2.9177989810705185e-02 - - -7.6283282041549683e-01 3.7851981818675995e-02 - <_> - - 0 -1 160 9.3441819772124290e-03 - - 2.9378799721598625e-02 -5.4641848802566528e-01 - <_> - - 0 -1 161 1.2941689928993583e-03 - - -2.1526190638542175e-01 1.2930710613727570e-01 - <_> - - 0 -1 162 3.9952751249074936e-02 - - -8.1563241779804230e-02 3.4403279423713684e-01 - <_> - - 0 -1 163 2.5796899199485779e-01 - - -8.2971312105655670e-02 2.9717591404914856e-01 - <_> - - 0 -1 164 8.3975978195667267e-03 - - -1.2357590347528458e-01 3.1307429075241089e-01 - <_> - - 0 -1 165 -2.1048100665211678e-02 - - 2.5538909435272217e-01 -1.0775920003652573e-01 - <_> - - 0 -1 166 1.8419239670038223e-02 - - -3.4885831177234650e-02 4.6130049228668213e-01 - <_> - - 0 -1 167 -3.3599320799112320e-02 - - -6.3856261968612671e-01 4.3235760182142258e-02 - <_> - - 0 -1 168 -5.9369178488850594e-03 - - -3.3812350034713745e-01 2.6138810440897942e-02 - <_> - - 0 -1 169 7.4244509451091290e-03 - - 4.1649479418992996e-02 -6.0131359100341797e-01 - <_> - - 0 -1 170 -3.8341500330716372e-03 - - -3.1479349732398987e-01 2.2726090624928474e-02 - <_> - - 0 -1 171 5.9263929724693298e-03 - - -8.4517963230609894e-02 2.9861259460449219e-01 - <_> - - 0 -1 172 -1.9444419071078300e-02 - - 2.2137579321861267e-01 -5.1358368247747421e-02 - <_> - - 0 -1 173 1.8775269389152527e-02 - - -1.2233640253543854e-01 2.6476910710334778e-01 - <_> - - 0 -1 174 6.4857508987188339e-03 - - 2.0563449710607529e-02 -5.2469062805175781e-01 - <_> - - 0 -1 175 -2.5987258553504944e-01 - - -6.5701937675476074e-01 3.4549690783023834e-02 - <_> - - 0 -1 176 -5.8150831609964371e-03 - - -6.5954607725143433e-01 3.0244240537285805e-02 - <_> - - 0 -1 177 -2.6121940463781357e-02 - - 1.8704070150852203e-01 -1.2529240548610687e-01 - <_> - - 0 -1 178 -5.7821800000965595e-03 - - 2.3285099864006042e-01 -1.1824960261583328e-01 - <_> - - 0 -1 179 -2.9595640953630209e-03 - - -4.5799380540847778e-01 5.6465540081262589e-02 - <_> - - 0 -1 180 -1.2088200077414513e-02 - - -5.1893490552902222e-01 2.4499660357832909e-02 - <_> - - 0 -1 181 -8.8109169155359268e-03 - - 2.5700250267982483e-01 -9.2767156660556793e-02 - <_> - - 0 -1 182 -4.5942850410938263e-02 - - -4.4797191023826599e-01 2.9946230351924896e-02 - <_> - - 0 -1 183 -1.0004140436649323e-02 - - -6.1496341228485107e-01 3.6421269178390503e-02 - <_> - - 0 -1 184 -1.1675399728119373e-02 - - 1.1728770285844803e-01 -6.1347480863332748e-02 - <_> - - 0 -1 185 -5.2466850727796555e-02 - - -7.6136529445648193e-01 3.0689470469951630e-02 - <_> - - 0 -1 186 1.8226340413093567e-02 - - -8.5480183362960815e-02 2.6953738927841187e-01 - <_> - - 0 -1 187 -4.5268420130014420e-02 - - 3.2644701004028320e-01 -7.7375642955303192e-02 - <_> - - 0 -1 188 -8.1426883116364479e-03 - - -4.5829379558563232e-01 9.3973511829972267e-03 - <_> - - 0 -1 189 -5.3349281661212444e-03 - - -5.7754981517791748e-01 3.5252388566732407e-02 - <_> - - 0 -1 190 -1.0754769900813699e-03 - - 1.4347539842128754e-01 -1.0157629847526550e-01 - <_> - - 0 -1 191 -3.5198600962758064e-03 - - -6.0820412635803223e-01 3.2888069748878479e-02 - <_> - - 0 -1 192 1.1248350143432617e-02 - - -9.0550042688846588e-02 2.3237830400466919e-01 - <_> - - 0 -1 193 -1.1992019601166248e-02 - - -5.7053321599960327e-01 3.6703631281852722e-02 - <_> - - 0 -1 194 -1.2105530127882957e-02 - - -7.0862692594528198e-01 4.4598700478672981e-03 - <_> - 57 - -1.5267670154571533e+00 - - <_> - - 0 -1 195 -1.1128909885883331e-01 - - 5.2144467830657959e-01 -2.7625268697738647e-01 - <_> - - 0 -1 196 -3.1310080084949732e-03 - - -6.0733932256698608e-01 2.4398099631071091e-02 - <_> - - 0 -1 197 -9.7501352429389954e-02 - - 5.4892867803573608e-01 -1.6524270176887512e-01 - <_> - - 0 -1 198 -6.5224707126617432e-02 - - 3.4020069241523743e-01 -2.6939308643341064e-01 - <_> - - 0 -1 199 1.1918029934167862e-01 - - -1.1235760152339935e-01 6.3959801197052002e-01 - <_> - - 0 -1 200 -1.4062980189919472e-02 - - 3.3427619934082031e-01 -1.2845389544963837e-01 - <_> - - 0 -1 201 -5.6402500718832016e-02 - - 3.7906289100646973e-01 -1.5541569888591766e-01 - <_> - - 0 -1 202 7.1742408908903599e-03 - - -1.1330889910459518e-01 1.8250890076160431e-01 - <_> - - 0 -1 203 1.2597529590129852e-01 - - 9.4548553228378296e-02 -4.8534440994262695e-01 - <_> - - 0 -1 204 5.9177991934120655e-03 - - 7.0132136344909668e-02 -5.3770399093627930e-01 - <_> - - 0 -1 205 -4.3927740305662155e-02 - - 3.9507418870925903e-01 -1.0801859945058823e-01 - <_> - - 0 -1 206 -9.8314704373478889e-03 - - 9.5960617065429688e-02 -4.6807598322629929e-02 - <_> - - 0 -1 207 5.6353402324020863e-03 - - 9.4341628253459930e-02 -5.2477169036865234e-01 - <_> - - 0 -1 208 -1.1538280174136162e-02 - - -5.1548802852630615e-01 1.3805530034005642e-02 - <_> - - 0 -1 209 2.8646249324083328e-02 - - -1.3827019929885864e-01 2.7504378557205200e-01 - <_> - - 0 -1 210 1.3867979869246483e-02 - - -1.2035869807004929e-01 3.5214358568191528e-01 - <_> - - 0 -1 211 -4.0469371015205979e-04 - - 1.5226370096206665e-01 -2.5900840759277344e-01 - <_> - - 0 -1 212 -1.5945810079574585e-01 - - -6.3918548822402954e-01 5.1464989781379700e-02 - <_> - - 0 -1 213 -2.7928699273616076e-03 - - -5.8401507139205933e-01 5.4279379546642303e-02 - <_> - - 0 -1 214 1.8353210762143135e-02 - - -1.0511510074138641e-01 3.5298159718513489e-01 - <_> - - 0 -1 215 -5.1810559816658497e-03 - - -4.7417679429054260e-01 7.9851232469081879e-02 - <_> - - 0 -1 216 9.2321299016475677e-03 - - -7.5932718813419342e-02 1.8528139591217041e-01 - <_> - - 0 -1 217 1.2117110192775726e-02 - - -1.1175289750099182e-01 2.8536349534988403e-01 - <_> - - 0 -1 218 -7.2612818330526352e-03 - - -5.8851087093353271e-01 5.2688319236040115e-02 - <_> - - 0 -1 219 5.6134900078177452e-03 - - 4.7468490898609161e-02 -5.3945899009704590e-01 - <_> - - 0 -1 220 -1.9451679289340973e-01 - - -5.6342220306396484e-01 3.0210889875888824e-02 - <_> - - 0 -1 221 3.5509431362152100e-01 - - 6.3089452683925629e-02 -4.9805879592895508e-01 - <_> - - 0 -1 222 3.3111970871686935e-02 - - 3.4632470458745956e-02 -5.2464848756790161e-01 - <_> - - 0 -1 223 3.4281808882951736e-02 - - 4.3143980205059052e-02 -6.4707130193710327e-01 - <_> - - 0 -1 224 -7.8256614506244659e-03 - - -4.6880009770393372e-01 4.0239371359348297e-02 - <_> - - 0 -1 225 1.1156049557030201e-02 - - 4.0150500833988190e-02 -6.0955387353897095e-01 - <_> - - 0 -1 226 1.1363060213625431e-02 - - -8.2748986780643463e-02 3.8116890192031860e-01 - <_> - - 0 -1 227 2.0405100658535957e-02 - - 4.2575638741254807e-02 -7.4677741527557373e-01 - <_> - - 0 -1 228 1.9111629575490952e-02 - - -1.2391970306634903e-01 2.2265200316905975e-01 - <_> - - 0 -1 229 -7.3364898562431335e-03 - - 3.0342069268226624e-01 -9.2695690691471100e-02 - <_> - - 0 -1 230 -8.6538922041654587e-03 - - -3.3517450094223022e-01 5.8540578931570053e-02 - <_> - - 0 -1 231 3.4789599478244781e-02 - - 3.3757809549570084e-02 -7.4834531545639038e-01 - <_> - - 0 -1 232 -1.7418829724192619e-02 - - 2.4453639984130859e-01 -6.9878697395324707e-02 - <_> - - 0 -1 233 3.5119079984724522e-03 - - -1.2778869271278381e-01 2.4033150076866150e-01 - <_> - - 0 -1 234 5.0669797929003835e-04 - - -1.1697790026664734e-01 1.4393800497055054e-01 - <_> - - 0 -1 235 -5.9512741863727570e-03 - - -5.0781607627868652e-01 4.7852229326963425e-02 - <_> - - 0 -1 236 5.0377801060676575e-02 - - 2.9282520990818739e-03 -7.7516961097717285e-01 - <_> - - 0 -1 237 3.8862510118633509e-03 - - -1.5504209697246552e-01 1.5709200501441956e-01 - <_> - - 0 -1 238 3.8511630147695541e-02 - - 2.3097040131688118e-02 -6.2916171550750732e-01 - <_> - - 0 -1 239 -5.5746049620211124e-03 - - 1.8070709705352783e-01 -1.2980529665946960e-01 - <_> - - 0 -1 240 1.2664760649204254e-01 - - -8.6559399962425232e-02 2.9573258757591248e-01 - <_> - - 0 -1 241 5.4126111790537834e-03 - - -1.5283249318599701e-01 1.6629169881343842e-01 - <_> - - 0 -1 242 -3.6153081804513931e-02 - - 2.7973130345344543e-01 -1.0398860275745392e-01 - <_> - - 0 -1 243 7.1673998609185219e-03 - - -9.4564221799373627e-02 2.7785280346870422e-01 - <_> - - 0 -1 244 -6.7790350876748562e-03 - - 1.6790680587291718e-01 -8.3954311907291412e-02 - <_> - - 0 -1 245 -2.9867609962821007e-02 - - -7.2361171245574951e-01 3.4631069749593735e-02 - <_> - - 0 -1 246 6.5265512093901634e-03 - - -1.1737609654664993e-01 1.3460339605808258e-01 - <_> - - 0 -1 247 3.4080960176652297e-05 - - -1.7531760036945343e-01 1.3222040235996246e-01 - <_> - - 0 -1 248 -1.7629459500312805e-02 - - -5.1608538627624512e-01 2.5386190041899681e-02 - <_> - - 0 -1 249 -1.5446309698745608e-03 - - -4.1421860456466675e-01 5.1330089569091797e-02 - <_> - - 0 -1 250 1.1520429980009794e-03 - - 3.6615949124097824e-02 -3.6928009986877441e-01 - <_> - - 0 -1 251 -2.9612779617309570e-03 - - 2.4461880326271057e-01 -8.4271423518657684e-02 - <_> - 64 - -1.4507639408111572e+00 - - <_> - - 0 -1 252 -1.4103169552981853e-02 - - 2.6997908949851990e-01 -3.9283180236816406e-01 - <_> - - 0 -1 253 5.4714400321245193e-03 - - -2.2691699862480164e-01 2.7490520477294922e-01 - <_> - - 0 -1 254 1.6635479405522346e-02 - - -1.5479080379009247e-01 3.2242020964622498e-01 - <_> - - 0 -1 255 -8.4477178752422333e-03 - - 3.3207809925079346e-01 -1.2496549636125565e-01 - <_> - - 0 -1 256 -2.4904569145292044e-03 - - 2.9002049565315247e-01 -1.4602980017662048e-01 - <_> - - 0 -1 257 2.8210440650582314e-02 - - -8.3193711936473846e-02 4.8053979873657227e-01 - <_> - - 0 -1 258 9.3179903924465179e-03 - - -1.6924269497394562e-01 3.4820309281349182e-01 - <_> - - 0 -1 259 -5.7910289615392685e-02 - - -5.0403988361358643e-01 8.4093488752841949e-02 - <_> - - 0 -1 260 8.8212646543979645e-02 - - 7.3309987783432007e-02 -4.8833951354026794e-01 - <_> - - 0 -1 261 6.0974380176048726e-05 - - -1.5945079922676086e-01 1.4732779562473297e-01 - <_> - - 0 -1 262 -1.4206360094249249e-02 - - -6.3656848669052124e-01 5.0715360790491104e-02 - <_> - - 0 -1 263 -7.7181900851428509e-03 - - -6.3300287723541260e-01 3.2868899405002594e-02 - <_> - - 0 -1 264 1.2007170356810093e-02 - - -1.2545250356197357e-01 2.8936991095542908e-01 - <_> - - 0 -1 265 7.0782616734504700e-02 - - 3.0565660446882248e-02 -5.6666982173919678e-01 - <_> - - 0 -1 266 -5.0412330776453018e-02 - - -5.0897938013076782e-01 7.1004882454872131e-02 - <_> - - 0 -1 267 2.2072799503803253e-02 - - -1.4448410272598267e-01 2.7811849117279053e-01 - <_> - - 0 -1 268 1.4764940366148949e-02 - - -1.2839899957180023e-01 3.2901859283447266e-01 - <_> - - 0 -1 269 6.8206568248569965e-03 - - 6.5479546785354614e-02 -5.4632657766342163e-01 - <_> - - 0 -1 270 2.0179790444672108e-03 - - -2.0283429324626923e-01 1.6796590387821198e-01 - <_> - - 0 -1 271 2.5081219151616096e-02 - - -1.1049439758062363e-01 3.1918600201606750e-01 - <_> - - 0 -1 272 8.9391358196735382e-03 - - 7.3413208127021790e-02 -5.5383992195129395e-01 - <_> - - 0 -1 273 -4.6396959805861115e-04 - - 1.1230310052633286e-01 -1.6971270740032196e-01 - <_> - - 0 -1 274 -8.5602197796106339e-03 - - -7.3473477363586426e-01 4.1716948151588440e-02 - <_> - - 0 -1 275 -3.8934718817472458e-02 - - 2.2926269471645355e-01 -7.9229943454265594e-02 - <_> - - 0 -1 276 -2.1541599184274673e-02 - - 3.0071720480918884e-01 -1.1523400247097015e-01 - <_> - - 0 -1 277 4.9337721429765224e-03 - - -1.0028380155563354e-01 1.3485729694366455e-01 - <_> - - 0 -1 278 1.6150669753551483e-01 - - 5.8817189186811447e-02 -5.6567448377609253e-01 - <_> - - 0 -1 279 -1.2326019816100597e-02 - - -2.8233280777931213e-01 1.8759630620479584e-02 - <_> - - 0 -1 280 5.2987951785326004e-03 - - 5.2406348288059235e-02 -5.7190322875976562e-01 - <_> - - 0 -1 281 2.8904320672154427e-02 - - 4.7710869461297989e-02 -4.8545840382575989e-01 - <_> - - 0 -1 282 1.5569729730486870e-02 - - 4.9317851662635803e-02 -5.1000517606735229e-01 - <_> - - 0 -1 283 -9.3812070786952972e-02 - - 2.5648090243339539e-01 -1.0570690035820007e-01 - <_> - - 0 -1 284 -2.8693329542875290e-02 - - 5.2470439672470093e-01 -5.0950251519680023e-02 - <_> - - 0 -1 285 7.2301640175282955e-03 - - 5.8365300297737122e-02 -4.8943120241165161e-01 - <_> - - 0 -1 286 8.2664839283097535e-05 - - -1.4372180402278900e-01 1.8202689290046692e-01 - <_> - - 0 -1 287 1.5241750515997410e-03 - - 2.0126799121499062e-02 -3.8845899701118469e-01 - <_> - - 0 -1 288 -6.5512307628523558e-05 - - 2.2803540527820587e-01 -1.5812060236930847e-01 - <_> - - 0 -1 289 2.4175599683076143e-03 - - -8.9045077562332153e-02 2.8392508625984192e-01 - <_> - - 0 -1 290 3.4308489412069321e-02 - - 3.9130479097366333e-02 -6.2633931636810303e-01 - <_> - - 0 -1 291 1.2766799889504910e-02 - - -9.8429419100284576e-02 2.8574278950691223e-01 - <_> - - 0 -1 292 -2.7450299821794033e-03 - - 2.0907869935035706e-01 -1.2679450213909149e-01 - <_> - - 0 -1 293 -7.0629850961267948e-03 - - -4.7847199440002441e-01 2.2974679246544838e-02 - <_> - - 0 -1 294 1.0967410169541836e-02 - - -1.3107410073280334e-01 1.7128570377826691e-01 - <_> - - 0 -1 295 -1.5306890010833740e-01 - - 2.3610730469226837e-01 -9.6540167927742004e-02 - <_> - - 0 -1 296 2.1676090545952320e-03 - - -1.0288040339946747e-01 2.5375840067863464e-01 - <_> - - 0 -1 297 1.0705149732530117e-02 - - 1.6089269891381264e-02 -5.8685261011123657e-01 - <_> - - 0 -1 298 -6.1142919585108757e-03 - - -6.1467981338500977e-01 3.4404631704092026e-02 - <_> - - 0 -1 299 -1.6005769371986389e-02 - - 9.5413319766521454e-02 -6.5781168639659882e-02 - <_> - - 0 -1 300 8.5541699081659317e-03 - - 4.2579360306262970e-02 -5.4903411865234375e-01 - <_> - - 0 -1 301 -5.5742941185599193e-05 - - 1.5058469772338867e-01 -9.7832597792148590e-02 - <_> - - 0 -1 302 4.9888480134541169e-05 - - -1.5222179889678955e-01 1.4647099375724792e-01 - <_> - - 0 -1 303 9.3986131250858307e-03 - - -7.9301856458187103e-02 2.2228449583053589e-01 - <_> - - 0 -1 304 -4.4594589620828629e-02 - - 3.2170730829238892e-01 -7.1259953081607819e-02 - <_> - - 0 -1 305 2.7630710601806641e-01 - - -3.1289439648389816e-02 4.6367809176445007e-01 - <_> - - 0 -1 306 -4.5924279838800430e-02 - - 2.6855510473251343e-01 -9.4698183238506317e-02 - <_> - - 0 -1 307 3.2828450202941895e-02 - - 4.2008858174085617e-02 -1.9091799855232239e-01 - <_> - - 0 -1 308 5.8416211977601051e-03 - - 4.4382080435752869e-02 -5.0172328948974609e-01 - <_> - - 0 -1 309 2.5312770158052444e-02 - - 7.6768198050558567e-03 -4.5246911048889160e-01 - <_> - - 0 -1 310 -2.0680379122495651e-02 - - -7.0823311805725098e-01 2.7752710506320000e-02 - <_> - - 0 -1 311 1.9456259906291962e-03 - - -1.7256410419940948e-01 8.8524073362350464e-02 - <_> - - 0 -1 312 1.3182780146598816e-01 - - 3.7875670939683914e-02 -5.2365738153457642e-01 - <_> - - 0 -1 313 -4.8449821770191193e-03 - - -3.8318011164665222e-01 2.9552109539508820e-02 - <_> - - 0 -1 314 5.3295581601560116e-03 - - -1.1728160083293915e-01 1.7122170329093933e-01 - <_> - - 0 -1 315 -3.5328458994626999e-02 - - 3.7315499782562256e-01 -6.5027341246604919e-02 - <_> - 77 - -1.3936280012130737e+00 - - <_> - - 0 -1 316 1.3647849671542645e-02 - - -2.8023689985275269e-01 3.5753351449966431e-01 - <_> - - 0 -1 317 1.2307819910347462e-02 - - -1.4846450090408325e-01 2.7148860692977905e-01 - <_> - - 0 -1 318 4.6594038605690002e-01 - - -7.0500850677490234e-02 5.8680188655853271e-01 - <_> - - 0 -1 319 1.5693339519202709e-03 - - -1.1502370238304138e-01 1.3755360245704651e-01 - <_> - - 0 -1 320 2.5176738854497671e-03 - - -1.7788909375667572e-01 2.1724070608615875e-01 - <_> - - 0 -1 321 4.5299702323973179e-03 - - 4.5860350131988525e-02 -5.3767031431198120e-01 - <_> - - 0 -1 322 4.0295510552823544e-03 - - 5.9907138347625732e-02 -5.8030951023101807e-01 - <_> - - 0 -1 323 9.0281656011939049e-03 - - -8.8961161673069000e-02 3.4740069508552551e-01 - <_> - - 0 -1 324 -7.1099460124969482e-02 - - 4.0032050013542175e-01 -8.7675258517265320e-02 - <_> - - 0 -1 325 -9.0507879853248596e-02 - - 3.2023850083351135e-01 -1.1072800308465958e-01 - <_> - - 0 -1 326 3.9499148726463318e-01 - - -5.4482270032167435e-02 4.3765610456466675e-01 - <_> - - 0 -1 327 6.0021281242370605e-03 - - 4.1296858340501785e-02 -6.2775158882141113e-01 - <_> - - 0 -1 328 -1.2675330042839050e-02 - - 1.8643060326576233e-01 -1.5865950286388397e-01 - <_> - - 0 -1 329 5.2523188060149550e-04 - - -7.3780946433544159e-02 1.1318250000476837e-01 - <_> - - 0 -1 330 1.5198530256748199e-01 - - -6.9850206375122070e-02 5.5264592170715332e-01 - <_> - - 0 -1 331 -5.9174448251724243e-03 - - -4.2243769764900208e-01 2.3429270833730698e-02 - <_> - - 0 -1 332 5.1085697486996651e-04 - - -1.7821140587329865e-01 1.7475420236587524e-01 - <_> - - 0 -1 333 -2.8626650571823120e-02 - - -7.8067898750305176e-01 4.3033521622419357e-02 - <_> - - 0 -1 334 3.2388539984822273e-03 - - -1.1748749762773514e-01 2.3013429343700409e-01 - <_> - - 0 -1 335 -6.8310899659991264e-03 - - -5.1702737808227539e-01 2.2477060556411743e-02 - <_> - - 0 -1 336 -1.3818129897117615e-01 - - -6.7183071374893188e-01 3.3945839852094650e-02 - <_> - - 0 -1 337 1.2902930378913879e-02 - - 1.9041150808334351e-02 -4.7392490506172180e-01 - <_> - - 0 -1 338 6.3398052006959915e-03 - - 4.1281130164861679e-02 -5.8211308717727661e-01 - <_> - - 0 -1 339 8.4067512943875045e-05 - - -2.3016390204429626e-01 1.2408539652824402e-01 - <_> - - 0 -1 340 1.7238859087228775e-02 - - 5.3966581821441650e-02 -5.8185648918151855e-01 - <_> - - 0 -1 341 -7.8677326440811157e-02 - - -4.0611150860786438e-01 5.6923508644104004e-02 - <_> - - 0 -1 342 5.5859591811895370e-03 - - 3.6842439323663712e-02 -5.6468677520751953e-01 - <_> - - 0 -1 343 -6.1322399415075779e-04 - - 1.7850470542907715e-01 -6.6888310015201569e-02 - <_> - - 0 -1 344 7.9400849062949419e-04 - - -7.8397832810878754e-02 3.0545571446418762e-01 - <_> - - 0 -1 345 1.2827199883759022e-02 - - 4.0437459945678711e-02 -6.4795708656311035e-01 - <_> - - 0 -1 346 1.1977979913353920e-02 - - -9.9379159510135651e-02 2.2672760486602783e-01 - <_> - - 0 -1 347 -4.9378769472241402e-03 - - 2.7063280344009399e-01 -8.3922103047370911e-02 - <_> - - 0 -1 348 2.0337730646133423e-02 - - 4.0057111531496048e-02 -6.1709612607955933e-01 - <_> - - 0 -1 349 -1.5826310217380524e-01 - - 3.7180110812187195e-01 -7.7644877135753632e-02 - <_> - - 0 -1 350 4.5150578953325748e-03 - - -1.4245720207691193e-01 1.9468970596790314e-01 - <_> - - 0 -1 351 -1.7942169681191444e-02 - - -7.2584807872772217e-01 2.9234779998660088e-02 - <_> - - 0 -1 352 5.2153151482343674e-03 - - 4.6004150062799454e-02 -4.5367568731307983e-01 - <_> - - 0 -1 353 -7.7863838523626328e-03 - - 1.7464269697666168e-01 -1.0989809781312943e-01 - <_> - - 0 -1 354 9.4133447855710983e-03 - - 3.4647628664970398e-02 -5.9836661815643311e-01 - <_> - - 0 -1 355 7.6218741014599800e-03 - - -1.0570260137319565e-01 2.0373369753360748e-01 - <_> - - 0 -1 356 2.1601879969239235e-02 - - -9.0930342674255371e-02 2.8870388865470886e-01 - <_> - - 0 -1 357 -1.1823089793324471e-02 - - -6.3036149740219116e-01 2.4082619696855545e-02 - <_> - - 0 -1 358 -2.0232979208230972e-02 - - -7.4202787876129150e-01 2.3521220311522484e-02 - <_> - - 0 -1 359 6.4510147785767913e-04 - - -5.5255789309740067e-02 1.6501660645008087e-01 - <_> - - 0 -1 360 -8.1876022741198540e-03 - - -5.7709318399429321e-01 3.5234641283750534e-02 - <_> - - 0 -1 361 -4.5044958824291825e-04 - - 1.8597809970378876e-01 -8.2436777651309967e-02 - <_> - - 0 -1 362 -2.7309779077768326e-02 - - -7.2045487165451050e-01 2.7683850377798080e-02 - <_> - - 0 -1 363 7.3051019571721554e-03 - - -7.5815990567207336e-02 1.2281800061464310e-01 - <_> - - 0 -1 364 7.2118180105462670e-04 - - -8.4706626832485199e-02 2.2123050689697266e-01 - <_> - - 0 -1 365 -5.5794708896428347e-04 - - 9.2200443148612976e-02 -5.1267310976982117e-02 - <_> - - 0 -1 366 -1.2906070332974195e-03 - - 2.3648509383201599e-01 -8.5636742413043976e-02 - <_> - - 0 -1 367 -2.3440949618816376e-02 - - -3.4175920486450195e-01 3.0355690047144890e-02 - <_> - - 0 -1 368 6.7003733420278877e-05 - - -1.7783120274543762e-01 1.0983660072088242e-01 - <_> - - 0 -1 369 -2.0913260523229837e-03 - - -3.2965481281280518e-01 4.8821929842233658e-02 - <_> - - 0 -1 370 5.2883368916809559e-03 - - 4.7602079808712006e-02 -4.2296901345252991e-01 - <_> - - 0 -1 371 1.0467220097780228e-01 - - 1.4557709917426109e-02 -5.1639598608016968e-01 - <_> - - 0 -1 372 4.1093688458204269e-02 - - 2.5569459423422813e-02 -6.7345750331878662e-01 - <_> - - 0 -1 373 4.5452991127967834e-01 - - -4.7321271151304245e-02 4.6472591161727905e-01 - <_> - - 0 -1 374 -4.4200271368026733e-03 - - 2.1729059517383575e-01 -8.0523736774921417e-02 - <_> - - 0 -1 375 -3.3253689762204885e-03 - - 1.1963640153408051e-01 -8.4737166762351990e-02 - <_> - - 0 -1 376 1.5223690308630466e-02 - - -8.9243628084659576e-02 2.2841119766235352e-01 - <_> - - 0 -1 377 -3.1223909929394722e-02 - - 1.4642609655857086e-01 -1.0129989683628082e-01 - <_> - - 0 -1 378 -7.2967536747455597e-02 - - 1.9779099524021149e-01 -9.9804528057575226e-02 - <_> - - 0 -1 379 4.3468710035085678e-02 - - -7.3893286287784576e-02 1.5711790323257446e-01 - <_> - - 0 -1 380 7.7427257783710957e-03 - - -9.0792253613471985e-02 2.4496759474277496e-01 - <_> - - 0 -1 381 -8.3488449454307556e-02 - - 1.7328590154647827e-01 -1.2881289422512054e-01 - <_> - - 0 -1 382 4.2111508548259735e-02 - - -1.4753210544586182e-01 1.3734489679336548e-01 - <_> - - 0 -1 383 9.6673727035522461e-02 - - -5.5196139961481094e-02 3.5633039474487305e-01 - <_> - - 0 -1 384 -8.8993981480598450e-03 - - -5.2619308233261108e-01 3.8890600204467773e-02 - <_> - - 0 -1 385 -2.3850830271840096e-02 - - 1.9245590269565582e-01 -1.0501539707183838e-01 - <_> - - 0 -1 386 -7.4902130290865898e-04 - - 2.4767409265041351e-01 -7.3859728872776031e-02 - <_> - - 0 -1 387 -2.3048849776387215e-02 - - -5.2203482389450073e-01 2.9538379982113838e-02 - <_> - - 0 -1 388 5.7920900871977210e-04 - - -8.0705501139163971e-02 2.4939849972724915e-01 - <_> - - 0 -1 389 -2.5435430929064751e-02 - - -6.5204900503158569e-01 1.6328070312738419e-02 - <_> - - 0 -1 390 1.7639160156250000e-02 - - 2.4694919586181641e-02 -6.8505227565765381e-01 - <_> - - 0 -1 391 2.0535739138722420e-02 - - 1.6518220305442810e-02 -4.2852258682250977e-01 - <_> - - 0 -1 392 1.1113280430436134e-02 - - -8.7159179151058197e-02 2.0620019733905792e-01 - <_> - 73 - -1.3217060565948486e+00 - - <_> - - 0 -1 393 1.4061849564313889e-02 - - -2.7372831106185913e-01 4.0178298950195312e-01 - <_> - - 0 -1 394 -3.3424530178308487e-02 - - 3.4338641166687012e-01 -1.5240709483623505e-01 - <_> - - 0 -1 395 -3.3982729073613882e-03 - - 3.0461141467094421e-01 -2.1628560125827789e-01 - <_> - - 0 -1 396 6.7393951117992401e-02 - - -5.3956210613250732e-02 3.3049640059471130e-01 - <_> - - 0 -1 397 -5.1544748246669769e-02 - - 3.8040369749069214e-01 -1.3342610001564026e-01 - <_> - - 0 -1 398 3.6630779504776001e-03 - - -1.7602029442787170e-01 2.1399669349193573e-01 - <_> - - 0 -1 399 7.8836623579263687e-03 - - 5.7061620056629181e-02 -5.1507431268692017e-01 - <_> - - 0 -1 400 -8.9480048045516014e-03 - - 2.2309969365596771e-01 -1.1905369907617569e-01 - <_> - - 0 -1 401 -5.5760587565600872e-04 - - 9.9965967237949371e-02 -2.5582858920097351e-01 - <_> - - 0 -1 402 9.5389392226934433e-03 - - -6.5531507134437561e-02 3.2462659478187561e-01 - <_> - - 0 -1 403 7.7904132194817066e-03 - - 4.5026030391454697e-02 -6.0688591003417969e-01 - <_> - - 0 -1 404 4.0692770853638649e-03 - - -6.2474351376295090e-02 1.5706950426101685e-01 - <_> - - 0 -1 405 3.1110940035432577e-03 - - -7.4468009173870087e-02 2.6008018851280212e-01 - <_> - - 0 -1 406 1.5651449561119080e-02 - - 2.5566350668668747e-02 -5.1725232601165771e-01 - <_> - - 0 -1 407 2.0446130633354187e-01 - - -7.6343096792697906e-02 3.3239069581031799e-01 - <_> - - 0 -1 408 -1.0169159621000290e-02 - - 1.6066810488700867e-01 -1.0915979743003845e-01 - <_> - - 0 -1 409 1.8947809934616089e-01 - - 5.3859941661357880e-02 -5.3987598419189453e-01 - <_> - - 0 -1 410 -1.4792400598526001e-01 - - 2.3854659497737885e-01 -1.1328209936618805e-01 - <_> - - 0 -1 411 -1.4830310642719269e-01 - - 3.6465111374855042e-01 -7.5315676629543304e-02 - <_> - - 0 -1 412 -1.3255329430103302e-01 - - 2.9195559024810791e-01 -9.4944156706333160e-02 - <_> - - 0 -1 413 -1.6390170902013779e-02 - - 3.9205119013786316e-01 -6.8502128124237061e-02 - <_> - - 0 -1 414 -6.3240979798138142e-03 - - -6.6337722539901733e-01 3.3776801079511642e-02 - <_> - - 0 -1 415 1.4740950427949429e-02 - - 4.3142370879650116e-02 -5.0169318914413452e-01 - <_> - - 0 -1 416 1.7102040350437164e-02 - - -1.7399680614471436e-01 2.0360749959945679e-01 - <_> - - 0 -1 417 -7.5232060626149178e-03 - - 2.6142400503158569e-01 -8.9473031461238861e-02 - <_> - - 0 -1 418 8.0899456515908241e-03 - - 4.9131639301776886e-02 -3.8692459464073181e-01 - <_> - - 0 -1 419 -1.1191490106284618e-02 - - -7.1513938903808594e-01 2.9279340058565140e-02 - <_> - - 0 -1 420 -6.4855492382775992e-05 - - 1.1478959769010544e-01 -1.1958249658346176e-01 - <_> - - 0 -1 421 2.6316290721297264e-02 - - 2.6085929945111275e-02 -8.0710291862487793e-01 - <_> - - 0 -1 422 -1.3249419629573822e-02 - - -3.2114431262016296e-01 7.5486088171601295e-03 - <_> - - 0 -1 423 6.2180599197745323e-03 - - 5.5559240281581879e-02 -4.0652489662170410e-01 - <_> - - 0 -1 424 1.7249800264835358e-01 - - 4.0750358253717422e-02 -5.0563377141952515e-01 - <_> - - 0 -1 425 -2.1679839119315147e-02 - - -6.2354528903961182e-01 2.6478029787540436e-02 - <_> - - 0 -1 426 1.6703149303793907e-02 - - -1.3794849812984467e-01 1.3749359548091888e-01 - <_> - - 0 -1 427 -9.0457811951637268e-02 - - 2.3645150661468506e-01 -8.2285732030868530e-02 - <_> - - 0 -1 428 -3.1922020018100739e-02 - - 2.5785401463508606e-01 -4.7243330627679825e-02 - <_> - - 0 -1 429 -1.0785860009491444e-02 - - 1.9156840443611145e-01 -1.0926260054111481e-01 - <_> - - 0 -1 430 1.5356860123574734e-02 - - -9.1598026454448700e-02 1.4929470419883728e-01 - <_> - - 0 -1 431 -2.9838619753718376e-02 - - 3.6931860446929932e-01 -6.9861568510532379e-02 - <_> - - 0 -1 432 1.5088700456544757e-03 - - -6.8405367434024811e-02 1.1674939841032028e-01 - <_> - - 0 -1 433 -3.9159361273050308e-02 - - -5.1392030715942383e-01 3.7696298211812973e-02 - <_> - - 0 -1 434 9.6957627683877945e-03 - - 1.7815299332141876e-02 -4.6859109401702881e-01 - <_> - - 0 -1 435 7.2683161124587059e-04 - - -1.3107830286026001e-01 1.5749000012874603e-01 - <_> - - 0 -1 436 3.9894571527838707e-03 - - 4.5223500579595566e-02 -4.2377158999443054e-01 - <_> - - 0 -1 437 -5.1600970327854156e-03 - - -5.1509988307952881e-01 3.4805640578269958e-02 - <_> - - 0 -1 438 -2.3738930001854897e-02 - - 2.2136999666690826e-01 -8.4229230880737305e-02 - <_> - - 0 -1 439 1.4563770033419132e-02 - - -8.9808702468872070e-02 2.1864689886569977e-01 - <_> - - 0 -1 440 7.2849658317863941e-04 - - -7.0903539657592773e-02 1.2049960345029831e-01 - <_> - - 0 -1 441 -3.1149860471487045e-02 - - -6.0673481225967407e-01 2.9479870572686195e-02 - <_> - - 0 -1 442 1.6768559813499451e-02 - - 2.3652590811252594e-02 -4.1640669107437134e-01 - <_> - - 0 -1 443 -8.9033348485827446e-03 - - -5.5360221862792969e-01 3.0212569981813431e-02 - <_> - - 0 -1 444 5.3961132653057575e-04 - - -5.8847390115261078e-02 1.5313039720058441e-01 - <_> - - 0 -1 445 -8.3886012434959412e-03 - - -7.0527809858322144e-01 2.5097940117120743e-02 - <_> - - 0 -1 446 -3.4085000515915453e-04 - - 1.7718690633773804e-01 -1.0484679788351059e-01 - <_> - - 0 -1 447 6.1828009784221649e-03 - - 3.3038828521966934e-02 -4.9485749006271362e-01 - <_> - - 0 -1 448 8.2702568033710122e-04 - - -1.8448309600353241e-01 7.7788598835468292e-02 - <_> - - 0 -1 449 -6.0980831040069461e-04 - - 1.9595789909362793e-01 -8.3752043545246124e-02 - <_> - - 0 -1 450 1.2273030006326735e-04 - - -8.1470809876918793e-02 1.2093000113964081e-01 - <_> - - 0 -1 451 4.6565610682591796e-04 - - -9.5331951975822449e-02 2.2882999479770660e-01 - <_> - - 0 -1 452 -2.1647799760103226e-02 - - -6.9338059425354004e-01 1.7061540856957436e-02 - <_> - - 0 -1 453 5.9500660747289658e-02 - - 5.2603170275688171e-02 -2.7821978926658630e-01 - <_> - - 0 -1 454 2.5365199893712997e-02 - - 8.9954538270831108e-03 -6.3834899663925171e-01 - <_> - - 0 -1 455 -3.9667091332376003e-03 - - -3.1752720475196838e-01 4.7011289745569229e-02 - <_> - - 0 -1 456 8.2784779369831085e-03 - - -5.4444059729576111e-02 2.2199389338493347e-01 - <_> - - 0 -1 457 -2.2125450894236565e-02 - - -6.7381507158279419e-01 2.2545639425516129e-02 - <_> - - 0 -1 458 -1.8015919253230095e-02 - - 1.9720579683780670e-01 -4.1927978396415710e-02 - <_> - - 0 -1 459 8.4426235407590866e-03 - - -6.0547191649675369e-02 2.6492148637771606e-01 - <_> - - 0 -1 460 -3.2566841691732407e-02 - - -7.1072858572006226e-01 1.1840609833598137e-02 - <_> - - 0 -1 461 -4.7655492089688778e-03 - - 1.3843970000743866e-01 -1.1505319923162460e-01 - <_> - - 0 -1 462 5.6936290115118027e-02 - - -6.1339709907770157e-02 2.6656940579414368e-01 - <_> - - 0 -1 463 1.3741460442543030e-01 - - -1.1396790295839310e-01 1.7893630266189575e-01 - <_> - - 0 -1 464 3.4123009536415339e-03 - - -6.6894076764583588e-02 2.5956168770790100e-01 - <_> - - 0 -1 465 1.1629019863903522e-02 - - -1.3462069630622864e-01 1.5184959769248962e-01 - <_> - 102 - -1.4393190145492554e+00 - - <_> - - 0 -1 466 -3.0265800654888153e-02 - - 3.8096681237220764e-01 -1.3377699255943298e-01 - <_> - - 0 -1 467 -1.8889939785003662e-01 - - 3.4722200036048889e-01 -1.1434909701347351e-01 - <_> - - 0 -1 468 4.4756601564586163e-03 - - -1.7790019512176514e-01 1.9837200641632080e-01 - <_> - - 0 -1 469 -9.2559102922677994e-03 - - 2.5532960891723633e-01 -9.5685683190822601e-02 - <_> - - 0 -1 470 1.0375189594924450e-02 - - -1.2901009619235992e-01 2.0472739636898041e-01 - <_> - - 0 -1 471 2.5273600220680237e-01 - - -7.7913478016853333e-02 3.4137108922004700e-01 - <_> - - 0 -1 472 7.9952310770750046e-03 - - 1.1916679888963699e-01 -4.1383698582649231e-01 - <_> - - 0 -1 473 6.6510503529570997e-05 - - -2.3053060472011566e-01 1.3289320468902588e-01 - <_> - - 0 -1 474 1.0429739952087402e-02 - - -6.2206111848354340e-02 2.9351210594177246e-01 - <_> - - 0 -1 475 -9.4513092190027237e-03 - - 1.6715039312839508e-01 -1.1613100022077560e-01 - <_> - - 0 -1 476 -1.3863059878349304e-01 - - -4.5146858692169189e-01 7.2572976350784302e-02 - <_> - - 0 -1 477 -1.5423299744725227e-02 - - -4.2771181464195251e-01 2.4840919300913811e-02 - <_> - - 0 -1 478 -6.5782992169260979e-03 - - -6.5407878160476685e-01 4.0261831134557724e-02 - <_> - - 0 -1 479 -6.8917557655368000e-05 - - 2.0682600140571594e-01 -1.1952479928731918e-01 - <_> - - 0 -1 480 7.1416288847103715e-05 - - -1.6258999705314636e-01 1.5189890563488007e-01 - <_> - - 0 -1 481 1.3548660278320312e-01 - - -5.0455428659915924e-02 4.7124901413917542e-01 - <_> - - 0 -1 482 1.1286230292171240e-03 - - -1.9349409639835358e-01 1.4920289814472198e-01 - <_> - - 0 -1 483 3.7687130272388458e-02 - - -6.5130472648888826e-04 -5.5662167072296143e-01 - <_> - - 0 -1 484 -1.7772499471902847e-02 - - -5.7330471277236938e-01 4.6251270920038223e-02 - <_> - - 0 -1 485 -1.4152459800243378e-02 - - -7.9059988260269165e-01 1.5357020311057568e-02 - <_> - - 0 -1 486 -1.9447410479187965e-02 - - 2.1232390403747559e-01 -1.0219439864158630e-01 - <_> - - 0 -1 487 1.2915019877254963e-02 - - -7.8864462673664093e-02 1.4578649401664734e-01 - <_> - - 0 -1 488 7.7283121645450592e-03 - - -1.3381069898605347e-01 2.0553180575370789e-01 - <_> - - 0 -1 489 -2.6421029120683670e-02 - - 2.7290409803390503e-01 -8.4103830158710480e-02 - <_> - - 0 -1 490 -2.1642580628395081e-02 - - 2.1656160056591034e-01 -9.9797606468200684e-02 - <_> - - 0 -1 491 -1.8604170531034470e-02 - - 3.1678178906440735e-01 -6.8464621901512146e-02 - <_> - - 0 -1 492 7.9184472560882568e-03 - - 3.8932591676712036e-02 -5.8496218919754028e-01 - <_> - - 0 -1 493 -9.0868779807351530e-05 - - 1.1835379898548126e-01 -2.6939970254898071e-01 - <_> - - 0 -1 494 -6.3271610997617245e-05 - - 1.4836210012435913e-01 -1.4140149950981140e-01 - <_> - - 0 -1 495 3.0123859178274870e-03 - - 4.7559700906276703e-02 -3.1680768728256226e-01 - <_> - - 0 -1 496 2.0202860236167908e-02 - - 3.6336939781904221e-02 -4.9587869644165039e-01 - <_> - - 0 -1 497 6.8112947046756744e-02 - - -6.3601806759834290e-02 3.7456488609313965e-01 - <_> - - 0 -1 498 -6.1344921588897705e-02 - - 3.7039840221405029e-01 -6.2690317630767822e-02 - <_> - - 0 -1 499 -2.3922309279441833e-02 - - -3.4753319621086121e-01 5.6829240173101425e-02 - <_> - - 0 -1 500 4.4279401190578938e-03 - - 3.1897440552711487e-02 -5.0859087705612183e-01 - <_> - - 0 -1 501 -9.2366456985473633e-02 - - -4.8896598815917969e-01 9.9938698112964630e-03 - <_> - - 0 -1 502 -3.1878310255706310e-03 - - 8.5749432444572449e-02 -2.3823440074920654e-01 - <_> - - 0 -1 503 6.2605291604995728e-03 - - 2.4412810802459717e-02 -5.5001372098922729e-01 - <_> - - 0 -1 504 2.1717049181461334e-02 - - -8.4798701107501984e-02 2.1824799478054047e-01 - <_> - - 0 -1 505 1.0295960120856762e-02 - - -1.0329149663448334e-01 1.9458709657192230e-01 - <_> - - 0 -1 506 1.2149630114436150e-02 - - 3.2223898917436600e-02 -5.9328657388687134e-01 - <_> - - 0 -1 507 1.9116830080747604e-02 - - 3.0940750613808632e-02 -4.5388719439506531e-01 - <_> - - 0 -1 508 7.1067700628191233e-04 - - -1.5458069741725922e-01 1.2622979283332825e-01 - <_> - - 0 -1 509 -2.9427420347929001e-02 - - 2.0704819262027740e-01 -8.6181886494159698e-02 - <_> - - 0 -1 510 -3.7067469675093889e-03 - - -5.1559269428253174e-01 3.8358908146619797e-02 - <_> - - 0 -1 511 6.0146670875838026e-05 - - -1.0236179828643799e-01 8.8405437767505646e-02 - <_> - - 0 -1 512 -6.8713612563442439e-05 - - 1.9844369590282440e-01 -9.9444359540939331e-02 - <_> - - 0 -1 513 -8.4833398461341858e-02 - - -3.9009338617324829e-01 3.9758160710334778e-02 - <_> - - 0 -1 514 1.1545339599251747e-02 - - 2.9910489916801453e-02 -5.0215488672256470e-01 - <_> - - 0 -1 515 1.2721769744530320e-03 - - 3.5788349807262421e-02 -3.8562840223312378e-01 - <_> - - 0 -1 516 3.7894061207771301e-01 - - 4.2915120720863342e-02 -3.7268239259719849e-01 - <_> - - 0 -1 517 5.8728668838739395e-02 - - 1.7506660893559456e-02 -7.1293348073959351e-01 - <_> - - 0 -1 518 -7.2667418862693012e-05 - - 8.5237413644790649e-02 -1.7960679531097412e-01 - <_> - - 0 -1 519 -2.5661939289420843e-03 - - -4.9419000744819641e-01 2.1106749773025513e-02 - <_> - - 0 -1 520 -6.2544771935790777e-05 - - 1.2607279419898987e-01 -1.3581070303916931e-01 - <_> - - 0 -1 521 -3.3382088877260685e-03 - - -3.4254759550094604e-01 3.1329080462455750e-02 - <_> - - 0 -1 522 4.0032588876783848e-03 - - 3.5334181040525436e-02 -4.7854140400886536e-01 - <_> - - 0 -1 523 7.8725446655880660e-05 - - -8.6509391665458679e-02 1.0980690270662308e-01 - <_> - - 0 -1 524 3.5411381395533681e-04 - - -8.6622327566146851e-02 1.8158109486103058e-01 - <_> - - 0 -1 525 -1.0032930225133896e-01 - - -4.1181001067161560e-01 4.0799010545015335e-02 - <_> - - 0 -1 526 4.5734178274869919e-02 - - 2.5063000619411469e-02 -5.8010631799697876e-01 - <_> - - 0 -1 527 1.4357109554111958e-02 - - 2.7373999357223511e-02 -3.1119069457054138e-01 - <_> - - 0 -1 528 4.2823958210647106e-03 - - -1.2122060358524323e-01 1.3006800413131714e-01 - <_> - - 0 -1 529 -1.9169269129633904e-02 - - 3.5471150279045105e-01 -5.8697901666164398e-02 - <_> - - 0 -1 530 2.0371939986944199e-02 - - 2.7047039940953255e-02 -6.2161028385162354e-01 - <_> - - 0 -1 531 -1.1981659568846226e-02 - - 1.7628869414329529e-01 -9.4315692782402039e-02 - <_> - - 0 -1 532 -9.4278322649188340e-05 - - 1.5070499479770660e-01 -1.0712909698486328e-01 - <_> - - 0 -1 533 1.0182280093431473e-02 - - 1.6143349930644035e-02 -3.5039150714874268e-01 - <_> - - 0 -1 534 -5.2059080451726913e-02 - - -3.1214600801467896e-01 4.7784190624952316e-02 - <_> - - 0 -1 535 -2.4943469092249870e-02 - - -7.9333961009979248e-01 -4.0430951048620045e-04 - <_> - - 0 -1 536 -6.2259827973321080e-04 - - 2.0438310503959656e-01 -7.1274451911449432e-02 - <_> - - 0 -1 537 -5.6859298638300970e-05 - - 8.6150057613849640e-02 -6.5871208906173706e-02 - <_> - - 0 -1 538 4.0834350511431694e-04 - - -1.0517060011625290e-01 2.2246970236301422e-01 - <_> - - 0 -1 539 -1.1075460352003574e-03 - - 4.6430539339780807e-02 -3.1908679753541946e-02 - <_> - - 0 -1 540 -1.2366239912807941e-02 - - -6.2071430683135986e-01 2.6164690032601357e-02 - <_> - - 0 -1 541 -3.5476218909025192e-02 - - 1.2305829674005508e-01 -5.1929820328950882e-02 - <_> - - 0 -1 542 -2.3794448934495449e-03 - - -3.7954199314117432e-01 4.1748851537704468e-02 - <_> - - 0 -1 543 1.3966970145702362e-03 - - -8.5148677229881287e-02 1.5120379626750946e-01 - <_> - - 0 -1 544 5.1437891088426113e-03 - - -8.1664428114891052e-02 1.7895880341529846e-01 - <_> - - 0 -1 545 -1.2399390339851379e-01 - - -6.6589808464050293e-01 9.5204189419746399e-03 - <_> - - 0 -1 546 3.9390850812196732e-02 - - 1.8253650516271591e-02 -7.6372909545898438e-01 - <_> - - 0 -1 547 2.9372270219027996e-03 - - 2.2626129910349846e-02 -3.2338750362396240e-01 - <_> - - 0 -1 548 1.8166509270668030e-01 - - -6.1867389827966690e-02 2.2989329695701599e-01 - <_> - - 0 -1 549 8.9275211095809937e-02 - - -8.4801591932773590e-02 2.1090969443321228e-01 - <_> - - 0 -1 550 1.7920130863785744e-02 - - -6.6390097141265869e-02 2.2434620559215546e-01 - <_> - - 0 -1 551 5.5024111643433571e-03 - - -5.5913619697093964e-02 1.0791579633951187e-01 - <_> - - 0 -1 552 -1.2631840072572231e-02 - - 3.3521848917007446e-01 -4.7069478780031204e-02 - <_> - - 0 -1 553 8.2040186971426010e-03 - - 5.2167478948831558e-02 -5.8306807279586792e-01 - <_> - - 0 -1 554 2.1543860435485840e-02 - - 1.0371980257332325e-02 -8.1690818071365356e-01 - <_> - - 0 -1 555 -4.2779878713190556e-03 - - -3.4370610117912292e-01 3.4835658967494965e-02 - <_> - - 0 -1 556 9.5721762627363205e-03 - - 1.6037449240684509e-02 -7.5921469926834106e-01 - <_> - - 0 -1 557 5.9499992057681084e-03 - - -8.3513863384723663e-02 9.3756176531314850e-02 - <_> - - 0 -1 558 -8.6880378425121307e-02 - - 1.9779199361801147e-01 -7.3568522930145264e-02 - <_> - - 0 -1 559 5.7690730318427086e-03 - - -6.1134330928325653e-02 8.2671441137790680e-02 - <_> - - 0 -1 560 1.4806459844112396e-01 - - 3.9653290063142776e-02 -4.0852621197700500e-01 - <_> - - 0 -1 561 -1.8668269738554955e-02 - - -6.6713011264801025e-01 1.5644509345293045e-02 - <_> - - 0 -1 562 1.0142670013010502e-02 - - 2.1148789674043655e-02 -5.6108218431472778e-01 - <_> - - 0 -1 563 -2.6263110339641571e-03 - - 8.8142313063144684e-02 -5.8600831776857376e-02 - <_> - - 0 -1 564 3.0406240839511156e-03 - - -6.9973178207874298e-02 1.9421130418777466e-01 - <_> - - 0 -1 565 -4.0523111820220947e-03 - - -3.9898431301116943e-01 2.8451900929212570e-02 - <_> - - 0 -1 566 3.3293411252088845e-04 - - -9.2018708586692810e-02 1.5213729441165924e-01 - <_> - - 0 -1 567 -1.4471479516942054e-04 - - 1.3288819789886475e-01 -8.6978733539581299e-02 - <_> - 115 - -1.3500690460205078e+00 - - <_> - - 0 -1 568 -3.0528889968991280e-02 - - 3.3611279726028442e-01 -1.6058790683746338e-01 - <_> - - 0 -1 569 -6.8238358944654465e-03 - - 2.5108391046524048e-01 -2.5783839821815491e-01 - <_> - - 0 -1 570 -2.6070050895214081e-02 - - 3.1767010688781738e-01 -1.1115620285272598e-01 - <_> - - 0 -1 571 1.6021650517359376e-03 - - -1.0961770266294479e-01 1.5613310039043427e-01 - <_> - - 0 -1 572 -3.4617539495229721e-02 - - 2.6143959164619446e-01 -9.5556437969207764e-02 - <_> - - 0 -1 573 8.2549892365932465e-02 - - -3.5977210849523544e-02 3.1897369027137756e-01 - <_> - - 0 -1 574 -1.0799080133438110e-01 - - -4.6619871258735657e-01 9.6537977457046509e-02 - <_> - - 0 -1 575 -7.1096293628215790e-02 - - -3.2909411191940308e-01 2.0170759409666061e-02 - <_> - - 0 -1 576 6.1022722721099854e-01 - - -4.1085191071033478e-02 5.9197807312011719e-01 - <_> - - 0 -1 577 -9.6180485561490059e-03 - - 1.8453270196914673e-01 -1.2569570541381836e-01 - <_> - - 0 -1 578 -2.1656749770045280e-02 - - 3.5588631033897400e-01 -6.5419547259807587e-02 - <_> - - 0 -1 579 3.2288730144500732e-03 - - -1.5971140563488007e-01 1.4421769976615906e-01 - <_> - - 0 -1 580 3.6023850552737713e-03 - - -1.3012659549713135e-01 1.8485300242900848e-01 - <_> - - 0 -1 581 1.2242549657821655e-01 - - -5.0962008535861969e-02 4.7872740030288696e-01 - <_> - - 0 -1 582 -3.9816841483116150e-02 - - 1.9110150635242462e-01 -1.4904150366783142e-01 - <_> - - 0 -1 583 1.6565460711717606e-02 - - 2.5038570165634155e-02 -2.6608109474182129e-01 - <_> - - 0 -1 584 6.7314971238374710e-03 - - 3.6166220903396606e-02 -5.7512372732162476e-01 - <_> - - 0 -1 585 -2.3882629349827766e-02 - - 1.8172420561313629e-01 -1.0134089738130569e-01 - <_> - - 0 -1 586 1.6876630485057831e-02 - - 4.9995709210634232e-02 -4.9644881486892700e-01 - <_> - - 0 -1 587 8.1463292241096497e-02 - - 5.0819691270589828e-02 -3.0929270386695862e-01 - <_> - - 0 -1 588 1.5678660571575165e-01 - - -8.4641791880130768e-02 2.0975899696350098e-01 - <_> - - 0 -1 589 1.0736989788711071e-02 - - -5.8876618742942810e-02 2.6735648512840271e-01 - <_> - - 0 -1 590 -1.6250779852271080e-02 - - 2.1858249604701996e-01 -1.2752789258956909e-01 - <_> - - 0 -1 591 -5.1399830728769302e-02 - - 1.7071659862995148e-01 -5.6497618556022644e-02 - <_> - - 0 -1 592 1.8661050125956535e-03 - - 4.0338598191738129e-02 -4.7404500842094421e-01 - <_> - - 0 -1 593 -4.9435410648584366e-02 - - 1.5376000106334686e-01 -4.1785929352045059e-02 - <_> - - 0 -1 594 6.9667182862758636e-02 - - -5.8853909373283386e-02 3.0999648571014404e-01 - <_> - - 0 -1 595 -7.8118540346622467e-02 - - -4.1095170378684998e-01 5.2306879311800003e-02 - <_> - - 0 -1 596 -8.6161941289901733e-03 - - -5.6689429283142090e-01 2.8680460527539253e-02 - <_> - - 0 -1 597 6.8916371092200279e-03 - - -9.5778420567512512e-02 1.6806310415267944e-01 - <_> - - 0 -1 598 8.4734419942833483e-05 - - -1.4760659635066986e-01 1.2780749797821045e-01 - <_> - - 0 -1 599 -6.5460228361189365e-03 - - -5.3539127111434937e-01 2.1142380312085152e-02 - <_> - - 0 -1 600 -1.1936970055103302e-02 - - 2.4896189570426941e-01 -6.5905913710594177e-02 - <_> - - 0 -1 601 1.6013499349355698e-02 - - -7.5163930654525757e-02 9.2000097036361694e-02 - <_> - - 0 -1 602 -1.7978820204734802e-01 - - 3.1222209334373474e-01 -5.4680030792951584e-02 - <_> - - 0 -1 603 4.2936030030250549e-01 - - -4.6744249761104584e-02 4.6717110276222229e-01 - <_> - - 0 -1 604 1.7629809677600861e-01 - - -1.1967620253562927e-01 2.3036129772663116e-01 - <_> - - 0 -1 605 4.3498061597347260e-02 - - 2.1376779302954674e-02 -3.4026959538459778e-01 - <_> - - 0 -1 606 1.6895519569516182e-02 - - -1.3055689632892609e-01 1.8340429663658142e-01 - <_> - - 0 -1 607 1.8535379320383072e-02 - - -7.5424313545227051e-02 2.3549360036849976e-01 - <_> - - 0 -1 608 1.7329430207610130e-02 - - -8.5383981466293335e-02 2.0364040136337280e-01 - <_> - - 0 -1 609 8.6630741134285927e-03 - - 3.8591001182794571e-02 -6.2014609575271606e-01 - <_> - - 0 -1 610 5.7052681222558022e-03 - - 3.1247280538082123e-02 -4.0705290436744690e-01 - <_> - - 0 -1 611 -1.8030379433184862e-03 - - 1.9578510522842407e-01 -1.4333669841289520e-01 - <_> - - 0 -1 612 -1.8787920475006104e-02 - - -8.6914187669754028e-01 1.6981970518827438e-02 - <_> - - 0 -1 613 1.8600920215249062e-02 - - -8.1815309822559357e-02 1.8913879990577698e-01 - <_> - - 0 -1 614 8.4120598330628127e-05 - - -1.2899120151996613e-01 1.2110509723424911e-01 - <_> - - 0 -1 615 -5.6057129986584187e-03 - - -4.6983009576797485e-01 1.5989070758223534e-02 - <_> - - 0 -1 616 3.5192570649087429e-03 - - 3.6193020641803741e-02 -4.4841128587722778e-01 - <_> - - 0 -1 617 1.7741440096870065e-03 - - -4.3303471058607101e-02 1.3955749571323395e-01 - <_> - - 0 -1 618 -1.6350420191884041e-03 - - 1.3950680196285248e-01 -1.1241529881954193e-01 - <_> - - 0 -1 619 6.4794770441949368e-03 - - -6.0051560401916504e-02 7.2894193232059479e-02 - <_> - - 0 -1 620 -2.0324749872088432e-02 - - 4.2978158593177795e-01 -3.9684608578681946e-02 - <_> - - 0 -1 621 -6.3453041948378086e-03 - - -2.5338429212570190e-01 2.4293940514326096e-02 - <_> - - 0 -1 622 9.0959975495934486e-03 - - 3.4088779240846634e-02 -4.5187300443649292e-01 - <_> - - 0 -1 623 1.6163580119609833e-02 - - 6.8225921131670475e-03 -7.2057378292083740e-01 - <_> - - 0 -1 624 -1.1229310184717178e-02 - - -6.1919862031936646e-01 2.2291479632258415e-02 - <_> - - 0 -1 625 -1.7633280158042908e-01 - - -6.8191158771514893e-01 8.8407555595040321e-03 - <_> - - 0 -1 626 1.9296240061521530e-02 - - -7.9629048705101013e-02 2.0130670070648193e-01 - <_> - - 0 -1 627 1.0565440170466900e-02 - - -8.3298452198505402e-02 1.8727609515190125e-01 - <_> - - 0 -1 628 -6.7616738379001617e-03 - - 2.0695839822292328e-01 -8.1318996846675873e-02 - <_> - - 0 -1 629 -2.3086878936737776e-03 - - -2.7981218695640564e-01 2.9389770701527596e-02 - <_> - - 0 -1 630 -6.9189318455755711e-03 - - -5.0955861806869507e-01 2.9100190848112106e-02 - <_> - - 0 -1 631 -1.9592609256505966e-02 - - 1.2486959993839264e-01 -6.6669858992099762e-02 - <_> - - 0 -1 632 -5.6698801927268505e-04 - - 1.7725250124931335e-01 -7.5555630028247833e-02 - <_> - - 0 -1 633 6.5187108702957630e-04 - - -4.6831708401441574e-02 1.3773879408836365e-01 - <_> - - 0 -1 634 -4.3244438711553812e-04 - - 1.7505480349063873e-01 -8.2217328250408173e-02 - <_> - - 0 -1 635 3.2091289758682251e-03 - - 2.5890430435538292e-02 -3.5460329055786133e-01 - <_> - - 0 -1 636 -2.8899360448122025e-02 - - -7.3152142763137817e-01 1.8054809421300888e-02 - <_> - - 0 -1 637 9.8803699074778706e-05 - - -3.8318630307912827e-02 3.4345138818025589e-02 - <_> - - 0 -1 638 -2.2848090156912804e-03 - - -3.6034908890724182e-01 3.8051728159189224e-02 - <_> - - 0 -1 639 2.2300830483436584e-01 - - -3.5387709736824036e-02 4.1186928749084473e-01 - <_> - - 0 -1 640 3.8663020823150873e-03 - - -1.1479409784078598e-01 1.1966259777545929e-01 - <_> - - 0 -1 641 3.6781090311706066e-03 - - -8.8786207139492035e-02 2.0931220054626465e-01 - <_> - - 0 -1 642 3.6886930465698242e-03 - - 4.2065251618623734e-02 -3.3116719126701355e-01 - <_> - - 0 -1 643 -5.0008428096771240e-01 - - 4.5823198556900024e-01 -3.0016450211405754e-02 - <_> - - 0 -1 644 3.2457590568810701e-03 - - -5.8139480650424957e-02 2.2444559633731842e-01 - <_> - - 0 -1 645 -7.2515371721237898e-04 - - 8.5745699703693390e-02 -2.1644710004329681e-01 - <_> - - 0 -1 646 7.5624123215675354e-02 - - -7.2869867086410522e-02 1.8093410134315491e-01 - <_> - - 0 -1 647 -1.4011479914188385e-01 - - -3.0494970083236694e-01 3.2226338982582092e-02 - <_> - - 0 -1 648 1.2914249673485756e-03 - - -1.6519309580326080e-01 7.9698972404003143e-02 - <_> - - 0 -1 649 4.8063062131404877e-03 - - -5.1163140684366226e-02 1.5284930169582367e-01 - <_> - - 0 -1 650 1.9700510427355766e-02 - - -2.1467920392751694e-02 5.8986312150955200e-01 - <_> - - 0 -1 651 -2.8246549889445305e-02 - - -3.6110070347785950e-01 2.1594600751996040e-02 - <_> - - 0 -1 652 3.1838800758123398e-02 - - 2.1388119086623192e-02 -5.5919158458709717e-01 - <_> - - 0 -1 653 5.2926959469914436e-03 - - 1.7141470685601234e-02 -3.2453680038452148e-01 - <_> - - 0 -1 654 9.3176206573843956e-03 - - -6.9147951900959015e-02 1.8778069317340851e-01 - <_> - - 0 -1 655 1.9812679965980351e-04 - - -7.1025170385837555e-02 1.1662720143795013e-01 - <_> - - 0 -1 656 1.7203340306878090e-02 - - -8.3476826548576355e-02 1.4484919607639313e-01 - <_> - - 0 -1 657 8.0548562109470367e-03 - - 2.1444449201226234e-02 -2.7631008625030518e-01 - <_> - - 0 -1 658 6.7419088445603848e-03 - - 3.4134138375520706e-02 -3.5553708672523499e-01 - <_> - - 0 -1 659 5.7136920077027753e-05 - - -6.9932900369167328e-02 8.2227133214473724e-02 - <_> - - 0 -1 660 -6.0014430346200243e-05 - - 1.5333159267902374e-01 -8.0194279551506042e-02 - <_> - - 0 -1 661 -6.6377622715663165e-05 - - 7.4058532714843750e-02 -4.3576911091804504e-02 - <_> - - 0 -1 662 7.0605492510367185e-05 - - -1.1924110352993011e-01 1.1573670059442520e-01 - <_> - - 0 -1 663 7.2301438194699585e-05 - - -7.0231847465038300e-02 7.9363830387592316e-02 - <_> - - 0 -1 664 -1.4867830323055387e-03 - - 1.2457609921693802e-01 -1.0762879997491837e-01 - <_> - - 0 -1 665 -5.2434820681810379e-03 - - 1.1167749762535095e-01 -6.1491239815950394e-02 - <_> - - 0 -1 666 7.8055239282548428e-03 - - -4.9680050462484360e-02 3.0463930964469910e-01 - <_> - - 0 -1 667 1.6715789213776588e-02 - - 2.4268470704555511e-02 -5.6414997577667236e-01 - <_> - - 0 -1 668 -1.9779430702328682e-02 - - 1.2931020557880402e-01 -1.0140080004930496e-01 - <_> - - 0 -1 669 -6.7752218456007540e-05 - - 7.7363066375255585e-02 -8.7603732943534851e-02 - <_> - - 0 -1 670 -1.2943330220878124e-02 - - -8.6929148435592651e-01 1.5804219990968704e-02 - <_> - - 0 -1 671 -1.2546810321509838e-02 - - -1.3507589697837830e-01 4.5630618929862976e-02 - <_> - - 0 -1 672 7.9727862030267715e-03 - - 4.0577929466962814e-02 -3.4091338515281677e-01 - <_> - - 0 -1 673 -6.3152899965643883e-03 - - 1.3729919493198395e-01 -5.6167159229516983e-02 - <_> - - 0 -1 674 -3.6897659301757812e-03 - - 1.6393260657787323e-01 -9.1416403651237488e-02 - <_> - - 0 -1 675 5.0578881055116653e-03 - - -8.0079726874828339e-02 1.4337129890918732e-01 - <_> - - 0 -1 676 -2.9933569952845573e-02 - - -5.3267621994018555e-01 2.2731220349669456e-02 - <_> - - 0 -1 677 7.0810988545417786e-03 - - -7.3218218982219696e-02 1.0275089740753174e-01 - <_> - - 0 -1 678 5.0813790410757065e-02 - - 5.1686890423297882e-02 -2.5446221232414246e-01 - <_> - - 0 -1 679 4.7044758684933186e-03 - - -5.7290758937597275e-02 7.6064832508563995e-02 - <_> - - 0 -1 680 4.6408819034695625e-03 - - 5.5998690426349640e-02 -2.1722699701786041e-01 - <_> - - 0 -1 681 -9.5121748745441437e-03 - - 1.8128600716590881e-01 -3.7724230438470840e-02 - <_> - - 0 -1 682 2.5726249441504478e-03 - - -1.2384580075740814e-01 1.4219340682029724e-01 - <_> - 128 - -1.3960490226745605e+00 - - <_> - - 0 -1 683 1.8433019518852234e-02 - - -1.6187410056591034e-01 3.3512639999389648e-01 - <_> - - 0 -1 684 4.8202150501310825e-03 - - -9.7200833261013031e-02 2.7556920051574707e-01 - <_> - - 0 -1 685 2.1450810134410858e-02 - - -1.0136549919843674e-01 3.9221191406250000e-01 - <_> - - 0 -1 686 2.0199500024318695e-02 - - -1.0415519773960114e-01 3.4857091307640076e-01 - <_> - - 0 -1 687 1.5460439957678318e-02 - - -1.8147130310535431e-01 2.2965760529041290e-01 - <_> - - 0 -1 688 1.2114670127630234e-02 - - -9.5579452812671661e-02 3.3212649822235107e-01 - <_> - - 0 -1 689 1.6616169363260269e-02 - - -7.5106747448444366e-02 3.4756600856781006e-01 - <_> - - 0 -1 690 -1.5129039995372295e-02 - - 1.3962389528751373e-01 -1.1505120247602463e-01 - <_> - - 0 -1 691 -7.0729628205299377e-02 - - 2.6836109161376953e-01 -1.0165339708328247e-01 - <_> - - 0 -1 692 2.2831759415566921e-03 - - 4.4351879507303238e-02 -4.6322458982467651e-01 - <_> - - 0 -1 693 5.5853649973869324e-03 - - 9.1951683163642883e-02 -3.1472569704055786e-01 - <_> - - 0 -1 694 -4.0678508579730988e-02 - - 1.4710660278797150e-01 -7.2650589048862457e-02 - <_> - - 0 -1 695 -1.3589780032634735e-01 - - -5.0535297393798828e-01 4.6995479613542557e-02 - <_> - - 0 -1 696 -3.8497470319271088e-02 - - -3.7170431017875671e-01 5.5208358913660049e-02 - <_> - - 0 -1 697 2.7928350027650595e-03 - - -1.1620769649744034e-01 1.9377970695495605e-01 - <_> - - 0 -1 698 5.3412551060318947e-03 - - 1.2964010238647461e-02 -4.9244490265846252e-01 - <_> - - 0 -1 699 -2.6604509912431240e-03 - - -4.5641270279884338e-01 4.3775539845228195e-02 - <_> - - 0 -1 700 3.2098871469497681e-01 - - 4.8456329852342606e-02 -3.9300969243049622e-01 - <_> - - 0 -1 701 -7.2495201602578163e-03 - - -4.1889420151710510e-01 4.1088439524173737e-02 - <_> - - 0 -1 702 2.3353239521384239e-02 - - 3.0208099633455276e-02 -3.7579280138015747e-01 - <_> - - 0 -1 703 -2.2498020902276039e-02 - - -4.5240750908851624e-01 3.8922939449548721e-02 - <_> - - 0 -1 704 -2.3866670206189156e-02 - - -5.2881467342376709e-01 1.3815529644489288e-02 - <_> - - 0 -1 705 -3.3641930669546127e-02 - - 4.4367140531539917e-01 -4.0341619402170181e-02 - <_> - - 0 -1 706 2.2140879184007645e-02 - - -4.9545429646968842e-02 2.0518389344215393e-01 - <_> - - 0 -1 707 1.0603429749608040e-02 - - 3.1996849924325943e-02 -5.1487600803375244e-01 - <_> - - 0 -1 708 9.6357148140668869e-03 - - -1.2373799830675125e-01 1.5278430283069611e-01 - <_> - - 0 -1 709 2.9718749225139618e-02 - - -5.6785408407449722e-02 2.9045888781547546e-01 - <_> - - 0 -1 710 2.0548420434352010e-04 - - -2.7184659242630005e-01 1.0707840323448181e-01 - <_> - - 0 -1 711 -4.8672650009393692e-02 - - 4.2357748746871948e-01 -4.5685999095439911e-02 - <_> - - 0 -1 712 2.5377809070050716e-03 - - -7.2734832763671875e-02 2.1036009490489960e-01 - <_> - - 0 -1 713 -3.3941529691219330e-03 - - -3.8152369856834412e-01 4.4548328965902328e-02 - <_> - - 0 -1 714 -2.3745149374008179e-02 - - -4.4136199355125427e-01 2.4941470474004745e-02 - <_> - - 0 -1 715 -2.0092299208045006e-02 - - 1.6946069896221161e-01 -9.5334596931934357e-02 - <_> - - 0 -1 716 1.1026510037481785e-02 - - -7.2176292538642883e-02 2.4846449494361877e-01 - <_> - - 0 -1 717 -1.5806879848241806e-02 - - 2.2417180240154266e-01 -7.2446040809154510e-02 - <_> - - 0 -1 718 4.9007359892129898e-02 - - -5.5121738463640213e-02 2.5839251279830933e-01 - <_> - - 0 -1 719 2.8871610760688782e-02 - - -1.1530119925737381e-01 1.9248460233211517e-01 - <_> - - 0 -1 720 7.3990179225802422e-03 - - 5.2299588918685913e-02 -2.1918569505214691e-01 - <_> - - 0 -1 721 -6.1737848445773125e-03 - - 2.0380969345569611e-01 -6.9669328629970551e-02 - <_> - - 0 -1 722 9.4332564622163773e-03 - - -5.3407169878482819e-02 2.5862839818000793e-01 - <_> - - 0 -1 723 1.4321080408990383e-02 - - 3.3642519265413284e-02 -4.6795940399169922e-01 - <_> - - 0 -1 724 2.2487280890345573e-02 - - -4.3100748211145401e-02 1.1230559647083282e-01 - <_> - - 0 -1 725 -8.8018830865621567e-03 - - -5.9977447986602783e-01 2.3850029334425926e-02 - <_> - - 0 -1 726 -9.2824921011924744e-03 - - -3.7928500771522522e-01 2.4739539250731468e-02 - <_> - - 0 -1 727 -3.8288799260044470e-05 - - 1.0945019870996475e-01 -1.2705920636653900e-01 - <_> - - 0 -1 728 -1.0607670247554779e-01 - - 1.2239170074462891e-01 -1.7970660701394081e-02 - <_> - - 0 -1 729 1.4501119963824749e-02 - - 2.5438580662012100e-02 -5.4995167255401611e-01 - <_> - - 0 -1 730 -2.9425490647554398e-02 - - -4.4079890847206116e-01 1.6329530626535416e-02 - <_> - - 0 -1 731 -2.1412479877471924e-01 - - -5.8171492815017700e-01 2.2408049553632736e-02 - <_> - - 0 -1 732 -1.5937929973006248e-02 - - 4.4771928340196609e-02 -4.7021768987178802e-02 - <_> - - 0 -1 733 3.5832289606332779e-02 - - 2.5715630501508713e-02 -5.4305112361907959e-01 - <_> - - 0 -1 734 -1.1497899889945984e-02 - - -4.1323921084403992e-01 2.4659259244799614e-02 - <_> - - 0 -1 735 7.6680490747094154e-03 - - -5.9614498168230057e-02 2.4197499454021454e-01 - <_> - - 0 -1 736 1.2335750274360180e-02 - - 3.7500880658626556e-02 -4.7769561409950256e-01 - <_> - - 0 -1 737 1.3047469779849052e-02 - - -6.0925539582967758e-02 2.4198959767818451e-01 - <_> - - 0 -1 738 5.2074559789616615e-05 - - -9.8182268440723419e-02 8.9188173413276672e-02 - <_> - - 0 -1 739 3.2866070978343487e-03 - - -9.4105660915374756e-02 1.4411650598049164e-01 - <_> - - 0 -1 740 -4.1732661426067352e-02 - - -6.4058172702789307e-01 2.2133890539407730e-02 - <_> - - 0 -1 741 9.7638191655278206e-03 - - 4.1278161108493805e-02 -3.3542799949645996e-01 - <_> - - 0 -1 742 1.0774569958448410e-01 - - 8.1762494519352913e-03 -4.3478840589523315e-01 - <_> - - 0 -1 743 1.1196990311145782e-01 - - 1.9971510395407677e-02 -6.5035951137542725e-01 - <_> - - 0 -1 744 6.8043068051338196e-02 - - -6.0273509472608566e-02 1.3844910264015198e-01 - <_> - - 0 -1 745 1.2061929702758789e-01 - - -6.6626183688640594e-02 2.1289399266242981e-01 - <_> - - 0 -1 746 -2.7089789509773254e-03 - - -4.2147681117057800e-01 7.0062931627035141e-03 - <_> - - 0 -1 747 -9.8798991530202329e-05 - - 1.2873309850692749e-01 -1.1781200021505356e-01 - <_> - - 0 -1 748 1.7797689884901047e-02 - - -3.9807539433240891e-02 2.5822418928146362e-01 - <_> - - 0 -1 749 -1.5526750124990940e-02 - - -5.3756171464920044e-01 2.5428580120205879e-02 - <_> - - 0 -1 750 -1.1374800233170390e-03 - - 1.4971290528774261e-01 -3.1790051609277725e-02 - <_> - - 0 -1 751 2.1987389773130417e-02 - - 3.0267579481005669e-02 -4.1569280624389648e-01 - <_> - - 0 -1 752 5.9880971093662083e-05 - - -6.4167313277721405e-02 7.9953707754611969e-02 - <_> - - 0 -1 753 7.6966080814599991e-03 - - -7.2746522724628448e-02 1.7084559798240662e-01 - <_> - - 0 -1 754 6.2799488659948111e-04 - - 3.4155208617448807e-02 -1.3791529834270477e-01 - <_> - - 0 -1 755 -1.2622140347957611e-03 - - 1.6152350604534149e-01 -7.5557827949523926e-02 - <_> - - 0 -1 756 -1.1005929671227932e-02 - - -4.8230040073394775e-01 2.6834029704332352e-02 - <_> - - 0 -1 757 -9.5793791115283966e-03 - - 1.9468879699707031e-01 -6.6964037716388702e-02 - <_> - - 0 -1 758 -9.1821959358640015e-05 - - 7.9375706613063812e-02 -6.7449547350406647e-02 - <_> - - 0 -1 759 1.2134959688410163e-03 - - -5.1114071160554886e-02 2.7757808566093445e-01 - <_> - - 0 -1 760 7.9206802183762193e-04 - - -2.8480930253863335e-02 1.1306119710206985e-01 - <_> - - 0 -1 761 2.7196949813514948e-03 - - 3.6205168813467026e-02 -3.8228958845138550e-01 - <_> - - 0 -1 762 -7.0203691720962524e-03 - - -7.0844250917434692e-01 9.6215400844812393e-05 - <_> - - 0 -1 763 -7.4910762486979365e-04 - - 1.8996599316596985e-01 -7.0758841931819916e-02 - <_> - - 0 -1 764 -3.0010089278221130e-02 - - 1.4095950126647949e-01 -8.3362892270088196e-02 - <_> - - 0 -1 765 2.1152449771761894e-02 - - 2.5880130007863045e-02 -4.6976161003112793e-01 - <_> - - 0 -1 766 -3.1970590353012085e-02 - - -5.1240712404251099e-01 1.2115829624235630e-02 - <_> - - 0 -1 767 1.0507719591259956e-02 - - 3.8660790771245956e-02 -3.0986440181732178e-01 - <_> - - 0 -1 768 4.8152811359614134e-05 - - -6.1655979603528976e-02 6.7806392908096313e-02 - <_> - - 0 -1 769 9.6495117759332061e-04 - - -6.1358559876680374e-02 1.9916859269142151e-01 - <_> - - 0 -1 770 -4.0412139147520065e-02 - - 1.3414110243320465e-01 -7.1774438023567200e-02 - <_> - - 0 -1 771 5.8856019750237465e-03 - - 3.5979349166154861e-02 -3.3323070406913757e-01 - <_> - - 0 -1 772 5.3272489458322525e-03 - - 3.2898910343647003e-02 -5.1538711786270142e-01 - <_> - - 0 -1 773 5.3272798657417297e-02 - - -7.8457422554492950e-02 1.5826569497585297e-01 - <_> - - 0 -1 774 1.7442900687456131e-02 - - 1.3395839929580688e-01 -1.1861749738454819e-01 - <_> - - 0 -1 775 -4.3359059840440750e-02 - - -2.2697900235652924e-01 4.6703130006790161e-02 - <_> - - 0 -1 776 -2.3120639845728874e-02 - - 1.6340319812297821e-01 -6.8516552448272705e-02 - <_> - - 0 -1 777 -9.3796178698539734e-03 - - 1.5827399492263794e-01 -7.7110826969146729e-02 - <_> - - 0 -1 778 -1.4122249558568001e-02 - - -5.6915611028671265e-01 2.3201670497655869e-02 - <_> - - 0 -1 779 -1.5595779754221439e-02 - - -7.1999537944793701e-01 1.1182960122823715e-02 - <_> - - 0 -1 780 7.4529898120090365e-04 - - -7.6692558825016022e-02 5.8296941220760345e-02 - <_> - - 0 -1 781 -5.1220599561929703e-03 - - -4.1475170850753784e-01 2.5212420150637627e-02 - <_> - - 0 -1 782 -5.7267909141955897e-05 - - 9.0584710240364075e-02 -6.6890686750411987e-02 - <_> - - 0 -1 783 8.8431767653673887e-04 - - -5.7051338255405426e-02 2.4205550551414490e-01 - <_> - - 0 -1 784 -6.3992529176175594e-03 - - -4.7669911384582520e-01 1.7223160713911057e-02 - <_> - - 0 -1 785 3.4215620253235102e-03 - - 3.3065941184759140e-02 -3.5055148601531982e-01 - <_> - - 0 -1 786 6.0761801432818174e-04 - - -6.3330791890621185e-02 1.8019370734691620e-01 - <_> - - 0 -1 787 -2.7124559506773949e-02 - - 1.3474200665950775e-01 -8.4303401410579681e-02 - <_> - - 0 -1 788 3.2038338482379913e-02 - - -6.7669242620468140e-02 1.7966659367084503e-01 - <_> - - 0 -1 789 7.2583961300551891e-03 - - -9.8616771399974823e-02 1.1662179976701736e-01 - <_> - - 0 -1 790 -3.7803640589118004e-03 - - 1.2330210208892822e-01 -4.7761891037225723e-02 - <_> - - 0 -1 791 3.9241630584001541e-02 - - 1.6770560294389725e-02 -7.3297500610351562e-01 - <_> - - 0 -1 792 -5.3865249356022105e-05 - - 8.5012666881084442e-02 -7.5102739036083221e-02 - <_> - - 0 -1 793 8.2592968828976154e-04 - - -5.5150531232357025e-02 2.0594260096549988e-01 - <_> - - 0 -1 794 -5.6403529015369713e-05 - - 7.6255522668361664e-02 -6.9994620978832245e-02 - <_> - - 0 -1 795 -5.6928332196548581e-04 - - -2.4831940233707428e-01 4.6885799616575241e-02 - <_> - - 0 -1 796 4.2482689023017883e-02 - - -3.4421678632497787e-02 1.4847649633884430e-01 - <_> - - 0 -1 797 -3.3953409641981125e-02 - - 2.8434708714485168e-01 -4.3108358979225159e-02 - <_> - - 0 -1 798 1.8899820744991302e-02 - - 1.4299860224127769e-02 -4.1920700669288635e-01 - <_> - - 0 -1 799 1.9765710458159447e-03 - - 6.2193240970373154e-02 -1.7860250174999237e-01 - <_> - - 0 -1 800 -5.0894439482362941e-05 - - 9.4885483384132385e-02 -6.8978622555732727e-02 - <_> - - 0 -1 801 1.1491550132632256e-02 - - 3.3188611268997192e-02 -3.6289590597152710e-01 - <_> - - 0 -1 802 -2.1510679274797440e-02 - - 2.7597379684448242e-01 -3.1749140471220016e-02 - <_> - - 0 -1 803 1.3055199757218361e-02 - - -8.3081558346748352e-02 1.4498490095138550e-01 - <_> - - 0 -1 804 6.6747581586241722e-03 - - -4.6190250664949417e-02 1.3833600282669067e-01 - <_> - - 0 -1 805 -7.0616300217807293e-03 - - 1.9687490165233612e-01 -8.3798579871654510e-02 - <_> - - 0 -1 806 6.1481661396101117e-04 - - 5.4201129823923111e-02 -1.9812339544296265e-01 - <_> - - 0 -1 807 2.8601831197738647e-01 - - 2.3295460268855095e-02 -4.1733700037002563e-01 - <_> - - 0 -1 808 4.6371720731258392e-02 - - -2.9012339189648628e-02 1.8080130219459534e-01 - <_> - - 0 -1 809 -5.5724751204252243e-02 - - 1.3581469655036926e-01 -1.0612230002880096e-01 - <_> - - 0 -1 810 -2.5843968987464905e-01 - - -4.9107319116592407e-01 1.5150199644267559e-02 - <_> - 113 - -1.3937480449676514e+00 - - <_> - - 0 -1 811 -4.1740439832210541e-02 - - 4.2029929161071777e-01 -1.3865880668163300e-01 - <_> - - 0 -1 812 2.7438610792160034e-02 - - -6.9185562431812286e-02 6.3781380653381348e-01 - <_> - - 0 -1 813 -3.1923361122608185e-02 - - 5.5629998445510864e-01 -5.8802250772714615e-02 - <_> - - 0 -1 814 -4.2633909732103348e-02 - - 3.9570361375808716e-01 -9.2322356998920441e-02 - <_> - - 0 -1 815 -4.5332979410886765e-02 - - 4.8316720128059387e-01 -9.9028460681438446e-02 - <_> - - 0 -1 816 1.4149550115689635e-03 - - -3.8321029394865036e-02 3.7827879190444946e-01 - <_> - - 0 -1 817 3.1844570767134428e-03 - - 8.4587417542934418e-02 -3.6293488740921021e-01 - <_> - - 0 -1 818 7.9865548759698868e-03 - - 6.6024526953697205e-02 -4.9909490346908569e-01 - <_> - - 0 -1 819 8.3637079223990440e-03 - - -1.5688340365886688e-01 1.7327819764614105e-01 - <_> - - 0 -1 820 1.6616169363260269e-02 - - -1.0921569913625717e-01 3.2081720232963562e-01 - <_> - - 0 -1 821 -1.0837230086326599e-01 - - -3.1443148851394653e-01 9.6088737249374390e-02 - <_> - - 0 -1 822 -5.5264160037040710e-02 - - -3.2385888695716858e-01 7.6004527509212494e-02 - <_> - - 0 -1 823 1.2632569670677185e-01 - - 6.5257273614406586e-02 -4.0118929743766785e-01 - <_> - - 0 -1 824 3.8804560899734497e-01 - - 2.9047280550003052e-02 -2.8504198789596558e-01 - <_> - - 0 -1 825 2.1647498942911625e-03 - - 5.6638881564140320e-02 -4.4831070303916931e-01 - <_> - - 0 -1 826 -8.5035830736160278e-02 - - 2.3742489516735077e-01 -1.1276420205831528e-01 - <_> - - 0 -1 827 2.9713720083236694e-02 - - -4.0369931608438492e-02 4.7471740841865540e-01 - <_> - - 0 -1 828 1.8948830664157867e-02 - - -7.9447157680988312e-02 2.7210989594459534e-01 - <_> - - 0 -1 829 -5.4433820769190788e-03 - - -4.0186598896980286e-01 5.7357691228389740e-02 - <_> - - 0 -1 830 -7.4416291899979115e-03 - - -4.6421709656715393e-01 3.4328330308198929e-02 - <_> - - 0 -1 831 3.1745829619467258e-03 - - -7.1994602680206299e-02 2.8998330235481262e-01 - <_> - - 0 -1 832 -4.6435040421783924e-03 - - -4.2195430397987366e-01 3.9487071335315704e-02 - <_> - - 0 -1 833 -2.2597080096602440e-02 - - 2.7456980943679810e-01 -7.7242776751518250e-02 - <_> - - 0 -1 834 1.7568180337548256e-02 - - 6.0469850897789001e-02 -2.7558389306068420e-01 - <_> - - 0 -1 835 2.2853609919548035e-01 - - 3.7277411669492722e-02 -5.3754311800003052e-01 - <_> - - 0 -1 836 3.2330639660358429e-02 - - 4.5896150171756744e-02 -3.8448250293731689e-01 - <_> - - 0 -1 837 -2.8539650142192841e-02 - - 5.8917909860610962e-01 -3.4072808921337128e-02 - <_> - - 0 -1 838 2.8611959889531136e-02 - - 2.4174140766263008e-02 -2.3255120217800140e-01 - <_> - - 0 -1 839 1.9021460786461830e-02 - - 5.6291140615940094e-02 -3.4046700596809387e-01 - <_> - - 0 -1 840 -5.7942080311477184e-03 - - 2.3920939862728119e-01 -6.3862636685371399e-02 - <_> - - 0 -1 841 1.9857540726661682e-02 - - 5.1371630281209946e-02 -3.4053778648376465e-01 - <_> - - 0 -1 842 -2.2779459133744240e-02 - - 2.9225811362266541e-01 -6.0494560748338699e-02 - <_> - - 0 -1 843 1.4801420271396637e-01 - - -3.4383419901132584e-02 4.6671169996261597e-01 - <_> - - 0 -1 844 -3.3703971654176712e-02 - - -3.7704831361770630e-01 2.6303650811314583e-02 - <_> - - 0 -1 845 -1.6228390857577324e-02 - - -3.3824568986892700e-01 5.7086139917373657e-02 - <_> - - 0 -1 846 -4.2941919527947903e-03 - - -3.2951489090919495e-01 4.3417800217866898e-02 - <_> - - 0 -1 847 -2.3574110120534897e-02 - - -3.9452001452445984e-01 3.9823610335588455e-02 - <_> - - 0 -1 848 2.1848749369382858e-02 - - 2.6808669790625572e-02 -2.5965699553489685e-01 - <_> - - 0 -1 849 -2.0930990576744080e-02 - - -3.6419558525085449e-01 4.3782789260149002e-02 - <_> - - 0 -1 850 1.6019339673221111e-03 - - -2.4020690470933914e-02 2.1828800439834595e-01 - <_> - - 0 -1 851 -5.4896557331085205e-01 - - -5.6733721494674683e-01 2.8684079647064209e-02 - <_> - - 0 -1 852 1.5187090262770653e-02 - - -8.1696130335330963e-02 2.1070739626884460e-01 - <_> - - 0 -1 853 -3.0653451103717089e-03 - - -3.7013870477676392e-01 4.7142639756202698e-02 - <_> - - 0 -1 854 -2.2847671061754227e-03 - - 1.8132969737052917e-01 -4.1904181241989136e-02 - <_> - - 0 -1 855 1.3886080123484135e-03 - - -4.7716971486806870e-02 3.1205159425735474e-01 - <_> - - 0 -1 856 -4.2354268953204155e-03 - - -3.1207269430160522e-01 3.6572430282831192e-02 - <_> - - 0 -1 857 4.9234707839787006e-03 - - -1.1051789671182632e-01 1.3647459447383881e-01 - <_> - - 0 -1 858 -9.7824353724718094e-04 - - 1.0191129893064499e-01 -3.9698559790849686e-02 - <_> - - 0 -1 859 2.3952899500727654e-03 - - 3.4585561603307724e-02 -4.6207970380783081e-01 - <_> - - 0 -1 860 -2.7391599360271357e-05 - - 4.7003678977489471e-02 -5.7648900896310806e-02 - <_> - - 0 -1 861 -3.7895010318607092e-03 - - -3.9044469594955444e-01 3.9270818233489990e-02 - <_> - - 0 -1 862 2.5150740519165993e-02 - - -3.1348060816526413e-02 4.7427290678024292e-01 - <_> - - 0 -1 863 -5.4564148187637329e-02 - - 1.4945609867572784e-01 -9.8201327025890350e-02 - <_> - - 0 -1 864 -4.1662190109491348e-02 - - -4.2450940608978271e-01 1.5298790298402309e-02 - <_> - - 0 -1 865 -2.0739400759339333e-02 - - -3.2189819216728210e-01 4.7922980040311813e-02 - <_> - - 0 -1 866 -9.7902817651629448e-04 - - 2.3306930065155029e-01 -5.9799421578645706e-02 - <_> - - 0 -1 867 -4.1547799482941628e-03 - - -3.0402511358261108e-01 4.5693140476942062e-02 - <_> - - 0 -1 868 -2.6045470804092474e-05 - - 5.5388018488883972e-02 -5.4097719490528107e-02 - <_> - - 0 -1 869 1.0567409917712212e-03 - - -5.2676759660243988e-02 2.4732929468154907e-01 - <_> - - 0 -1 870 1.8429230153560638e-01 - - 1.6558110713958740e-02 -5.7896447181701660e-01 - <_> - - 0 -1 871 1.4177090488374233e-03 - - -5.2407130599021912e-02 2.5247898697853088e-01 - <_> - - 0 -1 872 -4.0882350876927376e-03 - - -3.0666339397430420e-01 2.6950219646096230e-02 - <_> - - 0 -1 873 8.5421912372112274e-03 - - -4.8116620630025864e-02 2.7163261175155640e-01 - <_> - - 0 -1 874 1.9569039344787598e-02 - - 2.5119980797171593e-02 -3.3716028928756714e-01 - <_> - - 0 -1 875 2.6773509383201599e-01 - - 2.3119339719414711e-02 -5.0757241249084473e-01 - <_> - - 0 -1 876 -3.2680608332157135e-02 - - 2.7736881375312805e-01 -4.8139289021492004e-02 - <_> - - 0 -1 877 -5.0574508495628834e-03 - - -3.6395868659019470e-01 3.6307089030742645e-02 - <_> - - 0 -1 878 7.9170227050781250e-02 - - -2.9553070664405823e-02 1.6328190267086029e-01 - <_> - - 0 -1 879 2.2955629974603653e-03 - - -6.4419128000736237e-02 1.9216349720954895e-01 - <_> - - 0 -1 880 2.1744619880337268e-04 - - -1.2481279671192169e-01 5.1342830061912537e-02 - <_> - - 0 -1 881 -5.9793200343847275e-03 - - -5.4004061222076416e-01 2.3657269775867462e-02 - <_> - - 0 -1 882 -2.1830040216445923e-01 - - -3.0027130246162415e-01 1.8829640001058578e-02 - <_> - - 0 -1 883 -2.5782659649848938e-03 - - -2.9368001222610474e-01 4.3735310435295105e-02 - <_> - - 0 -1 884 -1.3443179428577423e-01 - - -2.9820311069488525e-01 2.1951649338006973e-02 - <_> - - 0 -1 885 3.3298340439796448e-01 - - 4.1799660772085190e-02 -3.4646728634834290e-01 - <_> - - 0 -1 886 -2.7604660019278526e-02 - - -3.1696259975433350e-01 1.5039809979498386e-02 - <_> - - 0 -1 887 2.8459940105676651e-02 - - 3.1132759526371956e-02 -4.1158550977706909e-01 - <_> - - 0 -1 888 5.6875180453062057e-02 - - 3.1998890917748213e-03 -8.4963297843933105e-01 - <_> - - 0 -1 889 -2.6414059102535248e-02 - - -4.0303400158882141e-01 2.8532799333333969e-02 - <_> - - 0 -1 890 8.2670920528471470e-04 - - -4.7888670116662979e-02 2.0834739506244659e-01 - <_> - - 0 -1 891 -1.7481200397014618e-02 - - -4.7842741012573242e-01 2.6197340339422226e-02 - <_> - - 0 -1 892 1.0209370404481888e-02 - - -3.2349199056625366e-02 3.3332398533821106e-01 - <_> - - 0 -1 893 -9.0442842338234186e-04 - - 2.2529889643192291e-01 -5.0218481570482254e-02 - <_> - - 0 -1 894 -5.5155509471660480e-05 - - 8.5416309535503387e-02 -9.2255666851997375e-02 - <_> - - 0 -1 895 -7.5864349491894245e-03 - - -2.7453339099884033e-01 4.2833179235458374e-02 - <_> - - 0 -1 896 6.8936333060264587e-02 - - -3.6221239715814590e-02 2.2021399438381195e-01 - <_> - - 0 -1 897 1.0017789900302887e-03 - - -4.6468019485473633e-02 2.6032060384750366e-01 - <_> - - 0 -1 898 -1.5333900228142738e-03 - - 2.8312671184539795e-01 -3.2194979488849640e-02 - <_> - - 0 -1 899 5.0275481771677732e-04 - - 5.4722610861063004e-02 -2.3836499452590942e-01 - <_> - - 0 -1 900 6.7827408201992512e-05 - - -3.9139021188020706e-02 5.0138108432292938e-02 - <_> - - 0 -1 901 -9.6863682847470045e-04 - - 2.1087090671062469e-01 -6.0840670019388199e-02 - <_> - - 0 -1 902 1.5726730227470398e-02 - - 1.1550820432603359e-02 -8.9771991968154907e-01 - <_> - - 0 -1 903 -6.1983527848497033e-04 - - -2.8654229640960693e-01 3.8063231855630875e-02 - <_> - - 0 -1 904 -1.4889890328049660e-02 - - 2.1888859570026398e-01 -5.3425349295139313e-02 - <_> - - 0 -1 905 9.1423774138092995e-03 - - 2.8971910476684570e-02 -4.3313831090927124e-01 - <_> - - 0 -1 906 4.4567110307980329e-05 - - -4.9350600689649582e-02 8.2990236580371857e-02 - <_> - - 0 -1 907 -4.6295441279653460e-05 - - 1.1451739817857742e-01 -1.1541579663753510e-01 - <_> - - 0 -1 908 -9.5154307782649994e-02 - - -3.6218079924583435e-01 3.8963958621025085e-02 - <_> - - 0 -1 909 1.1447920463979244e-02 - - -6.3377149403095245e-02 1.7998909950256348e-01 - <_> - - 0 -1 910 1.6846949234604836e-02 - - -7.9555906355381012e-02 2.0804320275783539e-01 - <_> - - 0 -1 911 -1.9532829523086548e-02 - - 3.3066600561141968e-01 -3.6887980997562408e-02 - <_> - - 0 -1 912 -9.9951513111591339e-03 - - -2.6018738746643066e-01 2.0032050088047981e-02 - <_> - - 0 -1 913 5.5966150015592575e-02 - - 2.9873110353946686e-02 -3.7979680299758911e-01 - <_> - - 0 -1 914 2.2398930042982101e-02 - - 9.4442693516612053e-03 -3.0707120895385742e-01 - <_> - - 0 -1 915 -1.1130659841001034e-02 - - -4.5474618673324585e-01 2.3782089352607727e-02 - <_> - - 0 -1 916 1.0391449555754662e-02 - - -8.0150999128818512e-02 1.0174000263214111e-01 - <_> - - 0 -1 917 -9.7076389938592911e-03 - - 3.2200449705123901e-01 -4.7525040805339813e-02 - <_> - - 0 -1 918 1.9170529412804171e-05 - - -6.1904601752758026e-02 7.5871497392654419e-02 - <_> - - 0 -1 919 -5.7660471647977829e-03 - - -2.8932619094848633e-01 3.5711359232664108e-02 - <_> - - 0 -1 920 -8.0189562868326902e-04 - - 1.4876769483089447e-01 -3.3799510449171066e-02 - <_> - - 0 -1 921 -4.5168989896774292e-01 - - -5.8006447553634644e-01 1.8294280394911766e-02 - <_> - - 0 -1 922 7.1167000569403172e-03 - - 2.2195219993591309e-02 -4.3420061469078064e-01 - <_> - - 0 -1 923 2.1432479843497276e-02 - - -4.2519841343164444e-02 2.7117589116096497e-01 - <_> - 172 - -1.3605639934539795e+00 - - <_> - - 0 -1 924 8.8465185835957527e-03 - - -2.0597270131111145e-01 2.1589750051498413e-01 - <_> - - 0 -1 925 -1.1486900039017200e-02 - - 1.4502839744091034e-01 -2.5122788548469543e-01 - <_> - - 0 -1 926 6.1377901583909988e-02 - - -1.2108889967203140e-01 2.8931090235710144e-01 - <_> - - 0 -1 927 -5.1466740667819977e-02 - - 7.7043011784553528e-02 -1.4475989341735840e-01 - <_> - - 0 -1 928 9.9043287336826324e-02 - - 8.7946407496929169e-02 -3.6684900522232056e-01 - <_> - - 0 -1 929 6.0240789316594601e-03 - - 5.5971618741750717e-02 -4.2305350303649902e-01 - <_> - - 0 -1 930 9.3228947371244431e-03 - - -1.4887219667434692e-01 1.4235040545463562e-01 - <_> - - 0 -1 931 -8.3782836794853210e-02 - - -5.0623029470443726e-02 6.7185766994953156e-02 - <_> - - 0 -1 932 -1.4369570417329669e-03 - - 1.6699740290641785e-01 -1.1847949773073196e-01 - <_> - - 0 -1 933 -8.4923747926950455e-03 - - -5.7465082406997681e-01 4.6952918171882629e-02 - <_> - - 0 -1 934 6.1581619083881378e-03 - - 3.8783859461545944e-02 -4.1793778538703918e-01 - <_> - - 0 -1 935 3.8826680183410645e-01 - - -3.4158889204263687e-02 3.8834908604621887e-01 - <_> - - 0 -1 936 -6.2880381010472775e-03 - - 1.8779429793357849e-01 -1.0967569798231125e-01 - <_> - - 0 -1 937 -8.8647350668907166e-02 - - 2.9610741138458252e-01 -4.9650270491838455e-02 - <_> - - 0 -1 938 5.7384949177503586e-02 - - -6.2142979353666306e-02 4.0399539470672607e-01 - <_> - - 0 -1 939 6.3049891032278538e-03 - - 3.0240859836339951e-02 -2.5532779097557068e-01 - <_> - - 0 -1 940 -1.2817610055208206e-02 - - -7.4915027618408203e-01 1.8835680559277534e-02 - <_> - - 0 -1 941 6.5159690566360950e-03 - - -7.4971511960029602e-02 1.9758880138397217e-01 - <_> - - 0 -1 942 8.2992920652031898e-03 - - 3.2989550381898880e-02 -4.3466570973396301e-01 - <_> - - 0 -1 943 6.3911718316376209e-03 - - 2.9757190495729446e-02 -3.0728459358215332e-01 - <_> - - 0 -1 944 6.8949637352488935e-05 - - -1.7294059693813324e-01 9.2702791094779968e-02 - <_> - - 0 -1 945 4.1354808956384659e-02 - - -2.7904760092496872e-02 1.6296459734439850e-01 - <_> - - 0 -1 946 1.8999379873275757e-01 - - -3.1295470893383026e-02 4.8351749777793884e-01 - <_> - - 0 -1 947 -1.2732900679111481e-01 - - -4.3095651268959045e-01 4.1448518633842468e-02 - <_> - - 0 -1 948 -3.5605970770120621e-02 - - -2.0096629858016968e-01 7.7555581927299500e-02 - <_> - - 0 -1 949 -7.2760661132633686e-03 - - 1.1694429814815521e-01 -5.6488901376724243e-02 - <_> - - 0 -1 950 -1.6728280112147331e-02 - - -5.5824387073516846e-01 2.4678710848093033e-02 - <_> - - 0 -1 951 3.5163350403308868e-03 - - -1.3123939931392670e-01 6.3867613673210144e-02 - <_> - - 0 -1 952 -3.7709469906985760e-03 - - -3.3209028840065002e-01 4.1377659887075424e-02 - <_> - - 0 -1 953 -1.3886960223317146e-02 - - -3.1274241209030151e-01 4.2570248246192932e-02 - <_> - - 0 -1 954 9.3537326902151108e-03 - - -6.6785670816898346e-02 1.9074550271034241e-01 - <_> - - 0 -1 955 -1.9434669986367226e-02 - - 3.1526941061019897e-01 -4.7358151525259018e-02 - <_> - - 0 -1 956 6.2511018477380276e-03 - - 3.0958879739046097e-02 -3.8309469819068909e-01 - <_> - - 0 -1 957 -2.5296900421380997e-02 - - -2.9622459411621094e-01 1.5191599726676941e-02 - <_> - - 0 -1 958 -3.0754129402339458e-03 - - 7.2913318872451782e-02 -1.7640450596809387e-01 - <_> - - 0 -1 959 7.8001008369028568e-03 - - -5.0157550722360611e-02 1.1628890037536621e-01 - <_> - - 0 -1 960 -7.7680540271103382e-03 - - 2.4157559871673584e-01 -7.7894441783428192e-02 - <_> - - 0 -1 961 -8.8092312216758728e-02 - - 2.5150829553604126e-01 -4.8299308866262436e-02 - <_> - - 0 -1 962 -1.7023129621520638e-03 - - 1.7975769937038422e-01 -9.7071669995784760e-02 - <_> - - 0 -1 963 -9.9703423678874969e-02 - - -4.7000929713249207e-01 1.5582949854433537e-02 - <_> - - 0 -1 964 4.6657170169055462e-03 - - 2.9513580724596977e-02 -4.0181469917297363e-01 - <_> - - 0 -1 965 -1.7661379650235176e-02 - - -5.4495137929916382e-01 1.6858519986271858e-02 - <_> - - 0 -1 966 -2.2309330105781555e-01 - - 1.8432730436325073e-01 -6.3223339617252350e-02 - <_> - - 0 -1 967 5.2850779145956039e-02 - - -7.3477171361446381e-02 1.9944219291210175e-01 - <_> - - 0 -1 968 -2.4665659293532372e-02 - - 2.6995450258255005e-01 -5.2351549267768860e-02 - <_> - - 0 -1 969 -4.9799769185483456e-03 - - -4.4958519935607910e-01 2.6983380317687988e-02 - <_> - - 0 -1 970 3.0535869300365448e-03 - - 3.7507511675357819e-02 -3.4648960828781128e-01 - <_> - - 0 -1 971 -2.6310039684176445e-02 - - -1.7662410438060760e-01 2.5613600388169289e-02 - <_> - - 0 -1 972 -4.8684021458029747e-03 - - 1.8770970404148102e-01 -6.0557551681995392e-02 - <_> - - 0 -1 973 4.5840580016374588e-02 - - 3.3042129129171371e-02 -2.0266860723495483e-01 - <_> - - 0 -1 974 6.7487969063222408e-03 - - -1.3846549391746521e-01 1.1449229717254639e-01 - <_> - - 0 -1 975 1.0793830268085003e-02 - - -5.5047448724508286e-02 1.8106620013713837e-01 - <_> - - 0 -1 976 -1.3201650232076645e-02 - - -4.6548879146575928e-01 2.5808539241552353e-02 - <_> - - 0 -1 977 -4.9963342025876045e-03 - - 1.1389660090208054e-01 -1.1401399970054626e-01 - <_> - - 0 -1 978 -1.5819359570741653e-02 - - -4.8535621166229248e-01 2.2087620571255684e-02 - <_> - - 0 -1 979 6.8264620495028794e-05 - - -8.1919372081756592e-02 8.4099397063255310e-02 - <_> - - 0 -1 980 -1.5637379139661789e-02 - - -4.5156350731849670e-01 2.2735800594091415e-02 - <_> - - 0 -1 981 8.3005577325820923e-03 - - -5.1414210349321365e-02 2.2123479843139648e-01 - <_> - - 0 -1 982 6.6999751143157482e-03 - - 2.9789600521326065e-02 -3.5434889793395996e-01 - <_> - - 0 -1 983 5.1744161173701286e-03 - - -4.9688689410686493e-02 2.2029140591621399e-01 - <_> - - 0 -1 984 6.1278040520846844e-03 - - -6.3075892627239227e-02 1.7833660542964935e-01 - <_> - - 0 -1 985 6.8791587837040424e-03 - - 2.8441529721021652e-02 -2.9938548803329468e-01 - <_> - - 0 -1 986 -2.1736100316047668e-02 - - 1.7913189530372620e-01 -6.0287751257419586e-02 - <_> - - 0 -1 987 1.4009020291268826e-02 - - -1.0601969808340073e-01 1.5481740236282349e-01 - <_> - - 0 -1 988 2.1868139505386353e-01 - - -4.8351760953664780e-02 2.5734689831733704e-01 - <_> - - 0 -1 989 2.8380098938941956e-01 - - -5.0905589014291763e-02 2.9360538721084595e-01 - <_> - - 0 -1 990 1.2093160301446915e-01 - - 1.7309570685029030e-02 -6.9268721342086792e-01 - <_> - - 0 -1 991 5.6961830705404282e-02 - - -1.8678819760680199e-02 3.2275679707527161e-01 - <_> - - 0 -1 992 -9.0500963851809502e-03 - - -4.2406618595123291e-01 2.6841519400477409e-02 - <_> - - 0 -1 993 2.3118279874324799e-02 - - 1.0546280071139336e-02 -5.2286899089813232e-01 - <_> - - 0 -1 994 1.1480690445750952e-03 - - -4.5985739678144455e-02 2.3199149966239929e-01 - <_> - - 0 -1 995 -9.8909307271242142e-03 - - -5.4075521230697632e-01 1.4261700212955475e-02 - <_> - - 0 -1 996 7.0599978789687157e-04 - - -6.4954958856105804e-02 1.6775579750537872e-01 - <_> - - 0 -1 997 -8.2311293226666749e-05 - - 7.2767913341522217e-02 -5.4248239845037460e-02 - <_> - - 0 -1 998 5.3380471654236317e-03 - - 3.2092440873384476e-02 -3.1868579983711243e-01 - <_> - - 0 -1 999 5.9835889260284603e-05 - - -4.9297779798507690e-02 5.7114310562610626e-02 - <_> - - 0 -1 1000 4.0741640987107530e-05 - - -9.9226392805576324e-02 1.1056730151176453e-01 - <_> - - 0 -1 1001 -2.7114659547805786e-02 - - 2.4599009752273560e-01 -6.2148950994014740e-02 - <_> - - 0 -1 1002 -8.8477227836847305e-04 - - 2.0234499871730804e-01 -5.2926119416952133e-02 - <_> - - 0 -1 1003 -1.9263679161667824e-02 - - 1.5162590146064758e-01 -7.1536980569362640e-02 - <_> - - 0 -1 1004 9.6891522407531738e-03 - - 3.5710871219635010e-02 -3.2550829648971558e-01 - <_> - - 0 -1 1005 -2.2841900587081909e-02 - - -3.4999141097068787e-01 1.7189299687743187e-02 - <_> - - 0 -1 1006 -1.4777970314025879e-01 - - -4.3190780282020569e-01 2.1629950031638145e-02 - <_> - - 0 -1 1007 2.3399880155920982e-03 - - -4.4266819953918457e-02 9.6337772905826569e-02 - <_> - - 0 -1 1008 -7.2832189500331879e-02 - - -8.1861889362335205e-01 1.1799000203609467e-02 - <_> - - 0 -1 1009 -3.0727210640907288e-01 - - -7.0073091983795166e-01 3.5564110148698092e-03 - <_> - - 0 -1 1010 -2.0766649395227432e-02 - - -3.9139050245285034e-01 2.4622289463877678e-02 - <_> - - 0 -1 1011 -3.6341920495033264e-03 - - -4.5010888576507568e-01 5.5562350898981094e-03 - <_> - - 0 -1 1012 -7.0794070779811591e-05 - - 1.0878349840641022e-01 -9.0500459074974060e-02 - <_> - - 0 -1 1013 -8.8314860477112234e-05 - - 6.4176410436630249e-02 -4.9464631825685501e-02 - <_> - - 0 -1 1014 -1.1070650070905685e-02 - - 1.4730830490589142e-01 -6.7049317061901093e-02 - <_> - - 0 -1 1015 6.3626351766288280e-03 - - -4.0033329278230667e-02 9.2663377523422241e-02 - <_> - - 0 -1 1016 -7.7499519102275372e-03 - - 1.3924610614776611e-01 -7.7478073537349701e-02 - <_> - - 0 -1 1017 4.7532729804515839e-03 - - -7.2917170822620392e-02 1.7065620422363281e-01 - <_> - - 0 -1 1018 -1.6807980835437775e-02 - - 1.3080079853534698e-01 -8.0180667340755463e-02 - <_> - - 0 -1 1019 1.2794940173625946e-01 - - -1.9922649487853050e-02 3.7117990851402283e-01 - <_> - - 0 -1 1020 -1.8189599737524986e-02 - - 1.2358730286359787e-01 -8.3040617406368256e-02 - <_> - - 0 -1 1021 -1.6172589734196663e-02 - - -4.4906508922576904e-01 2.2756649181246758e-02 - <_> - - 0 -1 1022 6.8046152591705322e-05 - - -1.0118240118026733e-01 9.3573577702045441e-02 - <_> - - 0 -1 1023 1.1714019638020545e-04 - - -8.1081606447696686e-02 1.0626289993524551e-01 - <_> - - 0 -1 1024 5.4521678976016119e-05 - - -9.3289181590080261e-02 1.1599899828433990e-01 - <_> - - 0 -1 1025 -9.5095802098512650e-03 - - -5.0519037246704102e-01 1.4159279875457287e-02 - <_> - - 0 -1 1026 -2.8461390174925327e-03 - - -1.9915759563446045e-01 4.7365210950374603e-02 - <_> - - 0 -1 1027 2.3286240175366402e-02 - - -4.0329229086637497e-02 8.0515727400779724e-02 - <_> - - 0 -1 1028 -4.2605649679899216e-02 - - 3.3448079228401184e-01 -3.8372710347175598e-02 - <_> - - 0 -1 1029 4.5101181603968143e-03 - - 2.6354929432272911e-02 -2.3492150008678436e-01 - <_> - - 0 -1 1030 6.1817811802029610e-03 - - 2.1172510460019112e-02 -4.4205141067504883e-01 - <_> - - 0 -1 1031 -1.0606969706714153e-02 - - 6.5457493066787720e-02 -3.2472599297761917e-02 - <_> - - 0 -1 1032 -8.5813581943511963e-02 - - -3.4062311053276062e-01 3.0151499435305595e-02 - <_> - - 0 -1 1033 6.2758061103522778e-03 - - -6.1991188675165176e-02 1.5030339360237122e-01 - <_> - - 0 -1 1034 -3.0965260230004787e-03 - - 1.4812999963760376e-01 -8.1336267292499542e-02 - <_> - - 0 -1 1035 -1.1123980395495892e-02 - - -4.6381580829620361e-01 1.5213469974696636e-02 - <_> - - 0 -1 1036 -1.1103980243206024e-02 - - -6.0053801536560059e-01 1.3585429638624191e-02 - <_> - - 0 -1 1037 -3.2944830600172281e-03 - - -4.6413660049438477e-01 2.6226969435811043e-02 - <_> - - 0 -1 1038 1.1376610025763512e-02 - - -5.6543599814176559e-02 1.5750829875469208e-01 - <_> - - 0 -1 1039 -2.9465200379490852e-02 - - 1.4864230155944824e-01 -6.5188251435756683e-02 - <_> - - 0 -1 1040 4.9167301505804062e-02 - - -9.2225171625614166e-02 1.0154259949922562e-01 - <_> - - 0 -1 1041 -2.0959099754691124e-02 - - 1.7496380209922791e-01 -2.5550199672579765e-02 - <_> - - 0 -1 1042 5.4627470672130585e-03 - - -6.2659218907356262e-02 1.6952160000801086e-01 - <_> - - 0 -1 1043 -4.3515427969396114e-03 - - 8.2261569797992706e-02 -5.9839021414518356e-02 - <_> - - 0 -1 1044 7.4772499501705170e-03 - - -4.9545519053936005e-02 2.4696870148181915e-01 - <_> - - 0 -1 1045 -3.7427861243486404e-02 - - -9.1783320903778076e-01 3.5620180424302816e-03 - <_> - - 0 -1 1046 -2.4843990802764893e-02 - - -4.8939180374145508e-01 1.7182579264044762e-02 - <_> - - 0 -1 1047 8.0120442435145378e-03 - - 2.1742369979619980e-02 -6.4817667007446289e-02 - <_> - - 0 -1 1048 5.7306028902530670e-03 - - -7.0788390934467316e-02 1.3909959793090820e-01 - <_> - - 0 -1 1049 1.0989320464432240e-02 - - 7.0361187681555748e-03 -3.5568338632583618e-01 - <_> - - 0 -1 1050 -3.5342550836503506e-03 - - -2.3039029538631439e-01 3.9539441466331482e-02 - <_> - - 0 -1 1051 3.2612178474664688e-02 - - -8.3450950682163239e-02 9.6162289381027222e-02 - <_> - - 0 -1 1052 -5.1919098943471909e-02 - - -3.5974389314651489e-01 2.3558309301733971e-02 - <_> - - 0 -1 1053 2.8027060627937317e-01 - - 1.9102599471807480e-02 -2.7387228608131409e-01 - <_> - - 0 -1 1054 -1.8680640496313572e-03 - - 1.5570870041847229e-01 -5.9242039918899536e-02 - <_> - - 0 -1 1055 4.1271179914474487e-02 - - 9.2102894559502602e-03 -6.2253618240356445e-01 - <_> - - 0 -1 1056 -3.4157458692789078e-02 - - -6.9106769561767578e-01 1.4058819971978664e-02 - <_> - - 0 -1 1057 2.8111249208450317e-02 - - 6.3892039470374584e-03 -6.0164892673492432e-01 - <_> - - 0 -1 1058 -9.7675784491002560e-04 - - 1.6638219356536865e-01 -5.3310938179492950e-02 - <_> - - 0 -1 1059 -2.8404109179973602e-02 - - -8.4311908483505249e-01 4.9202498048543930e-03 - <_> - - 0 -1 1060 9.7658135928213596e-04 - - -5.2436660975217819e-02 1.6968539357185364e-01 - <_> - - 0 -1 1061 -7.9386442899703979e-02 - - -7.4181222915649414e-01 4.5842900872230530e-03 - <_> - - 0 -1 1062 2.9205000028014183e-03 - - -4.9970790743827820e-02 1.7052419483661652e-01 - <_> - - 0 -1 1063 -4.9792099744081497e-03 - - -4.2470470070838928e-01 1.1333269998431206e-02 - <_> - - 0 -1 1064 7.5309360399842262e-03 - - 2.0063450559973717e-02 -4.8175561428070068e-01 - <_> - - 0 -1 1065 -1.2063170224428177e-01 - - 1.7838390171527863e-01 -4.0402330458164215e-02 - <_> - - 0 -1 1066 6.4506952185183764e-05 - - -8.5854247212409973e-02 1.0695320367813110e-01 - <_> - - 0 -1 1067 1.4073869585990906e-01 - - -2.2774249315261841e-02 4.2583781480789185e-01 - <_> - - 0 -1 1068 5.8708712458610535e-04 - - -5.8570150285959244e-02 1.5563260018825531e-01 - <_> - - 0 -1 1069 4.2137140553677455e-05 - - -5.7670820504426956e-02 6.4898878335952759e-02 - <_> - - 0 -1 1070 -5.4859159718034789e-05 - - 1.3831870257854462e-01 -9.3551620841026306e-02 - <_> - - 0 -1 1071 -8.1318263255525380e-05 - - 7.8673712909221649e-02 -5.8452989906072617e-02 - <_> - - 0 -1 1072 1.0710170317906886e-04 - - -1.0360690206289291e-01 1.1052910238504410e-01 - <_> - - 0 -1 1073 5.9485197998583317e-03 - - 1.2473990209400654e-02 -6.0467267036437988e-01 - <_> - - 0 -1 1074 -3.8341151084750891e-03 - - -5.6510668992996216e-01 1.3957980088889599e-02 - <_> - - 0 -1 1075 4.8183299601078033e-02 - - 6.8787620402872562e-03 -2.2651989758014679e-01 - <_> - - 0 -1 1076 9.8468521609902382e-03 - - 1.4920420013368130e-02 -5.4084217548370361e-01 - <_> - - 0 -1 1077 7.0795980282127857e-03 - - -7.4058413505554199e-02 1.2125100195407867e-01 - <_> - - 0 -1 1078 -1.7187669873237610e-03 - - 1.1502750217914581e-01 -7.6794423162937164e-02 - <_> - - 0 -1 1079 1.4132119715213776e-02 - - 2.2234810516238213e-02 -3.7139910459518433e-01 - <_> - - 0 -1 1080 -8.0704037100076675e-03 - - -2.5363108515739441e-01 3.0734410509467125e-02 - <_> - - 0 -1 1081 2.2837559878826141e-01 - - 1.6856970265507698e-02 -5.4566478729248047e-01 - <_> - - 0 -1 1082 -1.0697550140321255e-02 - - 1.7055040597915649e-01 -4.8232439905405045e-02 - <_> - - 0 -1 1083 6.1057992279529572e-03 - - -7.4780799448490143e-02 1.2449649721384048e-01 - <_> - - 0 -1 1084 3.5825320519506931e-03 - - 3.4310609102249146e-02 -2.5292119383811951e-01 - <_> - - 0 -1 1085 8.7969396263360977e-03 - - 2.2731840610504150e-02 -2.0921200513839722e-01 - <_> - - 0 -1 1086 -1.1760019697248936e-02 - - -5.7893252372741699e-01 1.5020879916846752e-02 - <_> - - 0 -1 1087 1.4420140068978071e-03 - - 1.0806700214743614e-02 -1.7435030639171600e-01 - <_> - - 0 -1 1088 -4.9062469770433381e-05 - - 8.9151002466678619e-02 -9.4639152288436890e-02 - <_> - - 0 -1 1089 3.3054608851671219e-02 - - -5.0297331064939499e-02 7.2425939142704010e-02 - <_> - - 0 -1 1090 -4.4932190328836441e-02 - - 7.1401320397853851e-02 -1.2465400248765945e-01 - <_> - - 0 -1 1091 -1.2327450327575207e-02 - - 2.2164380550384521e-01 -1.6039999201893806e-02 - <_> - - 0 -1 1092 -3.7249261140823364e-01 - - -3.6931529641151428e-01 2.6002220809459686e-02 - <_> - - 0 -1 1093 1.5276310034096241e-02 - - 5.3399899043142796e-03 -5.4567837715148926e-01 - <_> - - 0 -1 1094 -1.4568739570677280e-02 - - -5.8832311630249023e-01 1.3987700454890728e-02 - <_> - - 0 -1 1095 9.9890248384326696e-04 - - -3.5881079733371735e-02 1.7432570457458496e-01 - <_> - 201 - -1.2964390516281128e+00 - - <_> - - 0 -1 1096 5.7295080274343491e-02 - - -1.7686650156974792e-01 2.4482910335063934e-01 - <_> - - 0 -1 1097 -1.0082540102303028e-02 - - 1.3789190351963043e-01 -2.0311470329761505e-01 - <_> - - 0 -1 1098 -1.8525039777159691e-02 - - 1.6239729523658752e-01 -1.6761909425258636e-01 - <_> - - 0 -1 1099 -5.2754491567611694e-02 - - 1.3471050560474396e-01 -1.4288149774074554e-01 - <_> - - 0 -1 1100 2.4354750290513039e-02 - - -2.6654679328203201e-02 4.3264889717102051e-01 - <_> - - 0 -1 1101 6.3417963683605194e-02 - - 4.2261090129613876e-02 -4.0131768584251404e-01 - <_> - - 0 -1 1102 3.8921029772609472e-03 - - -1.9067509472370148e-01 1.2673160433769226e-01 - <_> - - 0 -1 1103 1.5238909982144833e-03 - - -1.3715469837188721e-01 1.2464399635791779e-01 - <_> - - 0 -1 1104 -6.7657418549060822e-03 - - 2.5582429766654968e-01 -6.0715261846780777e-02 - <_> - - 0 -1 1105 -2.4176370352506638e-02 - - 2.8598898649215698e-01 -6.4212836325168610e-02 - <_> - - 0 -1 1106 -9.1761918738484383e-03 - - 1.0218480229377747e-01 -1.9994470477104187e-01 - <_> - - 0 -1 1107 -1.5783999860286713e-01 - - 2.3983080685138702e-01 -7.8578352928161621e-02 - <_> - - 0 -1 1108 4.8740189522504807e-02 - - -1.1009140312671661e-01 1.5583530068397522e-01 - <_> - - 0 -1 1109 1.9117979332804680e-02 - - 1.9706699997186661e-02 -3.7202331423759460e-01 - <_> - - 0 -1 1110 -1.2778160162270069e-02 - - -4.1600129008293152e-01 3.5378720611333847e-02 - <_> - - 0 -1 1111 2.6996301021426916e-03 - - -9.8559737205505371e-02 1.1491440236568451e-01 - <_> - - 0 -1 1112 2.4502199143171310e-02 - - 4.3092079460620880e-02 -3.6632940173149109e-01 - <_> - - 0 -1 1113 8.5003130137920380e-02 - - 4.3011400848627090e-02 -2.8862899541854858e-01 - <_> - - 0 -1 1114 3.1647530850023031e-03 - - -1.1429309844970703e-01 1.2794250249862671e-01 - <_> - - 0 -1 1115 1.1657790280878544e-02 - - -5.1525581628084183e-02 1.4223769307136536e-01 - <_> - - 0 -1 1116 -6.6801449283957481e-03 - - -4.7431039810180664e-01 2.8730580583214760e-02 - <_> - - 0 -1 1117 -3.8820769637823105e-02 - - 9.5313400030136108e-02 -4.7390919178724289e-02 - <_> - - 0 -1 1118 -2.5421770289540291e-02 - - -4.2198818922042847e-01 2.8437789529561996e-02 - <_> - - 0 -1 1119 -1.2146069668233395e-02 - - 1.8300829827785492e-01 -7.6282076537609100e-02 - <_> - - 0 -1 1120 -2.6787219569087029e-02 - - 2.8593730926513672e-01 -5.2229799330234528e-02 - <_> - - 0 -1 1121 -1.1614990420639515e-02 - - 1.1385949701070786e-01 -6.6350683569908142e-02 - <_> - - 0 -1 1122 -5.9956889599561691e-02 - - 2.7779400348663330e-01 -4.7004148364067078e-02 - <_> - - 0 -1 1123 -8.6737014353275299e-03 - - 2.1291969716548920e-01 -2.8776409104466438e-02 - <_> - - 0 -1 1124 2.8543549124151468e-03 - - -1.2216369807720184e-01 1.4215940237045288e-01 - <_> - - 0 -1 1125 2.2713060025125742e-03 - - 1.8237510696053505e-02 -4.1043540835380554e-01 - <_> - - 0 -1 1126 -1.2334890197962523e-03 - - -3.7727451324462891e-01 3.5043578594923019e-02 - <_> - - 0 -1 1127 -2.6904400438070297e-03 - - -4.1960981488227844e-01 1.0044580325484276e-02 - <_> - - 0 -1 1128 -2.6551370974630117e-03 - - 1.1507959663867950e-01 -1.0722310096025467e-01 - <_> - - 0 -1 1129 -5.6895318266469985e-05 - - 4.1630361229181290e-02 -3.1723231077194214e-02 - <_> - - 0 -1 1130 9.8731368780136108e-04 - - 4.2971551418304443e-02 -2.8150218725204468e-01 - <_> - - 0 -1 1131 1.8213579431176186e-02 - - -4.5183058828115463e-02 1.9148880243301392e-01 - <_> - - 0 -1 1132 -8.7277270853519440e-02 - - 1.7189629375934601e-01 -1.2195999920368195e-01 - <_> - - 0 -1 1133 -5.3898650221526623e-03 - - -3.8666540384292603e-01 1.5535250306129456e-02 - <_> - - 0 -1 1134 1.0853979736566544e-02 - - 3.6484178155660629e-02 -3.9597511291503906e-01 - <_> - - 0 -1 1135 -4.1801291517913342e-03 - - -4.8202338814735413e-01 1.7042439430952072e-02 - <_> - - 0 -1 1136 -2.3451769724488258e-02 - - 4.9864768981933594e-01 -2.2096080705523491e-02 - <_> - - 0 -1 1137 2.9061511158943176e-03 - - 2.6948669925332069e-02 -3.2566240429878235e-01 - <_> - - 0 -1 1138 4.6364609152078629e-02 - - 2.6882030069828033e-02 -3.7629741430282593e-01 - <_> - - 0 -1 1139 -2.1972910326439887e-04 - - 7.0536717772483826e-02 -1.0895930230617523e-01 - <_> - - 0 -1 1140 -3.7804399617016315e-03 - - -4.8879170417785645e-01 1.9993200898170471e-02 - <_> - - 0 -1 1141 6.0642170865321532e-05 - - -7.5357668101787567e-02 8.1142887473106384e-02 - <_> - - 0 -1 1142 -1.0688889771699905e-02 - - 2.2067229449748993e-01 -5.6204140186309814e-02 - <_> - - 0 -1 1143 4.3683178722858429e-02 - - -6.1082210391759872e-02 1.7125819623470306e-01 - <_> - - 0 -1 1144 -2.0247129723429680e-02 - - 1.5655870735645294e-01 -7.7006831765174866e-02 - <_> - - 0 -1 1145 -5.9285280294716358e-03 - - -4.3693101406097412e-01 2.0276429131627083e-02 - <_> - - 0 -1 1146 1.1349200271070004e-02 - - -5.9775028377771378e-02 1.6517449915409088e-01 - <_> - - 0 -1 1147 -1.3657160103321075e-01 - - -8.7073618173599243e-01 4.2868419550359249e-03 - <_> - - 0 -1 1148 6.6304646432399750e-02 - - -3.8869779556989670e-02 2.6494520902633667e-01 - <_> - - 0 -1 1149 1.9591119140386581e-02 - - -8.0344326794147491e-02 1.6651239991188049e-01 - <_> - - 0 -1 1150 3.4093219786882401e-02 - - 2.6182109490036964e-02 -4.5268338918685913e-01 - <_> - - 0 -1 1151 -2.0616619288921356e-01 - - -4.2545890808105469e-01 1.5678849071264267e-02 - <_> - - 0 -1 1152 -7.6675140298902988e-03 - - -3.5133340954780579e-01 2.7434019371867180e-02 - <_> - - 0 -1 1153 -1.2914510443806648e-02 - - 1.3598570227622986e-01 -6.3368737697601318e-02 - <_> - - 0 -1 1154 1.6074230894446373e-02 - - 2.1521290764212608e-02 -4.6437129378318787e-01 - <_> - - 0 -1 1155 3.6943029612302780e-02 - - 2.7475500479340553e-02 -3.0736088752746582e-01 - <_> - - 0 -1 1156 -7.5521357357501984e-02 - - -4.2419311404228210e-01 2.3781700059771538e-02 - <_> - - 0 -1 1157 2.4398239329457283e-02 - - -4.9387931823730469e-02 1.6724020242691040e-01 - <_> - - 0 -1 1158 1.1577049642801285e-01 - - 1.6644010320305824e-02 -6.9280111789703369e-01 - <_> - - 0 -1 1159 9.1529998462647200e-04 - - -5.0280008465051651e-02 1.3285259902477264e-01 - <_> - - 0 -1 1160 -3.6248450633138418e-03 - - -3.0668339133262634e-01 2.8492359444499016e-02 - <_> - - 0 -1 1161 -7.3581631295382977e-04 - - 5.5988568812608719e-02 -3.9279788732528687e-02 - <_> - - 0 -1 1162 2.0004369318485260e-01 - - -5.6840810924768448e-02 1.6850389540195465e-01 - <_> - - 0 -1 1163 -1.7877690494060516e-02 - - 1.9317519664764404e-01 -5.1463939249515533e-02 - <_> - - 0 -1 1164 1.1350380256772041e-02 - - -4.8964411020278931e-02 2.1819390356540680e-01 - <_> - - 0 -1 1165 1.2502909637987614e-02 - - -4.1984878480434418e-02 2.7138620615005493e-01 - <_> - - 0 -1 1166 -9.3033276498317719e-03 - - 1.5904520452022552e-01 -6.2697403132915497e-02 - <_> - - 0 -1 1167 9.8205171525478363e-03 - - 1.5533110126852989e-02 -3.3040758967399597e-01 - <_> - - 0 -1 1168 4.4993069022893906e-03 - - 3.7670239806175232e-02 -3.1121370196342468e-01 - <_> - - 0 -1 1169 1.4046450145542622e-02 - - -4.3426249176263809e-02 1.0327199846506119e-01 - <_> - - 0 -1 1170 -4.1117519140243530e-02 - - 1.8679919838905334e-01 -6.6434368491172791e-02 - <_> - - 0 -1 1171 -1.0714519768953323e-02 - - 1.2443839758634567e-01 -6.6358536481857300e-02 - <_> - - 0 -1 1172 9.2895422130823135e-03 - - -8.2169853150844574e-02 1.2243539839982986e-01 - <_> - - 0 -1 1173 -1.3050800189375877e-02 - - -4.0033888816833496e-01 1.6636909916996956e-02 - <_> - - 0 -1 1174 -3.6468189209699631e-02 - - -5.4737377166748047e-01 1.4817729592323303e-02 - <_> - - 0 -1 1175 -7.5372940045781434e-05 - - 5.9471640735864639e-02 -5.7879000902175903e-02 - <_> - - 0 -1 1176 1.4252290129661560e-02 - - 2.5297269225120544e-02 -3.3364731073379517e-01 - <_> - - 0 -1 1177 3.3469200134277344e-03 - - -7.0736803114414215e-02 7.4501320719718933e-02 - <_> - - 0 -1 1178 4.4445958919823170e-03 - - -6.7245952785015106e-02 1.4518859982490540e-01 - <_> - - 0 -1 1179 -8.7205823510885239e-03 - - -2.0213529467582703e-01 2.7520239353179932e-02 - <_> - - 0 -1 1180 4.6921689063310623e-02 - - 1.6156850382685661e-02 -5.3119277954101562e-01 - <_> - - 0 -1 1181 5.8387980971019715e-05 - - -5.5716171860694885e-02 7.2010621428489685e-02 - <_> - - 0 -1 1182 -4.6103101340122521e-05 - - 9.5903009176254272e-02 -9.7147382795810699e-02 - <_> - - 0 -1 1183 6.0657761059701443e-03 - - 2.4071209132671356e-02 -2.3760910332202911e-01 - <_> - - 0 -1 1184 -5.5520370602607727e-02 - - 3.0745118856430054e-01 -2.9971180483698845e-02 - <_> - - 0 -1 1185 -3.6553900688886642e-02 - - 3.2812029123306274e-02 -5.7015221565961838e-02 - <_> - - 0 -1 1186 1.8784699495881796e-03 - - -6.5326198935508728e-02 1.3909830152988434e-01 - <_> - - 0 -1 1187 -7.4822120368480682e-03 - - -7.7482169866561890e-01 5.9286328032612801e-03 - <_> - - 0 -1 1188 -3.3365150447934866e-03 - - -3.6160850524902344e-01 2.2673750296235085e-02 - <_> - - 0 -1 1189 -1.2254999950528145e-02 - - -6.5802180767059326e-01 4.3241591192781925e-03 - <_> - - 0 -1 1190 -2.5022740010172129e-04 - - 1.3684910535812378e-01 -6.1310190707445145e-02 - <_> - - 0 -1 1191 1.1895839869976044e-01 - - 2.4467010051012039e-02 -3.0819290876388550e-01 - <_> - - 0 -1 1192 1.8534749979153275e-03 - - -6.5717779099941254e-02 1.3805060088634491e-01 - <_> - - 0 -1 1193 -1.3966379687190056e-02 - - -4.2816719412803650e-01 1.6665250062942505e-02 - <_> - - 0 -1 1194 -1.2011890299618244e-02 - - -4.5466750860214233e-01 1.7481390386819839e-02 - <_> - - 0 -1 1195 8.6380320135504007e-04 - - 2.6830639690160751e-02 -1.9495770335197449e-01 - <_> - - 0 -1 1196 -5.4863549303263426e-04 - - 1.7281720042228699e-01 -5.1925048232078552e-02 - <_> - - 0 -1 1197 3.5642020404338837e-02 - - 1.1997340247035027e-02 -2.6362249255180359e-01 - <_> - - 0 -1 1198 9.2830741778016090e-03 - - 1.5381329692900181e-02 -5.2768671512603760e-01 - <_> - - 0 -1 1199 3.3444799482822418e-03 - - -4.4816508889198303e-02 1.5563699603080750e-01 - <_> - - 0 -1 1200 -3.4852489829063416e-02 - - -6.1446517705917358e-01 1.4714409597218037e-02 - <_> - - 0 -1 1201 -3.6836538929492235e-03 - - 6.7999623715877533e-02 -4.0318191051483154e-02 - <_> - - 0 -1 1202 2.6370671112090349e-03 - - -5.2716590464115143e-02 1.6502730548381805e-01 - <_> - - 0 -1 1203 -1.1408380232751369e-03 - - -1.4956669509410858e-01 1.5529209747910500e-02 - <_> - - 0 -1 1204 -5.5604642257094383e-03 - - 1.0151620209217072e-01 -7.8308418393135071e-02 - <_> - - 0 -1 1205 3.1304020434617996e-02 - - -5.1962178200483322e-02 1.0363990068435669e-01 - <_> - - 0 -1 1206 9.2903850600123405e-03 - - -5.3988721221685410e-02 1.6530619561672211e-01 - <_> - - 0 -1 1207 -1.0893030092120171e-02 - - 1.2810139358043671e-01 -7.3412962257862091e-02 - <_> - - 0 -1 1208 -4.9190609715878963e-03 - - -3.5075309872627258e-01 2.4489160627126694e-02 - <_> - - 0 -1 1209 8.1175416707992554e-02 - - 2.0940639078617096e-02 -3.7765330076217651e-01 - <_> - - 0 -1 1210 -7.1189319714903831e-03 - - 1.3209669291973114e-01 -7.4379600584506989e-02 - <_> - - 0 -1 1211 2.9033590108156204e-02 - - -6.0153428465127945e-02 1.6865250468254089e-01 - <_> - - 0 -1 1212 2.6668590307235718e-01 - - 3.0215110629796982e-02 -3.3363750576972961e-01 - <_> - - 0 -1 1213 1.3437710003927350e-03 - - 2.4461960420012474e-02 -3.4976521134376526e-01 - <_> - - 0 -1 1214 -6.4065970946103334e-05 - - 6.8185970187187195e-02 -1.2182369828224182e-01 - <_> - - 0 -1 1215 -2.2273659706115723e-03 - - 5.9166438877582550e-02 -5.6960988789796829e-02 - <_> - - 0 -1 1216 1.0822839976754040e-04 - - -1.1836750060319901e-01 6.9902807474136353e-02 - <_> - - 0 -1 1217 7.7762501314282417e-03 - - 1.8266340717673302e-02 -3.2388371229171753e-01 - <_> - - 0 -1 1218 -8.5627898806706071e-04 - - 1.5964969992637634e-01 -5.2340108901262283e-02 - <_> - - 0 -1 1219 3.9805951528251171e-03 - - 5.6993248872458935e-03 -6.3849228620529175e-01 - <_> - - 0 -1 1220 -4.9052381655201316e-04 - - 1.6294740140438080e-01 -7.4230141937732697e-02 - <_> - - 0 -1 1221 -1.8403500318527222e-02 - - -6.7734432220458984e-01 1.0705940425395966e-02 - <_> - - 0 -1 1222 -8.9714571367949247e-04 - - 1.6919730603694916e-01 -4.7718539834022522e-02 - <_> - - 0 -1 1223 -1.6734110191464424e-02 - - -3.1512379646301270e-01 1.2442049570381641e-02 - <_> - - 0 -1 1224 -1.1976989917457104e-02 - - -5.2932238578796387e-01 1.4436270110309124e-02 - <_> - - 0 -1 1225 7.0368088781833649e-03 - - 2.6491589844226837e-02 -2.4709920585155487e-01 - <_> - - 0 -1 1226 -1.0579899884760380e-02 - - -4.0928080677986145e-01 1.8759179860353470e-02 - <_> - - 0 -1 1227 6.0849997680634260e-04 - - -3.3409450203180313e-02 8.4388449788093567e-02 - <_> - - 0 -1 1228 -5.9445307124406099e-04 - - 1.4124199748039246e-01 -5.5558290332555771e-02 - <_> - - 0 -1 1229 -1.5759410336613655e-02 - - -3.8335001468658447e-01 1.5663359314203262e-02 - <_> - - 0 -1 1230 -1.0108030401170254e-02 - - -3.3914390206336975e-01 2.0997010171413422e-02 - <_> - - 0 -1 1231 8.8242385536432266e-03 - - 4.6882901340723038e-02 -3.4558109939098358e-02 - <_> - - 0 -1 1232 1.6952809691429138e-01 - - -2.9788380488753319e-02 2.9782000184059143e-01 - <_> - - 0 -1 1233 1.4175090473145247e-03 - - 1.4550680294632912e-02 -2.5577118992805481e-01 - <_> - - 0 -1 1234 -6.2455357983708382e-03 - - 1.7031440138816833e-01 -4.5718509703874588e-02 - <_> - - 0 -1 1235 8.2971990108489990e-02 - - -1.0885650292038918e-02 2.3585709929466248e-01 - <_> - - 0 -1 1236 -3.6387961357831955e-02 - - 7.2063557803630829e-02 -1.3514919579029083e-01 - <_> - - 0 -1 1237 2.6058170199394226e-01 - - 3.0760489404201508e-02 -2.0818600058555603e-01 - <_> - - 0 -1 1238 -1.8370869755744934e-01 - - -4.6199840307235718e-01 1.7690069973468781e-02 - <_> - - 0 -1 1239 -3.9726989343762398e-03 - - -1.6608929634094238e-01 2.0946720615029335e-02 - <_> - - 0 -1 1240 2.1455910056829453e-02 - - 2.3147830739617348e-02 -3.6254659295082092e-01 - <_> - - 0 -1 1241 1.4431820251047611e-02 - - 4.4689280912280083e-03 -2.4459290504455566e-01 - <_> - - 0 -1 1242 -3.3524229656904936e-03 - - -2.4808409810066223e-01 3.1635299324989319e-02 - <_> - - 0 -1 1243 -1.5669470652937889e-02 - - 3.1724831461906433e-01 -3.7489920854568481e-02 - <_> - - 0 -1 1244 -4.0077429264783859e-02 - - -2.5897759199142456e-01 3.2734971493482590e-02 - <_> - - 0 -1 1245 1.2361209839582443e-02 - - -4.5074861496686935e-02 1.6906499862670898e-01 - <_> - - 0 -1 1246 1.0967889800667763e-02 - - 1.8792109563946724e-02 -4.3848529458045959e-01 - <_> - - 0 -1 1247 -1.3743470422923565e-02 - - -4.6097651124000549e-01 1.2236960232257843e-02 - <_> - - 0 -1 1248 -1.0322439484298229e-03 - - 1.6485999524593353e-01 -5.1658768206834793e-02 - <_> - - 0 -1 1249 8.8313361629843712e-03 - - 1.5935530886054039e-02 -2.0159539580345154e-01 - <_> - - 0 -1 1250 1.4420679770410061e-02 - - 1.6077350825071335e-02 -4.6416330337524414e-01 - <_> - - 0 -1 1251 -1.8205989617854357e-03 - - 4.3313421308994293e-02 -2.8083719313144684e-02 - <_> - - 0 -1 1252 3.9304671809077263e-03 - - 4.9701198935508728e-02 -1.5147739648818970e-01 - <_> - - 0 -1 1253 -8.3210691809654236e-03 - - -1.0299280285835266e-01 1.7981389537453651e-02 - <_> - - 0 -1 1254 -1.1277500307187438e-03 - - 1.6595210134983063e-01 -4.8344310373067856e-02 - <_> - - 0 -1 1255 -7.8385067172348499e-04 - - -1.9464610517024994e-01 2.5084519758820534e-02 - <_> - - 0 -1 1256 -8.5464341100305319e-04 - - 1.4730739593505859e-01 -5.2989389747381210e-02 - <_> - - 0 -1 1257 -6.1449417844414711e-03 - - 9.5158338546752930e-02 -3.2354518771171570e-02 - <_> - - 0 -1 1258 5.3742229938507080e-02 - - -1.6013909131288528e-02 5.1783877611160278e-01 - <_> - - 0 -1 1259 -9.1773690655827522e-03 - - 6.5873071551322937e-02 -2.8698600828647614e-02 - <_> - - 0 -1 1260 -1.6262140125036240e-03 - - 1.1650130152702332e-01 -6.6200569272041321e-02 - <_> - - 0 -1 1261 -7.0246770977973938e-02 - - -5.5616712570190430e-01 3.3650770783424377e-03 - <_> - - 0 -1 1262 -4.5713048428297043e-02 - - -5.5543631315231323e-01 1.4523830264806747e-02 - <_> - - 0 -1 1263 -1.6252630157396197e-03 - - 7.7445946633815765e-02 -4.7753591090440750e-02 - <_> - - 0 -1 1264 -8.7784547358751297e-03 - - -6.6605579853057861e-01 1.1499799787998199e-02 - <_> - - 0 -1 1265 5.8178059756755829e-02 - - -1.2690190225839615e-02 2.4311649799346924e-01 - <_> - - 0 -1 1266 -1.0166700230911374e-03 - - 1.7018359899520874e-01 -4.3462678790092468e-02 - <_> - - 0 -1 1267 -8.3186908159404993e-04 - - -1.5544170141220093e-01 2.7767969295382500e-02 - <_> - - 0 -1 1268 1.0635660146363080e-04 - - -7.9961076378822327e-02 9.7552523016929626e-02 - <_> - - 0 -1 1269 7.7358598355203867e-04 - - 2.8019739314913750e-02 -1.6409790515899658e-01 - <_> - - 0 -1 1270 -5.1288288086652756e-03 - - 1.4355009794235229e-01 -5.2181150764226913e-02 - <_> - - 0 -1 1271 -2.9623789712786674e-02 - - 1.2567119300365448e-01 -7.2701826691627502e-02 - <_> - - 0 -1 1272 4.7920320183038712e-02 - - -6.2750786542892456e-02 1.4967499673366547e-01 - <_> - - 0 -1 1273 2.9907789081335068e-02 - - 3.3279890194535255e-03 -5.3522837162017822e-01 - <_> - - 0 -1 1274 -3.1103161163628101e-03 - - -1.8463380634784698e-01 4.0260940790176392e-02 - <_> - - 0 -1 1275 1.1777599574998021e-03 - - -4.2148880660533905e-02 1.8332019448280334e-01 - <_> - - 0 -1 1276 1.4972169883549213e-02 - - -5.0178010016679764e-02 1.4795599877834320e-01 - <_> - - 0 -1 1277 2.2697489708662033e-02 - - 8.8858045637607574e-03 -3.5102608799934387e-01 - <_> - - 0 -1 1278 1.2884129770100117e-02 - - 3.4654911607503891e-02 -2.4061930179595947e-01 - <_> - - 0 -1 1279 -1.1240700259804726e-03 - - 1.3145309686660767e-01 -2.8843039646744728e-02 - <_> - - 0 -1 1280 -1.3627869775518775e-03 - - 2.0138439536094666e-01 -3.7955548614263535e-02 - <_> - - 0 -1 1281 5.3557957289740443e-04 - - 2.7959279716014862e-02 -1.1965149641036987e-01 - <_> - - 0 -1 1282 -1.5280179679393768e-02 - - -4.8518699407577515e-01 1.5622369945049286e-02 - <_> - - 0 -1 1283 4.6412500523729250e-05 - - -5.8938909322023392e-02 6.0108929872512817e-02 - <_> - - 0 -1 1284 9.6553878393024206e-05 - - -9.6594870090484619e-02 7.7917523682117462e-02 - <_> - - 0 -1 1285 3.8991239853203297e-03 - - -2.6182200759649277e-02 1.9023859500885010e-01 - <_> - - 0 -1 1286 2.3785470053553581e-02 - - 4.0359679609537125e-02 -1.7933170497417450e-01 - <_> - - 0 -1 1287 5.9117228374816477e-05 - - -6.7694537341594696e-02 7.8966610133647919e-02 - <_> - - 0 -1 1288 5.8535519987344742e-02 - - -2.7913320809602737e-02 2.6359620690345764e-01 - <_> - - 0 -1 1289 -6.7125670611858368e-03 - - -8.2460111379623413e-01 3.6960430443286896e-03 - <_> - - 0 -1 1290 -4.6747662127017975e-03 - - -7.6254647970199585e-01 9.2743840068578720e-03 - <_> - - 0 -1 1291 5.3981528617441654e-03 - - 1.9147379789501429e-03 -8.0577397346496582e-01 - <_> - - 0 -1 1292 7.7252141200006008e-03 - - -8.2200609147548676e-02 9.2598602175712585e-02 - <_> - - 0 -1 1293 -1.1672140099108219e-03 - - 1.1479389667510986e-01 -4.5965019613504410e-02 - <_> - - 0 -1 1294 -7.4022258631885052e-03 - - -4.2622160911560059e-01 1.7451889812946320e-02 - <_> - - 0 -1 1295 6.5430802351329476e-05 - - -4.4547699391841888e-02 4.9818251281976700e-02 - <_> - - 0 -1 1296 4.6353430661838502e-05 - - -8.2009993493556976e-02 9.2233128845691681e-02 - <_> - 218 - -1.2540320158004761e+00 - - <_> - - 0 -1 1297 1.0560779832303524e-02 - - -1.7285460233688354e-01 2.0729510486125946e-01 - <_> - - 0 -1 1298 -3.8237389177083969e-02 - - 1.7711129784584045e-01 -1.5853039920330048e-01 - <_> - - 0 -1 1299 -5.4120671004056931e-02 - - 2.5644430518150330e-01 -8.8433571159839630e-02 - <_> - - 0 -1 1300 -2.2004460915923119e-03 - - 2.0103460550308228e-01 -1.1016409844160080e-01 - <_> - - 0 -1 1301 6.5438866615295410e-02 - - 7.8213139204308391e-04 -4.3508232421875000e+03 - <_> - - 0 -1 1302 -1.3564580120146275e-02 - - -5.4078108072280884e-01 4.8653590492904186e-03 - <_> - - 0 -1 1303 -1.8708320567384362e-03 - - 1.6335619986057281e-01 -1.2285909801721573e-01 - <_> - - 0 -1 1304 1.6992689669132233e-01 - - -4.5410599559545517e-03 4.8108500242233276e-01 - <_> - - 0 -1 1305 3.5981500986963511e-03 - - 3.5675730556249619e-02 -4.2361581325531006e-01 - <_> - - 0 -1 1306 5.4489761590957642e-01 - - -1.9873559474945068e-02 5.4604721069335938e-01 - <_> - - 0 -1 1307 -6.2775306403636932e-02 - - 1.7221370339393616e-01 -1.1438000202178955e-01 - <_> - - 0 -1 1308 -4.5944411307573318e-02 - - 2.5957840681076050e-01 -7.3221608996391296e-02 - <_> - - 0 -1 1309 2.1809421014040709e-03 - - 4.9543481320142746e-02 -3.1750869750976562e-01 - <_> - - 0 -1 1310 -9.6566081047058105e-03 - - 1.5817630290985107e-01 -8.9046843349933624e-02 - <_> - - 0 -1 1311 8.0804243683815002e-02 - - 5.0327628850936890e-02 -2.8871178627014160e-01 - <_> - - 0 -1 1312 9.8778933286666870e-02 - - -3.8188338279724121e-02 3.1198310852050781e-01 - <_> - - 0 -1 1313 8.4114018827676773e-03 - - -9.4993650913238525e-02 1.3448500633239746e-01 - <_> - - 0 -1 1314 -1.4770099893212318e-02 - - 1.7157199978828430e-01 -7.5040556490421295e-02 - <_> - - 0 -1 1315 1.0575640201568604e-01 - - -4.4023178517818451e-02 3.4951940178871155e-01 - <_> - - 0 -1 1316 4.0104389190673828e-02 - - -5.7279150933027267e-02 2.7639150619506836e-01 - <_> - - 0 -1 1317 1.3599339872598648e-02 - - -8.8640242815017700e-02 1.5966300666332245e-01 - <_> - - 0 -1 1318 -3.3378789667040110e-03 - - -4.9908700585365295e-01 7.1760369464755058e-03 - <_> - - 0 -1 1319 6.5490198321640491e-03 - - -5.9780698269605637e-02 2.1105900406837463e-01 - <_> - - 0 -1 1320 -6.2758670537732542e-05 - - 6.5547652542591095e-02 -5.4199248552322388e-02 - <_> - - 0 -1 1321 9.0889551211148500e-04 - - 4.2570099234580994e-02 -2.8287160396575928e-01 - <_> - - 0 -1 1322 8.8103182613849640e-02 - - 4.0662709623575211e-02 -2.9837289452552795e-01 - <_> - - 0 -1 1323 -1.3515380024909973e-01 - - -4.0110760927200317e-01 2.5998929515480995e-02 - <_> - - 0 -1 1324 1.0549680329859257e-02 - - 2.6560230180621147e-02 -3.5546660423278809e-01 - <_> - - 0 -1 1325 -1.0974519886076450e-02 - - 1.5402090549468994e-01 -7.1584962308406830e-02 - <_> - - 0 -1 1326 -1.2810549698770046e-02 - - -2.6804751157760620e-01 2.0543249323964119e-02 - <_> - - 0 -1 1327 -6.7375123500823975e-02 - - -5.2991771697998047e-01 1.9250020384788513e-02 - <_> - - 0 -1 1328 1.3328590430319309e-02 - - 1.4192479662597179e-02 -2.6928961277008057e-01 - <_> - - 0 -1 1329 -3.4924790263175964e-02 - - 2.8777620196342468e-01 -3.6692250519990921e-02 - <_> - - 0 -1 1330 -2.5960700586438179e-02 - - -5.2505880594253540e-01 4.2013241909444332e-03 - <_> - - 0 -1 1331 -1.4432610012590885e-02 - - -4.4046211242675781e-01 2.3941269144415855e-02 - <_> - - 0 -1 1332 1.0242980206385255e-03 - - -8.1329412758350372e-02 1.0900759696960449e-01 - <_> - - 0 -1 1333 -3.3913699444383383e-03 - - -2.7442601323127747e-01 3.5398051142692566e-02 - <_> - - 0 -1 1334 -2.5459110736846924e-02 - - 1.8842819333076477e-01 -5.0521291792392731e-02 - <_> - - 0 -1 1335 -2.5063930079340935e-02 - - 1.5833060443401337e-01 -6.7982017993927002e-02 - <_> - - 0 -1 1336 4.5757358893752098e-03 - - -5.1283899694681168e-02 1.1465849727392197e-01 - <_> - - 0 -1 1337 -1.5383529663085938e-01 - - 4.2741459608078003e-01 -2.3353850468993187e-02 - <_> - - 0 -1 1338 6.7441980354487896e-03 - - 1.1636420153081417e-02 -1.9906160235404968e-01 - <_> - - 0 -1 1339 4.9857632257044315e-04 - - -1.1122179776430130e-01 9.1327317059040070e-02 - <_> - - 0 -1 1340 4.1650209575891495e-02 - - -3.4230709075927734e-02 1.3409090042114258e-01 - <_> - - 0 -1 1341 -4.8686578869819641e-02 - - 3.8406088948249817e-01 -3.6709271371364594e-02 - <_> - - 0 -1 1342 -1.4266110025346279e-02 - - 1.9041019678115845e-01 -3.7326261401176453e-02 - <_> - - 0 -1 1343 2.0738251041620970e-03 - - -9.4080023467540741e-02 1.3675460219383240e-01 - <_> - - 0 -1 1344 -1.2780539691448212e-02 - - 7.9020939767360687e-02 -3.2141771167516708e-02 - <_> - - 0 -1 1345 8.7420884519815445e-03 - - -8.0583378672599792e-02 1.4332190155982971e-01 - <_> - - 0 -1 1346 6.9780537160113454e-05 - - -1.5397520363330841e-01 6.9408260285854340e-02 - <_> - - 0 -1 1347 -7.9981610178947449e-03 - - -4.4979119300842285e-01 2.3229770362377167e-02 - <_> - - 0 -1 1348 5.3804512135684490e-03 - - 2.4654839187860489e-02 -1.7253589630126953e-01 - <_> - - 0 -1 1349 -2.0006939768791199e-02 - - 1.6526390612125397e-01 -6.2598757445812225e-02 - <_> - - 0 -1 1350 -4.4656409882009029e-03 - - -3.7304630875587463e-01 1.0551270097494125e-02 - <_> - - 0 -1 1351 -3.1919090542942286e-03 - - -4.4115498661994934e-01 2.0958809182047844e-02 - <_> - - 0 -1 1352 -6.2270428985357285e-02 - - -5.4134678840637207e-01 1.3220540247857571e-02 - <_> - - 0 -1 1353 -4.4956348836421967e-02 - - -4.3312940001487732e-01 2.0668320357799530e-02 - <_> - - 0 -1 1354 1.1595709947869182e-03 - - -2.3692440241575241e-02 1.0879980027675629e-01 - <_> - - 0 -1 1355 -8.8405620772391558e-04 - - 1.6496179997920990e-01 -5.2494730800390244e-02 - <_> - - 0 -1 1356 2.6691770181059837e-02 - - 1.4845820143818855e-02 -5.5716449022293091e-01 - <_> - - 0 -1 1357 1.8276730552315712e-02 - - -6.6286213696002960e-02 1.2577010691165924e-01 - <_> - - 0 -1 1358 -8.0911338329315186e-02 - - 1.1313769966363907e-01 -4.9807820469141006e-02 - <_> - - 0 -1 1359 -3.6403700709342957e-02 - - 2.3366059362888336e-01 -3.8333971053361893e-02 - <_> - - 0 -1 1360 -1.3947879895567894e-02 - - 9.9164612591266632e-02 -6.7826092243194580e-02 - <_> - - 0 -1 1361 -2.2420510649681091e-02 - - 1.9045069813728333e-01 -4.8424690961837769e-02 - <_> - - 0 -1 1362 9.9516332149505615e-02 - - -4.8220060765743256e-02 2.0561240613460541e-01 - <_> - - 0 -1 1363 1.4956299960613251e-01 - - 1.4172339811921120e-02 -6.4508867263793945e-01 - <_> - - 0 -1 1364 9.6693442901596427e-04 - - -3.7843611091375351e-02 6.3549898564815521e-02 - <_> - - 0 -1 1365 1.2041750364005566e-02 - - 1.8035089597105980e-02 -4.7741371393203735e-01 - <_> - - 0 -1 1366 2.3097700905054808e-03 - - -4.1533429175615311e-02 1.3027940690517426e-01 - <_> - - 0 -1 1367 2.2019869647920132e-03 - - -5.1468931138515472e-02 1.7361460626125336e-01 - <_> - - 0 -1 1368 2.7255890890955925e-02 - - -1.5339000150561333e-02 3.6252358555793762e-01 - <_> - - 0 -1 1369 8.8747506961226463e-03 - - -4.2691629379987717e-02 2.0767800509929657e-01 - <_> - - 0 -1 1370 4.7241621650755405e-03 - - -5.0056781619787216e-02 8.7361179292201996e-02 - <_> - - 0 -1 1371 7.3167313530575484e-05 - - -1.2441310286521912e-01 7.2677783668041229e-02 - <_> - - 0 -1 1372 -1.2639940250664949e-03 - - 7.7619902789592743e-02 -4.0498621761798859e-02 - <_> - - 0 -1 1373 3.6909559275954962e-03 - - 3.1138850376009941e-02 -3.0862191319465637e-01 - <_> - - 0 -1 1374 -2.8352240100502968e-02 - - -3.5501840710639954e-01 1.3532860204577446e-02 - <_> - - 0 -1 1375 -9.6667202888056636e-04 - - 6.7602843046188354e-02 -1.4329749345779419e-01 - <_> - - 0 -1 1376 -5.8740310370922089e-02 - - -5.5063128471374512e-01 4.2741261422634125e-03 - <_> - - 0 -1 1377 -2.7275739237666130e-02 - - -6.4931607246398926e-01 1.2534529902040958e-02 - <_> - - 0 -1 1378 -1.1755879968404770e-02 - - -5.6485652923583984e-01 1.3763760216534138e-02 - <_> - - 0 -1 1379 7.5923758558928967e-03 - - -4.3114069849252701e-02 2.0055860280990601e-01 - <_> - - 0 -1 1380 -7.1979401400312781e-04 - - -1.3741749525070190e-01 3.4067109227180481e-02 - <_> - - 0 -1 1381 4.1190441697835922e-03 - - 3.6710578948259354e-02 -2.4774970114231110e-01 - <_> - - 0 -1 1382 7.5443051755428314e-03 - - 7.2344779036939144e-03 -4.4737368822097778e-01 - <_> - - 0 -1 1383 -5.2358289249241352e-03 - - 2.1731640398502350e-01 -3.8680329918861389e-02 - <_> - - 0 -1 1384 7.4686598964035511e-04 - - -3.7170719355344772e-02 3.8519371300935745e-02 - <_> - - 0 -1 1385 8.8468490866944194e-04 - - -1.0209800302982330e-01 9.2614941298961639e-02 - <_> - - 0 -1 1386 -1.1738609755411744e-03 - - 1.1087919771671295e-01 -8.5696041584014893e-02 - <_> - - 0 -1 1387 -9.8959967494010925e-02 - - -4.4991499185562134e-01 2.1242130547761917e-02 - <_> - - 0 -1 1388 8.8248471729457378e-04 - - 2.2897589951753616e-02 -1.9950489699840546e-01 - <_> - - 0 -1 1389 -4.1377689689397812e-02 - - 1.5493899583816528e-01 -5.9139370918273926e-02 - <_> - - 0 -1 1390 6.7946789786219597e-03 - - -7.8361012041568756e-02 1.7395700514316559e-01 - <_> - - 0 -1 1391 4.4758509844541550e-02 - - 2.6089010760188103e-02 -3.3111590147018433e-01 - <_> - - 0 -1 1392 2.9978479724377394e-03 - - 4.5928150415420532e-02 -1.4914700388908386e-01 - <_> - - 0 -1 1393 -5.9589359909296036e-02 - - -2.4853509664535522e-01 3.2523650676012039e-02 - <_> - - 0 -1 1394 9.4199320301413536e-04 - - -4.2554680258035660e-02 1.3448560237884521e-01 - <_> - - 0 -1 1395 -2.3947510868310928e-02 - - -4.5831909775733948e-01 1.7818130552768707e-02 - <_> - - 0 -1 1396 7.4462359771132469e-03 - - -4.2358528822660446e-02 5.8031070977449417e-02 - <_> - - 0 -1 1397 -1.2909569777548313e-02 - - 1.9730390608310699e-01 -4.4523268938064575e-02 - <_> - - 0 -1 1398 2.8930921107530594e-03 - - 4.2881060391664505e-02 -1.3717460632324219e-01 - <_> - - 0 -1 1399 -6.8186258431524038e-04 - - 1.3378690183162689e-01 -5.6549690663814545e-02 - <_> - - 0 -1 1400 9.0884382370859385e-04 - - -3.6167509853839874e-02 1.2201189994812012e-01 - <_> - - 0 -1 1401 4.2305429815314710e-04 - - -6.9509476423263550e-02 1.3025139272212982e-01 - <_> - - 0 -1 1402 -1.6460029873996973e-03 - - -1.3005359470844269e-01 3.2738208770751953e-02 - <_> - - 0 -1 1403 7.2493818588554859e-03 - - 1.2288839556276798e-02 -6.2278699874877930e-01 - <_> - - 0 -1 1404 7.8207803890109062e-03 - - 7.4369488283991814e-03 -1.4869819581508636e-01 - <_> - - 0 -1 1405 3.5927280783653259e-02 - - 1.8867580220103264e-02 -3.9214968681335449e-01 - <_> - - 0 -1 1406 -6.1618811741936952e-05 - - 5.6887779384851456e-02 -6.7739218473434448e-02 - <_> - - 0 -1 1407 3.7408068776130676e-02 - - -3.8547120988368988e-02 2.2187900543212891e-01 - <_> - - 0 -1 1408 -5.2155661396682262e-03 - - 1.3633349537849426e-01 -6.7394860088825226e-02 - <_> - - 0 -1 1409 -9.3568190932273865e-02 - - 1.7437450587749481e-01 -4.8774711787700653e-02 - <_> - - 0 -1 1410 7.6228141784667969e-02 - - -5.7475849986076355e-02 1.4711800217628479e-01 - <_> - - 0 -1 1411 -2.0037770271301270e-02 - - -4.1577899456024170e-01 1.7923019826412201e-02 - <_> - - 0 -1 1412 -1.1824379675090313e-02 - - 1.1446230113506317e-01 -7.0048220455646515e-02 - <_> - - 0 -1 1413 -1.6057320171967149e-03 - - 1.6788209974765778e-01 -4.9946658313274384e-02 - <_> - - 0 -1 1414 -2.5517439935356379e-03 - - -3.8285169005393982e-01 1.1361270211637020e-02 - <_> - - 0 -1 1415 -9.9515629699453712e-05 - - 9.2549681663513184e-02 -9.0349666774272919e-02 - <_> - - 0 -1 1416 -1.6710499301552773e-02 - - 1.7871430516242981e-01 -4.1317749768495560e-02 - <_> - - 0 -1 1417 -9.6687301993370056e-04 - - -2.5220069289207458e-01 3.0552810057997704e-02 - <_> - - 0 -1 1418 -6.0828930145362392e-05 - - 5.4259378463029861e-02 -4.7438140958547592e-02 - <_> - - 0 -1 1419 -8.6335372179746628e-04 - - 1.7799940705299377e-01 -4.2312078177928925e-02 - <_> - - 0 -1 1420 -8.9218461653217673e-04 - - -1.8458789587020874e-01 2.5141609832644463e-02 - <_> - - 0 -1 1421 -3.4870179370045662e-03 - - 1.6776649653911591e-01 -4.6044059097766876e-02 - <_> - - 0 -1 1422 1.9598890095949173e-02 - - 1.8055850639939308e-02 -3.0225679278373718e-01 - <_> - - 0 -1 1423 -1.0987210087478161e-02 - - -3.7276530265808105e-01 1.9768150523304939e-02 - <_> - - 0 -1 1424 -6.6390639403834939e-05 - - 7.6856963336467743e-02 -1.2683600187301636e-01 - <_> - - 0 -1 1425 -4.2606238275766373e-03 - - 1.1328200250864029e-01 -6.9660402834415436e-02 - <_> - - 0 -1 1426 7.3147160001099110e-03 - - 3.2997671514749527e-02 -2.6462730765342712e-01 - <_> - - 0 -1 1427 -1.0119480080902576e-02 - - -4.7061848640441895e-01 1.3846470043063164e-02 - <_> - - 0 -1 1428 9.2144332826137543e-02 - - -8.8630668818950653e-02 8.0828502774238586e-02 - <_> - - 0 -1 1429 1.1842589825391769e-02 - - -5.4271340370178223e-02 1.5906229615211487e-01 - <_> - - 0 -1 1430 2.6060450822114944e-02 - - 2.0219080150127411e-02 -3.7096428871154785e-01 - <_> - - 0 -1 1431 2.8632500767707825e-01 - - 1.7163900658488274e-02 -3.9469349384307861e-01 - <_> - - 0 -1 1432 -1.9337460398674011e-02 - - -2.1738919615745544e-01 1.4887879602611065e-02 - <_> - - 0 -1 1433 6.8996037589386106e-04 - - -6.4250953495502472e-02 1.0741239786148071e-01 - <_> - - 0 -1 1434 2.7315480634570122e-02 - - 5.0893737934529781e-03 -5.5414777994155884e-01 - <_> - - 0 -1 1435 -7.3149320669472218e-03 - - -5.7884562015533447e-01 1.1422660201787949e-02 - <_> - - 0 -1 1436 1.3492980040609837e-02 - - 6.9531891494989395e-03 -3.3597940206527710e-01 - <_> - - 0 -1 1437 1.7034929245710373e-02 - - 9.6587073057889938e-03 -6.6380858421325684e-01 - <_> - - 0 -1 1438 -4.9536321312189102e-02 - - -1.0995940119028091e-01 7.1444557979702950e-03 - <_> - - 0 -1 1439 -3.2623220235109329e-02 - - 1.8881709873676300e-01 -4.1656959801912308e-02 - <_> - - 0 -1 1440 2.5752598885446787e-03 - - -5.1026009023189545e-02 1.0571180284023285e-01 - <_> - - 0 -1 1441 2.4968909565359354e-03 - - -5.5985808372497559e-02 1.3470019400119781e-01 - <_> - - 0 -1 1442 -1.1691699735820293e-02 - - 6.9479256868362427e-02 -4.9810849130153656e-02 - <_> - - 0 -1 1443 5.0966278649866581e-03 - - -7.1984186768531799e-02 1.2013410031795502e-01 - <_> - - 0 -1 1444 8.6429098155349493e-04 - - -2.8091590851545334e-02 1.1059089750051498e-01 - <_> - - 0 -1 1445 -3.0658349860459566e-03 - - -4.0703940391540527e-01 1.8710559234023094e-02 - <_> - - 0 -1 1446 -5.5272910685744137e-05 - - 7.0791281759738922e-02 -7.0031739771366119e-02 - <_> - - 0 -1 1447 6.5698497928678989e-04 - - -4.9295708537101746e-02 1.5482489764690399e-01 - <_> - - 0 -1 1448 5.3707341430708766e-04 - - 3.0296180397272110e-02 -1.2385109812021255e-01 - <_> - - 0 -1 1449 -2.7268910780549049e-02 - - -4.6740248799324036e-01 1.4987439848482609e-02 - <_> - - 0 -1 1450 -2.6138951070606709e-03 - - 1.1666820198297501e-01 -6.1536878347396851e-02 - <_> - - 0 -1 1451 -2.7707589790225029e-02 - - -6.4345467090606689e-01 1.2005249969661236e-02 - <_> - - 0 -1 1452 -2.0054269582033157e-02 - - -3.4935790300369263e-01 1.0976320132613182e-02 - <_> - - 0 -1 1453 6.9170317146927118e-04 - - 4.4264778494834900e-02 -1.4918880164623260e-01 - <_> - - 0 -1 1454 6.4560663304291666e-05 - - -4.2204160243272781e-02 4.7343600541353226e-02 - <_> - - 0 -1 1455 -8.8378103100694716e-05 - - 1.0160549730062485e-01 -7.4064172804355621e-02 - <_> - - 0 -1 1456 -6.6106527810916305e-05 - - 7.5940653681755066e-02 -4.9520809203386307e-02 - <_> - - 0 -1 1457 4.2288508848287165e-04 - - -5.8860011398792267e-02 1.3856880366802216e-01 - <_> - - 0 -1 1458 2.5251980405300856e-03 - - -3.0284479260444641e-02 1.6436590254306793e-01 - <_> - - 0 -1 1459 -9.0347938239574432e-03 - - -6.5022891759872437e-01 1.1707929894328117e-02 - <_> - - 0 -1 1460 -4.2698681354522705e-03 - - 1.2133090198040009e-01 -6.0833681374788284e-02 - <_> - - 0 -1 1461 1.6653979197144508e-02 - - 1.4557110145688057e-02 -5.0316780805587769e-01 - <_> - - 0 -1 1462 -1.1785580217838287e-01 - - -3.4865391254425049e-01 5.8299610391259193e-03 - <_> - - 0 -1 1463 -3.8989041000604630e-02 - - 1.0821299999952316e-01 -8.2435406744480133e-02 - <_> - - 0 -1 1464 -6.9744870997965336e-03 - - 9.2099390923976898e-02 -4.4741760939359665e-02 - <_> - - 0 -1 1465 1.5437410213053226e-02 - - 2.9481740668416023e-02 -2.4086919426918030e-01 - <_> - - 0 -1 1466 -5.9599988162517548e-03 - - -2.2541530430316925e-01 2.5642080232501030e-02 - <_> - - 0 -1 1467 -5.3358142031356692e-04 - - 1.1838089674711227e-01 -5.7124208658933640e-02 - <_> - - 0 -1 1468 1.7693769186735153e-02 - - 2.6607789099216461e-02 -3.0558571219444275e-01 - <_> - - 0 -1 1469 5.3599448874592781e-03 - - -5.6949790567159653e-02 1.2108889967203140e-01 - <_> - - 0 -1 1470 1.5854809433221817e-02 - - 2.1557219326496124e-02 -2.5214201211929321e-01 - <_> - - 0 -1 1471 5.4963350296020508e-02 - - 1.0636219754815102e-02 -5.7305997610092163e-01 - <_> - - 0 -1 1472 -3.7383600138127804e-03 - - 7.7441543340682983e-02 -3.0604809522628784e-02 - <_> - - 0 -1 1473 1.8262390047311783e-02 - - -5.4902829229831696e-02 1.1765880137681961e-01 - <_> - - 0 -1 1474 -3.1827870756387711e-02 - - -9.1100317239761353e-01 1.3938200427219272e-03 - <_> - - 0 -1 1475 -3.6466179881244898e-03 - - 1.0852409899234772e-01 -7.2252616286277771e-02 - <_> - - 0 -1 1476 -5.1743179559707642e-02 - - -9.1869431734085083e-01 1.8797840457409620e-03 - <_> - - 0 -1 1477 -9.0449545532464981e-03 - - 1.7876809835433960e-01 -3.8844209164381027e-02 - <_> - - 0 -1 1478 -4.5340228825807571e-03 - - -2.4725730717182159e-01 2.9726779088377953e-02 - <_> - - 0 -1 1479 6.8734101951122284e-03 - - -6.7521482706069946e-02 1.0654129832983017e-01 - <_> - - 0 -1 1480 7.7327789040282369e-04 - - 2.2192569449543953e-02 -1.3983079791069031e-01 - <_> - - 0 -1 1481 -8.5252941062208265e-05 - - 9.0302497148513794e-02 -7.8618973493576050e-02 - <_> - - 0 -1 1482 4.8931739293038845e-03 - - 3.1124200671911240e-02 -1.6171300411224365e-01 - <_> - - 0 -1 1483 -3.5761829465627670e-02 - - -3.4062370657920837e-01 2.0185910165309906e-02 - <_> - - 0 -1 1484 -1.1069890111684799e-02 - - 1.1651419848203659e-01 -3.4033469855785370e-02 - <_> - - 0 -1 1485 3.4201510716229677e-03 - - -5.3016118705272675e-02 1.3394360244274139e-01 - <_> - - 0 -1 1486 -4.9969270825386047e-02 - - -8.4932959079742432e-01 2.7547380886971951e-03 - <_> - - 0 -1 1487 -1.1221430031582713e-03 - - -1.6294130682945251e-01 4.1338101029396057e-02 - <_> - - 0 -1 1488 3.7148129194974899e-02 - - 1.7175029963254929e-02 -2.8404331207275391e-01 - <_> - - 0 -1 1489 2.3847341071814299e-03 - - 3.4838210791349411e-02 -1.8447269499301910e-01 - <_> - - 0 -1 1490 1.4311249554157257e-01 - - 2.5221729651093483e-02 -2.5437259674072266e-01 - <_> - - 0 -1 1491 -1.1918859556317329e-02 - - 1.6557849943637848e-01 -4.4744271785020828e-02 - <_> - - 0 -1 1492 6.4779450185596943e-03 - - -2.5023799389600754e-02 7.9913288354873657e-02 - <_> - - 0 -1 1493 1.4581739669665694e-03 - - -7.9792372882366180e-02 8.2918867468833923e-02 - <_> - - 0 -1 1494 6.2418850138783455e-03 - - 1.3290929608047009e-02 -2.9951110482215881e-01 - <_> - - 0 -1 1495 -2.2714590653777122e-02 - - 4.3989849090576172e-01 -1.5037129633128643e-02 - <_> - - 0 -1 1496 -4.3001482263207436e-03 - - -3.5465851426124573e-01 7.9521266743540764e-03 - <_> - - 0 -1 1497 1.0604769922792912e-03 - - 3.8593769073486328e-02 -1.7629230022430420e-01 - <_> - - 0 -1 1498 4.3205441907048225e-03 - - 1.7124539241194725e-02 -1.0750160366296768e-01 - <_> - - 0 -1 1499 -3.8217399269342422e-03 - - -4.5892098546028137e-01 1.4125829562544823e-02 - <_> - - 0 -1 1500 9.7336847102269530e-04 - - -3.6155119538307190e-02 1.2680569291114807e-01 - <_> - - 0 -1 1501 -7.9081847798079252e-04 - - 1.7071470618247986e-01 -3.7614621222019196e-02 - <_> - - 0 -1 1502 -7.6159887248650193e-04 - - 2.3113989830017090e-01 -6.0362979769706726e-02 - <_> - - 0 -1 1503 -2.1031539887189865e-02 - - -4.9185648560523987e-01 1.5601299703121185e-02 - <_> - - 0 -1 1504 1.8097320571541786e-02 - - -4.6735849231481552e-02 1.0506930202245712e-01 - <_> - - 0 -1 1505 -1.3120859861373901e-02 - - 1.0183440148830414e-01 -8.5726559162139893e-02 - <_> - - 0 -1 1506 2.0128190517425537e-01 - - -9.4874696806073189e-03 5.4181897640228271e-01 - <_> - - 0 -1 1507 7.3326090350747108e-03 - - 2.8244720771908760e-02 -2.4529810249805450e-01 - <_> - - 0 -1 1508 9.0540642850100994e-04 - - -5.5965088307857513e-02 2.3225949704647064e-01 - <_> - - 0 -1 1509 5.3532002493739128e-04 - - 4.3219450861215591e-02 -1.6520470380783081e-01 - <_> - - 0 -1 1510 -8.0239711678586900e-05 - - 5.8853890746831894e-02 -4.7541521489620209e-02 - <_> - - 0 -1 1511 4.8403399996459484e-03 - - -5.4115850478410721e-02 1.3033269345760345e-01 - <_> - - 0 -1 1512 6.6192197799682617e-01 - - -1.4795269817113876e-02 5.7857227325439453e-01 - <_> - - 0 -1 1513 -8.5441237315535545e-03 - - 1.1657439917325974e-01 -6.2898837029933929e-02 - <_> - - 0 -1 1514 5.4021849791752174e-05 - - -6.0200899839401245e-02 6.9971673190593719e-02 - - <_> - - <_> - 0 0 14 9 -1. - <_> - 0 3 14 3 3. - <_> - - <_> - 17 1 8 14 -1. - <_> - 17 8 8 7 2. - <_> - - <_> - 7 3 11 6 -1. - <_> - 7 5 11 2 3. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 6 4 11 6 -1. - <_> - 6 6 11 2 3. - <_> - - <_> - 17 1 6 3 -1. - <_> - 19 1 2 3 3. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 7 3 13 6 -1. - <_> - 7 5 13 2 3. - <_> - - <_> - 5 3 6 5 -1. - <_> - 8 3 3 5 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 3 3 12 -1. - <_> - 0 7 3 4 3. - <_> - - <_> - 22 10 3 4 -1. - <_> - 22 11 3 2 2. - <_> - - <_> - 0 10 3 4 -1. - <_> - 0 11 3 2 2. - <_> - - <_> - 5 0 15 8 -1. - <_> - 5 2 15 4 2. - <_> - - <_> - 20 0 5 9 -1. - <_> - 20 3 5 3 3. - <_> - - <_> - 6 2 13 4 -1. - <_> - 6 4 13 2 2. - <_> - - <_> - 7 2 15 6 -1. - <_> - 7 4 15 2 3. - <_> - - <_> - 2 3 4 12 -1. - <_> - 2 9 4 6 2. - <_> - - <_> - 6 1 14 6 -1. - <_> - 6 3 14 2 3. - <_> - - <_> - 8 3 9 6 -1. - <_> - 8 5 9 2 3. - <_> - - <_> - 21 0 4 6 -1. - <_> - 21 3 4 3 2. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 7 7 11 8 -1. - <_> - 7 9 11 4 2. - <_> - - <_> - 8 4 9 6 -1. - <_> - 8 6 9 2 3. - <_> - - <_> - 1 0 15 9 -1. - <_> - 1 3 15 3 3. - <_> - - <_> - 9 0 11 15 -1. - <_> - 9 5 11 5 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 7 9 12 6 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - <_> - - <_> - 14 0 2 11 -1. - <_> - 14 0 1 11 2. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 11 2 2 3. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 3 4 -1. - <_> - 0 2 3 2 2. - <_> - - <_> - 7 3 14 6 -1. - <_> - 7 5 14 2 3. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 5 15 2 2. - <_> - - <_> - 8 13 12 1 -1. - <_> - 12 13 4 1 3. - <_> - - <_> - 2 3 12 6 -1. - <_> - 8 3 6 6 2. - <_> - - <_> - 21 2 4 9 -1. - <_> - 21 2 2 9 2. - 1 - <_> - - <_> - 6 2 13 6 -1. - <_> - 6 4 13 2 3. - <_> - - <_> - 5 3 15 2 -1. - <_> - 5 4 15 1 2. - <_> - - <_> - 0 11 5 3 -1. - <_> - 0 12 5 1 3. - <_> - - <_> - 14 0 11 14 -1. - <_> - 14 7 11 7 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 4 3 3 2. - <_> - 3 7 3 3 2. - <_> - - <_> - 23 9 1 4 -1. - <_> - 22 10 1 2 2. - 1 - <_> - - <_> - 2 9 4 1 -1. - <_> - 3 10 2 1 2. - 1 - <_> - - <_> - 16 4 8 10 -1. - <_> - 20 4 4 5 2. - <_> - 16 9 4 5 2. - <_> - - <_> - 8 7 9 6 -1. - <_> - 8 9 9 2 3. - <_> - - <_> - 11 12 4 3 -1. - <_> - 12 12 2 3 2. - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 11 9 14 2 -1. - <_> - 11 9 7 2 2. - <_> - - <_> - 9 13 4 1 -1. - <_> - 10 13 2 1 2. - <_> - - <_> - 0 0 8 6 -1. - <_> - 0 3 8 3 2. - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 0 7 4 3 -1. - <_> - 0 8 4 1 3. - <_> - - <_> - 3 3 20 6 -1. - <_> - 8 3 10 6 2. - <_> - - <_> - 0 6 24 5 -1. - <_> - 6 6 12 5 2. - <_> - - <_> - 8 5 9 6 -1. - <_> - 8 7 9 2 3. - <_> - - <_> - 5 2 14 4 -1. - <_> - 5 4 14 2 2. - <_> - - <_> - 22 8 3 6 -1. - <_> - 22 10 3 2 3. - <_> - - <_> - 3 9 18 2 -1. - <_> - 3 9 9 1 2. - <_> - 12 10 9 1 2. - <_> - - <_> - 22 8 3 6 -1. - <_> - 22 10 3 2 3. - <_> - - <_> - 0 0 24 6 -1. - <_> - 0 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 14 11 4 4 -1. - <_> - 15 11 2 4 2. - <_> - - <_> - 5 5 15 2 -1. - <_> - 5 6 15 1 2. - <_> - - <_> - 5 4 15 6 -1. - <_> - 5 6 15 2 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 6 6 13 6 -1. - <_> - 6 8 13 2 3. - <_> - - <_> - 0 11 6 3 -1. - <_> - 0 12 6 1 3. - <_> - - <_> - 11 0 14 14 -1. - <_> - 11 7 14 7 2. - <_> - - <_> - 7 13 4 1 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 6 9 13 6 -1. - <_> - 6 11 13 2 3. - <_> - - <_> - 0 9 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 21 0 4 6 -1. - <_> - 21 3 4 3 2. - <_> - - <_> - 0 12 6 3 -1. - <_> - 0 13 6 1 3. - <_> - - <_> - 16 11 4 3 -1. - <_> - 17 11 2 3 2. - <_> - - <_> - 0 7 10 8 -1. - <_> - 0 7 5 4 2. - <_> - 5 11 5 4 2. - <_> - - <_> - 22 2 3 8 -1. - <_> - 22 2 3 4 2. - 1 - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 4 2. - <_> - - <_> - 1 13 24 2 -1. - <_> - 13 13 12 1 2. - <_> - 1 14 12 1 2. - <_> - - <_> - 5 5 4 10 -1. - <_> - 6 5 2 10 2. - <_> - - <_> - 13 7 2 6 -1. - <_> - 11 9 2 2 3. - 1 - <_> - - <_> - 8 9 8 6 -1. - <_> - 8 12 8 3 2. - <_> - - <_> - 24 7 1 4 -1. - <_> - 24 8 1 2 2. - <_> - - <_> - 5 7 15 6 -1. - <_> - 5 9 15 2 3. - <_> - - <_> - 21 8 4 3 -1. - <_> - 21 9 4 1 3. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 6 4 15 3 -1. - <_> - 6 5 15 1 3. - <_> - - <_> - 0 3 2 12 -1. - <_> - 0 3 1 6 2. - <_> - 1 9 1 6 2. - <_> - - <_> - 7 3 11 4 -1. - <_> - 7 4 11 2 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 3 6 3 2. - <_> - - <_> - 24 3 1 12 -1. - <_> - 24 7 1 4 3. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 1 1 24 14 -1. - <_> - 13 1 12 7 2. - <_> - 1 8 12 7 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 3 8 2 2. - 1 - <_> - - <_> - 24 9 1 4 -1. - <_> - 23 10 1 2 2. - 1 - <_> - - <_> - 7 7 11 8 -1. - <_> - 7 9 11 4 2. - <_> - - <_> - 24 9 1 4 -1. - <_> - 23 10 1 2 2. - 1 - <_> - - <_> - 0 6 1 9 -1. - <_> - 0 9 1 3 3. - <_> - - <_> - 8 2 9 3 -1. - <_> - 8 3 9 1 3. - <_> - - <_> - 9 4 7 4 -1. - <_> - 9 5 7 2 2. - <_> - - <_> - 22 0 3 2 -1. - <_> - 22 1 3 1 2. - <_> - - <_> - 0 0 13 14 -1. - <_> - 0 7 13 7 2. - <_> - - <_> - 21 9 4 4 -1. - <_> - 21 10 4 2 2. - <_> - - <_> - 0 9 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 3 9 4 1 -1. - <_> - 4 10 2 1 2. - 1 - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 0 8 14 6 -1. - <_> - 0 8 7 3 2. - <_> - 7 11 7 3 2. - <_> - - <_> - 23 10 1 4 -1. - <_> - 22 11 1 2 2. - 1 - <_> - - <_> - 0 3 10 12 -1. - <_> - 0 3 5 6 2. - <_> - 5 9 5 6 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 7 5 11 4 -1. - <_> - 7 6 11 2 2. - <_> - - <_> - 2 7 20 8 -1. - <_> - 12 7 10 8 2. - <_> - - <_> - 12 5 9 8 -1. - <_> - 15 5 3 8 3. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 3 4 4 -1. - <_> - 22 4 2 4 2. - 1 - <_> - - <_> - 4 5 9 8 -1. - <_> - 7 5 3 8 3. - <_> - - <_> - 22 10 3 2 -1. - <_> - 22 10 3 1 2. - 1 - <_> - - <_> - 0 5 24 5 -1. - <_> - 6 5 12 5 2. - <_> - - <_> - 9 7 7 3 -1. - <_> - 9 8 7 1 3. - <_> - - <_> - 2 0 20 9 -1. - <_> - 7 0 10 9 2. - <_> - - <_> - 11 2 8 9 -1. - <_> - 13 2 4 9 2. - <_> - - <_> - 1 8 4 1 -1. - <_> - 2 9 2 1 2. - 1 - <_> - - <_> - 19 5 6 10 -1. - <_> - 22 5 3 5 2. - <_> - 19 10 3 5 2. - <_> - - <_> - 0 5 6 10 -1. - <_> - 0 5 3 5 2. - <_> - 3 10 3 5 2. - <_> - - <_> - 10 10 9 2 -1. - <_> - 13 10 3 2 3. - <_> - - <_> - 5 2 15 2 -1. - <_> - 5 3 15 1 2. - <_> - - <_> - 21 4 4 3 -1. - <_> - 21 4 2 3 2. - <_> - - <_> - 1 5 15 4 -1. - <_> - 1 6 15 2 2. - <_> - - <_> - 21 5 4 10 -1. - <_> - 23 5 2 5 2. - <_> - 21 10 2 5 2. - <_> - - <_> - 0 0 21 8 -1. - <_> - 7 0 7 8 3. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 2 2 21 3 -1. - <_> - 9 2 7 3 3. - <_> - - <_> - 6 3 15 6 -1. - <_> - 6 5 15 2 3. - <_> - - <_> - 0 5 4 10 -1. - <_> - 0 5 2 5 2. - <_> - 2 10 2 5 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 0 7 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 1 3 24 3 -1. - <_> - 7 3 12 3 2. - <_> - - <_> - 0 0 24 13 -1. - <_> - 6 0 12 13 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 5 4 14 3 -1. - <_> - 5 5 14 1 3. - <_> - - <_> - 23 8 2 4 -1. - <_> - 22 9 2 2 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 9 2 2 2. - 1 - <_> - - <_> - 9 8 9 6 -1. - <_> - 9 10 9 2 3. - <_> - - <_> - 0 0 11 14 -1. - <_> - 0 7 11 7 2. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 3 4 -1. - <_> - 0 2 3 2 2. - <_> - - <_> - 7 2 15 4 -1. - <_> - 7 3 15 2 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 21 11 4 4 -1. - <_> - 21 12 4 2 2. - <_> - - <_> - 1 7 12 8 -1. - <_> - 1 7 6 4 2. - <_> - 7 11 6 4 2. - <_> - - <_> - 7 8 11 6 -1. - <_> - 7 11 11 3 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 14 2 1 2. - <_> - - <_> - 10 3 8 6 -1. - <_> - 12 3 4 6 2. - <_> - - <_> - 7 3 8 6 -1. - <_> - 9 3 4 6 2. - <_> - - <_> - 22 6 3 3 -1. - <_> - 22 7 3 1 3. - <_> - - <_> - 0 5 5 6 -1. - <_> - 0 7 5 2 3. - <_> - - <_> - 8 7 9 6 -1. - <_> - 8 9 9 2 3. - <_> - - <_> - 2 0 20 13 -1. - <_> - 12 0 10 13 2. - <_> - - <_> - 19 3 6 4 -1. - <_> - 22 3 3 2 2. - <_> - 19 5 3 2 2. - <_> - - <_> - 3 8 12 3 -1. - <_> - 9 8 6 3 2. - <_> - - <_> - 22 3 2 5 -1. - <_> - 22 3 1 5 2. - 1 - <_> - - <_> - 6 7 8 8 -1. - <_> - 8 7 4 8 2. - <_> - - <_> - 20 0 3 1 -1. - <_> - 21 1 1 1 3. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 22 11 1 3 -1. - <_> - 21 12 1 1 3. - 1 - <_> - - <_> - 1 4 4 3 -1. - <_> - 3 4 2 3 2. - <_> - - <_> - 19 4 6 8 -1. - <_> - 22 4 3 4 2. - <_> - 19 8 3 4 2. - <_> - - <_> - 0 4 8 8 -1. - <_> - 0 4 4 4 2. - <_> - 4 8 4 4 2. - <_> - - <_> - 22 11 1 3 -1. - <_> - 21 12 1 1 3. - 1 - <_> - - <_> - 0 1 24 14 -1. - <_> - 0 1 12 7 2. - <_> - 12 8 12 7 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 9 2 2 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 18 10 7 2 -1. - <_> - 18 11 7 1 2. - <_> - - <_> - 6 11 12 4 -1. - <_> - 6 12 12 2 2. - <_> - - <_> - 14 0 6 15 -1. - <_> - 16 0 2 15 3. - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 15 5 6 6 -1. - <_> - 18 5 3 3 2. - <_> - 15 8 3 3 2. - <_> - - <_> - 5 0 6 15 -1. - <_> - 7 0 2 15 3. - <_> - - <_> - 8 7 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 7 6 10 6 -1. - <_> - 7 8 10 2 3. - <_> - - <_> - 19 11 1 3 -1. - <_> - 18 12 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 12 1 1 3. - 1 - <_> - - <_> - 16 10 4 1 -1. - <_> - 16 10 2 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 0 6 5 3 -1. - <_> - 0 7 5 1 3. - <_> - - <_> - 21 8 1 4 -1. - <_> - 20 9 1 2 2. - 1 - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 23 0 2 2 -1. - <_> - 24 0 1 1 2. - <_> - 23 1 1 1 2. - <_> - - <_> - 3 3 15 6 -1. - <_> - 3 5 15 2 3. - <_> - - <_> - 19 0 6 9 -1. - <_> - 19 3 6 3 3. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 17 3 8 3 -1. - <_> - 17 4 8 1 3. - <_> - - <_> - 4 3 8 4 -1. - <_> - 4 3 8 2 2. - 1 - <_> - - <_> - 16 4 6 2 -1. - <_> - 16 5 6 1 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 22 10 3 2 -1. - <_> - 22 10 3 1 2. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 14 4 9 1 -1. - <_> - 17 7 3 1 3. - 1 - <_> - - <_> - 3 10 2 3 -1. - <_> - 3 10 1 3 2. - 1 - <_> - - <_> - 20 8 5 2 -1. - <_> - 20 8 5 1 2. - 1 - <_> - - <_> - 0 9 16 6 -1. - <_> - 0 9 8 3 2. - <_> - 8 12 8 3 2. - <_> - - <_> - 6 2 13 3 -1. - <_> - 6 3 13 1 3. - <_> - - <_> - 0 1 3 4 -1. - <_> - 0 3 3 2 2. - <_> - - <_> - 8 0 9 12 -1. - <_> - 8 6 9 6 2. - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 5 3 15 3 -1. - <_> - 5 4 15 1 3. - <_> - - <_> - 3 10 2 3 -1. - <_> - 3 10 1 3 2. - 1 - <_> - - <_> - 19 4 6 4 -1. - <_> - 22 4 3 2 2. - <_> - 19 6 3 2 2. - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 3 4 2 2. - <_> - 4 5 4 2 2. - <_> - - <_> - 19 10 5 3 -1. - <_> - 19 11 5 1 3. - <_> - - <_> - 1 10 5 3 -1. - <_> - 1 11 5 1 3. - <_> - - <_> - 12 1 13 14 -1. - <_> - 12 8 13 7 2. - <_> - - <_> - 0 1 13 14 -1. - <_> - 0 8 13 7 2. - <_> - - <_> - 11 3 6 12 -1. - <_> - 14 3 3 6 2. - <_> - 11 9 3 6 2. - <_> - - <_> - 9 5 6 10 -1. - <_> - 9 5 3 5 2. - <_> - 12 10 3 5 2. - <_> - - <_> - 20 8 5 4 -1. - <_> - 20 9 5 2 2. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 8 9 9 3 -1. - <_> - 8 10 9 1 3. - <_> - - <_> - 7 10 6 4 -1. - <_> - 9 10 2 4 3. - <_> - - <_> - 6 6 14 4 -1. - <_> - 6 7 14 2 2. - <_> - - <_> - 9 6 5 4 -1. - <_> - 9 7 5 2 2. - <_> - - <_> - 22 5 3 6 -1. - <_> - 22 7 3 2 3. - <_> - - <_> - 0 5 3 6 -1. - <_> - 0 7 3 2 3. - <_> - - <_> - 17 1 5 4 -1. - <_> - 17 2 5 2 2. - <_> - - <_> - 3 1 6 4 -1. - <_> - 3 2 6 2 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 4 8 3 2 -1. - <_> - 5 9 1 2 3. - 1 - <_> - - <_> - 14 2 4 7 -1. - <_> - 14 2 2 7 2. - <_> - - <_> - 7 2 4 7 -1. - <_> - 9 2 2 7 2. - <_> - - <_> - 9 3 8 5 -1. - <_> - 11 3 4 5 2. - <_> - - <_> - 5 10 15 1 -1. - <_> - 10 10 5 1 3. - <_> - - <_> - 2 6 21 9 -1. - <_> - 9 6 7 9 3. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 6 6 2 3. - <_> - - <_> - 1 12 24 3 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 13 8 2 2 2. - 1 - <_> - - <_> - 8 6 8 5 -1. - <_> - 10 6 4 5 2. - <_> - - <_> - 11 5 6 4 -1. - <_> - 11 6 6 2 2. - <_> - - <_> - 0 14 4 1 -1. - <_> - 2 14 2 1 2. - <_> - - <_> - 16 2 4 13 -1. - <_> - 17 2 2 13 2. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 24 0 1 2 -1. - <_> - 24 1 1 1 2. - <_> - - <_> - 0 5 2 4 -1. - <_> - 1 5 1 4 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 3 8 2 2. - <_> - - <_> - 15 11 10 4 -1. - <_> - 20 11 5 2 2. - <_> - 15 13 5 2 2. - <_> - - <_> - 7 5 11 3 -1. - <_> - 7 6 11 1 3. - <_> - - <_> - 21 4 4 3 -1. - <_> - 21 4 2 3 2. - <_> - - <_> - 0 5 4 1 -1. - <_> - 2 5 2 1 2. - <_> - - <_> - 7 3 12 4 -1. - <_> - 7 4 12 2 2. - <_> - - <_> - 8 6 7 3 -1. - <_> - 8 7 7 1 3. - <_> - - <_> - 16 0 9 14 -1. - <_> - 16 7 9 7 2. - <_> - - <_> - 0 0 24 6 -1. - <_> - 0 0 12 3 2. - <_> - 12 3 12 3 2. - <_> - - <_> - 23 13 2 1 -1. - <_> - 23 13 1 1 2. - <_> - - <_> - 0 13 24 2 -1. - <_> - 0 13 12 1 2. - <_> - 12 14 12 1 2. - <_> - - <_> - 19 12 5 3 -1. - <_> - 19 13 5 1 3. - <_> - - <_> - 9 7 7 4 -1. - <_> - 9 8 7 2 2. - <_> - - <_> - 14 0 4 7 -1. - <_> - 14 0 2 7 2. - 1 - <_> - - <_> - 11 0 7 4 -1. - <_> - 11 0 7 2 2. - 1 - <_> - - <_> - 9 4 14 2 -1. - <_> - 9 5 14 1 2. - <_> - - <_> - 3 2 15 4 -1. - <_> - 3 3 15 2 2. - <_> - - <_> - 19 12 5 3 -1. - <_> - 19 13 5 1 3. - <_> - - <_> - 0 11 8 4 -1. - <_> - 0 11 4 2 2. - <_> - 4 13 4 2 2. - <_> - - <_> - 7 9 11 6 -1. - <_> - 7 11 11 2 3. - <_> - - <_> - 0 11 7 4 -1. - <_> - 0 12 7 2 2. - <_> - - <_> - 20 0 5 2 -1. - <_> - 20 1 5 1 2. - <_> - - <_> - 5 10 3 2 -1. - <_> - 6 11 1 2 3. - 1 - <_> - - <_> - 17 4 8 10 -1. - <_> - 21 4 4 5 2. - <_> - 17 9 4 5 2. - <_> - - <_> - 5 3 15 2 -1. - <_> - 5 4 15 1 2. - <_> - - <_> - 16 4 5 2 -1. - <_> - 16 5 5 1 2. - <_> - - <_> - 1 0 22 10 -1. - <_> - 1 0 11 5 2. - <_> - 12 5 11 5 2. - <_> - - <_> - 20 0 5 2 -1. - <_> - 20 1 5 1 2. - <_> - - <_> - 0 0 5 2 -1. - <_> - 0 1 5 1 2. - <_> - - <_> - 10 1 6 12 -1. - <_> - 13 1 3 6 2. - <_> - 10 7 3 6 2. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 6 0 13 6 -1. - <_> - 6 2 13 2 3. - <_> - - <_> - 4 3 4 4 -1. - <_> - 3 4 4 2 2. - 1 - <_> - - <_> - 20 8 5 3 -1. - <_> - 20 9 5 1 3. - <_> - - <_> - 7 13 2 2 -1. - <_> - 7 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 7 13 2 2 -1. - <_> - 7 13 1 1 2. - <_> - 8 14 1 1 2. - <_> - - <_> - 19 5 6 1 -1. - <_> - 21 5 2 1 3. - <_> - - <_> - 0 8 6 6 -1. - <_> - 0 10 6 2 3. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 3 10 8 1 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 16 11 4 4 -1. - <_> - 17 11 2 4 2. - <_> - - <_> - 5 6 15 2 -1. - <_> - 5 7 15 1 2. - <_> - - <_> - 3 1 20 10 -1. - <_> - 3 1 10 10 2. - <_> - - <_> - 2 4 3 3 -1. - <_> - 2 5 3 1 3. - <_> - - <_> - 16 11 4 4 -1. - <_> - 17 11 2 4 2. - <_> - - <_> - 5 11 4 4 -1. - <_> - 6 11 2 4 2. - <_> - - <_> - 17 4 8 10 -1. - <_> - 21 4 4 5 2. - <_> - 17 9 4 5 2. - <_> - - <_> - 0 8 5 3 -1. - <_> - 0 9 5 1 3. - <_> - - <_> - 23 13 2 1 -1. - <_> - 23 13 1 1 2. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 10 1 7 3 -1. - <_> - 10 2 7 1 3. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 6 0 16 11 -1. - <_> - 6 0 8 11 2. - <_> - - <_> - 2 0 21 3 -1. - <_> - 9 0 7 3 3. - <_> - - <_> - 23 1 2 12 -1. - <_> - 23 1 2 6 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 0 6 3 -1. - <_> - 17 0 2 3 3. - <_> - - <_> - 8 9 6 4 -1. - <_> - 10 9 2 4 3. - <_> - - <_> - 20 5 5 6 -1. - <_> - 20 7 5 2 3. - <_> - - <_> - 0 4 24 8 -1. - <_> - 0 4 12 4 2. - <_> - 12 8 12 4 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 7 0 11 3 -1. - <_> - 7 1 11 1 3. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 7 11 11 4 -1. - <_> - 7 13 11 2 2. - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 2 4 21 6 -1. - <_> - 9 6 7 2 9. - <_> - - <_> - 23 3 2 10 -1. - <_> - 24 3 1 5 2. - <_> - 23 8 1 5 2. - <_> - - <_> - 0 3 2 10 -1. - <_> - 0 3 1 5 2. - <_> - 1 8 1 5 2. - <_> - - <_> - 24 10 1 4 -1. - <_> - 23 11 1 2 2. - 1 - <_> - - <_> - 1 10 4 1 -1. - <_> - 2 11 2 1 2. - 1 - <_> - - <_> - 8 10 9 4 -1. - <_> - 8 11 9 2 2. - <_> - - <_> - 5 8 13 6 -1. - <_> - 5 11 13 3 2. - <_> - - <_> - 5 0 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 1 0 22 15 -1. - <_> - 12 0 11 15 2. - <_> - - <_> - 10 14 8 1 -1. - <_> - 12 14 4 1 2. - <_> - - <_> - 1 3 8 4 -1. - <_> - 1 4 8 2 2. - <_> - - <_> - 15 13 1 2 -1. - <_> - 15 14 1 1 2. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 23 12 2 1 -1. - <_> - 23 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 8 13 9 2 -1. - <_> - 11 13 3 2 3. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 20 12 4 3 -1. - <_> - 20 13 4 1 3. - <_> - - <_> - 3 0 18 10 -1. - <_> - 3 0 9 5 2. - <_> - 12 5 9 5 2. - <_> - - <_> - 10 12 6 3 -1. - <_> - 12 12 2 3 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 2 1 4 2. - <_> - - <_> - 22 5 3 4 -1. - <_> - 22 6 3 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 6 0 14 10 -1. - <_> - 13 0 7 5 2. - <_> - 6 5 7 5 2. - <_> - - <_> - 1 12 4 3 -1. - <_> - 1 13 4 1 3. - <_> - - <_> - 20 7 2 2 -1. - <_> - 21 7 1 1 2. - <_> - 20 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 22 6 3 4 -1. - <_> - 22 7 3 2 2. - <_> - - <_> - 9 6 7 3 -1. - <_> - 9 7 7 1 3. - <_> - - <_> - 11 6 4 2 -1. - <_> - 11 7 4 1 2. - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 7 5 2 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 5 15 2 3. - <_> - - <_> - 4 4 5 2 -1. - <_> - 4 5 5 1 2. - <_> - - <_> - 11 12 6 3 -1. - <_> - 13 12 2 3 3. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 7 11 12 2 -1. - <_> - 11 11 4 2 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 8 7 9 3 -1. - <_> - 8 8 9 1 3. - <_> - - <_> - 8 8 9 6 -1. - <_> - 8 10 9 2 3. - <_> - - <_> - 20 11 5 4 -1. - <_> - 20 12 5 2 2. - <_> - - <_> - 7 5 8 3 -1. - <_> - 9 5 4 3 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 11 5 4 -1. - <_> - 0 12 5 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 9 6 6 -1. - <_> - 7 9 2 6 3. - <_> - - <_> - 14 10 10 4 -1. - <_> - 19 10 5 2 2. - <_> - 14 12 5 2 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 16 6 3 2 -1. - <_> - 17 6 1 2 3. - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 13 3 8 4 -1. - <_> - 12 4 8 2 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 13 1 8 6 -1. - <_> - 11 3 8 2 3. - 1 - <_> - - <_> - 12 3 4 8 -1. - <_> - 13 4 2 8 2. - 1 - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 9 1 7 1 3. - <_> - - <_> - 12 1 5 2 -1. - <_> - 12 2 5 1 2. - <_> - - <_> - 6 1 13 3 -1. - <_> - 6 2 13 1 3. - <_> - - <_> - 14 3 10 12 -1. - <_> - 19 3 5 6 2. - <_> - 14 9 5 6 2. - <_> - - <_> - 1 6 21 6 -1. - <_> - 8 6 7 6 3. - <_> - - <_> - 12 0 10 12 -1. - <_> - 12 0 5 12 2. - <_> - - <_> - 7 8 11 3 -1. - <_> - 7 9 11 1 3. - <_> - - <_> - 2 5 22 10 -1. - <_> - 2 5 11 10 2. - <_> - - <_> - 5 4 15 4 -1. - <_> - 5 6 15 2 2. - <_> - - <_> - 7 1 15 6 -1. - <_> - 7 3 15 2 3. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 10 2 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 11 9 9 2 -1. - <_> - 14 9 3 2 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 17 10 8 4 -1. - <_> - 17 11 8 2 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 11 8 2 2. - <_> - - <_> - 16 11 6 4 -1. - <_> - 18 11 2 4 3. - <_> - - <_> - 0 13 24 1 -1. - <_> - 6 13 12 1 2. - <_> - - <_> - 0 9 10 6 -1. - <_> - 0 9 5 3 2. - <_> - 5 12 5 3 2. - <_> - - <_> - 13 5 10 10 -1. - <_> - 18 5 5 5 2. - <_> - 13 10 5 5 2. - <_> - - <_> - 0 4 4 2 -1. - <_> - 2 4 2 2 2. - <_> - - <_> - 13 5 12 10 -1. - <_> - 19 5 6 5 2. - <_> - 13 10 6 5 2. - <_> - - <_> - 0 5 12 10 -1. - <_> - 0 5 6 5 2. - <_> - 6 10 6 5 2. - <_> - - <_> - 11 11 3 4 -1. - <_> - 11 13 3 2 2. - <_> - - <_> - 5 8 2 5 -1. - <_> - 5 8 1 5 2. - 1 - <_> - - <_> - 4 14 18 1 -1. - <_> - 4 14 9 1 2. - <_> - - <_> - 1 0 1 6 -1. - <_> - 1 3 1 3 2. - <_> - - <_> - 8 9 9 4 -1. - <_> - 8 10 9 2 2. - <_> - - <_> - 0 9 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 19 5 6 2 -1. - <_> - 21 5 2 2 3. - <_> - - <_> - 0 5 6 2 -1. - <_> - 2 5 2 2 3. - <_> - - <_> - 13 9 6 3 -1. - <_> - 15 9 2 3 3. - <_> - - <_> - 2 3 21 9 -1. - <_> - 9 3 7 9 3. - <_> - - <_> - 11 9 10 2 -1. - <_> - 11 9 5 2 2. - <_> - - <_> - 0 0 24 14 -1. - <_> - 0 0 12 7 2. - <_> - 12 7 12 7 2. - <_> - - <_> - 5 2 15 6 -1. - <_> - 5 4 15 2 3. - <_> - - <_> - 2 0 16 11 -1. - <_> - 10 0 8 11 2. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 10 5 5 4 -1. - <_> - 10 6 5 2 2. - <_> - - <_> - 23 0 2 3 -1. - <_> - 23 1 2 1 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 0 1 6 1 3. - <_> - - <_> - 10 5 15 2 -1. - <_> - 10 6 15 1 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 4 3 2 2. - <_> - 3 6 3 2 2. - <_> - - <_> - 21 7 2 4 -1. - <_> - 20 8 2 2 2. - 1 - <_> - - <_> - 4 7 4 2 -1. - <_> - 5 8 2 2 2. - 1 - <_> - - <_> - 24 13 1 2 -1. - <_> - 24 14 1 1 2. - <_> - - <_> - 2 0 4 15 -1. - <_> - 3 0 2 15 2. - <_> - - <_> - 21 0 4 1 -1. - <_> - 22 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 1 1 24 14 -1. - <_> - 13 1 12 7 2. - <_> - 1 8 12 7 2. - <_> - - <_> - 6 9 6 6 -1. - <_> - 8 9 2 6 3. - <_> - - <_> - 5 3 15 4 -1. - <_> - 10 3 5 4 3. - <_> - - <_> - 0 0 20 10 -1. - <_> - 5 0 10 10 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 3 2 7 2 -1. - <_> - 3 3 7 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 19 14 6 1 -1. - <_> - 19 14 3 1 2. - <_> - - <_> - 4 2 6 13 -1. - <_> - 6 2 2 13 3. - <_> - - <_> - 17 14 8 1 -1. - <_> - 19 14 4 1 2. - <_> - - <_> - 0 14 8 1 -1. - <_> - 2 14 4 1 2. - <_> - - <_> - 23 11 2 2 -1. - <_> - 23 11 2 1 2. - 1 - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 8 4 9 4 -1. - <_> - 8 5 9 2 2. - <_> - - <_> - 8 4 9 3 -1. - <_> - 8 5 9 1 3. - <_> - - <_> - 22 6 2 4 -1. - <_> - 23 6 1 2 2. - <_> - 22 8 1 2 2. - <_> - - <_> - 7 3 6 8 -1. - <_> - 9 3 2 8 3. - <_> - - <_> - 22 4 3 4 -1. - <_> - 22 5 3 2 2. - <_> - - <_> - 3 9 4 2 -1. - <_> - 4 10 2 2 2. - 1 - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 9 11 6 1 -1. - <_> - 11 11 2 1 3. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 20 5 5 6 -1. - <_> - 20 7 5 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 15 0 4 9 -1. - <_> - 16 0 2 9 2. - <_> - - <_> - 5 1 14 14 -1. - <_> - 5 1 7 7 2. - <_> - 12 8 7 7 2. - <_> - - <_> - 15 0 4 9 -1. - <_> - 16 0 2 9 2. - <_> - - <_> - 0 7 5 3 -1. - <_> - 0 8 5 1 3. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 6 0 4 15 -1. - <_> - 7 0 2 15 2. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 3 3 4 1 3. - 1 - <_> - - <_> - 13 5 3 7 -1. - <_> - 14 6 1 7 3. - 1 - <_> - - <_> - 4 10 15 1 -1. - <_> - 9 10 5 1 3. - <_> - - <_> - 12 6 10 9 -1. - <_> - 12 6 5 9 2. - <_> - - <_> - 1 1 22 14 -1. - <_> - 12 1 11 14 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 2 5 11 2 -1. - <_> - 2 6 11 1 2. - <_> - - <_> - 4 1 10 4 -1. - <_> - 3 2 10 2 2. - 1 - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 0 9 6 6 -1. - <_> - 0 9 3 3 2. - <_> - 3 12 3 3 2. - <_> - - <_> - 19 3 5 2 -1. - <_> - 19 4 5 1 2. - <_> - - <_> - 2 10 14 4 -1. - <_> - 2 10 7 2 2. - <_> - 9 12 7 2 2. - <_> - - <_> - 1 3 24 8 -1. - <_> - 9 3 8 8 3. - <_> - - <_> - 0 8 2 6 -1. - <_> - 0 10 2 2 3. - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 4 3 2 2. - <_> - 3 6 3 2 2. - <_> - - <_> - 3 13 21 1 -1. - <_> - 10 13 7 1 3. - <_> - - <_> - 0 0 24 14 -1. - <_> - 0 0 12 7 2. - <_> - 12 7 12 7 2. - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 4 11 2 2 -1. - <_> - 4 11 1 2 2. - 1 - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 14 2 1 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 7 2 11 6 -1. - <_> - 7 4 11 2 3. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 2 2. - 1 - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 2 0 20 2 -1. - <_> - 7 0 10 2 2. - <_> - - <_> - 10 0 10 4 -1. - <_> - 10 0 5 4 2. - <_> - - <_> - 0 0 20 1 -1. - <_> - 10 0 10 1 2. - <_> - - <_> - 8 4 10 3 -1. - <_> - 8 5 10 1 3. - <_> - - <_> - 9 6 7 6 -1. - <_> - 9 8 7 2 3. - <_> - - <_> - 8 5 9 3 -1. - <_> - 8 6 9 1 3. - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 24 0 1 4 -1. - <_> - 24 2 1 2 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 10 10 1 1 2. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 10 3 6 10 -1. - <_> - 13 3 3 5 2. - <_> - 10 8 3 5 2. - <_> - - <_> - 3 10 4 1 -1. - <_> - 4 11 2 1 2. - 1 - <_> - - <_> - 16 2 9 4 -1. - <_> - 16 2 9 2 2. - 1 - <_> - - <_> - 9 2 4 9 -1. - <_> - 9 2 2 9 2. - 1 - <_> - - <_> - 20 9 3 3 -1. - <_> - 20 10 3 1 3. - <_> - - <_> - 6 1 13 4 -1. - <_> - 6 2 13 2 2. - <_> - - <_> - 10 4 5 4 -1. - <_> - 10 5 5 2 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 21 5 4 4 -1. - <_> - 21 6 4 2 2. - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 8 9 9 6 -1. - <_> - 8 11 9 2 3. - <_> - - <_> - 4 11 3 1 -1. - <_> - 5 12 1 1 3. - 1 - <_> - - <_> - 23 14 2 1 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 14 2 1 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 11 1 4 14 -1. - <_> - 11 8 4 7 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 24 12 1 2 -1. - <_> - 24 13 1 1 2. - <_> - - <_> - 0 1 14 14 -1. - <_> - 0 8 14 7 2. - <_> - - <_> - 13 0 6 15 -1. - <_> - 15 0 2 15 3. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 3 1 2 2. - <_> - - <_> - 24 13 1 2 -1. - <_> - 24 14 1 1 2. - <_> - - <_> - 0 13 1 2 -1. - <_> - 0 14 1 1 2. - <_> - - <_> - 23 11 2 4 -1. - <_> - 23 12 2 2 2. - <_> - - <_> - 0 11 2 4 -1. - <_> - 0 12 2 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 1 0 24 6 -1. - <_> - 13 0 12 3 2. - <_> - 1 3 12 3 2. - <_> - - <_> - 6 1 6 12 -1. - <_> - 8 1 2 12 3. - <_> - - <_> - 19 6 6 3 -1. - <_> - 19 7 6 1 3. - <_> - - <_> - 5 6 7 2 -1. - <_> - 5 7 7 1 2. - <_> - - <_> - 9 6 7 4 -1. - <_> - 9 7 7 2 2. - <_> - - <_> - 0 6 6 3 -1. - <_> - 0 7 6 1 3. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 6 0 12 10 -1. - <_> - 6 0 6 5 2. - <_> - 12 5 6 5 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 12 11 6 2 -1. - <_> - 14 11 2 2 3. - <_> - - <_> - 7 11 6 2 -1. - <_> - 9 11 2 2 3. - <_> - - <_> - 5 12 18 3 -1. - <_> - 11 12 6 3 3. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 21 4 4 2 -1. - <_> - 23 4 2 1 2. - <_> - 21 5 2 1 2. - <_> - - <_> - 9 3 7 3 -1. - <_> - 9 4 7 1 3. - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 12 1 6 4 -1. - <_> - 11 2 6 2 2. - 1 - <_> - - <_> - 22 0 2 2 -1. - <_> - 22 1 2 1 2. - <_> - - <_> - 4 1 16 12 -1. - <_> - 12 1 8 12 2. - <_> - - <_> - 3 0 20 10 -1. - <_> - 3 0 10 10 2. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 4 3 3 2. - <_> - 3 7 3 3 2. - <_> - - <_> - 22 4 3 3 -1. - <_> - 23 5 1 3 3. - 1 - <_> - - <_> - 3 4 3 3 -1. - <_> - 2 5 3 1 3. - 1 - <_> - - <_> - 22 7 3 4 -1. - <_> - 22 8 3 2 2. - <_> - - <_> - 3 1 4 7 -1. - <_> - 4 1 2 7 2. - <_> - - <_> - 22 7 3 4 -1. - <_> - 22 8 3 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 18 4 6 2 -1. - <_> - 18 5 6 1 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 5 15 2 3. - <_> - - <_> - 16 4 8 4 -1. - <_> - 16 5 8 2 2. - <_> - - <_> - 0 1 24 10 -1. - <_> - 0 1 12 5 2. - <_> - 12 6 12 5 2. - <_> - - <_> - 14 0 4 7 -1. - <_> - 15 0 2 7 2. - <_> - - <_> - 0 7 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 18 5 4 4 -1. - <_> - 20 5 2 2 2. - <_> - 18 7 2 2 2. - <_> - - <_> - 5 5 6 2 -1. - <_> - 5 5 3 1 2. - <_> - 8 6 3 1 2. - <_> - - <_> - 21 9 2 3 -1. - <_> - 21 10 2 1 3. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 9 7 7 6 -1. - <_> - 9 9 7 2 3. - <_> - - <_> - 17 2 7 2 -1. - <_> - 17 3 7 1 2. - <_> - - <_> - 4 2 9 4 -1. - <_> - 3 3 9 2 2. - 1 - <_> - - <_> - 19 14 6 1 -1. - <_> - 19 14 3 1 2. - <_> - - <_> - 6 9 11 6 -1. - <_> - 6 11 11 2 3. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 7 24 8 -1. - <_> - 0 7 12 4 2. - <_> - 12 11 12 4 2. - <_> - - <_> - 5 3 16 12 -1. - <_> - 13 3 8 6 2. - <_> - 5 9 8 6 2. - <_> - - <_> - 0 3 24 6 -1. - <_> - 8 5 8 2 9. - <_> - - <_> - 1 8 24 1 -1. - <_> - 7 8 12 1 2. - <_> - - <_> - 1 9 14 6 -1. - <_> - 1 9 7 3 2. - <_> - 8 12 7 3 2. - <_> - - <_> - 19 5 3 2 -1. - <_> - 19 6 3 1 2. - <_> - - <_> - 0 14 10 1 -1. - <_> - 5 14 5 1 2. - <_> - - <_> - 5 1 15 6 -1. - <_> - 5 3 15 2 3. - <_> - - <_> - 1 1 7 6 -1. - <_> - 1 3 7 2 3. - <_> - - <_> - 15 12 6 3 -1. - <_> - 17 13 2 1 9. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 1 12 24 3 -1. - <_> - 7 12 12 3 2. - <_> - - <_> - 3 12 6 3 -1. - <_> - 5 13 2 1 9. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 2 0 21 15 -1. - <_> - 9 0 7 15 3. - <_> - - <_> - 17 3 6 2 -1. - <_> - 17 4 6 1 2. - <_> - - <_> - 3 3 14 2 -1. - <_> - 3 4 14 1 2. - <_> - - <_> - 4 0 21 4 -1. - <_> - 11 0 7 4 3. - <_> - - <_> - 6 13 4 1 -1. - <_> - 7 13 2 1 2. - <_> - - <_> - 17 3 8 12 -1. - <_> - 21 3 4 6 2. - <_> - 17 9 4 6 2. - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 5 0 16 8 -1. - <_> - 13 0 8 4 2. - <_> - 5 4 8 4 2. - <_> - - <_> - 3 7 4 2 -1. - <_> - 4 8 2 2 2. - 1 - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 12 15 2 2. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 9 5 6 4 -1. - <_> - 9 6 6 2 2. - <_> - - <_> - 12 5 13 2 -1. - <_> - 12 6 13 1 2. - <_> - - <_> - 5 0 15 6 -1. - <_> - 5 2 15 2 3. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 1 1 22 14 -1. - <_> - 12 1 11 14 2. - <_> - - <_> - 15 5 10 2 -1. - <_> - 15 6 10 1 2. - <_> - - <_> - 0 5 13 2 -1. - <_> - 0 6 13 1 2. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 21 11 4 4 -1. - <_> - 21 12 4 2 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 23 3 2 4 -1. - <_> - 23 3 1 4 2. - <_> - - <_> - 7 1 4 6 -1. - <_> - 8 1 2 6 2. - <_> - - <_> - 8 6 11 3 -1. - <_> - 8 7 11 1 3. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 21 12 3 3 -1. - <_> - 21 13 3 1 3. - <_> - - <_> - 1 12 3 3 -1. - <_> - 1 13 3 1 3. - <_> - - <_> - 23 3 2 4 -1. - <_> - 23 3 1 4 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 1 3 1 4 2. - <_> - - <_> - 21 3 4 10 -1. - <_> - 23 3 2 5 2. - <_> - 21 8 2 5 2. - <_> - - <_> - 0 3 4 10 -1. - <_> - 0 3 2 5 2. - <_> - 2 8 2 5 2. - <_> - - <_> - 24 1 1 4 -1. - <_> - 24 2 1 2 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 16 1 4 4 -1. - <_> - 17 1 2 4 2. - <_> - - <_> - 5 1 4 4 -1. - <_> - 6 1 2 4 2. - <_> - - <_> - 15 2 10 12 -1. - <_> - 15 8 10 6 2. - <_> - - <_> - 8 5 9 3 -1. - <_> - 8 6 9 1 3. - <_> - - <_> - 6 7 14 2 -1. - <_> - 6 8 14 1 2. - <_> - - <_> - 10 7 5 4 -1. - <_> - 10 8 5 2 2. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 3 13 21 2 -1. - <_> - 10 13 7 2 3. - <_> - - <_> - 6 1 3 1 -1. - <_> - 7 1 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 8 8 9 2 -1. - <_> - 11 8 3 2 3. - <_> - - <_> - 23 12 2 3 -1. - <_> - 23 13 2 1 3. - <_> - - <_> - 0 12 2 3 -1. - <_> - 0 13 2 1 3. - <_> - - <_> - 8 4 9 9 -1. - <_> - 8 7 9 3 3. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 11 6 2 2. - <_> - 9 13 6 2 2. - <_> - - <_> - 10 10 5 4 -1. - <_> - 10 11 5 2 2. - <_> - - <_> - 7 14 6 1 -1. - <_> - 9 14 2 1 3. - <_> - - <_> - 4 0 18 15 -1. - <_> - 4 0 9 15 2. - <_> - - <_> - 0 3 4 4 -1. - <_> - 1 3 2 4 2. - <_> - - <_> - 22 0 3 4 -1. - <_> - 22 2 3 2 2. - <_> - - <_> - 0 0 20 8 -1. - <_> - 5 0 10 8 2. - <_> - - <_> - 1 5 24 10 -1. - <_> - 13 5 12 5 2. - <_> - 1 10 12 5 2. - <_> - - <_> - 0 5 5 6 -1. - <_> - 0 7 5 2 3. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 2 3 4 2 -1. - <_> - 2 3 4 1 2. - 1 - <_> - - <_> - 14 1 6 6 -1. - <_> - 16 1 2 6 3. - <_> - - <_> - 5 1 6 6 -1. - <_> - 7 1 2 6 3. - <_> - - <_> - 11 10 6 1 -1. - <_> - 13 10 2 1 3. - <_> - - <_> - 6 8 11 4 -1. - <_> - 6 9 11 2 2. - <_> - - <_> - 23 13 2 2 -1. - <_> - 24 13 1 1 2. - <_> - 23 14 1 1 2. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 17 0 3 1 -1. - <_> - 18 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 22 12 2 2 -1. - <_> - 23 12 1 1 2. - <_> - 22 13 1 1 2. - <_> - - <_> - 0 13 2 1 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 22 13 2 1 -1. - <_> - 22 13 1 1 2. - <_> - - <_> - 1 13 2 1 -1. - <_> - 2 13 1 1 2. - <_> - - <_> - 22 13 3 1 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 2 2 12 -1. - <_> - 2 2 1 12 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 3 3 4 2 -1. - <_> - 3 4 4 1 2. - <_> - - <_> - 24 0 1 12 -1. - <_> - 24 3 1 6 2. - <_> - - <_> - 5 8 15 6 -1. - <_> - 5 10 15 2 3. - <_> - - <_> - 19 7 6 2 -1. - <_> - 19 7 6 1 2. - 1 - <_> - - <_> - 1 10 5 3 -1. - <_> - 1 11 5 1 3. - <_> - - <_> - 24 0 1 12 -1. - <_> - 24 3 1 6 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 3 1 6 2. - <_> - - <_> - 9 0 12 1 -1. - <_> - 13 0 4 1 3. - <_> - - <_> - 4 0 12 1 -1. - <_> - 8 0 4 1 3. - <_> - - <_> - 3 0 20 1 -1. - <_> - 8 0 10 1 2. - <_> - - <_> - 1 0 9 2 -1. - <_> - 4 0 3 2 3. - <_> - - <_> - 11 6 8 2 -1. - <_> - 11 7 8 1 2. - <_> - - <_> - 11 3 3 8 -1. - <_> - 11 7 3 4 2. - <_> - - <_> - 20 4 4 2 -1. - <_> - 21 5 2 2 2. - 1 - <_> - - <_> - 6 7 2 6 -1. - <_> - 6 7 1 6 2. - 1 - <_> - - <_> - 20 4 4 2 -1. - <_> - 21 5 2 2 2. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 4 5 2 2 2. - 1 - <_> - - <_> - 7 5 11 3 -1. - <_> - 7 6 11 1 3. - <_> - - <_> - 20 1 3 4 -1. - <_> - 20 2 3 2 2. - <_> - - <_> - 8 4 9 3 -1. - <_> - 8 5 9 1 3. - <_> - - <_> - 9 6 9 3 -1. - <_> - 9 7 9 1 3. - <_> - - <_> - 0 7 8 8 -1. - <_> - 0 7 4 4 2. - <_> - 4 11 4 4 2. - <_> - - <_> - 9 7 7 3 -1. - <_> - 9 8 7 1 3. - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 21 1 1 6 -1. - <_> - 19 3 1 2 3. - 1 - <_> - - <_> - 0 7 24 5 -1. - <_> - 6 7 12 5 2. - <_> - - <_> - 24 11 1 2 -1. - <_> - 24 11 1 1 2. - 1 - <_> - - <_> - 5 2 8 5 -1. - <_> - 5 2 4 5 2. - 1 - <_> - - <_> - 16 3 8 12 -1. - <_> - 20 3 4 6 2. - <_> - 16 9 4 6 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 8 2 10 8 -1. - <_> - 13 2 5 4 2. - <_> - 8 6 5 4 2. - <_> - - <_> - 0 3 2 8 -1. - <_> - 0 3 1 4 2. - <_> - 1 7 1 4 2. - <_> - - <_> - 22 11 2 4 -1. - <_> - 22 12 2 2 2. - <_> - - <_> - 1 11 2 4 -1. - <_> - 1 12 2 2 2. - <_> - - <_> - 12 2 13 12 -1. - <_> - 12 8 13 6 2. - <_> - - <_> - 5 8 2 4 -1. - <_> - 5 8 1 4 2. - 1 - <_> - - <_> - 15 6 6 7 -1. - <_> - 17 6 2 7 3. - <_> - - <_> - 4 6 6 6 -1. - <_> - 6 6 2 6 3. - <_> - - <_> - 13 13 9 2 -1. - <_> - 16 13 3 2 3. - <_> - - <_> - 4 4 7 4 -1. - <_> - 3 5 7 2 2. - 1 - <_> - - <_> - 18 4 6 8 -1. - <_> - 21 4 3 4 2. - <_> - 18 8 3 4 2. - <_> - - <_> - 3 14 9 1 -1. - <_> - 6 14 3 1 3. - <_> - - <_> - 11 11 14 4 -1. - <_> - 18 11 7 2 2. - <_> - 11 13 7 2 2. - <_> - - <_> - 1 4 6 8 -1. - <_> - 1 4 3 4 2. - <_> - 4 8 3 4 2. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 0 1 2 2. - 1 - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 11 0 4 2 -1. - <_> - 11 1 4 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 20 9 5 6 -1. - <_> - 20 11 5 2 3. - <_> - - <_> - 5 2 15 3 -1. - <_> - 5 3 15 1 3. - <_> - - <_> - 9 2 7 3 -1. - <_> - 9 3 7 1 3. - <_> - - <_> - 2 14 21 1 -1. - <_> - 9 14 7 1 3. - <_> - - <_> - 8 11 16 4 -1. - <_> - 8 11 8 4 2. - <_> - - <_> - 0 12 24 2 -1. - <_> - 12 12 12 2 2. - <_> - - <_> - 22 9 3 6 -1. - <_> - 22 11 3 2 3. - <_> - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 8 9 9 3 -1. - <_> - 8 10 9 1 3. - <_> - - <_> - 0 9 3 6 -1. - <_> - 0 11 3 2 3. - <_> - - <_> - 11 11 14 4 -1. - <_> - 18 11 7 2 2. - <_> - 11 13 7 2 2. - <_> - - <_> - 7 9 4 6 -1. - <_> - 8 9 2 6 2. - <_> - - <_> - 10 12 6 2 -1. - <_> - 12 12 2 2 3. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 10 9 4 6 -1. - <_> - 10 9 2 3 2. - <_> - 12 12 2 3 2. - <_> - - <_> - 11 3 6 4 -1. - <_> - 11 3 3 4 2. - <_> - - <_> - 0 0 14 14 -1. - <_> - 0 7 14 7 2. - <_> - - <_> - 15 2 10 12 -1. - <_> - 20 2 5 6 2. - <_> - 15 8 5 6 2. - <_> - - <_> - 8 3 6 4 -1. - <_> - 11 3 3 4 2. - <_> - - <_> - 23 5 2 6 -1. - <_> - 23 7 2 2 3. - <_> - - <_> - 10 8 5 3 -1. - <_> - 10 9 5 1 3. - <_> - - <_> - 20 7 5 4 -1. - <_> - 20 8 5 2 2. - <_> - - <_> - 7 10 11 4 -1. - <_> - 7 11 11 2 2. - <_> - - <_> - 16 13 1 2 -1. - <_> - 16 14 1 1 2. - <_> - - <_> - 3 1 5 4 -1. - <_> - 3 2 5 2 2. - <_> - - <_> - 17 3 8 2 -1. - <_> - 17 4 8 1 2. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 8 5 2 2. - <_> - - <_> - 9 4 12 6 -1. - <_> - 13 4 4 6 3. - <_> - - <_> - 4 4 12 6 -1. - <_> - 8 4 4 6 3. - <_> - - <_> - 11 0 12 9 -1. - <_> - 11 0 6 9 2. - <_> - - <_> - 4 5 16 8 -1. - <_> - 12 5 8 8 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 12 2 1 -1. - <_> - 8 12 1 1 2. - <_> - - <_> - 19 3 6 4 -1. - <_> - 22 3 3 2 2. - <_> - 19 5 3 2 2. - <_> - - <_> - 8 10 6 3 -1. - <_> - 10 10 2 3 3. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 0 24 2 -1. - <_> - 0 0 12 1 2. - <_> - 12 1 12 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 3 6 4 -1. - <_> - 0 3 3 2 2. - <_> - 3 5 3 2 2. - <_> - - <_> - 22 0 3 4 -1. - <_> - 22 2 3 2 2. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 1 2 1 3. - <_> - - <_> - 21 7 2 4 -1. - <_> - 20 8 2 2 2. - 1 - <_> - - <_> - 4 9 10 1 -1. - <_> - 9 9 5 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 8 9 9 6 -1. - <_> - 11 11 3 2 9. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - <_> - - <_> - 14 4 4 7 -1. - <_> - 15 5 2 7 2. - 1 - <_> - - <_> - 2 13 20 2 -1. - <_> - 2 13 10 1 2. - <_> - 12 14 10 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 3 2 1 4 -1. - <_> - 3 3 1 2 2. - <_> - - <_> - 11 2 14 4 -1. - <_> - 11 3 14 2 2. - <_> - - <_> - 5 7 4 5 -1. - <_> - 6 7 2 5 2. - <_> - - <_> - 23 8 1 4 -1. - <_> - 22 9 1 2 2. - 1 - <_> - - <_> - 2 0 10 8 -1. - <_> - 7 0 5 8 2. - <_> - - <_> - 1 5 24 3 -1. - <_> - 9 6 8 1 9. - <_> - - <_> - 10 0 4 10 -1. - <_> - 10 5 4 5 2. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 11 6 3 6 -1. - <_> - 11 8 3 2 3. - <_> - - <_> - 18 8 7 3 -1. - <_> - 18 9 7 1 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 1 4 1 2. - <_> - - <_> - 20 0 2 1 -1. - <_> - 20 0 1 1 2. - 1 - <_> - - <_> - 0 6 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 24 8 1 4 -1. - <_> - 23 9 1 2 2. - 1 - <_> - - <_> - 1 8 3 1 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 21 7 2 2 -1. - <_> - 22 7 1 1 2. - <_> - 21 8 1 1 2. - <_> - - <_> - 5 8 15 6 -1. - <_> - 5 10 15 2 3. - <_> - - <_> - 6 7 14 8 -1. - <_> - 6 9 14 4 2. - <_> - - <_> - 1 4 10 2 -1. - <_> - 1 5 10 1 2. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 1 9. - <_> - - <_> - 0 4 7 3 -1. - <_> - 0 5 7 1 3. - <_> - - <_> - 21 7 2 2 -1. - <_> - 22 7 1 1 2. - <_> - 21 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 22 9 1 3 -1. - <_> - 21 10 1 1 3. - 1 - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 17 1 4 11 -1. - <_> - 18 1 2 11 2. - <_> - - <_> - 0 10 6 3 -1. - <_> - 0 11 6 1 3. - <_> - - <_> - 23 11 2 1 -1. - <_> - 23 11 1 1 2. - <_> - - <_> - 4 1 4 11 -1. - <_> - 5 1 2 11 2. - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 0 3 4 12 -1. - <_> - 0 3 2 6 2. - <_> - 2 9 2 6 2. - <_> - - <_> - 11 11 6 4 -1. - <_> - 11 12 6 2 2. - <_> - - <_> - 6 11 13 4 -1. - <_> - 6 12 13 2 2. - <_> - - <_> - 11 10 3 1 -1. - <_> - 12 10 1 1 3. - <_> - - <_> - 5 2 13 8 -1. - <_> - 5 6 13 4 2. - <_> - - <_> - 15 2 10 6 -1. - <_> - 15 4 10 2 3. - <_> - - <_> - 0 2 10 6 -1. - <_> - 0 4 10 2 3. - <_> - - <_> - 12 1 13 8 -1. - <_> - 12 3 13 4 2. - <_> - - <_> - 5 3 15 3 -1. - <_> - 5 4 15 1 3. - <_> - - <_> - 9 3 9 3 -1. - <_> - 9 4 9 1 3. - <_> - - <_> - 3 2 7 3 -1. - <_> - 2 3 7 1 3. - 1 - <_> - - <_> - 5 2 15 3 -1. - <_> - 5 3 15 1 3. - <_> - - <_> - 5 4 15 3 -1. - <_> - 5 5 15 1 3. - <_> - - <_> - 17 6 2 2 -1. - <_> - 18 6 1 1 2. - <_> - 17 7 1 1 2. - <_> - - <_> - 5 10 2 3 -1. - <_> - 5 10 1 3 2. - 1 - <_> - - <_> - 23 11 2 4 -1. - <_> - 23 13 2 2 2. - <_> - - <_> - 0 11 14 4 -1. - <_> - 0 11 7 2 2. - <_> - 7 13 7 2 2. - <_> - - <_> - 10 4 6 3 -1. - <_> - 10 5 6 1 3. - <_> - - <_> - 0 1 24 14 -1. - <_> - 0 1 12 7 2. - <_> - 12 8 12 7 2. - <_> - - <_> - 1 5 24 8 -1. - <_> - 13 5 12 4 2. - <_> - 1 9 12 4 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 1 11 2 1 -1. - <_> - 1 11 1 1 2. - 1 - <_> - - <_> - 1 11 24 4 -1. - <_> - 1 11 12 4 2. - <_> - - <_> - 7 7 10 3 -1. - <_> - 7 8 10 1 3. - <_> - - <_> - 9 5 7 3 -1. - <_> - 9 6 7 1 3. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 11 2 2 3. - <_> - - <_> - 22 8 3 2 -1. - <_> - 22 8 3 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 24 6 1 6 -1. - <_> - 24 8 1 2 3. - <_> - - <_> - 3 3 7 2 -1. - <_> - 3 3 7 1 2. - 1 - <_> - - <_> - 10 4 6 10 -1. - <_> - 13 4 3 5 2. - <_> - 10 9 3 5 2. - <_> - - <_> - 0 3 14 6 -1. - <_> - 0 6 14 3 2. - <_> - - <_> - 9 0 8 8 -1. - <_> - 13 0 4 4 2. - <_> - 9 4 4 4 2. - <_> - - <_> - 3 4 5 3 -1. - <_> - 2 5 5 1 3. - 1 - <_> - - <_> - 18 9 7 6 -1. - <_> - 18 11 7 2 3. - <_> - - <_> - 0 9 7 6 -1. - <_> - 0 11 7 2 3. - <_> - - <_> - 12 1 3 3 -1. - <_> - 12 2 3 1 3. - <_> - - <_> - 9 2 6 8 -1. - <_> - 9 2 3 4 2. - <_> - 12 6 3 4 2. - <_> - - <_> - 1 14 24 1 -1. - <_> - 7 14 12 1 2. - <_> - - <_> - 0 3 12 12 -1. - <_> - 0 3 6 6 2. - <_> - 6 9 6 6 2. - <_> - - <_> - 11 3 9 4 -1. - <_> - 14 3 3 4 3. - <_> - - <_> - 9 4 6 6 -1. - <_> - 9 4 3 3 2. - <_> - 12 7 3 3 2. - <_> - - <_> - 20 0 4 1 -1. - <_> - 20 0 2 1 2. - 1 - <_> - - <_> - 8 3 9 4 -1. - <_> - 11 3 3 4 3. - <_> - - <_> - 14 4 6 9 -1. - <_> - 16 4 2 9 3. - <_> - - <_> - 5 4 6 9 -1. - <_> - 7 4 2 9 3. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 0 0 15 12 -1. - <_> - 0 4 15 4 3. - <_> - - <_> - 8 1 11 3 -1. - <_> - 8 2 11 1 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 14 5 1 3 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 10 5 5 3 -1. - <_> - 10 6 5 1 3. - <_> - - <_> - 14 5 1 3 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 22 9 1 4 -1. - <_> - 21 10 1 2 2. - 1 - <_> - - <_> - 3 9 4 1 -1. - <_> - 4 10 2 1 2. - 1 - <_> - - <_> - 8 8 9 3 -1. - <_> - 8 9 9 1 3. - <_> - - <_> - 2 8 21 3 -1. - <_> - 9 9 7 1 9. - <_> - - <_> - 10 6 8 8 -1. - <_> - 12 6 4 8 2. - <_> - - <_> - 7 3 6 12 -1. - <_> - 9 3 2 12 3. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - <_> - - <_> - 10 10 4 4 -1. - <_> - 11 10 2 4 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 1 0 24 8 -1. - <_> - 13 0 12 4 2. - <_> - 1 4 12 4 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 21 12 4 3 -1. - <_> - 21 13 4 1 3. - <_> - - <_> - 0 3 4 4 -1. - <_> - 0 3 2 2 2. - <_> - 2 5 2 2 2. - <_> - - <_> - 19 0 2 3 -1. - <_> - 19 0 1 3 2. - 1 - <_> - - <_> - 2 2 15 6 -1. - <_> - 2 5 15 3 2. - <_> - - <_> - 5 0 15 2 -1. - <_> - 5 1 15 1 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 1 2 2 2. - <_> - - <_> - 23 1 2 12 -1. - <_> - 20 4 2 6 2. - 1 - <_> - - <_> - 4 2 2 3 -1. - <_> - 4 3 2 1 3. - <_> - - <_> - 20 0 2 2 -1. - <_> - 20 0 1 2 2. - 1 - <_> - - <_> - 0 12 4 3 -1. - <_> - 0 13 4 1 3. - <_> - - <_> - 13 1 12 8 -1. - <_> - 13 3 12 4 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 2 1 2. - 1 - <_> - - <_> - 11 2 14 12 -1. - <_> - 11 8 14 6 2. - <_> - - <_> - 0 2 14 12 -1. - <_> - 0 8 14 6 2. - <_> - - <_> - 16 7 6 8 -1. - <_> - 18 7 2 8 3. - <_> - - <_> - 7 0 13 2 -1. - <_> - 7 0 13 1 2. - 1 - <_> - - <_> - 16 7 6 8 -1. - <_> - 18 7 2 8 3. - <_> - - <_> - 3 7 6 8 -1. - <_> - 5 7 2 8 3. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 6 1 6 3. - 1 - <_> - - <_> - 20 2 1 6 -1. - <_> - 20 4 1 2 3. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 19 10 2 1 -1. - <_> - 19 10 1 1 2. - <_> - - <_> - 6 4 8 2 -1. - <_> - 8 4 4 2 2. - <_> - - <_> - 9 5 16 7 -1. - <_> - 13 5 8 7 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 20 8 5 3 -1. - <_> - 20 9 5 1 3. - <_> - - <_> - 11 13 2 2 -1. - <_> - 11 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 12 15 2 2. - <_> - - <_> - 0 8 6 3 -1. - <_> - 0 9 6 1 3. - <_> - - <_> - 19 10 2 1 -1. - <_> - 19 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 1 0 24 6 -1. - <_> - 13 0 12 3 2. - <_> - 1 3 12 3 2. - <_> - - <_> - 5 1 2 5 -1. - <_> - 5 1 1 5 2. - 1 - <_> - - <_> - 21 3 4 12 -1. - <_> - 23 3 2 6 2. - <_> - 21 9 2 6 2. - <_> - - <_> - 0 3 4 12 -1. - <_> - 0 3 2 6 2. - <_> - 2 9 2 6 2. - <_> - - <_> - 24 2 1 6 -1. - <_> - 24 5 1 3 2. - <_> - - <_> - 5 2 9 8 -1. - <_> - 8 2 3 8 3. - <_> - - <_> - 24 2 1 6 -1. - <_> - 24 5 1 3 2. - <_> - - <_> - 0 2 1 6 -1. - <_> - 0 5 1 3 2. - <_> - - <_> - 9 6 9 4 -1. - <_> - 9 7 9 2 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 7 3 2 2. - <_> - - <_> - 20 14 2 1 -1. - <_> - 20 14 1 1 2. - <_> - - <_> - 0 8 6 4 -1. - <_> - 0 9 6 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 8 0 9 15 -1. - <_> - 11 5 3 5 9. - <_> - - <_> - 13 9 4 6 -1. - <_> - 14 9 2 6 2. - <_> - - <_> - 8 2 9 3 -1. - <_> - 8 3 9 1 3. - <_> - - <_> - 0 9 8 6 -1. - <_> - 0 9 4 3 2. - <_> - 4 12 4 3 2. - <_> - - <_> - 20 1 5 4 -1. - <_> - 20 3 5 2 2. - <_> - - <_> - 4 3 16 7 -1. - <_> - 8 3 8 7 2. - <_> - - <_> - 15 0 10 8 -1. - <_> - 15 2 10 4 2. - <_> - - <_> - 0 2 24 10 -1. - <_> - 0 2 12 5 2. - <_> - 12 7 12 5 2. - <_> - - <_> - 20 9 5 4 -1. - <_> - 20 10 5 2 2. - <_> - - <_> - 0 14 22 1 -1. - <_> - 11 14 11 1 2. - <_> - - <_> - 22 0 3 12 -1. - <_> - 22 0 3 6 2. - 1 - <_> - - <_> - 0 4 2 2 -1. - <_> - 1 4 1 2 2. - <_> - - <_> - 20 9 5 4 -1. - <_> - 20 10 5 2 2. - <_> - - <_> - 0 9 5 4 -1. - <_> - 0 10 5 2 2. - <_> - - <_> - 7 3 18 6 -1. - <_> - 13 5 6 2 9. - <_> - - <_> - 4 10 10 1 -1. - <_> - 9 10 5 1 2. - <_> - - <_> - 21 1 4 10 -1. - <_> - 21 1 2 10 2. - 1 - <_> - - <_> - 4 1 10 4 -1. - <_> - 4 1 10 2 2. - 1 - <_> - - <_> - 16 8 4 7 -1. - <_> - 17 8 2 7 2. - <_> - - <_> - 5 8 4 7 -1. - <_> - 6 8 2 7 2. - <_> - - <_> - 6 0 13 2 -1. - <_> - 6 1 13 1 2. - <_> - - <_> - 0 12 8 3 -1. - <_> - 0 13 8 1 3. - <_> - - <_> - 22 0 2 1 -1. - <_> - 22 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 17 3 8 8 -1. - <_> - 21 3 4 4 2. - <_> - 17 7 4 4 2. - <_> - - <_> - 6 2 13 6 -1. - <_> - 6 4 13 2 3. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 1 1 12 1 -1. - <_> - 1 1 6 1 2. - 1 - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 7 11 6 4 -1. - <_> - 9 11 2 4 3. - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 1 12 5 3 -1. - <_> - 1 13 5 1 3. - <_> - - <_> - 1 0 24 2 -1. - <_> - 13 0 12 1 2. - <_> - 1 1 12 1 2. - <_> - - <_> - 3 3 5 3 -1. - <_> - 2 4 5 1 3. - 1 - <_> - - <_> - 17 6 8 4 -1. - <_> - 19 6 4 4 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 23 0 2 4 -1. - <_> - 23 2 2 2 2. - <_> - - <_> - 0 0 3 6 -1. - <_> - 0 3 3 3 2. - <_> - - <_> - 11 1 14 2 -1. - <_> - 18 1 7 1 2. - <_> - 11 2 7 1 2. - <_> - - <_> - 0 1 14 2 -1. - <_> - 0 1 7 1 2. - <_> - 7 2 7 1 2. - <_> - - <_> - 5 4 15 6 -1. - <_> - 5 6 15 2 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 2 2. - 1 - <_> - - <_> - 12 8 6 3 -1. - <_> - 14 8 2 3 3. - <_> - - <_> - 0 9 24 6 -1. - <_> - 8 11 8 2 9. - <_> - - <_> - 1 12 24 3 -1. - <_> - 9 13 8 1 9. - <_> - - <_> - 5 11 15 4 -1. - <_> - 5 13 15 2 2. - <_> - - <_> - 24 10 1 4 -1. - <_> - 23 11 1 2 2. - 1 - <_> - - <_> - 1 10 4 1 -1. - <_> - 2 11 2 1 2. - 1 - <_> - - <_> - 15 1 10 14 -1. - <_> - 15 8 10 7 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 2 7 2 2 2. - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 0 4 7 6 -1. - <_> - 0 6 7 2 3. - <_> - - <_> - 11 7 6 3 -1. - <_> - 11 8 6 1 3. - <_> - - <_> - 8 10 9 1 -1. - <_> - 11 10 3 1 3. - <_> - - <_> - 5 10 15 1 -1. - <_> - 10 10 5 1 3. - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 23 12 2 1 -1. - <_> - 23 12 1 1 2. - <_> - - <_> - 0 13 24 2 -1. - <_> - 0 13 12 1 2. - <_> - 12 14 12 1 2. - <_> - - <_> - 9 9 7 3 -1. - <_> - 9 10 7 1 3. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - <_> - - <_> - 18 2 5 4 -1. - <_> - 18 3 5 2 2. - <_> - - <_> - 1 4 8 2 -1. - <_> - 1 4 4 1 2. - <_> - 5 5 4 1 2. - <_> - - <_> - 21 8 4 4 -1. - <_> - 21 9 4 2 2. - <_> - - <_> - 4 4 8 4 -1. - <_> - 4 5 8 2 2. - <_> - - <_> - 11 4 14 4 -1. - <_> - 11 5 14 2 2. - <_> - - <_> - 3 0 18 9 -1. - <_> - 12 0 9 9 2. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 12 1 6 8 -1. - <_> - 14 3 2 8 3. - 1 - <_> - - <_> - 17 4 1 9 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 6 7 4 8 -1. - <_> - 7 7 2 8 2. - <_> - - <_> - 21 5 4 3 -1. - <_> - 21 6 4 1 3. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 21 8 4 3 -1. - <_> - 21 9 4 1 3. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 8 4 3 -1. - <_> - 0 9 4 1 3. - <_> - - <_> - 20 9 2 2 -1. - <_> - 21 9 1 1 2. - <_> - 20 10 1 1 2. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 7 4 12 3 -1. - <_> - 7 5 12 1 3. - <_> - - <_> - 0 0 11 2 -1. - <_> - 0 1 11 1 2. - <_> - - <_> - 13 2 6 5 -1. - <_> - 15 2 2 5 3. - <_> - - <_> - 0 0 24 10 -1. - <_> - 0 0 12 5 2. - <_> - 12 5 12 5 2. - <_> - - <_> - 20 4 2 3 -1. - <_> - 20 5 2 1 3. - <_> - - <_> - 0 3 7 4 -1. - <_> - 0 4 7 2 2. - <_> - - <_> - 11 1 14 14 -1. - <_> - 11 8 14 7 2. - <_> - - <_> - 6 2 6 5 -1. - <_> - 8 2 2 5 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 2 0 20 1 -1. - <_> - 7 0 10 1 2. - <_> - - <_> - 11 0 14 1 -1. - <_> - 11 0 7 1 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 9 4 6 1 2. - <_> - - <_> - 11 3 3 4 -1. - <_> - 11 4 3 2 2. - <_> - - <_> - 0 11 18 3 -1. - <_> - 6 12 6 1 9. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 0 3 14 3 -1. - <_> - 0 4 14 1 3. - <_> - - <_> - 9 4 8 3 -1. - <_> - 11 4 4 3 2. - <_> - - <_> - 0 12 2 1 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 23 13 2 2 -1. - <_> - 24 13 1 1 2. - <_> - 23 14 1 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 12 8 1 -1. - <_> - 11 12 4 1 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 8 6 2 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 23 7 2 4 -1. - <_> - 23 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 13 7 8 4 -1. - <_> - 17 7 4 2 2. - <_> - 13 9 4 2 2. - <_> - - <_> - 0 1 10 14 -1. - <_> - 0 8 10 7 2. - <_> - - <_> - 9 8 7 3 -1. - <_> - 9 9 7 1 3. - <_> - - <_> - 9 8 3 4 -1. - <_> - 9 9 3 2 2. - <_> - - <_> - 18 10 2 3 -1. - <_> - 17 11 2 1 3. - 1 - <_> - - <_> - 7 10 3 2 -1. - <_> - 8 11 1 2 3. - 1 - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 12 8 4 3 -1. - <_> - 12 8 2 3 2. - 1 - <_> - - <_> - 5 7 15 3 -1. - <_> - 10 8 5 1 9. - <_> - - <_> - 0 0 20 8 -1. - <_> - 10 0 10 8 2. - <_> - - <_> - 21 0 4 3 -1. - <_> - 20 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 18 3 5 2 -1. - <_> - 18 4 5 1 2. - <_> - - <_> - 2 3 5 2 -1. - <_> - 2 4 5 1 2. - <_> - - <_> - 13 0 2 5 -1. - <_> - 13 0 1 5 2. - 1 - <_> - - <_> - 5 12 6 3 -1. - <_> - 7 13 2 1 9. - <_> - - <_> - 13 0 2 5 -1. - <_> - 13 0 1 5 2. - 1 - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 7 4 1 2. - <_> - - <_> - 18 9 4 3 -1. - <_> - 18 10 4 1 3. - <_> - - <_> - 3 9 4 3 -1. - <_> - 3 10 4 1 3. - <_> - - <_> - 7 9 15 6 -1. - <_> - 7 12 15 3 2. - <_> - - <_> - 4 1 12 6 -1. - <_> - 4 1 6 3 2. - <_> - 10 4 6 3 2. - <_> - - <_> - 10 5 14 10 -1. - <_> - 10 10 14 5 2. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 13 4 4 6 -1. - <_> - 14 5 2 6 2. - 1 - <_> - - <_> - 12 4 6 4 -1. - <_> - 11 5 6 2 2. - 1 - <_> - - <_> - 19 0 5 3 -1. - <_> - 19 1 5 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 19 0 5 3 -1. - <_> - 19 1 5 1 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 11 0 6 15 -1. - <_> - 13 0 2 15 3. - <_> - - <_> - 0 2 2 6 -1. - <_> - 0 2 1 3 2. - <_> - 1 5 1 3 2. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 9 0 14 8 -1. - <_> - 9 0 7 8 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 4 6 18 4 -1. - <_> - 4 6 9 4 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 23 7 2 2 -1. - <_> - 24 7 1 1 2. - <_> - 23 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 24 6 1 4 -1. - <_> - 24 7 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - <_> - - <_> - 11 0 6 15 -1. - <_> - 13 0 2 15 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 8 1 9 3 -1. - <_> - 8 2 9 1 3. - <_> - - <_> - 8 1 3 3 -1. - <_> - 9 2 1 1 9. - <_> - - <_> - 19 7 5 3 -1. - <_> - 18 8 5 1 3. - 1 - <_> - - <_> - 6 7 3 5 -1. - <_> - 7 8 1 5 3. - 1 - <_> - - <_> - 1 0 24 14 -1. - <_> - 13 0 12 7 2. - <_> - 1 7 12 7 2. - <_> - - <_> - 8 11 9 4 -1. - <_> - 8 12 9 2 2. - <_> - - <_> - 6 11 14 4 -1. - <_> - 6 12 14 2 2. - <_> - - <_> - 0 11 3 4 -1. - <_> - 0 12 3 2 2. - <_> - - <_> - 17 11 8 2 -1. - <_> - 17 12 8 1 2. - <_> - - <_> - 0 11 8 2 -1. - <_> - 0 12 8 1 2. - <_> - - <_> - 23 13 1 2 -1. - <_> - 23 14 1 1 2. - <_> - - <_> - 1 13 1 2 -1. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 0 14 8 -1. - <_> - 9 0 7 8 2. - <_> - - <_> - 0 1 14 8 -1. - <_> - 0 3 14 4 2. - <_> - - <_> - 20 4 2 3 -1. - <_> - 20 5 2 1 3. - <_> - - <_> - 0 1 14 9 -1. - <_> - 0 4 14 3 3. - <_> - - <_> - 9 13 9 1 -1. - <_> - 12 13 3 1 3. - <_> - - <_> - 7 13 9 1 -1. - <_> - 10 13 3 1 3. - <_> - - <_> - 20 7 2 2 -1. - <_> - 21 7 1 1 2. - <_> - 20 8 1 1 2. - <_> - - <_> - 5 9 15 6 -1. - <_> - 5 12 15 3 2. - <_> - - <_> - 21 0 2 6 -1. - <_> - 21 3 2 3 2. - <_> - - <_> - 4 4 8 10 -1. - <_> - 4 4 4 5 2. - <_> - 8 9 4 5 2. - <_> - - <_> - 16 1 8 6 -1. - <_> - 16 3 8 2 3. - <_> - - <_> - 2 1 11 2 -1. - <_> - 2 1 11 1 2. - 1 - <_> - - <_> - 20 4 5 6 -1. - <_> - 20 6 5 2 3. - <_> - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - <_> - - <_> - 19 11 6 4 -1. - <_> - 22 11 3 2 2. - <_> - 19 13 3 2 2. - <_> - - <_> - 10 4 5 2 -1. - <_> - 10 5 5 1 2. - <_> - - <_> - 7 6 11 4 -1. - <_> - 7 7 11 2 2. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 1 0 24 11 -1. - <_> - 7 0 12 11 2. - <_> - - <_> - 4 0 10 10 -1. - <_> - 9 0 5 10 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 8 2 2 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 2 8 2 2 2. - 1 - <_> - - <_> - 23 3 2 12 -1. - <_> - 24 3 1 6 2. - <_> - 23 9 1 6 2. - <_> - - <_> - 9 3 6 12 -1. - <_> - 9 3 3 6 2. - <_> - 12 9 3 6 2. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 3 2 12 -1. - <_> - 0 3 1 6 2. - <_> - 1 9 1 6 2. - <_> - - <_> - 14 8 3 4 -1. - <_> - 14 8 3 2 2. - 1 - <_> - - <_> - 0 0 6 1 -1. - <_> - 2 0 2 1 3. - <_> - - <_> - 9 2 16 7 -1. - <_> - 13 2 8 7 2. - <_> - - <_> - 8 7 1 6 -1. - <_> - 8 7 1 3 2. - 1 - <_> - - <_> - 8 7 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 7 5 10 4 -1. - <_> - 7 6 10 2 2. - <_> - - <_> - 14 2 1 6 -1. - <_> - 12 4 1 2 3. - 1 - <_> - - <_> - 0 3 8 12 -1. - <_> - 0 3 4 6 2. - <_> - 4 9 4 6 2. - <_> - - <_> - 19 13 6 2 -1. - <_> - 19 13 3 2 2. - <_> - - <_> - 0 13 6 2 -1. - <_> - 3 13 3 2 2. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 4 10 10 1 -1. - <_> - 9 10 5 1 2. - <_> - - <_> - 23 12 1 3 -1. - <_> - 23 13 1 1 3. - <_> - - <_> - 1 12 1 3 -1. - <_> - 1 13 1 1 3. - <_> - - <_> - 11 2 12 4 -1. - <_> - 11 3 12 2 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 0 1 2 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 14 13 4 2 -1. - <_> - 15 13 2 2 2. - <_> - - <_> - 3 6 6 3 -1. - <_> - 2 7 6 1 3. - 1 - <_> - - <_> - 14 13 4 2 -1. - <_> - 15 13 2 2 2. - <_> - - <_> - 0 7 24 4 -1. - <_> - 0 7 12 2 2. - <_> - 12 9 12 2 2. - <_> - - <_> - 23 0 2 2 -1. - <_> - 23 1 2 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 8 13 2 2 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 8 11 9 4 -1. - <_> - 8 12 9 2 2. - <_> - - <_> - 2 12 21 3 -1. - <_> - 9 13 7 1 9. - <_> - - <_> - 1 13 21 2 -1. - <_> - 8 13 7 2 3. - <_> - - <_> - 22 10 1 4 -1. - <_> - 21 11 1 2 2. - 1 - <_> - - <_> - 3 5 6 3 -1. - <_> - 2 6 6 1 3. - 1 - <_> - - <_> - 13 2 8 5 -1. - <_> - 15 4 4 5 2. - 1 - <_> - - <_> - 4 2 8 6 -1. - <_> - 4 4 8 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 0 1 8 4 -1. - <_> - 0 2 8 2 2. - <_> - - <_> - 10 0 15 14 -1. - <_> - 10 7 15 7 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 8 9 11 4 -1. - <_> - 8 10 11 2 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 3 3. - 1 - <_> - - <_> - 21 5 4 6 -1. - <_> - 21 7 4 2 3. - <_> - - <_> - 12 3 6 6 -1. - <_> - 10 5 6 2 3. - 1 - <_> - - <_> - 12 9 10 6 -1. - <_> - 12 9 5 6 2. - <_> - - <_> - 3 9 10 6 -1. - <_> - 8 9 5 6 2. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 0 2 1 2. - <_> - - <_> - 3 10 4 1 -1. - <_> - 4 11 2 1 2. - 1 - <_> - - <_> - 18 12 1 2 -1. - <_> - 18 12 1 1 2. - 1 - <_> - - <_> - 2 0 20 10 -1. - <_> - 12 0 10 10 2. - <_> - - <_> - 22 2 3 6 -1. - <_> - 23 3 1 6 3. - 1 - <_> - - <_> - 3 2 6 3 -1. - <_> - 2 3 6 1 3. - 1 - <_> - - <_> - 21 1 4 6 -1. - <_> - 23 1 2 3 2. - <_> - 21 4 2 3 2. - <_> - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - <_> - - <_> - 24 0 1 6 -1. - <_> - 24 3 1 3 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 3 1 3 2. - <_> - - <_> - 18 0 6 6 -1. - <_> - 18 2 6 2 3. - <_> - - <_> - 5 1 15 4 -1. - <_> - 5 2 15 2 2. - <_> - - <_> - 4 8 18 1 -1. - <_> - 10 8 6 1 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 9 5 8 2 -1. - <_> - 11 5 4 2 2. - <_> - - <_> - 5 0 6 6 -1. - <_> - 7 0 2 6 3. - <_> - - <_> - 21 8 2 1 -1. - <_> - 21 8 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 2 1 2. - 1 - <_> - - <_> - 17 4 8 4 -1. - <_> - 17 5 8 2 2. - <_> - - <_> - 6 0 13 2 -1. - <_> - 6 1 13 1 2. - <_> - - <_> - 21 5 4 6 -1. - <_> - 21 7 4 2 3. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 7 4 2 3. - <_> - - <_> - 21 8 2 1 -1. - <_> - 21 8 1 1 2. - <_> - - <_> - 2 8 2 1 -1. - <_> - 3 8 1 1 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 4 0 15 4 -1. - <_> - 4 1 15 2 2. - <_> - - <_> - 15 1 10 8 -1. - <_> - 15 3 10 4 2. - <_> - - <_> - 0 5 4 2 -1. - <_> - 0 5 2 1 2. - <_> - 2 6 2 1 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 19 13 4 2 -1. - <_> - 19 14 4 1 2. - <_> - - <_> - 7 12 2 2 -1. - <_> - 7 12 1 1 2. - <_> - 8 13 1 1 2. - <_> - - <_> - 1 0 24 8 -1. - <_> - 13 0 12 4 2. - <_> - 1 4 12 4 2. - <_> - - <_> - 2 4 3 3 -1. - <_> - 2 5 3 1 3. - <_> - - <_> - 20 6 4 3 -1. - <_> - 19 7 4 1 3. - 1 - <_> - - <_> - 5 6 3 4 -1. - <_> - 6 7 1 4 3. - 1 - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 9 5 9 3 -1. - <_> - 12 5 3 3 3. - <_> - - <_> - 0 0 6 1 -1. - <_> - 2 0 2 1 3. - <_> - - <_> - 17 4 8 1 -1. - <_> - 19 4 4 1 2. - <_> - - <_> - 7 5 9 3 -1. - <_> - 10 5 3 3 3. - <_> - - <_> - 17 4 8 1 -1. - <_> - 19 4 4 1 2. - <_> - - <_> - 0 4 8 1 -1. - <_> - 2 4 4 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 6 11 12 2 -1. - <_> - 9 11 6 2 2. - <_> - - <_> - 4 6 20 9 -1. - <_> - 9 6 10 9 2. - <_> - - <_> - 6 8 12 2 -1. - <_> - 6 9 12 1 2. - <_> - - <_> - 6 8 13 4 -1. - <_> - 6 9 13 2 2. - <_> - - <_> - 2 13 4 2 -1. - <_> - 2 14 4 1 2. - <_> - - <_> - 11 1 3 12 -1. - <_> - 11 4 3 6 2. - <_> - - <_> - 7 10 11 4 -1. - <_> - 7 11 11 2 2. - <_> - - <_> - 5 9 15 6 -1. - <_> - 5 11 15 2 3. - <_> - - <_> - 1 5 14 10 -1. - <_> - 1 10 14 5 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 1 4 1 2. - <_> - - <_> - 18 3 4 2 -1. - <_> - 18 4 4 1 2. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 12 12 6 2 -1. - <_> - 14 12 2 2 3. - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 0 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 18 3 2 10 -1. - <_> - 18 3 1 10 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 18 0 7 3 -1. - <_> - 18 1 7 1 3. - <_> - - <_> - 7 12 6 2 -1. - <_> - 9 12 2 2 3. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 5 3 2 10 -1. - <_> - 6 3 1 10 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 15 0 6 2 -1. - <_> - 17 0 2 2 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 22 1 2 12 -1. - <_> - 18 5 2 4 3. - 1 - <_> - - <_> - 4 0 12 3 -1. - <_> - 8 4 4 3 3. - 1 - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 15 1 10 8 -1. - <_> - 15 3 10 4 2. - <_> - - <_> - 0 1 10 8 -1. - <_> - 0 3 10 4 2. - <_> - - <_> - 11 3 14 10 -1. - <_> - 11 8 14 5 2. - <_> - - <_> - 0 0 24 12 -1. - <_> - 0 0 12 6 2. - <_> - 12 6 12 6 2. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 0 1 7 3 -1. - <_> - 0 2 7 1 3. - <_> - - <_> - 20 7 4 3 -1. - <_> - 20 8 4 1 3. - <_> - - <_> - 0 7 1 8 -1. - <_> - 0 9 1 4 2. - <_> - - <_> - 22 4 3 4 -1. - <_> - 23 5 1 4 3. - 1 - <_> - - <_> - 11 2 12 1 -1. - <_> - 15 6 4 1 3. - 1 - <_> - - <_> - 22 4 3 4 -1. - <_> - 23 5 1 4 3. - 1 - <_> - - <_> - 1 7 4 3 -1. - <_> - 1 8 4 1 3. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - <_> - - <_> - 13 9 6 2 -1. - <_> - 15 9 2 2 3. - <_> - - <_> - 7 7 2 6 -1. - <_> - 7 7 1 6 2. - 1 - <_> - - <_> - 24 0 1 10 -1. - <_> - 24 5 1 5 2. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 24 4 1 9 -1. - <_> - 21 7 1 3 3. - 1 - <_> - - <_> - 1 4 9 1 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 11 1 6 13 -1. - <_> - 13 1 2 13 3. - <_> - - <_> - 10 2 4 7 -1. - <_> - 11 2 2 7 2. - <_> - - <_> - 11 1 6 13 -1. - <_> - 13 1 2 13 3. - <_> - - <_> - 8 1 6 13 -1. - <_> - 10 1 2 13 3. - <_> - - <_> - 16 9 4 1 -1. - <_> - 16 9 2 1 2. - <_> - - <_> - 5 9 4 1 -1. - <_> - 7 9 2 1 2. - <_> - - <_> - 17 4 1 9 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 6 13 10 1 -1. - <_> - 11 13 5 1 2. - <_> - - <_> - 9 8 10 7 -1. - <_> - 9 8 5 7 2. - <_> - - <_> - 4 5 15 10 -1. - <_> - 9 5 5 10 3. - <_> - - <_> - 20 6 5 4 -1. - <_> - 20 7 5 2 2. - <_> - - <_> - 0 6 5 4 -1. - <_> - 0 7 5 2 2. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 9 4 7 3 -1. - <_> - 9 5 7 1 3. - <_> - - <_> - 15 4 4 3 -1. - <_> - 15 4 2 3 2. - <_> - - <_> - 6 4 4 3 -1. - <_> - 8 4 2 3 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 6 0 4 2 -1. - <_> - 6 0 4 1 2. - 1 - <_> - - <_> - 20 14 2 1 -1. - <_> - 20 14 1 1 2. - <_> - - <_> - 1 13 6 2 -1. - <_> - 1 13 3 1 2. - <_> - 4 14 3 1 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 12 2 2 1 2. - <_> - - <_> - 8 0 8 8 -1. - <_> - 8 0 4 4 2. - <_> - 12 4 4 4 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 4 8 8 -1. - <_> - 0 4 4 4 2. - <_> - 4 8 4 4 2. - <_> - - <_> - 19 4 2 1 -1. - <_> - 19 4 1 1 2. - <_> - - <_> - 4 4 2 1 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 0 5 15 3 -1. - <_> - 0 6 15 1 3. - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 4 9 3 2 -1. - <_> - 5 10 1 2 3. - 1 - <_> - - <_> - 20 0 2 2 -1. - <_> - 21 0 1 1 2. - <_> - 20 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 0 11 12 4 -1. - <_> - 0 11 6 2 2. - <_> - 6 13 6 2 2. - <_> - - <_> - 17 1 8 4 -1. - <_> - 17 3 8 2 2. - <_> - - <_> - 6 6 13 6 -1. - <_> - 6 8 13 2 3. - <_> - - <_> - 23 4 2 3 -1. - <_> - 23 4 1 3 2. - <_> - - <_> - 2 13 10 2 -1. - <_> - 2 14 10 1 2. - <_> - - <_> - 23 4 2 3 -1. - <_> - 23 4 1 3 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 1 4 1 3 2. - <_> - - <_> - 2 7 21 3 -1. - <_> - 9 8 7 1 9. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 2 2 21 6 -1. - <_> - 9 4 7 2 9. - <_> - - <_> - 1 1 8 6 -1. - <_> - 1 3 8 2 3. - <_> - - <_> - 6 4 15 4 -1. - <_> - 6 5 15 2 2. - <_> - - <_> - 2 10 4 1 -1. - <_> - 3 11 2 1 2. - 1 - <_> - - <_> - 4 14 18 1 -1. - <_> - 4 14 9 1 2. - <_> - - <_> - 0 3 24 10 -1. - <_> - 0 3 12 5 2. - <_> - 12 8 12 5 2. - <_> - - <_> - 15 3 10 12 -1. - <_> - 20 3 5 6 2. - <_> - 15 9 5 6 2. - <_> - - <_> - 9 5 6 3 -1. - <_> - 9 6 6 1 3. - <_> - - <_> - 2 13 21 1 -1. - <_> - 9 13 7 1 3. - <_> - - <_> - 0 3 10 12 -1. - <_> - 0 3 5 6 2. - <_> - 5 9 5 6 2. - <_> - - <_> - 5 3 15 4 -1. - <_> - 5 4 15 2 2. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 14 13 3 1 -1. - <_> - 15 13 1 1 3. - <_> - - <_> - 7 1 10 2 -1. - <_> - 7 2 10 1 2. - <_> - - <_> - 14 13 3 1 -1. - <_> - 15 13 1 1 3. - <_> - - <_> - 8 13 3 1 -1. - <_> - 9 13 1 1 3. - <_> - - <_> - 1 0 24 12 -1. - <_> - 13 0 12 6 2. - <_> - 1 6 12 6 2. - <_> - - <_> - 0 0 13 14 -1. - <_> - 0 7 13 7 2. - <_> - - <_> - 21 6 3 3 -1. - <_> - 20 7 3 1 3. - 1 - <_> - - <_> - 8 9 8 4 -1. - <_> - 8 10 8 2 2. - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 11 3 4 4 -1. - <_> - 11 3 2 4 2. - 1 - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 7 10 10 4 -1. - <_> - 7 12 10 2 2. - <_> - - <_> - 13 10 6 4 -1. - <_> - 15 10 2 4 3. - <_> - - <_> - 6 10 6 4 -1. - <_> - 8 10 2 4 3. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 7 4 4 -1. - <_> - 0 8 4 2 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 5 1 15 2 -1. - <_> - 5 2 15 1 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 2 3 2 2. - <_> - - <_> - 2 5 20 4 -1. - <_> - 12 5 10 4 2. - <_> - - <_> - 21 14 4 1 -1. - <_> - 21 14 2 1 2. - <_> - - <_> - 0 14 4 1 -1. - <_> - 2 14 2 1 2. - <_> - - <_> - 19 3 6 12 -1. - <_> - 22 3 3 6 2. - <_> - 19 9 3 6 2. - <_> - - <_> - 0 3 6 12 -1. - <_> - 0 3 3 6 2. - <_> - 3 9 3 6 2. - <_> - - <_> - 19 1 3 4 -1. - <_> - 19 2 3 2 2. - <_> - - <_> - 3 1 3 4 -1. - <_> - 3 2 3 2 2. - <_> - - <_> - 10 1 10 2 -1. - <_> - 10 1 5 2 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 9 0 4 3 2. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 9 2 2 2. - 1 - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 2 0 21 1 -1. - <_> - 9 0 7 1 3. - <_> - - <_> - 21 0 2 1 -1. - <_> - 21 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 1 11 24 4 -1. - <_> - 13 11 12 2 2. - <_> - 1 13 12 2 2. - <_> - - <_> - 0 11 24 4 -1. - <_> - 0 11 12 2 2. - <_> - 12 13 12 2 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 18 1 6 2 -1. - <_> - 18 1 3 2 2. - <_> - - <_> - 2 0 21 2 -1. - <_> - 9 0 7 2 3. - <_> - - <_> - 13 0 10 15 -1. - <_> - 13 0 5 15 2. - <_> - - <_> - 6 0 13 4 -1. - <_> - 6 1 13 2 2. - <_> - - <_> - 11 3 9 3 -1. - <_> - 11 4 9 1 3. - <_> - - <_> - 3 2 10 3 -1. - <_> - 2 3 10 1 3. - 1 - <_> - - <_> - 6 6 16 8 -1. - <_> - 6 6 8 8 2. - <_> - - <_> - 5 0 12 15 -1. - <_> - 8 0 6 15 2. - <_> - - <_> - 23 8 2 4 -1. - <_> - 23 8 1 4 2. - <_> - - <_> - 0 5 3 3 -1. - <_> - 0 6 3 1 3. - <_> - - <_> - 21 5 4 2 -1. - <_> - 22 5 2 2 2. - <_> - - <_> - 0 5 4 2 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 21 2 3 4 -1. - <_> - 22 3 1 4 3. - 1 - <_> - - <_> - 4 2 4 3 -1. - <_> - 3 3 4 1 3. - 1 - <_> - - <_> - 23 2 2 2 -1. - <_> - 23 2 2 1 2. - 1 - <_> - - <_> - 0 5 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 23 7 2 5 -1. - <_> - 23 7 1 5 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 23 1 2 4 -1. - <_> - 23 3 2 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 19 3 5 4 -1. - <_> - 19 4 5 2 2. - <_> - - <_> - 12 1 6 2 -1. - <_> - 12 1 6 1 2. - 1 - <_> - - <_> - 19 11 6 4 -1. - <_> - 19 12 6 2 2. - <_> - - <_> - 1 3 6 4 -1. - <_> - 1 4 6 2 2. - <_> - - <_> - 23 0 2 1 -1. - <_> - 23 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 19 0 4 2 -1. - <_> - 20 0 2 2 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 0 1 6 2. - <_> - 1 6 1 6 2. - <_> - - <_> - 22 4 2 8 -1. - <_> - 23 4 1 4 2. - <_> - 22 8 1 4 2. - <_> - - <_> - 1 4 2 8 -1. - <_> - 1 4 1 4 2. - <_> - 2 8 1 4 2. - <_> - - <_> - 17 9 4 1 -1. - <_> - 17 9 2 1 2. - <_> - - <_> - 12 2 5 8 -1. - <_> - 10 4 5 4 2. - 1 - <_> - - <_> - 18 13 2 2 -1. - <_> - 19 13 1 1 2. - <_> - 18 14 1 1 2. - <_> - - <_> - 6 9 13 6 -1. - <_> - 6 11 13 2 3. - <_> - - <_> - 6 10 13 4 -1. - <_> - 6 11 13 2 2. - <_> - - <_> - 0 8 24 4 -1. - <_> - 0 8 12 2 2. - <_> - 12 10 12 2 2. - <_> - - <_> - 17 10 8 3 -1. - <_> - 17 11 8 1 3. - <_> - - <_> - 4 0 16 8 -1. - <_> - 4 0 8 4 2. - <_> - 12 4 8 4 2. - <_> - - <_> - 14 0 1 2 -1. - <_> - 14 1 1 1 2. - <_> - - <_> - 3 9 6 6 -1. - <_> - 5 9 2 6 3. - <_> - - <_> - 13 10 12 3 -1. - <_> - 16 10 6 3 2. - <_> - - <_> - 0 10 12 3 -1. - <_> - 3 10 6 3 2. - <_> - - <_> - 19 8 5 3 -1. - <_> - 19 9 5 1 3. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 20 8 2 3 -1. - <_> - 20 9 2 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 19 8 5 3 -1. - <_> - 19 9 5 1 3. - <_> - - <_> - 4 1 6 11 -1. - <_> - 6 1 2 11 3. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 5 2 15 4 -1. - <_> - 5 3 15 2 2. - <_> - - <_> - 11 2 3 3 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 2 7 18 6 -1. - <_> - 11 7 9 6 2. - <_> - - <_> - 1 6 24 9 -1. - <_> - 7 6 12 9 2. - <_> - - <_> - 0 0 1 10 -1. - <_> - 0 5 1 5 2. - <_> - - <_> - 9 3 10 2 -1. - <_> - 9 4 10 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 16 7 6 6 -1. - <_> - 19 7 3 3 2. - <_> - 16 10 3 3 2. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 11 8 2 1 3. - <_> - - <_> - 19 0 6 3 -1. - <_> - 19 1 6 1 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 0 1 6 1 3. - <_> - - <_> - 24 0 1 2 -1. - <_> - 24 1 1 1 2. - <_> - - <_> - 0 0 16 1 -1. - <_> - 4 0 8 1 2. - <_> - - <_> - 19 11 6 4 -1. - <_> - 19 12 6 2 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 12 6 2 2. - <_> - - <_> - 5 3 15 6 -1. - <_> - 5 6 15 3 2. - <_> - - <_> - 8 3 9 3 -1. - <_> - 8 4 9 1 3. - <_> - - <_> - 12 0 1 12 -1. - <_> - 12 3 1 6 2. - <_> - - <_> - 1 3 14 8 -1. - <_> - 1 7 14 4 2. - <_> - - <_> - 15 0 6 4 -1. - <_> - 17 0 2 4 3. - <_> - - <_> - 3 7 4 2 -1. - <_> - 3 7 2 1 2. - <_> - 5 8 2 1 2. - <_> - - <_> - 14 5 1 8 -1. - <_> - 14 9 1 4 2. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 11 12 6 3 -1. - <_> - 13 12 2 3 3. - <_> - - <_> - 8 12 6 3 -1. - <_> - 10 12 2 3 3. - <_> - - <_> - 16 5 6 10 -1. - <_> - 19 5 3 5 2. - <_> - 16 10 3 5 2. - <_> - - <_> - 3 5 6 10 -1. - <_> - 3 5 3 5 2. - <_> - 6 10 3 5 2. - <_> - - <_> - 17 8 8 1 -1. - <_> - 19 8 4 1 2. - <_> - - <_> - 0 8 8 1 -1. - <_> - 2 8 4 1 2. - <_> - - <_> - 9 13 14 2 -1. - <_> - 9 13 7 2 2. - <_> - - <_> - 1 14 20 1 -1. - <_> - 6 14 10 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - <_> - - <_> - 17 7 2 2 -1. - <_> - 18 7 1 1 2. - <_> - 17 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 10 0 6 2 -1. - <_> - 12 0 2 2 3. - <_> - - <_> - 8 1 8 3 -1. - <_> - 10 1 4 3 2. - <_> - - <_> - 14 6 7 2 -1. - <_> - 14 6 7 1 2. - 1 - <_> - - <_> - 8 10 4 1 -1. - <_> - 9 10 2 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 1 1 2. - <_> - 8 12 1 1 2. - <_> - - <_> - 17 9 4 1 -1. - <_> - 17 9 2 1 2. - <_> - - <_> - 4 9 4 1 -1. - <_> - 6 9 2 1 2. - <_> - - <_> - 11 8 3 4 -1. - <_> - 11 9 3 2 2. - <_> - - <_> - 9 6 3 2 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 21 0 4 8 -1. - <_> - 19 2 4 4 2. - 1 - <_> - - <_> - 4 0 8 4 -1. - <_> - 6 2 4 4 2. - 1 - <_> - - <_> - 20 1 5 2 -1. - <_> - 20 1 5 1 2. - 1 - <_> - - <_> - 0 6 6 4 -1. - <_> - 0 7 6 2 2. - <_> - - <_> - 20 6 5 4 -1. - <_> - 20 7 5 2 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 1 8 24 2 -1. - <_> - 13 8 12 1 2. - <_> - 1 9 12 1 2. - <_> - - <_> - 8 8 8 3 -1. - <_> - 8 9 8 1 3. - <_> - - <_> - 17 11 6 4 -1. - <_> - 19 11 2 4 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 9 0 9 1 2. - <_> - - <_> - 14 6 3 2 -1. - <_> - 15 7 1 2 3. - 1 - <_> - - <_> - 5 6 13 2 -1. - <_> - 5 7 13 1 2. - <_> - - <_> - 14 6 3 2 -1. - <_> - 15 7 1 2 3. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 8 2 2 3. - <_> - - <_> - 20 1 5 2 -1. - <_> - 20 1 5 1 2. - 1 - <_> - - <_> - 5 1 2 5 -1. - <_> - 5 1 1 5 2. - 1 - <_> - - <_> - 24 7 1 8 -1. - <_> - 24 9 1 4 2. - <_> - - <_> - 7 7 11 3 -1. - <_> - 7 8 11 1 3. - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 10 11 3 1 -1. - <_> - 11 11 1 1 3. - <_> - - <_> - 24 7 1 8 -1. - <_> - 24 9 1 4 2. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 22 1 2 3 -1. - <_> - 21 2 2 1 3. - 1 - <_> - - <_> - 3 1 3 2 -1. - <_> - 4 2 1 2 3. - 1 - <_> - - <_> - 16 4 3 3 -1. - <_> - 17 5 1 1 9. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 17 0 8 3 -1. - <_> - 17 0 4 3 2. - <_> - - <_> - 0 12 4 3 -1. - <_> - 0 13 4 1 3. - <_> - - <_> - 2 3 21 3 -1. - <_> - 9 3 7 3 3. - <_> - - <_> - 8 1 2 5 -1. - <_> - 8 1 1 5 2. - 1 - <_> - - <_> - 19 7 6 4 -1. - <_> - 22 7 3 2 2. - <_> - 19 9 3 2 2. - <_> - - <_> - 0 7 6 4 -1. - <_> - 0 7 3 2 2. - <_> - 3 9 3 2 2. - <_> - - <_> - 24 4 1 4 -1. - <_> - 24 5 1 2 2. - <_> - - <_> - 4 7 3 4 -1. - <_> - 3 8 3 2 2. - 1 - <_> - - <_> - 17 9 4 1 -1. - <_> - 18 9 2 1 2. - <_> - - <_> - 4 9 4 1 -1. - <_> - 5 9 2 1 2. - <_> - - <_> - 23 6 2 2 -1. - <_> - 23 7 2 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 7 2 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 0 1 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 2 11 6 4 -1. - <_> - 4 11 2 4 3. - <_> - - <_> - 14 1 10 4 -1. - <_> - 19 1 5 2 2. - <_> - 14 3 5 2 2. - <_> - - <_> - 6 2 12 2 -1. - <_> - 6 3 12 1 2. - <_> - - <_> - 9 6 8 9 -1. - <_> - 9 9 8 3 3. - <_> - - <_> - 3 8 3 3 -1. - <_> - 4 9 1 1 9. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - <_> - - <_> - 4 13 10 1 -1. - <_> - 9 13 5 1 2. - <_> - - <_> - 3 0 20 15 -1. - <_> - 3 0 10 15 2. - <_> - - <_> - 0 13 24 1 -1. - <_> - 6 13 12 1 2. - <_> - - <_> - 22 7 2 2 -1. - <_> - 23 7 1 1 2. - <_> - 22 8 1 1 2. - diff --git a/data/haarcascades/haarcascade_mcs_nose.xml b/data/haarcascades/haarcascade_mcs_nose.xml deleted file mode 100644 index d196df1307..0000000000 --- a/data/haarcascades/haarcascade_mcs_nose.xml +++ /dev/null @@ -1,39332 +0,0 @@ - - - -BOOST - HAAR - 18 - 15 - - 377 - - 0 - 20 - - <_> - 16 - -1.8310650587081909e+00 - - <_> - - 0 -1 0 3.6321789026260376e-02 - - -6.7726498842239380e-01 6.6873461008071899e-01 - <_> - - 0 -1 1 5.4485928267240524e-02 - - -4.4031769037246704e-01 4.8918509483337402e-01 - <_> - - 0 -1 2 -1.5089729428291321e-01 - - 6.3702392578125000e-01 -2.8146758675575256e-01 - <_> - - 0 -1 3 -7.9493917524814606e-02 - - 6.3470429182052612e-01 -1.6119189560413361e-01 - <_> - - 0 -1 4 -6.7041739821434021e-02 - - 5.9565997123718262e-01 -1.6454219818115234e-01 - <_> - - 0 -1 5 1.6542470455169678e-01 - - -2.9165010899305344e-02 2.7849620580673218e-01 - <_> - - 0 -1 6 1.4491100609302521e-01 - - -1.5930549800395966e-01 5.6260192394256592e-01 - <_> - - 0 -1 7 -1.2696940451860428e-02 - - -6.9244408607482910e-01 1.0427670180797577e-01 - <_> - - 0 -1 8 5.2858339622616768e-03 - - 7.3600113391876221e-02 -8.1359738111495972e-01 - <_> - - 0 -1 9 1.3196030259132385e-01 - - -8.5236929357051849e-02 6.4642858505249023e-01 - <_> - - 0 -1 10 2.6259789592586458e-05 - - -2.5225260853767395e-01 2.7700841426849365e-01 - <_> - - 0 -1 11 8.9456392743159086e-05 - - -1.5982529520988464e-01 1.7960309982299805e-01 - <_> - - 0 -1 12 -1.8172040581703186e-02 - - 4.6623438596725464e-01 -1.5989740192890167e-01 - <_> - - 0 -1 13 -1.1940079927444458e-01 - - 5.8289611339569092e-01 -1.2482699751853943e-01 - <_> - - 0 -1 14 -4.9619960784912109e-01 - - 7.5930988788604736e-01 -9.3943662941455841e-02 - <_> - - 0 -1 15 -1.8309399485588074e-01 - - 5.8175492286682129e-01 -8.8393591344356537e-02 - <_> - 24 - -1.7070330381393433e+00 - - <_> - - 0 -1 16 4.8528000712394714e-02 - - 1.5333959890995175e-04 -2.6736979980468750e+03 - <_> - - 0 -1 17 1.1161860078573227e-01 - - -1.3917839527130127e-01 4.7061970829963684e-01 - <_> - - 0 -1 18 1.4094239473342896e-01 - - -4.5902550220489502e-01 6.8740749359130859e-01 - <_> - - 0 -1 19 -1.5287929773330688e-01 - - 2.5948369503021240e-01 -4.5264568179845810e-02 - <_> - - 0 -1 20 5.7879261672496796e-02 - - -3.7455689907073975e-01 4.6996209025382996e-01 - <_> - - 0 -1 21 5.9482799842953682e-03 - - -3.3294659852981567e-01 2.7539891004562378e-01 - <_> - - 0 -1 22 -1.8460640311241150e-01 - - 4.8681849241256714e-01 -1.6400709748268127e-01 - <_> - - 0 -1 23 -6.6531449556350708e-03 - - -6.5238291025161743e-01 1.1169300228357315e-01 - <_> - - 0 -1 24 8.0141983926296234e-03 - - 1.1979129910469055e-01 -7.1780908107757568e-01 - <_> - - 0 -1 25 1.3707329332828522e-01 - - -1.4187979698181152e-01 3.2952371239662170e-01 - <_> - - 0 -1 26 9.0329283848404884e-03 - - 1.0413199663162231e-01 -7.3359811305999756e-01 - <_> - - 0 -1 27 -1.8033640086650848e-01 - - -5.4879492521286011e-01 7.1061477065086365e-02 - <_> - - 0 -1 28 -7.8154532238841057e-03 - - -6.8952822685241699e-01 1.0636539757251740e-01 - <_> - - 0 -1 29 -1.0885799676179886e-01 - - 7.0592081546783447e-01 -1.0026659816503525e-01 - <_> - - 0 -1 30 -1.7265169322490692e-01 - - 4.8955410718917847e-01 -1.3769739866256714e-01 - <_> - - 0 -1 31 5.7466980069875717e-02 - - 4.7874748706817627e-02 -3.3611130714416504e-01 - <_> - - 0 -1 32 -1.2948019802570343e-01 - - -6.7898839712142944e-01 1.0975400358438492e-01 - <_> - - 0 -1 33 -5.8118398301303387e-03 - - -5.0810492038726807e-01 5.3020551800727844e-02 - <_> - - 0 -1 34 -5.2181649953126907e-03 - - -7.4403452873229980e-01 7.3957882821559906e-02 - <_> - - 0 -1 35 -1.4101220294833183e-02 - - -5.1200342178344727e-01 2.9416909441351891e-02 - <_> - - 0 -1 36 -2.3739310563541949e-05 - - 2.0708249509334564e-01 -2.1835790574550629e-01 - <_> - - 0 -1 37 6.6746207885444164e-03 - - 7.8219272196292877e-02 -5.8582967519760132e-01 - <_> - - 0 -1 38 -6.5912399441003799e-03 - - -6.5275472402572632e-01 5.5090259760618210e-02 - <_> - - 0 -1 39 2.6057091355323792e-01 - - 2.0925529301166534e-02 -6.4536881446838379e-01 - <_> - 32 - -1.5818140506744385e+00 - - <_> - - 0 -1 40 -8.9073367416858673e-02 - - 5.4986131191253662e-01 -5.0310492515563965e-01 - <_> - - 0 -1 41 -4.7085169702768326e-02 - - 3.8556599617004395e-01 -1.6194720566272736e-01 - <_> - - 0 -1 42 1.3444259762763977e-01 - - -3.1617870926856995e-01 5.6394141912460327e-01 - <_> - - 0 -1 43 4.2632790282368660e-03 - - -2.2349369525909424e-01 9.7776100039482117e-02 - <_> - - 0 -1 44 1.2148299813270569e-01 - - -1.3394290208816528e-01 5.3553748130798340e-01 - <_> - - 0 -1 45 -3.3225349616259336e-03 - - -6.8287009000778198e-01 8.3227276802062988e-02 - <_> - - 0 -1 46 -7.7031590044498444e-03 - - -6.8243968486785889e-01 1.0678689926862717e-01 - <_> - - 0 -1 47 -3.5309780389070511e-02 - - -6.5210008621215820e-01 9.8716266453266144e-02 - <_> - - 0 -1 48 -3.0447470024228096e-02 - - 2.4795380234718323e-01 -2.5818860530853271e-01 - <_> - - 0 -1 49 4.8874127678573132e-03 - - 8.0552853643894196e-02 -6.3403171300888062e-01 - <_> - - 0 -1 50 -1.4157949388027191e-01 - - 6.3742321729660034e-01 -9.2166163027286530e-02 - <_> - - 0 -1 51 1.4565919339656830e-01 - - -1.0329990088939667e-01 5.8382421731948853e-01 - <_> - - 0 -1 52 -1.1624179780483246e-02 - - -6.8889158964157104e-01 8.2864850759506226e-02 - <_> - - 0 -1 53 -2.1747549995779991e-02 - - -6.2138390541076660e-01 4.7698199748992920e-02 - <_> - - 0 -1 54 1.8483079969882965e-02 - - -2.0105470716953278e-01 2.6797088980674744e-01 - <_> - - 0 -1 55 3.6982730031013489e-02 - - -1.6930599510669708e-01 2.2727000713348389e-01 - <_> - - 0 -1 56 1.6890119761228561e-02 - - 7.7417492866516113e-02 -7.6188772916793823e-01 - <_> - - 0 -1 57 -2.3899060487747192e-01 - - 4.3991729617118835e-01 -1.3199730217456818e-01 - <_> - - 0 -1 58 -1.8494910001754761e-01 - - 7.3120379447937012e-01 -7.2184756398200989e-02 - <_> - - 0 -1 59 9.1745406389236450e-03 - - 4.9446281045675278e-02 -5.7036292552947998e-01 - <_> - - 0 -1 60 7.2624902240931988e-03 - - 5.9888068586587906e-02 -7.0289182662963867e-01 - <_> - - 0 -1 61 5.2557058632373810e-02 - - -9.8877280950546265e-02 1.7423820495605469e-01 - <_> - - 0 -1 62 -3.0039260163903236e-02 - - 4.9870780110359192e-01 -7.9483807086944580e-02 - <_> - - 0 -1 63 -1.0927859693765640e-02 - - -4.5372459292411804e-01 4.9035139381885529e-02 - <_> - - 0 -1 64 -8.5020083934068680e-03 - - -7.3869508504867554e-01 5.1413938403129578e-02 - <_> - - 0 -1 65 5.5216949433088303e-02 - - -1.2393470108509064e-01 3.2208061218261719e-01 - <_> - - 0 -1 66 -8.8366940617561340e-02 - - 4.8289158940315247e-01 -8.4041692316532135e-02 - <_> - - 0 -1 67 1.7165759578347206e-02 - - -1.3141620159149170e-01 2.6804590225219727e-01 - <_> - - 0 -1 68 9.0517058968544006e-02 - - -9.3023687601089478e-02 4.0674149990081787e-01 - <_> - - 0 -1 69 1.5297899954020977e-02 - - -1.1356069892644882e-01 9.7625277936458588e-02 - <_> - - 0 -1 70 -3.0629519373178482e-02 - - 4.2534521222114563e-01 -8.6539477109909058e-02 - <_> - - 0 -1 71 7.9888060688972473e-02 - - 9.2437528073787689e-02 -3.9891800284385681e-01 - <_> - 46 - -1.5400149822235107e+00 - - <_> - - 0 -1 72 6.1446119099855423e-02 - - -4.5049899816513062e-01 4.8542028665542603e-01 - <_> - - 0 -1 73 1.8957859277725220e-01 - - -6.7046932876110077e-02 4.1977021098136902e-01 - <_> - - 0 -1 74 1.7365670204162598e-01 - - -2.8913810849189758e-01 5.2919161319732666e-01 - <_> - - 0 -1 75 -1.6413420438766479e-02 - - 2.8622248768806458e-01 -1.7473380267620087e-01 - <_> - - 0 -1 76 -1.0728030465543270e-02 - - 3.1400930881500244e-01 -2.8309330344200134e-01 - <_> - - 0 -1 77 7.7994461171329021e-03 - - -2.8578609228134155e-01 2.2502979636192322e-01 - <_> - - 0 -1 78 1.1308079585433006e-02 - - 1.0458890348672867e-01 -7.4274301528930664e-01 - <_> - - 0 -1 79 1.0321979969739914e-01 - - -1.1678420007228851e-01 4.9274420738220215e-01 - <_> - - 0 -1 80 5.6132972240447998e-03 - - 8.9059703052043915e-02 -5.3440308570861816e-01 - <_> - - 0 -1 81 -6.0694269835948944e-02 - - 5.5840307474136353e-01 -2.2769929841160774e-02 - <_> - - 0 -1 82 6.2487940303981304e-03 - - 7.5867779552936554e-02 -5.8721762895584106e-01 - <_> - - 0 -1 83 -4.0023289620876312e-02 - - 1.4124380052089691e-01 -1.7217030748724937e-02 - <_> - - 0 -1 84 -4.1220769286155701e-02 - - 5.1341092586517334e-01 -8.5405632853507996e-02 - <_> - - 0 -1 85 -3.5766770597547293e-03 - - -6.0522651672363281e-01 4.0932849049568176e-02 - <_> - - 0 -1 86 -9.9679548293352127e-03 - - -6.0633981227874756e-01 6.7360512912273407e-02 - <_> - - 0 -1 87 -6.7802299745380878e-03 - - 2.7804800868034363e-01 -1.7987030744552612e-01 - <_> - - 0 -1 88 -2.0799320191144943e-02 - - 4.8167890310287476e-01 -1.2403880059719086e-01 - <_> - - 0 -1 89 1.3915869593620300e-01 - - -4.4727511703968048e-02 5.8631712198257446e-01 - <_> - - 0 -1 90 -5.3711780346930027e-03 - - 2.0390869677066803e-01 -2.3393230140209198e-01 - <_> - - 0 -1 91 1.6477100551128387e-02 - - 4.0445160120725632e-02 -6.2500530481338501e-01 - <_> - - 0 -1 92 1.1078979820013046e-02 - - 5.7671349495649338e-02 -5.4169511795043945e-01 - <_> - - 0 -1 93 1.6222869977355003e-02 - - -1.6634809970855713e-01 2.0724619925022125e-01 - <_> - - 0 -1 94 -7.1675870567560196e-03 - - -4.7880691289901733e-01 7.5772762298583984e-02 - <_> - - 0 -1 95 5.8906380087137222e-02 - - -8.6781859397888184e-02 3.9148110151290894e-01 - <_> - - 0 -1 96 9.3187667429447174e-02 - - 6.1930160969495773e-02 -5.7390558719635010e-01 - <_> - - 0 -1 97 -2.0346969831734896e-03 - - -1.3607080280780792e-01 4.5008528977632523e-02 - <_> - - 0 -1 98 5.2366578020155430e-03 - - -1.8271179497241974e-01 1.6897720098495483e-01 - <_> - - 0 -1 99 -1.0588670149445534e-02 - - -5.5421608686447144e-01 4.9204610288143158e-02 - <_> - - 0 -1 100 1.0035210289061069e-02 - - 4.0936209261417389e-02 -6.8710482120513916e-01 - <_> - - 0 -1 101 -3.4406900405883789e-02 - - 3.5165968537330627e-01 -4.2896948754787445e-02 - <_> - - 0 -1 102 7.4508260004222393e-03 - - 4.9808371812105179e-02 -6.1689341068267822e-01 - <_> - - 0 -1 103 8.2342803478240967e-02 - - 8.3641491830348969e-02 -8.1014506518840790e-02 - <_> - - 0 -1 104 -6.1770621687173843e-02 - - 3.2327979803085327e-01 -7.9227820038795471e-02 - <_> - - 0 -1 105 3.6459080874919891e-02 - - -1.5961149334907532e-01 1.2324509769678116e-01 - <_> - - 0 -1 106 4.7497428953647614e-02 - - -1.6593399643898010e-01 2.9666280746459961e-01 - <_> - - 0 -1 107 -9.6670873463153839e-03 - - -5.8818382024765015e-01 3.3668398857116699e-02 - <_> - - 0 -1 108 6.9817090407013893e-03 - - 5.8536108583211899e-02 -4.7672748565673828e-01 - <_> - - 0 -1 109 -1.0325170308351517e-01 - - 2.2064709663391113e-01 -1.2364889681339264e-01 - <_> - - 0 -1 110 6.9648057222366333e-02 - - -1.0253950208425522e-01 3.7149900197982788e-01 - <_> - - 0 -1 111 -5.8889530599117279e-02 - - 3.2488629221916199e-01 -9.6266001462936401e-02 - <_> - - 0 -1 112 -2.9939830303192139e-02 - - 1.7989009618759155e-01 -1.5311330556869507e-01 - <_> - - 0 -1 113 8.5012055933475494e-03 - - 4.2618699371814728e-02 -5.1194471120834351e-01 - <_> - - 0 -1 114 -5.8030229993164539e-03 - - -4.9628180265426636e-01 5.9898991137742996e-02 - <_> - - 0 -1 115 2.2724280133843422e-02 - - -9.5675282180309296e-02 2.3382890224456787e-01 - <_> - - 0 -1 116 -3.7230949848890305e-02 - - 3.2164341211318970e-01 -9.2149853706359863e-02 - <_> - - 0 -1 117 1.6675420105457306e-02 - - 6.1764750629663467e-02 -4.7197958827018738e-01 - <_> - 56 - -1.5587489604949951e+00 - - <_> - - 0 -1 118 5.6446779519319534e-02 - - -4.7918748855590820e-01 4.9137350916862488e-01 - <_> - - 0 -1 119 1.0642809793353081e-02 - - -1.4483550190925598e-01 3.1846639513969421e-01 - <_> - - 0 -1 120 5.9832781553268433e-02 - - -3.6746969819068909e-01 2.7132889628410339e-01 - <_> - - 0 -1 121 -1.2132249772548676e-02 - - 1.2309090048074722e-01 -8.9722618460655212e-02 - <_> - - 0 -1 122 3.1117030885070562e-03 - - -3.5122260451316833e-01 2.2136250138282776e-01 - <_> - - 0 -1 123 -3.9773698896169662e-02 - - 2.0415990054607391e-01 -4.3302271515130997e-02 - <_> - - 0 -1 124 -1.8394950777292252e-02 - - 1.9368380308151245e-01 -2.2873930633068085e-01 - <_> - - 0 -1 125 9.2628989368677139e-03 - - -2.2149570286273956e-01 2.0678040385246277e-01 - <_> - - 0 -1 126 9.8584238439798355e-03 - - 5.5731959640979767e-02 -6.4374917745590210e-01 - <_> - - 0 -1 127 -7.9286862164735794e-03 - - -6.2890440225601196e-01 5.2759759128093719e-02 - <_> - - 0 -1 128 6.5443426370620728e-02 - - -1.0315559804439545e-01 4.4659650325775146e-01 - <_> - - 0 -1 129 3.2274659723043442e-02 - - -1.7194040119647980e-01 3.6625158786773682e-01 - <_> - - 0 -1 130 4.8025429248809814e-02 - - 8.4739521145820618e-02 -5.1354151964187622e-01 - <_> - - 0 -1 131 -1.1461510322988033e-02 - - -6.5055489540100098e-01 5.5119000375270844e-02 - <_> - - 0 -1 132 3.4770029596984386e-03 - - -1.6373869776725769e-01 2.6408019661903381e-01 - <_> - - 0 -1 133 -4.1784349828958511e-02 - - -7.4961292743682861e-01 3.7305548787117004e-02 - <_> - - 0 -1 134 -3.1991851329803467e-01 - - 4.0143400430679321e-01 -1.0337690263986588e-01 - <_> - - 0 -1 135 -1.2783069908618927e-01 - - 2.7113029360771179e-01 -9.5342872664332390e-03 - <_> - - 0 -1 136 6.3939742743968964e-02 - - -1.3559409976005554e-01 3.1885480880737305e-01 - <_> - - 0 -1 137 1.4868929982185364e-01 - - -7.4743010103702545e-02 5.0650840997695923e-01 - <_> - - 0 -1 138 1.0867480188608170e-02 - - 6.7860342562198639e-02 -5.6486707925796509e-01 - <_> - - 0 -1 139 -1.1102750152349472e-01 - - 3.6937940120697021e-01 -1.0240530222654343e-01 - <_> - - 0 -1 140 5.5490661412477493e-02 - - -1.3388429582118988e-01 3.2509210705757141e-01 - <_> - - 0 -1 141 -1.2321200221776962e-01 - - -4.4768521189689636e-01 7.3690727353096008e-02 - <_> - - 0 -1 142 -2.0375039428472519e-02 - - -6.6259127855300903e-01 4.2243398725986481e-02 - <_> - - 0 -1 143 -3.0578291043639183e-03 - - 1.8292440474033356e-01 -1.2179119884967804e-01 - <_> - - 0 -1 144 -1.6195779666304588e-02 - - -6.3178831338882446e-01 4.0226891636848450e-02 - <_> - - 0 -1 145 5.0967220216989517e-02 - - -7.7404953539371490e-02 2.4355340003967285e-01 - <_> - - 0 -1 146 5.8094091713428497e-02 - - -1.2381289899349213e-01 2.5356009602546692e-01 - <_> - - 0 -1 147 -4.2313118465244770e-03 - - -5.3830701112747192e-01 2.3571109399199486e-02 - <_> - - 0 -1 148 -1.8701169639825821e-02 - - 3.7818440794944763e-01 -8.0060847103595734e-02 - <_> - - 0 -1 149 2.5685389991849661e-03 - - -1.6534459590911865e-01 1.6206049919128418e-01 - <_> - - 0 -1 150 1.9677819218486547e-03 - - -1.7564539611339569e-01 1.5307140350341797e-01 - <_> - - 0 -1 151 3.5487169027328491e-01 - - -1.3613759540021420e-02 3.6016708612442017e-01 - <_> - - 0 -1 152 2.6808801293373108e-01 - - -8.0943092703819275e-02 3.6912909150123596e-01 - <_> - - 0 -1 153 6.2880717217922211e-02 - - -9.1311313211917877e-02 3.2952618598937988e-01 - <_> - - 0 -1 154 2.4154469370841980e-02 - - -6.8631373345851898e-02 4.5747300982475281e-01 - <_> - - 0 -1 155 9.1738719493150711e-03 - - 5.4542269557714462e-02 -5.1373308897018433e-01 - <_> - - 0 -1 156 -1.3073369860649109e-02 - - -5.9702301025390625e-01 3.6591410636901855e-02 - <_> - - 0 -1 157 6.8077309988439083e-03 - - -3.5432789474725723e-02 2.5199410319328308e-01 - <_> - - 0 -1 158 4.5149110257625580e-02 - - 6.3889928162097931e-02 -3.8367250561714172e-01 - <_> - - 0 -1 159 9.9950553849339485e-03 - - 1.3209559954702854e-02 -4.5377358794212341e-01 - <_> - - 0 -1 160 7.9643689095973969e-03 - - 3.3718310296535492e-02 -6.5334022045135498e-01 - <_> - - 0 -1 161 3.5672768950462341e-01 - - 3.2221440225839615e-02 -5.8003139495849609e-01 - <_> - - 0 -1 162 -3.6269061267375946e-02 - - 2.4694380164146423e-01 -1.0495760291814804e-01 - <_> - - 0 -1 163 4.2786229401826859e-02 - - -7.0717707276344299e-02 3.6938878893852234e-01 - <_> - - 0 -1 164 -1.1904439888894558e-03 - - -3.8284510374069214e-01 6.1551358550786972e-02 - <_> - - 0 -1 165 1.0740149766206741e-01 - - -2.1972050890326500e-02 1.8137590587139130e-01 - <_> - - 0 -1 166 7.7441677451133728e-02 - - -2.0107130706310272e-01 1.1222709715366364e-01 - <_> - - 0 -1 167 7.1143552660942078e-02 - - -3.1009899452328682e-02 7.3064021766185760e-02 - <_> - - 0 -1 168 -5.7338759303092957e-02 - - 4.0864440798759460e-01 -6.1444051563739777e-02 - <_> - - 0 -1 169 -7.2106160223484039e-02 - - 3.3982399106025696e-01 -8.6813166737556458e-02 - <_> - - 0 -1 170 -5.8580391108989716e-02 - - -4.9610468745231628e-01 6.1556190252304077e-02 - <_> - - 0 -1 171 4.4991881586611271e-03 - - 3.9484139531850815e-02 -4.6022048592567444e-01 - <_> - - 0 -1 172 5.7972371578216553e-02 - - -1.1365810036659241e-01 1.8178419768810272e-01 - <_> - - 0 -1 173 4.1217011213302612e-01 - - 1.7291519790887833e-02 -8.0449968576431274e-01 - <_> - 84 - -1.5197360515594482e+00 - - <_> - - 0 -1 174 -4.9232240766286850e-02 - - 4.0377280116081238e-01 -4.2361000180244446e-01 - <_> - - 0 -1 175 2.7331050485372543e-02 - - -1.3277700543403625e-01 2.0733749866485596e-01 - <_> - - 0 -1 176 -4.5100759714841843e-02 - - 3.1615048646926880e-01 -4.2044240236282349e-01 - <_> - - 0 -1 177 -2.5283211469650269e-01 - - -5.7497388124465942e-01 6.4437933266162872e-02 - <_> - - 0 -1 178 -4.2795531451702118e-02 - - 1.2526020407676697e-01 -3.6320659518241882e-01 - <_> - - 0 -1 179 -1.0599119961261749e-01 - - -5.9337782859802246e-01 1.1679250001907349e-01 - <_> - - 0 -1 180 7.1173040196299553e-03 - - -2.0296379923820496e-01 2.1597969532012939e-01 - <_> - - 0 -1 181 -1.1543310247361660e-02 - - -5.6954711675643921e-01 6.9512702524662018e-02 - <_> - - 0 -1 182 2.5941779837012291e-02 - - 4.0675889700651169e-02 -5.9662687778472900e-01 - <_> - - 0 -1 183 -1.1117800325155258e-01 - - 3.9230749011039734e-01 -8.5263282060623169e-02 - <_> - - 0 -1 184 1.3980209827423096e-01 - - -2.0322300493717194e-01 2.5884169340133667e-01 - <_> - - 0 -1 185 2.2344760596752167e-02 - - -2.2175629436969757e-01 1.5351130068302155e-01 - <_> - - 0 -1 186 3.5640481859445572e-02 - - -1.1393369734287262e-01 2.9229050874710083e-01 - <_> - - 0 -1 187 8.0998390913009644e-03 - - 3.9572209119796753e-02 -6.6712599992752075e-01 - <_> - - 0 -1 188 5.3474139422178268e-02 - - -7.6794572174549103e-02 4.3219769001007080e-01 - <_> - - 0 -1 189 -1.3862100429832935e-02 - - 8.4603689610958099e-02 -1.6059190034866333e-01 - <_> - - 0 -1 190 -7.7099740505218506e-02 - - 5.4772442579269409e-01 -6.6370002925395966e-02 - <_> - - 0 -1 191 -1.2801369652152061e-02 - - -5.5477362871170044e-01 5.6784640997648239e-02 - <_> - - 0 -1 192 -1.0235139779979363e-04 - - 1.4509449899196625e-01 -1.9509540498256683e-01 - <_> - - 0 -1 193 7.0487200282514095e-03 - - 4.0054310113191605e-02 -4.4429570436477661e-01 - <_> - - 0 -1 194 -4.5558041892945766e-03 - - -4.3548169732093811e-01 6.0629911720752716e-02 - <_> - - 0 -1 195 1.9300010055303574e-02 - - -7.1191310882568359e-02 8.1069536507129669e-02 - <_> - - 0 -1 196 5.4058600217103958e-03 - - -1.4167229831218719e-01 1.9680340588092804e-01 - <_> - - 0 -1 197 -8.6945146322250366e-03 - - -1.3133870065212250e-01 2.0501429215073586e-02 - <_> - - 0 -1 198 9.7174253314733505e-03 - - -1.8720309436321259e-01 1.8761770427227020e-01 - <_> - - 0 -1 199 -1.1155830323696136e-01 - - 4.0864959359169006e-01 -6.9993183016777039e-02 - <_> - - 0 -1 200 9.7640797495841980e-02 - - -1.2449839711189270e-01 2.1617740392684937e-01 - <_> - - 0 -1 201 -1.5061390399932861e-01 - - -3.8674619793891907e-01 5.4316818714141846e-02 - <_> - - 0 -1 202 4.9472171813249588e-03 - - 4.3653231114149094e-02 -5.1559001207351685e-01 - <_> - - 0 -1 203 -2.0495539531111717e-02 - - -5.4416948556900024e-01 7.6605947688221931e-03 - <_> - - 0 -1 204 -2.7278669178485870e-02 - - 4.2674958705902100e-01 -5.6518279016017914e-02 - <_> - - 0 -1 205 1.3524649664759636e-02 - - -5.0716150552034378e-02 1.8381009995937347e-01 - <_> - - 0 -1 206 -9.4986647367477417e-02 - - -4.2324599623680115e-01 5.2298299968242645e-02 - <_> - - 0 -1 207 1.1051560193300247e-01 - - 3.5527960862964392e-03 -4.1661360859870911e-01 - <_> - - 0 -1 208 -1.3192519545555115e-01 - - -6.2827968597412109e-01 3.9149269461631775e-02 - <_> - - 0 -1 209 1.9424719735980034e-02 - - 6.5935368184000254e-04 -5.7528150081634521e-01 - <_> - - 0 -1 210 1.4707759954035282e-02 - - 3.9024401456117630e-02 -5.6517869234085083e-01 - <_> - - 0 -1 211 2.9291698592714965e-04 - - -1.2926730513572693e-01 1.2589070200920105e-01 - <_> - - 0 -1 212 2.1614220459014177e-03 - - -1.3799719512462616e-01 1.6510820388793945e-01 - <_> - - 0 -1 213 -4.8753958940505981e-01 - - 4.3802809715270996e-01 -6.0623701661825180e-02 - <_> - - 0 -1 214 5.0596840679645538e-02 - - -4.3501000851392746e-02 5.1223617792129517e-01 - <_> - - 0 -1 215 1.9822390377521515e-01 - - 1.6843929886817932e-02 -4.5089399814605713e-01 - <_> - - 0 -1 216 -5.2561469376087189e-02 - - 6.1911600828170776e-01 -3.3245678991079330e-02 - <_> - - 0 -1 217 3.9434649050235748e-02 - - -1.3324570655822754e-01 1.5556560456752777e-01 - <_> - - 0 -1 218 -8.2802558317780495e-03 - - -4.6491861343383789e-01 4.6377800405025482e-02 - <_> - - 0 -1 219 1.8781690299510956e-01 - - -7.3843918740749359e-02 2.0355209708213806e-01 - <_> - - 0 -1 220 5.9288300573825836e-02 - - -1.0040319710969925e-01 2.9306849837303162e-01 - <_> - - 0 -1 221 4.8330631107091904e-03 - - -1.2360379844903946e-01 1.8227760493755341e-01 - <_> - - 0 -1 222 1.3462300412356853e-02 - - -8.6501419544219971e-02 2.5453040003776550e-01 - <_> - - 0 -1 223 1.1278780177235603e-02 - - 3.5953551530838013e-02 -3.6370408535003662e-01 - <_> - - 0 -1 224 1.1120849847793579e-01 - - 4.1156098246574402e-02 -4.9355891346931458e-01 - <_> - - 0 -1 225 5.8954879641532898e-03 - - 8.6054708808660507e-03 -5.7748162746429443e-01 - <_> - - 0 -1 226 7.0609137765131891e-05 - - -1.9438520073890686e-01 1.0896600037813187e-01 - <_> - - 0 -1 227 1.1162689886987209e-02 - - -1.0524000227451324e-01 1.7699919641017914e-01 - <_> - - 0 -1 228 1.4758500270545483e-02 - - 3.3827111124992371e-02 -5.7838040590286255e-01 - <_> - - 0 -1 229 6.5100449137389660e-03 - - 1.2222490273416042e-02 -6.8323171138763428e-01 - <_> - - 0 -1 230 1.3240260072052479e-02 - - 3.1728319823741913e-02 -4.9623319506645203e-01 - <_> - - 0 -1 231 -2.1011430025100708e-01 - - -4.9222511053085327e-01 5.4596872068941593e-03 - <_> - - 0 -1 232 2.4140250682830811e-01 - - 3.1461920589208603e-02 -5.6909531354904175e-01 - <_> - - 0 -1 233 3.8006789982318878e-03 - - -6.5067090094089508e-02 3.7642251700162888e-02 - <_> - - 0 -1 234 1.2624409794807434e-01 - - 3.9377398788928986e-02 -4.5900979638099670e-01 - <_> - - 0 -1 235 1.3010799884796143e-02 - - -5.7910811156034470e-02 2.9622611403465271e-01 - <_> - - 0 -1 236 7.1800998412072659e-03 - - 3.4249510616064072e-02 -5.6361818313598633e-01 - <_> - - 0 -1 237 2.4246750399470329e-02 - - -1.0864839702844620e-01 1.0131549835205078e-01 - <_> - - 0 -1 238 -1.6966859996318817e-01 - - -3.4119209647178650e-01 4.9988009035587311e-02 - <_> - - 0 -1 239 -2.0461060106754303e-02 - - -2.0795580744743347e-01 3.4589329734444618e-03 - <_> - - 0 -1 240 -2.1308129653334618e-02 - - 5.0270938873291016e-01 -4.0076468139886856e-02 - <_> - - 0 -1 241 -1.0930839926004410e-02 - - 1.5635550022125244e-01 -7.5159102678298950e-02 - <_> - - 0 -1 242 9.9652167409658432e-03 - - 3.6286398768424988e-02 -5.0529891252517700e-01 - <_> - - 0 -1 243 -3.3498809207230806e-03 - - -2.7242329716682434e-01 2.7380689978599548e-02 - <_> - - 0 -1 244 5.9739351272583008e-02 - - 2.6872010901570320e-02 -6.3886368274688721e-01 - <_> - - 0 -1 245 1.2781299650669098e-01 - - 1.4498339733108878e-03 -3.8336989283561707e-01 - <_> - - 0 -1 246 2.9313340783119202e-03 - - -1.3099479675292969e-01 1.2987799942493439e-01 - <_> - - 0 -1 247 6.1392742209136486e-03 - - 1.0834789834916592e-02 -3.1701850891113281e-01 - <_> - - 0 -1 248 -8.1134513020515442e-02 - - -3.5706749558448792e-01 4.9477528780698776e-02 - <_> - - 0 -1 249 -6.0443039983510971e-02 - - 4.0889498591423035e-01 -2.2163810208439827e-02 - <_> - - 0 -1 250 5.9390361420810223e-03 - - -1.0460360348224640e-01 1.9445130228996277e-01 - <_> - - 0 -1 251 7.8998396929819137e-05 - - -4.7956719994544983e-02 5.7118128985166550e-02 - <_> - - 0 -1 252 -1.8057189881801605e-03 - - -2.9241380095481873e-01 5.8119218796491623e-02 - <_> - - 0 -1 253 6.7375837825238705e-03 - - -8.8656462728977203e-02 4.4145271182060242e-02 - <_> - - 0 -1 254 5.5221098591573536e-05 - - -1.2490449845790863e-01 1.2661279737949371e-01 - <_> - - 0 -1 255 2.4163089692592621e-02 - - -1.3393550179898739e-02 3.4677559137344360e-01 - <_> - - 0 -1 256 1.2786190025508404e-02 - - -5.6848809123039246e-02 2.7275329828262329e-01 - <_> - - 0 -1 257 -1.3572210446000099e-03 - - 6.5408997237682343e-02 -1.4144480228424072e-01 - <_> - 99 - -1.5084979534149170e+00 - - <_> - - 0 -1 258 1.2013850361108780e-01 - - -3.6573138833045959e-01 3.6293190717697144e-01 - <_> - - 0 -1 259 -1.4620110392570496e-01 - - 3.9655679464340210e-01 -1.9461369514465332e-01 - <_> - - 0 -1 260 1.2343060225248337e-02 - - -2.4749830365180969e-01 2.2562310099601746e-01 - <_> - - 0 -1 261 3.2748850062489510e-03 - - 7.2104498744010925e-02 -3.8964301347732544e-01 - <_> - - 0 -1 262 2.4311800301074982e-01 - - 9.4664301723241806e-03 1.0626879882812500e+03 - <_> - - 0 -1 263 3.9923518896102905e-02 - - -1.2903560698032379e-01 1.9358199834823608e-01 - <_> - - 0 -1 264 -7.0425998419523239e-03 - - 1.5446980297565460e-01 -2.6546320319175720e-01 - <_> - - 0 -1 265 6.5724221058189869e-03 - - 7.3708683252334595e-02 -5.8167362213134766e-01 - <_> - - 0 -1 266 -2.3335739970207214e-02 - - -4.2724540829658508e-01 8.8655106723308563e-02 - <_> - - 0 -1 267 -2.6215979829430580e-02 - - 3.5602480173110962e-01 -1.0141780227422714e-01 - <_> - - 0 -1 268 1.1400490067899227e-02 - - -1.1014410108327866e-01 3.6441218852996826e-01 - <_> - - 0 -1 269 1.4520609751343727e-02 - - 2.1424520760774612e-02 -4.9028620123863220e-01 - <_> - - 0 -1 270 -8.5834655910730362e-03 - - -6.5257197618484497e-01 5.4663181304931641e-02 - <_> - - 0 -1 271 -1.3745459914207458e-01 - - -5.0492751598358154e-01 5.2730988711118698e-02 - <_> - - 0 -1 272 -1.2615700252354145e-02 - - -6.2455308437347412e-01 3.1615808606147766e-02 - <_> - - 0 -1 273 -2.3604110538144596e-05 - - 9.8741486668586731e-02 -9.4690948724746704e-02 - <_> - - 0 -1 274 -5.8249959693057463e-05 - - 1.4451199769973755e-01 -1.6137890517711639e-01 - <_> - - 0 -1 275 -1.9951239228248596e-02 - - -3.7731361389160156e-01 2.4471480399370193e-02 - <_> - - 0 -1 276 -5.4968569427728653e-02 - - -4.4058069586753845e-01 5.3490400314331055e-02 - <_> - - 0 -1 277 -1.6939230263233185e-02 - - -6.6650348901748657e-01 3.1559631228446960e-02 - <_> - - 0 -1 278 1.1090139858424664e-02 - - 3.1197320669889450e-02 -5.4754877090454102e-01 - <_> - - 0 -1 279 2.8986210003495216e-02 - - -1.2510849535465240e-01 9.1882318258285522e-02 - <_> - - 0 -1 280 -1.0453460365533829e-01 - - 4.3575459718704224e-01 -6.0676250606775284e-02 - <_> - - 0 -1 281 -4.6273069456219673e-03 - - 9.7388513386249542e-02 -9.1208413243293762e-02 - <_> - - 0 -1 282 5.1698398590087891e-01 - - -6.0991138219833374e-02 4.8797199130058289e-01 - <_> - - 0 -1 283 -6.6743656992912292e-02 - - 3.7274169921875000e-01 -6.3504636287689209e-02 - <_> - - 0 -1 284 1.5470350161194801e-02 - - 6.1050411313772202e-02 -4.8717978596687317e-01 - <_> - - 0 -1 285 -3.5926289856433868e-03 - - 1.4211909472942352e-01 -1.5088430047035217e-01 - <_> - - 0 -1 286 -2.0565569400787354e-01 - - -4.7814959287643433e-01 4.3618928641080856e-02 - <_> - - 0 -1 287 2.9654990881681442e-02 - - -3.5474069416522980e-02 1.8964229524135590e-01 - <_> - - 0 -1 288 1.3284200429916382e-01 - - 5.5517818778753281e-02 -3.9714470505714417e-01 - <_> - - 0 -1 289 3.3759230282157660e-03 - - 4.1567429900169373e-02 -3.6205479502677917e-01 - <_> - - 0 -1 290 5.4163701133802533e-04 - - -1.8664340674877167e-01 1.0409829765558243e-01 - <_> - - 0 -1 291 -5.2731011062860489e-02 - - 2.7602180838584900e-01 -2.7059659361839294e-02 - <_> - - 0 -1 292 -6.2107551842927933e-02 - - 3.1340470910072327e-01 -6.9655612111091614e-02 - <_> - - 0 -1 293 -1.3962079770863056e-02 - - 4.1585158556699753e-02 -1.0574489831924438e-01 - <_> - - 0 -1 294 5.9113580733537674e-02 - - -1.1327149718999863e-01 2.1400369703769684e-01 - <_> - - 0 -1 295 -3.2472780346870422e-01 - - -2.1028089523315430e-01 1.4781720004975796e-02 - <_> - - 0 -1 296 -9.5277121290564537e-03 - - 1.0578139871358871e-01 -2.1662670373916626e-01 - <_> - - 0 -1 297 -5.5769551545381546e-02 - - 2.7192020416259766e-01 -2.1369809284806252e-02 - <_> - - 0 -1 298 1.3918150216341019e-02 - - -8.8893227279186249e-02 2.5558671355247498e-01 - <_> - - 0 -1 299 2.3373179137706757e-03 - - -1.1573249846696854e-01 1.5424209833145142e-01 - <_> - - 0 -1 300 7.1918689645826817e-03 - - 4.1037619113922119e-02 -5.0523638725280762e-01 - <_> - - 0 -1 301 8.5471794009208679e-03 - - 1.4381350018084049e-02 -2.3163309693336487e-01 - <_> - - 0 -1 302 -3.2956521026790142e-03 - - -2.8280371427536011e-01 6.1899840831756592e-02 - <_> - - 0 -1 303 -2.2070689126849174e-02 - - 1.4894370734691620e-01 -9.4912350177764893e-02 - <_> - - 0 -1 304 1.6646440327167511e-01 - - -5.9046350419521332e-02 4.5291060209274292e-01 - <_> - - 0 -1 305 7.9817809164524078e-03 - - -7.0236042141914368e-02 1.2004370242357254e-01 - <_> - - 0 -1 306 7.7218217775225639e-03 - - 4.7613430768251419e-02 -4.1645199060440063e-01 - <_> - - 0 -1 307 2.8179560104035772e-05 - - -1.1355110257863998e-01 9.9581547081470490e-02 - <_> - - 0 -1 308 1.1535449884831905e-02 - - 4.7971371561288834e-02 -4.7012269496917725e-01 - <_> - - 0 -1 309 -4.1789751499891281e-02 - - 1.8016649782657623e-01 -9.2361323535442352e-02 - <_> - - 0 -1 310 7.5845858082175255e-03 - - -1.1702799797058105e-01 1.5177269279956818e-01 - <_> - - 0 -1 311 1.1714509688317776e-02 - - -3.9957709610462189e-02 5.6379120796918869e-02 - <_> - - 0 -1 312 8.0904200673103333e-02 - - -5.8665640652179718e-02 3.2547131180763245e-01 - <_> - - 0 -1 313 1.1185820214450359e-02 - - -1.5692700445652008e-01 1.0740319639444351e-01 - <_> - - 0 -1 314 2.0746290683746338e-02 - - -7.2714947164058685e-02 2.9882580041885376e-01 - <_> - - 0 -1 315 7.1547999978065491e-03 - - 5.0220601260662079e-02 -3.8929650187492371e-01 - <_> - - 0 -1 316 -4.7662649303674698e-03 - - 1.0623099654912949e-01 -1.6408999264240265e-01 - <_> - - 0 -1 317 1.3244680128991604e-02 - - -3.4063499420881271e-02 3.1890881061553955e-01 - <_> - - 0 -1 318 2.0384900271892548e-03 - - 3.9936680346727371e-02 -4.6564960479736328e-01 - <_> - - 0 -1 319 2.2383779287338257e-02 - - 1.9574180245399475e-02 -3.1799200177192688e-01 - <_> - - 0 -1 320 -6.0196588747203350e-03 - - -4.0058508515357971e-01 4.1111808270215988e-02 - <_> - - 0 -1 321 1.3340399600565434e-02 - - 7.2229830548167229e-03 -3.5855838656425476e-01 - <_> - - 0 -1 322 1.6548049449920654e-01 - - 3.6020029336214066e-02 -4.4204410910606384e-01 - <_> - - 0 -1 323 -1.7267789691686630e-02 - - 9.5772877335548401e-02 -3.0379680916666985e-02 - <_> - - 0 -1 324 3.7873580586165190e-03 - - -1.3409850001335144e-01 1.2926609814167023e-01 - <_> - - 0 -1 325 5.5727548897266388e-03 - - -6.6907882690429688e-02 1.7382170259952545e-01 - <_> - - 0 -1 326 8.5729602724313736e-03 - - 3.0721880495548248e-02 -5.8534258604049683e-01 - <_> - - 0 -1 327 -2.6385819539427757e-02 - - 1.7780029773712158e-01 -3.9368398487567902e-02 - <_> - - 0 -1 328 1.1899930424988270e-02 - - -5.7148940861225128e-02 3.0101099610328674e-01 - <_> - - 0 -1 329 6.8353079259395599e-02 - - 2.9185149818658829e-02 -1.5513670444488525e-01 - <_> - - 0 -1 330 1.0824030265212059e-02 - - -1.3470290601253510e-01 1.3852770626544952e-01 - <_> - - 0 -1 331 8.8032193481922150e-02 - - -3.6536350846290588e-02 2.3603020608425140e-01 - <_> - - 0 -1 332 -2.5776170194149017e-02 - - 1.8358540534973145e-01 -1.3343839347362518e-01 - <_> - - 0 -1 333 8.2010023295879364e-02 - - 1.1817749589681625e-02 -3.1878089904785156e-01 - <_> - - 0 -1 334 -2.0370729267597198e-02 - - 2.5035229325294495e-01 -7.0230402052402496e-02 - <_> - - 0 -1 335 7.8417092561721802e-02 - - 2.5404049083590508e-02 -2.1633470058441162e-01 - <_> - - 0 -1 336 5.4000681266188622e-03 - - 3.9877630770206451e-02 -3.8197609782218933e-01 - <_> - - 0 -1 337 1.1655789799988270e-02 - - 8.5724918171763420e-03 -4.6817851066589355e-01 - <_> - - 0 -1 338 6.1775790527462959e-05 - - -1.7354169487953186e-01 9.0420998632907867e-02 - <_> - - 0 -1 339 -1.8026469275355339e-02 - - -7.9275929927825928e-01 9.2333797365427017e-03 - <_> - - 0 -1 340 2.1709210705012083e-03 - - -8.4628887474536896e-02 1.6544300317764282e-01 - <_> - - 0 -1 341 -8.2279697060585022e-02 - - 2.1551139652729034e-01 -9.1900646686553955e-02 - <_> - - 0 -1 342 1.0293359868228436e-02 - - 2.3490300402045250e-02 -6.7681080102920532e-01 - <_> - - 0 -1 343 -2.1881979703903198e-01 - - 5.0478667020797729e-01 -3.1892780214548111e-02 - <_> - - 0 -1 344 -2.2118939086794853e-02 - - -6.3159322738647461e-01 2.5988319888710976e-02 - <_> - - 0 -1 345 2.2942360490560532e-02 - - -4.0672279894351959e-02 3.5672950744628906e-01 - <_> - - 0 -1 346 -5.6763160973787308e-02 - - 3.5523039102554321e-01 -3.8303978741168976e-02 - <_> - - 0 -1 347 -7.5660292059183121e-03 - - -3.7110349535942078e-01 1.9238779321312904e-02 - <_> - - 0 -1 348 1.2348339706659317e-01 - - 2.1532310172915459e-02 -6.3291150331497192e-01 - <_> - - 0 -1 349 2.7259990019956604e-05 - - -1.2036570161581039e-01 1.0520099848508835e-01 - <_> - - 0 -1 350 8.5555076599121094e-02 - - 3.4211669117212296e-02 -4.8727419972419739e-01 - <_> - - 0 -1 351 -1.4981040358543396e-01 - - 4.2568850517272949e-01 -4.0688131004571915e-02 - <_> - - 0 -1 352 2.4900440126657486e-02 - - -4.6901259571313858e-02 2.8062260150909424e-01 - <_> - - 0 -1 353 7.8607350587844849e-03 - - 5.2375709637999535e-03 -9.7636777162551880e-01 - <_> - - 0 -1 354 7.3002476710826159e-05 - - -1.6680990159511566e-01 1.0618969798088074e-01 - <_> - - 0 -1 355 1.7788860201835632e-01 - - -1.6729630529880524e-02 1.7790630459785461e-01 - <_> - - 0 -1 356 1.2957760132849216e-02 - - 3.2777778804302216e-02 -4.4296708703041077e-01 - <_> - 107 - -1.4449690580368042e+00 - - <_> - - 0 -1 357 -6.7150183022022247e-02 - - 3.9577248692512512e-01 -3.1510940194129944e-01 - <_> - - 0 -1 358 4.8962850123643875e-02 - - -2.6961261034011841e-01 1.6869769990444183e-01 - <_> - - 0 -1 359 2.7194418944418430e-03 - - -3.5195991396903992e-01 2.2836600244045258e-01 - <_> - - 0 -1 360 -5.1611121743917465e-03 - - 2.4076780676841736e-01 -2.2074960172176361e-01 - <_> - - 0 -1 361 2.3630170524120331e-01 - - -1.6534950584173203e-02 -7.9190631103515625e+02 - <_> - - 0 -1 362 -1.9205499440431595e-02 - - 3.6792600154876709e-01 -5.1191650331020355e-02 - <_> - - 0 -1 363 3.8221171125769615e-03 - - -1.4513429999351501e-01 3.2845288515090942e-01 - <_> - - 0 -1 364 -1.1440079659223557e-02 - - -3.5804128646850586e-01 1.1914189904928207e-01 - <_> - - 0 -1 365 8.8761039078235626e-03 - - -2.1450379490852356e-01 1.7957879602909088e-01 - <_> - - 0 -1 366 8.4572024643421173e-03 - - -6.9746732711791992e-02 1.6367790102958679e-01 - <_> - - 0 -1 367 -1.2689580023288727e-01 - - 2.4832360446453094e-01 -1.2166699767112732e-01 - <_> - - 0 -1 368 4.6295030042529106e-03 - - -5.6057151407003403e-02 3.5743680596351624e-01 - <_> - - 0 -1 369 -7.5959236710332334e-05 - - 1.4901199936866760e-01 -1.8527039885520935e-01 - <_> - - 0 -1 370 1.3179309666156769e-01 - - 3.1471058726310730e-02 -6.5023940801620483e-01 - <_> - - 0 -1 371 1.3506829738616943e-02 - - 4.9855500459671021e-02 -5.2044898271560669e-01 - <_> - - 0 -1 372 -1.3922819495201111e-01 - - -4.2741641402244568e-01 2.2189699113368988e-02 - <_> - - 0 -1 373 6.0221530497074127e-02 - - 5.5732671171426773e-02 -4.3182530999183655e-01 - <_> - - 0 -1 374 -1.3498260080814362e-01 - - -7.1942609548568726e-01 6.5442471532151103e-04 - <_> - - 0 -1 375 -3.9722030051052570e-03 - - 1.1103550344705582e-01 -2.0654919743537903e-01 - <_> - - 0 -1 376 -2.1884329617023468e-02 - - -2.5028410553932190e-01 4.5227419584989548e-02 - <_> - - 0 -1 377 5.6294221431016922e-02 - - 3.7377629429101944e-02 -6.2178802490234375e-01 - <_> - - 0 -1 378 -4.1612509638071060e-02 - - -5.8709871768951416e-01 3.2716508954763412e-02 - <_> - - 0 -1 379 7.3085748590528965e-03 - - -1.3444009423255920e-01 1.8418920040130615e-01 - <_> - - 0 -1 380 -3.9157591760158539e-02 - - -7.2376221418380737e-02 3.7419971078634262e-02 - <_> - - 0 -1 381 8.2146301865577698e-03 - - -2.0513060688972473e-01 1.1532980203628540e-01 - <_> - - 0 -1 382 -3.4585020039230585e-03 - - 5.0050161778926849e-02 -5.7895500212907791e-02 - <_> - - 0 -1 383 4.0681189857423306e-03 - - -9.4465941190719604e-02 2.9207259416580200e-01 - <_> - - 0 -1 384 -5.4911449551582336e-02 - - -3.5309541225433350e-01 7.0034377276897430e-02 - <_> - - 0 -1 385 6.9372743368148804e-02 - - 2.2225400432944298e-02 -7.1920287609100342e-01 - <_> - - 0 -1 386 7.9585537314414978e-02 - - -3.8074009120464325e-02 3.0334910750389099e-01 - <_> - - 0 -1 387 5.4406329989433289e-02 - - 4.4882718473672867e-02 -4.4952940940856934e-01 - <_> - - 0 -1 388 2.6906138658523560e-01 - - -3.6008980125188828e-02 5.3076601028442383e-01 - <_> - - 0 -1 389 4.1156299412250519e-03 - - -1.0036530345678329e-01 1.8043400347232819e-01 - <_> - - 0 -1 390 -1.4385980367660522e-01 - - -6.2012898921966553e-01 1.1513910256326199e-02 - <_> - - 0 -1 391 1.4403319917619228e-02 - - -7.6877258718013763e-02 2.6086720824241638e-01 - <_> - - 0 -1 392 3.9774607867002487e-03 - - 4.2533420026302338e-02 -4.6169069409370422e-01 - <_> - - 0 -1 393 -4.6856269240379333e-02 - - 4.8750248551368713e-01 -4.3399021029472351e-02 - <_> - - 0 -1 394 -5.2139908075332642e-03 - - 1.1039640009403229e-01 -1.8073910474777222e-01 - <_> - - 0 -1 395 -6.7679318599402905e-03 - - -5.2303707599639893e-01 3.0777219682931900e-02 - <_> - - 0 -1 396 -7.1862619370222092e-03 - - 1.8328289687633514e-01 -5.6999340653419495e-02 - <_> - - 0 -1 397 -9.6733449026942253e-04 - - 1.5355390310287476e-01 -1.0831949859857559e-01 - <_> - - 0 -1 398 2.9203139245510101e-02 - - -3.7776630371809006e-02 1.0933200269937515e-01 - <_> - - 0 -1 399 9.8407091572880745e-03 - - -1.0926169902086258e-01 1.6795679926872253e-01 - <_> - - 0 -1 400 4.4505208730697632e-01 - - 2.6825889945030212e-02 -7.8063780069351196e-01 - <_> - - 0 -1 401 -6.1639058403670788e-03 - - -4.9384048581123352e-01 3.1130479648709297e-02 - <_> - - 0 -1 402 -4.9183439463376999e-02 - - -3.2318601012229919e-01 4.6904429793357849e-02 - <_> - - 0 -1 403 2.6128649551537819e-05 - - -1.0635109990835190e-01 1.5446029603481293e-01 - <_> - - 0 -1 404 -3.6831300705671310e-02 - - 2.8206101059913635e-01 -1.2601600028574467e-02 - <_> - - 0 -1 405 -7.1884751319885254e-02 - - 2.3140460252761841e-01 -7.3330886662006378e-02 - <_> - - 0 -1 406 5.7498589158058167e-02 - - -9.6435636281967163e-02 2.0507499575614929e-01 - <_> - - 0 -1 407 3.9720349013805389e-03 - - 3.6001030355691910e-02 -5.4572492837905884e-01 - <_> - - 0 -1 408 2.6467780116945505e-03 - - -4.4131889939308167e-02 7.5650222599506378e-02 - <_> - - 0 -1 409 -8.8836792856454849e-03 - - -4.6108219027519226e-01 3.2768789678812027e-02 - <_> - - 0 -1 410 -1.2856270186603069e-02 - - 7.2195157408714294e-02 -2.9732180759310722e-02 - <_> - - 0 -1 411 1.2072769924998283e-02 - - -5.0588879734277725e-02 2.9055860638618469e-01 - <_> - - 0 -1 412 1.8108480435330421e-04 - - -7.1461439132690430e-02 7.9823851585388184e-02 - <_> - - 0 -1 413 1.6076380386948586e-02 - - 4.7663111239671707e-02 -3.2759100198745728e-01 - <_> - - 0 -1 414 -9.5250606536865234e-03 - - -1.8988420069217682e-01 7.0858187973499298e-03 - <_> - - 0 -1 415 -6.2362798489630222e-03 - - -4.2836889624595642e-01 3.3970601856708527e-02 - <_> - - 0 -1 416 2.4684870368218981e-05 - - -8.0308698117733002e-02 1.1084640026092529e-01 - <_> - - 0 -1 417 -1.1949270265176892e-03 - - 2.2565570473670959e-01 -6.2634393572807312e-02 - <_> - - 0 -1 418 7.5406976975500584e-05 - - -1.2379209697246552e-01 8.9499987661838531e-02 - <_> - - 0 -1 419 -1.5506739728152752e-02 - - 3.1002271175384521e-01 -6.5474428236484528e-02 - <_> - - 0 -1 420 5.1327929832041264e-03 - - 2.0446259528398514e-02 -4.9159330129623413e-01 - <_> - - 0 -1 421 4.8783698730403557e-05 - - -1.7229010164737701e-01 1.0885129868984222e-01 - <_> - - 0 -1 422 6.1788759194314480e-03 - - 1.9519099965691566e-02 -3.1397709250450134e-01 - <_> - - 0 -1 423 1.7130610346794128e-01 - - 1.7246689647436142e-02 -7.7260631322860718e-01 - <_> - - 0 -1 424 -4.2986709624528885e-02 - - 1.5775360167026520e-01 -4.8268649727106094e-02 - <_> - - 0 -1 425 -5.2703949622809887e-03 - - -4.6245059370994568e-01 3.9202030748128891e-02 - <_> - - 0 -1 426 2.0323780179023743e-01 - - 3.5771671682596207e-02 -3.9400190114974976e-01 - <_> - - 0 -1 427 1.8217949196696281e-02 - - -4.0734618902206421e-02 3.7419110536575317e-01 - <_> - - 0 -1 428 -1.0606779687805101e-04 - - 1.0123260319232941e-01 -9.1124363243579865e-02 - <_> - - 0 -1 429 3.8906659465283155e-03 - - -1.5201710164546967e-01 9.3479022383689880e-02 - <_> - - 0 -1 430 1.2537229806184769e-02 - - -6.0158051550388336e-02 2.5583261251449585e-01 - <_> - - 0 -1 431 -9.9574513733386993e-03 - - 1.3798029720783234e-01 -1.2496340274810791e-01 - <_> - - 0 -1 432 3.6789269652217627e-03 - - 4.2771819978952408e-02 -3.0630341172218323e-01 - <_> - - 0 -1 433 3.7803261075168848e-03 - - 3.2370451837778091e-02 -4.1383808851242065e-01 - <_> - - 0 -1 434 6.8372930400073528e-05 - - -6.4546667039394379e-02 7.9466506838798523e-02 - <_> - - 0 -1 435 -6.3996631070040166e-05 - - 1.3556569814682007e-01 -1.1014910042285919e-01 - <_> - - 0 -1 436 -8.3484519564080983e-05 - - 1.2857739627361298e-01 -9.3731433153152466e-02 - <_> - - 0 -1 437 -1.0072399862110615e-02 - - -3.8280281424522400e-01 3.4546609967947006e-02 - <_> - - 0 -1 438 -1.0316800326108932e-02 - - 1.2971499562263489e-01 -1.0244529694318771e-01 - <_> - - 0 -1 439 1.0713770054280758e-02 - - -7.0452913641929626e-02 2.3588269948959351e-01 - <_> - - 0 -1 440 2.6279760524630547e-02 - - -1.2427800148725510e-01 8.1192903220653534e-02 - <_> - - 0 -1 441 5.5222269147634506e-03 - - 6.1467431485652924e-02 -2.6426988840103149e-01 - <_> - - 0 -1 442 7.4345488101243973e-03 - - -8.8471248745918274e-02 1.4741429686546326e-01 - <_> - - 0 -1 443 -5.8172550052404404e-03 - - -3.1304401159286499e-01 4.3700240552425385e-02 - <_> - - 0 -1 444 -3.6513719707727432e-02 - - 3.2511061429977417e-01 -3.3389080315828323e-02 - <_> - - 0 -1 445 -4.6333879232406616e-02 - - 5.0428932905197144e-01 -2.5547180324792862e-02 - <_> - - 0 -1 446 1.5593919670209289e-04 - - -5.6827340275049210e-02 7.7660933136940002e-02 - <_> - - 0 -1 447 8.2058515399694443e-03 - - 3.2184999436140060e-02 -4.2038908600807190e-01 - <_> - - 0 -1 448 -4.4285461306571960e-02 - - -3.8966551423072815e-01 1.1912340298295021e-02 - <_> - - 0 -1 449 2.5834020227193832e-02 - - 4.1731890290975571e-02 -3.3182808756828308e-01 - <_> - - 0 -1 450 3.0991230159997940e-02 - - 1.7353070899844170e-02 -6.6546082496643066e-01 - <_> - - 0 -1 451 1.1223349720239639e-02 - - -6.4317956566810608e-02 2.1755810081958771e-01 - <_> - - 0 -1 452 -1.0795110138133168e-03 - - 6.0490209609270096e-02 -1.2580770254135132e-01 - <_> - - 0 -1 453 1.5915779769420624e-01 - - 3.2363180071115494e-02 -4.0798279643058777e-01 - <_> - - 0 -1 454 2.5649809686001390e-05 - - -7.4427329003810883e-02 8.9588217437267303e-02 - <_> - - 0 -1 455 2.3739310563541949e-05 - - -9.3008317053318024e-02 1.3343870639801025e-01 - <_> - - 0 -1 456 1.4618090353906155e-02 - - 1.9154099747538567e-02 -6.4152318239212036e-01 - <_> - - 0 -1 457 2.3532200604677200e-02 - - -6.0358211398124695e-02 2.1782620251178741e-01 - <_> - - 0 -1 458 1.5804159920662642e-03 - - -1.0721720010042191e-01 9.3893371522426605e-02 - <_> - - 0 -1 459 1.0986100137233734e-01 - - 6.0271378606557846e-02 -2.3471720516681671e-01 - <_> - - 0 -1 460 -9.9525712430477142e-03 - - -5.9630388021469116e-01 2.2674830630421638e-02 - <_> - - 0 -1 461 -2.7224500663578510e-03 - - -3.4362030029296875e-01 3.1717851758003235e-02 - <_> - - 0 -1 462 -3.2594770193099976e-02 - - 2.0315499603748322e-01 -7.1107327938079834e-02 - <_> - - 0 -1 463 3.1989789567887783e-03 - - 4.0066048502922058e-02 -3.1384450197219849e-01 - <_> - 141 - -1.4003620147705078e+00 - - <_> - - 0 -1 464 7.7838331460952759e-02 - - -2.8954571485519409e-01 3.3590829372406006e-01 - <_> - - 0 -1 465 -1.8956370651721954e-02 - - 1.3711029291152954e-01 -1.1915580183267593e-01 - <_> - - 0 -1 466 -2.9012229293584824e-02 - - 2.6803770661354065e-01 -2.8188169002532959e-01 - <_> - - 0 -1 467 9.8552741110324860e-04 - - -8.1531323492527008e-02 1.5281049907207489e-01 - <_> - - 0 -1 468 1.0328469943488017e-04 - - -2.4661579728126526e-01 1.7609159648418427e-01 - <_> - - 0 -1 469 -4.5671691186726093e-03 - - -4.8002299666404724e-01 6.5878503024578094e-02 - <_> - - 0 -1 470 2.3546300828456879e-02 - - -1.6119800508022308e-01 1.7704969644546509e-01 - <_> - - 0 -1 471 1.0163839906454086e-01 - - 2.4753339588642120e-02 -5.6535172462463379e-01 - <_> - - 0 -1 472 -1.1764950118958950e-02 - - 5.7793740183115005e-02 -3.6047691106796265e-01 - <_> - - 0 -1 473 2.9407900292426348e-03 - - -5.6864451617002487e-02 3.2670629024505615e-01 - <_> - - 0 -1 474 1.2036000378429890e-02 - - 5.0029050558805466e-02 -4.3046820163726807e-01 - <_> - - 0 -1 475 -6.2945342506282032e-05 - - 1.4414469897747040e-01 -1.2317640334367752e-01 - <_> - - 0 -1 476 -1.0069269686937332e-01 - - -4.2357030510902405e-01 4.9802679568529129e-02 - <_> - - 0 -1 477 1.4581729657948017e-02 - - 3.0177220702171326e-02 -6.6406387090682983e-01 - <_> - - 0 -1 478 -6.5432410337962210e-05 - - 1.2506960332393646e-01 -1.6383630037307739e-01 - <_> - - 0 -1 479 -9.9888555705547333e-03 - - -3.9762818813323975e-01 3.1741239130496979e-02 - <_> - - 0 -1 480 1.4515570364892483e-02 - - -6.7560233175754547e-02 3.2044398784637451e-01 - <_> - - 0 -1 481 4.4144429266452789e-03 - - -1.1010450124740601e-01 1.0620170086622238e-01 - <_> - - 0 -1 482 -1.9047720357775688e-02 - - 4.3591830134391785e-01 -5.6705459952354431e-02 - <_> - - 0 -1 483 1.1922540143132210e-02 - - 2.2601209580898285e-02 -3.4638860821723938e-01 - <_> - - 0 -1 484 3.1663820147514343e-02 - - -6.9747507572174072e-02 3.3460348844528198e-01 - <_> - - 0 -1 485 -4.0487637743353844e-03 - - -3.7775671482086182e-01 4.1244998574256897e-02 - <_> - - 0 -1 486 8.5836304351687431e-03 - - 4.0586728602647781e-02 -4.6596848964691162e-01 - <_> - - 0 -1 487 2.5460028648376465e-01 - - 2.9270550236105919e-02 -6.1891537904739380e-01 - <_> - - 0 -1 488 -2.7734090108424425e-03 - - 1.4600990712642670e-01 -1.2482350319623947e-01 - <_> - - 0 -1 489 -9.1764237731695175e-03 - - 2.4817289412021637e-01 -5.5748548358678818e-02 - <_> - - 0 -1 490 7.4874111451208591e-03 - - -1.0712330043315887e-01 1.6646879911422729e-01 - <_> - - 0 -1 491 5.0387311726808548e-02 - - -5.0489690154790878e-02 1.2678450345993042e-01 - <_> - - 0 -1 492 7.7575668692588806e-02 - - 1.2100619822740555e-01 -1.7718310654163361e-01 - <_> - - 0 -1 493 1.0453660041093826e-02 - - -3.0459070578217506e-02 2.4667170643806458e-01 - <_> - - 0 -1 494 -1.1940089985728264e-02 - - 1.4313019812107086e-01 -1.4006079733371735e-01 - <_> - - 0 -1 495 -2.1164349745959044e-03 - - 5.4504208266735077e-02 -9.2412821948528290e-02 - <_> - - 0 -1 496 4.8259901814162731e-03 - - -7.9584978520870209e-02 4.2220059037208557e-01 - <_> - - 0 -1 497 8.0155059695243835e-03 - - 1.9714679569005966e-02 -4.7956329584121704e-01 - <_> - - 0 -1 498 -7.2104120627045631e-03 - - -4.6714499592781067e-01 3.2550580799579620e-02 - <_> - - 0 -1 499 -3.1670030206441879e-02 - - 3.7553250789642334e-01 -1.0949539951980114e-02 - <_> - - 0 -1 500 6.3463337719440460e-03 - - -6.5203480422496796e-02 2.4626299738883972e-01 - <_> - - 0 -1 501 -3.6191360559314489e-03 - - -1.7093889415264130e-01 3.1114179641008377e-02 - <_> - - 0 -1 502 4.3581780046224594e-03 - - 3.6647301167249680e-02 -4.2374929785728455e-01 - <_> - - 0 -1 503 7.1306470781564713e-03 - - 3.6186341196298599e-02 -3.5813450813293457e-01 - <_> - - 0 -1 504 2.0273950695991516e-01 - - -4.6457529067993164e-02 3.2370680570602417e-01 - <_> - - 0 -1 505 -6.8010999821126461e-03 - - 1.7033079266548157e-01 -9.0368293225765228e-02 - <_> - - 0 -1 506 1.9894709810614586e-02 - - 3.1671468168497086e-02 -6.2594968080520630e-01 - <_> - - 0 -1 507 7.2822818765416741e-04 - - -7.0317156612873077e-02 9.6888661384582520e-02 - <_> - - 0 -1 508 3.6959239840507507e-01 - - 1.8628669902682304e-02 -7.7441781759262085e-01 - <_> - - 0 -1 509 1.0125909931957722e-02 - - -6.6889248788356781e-02 1.5247039496898651e-01 - <_> - - 0 -1 510 -1.2455949932336807e-01 - - 2.8963080048561096e-01 -4.8562891781330109e-02 - <_> - - 0 -1 511 2.5091960560530424e-03 - - -3.5043649375438690e-02 1.1125019937753677e-01 - <_> - - 0 -1 512 -2.8475138545036316e-01 - - 3.5674199461936951e-01 -4.2815480381250381e-02 - <_> - - 0 -1 513 -1.6454169526696205e-03 - - 1.9690880179405212e-01 -4.3971408158540726e-02 - <_> - - 0 -1 514 1.5759950038045645e-03 - - -1.5584190189838409e-01 1.0929670184850693e-01 - <_> - - 0 -1 515 6.7018110712524503e-05 - - -9.3722403049468994e-02 7.9448983073234558e-02 - <_> - - 0 -1 516 4.5426278375089169e-03 - - 3.8276840001344681e-02 -4.2568549513816833e-01 - <_> - - 0 -1 517 -5.8855221141129732e-04 - - 6.0305360704660416e-02 -1.4615760743618011e-01 - <_> - - 0 -1 518 -1.3436630368232727e-02 - - -2.3946529626846313e-01 6.3380107283592224e-02 - <_> - - 0 -1 519 -4.6623498201370239e-03 - - -4.1108340024948120e-02 3.8609981536865234e-02 - <_> - - 0 -1 520 1.9660739228129387e-02 - - -3.7687391042709351e-02 3.9592269062995911e-01 - <_> - - 0 -1 521 -8.2754753530025482e-03 - - 1.0256180167198181e-01 -4.2751040309667587e-02 - <_> - - 0 -1 522 -3.1780879944562912e-02 - - 3.6264151334762573e-01 -4.0603369474411011e-02 - <_> - - 0 -1 523 2.1684650331735611e-02 - - 2.2938560694456100e-02 -3.5124549269676208e-01 - <_> - - 0 -1 524 -1.5403999947011471e-02 - - 2.9343938827514648e-01 -4.8390299081802368e-02 - <_> - - 0 -1 525 -8.1902230158448219e-03 - - -3.2770949602127075e-01 4.1368559002876282e-02 - <_> - - 0 -1 526 -7.9587763175368309e-03 - - -5.8493942022323608e-01 1.9722139462828636e-02 - <_> - - 0 -1 527 2.2349890321493149e-02 - - 6.3248360529541969e-03 -6.7023582756519318e-02 - <_> - - 0 -1 528 1.8036609981209040e-03 - - -7.2210237383842468e-02 2.0629370212554932e-01 - <_> - - 0 -1 529 -2.0462639629840851e-02 - - -3.4459498524665833e-01 2.6240190491080284e-02 - <_> - - 0 -1 530 9.1937501565553248e-05 - - -1.1172589659690857e-01 1.1403390020132065e-01 - <_> - - 0 -1 531 -2.0170810166746378e-03 - - 5.8695279061794281e-02 -4.3408349156379700e-02 - <_> - - 0 -1 532 1.6941629583016038e-03 - - 6.6092863678932190e-02 -2.0478239655494690e-01 - <_> - - 0 -1 533 1.1209110170602798e-01 - - -3.9467259193770587e-04 -5.1060438156127930e-01 - <_> - - 0 -1 534 7.2903931140899658e-02 - - -3.9906460791826248e-02 3.3780521154403687e-01 - <_> - - 0 -1 535 -3.0249240808188915e-03 - - 1.1249010264873505e-01 -1.4893929660320282e-01 - <_> - - 0 -1 536 -1.7990779131650925e-02 - - -2.4895049631595612e-01 5.2208401262760162e-02 - <_> - - 0 -1 537 -2.8163999319076538e-02 - - 3.4624269604682922e-01 -4.6813420951366425e-02 - <_> - - 0 -1 538 1.4555190503597260e-01 - - -1.3727329671382904e-01 9.9273979663848877e-02 - <_> - - 0 -1 539 1.9026039540767670e-01 - - 1.7888879403471947e-02 -7.1033167839050293e-01 - <_> - - 0 -1 540 1.7087809741497040e-01 - - 2.1454460918903351e-02 -5.6766891479492188e-01 - <_> - - 0 -1 541 -4.9392290413379669e-02 - - 4.6601650118827820e-01 -2.8405459597706795e-02 - <_> - - 0 -1 542 3.9778267964720726e-03 - - -1.0497090220451355e-01 1.2071380019187927e-01 - <_> - - 0 -1 543 -1.8006129562854767e-01 - - 3.8309639692306519e-01 -1.4102069661021233e-02 - <_> - - 0 -1 544 3.3417791128158569e-03 - - -1.0533019900321960e-01 1.2955980002880096e-01 - <_> - - 0 -1 545 -2.8957970440387726e-02 - - -3.2808870077133179e-01 8.5954880341887474e-03 - <_> - - 0 -1 546 1.2989169918000698e-02 - - 4.0657699108123779e-02 -3.4399700164794922e-01 - <_> - - 0 -1 547 9.3189179897308350e-03 - - 2.0000560209155083e-02 -3.0933129787445068e-01 - <_> - - 0 -1 548 -5.2429470088100061e-05 - - 1.2686310708522797e-01 -9.5152713358402252e-02 - <_> - - 0 -1 549 5.6926601246232167e-05 - - -6.9777466356754303e-02 1.0061009973287582e-01 - <_> - - 0 -1 550 -6.6324290819466114e-03 - - -3.7384641170501709e-01 3.2925400882959366e-02 - <_> - - 0 -1 551 -1.8024910241365433e-03 - - 8.3397291600704193e-02 -7.6452530920505524e-02 - <_> - - 0 -1 552 6.5196603536605835e-02 - - 3.1775739043951035e-02 -3.6805319786071777e-01 - <_> - - 0 -1 553 -1.7499100416898727e-02 - - -2.5744670629501343e-01 2.0698830485343933e-02 - <_> - - 0 -1 554 8.7240803986787796e-03 - - -5.1745019853115082e-02 2.2648270428180695e-01 - <_> - - 0 -1 555 -2.4927619379013777e-03 - - 9.7427107393741608e-02 -8.4230922162532806e-02 - <_> - - 0 -1 556 -4.4600460678339005e-02 - - -7.6867169141769409e-01 1.4703400433063507e-02 - <_> - - 0 -1 557 3.2505799084901810e-02 - - 3.0005859211087227e-02 -4.9162200093269348e-01 - <_> - - 0 -1 558 -2.5649809686001390e-05 - - 1.1314590275287628e-01 -9.4056800007820129e-02 - <_> - - 0 -1 559 -2.3604110538144596e-05 - - 8.8364727795124054e-02 -6.8058848381042480e-02 - <_> - - 0 -1 560 2.6216499463771470e-05 - - -9.1394290328025818e-02 1.2277369946241379e-01 - <_> - - 0 -1 561 -2.9017529450356960e-03 - - -1.5153430402278900e-01 3.0693180859088898e-02 - <_> - - 0 -1 562 6.8409377709031105e-03 - - 2.8549060225486755e-02 -3.7030708789825439e-01 - <_> - - 0 -1 563 1.2914350628852844e-01 - - 5.2656780928373337e-02 -2.0276160538196564e-01 - <_> - - 0 -1 564 -1.1380250006914139e-01 - - 2.2251050174236298e-01 -5.1625229418277740e-02 - <_> - - 0 -1 565 8.2800639793276787e-03 - - -6.5930999815464020e-02 6.0252968221902847e-02 - <_> - - 0 -1 566 -5.3036700934171677e-02 - - -4.6652480959892273e-01 2.7602789923548698e-02 - <_> - - 0 -1 567 1.1862640082836151e-01 - - -3.3534578979015350e-02 3.7986829876899719e-01 - <_> - - 0 -1 568 3.0761719681322575e-03 - - -1.2260209769010544e-01 1.1537180095911026e-01 - <_> - - 0 -1 569 -1.7530350305605680e-04 - - 8.5038073360919952e-02 -9.2355959117412567e-02 - <_> - - 0 -1 570 6.6797256469726562e-02 - - 2.7040729299187660e-02 -4.5982721447944641e-01 - <_> - - 0 -1 571 2.3379459977149963e-02 - - -6.2042251229286194e-02 1.7584429681301117e-01 - <_> - - 0 -1 572 1.0949910210911185e-04 - - -1.2381599843502045e-01 9.6813596785068512e-02 - <_> - - 0 -1 573 3.3863238990306854e-02 - - 1.3947179540991783e-02 -1.8364569544792175e-01 - <_> - - 0 -1 574 -3.4967120736837387e-02 - - -8.0809932947158813e-01 1.4799409545958042e-02 - <_> - - 0 -1 575 4.5521798729896545e-01 - - 1.3605389744043350e-02 -6.0478818416595459e-01 - <_> - - 0 -1 576 1.6087630763649940e-02 - - 5.8055009692907333e-02 -1.9826529920101166e-01 - <_> - - 0 -1 577 1.7235469818115234e-01 - - 7.4058459140360355e-03 -5.1899272203445435e-01 - <_> - - 0 -1 578 1.5957270516082644e-03 - - -4.2893920093774796e-02 2.6449468731880188e-01 - <_> - - 0 -1 579 -7.6875099912285805e-03 - - -2.7318629622459412e-01 1.3109279796481133e-02 - <_> - - 0 -1 580 -1.5951599925756454e-03 - - 2.0967930555343628e-01 -4.9833789467811584e-02 - <_> - - 0 -1 581 1.0349789634346962e-02 - - 7.2593181394040585e-03 -4.4166409969329834e-01 - <_> - - 0 -1 582 6.9909151643514633e-03 - - 2.4994520470499992e-02 -4.0138208866119385e-01 - <_> - - 0 -1 583 4.7854268923401833e-03 - - 2.3502610623836517e-02 -9.9097803235054016e-02 - <_> - - 0 -1 584 -4.3787118047475815e-03 - - -3.6183780431747437e-01 2.6457339525222778e-02 - <_> - - 0 -1 585 3.1168339774012566e-03 - - -4.5762591063976288e-02 1.1177150160074234e-01 - <_> - - 0 -1 586 -1.1843509972095490e-02 - - 2.7435851097106934e-01 -3.5070378333330154e-02 - <_> - - 0 -1 587 -1.5275570331141353e-04 - - 8.4554448723793030e-02 -7.5316190719604492e-02 - <_> - - 0 -1 588 -8.6214318871498108e-02 - - 1.3820220530033112e-01 -7.1106247603893280e-02 - <_> - - 0 -1 589 3.6304339766502380e-02 - - -3.8147788494825363e-02 1.1627230048179626e-01 - <_> - - 0 -1 590 1.4807139523327351e-03 - - -1.0411299765110016e-01 1.1228249967098236e-01 - <_> - - 0 -1 591 7.3545570485293865e-03 - - 3.3374588936567307e-02 -3.5831621289253235e-01 - <_> - - 0 -1 592 3.4468159079551697e-02 - - -5.4936081171035767e-02 2.0390030741691589e-01 - <_> - - 0 -1 593 -5.9239879250526428e-02 - - 4.3228080868721008e-01 -2.4707719683647156e-02 - <_> - - 0 -1 594 2.4270419776439667e-01 - - 2.2037450224161148e-02 -5.4193401336669922e-01 - <_> - - 0 -1 595 -1.2284790165722370e-02 - - -3.7384429574012756e-01 9.2992689460515976e-03 - <_> - - 0 -1 596 -1.1619590222835541e-02 - - -5.8757847547531128e-01 1.7577210441231728e-02 - <_> - - 0 -1 597 2.1228510886430740e-02 - - 5.6798839941620827e-03 -3.1449121236801147e-01 - <_> - - 0 -1 598 1.5732479514554143e-03 - - -7.9905793070793152e-02 1.3976779580116272e-01 - <_> - - 0 -1 599 6.1120092868804932e-01 - - 1.3321190141141415e-02 -5.5098742246627808e-01 - <_> - - 0 -1 600 -2.0905339624732733e-04 - - 1.0304620116949081e-01 -9.4890147447586060e-02 - <_> - - 0 -1 601 7.5772361014969647e-05 - - -8.5623927414417267e-02 8.7449163198471069e-02 - <_> - - 0 -1 602 -4.8126399517059326e-02 - - 2.1198000013828278e-01 -4.7644909471273422e-02 - <_> - - 0 -1 603 -8.6747817695140839e-03 - - -4.2384940385818481e-01 2.1367609500885010e-02 - <_> - - 0 -1 604 8.1669818609952927e-03 - - -5.2588619291782379e-02 2.0056459307670593e-01 - <_> - 111 - -1.4018720388412476e+00 - - <_> - - 0 -1 605 8.5009383037686348e-03 - - -4.2771288752555847e-01 2.8500860929489136e-01 - <_> - - 0 -1 606 -3.6675720475614071e-03 - - 1.8305620551109314e-01 -4.3906581401824951e-01 - <_> - - 0 -1 607 1.5451109968125820e-02 - - -2.5173941254615784e-01 1.8866589665412903e-01 - <_> - - 0 -1 608 3.0046209692955017e-01 - - -5.4038830101490021e-02 4.8624160885810852e-01 - <_> - - 0 -1 609 3.6772501468658447e-01 - - 2.5102959945797920e-02 -9.5871881103515625e+02 - <_> - - 0 -1 610 -4.0474338456988335e-03 - - 2.1335700154304504e-01 -9.7891986370086670e-02 - <_> - - 0 -1 611 -5.3314119577407837e-02 - - -6.1614441871643066e-01 5.5987618863582611e-02 - <_> - - 0 -1 612 -2.7916610240936279e-01 - - 4.0783798694610596e-01 -1.1853860318660736e-01 - <_> - - 0 -1 613 -3.6125730257481337e-03 - - 2.3250600695610046e-01 -1.5664309263229370e-01 - <_> - - 0 -1 614 -2.6726289652287960e-03 - - 1.7571009695529938e-01 -1.5493810176849365e-01 - <_> - - 0 -1 615 -1.1829179711639881e-02 - - -6.6747820377349854e-01 4.5493591576814651e-02 - <_> - - 0 -1 616 4.4169160537421703e-03 - - -2.2939409315586090e-01 1.0542789846658707e-01 - <_> - - 0 -1 617 -1.0357840359210968e-01 - - 3.4294271469116211e-01 -6.9909207522869110e-02 - <_> - - 0 -1 618 3.4325949382036924e-03 - - -1.8468430638313293e-01 1.6796229779720306e-01 - <_> - - 0 -1 619 -2.2001469507813454e-02 - - -4.4479998946189880e-01 4.7688841819763184e-02 - <_> - - 0 -1 620 3.4049700479954481e-03 - - -6.1201151460409164e-02 1.3493420183658600e-01 - <_> - - 0 -1 621 -1.6375419497489929e-01 - - -4.9726039171218872e-01 4.3114218860864639e-02 - <_> - - 0 -1 622 4.2683139443397522e-02 - - 1.9057090580463409e-01 -4.5245770364999771e-02 - <_> - - 0 -1 623 -5.8941352181136608e-03 - - 1.2556779384613037e-01 -1.5506540238857269e-01 - <_> - - 0 -1 624 1.6873490065336227e-02 - - -6.6119313240051270e-02 3.4744951128959656e-01 - <_> - - 0 -1 625 4.3099578469991684e-02 - - 5.7583600282669067e-02 -3.3952900767326355e-01 - <_> - - 0 -1 626 -1.9477229565382004e-02 - - -8.0392777919769287e-01 2.4795620702207088e-03 - <_> - - 0 -1 627 -4.6851670049363747e-05 - - 1.1619050055742264e-01 -1.7257040739059448e-01 - <_> - - 0 -1 628 -6.1807930469512939e-02 - - 4.0565249323844910e-01 -5.5282030254602432e-02 - <_> - - 0 -1 629 -3.9889659732580185e-02 - - -2.8519150614738464e-01 7.1040973067283630e-02 - <_> - - 0 -1 630 5.1790241152048111e-02 - - 1.0264960117638111e-02 -3.3244749903678894e-01 - <_> - - 0 -1 631 5.5987639352679253e-03 - - -2.3741720616817474e-01 7.6081469655036926e-02 - <_> - - 0 -1 632 3.7294030189514160e-01 - - -1.4457600191235542e-02 2.7664330601692200e-01 - <_> - - 0 -1 633 2.8402900695800781e-01 - - -6.6569052636623383e-02 3.0555289983749390e-01 - <_> - - 0 -1 634 -3.3610709011554718e-02 - - 3.7678858637809753e-01 -3.8632158190011978e-02 - <_> - - 0 -1 635 4.1422769427299500e-03 - - -1.1140339821577072e-01 1.6079390048980713e-01 - <_> - - 0 -1 636 -7.8478157520294189e-02 - - 5.2872437238693237e-01 -3.0871439725160599e-02 - <_> - - 0 -1 637 7.3427408933639526e-03 - - -8.8620431721210480e-02 1.7578239738941193e-01 - <_> - - 0 -1 638 3.6650819238275290e-03 - - -1.4013199508190155e-01 8.8994570076465607e-02 - <_> - - 0 -1 639 2.4947609752416611e-02 - - -5.7245790958404541e-02 2.9098680615425110e-01 - <_> - - 0 -1 640 -9.5206424593925476e-03 - - -5.0748902559280396e-01 2.9920989647507668e-02 - <_> - - 0 -1 641 -5.2697858773171902e-03 - - -3.3674290776252747e-01 4.2487990111112595e-02 - <_> - - 0 -1 642 -5.2029830403625965e-03 - - -3.8729768991470337e-01 3.9070878177881241e-02 - <_> - - 0 -1 643 1.5543039888143539e-02 - - -8.1509388983249664e-02 1.8083870410919189e-01 - <_> - - 0 -1 644 -5.2419401705265045e-02 - - -5.5317038297653198e-01 1.8499359488487244e-02 - <_> - - 0 -1 645 -1.1110330000519753e-02 - - -7.0344591140747070e-01 1.8182870000600815e-02 - <_> - - 0 -1 646 2.4250999558717012e-03 - - -4.5725211501121521e-02 5.1940329372882843e-02 - <_> - - 0 -1 647 -8.0726835876703262e-03 - - -2.2301289439201355e-01 5.9184651821851730e-02 - <_> - - 0 -1 648 8.3049550652503967e-02 - - -7.7934071421623230e-02 3.9087869226932526e-02 - <_> - - 0 -1 649 -8.3224788308143616e-02 - - 2.9764831066131592e-01 -5.5352561175823212e-02 - <_> - - 0 -1 650 -2.8794119134545326e-02 - - 1.7857789993286133e-01 -2.2039219737052917e-02 - <_> - - 0 -1 651 5.6489530950784683e-02 - - -6.9890931248664856e-02 2.1076519787311554e-01 - <_> - - 0 -1 652 -6.1607591807842255e-02 - - -6.7098802328109741e-01 2.5408720597624779e-02 - <_> - - 0 -1 653 4.0430251508951187e-02 - - -4.3006941676139832e-02 3.6125731468200684e-01 - <_> - - 0 -1 654 8.1663697957992554e-02 - - 3.7107840180397034e-02 -4.0147781372070312e-01 - <_> - - 0 -1 655 2.0060269162058830e-02 - - 2.8394110500812531e-02 -4.5096978545188904e-01 - <_> - - 0 -1 656 4.4809231162071228e-01 - - -2.8863489627838135e-02 5.4432421922683716e-01 - <_> - - 0 -1 657 9.4997808337211609e-03 - - -6.3185006380081177e-02 2.0143640041351318e-01 - <_> - - 0 -1 658 -2.3604110538144596e-05 - - 8.5501417517662048e-02 -6.2585182487964630e-02 - <_> - - 0 -1 659 -8.9380017016083002e-05 - - 1.2780819833278656e-01 -1.0212580114603043e-01 - <_> - - 0 -1 660 -3.0439419788308442e-04 - - 1.3623830676078796e-01 -9.6396081149578094e-02 - <_> - - 0 -1 661 -7.1386282797902822e-05 - - 1.2020439654588699e-01 -1.1520940065383911e-01 - <_> - - 0 -1 662 -7.4278670363128185e-03 - - -1.1765129864215851e-01 2.5646839290857315e-02 - <_> - - 0 -1 663 9.1655907453969121e-05 - - -1.0665830224752426e-01 1.1622580140829086e-01 - <_> - - 0 -1 664 -8.8285116362385452e-05 - - 1.0202009975910187e-01 -9.4773791730403900e-02 - <_> - - 0 -1 665 1.7160010337829590e-01 - - -9.6324786543846130e-02 1.3936719298362732e-01 - <_> - - 0 -1 666 6.1614410951733589e-03 - - -7.8339770436286926e-02 1.9864350557327271e-01 - <_> - - 0 -1 667 1.0488010011613369e-02 - - 2.2472979500889778e-02 -5.8889657258987427e-01 - <_> - - 0 -1 668 4.2389098554849625e-02 - - 3.2426279503852129e-03 -3.8179519772529602e-01 - <_> - - 0 -1 669 1.8942179158329964e-02 - - -3.8592588156461716e-02 3.4485790133476257e-01 - <_> - - 0 -1 670 -1.8505830084905028e-03 - - 6.2117058783769608e-02 -1.4222989976406097e-01 - <_> - - 0 -1 671 3.4762551076710224e-03 - - -6.3081473112106323e-02 2.0072069764137268e-01 - <_> - - 0 -1 672 8.2640787586569786e-03 - - -4.6010430902242661e-02 1.1308149993419647e-01 - <_> - - 0 -1 673 -8.4993377327919006e-02 - - 2.1542909741401672e-01 -6.5986298024654388e-02 - <_> - - 0 -1 674 -2.3180700838565826e-02 - - -3.4274458885192871e-01 2.3565940558910370e-02 - <_> - - 0 -1 675 1.7291529104113579e-02 - - 3.1432639807462692e-02 -3.9180231094360352e-01 - <_> - - 0 -1 676 3.1471049878746271e-03 - - -1.2125449627637863e-01 9.5088116824626923e-02 - <_> - - 0 -1 677 -9.5794200897216797e-02 - - 3.7472879886627197e-01 -4.2680621147155762e-02 - <_> - - 0 -1 678 -2.6557369157671928e-02 - - -4.7922921180725098e-01 2.6146400719881058e-02 - <_> - - 0 -1 679 -8.1971433246508241e-05 - - 1.0347779840230942e-01 -1.1757999658584595e-01 - <_> - - 0 -1 680 -6.4540100283920765e-03 - - -5.2700281143188477e-01 3.4957159310579300e-02 - <_> - - 0 -1 681 -3.3087339252233505e-02 - - -3.9793440699577332e-01 2.5454800575971603e-02 - <_> - - 0 -1 682 7.0128366351127625e-02 - - -2.9464110732078552e-02 4.1201031208038330e-01 - <_> - - 0 -1 683 -9.6940301591530442e-04 - - 1.2894269824028015e-01 -8.4787413477897644e-02 - <_> - - 0 -1 684 1.8660759553313255e-02 - - -6.2266499735414982e-03 3.6698341369628906e-01 - <_> - - 0 -1 685 1.3513430021703243e-02 - - 1.7080739140510559e-02 -7.1084249019622803e-01 - <_> - - 0 -1 686 -7.1627681609243155e-04 - - 9.5187976956367493e-02 -4.6339459717273712e-02 - <_> - - 0 -1 687 5.4968800395727158e-03 - - 1.9017050042748451e-02 -5.6606787443161011e-01 - <_> - - 0 -1 688 -3.3988431096076965e-02 - - 2.0532059669494629e-01 -5.3730130195617676e-02 - <_> - - 0 -1 689 -9.4949705526232719e-03 - - -4.7799149155616760e-01 2.6109879836440086e-02 - <_> - - 0 -1 690 8.8990468066185713e-04 - - -5.3878299891948700e-02 1.5298619866371155e-01 - <_> - - 0 -1 691 6.1590311815962195e-05 - - -1.2033499777317047e-01 8.7442100048065186e-02 - <_> - - 0 -1 692 -5.8384079486131668e-02 - - 1.9574840366840363e-01 -6.6920563578605652e-02 - <_> - - 0 -1 693 1.6286900499835610e-03 - - -1.0631299763917923e-01 1.2674750387668610e-01 - <_> - - 0 -1 694 7.9788036644458771e-02 - - 1.2167329899966717e-02 -5.1673012971878052e-01 - <_> - - 0 -1 695 5.3892009891569614e-03 - - -1.2911440432071686e-01 8.8783398270606995e-02 - <_> - - 0 -1 696 2.5091820955276489e-01 - - 3.2179851084947586e-02 -3.7686109542846680e-01 - <_> - - 0 -1 697 1.7209710553288460e-02 - - 1.2379400432109833e-02 -7.8753459453582764e-01 - <_> - - 0 -1 698 1.8916660547256470e-01 - - -3.3356759697198868e-02 1.8951129913330078e-01 - <_> - - 0 -1 699 -4.8115151003003120e-03 - - 2.0501169562339783e-01 -5.3161811083555222e-02 - <_> - - 0 -1 700 2.0269770175218582e-02 - - -2.8937749564647675e-02 2.1850499510765076e-01 - <_> - - 0 -1 701 -7.8484037658199668e-05 - - 5.7575121521949768e-02 -1.8328189849853516e-01 - <_> - - 0 -1 702 2.2350680083036423e-03 - - -3.2419610768556595e-02 8.6609072983264923e-02 - <_> - - 0 -1 703 -1.6989709809422493e-02 - - 2.8270080685615540e-01 -3.8365218788385391e-02 - <_> - - 0 -1 704 -6.4167408272624016e-03 - - 1.3134069740772247e-01 -4.3611731380224228e-02 - <_> - - 0 -1 705 7.4191158637404442e-03 - - -7.0633463561534882e-02 1.7600670456886292e-01 - <_> - - 0 -1 706 6.3850679434835911e-03 - - 3.2175671309232712e-02 -3.9056539535522461e-01 - <_> - - 0 -1 707 -1.2516930699348450e-01 - - -8.1828737258911133e-01 1.0883989743888378e-02 - <_> - - 0 -1 708 -4.4671529904007912e-03 - - -5.0346201658248901e-01 4.6763787977397442e-03 - <_> - - 0 -1 709 -7.7330769272521138e-05 - - 1.1231110244989395e-01 -9.6118189394474030e-02 - <_> - - 0 -1 710 4.8749379813671112e-02 - - 1.5394289977848530e-02 -1.3794970512390137e-01 - <_> - - 0 -1 711 -1.5057959593832493e-02 - - 9.6794217824935913e-02 -1.0408320277929306e-01 - <_> - - 0 -1 712 -1.2867139652371407e-02 - - -5.5943179130554199e-01 8.0226631835103035e-03 - <_> - - 0 -1 713 4.0156361460685730e-01 - - 1.4450309798121452e-02 -6.9868141412734985e-01 - <_> - - 0 -1 714 1.4811520231887698e-03 - - -6.0255978256464005e-02 6.1738591641187668e-02 - <_> - - 0 -1 715 -3.6016408354043961e-02 - - -7.6666152477264404e-01 1.4014800079166889e-02 - <_> - 157 - -1.4323190450668335e+00 - - <_> - - 0 -1 716 9.1756142675876617e-02 - - -2.3866780102252960e-01 4.1412800550460815e-01 - <_> - - 0 -1 717 -6.3968323171138763e-02 - - 2.3543690145015717e-01 -2.2721849381923676e-01 - <_> - - 0 -1 718 -1.0061279870569706e-02 - - 1.9033129513263702e-01 -2.6683130860328674e-01 - <_> - - 0 -1 719 -1.3561559841036797e-02 - - 1.4927579462528229e-01 -1.8083690106868744e-01 - <_> - - 0 -1 720 -1.5076830051839352e-02 - - 2.0609399676322937e-01 -1.8534150719642639e-01 - <_> - - 0 -1 721 -6.1514219269156456e-03 - - -5.2573877573013306e-01 1.7555620521306992e-02 - <_> - - 0 -1 722 5.2476930432021618e-04 - - -1.4588220417499542e-01 1.5166099369525909e-01 - <_> - - 0 -1 723 2.4739510845392942e-03 - - -1.8805119395256042e-01 9.5694698393344879e-02 - <_> - - 0 -1 724 5.1760678179562092e-03 - - 5.2032090723514557e-02 -4.9382910132408142e-01 - <_> - - 0 -1 725 7.1702478453516960e-03 - - -9.4142921268939972e-02 1.1217010021209717e-01 - <_> - - 0 -1 726 -2.0057760179042816e-02 - - -5.9458369016647339e-01 3.6551840603351593e-02 - <_> - - 0 -1 727 -2.0991469919681549e-01 - - 2.6298180222511292e-01 -1.0240700095891953e-01 - <_> - - 0 -1 728 -4.2166719213128090e-03 - - 1.3226920366287231e-01 -1.5037320554256439e-01 - <_> - - 0 -1 729 -1.4944000169634819e-02 - - 6.5007939934730530e-02 -3.1482189893722534e-02 - <_> - - 0 -1 730 9.1618977487087250e-02 - - 1.1459749937057495e-01 -2.1580819785594940e-01 - <_> - - 0 -1 731 1.3998460490256548e-03 - - -1.5135070681571960e-01 1.3515089452266693e-01 - <_> - - 0 -1 732 6.2787801027297974e-02 - - -1.0663919895887375e-01 2.0777790248394012e-01 - <_> - - 0 -1 733 1.6034470498561859e-01 - - -6.7444883286952972e-02 3.0661910772323608e-01 - <_> - - 0 -1 734 -1.0080800391733646e-02 - - 2.2366729378700256e-01 -8.8719040155410767e-02 - <_> - - 0 -1 735 2.1805059164762497e-02 - - -5.5670421570539474e-02 1.3599489629268646e-01 - <_> - - 0 -1 736 -6.2400531023740768e-02 - - -4.4345939159393311e-01 3.1536590307950974e-02 - <_> - - 0 -1 737 -3.3827558159828186e-02 - - 2.5352260470390320e-01 -1.4237060211598873e-02 - <_> - - 0 -1 738 2.4944260716438293e-02 - - -5.6528169661760330e-02 2.6071038842201233e-01 - <_> - - 0 -1 739 2.8674729168415070e-02 - - -2.9934270307421684e-02 3.9638450741767883e-01 - <_> - - 0 -1 740 9.0782970190048218e-02 - - 4.7861438244581223e-02 -3.9084589481353760e-01 - <_> - - 0 -1 741 -9.8480619490146637e-03 - - -5.3130447864532471e-01 1.5104659833014011e-02 - <_> - - 0 -1 742 7.7331489883363247e-03 - - 2.4212060496211052e-02 -5.6011068820953369e-01 - <_> - - 0 -1 743 9.7148418426513672e-03 - - -7.7339023351669312e-02 2.0035690069198608e-01 - <_> - - 0 -1 744 -3.8716041017323732e-03 - - 9.3583829700946808e-02 -1.6308769583702087e-01 - <_> - - 0 -1 745 4.5740120112895966e-03 - - -7.4100360274314880e-02 1.8673260509967804e-01 - <_> - - 0 -1 746 3.5367589443922043e-03 - - -1.3378569483757019e-01 1.3118870556354523e-01 - <_> - - 0 -1 747 6.7387451417744160e-03 - - 1.9104549661278725e-02 -2.6714089512825012e-01 - <_> - - 0 -1 748 9.2638395726680756e-03 - - 3.8944028317928314e-02 -3.8115268945693970e-01 - <_> - - 0 -1 749 1.8035650253295898e-02 - - -5.6313838809728622e-02 2.6199018955230713e-01 - <_> - - 0 -1 750 6.1390590853989124e-03 - - 6.6768251359462738e-02 -2.4741740524768829e-01 - <_> - - 0 -1 751 -2.0742289721965790e-02 - - 1.5816679596900940e-01 -3.7055108696222305e-02 - <_> - - 0 -1 752 7.1745091117918491e-03 - - -6.2723852694034576e-02 2.4000909924507141e-01 - <_> - - 0 -1 753 -1.3980129733681679e-02 - - -2.5686889886856079e-01 2.4408269673585892e-02 - <_> - - 0 -1 754 5.0162561237812042e-03 - - 3.4693509340286255e-02 -3.6940971016883850e-01 - <_> - - 0 -1 755 6.2731141224503517e-03 - - -9.3136273324489594e-02 8.9128710329532623e-02 - <_> - - 0 -1 756 -6.1432798393070698e-03 - - -3.8624298572540283e-01 3.2790008932352066e-02 - <_> - - 0 -1 757 -5.4340949282050133e-03 - - 1.2529590725898743e-01 -7.3308877646923065e-02 - <_> - - 0 -1 758 2.6476379483938217e-02 - - 1.9692519679665565e-02 -6.5207397937774658e-01 - <_> - - 0 -1 759 5.3198561072349548e-02 - - -3.8907509297132492e-02 3.4459230303764343e-01 - <_> - - 0 -1 760 6.8159057991579175e-04 - - -1.4296619594097137e-01 1.1051479727029800e-01 - <_> - - 0 -1 761 2.7321189641952515e-02 - - -2.3013580590486526e-02 3.8668289780616760e-01 - <_> - - 0 -1 762 1.6437519341707230e-02 - - -5.0356149673461914e-02 2.5431129336357117e-01 - <_> - - 0 -1 763 -1.1353069916367531e-02 - - -3.8533338904380798e-01 2.3351570591330528e-02 - <_> - - 0 -1 764 -5.6346738710999489e-03 - - 1.8512620031833649e-01 -7.8567862510681152e-02 - <_> - - 0 -1 765 6.9470210000872612e-03 - - 3.6982610821723938e-02 -1.7629860341548920e-01 - <_> - - 0 -1 766 -1.6561519354581833e-02 - - -4.9848580360412598e-01 2.8883419930934906e-02 - <_> - - 0 -1 767 -7.6849356293678284e-02 - - -3.1578719615936279e-01 4.3519400060176849e-02 - <_> - - 0 -1 768 -1.5181129798293114e-02 - - 2.3423460125923157e-01 -6.2591478228569031e-02 - <_> - - 0 -1 769 1.9489860162138939e-02 - - 9.9025378003716469e-03 -3.8761860132217407e-01 - <_> - - 0 -1 770 1.8050599843263626e-02 - - -4.3930709362030029e-02 3.3341428637504578e-01 - <_> - - 0 -1 771 -2.9345480725169182e-03 - - 8.0954536795616150e-02 -4.9914769828319550e-02 - <_> - - 0 -1 772 2.6363410055637360e-02 - - 2.9126759618520737e-02 -5.0750941038131714e-01 - <_> - - 0 -1 773 2.4248650297522545e-03 - - 3.4961428493261337e-02 -2.8733271360397339e-01 - <_> - - 0 -1 774 4.9459808506071568e-03 - - 2.3161210119724274e-02 -5.0714761018753052e-01 - <_> - - 0 -1 775 -1.5279249846935272e-01 - - -3.2881578803062439e-01 2.5182789191603661e-02 - <_> - - 0 -1 776 -1.4403219392988831e-04 - - 7.5519256293773651e-02 -1.8179009854793549e-01 - <_> - - 0 -1 777 2.8954431414604187e-01 - - 1.1204889975488186e-02 -3.8397979736328125e-01 - <_> - - 0 -1 778 -4.8776458948850632e-02 - - -3.8399431109428406e-01 3.3249679952859879e-02 - <_> - - 0 -1 779 -3.2626438885927200e-02 - - 3.1781470775604248e-01 -4.7008451074361801e-02 - <_> - - 0 -1 780 7.5620561838150024e-03 - - -1.6391299664974213e-01 8.8394619524478912e-02 - <_> - - 0 -1 781 5.5116498842835426e-03 - - -4.5366939157247543e-02 1.0359580069780350e-01 - <_> - - 0 -1 782 7.8960359096527100e-03 - - 2.5835210457444191e-02 -4.1176858544349670e-01 - <_> - - 0 -1 783 2.5515830144286156e-02 - - 2.3357940837740898e-02 -1.0157670080661774e-01 - <_> - - 0 -1 784 2.7663391083478928e-03 - - -8.3083488047122955e-02 1.4612929522991180e-01 - <_> - - 0 -1 785 -3.0674580484628677e-03 - - 9.2135928571224213e-02 -5.7146791368722916e-02 - <_> - - 0 -1 786 9.2945564538240433e-03 - - 3.8736391812562943e-02 -3.5326778888702393e-01 - <_> - - 0 -1 787 6.7423127591609955e-02 - - -7.5241766870021820e-02 1.7596650123596191e-01 - <_> - - 0 -1 788 -4.4064600951969624e-03 - - 9.7793661057949066e-02 -1.5189309418201447e-01 - <_> - - 0 -1 789 -4.9828600138425827e-02 - - -4.5790219306945801e-01 6.8976799957454205e-03 - <_> - - 0 -1 790 3.6543350666761398e-02 - - 5.1439449191093445e-02 -2.6903149485588074e-01 - <_> - - 0 -1 791 -6.4155302941799164e-02 - - -3.7688180804252625e-02 3.5685088485479355e-02 - <_> - - 0 -1 792 1.6559410141780972e-03 - - -7.8454039990901947e-02 1.4457669854164124e-01 - <_> - - 0 -1 793 -4.3586108833551407e-02 - - -6.8510597944259644e-01 1.3048769906163216e-02 - <_> - - 0 -1 794 -2.2230669856071472e-01 - - -5.7761538028717041e-01 1.7124939709901810e-02 - <_> - - 0 -1 795 2.4673160165548325e-02 - - 1.1898159980773926e-02 -4.0522110462188721e-01 - <_> - - 0 -1 796 -1.1929229833185673e-02 - - 3.3518779277801514e-01 -3.3670309931039810e-02 - <_> - - 0 -1 797 1.2319719826336950e-04 - - -8.5718862712383270e-02 8.3713091909885406e-02 - <_> - - 0 -1 798 -9.3408823013305664e-03 - - -2.8543150424957275e-01 4.0737889707088470e-02 - <_> - - 0 -1 799 -7.4626510031521320e-03 - - 1.1191319674253464e-01 -3.4012328833341599e-02 - <_> - - 0 -1 800 -1.3723709620535374e-02 - - 2.4986229836940765e-01 -4.5033760368824005e-02 - <_> - - 0 -1 801 1.5219870209693909e-01 - - -9.1021090745925903e-02 9.0961046516895294e-02 - <_> - - 0 -1 802 7.7259603131096810e-05 - - -1.0590860247612000e-01 1.1055749654769897e-01 - <_> - - 0 -1 803 4.9416758120059967e-03 - - 2.4189069867134094e-02 -3.0954331159591675e-01 - <_> - - 0 -1 804 -8.4537155926227570e-03 - - -4.9883198738098145e-01 1.9790159538388252e-02 - <_> - - 0 -1 805 -1.5807019372005016e-04 - - 8.1088282167911530e-02 -9.6961513161659241e-02 - <_> - - 0 -1 806 -3.7125058472156525e-02 - - -6.6581451892852783e-01 1.4882969669997692e-02 - <_> - - 0 -1 807 2.6830319315195084e-02 - - -1.4309049583971500e-02 1.8943400681018829e-01 - <_> - - 0 -1 808 -5.0245620310306549e-02 - - 2.9321768879890442e-01 -3.4267731010913849e-02 - <_> - - 0 -1 809 -6.9950302131474018e-03 - - -3.6339738965034485e-01 2.4558270350098610e-02 - <_> - - 0 -1 810 6.5877571702003479e-02 - - -6.9623842835426331e-02 1.6893179714679718e-01 - <_> - - 0 -1 811 -1.3468010351061821e-02 - - -5.7445019483566284e-01 7.6498151756823063e-03 - <_> - - 0 -1 812 6.5795979462563992e-03 - - 4.6871460974216461e-02 -2.6042988896369934e-01 - <_> - - 0 -1 813 8.3702273666858673e-02 - - -2.6280758902430534e-03 9.5396530628204346e-01 - <_> - - 0 -1 814 -2.6914669200778008e-02 - - 4.3413200974464417e-01 -2.5187220424413681e-02 - <_> - - 0 -1 815 6.8170771002769470e-02 - - 1.1355379596352577e-02 -1.9769650697708130e-01 - <_> - - 0 -1 816 -1.8386699259281158e-02 - - -3.0161228775978088e-01 4.0068160742521286e-02 - <_> - - 0 -1 817 -4.8888311721384525e-03 - - -4.7499518841505051e-02 2.7949759736657143e-02 - <_> - - 0 -1 818 1.2031979858875275e-02 - - -4.1758809238672256e-02 2.5678071379661560e-01 - <_> - - 0 -1 819 4.5282568782567978e-02 - - -1.2090729549527168e-02 5.9624272584915161e-01 - <_> - - 0 -1 820 1.6428649425506592e-02 - - 3.1723149120807648e-02 -3.4151419997215271e-01 - <_> - - 0 -1 821 1.5807289630174637e-02 - - -8.7692633271217346e-02 7.3399387300014496e-02 - <_> - - 0 -1 822 7.3865547776222229e-02 - - 1.7566639930009842e-02 -5.8591890335083008e-01 - <_> - - 0 -1 823 8.1742003560066223e-02 - - -1.4694429934024811e-02 3.8172268867492676e-01 - <_> - - 0 -1 824 1.6201290418393910e-04 - - -1.0157629847526550e-01 1.0071060061454773e-01 - <_> - - 0 -1 825 9.6514606848359108e-03 - - -3.9196711033582687e-02 1.5712510049343109e-01 - <_> - - 0 -1 826 1.1394619941711426e-01 - - 2.1624019369482994e-02 -4.9949270486831665e-01 - <_> - - 0 -1 827 -3.1548771075904369e-03 - - 5.0318129360675812e-02 -4.3619360774755478e-02 - <_> - - 0 -1 828 -4.4351350516080856e-02 - - 3.0843031406402588e-01 -3.2389428466558456e-02 - <_> - - 0 -1 829 5.9337329119443893e-02 - - 8.8634816929697990e-03 -4.3402770161628723e-01 - <_> - - 0 -1 830 8.4961997345089912e-03 - - -1.6435340046882629e-01 7.2020038962364197e-02 - <_> - - 0 -1 831 1.2611909769475460e-02 - - -5.4733909666538239e-02 2.6740849018096924e-01 - <_> - - 0 -1 832 1.0056140273809433e-01 - - 9.6470691263675690e-02 -1.2373570352792740e-01 - <_> - - 0 -1 833 2.4684870368218981e-05 - - -6.5468028187751770e-02 7.5764216482639313e-02 - <_> - - 0 -1 834 1.7325380817055702e-02 - - 4.9385469406843185e-02 -2.0938959717750549e-01 - <_> - - 0 -1 835 -8.1096980720758438e-03 - - -2.3129729926586151e-01 1.3806460425257683e-02 - <_> - - 0 -1 836 7.0394109934568405e-03 - - -4.8593230545520782e-02 2.1045120060443878e-01 - <_> - - 0 -1 837 -1.0678370017558336e-03 - - 9.8571203649044037e-02 -4.5679539442062378e-02 - <_> - - 0 -1 838 7.9888887703418732e-03 - - 2.2722730413079262e-02 -4.7305500507354736e-01 - <_> - - 0 -1 839 -2.8562550432980061e-03 - - -1.2667450308799744e-01 2.6346899569034576e-02 - <_> - - 0 -1 840 -2.8239099308848381e-02 - - -4.8173430562019348e-01 2.0280279219150543e-02 - <_> - - 0 -1 841 -3.5814680159091949e-03 - - 1.3375559449195862e-01 -7.5176857411861420e-02 - <_> - - 0 -1 842 -1.4436709880828857e-01 - - -3.1298300623893738e-01 3.8588508963584900e-02 - <_> - - 0 -1 843 1.2504559755325317e-01 - - 6.5982979722321033e-03 -8.1579452753067017e-01 - <_> - - 0 -1 844 -1.3011660426855087e-02 - - 1.2922100722789764e-01 -7.9708762466907501e-02 - <_> - - 0 -1 845 -1.7209460493177176e-03 - - 1.8410180509090424e-01 -3.8158390671014786e-02 - <_> - - 0 -1 846 8.2962076703552157e-05 - - -8.0844506621360779e-02 1.2401849776506424e-01 - <_> - - 0 -1 847 6.5386621281504631e-03 - - 2.5721050798892975e-02 -3.4728491306304932e-01 - <_> - - 0 -1 848 -7.6022120192646980e-03 - - -1.3279519975185394e-01 6.9503903388977051e-02 - <_> - - 0 -1 849 -1.2741329555865377e-04 - - 7.3461078107357025e-02 -5.6750301271677017e-02 - <_> - - 0 -1 850 -8.7483227252960205e-03 - - -3.8747811317443848e-01 2.5242859497666359e-02 - <_> - - 0 -1 851 1.8606209778226912e-04 - - -8.0794073641300201e-02 1.1124949902296066e-01 - <_> - - 0 -1 852 -2.3457060160581023e-04 - - 1.3575780391693115e-01 -8.0513857305049896e-02 - <_> - - 0 -1 853 1.7333909636363387e-03 - - -4.0824349969625473e-02 7.0485733449459076e-02 - <_> - - 0 -1 854 2.5763779412955046e-03 - - -1.0582429915666580e-01 8.8251203298568726e-02 - <_> - - 0 -1 855 3.1439519952982664e-03 - - 2.2850390523672104e-02 -2.2878000140190125e-01 - <_> - - 0 -1 856 -6.6810711286962032e-03 - - -5.5194759368896484e-01 1.6644019633531570e-02 - <_> - - 0 -1 857 -1.0215619578957558e-02 - - 1.1516509950160980e-01 -3.0920639634132385e-02 - <_> - - 0 -1 858 6.8375351838767529e-03 - - 3.5597868263721466e-02 -2.5795739889144897e-01 - <_> - - 0 -1 859 3.1667288858443499e-03 - - -1.1311589926481247e-01 5.9377081692218781e-02 - <_> - - 0 -1 860 1.7846110463142395e-01 - - -9.1090977191925049e-02 1.0215540230274200e-01 - <_> - - 0 -1 861 -2.3922319523990154e-03 - - 1.0548549890518188e-01 -4.0941018611192703e-02 - <_> - - 0 -1 862 8.2479801494628191e-04 - - -9.2547960579395294e-02 1.0704030096530914e-01 - <_> - - 0 -1 863 -2.3213559761643410e-03 - - 4.7483701258897781e-02 -4.4801708310842514e-02 - <_> - - 0 -1 864 9.9881906062364578e-03 - - -5.3101241588592529e-02 1.8933349847793579e-01 - <_> - - 0 -1 865 7.2582447901368141e-03 - - 1.5470819547772408e-02 -1.6273790597915649e-01 - <_> - - 0 -1 866 -1.2209150195121765e-01 - - -6.5882581472396851e-01 1.4432240277528763e-02 - <_> - - 0 -1 867 4.2930290102958679e-02 - - -8.9507391676306725e-03 7.0037537813186646e-01 - <_> - - 0 -1 868 -1.4183740131556988e-02 - - 2.8738090395927429e-01 -3.2423838973045349e-02 - <_> - - 0 -1 869 6.5566753619350493e-05 - - -6.0012109577655792e-02 7.2343066334724426e-02 - <_> - - 0 -1 870 -9.1673799033742398e-05 - - 1.2412530183792114e-01 -8.8637173175811768e-02 - <_> - - 0 -1 871 1.0451570153236389e-02 - - 1.9897699356079102e-02 -5.4859578609466553e-01 - <_> - - 0 -1 872 7.1406508795917034e-03 - - 2.1871440112590790e-02 -3.9959570765495300e-01 - <_> - 166 - -1.3140599727630615e+00 - - <_> - - 0 -1 873 -7.9002313315868378e-02 - - 3.2428950071334839e-01 -2.5313940644264221e-01 - <_> - - 0 -1 874 2.2337300702929497e-02 - - -9.4131506979465485e-02 1.3784369826316833e-01 - <_> - - 0 -1 875 -6.6611483693122864e-02 - - 1.7535580694675446e-01 -2.6326939463615417e-01 - <_> - - 0 -1 876 1.8115570768713951e-02 - - 1.0016679763793945e-01 -2.5084051489830017e-01 - <_> - - 0 -1 877 4.2208299040794373e-02 - - -4.6460118144750595e-02 5.0753402709960938e-01 - <_> - - 0 -1 878 2.1947380155324936e-02 - - -3.5192631185054779e-02 2.9413568973541260e-01 - <_> - - 0 -1 879 3.9068479090929031e-02 - - 3.4318011254072189e-02 -5.9637278318405151e-01 - <_> - - 0 -1 880 -1.7158839851617813e-02 - - 2.2071230411529541e-01 -6.2802940607070923e-02 - <_> - - 0 -1 881 -5.5410808272426948e-05 - - 1.9250670075416565e-01 -9.7911693155765533e-02 - <_> - - 0 -1 882 5.7713039219379425e-02 - - -1.7752349376678467e-02 3.9690899848937988e-01 - <_> - - 0 -1 883 -2.7670299634337425e-02 - - 2.7309200167655945e-01 -6.9922827184200287e-02 - <_> - - 0 -1 884 4.1078277863562107e-03 - - -4.9098778516054153e-02 2.4907429516315460e-01 - <_> - - 0 -1 885 4.8231639084406197e-05 - - -1.2422840297222137e-01 1.7488770186901093e-01 - <_> - - 0 -1 886 5.4101468995213509e-03 - - -1.1635100096464157e-01 1.1202619969844818e-01 - <_> - - 0 -1 887 1.2156780064105988e-01 - - 3.5816799849271774e-02 -4.2390239238739014e-01 - <_> - - 0 -1 888 -4.5798659324645996e-02 - - -3.9612388610839844e-01 2.6914669200778008e-02 - <_> - - 0 -1 889 -4.3434510007500648e-03 - - 1.5174229443073273e-01 -1.5247189998626709e-01 - <_> - - 0 -1 890 5.4885639110580087e-04 - - -1.0398910194635391e-01 1.0211019963026047e-01 - <_> - - 0 -1 891 2.4605579674243927e-03 - - -9.2063240706920624e-02 2.0085799694061279e-01 - <_> - - 0 -1 892 -2.0400179550051689e-02 - - 3.9317831397056580e-01 5.8226548135280609e-03 - <_> - - 0 -1 893 2.3037819482851774e-04 - - -1.5047320723533630e-01 1.0606130212545395e-01 - <_> - - 0 -1 894 -4.2928410694003105e-03 - - 7.2660259902477264e-02 -7.9356543719768524e-02 - <_> - - 0 -1 895 1.8637800216674805e-01 - - -1.1249560117721558e-01 1.5694859623908997e-01 - <_> - - 0 -1 896 -2.6433460414409637e-02 - - -3.9095601439476013e-01 4.9486149102449417e-02 - <_> - - 0 -1 897 -2.4137930572032928e-01 - - -6.7887061834335327e-01 1.8050249665975571e-02 - <_> - - 0 -1 898 3.0466640368103981e-02 - - 2.7202309574931860e-03 -6.3896268606185913e-01 - <_> - - 0 -1 899 2.7874959632754326e-03 - - -8.3127573132514954e-02 1.7751370370388031e-01 - <_> - - 0 -1 900 1.2827770411968231e-01 - - -9.3625776469707489e-02 1.6796620190143585e-01 - <_> - - 0 -1 901 -3.7217219360172749e-03 - - 1.6798649728298187e-01 -1.0740660130977631e-01 - <_> - - 0 -1 902 2.5106329470872879e-02 - - 1.7044939100742340e-02 -4.9812939763069153e-01 - <_> - - 0 -1 903 8.5740294307470322e-03 - - 3.8930539041757584e-02 -3.3503991365432739e-01 - <_> - - 0 -1 904 -1.6299229115247726e-02 - - -1.7728500068187714e-01 5.9367809444665909e-03 - <_> - - 0 -1 905 1.3755589723587036e-02 - - 4.9292150884866714e-02 -2.9905700683593750e-01 - <_> - - 0 -1 906 1.0170560330152512e-02 - - 1.2569320388138294e-02 -3.2717370986938477e-01 - <_> - - 0 -1 907 -1.1838880181312561e-01 - - -3.0642750859260559e-01 4.0406189858913422e-02 - <_> - - 0 -1 908 2.8778460621833801e-01 - - 8.6266417056322098e-03 -5.8403861522674561e-01 - <_> - - 0 -1 909 -1.0709369555115700e-02 - - -4.5812180638313293e-01 2.6710700243711472e-02 - <_> - - 0 -1 910 -1.6836540773510933e-02 - - -4.8346018791198730e-01 1.4101839624345303e-03 - <_> - - 0 -1 911 -2.6871969923377037e-02 - - 3.0236101150512695e-01 -4.0173869580030441e-02 - <_> - - 0 -1 912 2.0822209771722555e-03 - - 2.6397850364446640e-02 -7.1128167212009430e-02 - <_> - - 0 -1 913 1.8307130038738251e-01 - - 3.1573470681905746e-02 -4.3112158775329590e-01 - <_> - - 0 -1 914 -5.3969710133969784e-03 - - -9.9910236895084381e-02 1.3491000048816204e-02 - <_> - - 0 -1 915 6.5924688242375851e-03 - - 3.4465100616216660e-02 -4.0542820096015930e-01 - <_> - - 0 -1 916 7.6914830133318901e-03 - - -3.9300210773944855e-02 1.6817179322242737e-01 - <_> - - 0 -1 917 -1.3487709686160088e-02 - - 3.1880301237106323e-01 -3.8503371179103851e-02 - <_> - - 0 -1 918 -1.3206779956817627e-02 - - 1.1506190150976181e-01 -2.6123069226741791e-02 - <_> - - 0 -1 919 9.5766428858041763e-03 - - -5.6236121803522110e-02 2.2048389911651611e-01 - <_> - - 0 -1 920 3.0655260197818279e-03 - - -8.0174110829830170e-02 1.0322000086307526e-01 - <_> - - 0 -1 921 8.6779087723698467e-05 - - -1.7224429547786713e-01 6.9087728857994080e-02 - <_> - - 0 -1 922 9.6185833215713501e-02 - - 1.5162150375545025e-03 -5.5438750982284546e-01 - <_> - - 0 -1 923 3.8120381534099579e-02 - - 5.1593549549579620e-02 -2.6273688673973083e-01 - <_> - - 0 -1 924 5.0568342208862305e-01 - - 1.0466909967362881e-02 -5.1577657461166382e-01 - <_> - - 0 -1 925 -1.2192579917609692e-02 - - 3.0584090948104858e-01 -4.0013160556554794e-02 - <_> - - 0 -1 926 1.2820640206336975e-01 - - 2.2402040660381317e-02 -2.7763271331787109e-01 - <_> - - 0 -1 927 1.2943449616432190e-01 - - -6.1534829437732697e-02 2.1345520019531250e-01 - <_> - - 0 -1 928 -7.5714521110057831e-02 - - 1.5290339291095734e-01 -1.1667010188102722e-01 - <_> - - 0 -1 929 -5.3732179367216304e-05 - - 1.2800370156764984e-01 -9.7825959324836731e-02 - <_> - - 0 -1 930 7.5803599320352077e-03 - - -9.7915172576904297e-02 1.2620359659194946e-01 - <_> - - 0 -1 931 6.8636022508144379e-02 - - 4.0432218462228775e-02 -3.1329730153083801e-01 - <_> - - 0 -1 932 1.1460750363767147e-02 - - 2.5361500680446625e-02 -4.8540189862251282e-01 - <_> - - 0 -1 933 2.6128649551537819e-05 - - -1.0432030260562897e-01 1.1333329975605011e-01 - <_> - - 0 -1 934 8.4630657511297613e-05 - - -1.0487859696149826e-01 1.2740099430084229e-01 - <_> - - 0 -1 935 -2.3739310563541949e-05 - - 1.5114049613475800e-01 -1.0252150148153305e-01 - <_> - - 0 -1 936 1.1611119844019413e-02 - - 1.4886969700455666e-02 -2.8674951195716858e-01 - <_> - - 0 -1 937 1.2420720420777798e-02 - - -6.2066860496997833e-02 1.7772339284420013e-01 - <_> - - 0 -1 938 2.3426260799169540e-02 - - -8.4759250283241272e-02 1.4415900409221649e-01 - <_> - - 0 -1 939 1.4368200302124023e-01 - - 2.5768509134650230e-02 -4.9598070979118347e-01 - <_> - - 0 -1 940 -3.6740589421242476e-03 - - -3.4700030088424683e-01 1.2800060212612152e-02 - <_> - - 0 -1 941 5.1495590014383197e-05 - - -1.0679510235786438e-01 9.9959939718246460e-02 - <_> - - 0 -1 942 9.9259437993168831e-03 - - 3.2620970159769058e-02 -3.5369759798049927e-01 - <_> - - 0 -1 943 -5.1487040764186531e-05 - - 1.2531200051307678e-01 -9.5278233289718628e-02 - <_> - - 0 -1 944 2.7326600626111031e-02 - - -8.9491289108991623e-03 6.4724721014499664e-02 - <_> - - 0 -1 945 2.2325750440359116e-02 - - 1.4013900421559811e-02 -7.4047172069549561e-01 - <_> - - 0 -1 946 4.0280960500240326e-02 - - 1.0004050564020872e-03 -1.1777099967002869e-01 - <_> - - 0 -1 947 2.1893329918384552e-02 - - -5.0884321331977844e-02 2.2789579629898071e-01 - <_> - - 0 -1 948 -7.1642571128904819e-03 - - 1.2857060134410858e-01 -5.3552430123090744e-02 - <_> - - 0 -1 949 -8.0841138958930969e-02 - - 2.0653660595417023e-01 -6.6617228090763092e-02 - <_> - - 0 -1 950 5.1331298891454935e-04 - - -5.4442800581455231e-02 1.4963160455226898e-01 - <_> - - 0 -1 951 8.6274370551109314e-03 - - 3.0817959457635880e-02 -3.6723139882087708e-01 - <_> - - 0 -1 952 -8.7373692076653242e-04 - - 1.3902780413627625e-01 -6.3252650201320648e-02 - <_> - - 0 -1 953 -1.1720039881765842e-02 - - -4.7670018672943115e-01 2.4412320926785469e-02 - <_> - - 0 -1 954 4.8860989511013031e-02 - - 1.0085090063512325e-02 -4.6592590212821960e-01 - <_> - - 0 -1 955 1.8693100661039352e-02 - - -7.1992039680480957e-02 1.7693880200386047e-01 - <_> - - 0 -1 956 -5.3908649832010269e-02 - - 1.4675259590148926e-01 -9.0455517172813416e-02 - <_> - - 0 -1 957 8.3356387913227081e-03 - - 2.2398740053176880e-02 -4.9412518739700317e-01 - <_> - - 0 -1 958 2.7100899387733079e-05 - - -5.3562410175800323e-02 7.7102899551391602e-02 - <_> - - 0 -1 959 4.9839400162454695e-05 - - -8.7917067110538483e-02 1.2769749760627747e-01 - <_> - - 0 -1 960 -2.5873789127217606e-05 - - 8.6240112781524658e-02 -9.1946959495544434e-02 - <_> - - 0 -1 961 -4.5616321585839614e-05 - - 1.0863859951496124e-01 -9.9706746637821198e-02 - <_> - - 0 -1 962 3.4546090755611658e-03 - - 3.3691279590129852e-02 -2.5994610786437988e-01 - <_> - - 0 -1 963 -3.0438970774412155e-02 - - 3.6962929368019104e-01 -2.9208270832896233e-02 - <_> - - 0 -1 964 4.3956300616264343e-01 - - -2.3035079240798950e-02 4.4141438603401184e-01 - <_> - - 0 -1 965 5.8688350691227242e-05 - - -1.0969989746809006e-01 9.8768897354602814e-02 - <_> - - 0 -1 966 8.4090819582343102e-03 - - -4.9145638942718506e-02 1.7818750441074371e-01 - <_> - - 0 -1 967 -1.4912109822034836e-02 - - -4.2131778597831726e-01 2.6400730013847351e-02 - <_> - - 0 -1 968 -2.0906489342451096e-02 - - -2.9467320442199707e-01 1.5055189840495586e-02 - <_> - - 0 -1 969 5.3503939852816984e-05 - - -8.0975167453289032e-02 1.2568619847297668e-01 - <_> - - 0 -1 970 -1.0656829690560699e-03 - - 5.3799871355295181e-02 -1.4916649460792542e-01 - <_> - - 0 -1 971 1.4879689551889896e-02 - - 2.0114380866289139e-02 -4.7147929668426514e-01 - <_> - - 0 -1 972 1.8449500203132629e-02 - - 1.6212660819292068e-02 -2.6070928573608398e-01 - <_> - - 0 -1 973 1.1283960193395615e-03 - - -6.1842311173677444e-02 1.5736180543899536e-01 - <_> - - 0 -1 974 4.1768390685319901e-02 - - 4.5171868987381458e-03 -5.2301770448684692e-01 - <_> - - 0 -1 975 -4.6589840203523636e-03 - - -2.4603700637817383e-01 3.8989998400211334e-02 - <_> - - 0 -1 976 1.2120570056140423e-02 - - 1.2968990020453930e-02 -6.7711579799652100e-01 - <_> - - 0 -1 977 5.1322788931429386e-03 - - 1.5230550430715084e-02 -5.5883342027664185e-01 - <_> - - 0 -1 978 8.5264481604099274e-02 - - 1.7884389963001013e-03 -5.7048821449279785e-01 - <_> - - 0 -1 979 2.7729919180274010e-02 - - -3.7531539797782898e-02 3.1022569537162781e-01 - <_> - - 0 -1 980 4.1674780659377575e-03 - - -9.5324076712131500e-02 9.6109919250011444e-02 - <_> - - 0 -1 981 -3.5056591033935547e-02 - - -3.7690278887748718e-01 2.4474700912833214e-02 - <_> - - 0 -1 982 1.7184760421514511e-02 - - -7.0347599685192108e-03 4.8588299751281738e-01 - <_> - - 0 -1 983 3.7842839956283569e-03 - - 4.3908059597015381e-02 -2.5237309932708740e-01 - <_> - - 0 -1 984 8.2066917419433594e-01 - - 1.5171869657933712e-02 -5.3948462009429932e-01 - <_> - - 0 -1 985 1.0091160424053669e-02 - - -9.6920862793922424e-02 1.1189579963684082e-01 - <_> - - 0 -1 986 -1.6029510647058487e-02 - - -2.3441310226917267e-01 2.3455519229173660e-02 - <_> - - 0 -1 987 1.0849679820239544e-02 - - 4.4147640466690063e-02 -2.6963528990745544e-01 - <_> - - 0 -1 988 1.3045299798250198e-02 - - 2.2153200116008520e-03 -7.9784917831420898e-01 - <_> - - 0 -1 989 1.1236639693379402e-02 - - -4.3046820908784866e-02 2.4014919996261597e-01 - <_> - - 0 -1 990 -7.7543058432638645e-03 - - -3.5501450300216675e-01 1.1025140061974525e-02 - <_> - - 0 -1 991 3.3010800834745169e-03 - - 3.0340820550918579e-02 -3.7136289477348328e-01 - <_> - - 0 -1 992 6.5340842120349407e-03 - - -8.5805252194404602e-02 9.1638848185539246e-02 - <_> - - 0 -1 993 -4.7619681805372238e-02 - - 4.0863269567489624e-01 -2.6420159265398979e-02 - <_> - - 0 -1 994 6.8403937621042132e-04 - - -3.2312858849763870e-02 8.8080801069736481e-02 - <_> - - 0 -1 995 -7.6149452070239931e-05 - - 1.1525599658489227e-01 -8.9074932038784027e-02 - <_> - - 0 -1 996 2.4684870368218981e-05 - - -6.0994371771812439e-02 8.1846691668033600e-02 - <_> - - 0 -1 997 -8.2685357483569533e-05 - - 1.1239729821681976e-01 -8.7840661406517029e-02 - <_> - - 0 -1 998 -5.1181959861423820e-05 - - 1.2418139725923538e-01 -9.6157982945442200e-02 - <_> - - 0 -1 999 -8.0426130443811417e-03 - - -4.0603759884834290e-01 2.5093160569667816e-02 - <_> - - 0 -1 1000 2.4684870368218981e-05 - - -7.3493182659149170e-02 9.0214557945728302e-02 - <_> - - 0 -1 1001 5.0119768275180832e-05 - - -8.2994453608989716e-02 1.1394649744033813e-01 - <_> - - 0 -1 1002 -9.5925288042053580e-04 - - -7.1206063032150269e-02 4.2806431651115417e-02 - <_> - - 0 -1 1003 2.0211040973663330e-03 - - 2.5516960769891739e-02 -3.5512170195579529e-01 - <_> - - 0 -1 1004 1.2242579832673073e-02 - - 1.8769890069961548e-02 -1.9807919859886169e-01 - <_> - - 0 -1 1005 -1.4281050302088261e-02 - - 1.9607509672641754e-01 -5.0247050821781158e-02 - <_> - - 0 -1 1006 4.0956941246986389e-01 - - 1.3107390142977238e-02 -7.2472369670867920e-01 - <_> - - 0 -1 1007 2.6600460842018947e-05 - - -8.7076403200626373e-02 1.1106210201978683e-01 - <_> - - 0 -1 1008 -1.1234419653192163e-03 - - 7.7456079423427582e-02 -1.3284559547901154e-01 - <_> - - 0 -1 1009 5.6427060626447201e-03 - - 4.8446040600538254e-02 -2.1871030330657959e-01 - <_> - - 0 -1 1010 -1.3591510243713856e-02 - - 8.2535639405250549e-02 -2.2708360105752945e-02 - <_> - - 0 -1 1011 1.1591419577598572e-02 - - -4.8790689557790756e-02 1.9490590691566467e-01 - <_> - - 0 -1 1012 -1.2608569860458374e-01 - - 4.1815188527107239e-01 -9.5796259120106697e-03 - <_> - - 0 -1 1013 2.6331260800361633e-02 - - 1.6726149246096611e-02 -5.7491612434387207e-01 - <_> - - 0 -1 1014 4.1054669767618179e-02 - - -1.0885179974138737e-02 3.4100100398063660e-01 - <_> - - 0 -1 1015 7.1040436625480652e-02 - - -1.3916869647800922e-02 6.0548651218414307e-01 - <_> - - 0 -1 1016 -1.6813749447464943e-02 - - -4.1529890894889832e-01 2.3168940097093582e-02 - <_> - - 0 -1 1017 -1.6978330910205841e-02 - - 2.2032840549945831e-01 -3.9898801594972610e-02 - <_> - - 0 -1 1018 -9.5234332547988743e-05 - - 8.1150002777576447e-02 -1.3438819348812103e-01 - <_> - - 0 -1 1019 -1.7120620235800743e-02 - - -4.2468288540840149e-01 2.0317260175943375e-02 - <_> - - 0 -1 1020 2.1241260692477226e-02 - - 1.4055900275707245e-02 -5.4326081275939941e-01 - <_> - - 0 -1 1021 -4.6816341578960419e-02 - - 3.9923959970474243e-01 -2.2853419184684753e-02 - <_> - - 0 -1 1022 -2.2095210850238800e-02 - - -4.1975128650665283e-01 1.1670240201056004e-02 - <_> - - 0 -1 1023 2.2133700549602509e-01 - - 1.3368880376219749e-02 -5.8491647243499756e-01 - <_> - - 0 -1 1024 5.7718330062925816e-03 - - -3.9301060140132904e-02 7.6248377561569214e-02 - <_> - - 0 -1 1025 9.2696389183402061e-03 - - -4.0809009224176407e-02 2.0580360293388367e-01 - <_> - - 0 -1 1026 1.6822699690237641e-03 - - -6.0559730976819992e-02 8.9423552155494690e-02 - <_> - - 0 -1 1027 -1.5279100276529789e-02 - - -3.9893868565559387e-01 2.2799460217356682e-02 - <_> - - 0 -1 1028 -3.1749838963150978e-03 - - 1.3225950300693512e-01 -4.6028770506381989e-02 - <_> - - 0 -1 1029 2.8258180245757103e-03 - - -1.0630449652671814e-01 9.6875302493572235e-02 - <_> - - 0 -1 1030 -5.4384778195526451e-05 - - 5.1282491534948349e-02 -8.4274142980575562e-02 - <_> - - 0 -1 1031 1.4561800286173820e-02 - - -4.3352860957384109e-02 1.9777399301528931e-01 - <_> - - 0 -1 1032 4.3724558781832457e-04 - - -5.0819009542465210e-02 1.0387989878654480e-01 - <_> - - 0 -1 1033 -1.0908489674329758e-01 - - -3.3270779252052307e-01 2.6828980073332787e-02 - <_> - - 0 -1 1034 -7.0241180947050452e-04 - - 7.6168522238731384e-02 -6.4519211649894714e-02 - <_> - - 0 -1 1035 -1.5636570751667023e-02 - - -4.4809681177139282e-01 2.0276250317692757e-02 - <_> - - 0 -1 1036 -1.1897999793291092e-02 - - -4.9537119269371033e-01 4.4984170235693455e-03 - <_> - - 0 -1 1037 -1.5789919998496771e-03 - - 1.2958030402660370e-01 -7.2660639882087708e-02 - <_> - - 0 -1 1038 -4.9960118532180786e-01 - - -6.6730189323425293e-01 7.9309539869427681e-03 - <_> - 200 - -1.2872380018234253e+00 - - <_> - - 0 -1 1039 -7.8940317034721375e-02 - - 3.2988879084587097e-01 -1.9701880216598511e-01 - <_> - - 0 -1 1040 -1.7321130260825157e-02 - - 2.1981470286846161e-01 -8.1192083656787872e-02 - <_> - - 0 -1 1041 1.2355250306427479e-02 - - -3.0988898873329163e-01 1.4423920214176178e-01 - <_> - - 0 -1 1042 -1.0426779836416245e-01 - - 1.5626840293407440e-01 -1.8359909951686859e-01 - <_> - - 0 -1 1043 -8.5183881223201752e-02 - - -2.9022741317749023e-01 1.2742319703102112e-01 - <_> - - 0 -1 1044 -1.3357129693031311e-01 - - -3.0198419094085693e-01 -1.6821650788187981e-02 - <_> - - 0 -1 1045 2.2293360531330109e-01 - - 1.8408309668302536e-02 -9.1678131103515625e+02 - <_> - - 0 -1 1046 -2.7723070234060287e-02 - - 9.9666483700275421e-02 -1.1882440000772476e-01 - <_> - - 0 -1 1047 1.8182699382305145e-01 - - -5.7261440902948380e-02 4.6252810955047607e-01 - <_> - - 0 -1 1048 2.4684790521860123e-02 - - 6.8861052393913269e-02 -1.9284169375896454e-01 - <_> - - 0 -1 1049 1.3814649544656277e-02 - - -7.8058518469333649e-02 3.0780151486396790e-01 - <_> - - 0 -1 1050 -2.4524500593543053e-02 - - -2.6867350935935974e-01 6.8230986595153809e-02 - <_> - - 0 -1 1051 7.0112771354615688e-03 - - -1.8542979657649994e-01 1.1322949826717377e-01 - <_> - - 0 -1 1052 -1.0548190027475357e-01 - - -3.4024599194526672e-01 1.0903449729084969e-02 - <_> - - 0 -1 1053 -6.3391570001840591e-03 - - 1.0419529676437378e-01 -2.0516459643840790e-01 - <_> - - 0 -1 1054 7.8947477042675018e-02 - - 1.6118109226226807e-02 -4.1540539264678955e-01 - <_> - - 0 -1 1055 4.8509850166738033e-03 - - 4.8841159790754318e-02 -3.8384801149368286e-01 - <_> - - 0 -1 1056 4.5862730592489243e-02 - - -1.5829730033874512e-01 1.0200840234756470e-01 - <_> - - 0 -1 1057 1.3429409824311733e-02 - - 5.4573111236095428e-02 -3.6586639285087585e-01 - <_> - - 0 -1 1058 1.9151210784912109e-02 - - 1.1911420151591301e-02 -4.3721321225166321e-01 - <_> - - 0 -1 1059 -2.2035999596118927e-01 - - 3.8328599929809570e-01 -5.7721391320228577e-02 - <_> - - 0 -1 1060 4.2383451014757156e-02 - - -6.5342620015144348e-02 7.8451372683048248e-02 - <_> - - 0 -1 1061 3.0524730682373047e-02 - - 4.9622170627117157e-02 -3.4946510195732117e-01 - <_> - - 0 -1 1062 1.9504040479660034e-02 - - -6.8343728780746460e-02 2.6461350917816162e-01 - <_> - - 0 -1 1063 9.8469397053122520e-03 - - -7.7927976846694946e-02 2.0894029736518860e-01 - <_> - - 0 -1 1064 -3.2195370644330978e-02 - - 2.6800119876861572e-01 -7.0054799318313599e-02 - <_> - - 0 -1 1065 -9.8907537758350372e-03 - - 1.2193089723587036e-01 -1.3975459337234497e-01 - <_> - - 0 -1 1066 1.6434019431471825e-02 - - 2.9636459425091743e-02 -2.3874099552631378e-01 - <_> - - 0 -1 1067 -8.7646512838546187e-05 - - 1.0851290076971054e-01 -1.3716340065002441e-01 - <_> - - 0 -1 1068 -1.4536869712173939e-02 - - -3.8466268777847290e-01 2.3676240816712379e-02 - <_> - - 0 -1 1069 1.1710939928889275e-02 - - 4.1695669293403625e-02 -3.1956040859222412e-01 - <_> - - 0 -1 1070 -1.1641769669950008e-02 - - -2.8680109977722168e-01 1.4557749964296818e-02 - <_> - - 0 -1 1071 2.1298279985785484e-02 - - 2.5519400835037231e-02 -4.8966890573501587e-01 - <_> - - 0 -1 1072 -9.2027969658374786e-03 - - -6.2252938747406006e-01 8.7586138397455215e-03 - <_> - - 0 -1 1073 -2.0174520090222359e-02 - - 3.0807420611381531e-01 -3.9538878947496414e-02 - <_> - - 0 -1 1074 1.0657950304448605e-02 - - 1.0425630025565624e-02 -3.7197288870811462e-01 - <_> - - 0 -1 1075 4.5577301643788815e-03 - - -1.1608000099658966e-01 1.0506209731101990e-01 - <_> - - 0 -1 1076 5.9895858168601990e-02 - - -8.2911262288689613e-03 7.5710900127887726e-02 - <_> - - 0 -1 1077 -9.2518046498298645e-02 - - -3.9722099900245667e-01 3.5415899008512497e-02 - <_> - - 0 -1 1078 5.3780227899551392e-03 - - -4.5169800519943237e-02 1.0165379941463470e-01 - <_> - - 0 -1 1079 -2.1006090100854635e-03 - - 7.3628917336463928e-02 -1.8362529575824738e-01 - <_> - - 0 -1 1080 8.4413066506385803e-03 - - -5.0623130053281784e-02 2.7132049202919006e-01 - <_> - - 0 -1 1081 -2.8913110494613647e-02 - - -2.3330889642238617e-01 5.6141868233680725e-02 - <_> - - 0 -1 1082 8.9428931474685669e-02 - - 4.2139500379562378e-02 -2.9663449525833130e-01 - <_> - - 0 -1 1083 -2.2211730480194092e-02 - - 3.2237181067466736e-01 -4.1160151362419128e-02 - <_> - - 0 -1 1084 3.7851219531148672e-03 - - -7.0737093687057495e-02 1.0991329699754715e-01 - <_> - - 0 -1 1085 8.3305174484848976e-03 - - -1.9362829625606537e-01 6.6261023283004761e-02 - <_> - - 0 -1 1086 -2.3463189601898193e-02 - - -2.2869169712066650e-01 5.3898990154266357e-02 - <_> - - 0 -1 1087 1.0604270501062274e-03 - - -7.2537548840045929e-02 1.5869510173797607e-01 - <_> - - 0 -1 1088 6.5959356725215912e-02 - - 5.6216111406683922e-03 -3.9239290356636047e-01 - <_> - - 0 -1 1089 -5.4879009723663330e-02 - - 2.8525480628013611e-01 -4.4418711215257645e-02 - <_> - - 0 -1 1090 3.4504090435802937e-03 - - 1.3675140216946602e-02 -4.4305860996246338e-01 - <_> - - 0 -1 1091 7.9733468592166901e-03 - - 2.0884349942207336e-02 -5.0481712818145752e-01 - <_> - - 0 -1 1092 1.8430359661579132e-02 - - -3.7965130060911179e-02 2.1417169272899628e-01 - <_> - - 0 -1 1093 -6.0115829110145569e-03 - - -3.4198600053787231e-01 2.9979920014739037e-02 - <_> - - 0 -1 1094 -4.0763098746538162e-02 - - 2.4182400107383728e-01 -3.2476250082254410e-02 - <_> - - 0 -1 1095 -4.5631989836692810e-02 - - 1.9471660256385803e-01 -8.9865140616893768e-02 - <_> - - 0 -1 1096 -1.3024959713220596e-02 - - 1.8374669551849365e-01 -3.9763871580362320e-02 - <_> - - 0 -1 1097 3.5364780575037003e-02 - - -9.9338017404079437e-02 1.3468970358371735e-01 - <_> - - 0 -1 1098 1.8771320581436157e-01 - - 1.1638140305876732e-02 -3.4229630231857300e-01 - <_> - - 0 -1 1099 -7.5244922190904617e-03 - - -2.0901820063591003e-01 6.4269833266735077e-02 - <_> - - 0 -1 1100 -3.4522291272878647e-02 - - 3.5216939449310303e-01 -3.6898851394653320e-02 - <_> - - 0 -1 1101 -1.1451860191300511e-03 - - 7.2152033448219299e-02 -2.0841260254383087e-01 - <_> - - 0 -1 1102 -1.0812779888510704e-02 - - -3.3911031484603882e-01 1.0240299627184868e-02 - <_> - - 0 -1 1103 4.4051618315279484e-03 - - 4.4835019856691360e-02 -2.3211100697517395e-01 - <_> - - 0 -1 1104 -6.1400611884891987e-03 - - -2.6839160919189453e-01 3.9040140807628632e-02 - <_> - - 0 -1 1105 -2.5988669221987948e-05 - - 1.1040650308132172e-01 -9.7347527742385864e-02 - <_> - - 0 -1 1106 -9.7707603126764297e-03 - - 1.3180179893970490e-01 -4.2217381298542023e-02 - <_> - - 0 -1 1107 1.4637519605457783e-02 - - -3.9937119930982590e-02 2.6679611206054688e-01 - <_> - - 0 -1 1108 1.7369400709867477e-02 - - 4.3008368462324142e-02 -2.6838469505310059e-01 - <_> - - 0 -1 1109 2.0715700462460518e-02 - - -4.4139068573713303e-02 2.5288510322570801e-01 - <_> - - 0 -1 1110 4.4260770082473755e-03 - - -1.8148280680179596e-02 6.3740082085132599e-02 - <_> - - 0 -1 1111 -2.1819660440087318e-02 - - -4.5305460691452026e-01 2.4142699316143990e-02 - <_> - - 0 -1 1112 4.8437709920108318e-03 - - 1.2343520298600197e-02 -1.5617559850215912e-01 - <_> - - 0 -1 1113 -2.7822460979223251e-03 - - -3.0781841278076172e-01 3.3887200057506561e-02 - <_> - - 0 -1 1114 -1.4766600215807557e-03 - - 3.7661001086235046e-02 -3.7117090076208115e-02 - <_> - - 0 -1 1115 2.0395090803503990e-02 - - 1.3521149754524231e-02 -7.2870039939880371e-01 - <_> - - 0 -1 1116 1.4377470361068845e-03 - - -5.5464219301939011e-02 5.5265650153160095e-02 - <_> - - 0 -1 1117 -2.9832549393177032e-02 - - 4.2611280083656311e-01 -2.1838100627064705e-02 - <_> - - 0 -1 1118 3.0555859208106995e-02 - - 1.7631899565458298e-02 -6.0954070091247559e-01 - <_> - - 0 -1 1119 1.2299589812755585e-01 - - -2.6662720367312431e-02 3.6958339810371399e-01 - <_> - - 0 -1 1120 -2.2958520799875259e-02 - - -4.6332129836082458e-01 1.8426449969410896e-02 - <_> - - 0 -1 1121 -1.3268290087580681e-02 - - -4.3808931112289429e-01 1.9012859091162682e-02 - <_> - - 0 -1 1122 -4.6182751655578613e-02 - - -7.0005071163177490e-01 1.1527130380272865e-02 - <_> - - 0 -1 1123 2.6312459260225296e-02 - - -7.1522757411003113e-02 1.2768800556659698e-01 - <_> - - 0 -1 1124 6.8344743340276182e-05 - - -7.1661248803138733e-02 6.4936593174934387e-02 - <_> - - 0 -1 1125 -3.7463910877704620e-02 - - -3.1653049588203430e-01 3.0787749215960503e-02 - <_> - - 0 -1 1126 5.6358661502599716e-02 - - 8.4295487031340599e-03 -6.0672062635421753e-01 - <_> - - 0 -1 1127 -7.3837172240018845e-03 - - 9.7772389650344849e-02 -9.9168926477432251e-02 - <_> - - 0 -1 1128 2.9623919544974342e-05 - - -5.4954130202531815e-02 7.5745277106761932e-02 - <_> - - 0 -1 1129 1.6535919904708862e-01 - - 2.6091169565916061e-02 -3.5252508521080017e-01 - <_> - - 0 -1 1130 -8.3075620234012604e-02 - - -5.3609657287597656e-01 1.5322240069508553e-02 - <_> - - 0 -1 1131 1.3314849929884076e-03 - - -4.3492630124092102e-02 2.1460059285163879e-01 - <_> - - 0 -1 1132 -2.4037649855017662e-02 - - 3.3584278821945190e-01 -2.4913089349865913e-02 - <_> - - 0 -1 1133 6.2097259797155857e-03 - - 4.9151420593261719e-02 -1.9901290535926819e-01 - <_> - - 0 -1 1134 7.3641598224639893e-02 - - -8.7231457233428955e-02 1.0949330031871796e-01 - <_> - - 0 -1 1135 2.8918519616127014e-02 - - 5.1056448370218277e-02 -2.0575879514217377e-01 - <_> - - 0 -1 1136 3.7253550253808498e-03 - - -3.6701608449220657e-02 1.0511349886655807e-01 - <_> - - 0 -1 1137 8.2107484340667725e-03 - - 2.3830300197005272e-02 -3.5800701379776001e-01 - <_> - - 0 -1 1138 1.8392279744148254e-03 - - -4.4707790017127991e-02 1.1898309737443924e-01 - <_> - - 0 -1 1139 -6.8104080855846405e-03 - - -1.6840079426765442e-01 4.8348199576139450e-02 - <_> - - 0 -1 1140 3.3966489136219025e-03 - - -3.0804419890046120e-02 1.3462269306182861e-01 - <_> - - 0 -1 1141 3.3915819949470460e-04 - - -7.7528692781925201e-02 1.1303810030221939e-01 - <_> - - 0 -1 1142 -1.8353240191936493e-01 - - 9.5320522785186768e-02 -3.2496929168701172e-02 - <_> - - 0 -1 1143 4.4860368967056274e-01 - - 1.3921190053224564e-02 -7.2890061140060425e-01 - <_> - - 0 -1 1144 8.8801890611648560e-02 - - -6.4020909368991852e-02 3.6400448530912399e-02 - <_> - - 0 -1 1145 1.0808440297842026e-01 - - -6.4322993159294128e-02 1.9376879930496216e-01 - <_> - - 0 -1 1146 -6.9059031084179878e-03 - - -3.1092429161071777e-01 2.0556580275297165e-02 - <_> - - 0 -1 1147 2.5598949287086725e-03 - - -9.1550342738628387e-02 9.2027373611927032e-02 - <_> - - 0 -1 1148 4.9356167437508702e-04 - - -2.4271320551633835e-02 6.5760858356952667e-02 - <_> - - 0 -1 1149 1.5352670103311539e-02 - - 1.7310719937086105e-02 -4.8900419473648071e-01 - <_> - - 0 -1 1150 9.7035951912403107e-03 - - 8.9735705405473709e-03 -4.1271901130676270e-01 - <_> - - 0 -1 1151 -2.1431730128824711e-03 - - -1.9551250338554382e-01 3.8025110960006714e-02 - <_> - - 0 -1 1152 -5.3084579121787101e-05 - - 7.0507623255252838e-02 -4.7128938138484955e-02 - <_> - - 0 -1 1153 8.6803667247295380e-02 - - -1.6351899132132530e-02 4.7820520401000977e-01 - <_> - - 0 -1 1154 1.1078939773142338e-02 - - -2.5524420663714409e-02 1.0990680009126663e-01 - <_> - - 0 -1 1155 -6.1349938623607159e-03 - - -3.5728418827056885e-01 2.2397089749574661e-02 - <_> - - 0 -1 1156 -4.7654299996793270e-03 - - -8.5008271038532257e-02 2.2307649254798889e-02 - <_> - - 0 -1 1157 1.2252650223672390e-02 - - 1.7857609316706657e-02 -4.1976860165596008e-01 - <_> - - 0 -1 1158 1.1971440166234970e-02 - - -2.1071229130029678e-02 2.3789730668067932e-01 - <_> - - 0 -1 1159 3.2991201151162386e-03 - - -6.1564899981021881e-02 1.3292570412158966e-01 - <_> - - 0 -1 1160 -1.8449019640684128e-02 - - 1.4298330247402191e-01 -2.5206809863448143e-02 - <_> - - 0 -1 1161 -7.4155619367957115e-03 - - 1.7994129657745361e-01 -4.9833629280328751e-02 - <_> - - 0 -1 1162 4.8206571489572525e-02 - - 2.7245989069342613e-02 -3.8131779432296753e-01 - <_> - - 0 -1 1163 1.1687170481309295e-03 - - 4.6957340091466904e-02 -1.8173030018806458e-01 - <_> - - 0 -1 1164 -1.3616660237312317e-01 - - 4.0798899531364441e-01 -2.2476859390735626e-02 - <_> - - 0 -1 1165 -2.3739310563541949e-05 - - 1.0147339850664139e-01 -8.4523528814315796e-02 - <_> - - 0 -1 1166 7.6772958040237427e-02 - - 6.4514591358602047e-03 -4.6041280031204224e-01 - <_> - - 0 -1 1167 6.3457563519477844e-02 - - -2.0250169560313225e-02 3.9726629853248596e-01 - <_> - - 0 -1 1168 -3.3444589935243130e-03 - - 1.5261699259281158e-01 -5.2653640508651733e-02 - <_> - - 0 -1 1169 5.7241220027208328e-02 - - -1.3445749878883362e-01 8.0746330320835114e-02 - <_> - - 0 -1 1170 -4.1631441563367844e-02 - - -1.0822279751300812e-01 2.2437069565057755e-02 - <_> - - 0 -1 1171 1.4903079718351364e-02 - - 4.5007079839706421e-02 -2.2001840174198151e-01 - <_> - - 0 -1 1172 2.2303420305252075e-01 - - 1.2495860457420349e-02 -6.0045099258422852e-01 - <_> - - 0 -1 1173 1.6906030476093292e-02 - - 1.2750269845128059e-02 -5.3238618373870850e-01 - <_> - - 0 -1 1174 2.4477340281009674e-01 - - 3.1138889025896788e-03 -5.7128059864044189e-01 - <_> - - 0 -1 1175 -1.8740040063858032e-01 - - 4.3744760751724243e-01 -1.9650889560580254e-02 - <_> - - 0 -1 1176 5.0131231546401978e-03 - - -6.7403636872768402e-02 1.0132519900798798e-01 - <_> - - 0 -1 1177 1.2101340107619762e-03 - - 3.4509558230638504e-02 -2.1935179829597473e-01 - <_> - - 0 -1 1178 -1.0921210050582886e-02 - - -1.5897870063781738e-01 6.7669888958334923e-03 - <_> - - 0 -1 1179 1.0091220028698444e-03 - - -8.0816611647605896e-02 9.0216286480426788e-02 - <_> - - 0 -1 1180 -7.9159833490848541e-02 - - -4.9557760357856750e-01 9.0577276423573494e-03 - <_> - - 0 -1 1181 2.3125790059566498e-02 - - 2.6155060157179832e-02 -2.6404741406440735e-01 - <_> - - 0 -1 1182 2.5399661064147949e-01 - - -4.1755758225917816e-02 8.4267638623714447e-02 - <_> - - 0 -1 1183 4.1338570415973663e-02 - - -5.4307978600263596e-02 1.6323280334472656e-01 - <_> - - 0 -1 1184 7.9801427200436592e-03 - - -5.6379988789558411e-02 8.5087403655052185e-02 - <_> - - 0 -1 1185 -2.2182149812579155e-02 - - 1.5680639445781708e-01 -5.2673079073429108e-02 - <_> - - 0 -1 1186 8.8383043475914747e-05 - - -1.1258769780397415e-01 7.1022190153598785e-02 - <_> - - 0 -1 1187 -5.0613721832633018e-03 - - -3.7599068880081177e-01 2.2983800619840622e-02 - <_> - - 0 -1 1188 6.3651002943515778e-02 - - 4.1155992075800896e-03 -4.1837128996849060e-01 - <_> - - 0 -1 1189 1.9820030778646469e-02 - - -8.2667507231235504e-02 9.7538232803344727e-02 - <_> - - 0 -1 1190 1.2445739703252912e-03 - - -3.3446729183197021e-02 1.4538469910621643e-01 - <_> - - 0 -1 1191 -1.1178659647703171e-01 - - 2.5024509429931641e-01 -3.5332940518856049e-02 - <_> - - 0 -1 1192 -2.4203520733863115e-03 - - 1.7330379784107208e-01 -2.2793199867010117e-02 - <_> - - 0 -1 1193 1.2127320223953575e-04 - - -7.4290402233600616e-02 1.1935789883136749e-01 - <_> - - 0 -1 1194 8.6516663432121277e-03 - - 1.1963260360062122e-02 -2.8482851386070251e-01 - <_> - - 0 -1 1195 2.5779709176276810e-05 - - -1.1878810077905655e-01 8.3679713308811188e-02 - <_> - - 0 -1 1196 6.6892090253531933e-03 - - -2.5949949398636818e-02 9.8636366426944733e-02 - <_> - - 0 -1 1197 7.3373341001570225e-03 - - -5.6868050247430801e-02 1.3806000351905823e-01 - <_> - - 0 -1 1198 -4.8734410665929317e-03 - - 7.7433526515960693e-02 -3.5236679017543793e-02 - <_> - - 0 -1 1199 6.4124629716388881e-05 - - -1.2456929683685303e-01 7.1608223021030426e-02 - <_> - - 0 -1 1200 -3.0315749347209930e-02 - - -1.9579620659351349e-01 3.0857350677251816e-02 - <_> - - 0 -1 1201 -3.5041071474552155e-02 - - 1.7880150675773621e-01 -4.8966780304908752e-02 - <_> - - 0 -1 1202 4.1970908641815186e-02 - - -4.0191859006881714e-02 1.2946340441703796e-01 - <_> - - 0 -1 1203 -4.0881849825382233e-02 - - 1.3018250465393066e-01 -7.8276343643665314e-02 - <_> - - 0 -1 1204 -5.2412762306630611e-03 - - -1.8295650184154510e-01 3.7169050425291061e-02 - <_> - - 0 -1 1205 5.0555911002447829e-05 - - -8.3728358149528503e-02 9.3980863690376282e-02 - <_> - - 0 -1 1206 1.6592690721154213e-02 - - 5.7793757878243923e-03 -8.1482458114624023e-01 - <_> - - 0 -1 1207 6.3152369111776352e-03 - - 2.1336369216442108e-02 -3.2484549283981323e-01 - <_> - - 0 -1 1208 -5.6888211518526077e-02 - - -4.1595301032066345e-01 3.6880860570818186e-03 - <_> - - 0 -1 1209 3.4150490537285805e-03 - - -5.3596410900354385e-02 1.4040400087833405e-01 - <_> - - 0 -1 1210 1.4779959619045258e-01 - - 4.9799410626292229e-03 -6.2260872125625610e-01 - <_> - - 0 -1 1211 -6.9511711597442627e-02 - - -4.3304800987243652e-01 1.8926220014691353e-02 - <_> - - 0 -1 1212 1.6076939646154642e-03 - - -3.6794148385524750e-02 6.8327270448207855e-02 - <_> - - 0 -1 1213 1.5456780092790723e-03 - - -6.6803686320781708e-02 1.3351519405841827e-01 - <_> - - 0 -1 1214 1.5967389568686485e-02 - - 6.9505311548709869e-03 -4.7136560082435608e-01 - <_> - - 0 -1 1215 2.8711509704589844e-01 - - -1.5348769724369049e-02 4.7458758950233459e-01 - <_> - - 0 -1 1216 3.4093499183654785e-01 - - 5.4452791810035706e-03 -7.9175651073455811e-01 - <_> - - 0 -1 1217 6.6727129742503166e-03 - - 2.9457410797476768e-02 -2.5477468967437744e-01 - <_> - - 0 -1 1218 -2.6719029992818832e-03 - - -1.7070059478282928e-01 3.5767339169979095e-02 - <_> - - 0 -1 1219 5.2617820911109447e-03 - - -3.3655051141977310e-02 2.1332639455795288e-01 - <_> - - 0 -1 1220 8.1078894436359406e-03 - - 3.0109869316220284e-02 -4.6023748815059662e-02 - <_> - - 0 -1 1221 1.6731999814510345e-02 - - -4.3719969689846039e-02 1.9436429440975189e-01 - <_> - - 0 -1 1222 1.9152810797095299e-02 - - 1.7497120425105095e-02 -4.2827600240707397e-01 - <_> - - 0 -1 1223 -1.4171889424324036e-01 - - -3.8993918895721436e-01 1.7089590430259705e-02 - <_> - - 0 -1 1224 3.8122260011732578e-03 - - -1.1586090177297592e-01 5.0662569701671600e-02 - <_> - - 0 -1 1225 -1.7030799761414528e-02 - - -5.3991311788558960e-01 1.1941430158913136e-02 - <_> - - 0 -1 1226 -8.8250916451215744e-03 - - -3.3240219950675964e-01 8.3178747445344925e-03 - <_> - - 0 -1 1227 -5.9308991767466068e-03 - - 2.2111830115318298e-01 -3.1433571130037308e-02 - <_> - - 0 -1 1228 -3.7457819562405348e-03 - - -1.0303570330142975e-01 2.4099970236420631e-02 - <_> - - 0 -1 1229 4.8495861701667309e-03 - - 2.5730669498443604e-02 -2.6656630635261536e-01 - <_> - - 0 -1 1230 3.0769100785255432e-01 - - 2.6101889088749886e-02 -1.8695330619812012e-01 - <_> - - 0 -1 1231 1.1795950122177601e-02 - - -1.1187969893217087e-01 6.8893343210220337e-02 - <_> - - 0 -1 1232 -1.0205689817667007e-01 - - 1.6410979628562927e-01 -3.9911000058054924e-03 - <_> - - 0 -1 1233 1.0506930202245712e-01 - - -1.7098480835556984e-02 4.2889660596847534e-01 - <_> - - 0 -1 1234 4.8301670176442713e-05 - - -4.1623938828706741e-02 4.9571871757507324e-02 - <_> - - 0 -1 1235 2.2682799026370049e-03 - - -6.8807549774646759e-02 1.0216739773750305e-01 - <_> - - 0 -1 1236 -6.0366461984813213e-03 - - -1.7388309538364410e-01 1.9866410642862320e-02 - <_> - - 0 -1 1237 4.9747680313885212e-03 - - 3.3109340816736221e-02 -2.3262310028076172e-01 - <_> - - 0 -1 1238 -3.4262079745531082e-02 - - -2.1563960611820221e-01 1.1507480405271053e-02 - <_> - 205 - -1.2998509407043457e+00 - - <_> - - 0 -1 1239 8.8293753564357758e-02 - - -2.4894049763679504e-01 2.6465269923210144e-01 - <_> - - 0 -1 1240 -1.6517499461770058e-02 - - 1.3087649643421173e-01 -4.8301700502634048e-02 - <_> - - 0 -1 1241 2.4295739829540253e-01 - - 2.4608039529994130e-04 -1.2118969726562500e+03 - <_> - - 0 -1 1242 1.7855629324913025e-02 - - -2.1882280707359314e-02 6.2913432717323303e-02 - <_> - - 0 -1 1243 -1.1276870034635067e-02 - - 1.8169599771499634e-01 -2.3071660101413727e-01 - <_> - - 0 -1 1244 2.3212030529975891e-02 - - 1.0888969898223877e-01 -2.8105589747428894e-01 - <_> - - 0 -1 1245 -3.3462621271610260e-02 - - 4.2646810412406921e-01 -1.1283230036497116e-01 - <_> - - 0 -1 1246 3.0994430184364319e-02 - - 5.7805508375167847e-02 -3.9169758558273315e-01 - <_> - - 0 -1 1247 -1.5080560743808746e-01 - - -4.4636020064353943e-01 6.8994842469692230e-02 - <_> - - 0 -1 1248 1.9667649269104004e-01 - - 5.0415519624948502e-02 -5.1629501581192017e-01 - <_> - - 0 -1 1249 2.2066079545766115e-03 - - -7.0726096630096436e-02 2.7825760841369629e-01 - <_> - - 0 -1 1250 -1.0757049918174744e-01 - - 2.4468080699443817e-01 -7.2584472596645355e-02 - <_> - - 0 -1 1251 6.0178998857736588e-02 - - -9.3773849308490753e-02 2.0907169580459595e-01 - <_> - - 0 -1 1252 7.2164356708526611e-02 - - 2.4619700387120247e-02 -3.7749460339546204e-01 - <_> - - 0 -1 1253 -1.8397889798507094e-03 - - -3.6595511436462402e-01 3.5692859441041946e-02 - <_> - - 0 -1 1254 3.3323359675705433e-03 - - 2.7419339865446091e-02 -2.1830609440803528e-01 - <_> - - 0 -1 1255 2.5542399287223816e-01 - - 4.2471811175346375e-02 -4.0455558896064758e-01 - <_> - - 0 -1 1256 8.3238910883665085e-03 - - -3.8298089057207108e-02 1.9972600042819977e-01 - <_> - - 0 -1 1257 3.6837169900536537e-03 - - 5.1650788635015488e-02 -3.1488728523254395e-01 - <_> - - 0 -1 1258 1.5801090002059937e-01 - - 7.9839415848255157e-03 -6.4591610431671143e-01 - <_> - - 0 -1 1259 1.1954840272665024e-01 - - 3.0364699661731720e-02 -4.8359268903732300e-01 - <_> - - 0 -1 1260 -8.1479396612849087e-05 - - 9.1914586722850800e-02 -1.0646209865808487e-01 - <_> - - 0 -1 1261 2.5267980527132750e-03 - - 4.5257300138473511e-02 -3.4382629394531250e-01 - <_> - - 0 -1 1262 1.7898750305175781e-01 - - 1.4417519792914391e-02 -5.0265449285507202e-01 - <_> - - 0 -1 1263 -3.9555188268423080e-02 - - -3.5880690813064575e-01 3.4250080585479736e-02 - <_> - - 0 -1 1264 7.6789730228483677e-03 - - -1.1144369840621948e-01 1.3516369462013245e-01 - <_> - - 0 -1 1265 1.0572779923677444e-02 - - -4.3757978826761246e-02 3.1598579883575439e-01 - <_> - - 0 -1 1266 3.5706758499145508e-02 - - -1.5924380719661713e-01 8.3367466926574707e-02 - <_> - - 0 -1 1267 1.5176620334386826e-02 - - -1.0966440290212631e-01 1.4354470372200012e-01 - <_> - - 0 -1 1268 -5.1909979432821274e-02 - - 1.3713189959526062e-01 -2.8933400288224220e-02 - <_> - - 0 -1 1269 -2.4980900809168816e-02 - - 1.2819109857082367e-01 -1.0164009779691696e-01 - <_> - - 0 -1 1270 5.1697930321097374e-03 - - 3.9700139313936234e-02 -1.6936889290809631e-01 - <_> - - 0 -1 1271 -4.7851498238742352e-03 - - -2.8047218918800354e-01 4.2479898780584335e-02 - <_> - - 0 -1 1272 -1.1434390209615231e-02 - - -3.0073690414428711e-01 2.7911560609936714e-02 - <_> - - 0 -1 1273 3.1038429588079453e-02 - - -3.8415629416704178e-02 3.1910240650177002e-01 - <_> - - 0 -1 1274 1.9539990462362766e-03 - - 4.9008220434188843e-02 -2.4340090155601501e-01 - <_> - - 0 -1 1275 1.5783209819346666e-03 - - 4.9061909317970276e-02 -2.1728959679603577e-01 - <_> - - 0 -1 1276 -1.4102280139923096e-01 - - 1.2385349720716476e-01 -1.9456090405583382e-02 - <_> - - 0 -1 1277 2.5759469717741013e-02 - - -5.7730589061975479e-02 2.2352460026741028e-01 - <_> - - 0 -1 1278 -1.3943019509315491e-01 - - -4.3312790989875793e-01 5.1124738529324532e-03 - <_> - - 0 -1 1279 -9.7004458308219910e-02 - - -5.8657991886138916e-01 1.7181839793920517e-02 - <_> - - 0 -1 1280 9.5027927309274673e-03 - - -2.8794759884476662e-02 2.9738929867744446e-01 - <_> - - 0 -1 1281 -2.6246929541230202e-02 - - -2.1234120428562164e-01 4.9407571554183960e-02 - <_> - - 0 -1 1282 -2.8517890721559525e-02 - - -4.1019749641418457e-01 1.0724140331149101e-02 - <_> - - 0 -1 1283 -7.9501066356897354e-03 - - 2.9748660326004028e-01 -3.5765208303928375e-02 - <_> - - 0 -1 1284 -2.9474299401044846e-02 - - -2.7445879578590393e-01 3.7858150899410248e-02 - <_> - - 0 -1 1285 -1.9700409844517708e-02 - - -3.7312510609626770e-01 2.4606190621852875e-02 - <_> - - 0 -1 1286 2.0297240465879440e-02 - - -1.1456100270152092e-02 1.3001470267772675e-01 - <_> - - 0 -1 1287 -7.3365420103073120e-02 - - -3.3396759629249573e-01 2.8859499841928482e-02 - <_> - - 0 -1 1288 6.3272351399064064e-03 - - -7.6731666922569275e-02 1.5083900094032288e-01 - <_> - - 0 -1 1289 -1.3661600649356842e-01 - - 1.6243369877338409e-01 -9.5643773674964905e-02 - <_> - - 0 -1 1290 -1.0758030228316784e-02 - - -2.3738150298595428e-01 3.1558960676193237e-02 - <_> - - 0 -1 1291 6.6685132682323456e-02 - - 1.5413840301334858e-02 -6.2513381242752075e-01 - <_> - - 0 -1 1292 3.0325201153755188e-01 - - -2.9134880751371384e-02 3.6113429069519043e-01 - <_> - - 0 -1 1293 -1.5823159366846085e-02 - - -4.0985879302024841e-01 2.3118449375033379e-02 - <_> - - 0 -1 1294 2.5374559685587883e-02 - - -2.0472100004553795e-02 2.7052029967308044e-01 - <_> - - 0 -1 1295 1.6346940770745277e-02 - - -3.5330820828676224e-02 2.8036290407180786e-01 - <_> - - 0 -1 1296 3.4061360638588667e-03 - - -1.1166790127754211e-01 9.2086836695671082e-02 - <_> - - 0 -1 1297 2.3185899853706360e-01 - - -5.3374111652374268e-02 2.2651399672031403e-01 - <_> - - 0 -1 1298 8.7358150631189346e-03 - - 6.2240570783615112e-02 -1.6097889840602875e-01 - <_> - - 0 -1 1299 4.7981638461351395e-02 - - 3.2530840486288071e-02 -2.7026590704917908e-01 - <_> - - 0 -1 1300 3.2552659511566162e-02 - - -2.6799609884619713e-02 3.6133301258087158e-01 - <_> - - 0 -1 1301 -5.2017602138221264e-03 - - -2.2696959972381592e-01 5.3690869361162186e-02 - <_> - - 0 -1 1302 -5.2009779959917068e-02 - - 5.1674157381057739e-01 -2.0591339096426964e-02 - <_> - - 0 -1 1303 -5.0841891206800938e-03 - - 8.3876252174377441e-02 -1.2154210358858109e-01 - <_> - - 0 -1 1304 5.3035072050988674e-03 - - 3.1446810811758041e-02 -1.2339060008525848e-01 - <_> - - 0 -1 1305 4.5940061099827290e-03 - - -6.2744297087192535e-02 1.4181789755821228e-01 - <_> - - 0 -1 1306 6.9754808209836483e-03 - - 2.7987610548734665e-02 -3.0492180585861206e-01 - <_> - - 0 -1 1307 -3.3900879789143801e-03 - - -2.1763899922370911e-01 3.6219488829374313e-02 - <_> - - 0 -1 1308 9.5793427899479866e-03 - - -4.3325878679752350e-02 1.6427470743656158e-01 - <_> - - 0 -1 1309 -5.5032961070537567e-02 - - -2.6936888694763184e-01 3.2055959105491638e-02 - <_> - - 0 -1 1310 -9.5517598092556000e-02 - - 2.1610739827156067e-01 -5.8239780366420746e-02 - <_> - - 0 -1 1311 -8.8512140791863203e-04 - - 7.5295902788639069e-02 -1.2177939713001251e-01 - <_> - - 0 -1 1312 8.4586488083004951e-03 - - -4.5572049915790558e-02 2.8566330671310425e-01 - <_> - - 0 -1 1313 1.3831759989261627e-01 - - -3.0347919091582298e-02 2.8037178516387939e-01 - <_> - - 0 -1 1314 -8.5889035835862160e-03 - - 2.5955429673194885e-01 -2.4801440536975861e-02 - <_> - - 0 -1 1315 2.6830460410565138e-03 - - -1.3567750155925751e-01 7.5019992887973785e-02 - <_> - - 0 -1 1316 5.6114759296178818e-02 - - -1.3314700126647949e-01 6.7530378699302673e-02 - <_> - - 0 -1 1317 6.4768209122121334e-03 - - -4.2834509164094925e-02 2.2837740182876587e-01 - <_> - - 0 -1 1318 7.5396071188151836e-03 - - 1.7571780830621719e-02 -4.7123318910598755e-01 - <_> - - 0 -1 1319 -3.2276589423418045e-02 - - 1.6673429310321808e-01 -5.7283289730548859e-02 - <_> - - 0 -1 1320 8.1356316804885864e-03 - - 2.7268510311841965e-02 -1.1111909896135330e-01 - <_> - - 0 -1 1321 1.0477039963006973e-02 - - 2.6003930717706680e-02 -3.6761531233787537e-01 - <_> - - 0 -1 1322 3.0995670706033707e-02 - - -2.8645429760217667e-02 3.3150678873062134e-01 - <_> - - 0 -1 1323 -7.0666121318936348e-03 - - -4.0544331073760986e-01 2.5192549452185631e-02 - <_> - - 0 -1 1324 -3.6987180355936289e-03 - - 6.3140757381916046e-02 -3.2778479158878326e-02 - <_> - - 0 -1 1325 -3.0666269361972809e-02 - - 3.2546588778495789e-01 -2.7702359482645988e-02 - <_> - - 0 -1 1326 7.8880243003368378e-02 - - 1.5338109806180000e-02 -2.2066299617290497e-01 - <_> - - 0 -1 1327 -3.2662380486726761e-02 - - -2.6111158728599548e-01 3.9614301174879074e-02 - <_> - - 0 -1 1328 -2.0299869775772095e-01 - - 4.6856230497360229e-01 -2.1190289407968521e-02 - <_> - - 0 -1 1329 -1.3156479690223932e-03 - - 5.1139071583747864e-02 -1.7780220508575439e-01 - <_> - - 0 -1 1330 2.4586269259452820e-01 - - 2.0771999843418598e-03 -7.2302591800689697e-01 - <_> - - 0 -1 1331 9.6061620861291885e-03 - - -4.3856609612703323e-02 2.0256240665912628e-01 - <_> - - 0 -1 1332 9.2888638377189636e-02 - - 2.5762340053915977e-02 -8.1829749047756195e-02 - <_> - - 0 -1 1333 1.8360089743509889e-03 - - -1.0658069700002670e-01 7.7832147479057312e-02 - <_> - - 0 -1 1334 -1.0181380435824394e-02 - - -7.0450127124786377e-02 2.1115120500326157e-02 - <_> - - 0 -1 1335 2.2913800179958344e-01 - - 1.0578580200672150e-02 -8.1552761793136597e-01 - <_> - - 0 -1 1336 -2.1260060369968414e-02 - - -2.3754499852657318e-01 1.2737980112433434e-02 - <_> - - 0 -1 1337 1.9725849851965904e-03 - - 5.7212870568037033e-02 -1.3770629465579987e-01 - <_> - - 0 -1 1338 -4.6411700168391690e-05 - - 5.0291039049625397e-02 -5.7502999901771545e-02 - <_> - - 0 -1 1339 -3.6206799745559692e-01 - - -7.7337008714675903e-01 1.0174609720706940e-02 - <_> - - 0 -1 1340 -1.4286839962005615e-01 - - 3.6285620927810669e-01 -2.9650410637259483e-02 - <_> - - 0 -1 1341 -6.0175389051437378e-02 - - 1.0930059850215912e-01 -9.0728648006916046e-02 - <_> - - 0 -1 1342 4.7640471166232601e-05 - - -5.5577810853719711e-02 7.7917866408824921e-02 - <_> - - 0 -1 1343 -5.4806099797133356e-05 - - 8.5094630718231201e-02 -9.0222798287868500e-02 - <_> - - 0 -1 1344 -8.2555618137121201e-03 - - 1.6778500378131866e-01 -3.9129231125116348e-02 - <_> - - 0 -1 1345 -2.4975580163300037e-03 - - -2.5427588820457458e-01 3.1008599326014519e-02 - <_> - - 0 -1 1346 1.6913549602031708e-01 - - 7.6711731962859631e-03 -4.7778978943824768e-01 - <_> - - 0 -1 1347 8.0642458051443100e-03 - - 3.2001681625843048e-02 -2.2016289830207825e-01 - <_> - - 0 -1 1348 5.8364861615700647e-05 - - -9.2706032097339630e-02 9.2668697237968445e-02 - <_> - - 0 -1 1349 -2.4263940751552582e-02 - - 3.0613300204277039e-01 -2.3674689233303070e-02 - <_> - - 0 -1 1350 1.2453939765691757e-01 - - -1.1398720089346170e-03 6.5001028776168823e-01 - <_> - - 0 -1 1351 -3.0860610306262970e-02 - - -2.3400309681892395e-01 3.4316759556531906e-02 - <_> - - 0 -1 1352 1.2754309922456741e-02 - - -3.9132729172706604e-02 9.4901800155639648e-02 - <_> - - 0 -1 1353 3.7656739354133606e-02 - - 2.6196390390396118e-02 -3.0910909175872803e-01 - <_> - - 0 -1 1354 -3.1221879646182060e-02 - - -2.8618350625038147e-01 5.0922371447086334e-03 - <_> - - 0 -1 1355 -1.3468950055539608e-02 - - 2.1257250010967255e-01 -3.5957340151071548e-02 - <_> - - 0 -1 1356 -7.5858170166611671e-03 - - -1.4510390162467957e-01 2.8400380164384842e-02 - <_> - - 0 -1 1357 -3.2564129680395126e-02 - - 2.1210159361362457e-01 -3.3740561455488205e-02 - <_> - - 0 -1 1358 -4.7857668250799179e-02 - - -2.8939861059188843e-01 8.2710552960634232e-03 - <_> - - 0 -1 1359 4.0885780006647110e-02 - - 1.5406140126287937e-02 -5.2735280990600586e-01 - <_> - - 0 -1 1360 -1.1155439540743828e-02 - - 2.0481599867343903e-01 -3.8578160107135773e-02 - <_> - - 0 -1 1361 -4.3652538210153580e-02 - - -5.6057322025299072e-01 1.5544040128588676e-02 - <_> - - 0 -1 1362 -2.3742709308862686e-02 - - -7.8456741571426392e-01 3.1750639900565147e-03 - <_> - - 0 -1 1363 1.0698919743299484e-01 - - -2.6180049404501915e-02 2.7015981078147888e-01 - <_> - - 0 -1 1364 3.7855070084333420e-02 - - 6.5697189420461655e-03 -4.0291649103164673e-01 - <_> - - 0 -1 1365 -3.0002340674400330e-02 - - -3.6409360170364380e-01 1.9139550626277924e-02 - <_> - - 0 -1 1366 1.7724040895700455e-02 - - 1.2176860123872757e-02 -3.6743289232254028e-01 - <_> - - 0 -1 1367 -7.9289022833108902e-03 - - -2.3455849289894104e-01 3.1265281140804291e-02 - <_> - - 0 -1 1368 -4.1190151125192642e-02 - - 1.7809179425239563e-01 -2.8660740703344345e-02 - <_> - - 0 -1 1369 1.0414299555122852e-02 - - -4.6135619282722473e-02 2.2065189480781555e-01 - <_> - - 0 -1 1370 -6.2351129949092865e-02 - - -6.0133552551269531e-01 1.1970040388405323e-02 - <_> - - 0 -1 1371 1.0768829844892025e-02 - - -3.7883501499891281e-02 1.9194099307060242e-01 - <_> - - 0 -1 1372 -1.5350959729403257e-03 - - 1.3435329496860504e-01 -5.9909719973802567e-02 - <_> - - 0 -1 1373 -4.9390122294425964e-03 - - -2.2644749283790588e-01 3.3138100057840347e-02 - <_> - - 0 -1 1374 2.9866439290344715e-03 - - 3.9536539465188980e-02 -1.7985729873180389e-01 - <_> - - 0 -1 1375 7.1302180003840476e-05 - - -1.2174189835786819e-01 5.7866320013999939e-02 - <_> - - 0 -1 1376 1.4132769778370857e-02 - - -6.9726303219795227e-02 1.0778389871120453e-01 - <_> - - 0 -1 1377 -8.7037831544876099e-03 - - 1.3537360727787018e-01 -6.1749380081892014e-02 - <_> - - 0 -1 1378 -3.9659719914197922e-02 - - 2.8668469190597534e-01 -4.0120128542184830e-03 - <_> - - 0 -1 1379 1.6550280153751373e-02 - - -5.4914530366659164e-02 1.5019510686397552e-01 - <_> - - 0 -1 1380 1.8208170309662819e-02 - - -7.1605183184146881e-02 1.9685640931129456e-02 - <_> - - 0 -1 1381 -2.9519250616431236e-02 - - 2.0991930365562439e-01 -4.3216299265623093e-02 - <_> - - 0 -1 1382 -2.1285060793161392e-02 - - 1.8691639602184296e-01 -2.3788860067725182e-02 - <_> - - 0 -1 1383 3.7830621004104614e-02 - - -1.2754780054092407e-01 7.2359248995780945e-02 - <_> - - 0 -1 1384 1.1643759906291962e-02 - - -4.6442810446023941e-02 1.3790960609912872e-01 - <_> - - 0 -1 1385 -5.9127039276063442e-03 - - -1.6960899531841278e-01 4.4999938458204269e-02 - <_> - - 0 -1 1386 -5.7644449174404144e-02 - - -2.9772061109542847e-01 8.5106249898672104e-03 - <_> - - 0 -1 1387 -5.3929239511489868e-02 - - -3.4829708933830261e-01 2.0777279511094093e-02 - <_> - - 0 -1 1388 7.7844387851655483e-04 - - -1.0678429901599884e-01 6.3128329813480377e-02 - <_> - - 0 -1 1389 2.1701509132981300e-02 - - -4.3070908635854721e-02 2.0515139400959015e-01 - <_> - - 0 -1 1390 1.4290180057287216e-02 - - 4.0106780827045441e-02 -1.9636610150337219e-01 - <_> - - 0 -1 1391 4.7906510531902313e-02 - - 2.6682909578084946e-02 -2.6081061363220215e-01 - <_> - - 0 -1 1392 2.0704690366983414e-02 - - 8.2300165668129921e-03 -1.7172940075397491e-01 - <_> - - 0 -1 1393 -2.2899899631738663e-02 - - -3.7081000208854675e-01 1.8541749566793442e-02 - <_> - - 0 -1 1394 -1.9879220053553581e-03 - - 1.6436809301376343e-01 -2.1798299625515938e-02 - <_> - - 0 -1 1395 5.4986838222248480e-05 - - -6.4901493489742279e-02 1.0623300075531006e-01 - <_> - - 0 -1 1396 1.3559920480474830e-03 - - -2.4597849696874619e-02 1.4361660182476044e-01 - <_> - - 0 -1 1397 -2.6802290449268185e-05 - - 7.7275946736335754e-02 -9.1653436422348022e-02 - <_> - - 0 -1 1398 -7.1620233356952667e-02 - - -2.4552260339260101e-01 2.9534120112657547e-02 - <_> - - 0 -1 1399 2.4330910295248032e-02 - - 4.1399519890546799e-02 -1.5903189778327942e-01 - <_> - - 0 -1 1400 2.7946570888161659e-02 - - 2.2586109116673470e-03 -6.7318201065063477e-01 - <_> - - 0 -1 1401 -1.4360989443957806e-03 - - 1.0648050159215927e-01 -6.4426578581333160e-02 - <_> - - 0 -1 1402 4.7291368246078491e-03 - - 1.9701540470123291e-02 -2.8576970100402832e-01 - <_> - - 0 -1 1403 -9.9202662706375122e-02 - - -3.5200428962707520e-01 1.6816059127449989e-02 - <_> - - 0 -1 1404 -8.9718345552682877e-03 - - 9.1350711882114410e-02 -2.3734020069241524e-02 - <_> - - 0 -1 1405 3.2134570647031069e-03 - - -4.9445088952779770e-02 1.4231130480766296e-01 - <_> - - 0 -1 1406 -1.0166129795834422e-03 - - 6.4581580460071564e-02 -1.9129069522023201e-02 - <_> - - 0 -1 1407 -6.1253100284375250e-05 - - 8.3547137677669525e-02 -9.0619690716266632e-02 - <_> - - 0 -1 1408 -1.1647429782897234e-03 - - -1.7997290194034576e-01 4.0095169097185135e-02 - <_> - - 0 -1 1409 -6.4332097768783569e-02 - - -3.8692688941955566e-01 1.7440609633922577e-02 - <_> - - 0 -1 1410 -1.3757969439029694e-01 - - 2.2808580100536346e-01 -3.2859951257705688e-02 - <_> - - 0 -1 1411 7.3165339417755604e-03 - - 4.2987760156393051e-02 -1.5990610420703888e-01 - <_> - - 0 -1 1412 2.1075239405035973e-02 - - 1.3760750181972980e-02 -9.7436219453811646e-02 - <_> - - 0 -1 1413 4.7083821147680283e-02 - - -7.1691006422042847e-02 1.0700540244579315e-01 - <_> - - 0 -1 1414 5.9396019205451012e-03 - - -6.3396736979484558e-02 3.8722541183233261e-02 - <_> - - 0 -1 1415 5.8197128772735596e-01 - - 2.1600350737571716e-02 -3.7873318791389465e-01 - <_> - - 0 -1 1416 1.6042120754718781e-02 - - -4.6681709587574005e-02 1.4364209771156311e-01 - <_> - - 0 -1 1417 -3.8316261023283005e-02 - - -6.2408488988876343e-01 1.0848820209503174e-02 - <_> - - 0 -1 1418 1.2451539933681488e-01 - - -9.1985529288649559e-03 1.1172670125961304e-01 - <_> - - 0 -1 1419 1.2287569791078568e-01 - - -1.3092120178043842e-02 5.2221369743347168e-01 - <_> - - 0 -1 1420 -9.1833565384149551e-03 - - -7.5866103172302246e-02 2.5587979704141617e-02 - <_> - - 0 -1 1421 1.6818720847368240e-02 - - -3.0961170792579651e-02 2.3137600719928741e-01 - <_> - - 0 -1 1422 6.6163040173705667e-05 - - -5.9390440583229065e-02 7.4203498661518097e-02 - <_> - - 0 -1 1423 -5.4877910763025284e-02 - - 2.5981691479682922e-01 -2.6993019506335258e-02 - <_> - - 0 -1 1424 -7.6188119128346443e-03 - - 1.3379520177841187e-01 -5.5999118834733963e-02 - <_> - - 0 -1 1425 -2.3362420499324799e-01 - - 3.2755351066589355e-01 -2.1469429135322571e-02 - <_> - - 0 -1 1426 -1.1149320006370544e-01 - - -2.4463839828968048e-01 3.6242511123418808e-02 - <_> - - 0 -1 1427 -4.4157028198242188e-02 - - 4.3402171134948730e-01 -1.6649100929498672e-02 - <_> - - 0 -1 1428 -5.7168701459886506e-05 - - 6.6894836723804474e-02 -5.0718188285827637e-02 - <_> - - 0 -1 1429 5.3646868764190003e-05 - - -8.0378301441669464e-02 8.1809766590595245e-02 - <_> - - 0 -1 1430 1.0595089942216873e-01 - - 5.0716297701001167e-03 -6.4737159013748169e-01 - <_> - - 0 -1 1431 8.3668403327465057e-02 - - 8.6071500554680824e-03 -6.5093028545379639e-01 - <_> - - 0 -1 1432 8.3153052255511284e-03 - - -4.7283139079809189e-02 1.9029919803142548e-01 - <_> - - 0 -1 1433 -6.2146518379449844e-02 - - -1.8513560295104980e-01 4.3402440845966339e-02 - <_> - - 0 -1 1434 -1.5061040176078677e-03 - - -4.2554888874292374e-02 4.7270778566598892e-02 - <_> - - 0 -1 1435 -1.2630449607968330e-02 - - 1.0056299716234207e-01 -7.0035003125667572e-02 - <_> - - 0 -1 1436 -7.2226561605930328e-03 - - -1.3512469828128815e-01 1.6519190743565559e-02 - <_> - - 0 -1 1437 3.9844110608100891e-02 - - 6.1076539568603039e-03 -1.0002349615097046e+00 - <_> - - 0 -1 1438 5.3863292932510376e-01 - - 4.2299588676542044e-04 -9.8810201883316040e-01 - <_> - - 0 -1 1439 -2.4347769096493721e-02 - - -9.8886072635650635e-01 4.6373298391699791e-03 - <_> - - 0 -1 1440 4.4827940873801708e-03 - - -5.4137490689754486e-02 1.3800579309463501e-01 - <_> - - 0 -1 1441 7.9640939831733704e-02 - - -5.7961471378803253e-02 1.0780200362205505e-01 - <_> - - 0 -1 1442 6.5154298208653927e-03 - - -9.5109693706035614e-02 7.6177991926670074e-02 - <_> - - 0 -1 1443 6.3926346600055695e-02 - - 2.2149670869112015e-02 -3.6810970306396484e-01 - <_> - 211 - -1.2603249549865723e+00 - - <_> - - 0 -1 1444 -2.2702280431985855e-02 - - 3.4584361314773560e-01 -1.4961080253124237e-01 - <_> - - 0 -1 1445 -1.1325979605317116e-02 - - 9.4636216759681702e-02 -1.4820310473442078e-01 - <_> - - 0 -1 1446 -1.0080899810418487e-03 - - 1.4881299436092377e-01 -2.3232239484786987e-01 - <_> - - 0 -1 1447 -1.0500989854335785e-01 - - -2.1537660062313080e-01 8.9450702071189880e-02 - <_> - - 0 -1 1448 -1.2677620165050030e-02 - - 2.7584138512611389e-01 -1.1488199979066849e-01 - <_> - - 0 -1 1449 4.9704289995133877e-03 - - 4.4038921594619751e-02 -1.6276310384273529e-01 - <_> - - 0 -1 1450 6.1556040309369564e-03 - - 7.4212923645973206e-02 -3.2477781176567078e-01 - <_> - - 0 -1 1451 -7.2180028073489666e-03 - - 4.2525339126586914e-01 -2.7641389518976212e-02 - <_> - - 0 -1 1452 2.9266420751810074e-03 - - -5.2912838757038116e-02 3.9208140969276428e-01 - <_> - - 0 -1 1453 7.9688094556331635e-03 - - 3.3333700150251389e-02 -4.1967239975929260e-01 - <_> - - 0 -1 1454 4.5101311989128590e-03 - - -4.7721531242132187e-02 4.4400349259376526e-01 - <_> - - 0 -1 1455 -7.2346827946603298e-03 - - -4.2018109560012817e-01 5.5328268557786942e-02 - <_> - - 0 -1 1456 5.4523041471838951e-03 - - 4.2710270732641220e-02 -4.0073931217193604e-01 - <_> - - 0 -1 1457 1.3547390699386597e-01 - - 1.3275199569761753e-02 -4.1893950104713440e-01 - <_> - - 0 -1 1458 -2.8521999716758728e-02 - - 7.1237042546272278e-02 -2.3564490675926208e-01 - <_> - - 0 -1 1459 -6.7890807986259460e-02 - - -6.0827171802520752e-01 2.7981699531665072e-05 - <_> - - 0 -1 1460 -2.7107769710710272e-05 - - 1.0022850334644318e-01 -1.3644769787788391e-01 - <_> - - 0 -1 1461 -2.5962561368942261e-01 - - -1.3785040378570557e-01 2.6653099805116653e-02 - <_> - - 0 -1 1462 1.1885579675436020e-01 - - 2.7489190921187401e-02 -5.4295271635055542e-01 - <_> - - 0 -1 1463 5.6852251291275024e-02 - - -1.1255219578742981e-02 3.8339531421661377e-01 - <_> - - 0 -1 1464 4.1569471359252930e-02 - - -4.1771259158849716e-02 3.4204569458961487e-01 - <_> - - 0 -1 1465 4.4139921665191650e-02 - - -2.2549359127879143e-02 4.6690988540649414e-01 - <_> - - 0 -1 1466 1.0635829716920853e-01 - - 2.9710769653320312e-02 -4.5093208551406860e-01 - <_> - - 0 -1 1467 -8.2869287580251694e-03 - - -1.2223249673843384e-01 5.3247738629579544e-02 - <_> - - 0 -1 1468 3.6731671541929245e-02 - - 4.2036790400743484e-02 -4.4834709167480469e-01 - <_> - - 0 -1 1469 -5.7765528559684753e-02 - - -5.4591369628906250e-01 7.4861990287899971e-03 - <_> - - 0 -1 1470 1.7487849295139313e-01 - - 2.8172209858894348e-02 -4.3244078755378723e-01 - <_> - - 0 -1 1471 -2.5779709176276810e-05 - - 8.4961481392383575e-02 -9.3616262078285217e-02 - <_> - - 0 -1 1472 4.4103060645284131e-05 - - -1.5745340287685394e-01 7.8559979796409607e-02 - <_> - - 0 -1 1473 -2.5306469760835171e-03 - - -1.8604919314384460e-01 1.3255439698696136e-02 - <_> - - 0 -1 1474 -2.5649809686001390e-05 - - 1.0800860077142715e-01 -1.1497180163860321e-01 - <_> - - 0 -1 1475 -5.4274487495422363e-01 - - -6.5146768093109131e-01 1.9872210919857025e-02 - <_> - - 0 -1 1476 1.0453820228576660e-02 - - -5.7684049010276794e-02 2.1809279918670654e-01 - <_> - - 0 -1 1477 -2.4684870368218981e-05 - - 7.0307686924934387e-02 -6.8771660327911377e-02 - <_> - - 0 -1 1478 -3.8687910884618759e-02 - - -2.3570249974727631e-01 5.9372939169406891e-02 - <_> - - 0 -1 1479 1.4677809551358223e-02 - - -4.5802700333297253e-03 6.6445422172546387e-01 - <_> - - 0 -1 1480 -1.0180200450122356e-02 - - 5.2202922105789185e-01 -2.3886220529675484e-02 - <_> - - 0 -1 1481 2.5779709176276810e-05 - - -7.5542762875556946e-02 1.0763020068407059e-01 - <_> - - 0 -1 1482 -2.3739310563541949e-05 - - 1.1347659677267075e-01 -1.1764179915189743e-01 - <_> - - 0 -1 1483 -1.1001049540936947e-02 - - -4.1635859012603760e-01 2.9155520722270012e-02 - <_> - - 0 -1 1484 -1.0040359571576118e-02 - - 5.0152337551116943e-01 -2.4473249912261963e-02 - <_> - - 0 -1 1485 1.1051800101995468e-02 - - 3.7960179150104523e-02 -2.9772630333900452e-01 - <_> - - 0 -1 1486 -1.2089540250599384e-02 - - -5.1634800434112549e-01 2.1521920338273048e-02 - <_> - - 0 -1 1487 -8.4410563111305237e-02 - - 4.9133801460266113e-01 -1.4603810384869576e-02 - <_> - - 0 -1 1488 2.2714000195264816e-02 - - -4.8863139003515244e-02 2.3572869598865509e-01 - <_> - - 0 -1 1489 2.3879110813140869e-05 - - -6.4245767891407013e-02 6.5696552395820618e-02 - <_> - - 0 -1 1490 2.5649809686001390e-05 - - -1.0076279938220978e-01 1.0067179799079895e-01 - <_> - - 0 -1 1491 1.0682299733161926e-02 - - 1.1979729868471622e-02 -4.7588628530502319e-01 - <_> - - 0 -1 1492 1.4251710474491119e-01 - - 2.6978740468621254e-02 -3.5890379548072815e-01 - <_> - - 0 -1 1493 2.6178720872849226e-05 - - -5.1943808794021606e-02 5.9698838740587234e-02 - <_> - - 0 -1 1494 1.5015379758551717e-03 - - 4.2682919651269913e-02 -2.4742330610752106e-01 - <_> - - 0 -1 1495 2.7750380468205549e-05 - - -6.5969876945018768e-02 9.5235317945480347e-02 - <_> - - 0 -1 1496 -2.3739310563541949e-05 - - 9.1440632939338684e-02 -1.1401320248842239e-01 - <_> - - 0 -1 1497 1.8318339716643095e-03 - - -3.5802870988845825e-02 2.8000190854072571e-01 - <_> - - 0 -1 1498 -2.6216499463771470e-05 - - 1.1927170306444168e-01 -9.0051122009754181e-02 - <_> - - 0 -1 1499 1.8415799364447594e-02 - - 2.8677040711045265e-02 -3.4597221016883850e-01 - <_> - - 0 -1 1500 -2.5649809686001390e-05 - - 1.0555200278759003e-01 -9.3961820006370544e-02 - <_> - - 0 -1 1501 -4.4283028692007065e-02 - - -3.9377251267433167e-01 2.4995140731334686e-02 - <_> - - 0 -1 1502 -3.7492141127586365e-02 - - 4.0750551223754883e-01 -2.4686330929398537e-02 - <_> - - 0 -1 1503 -2.4684870368218981e-05 - - 5.9588670730590820e-02 -4.2587179690599442e-02 - <_> - - 0 -1 1504 -2.3879110813140869e-05 - - 1.1652469635009766e-01 -8.1122256815433502e-02 - <_> - - 0 -1 1505 -3.9012550842016935e-03 - - -2.5430038571357727e-01 3.8077041506767273e-02 - <_> - - 0 -1 1506 -2.6903450489044189e-03 - - 3.0911579728126526e-01 -3.1062390655279160e-02 - <_> - - 0 -1 1507 -7.0722219534218311e-03 - - -2.1491000056266785e-01 3.0251279473304749e-02 - <_> - - 0 -1 1508 2.1917349658906460e-03 - - 5.5682230740785599e-02 -1.6676320135593414e-01 - <_> - - 0 -1 1509 2.5904899302986450e-05 - - -1.2242270261049271e-01 8.2701347768306732e-02 - <_> - - 0 -1 1510 -8.6123133078217506e-03 - - 1.5256710350513458e-01 -7.0295087993144989e-02 - <_> - - 0 -1 1511 -3.2312501221895218e-02 - - 1.0563810169696808e-01 -8.8757291436195374e-02 - <_> - - 0 -1 1512 -2.4041660130023956e-01 - - -5.6874710321426392e-01 1.5582700259983540e-02 - <_> - - 0 -1 1513 -3.6818000953644514e-03 - - 3.9008429646492004e-01 -2.4482680484652519e-02 - <_> - - 0 -1 1514 -3.7560980767011642e-02 - - -5.9190589189529419e-01 1.4883680269122124e-02 - <_> - - 0 -1 1515 -2.6046231389045715e-01 - - -8.0789750814437866e-01 8.0495169386267662e-03 - <_> - - 0 -1 1516 2.2003079950809479e-01 - - 1.1459389701485634e-02 -6.6569620370864868e-01 - <_> - - 0 -1 1517 1.4207080006599426e-02 - - 1.1487069539725780e-02 -4.3284940719604492e-01 - <_> - - 0 -1 1518 1.9708760082721710e-03 - - -3.1346779316663742e-02 2.8304418921470642e-01 - <_> - - 0 -1 1519 -1.6858950257301331e-02 - - -6.4982718229293823e-01 9.0222535654902458e-03 - <_> - - 0 -1 1520 1.1876899749040604e-01 - - 2.9948050156235695e-02 -2.9692101478576660e-01 - <_> - - 0 -1 1521 3.5489429719746113e-03 - - 2.2447990253567696e-02 -1.1885970085859299e-01 - <_> - - 0 -1 1522 3.2591039780527353e-03 - - 4.3978188186883926e-02 -2.0008519291877747e-01 - <_> - - 0 -1 1523 -6.9489958696067333e-03 - - 1.0979989916086197e-01 -5.1372870802879333e-02 - <_> - - 0 -1 1524 1.1651299893856049e-02 - - -3.9162278175354004e-02 2.3111459612846375e-01 - <_> - - 0 -1 1525 -2.0093740895390511e-03 - - 6.5508507192134857e-02 -3.6176491528749466e-02 - <_> - - 0 -1 1526 4.4954619370400906e-03 - - -7.4295833706855774e-02 1.4806370437145233e-01 - <_> - - 0 -1 1527 4.0165609680116177e-03 - - 1.9205560907721519e-02 -1.3202959299087524e-01 - <_> - - 0 -1 1528 5.1109711639583111e-03 - - 3.0545530840754509e-02 -3.2131591439247131e-01 - <_> - - 0 -1 1529 2.6829841081053019e-03 - - 2.5536099448800087e-02 -1.1544889956712723e-01 - <_> - - 0 -1 1530 -3.2579500693827868e-03 - - -2.5272831320762634e-01 3.9438471198081970e-02 - <_> - - 0 -1 1531 -1.9859049934893847e-03 - - 2.6658049225807190e-01 -4.6847358345985413e-02 - <_> - - 0 -1 1532 -1.2540949881076813e-01 - - -4.0570110082626343e-01 2.3068020120263100e-02 - <_> - - 0 -1 1533 5.4464139975607395e-03 - - -3.3851519227027893e-02 1.0910320281982422e-01 - <_> - - 0 -1 1534 -2.9129069298505783e-02 - - 8.2942448556423187e-02 -1.0390459746122360e-01 - <_> - - 0 -1 1535 -5.3342789411544800e-02 - - 1.4234119653701782e-01 -6.3767828047275543e-02 - <_> - - 0 -1 1536 -6.9826036691665649e-02 - - -2.9960519075393677e-01 3.8142379373311996e-02 - <_> - - 0 -1 1537 1.0430120164528489e-03 - - -4.8670019954442978e-02 2.2043199837207794e-01 - <_> - - 0 -1 1538 4.8559759743511677e-03 - - -9.1000363230705261e-02 9.7604036331176758e-02 - <_> - - 0 -1 1539 -5.6559829972684383e-03 - - 5.0467990338802338e-02 -8.2895793020725250e-02 - <_> - - 0 -1 1540 -3.9691910147666931e-01 - - -5.9703147411346436e-01 1.7244290560483932e-02 - <_> - - 0 -1 1541 -5.4687079042196274e-02 - - 3.9003100991249084e-01 -2.5155629962682724e-02 - <_> - - 0 -1 1542 -6.4253779128193855e-03 - - -2.5506249070167542e-01 3.9406619966030121e-02 - <_> - - 0 -1 1543 8.5719041526317596e-03 - - 1.8664859235286713e-02 -2.2203260660171509e-01 - <_> - - 0 -1 1544 1.2086849892511964e-03 - - -7.2148896753787994e-02 1.1844079941511154e-01 - <_> - - 0 -1 1545 -1.3033949770033360e-02 - - 2.0586760342121124e-01 -1.5820149332284927e-02 - <_> - - 0 -1 1546 7.2425887919962406e-03 - - -6.3072256743907928e-02 1.4706359803676605e-01 - <_> - - 0 -1 1547 -1.5267370268702507e-02 - - -2.6799020171165466e-01 6.9345328956842422e-03 - <_> - - 0 -1 1548 5.9866169467568398e-03 - - 3.3543970435857773e-02 -2.6078468561172485e-01 - <_> - - 0 -1 1549 -1.0885690338909626e-02 - - 8.5525132715702057e-02 -2.1214239299297333e-02 - <_> - - 0 -1 1550 4.8979911953210831e-03 - - -4.5136060565710068e-02 2.2412009537220001e-01 - <_> - - 0 -1 1551 -1.9256390631198883e-01 - - -6.3481587171554565e-01 4.2262570932507515e-03 - <_> - - 0 -1 1552 1.0860689729452133e-01 - - 1.7091739922761917e-02 -5.4510730504989624e-01 - <_> - - 0 -1 1553 -5.4836701601743698e-02 - - -3.5489219427108765e-01 4.5531531795859337e-03 - <_> - - 0 -1 1554 5.8792168274521828e-03 - - 1.5520109795033932e-02 -5.4079991579055786e-01 - <_> - - 0 -1 1555 7.5071100145578384e-03 - - -1.5854269266128540e-02 6.6651731729507446e-02 - <_> - - 0 -1 1556 1.6902120783925056e-02 - - 2.2205380722880363e-02 -3.7370339035987854e-01 - <_> - - 0 -1 1557 -3.1124811357585713e-05 - - 3.3728368580341339e-02 -6.2124319374561310e-02 - <_> - - 0 -1 1558 -7.8268267214298248e-02 - - 4.3044888973236084e-01 -1.9318610429763794e-02 - <_> - - 0 -1 1559 2.2108739241957664e-02 - - 1.3979909941554070e-02 -4.2325040698051453e-01 - <_> - - 0 -1 1560 5.4141050204634666e-03 - - 4.2009621858596802e-02 -1.8368819355964661e-01 - <_> - - 0 -1 1561 2.6600460842018947e-05 - - -5.3144950419664383e-02 6.6343963146209717e-02 - <_> - - 0 -1 1562 2.4684870368218981e-05 - - -8.5169032216072083e-02 1.0345680266618729e-01 - <_> - - 0 -1 1563 9.6517298370599747e-03 - - -6.7758128046989441e-02 1.2381830066442490e-01 - <_> - - 0 -1 1564 2.3739310563541949e-05 - - -1.0852000117301941e-01 8.2693062722682953e-02 - <_> - - 0 -1 1565 2.5218860246241093e-03 - - -1.0458250343799591e-01 6.6328182816505432e-02 - <_> - - 0 -1 1566 -5.2996139973402023e-02 - - 2.3921950161457062e-01 -4.1141789406538010e-02 - <_> - - 0 -1 1567 2.9717630241066217e-03 - - 3.5355281084775925e-02 -1.5361009538173676e-01 - <_> - - 0 -1 1568 -5.0528207793831825e-03 - - -2.8384080529212952e-01 2.9197370633482933e-02 - <_> - - 0 -1 1569 -1.4023650437593460e-03 - - 1.9387529790401459e-01 -2.3465460166335106e-02 - <_> - - 0 -1 1570 2.6361160053056665e-05 - - -1.3175390660762787e-01 6.1764400452375412e-02 - <_> - - 0 -1 1571 5.7318392209708691e-03 - - -3.7673819810152054e-02 1.4864000678062439e-01 - <_> - - 0 -1 1572 4.6025160700082779e-03 - - -6.0082349926233292e-02 1.4757469296455383e-01 - <_> - - 0 -1 1573 4.9826940521597862e-03 - - 5.0217468291521072e-02 -1.7708259820938110e-01 - <_> - - 0 -1 1574 -7.3296032845973969e-02 - - -4.9743050336837769e-01 1.6706680878996849e-02 - <_> - - 0 -1 1575 -1.4238869771361351e-02 - - 5.2175557613372803e-01 -1.1300929822027683e-02 - <_> - - 0 -1 1576 1.8155459314584732e-02 - - -3.8824878633022308e-02 2.0927000045776367e-01 - <_> - - 0 -1 1577 -2.5779709176276810e-05 - - 6.4905673265457153e-02 -7.3861442506313324e-02 - <_> - - 0 -1 1578 2.9359169275267050e-05 - - -7.5759023427963257e-02 1.1070480197668076e-01 - <_> - - 0 -1 1579 2.5904899302986450e-05 - - -5.6690879166126251e-02 7.0565029978752136e-02 - <_> - - 0 -1 1580 2.5659629609435797e-03 - - -2.2681709378957748e-02 3.2642030715942383e-01 - <_> - - 0 -1 1581 -4.3134070932865143e-02 - - 9.1313943266868591e-02 -7.7684916555881500e-02 - <_> - - 0 -1 1582 1.1505100131034851e-01 - - -5.3883530199527740e-02 1.7382779717445374e-01 - <_> - - 0 -1 1583 3.7683431059122086e-02 - - 1.1911179870367050e-02 -1.6320049762725830e-01 - <_> - - 0 -1 1584 2.8705120086669922e-02 - - 2.3064490407705307e-02 -3.4346461296081543e-01 - <_> - - 0 -1 1585 7.4174538254737854e-02 - - -3.6453459411859512e-02 2.2265499830245972e-01 - <_> - - 0 -1 1586 3.8726661354303360e-02 - - -8.6111679673194885e-02 9.4164192676544189e-02 - <_> - - 0 -1 1587 -4.1428101249039173e-03 - - -1.2223830074071884e-01 3.4176569432020187e-02 - <_> - - 0 -1 1588 2.4673599749803543e-02 - - 5.6583188474178314e-02 -1.4888830482959747e-01 - <_> - - 0 -1 1589 9.9808704107999802e-03 - - -1.9759509712457657e-02 3.0300268530845642e-01 - <_> - - 0 -1 1590 -6.6217122366651893e-05 - - 8.9724272489547729e-02 -8.9633807539939880e-02 - <_> - - 0 -1 1591 1.9440250471234322e-03 - - 4.5923989266157150e-02 -1.6087460517883301e-01 - <_> - - 0 -1 1592 -9.9218348041176796e-03 - - -3.3827519416809082e-01 2.3345960304141045e-02 - <_> - - 0 -1 1593 2.7032099751522765e-05 - - -7.1613729000091553e-02 1.4374250173568726e-01 - <_> - - 0 -1 1594 -1.1575380340218544e-02 - - 7.2989538311958313e-02 -1.1206659674644470e-01 - <_> - - 0 -1 1595 3.8227710127830505e-01 - - 4.3869050568901002e-04 -9.6936649084091187e-01 - <_> - - 0 -1 1596 2.5604510679841042e-02 - - -5.3209688514471054e-02 1.6056999564170837e-01 - <_> - - 0 -1 1597 6.5232798457145691e-02 - - -5.0901030190289021e-03 1.0526590049266815e-01 - <_> - - 0 -1 1598 -7.6533563435077667e-02 - - -2.7622249722480774e-01 2.9837079346179962e-02 - <_> - - 0 -1 1599 -3.0668321414850652e-05 - - 4.9761619418859482e-02 -6.4698956906795502e-02 - <_> - - 0 -1 1600 -7.1437079459428787e-03 - - 4.2741951346397400e-01 -1.7721550539135933e-02 - <_> - - 0 -1 1601 -7.0699103176593781e-02 - - -3.1640189886093140e-01 2.4211840704083443e-02 - <_> - - 0 -1 1602 8.3971813321113586e-02 - - 7.6198792085051537e-03 -8.0655181407928467e-01 - <_> - - 0 -1 1603 4.9757468700408936e-01 - - 6.2387259677052498e-03 -8.3056390285491943e-01 - <_> - - 0 -1 1604 5.4929931648075581e-03 - - 2.6602910831570625e-02 -2.2599579393863678e-01 - <_> - - 0 -1 1605 -2.7536999434232712e-02 - - 1.8433550000190735e-01 -7.0537109859287739e-03 - <_> - - 0 -1 1606 4.5211901888251305e-03 - - -5.4292399436235428e-02 1.2545329332351685e-01 - <_> - - 0 -1 1607 3.8641680032014847e-02 - - 8.4282690659165382e-03 -2.1961739659309387e-01 - <_> - - 0 -1 1608 -2.1654170006513596e-02 - - -2.8082931041717529e-01 2.4411179125308990e-02 - <_> - - 0 -1 1609 -2.9021130874752998e-02 - - -3.1314170360565186e-01 2.2386759519577026e-02 - <_> - - 0 -1 1610 -4.4424049556255341e-03 - - 6.4938491582870483e-01 -1.1466369964182377e-02 - <_> - - 0 -1 1611 1.4012949541211128e-02 - - -5.6059911847114563e-02 1.2263079732656479e-01 - <_> - - 0 -1 1612 7.5773880816996098e-03 - - -7.3808819055557251e-02 9.7556889057159424e-02 - <_> - - 0 -1 1613 -2.6077621150761843e-03 - - -9.1106370091438293e-02 2.9852710664272308e-02 - <_> - - 0 -1 1614 2.3739310563541949e-05 - - -7.3772080242633820e-02 9.1605342924594879e-02 - <_> - - 0 -1 1615 2.4684870368218981e-05 - - -6.9059409201145172e-02 1.3202320039272308e-01 - <_> - - 0 -1 1616 -5.7401981204748154e-02 - - 1.4494429528713226e-01 -6.0069218277931213e-02 - <_> - - 0 -1 1617 -9.3912649899721146e-03 - - 5.0085651874542236e-01 -4.1706929914653301e-03 - <_> - - 0 -1 1618 2.6128649551537819e-05 - - -7.6227553188800812e-02 1.2607720494270325e-01 - <_> - - 0 -1 1619 5.0317928194999695e-02 - - 1.0360590182244778e-02 -3.1897589564323425e-01 - <_> - - 0 -1 1620 5.1848609000444412e-03 - - -6.4724229276180267e-02 1.2341039627790451e-01 - <_> - - 0 -1 1621 -3.3910661004483700e-03 - - -1.0288400202989578e-01 4.4040981680154800e-02 - <_> - - 0 -1 1622 6.0285101644694805e-03 - - 3.7052210420370102e-02 -2.1273019909858704e-01 - <_> - - 0 -1 1623 -2.4773539975285530e-02 - - 3.0380809307098389e-01 -1.4165430329740047e-02 - <_> - - 0 -1 1624 1.6291119158267975e-02 - - -6.7963749170303345e-02 1.0207100212574005e-01 - <_> - - 0 -1 1625 8.6468607187271118e-02 - - 4.0547042153775692e-03 -4.7402960062026978e-01 - <_> - - 0 -1 1626 3.6333149764686823e-03 - - -3.5381391644477844e-02 2.0167960226535797e-01 - <_> - - 0 -1 1627 1.8694689497351646e-03 - - 2.2365350276231766e-02 -5.7087961584329605e-02 - <_> - - 0 -1 1628 -3.7068868987262249e-03 - - -1.6035629808902740e-01 4.5690719038248062e-02 - <_> - - 0 -1 1629 -3.0651168344775215e-05 - - 3.5478990525007248e-02 -3.4492049366235733e-02 - <_> - - 0 -1 1630 -4.0897028520703316e-03 - - -2.6812940835952759e-01 2.7717530727386475e-02 - <_> - - 0 -1 1631 -9.0142004191875458e-03 - - 1.2767490744590759e-01 -2.5871720165014267e-02 - <_> - - 0 -1 1632 1.0104560293257236e-02 - - 4.1761290282011032e-02 -1.6333200037479401e-01 - <_> - - 0 -1 1633 2.3208620026707649e-02 - - -1.5451289713382721e-02 2.6844790577888489e-01 - <_> - - 0 -1 1634 1.1345080286264420e-01 - - -7.4470281600952148e-02 1.1021339893341064e-01 - <_> - - 0 -1 1635 -1.1667109793052077e-03 - - -6.8658977746963501e-02 9.7963117063045502e-02 - <_> - - 0 -1 1636 6.1848782934248447e-05 - - -8.0737061798572540e-02 8.1719793379306793e-02 - <_> - - 0 -1 1637 2.7750380468205549e-05 - - -8.1860013306140900e-02 8.6313776671886444e-02 - <_> - - 0 -1 1638 2.7259990019956604e-05 - - -8.0956377089023590e-02 8.2103863358497620e-02 - <_> - - 0 -1 1639 -2.9359169275267050e-05 - - 1.0450900346040726e-01 -7.2645798325538635e-02 - <_> - - 0 -1 1640 -2.5649809686001390e-05 - - 1.0629419982433319e-01 -6.7989073693752289e-02 - <_> - - 0 -1 1641 -1.6393380239605904e-02 - - -1.7156420648097992e-01 2.7696609497070312e-02 - <_> - - 0 -1 1642 -2.3359790444374084e-02 - - 3.8850760459899902e-01 -1.6645319759845734e-02 - <_> - - 0 -1 1643 2.2364470642060041e-03 - - -1.7200240865349770e-02 2.1048629283905029e-01 - <_> - - 0 -1 1644 -1.2738189660012722e-02 - - -2.5325098633766174e-01 2.8455469757318497e-02 - <_> - - 0 -1 1645 1.3035169802606106e-02 - - -3.6639489233493805e-02 5.0902638584375381e-02 - <_> - - 0 -1 1646 2.8332999136182480e-05 - - -8.3791807293891907e-02 8.3851858973503113e-02 - <_> - - 0 -1 1647 1.2336200103163719e-02 - - -5.1417160779237747e-02 5.3230680525302887e-02 - <_> - - 0 -1 1648 -3.2792810350656509e-02 - - 2.3273399472236633e-01 -3.7388250231742859e-02 - <_> - - 0 -1 1649 2.0052760373800993e-03 - - 2.7813620865345001e-02 -2.9500991106033325e-01 - <_> - - 0 -1 1650 1.3906819745898247e-02 - - -5.4373260587453842e-02 1.2525920569896698e-01 - <_> - - 0 -1 1651 2.1737889945507050e-01 - - 4.1637279093265533e-02 -1.7800329625606537e-01 - <_> - - 0 -1 1652 6.7987501621246338e-01 - - -1.8981909379363060e-02 3.5123589634895325e-01 - <_> - - 0 -1 1653 -4.9756500869989395e-02 - - -8.0023968219757080e-01 9.7657497972249985e-03 - <_> - - 0 -1 1654 4.5796870253980160e-03 - - 2.1078180521726608e-02 -2.8444689512252808e-01 - <_> - 289 - -1.2427099943161011e+00 - - <_> - - 0 -1 1655 1.0514260083436966e-01 - - -1.0304620116949081e-01 5.2641832828521729e-01 - <_> - - 0 -1 1656 2.1874869242310524e-02 - - -1.1491969972848892e-01 8.7951011955738068e-02 - <_> - - 0 -1 1657 2.5913900136947632e-01 - - -1.8469070710125379e-05 -7.8960552978515625e+02 - <_> - - 0 -1 1658 -8.2329362630844116e-03 - - 1.2152519822120667e-01 -2.1997219324111938e-01 - <_> - - 0 -1 1659 -7.4537489563226700e-03 - - 1.1699049919843674e-01 -1.9874709844589233e-01 - <_> - - 0 -1 1660 5.0783991813659668e-02 - - 3.4344758838415146e-02 -1.9979280233383179e-01 - <_> - - 0 -1 1661 -5.3065801039338112e-03 - - 1.0219410061836243e-01 -2.3248760402202606e-01 - <_> - - 0 -1 1662 -1.9852140918374062e-02 - - -5.7735747098922729e-01 1.0748630389571190e-02 - <_> - - 0 -1 1663 2.5102009996771812e-02 - - 3.3516518771648407e-02 -5.1891112327575684e-01 - <_> - - 0 -1 1664 3.9596240967512131e-03 - - -1.5465679764747620e-01 1.0011819750070572e-01 - <_> - - 0 -1 1665 -5.9100659564137459e-03 - - -3.3589190244674683e-01 6.0344338417053223e-02 - <_> - - 0 -1 1666 9.0328548103570938e-03 - - -1.0467969812452793e-02 -3.5610088706016541e-01 - <_> - - 0 -1 1667 8.5141025483608246e-03 - - 3.3426739275455475e-02 -4.1499960422515869e-01 - <_> - - 0 -1 1668 1.4581300318241119e-02 - - -1.1947499960660934e-01 1.0586699843406677e-01 - <_> - - 0 -1 1669 1.1524210125207901e-01 - - -2.3419320583343506e-02 3.9515259861946106e-01 - <_> - - 0 -1 1670 -2.1557710133492947e-03 - - 1.1369600147008896e-01 -1.1491960287094116e-01 - <_> - - 0 -1 1671 -1.3152989745140076e-01 - - -4.0761440992355347e-01 2.8095500543713570e-02 - <_> - - 0 -1 1672 8.7718963623046875e-02 - - 1.1915800161659718e-02 -6.2395787239074707e-01 - <_> - - 0 -1 1673 5.1810648292303085e-03 - - -1.0937149822711945e-01 1.1196020245552063e-01 - <_> - - 0 -1 1674 -3.5339239984750748e-03 - - 1.2084960192441940e-01 -5.4252031259238720e-03 - <_> - - 0 -1 1675 1.1804329697042704e-03 - - -1.2307350337505341e-01 1.2815740704536438e-01 - <_> - - 0 -1 1676 5.6288531050086021e-03 - - 3.1606510281562805e-02 -2.8103598952293396e-01 - <_> - - 0 -1 1677 9.9457567557692528e-04 - - -6.5978333353996277e-02 1.4891250431537628e-01 - <_> - - 0 -1 1678 -3.7337269168347120e-03 - - 5.9899568557739258e-02 -1.8003620207309723e-01 - <_> - - 0 -1 1679 1.0250649938825518e-04 - - -8.6224079132080078e-02 1.3904710114002228e-01 - <_> - - 0 -1 1680 4.1721882298588753e-03 - - -2.4659799411892891e-02 7.9436056315898895e-02 - <_> - - 0 -1 1681 4.8526689410209656e-02 - - 3.8152199238538742e-02 -3.3759069442749023e-01 - <_> - - 0 -1 1682 8.4143159911036491e-03 - - 5.1525980234146118e-03 -1.6511310636997223e-01 - <_> - - 0 -1 1683 -3.5702888853847980e-03 - - -2.3562599718570709e-01 4.1760321706533432e-02 - <_> - - 0 -1 1684 2.2256400436162949e-02 - - -2.8121219947934151e-02 1.3493560254573822e-01 - <_> - - 0 -1 1685 3.8191271014511585e-03 - - -1.1853609979152679e-01 8.4350273013114929e-02 - <_> - - 0 -1 1686 1.4533999562263489e-01 - - -2.8631420806050301e-02 3.5683318972587585e-01 - <_> - - 0 -1 1687 -8.9769659098237753e-04 - - 5.4901029914617538e-02 -1.7856329679489136e-01 - <_> - - 0 -1 1688 4.1682600975036621e-02 - - -1.8363239243626595e-02 1.6168589890003204e-01 - <_> - - 0 -1 1689 5.0139758735895157e-02 - - -4.4928468763828278e-02 2.1465340256690979e-01 - <_> - - 0 -1 1690 3.0929069034755230e-03 - - 3.0171500518918037e-02 -3.5135638713836670e-01 - <_> - - 0 -1 1691 1.8156090751290321e-02 - - -5.5261798202991486e-02 1.9471189379692078e-01 - <_> - - 0 -1 1692 2.0246930420398712e-02 - - 3.7365719676017761e-02 -3.0078509449958801e-01 - <_> - - 0 -1 1693 1.1716090142726898e-02 - - -6.1458099633455276e-02 1.6397699713706970e-01 - <_> - - 0 -1 1694 -8.1182513386011124e-03 - - -8.8726110756397247e-02 3.2724000513553619e-02 - <_> - - 0 -1 1695 -1.4681640267372131e-01 - - -4.9301609396934509e-01 2.0158279687166214e-02 - <_> - - 0 -1 1696 -5.2891620434820652e-03 - - -2.5142368674278259e-01 9.5387678593397141e-03 - <_> - - 0 -1 1697 -1.4862219803035259e-02 - - 2.5943711400032043e-01 -3.1378541141748428e-02 - <_> - - 0 -1 1698 -1.7715459689497948e-02 - - -5.1138341426849365e-01 7.5401309877634048e-03 - <_> - - 0 -1 1699 -9.5196522306650877e-04 - - 6.9236308336257935e-02 -1.2581700086593628e-01 - <_> - - 0 -1 1700 6.6216342151165009e-02 - - -9.8208645358681679e-03 3.6082351207733154e-01 - <_> - - 0 -1 1701 8.2799885421991348e-03 - - -7.4818223714828491e-02 1.5120029449462891e-01 - <_> - - 0 -1 1702 1.2625900097191334e-02 - - 6.2517106533050537e-02 -1.5846930444240570e-01 - <_> - - 0 -1 1703 -5.0610590726137161e-02 - - 4.3044748902320862e-01 -1.9521590322256088e-02 - <_> - - 0 -1 1704 6.4415240287780762e-01 - - 1.9606480374932289e-02 -3.7122789025306702e-01 - <_> - - 0 -1 1705 6.2919452786445618e-02 - - -1.2445899844169617e-01 6.8127602338790894e-02 - <_> - - 0 -1 1706 1.5886759385466576e-02 - - 3.7582379300147295e-03 -2.5132799148559570e-01 - <_> - - 0 -1 1707 -2.3676711134612560e-03 - - -1.8140539526939392e-01 4.5303210616111755e-02 - <_> - - 0 -1 1708 2.5242239236831665e-02 - - 1.6800789162516594e-02 -3.1515631079673767e-01 - <_> - - 0 -1 1709 1.3737349770963192e-02 - - -3.2908398658037186e-02 2.3093259334564209e-01 - <_> - - 0 -1 1710 -2.1248359698802233e-03 - - 6.4555563032627106e-02 -1.4124630391597748e-01 - <_> - - 0 -1 1711 -6.0910829342901707e-03 - - -4.6051791310310364e-01 1.6628300771117210e-02 - <_> - - 0 -1 1712 4.0456880815327168e-03 - - 8.3615174517035484e-03 -2.6965349912643433e-01 - <_> - - 0 -1 1713 -3.4469161182641983e-02 - - 2.1582040190696716e-01 -3.4924760460853577e-02 - <_> - - 0 -1 1714 8.9153727458324283e-05 - - -5.1043938845396042e-02 3.4690521657466888e-02 - <_> - - 0 -1 1715 -6.6213719546794891e-03 - - -4.1585859656333923e-01 1.9391119480133057e-02 - <_> - - 0 -1 1716 1.3638250529766083e-01 - - -4.4547390192747116e-02 1.7608410120010376e-01 - <_> - - 0 -1 1717 2.5193500332534313e-03 - - -9.0518496930599213e-02 8.7540969252586365e-02 - <_> - - 0 -1 1718 -7.8399538993835449e-02 - - 2.6488780975341797e-01 -3.2434631139039993e-02 - <_> - - 0 -1 1719 7.1002319455146790e-03 - - -1.1403769999742508e-01 1.0402719676494598e-01 - <_> - - 0 -1 1720 -6.2689207494258881e-02 - - -5.6851968169212341e-02 1.4763230457901955e-02 - <_> - - 0 -1 1721 6.9820493459701538e-02 - - 1.6728859394788742e-02 -5.0399231910705566e-01 - <_> - - 0 -1 1722 1.0238329879939556e-02 - - -2.8636269271373749e-02 1.8522030115127563e-01 - <_> - - 0 -1 1723 -1.4994280412793159e-02 - - 2.2429679334163666e-01 -3.3266838639974594e-02 - <_> - - 0 -1 1724 5.2933390252292156e-03 - - 2.9912209138274193e-02 -2.1737770736217499e-01 - <_> - - 0 -1 1725 8.0084912478923798e-03 - - 3.4174129366874695e-02 -2.6237648725509644e-01 - <_> - - 0 -1 1726 1.1461140215396881e-01 - - -2.4488439783453941e-02 9.7091667354106903e-02 - <_> - - 0 -1 1727 -5.2127178758382797e-02 - - -6.4139938354492188e-01 1.1557060293853283e-02 - <_> - - 0 -1 1728 7.4813142418861389e-02 - - -5.0265830010175705e-02 5.0224021077156067e-02 - <_> - - 0 -1 1729 -1.9123209640383720e-02 - - -3.1091290712356567e-01 2.2727809846401215e-02 - <_> - - 0 -1 1730 5.4096881300210953e-02 - - -9.0643512085080147e-03 2.5074291229248047e-01 - <_> - - 0 -1 1731 -2.5658370926976204e-02 - - 2.1216529607772827e-01 -3.5177871584892273e-02 - <_> - - 0 -1 1732 1.5096050500869751e-01 - - 1.8668990582227707e-02 -2.1598240733146667e-01 - <_> - - 0 -1 1733 1.1122240126132965e-01 - - 3.4245200455188751e-02 -2.1573379635810852e-01 - <_> - - 0 -1 1734 6.0547110479092225e-05 - - -3.7213701754808426e-02 3.7215270102024078e-02 - <_> - - 0 -1 1735 5.8619431219995022e-03 - - -7.7396132051944733e-02 9.3063041567802429e-02 - <_> - - 0 -1 1736 -3.4194190055131912e-02 - - 3.4479939937591553e-01 -3.3559378236532211e-02 - <_> - - 0 -1 1737 -7.2817560285329819e-03 - - -2.9600289463996887e-01 2.6088409125804901e-02 - <_> - - 0 -1 1738 1.0952579788863659e-02 - - -5.8721199631690979e-02 1.3843379914760590e-01 - <_> - - 0 -1 1739 8.1078127026557922e-02 - - -7.2938360273838043e-02 9.6455402672290802e-02 - <_> - - 0 -1 1740 1.0665360093116760e-01 - - -1.2848479673266411e-02 1.8970890343189240e-01 - <_> - - 0 -1 1741 -6.8527236580848694e-02 - - -3.2469791173934937e-01 2.3436879739165306e-02 - <_> - - 0 -1 1742 3.6735620349645615e-02 - - -5.8335401117801666e-02 8.4354646503925323e-02 - <_> - - 0 -1 1743 8.4685698151588440e-02 - - -6.4503356814384460e-02 1.6065360605716705e-01 - <_> - - 0 -1 1744 3.6365711130201817e-03 - - -4.9595098942518234e-02 1.7173859477043152e-01 - <_> - - 0 -1 1745 -4.8055797815322876e-03 - - -2.7324178814888000e-01 2.7532469481229782e-02 - <_> - - 0 -1 1746 -9.6100764349102974e-03 - - -2.3277230560779572e-01 2.0290989428758621e-02 - <_> - - 0 -1 1747 7.8186683356761932e-02 - - 1.1925170198082924e-02 -5.6188392639160156e-01 - <_> - - 0 -1 1748 7.4945122003555298e-02 - - 2.2771470248699188e-03 -6.7497521638870239e-01 - <_> - - 0 -1 1749 -3.6618590354919434e-02 - - 1.9563549757003784e-01 -4.4303759932518005e-02 - <_> - - 0 -1 1750 2.5921240448951721e-03 - - 4.1194058954715729e-02 -1.1646830290555954e-01 - <_> - - 0 -1 1751 6.7376391962170601e-03 - - 3.1075129285454750e-02 -2.5548139214515686e-01 - <_> - - 0 -1 1752 2.8166980482637882e-03 - - -4.1387278586626053e-02 2.0167019963264465e-01 - <_> - - 0 -1 1753 6.5882243216037750e-02 - - 1.3007510453462601e-02 -5.5459141731262207e-01 - <_> - - 0 -1 1754 1.5577779849991202e-03 - - -2.3746419697999954e-02 4.1367299854755402e-02 - <_> - - 0 -1 1755 -5.4769590497016907e-03 - - -2.6814338564872742e-01 2.4470189586281776e-02 - <_> - - 0 -1 1756 -5.5535528808832169e-03 - - 2.0323030650615692e-01 -3.5721950232982635e-02 - <_> - - 0 -1 1757 -6.6988892853260040e-02 - - -5.1838552951812744e-01 1.0844370350241661e-02 - <_> - - 0 -1 1758 4.1470538824796677e-02 - - 2.7333609759807587e-03 -3.5633009672164917e-01 - <_> - - 0 -1 1759 -3.4693330526351929e-03 - - 9.8271742463111877e-02 -7.2967939078807831e-02 - <_> - - 0 -1 1760 -8.2196565344929695e-03 - - 1.0828279703855515e-01 -4.7256238758563995e-02 - <_> - - 0 -1 1761 9.9876541644334793e-03 - - -4.7037940472364426e-02 1.7513559758663177e-01 - <_> - - 0 -1 1762 -2.8357180953025818e-01 - - 1.1804939806461334e-01 -5.6662421673536301e-02 - <_> - - 0 -1 1763 -3.1115990132093430e-02 - - 3.8079530000686646e-01 -1.9796870648860931e-02 - <_> - - 0 -1 1764 1.0992879979312420e-02 - - 2.2017719224095345e-02 -8.0382846295833588e-02 - <_> - - 0 -1 1765 -1.6561850905418396e-02 - - -4.3999090790748596e-01 1.5166619792580605e-02 - <_> - - 0 -1 1766 1.8488729838281870e-03 - - -1.9684309139847755e-02 1.6026680171489716e-01 - <_> - - 0 -1 1767 -6.8709079641848803e-05 - - 8.9373558759689331e-02 -7.0307746529579163e-02 - <_> - - 0 -1 1768 -5.3440540796145797e-05 - - 1.0770639777183533e-01 -7.9271383583545685e-02 - <_> - - 0 -1 1769 5.1137150876456872e-05 - - -7.4268989264965057e-02 9.2868506908416748e-02 - <_> - - 0 -1 1770 -1.0940999723970890e-02 - - -6.0954278707504272e-01 7.1117929182946682e-03 - <_> - - 0 -1 1771 1.6700969636440277e-01 - - 1.7398620024323463e-02 -3.4830319881439209e-01 - <_> - - 0 -1 1772 -5.3627010434865952e-02 - - -2.5175419449806213e-01 3.0668680556118488e-03 - <_> - - 0 -1 1773 -1.6854789108037949e-02 - - -2.3226660490036011e-01 2.9541799798607826e-02 - <_> - - 0 -1 1774 -6.6016108030453324e-04 - - 8.4474369883537292e-02 -2.9211960732936859e-02 - <_> - - 0 -1 1775 5.8979410823667422e-05 - - -7.1650400757789612e-02 8.9446447789669037e-02 - <_> - - 0 -1 1776 -2.9099199920892715e-02 - - 1.5133389830589294e-01 -4.4302191585302353e-02 - <_> - - 0 -1 1777 6.0370288789272308e-02 - - 2.3916089907288551e-02 -2.8696390986442566e-01 - <_> - - 0 -1 1778 5.2198538469383493e-05 - - -5.5224779993295670e-02 6.3085198402404785e-02 - <_> - - 0 -1 1779 -5.3573388868244365e-05 - - 9.1779157519340515e-02 -7.3383733630180359e-02 - <_> - - 0 -1 1780 -9.2194221913814545e-02 - - 8.4590747952461243e-02 -4.3549880385398865e-02 - <_> - - 0 -1 1781 6.8016350269317627e-03 - - -3.9529308676719666e-02 1.7724280059337616e-01 - <_> - - 0 -1 1782 1.3659190386533737e-02 - - -3.1453400850296021e-02 9.2184126377105713e-02 - <_> - - 0 -1 1783 -2.0240260288119316e-02 - - 1.2939970195293427e-01 -7.2216689586639404e-02 - <_> - - 0 -1 1784 -3.3109420537948608e-01 - - -5.6844151020050049e-01 4.8965080641210079e-03 - <_> - - 0 -1 1785 -3.5590109229087830e-01 - - -6.0889261960983276e-01 1.2166419997811317e-02 - <_> - - 0 -1 1786 3.2671329379081726e-01 - - 1.1408380232751369e-02 -5.4270422458648682e-01 - <_> - - 0 -1 1787 -6.3796848058700562e-02 - - -8.0737471580505371e-01 7.3937238194048405e-03 - <_> - - 0 -1 1788 4.1656321845948696e-03 - - 1.8647879362106323e-02 -6.3343852758407593e-02 - <_> - - 0 -1 1789 6.2817978858947754e-01 - - -2.2962320595979691e-02 2.8442010283470154e-01 - <_> - - 0 -1 1790 5.7043769629672170e-05 - - -5.8396600186824799e-02 2.7118930593132973e-02 - <_> - - 0 -1 1791 -8.2484260201454163e-03 - - -3.6744558811187744e-01 1.7963869497179985e-02 - <_> - - 0 -1 1792 2.1319560706615448e-01 - - 4.8015988431870937e-03 -2.5128981471061707e-01 - <_> - - 0 -1 1793 -9.2648178339004517e-02 - - 4.0808829665184021e-01 -1.6961680725216866e-02 - <_> - - 0 -1 1794 6.7387576564215124e-05 - - -1.1430130153894424e-01 6.2709592282772064e-02 - <_> - - 0 -1 1795 -5.2264030091464520e-03 - - -3.8103449344635010e-01 1.8856620416045189e-02 - <_> - - 0 -1 1796 -4.5156818814575672e-03 - - -3.2349079847335815e-01 1.5758650377392769e-02 - <_> - - 0 -1 1797 3.1322699505835772e-03 - - 3.7116400897502899e-02 -1.6313099861145020e-01 - <_> - - 0 -1 1798 -3.0949179083108902e-02 - - -2.2487780451774597e-01 1.5935560688376427e-02 - <_> - - 0 -1 1799 -1.1999710462987423e-02 - - 1.0604210197925568e-01 -5.6003518402576447e-02 - <_> - - 0 -1 1800 3.3642560243606567e-02 - - 9.4332182779908180e-03 -2.4610279500484467e-01 - <_> - - 0 -1 1801 1.1973080225288868e-02 - - -4.5692600309848785e-02 1.5212790668010712e-01 - <_> - - 0 -1 1802 -1.4105269312858582e-01 - - -4.0252068638801575e-01 1.6124870628118515e-02 - <_> - - 0 -1 1803 -5.8696339838206768e-03 - - 1.2235599756240845e-01 -4.8751059919595718e-02 - <_> - - 0 -1 1804 2.1555710118263960e-03 - - -1.8416309729218483e-02 1.4515219628810883e-01 - <_> - - 0 -1 1805 2.4534349795430899e-03 - - -9.0565666556358337e-02 6.3355736434459686e-02 - <_> - - 0 -1 1806 5.2382410503923893e-03 - - -4.1047159582376480e-02 7.2730809450149536e-02 - <_> - - 0 -1 1807 -1.4319210313260555e-02 - - -1.7929619550704956e-01 3.6573551595211029e-02 - <_> - - 0 -1 1808 -1.0585630312561989e-02 - - -3.8849338889122009e-01 7.9265926033258438e-03 - <_> - - 0 -1 1809 8.9276917278766632e-03 - - -5.7579260319471359e-02 1.0150779783725739e-01 - <_> - - 0 -1 1810 5.7917978614568710e-02 - - 1.3735010288655758e-02 -1.9172470271587372e-01 - <_> - - 0 -1 1811 -9.2071853578090668e-03 - - -2.0012189447879791e-01 3.3192038536071777e-02 - <_> - - 0 -1 1812 -8.3500929176807404e-02 - - 2.9251980781555176e-01 -2.2903669625520706e-02 - <_> - - 0 -1 1813 -4.5707109384238720e-03 - - -1.9109779596328735e-01 4.0867939591407776e-02 - <_> - - 0 -1 1814 -2.8107669204473495e-02 - - -1.3955590128898621e-01 2.2897839546203613e-02 - <_> - - 0 -1 1815 -2.2816540673375130e-02 - - -2.5770029425621033e-01 2.2989239543676376e-02 - <_> - - 0 -1 1816 -5.2285268902778625e-03 - - -6.1747290194034576e-02 3.7713401019573212e-02 - <_> - - 0 -1 1817 6.0513508506119251e-03 - - -4.1627131402492523e-02 1.5567490458488464e-01 - <_> - - 0 -1 1818 -4.0782008320093155e-02 - - 2.5596979260444641e-01 -2.5189070031046867e-02 - <_> - - 0 -1 1819 6.2671699561178684e-03 - - -9.7672566771507263e-02 7.2752490639686584e-02 - <_> - - 0 -1 1820 -1.1280509643256664e-03 - - 7.3656037449836731e-02 -1.1387579888105392e-01 - <_> - - 0 -1 1821 6.8747308105230331e-03 - - -6.6789150238037109e-02 1.3151079416275024e-01 - <_> - - 0 -1 1822 -3.3762790262699127e-02 - - -1.8931210041046143e-01 3.4766618162393570e-02 - <_> - - 0 -1 1823 5.1757418987108395e-05 - - -7.8098617494106293e-02 7.9830199480056763e-02 - <_> - - 0 -1 1824 1.0175850242376328e-01 - - 1.7523359507322311e-02 -2.1947909891605377e-01 - <_> - - 0 -1 1825 1.1764559894800186e-01 - - 1.4738990366458893e-01 -4.2805839329957962e-02 - <_> - - 0 -1 1826 -1.9031679630279541e-01 - - -3.7623789906501770e-01 3.8982050027698278e-03 - <_> - - 0 -1 1827 2.1824610233306885e-01 - - 7.8864647075533867e-03 -6.4516901969909668e-01 - <_> - - 0 -1 1828 6.1720587837044150e-05 - - -6.8813540041446686e-02 7.8313410282135010e-02 - <_> - - 0 -1 1829 7.6815136708319187e-05 - - -6.9198243319988251e-02 9.8149210214614868e-02 - <_> - - 0 -1 1830 -1.5573709970340133e-03 - - 4.5510411262512207e-02 -1.1858870089054108e-01 - <_> - - 0 -1 1831 1.5356070362031460e-02 - - -3.7732329219579697e-02 1.6196539998054504e-01 - <_> - - 0 -1 1832 -6.4422818832099438e-04 - - -4.9214340746402740e-02 3.8596581667661667e-02 - <_> - - 0 -1 1833 3.0240670312196016e-03 - - 1.9877310842275620e-02 -2.7352470159530640e-01 - <_> - - 0 -1 1834 -2.4049060046672821e-01 - - -3.2233241200447083e-01 9.9804811179637909e-03 - <_> - - 0 -1 1835 -6.8453960120677948e-03 - - -2.6824951171875000e-01 2.0093979313969612e-02 - <_> - - 0 -1 1836 -9.8221071064472198e-02 - - 3.6731448769569397e-01 -1.6751440241932869e-02 - <_> - - 0 -1 1837 -3.3398460596799850e-02 - - -7.5862818956375122e-01 9.9286399781703949e-03 - <_> - - 0 -1 1838 -3.2237220555543900e-02 - - 2.2383579611778259e-01 -1.2614809907972813e-02 - <_> - - 0 -1 1839 -3.3283960074186325e-02 - - 2.9738378524780273e-01 -1.9648900255560875e-02 - <_> - - 0 -1 1840 -6.3496932853013277e-05 - - 5.7933460921049118e-02 -4.3885860592126846e-02 - <_> - - 0 -1 1841 7.6012212957721204e-05 - - -7.1816489100456238e-02 8.6936511099338531e-02 - <_> - - 0 -1 1842 2.7044719085097313e-02 - - 7.5920550152659416e-03 -5.4519557952880859e-01 - <_> - - 0 -1 1843 9.8314275965094566e-03 - - 2.3584580048918724e-02 -2.4372850358486176e-01 - <_> - - 0 -1 1844 -1.4273289591073990e-02 - - 1.2024249881505966e-01 -2.0805019885301590e-02 - <_> - - 0 -1 1845 3.4047421067953110e-03 - - 2.4277240037918091e-02 -2.4346110224723816e-01 - <_> - - 0 -1 1846 -2.1703050006181002e-03 - - 4.7682531177997589e-02 -2.8576539829373360e-02 - <_> - - 0 -1 1847 6.4616702497005463e-02 - - -7.2562202811241150e-02 9.5571190118789673e-02 - <_> - - 0 -1 1848 -3.6136131733655930e-02 - - -2.2917810082435608e-01 2.1050409413874149e-03 - <_> - - 0 -1 1849 -1.9167549908161163e-02 - - 3.0063459277153015e-01 -2.2639019414782524e-02 - <_> - - 0 -1 1850 1.0301499627530575e-02 - - 1.9979899749159813e-02 -1.1853440105915070e-01 - <_> - - 0 -1 1851 2.5042060762643814e-02 - - 1.3732859864830971e-02 -4.4012320041656494e-01 - <_> - - 0 -1 1852 1.1802879720926285e-01 - - -2.3824589326977730e-02 9.6127033233642578e-02 - <_> - - 0 -1 1853 -8.2905329763889313e-03 - - -8.1776067614555359e-02 6.8393409252166748e-02 - <_> - - 0 -1 1854 -1.0710770264267921e-02 - - 4.3334428220987320e-02 -7.5097911059856415e-02 - <_> - - 0 -1 1855 2.6918289065361023e-01 - - -3.9503660053014755e-02 1.4504730701446533e-01 - <_> - - 0 -1 1856 -2.2763809189200401e-02 - - 9.9672622978687286e-02 -7.7555380761623383e-02 - <_> - - 0 -1 1857 -1.2115190178155899e-01 - - -3.9497470855712891e-01 1.6640119254589081e-02 - <_> - - 0 -1 1858 7.1451293479185551e-05 - - -5.3211521357297897e-02 3.6570221185684204e-02 - <_> - - 0 -1 1859 3.8077360950410366e-03 - - -9.1341376304626465e-02 7.4727490544319153e-02 - <_> - - 0 -1 1860 -6.2283109873533249e-02 - - 4.4904568791389465e-01 -1.4291680417954922e-02 - <_> - - 0 -1 1861 -1.6545509919524193e-02 - - 2.1537640690803528e-01 -2.6689510792493820e-02 - <_> - - 0 -1 1862 -9.5320530235767365e-03 - - -1.5028700232505798e-01 8.1632016226649284e-03 - <_> - - 0 -1 1863 -5.1539638661779463e-05 - - 7.7702187001705170e-02 -7.4435219168663025e-02 - <_> - - 0 -1 1864 8.1616528332233429e-03 - - 1.2540699914097786e-02 -4.7263838350772858e-02 - <_> - - 0 -1 1865 -1.6064610332250595e-02 - - -6.3055968284606934e-01 8.5211051627993584e-03 - <_> - - 0 -1 1866 -9.4421818852424622e-02 - - 1.3808089494705200e-01 -3.9954699575901031e-02 - <_> - - 0 -1 1867 -7.0128433406352997e-02 - - -2.7507200837135315e-01 2.6419319212436676e-02 - <_> - - 0 -1 1868 -1.4281000010669231e-02 - - 8.4090739488601685e-02 -4.2029079049825668e-02 - <_> - - 0 -1 1869 -2.0523479208350182e-02 - - 1.5208010375499725e-01 -3.8674451410770416e-02 - <_> - - 0 -1 1870 3.1574970483779907e-01 - - 8.8831735774874687e-03 -6.8551319837570190e-01 - <_> - - 0 -1 1871 5.9291431680321693e-03 - - 6.9111599586904049e-03 -6.0731059312820435e-01 - <_> - - 0 -1 1872 6.0803038650192320e-05 - - -6.6974677145481110e-02 7.5997337698936462e-02 - <_> - - 0 -1 1873 8.9074257994070649e-04 - - -5.7422380894422531e-02 8.9614070951938629e-02 - <_> - - 0 -1 1874 7.5585566461086273e-02 - - 5.4939449764788151e-03 -5.0682210922241211e-01 - <_> - - 0 -1 1875 1.7032520845532417e-02 - - -7.0099852979183197e-02 8.4323048591613770e-02 - <_> - - 0 -1 1876 1.2238330207765102e-02 - - 3.3506508916616440e-02 -1.5453749895095825e-01 - <_> - - 0 -1 1877 1.2650569900870323e-02 - - -3.4498661756515503e-02 1.7358370125293732e-01 - <_> - - 0 -1 1878 3.9281910285353661e-03 - - 3.3152848482131958e-02 -1.2065990269184113e-01 - <_> - - 0 -1 1879 -1.8485839664936066e-01 - - -4.4308841228485107e-01 1.2247050181031227e-02 - <_> - - 0 -1 1880 -6.5704691223800182e-03 - - -2.8371539711952209e-01 1.1953360401093960e-02 - <_> - - 0 -1 1881 -5.8720408560475335e-05 - - 6.0625560581684113e-02 -9.0594232082366943e-02 - <_> - - 0 -1 1882 -2.1587649825960398e-03 - - 7.1897417306900024e-02 -7.1638710796833038e-02 - <_> - - 0 -1 1883 -4.2619958519935608e-02 - - -6.3012677431106567e-01 9.0704262256622314e-03 - <_> - - 0 -1 1884 -2.1494319662451744e-03 - - 7.0125512778759003e-02 -3.0237630009651184e-02 - <_> - - 0 -1 1885 -9.0273208916187286e-03 - - -2.0843930542469025e-01 2.5662729516625404e-02 - <_> - - 0 -1 1886 -1.9365029409527779e-02 - - -2.1868449449539185e-01 3.9497479796409607e-02 - <_> - - 0 -1 1887 -1.4133329689502716e-01 - - 1.7587089538574219e-01 -3.0029740184545517e-02 - <_> - - 0 -1 1888 -7.0533920079469681e-03 - - 1.2578339874744415e-01 -4.2285289615392685e-02 - <_> - - 0 -1 1889 9.1119036369491369e-05 - - -8.0194853246212006e-02 6.9832347333431244e-02 - <_> - - 0 -1 1890 5.6941218674182892e-02 - - 1.6689090058207512e-02 -5.2839207649230957e-01 - <_> - - 0 -1 1891 -5.4684251546859741e-02 - - -2.0393149554729462e-01 2.8620930388569832e-02 - <_> - - 0 -1 1892 -5.8811619965126738e-05 - - 4.1804101318120956e-02 -4.7025229781866074e-02 - <_> - - 0 -1 1893 1.7949440516531467e-03 - - -7.5684927403926849e-02 6.9111049175262451e-02 - <_> - - 0 -1 1894 2.9679369181394577e-03 - - -3.7506360560655594e-02 1.6561579704284668e-01 - <_> - - 0 -1 1895 2.8809459879994392e-02 - - -1.2360650300979614e-01 4.9675479531288147e-02 - <_> - - 0 -1 1896 4.0495251305401325e-03 - - -3.1962219625711441e-02 1.9525900483131409e-01 - <_> - - 0 -1 1897 -6.2003359198570251e-02 - - -3.8278189301490784e-01 1.5061319805681705e-02 - <_> - - 0 -1 1898 -5.1115748647134751e-05 - - 6.7757539451122284e-02 -5.2631400525569916e-02 - <_> - - 0 -1 1899 -8.5218940512277186e-05 - - 8.6446836590766907e-02 -6.7225173115730286e-02 - <_> - - 0 -1 1900 5.5194161832332611e-03 - - -1.7245279625058174e-02 1.6542769968509674e-01 - <_> - - 0 -1 1901 -1.0302600450813770e-02 - - -2.3677019774913788e-01 2.2329760715365410e-02 - <_> - - 0 -1 1902 4.1106292046606541e-03 - - -2.0237570628523827e-02 8.8973782956600189e-02 - <_> - - 0 -1 1903 2.2337420377880335e-03 - - -4.6158008277416229e-02 1.1012540012598038e-01 - <_> - - 0 -1 1904 -7.5415097177028656e-02 - - -4.3671968579292297e-01 7.0562111213803291e-03 - <_> - - 0 -1 1905 -3.5641689319163561e-03 - - -2.0360149443149567e-01 2.6056429371237755e-02 - <_> - - 0 -1 1906 -7.5477738864719868e-03 - - 6.8226106464862823e-02 -2.2757640108466148e-02 - <_> - - 0 -1 1907 3.1273330096155405e-03 - - -5.1596619188785553e-02 1.1045560240745544e-01 - <_> - - 0 -1 1908 -7.2469911538064480e-03 - - -2.8128591179847717e-01 3.2531570177525282e-03 - <_> - - 0 -1 1909 -5.2346920710988343e-05 - - 7.0106193423271179e-02 -9.4152770936489105e-02 - <_> - - 0 -1 1910 -2.4612979963421822e-02 - - -8.7304252386093140e-01 1.3450640253722668e-03 - <_> - - 0 -1 1911 -3.5978900268673897e-03 - - -1.7041720449924469e-01 3.1998220831155777e-02 - <_> - - 0 -1 1912 7.2957523167133331e-02 - - 5.0021768547594547e-03 -4.6821400523185730e-01 - <_> - - 0 -1 1913 -8.2925416529178619e-02 - - -6.8254911899566650e-01 6.8542738445103168e-03 - <_> - - 0 -1 1914 1.4584979414939880e-01 - - 4.4581899419426918e-03 -9.1366928815841675e-01 - <_> - - 0 -1 1915 1.2101789936423302e-02 - - 2.4414170533418655e-02 -1.8117509782314301e-01 - <_> - - 0 -1 1916 -6.0667369514703751e-02 - - 2.2934840619564056e-01 -1.4323459938168526e-02 - <_> - - 0 -1 1917 2.0745540037751198e-02 - - -2.6910720393061638e-02 1.9334229826927185e-01 - <_> - - 0 -1 1918 7.7412481186911464e-04 - - -2.9913529753684998e-02 4.5873280614614487e-02 - <_> - - 0 -1 1919 1.3549369759857655e-02 - - 3.4433681517839432e-02 -1.8116979300975800e-01 - <_> - - 0 -1 1920 1.2264180183410645e-01 - - 8.5802376270294189e-03 -3.5567748546600342e-01 - <_> - - 0 -1 1921 6.7160837352275848e-02 - - 1.5259440056979656e-02 -3.3480858802795410e-01 - <_> - - 0 -1 1922 -2.4647530168294907e-02 - - 1.9604270160198212e-01 -2.5130519643425941e-02 - <_> - - 0 -1 1923 1.6193950548768044e-02 - - 2.5508690625429153e-02 -2.1010090410709381e-01 - <_> - - 0 -1 1924 4.4934380054473877e-01 - - -1.0850709863007069e-02 2.6361268758773804e-01 - <_> - - 0 -1 1925 1.0006000287830830e-02 - - 1.6283020377159119e-02 -3.3978369832038879e-01 - <_> - - 0 -1 1926 -3.3295390312559903e-04 - - 4.8216179013252258e-02 -3.3164579421281815e-02 - <_> - - 0 -1 1927 -2.8556359931826591e-02 - - -1.4011450111865997e-01 3.5931900143623352e-02 - <_> - - 0 -1 1928 6.8772169761359692e-03 - - -1.2332179583609104e-02 1.5525570511817932e-01 - <_> - - 0 -1 1929 2.6129318866878748e-03 - - -4.3558120727539062e-02 1.2221980094909668e-01 - <_> - - 0 -1 1930 3.2784798741340637e-01 - - 1.3112389715388417e-03 -8.1634020805358887e-01 - <_> - - 0 -1 1931 1.5350890159606934e-01 - - 1.5348929911851883e-02 -3.3603930473327637e-01 - <_> - - 0 -1 1932 9.0102507965639234e-04 - - -3.2568939030170441e-02 6.3755579292774200e-02 - <_> - - 0 -1 1933 -7.4206269346177578e-05 - - 8.1737652420997620e-02 -6.6912956535816193e-02 - <_> - - 0 -1 1934 -3.3565158955752850e-03 - - -1.2600690126419067e-01 2.2333910688757896e-02 - <_> - - 0 -1 1935 6.5229997038841248e-02 - - -3.2034210860729218e-02 1.7820569872856140e-01 - <_> - - 0 -1 1936 -2.0175189711153507e-03 - - 2.4484390392899513e-02 -5.7224631309509277e-02 - <_> - - 0 -1 1937 7.0746080018579960e-03 - - 9.8791662603616714e-03 -5.4220247268676758e-01 - <_> - - 0 -1 1938 6.5917898609768599e-05 - - -5.1658220589160919e-02 5.6762930005788803e-02 - <_> - - 0 -1 1939 3.0828830599784851e-01 - - -9.5853386446833611e-03 5.3433179855346680e-01 - <_> - - 0 -1 1940 1.0255790315568447e-02 - - 2.4838339537382126e-02 -1.6516630351543427e-01 - <_> - - 0 -1 1941 -5.3460840717889369e-05 - - 7.9820998013019562e-02 -6.5021842718124390e-02 - <_> - - 0 -1 1942 -2.3789680562913418e-03 - - 4.7830250114202499e-02 -5.2991490811109543e-02 - <_> - - 0 -1 1943 -5.6755929253995419e-03 - - 1.2446220219135284e-01 -4.4751990586519241e-02 - <_> - 317 - -1.1628010272979736e+00 - - <_> - - 0 -1 1944 -1.0756739974021912e-01 - - 3.4051141142845154e-01 -1.5209180116653442e-01 - <_> - - 0 -1 1945 4.3516431003808975e-02 - - -1.3533400371670723e-02 2.8570750355720520e-01 - <_> - - 0 -1 1946 1.5090970695018768e-01 - - 5.0420017214491963e-04 -5.6076660156250000e+02 - <_> - - 0 -1 1947 8.1543149426579475e-03 - - -5.7393770664930344e-02 1.6381829977035522e-01 - <_> - - 0 -1 1948 -1.0340789705514908e-01 - - 2.2989919781684875e-01 -1.2858000397682190e-01 - <_> - - 0 -1 1949 -7.5287488289177418e-03 - - 7.1470782160758972e-02 -2.5789029896259308e-02 - <_> - - 0 -1 1950 3.6443499848246574e-03 - - -2.2227230668067932e-01 1.2411169707775116e-01 - <_> - - 0 -1 1951 5.3749978542327881e-01 - - 1.3947029598057270e-02 5.2125108242034912e-01 - <_> - - 0 -1 1952 2.7013081312179565e-01 - - -1.9904779270291328e-02 -6.3081250000000000e+02 - <_> - - 0 -1 1953 -1.0368769988417625e-02 - - 1.0527289658784866e-01 -1.2945720553398132e-01 - <_> - - 0 -1 1954 -1.5604550018906593e-02 - - 2.1595460176467896e-01 -9.8842203617095947e-02 - <_> - - 0 -1 1955 -2.0287589728832245e-01 - - -2.7739518880844116e-01 3.4634380135685205e-03 - <_> - - 0 -1 1956 -2.7160419151186943e-02 - - 1.0022699832916260e-01 -2.0542170107364655e-01 - <_> - - 0 -1 1957 -5.2366848103702068e-03 - - 1.2705439329147339e-01 -1.2547770142555237e-01 - <_> - - 0 -1 1958 4.6215238980948925e-03 - - 4.4826891273260117e-02 -2.7245700359344482e-01 - <_> - - 0 -1 1959 -6.7956638522446156e-03 - - -1.3386589288711548e-01 2.7177840471267700e-02 - <_> - - 0 -1 1960 -2.1976660192012787e-01 - - -2.5276950001716614e-01 4.6465039253234863e-02 - <_> - - 0 -1 1961 4.6517988666892052e-03 - - 1.0934700258076191e-02 -3.5598039627075195e-01 - <_> - - 0 -1 1962 -1.5317969955503941e-03 - - -2.4999429285526276e-01 4.4351290911436081e-02 - <_> - - 0 -1 1963 4.6969428658485413e-03 - - 2.1836619824171066e-02 -2.8716519474983215e-01 - <_> - - 0 -1 1964 4.8189409077167511e-02 - - 2.8869369998574257e-02 -3.6160790920257568e-01 - <_> - - 0 -1 1965 -7.6267770491540432e-03 - - 1.3116089999675751e-01 -3.7187561392784119e-02 - <_> - - 0 -1 1966 -4.5027391024632379e-05 - - 7.1991510689258575e-02 -1.2496870011091232e-01 - <_> - - 0 -1 1967 -5.3772819228470325e-05 - - 7.9510539770126343e-02 -7.9604126513004303e-02 - <_> - - 0 -1 1968 9.2382878065109253e-03 - - -4.5949440449476242e-02 2.0551459491252899e-01 - <_> - - 0 -1 1969 3.3600959926843643e-02 - - 2.3966940119862556e-02 -2.2747719287872314e-01 - <_> - - 0 -1 1970 -4.1857630014419556e-02 - - -2.5670358538627625e-01 4.3388199061155319e-02 - <_> - - 0 -1 1971 4.3434980325400829e-03 - - -3.6065939813852310e-02 1.3354070484638214e-01 - <_> - - 0 -1 1972 8.7262392044067383e-03 - - -2.8033399954438210e-02 2.9659709334373474e-01 - <_> - - 0 -1 1973 7.2506397962570190e-02 - - 3.3931098878383636e-02 -2.6456800103187561e-01 - <_> - - 0 -1 1974 6.9837369956076145e-03 - - 2.3075399920344353e-02 -3.6719548702239990e-01 - <_> - - 0 -1 1975 9.3958720564842224e-02 - - 5.1443470874801278e-04 -6.9157868623733521e-01 - <_> - - 0 -1 1976 -5.4611168801784515e-02 - - 3.5633870959281921e-01 -2.5591190904378891e-02 - <_> - - 0 -1 1977 8.3599044010043144e-03 - - -1.1838919669389725e-01 5.4096020758152008e-02 - <_> - - 0 -1 1978 -8.5311960428953171e-03 - - 2.5801640748977661e-01 -4.3296508491039276e-02 - <_> - - 0 -1 1979 5.3095761686563492e-02 - - 1.3446169905364513e-02 -2.0017629861831665e-01 - <_> - - 0 -1 1980 7.1099922060966492e-03 - - -1.7173579335212708e-01 6.6415287554264069e-02 - <_> - - 0 -1 1981 -1.2145659886300564e-02 - - -3.4982419013977051e-01 1.5253229998052120e-02 - <_> - - 0 -1 1982 4.9184050410985947e-02 - - -1.4627310633659363e-01 7.6635338366031647e-02 - <_> - - 0 -1 1983 6.4207926392555237e-02 - - -4.2698029428720474e-02 8.9895337820053101e-02 - <_> - - 0 -1 1984 5.0567109137773514e-02 - - -3.4271400421857834e-02 3.2117810845375061e-01 - <_> - - 0 -1 1985 3.8187500834465027e-01 - - 5.9737069532275200e-03 -4.1509181261062622e-01 - <_> - - 0 -1 1986 2.4141989648342133e-01 - - 4.2892090976238251e-02 -2.5744560360908508e-01 - <_> - - 0 -1 1987 8.7335016578435898e-03 - - 2.1523810923099518e-02 -2.5816148519515991e-01 - <_> - - 0 -1 1988 5.5905920453369617e-03 - - 3.6882549524307251e-02 -2.6805239915847778e-01 - <_> - - 0 -1 1989 1.4510929584503174e-02 - - -1.0920179635286331e-01 9.9173150956630707e-02 - <_> - - 0 -1 1990 -2.7428429573774338e-02 - - -2.5048801302909851e-01 4.5212849974632263e-02 - <_> - - 0 -1 1991 -1.2336769700050354e-01 - - 2.2557680308818817e-01 -4.2895268648862839e-02 - <_> - - 0 -1 1992 -6.1607718467712402e-02 - - -2.7772828936576843e-01 3.2521318644285202e-02 - <_> - - 0 -1 1993 -7.6216891407966614e-02 - - 3.6572670936584473e-01 -2.5518480688333511e-02 - <_> - - 0 -1 1994 4.3231542222201824e-03 - - -5.9951819479465485e-02 1.2853649258613586e-01 - <_> - - 0 -1 1995 -7.2015187470242381e-05 - - 6.6845960915088654e-02 -6.5362177789211273e-02 - <_> - - 0 -1 1996 3.8772630505263805e-03 - - -7.4681833386421204e-02 1.4904339611530304e-01 - <_> - - 0 -1 1997 -3.0842460691928864e-02 - - 4.6776279807090759e-02 -7.9269908368587494e-02 - <_> - - 0 -1 1998 2.9754610732197762e-03 - - -6.3138246536254883e-02 1.2994049489498138e-01 - <_> - - 0 -1 1999 -4.3571940623223782e-03 - - 1.7601740360260010e-01 -2.0950280129909515e-02 - <_> - - 0 -1 2000 2.5649809686001390e-05 - - -9.3459837138652802e-02 1.0563880205154419e-01 - <_> - - 0 -1 2001 -1.9046630710363388e-02 - - 3.7896901369094849e-02 -2.0427240431308746e-01 - <_> - - 0 -1 2002 -5.9084378182888031e-02 - - -2.6028269529342651e-01 3.1877409666776657e-02 - <_> - - 0 -1 2003 -3.9950340986251831e-02 - - -3.5063821077346802e-01 9.2909233644604683e-03 - <_> - - 0 -1 2004 5.0834741443395615e-02 - - 2.1912310272455215e-02 -3.8032969832420349e-01 - <_> - - 0 -1 2005 -1.3603189960122108e-02 - - 2.0380680263042450e-01 -2.1299460902810097e-02 - <_> - - 0 -1 2006 -6.7439332604408264e-02 - - -4.7569081187248230e-01 1.6315059736371040e-02 - <_> - - 0 -1 2007 1.7744049429893494e-02 - - -2.6215350255370140e-02 1.7312249541282654e-01 - <_> - - 0 -1 2008 4.0822949260473251e-02 - - 2.6971889659762383e-02 -2.5315660238265991e-01 - <_> - - 0 -1 2009 -3.5472789313644171e-03 - - -1.9389900565147400e-01 1.5181340277194977e-02 - <_> - - 0 -1 2010 1.3450950384140015e-02 - - -5.6016638875007629e-02 1.3361880183219910e-01 - <_> - - 0 -1 2011 7.0215687155723572e-02 - - 1.2199330143630505e-02 -2.9756540060043335e-01 - <_> - - 0 -1 2012 1.5829039737582207e-02 - - -8.7111897766590118e-02 8.8955126702785492e-02 - <_> - - 0 -1 2013 -2.0391130819916725e-02 - - 1.7829939723014832e-01 -3.7198159843683243e-02 - <_> - - 0 -1 2014 3.6189330276101828e-03 - - -7.6297633349895477e-02 9.6968129277229309e-02 - <_> - - 0 -1 2015 1.0060019558295608e-03 - - -4.9890179187059402e-02 6.5894342958927155e-02 - <_> - - 0 -1 2016 2.9275720007717609e-03 - - 2.9817380011081696e-02 -2.4240310490131378e-01 - <_> - - 0 -1 2017 -1.2258989736437798e-02 - - 1.9031849503517151e-01 -7.5331269763410091e-03 - <_> - - 0 -1 2018 2.3739310563541949e-05 - - -8.8776819407939911e-02 8.0645427107810974e-02 - <_> - - 0 -1 2019 -1.2860990129411221e-02 - - 6.9567993283271790e-02 -2.9768820852041245e-02 - <_> - - 0 -1 2020 -4.9192551523447037e-02 - - 1.5113650262355804e-01 -5.4699920117855072e-02 - <_> - - 0 -1 2021 -1.9440440461039543e-02 - - -1.7859379947185516e-01 1.7632320523262024e-02 - <_> - - 0 -1 2022 2.5363420136272907e-03 - - 3.0099060386419296e-02 -2.1704940497875214e-01 - <_> - - 0 -1 2023 -2.0927110686898232e-02 - - 1.5293440222740173e-01 -2.6591630652546883e-02 - <_> - - 0 -1 2024 2.1768060978502035e-03 - - -8.0131806433200836e-02 8.7036617100238800e-02 - <_> - - 0 -1 2025 3.2644919119775295e-03 - - -5.0661858171224594e-02 5.0410520285367966e-02 - <_> - - 0 -1 2026 5.3135089576244354e-02 - - 3.1357381492853165e-02 -2.4327489733695984e-01 - <_> - - 0 -1 2027 6.5658721141517162e-03 - - -3.1448438763618469e-02 1.3142390549182892e-01 - <_> - - 0 -1 2028 -1.6994590405374765e-03 - - 7.8728817403316498e-02 -9.3054726719856262e-02 - <_> - - 0 -1 2029 -2.3196509107947350e-02 - - 2.0170910656452179e-01 -1.5233940444886684e-02 - <_> - - 0 -1 2030 7.1990801952779293e-03 - - -4.3634898960590363e-02 2.1300609409809113e-01 - <_> - - 0 -1 2031 6.9829211570322514e-03 - - 3.1767521053552628e-02 -2.1285930275917053e-01 - <_> - - 0 -1 2032 -4.4900798238813877e-03 - - -1.7512929439544678e-01 4.4021461158990860e-02 - <_> - - 0 -1 2033 -1.2099999934434891e-01 - - -3.6906799674034119e-01 4.4225710444152355e-03 - <_> - - 0 -1 2034 -3.8008268922567368e-02 - - 5.2773797512054443e-01 -1.4740760438144207e-02 - <_> - - 0 -1 2035 -1.1132000014185905e-02 - - 6.3405543565750122e-02 -1.1063119769096375e-01 - <_> - - 0 -1 2036 1.2125620245933533e-01 - - 1.1243700236082077e-01 -6.7125849425792694e-02 - <_> - - 0 -1 2037 -5.8873560279607773e-02 - - 1.9491989910602570e-01 -7.9787842696532607e-04 - <_> - - 0 -1 2038 -1.2328930199146271e-02 - - -1.8806469440460205e-01 3.9350580424070358e-02 - <_> - - 0 -1 2039 -4.4250390492379665e-03 - - 1.1267340183258057e-01 -6.8100236356258392e-02 - <_> - - 0 -1 2040 -5.0966828130185604e-03 - - -1.7945580184459686e-01 4.7573208808898926e-02 - <_> - - 0 -1 2041 -4.0345240384340286e-02 - - -5.7044768333435059e-01 5.5092480033636093e-03 - <_> - - 0 -1 2042 1.1254940181970596e-01 - - -2.6945270597934723e-02 2.5808990001678467e-01 - <_> - - 0 -1 2043 6.9978296756744385e-02 - - -1.1665009660646319e-03 8.6768251657485962e-01 - <_> - - 0 -1 2044 1.6544900834560394e-02 - - 2.4307189509272575e-02 -2.5596928596496582e-01 - <_> - - 0 -1 2045 8.2277417182922363e-02 - - -2.6873949915170670e-02 2.4098409712314606e-01 - <_> - - 0 -1 2046 -4.6195117756724358e-03 - - -1.6582019627094269e-01 4.0042418986558914e-02 - <_> - - 0 -1 2047 -2.4694160092622042e-03 - - 9.2771060764789581e-02 -2.7375319972634315e-02 - <_> - - 0 -1 2048 1.0857389861484990e-04 - - -1.3484829664230347e-01 4.3606601655483246e-02 - <_> - - 0 -1 2049 -1.6490770503878593e-02 - - -1.6668060421943665e-01 1.7749810591340065e-02 - <_> - - 0 -1 2050 -4.7164629213511944e-03 - - 1.7804649472236633e-01 -3.6563079804182053e-02 - <_> - - 0 -1 2051 9.0624459087848663e-02 - - 1.7400879412889481e-02 -4.8980259895324707e-01 - <_> - - 0 -1 2052 2.7714879252016544e-03 - - -6.5938666462898254e-02 9.6407622098922729e-02 - <_> - - 0 -1 2053 4.3489869683980942e-02 - - 1.3916529715061188e-02 -2.7095559239387512e-01 - <_> - - 0 -1 2054 6.3884491100907326e-03 - - -5.8143090456724167e-02 1.0462710261344910e-01 - <_> - - 0 -1 2055 -1.4263800345361233e-02 - - 1.4017640054225922e-01 -2.6916030794382095e-02 - <_> - - 0 -1 2056 -5.6627448648214340e-03 - - -1.8962329626083374e-01 3.1633749604225159e-02 - <_> - - 0 -1 2057 7.5204060412943363e-03 - - -4.3590031564235687e-02 1.0007920116186142e-01 - <_> - - 0 -1 2058 -1.1097979731857777e-02 - - 3.0840259790420532e-01 -2.1208239719271660e-02 - <_> - - 0 -1 2059 -6.1832141131162643e-02 - - 1.8315550684928894e-01 -7.7433600090444088e-03 - <_> - - 0 -1 2060 3.4768159966915846e-03 - - 5.0638139247894287e-02 -1.3400410115718842e-01 - <_> - - 0 -1 2061 9.7783863544464111e-02 - - 2.0544449798762798e-03 -6.8779617547988892e-01 - <_> - - 0 -1 2062 -9.1820947825908661e-02 - - -2.5586891174316406e-01 2.5108650326728821e-02 - <_> - - 0 -1 2063 -1.4008830301463604e-02 - - -3.6381798982620239e-01 1.5536899678409100e-02 - <_> - - 0 -1 2064 -4.7098949551582336e-02 - - 4.1200450062751770e-01 -1.4785699546337128e-02 - <_> - - 0 -1 2065 -2.4077659472823143e-02 - - -2.6497179269790649e-01 4.3284958228468895e-03 - <_> - - 0 -1 2066 -3.0720019713044167e-03 - - 1.1348199844360352e-01 -5.2723880857229233e-02 - <_> - - 0 -1 2067 -2.3235319182276726e-02 - - -1.6182410717010498e-01 1.3907140120863914e-02 - <_> - - 0 -1 2068 2.1753229200839996e-02 - - 3.2046329230070114e-02 -1.8150269985198975e-01 - <_> - - 0 -1 2069 -2.8419379144906998e-02 - - 7.3599129915237427e-02 -1.2185299769043922e-02 - <_> - - 0 -1 2070 -9.9035337567329407e-02 - - -8.0039161443710327e-01 7.5543550774455070e-03 - <_> - - 0 -1 2071 3.6745260003954172e-03 - - -4.2538471519947052e-02 1.3135530054569244e-01 - <_> - - 0 -1 2072 -2.4902099370956421e-01 - - 5.7097381353378296e-01 -1.0065279901027679e-02 - <_> - - 0 -1 2073 -2.5670630857348442e-03 - - 1.0045439749956131e-01 -4.3844770640134811e-02 - <_> - - 0 -1 2074 6.2725669704377651e-03 - - 2.8288219124078751e-02 -1.9911240041255951e-01 - <_> - - 0 -1 2075 1.2186019681394100e-02 - - -8.9298561215400696e-03 1.7236189544200897e-01 - <_> - - 0 -1 2076 -8.4080873057246208e-03 - - 2.2059670090675354e-01 -2.5424160063266754e-02 - <_> - - 0 -1 2077 7.6226810924708843e-03 - - 2.2617619484663010e-02 -3.5040241479873657e-01 - <_> - - 0 -1 2078 -3.5278380382806063e-03 - - -2.1290290355682373e-01 3.3766809850931168e-02 - <_> - - 0 -1 2079 -4.8759128898382187e-02 - - 2.6399469375610352e-01 -2.2728230804204941e-02 - <_> - - 0 -1 2080 4.2163010686635971e-02 - - 1.6483969986438751e-02 -3.7255099415779114e-01 - <_> - - 0 -1 2081 4.1251659393310547e-02 - - -5.6340959854424000e-03 1.0747420042753220e-01 - <_> - - 0 -1 2082 -3.3506590873003006e-02 - - 3.2449829578399658e-01 -1.9830549135804176e-02 - <_> - - 0 -1 2083 -4.0785958990454674e-03 - - 7.1264110505580902e-02 -8.6405247449874878e-02 - <_> - - 0 -1 2084 -3.9688128978013992e-02 - - -3.5533818602561951e-01 1.6811089590191841e-02 - <_> - - 0 -1 2085 2.6250740885734558e-01 - - 3.3027199096977711e-03 -3.0452561378479004e-01 - <_> - - 0 -1 2086 -1.0336879640817642e-01 - - -4.4277548789978027e-01 1.5268780291080475e-02 - <_> - - 0 -1 2087 2.5352418888360262e-03 - - 2.2626899182796478e-02 -1.9356669485569000e-01 - <_> - - 0 -1 2088 1.3277910184115171e-03 - - -8.4263376891613007e-02 6.5771676599979401e-02 - <_> - - 0 -1 2089 -6.9261603057384491e-02 - - 1.9142749905586243e-01 -1.4814269728958607e-02 - <_> - - 0 -1 2090 -3.1945269554853439e-02 - - -3.0996501445770264e-01 1.8099319189786911e-02 - <_> - - 0 -1 2091 7.1500530466437340e-03 - - -7.5515069067478180e-02 7.1342557668685913e-02 - <_> - - 0 -1 2092 2.4518880527466536e-03 - - -5.2676178514957428e-02 1.1914870142936707e-01 - <_> - - 0 -1 2093 2.5479370728135109e-02 - - -2.1526889875531197e-02 1.1254230141639709e-01 - <_> - - 0 -1 2094 8.3662307588383555e-05 - - -1.2372410297393799e-01 4.4758491218090057e-02 - <_> - - 0 -1 2095 5.2631269209086895e-03 - - 1.6644699499011040e-02 -2.7927619218826294e-01 - <_> - - 0 -1 2096 5.9906251408392563e-05 - - -5.9021618217229843e-02 9.0707242488861084e-02 - <_> - - 0 -1 2097 4.0492799878120422e-01 - - 9.8951030522584915e-03 -5.3900748491287231e-01 - <_> - - 0 -1 2098 4.5421868562698364e-03 - - -8.3042033016681671e-02 5.7933621108531952e-02 - <_> - - 0 -1 2099 -2.8602469712495804e-02 - - 9.8798967897891998e-02 -4.1183408349752426e-02 - <_> - - 0 -1 2100 6.0981088317930698e-03 - - -4.9600891768932343e-02 1.0823159664869308e-01 - <_> - - 0 -1 2101 2.4081019219011068e-03 - - 3.1793300062417984e-02 -8.9700646698474884e-02 - <_> - - 0 -1 2102 -1.0493289679288864e-01 - - -1.8384000658988953e-01 2.9272029176354408e-02 - <_> - - 0 -1 2103 -7.2810851270332932e-04 - - 3.4607950598001480e-02 -1.8057569861412048e-01 - <_> - - 0 -1 2104 2.3983051069080830e-03 - - -3.6649569869041443e-02 1.4693680405616760e-01 - <_> - - 0 -1 2105 4.4842050410807133e-03 - - 2.5456009432673454e-02 -1.7060090601444244e-01 - <_> - - 0 -1 2106 5.5928908288478851e-02 - - 6.9079152308404446e-03 -7.4263191223144531e-01 - <_> - - 0 -1 2107 -1.1314620263874531e-02 - - -6.5691602230072021e-01 3.0682450160384178e-03 - <_> - - 0 -1 2108 5.2855871617794037e-03 - - 1.2209150008857250e-02 -4.1138368844985962e-01 - <_> - - 0 -1 2109 -3.5499120131134987e-03 - - 1.5674009919166565e-01 -1.3673329725861549e-02 - <_> - - 0 -1 2110 -1.6200989484786987e-02 - - -4.5118838548660278e-01 1.0513720102608204e-02 - <_> - - 0 -1 2111 -6.3212178647518158e-03 - - 2.4671469628810883e-01 -2.2179229184985161e-02 - <_> - - 0 -1 2112 6.7806281149387360e-02 - - 1.4192859642207623e-02 -4.5575699210166931e-01 - <_> - - 0 -1 2113 4.4995149970054626e-01 - - -2.0509930327534676e-02 2.3841699957847595e-01 - <_> - - 0 -1 2114 -1.6068010032176971e-01 - - -7.9124170541763306e-01 5.4184817709028721e-03 - <_> - - 0 -1 2115 -9.4610815867781639e-03 - - -2.4211630225181580e-01 9.1182524338364601e-03 - <_> - - 0 -1 2116 1.4758739620447159e-02 - - -4.1610460728406906e-02 1.3534289598464966e-01 - <_> - - 0 -1 2117 6.5756370313465595e-03 - - 9.3746017664670944e-03 -8.3214268088340759e-02 - <_> - - 0 -1 2118 5.7711522094905376e-03 - - 2.6692569255828857e-02 -1.9803330302238464e-01 - <_> - - 0 -1 2119 -5.0913479179143906e-02 - - 3.2146498560905457e-01 -1.6986150294542313e-02 - <_> - - 0 -1 2120 6.3694868003949523e-05 - - -8.4535129368305206e-02 6.8501226603984833e-02 - <_> - - 0 -1 2121 -2.1522149909287691e-03 - - 5.4858829826116562e-02 -4.8125740140676498e-02 - <_> - - 0 -1 2122 -4.0621249936521053e-03 - - 3.1572619080543518e-01 -1.7434440553188324e-02 - <_> - - 0 -1 2123 -3.5119060426950455e-02 - - -4.5856899023056030e-01 1.4954689890146255e-02 - <_> - - 0 -1 2124 -1.2798880226910114e-02 - - -1.5211139619350433e-01 3.4501589834690094e-02 - <_> - - 0 -1 2125 -5.3432481363415718e-03 - - -2.0269839465618134e-01 1.3967310078442097e-02 - <_> - - 0 -1 2126 -3.0109770596027374e-03 - - 2.3964940011501312e-01 -2.1433170884847641e-02 - <_> - - 0 -1 2127 7.9564087092876434e-02 - - 1.6967510804533958e-02 -3.1260809302330017e-01 - <_> - - 0 -1 2128 -1.6894670203328133e-02 - - 1.4590300619602203e-01 -3.4819670021533966e-02 - <_> - - 0 -1 2129 6.5786761045455933e-01 - - -1.3023089617490768e-02 4.1044768691062927e-01 - <_> - - 0 -1 2130 -1.1272220313549042e-01 - - -3.7772709131240845e-01 1.5922689810395241e-02 - <_> - - 0 -1 2131 1.7792880535125732e-02 - - 1.1819509789347649e-02 -2.4668039381504059e-01 - <_> - - 0 -1 2132 3.3843109849840403e-03 - - 4.2096659541130066e-02 -1.3628929853439331e-01 - <_> - - 0 -1 2133 1.2930380180478096e-02 - - 1.5634240582585335e-02 -3.1559720635414124e-01 - <_> - - 0 -1 2134 1.9866120070219040e-02 - - -1.9867179915308952e-02 2.7292838692665100e-01 - <_> - - 0 -1 2135 -2.0256979390978813e-02 - - -7.5079268217086792e-01 3.6987708881497383e-03 - <_> - - 0 -1 2136 -6.8132500164210796e-03 - - -1.8717190623283386e-01 2.9125010594725609e-02 - <_> - - 0 -1 2137 -1.3450549915432930e-02 - - 2.4198499321937561e-01 -1.1136880144476891e-02 - <_> - - 0 -1 2138 -5.3866169764660299e-05 - - 7.5190216302871704e-02 -7.5837813317775726e-02 - <_> - - 0 -1 2139 5.0485909014241770e-05 - - -4.7988038510084152e-02 5.0790980458259583e-02 - <_> - - 0 -1 2140 -6.4496016420889646e-05 - - 8.6316317319869995e-02 -6.7659139633178711e-02 - <_> - - 0 -1 2141 -4.8561800213064998e-05 - - 9.5296271145343781e-02 -7.2032049298286438e-02 - <_> - - 0 -1 2142 5.0147060392191634e-05 - - -7.0621952414512634e-02 9.1684870421886444e-02 - <_> - - 0 -1 2143 7.7007611980661750e-04 - - -3.1202390789985657e-02 5.4991550743579865e-02 - <_> - - 0 -1 2144 9.6719879657030106e-03 - - -4.3330889195203781e-02 1.1517649888992310e-01 - <_> - - 0 -1 2145 7.5680748559534550e-03 - - -2.3294750601053238e-02 2.0603770017623901e-01 - <_> - - 0 -1 2146 5.0460308557376266e-04 - - 5.1032479852437973e-02 -1.1277139931917191e-01 - <_> - - 0 -1 2147 -3.7291790358722210e-03 - - 7.9139657318592072e-02 -2.0108159631490707e-02 - <_> - - 0 -1 2148 1.5590510331094265e-02 - - 1.7876299098134041e-02 -3.2968211174011230e-01 - <_> - - 0 -1 2149 -5.4314311593770981e-02 - - -5.6021261215209961e-01 1.0424769716337323e-03 - <_> - - 0 -1 2150 7.8423749655485153e-03 - - -3.4334991127252579e-02 1.7766019701957703e-01 - <_> - - 0 -1 2151 6.9496310316026211e-03 - - 1.1910869739949703e-02 -2.8336969017982483e-01 - <_> - - 0 -1 2152 -4.2853900231420994e-03 - - -2.3308420181274414e-01 2.2341530770063400e-02 - <_> - - 0 -1 2153 4.8665860958863050e-05 - - -4.3898120522499084e-02 4.3758340179920197e-02 - <_> - - 0 -1 2154 -5.6118220527423546e-05 - - 8.0828711390495300e-02 -6.9480091333389282e-02 - <_> - - 0 -1 2155 -4.8432860523462296e-02 - - -7.9129552841186523e-01 6.5139750950038433e-03 - <_> - - 0 -1 2156 1.5224199742078781e-02 - - -4.0089219808578491e-02 1.3455769419670105e-01 - <_> - - 0 -1 2157 -1.2872340157628059e-02 - - 5.6049060076475143e-02 -2.4543890729546547e-02 - <_> - - 0 -1 2158 2.8247250244021416e-02 - - -3.9471641182899475e-02 1.5137889981269836e-01 - <_> - - 0 -1 2159 7.4682589620351791e-03 - - 1.3042449951171875e-02 -2.0481270551681519e-01 - <_> - - 0 -1 2160 -4.6974901109933853e-02 - - 8.0171698331832886e-01 -7.1750162169337273e-03 - <_> - - 0 -1 2161 1.3225469738245010e-02 - - -1.3960069976747036e-02 1.7298750579357147e-01 - <_> - - 0 -1 2162 2.1193178836256266e-03 - - 4.6903520822525024e-02 -1.5726210176944733e-01 - <_> - - 0 -1 2163 2.1487170457839966e-01 - - 3.7922300398349762e-03 -3.8143840432167053e-01 - <_> - - 0 -1 2164 1.5091340243816376e-01 - - -1.3922699727118015e-02 4.0974789857864380e-01 - <_> - - 0 -1 2165 -2.3029349744319916e-01 - - -5.8206570148468018e-01 1.1216839775443077e-03 - <_> - - 0 -1 2166 1.4030410349369049e-01 - - 1.6904490068554878e-02 -3.6825358867645264e-01 - <_> - - 0 -1 2167 7.0036112447269261e-05 - - -5.5154349654912949e-02 7.2621561586856842e-02 - <_> - - 0 -1 2168 4.9608469009399414e-01 - - 7.3583098128437996e-03 -7.0183300971984863e-01 - <_> - - 0 -1 2169 -2.3255969863384962e-03 - - -1.4822499454021454e-01 3.2614789903163910e-02 - <_> - - 0 -1 2170 -1.3885440304875374e-02 - - 1.6097649931907654e-01 -3.3147368580102921e-02 - <_> - - 0 -1 2171 -7.6077110134065151e-03 - - -5.0956517457962036e-01 5.0284918397665024e-03 - <_> - - 0 -1 2172 2.9671129304915667e-03 - - 3.1977619975805283e-02 -1.9695889949798584e-01 - <_> - - 0 -1 2173 5.5358321405947208e-03 - - -5.6520581245422363e-02 1.0753619670867920e-01 - <_> - - 0 -1 2174 -7.1021996438503265e-02 - - 7.9194337129592896e-02 -8.1384330987930298e-02 - <_> - - 0 -1 2175 4.5800071209669113e-02 - - -3.0750399455428123e-02 1.5652079880237579e-01 - <_> - - 0 -1 2176 6.7807468585669994e-03 - - 1.8944440409541130e-02 -3.0112281441688538e-01 - <_> - - 0 -1 2177 -1.9455070141702890e-03 - - 1.2722960114479065e-01 -2.5484839454293251e-02 - <_> - - 0 -1 2178 1.8618459999561310e-01 - - 9.0244021266698837e-03 -5.4486262798309326e-01 - <_> - - 0 -1 2179 -5.9605968999676406e-05 - - 6.2663361430168152e-02 -5.3432390093803406e-02 - <_> - - 0 -1 2180 -2.3714829236268997e-02 - - -6.0180211067199707e-01 7.9368790611624718e-03 - <_> - - 0 -1 2181 -3.1358301639556885e-02 - - -1.7721989750862122e-01 9.2706838622689247e-03 - <_> - - 0 -1 2182 -3.4968998283147812e-02 - - 3.7945351004600525e-01 -1.6990920528769493e-02 - <_> - - 0 -1 2183 -6.2416650354862213e-02 - - -4.1591739654541016e-01 4.8467209562659264e-03 - <_> - - 0 -1 2184 4.2283751070499420e-02 - - 9.8220221698284149e-03 -4.7655558586120605e-01 - <_> - - 0 -1 2185 5.1127527840435505e-03 - - -3.6782070994377136e-02 1.6474020481109619e-01 - <_> - - 0 -1 2186 -1.1211450211703777e-02 - - 1.8803590536117554e-01 -2.7652859687805176e-02 - <_> - - 0 -1 2187 5.2367132157087326e-03 - - 2.8679000213742256e-02 -1.7751020193099976e-01 - <_> - - 0 -1 2188 -5.3686140745412558e-05 - - 7.5371779501438141e-02 -6.6665068268775940e-02 - <_> - - 0 -1 2189 1.2840200215578079e-02 - - 2.1807890385389328e-02 -1.2720319628715515e-01 - <_> - - 0 -1 2190 4.2792808264493942e-02 - - 7.5381440110504627e-03 -7.1861362457275391e-01 - <_> - - 0 -1 2191 -5.2706589922308922e-03 - - 9.8822019994258881e-02 -4.4858880341053009e-02 - <_> - - 0 -1 2192 -8.2180468598380685e-04 - - -1.0595670342445374e-01 4.4027641415596008e-02 - <_> - - 0 -1 2193 -1.9295280799269676e-02 - - -4.1217219829559326e-01 2.9048579744994640e-03 - <_> - - 0 -1 2194 -2.0072490442544222e-03 - - 1.1491479724645615e-01 -4.5590780675411224e-02 - <_> - - 0 -1 2195 -5.5046308785676956e-02 - - 1.8940329551696777e-01 -1.1900239624083042e-02 - <_> - - 0 -1 2196 -1.1249479651451111e-01 - - 2.4269099533557892e-01 -2.2053480148315430e-02 - <_> - - 0 -1 2197 9.5265945419669151e-03 - - -3.8553819060325623e-02 3.0138580128550529e-02 - <_> - - 0 -1 2198 8.8573405519127846e-03 - - -6.4660146832466125e-02 8.5030071437358856e-02 - <_> - - 0 -1 2199 -5.3099901415407658e-03 - - -7.7924527227878571e-02 5.1822390407323837e-02 - <_> - - 0 -1 2200 1.5247969329357147e-01 - - 1.7019810155034065e-02 -2.8019899129867554e-01 - <_> - - 0 -1 2201 -5.1454458385705948e-02 - - -2.2231650352478027e-01 8.8541666045784950e-03 - <_> - - 0 -1 2202 2.5466380640864372e-02 - - -5.4948728531599045e-02 8.9072257280349731e-02 - <_> - - 0 -1 2203 2.5437718629837036e-01 - - 2.0636660046875477e-03 -8.7088710069656372e-01 - <_> - - 0 -1 2204 -2.2862739861011505e-01 - - 2.0034660398960114e-01 -2.5318780913949013e-02 - <_> - - 0 -1 2205 -1.1813339777290821e-02 - - 1.3387170433998108e-01 -3.6503531038761139e-02 - <_> - - 0 -1 2206 -2.0118320360779762e-02 - - -2.0123849809169769e-01 2.8073679655790329e-02 - <_> - - 0 -1 2207 2.1774079650640488e-02 - - -6.5130768343806267e-03 2.8022170066833496e-01 - <_> - - 0 -1 2208 4.8404871486127377e-03 - - -2.9814250767230988e-02 1.5977649390697479e-01 - <_> - - 0 -1 2209 -1.1922290286747739e-04 - - 3.4044638276100159e-02 -1.6057680547237396e-01 - <_> - - 0 -1 2210 -7.2792158462107182e-03 - - -4.8334380984306335e-01 9.9527724087238312e-03 - <_> - - 0 -1 2211 2.5904899302986450e-05 - - -3.8143690675497055e-02 4.7028180211782455e-02 - <_> - - 0 -1 2212 -9.0986102819442749e-02 - - 2.6971128582954407e-01 -1.7947979271411896e-02 - <_> - - 0 -1 2213 -2.0878769457340240e-01 - - 2.3006640374660492e-01 -2.1609179675579071e-02 - <_> - - 0 -1 2214 -7.0507721975445747e-03 - - -2.5048211216926575e-01 2.0052019506692886e-02 - <_> - - 0 -1 2215 8.9825186878442764e-03 - - -1.8023729324340820e-02 2.9516848921775818e-01 - <_> - - 0 -1 2216 5.9706211090087891e-02 - - -1.2844909913837910e-02 3.5593861341476440e-01 - <_> - - 0 -1 2217 -1.0364769957959652e-02 - - -2.0093110203742981e-01 2.7827220037579536e-02 - <_> - - 0 -1 2218 -1.9454259425401688e-02 - - -5.3035300970077515e-01 9.0706236660480499e-03 - <_> - - 0 -1 2219 -2.1027070470154285e-03 - - 8.8599607348442078e-02 -3.6157719790935516e-02 - <_> - - 0 -1 2220 7.5333649292588234e-03 - - -2.4457870051264763e-02 1.9365130364894867e-01 - <_> - - 0 -1 2221 5.1182601600885391e-03 - - 1.7408149316906929e-02 -2.2554570436477661e-01 - <_> - - 0 -1 2222 2.1947720088064671e-03 - - 2.9690459370613098e-02 -1.9585029780864716e-01 - <_> - - 0 -1 2223 4.1202981024980545e-02 - - -1.3297099620103836e-02 1.0000280290842056e-01 - <_> - - 0 -1 2224 1.6161680221557617e-02 - - 4.0170218795537949e-02 -1.3210490345954895e-01 - <_> - - 0 -1 2225 1.2740600109100342e-01 - - 9.2737795785069466e-03 -2.3941579461097717e-01 - <_> - - 0 -1 2226 -2.6743640191853046e-03 - - 2.3251029849052429e-01 -2.3273019120097160e-02 - <_> - - 0 -1 2227 -1.1705280095338821e-01 - - -2.1834470331668854e-01 1.3516159728169441e-02 - <_> - - 0 -1 2228 6.6700777970254421e-03 - - -4.3667081743478775e-02 1.0799729824066162e-01 - <_> - - 0 -1 2229 4.0056079626083374e-02 - - -6.8564810790121555e-03 2.9377210140228271e-01 - <_> - - 0 -1 2230 -4.5556342229247093e-03 - - 1.1046539992094040e-01 -4.6572249382734299e-02 - <_> - - 0 -1 2231 3.1573511660099030e-02 - - 9.8816202953457832e-03 -4.1573968529701233e-01 - <_> - - 0 -1 2232 -2.4809420108795166e-02 - - -3.3196479082107544e-01 1.4033090323209763e-02 - <_> - - 0 -1 2233 -2.8404951444827020e-04 - - -9.7788289189338684e-02 2.3671500384807587e-02 - <_> - - 0 -1 2234 4.0798787958920002e-03 - - 6.7953333258628845e-02 -9.0779386460781097e-02 - <_> - - 0 -1 2235 -2.2680750116705894e-02 - - -8.0813902616500854e-01 3.1646140851080418e-03 - <_> - - 0 -1 2236 -1.6572299646213651e-03 - - 1.4296419918537140e-01 -3.2175339758396149e-02 - <_> - - 0 -1 2237 -2.0962789654731750e-02 - - -7.5405949354171753e-01 3.1872680410742760e-03 - <_> - - 0 -1 2238 -1.0227429447695613e-03 - - 8.3290070295333862e-02 -5.5208690464496613e-02 - <_> - - 0 -1 2239 -3.0178760644048452e-03 - - -4.1023060679435730e-02 1.9629580900073051e-02 - <_> - - 0 -1 2240 1.9140060245990753e-01 - - 1.7543679103255272e-02 -2.5566551089286804e-01 - <_> - - 0 -1 2241 -1.8952760845422745e-02 - - 3.2863160967826843e-01 -4.8918230459094048e-03 - <_> - - 0 -1 2242 -4.5249331742525101e-03 - - -1.5619170665740967e-01 2.9538759961724281e-02 - <_> - - 0 -1 2243 -4.9335299991071224e-03 - - -1.5361049771308899e-01 1.2712599709630013e-02 - <_> - - 0 -1 2244 1.8985930830240250e-02 - - -3.9585389196872711e-02 1.2031179666519165e-01 - <_> - - 0 -1 2245 -1.5369809698313475e-03 - - 5.1183801144361496e-02 -1.9807800650596619e-02 - <_> - - 0 -1 2246 3.1302288174629211e-02 - - 7.9048639163374901e-03 -5.4225182533264160e-01 - <_> - - 0 -1 2247 -7.9099438153207302e-04 - - 7.3334179818630219e-02 -2.4761039763689041e-02 - <_> - - 0 -1 2248 4.5027391024632379e-05 - - -6.7761823534965515e-02 6.7263968288898468e-02 - <_> - - 0 -1 2249 5.1923059800174087e-05 - - -3.4273158758878708e-02 3.8594700396060944e-02 - <_> - - 0 -1 2250 -5.7095869124168530e-05 - - 8.3823829889297485e-02 -6.6085226833820343e-02 - <_> - - 0 -1 2251 -1.2159290164709091e-01 - - -7.0010262727737427e-01 1.8631670391187072e-03 - <_> - - 0 -1 2252 1.7494540661573410e-02 - - 2.5959860533475876e-02 -1.8100750446319580e-01 - <_> - - 0 -1 2253 -6.3360072672367096e-02 - - 1.3021109998226166e-01 -8.8773788884282112e-03 - <_> - - 0 -1 2254 -3.9351868629455566e-01 - - -6.3525807857513428e-01 8.2348221912980080e-03 - <_> - - 0 -1 2255 -1.4749130234122276e-02 - - 5.7367369532585144e-02 -7.7454112470149994e-02 - <_> - - 0 -1 2256 7.4586831033229828e-03 - - -7.3831513524055481e-02 7.2971351444721222e-02 - <_> - - 0 -1 2257 6.0465059505077079e-05 - - -6.8741306662559509e-02 8.3382681012153625e-02 - <_> - - 0 -1 2258 6.3182349549606442e-05 - - -6.4837761223316193e-02 7.9487666487693787e-02 - <_> - - 0 -1 2259 -1.7990749329328537e-02 - - -3.4188538789749146e-01 8.2358242943882942e-03 - <_> - - 0 -1 2260 -1.7810800345614552e-03 - - 8.3142079412937164e-02 -6.6293247044086456e-02 - <_> - 356 - -1.1554880142211914e+00 - - <_> - - 0 -1 2261 5.2821958065032959e-01 - - -1.1207380145788193e-01 4.6492001414299011e-01 - <_> - - 0 -1 2262 -8.3934608846902847e-03 - - 1.2420009821653366e-01 -9.8423361778259277e-02 - <_> - - 0 -1 2263 -1.2533710338175297e-02 - - 1.2940670549869537e-01 -2.1826070547103882e-01 - <_> - - 0 -1 2264 -2.6514590717852116e-03 - - 1.0746669769287109e-01 -6.5223596990108490e-02 - <_> - - 0 -1 2265 -1.2469879584386945e-03 - - 9.4827726483345032e-02 -1.9725410640239716e-01 - <_> - - 0 -1 2266 -1.0506220161914825e-02 - - -1.7862290143966675e-01 7.0718586444854736e-02 - <_> - - 0 -1 2267 -1.4628679491579533e-03 - - 7.7305212616920471e-02 -1.5881679952144623e-01 - <_> - - 0 -1 2268 1.1747170239686966e-02 - - 4.1279338300228119e-02 -1.6574889421463013e-01 - <_> - - 0 -1 2269 2.1636099554598331e-03 - - -8.1736542284488678e-02 1.8447269499301910e-01 - <_> - - 0 -1 2270 -1.5604849904775620e-02 - - 1.8409819900989532e-01 9.1587323695421219e-03 - <_> - - 0 -1 2271 -6.7909010685980320e-03 - - 1.9271300733089447e-01 -6.1005659401416779e-02 - <_> - - 0 -1 2272 -4.6382728032767773e-03 - - 7.2124399244785309e-02 -1.5475249290466309e-01 - <_> - - 0 -1 2273 -1.0595080256462097e-01 - - 1.6988320648670197e-01 -7.7400818467140198e-02 - <_> - - 0 -1 2274 2.2278100252151489e-02 - - 3.0081849545240402e-02 -3.1891208887100220e-01 - <_> - - 0 -1 2275 3.8351129740476608e-02 - - -2.9357129707932472e-02 3.7845009565353394e-01 - <_> - - 0 -1 2276 1.2740549631416798e-02 - - 1.2108690105378628e-02 -2.8980401158332825e-01 - <_> - - 0 -1 2277 -1.1967839673161507e-02 - - -2.7529829740524292e-01 3.3420279622077942e-02 - <_> - - 0 -1 2278 6.2382412143051624e-03 - - 2.3227069526910782e-02 -2.8768861293792725e-01 - <_> - - 0 -1 2279 1.2571290135383606e-03 - - -1.2283419817686081e-01 7.7545933425426483e-02 - <_> - - 0 -1 2280 9.7746416926383972e-02 - - 1.2077139690518379e-02 -3.2092699408531189e-01 - <_> - - 0 -1 2281 -5.9180860407650471e-03 - - -2.2756209969520569e-01 4.4753268361091614e-02 - <_> - - 0 -1 2282 6.4139030873775482e-03 - - 4.0146928280591965e-02 -5.0460521131753922e-02 - <_> - - 0 -1 2283 9.2285759747028351e-03 - - 2.3475490510463715e-02 -3.7728920578956604e-01 - <_> - - 0 -1 2284 -2.6009760331362486e-03 - - 5.8036070317029953e-02 -3.9748001843690872e-02 - <_> - - 0 -1 2285 4.5100939460098743e-03 - - -1.5007099509239197e-01 6.4765617251396179e-02 - <_> - - 0 -1 2286 -3.0929979681968689e-01 - - -3.6162209510803223e-01 5.2778669632971287e-03 - <_> - - 0 -1 2287 1.6643610596656799e-01 - - 5.8025740087032318e-02 -1.6670639812946320e-01 - <_> - - 0 -1 2288 -2.9249170795083046e-02 - - -1.0418120026588440e-01 4.7381941229104996e-02 - <_> - - 0 -1 2289 5.7897690683603287e-02 - - -8.2713462412357330e-02 1.2301749736070633e-01 - <_> - - 0 -1 2290 4.3999850749969482e-02 - - 3.1090460252016783e-03 -3.8884210586547852e-01 - <_> - - 0 -1 2291 -1.3344550132751465e-01 - - -2.7564039826393127e-01 3.0734259635210037e-02 - <_> - - 0 -1 2292 8.4765329957008362e-03 - - 2.6562379673123360e-02 -2.8648358583450317e-01 - <_> - - 0 -1 2293 6.2942858785390854e-03 - - 1.9861690700054169e-02 -3.6465620994567871e-01 - <_> - - 0 -1 2294 1.1854199692606926e-02 - - -4.8169068992137909e-02 1.5777969360351562e-01 - <_> - - 0 -1 2295 -1.0978949815034866e-01 - - -2.1610009670257568e-01 3.5239979624748230e-02 - <_> - - 0 -1 2296 1.2859810376539826e-03 - - -7.6805353164672852e-02 9.9000319838523865e-02 - <_> - - 0 -1 2297 1.0880099982023239e-01 - - -9.8220370709896088e-02 1.1628390103578568e-01 - <_> - - 0 -1 2298 1.4206060208380222e-02 - - 4.8896879889070988e-03 -3.8383349776268005e-01 - <_> - - 0 -1 2299 1.3263390399515629e-02 - - 2.2176699712872505e-02 -3.8806360960006714e-01 - <_> - - 0 -1 2300 7.9566845670342445e-03 - - -7.1314819157123566e-02 7.4114650487899780e-02 - <_> - - 0 -1 2301 7.6957657933235168e-02 - - -3.6166220903396606e-02 2.5757679343223572e-01 - <_> - - 0 -1 2302 1.0020350106060505e-02 - - -7.8531332314014435e-02 6.3383802771568298e-02 - <_> - - 0 -1 2303 9.2017520219087601e-03 - - 2.9391989111900330e-02 -2.5732880830764771e-01 - <_> - - 0 -1 2304 3.0723180621862411e-02 - - -1.8738139420747757e-02 2.2832340002059937e-01 - <_> - - 0 -1 2305 1.1019960045814514e-02 - - -5.3296729922294617e-02 1.7494520545005798e-01 - <_> - - 0 -1 2306 -2.7454070746898651e-02 - - 1.7024679481983185e-01 -8.2028387114405632e-03 - <_> - - 0 -1 2307 -1.3689819723367691e-02 - - 2.0019780099391937e-01 -4.1991960257291794e-02 - <_> - - 0 -1 2308 -8.1678535789251328e-03 - - -2.6262301206588745e-01 1.0354639962315559e-02 - <_> - - 0 -1 2309 1.0099980048835278e-02 - - -4.4948261231184006e-02 1.8523730337619781e-01 - <_> - - 0 -1 2310 2.0024929940700531e-01 - - -3.6824479699134827e-02 2.4072830379009247e-01 - <_> - - 0 -1 2311 3.7789789494127035e-03 - - -1.3910900056362152e-01 7.6126843690872192e-02 - <_> - - 0 -1 2312 -1.1101000010967255e-02 - - 2.3991499841213226e-01 -3.6410998553037643e-02 - <_> - - 0 -1 2313 6.2072020024061203e-02 - - 2.7602510526776314e-02 -2.9762440919876099e-01 - <_> - - 0 -1 2314 -4.9415021203458309e-04 - - 4.3032951653003693e-02 -1.6109019517898560e-01 - <_> - - 0 -1 2315 -3.5258450079709291e-03 - - -1.7413130402565002e-01 5.7513698935508728e-02 - <_> - - 0 -1 2316 5.6127668358385563e-03 - - -2.4234469980001450e-02 9.8788991570472717e-02 - <_> - - 0 -1 2317 3.7660789676010609e-03 - - -3.6623299121856689e-02 2.0090830326080322e-01 - <_> - - 0 -1 2318 1.5459409914910793e-02 - - 7.6649021357297897e-03 -2.0163559913635254e-01 - <_> - - 0 -1 2319 -1.0357989929616451e-02 - - -4.2395240068435669e-01 1.7005009576678276e-02 - <_> - - 0 -1 2320 -1.3180119916796684e-02 - - -2.8122058510780334e-01 2.5302259251475334e-02 - <_> - - 0 -1 2321 3.6393520236015320e-01 - - 1.0694099590182304e-02 -6.5183037519454956e-01 - <_> - - 0 -1 2322 4.5797090977430344e-02 - - -1.0829409584403038e-03 -6.0917937755584717e-01 - <_> - - 0 -1 2323 -1.6817899420857430e-02 - - 2.4067279696464539e-01 -2.8841640800237656e-02 - <_> - - 0 -1 2324 -6.9932773709297180e-02 - - -2.4569059908390045e-01 1.4374910097103566e-04 - <_> - - 0 -1 2325 3.7072949111461639e-02 - - 1.2047279626131058e-02 -6.1824947595596313e-01 - <_> - - 0 -1 2326 -2.2509139962494373e-03 - - -1.3868570327758789e-01 2.3441780358552933e-02 - <_> - - 0 -1 2327 -4.1130598634481430e-02 - - -4.9580198526382446e-01 1.2616300024092197e-02 - <_> - - 0 -1 2328 2.3879110813140869e-05 - - -7.0274658501148224e-02 6.5245926380157471e-02 - <_> - - 0 -1 2329 -3.2828738912940025e-03 - - -2.1801410615444183e-01 2.8452510014176369e-02 - <_> - - 0 -1 2330 -5.8957811444997787e-02 - - -1.1310169845819473e-01 3.5647820681333542e-02 - <_> - - 0 -1 2331 3.2863670639926568e-05 - - -6.9775812327861786e-02 9.4940163195133209e-02 - <_> - - 0 -1 2332 -7.3036700487136841e-02 - - 1.0691460222005844e-01 -8.9681193232536316e-02 - <_> - - 0 -1 2333 -1.0581959784030914e-01 - - 1.8230620026588440e-01 -3.8819670677185059e-02 - <_> - - 0 -1 2334 4.6694820048287511e-04 - - -1.0075339674949646e-01 6.5119899809360504e-02 - <_> - - 0 -1 2335 -2.5920490734279156e-03 - - -2.5448209047317505e-01 2.3101860657334328e-02 - <_> - - 0 -1 2336 1.0439500212669373e-02 - - 4.0941308252513409e-03 -5.8273357152938843e-01 - <_> - - 0 -1 2337 -2.3739310563541949e-05 - - 6.0636729001998901e-02 -1.0014739632606506e-01 - <_> - - 0 -1 2338 -2.2808990906924009e-03 - - 1.8519909679889679e-01 -2.5434119626879692e-02 - <_> - - 0 -1 2339 -2.0937379449605942e-03 - - -1.9199110567569733e-01 3.3368378877639771e-02 - <_> - - 0 -1 2340 -2.1821799874305725e-01 - - 3.0659881234169006e-01 -2.1840380504727364e-02 - <_> - - 0 -1 2341 1.1518020182847977e-02 - - -1.0706210136413574e-01 5.8232858777046204e-02 - <_> - - 0 -1 2342 -3.1504388898611069e-02 - - 1.1767739802598953e-01 -4.5906491577625275e-02 - <_> - - 0 -1 2343 -2.9461419209837914e-02 - - -2.2960099577903748e-01 2.8894580900669098e-02 - <_> - - 0 -1 2344 -7.9243192449212074e-03 - - 1.4196249842643738e-01 -1.2565449811518192e-02 - <_> - - 0 -1 2345 4.1360300965607166e-03 - - -2.8592340648174286e-02 2.0373730361461639e-01 - <_> - - 0 -1 2346 1.0430599562823772e-02 - - -4.2332988232374191e-02 5.2509099245071411e-02 - <_> - - 0 -1 2347 -2.4384139478206635e-01 - - 3.3615669608116150e-01 -1.8990069627761841e-02 - <_> - - 0 -1 2348 7.5686741620302200e-03 - - 6.4027151092886925e-03 -3.0588310956954956e-01 - <_> - - 0 -1 2349 1.2688450515270233e-03 - - -9.0141750872135162e-02 7.2941012680530548e-02 - <_> - - 0 -1 2350 3.0815709382295609e-02 - - 2.9594700317829847e-03 -2.4351659417152405e-01 - <_> - - 0 -1 2351 2.1978209260851145e-03 - - -6.3376732170581818e-02 1.0065200179815292e-01 - <_> - - 0 -1 2352 6.1282119713723660e-03 - - -3.8386259227991104e-02 6.6562168300151825e-02 - <_> - - 0 -1 2353 2.8037100564688444e-03 - - 3.5719309002161026e-02 -1.5420930087566376e-01 - <_> - - 0 -1 2354 -3.9568650536239147e-03 - - 7.0916712284088135e-02 -3.9958059787750244e-02 - <_> - - 0 -1 2355 1.3929230161011219e-02 - - -2.3392310366034508e-02 2.8147700428962708e-01 - <_> - - 0 -1 2356 -1.0155060328543186e-02 - - -1.4042359590530396e-01 1.8515620380640030e-02 - <_> - - 0 -1 2357 1.4601370319724083e-02 - - 1.2359219603240490e-02 -5.4975450038909912e-01 - <_> - - 0 -1 2358 5.3091858717380092e-05 - - -4.3967559933662415e-02 3.4709561616182327e-02 - <_> - - 0 -1 2359 -2.1016378886997700e-03 - - 2.2752889990806580e-01 -2.8702080249786377e-02 - <_> - - 0 -1 2360 6.4648198895156384e-03 - - 1.8192790448665619e-02 -2.2275130450725555e-01 - <_> - - 0 -1 2361 -2.6089660823345184e-03 - - -1.4833129942417145e-01 4.2162369936704636e-02 - <_> - - 0 -1 2362 -4.9172870814800262e-02 - - 1.8216049671173096e-01 -3.4944381564855576e-02 - <_> - - 0 -1 2363 -1.7964000580832362e-03 - - 4.8824101686477661e-02 -1.8214319646358490e-01 - <_> - - 0 -1 2364 7.3850047774612904e-03 - - -4.1866000741720200e-02 1.8619979918003082e-01 - <_> - - 0 -1 2365 2.0502610132098198e-02 - - -5.8134358376264572e-02 1.3789500296115875e-01 - <_> - - 0 -1 2366 1.1636819690465927e-01 - - -5.5159669369459152e-02 6.7019522190093994e-02 - <_> - - 0 -1 2367 -5.8732312172651291e-03 - - 2.3400300741195679e-01 -2.7389379218220711e-02 - <_> - - 0 -1 2368 2.8881600499153137e-01 - - 1.9362909719347954e-02 -1.6190120577812195e-01 - <_> - - 0 -1 2369 -1.1966419965028763e-01 - - 2.4559150636196136e-01 -2.5993959978222847e-02 - <_> - - 0 -1 2370 3.8372459821403027e-03 - - -1.3896790146827698e-01 5.6779049336910248e-02 - <_> - - 0 -1 2371 -1.1065569706261158e-03 - - -1.6209499537944794e-01 3.6041721701622009e-02 - <_> - - 0 -1 2372 8.6359567940235138e-02 - - -1.0209360159933567e-02 2.5007158517837524e-01 - <_> - - 0 -1 2373 -3.5953361541032791e-02 - - -7.5698071718215942e-01 8.1533808261156082e-03 - <_> - - 0 -1 2374 8.2757696509361267e-02 - - -1.1972229927778244e-02 1.3151499629020691e-01 - <_> - - 0 -1 2375 1.4555160701274872e-01 - - 2.5669520720839500e-02 -2.3377719521522522e-01 - <_> - - 0 -1 2376 6.6698692739009857e-02 - - 1.8229909241199493e-02 -1.2386269867420197e-01 - <_> - - 0 -1 2377 9.8781272768974304e-02 - - -1.9738260656595230e-02 3.2106879353523254e-01 - <_> - - 0 -1 2378 -2.8243279457092285e-01 - - -5.4694139957427979e-01 2.3887760471552610e-03 - <_> - - 0 -1 2379 2.1013429760932922e-01 - - 1.8199119716882706e-02 -3.6248031258583069e-01 - <_> - - 0 -1 2380 -6.5322709269821644e-04 - - 5.5216301232576370e-02 -3.0892439186573029e-02 - <_> - - 0 -1 2381 -3.4593738615512848e-02 - - 3.3557349443435669e-01 -1.5504119917750359e-02 - <_> - - 0 -1 2382 -5.2095651626586914e-03 - - -2.5957450270652771e-01 1.2371880002319813e-02 - <_> - - 0 -1 2383 6.7268118262290955e-02 - - -6.2751926481723785e-02 9.1558992862701416e-02 - <_> - - 0 -1 2384 4.0582818910479546e-03 - - 4.1073631495237350e-02 -1.5675480663776398e-01 - <_> - - 0 -1 2385 -4.4469390064477921e-02 - - -1.9344259798526764e-01 3.1193459406495094e-02 - <_> - - 0 -1 2386 -2.8536471072584391e-03 - - -7.4204660952091217e-02 8.2652583718299866e-02 - <_> - - 0 -1 2387 1.2151960283517838e-01 - - -1.7220549285411835e-02 3.7725690007209778e-01 - <_> - - 0 -1 2388 5.2743978798389435e-02 - - 7.3638479225337505e-03 -3.9580649137496948e-01 - <_> - - 0 -1 2389 1.3366829603910446e-02 - - 3.0281009152531624e-02 -1.7159000039100647e-01 - <_> - - 0 -1 2390 7.8486632555723190e-03 - - -2.2395020350813866e-02 1.5052449703216553e-01 - <_> - - 0 -1 2391 -3.8255099207162857e-03 - - 1.3788110017776489e-01 -3.9005029946565628e-02 - <_> - - 0 -1 2392 -1.4737069606781006e-01 - - 9.8498381674289703e-02 -1.7566099762916565e-02 - <_> - - 0 -1 2393 7.1411043405532837e-02 - - 2.3220099508762360e-02 -2.6759588718414307e-01 - <_> - - 0 -1 2394 1.6689129173755646e-02 - - -2.1761840209364891e-02 1.4617420732975006e-01 - <_> - - 0 -1 2395 -3.2251640222966671e-03 - - 1.1931479722261429e-01 -5.4029799997806549e-02 - <_> - - 0 -1 2396 7.9702045768499374e-03 - - -5.4389618337154388e-02 7.2950288653373718e-02 - <_> - - 0 -1 2397 1.1626689694821835e-02 - - 3.2414920628070831e-02 -1.7057350277900696e-01 - <_> - - 0 -1 2398 -3.3233501017093658e-02 - - -1.5321509540081024e-01 2.7658430859446526e-02 - <_> - - 0 -1 2399 1.6202520579099655e-02 - - -7.9839676618576050e-02 8.0415137112140656e-02 - <_> - - 0 -1 2400 -1.6993099823594093e-02 - - 1.0708849877119064e-01 -2.7095580473542213e-02 - <_> - - 0 -1 2401 5.2699539810419083e-03 - - -7.7671408653259277e-02 9.0478442609310150e-02 - <_> - - 0 -1 2402 -1.1230699717998505e-02 - - -3.6888670921325684e-01 1.4764210209250450e-02 - <_> - - 0 -1 2403 2.1683340892195702e-02 - - 2.1191939711570740e-02 -2.4312150478363037e-01 - <_> - - 0 -1 2404 -2.7136749122291803e-03 - - 1.2931990623474121e-01 -1.8054159358143806e-02 - <_> - - 0 -1 2405 3.8232649676501751e-03 - - -6.7757181823253632e-02 7.9043537378311157e-02 - <_> - - 0 -1 2406 1.2926490046083927e-02 - - 2.2853519767522812e-02 -2.5793269276618958e-01 - <_> - - 0 -1 2407 -2.6950810570269823e-03 - - 2.1666090190410614e-01 -2.7097690850496292e-02 - <_> - - 0 -1 2408 2.1591490507125854e-01 - - 4.6611670404672623e-03 -8.6887371540069580e-01 - <_> - - 0 -1 2409 1.6816329956054688e-01 - - 1.4129919931292534e-02 -3.5010749101638794e-01 - <_> - - 0 -1 2410 -4.9199439585208893e-02 - - -7.7299457788467407e-01 6.0964501462876797e-03 - <_> - - 0 -1 2411 2.6104740798473358e-02 - - 6.1850231140851974e-03 -6.6869372129440308e-01 - <_> - - 0 -1 2412 1.4541350305080414e-02 - - 5.0752838142216206e-03 -7.4292498826980591e-01 - <_> - - 0 -1 2413 1.1107119498774409e-03 - - -3.4112259745597839e-02 1.5071749687194824e-01 - <_> - - 0 -1 2414 -1.0770659893751144e-02 - - -9.3431137502193451e-02 1.0186879895627499e-02 - <_> - - 0 -1 2415 9.4277620315551758e-02 - - -6.0080580413341522e-02 8.3786897361278534e-02 - <_> - - 0 -1 2416 1.2355080246925354e-01 - - -4.1992601007223129e-02 9.3132473528385162e-02 - <_> - - 0 -1 2417 8.3645677566528320e-01 - - 1.1344860307872295e-02 -5.4795432090759277e-01 - <_> - - 0 -1 2418 3.5250179469585419e-02 - - -1.0818820446729660e-02 9.0401187539100647e-02 - <_> - - 0 -1 2419 -5.1221748435636982e-05 - - 7.9516053199768066e-02 -6.6719420254230499e-02 - <_> - - 0 -1 2420 6.7162756749894470e-05 - - -4.4288840144872665e-02 5.3668409585952759e-02 - <_> - - 0 -1 2421 4.6395221725106239e-03 - - -8.4727346897125244e-02 6.2100611627101898e-02 - <_> - - 0 -1 2422 -1.3368109939619899e-03 - - -8.0351352691650391e-02 2.7986800298094749e-02 - <_> - - 0 -1 2423 -3.3781651407480240e-02 - - 3.2461521029472351e-01 -1.6312640160322189e-02 - <_> - - 0 -1 2424 -1.7830280121415854e-03 - - -1.6490410268306732e-01 2.1757079288363457e-02 - <_> - - 0 -1 2425 2.0984211005270481e-03 - - 2.9534770175814629e-02 -1.7951250076293945e-01 - <_> - - 0 -1 2426 -5.3364270570455119e-05 - - 4.4331740587949753e-02 -3.6765310913324356e-02 - <_> - - 0 -1 2427 1.2269259989261627e-01 - - 1.2407179921865463e-02 -4.0553379058837891e-01 - <_> - - 0 -1 2428 9.4987526535987854e-02 - - -3.5644270246848464e-04 -9.9994051456451416e-01 - <_> - - 0 -1 2429 -6.3772678375244141e-02 - - 7.4163448810577393e-01 -6.8990588188171387e-03 - <_> - - 0 -1 2430 5.5591128766536713e-02 - - -3.5102190449833870e-03 2.1648910641670227e-01 - <_> - - 0 -1 2431 -1.5703400596976280e-02 - - -2.3365770280361176e-01 2.3516980931162834e-02 - <_> - - 0 -1 2432 -1.1627990007400513e-01 - - -1. 5.0003651995211840e-04 - <_> - - 0 -1 2433 6.3939712941646576e-02 - - 8.5324635729193687e-03 -5.6500917673110962e-01 - <_> - - 0 -1 2434 1.8591650296002626e-03 - - -2.1516749635338783e-02 4.3187011033296585e-02 - <_> - - 0 -1 2435 2.3360128980129957e-03 - - 4.5124590396881104e-02 -1.0887669771909714e-01 - <_> - - 0 -1 2436 -5.8738891035318375e-02 - - -5.6496912240982056e-01 5.2059069275856018e-03 - <_> - - 0 -1 2437 3.7132750730961561e-03 - - -1.3463160023093224e-02 3.7635311484336853e-01 - <_> - - 0 -1 2438 2.0255730487406254e-03 - - 3.1444959342479706e-02 -1.2322609871625900e-01 - <_> - - 0 -1 2439 -6.3382161897607148e-05 - - 7.7033013105392456e-02 -6.6739097237586975e-02 - <_> - - 0 -1 2440 1.2969060242176056e-01 - - 3.6417250521481037e-03 -4.1131299734115601e-01 - <_> - - 0 -1 2441 -1.1913739889860153e-01 - - -6.0263478755950928e-01 7.9903472214937210e-03 - <_> - - 0 -1 2442 -1.2801880016922951e-02 - - -5.9771001338958740e-01 1.0519300121814013e-03 - <_> - - 0 -1 2443 -1.9107370078563690e-01 - - -8.1298089027404785e-01 5.7100728154182434e-03 - <_> - - 0 -1 2444 2.2893320769071579e-02 - - 1.9452519714832306e-02 -1.6321709752082825e-01 - <_> - - 0 -1 2445 1.7033159732818604e-01 - - -1.9810710102319717e-02 2.4343749880790710e-01 - <_> - - 0 -1 2446 3.8168561458587646e-01 - - 7.4787861667573452e-03 -8.3872407674789429e-01 - <_> - - 0 -1 2447 -6.2416237778961658e-03 - - -1.4228279888629913e-01 3.3278539776802063e-02 - <_> - - 0 -1 2448 8.4588013589382172e-02 - - 1.6765499487519264e-02 -9.2857971787452698e-02 - <_> - - 0 -1 2449 2.2514959797263145e-02 - - 8.7925590574741364e-02 -7.1550369262695312e-02 - <_> - - 0 -1 2450 -1.9668120145797729e-01 - - 8.3321869373321533e-02 -2.0352829247713089e-02 - <_> - - 0 -1 2451 -2.1616910398006439e-01 - - 2.9649278521537781e-01 -1.6111530363559723e-02 - <_> - - 0 -1 2452 -8.8920090347528458e-03 - - 1.3778349757194519e-01 -3.5843171179294586e-02 - <_> - - 0 -1 2453 -1.2084799818694592e-02 - - -4.3843948841094971e-01 1.2365490198135376e-02 - <_> - - 0 -1 2454 2.5806298851966858e-01 - - -5.2921390160918236e-03 3.7774148583412170e-01 - <_> - - 0 -1 2455 1.4883230440318584e-02 - - 9.0738674625754356e-03 -5.5208402872085571e-01 - <_> - - 0 -1 2456 6.6914242506027222e-01 - - -1.4938499778509140e-02 1.7851120233535767e-01 - <_> - - 0 -1 2457 -4.9930079840123653e-03 - - -2.3148590326309204e-01 2.3481570184230804e-02 - <_> - - 0 -1 2458 2.0315469801425934e-01 - - 2.1833679638803005e-03 -4.9344301223754883e-01 - <_> - - 0 -1 2459 -5.6780078448355198e-03 - - 1.9343170523643494e-01 -2.7786340564489365e-02 - <_> - - 0 -1 2460 5.9304530732333660e-03 - - -2.0089559257030487e-02 1.0909699648618698e-01 - <_> - - 0 -1 2461 -2.3739310563541949e-05 - - 6.9419682025909424e-02 -8.3425432443618774e-02 - <_> - - 0 -1 2462 -6.2176208011806011e-03 - - 7.8689947724342346e-02 -1.3951480388641357e-02 - <_> - - 0 -1 2463 5.5320560932159424e-03 - - -6.6315047442913055e-02 7.9847618937492371e-02 - <_> - - 0 -1 2464 -3.6959160119295120e-02 - - -2.9380309581756592e-01 1.5764990821480751e-02 - <_> - - 0 -1 2465 1.6365250572562218e-02 - - -3.2235268503427505e-02 1.4612549543380737e-01 - <_> - - 0 -1 2466 -7.8597873449325562e-02 - - -1.9322140514850616e-01 9.7729396075010300e-03 - <_> - - 0 -1 2467 -3.7147980183362961e-02 - - -8.0554589629173279e-02 6.5781079232692719e-02 - <_> - - 0 -1 2468 1.1728459969162941e-02 - - 2.7243109419941902e-02 -1.4649729430675507e-01 - <_> - - 0 -1 2469 -1.0335040278732777e-02 - - 6.2767356634140015e-02 -8.1577852368354797e-02 - <_> - - 0 -1 2470 -2.2553969174623489e-02 - - -5.3455010056495667e-02 2.6032449677586555e-02 - <_> - - 0 -1 2471 -2.0984159782528877e-02 - - -7.0430137217044830e-02 7.9067058861255646e-02 - <_> - - 0 -1 2472 -7.0778899826109409e-03 - - 6.8095311522483826e-02 -2.1682029590010643e-02 - <_> - - 0 -1 2473 -1.9395829876884818e-03 - - 6.1789739876985550e-02 -1.0044089704751968e-01 - <_> - - 0 -1 2474 1.5511269448325038e-03 - - -2.3770300671458244e-02 1.0483939945697784e-01 - <_> - - 0 -1 2475 -8.7477812485303730e-05 - - 7.3554880917072296e-02 -6.8933039903640747e-02 - <_> - - 0 -1 2476 -4.8028680612333119e-04 - - 4.4728521257638931e-02 -4.3513979762792587e-02 - <_> - - 0 -1 2477 -1.7207010090351105e-01 - - -5.9279191493988037e-01 8.8808601722121239e-03 - <_> - - 0 -1 2478 1.5847340226173401e-01 - - 3.0388650484383106e-03 -2.7436259388923645e-01 - <_> - - 0 -1 2479 -1.4971689879894257e-01 - - -7.6002198457717896e-01 6.4801289699971676e-03 - <_> - - 0 -1 2480 -2.0640289876610041e-03 - - 1.5531200170516968e-01 -3.0484480783343315e-02 - <_> - - 0 -1 2481 -7.7108487486839294e-02 - - 4.3029859662055969e-01 -1.1647719889879227e-02 - <_> - - 0 -1 2482 -3.4328561276197433e-02 - - -2.3154769837856293e-01 1.6160769388079643e-02 - <_> - - 0 -1 2483 4.3574009090662003e-02 - - -2.8146019205451012e-02 1.6973729431629181e-01 - <_> - - 0 -1 2484 7.4282230343669653e-05 - - -6.5261639654636383e-02 3.5262048244476318e-02 - <_> - - 0 -1 2485 2.1579340100288391e-03 - - 4.3165851384401321e-02 -1.1010999977588654e-01 - <_> - - 0 -1 2486 2.0436691120266914e-03 - - 2.9586719349026680e-02 -6.1997979879379272e-02 - <_> - - 0 -1 2487 1.8425910174846649e-01 - - 5.3550167940557003e-03 -9.2895787954330444e-01 - <_> - - 0 -1 2488 1.9119750708341599e-02 - - 5.3580361418426037e-03 -6.5347892045974731e-01 - <_> - - 0 -1 2489 6.4144372940063477e-02 - - -1.0330500081181526e-02 4.6719509363174438e-01 - <_> - - 0 -1 2490 -4.3394681997597218e-03 - - -1.5378740429878235e-01 1.1142870411276817e-02 - <_> - - 0 -1 2491 -2.2321179509162903e-01 - - -9.4697248935699463e-01 4.8918798565864563e-03 - <_> - - 0 -1 2492 -5.6038159527815878e-05 - - 7.0976890623569489e-02 -6.2353119254112244e-02 - <_> - - 0 -1 2493 1.3452749699354172e-03 - - -2.8609760105609894e-02 1.5549249947071075e-01 - <_> - - 0 -1 2494 1.3946880353614688e-03 - - -4.0270540863275528e-02 5.8612279593944550e-02 - <_> - - 0 -1 2495 1.5620330348610878e-02 - - 7.3195630684494972e-03 -6.3210958242416382e-01 - <_> - - 0 -1 2496 -5.5555468861712143e-05 - - 4.5023500919342041e-02 -2.8714200481772423e-02 - <_> - - 0 -1 2497 1.1142860166728497e-02 - - 1.5724860131740570e-02 -2.8536120057106018e-01 - <_> - - 0 -1 2498 1.3101319782435894e-02 - - -3.5583950579166412e-02 1.0512710362672806e-01 - <_> - - 0 -1 2499 8.7957009673118591e-03 - - 2.4417439475655556e-02 -1.8935090303421021e-01 - <_> - - 0 -1 2500 -4.9927979707717896e-02 - - 7.8737221658229828e-02 -2.7785409241914749e-02 - <_> - - 0 -1 2501 3.9871338754892349e-02 - - -2.9802389442920685e-02 1.9444610178470612e-01 - <_> - - 0 -1 2502 -1.5781600028276443e-02 - - -7.6653957366943359e-01 9.5044961199164391e-04 - <_> - - 0 -1 2503 -6.1174961738288403e-03 - - -2.6769641041755676e-01 1.7127420753240585e-02 - <_> - - 0 -1 2504 4.4994831085205078e-01 - - -1.9066739827394485e-02 2.3485369980335236e-01 - <_> - - 0 -1 2505 -4.3342880904674530e-02 - - -7.1883791685104370e-01 6.2806149944663048e-03 - <_> - - 0 -1 2506 -3.0128860846161842e-02 - - -6.5766400098800659e-01 4.9726511351764202e-03 - <_> - - 0 -1 2507 -2.2716969251632690e-02 - - -1.9271560013294220e-01 2.2421309724450111e-02 - <_> - - 0 -1 2508 -1.0098509956151247e-03 - - 7.8559018671512604e-02 -3.5671528428792953e-02 - <_> - - 0 -1 2509 -1.0692490031942725e-03 - - 1.2817870080471039e-01 -5.1395080983638763e-02 - <_> - - 0 -1 2510 -5.7365992106497288e-03 - - -4.5711138844490051e-01 4.0395711548626423e-03 - <_> - - 0 -1 2511 -5.0038979679811746e-05 - - 6.9684647023677826e-02 -7.4391268193721771e-02 - <_> - - 0 -1 2512 3.3675018697977066e-02 - - 3.2588799949735403e-03 -8.0500680208206177e-01 - <_> - - 0 -1 2513 1.5914790332317352e-02 - - 1.0776109993457794e-02 -4.0246000885963440e-01 - <_> - - 0 -1 2514 -4.2607940849848092e-04 - - -4.7198060899972916e-02 2.3349309340119362e-02 - <_> - - 0 -1 2515 2.2485710680484772e-01 - - -3.9887890219688416e-02 1.0685189813375473e-01 - <_> - - 0 -1 2516 -2.9953860212117434e-03 - - 9.1609388589859009e-02 -7.4848413467407227e-02 - <_> - - 0 -1 2517 -4.1523170657455921e-03 - - 1.1539760231971741e-01 -4.2511921375989914e-02 - <_> - - 0 -1 2518 4.9836929887533188e-02 - - -3.9297798648476601e-03 5.1817202568054199e-01 - <_> - - 0 -1 2519 -2.0023329183459282e-02 - - 1.9128979742527008e-01 -2.3151049390435219e-02 - <_> - - 0 -1 2520 -6.2091718427836895e-03 - - 1.0139790177345276e-01 -3.2446511089801788e-02 - <_> - - 0 -1 2521 -5.2683670073747635e-03 - - -1.8189090490341187e-01 3.0742220580577850e-02 - <_> - - 0 -1 2522 2.5454410351812840e-03 - - 1.5531339682638645e-02 -7.6035097241401672e-02 - <_> - - 0 -1 2523 -3.3172550611197948e-03 - - -1.3509359955787659e-01 3.5959109663963318e-02 - <_> - - 0 -1 2524 -2.6110820472240448e-02 - - 8.7283633649349213e-02 -2.1770549938082695e-02 - <_> - - 0 -1 2525 2.4312630295753479e-01 - - 3.6142878234386444e-02 -1.4625130593776703e-01 - <_> - - 0 -1 2526 1.9041310250759125e-01 - - 7.3239780031144619e-03 -2.7729520201683044e-01 - <_> - - 0 -1 2527 1.6359759494662285e-02 - - -1.0685429722070694e-01 4.9114670604467392e-02 - <_> - - 0 -1 2528 -6.8857766687870026e-02 - - -4.2388990521430969e-01 8.5399514064192772e-03 - <_> - - 0 -1 2529 2.0329190418124199e-02 - - -3.9603959769010544e-02 1.6347900032997131e-01 - <_> - - 0 -1 2530 1.2973019853234291e-02 - - -1.9561119377613068e-02 1.1104790121316910e-01 - <_> - - 0 -1 2531 6.2990398146212101e-03 - - -3.8755550980567932e-02 1.6495589911937714e-01 - <_> - - 0 -1 2532 4.6493619447574019e-04 - - -7.0398978888988495e-02 5.9166688472032547e-02 - <_> - - 0 -1 2533 -1.1437010020017624e-02 - - -2.5582531094551086e-01 2.2561600431799889e-02 - <_> - - 0 -1 2534 -6.0563441365957260e-02 - - -1.5025900304317474e-01 3.5881530493497849e-02 - <_> - - 0 -1 2535 -5.7170469313859940e-02 - - -5.5165249109268188e-01 8.8588111102581024e-03 - <_> - - 0 -1 2536 -3.7495139986276627e-03 - - -1.0633470118045807e-01 1.6566360369324684e-02 - <_> - - 0 -1 2537 3.6156480200588703e-03 - - -4.6951588243246078e-02 9.8432987928390503e-02 - <_> - - 0 -1 2538 3.9375461637973785e-03 - - 1.5857139602303505e-02 -1.2761549651622772e-01 - <_> - - 0 -1 2539 6.9156679091975093e-04 - - -9.6932567656040192e-02 4.6035420149564743e-02 - <_> - - 0 -1 2540 -1.7139660194516182e-02 - - 1.8325529992580414e-01 -2.9744260013103485e-02 - <_> - - 0 -1 2541 -2.1130971144884825e-03 - - -1.4694969356060028e-01 3.7141200155019760e-02 - <_> - - 0 -1 2542 -6.3239036535378546e-05 - - 5.6094359606504440e-02 -4.5251309871673584e-02 - <_> - - 0 -1 2543 5.2524639613693580e-05 - - -6.6079467535018921e-02 8.4846131503582001e-02 - <_> - - 0 -1 2544 2.2989229764789343e-03 - - -6.2885507941246033e-02 7.2458572685718536e-02 - <_> - - 0 -1 2545 8.5239242762327194e-03 - - 2.4598589166998863e-02 -2.0404249429702759e-01 - <_> - - 0 -1 2546 1.5247499570250511e-02 - - -4.6305138617753983e-02 9.2680208384990692e-02 - <_> - - 0 -1 2547 -4.1115559637546539e-02 - - -1.6479089856147766e-01 3.2052058726549149e-02 - <_> - - 0 -1 2548 -5.7012498378753662e-02 - - 1.7691320180892944e-01 -2.8910059481859207e-02 - <_> - - 0 -1 2549 -3.6141950637102127e-02 - - 3.3573868870735168e-01 -1.4668149873614311e-02 - <_> - - 0 -1 2550 -4.7342400997877121e-02 - - -3.6468461155891418e-01 9.7021097317337990e-03 - <_> - - 0 -1 2551 1.5224410162772983e-04 - - -8.5566259920597076e-02 5.6335821747779846e-02 - <_> - - 0 -1 2552 -1.0744449682533741e-03 - - 6.7602880299091339e-02 -4.4944599270820618e-02 - <_> - - 0 -1 2553 2.4688818957656622e-03 - - 3.9391770958900452e-02 -1.1436650156974792e-01 - <_> - - 0 -1 2554 -2.2395079955458641e-02 - - -4.1499689221382141e-01 3.3534979447722435e-03 - <_> - - 0 -1 2555 1.4145880006253719e-02 - - 7.8060040250420570e-03 -5.6246250867843628e-01 - <_> - - 0 -1 2556 -5.6172739277826622e-05 - - 4.2239628732204437e-02 -3.9982240647077560e-02 - <_> - - 0 -1 2557 -4.6720141544938087e-03 - - -3.0066668987274170e-01 1.5984399244189262e-02 - <_> - - 0 -1 2558 5.9289661294315010e-05 - - -4.1034109890460968e-02 5.2692588418722153e-02 - <_> - - 0 -1 2559 -1.9730681087821722e-03 - - 1.5118849277496338e-01 -3.2511081546545029e-02 - <_> - - 0 -1 2560 -2.3879110813140869e-05 - - 4.1403569281101227e-02 -4.2990118265151978e-02 - <_> - - 0 -1 2561 5.1802700909320265e-05 - - -5.8342479169368744e-02 9.3940071761608124e-02 - <_> - - 0 -1 2562 2.2840979509055614e-03 - - 1.8507080152630806e-02 -4.5831311494112015e-02 - <_> - - 0 -1 2563 -1.3125069439411163e-01 - - -1.7687280476093292e-01 2.6014940813183784e-02 - <_> - - 0 -1 2564 -1.1948959436267614e-03 - - 4.1936729103326797e-02 -5.5546648800373077e-02 - <_> - - 0 -1 2565 7.2234630584716797e-02 - - 1.0688959620893002e-02 -4.0127620100975037e-01 - <_> - - 0 -1 2566 -5.6396931409835815e-02 - - -8.8491988182067871e-01 3.6692508729174733e-04 - <_> - - 0 -1 2567 -5.4153650999069214e-02 - - -2.2496509552001953e-01 1.7923209816217422e-02 - <_> - - 0 -1 2568 -2.5167329236865044e-02 - - 1.3002359867095947e-01 -3.6686159670352936e-02 - <_> - - 0 -1 2569 1.3710210099816322e-02 - - -4.0513981133699417e-02 1.1201860010623932e-01 - <_> - - 0 -1 2570 -2.7890820056200027e-02 - - -7.3137658834457397e-01 3.7337029352784157e-03 - <_> - - 0 -1 2571 -7.5335809960961342e-03 - - -2.3119840025901794e-01 1.7614539712667465e-02 - <_> - - 0 -1 2572 3.2403611112385988e-03 - - -8.7237963452935219e-03 2.0382650196552277e-01 - <_> - - 0 -1 2573 8.4408961236476898e-02 - - 5.1954388618469238e-03 -8.2454532384872437e-01 - <_> - - 0 -1 2574 -8.2196877337992191e-04 - - -8.1715703010559082e-02 2.1830869838595390e-02 - <_> - - 0 -1 2575 2.9956221114844084e-03 - - -2.8032269328832626e-02 1.5127840638160706e-01 - <_> - - 0 -1 2576 -7.0376463234424591e-02 - - -1.3520090281963348e-01 3.9681098423898220e-03 - <_> - - 0 -1 2577 3.2191380858421326e-02 - - 1.3135899789631367e-02 -3.3470198512077332e-01 - <_> - - 0 -1 2578 5.4974909871816635e-03 - - -2.6549790054559708e-02 1.1709090322256088e-01 - <_> - - 0 -1 2579 1.6429390758275986e-02 - - -5.3361341357231140e-02 8.2119062542915344e-02 - <_> - - 0 -1 2580 -7.4506900273263454e-03 - - 8.0858200788497925e-02 -2.2392859682440758e-02 - <_> - - 0 -1 2581 4.9851150251924992e-03 - - -2.0572969689965248e-02 2.5987860560417175e-01 - <_> - - 0 -1 2582 2.9100670944899321e-03 - - -2.3105369880795479e-02 4.5229300856590271e-02 - <_> - - 0 -1 2583 -1.3522300124168396e-01 - - 1.1169719696044922e-01 -4.3613661080598831e-02 - <_> - - 0 -1 2584 -9.8680844530463219e-03 - - -1.8346819281578064e-01 3.8948319852352142e-03 - <_> - - 0 -1 2585 4.0301959961652756e-03 - - 2.3375049233436584e-02 -2.0566239953041077e-01 - <_> - - 0 -1 2586 3.9632450789213181e-02 - - 7.7001759782433510e-03 -1.6639390587806702e-01 - <_> - - 0 -1 2587 -1.2742499820888042e-02 - - 1.4852410554885864e-01 -3.0606770887970924e-02 - <_> - - 0 -1 2588 3.7017830181866884e-03 - - 2.0922090858221054e-02 -1.1472299695014954e-01 - <_> - - 0 -1 2589 2.2704519797116518e-03 - - 2.7025869116187096e-02 -1.6540579497814178e-01 - <_> - - 0 -1 2590 1.4953289926052094e-01 - - -2.0300289615988731e-03 5.9815090894699097e-01 - <_> - - 0 -1 2591 -5.1417769864201546e-03 - - 3.8440889120101929e-01 -1.1284800246357918e-02 - <_> - - 0 -1 2592 -6.3616367988288403e-03 - - -3.1090161204338074e-01 1.4351840130984783e-02 - <_> - - 0 -1 2593 -5.9813860803842545e-02 - - -7.0378690958023071e-01 5.7968678884208202e-03 - <_> - - 0 -1 2594 3.5357210040092468e-01 - - 1.1212659999728203e-02 -3.3229699730873108e-01 - <_> - - 0 -1 2595 6.8999081850051880e-01 - - -1.0586109943687916e-02 3.8376569747924805e-01 - <_> - - 0 -1 2596 4.8297038301825523e-03 - - 2.1038129925727844e-02 -5.7353559881448746e-02 - <_> - - 0 -1 2597 1.7828490585088730e-02 - - -1.0605059564113617e-02 3.9563548564910889e-01 - <_> - - 0 -1 2598 6.4284101128578186e-02 - - -6.3842877745628357e-02 2.6795409619808197e-02 - <_> - - 0 -1 2599 2.5491470098495483e-01 - - 1.9327409565448761e-02 -2.4302749335765839e-01 - <_> - - 0 -1 2600 5.1334970630705357e-03 - - 1.1508010327816010e-02 -2.3830899596214294e-01 - <_> - - 0 -1 2601 -3.9797872304916382e-03 - - -2.0426890254020691e-01 2.0390080288052559e-02 - <_> - - 0 -1 2602 2.7258729096502066e-03 - - -4.6508461236953735e-02 7.9410687088966370e-02 - <_> - - 0 -1 2603 -1.4983859844505787e-02 - - 3.9586919546127319e-01 -1.1343169957399368e-02 - <_> - - 0 -1 2604 2.9130540788173676e-03 - - 3.6371629685163498e-02 -9.0614721179008484e-02 - <_> - - 0 -1 2605 -9.0548500884324312e-04 - - 6.2091920524835587e-02 -6.8425096571445465e-02 - <_> - - 0 -1 2606 -1.1654829978942871e-01 - - 1.1569529771804810e-01 -1.3268720358610153e-02 - <_> - - 0 -1 2607 1.0781300254166126e-02 - - 1.7420019954442978e-02 -2.8036078810691833e-01 - <_> - - 0 -1 2608 -5.3447848558425903e-01 - - -4.7411590814590454e-01 8.6649907752871513e-03 - <_> - - 0 -1 2609 5.6615539506310597e-05 - - -5.8638270944356918e-02 7.5020261108875275e-02 - <_> - - 0 -1 2610 6.2536040786653757e-05 - - -4.9846608191728592e-02 5.9350069612264633e-02 - <_> - - 0 -1 2611 7.3054343461990356e-02 - - -1.4036689884960651e-02 3.5884460806846619e-01 - <_> - - 0 -1 2612 -1.6530159860849380e-02 - - -3.4632420539855957e-01 6.7927599884569645e-03 - <_> - - 0 -1 2613 -6.3628758653067052e-05 - - 7.1638368070125580e-02 -5.9216059744358063e-02 - <_> - - 0 -1 2614 -1.9453760236501694e-02 - - -5.1694720983505249e-01 6.2814089469611645e-03 - <_> - - 0 -1 2615 2.1202109754085541e-01 - - 7.6583931222558022e-03 -5.0985842943191528e-01 - <_> - - 0 -1 2616 1.9657649099826813e-02 - - -4.3143048882484436e-02 5.1890939474105835e-02 - <_> - 371 - -1.1236120462417603e+00 - - <_> - - 0 -1 2617 8.6894199252128601e-02 - - -1.8969950079917908e-01 2.2035740315914154e-01 - <_> - - 0 -1 2618 -9.6704717725515366e-03 - - 1.1851350218057632e-01 -8.6339563131332397e-02 - <_> - - 0 -1 2619 -8.1467948853969574e-02 - - 1.4990839362144470e-01 -1.2963719666004181e-01 - <_> - - 0 -1 2620 -1.7537999665364623e-03 - - 1.7750880122184753e-01 -1.0693369805812836e-01 - <_> - - 0 -1 2621 -7.4387797212693840e-05 - - 9.6010386943817139e-02 -1.6225080192089081e-01 - <_> - - 0 -1 2622 8.0011058598756790e-03 - - -1.8540080636739731e-02 2.4660170078277588e-01 - <_> - - 0 -1 2623 1.7090819776058197e-02 - - 3.2561480998992920e-02 -2.6181620359420776e-01 - <_> - - 0 -1 2624 9.9246148020029068e-03 - - -1.9358970224857330e-02 1.2542679905891418e-01 - <_> - - 0 -1 2625 1.2290390208363533e-02 - - 3.4330211579799652e-02 -3.2864710688591003e-01 - <_> - - 0 -1 2626 2.1256268955767155e-03 - - -7.1797981858253479e-02 6.9216072559356689e-02 - <_> - - 0 -1 2627 2.4960160255432129e-01 - - -1.1238349974155426e-01 1.4298430085182190e-01 - <_> - - 0 -1 2628 -4.9557890743017197e-03 - - 1.3797929883003235e-01 -5.8330990374088287e-02 - <_> - - 0 -1 2629 6.9741107523441315e-02 - - 2.9714699834585190e-02 -3.4425801038742065e-01 - <_> - - 0 -1 2630 8.1527782604098320e-03 - - -4.6951010823249817e-02 7.8247062861919403e-02 - <_> - - 0 -1 2631 1.0349320247769356e-02 - - -6.9432802498340607e-02 1.5855890512466431e-01 - <_> - - 0 -1 2632 6.3299350440502167e-03 - - -3.9910208433866501e-02 1.5249839425086975e-01 - <_> - - 0 -1 2633 3.0955720692873001e-02 - - 4.1943959891796112e-02 -2.3227399587631226e-01 - <_> - - 0 -1 2634 1.2504469603300095e-02 - - -1.8312249332666397e-02 9.9652856588363647e-02 - <_> - - 0 -1 2635 7.4256081134080887e-03 - - -6.2183279544115067e-02 1.6638119518756866e-01 - <_> - - 0 -1 2636 2.0066989585757256e-02 - - 2.2657990455627441e-02 -3.4708911180496216e-01 - <_> - - 0 -1 2637 -5.8288997411727905e-01 - - 2.8628429770469666e-01 -2.9674390330910683e-02 - <_> - - 0 -1 2638 -1.4278849586844444e-02 - - 1.7780199646949768e-01 -2.9107179492712021e-02 - <_> - - 0 -1 2639 5.9483898803591728e-03 - - -5.1461439579725266e-02 2.1336910128593445e-01 - <_> - - 0 -1 2640 -3.7677738815546036e-02 - - -3.6932611465454102e-01 5.7723309844732285e-02 - <_> - - 0 -1 2641 6.5808892250061035e-02 - - 4.0651790797710419e-02 -2.1074700355529785e-01 - <_> - - 0 -1 2642 -2.3132109642028809e-01 - - 4.1835370659828186e-01 -1.2195900082588196e-02 - <_> - - 0 -1 2643 9.2640687944367528e-04 - - -1.4468879997730255e-01 5.8539729565382004e-02 - <_> - - 0 -1 2644 1.0040670167654753e-03 - - -4.4056508690118790e-02 3.3918689936399460e-02 - <_> - - 0 -1 2645 -1.6178250312805176e-02 - - -2.5373190641403198e-01 2.8968360275030136e-02 - <_> - - 0 -1 2646 -6.0239218873903155e-04 - - 4.1323728859424591e-02 -4.0084209293127060e-02 - <_> - - 0 -1 2647 -6.0449438169598579e-03 - - 1.4372240006923676e-01 -4.7170829027891159e-02 - <_> - - 0 -1 2648 2.2208129521459341e-03 - - 4.5135390013456345e-02 -1.6863340139389038e-01 - <_> - - 0 -1 2649 -2.5435380637645721e-02 - - 2.7486249804496765e-01 -2.5021070614457130e-02 - <_> - - 0 -1 2650 -9.7569217905402184e-03 - - -3.5105359554290771e-01 6.7487931810319424e-03 - <_> - - 0 -1 2651 -5.8798119425773621e-03 - - -2.3652760684490204e-01 2.9202800244092941e-02 - <_> - - 0 -1 2652 1.7566860187798738e-03 - - -9.9007412791252136e-02 5.2369870245456696e-02 - <_> - - 0 -1 2653 -7.4273318052291870e-02 - - -2.6232570409774780e-01 3.2476898282766342e-02 - <_> - - 0 -1 2654 3.1107749789953232e-02 - - -3.1739011406898499e-02 1.9744929671287537e-01 - <_> - - 0 -1 2655 6.3703872263431549e-02 - - 2.6871459558606148e-02 -2.7673950791358948e-01 - <_> - - 0 -1 2656 -4.7539241611957550e-02 - - -4.0510261058807373e-01 1.2222040444612503e-02 - <_> - - 0 -1 2657 -3.5632580984383821e-03 - - -1.9992919266223907e-01 3.3539909869432449e-02 - <_> - - 0 -1 2658 -2.6527589187026024e-02 - - -1.6290059685707092e-01 2.7833169326186180e-02 - <_> - - 0 -1 2659 2.8048178553581238e-01 - - 2.8810590505599976e-02 -2.2711829841136932e-01 - <_> - - 0 -1 2660 4.5591941475868225e-01 - - -2.2757180035114288e-02 3.1029689311981201e-01 - <_> - - 0 -1 2661 8.6748532950878143e-02 - - 7.2686396539211273e-02 -1.0276269912719727e-01 - <_> - - 0 -1 2662 1.6994470497593284e-03 - - -3.1809408217668533e-02 8.7146088480949402e-02 - <_> - - 0 -1 2663 -1.1253879638388753e-03 - - 6.8066433072090149e-02 -1.2390069663524628e-01 - <_> - - 0 -1 2664 5.0872150808572769e-02 - - -8.7517164647579193e-03 3.1184211373329163e-01 - <_> - - 0 -1 2665 1.9961729645729065e-01 - - -3.0910549685359001e-02 2.1652880311012268e-01 - <_> - - 0 -1 2666 -6.3838690519332886e-02 - - -6.0265827178955078e-01 1.3233360368758440e-03 - <_> - - 0 -1 2667 6.3007958233356476e-03 - - -5.2063349634408951e-02 1.2607939541339874e-01 - <_> - - 0 -1 2668 5.6697470135986805e-03 - - 9.0780286118388176e-03 -1.9445329904556274e-01 - <_> - - 0 -1 2669 1.4293550048023462e-03 - - -8.5781432688236237e-02 7.1289457380771637e-02 - <_> - - 0 -1 2670 1.3812010176479816e-02 - - 8.0618355423212051e-03 -3.8797891139984131e-01 - <_> - - 0 -1 2671 2.3739310563541949e-05 - - -6.2491171061992645e-02 1.0920929908752441e-01 - <_> - - 0 -1 2672 -3.9398381486535072e-03 - - 5.0932329148054123e-02 -1.4980320632457733e-01 - <_> - - 0 -1 2673 -1.2358880043029785e-01 - - 3.1476518511772156e-01 -2.5759879499673843e-02 - <_> - - 0 -1 2674 -1.0957430116832256e-02 - - -2.6074820756912231e-01 1.5849729999899864e-02 - <_> - - 0 -1 2675 -7.6301600784063339e-03 - - 2.6100659370422363e-01 -2.4329889565706253e-02 - <_> - - 0 -1 2676 -6.7839071154594421e-02 - - 1.9691309332847595e-01 -8.3496840670704842e-03 - <_> - - 0 -1 2677 1.8607309088110924e-02 - - 2.5603959336876869e-02 -2.5413629412651062e-01 - <_> - - 0 -1 2678 -5.8711939345812425e-05 - - 3.5625811666250229e-02 -4.1084211319684982e-02 - <_> - - 0 -1 2679 8.3914608694612980e-05 - - -1.3061410188674927e-01 4.9393389374017715e-02 - <_> - - 0 -1 2680 1.7734190449118614e-02 - - -3.4273520112037659e-02 1.2126860022544861e-01 - <_> - - 0 -1 2681 6.8113701418042183e-03 - - 2.2671220824122429e-02 -2.6590269804000854e-01 - <_> - - 0 -1 2682 4.5482560992240906e-02 - - -6.1395200900733471e-03 4.7231659293174744e-01 - <_> - - 0 -1 2683 -7.0767141878604889e-03 - - -3.1650930643081665e-01 2.0036390051245689e-02 - <_> - - 0 -1 2684 7.3222210630774498e-04 - - -2.2880610078573227e-02 6.4724266529083252e-02 - <_> - - 0 -1 2685 -3.2817400060594082e-03 - - 2.5166231393814087e-01 -2.3168640211224556e-02 - <_> - - 0 -1 2686 -4.6115890145301819e-02 - - -3.5920459032058716e-01 1.5987880527973175e-02 - <_> - - 0 -1 2687 1.0526889935135841e-02 - - 9.6597811207175255e-03 -5.8308398723602295e-01 - <_> - - 0 -1 2688 2.1888600662350655e-02 - - 2.8070888947695494e-03 -2.9022130370140076e-01 - <_> - - 0 -1 2689 -3.7969578988850117e-03 - - 2.6823088526725769e-01 -2.2035770118236542e-02 - <_> - - 0 -1 2690 2.9150590300559998e-02 - - 3.7061858922243118e-02 -9.7243040800094604e-02 - <_> - - 0 -1 2691 7.9669371247291565e-02 - - -6.1300739645957947e-02 1.0794749855995178e-01 - <_> - - 0 -1 2692 -2.7629170566797256e-02 - - 2.2528949379920959e-01 -3.2572429627180099e-02 - <_> - - 0 -1 2693 -1.2017980217933655e-02 - - 1.0100489854812622e-01 -6.6461361944675446e-02 - <_> - - 0 -1 2694 -1.1925140395760536e-02 - - -1.8590609729290009e-01 3.2485559582710266e-02 - <_> - - 0 -1 2695 2.5123509764671326e-01 - - -2.4892140179872513e-02 2.8030058741569519e-01 - <_> - - 0 -1 2696 6.9036600179970264e-03 - - -6.2898851931095123e-02 3.1777821481227875e-02 - <_> - - 0 -1 2697 5.3575318306684494e-02 - - -1.2439640238881111e-02 4.6091410517692566e-01 - <_> - - 0 -1 2698 -9.4652660191059113e-03 - - 8.4103047847747803e-02 -1.1300220340490341e-01 - <_> - - 0 -1 2699 1.8469220399856567e-01 - - 2.1576140075922012e-02 -2.6910570263862610e-01 - <_> - - 0 -1 2700 -1.1816070228815079e-01 - - -4.7206339240074158e-01 9.0096276253461838e-03 - <_> - - 0 -1 2701 3.6900841223541647e-05 - - -5.8833159506320953e-02 9.9453382194042206e-02 - <_> - - 0 -1 2702 -1.6330610215663910e-01 - - -6.0990130901336670e-01 1.3118899660184979e-03 - <_> - - 0 -1 2703 -9.6555590629577637e-02 - - -5.2723962068557739e-01 1.1668589897453785e-02 - <_> - - 0 -1 2704 4.0162451565265656e-02 - - -3.2783899456262589e-02 1.8107770383358002e-01 - <_> - - 0 -1 2705 -2.9686940833926201e-02 - - 1.0548429936170578e-01 -6.1513308435678482e-02 - <_> - - 0 -1 2706 7.5436946644913405e-05 - - -3.5980768501758575e-02 4.9934450536966324e-02 - <_> - - 0 -1 2707 2.0552529022097588e-03 - - 2.7518209069967270e-02 -2.4573980271816254e-01 - <_> - - 0 -1 2708 2.3879110813140869e-05 - - -2.5809049606323242e-02 2.9950719326734543e-02 - <_> - - 0 -1 2709 -5.0713717937469482e-03 - - -2.0639109611511230e-01 3.2002601772546768e-02 - <_> - - 0 -1 2710 -4.8216218128800392e-03 - - -9.7566813230514526e-02 5.5109240114688873e-02 - <_> - - 0 -1 2711 6.5210692584514618e-02 - - 6.3420450314879417e-03 -7.8828340768814087e-01 - <_> - - 0 -1 2712 1.5821969136595726e-02 - - -2.1475680172443390e-02 1.2227129936218262e-01 - <_> - - 0 -1 2713 -3.0075939372181892e-02 - - 3.7011429667472839e-01 -1.5476689673960209e-02 - <_> - - 0 -1 2714 -5.5496598361060023e-04 - - 4.1431929916143417e-02 -1.2144719809293747e-01 - <_> - - 0 -1 2715 -2.4754840880632401e-02 - - -3.5262298583984375e-01 1.5344849787652493e-02 - <_> - - 0 -1 2716 -8.7477359920740128e-03 - - 1.9155359268188477e-01 -2.2537950426340103e-02 - <_> - - 0 -1 2717 -3.5500800004228950e-04 - - -8.4604002535343170e-02 6.5341651439666748e-02 - <_> - - 0 -1 2718 -5.7884451001882553e-02 - - 2.5973668694496155e-01 -2.1083710715174675e-02 - <_> - - 0 -1 2719 3.7522350903600454e-03 - - 3.1614970415830612e-02 -1.8795000016689301e-01 - <_> - - 0 -1 2720 2.0266280625946820e-04 - - -4.8824269324541092e-02 4.7762241214513779e-02 - <_> - - 0 -1 2721 -1.7959989607334137e-02 - - -1.8358300626277924e-01 2.7057379484176636e-02 - <_> - - 0 -1 2722 -5.1200438290834427e-02 - - 2.7234628796577454e-01 -1.9954629242420197e-02 - <_> - - 0 -1 2723 -7.3698651976883411e-03 - - -1.2299379706382751e-01 4.5279439538717270e-02 - <_> - - 0 -1 2724 -8.1579107791185379e-04 - - 4.6081308275461197e-02 -2.1206410601735115e-02 - <_> - - 0 -1 2725 7.7019751188345253e-05 - - -1.1223869770765305e-01 4.6719830483198166e-02 - <_> - - 0 -1 2726 3.3753409981727600e-02 - - -2.9694780707359314e-02 3.0958639457821846e-02 - <_> - - 0 -1 2727 2.8879839926958084e-02 - - -4.7609180212020874e-02 1.6370640695095062e-01 - <_> - - 0 -1 2728 -1.3803930580615997e-01 - - -7.4509102106094360e-01 2.3958049714565277e-03 - <_> - - 0 -1 2729 9.0306542813777924e-02 - - 2.8410099446773529e-02 -2.0606000721454620e-01 - <_> - - 0 -1 2730 1.3130649924278259e-01 - - 5.8837989345192909e-03 -2.5894629955291748e-01 - <_> - - 0 -1 2731 1.3623699545860291e-01 - - 1.8490679562091827e-02 -2.9096630215644836e-01 - <_> - - 0 -1 2732 1.1483960552141070e-03 - - -2.5334190577268600e-02 8.1962920725345612e-02 - <_> - - 0 -1 2733 7.0390116889029741e-05 - - -6.5080173313617706e-02 8.2337766885757446e-02 - <_> - - 0 -1 2734 -5.8111059479415417e-03 - - -2.0126000046730042e-01 1.4183170162141323e-02 - <_> - - 0 -1 2735 -1.2150090187788010e-02 - - 2.1021689474582672e-01 -2.9711810871958733e-02 - <_> - - 0 -1 2736 4.3220389634370804e-03 - - 2.2152660414576530e-02 -1.9705900549888611e-01 - <_> - - 0 -1 2737 4.6673179604113102e-03 - - 2.2342119365930557e-02 -2.6342189311981201e-01 - <_> - - 0 -1 2738 -1.3583960244432092e-03 - - 7.3765449225902557e-02 -1.7833979800343513e-02 - <_> - - 0 -1 2739 -5.0764158368110657e-03 - - -1.7490370571613312e-01 2.9997769743204117e-02 - <_> - - 0 -1 2740 1.9497750326991081e-03 - - -2.7114750817418098e-02 1.6166089475154877e-01 - <_> - - 0 -1 2741 -2.5937429163604975e-03 - - 1.8078009784221649e-01 -2.7191480621695518e-02 - <_> - - 0 -1 2742 -2.1715890616178513e-02 - - 9.6041858196258545e-02 -5.2243158221244812e-02 - <_> - - 0 -1 2743 -2.5649809686001390e-05 - - 8.3050042390823364e-02 -6.1770558357238770e-02 - <_> - - 0 -1 2744 9.8641996737569571e-04 - - -2.4684209376573563e-02 9.7191460430622101e-02 - <_> - - 0 -1 2745 2.3739310563541949e-05 - - -6.9555416703224182e-02 7.7152892947196960e-02 - <_> - - 0 -1 2746 -1.0910170152783394e-02 - - -2.5444790720939636e-01 1.6135040670633316e-02 - <_> - - 0 -1 2747 5.6066219258354977e-05 - - -7.6400838792324066e-02 7.0996761322021484e-02 - <_> - - 0 -1 2748 2.7718160301446915e-02 - - 7.7127898111939430e-03 -3.0201679468154907e-01 - <_> - - 0 -1 2749 4.3827071785926819e-03 - - -3.4336760640144348e-02 1.3955120742321014e-01 - <_> - - 0 -1 2750 -3.7561710923910141e-02 - - -4.5689418911933899e-01 1.1854999698698521e-02 - <_> - - 0 -1 2751 1.3753259554505348e-02 - - -8.3447448909282684e-02 5.9472300112247467e-02 - <_> - - 0 -1 2752 -2.7579799294471741e-02 - - 2.1291820704936981e-01 -2.3054409772157669e-02 - <_> - - 0 -1 2753 -4.0822759270668030e-02 - - -5.0263231992721558e-01 1.0639879852533340e-02 - <_> - - 0 -1 2754 1.4743439853191376e-01 - - 7.7440468594431877e-03 -1.8454490602016449e-01 - <_> - - 0 -1 2755 -1.9371560215950012e-01 - - 4.6490699052810669e-01 -1.4074579812586308e-02 - <_> - - 0 -1 2756 -4.1467480361461639e-02 - - -1.3331499695777893e-01 3.1722411513328552e-02 - <_> - - 0 -1 2757 2.1617549937218428e-03 - - 3.4888401627540588e-02 -1.1983960121870041e-01 - <_> - - 0 -1 2758 -2.8305849991738796e-03 - - -2.1483750641345978e-01 2.5539120659232140e-02 - <_> - - 0 -1 2759 -1.0838639922440052e-02 - - 3.3803048729896545e-01 -1.3591179624199867e-02 - <_> - - 0 -1 2760 2.1821239497512579e-03 - - -3.1135229393839836e-02 8.3679892122745514e-02 - <_> - - 0 -1 2761 6.8489680415950716e-05 - - -1.5453560650348663e-01 3.3053979277610779e-02 - <_> - - 0 -1 2762 5.2545121870934963e-03 - - -2.9414970427751541e-02 1.6506220400333405e-01 - <_> - - 0 -1 2763 7.5199748389422894e-03 - - 2.3363400250673294e-02 -2.1771569550037384e-01 - <_> - - 0 -1 2764 -4.5123990625143051e-02 - - -3.2536029815673828e-01 1.3281660154461861e-02 - <_> - - 0 -1 2765 -2.0451450254768133e-03 - - 9.5804646611213684e-02 -5.0993110984563828e-02 - <_> - - 0 -1 2766 2.9070109594613314e-03 - - -2.7690220624208450e-02 1.9595550000667572e-01 - <_> - - 0 -1 2767 -2.5558389723300934e-02 - - -2.7625438570976257e-01 2.1147929131984711e-02 - <_> - - 0 -1 2768 2.6447090785950422e-03 - - -3.2627500593662262e-02 4.1240271180868149e-02 - <_> - - 0 -1 2769 2.8334530725260265e-05 - - -8.4877587854862213e-02 5.5865898728370667e-02 - <_> - - 0 -1 2770 6.6109612816944718e-04 - - -3.2827850431203842e-02 7.4010983109474182e-02 - <_> - - 0 -1 2771 2.0918789505958557e-01 - - 1.0018980130553246e-02 -4.7411561012268066e-01 - <_> - - 0 -1 2772 -6.0340400523273274e-05 - - 4.8323448747396469e-02 -3.2779499888420105e-02 - <_> - - 0 -1 2773 6.6149746999144554e-05 - - -7.4969246983528137e-02 6.1952129006385803e-02 - <_> - - 0 -1 2774 -5.1479000831022859e-04 - - -9.4924032688140869e-02 3.5300780087709427e-02 - <_> - - 0 -1 2775 7.3261340148746967e-03 - - 3.8502220064401627e-02 -1.4840659499168396e-01 - <_> - - 0 -1 2776 2.4439459666609764e-02 - - -1.3411019928753376e-02 1.8843680620193481e-01 - <_> - - 0 -1 2777 4.1021420620381832e-03 - - -4.9980189651250839e-02 1.0747750103473663e-01 - <_> - - 0 -1 2778 -2.2003119811415672e-03 - - 1.5202569961547852e-01 -1.0413169860839844e-02 - <_> - - 0 -1 2779 -6.3748419051989913e-05 - - 8.3184726536273956e-02 -7.3027476668357849e-02 - <_> - - 0 -1 2780 1.6917420551180840e-02 - - 2.2687980905175209e-02 -1.7060829699039459e-01 - <_> - - 0 -1 2781 2.3382799699902534e-03 - - -5.9908460825681686e-02 8.6580373346805573e-02 - <_> - - 0 -1 2782 3.5319819580763578e-03 - - 3.3012930303812027e-02 -1.5926639735698700e-01 - <_> - - 0 -1 2783 8.2293795421719551e-03 - - -7.6026521623134613e-02 7.5319997966289520e-02 - <_> - - 0 -1 2784 -4.1300300508737564e-02 - - -6.1095607280731201e-01 2.1895230747759342e-03 - <_> - - 0 -1 2785 -4.3179420754313469e-03 - - 1.4404989778995514e-01 -3.8870800286531448e-02 - <_> - - 0 -1 2786 4.7153229388641194e-05 - - -4.9817599356174469e-02 4.8768520355224609e-02 - <_> - - 0 -1 2787 7.9003963037393987e-05 - - -6.8322107195854187e-02 6.8077176809310913e-02 - <_> - - 0 -1 2788 -6.0340400523273274e-05 - - 5.1328659057617188e-02 -3.5550858825445175e-02 - <_> - - 0 -1 2789 -5.1807070121867582e-05 - - 8.4212273359298706e-02 -5.4924808442592621e-02 - <_> - - 0 -1 2790 4.7213859856128693e-02 - - 2.3352450225502253e-03 -3.4417921304702759e-01 - <_> - - 0 -1 2791 -4.0626591071486473e-03 - - -1.8419119715690613e-01 2.5720769539475441e-02 - <_> - - 0 -1 2792 -2.2785339504480362e-02 - - -1.3962119817733765e-01 1.2151359580457211e-02 - <_> - - 0 -1 2793 -7.5854226946830750e-02 - - 1.1256880313158035e-01 -3.9203669875860214e-02 - <_> - - 0 -1 2794 7.5154039077460766e-03 - - -1.9784659147262573e-02 5.8735560625791550e-02 - <_> - - 0 -1 2795 3.1700478866696358e-03 - - -5.4245430976152420e-02 9.0264856815338135e-02 - <_> - - 0 -1 2796 3.2852489966899157e-03 - - -5.4539371281862259e-02 9.0909533202648163e-02 - <_> - - 0 -1 2797 -9.3818716704845428e-02 - - -4.8168069124221802e-01 9.7587006166577339e-03 - <_> - - 0 -1 2798 -6.3132712966762483e-05 - - 4.1089840233325958e-02 -3.6543939262628555e-02 - <_> - - 0 -1 2799 -1.9857510924339294e-02 - - -1.1721470206975937e-01 4.0564559400081635e-02 - <_> - - 0 -1 2800 6.7911748774349689e-03 - - 6.4080609008669853e-03 -3.2277610898017883e-01 - <_> - - 0 -1 2801 -8.9469276368618011e-02 - - -3.5741510987281799e-01 1.2498370371758938e-02 - <_> - - 0 -1 2802 7.4639841914176941e-03 - - -1.9977200776338577e-02 1.8343879282474518e-01 - <_> - - 0 -1 2803 3.5889059305191040e-01 - - 1.1032329872250557e-02 -5.5673301219940186e-01 - <_> - - 0 -1 2804 -2.8839880600571632e-02 - - 1.9993069767951965e-01 -8.9885722845792770e-03 - <_> - - 0 -1 2805 1.3966220431029797e-03 - - -4.3905839323997498e-02 1.1055959761142731e-01 - <_> - - 0 -1 2806 -8.6227077990770340e-03 - - -4.3030598759651184e-01 4.9329511821269989e-03 - <_> - - 0 -1 2807 8.1372596323490143e-03 - - 6.1173681169748306e-03 -7.0870321989059448e-01 - <_> - - 0 -1 2808 -5.2080889872740954e-05 - - 5.4686058312654495e-02 -4.8987131565809250e-02 - <_> - - 0 -1 2809 -6.2907347455620766e-05 - - 7.7754616737365723e-02 -5.9795960783958435e-02 - <_> - - 0 -1 2810 -2.2601069882512093e-02 - - -1.1791110038757324e-01 7.3637152090668678e-03 - <_> - - 0 -1 2811 -4.6634320169687271e-03 - - 7.5231060385704041e-02 -5.7572990655899048e-02 - <_> - - 0 -1 2812 -4.7270618379116058e-03 - - 7.1065858006477356e-02 -8.5967883467674255e-02 - <_> - - 0 -1 2813 7.2711610794067383e-01 - - 1.0272890329360962e-02 -4.6845859289169312e-01 - <_> - - 0 -1 2814 -3.0634279828518629e-03 - - 1.0827480256557465e-01 -2.3178070783615112e-02 - <_> - - 0 -1 2815 5.1220320165157318e-02 - - 1.0082930326461792e-02 -4.6223670244216919e-01 - <_> - - 0 -1 2816 -2.3362249135971069e-02 - - 2.2211229801177979e-01 -2.0499259233474731e-02 - <_> - - 0 -1 2817 2.2698229178786278e-02 - - -1.1409649997949600e-01 4.1347719728946686e-02 - <_> - - 0 -1 2818 3.2806419767439365e-03 - - -2.2716879844665527e-02 1.0286050289869308e-01 - <_> - - 0 -1 2819 3.5968020092695951e-03 - - 2.1161420270800591e-02 -2.0680260658264160e-01 - <_> - - 0 -1 2820 -1.2049609795212746e-02 - - -2.6006719470024109e-01 2.0481001120060682e-03 - <_> - - 0 -1 2821 -2.6617539115250111e-03 - - 1.5578770637512207e-01 -3.2414011657238007e-02 - <_> - - 0 -1 2822 -1.4739999547600746e-02 - - -1.6306230425834656e-01 7.1668480522930622e-03 - <_> - - 0 -1 2823 -7.0214703679084778e-02 - - 3.6760380864143372e-01 -1.2261849828064442e-02 - <_> - - 0 -1 2824 -1.1493829637765884e-01 - - -4.1006609797477722e-01 1.1137899942696095e-02 - <_> - - 0 -1 2825 -1.6535300761461258e-02 - - -4.9331170320510864e-01 8.9259371161460876e-03 - <_> - - 0 -1 2826 -6.8457737565040588e-02 - - -6.2944388389587402e-01 1.3810090022161603e-03 - <_> - - 0 -1 2827 1.7950909677892923e-03 - - 4.3995179235935211e-02 -9.8123088479042053e-02 - <_> - - 0 -1 2828 9.2409765347838402e-03 - - -3.1927980482578278e-02 7.8624442219734192e-02 - <_> - - 0 -1 2829 1.5084880404174328e-02 - - -6.5231107175350189e-02 8.3552867174148560e-02 - <_> - - 0 -1 2830 -1.4755530282855034e-02 - - 5.9695459902286530e-02 -2.4628980085253716e-02 - <_> - - 0 -1 2831 1.3870550319552422e-02 - - 6.8354210816323757e-03 -6.6978019475936890e-01 - <_> - - 0 -1 2832 8.4027196862734854e-05 - - -3.8849148899316788e-02 5.0546988844871521e-02 - <_> - - 0 -1 2833 -2.3879110813140869e-05 - - 7.7616319060325623e-02 -5.7069089263677597e-02 - <_> - - 0 -1 2834 -3.7118638865649700e-03 - - 5.7683859020471573e-02 -3.6430291831493378e-02 - <_> - - 0 -1 2835 2.9378160834312439e-02 - - 1.1657239869236946e-02 -3.7504649162292480e-01 - <_> - - 0 -1 2836 7.5752860307693481e-01 - - -1.2491280212998390e-02 3.0145660042762756e-01 - <_> - - 0 -1 2837 2.8497090563178062e-02 - - -7.3959968984127045e-02 6.2593862414360046e-02 - <_> - - 0 -1 2838 3.0728369951248169e-02 - - 8.5481833666563034e-03 -2.5127428770065308e-01 - <_> - - 0 -1 2839 3.3614620566368103e-02 - - -1.1441719718277454e-02 4.9361410737037659e-01 - <_> - - 0 -1 2840 -2.2651510313153267e-02 - - 2.0686359703540802e-01 -9.4910562038421631e-03 - <_> - - 0 -1 2841 -5.5092899856390432e-05 - - 6.4360730350017548e-02 -7.2689138352870941e-02 - <_> - - 0 -1 2842 -6.5959710627794266e-03 - - -1.7541189491748810e-01 1.6160210594534874e-02 - <_> - - 0 -1 2843 -6.0941398260183632e-05 - - 7.5048670172691345e-02 -5.2823100239038467e-02 - <_> - - 0 -1 2844 2.5904899302986450e-05 - - -4.9739658832550049e-02 5.8573901653289795e-02 - <_> - - 0 -1 2845 5.0394570280332118e-05 - - -6.1880309134721756e-02 6.6674813628196716e-02 - <_> - - 0 -1 2846 1.2553679756820202e-02 - - 2.4910740554332733e-02 -1.2772439420223236e-01 - <_> - - 0 -1 2847 5.8084350079298019e-02 - - -1.7822250723838806e-02 2.2898909449577332e-01 - <_> - - 0 -1 2848 8.0750687047839165e-03 - - -2.2753600031137466e-02 1.4363150298595428e-01 - <_> - - 0 -1 2849 1.2163340114057064e-02 - - 2.6754619553685188e-02 -1.8255999684333801e-01 - <_> - - 0 -1 2850 -1.5941649908199906e-03 - - 9.9438779056072235e-02 -2.3783439770340919e-02 - <_> - - 0 -1 2851 -1.2085849791765213e-01 - - -5.9585529565811157e-01 6.8441159091889858e-03 - <_> - - 0 -1 2852 8.7481532245874405e-03 - - -2.2079860791563988e-02 2.6656690239906311e-01 - <_> - - 0 -1 2853 1.6135359182953835e-02 - - 6.7850813269615173e-02 -7.7386163175106049e-02 - <_> - - 0 -1 2854 2.2907149791717529e-01 - - -3.5378839820623398e-02 4.8707369714975357e-02 - <_> - - 0 -1 2855 5.0671470165252686e-01 - - 5.8341762050986290e-03 -6.6830587387084961e-01 - <_> - - 0 -1 2856 -3.5818759351968765e-02 - - -2.6823309063911438e-01 1.7747150268405676e-03 - <_> - - 0 -1 2857 -2.6501350104808807e-02 - - -3.0137398838996887e-01 1.3973710127174854e-02 - <_> - - 0 -1 2858 2.4797840043902397e-02 - - 2.4552580434828997e-03 -5.9522122144699097e-01 - <_> - - 0 -1 2859 1.6543349483981729e-03 - - -2.5125969201326370e-02 1.9396910071372986e-01 - <_> - - 0 -1 2860 7.0274528115987778e-03 - - 2.0404130220413208e-02 -5.3175788372755051e-02 - <_> - - 0 -1 2861 7.4207589030265808e-02 - - 1.2462070211768150e-02 -3.3352059125900269e-01 - <_> - - 0 -1 2862 -2.3010969161987305e-03 - - -1.4958749711513519e-01 2.0109549164772034e-02 - <_> - - 0 -1 2863 1.3790120137855411e-03 - - 3.3377520740032196e-02 -1.2395989894866943e-01 - <_> - - 0 -1 2864 8.2677090167999268e-01 - - 4.6560140326619148e-03 -7.6405769586563110e-01 - <_> - - 0 -1 2865 2.9461461305618286e-01 - - -1.5230939723551273e-02 3.1044191122055054e-01 - <_> - - 0 -1 2866 7.4683561921119690e-02 - - 8.8676074519753456e-03 -5.2286827564239502e-01 - <_> - - 0 -1 2867 8.8000342249870300e-02 - - -1.1935940012335777e-02 4.0419429540634155e-01 - <_> - - 0 -1 2868 5.3336159326136112e-03 - - 1.3640279881656170e-02 -2.4479709565639496e-01 - <_> - - 0 -1 2869 -5.4324131458997726e-02 - - -3.3548229932785034e-01 1.1758499778807163e-02 - <_> - - 0 -1 2870 3.2561250030994415e-02 - - 1.3724969467148185e-03 -3.3259418606758118e-01 - <_> - - 0 -1 2871 4.8455069772899151e-03 - - -3.6367859691381454e-02 1.3941270112991333e-01 - <_> - - 0 -1 2872 -9.4578228890895844e-03 - - -1.5179359912872314e-01 7.1280989795923233e-03 - <_> - - 0 -1 2873 6.5718130208551884e-03 - - 1.6051219776272774e-02 -2.5226241350173950e-01 - <_> - - 0 -1 2874 2.3467710241675377e-02 - - 6.1246878467500210e-03 -2.3419499397277832e-01 - <_> - - 0 -1 2875 1.7358670011162758e-03 - - -3.9614859968423843e-02 1.2166520208120346e-01 - <_> - - 0 -1 2876 8.0753577640280128e-04 - - -2.6527570560574532e-02 3.9102729409933090e-02 - <_> - - 0 -1 2877 -5.5824369192123413e-03 - - -1.0073930025100708e-01 3.7261690944433212e-02 - <_> - - 0 -1 2878 -2.6079979725182056e-03 - - 7.4016816914081573e-02 -1.0955180041491985e-02 - <_> - - 0 -1 2879 6.9571033236570656e-05 - - -8.5262916982173920e-02 6.4489983022212982e-02 - <_> - - 0 -1 2880 8.1941768527030945e-02 - - 2.0980359986424446e-03 -6.1844950914382935e-01 - <_> - - 0 -1 2881 1.9427090883255005e-02 - - -2.2283710539340973e-02 1.9918359816074371e-01 - <_> - - 0 -1 2882 -1.5077610313892365e-01 - - -6.4394700527191162e-01 7.0817708037793636e-03 - <_> - - 0 -1 2883 -1.5093310503289104e-03 - - -1.0650269687175751e-01 3.7576910108327866e-02 - <_> - - 0 -1 2884 3.6287561058998108e-02 - - 6.2272557988762856e-04 -1.0000269412994385e+00 - <_> - - 0 -1 2885 -1.7432459862902761e-03 - - 8.2987606525421143e-02 -5.1900088787078857e-02 - <_> - - 0 -1 2886 -6.1345883295871317e-05 - - 4.1130200028419495e-02 -3.9763219654560089e-02 - <_> - - 0 -1 2887 2.6694999178289436e-05 - - -5.7489451020956039e-02 7.6786473393440247e-02 - <_> - - 0 -1 2888 2.4684870368218981e-05 - - -3.3249299973249435e-02 6.0841768980026245e-02 - <_> - - 0 -1 2889 -2.1666070446372032e-02 - - -4.2399600148200989e-01 9.5887510105967522e-03 - <_> - - 0 -1 2890 6.5124082565307617e-01 - - -1.3923630118370056e-02 2.0358699560165405e-01 - <_> - - 0 -1 2891 -8.1125432625412941e-03 - - 4.7284670174121857e-02 -8.7794028222560883e-02 - <_> - - 0 -1 2892 8.7661407887935638e-03 - - 3.6122149322181940e-04 -4.6132668852806091e-01 - <_> - - 0 -1 2893 5.6974760809680447e-05 - - -5.4080601781606674e-02 8.7679319083690643e-02 - <_> - - 0 -1 2894 8.2681202911771834e-05 - - -3.6107949912548065e-02 4.0353108197450638e-02 - <_> - - 0 -1 2895 3.6902779247611761e-03 - - 3.2845668494701385e-02 -1.7654460668563843e-01 - <_> - - 0 -1 2896 -2.4884620215743780e-03 - - -1.1169090121984482e-01 3.8092769682407379e-02 - <_> - - 0 -1 2897 6.1029191128909588e-03 - - -2.1872300654649734e-02 2.1474809944629669e-01 - <_> - - 0 -1 2898 8.4216389805078506e-03 - - 2.5033319368958473e-02 -1.0524729639291763e-01 - <_> - - 0 -1 2899 -1.1277659796178341e-02 - - -1.2068639695644379e-01 3.6691870540380478e-02 - <_> - - 0 -1 2900 -2.5908139068633318e-03 - - 4.8961970955133438e-02 -2.7112780138850212e-02 - <_> - - 0 -1 2901 3.9354357868432999e-03 - - -4.8803329467773438e-02 9.1594167053699493e-02 - <_> - - 0 -1 2902 -5.7140849530696869e-03 - - 6.5281033515930176e-02 -5.4428141564130783e-02 - <_> - - 0 -1 2903 7.5044799596071243e-03 - - 4.0455900132656097e-02 -1.0016919672489166e-01 - <_> - - 0 -1 2904 3.6039410624653101e-03 - - -4.8441201448440552e-02 4.4366039335727692e-02 - <_> - - 0 -1 2905 -1.4248499646782875e-02 - - -1.8958659470081329e-01 2.2379109635949135e-02 - <_> - - 0 -1 2906 1.0746859759092331e-01 - - -1.4573340304195881e-02 1.8533800542354584e-01 - <_> - - 0 -1 2907 6.5448340028524399e-03 - - 3.0963949859142303e-02 -1.5456229448318481e-01 - <_> - - 0 -1 2908 4.0558791160583496e-01 - - -1.0606770403683186e-02 9.3066513538360596e-02 - <_> - - 0 -1 2909 4.5041620731353760e-01 - - -1.1917609721422195e-02 3.7239480018615723e-01 - <_> - - 0 -1 2910 1.0484869480133057e+00 - - 2.4846600368618965e-02 -2.0550209283828735e-01 - <_> - - 0 -1 2911 -3.1736500561237335e-02 - - 1.8238979578018188e-01 -2.0837070420384407e-02 - <_> - - 0 -1 2912 1.0162170231342316e-01 - - 1.5214960090816021e-02 -2.8738000988960266e-01 - <_> - - 0 -1 2913 1.6911029815673828e-03 - - -2.7203610166907310e-02 1.5361389517784119e-01 - <_> - - 0 -1 2914 -5.5090200155973434e-02 - - 4.0182009339332581e-01 -2.6924409903585911e-03 - <_> - - 0 -1 2915 -6.6355741582810879e-03 - - -1.0399519652128220e-01 3.9930969476699829e-02 - <_> - - 0 -1 2916 -2.8234618902206421e-01 - - -6.5735298395156860e-01 2.2085180971771479e-03 - <_> - - 0 -1 2917 3.5606080293655396e-01 - - 8.8273994624614716e-03 -4.1840550303459167e-01 - <_> - - 0 -1 2918 2.8794088866561651e-03 - - -4.7702580690383911e-02 4.8619240522384644e-02 - <_> - - 0 -1 2919 -3.4571390599012375e-02 - - -1.6541080176830292e-01 3.2450839877128601e-02 - <_> - - 0 -1 2920 7.0021182298660278e-02 - - 7.1347500197589397e-03 -5.1421910524368286e-01 - <_> - - 0 -1 2921 -2.5386309251189232e-02 - - -1.2876220047473907e-01 2.9181970283389091e-02 - <_> - - 0 -1 2922 7.7927471138536930e-03 - - 3.8529869168996811e-02 -4.9483839422464371e-02 - <_> - - 0 -1 2923 1.4281559735536575e-02 - - 5.6447219103574753e-03 -7.0385247468948364e-01 - <_> - - 0 -1 2924 2.3879110813140869e-05 - - -4.2018178850412369e-02 4.4230289757251740e-02 - <_> - - 0 -1 2925 -3.5789560060948133e-03 - - 4.6143290400505066e-01 -9.7652971744537354e-03 - <_> - - 0 -1 2926 -6.9024448748677969e-05 - - 5.0133138895034790e-02 -5.8964539319276810e-02 - <_> - - 0 -1 2927 -3.0192299745976925e-03 - - -1.9493819773197174e-01 2.4710690602660179e-02 - <_> - - 0 -1 2928 -2.5278010871261358e-03 - - 8.3505026996135712e-02 -2.5268739089369774e-02 - <_> - - 0 -1 2929 1.7980269622057676e-03 - - -4.8482459038496017e-02 9.4311736524105072e-02 - <_> - - 0 -1 2930 -2.2690620273351669e-02 - - -2.9978820681571960e-01 2.2890099789947271e-03 - <_> - - 0 -1 2931 1.4375130413100123e-03 - - -6.2439408153295517e-02 7.5290091335773468e-02 - <_> - - 0 -1 2932 8.2696974277496338e-03 - - -3.0353950336575508e-02 8.8089391589164734e-02 - <_> - - 0 -1 2933 -1.5055939555168152e-01 - - 1.9413860142230988e-01 -2.2772220894694328e-02 - <_> - - 0 -1 2934 1.7811149591580033e-03 - - -6.0310248285531998e-02 2.0073890686035156e-02 - <_> - - 0 -1 2935 4.7450647689402103e-03 - - -5.1879990845918655e-02 7.4092343449592590e-02 - <_> - - 0 -1 2936 -3.9645358920097351e-03 - - -1.2223859876394272e-01 1.8484760075807571e-02 - <_> - - 0 -1 2937 2.1129579842090607e-01 - - 6.9678751751780510e-03 -6.3405531644821167e-01 - <_> - - 0 -1 2938 6.7932292819023132e-02 - - 1.1238300241529942e-02 -2.9897838830947876e-01 - <_> - - 0 -1 2939 3.5460498929023743e-01 - - 1.0820729658007622e-02 -4.0180310606956482e-01 - <_> - - 0 -1 2940 6.7880570888519287e-02 - - -9.0837832540273666e-03 2.8558140993118286e-01 - <_> - - 0 -1 2941 2.3179009556770325e-02 - - 1.2033659964799881e-02 -3.4283030033111572e-01 - <_> - - 0 -1 2942 -2.5018129497766495e-02 - - 1.6851060092449188e-01 -1.4854829758405685e-02 - <_> - - 0 -1 2943 1.0846500284969807e-02 - - -4.9866069108247757e-02 9.1330289840698242e-02 - <_> - - 0 -1 2944 6.7432790994644165e-02 - - -6.7176923155784607e-02 5.2287008613348007e-02 - <_> - - 0 -1 2945 -1.0400989651679993e-01 - - 2.1269090473651886e-01 -1.9635310396552086e-02 - <_> - - 0 -1 2946 -1.9552459940314293e-02 - - -8.5949383676052094e-02 1.0878560133278370e-02 - <_> - - 0 -1 2947 -1.0041260393336415e-03 - - -8.8146753609180450e-02 5.3349688649177551e-02 - <_> - - 0 -1 2948 3.1779510900378227e-03 - - -2.5708079338073730e-02 1.2620189785957336e-01 - <_> - - 0 -1 2949 -5.1974221132695675e-03 - - -1.4909990131855011e-01 2.5734230875968933e-02 - <_> - - 0 -1 2950 -8.4385536611080170e-03 - - 1.7627319693565369e-01 -1.7336180433630943e-02 - <_> - - 0 -1 2951 6.3723679631948471e-03 - - -2.8829930350184441e-02 1.6014620661735535e-01 - <_> - - 0 -1 2952 6.4913480309769511e-04 - - 2.5060750544071198e-02 -6.8481996655464172e-02 - <_> - - 0 -1 2953 -2.3739310563541949e-05 - - 5.9776719659566879e-02 -6.9079458713531494e-02 - <_> - - 0 -1 2954 2.1902309730648994e-02 - - 1.5800049528479576e-02 -2.5902339816093445e-01 - <_> - - 0 -1 2955 -2.3225650191307068e-02 - - -1.5240189433097839e-01 3.4358970820903778e-02 - <_> - - 0 -1 2956 1.7396999523043633e-02 - - -4.4514410197734833e-02 8.6146168410778046e-02 - <_> - - 0 -1 2957 -4.3821102008223534e-03 - - -6.5594673156738281e-02 7.0031292736530304e-02 - <_> - - 0 -1 2958 -5.2271839231252670e-02 - - -8.4593230485916138e-01 4.0736538358032703e-03 - <_> - - 0 -1 2959 -2.6945039280690253e-05 - - 7.1103386580944061e-02 -5.6970071047544479e-02 - <_> - - 0 -1 2960 7.3246699757874012e-03 - - 1.0148160159587860e-02 -1.6495819389820099e-01 - <_> - - 0 -1 2961 7.9648941755294800e-02 - - 4.9309800378978252e-03 -7.3935991525650024e-01 - <_> - - 0 -1 2962 2.5645719841122627e-02 - - -9.9361119791865349e-03 1.9573490321636200e-01 - <_> - - 0 -1 2963 -2.1517710760235786e-02 - - -3.7398171424865723e-01 1.0564680211246014e-02 - <_> - - 0 -1 2964 3.1084879301488400e-03 - - -2.3289280012249947e-02 4.4452898204326630e-02 - <_> - - 0 -1 2965 -2.0305790007114410e-02 - - 1.8450389802455902e-01 -2.2041650488972664e-02 - <_> - - 0 -1 2966 -2.3073209740687162e-04 - - -4.2533028870820999e-02 4.0534239262342453e-02 - <_> - - 0 -1 2967 5.1654567942023277e-03 - - 1.9550900906324387e-02 -2.7522230148315430e-01 - <_> - - 0 -1 2968 -1.3373889960348606e-02 - - -1.0676769912242889e-01 1.5713090077042580e-02 - <_> - - 0 -1 2969 -3.0557509511709213e-02 - - -4.9036020040512085e-01 8.4824627265334129e-03 - <_> - - 0 -1 2970 -4.4938637875020504e-03 - - 2.4587419629096985e-01 -7.3765181005001068e-03 - <_> - - 0 -1 2971 1.5328789595514536e-03 - - -2.1998360753059387e-02 1.7105750739574432e-01 - <_> - - 0 -1 2972 2.8464570641517639e-02 - - -4.4271750375628471e-03 3.7864500284194946e-01 - <_> - - 0 -1 2973 -3.6278439220041037e-03 - - -1.1943010240793228e-01 3.6387339234352112e-02 - <_> - - 0 -1 2974 6.5880590118467808e-03 - - 4.7421031631529331e-03 -2.3040629923343658e-01 - <_> - - 0 -1 2975 -1.7257609870284796e-03 - - -1.5124620497226715e-01 2.4530509486794472e-02 - <_> - - 0 -1 2976 -4.0079229511320591e-03 - - 1.1795750260353088e-01 -2.8455309569835663e-02 - <_> - - 0 -1 2977 6.0597620904445648e-03 - - -1.5942880883812904e-02 2.6349261403083801e-01 - <_> - - 0 -1 2978 1.0206180065870285e-01 - - 2.2873809561133385e-02 -1.7569309473037720e-01 - <_> - - 0 -1 2979 -5.3605949506163597e-03 - - -2.8432789444923401e-01 1.3539279811084270e-02 - <_> - - 0 -1 2980 1.3634009519591928e-03 - - 1.5016339719295502e-02 -2.1692469716072083e-01 - <_> - - 0 -1 2981 -5.1867151341866702e-05 - - 7.1595683693885803e-02 -5.9194121509790421e-02 - <_> - - 0 -1 2982 5.5599510669708252e-03 - - -5.0443381071090698e-02 2.4631209671497345e-02 - <_> - - 0 -1 2983 -8.1721879541873932e-03 - - 1.4858539402484894e-01 -3.2055098563432693e-02 - <_> - - 0 -1 2984 -5.1187299191951752e-02 - - -2.5399059057235718e-01 6.8093240261077881e-03 - <_> - - 0 -1 2985 4.0242701768875122e-02 - - 7.3603428900241852e-03 -5.3896129131317139e-01 - <_> - - 0 -1 2986 -8.6354929953813553e-03 - - 2.0159240067005157e-01 -1.6828190535306931e-02 - <_> - - 0 -1 2987 6.2959326896816492e-05 - - -5.4412890225648880e-02 7.3297880589962006e-02 - <_> - 377 - -1.0771520137786865e+00 - - <_> - - 0 -1 2988 -4.6584438532590866e-02 - - 3.9758908748626709e-01 -1.0487789660692215e-01 - <_> - - 0 -1 2989 -1.3546080328524113e-02 - - 1.0160709917545319e-01 -6.0582119971513748e-02 - <_> - - 0 -1 2990 2.1240619942545891e-02 - - -2.1520909667015076e-01 9.9192880094051361e-02 - <_> - - 0 -1 2991 -6.8675312213599682e-03 - - 3.4559080004692078e-01 -2.7297310531139374e-02 - <_> - - 0 -1 2992 1.8874719971790910e-03 - - -6.2646366655826569e-02 2.2028639912605286e-01 - <_> - - 0 -1 2993 -9.6648931503295898e-03 - - 1.2642039358615875e-01 -2.9440899379551411e-03 - <_> - - 0 -1 2994 5.7599171996116638e-03 - - -6.4545191824436188e-02 2.1166889369487762e-01 - <_> - - 0 -1 2995 4.2604688555002213e-02 - - 8.1665478646755219e-02 -2.2115150094032288e-01 - <_> - - 0 -1 2996 1.1809020070359111e-03 - - 5.3782589733600616e-02 -2.1832549571990967e-01 - <_> - - 0 -1 2997 2.5866830721497536e-02 - - -3.4579040948301554e-03 -2.2809159755706787e-01 - <_> - - 0 -1 2998 -1.3024089857935905e-02 - - -2.3362639546394348e-01 4.5519679784774780e-02 - <_> - - 0 -1 2999 -2.6178720872849226e-05 - - 6.3058510422706604e-02 -3.5777151584625244e-02 - <_> - - 0 -1 3000 3.8649858906865120e-03 - - 4.1308909654617310e-02 -2.1261259913444519e-01 - <_> - - 0 -1 3001 -4.3429462239146233e-03 - - 1.0967259854078293e-01 -6.7377433180809021e-02 - <_> - - 0 -1 3002 3.2463369425386190e-03 - - -5.9912640601396561e-02 2.4788300693035126e-01 - <_> - - 0 -1 3003 -4.4672209769487381e-02 - - -1.3787649571895599e-01 7.5812488794326782e-03 - <_> - - 0 -1 3004 -5.9697840362787247e-02 - - -3.7201279401779175e-01 2.4332780390977859e-02 - <_> - - 0 -1 3005 -9.9666267633438110e-03 - - 7.4087321758270264e-02 -1.2867400050163269e-01 - <_> - - 0 -1 3006 1.1090090265497565e-03 - - -4.5063789933919907e-02 1.9852949678897858e-01 - <_> - - 0 -1 3007 1.9137640297412872e-01 - - 1.6608469188213348e-02 -4.0662389993667603e-01 - <_> - - 0 -1 3008 2.9130840674042702e-02 - - 3.6106731742620468e-02 -2.1135319769382477e-01 - <_> - - 0 -1 3009 -3.9123510941863060e-03 - - -1.3715060055255890e-01 3.1154200434684753e-02 - <_> - - 0 -1 3010 1.0206189937889576e-02 - - 2.9056249186396599e-02 -2.5032269954681396e-01 - <_> - - 0 -1 3011 -5.4421171545982361e-02 - - -3.6787760257720947e-01 4.9542388878762722e-03 - <_> - - 0 -1 3012 1.0504369623959064e-02 - - -3.9119478315114975e-02 1.7866680026054382e-01 - <_> - - 0 -1 3013 -3.8903228938579559e-02 - - -1.1156520247459412e-01 4.9485109746456146e-02 - <_> - - 0 -1 3014 -3.0581050086766481e-03 - - 1.1854489892721176e-01 -6.5253503620624542e-02 - <_> - - 0 -1 3015 1.2071110308170319e-02 - - 1.6908379271626472e-02 -4.6089250594377518e-02 - <_> - - 0 -1 3016 -3.6121580749750137e-02 - - -2.8585109114646912e-01 2.7392070740461349e-02 - <_> - - 0 -1 3017 -7.0450740167871118e-05 - - 8.1192217767238617e-02 -8.5339479148387909e-02 - <_> - - 0 -1 3018 -6.1475399881601334e-02 - - -3.0502641201019287e-01 2.1672610193490982e-02 - <_> - - 0 -1 3019 1.2384360283613205e-01 - - -8.6616817861795425e-03 9.5883563160896301e-02 - <_> - - 0 -1 3020 -1.3729789853096008e-01 - - 3.2487779855728149e-01 -2.7384700253605843e-02 - <_> - - 0 -1 3021 -3.7660130858421326e-01 - - 6.9512300193309784e-02 -8.7510026991367340e-02 - <_> - - 0 -1 3022 -1.0428489744663239e-01 - - -1.7433910071849823e-01 4.6572308987379074e-02 - <_> - - 0 -1 3023 1.5377249568700790e-02 - - 7.2437077760696411e-03 -3.7064689397811890e-01 - <_> - - 0 -1 3024 1.0340980254113674e-02 - - 1.9599150866270065e-02 -3.5058119893074036e-01 - <_> - - 0 -1 3025 2.6178720872849226e-05 - - -3.7143740803003311e-02 4.6319041401147842e-02 - <_> - - 0 -1 3026 -5.1104918384226039e-05 - - 7.5019650161266327e-02 -9.5568731427192688e-02 - <_> - - 0 -1 3027 1.2594480067491531e-03 - - -3.6140341311693192e-02 1.4024050533771515e-01 - <_> - - 0 -1 3028 -4.4775051064789295e-03 - - 1.1984299868345261e-01 -5.5974781513214111e-02 - <_> - - 0 -1 3029 -2.5892409030348063e-03 - - 2.0983800292015076e-01 -2.1606909111142159e-02 - <_> - - 0 -1 3030 2.8334530725260265e-05 - - -6.4645819365978241e-02 1.1007639765739441e-01 - <_> - - 0 -1 3031 4.9330651760101318e-02 - - -3.4308250993490219e-02 1.0559219866991043e-01 - <_> - - 0 -1 3032 -3.1046869116835296e-04 - - 3.8028620183467865e-02 -2.0678110420703888e-01 - <_> - - 0 -1 3033 1.1290919966995716e-02 - - -4.3023418635129929e-02 1.6977259516716003e-01 - <_> - - 0 -1 3034 -1.9364829640835524e-03 - - -1.0826709866523743e-01 6.4394846558570862e-02 - <_> - - 0 -1 3035 1.3304199278354645e-01 - - -1.0764880105853081e-02 3.0249550938606262e-01 - <_> - - 0 -1 3036 -1.2178049981594086e-01 - - -4.0108850598335266e-01 1.9901329651474953e-02 - <_> - - 0 -1 3037 -4.8507350584259257e-05 - - 5.7830650359392166e-02 -5.5416390299797058e-02 - <_> - - 0 -1 3038 8.1427283585071564e-03 - - -1.3038429617881775e-01 5.0446111708879471e-02 - <_> - - 0 -1 3039 2.5049310922622681e-01 - - 4.9552097916603088e-03 -8.4521442651748657e-01 - <_> - - 0 -1 3040 2.9000479262322187e-03 - - -4.8634160310029984e-02 1.3975860178470612e-01 - <_> - - 0 -1 3041 -9.5292963087558746e-03 - - -4.8227089643478394e-01 8.9182211086153984e-03 - <_> - - 0 -1 3042 -1.2608580291271210e-03 - - -1.4396399259567261e-01 4.4625461101531982e-02 - <_> - - 0 -1 3043 6.9864251418039203e-04 - - -5.3468879312276840e-02 4.4480290263891220e-02 - <_> - - 0 -1 3044 5.0955888582393527e-05 - - -9.1091223061084747e-02 6.1559129506349564e-02 - <_> - - 0 -1 3045 -4.2289011180400848e-02 - - -1.4529189467430115e-01 2.2947659716010094e-02 - <_> - - 0 -1 3046 8.3977341651916504e-02 - - 3.7113729864358902e-02 -1.6206559538841248e-01 - <_> - - 0 -1 3047 9.1143082827329636e-03 - - -8.4407972171902657e-03 1.0362890362739563e-01 - <_> - - 0 -1 3048 4.6319790271809325e-05 - - -6.7505158483982086e-02 8.5311636328697205e-02 - <_> - - 0 -1 3049 5.2136087417602539e-01 - - -1.4404560439288616e-02 4.4966968894004822e-01 - <_> - - 0 -1 3050 1.5858359634876251e-02 - - 2.4507109075784683e-02 -2.8061380982398987e-01 - <_> - - 0 -1 3051 9.0295937843620777e-04 - - -1.9777469336986542e-02 5.8223951607942581e-02 - <_> - - 0 -1 3052 -1.6763530438765883e-03 - - -1.5801259875297546e-01 3.4012299031019211e-02 - <_> - - 0 -1 3053 -2.4684870368218981e-05 - - 5.1980741322040558e-02 -3.5259820520877838e-02 - <_> - - 0 -1 3054 2.3879110813140869e-05 - - -7.7739536762237549e-02 7.5770601630210876e-02 - <_> - - 0 -1 3055 5.9450380504131317e-03 - - -1.0767629742622375e-01 4.7342531383037567e-02 - <_> - - 0 -1 3056 -3.3886708319187164e-02 - - 2.5395831465721130e-01 -2.6396760717034340e-02 - <_> - - 0 -1 3057 5.5312961339950562e-03 - - -2.7721639722585678e-02 2.3233540356159210e-01 - <_> - - 0 -1 3058 -6.0472032055258751e-03 - - -1.7387150228023529e-01 3.4561499953269958e-02 - <_> - - 0 -1 3059 -3.1955521553754807e-02 - - -1.9199980422854424e-02 3.0842060223221779e-02 - <_> - - 0 -1 3060 9.0737096965312958e-02 - - 7.7871060930192471e-03 -7.5864750146865845e-01 - <_> - - 0 -1 3061 -1.2445859611034393e-02 - - 1.4370959997177124e-01 -1.0477649979293346e-02 - <_> - - 0 -1 3062 1.1301520280539989e-02 - - -1.3221940398216248e-01 4.0967330336570740e-02 - <_> - - 0 -1 3063 -1.0558320209383965e-02 - - -3.3963328599929810e-01 1.2630919925868511e-02 - <_> - - 0 -1 3064 4.6060150489211082e-03 - - -3.5319130867719650e-02 1.5813319385051727e-01 - <_> - - 0 -1 3065 -3.0661260709166527e-02 - - -5.8793282508850098e-01 9.6826143562793732e-03 - <_> - - 0 -1 3066 -6.2674311921000481e-03 - - -1.9762620329856873e-01 2.6928830891847610e-02 - <_> - - 0 -1 3067 1.2989880051463842e-03 - - -2.9124230146408081e-02 7.6282523572444916e-02 - <_> - - 0 -1 3068 4.8161852173507214e-03 - - 1.8022129312157631e-02 -2.9259270429611206e-01 - <_> - - 0 -1 3069 -4.4622411951422691e-03 - - 4.8554401844739914e-02 -4.6847470104694366e-02 - <_> - - 0 -1 3070 -4.9135680455947295e-05 - - 8.1215217709541321e-02 -6.3379563391208649e-02 - <_> - - 0 -1 3071 5.0573139451444149e-03 - - 1.4097140170633793e-02 -2.0685930550098419e-01 - <_> - - 0 -1 3072 1.3823669869452715e-03 - - -4.2655818164348602e-02 1.1541669815778732e-01 - <_> - - 0 -1 3073 -4.0184449404478073e-02 - - -2.9843661189079285e-01 1.7463730648159981e-02 - <_> - - 0 -1 3074 7.0384680293500423e-03 - - -5.2195250988006592e-02 9.4690658152103424e-02 - <_> - - 0 -1 3075 -5.6935990869533271e-05 - - 5.0736121833324432e-02 -1.2229949980974197e-01 - <_> - - 0 -1 3076 5.9834190324181691e-05 - - -6.1534628272056580e-02 8.2193866372108459e-02 - <_> - - 0 -1 3077 2.3980330675840378e-02 - - 8.9948609471321106e-02 -5.3157258778810501e-02 - <_> - - 0 -1 3078 1.9857319071888924e-02 - - -2.9017150402069092e-02 1.9026429951190948e-01 - <_> - - 0 -1 3079 -1.8872609734535217e-01 - - -1.8916009366512299e-01 9.1472929343581200e-03 - <_> - - 0 -1 3080 -5.3056180477142334e-03 - - 5.9502270072698593e-02 -1.1066360026597977e-01 - <_> - - 0 -1 3081 1.7961669713258743e-02 - - 6.9341547787189484e-03 -2.9351618885993958e-01 - <_> - - 0 -1 3082 4.4897631742060184e-03 - - 3.4544911235570908e-02 -1.4389620721340179e-01 - <_> - - 0 -1 3083 -1.3780979812145233e-01 - - 6.6656690835952759e-01 -7.6799020171165466e-03 - <_> - - 0 -1 3084 2.5066170841455460e-02 - - 2.7024639770388603e-02 -1.8130689859390259e-01 - <_> - - 0 -1 3085 -6.6011329181492329e-03 - - -4.7107979655265808e-02 5.3564820438623428e-02 - <_> - - 0 -1 3086 4.4634088873863220e-02 - - -5.8299250900745392e-02 8.5404127836227417e-02 - <_> - - 0 -1 3087 -2.0959110930562019e-02 - - 1.7154890298843384e-01 -3.0249819159507751e-02 - <_> - - 0 -1 3088 4.8691190779209137e-02 - - 2.1405220031738281e-02 -2.3135960102081299e-01 - <_> - - 0 -1 3089 3.3477138727903366e-02 - - -1.7535399645566940e-02 2.0705880224704742e-01 - <_> - - 0 -1 3090 -1.5782449394464493e-02 - - 2.0446999371051788e-01 -2.9454570263624191e-02 - <_> - - 0 -1 3091 2.1625500172376633e-02 - - -1.2141889892518520e-02 2.5204500555992126e-01 - <_> - - 0 -1 3092 -5.1940139383077621e-03 - - -1.2218979746103287e-01 4.5143280178308487e-02 - <_> - - 0 -1 3093 -3.1310278922319412e-02 - - 2.8687921166419983e-01 -8.2902582362294197e-03 - <_> - - 0 -1 3094 1.5542740002274513e-02 - - 2.7400100603699684e-02 -2.0353409647941589e-01 - <_> - - 0 -1 3095 -5.2836928516626358e-03 - - 5.4194588214159012e-02 -2.4016149342060089e-02 - <_> - - 0 -1 3096 -6.4056441187858582e-03 - - 1.3316440582275391e-01 -4.6583179384469986e-02 - <_> - - 0 -1 3097 -4.7195679508149624e-03 - - -1.0466440021991730e-01 2.9198190197348595e-02 - <_> - - 0 -1 3098 -1.2241840362548828e-02 - - -3.5400021076202393e-01 1.5616860240697861e-02 - <_> - - 0 -1 3099 -3.4770739730447531e-03 - - 4.7154370695352554e-02 -3.7254210561513901e-02 - <_> - - 0 -1 3100 1.8311959505081177e-01 - - -4.9684889614582062e-02 1.2035690248012543e-01 - <_> - - 0 -1 3101 -1.3658869266510010e-01 - - -2.2701020538806915e-01 8.3362739533185959e-03 - <_> - - 0 -1 3102 -4.4932749122381210e-02 - - 7.9606711864471436e-02 -6.9477088749408722e-02 - <_> - - 0 -1 3103 -1.0785179911181331e-03 - - 1.1147390305995941e-01 -3.0282339081168175e-02 - <_> - - 0 -1 3104 -8.6406682385131717e-04 - - -1.4347119629383087e-01 3.7838041782379150e-02 - <_> - - 0 -1 3105 1.4584630262106657e-03 - - -2.7251800522208214e-02 1.5474230051040649e-01 - <_> - - 0 -1 3106 -1.8864479660987854e-01 - - 1.7952759563922882e-01 -3.0425619333982468e-02 - <_> - - 0 -1 3107 -9.0535402705427259e-05 - - 3.7944830954074860e-02 -3.4926921129226685e-02 - <_> - - 0 -1 3108 -9.8015682306140661e-04 - - 1.4717060327529907e-01 -3.5082500427961349e-02 - <_> - - 0 -1 3109 -1.2613929808139801e-02 - - -2.3039579391479492e-01 2.6101479306817055e-02 - <_> - - 0 -1 3110 5.1353210437810048e-05 - - -7.3191367089748383e-02 7.0723876357078552e-02 - <_> - - 0 -1 3111 -1.1017440119758248e-03 - - 1.0001300275325775e-01 -1.9991559907793999e-02 - <_> - - 0 -1 3112 2.3879110813140869e-05 - - -7.3069721460342407e-02 7.6998889446258545e-02 - <_> - - 0 -1 3113 -8.5628936067223549e-03 - - 5.3870048373937607e-02 -8.1171043217182159e-02 - <_> - - 0 -1 3114 2.4042169749736786e-01 - - -1.4012940227985382e-02 5.0366157293319702e-01 - <_> - - 0 -1 3115 5.4416628554463387e-03 - - 2.5490989908576012e-02 -1.2167359888553619e-01 - <_> - - 0 -1 3116 1.2384300120174885e-02 - - 1.2509509921073914e-02 -3.8121658563613892e-01 - <_> - - 0 -1 3117 9.6918210387229919e-02 - - -1.2539669871330261e-02 1.0202600061893463e-01 - <_> - - 0 -1 3118 1.2472909688949585e-01 - - 8.6807161569595337e-03 -6.0219871997833252e-01 - <_> - - 0 -1 3119 5.1862320106010884e-05 - - -6.0201589018106461e-02 6.4894728362560272e-02 - <_> - - 0 -1 3120 -5.2220391808077693e-05 - - 7.8609548509120941e-02 -6.0117799788713455e-02 - <_> - - 0 -1 3121 -2.3879110813140869e-05 - - 7.9572148621082306e-02 -5.4761201143264771e-02 - <_> - - 0 -1 3122 2.4684870368218981e-05 - - -7.5995661318302155e-02 8.9526608586311340e-02 - <_> - - 0 -1 3123 6.6632673144340515e-02 - - 1.1696009896695614e-02 -3.8171160221099854e-01 - <_> - - 0 -1 3124 2.0522400736808777e-03 - - -3.4895081073045731e-02 1.3413290679454803e-01 - <_> - - 0 -1 3125 -3.9307191036641598e-03 - - -6.6283293068408966e-02 2.9610849916934967e-02 - <_> - - 0 -1 3126 1.2441479600965977e-02 - - 1.5905169770121574e-02 -3.2050350308418274e-01 - <_> - - 0 -1 3127 3.8802489638328552e-02 - - -1.5245269984006882e-02 6.3629612326622009e-02 - <_> - - 0 -1 3128 -6.3351631979458034e-05 - - 6.1788670718669891e-02 -7.1749016642570496e-02 - <_> - - 0 -1 3129 -2.4020129814743996e-02 - - 2.4262709915637970e-01 -8.7506501004099846e-03 - <_> - - 0 -1 3130 6.7699998617172241e-03 - - -3.3120978623628616e-02 1.4404219388961792e-01 - <_> - - 0 -1 3131 -1.6888360679149628e-01 - - 3.5152590274810791e-01 -7.1931672282516956e-03 - <_> - - 0 -1 3132 -6.7578062415122986e-02 - - -2.2686310112476349e-01 2.5602210313081741e-02 - <_> - - 0 -1 3133 -1.1355879716575146e-02 - - -6.2450700998306274e-01 2.5642369873821735e-03 - <_> - - 0 -1 3134 7.7880248427391052e-02 - - 7.9159401357173920e-03 -5.6059461832046509e-01 - <_> - - 0 -1 3135 -2.9031829908490181e-03 - - 9.4153687357902527e-02 -4.9611900001764297e-02 - <_> - - 0 -1 3136 -2.4730090517550707e-03 - - 1.0858210176229477e-01 -5.3893819451332092e-02 - <_> - - 0 -1 3137 3.8511860184371471e-03 - - 2.3423779755830765e-02 -1.3090899586677551e-01 - <_> - - 0 -1 3138 -2.2390179801732302e-03 - - -2.1743249893188477e-01 2.4435719475150108e-02 - <_> - - 0 -1 3139 7.3695750907063484e-03 - - -2.4774579331278801e-02 1.1588659882545471e-01 - <_> - - 0 -1 3140 -4.6323970891535282e-03 - - 1.2989379465579987e-01 -3.8149699568748474e-02 - <_> - - 0 -1 3141 1.9922649487853050e-02 - - 1.5869069844484329e-02 -1.8562960624694824e-01 - <_> - - 0 -1 3142 1.6726849600672722e-02 - - 1.6922770440578461e-01 -3.2117698341608047e-02 - <_> - - 0 -1 3143 -1.4559989795088768e-03 - - 7.2710826992988586e-02 -5.3102489560842514e-02 - <_> - - 0 -1 3144 1.4368960261344910e-01 - - -1.0999070107936859e-01 6.3211508095264435e-02 - <_> - - 0 -1 3145 -5.9681031852960587e-03 - - 8.5351467132568359e-02 -3.1996998935937881e-02 - <_> - - 0 -1 3146 8.6067931260913610e-04 - - -6.7739866673946381e-02 7.8335791826248169e-02 - <_> - - 0 -1 3147 2.2462129127234221e-03 - - 4.2138159275054932e-02 -1.5379780530929565e-01 - <_> - - 0 -1 3148 -2.3184010758996010e-02 - - 2.3559680581092834e-01 -2.2087629884481430e-02 - <_> - - 0 -1 3149 8.3518847532104701e-05 - - -4.9133669584989548e-02 3.5325560718774796e-02 - <_> - - 0 -1 3150 -2.2380428854376078e-03 - - 1.7978920042514801e-01 -2.4958169087767601e-02 - <_> - - 0 -1 3151 -3.6487199831753969e-03 - - -4.8889059573411942e-02 1.5720760449767113e-02 - <_> - - 0 -1 3152 2.4686430115252733e-03 - - 3.4214280545711517e-02 -1.3692939281463623e-01 - <_> - - 0 -1 3153 -1.7901340499520302e-02 - - 2.0170210301876068e-01 -5.8616171590983868e-03 - <_> - - 0 -1 3154 5.4372870363295078e-04 - - -8.1766016781330109e-02 5.7825129479169846e-02 - <_> - - 0 -1 3155 7.2202371666207910e-04 - - 2.4502370506525040e-02 -6.1022099107503891e-02 - <_> - - 0 -1 3156 -3.6474859807640314e-03 - - -1.4141079783439636e-01 3.6404989659786224e-02 - <_> - - 0 -1 3157 7.3206011438742280e-04 - - -4.3659660965204239e-02 4.8195239156484604e-02 - <_> - - 0 -1 3158 3.1086079776287079e-02 - - 3.6769669502973557e-02 -1.4276769757270813e-01 - <_> - - 0 -1 3159 -6.9447411224246025e-03 - - 3.5043680667877197e-01 -7.0687229745090008e-03 - <_> - - 0 -1 3160 6.0204358305782080e-05 - - -1.2189149856567383e-01 4.1316650807857513e-02 - <_> - - 0 -1 3161 3.6609929054975510e-02 - - 1.9925929605960846e-02 -9.8471991717815399e-02 - <_> - - 0 -1 3162 -1.0960429906845093e-02 - - 1.2811520695686340e-01 -3.8388188928365707e-02 - <_> - - 0 -1 3163 -2.3295450955629349e-03 - - 7.0760749280452728e-02 -2.8919460251927376e-02 - <_> - - 0 -1 3164 6.1855830252170563e-02 - - -4.7587100416421890e-02 9.8586358129978180e-02 - <_> - - 0 -1 3165 -2.3475209251046181e-02 - - 8.6964562535285950e-02 -1.2254109606146812e-02 - <_> - - 0 -1 3166 -9.3669712077826262e-04 - - 8.1251077353954315e-02 -5.4221849888563156e-02 - <_> - - 0 -1 3167 -1.3151890039443970e-01 - - -1.5397280454635620e-01 1.0072549805045128e-02 - <_> - - 0 -1 3168 8.8957380503416061e-03 - - 3.1962350010871887e-02 -1.3615429401397705e-01 - <_> - - 0 -1 3169 -8.2765902334358543e-05 - - 5.3280740976333618e-02 -5.5038310587406158e-02 - <_> - - 0 -1 3170 2.0361710339784622e-03 - - 3.5483650863170624e-02 -1.2068919837474823e-01 - <_> - - 0 -1 3171 2.8764940798282623e-03 - - -2.7869360521435738e-02 1.0440739989280701e-01 - <_> - - 0 -1 3172 -9.9125062115490437e-04 - - 9.7983770072460175e-02 -5.9333961457014084e-02 - <_> - - 0 -1 3173 3.0070789158344269e-02 - - 1.6433039680123329e-02 -9.3353606760501862e-02 - <_> - - 0 -1 3174 -5.2220391808077693e-05 - - 7.5220681726932526e-02 -5.7729821652173996e-02 - <_> - - 0 -1 3175 -1.4955939352512360e-01 - - -5.7173091173171997e-01 7.4865440838038921e-03 - <_> - - 0 -1 3176 -1.0101850144565105e-02 - - 1.8661679327487946e-01 -2.6581920683383942e-02 - <_> - - 0 -1 3177 -2.3593820631504059e-02 - - -3.6165231466293335e-01 8.6832279339432716e-03 - <_> - - 0 -1 3178 -5.6298989802598953e-02 - - 3.8091570138931274e-01 -1.2540389783680439e-02 - <_> - - 0 -1 3179 4.8374498874181882e-05 - - -3.7239558994770050e-02 4.3505970388650894e-02 - <_> - - 0 -1 3180 7.3194838478229940e-05 - - -5.7480230927467346e-02 8.0166891217231750e-02 - <_> - - 0 -1 3181 -2.2648379206657410e-02 - - -9.1465108096599579e-02 6.0311011038720608e-03 - <_> - - 0 -1 3182 7.5446818955242634e-03 - - 2.7741640806198120e-02 -1.7181250452995300e-01 - <_> - - 0 -1 3183 -1.0577409714460373e-01 - - 5.3441429138183594e-01 -5.1590129733085632e-03 - <_> - - 0 -1 3184 4.4444771483540535e-03 - - 3.4301549196243286e-02 -1.4514839649200439e-01 - <_> - - 0 -1 3185 5.6781400926411152e-03 - - -4.3091170489788055e-02 1.4633339643478394e-01 - <_> - - 0 -1 3186 -1.0109309852123260e-01 - - -1.7478010058403015e-01 2.8068430721759796e-02 - <_> - - 0 -1 3187 -4.7357238829135895e-02 - - 1.6704539954662323e-01 -1.5818670392036438e-02 - <_> - - 0 -1 3188 -5.7674032449722290e-01 - - -6.2243127822875977e-01 7.9542007297277451e-03 - <_> - - 0 -1 3189 1.8059749854728580e-03 - - -1.6442989930510521e-02 4.6261239796876907e-02 - <_> - - 0 -1 3190 1.4680040068924427e-02 - - 8.1173582002520561e-03 -5.5666857957839966e-01 - <_> - - 0 -1 3191 -1.6897849738597870e-01 - - -3.1401479244232178e-01 1.2572989799082279e-02 - <_> - - 0 -1 3192 -1.9389929249882698e-02 - - 1.5510299801826477e-01 -2.7996309101581573e-02 - <_> - - 0 -1 3193 -2.6446670293807983e-02 - - -3.1462061405181885e-01 1.7393559217453003e-02 - <_> - - 0 -1 3194 -4.5732469297945499e-03 - - -1.3583140075206757e-01 3.7665959447622299e-02 - <_> - - 0 -1 3195 7.8531084582209587e-03 - - -3.6102959420531988e-03 1.8964889645576477e-01 - <_> - - 0 -1 3196 2.7107769710710272e-05 - - -8.4309861063957214e-02 5.4540161043405533e-02 - <_> - - 0 -1 3197 -2.0377049222588539e-02 - - 1.1659640073776245e-01 -1.3695999979972839e-02 - <_> - - 0 -1 3198 1.7351469397544861e-01 - - -1.2655749917030334e-02 3.5746860504150391e-01 - <_> - - 0 -1 3199 5.4228559136390686e-02 - - 9.2725036665797234e-03 -1.7699269950389862e-01 - <_> - - 0 -1 3200 5.4582608863711357e-03 - - -4.3747000396251678e-02 1.0337469726800919e-01 - <_> - - 0 -1 3201 6.3768923282623291e-02 - - 2.1960640326142311e-02 -2.0528109371662140e-01 - <_> - - 0 -1 3202 1.1216020211577415e-02 - - -6.0158800333738327e-02 7.7689386904239655e-02 - <_> - - 0 -1 3203 3.9365720003843307e-02 - - -2.0138410851359367e-02 1.2760840356349945e-01 - <_> - - 0 -1 3204 -1.6133710741996765e-02 - - 1.1279760301113129e-01 -6.0140721499919891e-02 - <_> - - 0 -1 3205 -1.6923110233619809e-03 - - 2.8056159615516663e-02 -4.9229931086301804e-02 - <_> - - 0 -1 3206 -4.9907790526049212e-05 - - 7.2209537029266357e-02 -5.7712871581315994e-02 - <_> - - 0 -1 3207 8.3856992423534393e-03 - - 4.2978320270776749e-03 -4.8725709319114685e-01 - <_> - - 0 -1 3208 -6.8764640018343925e-03 - - -3.5551750659942627e-01 1.0993010364472866e-02 - <_> - - 0 -1 3209 -7.4763470329344273e-03 - - 1.6195739805698395e-01 -2.6884159073233604e-02 - <_> - - 0 -1 3210 3.8878160994499922e-03 - - -1.1019629985094070e-01 4.0942940860986710e-02 - <_> - - 0 -1 3211 -6.3231296837329865e-02 - - 4.9099159240722656e-01 -5.1781800575554371e-03 - <_> - - 0 -1 3212 -5.6607749313116074e-02 - - 3.7937331199645996e-01 -1.0820900090038776e-02 - <_> - - 0 -1 3213 -2.6267269253730774e-01 - - -4.4802859425544739e-01 1.0556190274655819e-02 - <_> - - 0 -1 3214 -5.4856478527653962e-05 - - 6.5392680466175079e-02 -6.2045000493526459e-02 - <_> - - 0 -1 3215 4.7022080252645537e-05 - - -3.5339221358299255e-02 4.8449590802192688e-02 - <_> - - 0 -1 3216 7.6384996646083891e-05 - - -5.5468279868364334e-02 8.1199139356613159e-02 - <_> - - 0 -1 3217 -1.3491000235080719e-01 - - -5.6497681140899658e-01 5.8416058309376240e-03 - <_> - - 0 -1 3218 -1.7328690737485886e-02 - - 6.8611651659011841e-02 -6.2486048787832260e-02 - <_> - - 0 -1 3219 -1.1590039730072021e-01 - - 3.5991528630256653e-01 -7.0457011461257935e-03 - <_> - - 0 -1 3220 -2.5972709991037846e-03 - - -6.1048980802297592e-02 7.2908006608486176e-02 - <_> - - 0 -1 3221 -5.8517122268676758e-01 - - 1.7067320644855499e-01 -2.7490269392728806e-02 - <_> - - 0 -1 3222 -1.6476539894938469e-02 - - 1.3038930296897888e-01 -3.3192738890647888e-02 - <_> - - 0 -1 3223 -4.7457408159971237e-02 - - 9.3888796865940094e-02 -4.7779250890016556e-02 - <_> - - 0 -1 3224 -7.1776830591261387e-03 - - -1.9722719490528107e-01 2.3815890774130821e-02 - <_> - - 0 -1 3225 8.9368229964748025e-04 - - -3.8510698825120926e-02 1.2537740170955658e-01 - <_> - - 0 -1 3226 -1.5897080302238464e-01 - - 4.2691999673843384e-01 -1.1353019624948502e-02 - <_> - - 0 -1 3227 -1.5724339755252004e-03 - - 1.3034050166606903e-01 -2.9230359941720963e-02 - <_> - - 0 -1 3228 6.2912302382756025e-05 - - -5.3911529481410980e-02 8.9420966804027557e-02 - <_> - - 0 -1 3229 7.9537890851497650e-03 - - 2.9220320284366608e-02 -1.6147419810295105e-01 - <_> - - 0 -1 3230 2.7854310348629951e-02 - - 8.1461891531944275e-03 -5.0107979774475098e-01 - <_> - - 0 -1 3231 -3.0726810917258263e-02 - - -3.9195880293846130e-01 6.9215041585266590e-03 - <_> - - 0 -1 3232 -3.5664699971675873e-02 - - -7.5857192277908325e-01 5.3641172125935555e-03 - <_> - - 0 -1 3233 3.6027681082487106e-02 - - -1.9103139638900757e-02 2.4392929673194885e-01 - <_> - - 0 -1 3234 6.5820151939988136e-04 - - -8.8687792420387268e-02 5.6508339941501617e-02 - <_> - - 0 -1 3235 -1.2858919799327850e-01 - - -1.3470490276813507e-01 1.5026190318167210e-02 - <_> - - 0 -1 3236 -2.5442369282245636e-02 - - -1.9021469354629517e-01 2.1260490640997887e-02 - <_> - - 0 -1 3237 5.1264330744743347e-02 - - -3.6050491034984589e-03 3.7001758813858032e-01 - <_> - - 0 -1 3238 3.2650150358676910e-02 - - -1.3591149821877480e-02 3.2766878604888916e-01 - <_> - - 0 -1 3239 5.5878241546452045e-03 - - -8.4945466369390488e-03 8.9727967977523804e-02 - <_> - - 0 -1 3240 -4.5875091105699539e-02 - - 4.1267889738082886e-01 -9.8934909328818321e-03 - <_> - - 0 -1 3241 5.4674488492310047e-03 - - -3.0802270397543907e-02 6.0756050050258636e-02 - <_> - - 0 -1 3242 1.0691279917955399e-01 - - -3.0546620488166809e-02 1.4703939855098724e-01 - <_> - - 0 -1 3243 5.8234319090843201e-02 - - 1.7207229975610971e-03 -6.0017997026443481e-01 - <_> - - 0 -1 3244 5.4181519895792007e-02 - - 1.1113340035080910e-02 -4.2601078748703003e-01 - <_> - - 0 -1 3245 1.9892099499702454e-01 - - 1.5127729857340455e-03 -6.6665178537368774e-01 - <_> - - 0 -1 3246 -8.3669811487197876e-02 - - -1.5974959731101990e-01 2.5830730795860291e-02 - <_> - - 0 -1 3247 -3.8393560796976089e-02 - - -4.1582900285720825e-01 9.7704501822590828e-03 - <_> - - 0 -1 3248 5.7619191706180573e-02 - - 9.3507859855890274e-03 -4.1870141029357910e-01 - <_> - - 0 -1 3249 4.4033560901880264e-02 - - -4.6378269791603088e-02 9.1974459588527679e-02 - <_> - - 0 -1 3250 2.6608958840370178e-01 - - 1.0085210204124451e-02 -3.8973841071128845e-01 - <_> - - 0 -1 3251 -5.3618479520082474e-02 - - -5.0888961553573608e-01 4.0682330727577209e-03 - <_> - - 0 -1 3252 -6.6047519794665277e-05 - - 6.9126643240451813e-02 -5.9194508939981461e-02 - <_> - - 0 -1 3253 5.5685410188743845e-05 - - -4.0055848658084869e-02 5.4304640740156174e-02 - <_> - - 0 -1 3254 -5.3049330745125189e-05 - - 7.3174417018890381e-02 -5.9858329594135284e-02 - <_> - - 0 -1 3255 -1.2469390407204628e-02 - - -3.1522521376609802e-01 1.1735130101442337e-02 - <_> - - 0 -1 3256 -9.2733606696128845e-02 - - 3.2328981161117554e-01 -1.2764150276780128e-02 - <_> - - 0 -1 3257 5.9549742937088013e-01 - - 8.3142714574933052e-03 -5.6721991300582886e-01 - <_> - - 0 -1 3258 5.3787451982498169e-01 - - -1.4138909988105297e-02 3.2671380043029785e-01 - <_> - - 0 -1 3259 -1.9027920067310333e-01 - - -6.6162157058715820e-01 7.4805710464715958e-03 - <_> - - 0 -1 3260 6.7436046898365021e-02 - - 5.3405929356813431e-03 -5.7537007331848145e-01 - <_> - - 0 -1 3261 -1.7849049763754010e-03 - - 3.4301608800888062e-02 -1.2449859827756882e-01 - <_> - - 0 -1 3262 -1.7916489392518997e-02 - - 2.1311169862747192e-01 -2.1878639236092567e-02 - <_> - - 0 -1 3263 3.4813389647752047e-03 - - 2.6820680126547813e-02 -1.0166029632091522e-01 - <_> - - 0 -1 3264 1.6392209799960256e-03 - - -2.2629670798778534e-02 1.6795350611209869e-01 - <_> - - 0 -1 3265 5.8717228966997936e-05 - - -9.6914820373058319e-02 5.4079819470643997e-02 - <_> - - 0 -1 3266 -1.1430910089984536e-03 - - -9.1304652392864227e-02 4.7841008752584457e-02 - <_> - - 0 -1 3267 -1.2747140228748322e-01 - - 1.2315750122070312e-01 -3.9322629570960999e-02 - <_> - - 0 -1 3268 5.0409889809088781e-05 - - -4.6518798917531967e-02 9.3584999442100525e-02 - <_> - - 0 -1 3269 -7.7158221974968910e-03 - - -6.5466707944869995e-01 3.9967028424143791e-03 - <_> - - 0 -1 3270 2.7107769710710272e-05 - - -6.4025022089481354e-02 6.3265442848205566e-02 - <_> - - 0 -1 3271 1.5383179998025298e-03 - - 2.2635150700807571e-02 -1.9351179897785187e-01 - <_> - - 0 -1 3272 -6.4936917624436319e-05 - - 5.7882208377122879e-02 -7.3858819901943207e-02 - <_> - - 0 -1 3273 1.3653080165386200e-01 - - -1.4967570081353188e-02 2.6669740676879883e-01 - <_> - - 0 -1 3274 1.8993720412254333e-01 - - 1.2506790459156036e-02 -3.5344779491424561e-01 - <_> - - 0 -1 3275 3.1455919146537781e-02 - - 1.8380979076027870e-02 -6.0388348996639252e-02 - <_> - - 0 -1 3276 -2.6903549209237099e-02 - - -2.2182409465312958e-01 1.8634779378771782e-02 - <_> - - 0 -1 3277 -2.5814530253410339e-01 - - -8.0185538530349731e-01 3.8440190837718546e-04 - <_> - - 0 -1 3278 1.5139740705490112e-01 - - 2.6706179603934288e-02 -1.5360879898071289e-01 - <_> - - 0 -1 3279 4.4095158576965332e-02 - - 4.9483109265565872e-02 -1.3220359571278095e-02 - <_> - - 0 -1 3280 1.7376670148223639e-03 - - -2.9610499739646912e-02 1.2741160392761230e-01 - <_> - - 0 -1 3281 6.7472518421709538e-03 - - 3.6909829825162888e-02 -1.8634669482707977e-01 - <_> - - 0 -1 3282 -2.7132511138916016e-01 - - 4.3453308939933777e-01 -9.0847145766019821e-03 - <_> - - 0 -1 3283 4.7428919933736324e-03 - - 1.6645729541778564e-02 -9.9810160696506500e-02 - <_> - - 0 -1 3284 9.8173134028911591e-03 - - -5.5774748325347900e-02 7.1195892989635468e-02 - <_> - - 0 -1 3285 1.1679739691317081e-03 - - -6.7695029079914093e-02 4.1236151009798050e-02 - <_> - - 0 -1 3286 -3.1285739969462156e-03 - - 7.9346306622028351e-02 -6.4487002789974213e-02 - <_> - - 0 -1 3287 -2.1147250663489103e-03 - - -1.0483580082654953e-01 1.4968249946832657e-02 - <_> - - 0 -1 3288 -1.7796000465750694e-03 - - 2.8925609588623047e-01 -1.3443579897284508e-02 - <_> - - 0 -1 3289 -2.1853840351104736e-01 - - -5.6218802928924561e-01 2.4572419933974743e-03 - <_> - - 0 -1 3290 -5.4242029786109924e-02 - - -2.1208059787750244e-01 1.9283739849925041e-02 - <_> - - 0 -1 3291 2.2505840752273798e-03 - - 8.7050450965762138e-03 -4.6989489346742630e-02 - <_> - - 0 -1 3292 2.7368739247322083e-02 - - 5.3823711350560188e-03 -7.3394852876663208e-01 - <_> - - 0 -1 3293 -1.7120830714702606e-02 - - 1.7836299538612366e-01 -7.9886056482791901e-03 - <_> - - 0 -1 3294 5.8321221731603146e-03 - - 1.9390260800719261e-02 -2.0578180253505707e-01 - <_> - - 0 -1 3295 -6.9258757866919041e-04 - - 5.2536159753799438e-02 -3.4893590956926346e-02 - <_> - - 0 -1 3296 2.1873079240322113e-03 - - -3.0892930924892426e-02 1.1824580281972885e-01 - <_> - - 0 -1 3297 -2.6870400179177523e-03 - - -4.7888439148664474e-02 1.0966289788484573e-02 - <_> - - 0 -1 3298 1.7761799972504377e-03 - - 2.8323309496045113e-02 -1.3571000099182129e-01 - <_> - - 0 -1 3299 2.6876769959926605e-02 - - 1.0936670005321503e-02 -1.3214470446109772e-01 - <_> - - 0 -1 3300 -3.9743751287460327e-02 - - -2.7749490737915039e-01 1.4792799949645996e-02 - <_> - - 0 -1 3301 5.1912020891904831e-02 - - -3.0621079728007317e-02 1.3863949477672577e-01 - <_> - - 0 -1 3302 -4.9659938667900860e-05 - - 6.5223008394241333e-02 -6.1120528727769852e-02 - <_> - - 0 -1 3303 2.0899269729852676e-02 - - 1.0013979859650135e-02 -3.7899270653724670e-01 - <_> - - 0 -1 3304 3.4640848636627197e-02 - - -2.3631630465388298e-02 1.6691960394382477e-01 - <_> - - 0 -1 3305 2.8383019380271435e-03 - - 2.2854080423712730e-02 -5.9783868491649628e-02 - <_> - - 0 -1 3306 2.1739569492638111e-03 - - -1.8679669126868248e-02 1.9977539777755737e-01 - <_> - - 0 -1 3307 -1.5048719942569733e-02 - - -3.1850379705429077e-01 3.2470070291310549e-03 - <_> - - 0 -1 3308 -7.0679760538041592e-03 - - -3.4946501255035400e-01 1.1351609602570534e-02 - <_> - - 0 -1 3309 2.0126479864120483e-01 - - -1.5343960374593735e-02 2.7069568634033203e-01 - <_> - - 0 -1 3310 -4.5434191823005676e-02 - - -1.5440119802951813e-01 2.6735989376902580e-02 - <_> - - 0 -1 3311 5.0224931328557432e-05 - - -4.5412018895149231e-02 5.8358419686555862e-02 - <_> - - 0 -1 3312 2.8120330534875393e-03 - - -3.5226300358772278e-02 1.2060999870300293e-01 - <_> - - 0 -1 3313 1.0989969968795776e-01 - - -8.2655288279056549e-03 2.7113300561904907e-01 - <_> - - 0 -1 3314 3.5002671182155609e-02 - - 4.1824929416179657e-02 -1.4443680644035339e-01 - <_> - - 0 -1 3315 5.6986298412084579e-02 - - -4.4864691793918610e-02 9.4764657318592072e-02 - <_> - - 0 -1 3316 -1.9248030148446560e-03 - - 4.3857198208570480e-02 -1.1556690186262131e-01 - <_> - - 0 -1 3317 3.6413230001926422e-02 - - -2.5924969464540482e-02 8.7799377739429474e-02 - <_> - - 0 -1 3318 4.9817138351500034e-03 - - -6.2499199062585831e-02 6.2983013689517975e-02 - <_> - - 0 -1 3319 -1.5732439234852791e-02 - - 1.0918200016021729e-01 -3.5442460328340530e-02 - <_> - - 0 -1 3320 -3.2386161386966705e-02 - - -6.1410897970199585e-01 6.1990139074623585e-03 - <_> - - 0 -1 3321 1.9163029268383980e-02 - - -3.0063120648264885e-03 4.8029029369354248e-01 - <_> - - 0 -1 3322 -6.6093212808482349e-05 - - 5.7336781173944473e-02 -7.1615733206272125e-02 - <_> - - 0 -1 3323 1.1779610067605972e-03 - - 4.7181140631437302e-02 -9.4607576727867126e-02 - <_> - - 0 -1 3324 -1.4855359680950642e-02 - - -1.3877260684967041e-01 3.3843901008367538e-02 - <_> - - 0 -1 3325 -2.3859990760684013e-02 - - 1.9980570673942566e-01 -1.2243060395121574e-02 - <_> - - 0 -1 3326 -7.8580729663372040e-02 - - -4.9618101119995117e-01 9.5836250111460686e-03 - <_> - - 0 -1 3327 -2.8969749808311462e-02 - - 2.0147210359573364e-01 -2.1185049787163734e-02 - <_> - - 0 -1 3328 4.5099250972270966e-02 - - 7.2327218949794769e-03 -5.7577252388000488e-01 - <_> - - 0 -1 3329 3.9302468299865723e-02 - - 2.5572910904884338e-02 -1.4938560128211975e-01 - <_> - - 0 -1 3330 3.8417819887399673e-02 - - 4.3327999301254749e-03 -8.4697937965393066e-01 - <_> - - 0 -1 3331 1.5752380713820457e-02 - - 2.1558489650487900e-02 -9.4584867358207703e-02 - <_> - - 0 -1 3332 6.5488961990922689e-04 - - -1.1371400207281113e-01 3.4283000975847244e-02 - <_> - - 0 -1 3333 6.0493252240121365e-03 - - -1.5399529598653316e-02 1.0828500241041183e-01 - <_> - - 0 -1 3334 3.8006659597158432e-02 - - 8.7194433435797691e-03 -4.5662951469421387e-01 - <_> - - 0 -1 3335 2.2284449078142643e-03 - - -5.4057799279689789e-02 2.0597549155354500e-02 - <_> - - 0 -1 3336 -1.1698610149323940e-02 - - 1.8344320356845856e-01 -2.3553410544991493e-02 - <_> - - 0 -1 3337 -2.3577509447932243e-02 - - -3.3778700232505798e-01 4.2076371610164642e-03 - <_> - - 0 -1 3338 -1.7685960046947002e-03 - - -1.0340850055217743e-01 3.9750009775161743e-02 - <_> - - 0 -1 3339 -6.2674082815647125e-02 - - 2.5634589791297913e-01 -2.6633420493453741e-03 - <_> - - 0 -1 3340 4.9983179196715355e-03 - - -5.9610750526189804e-02 6.8351902067661285e-02 - <_> - - 0 -1 3341 -1.3796079903841019e-02 - - -1.2925280630588531e-01 1.3147160410881042e-02 - <_> - - 0 -1 3342 7.3155229911208153e-03 - - 2.3670859634876251e-02 -1.7314620316028595e-01 - <_> - - 0 -1 3343 1.6057699918746948e-02 - - 2.1099910140037537e-02 -3.6534700542688370e-02 - <_> - - 0 -1 3344 -1.3640339672565460e-01 - - 3.2520669698715210e-01 -1.2592249549925327e-02 - <_> - - 0 -1 3345 -4.3760128319263458e-03 - - -6.8926952779293060e-02 1.2655669823288918e-02 - <_> - - 0 -1 3346 -2.5193709880113602e-02 - - 6.3607120513916016e-01 -6.9624311290681362e-03 - <_> - - 0 -1 3347 -9.9254563450813293e-02 - - -1.6383069753646851e-01 4.0242899209260941e-02 - <_> - - 0 -1 3348 -4.1403169743716717e-03 - - 4.5324161648750305e-02 -9.0439721941947937e-02 - <_> - - 0 -1 3349 -9.2972591519355774e-03 - - 7.3006376624107361e-02 -2.1570960059762001e-02 - <_> - - 0 -1 3350 -6.5849390812218189e-03 - - -1.4133420586585999e-01 3.4721940755844116e-02 - <_> - - 0 -1 3351 8.2593657076358795e-02 - - 2.2461370099335909e-03 -3.3250170946121216e-01 - <_> - - 0 -1 3352 4.4785510748624802e-02 - - -1.6393229365348816e-02 3.1968909502029419e-01 - <_> - - 0 -1 3353 1.4941610395908356e-02 - - -1.3618029654026031e-02 9.1183677315711975e-02 - <_> - - 0 -1 3354 -4.8578871064819396e-04 - - 4.5027341693639755e-02 -9.9143527448177338e-02 - <_> - - 0 -1 3355 -1.0591340251266956e-03 - - 4.3794080615043640e-02 -4.6322930604219437e-02 - <_> - - 0 -1 3356 -1.2409189715981483e-02 - - -1.1891479790210724e-01 4.1725698858499527e-02 - <_> - - 0 -1 3357 -2.0622629672288895e-03 - - 1.3315789401531219e-01 -2.3993510752916336e-02 - <_> - - 0 -1 3358 8.8945101015269756e-04 - - -3.2941568642854691e-02 1.3120089471340179e-01 - <_> - - 0 -1 3359 -1.6302269650623202e-03 - - -5.3911749273538589e-02 1.4448829926550388e-02 - <_> - - 0 -1 3360 7.9654958099126816e-03 - - 1.4407279901206493e-02 -2.6187309622764587e-01 - <_> - - 0 -1 3361 -6.1501268646679819e-05 - - 3.3002119511365891e-02 -2.9767390340566635e-02 - <_> - - 0 -1 3362 -2.0129390060901642e-01 - - -4.9312359094619751e-01 7.3236711323261261e-03 - <_> - - 0 -1 3363 1.2285460252314806e-03 - - 3.4660179167985916e-02 -9.4074666500091553e-02 - <_> - - 0 -1 3364 1.0491379536688328e-02 - - -3.8984928280115128e-02 1.2683519721031189e-01 - - <_> - - <_> - 8 4 4 4 -1. - <_> - 8 4 4 2 2. - 1 - <_> - - <_> - 3 0 12 7 -1. - <_> - 6 0 6 7 2. - <_> - - <_> - 3 5 12 9 -1. - <_> - 3 8 12 3 3. - <_> - - <_> - 6 0 6 8 -1. - <_> - 6 0 3 8 2. - <_> - - <_> - 3 8 12 4 -1. - <_> - 3 10 12 2 2. - <_> - - <_> - 10 1 3 8 -1. - <_> - 10 1 3 4 2. - 1 - <_> - - <_> - 8 1 8 3 -1. - <_> - 8 1 4 3 2. - 1 - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - <_> - - <_> - 5 6 11 9 -1. - <_> - 5 9 11 3 3. - <_> - - <_> - 7 1 2 1 -1. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 1 2 1 -1. - <_> - 9 1 1 1 2. - <_> - - <_> - 4 0 9 7 -1. - <_> - 7 0 3 7 3. - <_> - - <_> - 3 7 12 8 -1. - <_> - 3 9 12 4 2. - <_> - - <_> - 2 0 14 14 -1. - <_> - 9 0 7 14 2. - <_> - - <_> - 3 4 12 9 -1. - <_> - 3 7 12 3 3. - <_> - - <_> - 5 3 6 1 -1. - <_> - 8 3 3 1 2. - <_> - - <_> - 9 2 6 4 -1. - <_> - 9 2 3 4 2. - 1 - <_> - - <_> - 9 2 5 6 -1. - <_> - 9 2 5 3 2. - 1 - <_> - - <_> - 10 0 4 9 -1. - <_> - 7 3 4 3 3. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 10 2 4 4 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 2 6 14 9 -1. - <_> - 2 9 14 3 3. - <_> - - <_> - 9 0 5 3 -1. - <_> - 9 1 5 1 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 6 0 12 14 -1. - <_> - 9 0 6 14 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 14 0 4 14 -1. - <_> - 14 7 4 7 2. - <_> - - <_> - 4 1 10 2 -1. - <_> - 4 1 5 1 2. - <_> - 9 2 5 1 2. - <_> - - <_> - 2 9 14 4 -1. - <_> - 2 11 14 2 2. - <_> - - <_> - 2 4 14 9 -1. - <_> - 2 7 14 3 3. - <_> - - <_> - 14 0 4 12 -1. - <_> - 14 6 4 6 2. - <_> - - <_> - 0 0 4 12 -1. - <_> - 0 6 4 6 2. - <_> - - <_> - 11 1 3 3 -1. - <_> - 11 2 3 1 3. - <_> - - <_> - 6 3 4 2 -1. - <_> - 6 3 2 1 2. - <_> - 8 4 2 1 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 7 1 4 3 -1. - <_> - 7 2 4 1 3. - <_> - - <_> - 4 1 3 3 -1. - <_> - 4 2 3 1 3. - <_> - - <_> - 10 1 8 14 -1. - <_> - 10 8 8 7 2. - <_> - - <_> - 5 5 8 6 -1. - <_> - 5 8 8 3 2. - <_> - - <_> - 9 0 8 12 -1. - <_> - 11 0 4 12 2. - <_> - - <_> - 4 0 8 10 -1. - <_> - 8 0 4 10 2. - <_> - - <_> - 9 2 2 8 -1. - <_> - 9 2 2 4 2. - 1 - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 10 1 1 2 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 2 5 1 2. - <_> - 9 3 5 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 1 0 8 14 -1. - <_> - 3 0 4 14 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 4 4 10 9 -1. - <_> - 4 7 10 3 3. - <_> - - <_> - 1 0 8 3 -1. - <_> - 1 1 8 1 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 6 0 6 2 2. - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 0 3 1 2. - 1 - <_> - - <_> - 2 6 14 9 -1. - <_> - 2 9 14 3 3. - <_> - - <_> - 4 0 10 7 -1. - <_> - 9 0 5 7 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 1 9 16 6 -1. - <_> - 1 11 16 2 3. - <_> - - <_> - 1 9 14 4 -1. - <_> - 1 11 14 2 2. - <_> - - <_> - 5 11 8 4 -1. - <_> - 5 13 8 2 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 0 4 2 2. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 0 1 16 2 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 10 0 6 7 -1. - <_> - 10 0 3 7 2. - 1 - <_> - - <_> - 8 0 7 6 -1. - <_> - 8 0 7 3 2. - 1 - <_> - - <_> - 12 9 6 4 -1. - <_> - 12 9 3 4 2. - <_> - - <_> - 0 9 6 4 -1. - <_> - 3 9 3 4 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 7 1 4 1 3. - <_> - - <_> - 4 1 8 3 -1. - <_> - 4 2 8 1 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 6 2 4 2. - 1 - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 6 2 4 2. - 1 - <_> - - <_> - 7 5 4 4 -1. - <_> - 6 6 4 2 2. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 6 0 6 1 -1. - <_> - 6 0 3 1 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - <_> - - <_> - 5 6 10 9 -1. - <_> - 5 9 10 3 3. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 15 10 3 5 -1. - <_> - 16 10 1 5 3. - <_> - - <_> - 0 10 3 5 -1. - <_> - 1 10 1 5 3. - <_> - - <_> - 1 11 16 4 -1. - <_> - 1 13 16 2 2. - <_> - - <_> - 0 10 3 3 -1. - <_> - 0 11 3 1 3. - <_> - - <_> - 3 7 12 8 -1. - <_> - 3 9 12 4 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 0 8 1 -1. - <_> - 7 0 4 1 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 4 1 12 4 -1. - <_> - 7 1 6 4 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 12 0 2 12 -1. - <_> - 12 0 2 6 2. - 1 - <_> - - <_> - 1 0 12 5 -1. - <_> - 4 0 6 5 2. - <_> - - <_> - 5 0 12 7 -1. - <_> - 8 0 6 7 2. - <_> - - <_> - 1 0 12 7 -1. - <_> - 4 0 6 7 2. - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 1 6 16 8 -1. - <_> - 1 8 16 4 2. - <_> - - <_> - 3 5 12 8 -1. - <_> - 3 7 12 4 2. - <_> - - <_> - 3 4 12 4 -1. - <_> - 3 6 12 2 2. - <_> - - <_> - 1 0 8 11 -1. - <_> - 3 0 4 11 2. - <_> - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - <_> - - <_> - 7 1 1 3 -1. - <_> - 6 2 1 1 3. - 1 - <_> - - <_> - 5 12 12 2 -1. - <_> - 5 12 6 2 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 6 0 4 5 3. - <_> - - <_> - 1 2 17 2 -1. - <_> - 1 3 17 1 2. - <_> - - <_> - 8 4 4 4 -1. - <_> - 8 4 4 2 2. - 1 - <_> - - <_> - 10 1 2 11 -1. - <_> - 10 1 1 11 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 0 2 2 2. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 0 2 2 2. - 1 - <_> - - <_> - 10 8 8 7 -1. - <_> - 10 8 4 7 2. - <_> - - <_> - 0 9 8 5 -1. - <_> - 4 9 4 5 2. - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 2 6 14 6 -1. - <_> - 2 8 14 2 3. - <_> - - <_> - 3 9 12 4 -1. - <_> - 3 11 12 2 2. - <_> - - <_> - 0 1 3 14 -1. - <_> - 0 8 3 7 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 2 1 14 14 -1. - <_> - 9 1 7 14 2. - <_> - - <_> - 9 1 2 9 -1. - <_> - 6 4 2 3 3. - 1 - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 1 6 16 9 -1. - <_> - 1 9 16 3 3. - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 2 2 1 2. - 1 - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 6 8 3 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 5 2. - <_> - 0 5 9 5 2. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 1 10 2. - <_> - - <_> - 6 0 2 4 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 3 0 9 9 -1. - <_> - 6 0 3 9 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 3 12 12 2 -1. - <_> - 3 13 12 1 2. - <_> - - <_> - 7 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 12 0 3 12 -1. - <_> - 12 0 3 6 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 6 0 6 3 2. - 1 - <_> - - <_> - 2 9 15 6 -1. - <_> - 2 11 15 2 3. - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 3 1 12 2 -1. - <_> - 9 1 6 1 2. - <_> - 3 2 6 1 2. - <_> - - <_> - 6 1 3 3 -1. - <_> - 7 2 1 1 9. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 0 7 9 2 2. - <_> - 9 9 9 2 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 9 1 9 7 2. - <_> - 0 8 9 7 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 0 4 3 2. - <_> - - <_> - 8 1 1 2 -1. - <_> - 8 2 1 1 2. - <_> - - <_> - 17 2 1 12 -1. - <_> - 17 2 1 6 2. - 1 - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 17 2 1 12 -1. - <_> - 17 2 1 6 2. - 1 - <_> - - <_> - 2 1 14 8 -1. - <_> - 2 3 14 4 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 1 2 12 1 -1. - <_> - 1 2 6 1 2. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 9 5 2 1 2. - <_> - 7 6 2 1 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 5 0 13 12 -1. - <_> - 5 3 13 6 2. - <_> - - <_> - 5 6 8 4 -1. - <_> - 5 8 8 2 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 9 0 2 10 2. - <_> - - <_> - 1 0 9 12 -1. - <_> - 4 0 3 12 3. - <_> - - <_> - 4 4 14 10 -1. - <_> - 11 4 7 5 2. - <_> - 4 9 7 5 2. - <_> - - <_> - 0 4 12 10 -1. - <_> - 0 4 6 5 2. - <_> - 6 9 6 5 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 1 11 15 2 -1. - <_> - 1 12 15 1 2. - <_> - - <_> - 3 0 14 2 -1. - <_> - 3 1 14 1 2. - <_> - - <_> - 3 0 7 4 -1. - <_> - 3 2 7 2 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 6 12 4 2. - <_> - - <_> - 2 1 13 12 -1. - <_> - 2 5 13 4 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 6 0 6 4 2. - <_> - - <_> - 7 0 4 7 -1. - <_> - 9 0 2 7 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 2 7 14 6 -1. - <_> - 2 9 14 2 3. - <_> - - <_> - 11 1 7 10 -1. - <_> - 11 6 7 5 2. - <_> - - <_> - 4 0 10 3 -1. - <_> - 9 0 5 3 2. - <_> - - <_> - 0 1 18 2 -1. - <_> - 9 1 9 1 2. - <_> - 0 2 9 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 14 4 2 7 -1. - <_> - 14 4 1 7 2. - 1 - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 4 9 8 4 -1. - <_> - 8 9 4 4 2. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 3 0 12 9 -1. - <_> - 3 3 12 3 3. - <_> - - <_> - 14 1 4 12 -1. - <_> - 14 7 4 6 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 7 0 4 6 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 0 0 18 8 -1. - <_> - 0 0 9 4 2. - <_> - 9 4 9 4 2. - <_> - - <_> - 14 1 4 10 -1. - <_> - 14 6 4 5 2. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 6 4 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 3 0 12 12 -1. - <_> - 3 6 12 6 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 12 1 6 14 -1. - <_> - 12 8 6 7 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 6 0 12 10 -1. - <_> - 10 0 4 10 3. - <_> - - <_> - 0 0 12 10 -1. - <_> - 4 0 4 10 3. - <_> - - <_> - 3 13 12 2 -1. - <_> - 3 14 12 1 2. - <_> - - <_> - 3 8 4 6 -1. - <_> - 3 10 4 2 3. - <_> - - <_> - 13 11 4 4 -1. - <_> - 14 11 2 4 2. - <_> - - <_> - 0 1 5 14 -1. - <_> - 0 8 5 7 2. - <_> - - <_> - 10 5 2 1 -1. - <_> - 10 5 1 1 2. - <_> - - <_> - 6 5 2 1 -1. - <_> - 7 5 1 1 2. - <_> - - <_> - 1 11 17 4 -1. - <_> - 1 12 17 2 2. - <_> - - <_> - 7 0 3 3 -1. - <_> - 8 1 1 1 9. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 2 2 1 2. - <_> - - <_> - 1 11 4 4 -1. - <_> - 2 11 2 4 2. - <_> - - <_> - 8 3 10 8 -1. - <_> - 8 3 5 8 2. - <_> - - <_> - 0 3 10 8 -1. - <_> - 5 3 5 8 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 4 0 12 2 -1. - <_> - 8 0 4 2 3. - <_> - - <_> - 1 5 16 10 -1. - <_> - 1 5 8 5 2. - <_> - 9 10 8 5 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 12 6 1 4 2. - 1 - <_> - - <_> - 6 6 4 2 -1. - <_> - 6 6 4 1 2. - 1 - <_> - - <_> - 10 8 6 4 -1. - <_> - 13 8 3 2 2. - <_> - 10 10 3 2 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 3 0 11 2 -1. - <_> - 3 0 11 1 2. - 1 - <_> - - <_> - 8 6 10 8 -1. - <_> - 13 6 5 4 2. - <_> - 8 10 5 4 2. - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 7 4 8 3 -1. - <_> - 9 6 4 3 2. - 1 - <_> - - <_> - 13 9 3 6 -1. - <_> - 13 11 3 2 3. - <_> - - <_> - 2 9 3 6 -1. - <_> - 2 11 3 2 3. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 0 10 1 3 -1. - <_> - 0 11 1 1 3. - <_> - - <_> - 11 1 6 6 -1. - <_> - 11 1 3 6 2. - <_> - - <_> - 3 6 2 1 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 1 7 8 4 -1. - <_> - 1 7 4 2 2. - <_> - 5 9 4 2 2. - <_> - - <_> - 8 8 4 2 -1. - <_> - 8 9 4 1 2. - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 2 4 3 2. - 1 - <_> - - <_> - 2 6 14 8 -1. - <_> - 2 8 14 4 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 7 0 4 3 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 8 3 3 6 -1. - <_> - 8 3 3 3 2. - 1 - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 8 6 7 -1. - <_> - 3 8 3 7 2. - <_> - - <_> - 4 1 10 2 -1. - <_> - 9 1 5 1 2. - <_> - 4 2 5 1 2. - <_> - - <_> - 3 0 6 6 -1. - <_> - 3 3 6 3 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 3 10 12 1 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 1 9. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 3 4 1 2. - <_> - 9 4 4 1 2. - <_> - - <_> - 2 0 14 12 -1. - <_> - 9 0 7 6 2. - <_> - 2 6 7 6 2. - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 1 2 2 1 -1. - <_> - 2 2 1 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 8 5 4 5 -1. - <_> - 8 5 2 5 2. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 9 0 4 7 2. - <_> - - <_> - 11 3 1 8 -1. - <_> - 9 5 1 4 2. - 1 - <_> - - <_> - 3 3 12 9 -1. - <_> - 7 6 4 3 9. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 6 1 3 2 -1. - <_> - 6 1 3 1 2. - 1 - <_> - - <_> - 7 9 4 2 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 1 5 14 10 -1. - <_> - 1 5 7 5 2. - <_> - 8 10 7 5 2. - <_> - - <_> - 10 9 3 6 -1. - <_> - 10 11 3 2 3. - <_> - - <_> - 0 5 18 10 -1. - <_> - 0 5 9 5 2. - <_> - 9 10 9 5 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 1 3 1 2. - <_> - - <_> - 5 1 2 5 -1. - <_> - 6 1 1 5 2. - <_> - - <_> - 4 0 12 7 -1. - <_> - 8 0 4 7 3. - <_> - - <_> - 1 0 12 4 -1. - <_> - 4 0 6 4 2. - <_> - - <_> - 12 0 6 14 -1. - <_> - 12 7 6 7 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 5 0 6 5 2. - <_> - - <_> - 12 0 6 14 -1. - <_> - 12 7 6 7 2. - <_> - - <_> - 0 0 6 14 -1. - <_> - 0 7 6 7 2. - <_> - - <_> - 10 9 3 6 -1. - <_> - 10 11 3 2 3. - <_> - - <_> - 5 9 3 6 -1. - <_> - 5 11 3 2 3. - <_> - - <_> - 7 13 6 2 -1. - <_> - 7 14 6 1 2. - <_> - - <_> - 8 2 1 3 -1. - <_> - 7 3 1 1 3. - 1 - <_> - - <_> - 15 3 3 1 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 8 3 2 2. - <_> - - <_> - 2 5 14 9 -1. - <_> - 2 8 14 3 3. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 12 4 3 -1. - <_> - 1 12 2 3 2. - <_> - - <_> - 8 0 8 2 -1. - <_> - 8 1 8 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 7 1 4 12 -1. - <_> - 7 1 2 12 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 10 18 2 3. - <_> - - <_> - 11 0 6 6 -1. - <_> - 11 0 3 6 2. - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 9 6 3 1 2. - <_> - 6 7 3 1 2. - <_> - - <_> - 6 7 5 2 -1. - <_> - 6 8 5 1 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 11 8 3 2 2. - <_> - - <_> - 7 0 1 2 -1. - <_> - 7 1 1 1 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 8 2 2 6 -1. - <_> - 8 2 1 3 2. - <_> - 9 5 1 3 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 6 1 10 4 -1. - <_> - 6 1 10 2 2. - 1 - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 14 7 1 4 3. - 1 - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 13 6 3 4 -1. - <_> - 14 7 1 4 3. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 4 7 4 1 3. - 1 - <_> - - <_> - 10 3 8 3 -1. - <_> - 10 3 4 3 2. - <_> - - <_> - 0 3 8 3 -1. - <_> - 4 3 4 3 2. - <_> - - <_> - 4 2 14 2 -1. - <_> - 4 2 7 2 2. - <_> - - <_> - 0 1 12 4 -1. - <_> - 3 1 6 4 2. - <_> - - <_> - 13 1 4 10 -1. - <_> - 13 6 4 5 2. - <_> - - <_> - 0 2 14 2 -1. - <_> - 7 2 7 2 2. - <_> - - <_> - 4 12 12 3 -1. - <_> - 8 12 4 3 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 7 6 1 2 2. - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 4 8 3 1 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 2 2 14 6 -1. - <_> - 2 4 14 2 3. - <_> - - <_> - 9 2 1 3 -1. - <_> - 8 3 1 1 3. - 1 - <_> - - <_> - 0 1 6 10 -1. - <_> - 0 6 6 5 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 9 4 6 1 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 0 9 3 2. - <_> - 9 3 9 3 2. - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 5 10 3 2. - <_> - - <_> - 0 5 9 3 -1. - <_> - 3 5 3 3 3. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 3 2 1 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 2 6 4 -1. - <_> - 9 2 3 4 2. - 1 - <_> - - <_> - 7 2 3 3 -1. - <_> - 8 3 1 1 9. - <_> - - <_> - 7 4 4 6 -1. - <_> - 5 6 4 2 3. - 1 - <_> - - <_> - 4 2 14 8 -1. - <_> - 4 4 14 4 2. - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 12 7 6 7 -1. - <_> - 12 7 3 7 2. - <_> - - <_> - 2 9 8 4 -1. - <_> - 2 11 8 2 2. - <_> - - <_> - 13 6 1 6 -1. - <_> - 13 8 1 2 3. - <_> - - <_> - 4 6 1 6 -1. - <_> - 4 8 1 2 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 6 0 12 1 -1. - <_> - 9 0 6 1 2. - <_> - - <_> - 2 7 14 8 -1. - <_> - 2 9 14 4 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 10 0 6 8 -1. - <_> - 10 4 6 4 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 14 5 4 10 -1. - <_> - 14 10 4 5 2. - <_> - - <_> - 0 5 4 10 -1. - <_> - 0 10 4 5 2. - <_> - - <_> - 12 8 6 6 -1. - <_> - 12 8 3 6 2. - <_> - - <_> - 0 8 6 6 -1. - <_> - 3 8 3 6 2. - <_> - - <_> - 10 0 6 6 -1. - <_> - 10 3 6 3 2. - <_> - - <_> - 2 0 6 6 -1. - <_> - 2 3 6 3 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 2 10 14 2 -1. - <_> - 2 11 14 1 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 9 7 3 2 3. - 1 - <_> - - <_> - 1 4 16 1 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 10 8 4 4 -1. - <_> - 10 9 4 2 2. - <_> - - <_> - 4 8 4 4 -1. - <_> - 4 9 4 2 2. - <_> - - <_> - 3 6 12 8 -1. - <_> - 9 6 6 4 2. - <_> - 3 10 6 4 2. - <_> - - <_> - 3 12 9 3 -1. - <_> - 6 12 3 3 3. - <_> - - <_> - 11 4 6 4 -1. - <_> - 13 6 2 4 3. - 1 - <_> - - <_> - 0 0 3 12 -1. - <_> - 0 6 3 6 2. - <_> - - <_> - 4 0 10 9 -1. - <_> - 4 0 5 9 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 6 9 8 5 -1. - <_> - 6 9 4 5 2. - <_> - - <_> - 5 3 3 5 -1. - <_> - 6 4 1 5 3. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 14 18 1 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 4 1 6 1 2. - <_> - - <_> - 15 4 3 3 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - <_> - - <_> - 11 4 6 4 -1. - <_> - 13 6 2 4 3. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 1 1 16 11 -1. - <_> - 5 1 8 11 2. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 4 3 10 8 -1. - <_> - 9 3 5 4 2. - <_> - 4 7 5 4 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 7 18 2 3. - <_> - - <_> - 0 7 1 3 -1. - <_> - 0 8 1 1 3. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 6 8 3 3 -1. - <_> - 5 9 3 1 3. - 1 - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 13 8 1 2. - <_> - 9 14 8 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 12 9 2 2 -1. - <_> - 13 9 1 1 2. - <_> - 12 10 1 1 2. - <_> - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 0 8 9 -1. - <_> - 7 0 4 9 2. - <_> - - <_> - 11 2 2 1 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 2 2 1 -1. - <_> - 6 2 1 1 2. - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 4 9 8 6 -1. - <_> - 8 9 4 6 2. - <_> - - <_> - 8 1 4 10 -1. - <_> - 8 1 2 10 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 17 4 1 2 -1. - <_> - 17 5 1 1 2. - <_> - - <_> - 0 6 10 1 -1. - <_> - 5 6 5 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 3 5 6 5 -1. - <_> - 5 5 2 5 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 7 3 2 2 2. - <_> - 9 5 2 2 2. - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 7 4 5 4 -1. - <_> - 6 5 5 2 2. - 1 - <_> - - <_> - 5 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 0 12 18 3 -1. - <_> - 0 13 18 1 3. - <_> - - <_> - 8 4 2 6 -1. - <_> - 8 4 1 3 2. - <_> - 9 7 1 3 2. - <_> - - <_> - 5 0 9 4 -1. - <_> - 8 0 3 4 3. - <_> - - <_> - 1 12 15 3 -1. - <_> - 1 13 15 1 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 1 11 3 1 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 12 7 6 1 -1. - <_> - 12 7 3 1 2. - 1 - <_> - - <_> - 6 7 1 6 -1. - <_> - 6 7 1 3 2. - 1 - <_> - - <_> - 7 7 4 6 -1. - <_> - 8 7 2 6 2. - <_> - - <_> - 1 8 16 3 -1. - <_> - 1 9 16 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 0 10 2 2. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 9 1 2 2 2. - <_> - 7 3 2 2 2. - <_> - - <_> - 4 9 4 6 -1. - <_> - 4 11 4 2 3. - <_> - - <_> - 5 12 9 2 -1. - <_> - 5 13 9 1 2. - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 5 2 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 0 8 18 2 -1. - <_> - 0 9 18 1 2. - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 8 7 9 7 -1. - <_> - 11 7 3 7 3. - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 8 0 1 2 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 6 0 7 2 -1. - <_> - 6 1 7 1 2. - <_> - - <_> - 1 10 15 4 -1. - <_> - 1 12 15 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 8 3 2 12 -1. - <_> - 8 9 2 6 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 9 2 1 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 8 1 3 1 3. - 1 - <_> - - <_> - 15 1 2 1 -1. - <_> - 15 1 1 1 2. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 6 4 5 2. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 10 0 6 1 -1. - <_> - 10 0 3 1 2. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 8 1 4 2 -1. - <_> - 8 2 4 1 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 6 0 6 1 -1. - <_> - 9 0 3 1 2. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 5 8 8 2 -1. - <_> - 5 9 8 1 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 11 9 3 1 2. - <_> - - <_> - 4 8 3 2 -1. - <_> - 4 9 3 1 2. - <_> - - <_> - 10 2 3 2 -1. - <_> - 10 3 3 1 2. - <_> - - <_> - 2 0 8 2 -1. - <_> - 2 1 8 1 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 9 1 8 3 -1. - <_> - 9 1 4 3 2. - 1 - <_> - - <_> - 8 0 2 6 -1. - <_> - 8 0 1 6 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 0 3 1 2. - 1 - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 0 3 18 12 -1. - <_> - 0 9 18 6 2. - <_> - - <_> - 13 8 3 6 -1. - <_> - 14 10 1 2 9. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 13 9 3 1 -1. - <_> - 14 10 1 1 3. - 1 - <_> - - <_> - 4 0 10 15 -1. - <_> - 9 0 5 15 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 10 2 3 2 -1. - <_> - 10 3 3 1 2. - <_> - - <_> - 5 2 3 2 -1. - <_> - 5 3 3 1 2. - <_> - - <_> - 10 7 1 2 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 6 6 4 -1. - <_> - 6 6 3 2 2. - <_> - 9 8 3 2 2. - <_> - - <_> - 10 7 4 3 -1. - <_> - 11 8 2 3 2. - 1 - <_> - - <_> - 8 7 3 4 -1. - <_> - 7 8 3 2 2. - 1 - <_> - - <_> - 11 9 4 1 -1. - <_> - 11 9 2 1 2. - 1 - <_> - - <_> - 7 7 3 3 -1. - <_> - 6 8 3 1 3. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 2 1 14 2 -1. - <_> - 9 1 7 1 2. - <_> - 2 2 7 1 2. - <_> - - <_> - 9 2 3 1 -1. - <_> - 10 3 1 1 3. - 1 - <_> - - <_> - 9 3 2 8 -1. - <_> - 7 5 2 4 2. - 1 - <_> - - <_> - 5 7 1 4 -1. - <_> - 5 8 1 2 2. - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 5 9 1 3 -1. - <_> - 4 10 1 1 3. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 4 11 1 2 -1. - <_> - 4 11 1 1 2. - 1 - <_> - - <_> - 9 3 2 8 -1. - <_> - 7 5 2 4 2. - 1 - <_> - - <_> - 9 3 8 2 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 6 7 6 3 -1. - <_> - 8 8 2 1 9. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 6 0 6 8 3. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 0 2 9 2. - 1 - <_> - - <_> - 4 0 9 4 -1. - <_> - 4 0 9 2 2. - 1 - <_> - - <_> - 3 13 13 2 -1. - <_> - 3 14 13 1 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 11 9 6 6 -1. - <_> - 13 11 2 2 9. - <_> - - <_> - 1 9 6 6 -1. - <_> - 3 11 2 2 9. - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 1 13 6 2 -1. - <_> - 3 13 2 2 3. - <_> - - <_> - 11 3 5 2 -1. - <_> - 11 4 5 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - <_> - - <_> - 13 0 3 8 -1. - <_> - 14 0 1 8 3. - <_> - - <_> - 1 11 16 4 -1. - <_> - 1 11 8 2 2. - <_> - 9 13 8 2 2. - <_> - - <_> - 13 0 3 8 -1. - <_> - 14 0 1 8 3. - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 12 2 3 13 -1. - <_> - 13 2 1 13 3. - <_> - - <_> - 3 0 3 15 -1. - <_> - 4 0 1 15 3. - <_> - - <_> - 17 1 1 14 -1. - <_> - 17 8 1 7 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 1 5 2 -1. - <_> - 10 2 5 1 2. - <_> - - <_> - 3 1 5 2 -1. - <_> - 3 2 5 1 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 8 3 5 6 -1. - <_> - 6 5 5 2 3. - 1 - <_> - - <_> - 11 4 3 6 -1. - <_> - 12 6 1 2 9. - <_> - - <_> - 8 6 1 8 -1. - <_> - 8 6 1 4 2. - 1 - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 9 16 2 3. - <_> - - <_> - 4 4 3 6 -1. - <_> - 5 6 1 2 9. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - <_> - - <_> - 1 8 16 4 -1. - <_> - 1 8 8 2 2. - <_> - 9 10 8 2 2. - <_> - - <_> - 1 11 17 4 -1. - <_> - 1 12 17 2 2. - <_> - - <_> - 0 13 6 2 -1. - <_> - 0 13 3 1 2. - <_> - 3 14 3 1 2. - <_> - - <_> - 12 6 1 4 -1. - <_> - 12 6 1 2 2. - 1 - <_> - - <_> - 2 0 3 8 -1. - <_> - 3 0 1 8 3. - <_> - - <_> - 0 4 18 6 -1. - <_> - 6 4 6 6 3. - <_> - - <_> - 6 6 4 1 -1. - <_> - 6 6 2 1 2. - 1 - <_> - - <_> - 8 0 6 10 -1. - <_> - 10 0 2 10 3. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 17 9 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 17 9 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 12 7 3 3 -1. - <_> - 12 8 3 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - <_> - - <_> - 1 5 15 4 -1. - <_> - 1 7 15 2 2. - <_> - - <_> - 9 4 4 8 -1. - <_> - 9 6 4 4 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 8 0 1 2 2. - <_> - - <_> - 4 3 10 2 -1. - <_> - 9 3 5 1 2. - <_> - 4 4 5 1 2. - <_> - - <_> - 4 0 6 11 -1. - <_> - 6 0 2 11 3. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 12 12 2 2. - <_> - - <_> - 1 7 12 6 -1. - <_> - 5 9 4 2 9. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 12 8 3 1 3. - <_> - - <_> - 3 7 3 3 -1. - <_> - 3 8 3 1 3. - <_> - - <_> - 5 0 12 15 -1. - <_> - 5 5 12 5 3. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 13 3 2 2 -1. - <_> - 13 4 2 1 2. - <_> - - <_> - 1 3 15 8 -1. - <_> - 1 5 15 4 2. - <_> - - <_> - 9 6 2 3 -1. - <_> - 9 7 2 1 3. - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 5 2 4 4 -1. - <_> - 7 2 2 4 2. - <_> - - <_> - 8 7 4 2 -1. - <_> - 8 8 4 1 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 4 3 8 1 2. - 1 - <_> - - <_> - 2 3 16 10 -1. - <_> - 2 3 8 10 2. - <_> - - <_> - 2 2 12 8 -1. - <_> - 2 4 12 4 2. - <_> - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - <_> - - <_> - 0 4 2 9 -1. - <_> - 0 7 2 3 3. - <_> - - <_> - 4 3 10 8 -1. - <_> - 4 7 10 4 2. - <_> - - <_> - 0 2 4 3 -1. - <_> - 2 2 2 3 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 4 2. - <_> - - <_> - 7 0 1 4 -1. - <_> - 6 1 1 2 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 2 8 14 4 -1. - <_> - 2 10 14 2 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 2 9 4 2 -1. - <_> - 2 9 2 2 2. - 1 - <_> - - <_> - 7 7 8 2 -1. - <_> - 11 7 4 1 2. - <_> - 7 8 4 1 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 11 0 5 10 -1. - <_> - 11 0 5 5 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 7 6 4 3 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - 1 - <_> - - <_> - 6 11 1 2 -1. - <_> - 6 11 1 1 2. - 1 - <_> - - <_> - 3 4 12 6 -1. - <_> - 3 6 12 2 3. - <_> - - <_> - 2 0 4 8 -1. - <_> - 2 4 4 4 2. - <_> - - <_> - 15 0 2 10 -1. - <_> - 15 0 1 10 2. - 1 - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 10 1 2. - 1 - <_> - - <_> - 11 1 4 10 -1. - <_> - 11 1 4 5 2. - 1 - <_> - - <_> - 7 1 10 4 -1. - <_> - 7 1 5 4 2. - 1 - <_> - - <_> - 5 0 9 7 -1. - <_> - 8 0 3 7 3. - <_> - - <_> - 7 2 2 4 -1. - <_> - 8 2 1 4 2. - <_> - - <_> - 3 2 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 5 2 -1. - <_> - 6 7 5 1 2. - 1 - <_> - - <_> - 11 13 4 2 -1. - <_> - 12 13 2 2 2. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 9 0 4 1 2. - <_> - 5 1 4 1 2. - <_> - - <_> - 3 9 6 6 -1. - <_> - 3 9 3 3 2. - <_> - 6 12 3 3 2. - <_> - - <_> - 6 13 9 2 -1. - <_> - 9 13 3 2 3. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 14 10 3 2 -1. - <_> - 15 11 1 2 3. - 1 - <_> - - <_> - 5 0 3 6 -1. - <_> - 5 3 3 3 2. - <_> - - <_> - 4 0 12 8 -1. - <_> - 8 0 4 8 3. - <_> - - <_> - 2 0 12 8 -1. - <_> - 6 0 4 8 3. - <_> - - <_> - 5 0 12 5 -1. - <_> - 8 0 6 5 2. - <_> - - <_> - 1 0 12 5 -1. - <_> - 4 0 6 5 2. - <_> - - <_> - 7 0 4 14 -1. - <_> - 9 0 2 7 2. - <_> - 7 7 2 7 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 0 6 18 4 -1. - <_> - 9 6 9 2 2. - <_> - 0 8 9 2 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 10 1 2 2 2. - 1 - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 17 2 1 2 -1. - <_> - 17 3 1 1 2. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 10 7 1 3 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 1 2 1 4 -1. - <_> - 1 3 1 2 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 9 0 8 6 -1. - <_> - 9 0 8 3 2. - 1 - <_> - - <_> - 12 6 3 4 -1. - <_> - 13 7 1 4 3. - 1 - <_> - - <_> - 3 3 1 3 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 11 7 3 4 -1. - <_> - 12 8 1 4 3. - 1 - <_> - - <_> - 7 7 4 3 -1. - <_> - 6 8 4 1 3. - 1 - <_> - - <_> - 8 8 3 2 -1. - <_> - 8 9 3 1 2. - <_> - - <_> - 3 8 8 2 -1. - <_> - 3 8 4 1 2. - <_> - 7 9 4 1 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 1 11 14 4 -1. - <_> - 8 11 7 4 2. - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 3 13 6 2 -1. - <_> - 5 13 2 2 3. - <_> - - <_> - 1 11 16 2 -1. - <_> - 1 12 16 1 2. - <_> - - <_> - 1 10 16 4 -1. - <_> - 1 12 16 2 2. - <_> - - <_> - 12 13 6 2 -1. - <_> - 14 13 2 2 3. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 6 6 3 2. - <_> - - <_> - 7 12 4 3 -1. - <_> - 8 12 2 3 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 1 6 16 4 -1. - <_> - 1 7 16 2 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 2 2 2 -1. - <_> - 5 2 1 2 2. - <_> - - <_> - 7 0 4 11 -1. - <_> - 7 0 2 11 2. - <_> - - <_> - 8 5 3 3 -1. - <_> - 7 6 3 1 3. - 1 - <_> - - <_> - 14 1 2 14 -1. - <_> - 14 8 2 7 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 7 0 4 2 2. - <_> - - <_> - 1 3 16 7 -1. - <_> - 5 3 8 7 2. - <_> - - <_> - 4 1 9 3 -1. - <_> - 4 2 9 1 3. - <_> - - <_> - 6 2 8 13 -1. - <_> - 6 2 4 13 2. - <_> - - <_> - 4 0 9 1 -1. - <_> - 7 0 3 1 3. - <_> - - <_> - 15 4 3 3 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 8 7 1 2 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 11 8 3 3 -1. - <_> - 11 9 3 1 3. - <_> - - <_> - 3 4 3 3 -1. - <_> - 4 5 1 3 3. - 1 - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 7 0 8 2 -1. - <_> - 11 0 4 1 2. - <_> - 7 1 4 1 2. - <_> - - <_> - 1 6 6 9 -1. - <_> - 3 6 2 9 3. - <_> - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - <_> - - <_> - 5 5 2 2 -1. - <_> - 5 5 1 1 2. - <_> - 6 6 1 1 2. - <_> - - <_> - 14 1 3 14 -1. - <_> - 14 8 3 7 2. - <_> - - <_> - 2 5 6 8 -1. - <_> - 4 5 2 8 3. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 4 1 8 14 -1. - <_> - 8 1 4 14 2. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 4 7 3 7 -1. - <_> - 5 7 1 7 3. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 8 3 10 10 -1. - <_> - 13 3 5 5 2. - <_> - 8 8 5 5 2. - <_> - - <_> - 0 0 8 5 -1. - <_> - 2 0 4 5 2. - <_> - - <_> - 12 8 6 6 -1. - <_> - 12 8 3 6 2. - <_> - - <_> - 0 8 6 6 -1. - <_> - 3 8 3 6 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 5 0 11 4 -1. - <_> - 4 1 11 2 2. - 1 - <_> - - <_> - 2 12 16 2 -1. - <_> - 2 13 16 1 2. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 11 0 4 2 -1. - <_> - 11 0 2 2 2. - 1 - <_> - - <_> - 8 0 3 4 -1. - <_> - 7 1 3 2 2. - 1 - <_> - - <_> - 5 0 8 14 -1. - <_> - 5 0 4 14 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 6 8 3 1 2. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 3 6 12 9 -1. - <_> - 3 6 6 9 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 6 8 1 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 0 9 3 2. - <_> - 9 3 9 3 2. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 5 6 6 2 -1. - <_> - 5 6 6 1 2. - 1 - <_> - - <_> - 12 8 4 3 -1. - <_> - 13 9 2 3 2. - 1 - <_> - - <_> - 0 5 18 8 -1. - <_> - 0 5 9 4 2. - <_> - 9 9 9 4 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 13 0 5 3 -1. - <_> - 12 1 5 1 3. - 1 - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 8 7 2 1 -1. - <_> - 8 7 1 1 2. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 6 7 3 3 -1. - <_> - 5 8 3 1 3. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 12 4 2 6 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 7 5 3 7 -1. - <_> - 8 5 1 7 3. - <_> - - <_> - 7 0 4 11 -1. - <_> - 7 0 2 11 2. - <_> - - <_> - 9 2 1 2 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 3 1 2 2 2. - 1 - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 12 5 6 2 -1. - <_> - 12 6 6 1 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 15 0 3 15 -1. - <_> - 16 0 1 15 3. - <_> - - <_> - 0 0 3 15 -1. - <_> - 1 0 1 15 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 1 2 1 2. - <_> - - <_> - 7 0 2 1 -1. - <_> - 8 0 1 1 2. - <_> - - <_> - 15 1 3 14 -1. - <_> - 15 8 3 7 2. - <_> - - <_> - 0 1 4 12 -1. - <_> - 0 7 4 6 2. - <_> - - <_> - 8 2 10 7 -1. - <_> - 8 2 5 7 2. - <_> - - <_> - 2 0 9 6 -1. - <_> - 2 3 9 3 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 0 5 10 2 -1. - <_> - 5 5 5 2 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 3 3. - 1 - <_> - - <_> - 1 11 3 3 -1. - <_> - 2 11 1 3 3. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 9 5 6 2. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 8 2 2 2. - <_> - 2 10 2 2 2. - <_> - - <_> - 12 8 6 1 -1. - <_> - 14 8 2 1 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 10 3 3 6 -1. - <_> - 11 5 1 2 9. - <_> - - <_> - 5 3 3 6 -1. - <_> - 6 5 1 2 9. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 9 5 6 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 2 8 2 2 2. - <_> - - <_> - 12 4 3 11 -1. - <_> - 13 4 1 11 3. - <_> - - <_> - 0 3 5 12 -1. - <_> - 0 9 5 6 2. - <_> - - <_> - 12 4 3 11 -1. - <_> - 13 4 1 11 3. - <_> - - <_> - 5 13 4 2 -1. - <_> - 5 14 4 1 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 0 4 7 2 -1. - <_> - 0 5 7 1 2. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 4 0 12 15 -1. - <_> - 8 0 4 15 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 3 2 3 13 -1. - <_> - 4 2 1 13 3. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 0 8 13 -1. - <_> - 6 0 4 13 2. - <_> - - <_> - 11 1 1 4 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 7 1 4 1 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 17 2 1 8 -1. - <_> - 17 2 1 4 2. - 1 - <_> - - <_> - 1 2 8 1 -1. - <_> - 1 2 4 1 2. - 1 - <_> - - <_> - 11 6 3 4 -1. - <_> - 12 7 1 4 3. - 1 - <_> - - <_> - 7 6 4 3 -1. - <_> - 6 7 4 1 3. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 10 3 6 6 -1. - <_> - 10 5 6 2 3. - <_> - - <_> - 4 1 6 8 -1. - <_> - 4 1 3 4 2. - <_> - 7 5 3 4 2. - <_> - - <_> - 10 4 4 2 -1. - <_> - 10 4 2 2 2. - 1 - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 9 11 3 4 -1. - <_> - 9 12 3 2 2. - <_> - - <_> - 1 11 10 4 -1. - <_> - 1 13 10 2 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 3 1 12 8 -1. - <_> - 3 3 12 4 2. - <_> - - <_> - 12 4 2 8 -1. - <_> - 12 4 1 8 2. - 1 - <_> - - <_> - 6 4 8 2 -1. - <_> - 6 4 8 1 2. - 1 - <_> - - <_> - 7 0 6 1 -1. - <_> - 7 0 3 1 2. - <_> - - <_> - 3 5 12 6 -1. - <_> - 7 7 4 2 9. - <_> - - <_> - 10 3 1 2 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 9 0 6 3 -1. - <_> - 8 1 6 1 3. - 1 - <_> - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - <_> - - <_> - 2 7 4 4 -1. - <_> - 2 7 2 2 2. - <_> - 4 9 2 2 2. - <_> - - <_> - 16 5 2 3 -1. - <_> - 16 6 2 1 3. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 12 6 2 4 -1. - <_> - 12 6 1 4 2. - 1 - <_> - - <_> - 4 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - <_> - - <_> - 4 3 10 12 -1. - <_> - 4 3 5 6 2. - <_> - 9 9 5 6 2. - <_> - - <_> - 7 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 3 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 13 6 2 2 -1. - <_> - 14 6 1 1 2. - <_> - 13 7 1 1 2. - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 1 4 6 -1. - <_> - 4 4 4 3 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 5 0 7 3 -1. - <_> - 5 1 7 1 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 3 11 12 2 -1. - <_> - 3 12 12 1 2. - <_> - - <_> - 17 11 1 2 -1. - <_> - 17 12 1 1 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 7 2 4 1 2. - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 9 2 8 2 -1. - <_> - 9 2 4 2 2. - <_> - - <_> - 1 0 12 15 -1. - <_> - 7 0 6 15 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 5 0 3 5 -1. - <_> - 6 1 1 5 3. - 1 - <_> - - <_> - 13 0 3 4 -1. - <_> - 14 0 1 4 3. - <_> - - <_> - 9 3 4 8 -1. - <_> - 9 3 2 8 2. - 1 - <_> - - <_> - 15 3 2 3 -1. - <_> - 14 4 2 1 3. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 12 3 2 2 -1. - <_> - 13 3 1 1 2. - <_> - 12 4 1 1 2. - <_> - - <_> - 4 3 2 2 -1. - <_> - 4 3 1 1 2. - <_> - 5 4 1 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 0 1 3 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 4 6 10 4 -1. - <_> - 4 8 10 2 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 2 8 2. - <_> - - <_> - 1 0 9 12 -1. - <_> - 4 0 3 12 3. - <_> - - <_> - 6 4 12 10 -1. - <_> - 12 4 6 5 2. - <_> - 6 9 6 5 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 2 0 10 4 -1. - <_> - 2 2 10 2 2. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 6 6 4 3 -1. - <_> - 5 7 4 1 3. - 1 - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 8 2 2 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 10 0 8 6 -1. - <_> - 14 0 4 3 2. - <_> - 10 3 4 3 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 16 0 2 8 -1. - <_> - 16 4 2 4 2. - <_> - - <_> - 0 0 2 8 -1. - <_> - 0 4 2 4 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 7 2 4 -1. - <_> - 4 8 2 2 2. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 10 1 4 -1. - <_> - 3 11 1 2 2. - 1 - <_> - - <_> - 13 0 1 4 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 9 0 8 6 -1. - <_> - 9 0 8 3 2. - 1 - <_> - - <_> - 1 0 16 4 -1. - <_> - 9 0 8 2 2. - <_> - 1 2 8 2 2. - <_> - - <_> - 1 3 16 11 -1. - <_> - 5 3 8 11 2. - <_> - - <_> - 9 1 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 3 9 4 4 -1. - <_> - 3 10 4 2 2. - <_> - - <_> - 2 3 14 9 -1. - <_> - 2 6 14 3 3. - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 6 4 1 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 0 11 4 4 -1. - <_> - 1 11 2 4 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 5 0 4 2 -1. - <_> - 5 0 4 1 2. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 0 1 4 12 -1. - <_> - 0 7 4 6 2. - <_> - - <_> - 2 3 16 12 -1. - <_> - 10 3 8 6 2. - <_> - 2 9 8 6 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 5 4 1 2. - <_> - 9 6 4 1 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 7 1 1 6 3. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 7 0 8 7 -1. - <_> - 9 2 4 7 2. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 8 13 7 2 -1. - <_> - 8 14 7 1 2. - <_> - - <_> - 8 3 1 2 -1. - <_> - 8 3 1 1 2. - 1 - <_> - - <_> - 9 0 4 8 -1. - <_> - 10 1 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 8 1 8 2 2. - 1 - <_> - - <_> - 5 0 12 10 -1. - <_> - 9 0 4 10 3. - <_> - - <_> - 7 7 3 2 -1. - <_> - 7 7 3 1 2. - 1 - <_> - - <_> - 9 5 9 10 -1. - <_> - 9 10 9 5 2. - <_> - - <_> - 1 0 12 10 -1. - <_> - 5 0 4 10 3. - <_> - - <_> - 5 0 8 7 -1. - <_> - 5 0 4 7 2. - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 0 1 1 2. - <_> - 7 1 1 1 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 0 5 5 10 -1. - <_> - 0 10 5 5 2. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 14 5 2 6 -1. - <_> - 14 5 1 6 2. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 2 1 2 2. - <_> - - <_> - 1 0 1 4 -1. - <_> - 1 1 1 2 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 8 3 4 -1. - <_> - 7 8 1 4 3. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 12 8 3 2 -1. - <_> - 12 9 3 1 2. - <_> - - <_> - 0 5 17 6 -1. - <_> - 0 7 17 2 3. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 9 7 3 1 -1. - <_> - 10 8 1 1 3. - 1 - <_> - - <_> - 9 0 1 6 -1. - <_> - 9 0 1 3 2. - 1 - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 6 5 6 10 -1. - <_> - 6 5 3 10 2. - <_> - - <_> - 9 1 1 2 -1. - <_> - 9 1 1 1 2. - 1 - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 1 2. - <_> - 3 7 1 1 2. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 1 2. - <_> - 3 7 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 5 0 8 5 -1. - <_> - 7 0 4 5 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 4 6 1 3 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 13 7 2 6 -1. - <_> - 13 9 2 2 3. - <_> - - <_> - 1 4 16 2 -1. - <_> - 1 4 8 1 2. - <_> - 9 5 8 1 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 4 2 2 2. - <_> - 9 6 2 2 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 6 1 4 -1. - <_> - 3 8 1 2 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 12 13 2 2 3. - <_> - - <_> - 3 0 11 2 -1. - <_> - 3 1 11 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 6 5 12 4 -1. - <_> - 12 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 0 5 12 4 -1. - <_> - 0 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 0 6 4 2 2. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 0 0 18 15 -1. - <_> - 6 0 6 15 3. - <_> - - <_> - 1 2 6 4 -1. - <_> - 4 2 3 4 2. - <_> - - <_> - 13 2 2 13 -1. - <_> - 13 2 1 13 2. - <_> - - <_> - 3 2 2 13 -1. - <_> - 4 2 1 13 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 2 12 16 2 -1. - <_> - 2 13 16 1 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 8 3 8 2 -1. - <_> - 8 4 8 1 2. - <_> - - <_> - 6 0 1 3 -1. - <_> - 6 1 1 1 3. - <_> - - <_> - 8 6 4 4 -1. - <_> - 10 6 2 2 2. - <_> - 8 8 2 2 2. - <_> - - <_> - 5 1 7 6 -1. - <_> - 5 3 7 2 3. - <_> - - <_> - 7 0 6 15 -1. - <_> - 7 5 6 5 3. - <_> - - <_> - 6 6 4 4 -1. - <_> - 6 6 2 2 2. - <_> - 8 8 2 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 7 7 2 1 -1. - <_> - 7 7 1 1 2. - 1 - <_> - - <_> - 13 6 4 3 -1. - <_> - 12 7 4 1 3. - 1 - <_> - - <_> - 5 6 3 4 -1. - <_> - 6 7 1 4 3. - 1 - <_> - - <_> - 13 0 2 12 -1. - <_> - 13 6 2 6 2. - <_> - - <_> - 3 1 1 10 -1. - <_> - 3 6 1 5 2. - <_> - - <_> - 10 3 1 8 -1. - <_> - 8 5 1 4 2. - 1 - <_> - - <_> - 8 3 8 1 -1. - <_> - 10 5 4 1 2. - 1 - <_> - - <_> - 0 3 18 2 -1. - <_> - 9 3 9 1 2. - <_> - 0 4 9 1 2. - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 15 9 2 6 -1. - <_> - 15 9 1 6 2. - <_> - - <_> - 1 9 2 6 -1. - <_> - 2 9 1 6 2. - <_> - - <_> - 15 9 3 6 -1. - <_> - 16 9 1 6 3. - <_> - - <_> - 1 12 14 3 -1. - <_> - 1 13 14 1 3. - <_> - - <_> - 15 9 3 6 -1. - <_> - 16 9 1 6 3. - <_> - - <_> - 0 3 9 12 -1. - <_> - 0 6 9 6 2. - <_> - - <_> - 11 6 3 4 -1. - <_> - 12 7 1 4 3. - 1 - <_> - - <_> - 7 6 4 3 -1. - <_> - 6 7 4 1 3. - 1 - <_> - - <_> - 10 10 8 2 -1. - <_> - 14 10 4 1 2. - <_> - 10 11 4 1 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 1 9. - <_> - - <_> - 9 2 2 3 -1. - <_> - 9 2 1 3 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 10 11 2 2 -1. - <_> - 11 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 1 8 16 6 -1. - <_> - 1 8 8 3 2. - <_> - 9 11 8 3 2. - <_> - - <_> - 15 8 3 7 -1. - <_> - 16 8 1 7 3. - <_> - - <_> - 0 8 3 7 -1. - <_> - 1 8 1 7 3. - <_> - - <_> - 9 9 2 4 -1. - <_> - 10 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 7 9 2 4 -1. - <_> - 7 9 1 2 2. - <_> - 8 11 1 2 2. - <_> - - <_> - 3 6 14 9 -1. - <_> - 3 6 7 9 2. - <_> - - <_> - 8 5 3 6 -1. - <_> - 6 7 3 2 3. - 1 - <_> - - <_> - 9 0 8 3 -1. - <_> - 11 0 4 3 2. - <_> - - <_> - 3 3 8 2 -1. - <_> - 7 3 4 2 2. - <_> - - <_> - 1 6 16 8 -1. - <_> - 1 8 16 4 2. - <_> - - <_> - 2 7 14 8 -1. - <_> - 2 7 7 4 2. - <_> - 9 11 7 4 2. - <_> - - <_> - 9 7 4 6 -1. - <_> - 9 9 4 2 3. - <_> - - <_> - 5 6 3 9 -1. - <_> - 5 9 3 3 3. - <_> - - <_> - 12 7 6 8 -1. - <_> - 12 7 3 8 2. - <_> - - <_> - 9 2 9 4 -1. - <_> - 12 5 3 4 3. - 1 - <_> - - <_> - 12 7 6 8 -1. - <_> - 12 7 3 8 2. - <_> - - <_> - 4 7 3 4 -1. - <_> - 4 9 3 2 2. - <_> - - <_> - 8 0 8 6 -1. - <_> - 8 3 8 3 2. - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 12 9 6 6 -1. - <_> - 12 9 3 6 2. - <_> - - <_> - 0 9 6 6 -1. - <_> - 3 9 3 6 2. - <_> - - <_> - 15 1 3 14 -1. - <_> - 15 8 3 7 2. - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 1 4 1 2. - <_> - 9 2 4 1 2. - <_> - - <_> - 5 0 12 5 -1. - <_> - 8 0 6 5 2. - <_> - - <_> - 5 0 4 4 -1. - <_> - 5 2 4 2 2. - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 4 0 10 15 -1. - <_> - 9 0 5 15 2. - <_> - - <_> - 5 0 12 3 -1. - <_> - 8 0 6 3 2. - <_> - - <_> - 0 1 2 14 -1. - <_> - 0 8 2 7 2. - <_> - - <_> - 5 4 8 4 -1. - <_> - 5 6 8 2 2. - <_> - - <_> - 2 9 14 2 -1. - <_> - 2 10 14 1 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 1 9. - <_> - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 12 0 4 2 -1. - <_> - 13 1 2 2 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 1 9. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 1 9. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 4 13 10 2 -1. - <_> - 4 14 10 1 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 1 12 14 2 -1. - <_> - 1 13 14 1 2. - <_> - - <_> - 10 5 4 6 -1. - <_> - 8 7 4 2 3. - 1 - <_> - - <_> - 8 5 6 4 -1. - <_> - 10 7 2 4 3. - 1 - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 9 3 3 2. - <_> - - <_> - 7 8 3 2 -1. - <_> - 7 9 3 1 2. - <_> - - <_> - 2 8 14 2 -1. - <_> - 2 9 14 1 2. - <_> - - <_> - 3 0 3 8 -1. - <_> - 3 4 3 4 2. - <_> - - <_> - 0 1 18 8 -1. - <_> - 9 1 9 4 2. - <_> - 0 5 9 4 2. - <_> - - <_> - 5 0 8 7 -1. - <_> - 7 0 4 7 2. - <_> - - <_> - 10 1 4 1 -1. - <_> - 10 1 2 1 2. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 10 1 2. - 1 - <_> - - <_> - 4 4 10 6 -1. - <_> - 9 4 5 3 2. - <_> - 4 7 5 3 2. - <_> - - <_> - 5 8 4 2 -1. - <_> - 5 8 2 1 2. - <_> - 7 9 2 1 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 9 3 3 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 1 1 2 2. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 6 1 12 3 -1. - <_> - 9 1 6 3 2. - <_> - - <_> - 0 1 12 3 -1. - <_> - 3 1 6 3 2. - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 0 0 8 7 -1. - <_> - 4 0 4 7 2. - <_> - - <_> - 14 4 4 6 -1. - <_> - 14 4 4 3 2. - 1 - <_> - - <_> - 4 4 6 4 -1. - <_> - 4 4 3 4 2. - 1 - <_> - - <_> - 4 1 10 8 -1. - <_> - 4 3 10 4 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 2 0 14 4 -1. - <_> - 9 0 7 2 2. - <_> - 2 2 7 2 2. - <_> - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - <_> - - <_> - 16 6 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 9 3 3 1 2. - <_> - - <_> - 6 2 3 2 -1. - <_> - 6 3 3 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 8 13 10 2 -1. - <_> - 13 13 5 1 2. - <_> - 8 14 5 1 2. - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 7 7 4 6 -1. - <_> - 8 7 2 6 2. - <_> - - <_> - 7 1 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 4 1 11 4 -1. - <_> - 4 2 11 2 2. - <_> - - <_> - 4 12 4 3 -1. - <_> - 5 12 2 3 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 12 13 1 2 -1. - <_> - 12 14 1 1 2. - <_> - - <_> - 8 5 1 8 -1. - <_> - 8 5 1 4 2. - 1 - <_> - - <_> - 10 2 4 13 -1. - <_> - 11 2 2 13 2. - <_> - - <_> - 4 2 4 13 -1. - <_> - 5 2 2 13 2. - <_> - - <_> - 11 8 3 3 -1. - <_> - 12 9 1 1 9. - <_> - - <_> - 5 0 10 4 -1. - <_> - 5 0 10 2 2. - 1 - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 1 2. - <_> - 5 9 1 1 2. - <_> - - <_> - 7 0 8 3 -1. - <_> - 9 0 4 3 2. - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 7 1 1 3. - 1 - <_> - - <_> - 2 3 14 8 -1. - <_> - 2 5 14 4 2. - <_> - - <_> - 8 6 1 8 -1. - <_> - 8 6 1 4 2. - 1 - <_> - - <_> - 11 8 4 4 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 1 11 4 2 -1. - <_> - 2 11 2 2 2. - <_> - - <_> - 10 8 4 2 -1. - <_> - 12 8 2 1 2. - <_> - 10 9 2 1 2. - <_> - - <_> - 7 7 3 3 -1. - <_> - 8 8 1 1 9. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 5 3 10 12 -1. - <_> - 5 3 5 12 2. - <_> - - <_> - 3 3 10 12 -1. - <_> - 8 3 5 12 2. - <_> - - <_> - 5 0 12 8 -1. - <_> - 9 0 4 8 3. - <_> - - <_> - 1 0 12 8 -1. - <_> - 5 0 4 8 3. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 6 0 4 2 -1. - <_> - 6 1 4 1 2. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 1 1 1 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 5 2 2 2. - 1 - <_> - - <_> - 8 8 6 4 -1. - <_> - 11 8 3 2 2. - <_> - 8 10 3 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 16 1 2 3 -1. - <_> - 15 2 2 1 3. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 2 0 14 9 -1. - <_> - 2 3 14 3 3. - <_> - - <_> - 2 1 1 2 -1. - <_> - 2 2 1 1 2. - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 0 0 8 9 -1. - <_> - 2 0 4 9 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 6 2 1 2. - <_> - - <_> - 9 0 8 5 -1. - <_> - 11 2 4 5 2. - 1 - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 5 5 3 2. - <_> - - <_> - 0 2 5 6 -1. - <_> - 0 5 5 3 2. - <_> - - <_> - 3 4 12 10 -1. - <_> - 9 4 6 5 2. - <_> - 3 9 6 5 2. - <_> - - <_> - 6 6 2 3 -1. - <_> - 7 6 1 3 2. - <_> - - <_> - 11 1 6 6 -1. - <_> - 13 3 2 6 3. - 1 - <_> - - <_> - 7 1 6 6 -1. - <_> - 5 3 6 2 3. - 1 - <_> - - <_> - 13 4 1 6 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 8 0 1 2 -1. - <_> - 8 1 1 1 2. - <_> - - <_> - 10 13 6 2 -1. - <_> - 13 13 3 1 2. - <_> - 10 14 3 1 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 2 13 3 1 2. - <_> - 5 14 3 1 2. - <_> - - <_> - 5 12 9 3 -1. - <_> - 8 12 3 3 3. - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 4 0 12 15 -1. - <_> - 8 0 4 15 3. - <_> - - <_> - 3 0 8 14 -1. - <_> - 5 0 4 14 2. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 2 0 12 5 -1. - <_> - 6 0 4 5 3. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 12 5 2 8 -1. - <_> - 12 5 1 8 2. - 1 - <_> - - <_> - 6 5 8 2 -1. - <_> - 6 5 8 1 2. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 2 4 14 4 -1. - <_> - 2 6 14 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 12 5 1 4 -1. - <_> - 12 6 1 2 2. - <_> - - <_> - 5 5 1 4 -1. - <_> - 5 6 1 2 2. - <_> - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - <_> - - <_> - 3 9 6 4 -1. - <_> - 3 9 3 2 2. - <_> - 6 11 3 2 2. - <_> - - <_> - 9 12 6 1 -1. - <_> - 9 12 3 1 2. - <_> - - <_> - 7 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 9 0 6 2 -1. - <_> - 9 0 3 2 2. - 1 - <_> - - <_> - 7 11 10 4 -1. - <_> - 7 11 5 4 2. - <_> - - <_> - 1 11 15 4 -1. - <_> - 6 11 5 4 3. - <_> - - <_> - 7 0 6 4 -1. - <_> - 7 1 6 2 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 8 10 3 2 -1. - <_> - 9 10 1 2 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 8 4 4 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 3 8 4 4 -1. - <_> - 3 9 4 2 2. - <_> - - <_> - 2 7 16 2 -1. - <_> - 6 7 8 2 2. - <_> - - <_> - 0 7 16 2 -1. - <_> - 4 7 8 2 2. - <_> - - <_> - 12 10 4 2 -1. - <_> - 14 10 2 1 2. - <_> - 12 11 2 1 2. - <_> - - <_> - 2 10 4 2 -1. - <_> - 2 10 2 1 2. - <_> - 4 11 2 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 0 4 15 -1. - <_> - 8 5 4 5 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 6 1 7 2 -1. - <_> - 6 2 7 1 2. - <_> - - <_> - 0 7 6 2 -1. - <_> - 0 7 3 1 2. - <_> - 3 8 3 1 2. - <_> - - <_> - 12 3 5 3 -1. - <_> - 11 4 5 1 3. - 1 - <_> - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 2 1 6 14 -1. - <_> - 2 1 3 7 2. - <_> - 5 8 3 7 2. - <_> - - <_> - 10 1 8 9 -1. - <_> - 10 1 4 9 2. - <_> - - <_> - 7 7 4 4 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 9 9 2 4 -1. - <_> - 10 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 3 9 4 2 -1. - <_> - 3 9 2 1 2. - <_> - 5 10 2 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 2 0 16 9 -1. - <_> - 6 0 8 9 2. - <_> - - <_> - 1 1 8 4 -1. - <_> - 5 1 4 4 2. - <_> - - <_> - 9 3 2 6 -1. - <_> - 7 5 2 2 3. - 1 - <_> - - <_> - 9 3 6 2 -1. - <_> - 11 5 2 2 3. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - <_> - - <_> - 10 0 1 8 -1. - <_> - 8 2 1 4 2. - 1 - <_> - - <_> - 3 2 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 4 5 9 6 -1. - <_> - 4 8 9 3 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 11 0 3 2 3. - <_> - - <_> - 1 0 9 2 -1. - <_> - 4 0 3 2 3. - <_> - - <_> - 7 0 8 4 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - <_> - - <_> - 2 0 14 6 -1. - <_> - 9 0 7 3 2. - <_> - 2 3 7 3 2. - <_> - - <_> - 0 0 4 14 -1. - <_> - 0 7 4 7 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 5 7 1 3 -1. - <_> - 5 8 1 1 3. - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 11 2 6 6 -1. - <_> - 11 5 6 3 2. - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 1 2 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 9 15 -1. - <_> - 3 5 3 5 9. - <_> - - <_> - 10 8 5 3 -1. - <_> - 10 9 5 1 3. - <_> - - <_> - 6 0 3 4 -1. - <_> - 6 1 3 2 2. - <_> - - <_> - 7 9 8 6 -1. - <_> - 7 9 4 6 2. - <_> - - <_> - 4 9 8 5 -1. - <_> - 8 9 4 5 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 9 8 1 6 -1. - <_> - 9 8 1 3 2. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 3 8 5 3 -1. - <_> - 3 9 5 1 3. - <_> - - <_> - 1 1 16 4 -1. - <_> - 5 1 8 4 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 9 0 3 2 2. - <_> - - <_> - 14 4 4 7 -1. - <_> - 15 5 2 7 2. - 1 - <_> - - <_> - 4 4 7 4 -1. - <_> - 3 5 7 2 2. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 8 3 6 1 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 2 5 1 2. - <_> - 9 3 5 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 16 11 2 1 2. - 1 - <_> - - <_> - 2 12 14 3 -1. - <_> - 2 13 14 1 3. - <_> - - <_> - 16 12 2 2 -1. - <_> - 16 12 1 2 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 1 12 1 2 2. - <_> - - <_> - 10 7 6 6 -1. - <_> - 12 9 2 2 9. - <_> - - <_> - 2 7 6 6 -1. - <_> - 4 9 2 2 9. - <_> - - <_> - 11 5 1 9 -1. - <_> - 8 8 1 3 3. - 1 - <_> - - <_> - 0 5 18 4 -1. - <_> - 0 5 9 2 2. - <_> - 9 7 9 2 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 4 5 6 4 -1. - <_> - 4 5 3 4 2. - 1 - <_> - - <_> - 11 13 6 2 -1. - <_> - 13 13 2 2 3. - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 0 1 18 4 -1. - <_> - 9 1 9 2 2. - <_> - 0 3 9 2 2. - <_> - - <_> - 1 13 6 2 -1. - <_> - 3 13 2 2 3. - <_> - - <_> - 11 5 1 9 -1. - <_> - 8 8 1 3 3. - 1 - <_> - - <_> - 7 5 9 1 -1. - <_> - 10 8 3 1 3. - 1 - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 1 7 16 8 -1. - <_> - 1 9 16 4 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 3 1 11 2 -1. - <_> - 3 1 11 1 2. - 1 - <_> - - <_> - 5 3 9 6 -1. - <_> - 8 5 3 2 9. - <_> - - <_> - 6 0 2 4 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 9 1 6 6 2. - <_> - - <_> - 7 5 4 6 -1. - <_> - 9 5 2 3 2. - <_> - 7 8 2 3 2. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 6 6 3 2. - <_> - 9 9 6 3 2. - <_> - - <_> - 7 4 4 6 -1. - <_> - 7 7 4 3 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 2 8 6 7 -1. - <_> - 4 8 2 7 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 3 0 12 2 -1. - <_> - 9 0 6 1 2. - <_> - 3 1 6 1 2. - <_> - - <_> - 0 13 4 2 -1. - <_> - 1 13 2 2 2. - <_> - - <_> - 13 6 3 5 -1. - <_> - 14 7 1 5 3. - 1 - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 6 2 3 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 8 9 8 2 -1. - <_> - 12 9 4 1 2. - <_> - 8 10 4 1 2. - <_> - - <_> - 0 0 12 15 -1. - <_> - 3 0 6 15 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 10 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 6 3 2 2 2. - <_> - - <_> - 6 0 9 9 -1. - <_> - 9 0 3 9 3. - <_> - - <_> - 0 2 8 2 -1. - <_> - 2 2 4 2 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 8 1 2 8 -1. - <_> - 8 5 2 4 2. - <_> - - <_> - 16 3 2 2 -1. - <_> - 16 3 1 2 2. - 1 - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 2 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 3 4 1 2. - <_> - 9 4 4 1 2. - <_> - - <_> - 13 1 5 3 -1. - <_> - 12 2 5 1 3. - 1 - <_> - - <_> - 5 1 3 5 -1. - <_> - 6 2 1 5 3. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 7 3 9 3 2. - <_> - - <_> - 2 0 9 6 -1. - <_> - 2 3 9 3 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 4 10 4 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 4 7 4 1 3. - 1 - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 1 11 6 4 -1. - <_> - 1 11 3 2 2. - <_> - 4 13 3 2 2. - <_> - - <_> - 9 0 6 8 -1. - <_> - 11 2 2 8 3. - 1 - <_> - - <_> - 9 0 8 6 -1. - <_> - 7 2 8 2 3. - 1 - <_> - - <_> - 14 0 4 4 -1. - <_> - 15 1 2 4 2. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 4 2 3 2 2. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 0 7 11 8 -1. - <_> - 0 11 11 4 2. - <_> - - <_> - 1 9 17 4 -1. - <_> - 1 11 17 2 2. - <_> - - <_> - 1 6 16 6 -1. - <_> - 1 8 16 2 3. - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 0 1 1 3. - <_> - - <_> - 2 0 3 1 -1. - <_> - 3 0 1 1 3. - <_> - - <_> - 5 2 9 6 -1. - <_> - 5 4 9 2 3. - <_> - - <_> - 7 1 3 2 -1. - <_> - 7 2 3 1 2. - <_> - - <_> - 6 11 12 4 -1. - <_> - 6 13 12 2 2. - <_> - - <_> - 0 0 16 2 -1. - <_> - 0 0 8 1 2. - <_> - 8 1 8 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 12 0 6 2 -1. - <_> - 14 2 2 2 3. - 1 - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 15 8 3 6 -1. - <_> - 16 10 1 2 9. - <_> - - <_> - 0 8 3 6 -1. - <_> - 1 10 1 2 9. - <_> - - <_> - 14 4 3 3 -1. - <_> - 13 5 3 1 3. - 1 - <_> - - <_> - 4 4 3 3 -1. - <_> - 5 5 1 3 3. - 1 - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 15 4 1 8 -1. - <_> - 13 6 1 4 2. - 1 - <_> - - <_> - 3 4 8 1 -1. - <_> - 5 6 4 1 2. - 1 - <_> - - <_> - 6 0 6 6 -1. - <_> - 8 0 2 6 3. - <_> - - <_> - 8 3 10 1 -1. - <_> - 8 3 5 1 2. - 1 - <_> - - <_> - 8 8 3 5 -1. - <_> - 9 8 1 5 3. - <_> - - <_> - 7 2 8 2 -1. - <_> - 9 4 4 2 2. - 1 - <_> - - <_> - 11 2 3 13 -1. - <_> - 12 2 1 13 3. - <_> - - <_> - 4 2 3 13 -1. - <_> - 5 2 1 13 3. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 8 7 8 4 -1. - <_> - 12 7 4 2 2. - <_> - 8 9 4 2 2. - <_> - - <_> - 2 7 8 4 -1. - <_> - 2 7 4 2 2. - <_> - 6 9 4 2 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 9 5 6 2 2. - <_> - 3 7 6 2 2. - <_> - - <_> - 7 12 3 3 -1. - <_> - 8 13 1 1 9. - <_> - - <_> - 8 12 2 3 -1. - <_> - 8 13 2 1 3. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 3 4 4 1 -1. - <_> - 5 4 2 1 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 6 8 4 2 -1. - <_> - 6 8 4 1 2. - 1 - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 7 1 4 2. - 1 - <_> - - <_> - 6 7 4 2 -1. - <_> - 6 7 4 1 2. - 1 - <_> - - <_> - 4 1 12 4 -1. - <_> - 7 1 6 4 2. - <_> - - <_> - 2 1 12 4 -1. - <_> - 5 1 6 4 2. - <_> - - <_> - 5 1 12 3 -1. - <_> - 9 1 4 3 3. - <_> - - <_> - 3 1 11 8 -1. - <_> - 3 3 11 4 2. - <_> - - <_> - 2 7 15 4 -1. - <_> - 2 8 15 2 2. - <_> - - <_> - 5 11 2 2 -1. - <_> - 5 11 1 2 2. - 1 - <_> - - <_> - 6 10 8 5 -1. - <_> - 8 10 4 5 2. - <_> - - <_> - 4 10 8 5 -1. - <_> - 6 10 4 5 2. - <_> - - <_> - 1 11 17 2 -1. - <_> - 1 12 17 1 2. - <_> - - <_> - 0 9 17 4 -1. - <_> - 0 10 17 2 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 9 6 9 1 2. - <_> - 0 7 9 1 2. - <_> - - <_> - 7 1 3 6 -1. - <_> - 5 3 3 2 3. - 1 - <_> - - <_> - 9 13 6 2 -1. - <_> - 11 13 2 2 3. - <_> - - <_> - 3 13 6 2 -1. - <_> - 5 13 2 2 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 13 0 5 8 -1. - <_> - 13 4 5 4 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 8 2 3 3. - 1 - <_> - - <_> - 9 11 1 3 -1. - <_> - 8 12 1 1 3. - 1 - <_> - - <_> - 9 11 3 1 -1. - <_> - 10 12 1 1 3. - 1 - <_> - - <_> - 7 1 6 2 -1. - <_> - 10 1 3 1 2. - <_> - 7 2 3 1 2. - <_> - - <_> - 1 5 16 5 -1. - <_> - 5 5 8 5 2. - <_> - - <_> - 12 6 6 1 -1. - <_> - 14 6 2 1 3. - <_> - - <_> - 0 6 6 1 -1. - <_> - 2 6 2 1 3. - <_> - - <_> - 15 4 2 1 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 4 2 1 -1. - <_> - 2 4 1 1 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 1 2 1 2. - <_> - - <_> - 0 0 2 10 -1. - <_> - 0 5 2 5 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 5 12 3 2. - <_> - - <_> - 6 0 4 3 -1. - <_> - 5 1 4 1 3. - 1 - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 1 1 6 3. - 1 - <_> - - <_> - 0 0 8 8 -1. - <_> - 4 0 4 8 2. - <_> - - <_> - 6 0 9 1 -1. - <_> - 9 0 3 1 3. - <_> - - <_> - 0 0 18 9 -1. - <_> - 6 0 6 9 3. - <_> - - <_> - 5 11 9 4 -1. - <_> - 5 12 9 2 2. - <_> - - <_> - 3 2 3 13 -1. - <_> - 4 2 1 13 3. - <_> - - <_> - 10 3 6 2 -1. - <_> - 10 3 3 2 2. - 1 - <_> - - <_> - 8 3 2 6 -1. - <_> - 8 3 2 3 2. - 1 - <_> - - <_> - 13 6 3 3 -1. - <_> - 12 7 3 1 3. - 1 - <_> - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 3 3. - 1 - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 7 0 4 11 -1. - <_> - 9 0 2 11 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 2 2 5 12 -1. - <_> - 2 8 5 6 2. - <_> - - <_> - 0 5 18 10 -1. - <_> - 9 5 9 5 2. - <_> - 0 10 9 5 2. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 1 2. - <_> - 3 12 1 1 2. - <_> - - <_> - 14 1 2 14 -1. - <_> - 14 8 2 7 2. - <_> - - <_> - 2 1 2 14 -1. - <_> - 2 8 2 7 2. - <_> - - <_> - 14 7 3 4 -1. - <_> - 15 8 1 4 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 11 7 3 5 -1. - <_> - 12 8 1 5 3. - 1 - <_> - - <_> - 7 7 5 3 -1. - <_> - 6 8 5 1 3. - 1 - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 7 8 4 5 -1. - <_> - 8 8 2 5 2. - <_> - - <_> - 8 1 10 12 -1. - <_> - 8 5 10 4 3. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 0 0 15 4 -1. - <_> - 5 0 5 4 3. - <_> - - <_> - 12 0 6 5 -1. - <_> - 12 0 3 5 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 8 6 2 4 -1. - <_> - 7 7 2 2 2. - 1 - <_> - - <_> - 6 3 10 12 -1. - <_> - 11 3 5 6 2. - <_> - 6 9 5 6 2. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 2 4 16 8 -1. - <_> - 10 4 8 4 2. - <_> - 2 8 8 4 2. - <_> - - <_> - 1 6 4 4 -1. - <_> - 1 6 2 2 2. - <_> - 3 8 2 2 2. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 5 0 2 4 -1. - <_> - 4 1 2 2 2. - 1 - <_> - - <_> - 12 8 1 3 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 5 8 1 3 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 10 0 4 4 -1. - <_> - 10 1 4 2 2. - <_> - - <_> - 5 7 1 3 -1. - <_> - 5 8 1 1 3. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 4 1 4 2 2. - <_> - - <_> - 6 3 10 12 -1. - <_> - 11 3 5 6 2. - <_> - 6 9 5 6 2. - <_> - - <_> - 2 3 10 12 -1. - <_> - 2 3 5 6 2. - <_> - 7 9 5 6 2. - <_> - - <_> - 9 0 2 9 -1. - <_> - 9 0 1 9 2. - 1 - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 12 1 6 14 -1. - <_> - 12 8 6 7 2. - <_> - - <_> - 0 1 6 14 -1. - <_> - 0 8 6 7 2. - <_> - - <_> - 9 0 2 9 -1. - <_> - 9 0 1 9 2. - 1 - <_> - - <_> - 9 0 9 2 -1. - <_> - 9 0 9 1 2. - 1 - <_> - - <_> - 2 12 14 3 -1. - <_> - 2 13 14 1 3. - <_> - - <_> - 0 0 18 8 -1. - <_> - 0 0 9 4 2. - <_> - 9 4 9 4 2. - <_> - - <_> - 11 1 5 6 -1. - <_> - 11 4 5 3 2. - <_> - - <_> - 2 1 5 6 -1. - <_> - 2 4 5 3 2. - <_> - - <_> - 6 10 8 5 -1. - <_> - 8 10 4 5 2. - <_> - - <_> - 4 9 10 6 -1. - <_> - 9 9 5 6 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 11 3 2 2. - <_> - 3 13 3 2 2. - <_> - - <_> - 14 14 2 1 -1. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 14 2 1 -1. - <_> - 3 14 1 1 2. - <_> - - <_> - 0 3 18 8 -1. - <_> - 0 7 18 4 2. - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 2 4 6 8 -1. - <_> - 5 4 3 8 2. - <_> - - <_> - 8 9 4 2 -1. - <_> - 10 9 2 1 2. - <_> - 8 10 2 1 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 6 9 2 1 2. - <_> - 8 10 2 1 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 1 1 16 2 -1. - <_> - 9 1 8 1 2. - <_> - 1 2 8 1 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 6 10 2 1 2. - <_> - 8 11 2 1 2. - <_> - - <_> - 7 7 4 3 -1. - <_> - 8 7 2 3 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 6 0 2 2 2. - <_> - 8 2 2 2 2. - <_> - - <_> - 12 6 6 3 -1. - <_> - 14 7 2 1 9. - <_> - - <_> - 0 6 6 3 -1. - <_> - 2 7 2 1 9. - <_> - - <_> - 14 13 2 2 -1. - <_> - 15 13 1 1 2. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 13 2 2 -1. - <_> - 2 13 1 1 2. - <_> - 3 14 1 1 2. - <_> - - <_> - 14 12 4 2 -1. - <_> - 15 12 2 2 2. - <_> - - <_> - 9 4 7 4 -1. - <_> - 9 4 7 2 2. - 1 - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 9 3 2 3 2. - <_> - 7 6 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 2 2. - <_> - 1 5 8 2 2. - <_> - - <_> - 2 12 14 2 -1. - <_> - 2 13 14 1 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 13 0 1 1 2. - <_> - 12 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 2 8 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 1 1 16 6 -1. - <_> - 1 3 16 2 3. - <_> - - <_> - 8 7 10 8 -1. - <_> - 8 7 5 8 2. - <_> - - <_> - 0 7 11 8 -1. - <_> - 0 9 11 4 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 7 16 1 -1. - <_> - 4 7 8 1 2. - <_> - - <_> - 8 7 10 8 -1. - <_> - 8 7 5 8 2. - <_> - - <_> - 0 7 10 8 -1. - <_> - 5 7 5 8 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 0 7 18 8 -1. - <_> - 0 7 9 4 2. - <_> - 9 11 9 4 2. - <_> - - <_> - 14 12 4 2 -1. - <_> - 15 12 2 2 2. - <_> - - <_> - 0 12 4 2 -1. - <_> - 1 12 2 2 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 14 2 3 3 -1. - <_> - 13 3 3 1 3. - 1 - <_> - - <_> - 4 2 3 3 -1. - <_> - 5 3 1 3 3. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 6 4 6 5 -1. - <_> - 8 6 2 5 3. - 1 - <_> - - <_> - 6 9 10 2 -1. - <_> - 11 9 5 1 2. - <_> - 6 10 5 1 2. - <_> - - <_> - 4 7 5 8 -1. - <_> - 4 9 5 4 2. - <_> - - <_> - 2 5 15 6 -1. - <_> - 2 7 15 2 3. - <_> - - <_> - 3 0 2 15 -1. - <_> - 3 5 2 5 3. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 9 8 2 4 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 8 18 3 2. - <_> - - <_> - 3 11 12 4 -1. - <_> - 3 12 12 2 2. - <_> - - <_> - 0 14 6 1 -1. - <_> - 2 14 2 1 3. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 9 0 1 1 2. - <_> - - <_> - 5 0 12 1 -1. - <_> - 8 0 6 1 2. - <_> - - <_> - 4 0 8 1 -1. - <_> - 6 0 4 1 2. - <_> - - <_> - 12 14 6 1 -1. - <_> - 14 14 2 1 3. - <_> - - <_> - 0 14 6 1 -1. - <_> - 2 14 2 1 3. - <_> - - <_> - 6 9 10 2 -1. - <_> - 11 9 5 1 2. - <_> - 6 10 5 1 2. - <_> - - <_> - 4 9 6 2 -1. - <_> - 4 9 3 1 2. - <_> - 7 10 3 1 2. - <_> - - <_> - 16 3 2 9 -1. - <_> - 13 6 2 3 3. - 1 - <_> - - <_> - 2 3 9 2 -1. - <_> - 5 6 3 2 3. - 1 - <_> - - <_> - 11 0 6 2 -1. - <_> - 13 2 2 2 3. - 1 - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 0 1 3 2. - 1 - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 0 3 1 2. - 1 - <_> - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 1 - <_> - - <_> - 4 2 10 8 -1. - <_> - 4 4 10 4 2. - <_> - - <_> - 11 0 3 3 -1. - <_> - 12 1 1 3 3. - 1 - <_> - - <_> - 7 0 3 3 -1. - <_> - 6 1 3 1 3. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 13 0 1 1 2. - <_> - 12 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 0 12 18 3 -1. - <_> - 0 13 18 1 3. - <_> - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - <_> - - <_> - 11 1 4 2 -1. - <_> - 11 1 2 2 2. - <_> - - <_> - 0 0 15 2 -1. - <_> - 5 0 5 2 3. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 11 3 2 1 -1. - <_> - 11 3 1 1 2. - <_> - - <_> - 5 3 2 1 -1. - <_> - 6 3 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 1 2 2 2. - 1 - <_> - - <_> - 0 0 18 2 -1. - <_> - 9 0 9 1 2. - <_> - 0 1 9 1 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 0 4 9 2 2. - <_> - 9 6 9 2 2. - <_> - - <_> - 10 7 4 2 -1. - <_> - 12 7 2 1 2. - <_> - 10 8 2 1 2. - <_> - - <_> - 4 3 3 4 -1. - <_> - 5 4 1 4 3. - 1 - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 7 4 2 -1. - <_> - 12 7 2 1 2. - <_> - 10 8 2 1 2. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 8 3 2 8 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 1 4 16 9 -1. - <_> - 1 7 16 3 3. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 8 3 2 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - <_> - - <_> - 6 0 6 11 -1. - <_> - 6 0 3 11 2. - <_> - - <_> - 6 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 9 5 6 1 2. - 1 - <_> - - <_> - 8 10 6 2 -1. - <_> - 11 10 3 1 2. - <_> - 8 11 3 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 4 0 10 3 -1. - <_> - 4 1 10 1 3. - <_> - - <_> - 15 7 1 2 -1. - <_> - 15 8 1 1 2. - <_> - - <_> - 5 7 8 2 -1. - <_> - 5 8 8 1 2. - <_> - - <_> - 11 5 6 9 -1. - <_> - 13 8 2 3 9. - <_> - - <_> - 1 5 6 9 -1. - <_> - 3 8 2 3 9. - <_> - - <_> - 11 6 3 6 -1. - <_> - 9 8 3 2 3. - 1 - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 8 2 3 3. - 1 - <_> - - <_> - 10 10 1 3 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 0 11 18 4 -1. - <_> - 9 11 9 2 2. - <_> - 0 13 9 2 2. - <_> - - <_> - 4 11 6 4 -1. - <_> - 7 11 3 4 2. - <_> - - <_> - 0 2 18 12 -1. - <_> - 0 5 18 6 2. - <_> - - <_> - 0 10 1 4 -1. - <_> - 0 12 1 2 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 7 1 1 9. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 1 2 4 2. - 1 - <_> - - <_> - 5 0 4 4 -1. - <_> - 4 1 4 2 2. - 1 - <_> - - <_> - 5 6 8 4 -1. - <_> - 9 6 4 2 2. - <_> - 5 8 4 2 2. - <_> - - <_> - 3 11 2 2 -1. - <_> - 3 11 1 1 2. - <_> - 4 12 1 1 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 1 13 15 2 -1. - <_> - 1 14 15 1 2. - <_> - - <_> - 16 12 1 2 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 0 8 4 2 -1. - <_> - 0 8 2 1 2. - <_> - 2 9 2 1 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 4 10 4 -1. - <_> - 4 6 10 2 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 13 2 3 7 -1. - <_> - 14 3 1 7 3. - 1 - <_> - - <_> - 5 2 7 3 -1. - <_> - 4 3 7 1 3. - 1 - <_> - - <_> - 13 5 2 7 -1. - <_> - 13 5 1 7 2. - <_> - - <_> - 3 5 2 7 -1. - <_> - 4 5 1 7 2. - <_> - - <_> - 9 2 6 2 -1. - <_> - 9 2 3 2 2. - <_> - - <_> - 3 2 6 2 -1. - <_> - 6 2 3 2 2. - <_> - - <_> - 13 3 5 6 -1. - <_> - 13 6 5 3 2. - <_> - - <_> - 5 10 4 2 -1. - <_> - 5 10 2 1 2. - <_> - 7 11 2 1 2. - <_> - - <_> - 11 11 4 2 -1. - <_> - 12 11 2 2 2. - <_> - - <_> - 3 11 4 2 -1. - <_> - 4 11 2 2 2. - <_> - - <_> - 16 12 1 2 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 2 1 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 16 3 2 3 -1. - <_> - 15 4 2 1 3. - 1 - <_> - - <_> - 0 3 5 6 -1. - <_> - 0 6 5 3 2. - <_> - - <_> - 16 3 2 3 -1. - <_> - 15 4 2 1 3. - 1 - <_> - - <_> - 1 3 16 9 -1. - <_> - 1 6 16 3 3. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 1 11 2 2 -1. - <_> - 1 11 1 1 2. - <_> - 2 12 1 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 16 13 1 1 2. - <_> - 15 14 1 1 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 1 13 1 1 2. - <_> - 2 14 1 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 16 13 1 1 2. - <_> - 15 14 1 1 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 1 13 1 1 2. - <_> - 2 14 1 1 2. - <_> - - <_> - 11 6 2 4 -1. - <_> - 10 7 2 2 2. - 1 - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 14 3 2 2 -1. - <_> - 15 3 1 1 2. - <_> - 14 4 1 1 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 2 2 1 9. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 4 1 1 2. - <_> - - <_> - 12 1 6 4 -1. - <_> - 12 1 3 4 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 8 7 2 1 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 0 1 6 4 -1. - <_> - 3 1 3 4 2. - <_> - - <_> - 1 1 16 7 -1. - <_> - 5 1 8 7 2. - <_> - - <_> - 3 3 12 9 -1. - <_> - 7 6 4 3 9. - <_> - - <_> - 6 8 7 2 -1. - <_> - 6 9 7 1 2. - <_> - - <_> - 4 0 3 3 -1. - <_> - 4 1 3 1 3. - <_> - - <_> - 7 1 8 2 -1. - <_> - 9 3 4 2 2. - 1 - <_> - - <_> - 6 5 8 5 -1. - <_> - 8 5 4 5 2. - <_> - - <_> - 6 0 4 11 -1. - <_> - 8 0 2 11 2. - <_> - - <_> - 12 8 6 5 -1. - <_> - 12 8 3 5 2. - <_> - - <_> - 0 1 9 2 -1. - <_> - 3 1 3 2 3. - <_> - - <_> - 12 8 6 5 -1. - <_> - 12 8 3 5 2. - <_> - - <_> - 0 8 6 5 -1. - <_> - 3 8 3 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 3 2 12 2 -1. - <_> - 3 2 6 1 2. - <_> - 9 3 6 1 2. - <_> - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 7 0 4 1 3. - <_> - - <_> - 9 2 9 2 -1. - <_> - 12 5 3 2 3. - 1 - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 3 2 3 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 0 1 18 6 -1. - <_> - 9 1 9 3 2. - <_> - 0 4 9 3 2. - <_> - - <_> - 6 0 6 1 -1. - <_> - 9 0 3 1 2. - <_> - - <_> - 9 5 1 2 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 7 1 5 2 -1. - <_> - 7 2 5 1 2. - <_> - - <_> - 5 8 1 3 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 7 7 5 2 -1. - <_> - 7 8 5 1 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 7 7 3 1 3. - 1 - <_> - - <_> - 11 9 3 2 -1. - <_> - 11 10 3 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 0 11 18 2 -1. - <_> - 0 12 18 1 2. - <_> - - <_> - 2 5 14 8 -1. - <_> - 2 7 14 4 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 9 2 1 2. - <_> - - <_> - 11 8 4 6 -1. - <_> - 11 10 4 2 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - <_> - - <_> - 7 1 4 2 -1. - <_> - 9 1 2 1 2. - <_> - 7 2 2 1 2. - <_> - - <_> - 3 8 4 6 -1. - <_> - 3 10 4 2 3. - <_> - - <_> - 6 6 6 4 -1. - <_> - 9 6 3 2 2. - <_> - 6 8 3 2 2. - <_> - - <_> - 1 7 6 3 -1. - <_> - 3 8 2 1 9. - <_> - - <_> - 10 7 2 3 -1. - <_> - 9 8 2 1 3. - 1 - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 8 9 3 2. - <_> - 9 11 9 3 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 5 0 8 5 -1. - <_> - 7 0 4 5 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 7 2 2 1 -1. - <_> - 7 2 1 1 2. - 1 - <_> - - <_> - 12 1 6 3 -1. - <_> - 11 2 6 1 3. - 1 - <_> - - <_> - 6 1 3 6 -1. - <_> - 7 2 1 6 3. - 1 - <_> - - <_> - 1 3 16 4 -1. - <_> - 9 3 8 2 2. - <_> - 1 5 8 2 2. - <_> - - <_> - 9 4 4 4 -1. - <_> - 8 5 4 2 2. - 1 - <_> - - <_> - 3 0 15 14 -1. - <_> - 8 0 5 14 3. - <_> - - <_> - 3 1 12 10 -1. - <_> - 6 1 6 10 2. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 8 3 2 6 -1. - <_> - 8 6 2 3 2. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 12 3 1 3 -1. - <_> - 12 4 1 1 3. - <_> - - <_> - 4 0 9 9 -1. - <_> - 7 0 3 9 3. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 2 1 1 3. - 1 - <_> - - <_> - 9 1 1 3 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 7 1 2 3 -1. - <_> - 8 1 1 3 2. - <_> - - <_> - 2 4 14 6 -1. - <_> - 2 6 14 2 3. - <_> - - <_> - 4 4 3 6 -1. - <_> - 4 6 3 2 3. - <_> - - <_> - 12 1 5 8 -1. - <_> - 12 5 5 4 2. - <_> - - <_> - 1 1 5 8 -1. - <_> - 1 5 5 4 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - <_> - - <_> - 6 0 10 2 -1. - <_> - 11 0 5 1 2. - <_> - 6 1 5 1 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 1 0 8 1 2. - <_> - 9 1 8 1 2. - <_> - - <_> - 6 3 12 6 -1. - <_> - 9 3 6 6 2. - <_> - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - <_> - - <_> - 6 1 12 10 -1. - <_> - 6 1 6 10 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 4 13 2 2 3. - <_> - - <_> - 12 0 6 3 -1. - <_> - 11 1 6 1 3. - 1 - <_> - - <_> - 6 0 3 6 -1. - <_> - 7 1 1 6 3. - 1 - <_> - - <_> - 8 4 10 4 -1. - <_> - 8 4 5 4 2. - <_> - - <_> - 0 4 10 4 -1. - <_> - 5 4 5 4 2. - <_> - - <_> - 16 9 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 2 7 15 3 -1. - <_> - 2 8 15 1 3. - <_> - - <_> - 3 1 12 8 -1. - <_> - 3 3 12 4 2. - <_> - - <_> - 11 4 3 6 -1. - <_> - 9 6 3 2 3. - 1 - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 6 2 3 3. - 1 - <_> - - <_> - 8 0 8 13 -1. - <_> - 10 0 4 13 2. - <_> - - <_> - 1 0 12 7 -1. - <_> - 5 0 4 7 3. - <_> - - <_> - 10 9 6 2 -1. - <_> - 13 9 3 1 2. - <_> - 10 10 3 1 2. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 6 1 10 4 -1. - <_> - 5 2 10 2 2. - 1 - <_> - - <_> - 15 2 3 8 -1. - <_> - 16 3 1 8 3. - 1 - <_> - - <_> - 3 2 8 3 -1. - <_> - 2 3 8 1 3. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 15 5 2 4 -1. - <_> - 16 5 1 2 2. - <_> - 15 7 1 2 2. - <_> - - <_> - 3 0 2 14 -1. - <_> - 3 7 2 7 2. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 15 5 2 4 -1. - <_> - 16 5 1 2 2. - <_> - 15 7 1 2 2. - <_> - - <_> - 1 0 8 6 -1. - <_> - 1 3 8 3 2. - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 3 2 3 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 3 0 12 15 -1. - <_> - 3 0 6 15 2. - <_> - - <_> - 6 1 4 7 -1. - <_> - 8 1 2 7 2. - <_> - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 8 1 4 1 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 5 0 9 4 -1. - <_> - 5 0 9 2 2. - 1 - <_> - - <_> - 10 2 3 7 -1. - <_> - 11 3 1 7 3. - 1 - <_> - - <_> - 8 2 7 3 -1. - <_> - 7 3 7 1 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - <_> - - <_> - 7 4 4 4 -1. - <_> - 7 6 4 2 2. - <_> - - <_> - 0 1 10 6 -1. - <_> - 0 3 10 2 3. - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - <_> - - <_> - 13 8 2 5 -1. - <_> - 13 8 1 5 2. - 1 - <_> - - <_> - 7 7 4 4 -1. - <_> - 7 7 4 2 2. - 1 - <_> - - <_> - 6 7 12 8 -1. - <_> - 6 7 6 8 2. - <_> - - <_> - 0 2 12 13 -1. - <_> - 6 2 6 13 2. - <_> - - <_> - 0 8 18 6 -1. - <_> - 0 11 18 3 2. - <_> - - <_> - 2 2 4 13 -1. - <_> - 3 2 2 13 2. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 3 2 12 9 -1. - <_> - 7 5 4 3 9. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 4 1 1 3. - 1 - <_> - - <_> - 8 3 1 3 -1. - <_> - 7 4 1 1 3. - 1 - <_> - - <_> - 9 2 8 6 -1. - <_> - 9 2 4 6 2. - <_> - - <_> - 1 2 8 6 -1. - <_> - 5 2 4 6 2. - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 6 0 1 2 -1. - <_> - 6 0 1 1 2. - 1 - <_> - - <_> - 10 0 4 2 -1. - <_> - 10 1 4 1 2. - <_> - - <_> - 4 0 8 2 -1. - <_> - 4 0 4 1 2. - <_> - 8 1 4 1 2. - <_> - - <_> - 7 12 8 3 -1. - <_> - 9 12 4 3 2. - <_> - - <_> - 1 13 16 1 -1. - <_> - 5 13 8 1 2. - <_> - - <_> - 7 13 10 1 -1. - <_> - 7 13 5 1 2. - <_> - - <_> - 1 13 10 1 -1. - <_> - 6 13 5 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 2 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 7 1 2 3. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 1 12 13 2 -1. - <_> - 1 13 13 1 2. - <_> - - <_> - 11 9 3 6 -1. - <_> - 11 11 3 2 3. - <_> - - <_> - 8 7 4 2 -1. - <_> - 9 8 2 2 2. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 1 9 8 4 -1. - <_> - 1 9 4 2 2. - <_> - 5 11 4 2 2. - <_> - - <_> - 10 5 8 10 -1. - <_> - 14 5 4 5 2. - <_> - 10 10 4 5 2. - <_> - - <_> - 2 10 3 2 -1. - <_> - 3 11 1 2 3. - 1 - <_> - - <_> - 1 1 16 9 -1. - <_> - 1 4 16 3 3. - <_> - - <_> - 7 4 4 2 -1. - <_> - 8 5 2 2 2. - 1 - <_> - - <_> - 12 0 6 3 -1. - <_> - 14 2 2 3 3. - 1 - <_> - - <_> - 1 12 6 3 -1. - <_> - 3 12 2 3 3. - <_> - - <_> - 11 7 3 2 -1. - <_> - 12 8 1 2 3. - 1 - <_> - - <_> - 4 8 4 4 -1. - <_> - 4 8 2 2 2. - <_> - 6 10 2 2 2. - <_> - - <_> - 6 0 9 11 -1. - <_> - 9 0 3 11 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 0 9 17 2 -1. - <_> - 0 10 17 1 2. - <_> - - <_> - 2 0 14 6 -1. - <_> - 2 3 14 3 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 5 4 10 10 -1. - <_> - 10 4 5 5 2. - <_> - 5 9 5 5 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 7 4 4 3 9. - <_> - - <_> - 12 4 5 6 -1. - <_> - 12 4 5 3 2. - 1 - <_> - - <_> - 6 4 6 5 -1. - <_> - 6 4 3 5 2. - 1 - <_> - - <_> - 8 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 0 8 18 3 -1. - <_> - 0 9 18 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 8 7 1 1 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 12 5 6 10 -1. - <_> - 12 10 6 5 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 5 5 7 3 -1. - <_> - 5 6 7 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 0 4 2 -1. - <_> - 11 1 2 2 2. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 7 1 2 2 2. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 0 5 1 4 -1. - <_> - 0 6 1 2 2. - <_> - - <_> - 15 5 2 3 -1. - <_> - 14 6 2 1 3. - 1 - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 15 5 2 3 -1. - <_> - 14 6 2 1 3. - 1 - <_> - - <_> - 3 5 3 2 -1. - <_> - 4 6 1 2 3. - 1 - <_> - - <_> - 11 6 1 4 -1. - <_> - 10 7 1 2 2. - 1 - <_> - - <_> - 2 8 4 7 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 9 0 9 4 -1. - <_> - 9 0 9 2 2. - 1 - <_> - - <_> - 1 9 6 6 -1. - <_> - 3 11 2 2 9. - <_> - - <_> - 12 5 6 10 -1. - <_> - 12 10 6 5 2. - <_> - - <_> - 0 0 15 14 -1. - <_> - 5 0 5 14 3. - <_> - - <_> - 7 3 4 9 -1. - <_> - 7 3 2 9 2. - <_> - - <_> - 9 0 4 9 -1. - <_> - 9 0 2 9 2. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 5 4 6 3 -1. - <_> - 7 4 2 3 3. - <_> - - <_> - 5 0 8 8 -1. - <_> - 7 0 4 8 2. - <_> - - <_> - 3 4 3 3 -1. - <_> - 4 5 1 3 3. - 1 - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 3 14 2 1 -1. - <_> - 4 14 1 1 2. - <_> - - <_> - 9 2 3 2 -1. - <_> - 10 3 1 2 3. - 1 - <_> - - <_> - 9 2 2 3 -1. - <_> - 8 3 2 1 3. - 1 - <_> - - <_> - 1 5 16 6 -1. - <_> - 1 7 16 2 3. - <_> - - <_> - 0 3 4 9 -1. - <_> - 0 6 4 3 3. - <_> - - <_> - 10 8 6 4 -1. - <_> - 13 8 3 2 2. - <_> - 10 10 3 2 2. - <_> - - <_> - 2 8 6 4 -1. - <_> - 2 8 3 2 2. - <_> - 5 10 3 2 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 5 4 8 6 2. - <_> - - <_> - 6 2 2 1 -1. - <_> - 7 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 9 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 2 8 6 4 -1. - <_> - 2 8 3 2 2. - <_> - 5 10 3 2 2. - <_> - - <_> - 15 3 2 10 -1. - <_> - 15 3 1 10 2. - 1 - <_> - - <_> - 3 3 10 2 -1. - <_> - 3 3 10 1 2. - 1 - <_> - - <_> - 0 12 18 2 -1. - <_> - 9 12 9 1 2. - <_> - 0 13 9 1 2. - <_> - - <_> - 5 9 6 4 -1. - <_> - 5 9 3 2 2. - <_> - 8 11 3 2 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - 1 - <_> - - <_> - 0 7 7 8 -1. - <_> - 0 11 7 4 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - <_> - - <_> - 14 0 3 15 -1. - <_> - 15 0 1 15 3. - <_> - - <_> - 1 0 3 15 -1. - <_> - 2 0 1 15 3. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 3 14 8 1 -1. - <_> - 5 14 4 1 2. - <_> - - <_> - 17 3 1 8 -1. - <_> - 17 7 1 4 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 8 3 2 4 -1. - <_> - 8 5 2 2 2. - <_> - - <_> - 1 0 10 8 -1. - <_> - 1 0 5 4 2. - <_> - 6 4 5 4 2. - <_> - - <_> - 16 0 2 12 -1. - <_> - 16 6 2 6 2. - <_> - - <_> - 0 0 2 12 -1. - <_> - 0 6 2 6 2. - <_> - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - <_> - - <_> - 3 2 10 8 -1. - <_> - 3 4 10 4 2. - <_> - - <_> - 1 7 16 2 -1. - <_> - 1 8 16 1 2. - <_> - - <_> - 3 0 2 12 -1. - <_> - 3 4 2 4 3. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 15 3 2 4 -1. - <_> - 16 3 1 2 2. - <_> - 15 5 1 2 2. - <_> - - <_> - 0 1 18 2 -1. - <_> - 0 1 9 1 2. - <_> - 9 2 9 1 2. - <_> - - <_> - 14 5 3 3 -1. - <_> - 15 5 1 3 3. - <_> - - <_> - 1 5 3 3 -1. - <_> - 2 5 1 3 3. - <_> - - <_> - 13 8 4 7 -1. - <_> - 13 8 2 7 2. - <_> - - <_> - 1 12 2 1 -1. - <_> - 1 12 1 1 2. - 1 - <_> - - <_> - 16 4 2 10 -1. - <_> - 17 4 1 5 2. - <_> - 16 9 1 5 2. - <_> - - <_> - 0 4 2 10 -1. - <_> - 0 4 1 5 2. - <_> - 1 9 1 5 2. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 10 2 1 -1. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 6 2 1 -1. - <_> - 16 6 1 1 2. - 1 - <_> - - <_> - 2 6 1 2 -1. - <_> - 2 6 1 1 2. - 1 - <_> - - <_> - 13 8 4 7 -1. - <_> - 13 8 2 7 2. - <_> - - <_> - 1 8 4 7 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 0 9 18 4 -1. - <_> - 9 9 9 2 2. - <_> - 0 11 9 2 2. - <_> - - <_> - 8 6 3 2 -1. - <_> - 9 7 1 2 3. - 1 - <_> - - <_> - 8 7 8 4 -1. - <_> - 12 7 4 2 2. - <_> - 8 9 4 2 2. - <_> - - <_> - 1 12 9 3 -1. - <_> - 1 13 9 1 3. - <_> - - <_> - 13 13 1 2 -1. - <_> - 13 14 1 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 1 2. - <_> - 9 14 9 1 2. - <_> - - <_> - 7 11 8 4 -1. - <_> - 7 13 8 2 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 0 7 9 2 2. - <_> - 9 9 9 2 2. - <_> - - <_> - 5 2 9 6 -1. - <_> - 5 4 9 2 3. - <_> - - <_> - 6 5 6 4 -1. - <_> - 6 5 3 2 2. - <_> - 9 7 3 2 2. - <_> - - <_> - 6 0 9 9 -1. - <_> - 9 3 3 3 9. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 2 2. - <_> - 9 2 2 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 6 0 3 6 -1. - <_> - 4 2 3 2 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 1 0 3 1 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 10 0 3 15 -1. - <_> - 11 5 1 5 9. - <_> - - <_> - 5 0 3 15 -1. - <_> - 6 5 1 5 9. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 17 10 -1. - <_> - 0 5 17 5 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 12 5 3 5 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 2 2 2 -1. - <_> - 16 2 1 1 2. - <_> - 15 3 1 1 2. - <_> - - <_> - 3 3 9 6 -1. - <_> - 6 5 3 2 9. - <_> - - <_> - 6 3 11 2 -1. - <_> - 6 4 11 1 2. - <_> - - <_> - 1 2 2 2 -1. - <_> - 1 2 1 1 2. - <_> - 2 3 1 1 2. - <_> - - <_> - 14 1 4 2 -1. - <_> - 14 1 4 1 2. - 1 - <_> - - <_> - 4 1 2 4 -1. - <_> - 4 1 1 4 2. - 1 - <_> - - <_> - 8 4 4 6 -1. - <_> - 6 6 4 2 3. - 1 - <_> - - <_> - 14 0 4 4 -1. - <_> - 13 1 4 2 2. - 1 - <_> - - <_> - 0 9 8 4 -1. - <_> - 0 9 4 2 2. - <_> - 4 11 4 2 2. - <_> - - <_> - 15 8 3 3 -1. - <_> - 16 9 1 3 3. - 1 - <_> - - <_> - 2 7 14 4 -1. - <_> - 2 9 14 2 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 0 1 4 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 2 0 14 15 -1. - <_> - 2 0 7 15 2. - <_> - - <_> - 1 7 14 4 -1. - <_> - 1 9 14 2 2. - <_> - - <_> - 9 8 8 7 -1. - <_> - 11 8 4 7 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 1 2 4 2. - 1 - <_> - - <_> - 8 6 9 8 -1. - <_> - 11 6 3 8 3. - <_> - - <_> - 1 6 9 8 -1. - <_> - 4 6 3 8 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 7 1 2 3. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 0 1 9 7 2. - <_> - 9 8 9 7 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 1 2 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 4 4 10 6 -1. - <_> - 4 4 5 3 2. - <_> - 9 7 5 3 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 2 3 3 2 -1. - <_> - 3 4 1 2 3. - 1 - <_> - - <_> - 16 3 2 10 -1. - <_> - 16 8 2 5 2. - <_> - - <_> - 0 3 2 10 -1. - <_> - 0 8 2 5 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 1 7 10 2 -1. - <_> - 1 7 5 1 2. - <_> - 6 8 5 1 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 10 4 4 4 -1. - <_> - 11 5 2 4 2. - 1 - <_> - - <_> - 8 4 4 4 -1. - <_> - 7 5 4 2 2. - 1 - <_> - - <_> - 16 1 2 10 -1. - <_> - 16 1 1 10 2. - 1 - <_> - - <_> - 5 0 8 9 -1. - <_> - 7 0 4 9 2. - <_> - - <_> - 16 1 2 10 -1. - <_> - 16 1 1 10 2. - 1 - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 10 1 2. - 1 - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 6 0 6 6 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 6 6 3 2. - <_> - - <_> - 6 3 12 7 -1. - <_> - 6 3 6 7 2. - <_> - - <_> - 0 3 12 7 -1. - <_> - 6 3 6 7 2. - <_> - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - <_> - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - <_> - - <_> - 0 9 18 4 -1. - <_> - 0 11 18 2 2. - <_> - - <_> - 9 6 1 8 -1. - <_> - 9 6 1 4 2. - 1 - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 7 14 2 3. - <_> - - <_> - 2 0 5 8 -1. - <_> - 2 4 5 4 2. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 5 10 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 9 0 1 3 2. - <_> - - <_> - 15 6 1 3 -1. - <_> - 14 7 1 1 3. - 1 - <_> - - <_> - 3 6 3 4 -1. - <_> - 3 7 3 2 2. - <_> - - <_> - 9 4 8 10 -1. - <_> - 13 4 4 5 2. - <_> - 9 9 4 5 2. - <_> - - <_> - 3 8 3 3 -1. - <_> - 4 9 1 1 9. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 10 1 1 2. - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 8 4 2 10 -1. - <_> - 8 9 2 5 2. - <_> - - <_> - 7 7 4 4 -1. - <_> - 7 9 4 2 2. - <_> - - <_> - 14 0 2 10 -1. - <_> - 14 0 1 10 2. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 10 1 2. - 1 - <_> - - <_> - 16 4 2 3 -1. - <_> - 15 5 2 1 3. - 1 - <_> - - <_> - 4 12 9 3 -1. - <_> - 7 12 3 3 3. - <_> - - <_> - 16 4 2 3 -1. - <_> - 15 5 2 1 3. - 1 - <_> - - <_> - 2 1 14 4 -1. - <_> - 2 3 14 2 2. - <_> - - <_> - 9 1 4 2 -1. - <_> - 9 2 4 1 2. - <_> - - <_> - 1 3 12 4 -1. - <_> - 1 3 6 2 2. - <_> - 7 5 6 2 2. - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 1 3 8 2 -1. - <_> - 5 3 4 2 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 9 1 4 3. - 1 - <_> - - <_> - 3 8 4 3 -1. - <_> - 2 9 4 1 3. - 1 - <_> - - <_> - 15 12 2 3 -1. - <_> - 15 13 2 1 3. - <_> - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 15 12 2 3 -1. - <_> - 15 13 2 1 3. - <_> - - <_> - 1 12 2 3 -1. - <_> - 1 13 2 1 3. - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 9 0 6 8 2. - <_> - - <_> - 5 14 12 1 -1. - <_> - 8 14 6 1 2. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 8 13 8 2 -1. - <_> - 8 14 8 1 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 11 9 2 2. - <_> - 9 13 9 2 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 13 9 4 1 2. - <_> - 9 10 4 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 13 9 4 1 2. - <_> - 9 10 4 1 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 1 9 4 1 2. - <_> - 5 10 4 1 2. - <_> - - <_> - 11 7 1 3 -1. - <_> - 10 8 1 1 3. - 1 - <_> - - <_> - 7 7 3 1 -1. - <_> - 8 8 1 1 3. - 1 - <_> - - <_> - 10 0 3 8 -1. - <_> - 8 2 3 4 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 5 7 8 2 -1. - <_> - 5 8 8 1 2. - <_> - - <_> - 4 1 9 9 -1. - <_> - 7 4 3 3 9. - <_> - - <_> - 10 3 3 7 -1. - <_> - 11 4 1 7 3. - 1 - <_> - - <_> - 8 3 7 3 -1. - <_> - 7 4 7 1 3. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 6 4 1 2. - <_> - - <_> - 7 0 2 6 -1. - <_> - 7 3 2 3 2. - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 9 3 6 3 -1. - <_> - 11 5 2 3 3. - 1 - <_> - - <_> - 5 14 12 1 -1. - <_> - 8 14 6 1 2. - <_> - - <_> - 1 14 12 1 -1. - <_> - 4 14 6 1 2. - <_> - - <_> - 1 7 16 6 -1. - <_> - 1 9 16 2 3. - <_> - - <_> - 0 10 3 4 -1. - <_> - 0 11 3 2 2. - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 7 2 1 2. - <_> - - <_> - 8 1 1 4 -1. - <_> - 8 1 1 2 2. - 1 - <_> - - <_> - 14 1 4 3 -1. - <_> - 15 2 2 3 2. - 1 - <_> - - <_> - 2 6 2 4 -1. - <_> - 2 6 1 2 2. - <_> - 3 8 1 2 2. - <_> - - <_> - 15 5 3 10 -1. - <_> - 15 10 3 5 2. - <_> - - <_> - 3 9 6 4 -1. - <_> - 3 9 3 2 2. - <_> - 6 11 3 2 2. - <_> - - <_> - 13 3 3 7 -1. - <_> - 14 4 1 7 3. - 1 - <_> - - <_> - 6 2 7 4 -1. - <_> - 5 3 7 2 2. - 1 - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 14 4 3 5 -1. - <_> - 15 5 1 5 3. - 1 - <_> - - <_> - 5 4 5 2 -1. - <_> - 5 4 5 1 2. - 1 - <_> - - <_> - 10 7 1 6 -1. - <_> - 8 9 1 2 3. - 1 - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 9 2 1 3. - 1 - <_> - - <_> - 10 4 6 10 -1. - <_> - 13 4 3 5 2. - <_> - 10 9 3 5 2. - <_> - - <_> - 2 4 6 10 -1. - <_> - 2 4 3 5 2. - <_> - 5 9 3 5 2. - <_> - - <_> - 4 5 10 2 -1. - <_> - 9 5 5 1 2. - <_> - 4 6 5 1 2. - <_> - - <_> - 6 2 3 6 -1. - <_> - 7 3 1 6 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 2 2 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 2 2 2 2. - <_> - - <_> - 8 0 10 4 -1. - <_> - 8 2 10 2 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 0 0 12 2 -1. - <_> - 3 0 6 2 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 0 4 12 6 -1. - <_> - 3 4 6 6 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 2 3 14 6 -1. - <_> - 2 5 14 2 3. - <_> - - <_> - 4 2 3 8 -1. - <_> - 4 6 3 4 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 12 2 4 13 -1. - <_> - 13 2 2 13 2. - <_> - - <_> - 2 2 4 13 -1. - <_> - 3 2 2 13 2. - <_> - - <_> - 9 4 8 3 -1. - <_> - 9 4 4 3 2. - 1 - <_> - - <_> - 9 4 3 8 -1. - <_> - 9 4 3 4 2. - 1 - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 6 0 9 13 -1. - <_> - 9 0 3 13 3. - <_> - - <_> - 0 1 1 10 -1. - <_> - 0 6 1 5 2. - <_> - - <_> - 0 11 18 2 -1. - <_> - 0 12 18 1 2. - <_> - - <_> - 4 7 3 6 -1. - <_> - 5 9 1 2 9. - <_> - - <_> - 12 7 2 5 -1. - <_> - 12 7 1 5 2. - 1 - <_> - - <_> - 6 5 2 1 -1. - <_> - 7 5 1 1 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 11 2 3 1 2. - <_> - 8 3 3 1 2. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 0 1 18 14 -1. - <_> - 9 1 9 7 2. - <_> - 0 8 9 7 2. - <_> - - <_> - 0 9 6 6 -1. - <_> - 0 9 3 3 2. - <_> - 3 12 3 3 2. - <_> - - <_> - 8 9 10 6 -1. - <_> - 13 9 5 3 2. - <_> - 8 12 5 3 2. - <_> - - <_> - 1 10 15 3 -1. - <_> - 1 11 15 1 3. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 4 4 9 2 -1. - <_> - 7 7 3 2 3. - 1 - <_> - - <_> - 7 7 4 2 -1. - <_> - 7 8 4 1 2. - <_> - - <_> - 2 7 4 2 -1. - <_> - 2 7 2 1 2. - <_> - 4 8 2 1 2. - <_> - - <_> - 8 0 5 2 -1. - <_> - 8 1 5 1 2. - <_> - - <_> - 6 2 4 11 -1. - <_> - 7 2 2 11 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 7 8 4 4 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 5 0 8 1 -1. - <_> - 7 0 4 1 2. - <_> - - <_> - 4 0 6 8 -1. - <_> - 4 0 3 4 2. - <_> - 7 4 3 4 2. - <_> - - <_> - 5 1 9 9 -1. - <_> - 8 4 3 3 9. - <_> - - <_> - 0 4 4 10 -1. - <_> - 0 9 4 5 2. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 1 7 16 4 -1. - <_> - 1 8 16 2 2. - <_> - - <_> - 16 11 1 2 -1. - <_> - 16 11 1 1 2. - 1 - <_> - - <_> - 2 11 2 1 -1. - <_> - 2 11 1 1 2. - 1 - <_> - - <_> - 2 13 14 2 -1. - <_> - 2 14 14 1 2. - <_> - - <_> - 0 13 4 2 -1. - <_> - 0 13 2 1 2. - <_> - 2 14 2 1 2. - <_> - - <_> - 15 1 3 2 -1. - <_> - 15 1 3 1 2. - 1 - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 0 6 9 1 2. - <_> - 9 7 9 1 2. - <_> - - <_> - 15 13 2 2 -1. - <_> - 15 13 1 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 9 8 9 2 2. - <_> - 0 10 9 2 2. - <_> - - <_> - 8 4 2 4 -1. - <_> - 8 6 2 2 2. - <_> - - <_> - 3 4 12 9 -1. - <_> - 7 7 4 3 9. - <_> - - <_> - 9 1 4 7 -1. - <_> - 9 1 2 7 2. - 1 - <_> - - <_> - 11 0 4 2 -1. - <_> - 12 1 2 2 2. - 1 - <_> - - <_> - 7 0 2 4 -1. - <_> - 6 1 2 2 2. - 1 - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 2 0 2 1 -1. - <_> - 3 0 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 15 0 1 1 2. - <_> - 14 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 1 2. - <_> - 3 1 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 15 0 1 1 2. - <_> - 14 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 0 1 1 2. - <_> - 3 1 1 1 2. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 0 3 6 2 -1. - <_> - 3 3 3 2 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 1 13 2 2 -1. - <_> - 2 13 1 2 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 2 3 2 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 11 2 3 3 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 4 2 3 3 -1. - <_> - 4 3 3 1 3. - <_> - - <_> - 10 3 1 2 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 6 8 6 2 -1. - <_> - 6 9 6 1 2. - <_> - - <_> - 0 10 9 3 -1. - <_> - 3 10 3 3 3. - <_> - - <_> - 6 12 10 1 -1. - <_> - 6 12 5 1 2. - <_> - - <_> - 2 12 8 3 -1. - <_> - 6 12 4 3 2. - <_> - - <_> - 13 12 4 2 -1. - <_> - 14 12 2 2 2. - <_> - - <_> - 4 11 3 4 -1. - <_> - 4 12 3 2 2. - <_> - - <_> - 13 10 2 2 -1. - <_> - 13 10 1 2 2. - 1 - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 2 1 2. - 1 - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 2 2 9 3. - 1 - <_> - - <_> - 6 2 8 3 -1. - <_> - 8 4 4 3 2. - 1 - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 2 2 9 3. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 5 2 9 2 3. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 3 2 10 13 -1. - <_> - 8 2 5 13 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 5 0 7 8 -1. - <_> - 5 2 7 4 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 0 7 17 4 -1. - <_> - 0 9 17 2 2. - <_> - - <_> - 12 6 6 9 -1. - <_> - 12 9 6 3 3. - <_> - - <_> - 1 0 3 3 -1. - <_> - 2 0 1 3 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - <_> - - <_> - 9 0 1 3 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 0 4 18 2 -1. - <_> - 0 4 9 1 2. - <_> - 9 5 9 1 2. - <_> - - <_> - 5 2 12 4 -1. - <_> - 11 2 6 2 2. - <_> - 5 4 6 2 2. - <_> - - <_> - 1 2 12 4 -1. - <_> - 1 2 6 2 2. - <_> - 7 4 6 2 2. - <_> - - <_> - 15 4 1 8 -1. - <_> - 13 6 1 4 2. - 1 - <_> - - <_> - 3 4 8 1 -1. - <_> - 5 6 4 1 2. - 1 - <_> - - <_> - 9 8 8 2 -1. - <_> - 13 8 4 1 2. - <_> - 9 9 4 1 2. - <_> - - <_> - 4 8 6 2 -1. - <_> - 4 8 3 1 2. - <_> - 7 9 3 1 2. - <_> - - <_> - 3 3 12 2 -1. - <_> - 9 3 6 1 2. - <_> - 3 4 6 1 2. - <_> - - <_> - 4 1 1 4 -1. - <_> - 4 2 1 2 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - <_> - - <_> - 0 1 3 14 -1. - <_> - 1 1 1 14 3. - <_> - - <_> - 16 6 2 3 -1. - <_> - 15 7 2 1 3. - 1 - <_> - - <_> - 4 1 3 2 -1. - <_> - 4 2 3 1 2. - <_> - - <_> - 16 1 2 6 -1. - <_> - 17 1 1 3 2. - <_> - 16 4 1 3 2. - <_> - - <_> - 0 1 2 6 -1. - <_> - 0 1 1 3 2. - <_> - 1 4 1 3 2. - <_> - - <_> - 6 0 9 7 -1. - <_> - 9 0 3 7 3. - <_> - - <_> - 3 0 9 7 -1. - <_> - 6 0 3 7 3. - <_> - - <_> - 9 0 1 6 -1. - <_> - 9 0 1 3 2. - 1 - <_> - - <_> - 9 0 6 1 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 11 3 5 4 -1. - <_> - 11 5 5 2 2. - <_> - - <_> - 9 0 9 6 -1. - <_> - 7 2 9 2 3. - 1 - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 6 2 3 2. - 1 - <_> - - <_> - 7 3 4 7 -1. - <_> - 9 3 2 7 2. - <_> - - <_> - 12 1 4 6 -1. - <_> - 10 3 4 2 3. - 1 - <_> - - <_> - 4 1 4 14 -1. - <_> - 4 8 4 7 2. - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 7 2 1 9. - <_> - - <_> - 9 8 8 2 -1. - <_> - 13 8 4 1 2. - <_> - 9 9 4 1 2. - <_> - - <_> - 1 8 8 2 -1. - <_> - 1 8 4 1 2. - <_> - 5 9 4 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - <_> - - <_> - 6 4 5 8 -1. - <_> - 6 6 5 4 2. - <_> - - <_> - 1 8 16 6 -1. - <_> - 1 10 16 2 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 0 4 18 2 -1. - <_> - 9 4 9 1 2. - <_> - 0 5 9 1 2. - <_> - - <_> - 0 9 2 5 -1. - <_> - 1 9 1 5 2. - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 6 1 1 3. - 1 - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 7 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 7 1 2 2. - <_> - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - <_> - - <_> - 7 7 6 6 -1. - <_> - 9 9 2 2 9. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 2 9 16 3 -1. - <_> - 6 9 8 3 2. - <_> - - <_> - 3 4 3 2 -1. - <_> - 4 5 1 2 3. - 1 - <_> - - <_> - 15 5 3 3 -1. - <_> - 14 6 3 1 3. - 1 - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 6 1 3 3. - 1 - <_> - - <_> - 10 2 3 10 -1. - <_> - 11 2 1 10 3. - <_> - - <_> - 3 2 4 5 -1. - <_> - 4 2 2 5 2. - <_> - - <_> - 13 4 2 2 -1. - <_> - 13 4 1 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 2 1 2. - 1 - <_> - - <_> - 9 2 1 6 -1. - <_> - 9 4 1 2 3. - <_> - - <_> - 6 13 3 1 -1. - <_> - 7 13 1 1 3. - <_> - - <_> - 9 8 2 6 -1. - <_> - 10 8 1 3 2. - <_> - 9 11 1 3 2. - <_> - - <_> - 7 12 4 2 -1. - <_> - 8 12 2 2 2. - <_> - - <_> - 9 0 3 7 -1. - <_> - 10 1 1 7 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 3 3 6 2. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 8 3 3 -1. - <_> - 0 9 3 1 3. - <_> - - <_> - 9 2 1 3 -1. - <_> - 8 3 1 1 3. - 1 - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 13 2 4 6 -1. - <_> - 13 5 4 3 2. - <_> - - <_> - 1 2 4 6 -1. - <_> - 1 5 4 3 2. - <_> - - <_> - 4 0 12 11 -1. - <_> - 8 0 4 11 3. - <_> - - <_> - 0 1 12 14 -1. - <_> - 6 1 6 14 2. - <_> - - <_> - 10 5 8 9 -1. - <_> - 12 5 4 9 2. - <_> - - <_> - 0 12 18 2 -1. - <_> - 9 12 9 2 2. - <_> - - <_> - 8 14 2 1 -1. - <_> - 8 14 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 9 11 4 4 -1. - <_> - 10 11 2 4 2. - <_> - - <_> - 5 11 4 4 -1. - <_> - 6 11 2 4 2. - <_> - - <_> - 3 2 12 9 -1. - <_> - 7 5 4 3 9. - <_> - - <_> - 11 8 6 3 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 2 7 8 4 -1. - <_> - 4 7 4 4 2. - <_> - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 6 2 2 2. - 1 - <_> - - <_> - 0 2 4 2 -1. - <_> - 2 2 2 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 7 1 2 3. - 1 - <_> - - <_> - 8 6 2 3 -1. - <_> - 7 7 2 1 3. - 1 - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 1 2 2. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 5 3 8 6 -1. - <_> - 5 6 8 3 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 0 1 4 2. - 1 - <_> - - <_> - 4 5 10 4 -1. - <_> - 4 7 10 2 2. - <_> - - <_> - 10 14 6 1 -1. - <_> - 12 14 2 1 3. - <_> - - <_> - 5 0 3 6 -1. - <_> - 5 3 3 3 2. - <_> - - <_> - 7 0 6 2 -1. - <_> - 7 1 6 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 14 3 4 12 -1. - <_> - 14 9 4 6 2. - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 2 14 6 1 -1. - <_> - 4 14 2 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 8 0 10 15 -1. - <_> - 8 0 5 15 2. - <_> - - <_> - 0 0 10 15 -1. - <_> - 5 0 5 15 2. - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 9 1 9 2 -1. - <_> - 12 4 3 2 3. - 1 - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 3 5 12 10 -1. - <_> - 3 5 6 5 2. - <_> - 9 10 6 5 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 13 2 4 1 3. - 1 - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 9 0 5 8 2. - <_> - - <_> - 8 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 6 3 4 1 -1. - <_> - 8 3 2 1 2. - <_> - - <_> - 3 12 15 2 -1. - <_> - 3 13 15 1 2. - <_> - - <_> - 0 7 18 8 -1. - <_> - 0 9 18 4 2. - <_> - - <_> - 11 4 3 6 -1. - <_> - 11 6 3 2 3. - <_> - - <_> - 3 3 2 3 -1. - <_> - 2 4 2 1 3. - 1 - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 3 5 12 10 -1. - <_> - 3 5 6 10 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 8 0 2 5 3. - <_> - - <_> - 0 1 18 6 -1. - <_> - 0 1 9 3 2. - <_> - 9 4 9 3 2. - <_> - - <_> - 10 7 1 2 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 7 3 1 2. - <_> - 9 8 3 1 2. - <_> - - <_> - 12 6 1 6 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 5 9 4 2 -1. - <_> - 5 9 2 1 2. - <_> - 7 10 2 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 9 0 2 3 -1. - <_> - 8 1 2 1 3. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 15 1 2 2 2. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 0 9 3 2. - 1 - <_> - - <_> - 6 9 8 2 -1. - <_> - 10 9 4 1 2. - <_> - 6 10 4 1 2. - <_> - - <_> - 4 9 8 2 -1. - <_> - 4 9 4 1 2. - <_> - 8 10 4 1 2. - <_> - - <_> - 15 0 1 14 -1. - <_> - 15 7 1 7 2. - <_> - - <_> - 2 0 1 14 -1. - <_> - 2 7 1 7 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 17 10 1 4 -1. - <_> - 17 11 1 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 14 2 4 8 -1. - <_> - 14 6 4 4 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 5 7 8 6 -1. - <_> - 5 10 8 3 2. - <_> - - <_> - 0 2 16 8 -1. - <_> - 0 2 8 4 2. - <_> - 8 6 8 4 2. - <_> - - <_> - 14 10 4 4 -1. - <_> - 16 10 2 2 2. - <_> - 14 12 2 2 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 0 10 1 4 -1. - <_> - 0 11 1 2 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 11 18 2 3. - <_> - - <_> - 3 0 8 2 -1. - <_> - 3 0 8 1 2. - 1 - <_> - - <_> - 8 9 10 6 -1. - <_> - 13 9 5 3 2. - <_> - 8 12 5 3 2. - <_> - - <_> - 1 12 12 1 -1. - <_> - 5 12 4 1 3. - <_> - - <_> - 13 0 2 8 -1. - <_> - 11 2 2 4 2. - 1 - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 12 4 2 6 -1. - <_> - 12 6 2 2 3. - <_> - - <_> - 4 0 10 8 -1. - <_> - 9 0 5 8 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 13 11 3 4 -1. - <_> - 13 12 3 2 2. - <_> - - <_> - 2 11 3 4 -1. - <_> - 2 12 3 2 2. - <_> - - <_> - 8 13 7 2 -1. - <_> - 8 14 7 1 2. - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 1 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 16 0 1 4 -1. - <_> - 16 1 1 2 2. - <_> - - <_> - 1 0 1 4 -1. - <_> - 1 1 1 2 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 0 4 18 6 -1. - <_> - 0 6 18 2 3. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 1 8 16 2 -1. - <_> - 1 9 16 1 2. - <_> - - <_> - 3 4 8 2 -1. - <_> - 3 4 8 1 2. - 1 - <_> - - <_> - 6 0 9 11 -1. - <_> - 9 0 3 11 3. - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 4 0 12 11 -1. - <_> - 7 0 6 11 2. - <_> - - <_> - 2 0 12 11 -1. - <_> - 5 0 6 11 2. - <_> - - <_> - 11 2 6 4 -1. - <_> - 11 2 3 4 2. - <_> - - <_> - 5 1 2 2 -1. - <_> - 5 2 2 1 2. - <_> - - <_> - 10 3 2 6 -1. - <_> - 8 5 2 2 3. - 1 - <_> - - <_> - 4 2 8 4 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 11 1 2 8 -1. - <_> - 9 3 2 4 2. - 1 - <_> - - <_> - 0 1 18 14 -1. - <_> - 0 1 9 7 2. - <_> - 9 8 9 7 2. - <_> - - <_> - 13 5 5 10 -1. - <_> - 13 10 5 5 2. - <_> - - <_> - 9 3 6 2 -1. - <_> - 11 5 2 2 3. - 1 - <_> - - <_> - 9 0 7 8 -1. - <_> - 7 2 7 4 2. - 1 - <_> - - <_> - 9 0 8 7 -1. - <_> - 11 2 4 7 2. - 1 - <_> - - <_> - 13 2 4 3 -1. - <_> - 12 3 4 1 3. - 1 - <_> - - <_> - 5 2 3 4 -1. - <_> - 6 3 1 4 3. - 1 - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 2 3 13 6 -1. - <_> - 2 5 13 2 3. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 6 2 1 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 6 4 3 2. - <_> - - <_> - 1 9 16 2 -1. - <_> - 1 10 16 1 2. - <_> - - <_> - 5 5 6 4 -1. - <_> - 5 5 6 2 2. - 1 - <_> - - <_> - 13 0 2 8 -1. - <_> - 13 4 2 4 2. - <_> - - <_> - 3 0 2 8 -1. - <_> - 3 4 2 4 2. - <_> - - <_> - 16 1 2 3 -1. - <_> - 15 2 2 1 3. - 1 - <_> - - <_> - 1 3 3 1 -1. - <_> - 2 4 1 1 3. - 1 - <_> - - <_> - 13 4 5 10 -1. - <_> - 13 9 5 5 2. - <_> - - <_> - 0 4 5 10 -1. - <_> - 0 9 5 5 2. - <_> - - <_> - 16 5 2 3 -1. - <_> - 15 6 2 1 3. - 1 - <_> - - <_> - 2 5 3 2 -1. - <_> - 3 6 1 2 3. - 1 - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 1 5 4 9 -1. - <_> - 3 5 2 9 2. - <_> - - <_> - 10 1 8 9 -1. - <_> - 10 1 4 9 2. - <_> - - <_> - 0 1 8 9 -1. - <_> - 4 1 4 9 2. - <_> - - <_> - 10 10 8 4 -1. - <_> - 14 10 4 2 2. - <_> - 10 12 4 2 2. - <_> - - <_> - 0 9 8 4 -1. - <_> - 0 9 4 2 2. - <_> - 4 11 4 2 2. - <_> - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 13 9 1 2. - <_> - 9 14 9 1 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 3 13 8 2 -1. - <_> - 3 14 8 1 2. - <_> - - <_> - 4 13 10 2 -1. - <_> - 9 13 5 1 2. - <_> - 4 14 5 1 2. - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 0 2 9 2. - 1 - <_> - - <_> - 4 0 9 4 -1. - <_> - 4 0 9 2 2. - 1 - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - <_> - - <_> - 2 9 3 2 -1. - <_> - 3 10 1 2 3. - 1 - <_> - - <_> - 6 0 7 2 -1. - <_> - 6 1 7 1 2. - <_> - - <_> - 4 7 1 2 -1. - <_> - 4 8 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 0 5 6 3. - <_> - - <_> - 7 0 9 14 -1. - <_> - 10 0 3 14 3. - <_> - - <_> - 0 0 18 15 -1. - <_> - 6 0 6 15 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 0 11 8 4 -1. - <_> - 0 11 4 2 2. - <_> - 4 13 4 2 2. - <_> - - <_> - 16 12 2 3 -1. - <_> - 16 13 2 1 3. - <_> - - <_> - 0 10 8 4 -1. - <_> - 0 10 4 2 2. - <_> - 4 12 4 2 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 1 2 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 1 2 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 0 11 11 4 -1. - <_> - 0 13 11 2 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 10 5 2 3 2. - 1 - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 9 3 4 3 -1. - <_> - 10 4 2 3 2. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 4 3 2 2. - <_> - 9 6 3 2 2. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 4 1 9 3. - 1 - <_> - - <_> - 9 3 9 3 -1. - <_> - 8 4 9 1 3. - 1 - <_> - - <_> - 16 12 2 3 -1. - <_> - 16 13 2 1 3. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 13 1 3 13 -1. - <_> - 14 1 1 13 3. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 14 6 4 8 -1. - <_> - 14 10 4 4 2. - <_> - - <_> - 0 6 4 8 -1. - <_> - 0 10 4 4 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 6 13 -1. - <_> - 2 0 2 13 3. - <_> - - <_> - 5 14 12 1 -1. - <_> - 9 14 4 1 3. - <_> - - <_> - 7 2 9 2 -1. - <_> - 10 5 3 2 3. - 1 - <_> - - <_> - 6 1 6 12 -1. - <_> - 6 5 6 4 3. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 5 1 4 2. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 4 0 12 1 -1. - <_> - 4 0 6 1 2. - 1 - <_> - - <_> - 10 2 5 10 -1. - <_> - 10 7 5 5 2. - <_> - - <_> - 3 2 5 10 -1. - <_> - 3 7 5 5 2. - <_> - - <_> - 2 2 14 6 -1. - <_> - 2 4 14 2 3. - <_> - - <_> - 4 4 5 3 -1. - <_> - 4 5 5 1 3. - <_> - - <_> - 2 1 15 3 -1. - <_> - 7 2 5 1 9. - <_> - - <_> - 5 2 2 3 -1. - <_> - 6 2 1 3 2. - <_> - - <_> - 4 2 12 9 -1. - <_> - 8 5 4 3 9. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 0 6 11 -1. - <_> - 10 0 2 11 3. - <_> - - <_> - 1 1 3 1 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 0 1 6 -1. - <_> - 16 2 1 2 3. - <_> - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - <_> - - <_> - 15 6 3 2 -1. - <_> - 15 6 3 1 2. - 1 - <_> - - <_> - 3 6 2 3 -1. - <_> - 3 6 1 3 2. - 1 - <_> - - <_> - 0 0 18 4 -1. - <_> - 9 0 9 2 2. - <_> - 0 2 9 2 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 6 1 4 3. - 1 - <_> - - <_> - 13 1 4 12 -1. - <_> - 15 1 2 6 2. - <_> - 13 7 2 6 2. - <_> - - <_> - 3 1 2 14 -1. - <_> - 3 8 2 7 2. - <_> - - <_> - 7 6 5 3 -1. - <_> - 7 7 5 1 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 7 8 9 3 -1. - <_> - 10 9 3 1 9. - <_> - - <_> - 2 8 9 3 -1. - <_> - 5 9 3 1 9. - <_> - - <_> - 10 4 4 7 -1. - <_> - 11 4 2 7 2. - <_> - - <_> - 4 4 4 7 -1. - <_> - 5 4 2 7 2. - <_> - - <_> - 10 14 3 1 -1. - <_> - 11 14 1 1 3. - <_> - - <_> - 5 14 3 1 -1. - <_> - 6 14 1 1 3. - <_> - - <_> - 5 14 12 1 -1. - <_> - 9 14 4 1 3. - <_> - - <_> - 0 1 18 8 -1. - <_> - 0 1 9 4 2. - <_> - 9 5 9 4 2. - <_> - - <_> - 9 1 6 4 -1. - <_> - 9 1 6 2 2. - 1 - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 1 2 6 2. - 1 - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 0 8 11 -1. - <_> - 7 0 4 11 2. - <_> - - <_> - 7 7 6 3 -1. - <_> - 9 8 2 1 9. - <_> - - <_> - 4 0 6 9 -1. - <_> - 6 0 2 9 3. - <_> - - <_> - 10 0 3 2 -1. - <_> - 11 1 1 2 3. - 1 - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 6 4 6 11 -1. - <_> - 8 4 2 11 3. - <_> - - <_> - 10 8 3 3 -1. - <_> - 11 8 1 3 3. - <_> - - <_> - 8 1 9 2 -1. - <_> - 8 1 9 1 2. - 1 - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 0 9 18 6 -1. - <_> - 0 9 9 3 2. - <_> - 9 12 9 3 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 10 8 3 3 -1. - <_> - 11 8 1 3 3. - <_> - - <_> - 5 8 3 3 -1. - <_> - 6 8 1 3 3. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 8 1 2 3. - <_> - - <_> - 11 8 5 6 -1. - <_> - 11 10 5 2 3. - <_> - - <_> - 0 8 1 6 -1. - <_> - 0 10 1 2 3. - <_> - - <_> - 11 8 6 6 -1. - <_> - 11 10 6 2 3. - <_> - - <_> - 1 8 6 6 -1. - <_> - 1 10 6 2 3. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 5 3 9 9 -1. - <_> - 8 6 3 3 9. - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 8 1 2. - 1 - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 1 14 12 1 -1. - <_> - 5 14 4 1 3. - <_> - - <_> - 8 14 4 1 -1. - <_> - 9 14 2 1 2. - <_> - - <_> - 6 14 4 1 -1. - <_> - 7 14 2 1 2. - <_> - - <_> - 14 14 2 1 -1. - <_> - 14 14 1 1 2. - <_> - - <_> - 2 14 2 1 -1. - <_> - 3 14 1 1 2. - <_> - - <_> - 11 9 3 6 -1. - <_> - 12 9 1 6 3. - <_> - - <_> - 4 9 3 6 -1. - <_> - 5 9 1 6 3. - <_> - - <_> - 5 12 12 2 -1. - <_> - 5 13 12 1 2. - <_> - - <_> - 0 0 15 15 -1. - <_> - 5 0 5 15 3. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 1 1 4 2. - <_> - - <_> - 0 3 2 8 -1. - <_> - 0 3 1 4 2. - <_> - 1 7 1 4 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 14 0 4 6 -1. - <_> - 16 0 2 3 2. - <_> - 14 3 2 3 2. - <_> - - <_> - 3 3 12 2 -1. - <_> - 3 3 6 1 2. - <_> - 9 4 6 1 2. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - 1 - <_> - - <_> - 2 10 1 2 -1. - <_> - 2 10 1 1 2. - 1 - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 0 4 18 5 -1. - <_> - 6 4 6 5 3. - <_> - - <_> - 11 1 5 6 -1. - <_> - 9 3 5 2 3. - 1 - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 2 2 6 3. - 1 - <_> - - <_> - 4 4 14 4 -1. - <_> - 11 4 7 2 2. - <_> - 4 6 7 2 2. - <_> - - <_> - 0 4 14 4 -1. - <_> - 0 4 7 2 2. - <_> - 7 6 7 2 2. - <_> - - <_> - 10 7 6 4 -1. - <_> - 13 7 3 2 2. - <_> - 10 9 3 2 2. - <_> - - <_> - 2 7 6 4 -1. - <_> - 2 7 3 2 2. - <_> - 5 9 3 2 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - <_> - - <_> - 6 14 6 1 -1. - <_> - 9 14 3 1 2. - <_> - - <_> - 0 9 18 6 -1. - <_> - 9 9 9 3 2. - <_> - 0 12 9 3 2. - <_> - - <_> - 1 0 1 14 -1. - <_> - 1 7 1 7 2. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 3 8 3 1 3. - 1 - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 6 2 2 2 -1. - <_> - 7 2 1 2 2. - <_> - - <_> - 5 0 8 12 -1. - <_> - 7 0 4 12 2. - <_> - - <_> - 9 8 2 1 -1. - <_> - 9 8 1 1 2. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 7 8 4 4 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 7 1 1 3. - 1 - <_> - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - <_> - - <_> - 8 5 2 8 -1. - <_> - 8 5 2 4 2. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 4 0 8 1 -1. - <_> - 6 2 4 1 2. - 1 - <_> - - <_> - 9 0 4 10 -1. - <_> - 11 0 2 5 2. - <_> - 9 5 2 5 2. - <_> - - <_> - 4 2 10 2 -1. - <_> - 4 3 10 1 2. - <_> - - <_> - 11 0 3 4 -1. - <_> - 12 0 1 4 3. - <_> - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - <_> - - <_> - 11 0 3 4 -1. - <_> - 12 0 1 4 3. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 0 1 4 3. - <_> - - <_> - 10 0 3 3 -1. - <_> - 10 1 3 1 3. - <_> - - <_> - 5 0 3 3 -1. - <_> - 5 1 3 1 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 12 8 1 1 2. - <_> - 11 9 1 1 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 11 7 1 4 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 3 3 5 12 -1. - <_> - 3 6 5 6 2. - <_> - - <_> - 11 10 4 1 -1. - <_> - 11 10 2 1 2. - 1 - <_> - - <_> - 6 1 3 6 -1. - <_> - 4 3 3 2 3. - 1 - <_> - - <_> - 2 1 16 1 -1. - <_> - 6 1 8 1 2. - <_> - - <_> - 3 6 12 4 -1. - <_> - 3 6 6 2 2. - <_> - 9 8 6 2 2. - <_> - - <_> - 1 7 16 3 -1. - <_> - 1 8 16 1 3. - <_> - - <_> - 2 6 6 6 -1. - <_> - 4 8 2 2 9. - <_> - - <_> - 14 4 4 3 -1. - <_> - 14 5 4 1 3. - <_> - - <_> - 0 4 4 3 -1. - <_> - 0 5 4 1 3. - <_> - - <_> - 14 1 1 3 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 1 9 9 3 -1. - <_> - 4 9 3 3 3. - <_> - - <_> - 14 2 2 3 -1. - <_> - 14 2 1 3 2. - 1 - <_> - - <_> - 3 2 2 4 -1. - <_> - 3 2 1 2 2. - <_> - 4 4 1 2 2. - <_> - - <_> - 10 5 4 10 -1. - <_> - 12 5 2 5 2. - <_> - 10 10 2 5 2. - <_> - - <_> - 4 5 4 10 -1. - <_> - 4 5 2 5 2. - <_> - 6 10 2 5 2. - <_> - - <_> - 11 2 2 2 -1. - <_> - 11 2 2 1 2. - 1 - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 6 3 2 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 11 2 2 1 2. - 1 - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 2 2. - 1 - <_> - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 1 - <_> - - <_> - 2 0 9 14 -1. - <_> - 5 0 3 14 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 9 0 4 10 -1. - <_> - 11 0 2 5 2. - <_> - 9 5 2 5 2. - <_> - - <_> - 5 0 2 5 -1. - <_> - 5 0 1 5 2. - 1 - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 12 1 4 4 -1. - <_> - 12 1 2 4 2. - 1 - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 9 7 1 2 2. - <_> - 8 9 1 2 2. - <_> - - <_> - 1 5 16 2 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 5 0 8 12 -1. - <_> - 5 4 8 4 3. - <_> - - <_> - 2 2 12 9 -1. - <_> - 6 5 4 3 9. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - <_> - - <_> - 2 2 16 7 -1. - <_> - 6 2 8 7 2. - <_> - - <_> - 0 2 16 7 -1. - <_> - 4 2 8 7 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 16 13 1 2 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 1 13 1 2 2. - <_> - - <_> - 16 7 2 8 -1. - <_> - 17 7 1 4 2. - <_> - 16 11 1 4 2. - <_> - - <_> - 0 7 2 8 -1. - <_> - 0 7 1 4 2. - <_> - 1 11 1 4 2. - <_> - - <_> - 11 2 7 3 -1. - <_> - 11 3 7 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - <_> - - <_> - 10 5 6 4 -1. - <_> - 12 7 2 4 3. - 1 - <_> - - <_> - 9 7 2 1 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 0 3 18 8 -1. - <_> - 0 7 18 4 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 8 5 4 6 -1. - <_> - 6 7 4 2 3. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 16 3 1 2 2. - 1 - <_> - - <_> - 8 14 2 1 -1. - <_> - 9 14 1 1 2. - <_> - - <_> - 11 2 7 3 -1. - <_> - 11 3 7 1 3. - <_> - - <_> - 0 2 9 12 -1. - <_> - 0 5 9 6 2. - <_> - - <_> - 16 0 2 11 -1. - <_> - 16 0 1 11 2. - 1 - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 12 8 4 2 -1. - <_> - 12 8 2 2 2. - 1 - <_> - - <_> - 6 4 5 6 -1. - <_> - 4 6 5 2 3. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 16 2 1 3 2. - <_> - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - <_> - - <_> - 13 7 3 3 -1. - <_> - 14 8 1 1 9. - <_> - - <_> - 2 4 4 9 -1. - <_> - 4 4 2 9 2. - <_> - - <_> - 10 0 4 1 -1. - <_> - 10 0 2 1 2. - 1 - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 2 1 2. - 1 - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 2 0 14 15 -1. - <_> - 9 0 7 15 2. - <_> - - <_> - 13 4 4 3 -1. - <_> - 12 5 4 1 3. - 1 - <_> - - <_> - 3 6 12 8 -1. - <_> - 3 6 6 4 2. - <_> - 9 10 6 4 2. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 7 1 2 9. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 5 1 4 3. - 1 - <_> - - <_> - 12 7 3 3 -1. - <_> - 13 8 1 3 3. - 1 - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 8 3 4 -1. - <_> - 13 9 1 4 3. - 1 - <_> - - <_> - 6 8 4 3 -1. - <_> - 5 9 4 1 3. - 1 - <_> - - <_> - 3 0 12 4 -1. - <_> - 9 0 6 2 2. - <_> - 3 2 6 2 2. - <_> - - <_> - 3 2 12 12 -1. - <_> - 3 8 12 6 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 12 8 2 2 2. - <_> - - <_> - 5 6 1 6 -1. - <_> - 5 8 1 2 3. - <_> - - <_> - 17 1 1 14 -1. - <_> - 17 8 1 7 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 5 0 12 11 -1. - <_> - 9 0 4 11 3. - <_> - - <_> - 7 0 2 4 -1. - <_> - 7 0 2 2 2. - 1 - <_> - - <_> - 8 13 10 2 -1. - <_> - 13 13 5 1 2. - <_> - 8 14 5 1 2. - <_> - - <_> - 4 1 3 4 -1. - <_> - 3 2 3 2 2. - 1 - <_> - - <_> - 13 8 4 1 -1. - <_> - 14 8 2 1 2. - <_> - - <_> - 3 6 3 2 -1. - <_> - 4 7 1 2 3. - 1 - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 1 1 1 3. - 1 - <_> - - <_> - 3 2 3 3 -1. - <_> - 4 3 1 3 3. - 1 - <_> - - <_> - 13 0 3 1 -1. - <_> - 14 1 1 1 3. - 1 - <_> - - <_> - 2 11 2 2 -1. - <_> - 2 11 1 2 2. - 1 - <_> - - <_> - 2 11 16 2 -1. - <_> - 2 12 16 1 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 8 2 3 3. - 1 - <_> - - <_> - 2 12 16 3 -1. - <_> - 2 13 16 1 3. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 10 9 2 2. - <_> - 9 12 9 2 2. - <_> - - <_> - 6 12 9 2 -1. - <_> - 9 12 3 2 3. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 3 9 3 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 6 3 6 9 2. - <_> - - <_> - 3 4 12 6 -1. - <_> - 7 6 4 2 9. - <_> - - <_> - 8 0 8 3 -1. - <_> - 10 2 4 3 2. - 1 - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 1 1 1 2. - 1 - <_> - - <_> - 7 1 2 1 -1. - <_> - 7 1 1 1 2. - 1 - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 1 0 12 11 -1. - <_> - 5 0 4 11 3. - <_> - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - <_> - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 0 13 10 2 -1. - <_> - 0 13 5 1 2. - <_> - 5 14 5 1 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 3 6 1 2 -1. - <_> - 3 7 1 1 2. - <_> - - <_> - 7 7 4 2 -1. - <_> - 7 8 4 1 2. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 5 10 4 2 -1. - <_> - 5 10 2 1 2. - <_> - 7 11 2 1 2. - <_> - - <_> - 13 1 2 8 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 3 1 2 8 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 12 12 4 3 -1. - <_> - 13 12 2 3 2. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 8 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 2 12 4 3 -1. - <_> - 3 12 2 3 2. - <_> - - <_> - 9 5 1 6 -1. - <_> - 7 7 1 2 3. - 1 - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 3 6 12 4 -1. - <_> - 9 6 6 2 2. - <_> - 3 8 6 2 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 7 1 1 2 2. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 0 4 17 6 -1. - <_> - 0 6 17 2 3. - <_> - - <_> - 1 6 16 3 -1. - <_> - 1 7 16 1 3. - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 11 5 3 4 -1. - <_> - 12 6 1 4 3. - 1 - <_> - - <_> - 7 1 8 4 -1. - <_> - 7 1 4 4 2. - 1 - <_> - - <_> - 2 0 16 1 -1. - <_> - 6 0 8 1 2. - <_> - - <_> - 9 5 6 1 -1. - <_> - 11 7 2 1 3. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 9 0 8 7 -1. - <_> - 11 2 4 7 2. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 7 5 4 3 -1. - <_> - 6 6 4 1 3. - 1 - <_> - - <_> - 11 6 6 8 -1. - <_> - 13 6 2 8 3. - <_> - - <_> - 1 6 6 8 -1. - <_> - 3 6 2 8 3. - <_> - - <_> - 6 2 6 6 -1. - <_> - 6 5 6 3 2. - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 1 4 17 2 -1. - <_> - 1 5 17 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 12 9 4 2 -1. - <_> - 13 10 2 2 2. - 1 - <_> - - <_> - 6 9 2 4 -1. - <_> - 5 10 2 2 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 17 3 1 3 -1. - <_> - 16 4 1 1 3. - 1 - <_> - - <_> - 5 9 2 3 -1. - <_> - 4 10 2 1 3. - 1 - <_> - - <_> - 1 3 16 6 -1. - <_> - 1 5 16 2 3. - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 6 5 4 2 -1. - <_> - 6 5 2 2 2. - 1 - <_> - - <_> - 0 13 18 2 -1. - <_> - 0 14 18 1 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 7 5 6 1 3. - 1 - <_> - - <_> - 9 4 2 1 -1. - <_> - 9 4 1 1 2. - <_> - - <_> - 7 4 2 1 -1. - <_> - 8 4 1 1 2. - <_> - - <_> - 8 0 6 10 -1. - <_> - 10 0 2 10 3. - <_> - - <_> - 4 0 6 10 -1. - <_> - 6 0 2 10 3. - <_> - - <_> - 8 3 6 6 -1. - <_> - 10 5 2 2 9. - <_> - - <_> - 4 3 6 6 -1. - <_> - 6 5 2 2 9. - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 5 2 6 2. - 1 - <_> - - <_> - 9 5 6 4 -1. - <_> - 9 5 6 2 2. - 1 - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 3 2 1 2. - <_> - - <_> - 0 3 4 1 -1. - <_> - 1 3 2 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 3 2 1 2 3. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 1 13 16 2 -1. - <_> - 5 13 8 2 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 14 3 2 2 -1. - <_> - 15 3 1 1 2. - <_> - 14 4 1 1 2. - <_> - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - <_> - - <_> - 4 1 11 3 -1. - <_> - 4 2 11 1 3. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 4 1 1 2. - <_> - - <_> - 7 14 9 1 -1. - <_> - 10 14 3 1 3. - <_> - - <_> - 5 10 6 2 -1. - <_> - 5 10 3 1 2. - <_> - 8 11 3 1 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 9 10 9 1 2. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 11 15 4 -1. - <_> - 0 13 15 2 2. - <_> - - <_> - 2 12 16 3 -1. - <_> - 2 13 16 1 3. - <_> - - <_> - 0 0 16 1 -1. - <_> - 4 0 8 1 2. - <_> - - <_> - 6 5 12 5 -1. - <_> - 9 5 6 5 2. - <_> - - <_> - 0 5 12 5 -1. - <_> - 3 5 6 5 2. - <_> - - <_> - 8 11 9 3 -1. - <_> - 11 12 3 1 9. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 1 4 3 -1. - <_> - 7 1 2 3 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 3 0 7 2 -1. - <_> - 3 0 7 1 2. - 1 - <_> - - <_> - 3 5 12 4 -1. - <_> - 3 7 12 2 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 5 11 8 4 -1. - <_> - 7 11 4 4 2. - <_> - - <_> - 6 14 6 1 -1. - <_> - 8 14 2 1 3. - <_> - - <_> - 7 13 4 1 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 2 12 8 2 -1. - <_> - 4 12 4 2 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 16 11 1 2 3. - 1 - <_> - - <_> - 3 10 2 3 -1. - <_> - 2 11 2 1 3. - 1 - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 10 18 4 -1. - <_> - 0 12 18 2 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 16 1 2 4 -1. - <_> - 16 1 1 4 2. - 1 - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 1 4 1 2. - 1 - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - <_> - - <_> - 12 5 6 1 -1. - <_> - 12 5 3 1 2. - <_> - - <_> - 0 5 6 1 -1. - <_> - 3 5 3 1 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 9 3 4 1 2. - <_> - 5 4 4 1 2. - <_> - - <_> - 7 0 2 8 -1. - <_> - 8 0 1 8 2. - <_> - - <_> - 9 2 2 3 -1. - <_> - 9 2 1 3 2. - 1 - <_> - - <_> - 9 2 3 2 -1. - <_> - 9 2 3 1 2. - 1 - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 16 12 2 2 -1. - <_> - 17 12 1 1 2. - <_> - 16 13 1 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 0 4 1 2. - <_> - 9 1 4 1 2. - <_> - - <_> - 13 8 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 0 5 16 6 -1. - <_> - 0 7 16 2 3. - <_> - - <_> - 12 5 1 6 -1. - <_> - 12 7 1 2 3. - <_> - - <_> - 5 5 1 6 -1. - <_> - 5 7 1 2 3. - <_> - - <_> - 12 8 6 4 -1. - <_> - 15 8 3 2 2. - <_> - 12 10 3 2 2. - <_> - - <_> - 0 5 18 4 -1. - <_> - 0 5 9 2 2. - <_> - 9 7 9 2 2. - <_> - - <_> - 10 3 2 2 -1. - <_> - 11 3 1 1 2. - <_> - 10 4 1 1 2. - <_> - - <_> - 2 10 6 3 -1. - <_> - 4 11 2 1 9. - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 8 3 3 8 -1. - <_> - 8 3 3 4 2. - 1 - <_> - - <_> - 12 7 4 1 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 1 3 9 12 -1. - <_> - 4 7 3 4 9. - <_> - - <_> - 12 7 4 1 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 6 7 1 4 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 13 1 1 3 -1. - <_> - 13 2 1 1 3. - <_> - - <_> - 6 3 2 2 -1. - <_> - 6 3 1 1 2. - <_> - 7 4 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 6 2 3 2. - 1 - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 6 0 6 11 3. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 5 3 6 6 -1. - <_> - 5 3 3 3 2. - <_> - 8 6 3 3 2. - <_> - - <_> - 5 2 8 6 -1. - <_> - 7 2 4 6 2. - <_> - - <_> - 3 2 12 4 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 1 0 3 2 -1. - <_> - 2 0 1 2 3. - <_> - - <_> - 16 3 2 4 -1. - <_> - 17 3 1 2 2. - <_> - 16 5 1 2 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 0 3 1 2 2. - <_> - 1 5 1 2 2. - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 4 2 1 2. - 1 - <_> - - <_> - 5 5 6 6 -1. - <_> - 5 5 3 3 2. - <_> - 8 8 3 3 2. - <_> - - <_> - 8 3 2 10 -1. - <_> - 8 8 2 5 2. - <_> - - <_> - 4 3 1 4 -1. - <_> - 3 4 1 2 2. - 1 - <_> - - <_> - 11 8 6 1 -1. - <_> - 11 8 3 1 2. - 1 - <_> - - <_> - 7 8 1 6 -1. - <_> - 7 8 1 3 2. - 1 - <_> - - <_> - 6 13 12 1 -1. - <_> - 6 13 6 1 2. - <_> - - <_> - 0 13 16 2 -1. - <_> - 8 13 8 2 2. - <_> - - <_> - 10 9 4 4 -1. - <_> - 10 11 4 2 2. - <_> - - <_> - 4 1 7 3 -1. - <_> - 4 2 7 1 3. - <_> - - <_> - 11 2 2 2 -1. - <_> - 12 2 1 1 2. - <_> - 11 3 1 1 2. - <_> - - <_> - 5 2 2 2 -1. - <_> - 5 2 1 1 2. - <_> - 6 3 1 1 2. - <_> - - <_> - 6 13 8 2 -1. - <_> - 8 13 4 2 2. - <_> - - <_> - 4 13 8 2 -1. - <_> - 6 13 4 2 2. - <_> - - <_> - 4 3 12 9 -1. - <_> - 8 6 4 3 9. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 2 2 4 3. - 1 - <_> - - <_> - 13 8 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 5 8 4 1 -1. - <_> - 5 8 2 1 2. - 1 - <_> - - <_> - 4 1 12 5 -1. - <_> - 7 1 6 5 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 9 0 1 4 -1. - <_> - 8 1 1 2 2. - 1 - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - <_> - - <_> - 12 2 2 2 -1. - <_> - 13 2 1 1 2. - <_> - 12 3 1 1 2. - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 1 1 2. - <_> - 5 3 1 1 2. - <_> - - <_> - 7 0 5 4 -1. - <_> - 7 2 5 2 2. - <_> - - <_> - 9 3 1 6 -1. - <_> - 9 3 1 3 2. - 1 - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 7 2 2 2. - <_> - - <_> - 0 6 18 2 -1. - <_> - 0 6 9 1 2. - <_> - 9 7 9 1 2. - <_> - - <_> - 13 6 2 2 -1. - <_> - 14 6 1 1 2. - <_> - 13 7 1 1 2. - <_> - - <_> - 0 0 5 8 -1. - <_> - 0 4 5 4 2. - <_> - - <_> - 12 2 2 2 -1. - <_> - 12 2 2 1 2. - 1 - <_> - - <_> - 8 0 10 2 -1. - <_> - 8 0 10 1 2. - 1 - <_> - - <_> - 5 0 11 12 -1. - <_> - 5 4 11 4 3. - <_> - - <_> - 2 0 11 12 -1. - <_> - 2 4 11 4 3. - <_> - - <_> - 11 1 2 14 -1. - <_> - 12 1 1 7 2. - <_> - 11 8 1 7 2. - <_> - - <_> - 5 1 2 14 -1. - <_> - 5 1 1 7 2. - <_> - 6 8 1 7 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - 1 - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 3 0 15 14 -1. - <_> - 8 0 5 14 3. - <_> - - <_> - 4 0 9 13 -1. - <_> - 7 0 3 13 3. - <_> - - <_> - 7 5 4 9 -1. - <_> - 7 5 2 9 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - 1 - <_> - - <_> - 7 2 6 2 -1. - <_> - 10 2 3 1 2. - <_> - 7 3 3 1 2. - <_> - - <_> - 7 4 6 2 -1. - <_> - 9 6 2 2 3. - 1 - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 9 1 2 3. - 1 - <_> - - <_> - 7 8 2 3 -1. - <_> - 6 9 2 1 3. - 1 - <_> - - <_> - 12 14 4 1 -1. - <_> - 12 14 2 1 2. - <_> - - <_> - 2 14 4 1 -1. - <_> - 4 14 2 1 2. - <_> - - <_> - 12 11 4 4 -1. - <_> - 14 11 2 2 2. - <_> - 12 13 2 2 2. - <_> - - <_> - 6 12 1 3 -1. - <_> - 6 13 1 1 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 3 10 4 4 -1. - <_> - 3 11 4 2 2. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 6 13 1 2 -1. - <_> - 6 14 1 1 2. - <_> - - <_> - 7 7 10 4 -1. - <_> - 12 7 5 2 2. - <_> - 7 9 5 2 2. - <_> - - <_> - 1 7 10 4 -1. - <_> - 1 7 5 2 2. - <_> - 6 9 5 2 2. - <_> - - <_> - 0 4 18 4 -1. - <_> - 6 4 6 4 3. - <_> - - <_> - 2 11 4 4 -1. - <_> - 2 11 2 2 2. - <_> - 4 13 2 2 2. - <_> - - <_> - 9 14 6 1 -1. - <_> - 11 14 2 1 3. - <_> - - <_> - 3 14 6 1 -1. - <_> - 5 14 2 1 3. - <_> - - <_> - 11 12 3 1 -1. - <_> - 12 12 1 1 3. - <_> - - <_> - 4 12 3 1 -1. - <_> - 5 12 1 1 3. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 5 3 6 4 -1. - <_> - 5 4 6 2 2. - <_> - - <_> - 4 3 12 9 -1. - <_> - 8 6 4 3 9. - <_> - - <_> - 4 6 10 2 -1. - <_> - 4 7 10 1 2. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 4 5 1 2 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 11 4 4 2 -1. - <_> - 11 5 4 1 2. - <_> - - <_> - 3 4 4 2 -1. - <_> - 3 5 4 1 2. - <_> - - <_> - 5 4 8 2 -1. - <_> - 9 4 4 1 2. - <_> - 5 5 4 1 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 2 2. - 1 - <_> - - <_> - 14 3 2 11 -1. - <_> - 14 3 1 11 2. - <_> - - <_> - 2 3 2 11 -1. - <_> - 3 3 1 11 2. - <_> - - <_> - 14 6 4 3 -1. - <_> - 15 6 2 3 2. - <_> - - <_> - 0 6 4 5 -1. - <_> - 1 6 2 5 2. - <_> - - <_> - 11 0 6 3 -1. - <_> - 13 0 2 3 3. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 2 2. - 1 - <_> - - <_> - 13 3 1 6 -1. - <_> - 13 5 1 2 3. - <_> - - <_> - 4 4 4 4 -1. - <_> - 5 4 2 4 2. - <_> - - <_> - 8 1 3 9 -1. - <_> - 9 4 1 3 9. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 5 1 1 3. - 1 - <_> - - <_> - 6 2 9 9 -1. - <_> - 9 5 3 3 9. - <_> - - <_> - 3 2 9 9 -1. - <_> - 6 5 3 3 9. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 1 3 14 4 -1. - <_> - 1 3 7 2 2. - <_> - 8 5 7 2 2. - <_> - - <_> - 0 0 18 8 -1. - <_> - 9 0 9 4 2. - <_> - 0 4 9 4 2. - <_> - - <_> - 5 10 2 2 -1. - <_> - 5 10 1 1 2. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 8 2 3 -1. - <_> - 8 9 2 1 3. - 1 - <_> - - <_> - 9 8 3 2 -1. - <_> - 10 9 1 2 3. - 1 - <_> - - <_> - 9 0 6 9 -1. - <_> - 9 0 3 9 2. - 1 - <_> - - <_> - 9 0 9 6 -1. - <_> - 9 0 9 3 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 9 4 2 2 2. - <_> - - <_> - 0 2 18 1 -1. - <_> - 9 2 9 1 2. - <_> - - <_> - 9 10 6 3 -1. - <_> - 11 11 2 1 9. - <_> - - <_> - 0 3 8 4 -1. - <_> - 0 5 8 2 2. - <_> - - <_> - 14 3 3 8 -1. - <_> - 14 5 3 4 2. - <_> - - <_> - 5 0 2 1 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 13 1 2 2 -1. - <_> - 14 1 1 1 2. - <_> - 13 2 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 1 1 1 2. - <_> - 4 2 1 1 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 0 2 1 2. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 0 1 1 2. - 1 - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 16 0 1 8 -1. - <_> - 16 2 1 4 2. - <_> - - <_> - 1 0 1 8 -1. - <_> - 1 2 1 4 2. - <_> - - <_> - 8 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 2 0 12 15 -1. - <_> - 5 0 6 15 2. - <_> - - <_> - 11 2 6 4 -1. - <_> - 11 2 3 4 2. - <_> - - <_> - 4 2 8 6 -1. - <_> - 4 2 4 3 2. - <_> - 8 5 4 3 2. - <_> - - <_> - 10 1 1 4 -1. - <_> - 9 2 1 2 2. - 1 - <_> - - <_> - 9 0 7 6 -1. - <_> - 7 2 7 2 3. - 1 - <_> - - <_> - 10 6 8 2 -1. - <_> - 10 6 4 2 2. - <_> - - <_> - 0 0 17 9 -1. - <_> - 0 3 17 3 3. - <_> - - <_> - 7 0 5 6 -1. - <_> - 7 3 5 3 2. - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 1 4 2 2. - <_> - 9 3 4 2 2. - <_> - - <_> - 9 0 3 9 -1. - <_> - 9 3 3 3 3. - <_> - - <_> - 9 2 4 2 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 4 2 11 8 -1. - <_> - 4 4 11 4 2. - <_> - - <_> - 1 4 16 6 -1. - <_> - 1 6 16 2 3. - <_> - - <_> - 10 6 8 2 -1. - <_> - 10 6 4 2 2. - <_> - - <_> - 0 6 8 2 -1. - <_> - 4 6 4 2 2. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 0 7 3 3 -1. - <_> - 0 8 3 1 3. - <_> - - <_> - 17 5 1 3 -1. - <_> - 16 6 1 1 3. - 1 - <_> - - <_> - 1 5 3 1 -1. - <_> - 2 6 1 1 3. - 1 - <_> - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 17 1 1 12 -1. - <_> - 17 7 1 6 2. - <_> - - <_> - 0 1 1 12 -1. - <_> - 0 7 1 6 2. - <_> - - <_> - 0 6 18 4 -1. - <_> - 0 7 18 2 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 6 7 6 2 -1. - <_> - 6 8 6 1 2. - <_> - - <_> - 0 9 3 1 -1. - <_> - 1 9 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - <_> - - <_> - 3 10 6 3 -1. - <_> - 5 11 2 1 9. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 2 5 14 2 -1. - <_> - 2 5 7 1 2. - <_> - 9 6 7 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 14 4 3 2 -1. - <_> - 14 5 3 1 2. - <_> - - <_> - 1 4 3 2 -1. - <_> - 1 5 3 1 2. - <_> - - <_> - 15 3 3 11 -1. - <_> - 16 3 1 11 3. - <_> - - <_> - 0 3 3 11 -1. - <_> - 1 3 1 11 3. - <_> - - <_> - 14 5 2 2 -1. - <_> - 15 5 1 1 2. - <_> - 14 6 1 1 2. - <_> - - <_> - 2 5 2 2 -1. - <_> - 2 5 1 1 2. - <_> - 3 6 1 1 2. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 17 9 1 1 3. - <_> - - <_> - 0 8 1 3 -1. - <_> - 0 9 1 1 3. - <_> - - <_> - 16 6 2 4 -1. - <_> - 17 6 1 2 2. - <_> - 16 8 1 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 6 1 2 2. - <_> - 1 8 1 2 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - <_> - - <_> - 5 1 6 2 -1. - <_> - 5 1 3 1 2. - <_> - 8 2 3 1 2. - <_> - - <_> - 10 1 2 2 -1. - <_> - 11 1 1 1 2. - <_> - 10 2 1 1 2. - <_> - - <_> - 6 1 2 2 -1. - <_> - 6 1 1 1 2. - <_> - 7 2 1 1 2. - <_> - - <_> - 10 1 6 3 -1. - <_> - 10 1 3 3 2. - <_> - - <_> - 2 1 6 3 -1. - <_> - 5 1 3 3 2. - <_> - - <_> - 12 0 6 3 -1. - <_> - 14 0 2 3 3. - <_> - - <_> - 0 0 6 3 -1. - <_> - 2 0 2 3 3. - <_> - - <_> - 13 8 4 2 -1. - <_> - 15 8 2 1 2. - <_> - 13 9 2 1 2. - <_> - - <_> - 1 8 4 2 -1. - <_> - 1 8 2 1 2. - <_> - 3 9 2 1 2. - <_> - - <_> - 9 6 1 6 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 10 0 6 6 -1. - <_> - 12 2 2 2 9. - <_> - - <_> - 5 0 4 8 -1. - <_> - 7 0 2 8 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 4 7 1 3 -1. - <_> - 4 8 1 1 3. - <_> - - <_> - 15 5 1 3 -1. - <_> - 14 6 1 1 3. - 1 - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 0 9 18 4 -1. - <_> - 9 9 9 2 2. - <_> - 0 11 9 2 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 0 7 4 -1. - <_> - 8 2 7 2 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 0 6 2 2. - <_> - 9 2 6 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 0 2 2 2. - <_> - 9 2 2 2 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 9 2 1 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 9 2 1 2. - <_> - - <_> - 11 5 4 10 -1. - <_> - 11 5 2 10 2. - <_> - - <_> - 3 5 4 10 -1. - <_> - 5 5 2 10 2. - <_> - - <_> - 1 10 16 3 -1. - <_> - 5 10 8 3 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 0 5 18 8 -1. - <_> - 9 5 9 4 2. - <_> - 0 9 9 4 2. - <_> - - <_> - 0 3 3 9 -1. - <_> - 0 6 3 3 3. - <_> - - <_> - 9 3 8 2 -1. - <_> - 9 4 8 1 2. - <_> - - <_> - 0 3 18 2 -1. - <_> - 0 3 9 1 2. - <_> - 9 4 9 1 2. - <_> - - <_> - 6 11 8 4 -1. - <_> - 8 11 4 4 2. - <_> - - <_> - 2 4 3 2 -1. - <_> - 3 5 1 2 3. - 1 - <_> - - <_> - 14 4 4 6 -1. - <_> - 14 7 4 3 2. - <_> - - <_> - 9 0 9 3 -1. - <_> - 8 1 9 1 3. - 1 - <_> - - <_> - 6 11 8 4 -1. - <_> - 8 11 4 4 2. - <_> - - <_> - 4 11 8 4 -1. - <_> - 6 11 4 4 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 4 4 6 2 -1. - <_> - 6 6 2 2 3. - 1 - <_> - - <_> - 9 3 6 4 -1. - <_> - 11 5 2 4 3. - 1 - <_> - - <_> - 9 3 4 6 -1. - <_> - 7 5 4 2 3. - 1 - <_> - - <_> - 3 1 15 14 -1. - <_> - 3 8 15 7 2. - <_> - - <_> - 0 1 4 14 -1. - <_> - 0 8 4 7 2. - <_> - - <_> - 12 0 2 2 -1. - <_> - 12 0 1 2 2. - 1 - <_> - - <_> - 6 0 2 2 -1. - <_> - 6 0 2 1 2. - 1 - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 14 6 4 5 -1. - <_> - 14 6 2 5 2. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 1 8 16 3 -1. - <_> - 1 9 16 1 3. - <_> - - <_> - 1 10 16 2 -1. - <_> - 1 11 16 1 2. - <_> - - <_> - 14 6 4 5 -1. - <_> - 14 6 2 5 2. - 1 - <_> - - <_> - 4 6 5 4 -1. - <_> - 4 6 5 2 2. - 1 - <_> - - <_> - 15 1 1 2 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 2 1 10 2 -1. - <_> - 2 1 10 1 2. - 1 - <_> - - <_> - 10 0 6 9 -1. - <_> - 12 2 2 9 3. - 1 - <_> - - <_> - 4 9 3 3 -1. - <_> - 4 10 3 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 10 1 3 2 2. - <_> - - <_> - 1 10 2 1 -1. - <_> - 1 10 1 1 2. - 1 - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 12 1 1 3. - 1 - <_> - - <_> - 3 11 1 3 -1. - <_> - 2 12 1 1 3. - 1 - <_> - - <_> - 10 0 6 9 -1. - <_> - 12 2 2 9 3. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 6 2 9 2 3. - 1 - <_> - - <_> - 7 10 6 2 -1. - <_> - 10 10 3 1 2. - <_> - 7 11 3 1 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 5 1 2 3. - <_> - - <_> - 16 0 1 3 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 1 3 1 2. - <_> - - <_> - 16 0 1 3 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 1 0 1 3 -1. - <_> - 1 1 1 1 3. - <_> - - <_> - 10 3 8 2 -1. - <_> - 10 3 4 2 2. - <_> - - <_> - 0 3 8 2 -1. - <_> - 4 3 4 2 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 0 0 9 1 2. - <_> - 9 1 9 1 2. - <_> - - <_> - 12 3 2 12 -1. - <_> - 12 9 2 6 2. - <_> - - <_> - 4 3 2 12 -1. - <_> - 4 9 2 6 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 10 10 3 1 2. - <_> - 7 11 3 1 2. - <_> - - <_> - 6 4 7 2 -1. - <_> - 6 4 7 1 2. - 1 - <_> - - <_> - 13 13 4 1 -1. - <_> - 13 13 2 1 2. - <_> - - <_> - 4 9 6 2 -1. - <_> - 4 9 3 1 2. - <_> - 7 10 3 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 7 9 4 1 2. - <_> - - <_> - 1 13 4 1 -1. - <_> - 3 13 2 1 2. - <_> - - <_> - 12 10 1 3 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 0 3 1 2. - <_> - 9 1 3 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 8 0 3 4 -1. - <_> - 8 1 3 2 2. - <_> - - <_> - 6 7 1 3 -1. - <_> - 6 8 1 1 3. - <_> - - <_> - 4 8 10 4 -1. - <_> - 9 8 5 2 2. - <_> - 4 10 5 2 2. - <_> - - <_> - 0 9 18 2 -1. - <_> - 0 10 18 1 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 3 5 12 6 -1. - <_> - 7 7 4 2 9. - <_> - - <_> - 6 4 6 4 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 9 0 7 8 -1. - <_> - 7 2 7 4 2. - 1 - <_> - - <_> - 6 6 6 2 -1. - <_> - 6 7 6 1 2. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 4 8 3 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 8 1 7 1 3. - 1 - <_> - - <_> - 14 5 4 4 -1. - <_> - 14 7 4 2 2. - <_> - - <_> - 0 11 18 4 -1. - <_> - 0 13 18 2 2. - <_> - - <_> - 1 13 16 2 -1. - <_> - 1 14 16 1 2. - <_> - - <_> - 2 0 6 10 -1. - <_> - 2 0 3 5 2. - <_> - 5 5 3 5 2. - <_> - - <_> - 14 3 4 3 -1. - <_> - 13 4 4 1 3. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 5 4 1 3 3. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 7 7 4 1 -1. - <_> - 8 8 2 1 2. - 1 - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 4 0 2 10 -1. - <_> - 4 5 2 5 2. - <_> - - <_> - 16 2 2 3 -1. - <_> - 15 3 2 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 10 0 2 8 -1. - <_> - 8 2 2 4 2. - 1 - <_> - - <_> - 0 0 15 13 -1. - <_> - 5 0 5 13 3. - <_> - - <_> - 5 6 12 9 -1. - <_> - 8 6 6 9 2. - <_> - - <_> - 1 6 12 9 -1. - <_> - 4 6 6 9 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 3 2 1 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 4 0 10 13 -1. - <_> - 9 0 5 13 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 17 5 1 1 2. - <_> - 16 6 1 1 2. - <_> - - <_> - 0 5 2 2 -1. - <_> - 0 5 1 1 2. - <_> - 1 6 1 1 2. - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 0 13 2 2 -1. - <_> - 0 13 1 1 2. - <_> - 1 14 1 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 17 10 1 1 2. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 7 7 5 2 -1. - <_> - 7 8 5 1 2. - <_> - - <_> - 8 3 9 3 -1. - <_> - 11 6 3 3 3. - 1 - <_> - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 11 2 1 10 -1. - <_> - 11 2 1 5 2. - 1 - <_> - - <_> - 7 2 10 1 -1. - <_> - 7 2 5 1 2. - 1 - <_> - - <_> - 13 0 2 2 -1. - <_> - 14 0 1 1 2. - <_> - 13 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 14 0 1 1 2. - <_> - 13 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 9 2 1 9. - <_> - - <_> - 5 10 1 3 -1. - <_> - 5 11 1 1 3. - <_> - - <_> - 17 7 1 6 -1. - <_> - 17 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 11 4 3 9 -1. - <_> - 12 7 1 3 9. - <_> - - <_> - 0 5 1 2 -1. - <_> - 0 6 1 1 2. - <_> - - <_> - 7 10 8 2 -1. - <_> - 11 10 4 1 2. - <_> - 7 11 4 1 2. - <_> - - <_> - 3 10 8 2 -1. - <_> - 3 10 4 1 2. - <_> - 7 11 4 1 2. - <_> - - <_> - 10 5 3 6 -1. - <_> - 8 7 3 2 3. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 7 2 3 3. - 1 - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 8 0 9 4 -1. - <_> - 7 1 9 2 2. - 1 - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 6 2 1 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 6 0 7 3 -1. - <_> - 6 1 7 1 3. - <_> - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - <_> - - <_> - 15 2 3 2 -1. - <_> - 15 2 3 1 2. - 1 - <_> - - <_> - 3 2 2 3 -1. - <_> - 3 2 1 3 2. - 1 - <_> - - <_> - 14 0 2 14 -1. - <_> - 14 0 1 14 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 7 5 4 2 9. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 3 1 1 2. - 1 - <_> - - <_> - 8 0 9 6 -1. - <_> - 8 0 9 3 2. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 1 1 2 3. - 1 - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 3 12 12 2 -1. - <_> - 3 13 12 1 2. - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - 1 - <_> - - <_> - 2 12 1 2 -1. - <_> - 2 12 1 1 2. - 1 - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 4 10 1 4 -1. - <_> - 3 11 1 2 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 11 5 2 1 -1. - <_> - 11 5 1 1 2. - <_> - - <_> - 9 0 7 4 -1. - <_> - 8 1 7 2 2. - 1 - <_> - - <_> - 11 4 2 2 -1. - <_> - 11 4 1 2 2. - <_> - - <_> - 5 4 2 2 -1. - <_> - 6 4 1 2 2. - <_> - - <_> - 7 4 6 3 -1. - <_> - 9 5 2 1 9. - <_> - - <_> - 5 4 4 7 -1. - <_> - 6 4 2 7 2. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 4 3 8 4 -1. - <_> - 4 3 8 2 2. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 7 8 3 2 -1. - <_> - 7 8 3 1 2. - 1 - <_> - - <_> - 8 3 6 9 -1. - <_> - 10 6 2 3 9. - <_> - - <_> - 7 4 4 6 -1. - <_> - 7 4 2 3 2. - <_> - 9 7 2 3 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 13 3 4 10 -1. - <_> - 13 3 2 10 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - <_> - - <_> - 4 3 2 6 -1. - <_> - 4 5 2 2 3. - <_> - - <_> - 14 3 1 6 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 11 2 4 4 2. - 1 - <_> - - <_> - 12 4 2 2 -1. - <_> - 12 5 2 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 14 0 2 15 -1. - <_> - 14 0 1 15 2. - <_> - - <_> - 2 0 2 15 -1. - <_> - 3 0 1 15 2. - <_> - - <_> - 11 1 6 6 -1. - <_> - 11 1 3 6 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 1 9. - <_> - - <_> - 0 5 16 6 -1. - <_> - 4 5 8 6 2. - <_> - - <_> - 4 0 12 15 -1. - <_> - 7 0 6 15 2. - <_> - - <_> - 0 5 16 10 -1. - <_> - 8 5 8 10 2. - <_> - - <_> - 9 9 1 3 -1. - <_> - 8 10 1 1 3. - 1 - <_> - - <_> - 9 9 3 1 -1. - <_> - 10 10 1 1 3. - 1 - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 2 6 14 3 -1. - <_> - 2 7 14 1 3. - <_> - - <_> - 6 6 6 3 -1. - <_> - 8 7 2 1 9. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 12 11 1 2 -1. - <_> - 12 12 1 1 2. - <_> - - <_> - 5 11 1 2 -1. - <_> - 5 12 1 1 2. - <_> - - <_> - 13 9 3 3 -1. - <_> - 14 10 1 1 9. - <_> - - <_> - 0 3 12 11 -1. - <_> - 3 3 6 11 2. - <_> - - <_> - 7 12 9 3 -1. - <_> - 10 12 3 3 3. - <_> - - <_> - 3 8 2 6 -1. - <_> - 3 10 2 2 3. - <_> - - <_> - 12 3 6 12 -1. - <_> - 12 9 6 6 2. - <_> - - <_> - 2 13 12 2 -1. - <_> - 8 13 6 2 2. - <_> - - <_> - 8 12 8 3 -1. - <_> - 8 12 4 3 2. - <_> - - <_> - 2 12 8 3 -1. - <_> - 6 12 4 3 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 1 2 2. - 1 - <_> - - <_> - 5 4 2 2 -1. - <_> - 5 4 1 1 2. - <_> - 6 5 1 1 2. - <_> - - <_> - 11 0 2 4 -1. - <_> - 11 1 2 2 2. - <_> - - <_> - 8 0 2 2 -1. - <_> - 8 0 2 1 2. - 1 - <_> - - <_> - 5 0 8 4 -1. - <_> - 7 0 4 4 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 10 3 6 4 -1. - <_> - 10 3 3 4 2. - <_> - - <_> - 2 3 6 4 -1. - <_> - 5 3 3 4 2. - <_> - - <_> - 1 2 16 13 -1. - <_> - 5 2 8 13 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 10 8 8 7 -1. - <_> - 12 8 4 7 2. - <_> - - <_> - 0 8 8 7 -1. - <_> - 2 8 4 7 2. - <_> - - <_> - 11 8 6 3 -1. - <_> - 13 9 2 1 9. - <_> - - <_> - 1 8 6 3 -1. - <_> - 3 9 2 1 9. - <_> - - <_> - 1 0 16 12 -1. - <_> - 1 6 16 6 2. - <_> - - <_> - 9 0 5 4 -1. - <_> - 9 0 5 2 2. - 1 - <_> - - <_> - 7 0 4 10 -1. - <_> - 7 0 2 10 2. - <_> - - <_> - 7 4 3 2 -1. - <_> - 8 5 1 2 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 0 6 9 3 -1. - <_> - 3 7 3 1 9. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 5 7 8 2 -1. - <_> - 9 7 4 1 2. - <_> - 5 8 4 1 2. - <_> - - <_> - 6 4 3 9 -1. - <_> - 7 4 1 9 3. - <_> - - <_> - 12 4 3 7 -1. - <_> - 13 4 1 7 3. - <_> - - <_> - 3 4 3 7 -1. - <_> - 4 4 1 7 3. - <_> - - <_> - 4 12 10 3 -1. - <_> - 4 13 10 1 3. - <_> - - <_> - 4 13 8 2 -1. - <_> - 4 14 8 1 2. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 6 5 6 2. - <_> - - <_> - 0 0 6 8 -1. - <_> - 0 2 6 4 2. - <_> - - <_> - 14 5 3 3 -1. - <_> - 13 6 3 1 3. - 1 - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 3 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 7 3 6 2 -1. - <_> - 7 3 3 2 2. - <_> - - <_> - 9 0 9 2 -1. - <_> - 12 3 3 2 3. - 1 - <_> - - <_> - 7 3 6 2 -1. - <_> - 7 3 3 2 2. - <_> - - <_> - 5 3 6 2 -1. - <_> - 8 3 3 2 2. - <_> - - <_> - 13 3 5 12 -1. - <_> - 13 6 5 6 2. - <_> - - <_> - 0 3 5 12 -1. - <_> - 0 6 5 6 2. - <_> - - <_> - 4 14 10 1 -1. - <_> - 4 14 5 1 2. - <_> - - <_> - 2 12 9 3 -1. - <_> - 5 12 3 3 3. - <_> - - <_> - 2 9 14 4 -1. - <_> - 2 11 14 2 2. - <_> - - <_> - 0 2 18 8 -1. - <_> - 0 4 18 4 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 7 1 1 1 3. - <_> - - <_> - 4 0 11 3 -1. - <_> - 4 1 11 1 3. - <_> - - <_> - 0 9 10 6 -1. - <_> - 0 9 5 3 2. - <_> - 5 12 5 3 2. - <_> - - <_> - 0 4 18 9 -1. - <_> - 6 4 6 9 3. - <_> - - <_> - 2 4 12 9 -1. - <_> - 6 7 4 3 9. - <_> - - <_> - 6 7 6 6 -1. - <_> - 6 10 6 3 2. - <_> - - <_> - 0 9 3 6 -1. - <_> - 0 12 3 3 2. - <_> - - <_> - 8 8 3 2 -1. - <_> - 8 9 3 1 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 8 2 5 3 -1. - <_> - 8 3 5 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 4 4 3 2 -1. - <_> - 4 5 3 1 2. - <_> - - <_> - 1 5 16 4 -1. - <_> - 1 7 16 2 2. - <_> - - <_> - 4 6 1 2 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 16 11 2 2 -1. - <_> - 17 11 1 1 2. - <_> - 16 12 1 1 2. - <_> - - <_> - 0 11 2 2 -1. - <_> - 0 11 1 1 2. - <_> - 1 12 1 1 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 0 12 2 1 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 0 7 18 6 -1. - <_> - 0 9 18 2 3. - <_> - - <_> - 4 2 7 12 -1. - <_> - 4 5 7 6 2. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 7 2 1 9. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 7 2 1 9. - <_> - - <_> - 12 3 6 6 -1. - <_> - 12 3 6 3 2. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 6 3 3 6 2. - 1 - <_> - - <_> - 4 2 12 9 -1. - <_> - 8 2 4 9 3. - <_> - - <_> - 1 7 3 1 -1. - <_> - 2 7 1 1 3. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 2 2 12 9 -1. - <_> - 6 2 4 9 3. - <_> - - <_> - 9 1 1 4 -1. - <_> - 8 2 1 2 2. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 11 0 4 1 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 9 0 4 1 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 3 2 1 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 9 2 8 4 -1. - <_> - 9 2 4 4 2. - 1 - <_> - - <_> - 0 3 18 1 -1. - <_> - 9 3 9 1 2. - <_> - - <_> - 13 13 2 2 -1. - <_> - 13 13 1 2 2. - <_> - - <_> - 7 0 1 4 -1. - <_> - 7 0 1 2 2. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 9 13 3 2 -1. - <_> - 10 13 1 2 3. - <_> - - <_> - 6 13 3 2 -1. - <_> - 7 13 1 2 3. - <_> - - <_> - 13 13 2 2 -1. - <_> - 13 13 1 2 2. - <_> - - <_> - 3 13 2 2 -1. - <_> - 4 13 1 2 2. - <_> - - <_> - 10 11 6 4 -1. - <_> - 12 11 2 4 3. - <_> - - <_> - 2 11 6 4 -1. - <_> - 4 11 2 4 3. - <_> - - <_> - 0 11 18 3 -1. - <_> - 6 11 6 3 3. - <_> - - <_> - 6 13 4 1 -1. - <_> - 7 13 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - <_> - - <_> - 5 5 4 9 -1. - <_> - 5 8 4 3 3. - <_> - - <_> - 13 5 2 8 -1. - <_> - 11 7 2 4 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 9 1 1 4 -1. - <_> - 8 2 1 2 2. - 1 - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 2 2 1 2. - 1 - <_> - - <_> - 6 2 6 9 -1. - <_> - 6 5 6 3 3. - <_> - - <_> - 9 6 1 6 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 7 1 2 3. - <_> - - <_> - 12 4 2 6 -1. - <_> - 10 6 2 2 3. - 1 - <_> - - <_> - 6 4 6 2 -1. - <_> - 8 6 2 2 3. - 1 - <_> - - <_> - 0 5 18 6 -1. - <_> - 0 7 18 2 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 12 6 6 9 -1. - <_> - 14 9 2 3 9. - <_> - - <_> - 4 6 10 3 -1. - <_> - 4 7 10 1 3. - <_> - - <_> - 13 3 4 8 -1. - <_> - 13 5 4 4 2. - <_> - - <_> - 0 4 11 2 -1. - <_> - 0 5 11 1 2. - <_> - - <_> - 16 5 2 2 -1. - <_> - 16 5 1 2 2. - <_> - - <_> - 0 5 2 2 -1. - <_> - 1 5 1 2 2. - <_> - - <_> - 16 0 2 13 -1. - <_> - 16 0 1 13 2. - <_> - - <_> - 0 0 2 13 -1. - <_> - 1 0 1 13 2. - <_> - - <_> - 6 1 9 3 -1. - <_> - 9 1 3 3 3. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 4 4 2. - 1 - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 0 10 8 3 -1. - <_> - 0 11 8 1 3. - <_> - - <_> - 0 11 18 4 -1. - <_> - 9 11 9 2 2. - <_> - 0 13 9 2 2. - <_> - - <_> - 5 5 2 4 -1. - <_> - 4 6 2 2 2. - 1 - <_> - - <_> - 8 0 3 6 -1. - <_> - 9 2 1 2 9. - <_> - - <_> - 6 1 4 2 -1. - <_> - 6 1 4 1 2. - 1 - <_> - - <_> - 13 12 2 3 -1. - <_> - 13 13 2 1 3. - <_> - - <_> - 6 0 4 8 -1. - <_> - 6 0 2 4 2. - <_> - 8 4 2 4 2. - <_> - - <_> - 10 2 6 2 -1. - <_> - 10 2 3 2 2. - <_> - - <_> - 2 2 6 2 -1. - <_> - 5 2 3 2 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 2 3 5 2 -1. - <_> - 2 4 5 1 2. - <_> - - <_> - 13 0 3 11 -1. - <_> - 14 1 1 11 3. - 1 - <_> - - <_> - 5 0 11 3 -1. - <_> - 4 1 11 1 3. - 1 - <_> - - <_> - 11 0 2 12 -1. - <_> - 12 0 1 6 2. - <_> - 11 6 1 6 2. - <_> - - <_> - 5 0 2 12 -1. - <_> - 5 0 1 6 2. - <_> - 6 6 1 6 2. - <_> - - <_> - 11 5 2 4 -1. - <_> - 11 5 1 4 2. - 1 - <_> - - <_> - 1 3 3 12 -1. - <_> - 1 7 3 4 3. - <_> - - <_> - 11 5 2 4 -1. - <_> - 11 5 1 4 2. - 1 - <_> - - <_> - 7 5 4 2 -1. - <_> - 7 5 4 1 2. - 1 - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 0 1 6 8 -1. - <_> - 0 5 6 4 2. - <_> - - <_> - 14 7 4 2 -1. - <_> - 14 8 4 1 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 0 8 4 1 2. - <_> - - <_> - 14 3 3 8 -1. - <_> - 14 5 3 4 2. - <_> - - <_> - 1 3 3 8 -1. - <_> - 1 5 3 4 2. - <_> - - <_> - 11 3 4 10 -1. - <_> - 12 3 2 10 2. - <_> - - <_> - 3 3 4 10 -1. - <_> - 4 3 2 10 2. - <_> - - <_> - 11 2 4 7 -1. - <_> - 12 2 2 7 2. - <_> - - <_> - 3 2 4 7 -1. - <_> - 4 2 2 7 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 2 1 2. - 1 - <_> - - <_> - 12 4 2 2 -1. - <_> - 13 4 1 1 2. - <_> - 12 5 1 1 2. - <_> - - <_> - 5 1 8 14 -1. - <_> - 5 1 4 7 2. - <_> - 9 8 4 7 2. - <_> - - <_> - 13 0 5 10 -1. - <_> - 13 5 5 5 2. - <_> - - <_> - 1 4 16 4 -1. - <_> - 1 6 16 2 2. - diff --git a/data/haarcascades/haarcascade_mcs_rightear.xml b/data/haarcascades/haarcascade_mcs_rightear.xml deleted file mode 100644 index 61adf1692d..0000000000 --- a/data/haarcascades/haarcascade_mcs_rightear.xml +++ /dev/null @@ -1,7931 +0,0 @@ - - - -BOOST - HAAR - 12 - 20 - - 61 - - 0 - 20 - - <_> - 7 - -1.3802499771118164e+00 - - <_> - - 0 -1 0 -1.2393590062856674e-01 - - 8.2578802108764648e-01 -6.7602032423019409e-01 - <_> - - 0 -1 1 9.4228880479931831e-03 - - -1.2722210586071014e-01 3.3211699128150940e-01 - <_> - - 0 -1 2 -1.1084940284490585e-02 - - 5.6749510765075684e-01 -5.6716197729110718e-01 - <_> - - 0 -1 3 -2.0189690589904785e-01 - - -7.6717972755432129e-01 1.9637049734592438e-01 - <_> - - 0 -1 4 -4.7402849304489791e-05 - - 3.8455748558044434e-01 -6.7010718584060669e-01 - <_> - - 0 -1 5 -8.6445426568388939e-03 - - -6.9345837831497192e-01 1.0593380033969879e-01 - <_> - - 0 -1 6 5.0770420784829184e-05 - - -6.8352818489074707e-01 3.5795739293098450e-01 - <_> - 9 - -1.4652169942855835e+00 - - <_> - - 0 -1 7 -1.8316349387168884e-01 - - 7.8830862045288086e-01 -5.8876812458038330e-01 - <_> - - 0 -1 8 2.5380790233612061e-02 - - -7.4764448404312134e-01 4.1486009955406189e-01 - <_> - - 0 -1 9 1.4207419939339161e-02 - - -7.8411531448364258e-01 2.7354270219802856e-01 - <_> - - 0 -1 10 8.6809601634740829e-03 - - -1.0974329710006714e-01 9.4718709588050842e-02 - <_> - - 0 -1 11 -4.1219559498131275e-03 - - 3.1739580631256104e-01 -5.4334312677383423e-01 - <_> - - 0 -1 12 -1.1700070463120937e-02 - - 3.9653539657592773e-01 -3.7434050440788269e-01 - <_> - - 0 -1 13 2.8762829303741455e-01 - - -1.7733460664749146e-01 8.8516682386398315e-01 - <_> - - 0 -1 14 -4.8463501036167145e-02 - - -6.0947227478027344e-01 1.3633400201797485e-01 - <_> - - 0 -1 15 7.6523773372173309e-02 - - -2.9950559139251709e-01 6.1522072553634644e-01 - <_> - 18 - -2.0372869968414307e+00 - - <_> - - 0 -1 16 1.1777380108833313e-01 - - -5.8754861354827881e-01 6.1994218826293945e-01 - <_> - - 0 -1 17 2.9533330351114273e-02 - - -4.2420691251754761e-01 3.6524820327758789e-01 - <_> - - 0 -1 18 6.1603458598256111e-03 - - -7.9607379436492920e-01 3.2861700654029846e-01 - <_> - - 0 -1 19 -5.9753831010311842e-05 - - 1.0398519784212112e-01 -4.5819509029388428e-01 - <_> - - 0 -1 20 -3.6190438549965620e-04 - - 5.3506380319595337e-01 -6.4719748497009277e-01 - <_> - - 0 -1 21 2.0906500518321991e-02 - - -1.6793949902057648e-01 2.4539050459861755e-01 - <_> - - 0 -1 22 8.2527771592140198e-03 - - -8.5986042022705078e-01 2.2863869369029999e-01 - <_> - - 0 -1 23 5.9341029264032841e-03 - - -4.6319939196109772e-02 -6.0758531093597412e-01 - <_> - - 0 -1 24 1.8554080452304333e-04 - - -5.7996147871017456e-01 3.7694430351257324e-01 - <_> - - 0 -1 25 -7.2531788609921932e-03 - - -5.6681227684020996e-01 -1.9910290837287903e-02 - <_> - - 0 -1 26 4.0826769691193476e-05 - - -6.2813758850097656e-01 4.0546119213104248e-01 - <_> - - 0 -1 27 -1.0268500074744225e-02 - - 4.5032399892807007e-01 -2.7399060130119324e-01 - <_> - - 0 -1 28 -3.5408639814704657e-03 - - 3.4393149614334106e-01 -6.7639619112014771e-01 - <_> - - 0 -1 29 -6.9421626627445221e-02 - - 6.5173202753067017e-01 -7.4326410889625549e-02 - <_> - - 0 -1 30 7.1986039984039962e-05 - - -4.5737218856811523e-01 3.0109271407127380e-01 - <_> - - 0 -1 31 6.3741732446942478e-05 - - -5.5820369720458984e-01 1.9148319959640503e-01 - <_> - - 0 -1 32 4.4920871005160734e-05 - - -5.7379388809204102e-01 2.1276189386844635e-01 - <_> - - 0 -1 33 1.3159319758415222e-01 - - -2.2754240036010742e-01 2.8766331076622009e-01 - <_> - 13 - -1.5061739683151245e+00 - - <_> - - 0 -1 34 -1.5496319532394409e-01 - - 7.2985649108886719e-01 -5.9489607810974121e-01 - <_> - - 0 -1 35 8.4833214059472084e-03 - - 1.3606220483779907e-01 -4.3773031234741211e-01 - <_> - - 0 -1 36 -3.2831680029630661e-02 - - 6.7158091068267822e-01 -2.8739199042320251e-01 - <_> - - 0 -1 37 -2.8853790834546089e-02 - - 4.5923650264739990e-01 -4.9327030777931213e-02 - <_> - - 0 -1 38 1.7052419483661652e-01 - - -1.6527549922466278e-01 8.4507262706756592e-01 - <_> - - 0 -1 39 1.0879129916429520e-01 - - -2.8913050889968872e-01 5.3111201524734497e-01 - <_> - - 0 -1 40 3.0960019212216139e-03 - - -5.5323868989944458e-01 2.6134639978408813e-01 - <_> - - 0 -1 41 -3.3618099987506866e-02 - - 2.2911429405212402e-01 -5.5924427509307861e-01 - <_> - - 0 -1 42 -1.1074040085077286e-03 - - -6.3096380233764648e-01 1.5855440497398376e-01 - <_> - - 0 -1 43 -4.4385627843439579e-03 - - -6.3817399740219116e-01 1.2779480218887329e-01 - <_> - - 0 -1 44 -9.4127003103494644e-03 - - 3.5108420252799988e-01 -3.4738400578498840e-01 - <_> - - 0 -1 45 -3.2499480992555618e-02 - - 6.7672997713088989e-01 -5.5984470993280411e-02 - <_> - - 0 -1 46 -1.3464169576764107e-02 - - -7.5412607192993164e-01 1.5986099839210510e-01 - <_> - 17 - -1.5266020298004150e+00 - - <_> - - 0 -1 47 -1.8050560355186462e-01 - - 7.1835839748382568e-01 -5.2469527721405029e-01 - <_> - - 0 -1 48 -1.5271560288965702e-02 - - 3.2215949892997742e-01 -1.5855640172958374e-01 - <_> - - 0 -1 49 -3.4879799932241440e-02 - - 3.2105189561843872e-01 -5.3338629007339478e-01 - <_> - - 0 -1 50 -3.1743600964546204e-02 - - 4.1040870547294617e-01 -3.7935909628868103e-01 - <_> - - 0 -1 51 4.8427619040012360e-03 - - -6.9584208726882935e-01 2.4080069363117218e-01 - <_> - - 0 -1 52 4.9639631062746048e-02 - - 8.0581977963447571e-03 -5.4770648479461670e-01 - <_> - - 0 -1 53 1.1154930293560028e-01 - - -2.4036459624767303e-01 5.6387817859649658e-01 - <_> - - 0 -1 54 -2.6947790756821632e-02 - - -4.5162969827651978e-01 6.0060828924179077e-02 - <_> - - 0 -1 55 -4.9296129494905472e-02 - - 8.3912831544876099e-01 -1.8871270120143890e-01 - <_> - - 0 -1 56 2.8315439820289612e-02 - - 6.9766468368470669e-03 1.8534269928932190e-01 - <_> - - 0 -1 57 3.3421538770198822e-02 - - -3.1101679801940918e-01 4.0044930577278137e-01 - <_> - - 0 -1 58 -6.2644667923450470e-03 - - -4.4615790247917175e-01 6.6276572644710541e-02 - <_> - - 0 -1 59 2.5548560079187155e-03 - - 1.3413320481777191e-01 -7.4927258491516113e-01 - <_> - - 0 -1 60 2.9710179194808006e-02 - - 6.1377300880849361e-04 -7.7615362405776978e-01 - <_> - - 0 -1 61 -4.1485700756311417e-02 - - 5.9405767917633057e-01 -1.6889290511608124e-01 - <_> - - 0 -1 62 1.2231590226292610e-02 - - 5.1312480121850967e-02 -7.5303572416305542e-01 - <_> - - 0 -1 63 -4.3153190053999424e-03 - - -6.4812111854553223e-01 1.3281610608100891e-01 - <_> - 17 - -1.4295140504837036e+00 - - <_> - - 0 -1 64 1.1714699864387512e-01 - - -5.1155489683151245e-01 5.4587250947952271e-01 - <_> - - 0 -1 65 5.2537951618432999e-02 - - -2.6988661289215088e-01 3.4098041057586670e-01 - <_> - - 0 -1 66 -1.9980749115347862e-02 - - 3.5662230849266052e-01 -4.4640049338340759e-01 - <_> - - 0 -1 67 -1.2166350334882736e-01 - - 4.5662569999694824e-01 -6.7647598683834076e-02 - <_> - - 0 -1 68 1.6176940873265266e-02 - - -4.8407769203186035e-01 2.5647491216659546e-01 - <_> - - 0 -1 69 -1.2731030583381653e-01 - - 7.8568279743194580e-01 -7.6182372868061066e-02 - <_> - - 0 -1 70 -3.7296859081834555e-03 - - 2.7144059538841248e-01 -4.8822438716888428e-01 - <_> - - 0 -1 71 -1.7392159998416901e-01 - - 7.3156762123107910e-01 -4.0217950940132141e-02 - <_> - - 0 -1 72 -9.4516716897487640e-02 - - 4.9297851324081421e-01 -2.1850970387458801e-01 - <_> - - 0 -1 73 7.9759500920772552e-02 - - -1.0667549818754196e-01 2.1722890436649323e-01 - <_> - - 0 -1 74 2.9159070923924446e-02 - - 1.5513190627098083e-01 -7.9432719945907593e-01 - <_> - - 0 -1 75 6.8567609414458275e-03 - - -7.7142190933227539e-01 1.0970850288867950e-01 - <_> - - 0 -1 76 2.6352910790592432e-03 - - 9.6235923469066620e-02 -7.4925291538238525e-01 - <_> - - 0 -1 77 -4.1161300614476204e-03 - - 1.7448060214519501e-01 -4.6480000019073486e-01 - <_> - - 0 -1 78 -2.7307260315865278e-03 - - -5.8561611175537109e-01 1.1779639869928360e-01 - <_> - - 0 -1 79 -1.9059289246797562e-02 - - -6.8809962272644043e-01 1.0283970087766647e-01 - <_> - - 0 -1 80 -2.9182219877839088e-03 - - -6.6901868581771851e-01 8.3721928298473358e-02 - <_> - 26 - -1.5588049888610840e+00 - - <_> - - 0 -1 81 8.1108748912811279e-02 - - -3.9180481433868408e-01 5.3625607490539551e-01 - <_> - - 0 -1 82 9.1598061844706535e-03 - - -4.6528929471969604e-01 3.3383831381797791e-01 - <_> - - 0 -1 83 8.0795027315616608e-04 - - -7.5230997800827026e-01 1.4381100237369537e-01 - <_> - - 0 -1 84 2.4406640231609344e-01 - - -2.2846619784832001e-01 5.0088721513748169e-01 - <_> - - 0 -1 85 9.9084907560609281e-05 - - -4.9552011489868164e-01 2.3163549602031708e-01 - <_> - - 0 -1 86 -1.6304260492324829e-01 - - 8.0807077884674072e-01 -1.4503139257431030e-01 - <_> - - 0 -1 87 9.9489316344261169e-03 - - -1.3804569840431213e-01 6.0897988080978394e-01 - <_> - - 0 -1 88 7.6701432466506958e-02 - - 3.7772629410028458e-02 -5.3447282314300537e-01 - <_> - - 0 -1 89 4.7309949994087219e-02 - - -3.6191630363464355e-01 2.8269779682159424e-01 - <_> - - 0 -1 90 -2.2022439166903496e-02 - - -5.2068692445755005e-01 9.4968706369400024e-02 - <_> - - 0 -1 91 1.3980070129036903e-02 - - 1.1217589676380157e-01 -6.8278092145919800e-01 - <_> - - 0 -1 92 -6.6961131989955902e-02 - - 8.7730789184570312e-01 -2.7844179421663284e-02 - <_> - - 0 -1 93 1.1592600494623184e-03 - - -3.4661638736724854e-01 2.0498119294643402e-01 - <_> - - 0 -1 94 1.9640380516648293e-02 - - -1.2608189880847931e-01 2.8791791200637817e-01 - <_> - - 0 -1 95 -1.0507949627935886e-02 - - -6.1253058910369873e-01 1.2488999962806702e-01 - <_> - - 0 -1 96 1.7976740375161171e-02 - - -1.2991739809513092e-01 1.4235779643058777e-01 - <_> - - 0 -1 97 -3.1597379595041275e-02 - - 3.3326789736747742e-01 -2.4774129688739777e-01 - <_> - - 0 -1 98 -1.8917859997600317e-03 - - -5.3087908029556274e-01 8.8928163051605225e-02 - <_> - - 0 -1 99 -1.7453400418162346e-02 - - -6.4604520797729492e-01 1.1086379736661911e-01 - <_> - - 0 -1 100 1.0619490407407284e-02 - - 1.4190349727869034e-02 -2.1650099754333496e-01 - <_> - - 0 -1 101 -1.1998750269412994e-03 - - -6.4023351669311523e-01 1.0543160140514374e-01 - <_> - - 0 -1 102 9.0056620538234711e-03 - - 6.6442847251892090e-02 -3.8506388664245605e-01 - <_> - - 0 -1 103 -3.1365811824798584e-02 - - 4.9019768834114075e-01 -1.3340839743614197e-01 - <_> - - 0 -1 104 8.8146664202213287e-03 - - -7.5805522501468658e-02 5.1142227649688721e-01 - <_> - - 0 -1 105 -2.4432060308754444e-03 - - -5.3494578599929810e-01 1.3186639547348022e-01 - <_> - - 0 -1 106 3.3595509827136993e-02 - - 1.8829340115189552e-02 -8.7616902589797974e-01 - <_> - 25 - -1.5198639631271362e+00 - - <_> - - 0 -1 107 -1.9901029765605927e-01 - - 4.1589239239692688e-01 -4.6403810381889343e-01 - <_> - - 0 -1 108 1.0957729537039995e-03 - - -2.7428150177001953e-01 2.1992009878158569e-01 - <_> - - 0 -1 109 3.5783050116151571e-03 - - -2.5449270009994507e-01 5.4316788911819458e-01 - <_> - - 0 -1 110 3.5569820553064346e-02 - - 4.2951688170433044e-02 -6.6588342189788818e-01 - <_> - - 0 -1 111 -3.8403531070798635e-03 - - 1.9703429937362671e-01 -5.4586201906204224e-01 - <_> - - 0 -1 112 3.9690821431577206e-03 - - -5.1554411649703979e-01 2.2360439598560333e-01 - <_> - - 0 -1 113 7.4965478852391243e-03 - - 1.5371499955654144e-01 -6.1535251140594482e-01 - <_> - - 0 -1 114 -8.9704096317291260e-03 - - 1.8355900049209595e-01 -2.8429880738258362e-01 - <_> - - 0 -1 115 -5.6080069392919540e-02 - - 7.7755087614059448e-01 -9.8359443247318268e-02 - <_> - - 0 -1 116 1.0908209718763828e-02 - - 6.3484668731689453e-02 -6.9791257381439209e-01 - <_> - - 0 -1 117 -9.8930671811103821e-03 - - 4.0726318955421448e-01 -2.5781801342964172e-01 - <_> - - 0 -1 118 1.8678830564022064e-01 - - -2.7086579799652100e-01 3.6147558689117432e-01 - <_> - - 0 -1 119 -9.4373157480731606e-04 - - -5.8118808269500732e-01 1.5266190469264984e-01 - <_> - - 0 -1 120 -2.6823019608855247e-02 - - 7.3039489984512329e-01 -5.7183459401130676e-02 - <_> - - 0 -1 121 -8.4266774356365204e-03 - - -6.9740217924118042e-01 1.1783199757337570e-01 - <_> - - 0 -1 122 4.4732030481100082e-02 - - -6.6901608370244503e-03 -3.9551690220832825e-01 - <_> - - 0 -1 123 1.9846759736537933e-02 - - -2.5491309165954590e-01 2.6959219574928284e-01 - <_> - - 0 -1 124 -1.1466080322861671e-03 - - -4.7784709930419922e-01 1.4147639274597168e-01 - <_> - - 0 -1 125 9.8631740547716618e-04 - - -2.9782509803771973e-01 2.1989880502223969e-01 - <_> - - 0 -1 126 -1.3526080548763275e-01 - - 7.3641002178192139e-01 -3.6679711192846298e-02 - <_> - - 0 -1 127 -1.4555889647454023e-03 - - -4.9741968512535095e-01 1.4351129531860352e-01 - <_> - - 0 -1 128 -1.3439180329442024e-02 - - 4.4307011365890503e-01 -6.1504751443862915e-02 - <_> - - 0 -1 129 5.8535612188279629e-03 - - 8.6272820830345154e-02 -6.9572478532791138e-01 - <_> - - 0 -1 130 -3.6728219129145145e-03 - - -2.4009980261325836e-01 7.2359912097454071e-02 - <_> - - 0 -1 131 2.8104060329496861e-03 - - -2.8405401110649109e-01 2.0643989741802216e-01 - <_> - 23 - -1.2744859457015991e+00 - - <_> - - 0 -1 132 1.6374010592699051e-02 - - -3.7089619040489197e-01 5.0737190246582031e-01 - <_> - - 0 -1 133 9.4187058508396149e-02 - - -3.1576469540596008e-01 4.0862488746643066e-01 - <_> - - 0 -1 134 1.1773589998483658e-02 - - -3.5064500570297241e-01 3.1217798590660095e-01 - <_> - - 0 -1 135 1.0922340303659439e-01 - - -1.2247060239315033e-01 2.5683128833770752e-01 - <_> - - 0 -1 136 -6.6653150133788586e-03 - - 2.3083719611167908e-01 -4.8135739564895630e-01 - <_> - - 0 -1 137 -4.5095751993358135e-03 - - 1.6601459681987762e-01 -1.2917369604110718e-01 - <_> - - 0 -1 138 -1.1136589571833611e-02 - - 3.8687920570373535e-01 -2.2618110477924347e-01 - <_> - - 0 -1 139 -1.5101970732212067e-01 - - 7.8407418727874756e-01 -5.6705389171838760e-02 - <_> - - 0 -1 140 3.5842441022396088e-02 - - -3.3353409171104431e-01 2.6884201169013977e-01 - <_> - - 0 -1 141 6.0237798839807510e-02 - - 6.6777043044567108e-02 -5.8397102355957031e-01 - <_> - - 0 -1 142 6.8902626633644104e-02 - - -3.2930138707160950e-01 2.3172050714492798e-01 - <_> - - 0 -1 143 -1.1977110058069229e-01 - - 7.2716677188873291e-01 -1.0525380074977875e-01 - <_> - - 0 -1 144 1.8936740234494209e-02 - - -1.3431450724601746e-01 5.6203877925872803e-01 - <_> - - 0 -1 145 8.3808198571205139e-02 - - -4.9557849764823914e-02 1.0450640320777893e-01 - <_> - - 0 -1 146 3.3902268856763840e-02 - - 9.9094279110431671e-02 -7.6239812374114990e-01 - <_> - - 0 -1 147 -8.1007126718759537e-03 - - -4.3555849790573120e-01 2.2304659709334373e-02 - <_> - - 0 -1 148 2.4974169209599495e-03 - - 9.3714617192745209e-02 -6.8376600742340088e-01 - <_> - - 0 -1 149 1.0426550172269344e-02 - - -1.1307760328054428e-01 4.3951630592346191e-01 - <_> - - 0 -1 150 -2.4919810239225626e-03 - - -4.9109318852424622e-01 1.2399309873580933e-01 - <_> - - 0 -1 151 -4.4614528305828571e-03 - - 3.4285509586334229e-01 -1.3288980722427368e-01 - <_> - - 0 -1 152 -6.9255861453711987e-03 - - 4.0674179792404175e-01 -1.4747169613838196e-01 - <_> - - 0 -1 153 1.4747819863259792e-02 - - -1.7921010032296181e-02 1.5927059948444366e-01 - <_> - - 0 -1 154 9.8200701177120209e-03 - - 8.6944580078125000e-02 -6.7220121622085571e-01 - <_> - 29 - -1.3562519550323486e+00 - - <_> - - 0 -1 155 3.0345980077981949e-02 - - -5.6813991069793701e-01 2.7571758627891541e-01 - <_> - - 0 -1 156 -4.5385681092739105e-02 - - -5.6568390130996704e-01 4.2446270585060120e-02 - <_> - - 0 -1 157 -2.4006670713424683e-01 - - 3.9162129163742065e-01 -3.0378338694572449e-01 - <_> - - 0 -1 158 -1.0817600414156914e-03 - - -7.0329940319061279e-01 1.1626099795103073e-01 - <_> - - 0 -1 159 -1.6060429625213146e-03 - - 2.2388499975204468e-01 -4.8557040095329285e-01 - <_> - - 0 -1 160 -1.0570240020751953e-01 - - -7.4889171123504639e-01 2.8992230072617531e-02 - <_> - - 0 -1 161 -2.3500300012528896e-03 - - 2.3428779840469360e-01 -4.2647179961204529e-01 - <_> - - 0 -1 162 -6.1817590147256851e-02 - - -8.9189022779464722e-01 -1.0216370224952698e-02 - <_> - - 0 -1 163 5.4469848982989788e-03 - - -2.6281470060348511e-01 3.1677961349487305e-01 - <_> - - 0 -1 164 -6.7602698691189289e-03 - - -7.9144752025604248e-01 1.2072199955582619e-02 - <_> - - 0 -1 165 7.8887082054279745e-05 - - -4.4443818926811218e-01 1.9887650012969971e-01 - <_> - - 0 -1 166 6.4817398786544800e-02 - - -2.3440040647983551e-01 2.8372839093208313e-01 - <_> - - 0 -1 167 2.9690501093864441e-01 - - -1.1379630118608475e-01 8.4734469652175903e-01 - <_> - - 0 -1 168 -1.2669449672102928e-02 - - -5.3791618347167969e-01 5.0364010035991669e-02 - <_> - - 0 -1 169 3.2963419798761606e-03 - - 9.5009326934814453e-02 -6.9295811653137207e-01 - <_> - - 0 -1 170 8.1940039992332458e-02 - - 6.4861620776355267e-03 -4.8242160677909851e-01 - <_> - - 0 -1 171 4.5874840579926968e-03 - - 7.4269242584705353e-02 -8.5056728124618530e-01 - <_> - - 0 -1 172 1.3228190131485462e-02 - - -1.8141390383243561e-01 5.5488282442092896e-01 - <_> - - 0 -1 173 8.3280639955773950e-05 - - -3.5342589020729065e-01 1.6182580590248108e-01 - <_> - - 0 -1 174 9.3232236802577972e-02 - - 3.6166220903396606e-02 -3.9560291171073914e-01 - <_> - - 0 -1 175 -1.7989000305533409e-02 - - 1.8585060536861420e-01 -2.9997050762176514e-01 - <_> - - 0 -1 176 8.5582181811332703e-02 - - -2.3212260566651821e-03 -7.5706237554550171e-01 - <_> - - 0 -1 177 1.4874819666147232e-02 - - -2.1825970709323883e-01 2.7366569638252258e-01 - <_> - - 0 -1 178 2.0184369757771492e-02 - - 3.5116590559482574e-02 -4.5619380474090576e-01 - <_> - - 0 -1 179 1.4273890294134617e-02 - - -1.2478730082511902e-01 6.1065578460693359e-01 - <_> - - 0 -1 180 2.6945620775222778e-02 - - -5.6217260658740997e-02 4.3960160017013550e-01 - <_> - - 0 -1 181 -1.4722250401973724e-02 - - -7.0504772663116455e-01 8.9823968708515167e-02 - <_> - - 0 -1 182 -3.9676232263445854e-03 - - -2.0258559286594391e-01 2.4594809859991074e-02 - <_> - - 0 -1 183 -6.9255158305168152e-02 - - 7.7862018346786499e-01 -8.2329802215099335e-02 - <_> - 34 - -1.4609309434890747e+00 - - <_> - - 0 -1 184 4.2280860245227814e-02 - - -4.3323940038681030e-01 3.1084230542182922e-01 - <_> - - 0 -1 185 3.2466039061546326e-02 - - -2.5457349419593811e-01 2.8453230857849121e-01 - <_> - - 0 -1 186 3.9204079657793045e-03 - - -2.4197019636631012e-01 3.8850378990173340e-01 - <_> - - 0 -1 187 1.4881529845297337e-02 - - -2.0224849879741669e-01 2.0803029835224152e-01 - <_> - - 0 -1 188 -4.8258059541694820e-04 - - 2.0644129812717438e-01 -4.6135428547859192e-01 - <_> - - 0 -1 189 1.0871110111474991e-01 - - -1.1968149803578854e-02 -8.3505737781524658e-01 - <_> - - 0 -1 190 1.1553530202945694e-04 - - -6.2181282043457031e-01 1.2894719839096069e-01 - <_> - - 0 -1 191 1.9984820391982794e-03 - - 1.2071420252323151e-01 -5.1865231990814209e-01 - <_> - - 0 -1 192 -1.9442409393377602e-04 - - 1.5316960215568542e-01 -4.6682178974151611e-01 - <_> - - 0 -1 193 3.4691508859395981e-02 - - 5.2325479686260223e-02 -5.6493771076202393e-01 - <_> - - 0 -1 194 1.2708869576454163e-01 - - -1.1623410135507584e-01 6.6390967369079590e-01 - <_> - - 0 -1 195 1.8425850570201874e-01 - - -2.9410699009895325e-01 2.7760609984397888e-01 - <_> - - 0 -1 196 -1.0079169645905495e-02 - - 2.0110170543193817e-01 -3.7747490406036377e-01 - <_> - - 0 -1 197 2.3211309686303139e-02 - - -1.5770949423313141e-01 4.1628879308700562e-01 - <_> - - 0 -1 198 -8.5837738588452339e-03 - - -6.4297300577163696e-01 9.1064400970935822e-02 - <_> - - 0 -1 199 3.0105128884315491e-01 - - 1.8554370850324631e-02 -3.6014398932456970e-01 - <_> - - 0 -1 200 5.5468631908297539e-03 - - 1.1459550261497498e-01 -5.0818997621536255e-01 - <_> - - 0 -1 201 -3.2614849042147398e-03 - - -6.5068858861923218e-01 7.1761913597583771e-02 - <_> - - 0 -1 202 -2.1482119336724281e-03 - - 1.3169400393962860e-01 -3.7837469577789307e-01 - <_> - - 0 -1 203 4.2770840227603912e-03 - - 4.9258850514888763e-02 -5.8316987752914429e-01 - <_> - - 0 -1 204 -2.8884320054203272e-03 - - 3.1445708870887756e-01 -1.6602359712123871e-01 - <_> - - 0 -1 205 -4.7958120703697205e-02 - - -7.2590202093124390e-01 1.5948530286550522e-02 - <_> - - 0 -1 206 2.6324709877371788e-02 - - 7.4111200869083405e-02 -6.6733390092849731e-01 - <_> - - 0 -1 207 1.3688339851796627e-02 - - 4.7244258224964142e-02 -3.2059279084205627e-01 - <_> - - 0 -1 208 1.5577600337564945e-02 - - -9.6644677221775055e-02 5.0794398784637451e-01 - <_> - - 0 -1 209 -8.4227044135332108e-03 - - -9.9238747358322144e-01 2.0270830020308495e-02 - <_> - - 0 -1 210 3.8861939683556557e-03 - - 7.3856048285961151e-02 -6.7188322544097900e-01 - <_> - - 0 -1 211 -3.3598121255636215e-02 - - -7.3445242643356323e-01 5.7080879807472229e-02 - <_> - - 0 -1 212 1.7251629382371902e-02 - - -1.3607659935951233e-01 4.2951139807701111e-01 - <_> - - 0 -1 213 -3.1715810298919678e-02 - - -7.4400889873504639e-01 3.3651608973741531e-02 - <_> - - 0 -1 214 1.0187040083110332e-02 - - -1.6512380540370941e-01 3.5162070393562317e-01 - <_> - - 0 -1 215 3.7060850299894810e-03 - - 6.8452596664428711e-02 -1.8737269937992096e-01 - <_> - - 0 -1 216 -9.5564024522900581e-03 - - -5.8053100109100342e-01 8.2600042223930359e-02 - <_> - - 0 -1 217 -1.4073489606380463e-01 - - -1. -6.1561721377074718e-03 - <_> - 43 - -1.4843599796295166e+00 - - <_> - - 0 -1 218 8.2872863858938217e-03 - - -3.3240118622779846e-01 4.0866941213607788e-01 - <_> - - 0 -1 219 -5.3943969309329987e-02 - - 2.7990311384201050e-01 -3.5782578587532043e-01 - <_> - - 0 -1 220 -1.1539819650352001e-02 - - 2.1358589828014374e-01 -4.5100399851799011e-01 - <_> - - 0 -1 221 -1.5745559707283974e-02 - - 2.1471889317035675e-01 -9.9175170063972473e-02 - <_> - - 0 -1 222 -1.3527829432860017e-03 - - 1.5119549632072449e-01 -5.2674210071563721e-01 - <_> - - 0 -1 223 -1.1468210257589817e-02 - - 1.3523469865322113e-01 -3.7286050617694855e-02 - <_> - - 0 -1 224 8.5535906255245209e-03 - - -2.5730869174003601e-01 2.4693550169467926e-01 - <_> - - 0 -1 225 5.6266319006681442e-02 - - -2.1571849286556244e-01 1.8734970688819885e-01 - <_> - - 0 -1 226 2.0349300466477871e-03 - - 8.9395299553871155e-02 -6.2484967708587646e-01 - <_> - - 0 -1 227 -1.0920839849859476e-03 - - -3.2366481423377991e-01 6.9054901599884033e-02 - <_> - - 0 -1 228 -5.1597058773040771e-02 - - 6.1383968591690063e-01 -9.5396347343921661e-02 - <_> - - 0 -1 229 1.7433969303965569e-02 - - -2.5729641318321228e-01 2.5275719165802002e-01 - <_> - - 0 -1 230 7.6819643378257751e-02 - - 8.7492428719997406e-02 -6.7382502555847168e-01 - <_> - - 0 -1 231 8.0648958683013916e-02 - - -5.7000648230314255e-02 4.2771929502487183e-01 - <_> - - 0 -1 232 7.0360638201236725e-03 - - -4.2870849370956421e-01 1.4574399590492249e-01 - <_> - - 0 -1 233 4.9487157957628369e-04 - - -4.4867759943008423e-01 8.7952293455600739e-02 - <_> - - 0 -1 234 -2.0319919567555189e-03 - - -6.9378471374511719e-01 7.9090960323810577e-02 - <_> - - 0 -1 235 1.5986919403076172e-02 - - -1.8177279829978943e-01 3.3544349670410156e-01 - <_> - - 0 -1 236 1.0031439887825400e-04 - - -2.8036159276962280e-01 1.8939669430255890e-01 - <_> - - 0 -1 237 -2.0664870738983154e-01 - - -7.0004421472549438e-01 6.2915571033954620e-02 - <_> - - 0 -1 238 1.0939550120383501e-03 - - -5.6122779846191406e-01 7.9117156565189362e-02 - <_> - - 0 -1 239 1.0714650154113770e-02 - - 3.6672711372375488e-02 -4.8171210289001465e-01 - <_> - - 0 -1 240 1.2993469834327698e-02 - - -1.3089600205421448e-01 3.2844379544258118e-01 - <_> - - 0 -1 241 5.4268362000584602e-03 - - 4.6886149793863297e-02 -5.8115488290786743e-01 - <_> - - 0 -1 242 1.0718739591538906e-02 - - 5.9297699481248856e-02 -6.6856807470321655e-01 - <_> - - 0 -1 243 -3.1285220757126808e-03 - - -3.5857740044593811e-01 2.8134709224104881e-02 - <_> - - 0 -1 244 5.2357040112838149e-04 - - -3.4198528528213501e-01 1.2199939787387848e-01 - <_> - - 0 -1 245 1.0644399560987949e-02 - - 3.9803087711334229e-03 -6.9705927371978760e-01 - <_> - - 0 -1 246 1.5901770442724228e-02 - - -7.6809287071228027e-02 5.2953928709030151e-01 - <_> - - 0 -1 247 -1.0395360179245472e-02 - - -6.4491081237792969e-01 1.0781600140035152e-02 - <_> - - 0 -1 248 3.7131321150809526e-03 - - 6.6979996860027313e-02 -6.2111258506774902e-01 - <_> - - 0 -1 249 2.3174570873379707e-02 - - 1.6732679679989815e-02 -4.5888119935989380e-01 - <_> - - 0 -1 250 1.1146579869091511e-02 - - -1.1638499796390533e-01 4.3002909421920776e-01 - <_> - - 0 -1 251 1.2715480290353298e-02 - - 1.6517929732799530e-02 -6.6795057058334351e-01 - <_> - - 0 -1 252 -1.2653400190174580e-02 - - 1.1365109682083130e-01 -3.7035998702049255e-01 - <_> - - 0 -1 253 -7.1139880456030369e-03 - - 1.7468209564685822e-01 -1.2769439816474915e-01 - <_> - - 0 -1 254 -1.3703290373086929e-02 - - 4.2330458760261536e-01 -9.5448397099971771e-02 - <_> - - 0 -1 255 7.5888428837060928e-03 - - -8.7192570790648460e-03 3.0307659506797791e-01 - <_> - - 0 -1 256 -5.7711452245712280e-04 - - -5.0375598669052124e-01 9.0188682079315186e-02 - <_> - - 0 -1 257 -6.1391671188175678e-03 - - -6.0663592815399170e-01 4.6589769423007965e-02 - <_> - - 0 -1 258 9.4300412456505001e-05 - - -2.6559790968894958e-01 1.5030109882354736e-01 - <_> - - 0 -1 259 -2.4399429559707642e-01 - - 6.4060389995574951e-01 -6.8897739052772522e-02 - <_> - - 0 -1 260 -1.2823240458965302e-01 - - 2.1190899610519409e-01 -2.7341139316558838e-01 - <_> - 42 - -1.4225620031356812e+00 - - <_> - - 0 -1 261 -9.8697589710354805e-03 - - 4.8807978630065918e-01 -2.6589471101760864e-01 - <_> - - 0 -1 262 3.3131919801235199e-02 - - 3.2597500830888748e-02 -6.3295251131057739e-01 - <_> - - 0 -1 263 1.7511799931526184e-02 - - -3.5473251342773438e-01 2.8011149168014526e-01 - <_> - - 0 -1 264 -7.3885500431060791e-02 - - 4.7378170490264893e-01 -1.1292530223727226e-02 - <_> - - 0 -1 265 1.8212760332971811e-03 - - -4.6179610490798950e-01 1.4266149699687958e-01 - <_> - - 0 -1 266 -8.5360601544380188e-02 - - -6.6754668951034546e-01 7.5132578611373901e-02 - <_> - - 0 -1 267 -2.7539798617362976e-01 - - 3.8147959113121033e-01 -2.3665140569210052e-01 - <_> - - 0 -1 268 3.0699970200657845e-02 - - 5.1691979169845581e-02 -2.4286730587482452e-01 - <_> - - 0 -1 269 -9.6332989633083344e-03 - - 3.3072310686111450e-01 -2.0818190276622772e-01 - <_> - - 0 -1 270 1.6330240294337273e-02 - - 3.4118140320060775e-05 -8.0960237979888916e-01 - <_> - - 0 -1 271 8.6133222794160247e-05 - - -3.7730661034584045e-01 1.3947279751300812e-01 - <_> - - 0 -1 272 -3.0760519206523895e-02 - - 6.7611587047576904e-01 -1.4665770344436169e-02 - <_> - - 0 -1 273 6.8717780523002148e-03 - - -1.6677060723304749e-01 3.0840030312538147e-01 - <_> - - 0 -1 274 1.7696250230073929e-02 - - 3.8468770682811737e-02 -5.9128028154373169e-01 - <_> - - 0 -1 275 1.4457659795880318e-02 - - 7.1180373430252075e-02 -6.8788748979568481e-01 - <_> - - 0 -1 276 4.4003669172525406e-03 - - -1.7107939720153809e-01 3.3334150910377502e-01 - <_> - - 0 -1 277 -1.9785019103437662e-03 - - -6.3402158021926880e-01 8.5248172283172607e-02 - <_> - - 0 -1 278 -3.5506778955459595e-01 - - 6.9163411855697632e-01 -8.7763786315917969e-02 - <_> - - 0 -1 279 1.2596770189702511e-02 - - -2.0116379857063293e-01 3.4040948748588562e-01 - <_> - - 0 -1 280 -2.3926040157675743e-03 - - -6.2525659799575806e-01 1.1060170084238052e-01 - <_> - - 0 -1 281 -8.7672837253194302e-05 - - 1.4002850651741028e-01 -3.9103108644485474e-01 - <_> - - 0 -1 282 5.4524061270058155e-03 - - -3.1052809953689575e-01 6.3757672905921936e-02 - <_> - - 0 -1 283 1.2568219564855099e-02 - - -1.3675519824028015e-01 3.2680550217628479e-01 - <_> - - 0 -1 284 3.7843358516693115e-01 - - -3.7364691495895386e-02 3.7789309024810791e-01 - <_> - - 0 -1 285 -3.3601790200918913e-03 - - 2.9605069756507874e-01 -1.5206739306449890e-01 - <_> - - 0 -1 286 -4.3185380101203918e-01 - - -6.8029761314392090e-01 1.2745309621095657e-02 - <_> - - 0 -1 287 7.3479618877172470e-03 - - -6.6707527637481689e-01 6.7926846444606781e-02 - <_> - - 0 -1 288 7.5943907722830772e-03 - - -1.1112800240516663e-01 2.2462299466133118e-01 - <_> - - 0 -1 289 -7.3589297244325280e-05 - - 1.3988719880580902e-01 -3.4220328927040100e-01 - <_> - - 0 -1 290 -1.0304169700248167e-04 - - 8.2018472254276276e-02 -1.0476870089769363e-01 - <_> - - 0 -1 291 -5.4624290205538273e-03 - - -5.1264250278472900e-01 9.2095062136650085e-02 - <_> - - 0 -1 292 1.9663229584693909e-02 - - 6.1935991048812866e-02 -6.1648821830749512e-01 - <_> - - 0 -1 293 -1.1055600043619052e-04 - - 1.4308770000934601e-01 -2.7447059750556946e-01 - <_> - - 0 -1 294 3.8737419527024031e-03 - - -1.0690200328826904e-01 2.0657220482826233e-01 - <_> - - 0 -1 295 -4.5131230726838112e-03 - - 3.4341660141944885e-01 -1.2317349761724472e-01 - <_> - - 0 -1 296 -6.1594668775796890e-02 - - 9.3623742461204529e-02 -4.5765519142150879e-02 - <_> - - 0 -1 297 1.2142979539930820e-03 - - -1.3058850169181824e-01 3.0691918730735779e-01 - <_> - - 0 -1 298 1.3168719410896301e-01 - - 1.1348670348525047e-02 -3.6062520742416382e-01 - <_> - - 0 -1 299 -9.8962578922510147e-03 - - 9.7268536686897278e-02 -4.5470228791236877e-01 - <_> - - 0 -1 300 -4.3822340667247772e-03 - - -6.9014567136764526e-01 7.1008093655109406e-02 - <_> - - 0 -1 301 -2.4433590471744537e-02 - - 5.0112801790237427e-01 -9.8408728837966919e-02 - <_> - - 0 -1 302 -8.6958734318614006e-03 - - -1.4006440341472626e-01 3.6845669150352478e-02 - <_> - 37 - -1.3051190376281738e+00 - - <_> - - 0 -1 303 -1.7152750864624977e-02 - - 4.7029718756675720e-01 -2.2067089378833771e-01 - <_> - - 0 -1 304 8.3040937781333923e-02 - - 5.5113639682531357e-02 -5.5488407611846924e-01 - <_> - - 0 -1 305 1.2245059758424759e-01 - - -2.8312590718269348e-01 3.4973090887069702e-01 - <_> - - 0 -1 306 7.3496531695127487e-03 - - -1.3282130658626556e-01 4.8876601457595825e-01 - <_> - - 0 -1 307 -9.3082878738641739e-03 - - 4.5475938916206360e-01 -1.4194749295711517e-01 - <_> - - 0 -1 308 1.7290420830249786e-02 - - 9.8470740020275116e-02 -6.8155962228775024e-01 - <_> - - 0 -1 309 6.8027682602405548e-02 - - 1.2287759780883789e-01 -5.8085542917251587e-01 - <_> - - 0 -1 310 -2.5710109621286392e-03 - - -2.8932929039001465e-01 9.2327423393726349e-02 - <_> - - 0 -1 311 -2.7197790332138538e-03 - - -4.8277780413627625e-01 1.2942260503768921e-01 - <_> - - 0 -1 312 3.6168839782476425e-02 - - -3.3225961029529572e-02 2.8994488716125488e-01 - <_> - - 0 -1 313 -4.5704417861998081e-03 - - -5.9805792570114136e-01 1.0446850210428238e-01 - <_> - - 0 -1 314 3.7568379193544388e-03 - - 1.2488850206136703e-01 -5.7084852457046509e-01 - <_> - - 0 -1 315 3.0054030939936638e-03 - - -3.2693040370941162e-01 1.9752669334411621e-01 - <_> - - 0 -1 316 -1.0322710126638412e-01 - - 5.9689277410507202e-01 -9.9626749753952026e-02 - <_> - - 0 -1 317 8.5584551095962524e-02 - - -2.3595149815082550e-01 2.7769410610198975e-01 - <_> - - 0 -1 318 -1.7628820613026619e-02 - - 2.3300230503082275e-01 -3.8094460964202881e-02 - <_> - - 0 -1 319 -7.3259319178760052e-03 - - 1.5533800423145294e-01 -3.4289830923080444e-01 - <_> - - 0 -1 320 1.6643910109996796e-01 - - 1.3593060430139303e-04 -6.0628050565719604e-01 - <_> - - 0 -1 321 1.3041920028626919e-02 - - 1.0876829922199249e-01 -4.7265630960464478e-01 - <_> - - 0 -1 322 -1.3597619719803333e-02 - - -5.8280581235885620e-01 7.2698637843132019e-02 - <_> - - 0 -1 323 6.8220919929444790e-03 - - -1.4359709620475769e-01 3.4434759616851807e-01 - <_> - - 0 -1 324 -1.3025919906795025e-04 - - 7.5394742190837860e-02 -6.7537508904933929e-02 - <_> - - 0 -1 325 -2.4602119810879230e-03 - - -5.1882988214492798e-01 8.0956049263477325e-02 - <_> - - 0 -1 326 -3.2538071274757385e-02 - - -5.8500260114669800e-01 5.7338178157806396e-03 - <_> - - 0 -1 327 2.0106420852243900e-03 - - -1.0640989989042282e-01 4.0276700258255005e-01 - <_> - - 0 -1 328 -4.6432539820671082e-02 - - -4.2023709416389465e-01 4.2063061147928238e-02 - <_> - - 0 -1 329 -1.2824350036680698e-02 - - 4.8449409008026123e-01 -9.4362497329711914e-02 - <_> - - 0 -1 330 3.4120719879865646e-02 - - 2.7428179979324341e-02 -5.6730318069458008e-01 - <_> - - 0 -1 331 -4.4012650847434998e-02 - - 3.7047350406646729e-01 -1.3064679503440857e-01 - <_> - - 0 -1 332 -3.7362610455602407e-03 - - -6.1717242002487183e-01 4.6860579401254654e-02 - <_> - - 0 -1 333 -5.2141821943223476e-03 - - -6.5322470664978027e-01 5.3996030241250992e-02 - <_> - - 0 -1 334 6.4924731850624084e-03 - - 4.4800970703363419e-02 -4.3987420201301575e-01 - <_> - - 0 -1 335 -4.2384970001876354e-03 - - -7.1687930822372437e-01 5.4430369287729263e-02 - <_> - - 0 -1 336 -3.1804300379008055e-03 - - 2.4815900623798370e-01 -8.9008152484893799e-02 - <_> - - 0 -1 337 2.9277798603288829e-04 - - -2.1440739929676056e-01 2.0239150524139404e-01 - <_> - - 0 -1 338 -1.1838439851999283e-02 - - 6.8225288391113281e-01 -5.6109890341758728e-02 - <_> - - 0 -1 339 -2.0604960620403290e-02 - - -6.4495718479156494e-01 6.5811157226562500e-02 - <_> - 45 - -1.2928479909896851e+00 - - <_> - - 0 -1 340 -5.7252319529652596e-03 - - 3.4108111262321472e-01 -3.3441230654716492e-01 - <_> - - 0 -1 341 1.5814049541950226e-01 - - -2.9555070400238037e-01 2.9280221462249756e-01 - <_> - - 0 -1 342 3.5558689851313829e-03 - - -2.8485581278800964e-01 2.4933080375194550e-01 - <_> - - 0 -1 343 -3.1524680089205503e-03 - - -4.6672669053077698e-01 7.6127722859382629e-02 - <_> - - 0 -1 344 -1.4493550173938274e-02 - - 2.5777289271354675e-01 -2.4369129538536072e-01 - <_> - - 0 -1 345 -6.8386606872081757e-02 - - 5.2669358253479004e-01 8.9219277724623680e-03 - <_> - - 0 -1 346 1.0660409461706877e-03 - - -4.9784231185913086e-01 1.1696430295705795e-01 - <_> - - 0 -1 347 1.6208799555897713e-02 - - -3.0983239412307739e-01 9.5886580646038055e-02 - <_> - - 0 -1 348 2.8249868750572205e-01 - - -7.3715627193450928e-02 6.4200782775878906e-01 - <_> - - 0 -1 349 8.6361259222030640e-02 - - 4.0710549801588058e-02 -5.0559818744659424e-01 - <_> - - 0 -1 350 5.1451180130243301e-02 - - -3.3384099602699280e-01 1.6614030301570892e-01 - <_> - - 0 -1 351 -6.9037936627864838e-02 - - -3.1987860798835754e-01 3.4255299717187881e-02 - <_> - - 0 -1 352 -5.6569739244878292e-03 - - -6.1266559362411499e-01 8.3148159086704254e-02 - <_> - - 0 -1 353 -7.1886749938130379e-03 - - 4.2386818677186966e-02 -9.7789242863655090e-02 - <_> - - 0 -1 354 -2.6780599728226662e-02 - - 1.2735369801521301e-01 -3.4852239489555359e-01 - <_> - - 0 -1 355 -6.9346590898931026e-03 - - 4.4443860650062561e-02 -2.6666578650474548e-01 - <_> - - 0 -1 356 1.2057109922170639e-01 - - 9.1515138745307922e-02 -5.5102181434631348e-01 - <_> - - 0 -1 357 1.0571300052106380e-02 - - -1.1927139759063721e-01 1.5043540298938751e-01 - <_> - - 0 -1 358 -1.4446419663727283e-02 - - 3.2619118690490723e-01 -1.3021939992904663e-01 - <_> - - 0 -1 359 4.9188970588147640e-03 - - 2.4317760020494461e-02 -5.8825939893722534e-01 - <_> - - 0 -1 360 -3.8240209687501192e-03 - - -6.5660482645034790e-01 6.3337683677673340e-02 - <_> - - 0 -1 361 -1.7404669523239136e-01 - - -5.4772597551345825e-01 6.0019370168447495e-02 - <_> - - 0 -1 362 4.5922618359327316e-02 - - 5.0438169389963150e-02 -6.9467681646347046e-01 - <_> - - 0 -1 363 -3.9035470690578222e-03 - - 2.2018410265445709e-01 -1.8376649916172028e-01 - <_> - - 0 -1 364 1.7436769558116794e-03 - - 6.1212658882141113e-02 -5.7988357543945312e-01 - <_> - - 0 -1 365 -9.7301546484231949e-03 - - -5.1599711179733276e-01 4.9021121114492416e-02 - <_> - - 0 -1 366 -5.0866428762674332e-02 - - 4.3118700385093689e-01 -9.5599338412284851e-02 - <_> - - 0 -1 367 1.5334750059992075e-04 - - -8.4842063486576080e-02 5.3982339799404144e-02 - <_> - - 0 -1 368 -7.9509448260068893e-03 - - 4.7792288661003113e-01 -9.3340940773487091e-02 - <_> - - 0 -1 369 -4.4662738218903542e-03 - - -6.6406428813934326e-01 7.0635370910167694e-02 - <_> - - 0 -1 370 6.7459428682923317e-03 - - -9.5945097506046295e-02 4.5204031467437744e-01 - <_> - - 0 -1 371 -4.8576910048723221e-02 - - -2.5402069091796875e-01 3.5480510443449020e-02 - <_> - - 0 -1 372 -8.1895291805267334e-03 - - -6.9631862640380859e-01 5.4189778864383698e-02 - <_> - - 0 -1 373 -1.3830559328198433e-04 - - 7.7265933156013489e-02 -4.3882951140403748e-01 - <_> - - 0 -1 374 -2.9827160760760307e-02 - - 5.1934647560119629e-01 -7.4816159904003143e-02 - <_> - - 0 -1 375 1.9728230312466621e-02 - - 4.6895399689674377e-02 -5.6989020109176636e-01 - <_> - - 0 -1 376 1.2107780203223228e-02 - - -1.3739739358425140e-01 3.2666760683059692e-01 - <_> - - 0 -1 377 6.9206808693706989e-03 - - 4.6539328992366791e-02 -4.9861478805541992e-01 - <_> - - 0 -1 378 7.5631309300661087e-03 - - -1.0235120356082916e-01 3.9567971229553223e-01 - <_> - - 0 -1 379 -2.3844289779663086e-01 - - -7.1881687641143799e-01 4.9742348492145538e-02 - <_> - - 0 -1 380 -9.2327659949660301e-03 - - 4.8625311255455017e-01 -7.8327029943466187e-02 - <_> - - 0 -1 381 1.2344529852271080e-02 - - -4.5567270368337631e-02 1.6513639688491821e-01 - <_> - - 0 -1 382 -1.0889769764617085e-03 - - 2.3016020655632019e-01 -1.4696329832077026e-01 - <_> - - 0 -1 383 -5.1214238628745079e-03 - - 1.7787009477615356e-01 -1.9967870414257050e-01 - <_> - - 0 -1 384 2.3381220176815987e-02 - - 3.9966959506273270e-02 -7.6583552360534668e-01 - <_> - 49 - -1.3127609491348267e+00 - - <_> - - 0 -1 385 5.8875479735434055e-03 - - -2.6197949051856995e-01 3.9267268776893616e-01 - <_> - - 0 -1 386 -2.0563710480928421e-02 - - 2.3240800201892853e-01 -3.6058109253644943e-02 - <_> - - 0 -1 387 2.4195060133934021e-02 - - -1.7246599495410919e-01 4.0554100275039673e-01 - <_> - - 0 -1 388 2.2053229808807373e-01 - - -2.4937939643859863e-01 2.4980540573596954e-01 - <_> - - 0 -1 389 8.1213507801294327e-03 - - 9.8432846367359161e-02 -5.0667357444763184e-01 - <_> - - 0 -1 390 -1.5637070173397660e-03 - - -4.1526609659194946e-01 1.3340100646018982e-01 - <_> - - 0 -1 391 1.2210609856992960e-03 - - -2.5663951039314270e-01 2.1268320083618164e-01 - <_> - - 0 -1 392 4.5655488967895508e-02 - - 8.5712976753711700e-02 -5.5701047182083130e-01 - <_> - - 0 -1 393 -1.7322370782494545e-02 - - 1.0083419829607010e-01 -4.3052899837493896e-01 - <_> - - 0 -1 394 2.7879169210791588e-02 - - 4.4392268173396587e-03 -5.7203328609466553e-01 - <_> - - 0 -1 395 -4.7942388802766800e-02 - - 4.9971351027488708e-01 -1.0569220036268234e-01 - <_> - - 0 -1 396 -9.0003162622451782e-02 - - 7.7226841449737549e-01 -3.5037949681282043e-02 - <_> - - 0 -1 397 2.1878979168832302e-03 - - -4.3980291485786438e-01 1.0962349921464920e-01 - <_> - - 0 -1 398 -1.1160460300743580e-02 - - -6.0748499631881714e-01 2.5118330493569374e-02 - <_> - - 0 -1 399 2.3293609265238047e-03 - - 7.4755467474460602e-02 -5.6645327806472778e-01 - <_> - - 0 -1 400 -3.2051369547843933e-02 - - 1.3710969686508179e-01 -1.4014610648155212e-01 - <_> - - 0 -1 401 -1.0117290169000626e-01 - - 6.2204962968826294e-01 -6.4412176609039307e-02 - <_> - - 0 -1 402 4.2040869593620300e-02 - - -8.5930466651916504e-02 4.9315661191940308e-01 - <_> - - 0 -1 403 2.5582410395145416e-02 - - 6.1051581054925919e-02 -6.5449321269989014e-01 - <_> - - 0 -1 404 1.0514019988477230e-02 - - -1.0234809666872025e-01 2.6112779974937439e-01 - <_> - - 0 -1 405 1.1631770030362532e-04 - - -3.1768348813056946e-01 1.2542060017585754e-01 - <_> - - 0 -1 406 -4.4300020672380924e-03 - - 1.9109399616718292e-01 -5.2662618458271027e-02 - <_> - - 0 -1 407 2.0806640386581421e-03 - - -1.4428110420703888e-01 3.0112838745117188e-01 - <_> - - 0 -1 408 5.4104570299386978e-03 - - -5.4554589092731476e-02 3.5240170359611511e-01 - <_> - - 0 -1 409 1.0801830329000950e-02 - - 5.5018458515405655e-02 -7.4443417787551880e-01 - <_> - - 0 -1 410 4.2296931147575378e-02 - - 6.1844110488891602e-02 -3.3144399523735046e-01 - <_> - - 0 -1 411 5.9895617887377739e-03 - - 6.4745798707008362e-02 -5.6030327081680298e-01 - <_> - - 0 -1 412 -9.4227874651551247e-03 - - -3.0067789554595947e-01 4.3195281177759171e-02 - <_> - - 0 -1 413 -2.0783370360732079e-02 - - 3.7524980306625366e-01 -1.0968690365552902e-01 - <_> - - 0 -1 414 -5.2015861729159951e-04 - - -1.1337819695472717e-01 3.7144880741834641e-02 - <_> - - 0 -1 415 -8.0162001540884376e-04 - - -5.2545320987701416e-01 6.6209748387336731e-02 - <_> - - 0 -1 416 -2.5214110501110554e-03 - - -1.5936410427093506e-01 5.1849711686372757e-02 - <_> - - 0 -1 417 9.0704779722727835e-05 - - -3.3334940671920776e-01 1.0919860005378723e-01 - <_> - - 0 -1 418 -1.8114539561793208e-03 - - 1.1214060336351395e-01 -9.0960927307605743e-02 - <_> - - 0 -1 419 -1.9519029557704926e-01 - - -7.2080957889556885e-01 5.0182379782199860e-02 - <_> - - 0 -1 420 -1.4884449541568756e-02 - - -6.0010558366775513e-01 9.1695934534072876e-03 - <_> - - 0 -1 421 -9.3493862077593803e-03 - - 4.8005661368370056e-01 -7.6954081654548645e-02 - <_> - - 0 -1 422 7.1461386978626251e-02 - - -5.7781968265771866e-02 2.6106640696525574e-01 - <_> - - 0 -1 423 5.1590640097856522e-02 - - 7.1806840598583221e-02 -4.6015501022338867e-01 - <_> - - 0 -1 424 3.0857140664011240e-03 - - -9.2065691947937012e-02 1.1266019940376282e-01 - <_> - - 0 -1 425 1.7517179949209094e-03 - - -1.9908079504966736e-01 1.9879740476608276e-01 - <_> - - 0 -1 426 6.3493461348116398e-03 - - -1.0544289648532867e-01 4.3338119983673096e-02 - <_> - - 0 -1 427 4.2910311371088028e-02 - - 5.2926450967788696e-02 -6.6493779420852661e-01 - <_> - - 0 -1 428 -2.8933840990066528e-01 - - -5.9245282411575317e-01 5.0023719668388367e-02 - <_> - - 0 -1 429 1.9839199259877205e-02 - - 4.1037648916244507e-02 -6.7570680379867554e-01 - <_> - - 0 -1 430 -2.9357530176639557e-02 - - -6.5960741043090820e-01 4.1811358183622360e-02 - <_> - - 0 -1 431 8.8180392980575562e-02 - - 6.5817430615425110e-02 -4.4950678944587708e-01 - <_> - - 0 -1 432 -1.3282440602779388e-01 - - -2.1098449826240540e-01 3.9650738239288330e-02 - <_> - - 0 -1 433 8.0266319855581969e-05 - - -2.5888821482658386e-01 1.1488880217075348e-01 - <_> - 55 - -1.3777979612350464e+00 - - <_> - - 0 -1 434 6.5426998771727085e-03 - - -2.2366699576377869e-01 4.7720021009445190e-01 - <_> - - 0 -1 435 -2.2333480592351407e-04 - - 1.0184849798679352e-01 -1.8614460527896881e-01 - <_> - - 0 -1 436 -6.0191731899976730e-03 - - 3.1382268667221069e-01 -2.3328569531440735e-01 - <_> - - 0 -1 437 1.7179940640926361e-01 - - -2.9191988706588745e-01 2.1794080734252930e-01 - <_> - - 0 -1 438 1.6310229897499084e-02 - - -1.4051440358161926e-01 3.2606941461563110e-01 - <_> - - 0 -1 439 -1.5107460319995880e-01 - - 6.4690059423446655e-01 -5.2486609667539597e-02 - <_> - - 0 -1 440 4.6439900994300842e-02 - - -2.4340909719467163e-01 2.6854258775711060e-01 - <_> - - 0 -1 441 -4.3716500513255596e-03 - - -2.9228550195693970e-01 9.8407112061977386e-02 - <_> - - 0 -1 442 1.6864160075783730e-02 - - -2.8363880515098572e-01 1.9571739435195923e-01 - <_> - - 0 -1 443 2.5575649924576283e-03 - - 4.4347479939460754e-02 -1.3447460532188416e-01 - <_> - - 0 -1 444 2.0957190543413162e-02 - - -1.8374939262866974e-01 2.6384368538856506e-01 - <_> - - 0 -1 445 4.1607948951423168e-03 - - 4.9291279166936874e-02 -6.1921811103820801e-01 - <_> - - 0 -1 446 4.1489768773317337e-03 - - 4.1641891002655029e-02 -7.3988562822341919e-01 - <_> - - 0 -1 447 2.1313559263944626e-02 - - 2.3694250732660294e-02 -5.6835669279098511e-01 - <_> - - 0 -1 448 1.2101300060749054e-02 - - -9.5187656581401825e-02 4.6901950240135193e-01 - <_> - - 0 -1 449 1.8083410104736686e-03 - - 4.7500770539045334e-02 -3.0990800261497498e-01 - <_> - - 0 -1 450 -1.0990530252456665e-02 - - 6.7560458183288574e-01 -6.0268498957157135e-02 - <_> - - 0 -1 451 -8.9888361981138587e-04 - - 1.6142509877681732e-01 -8.0034710466861725e-02 - <_> - - 0 -1 452 8.5803032561670989e-05 - - -2.5957980751991272e-01 1.5043449401855469e-01 - <_> - - 0 -1 453 -1.0529270395636559e-02 - - 4.8798549175262451e-01 -1.0572060197591782e-01 - <_> - - 0 -1 454 -2.5140570942312479e-03 - - -5.9965860843658447e-01 7.1445137262344360e-02 - <_> - - 0 -1 455 -2.0928360521793365e-02 - - -6.3737767934799194e-01 1.1195439845323563e-02 - <_> - - 0 -1 456 8.4567293524742126e-03 - - 1.0487599670886993e-01 -3.3027571439743042e-01 - <_> - - 0 -1 457 1.1649870127439499e-01 - - 4.9215629696846008e-02 -7.1875381469726562e-01 - <_> - - 0 -1 458 1.0911310091614723e-02 - - 4.0617398917675018e-02 -7.1910649538040161e-01 - <_> - - 0 -1 459 -2.4141639471054077e-02 - - 4.6759098768234253e-01 -3.2959330826997757e-02 - <_> - - 0 -1 460 1.2029770296066999e-03 - - -3.1624960899353027e-01 1.1505530029535294e-01 - <_> - - 0 -1 461 9.8068173974752426e-03 - - -3.6025181412696838e-02 1.7123579978942871e-01 - <_> - - 0 -1 462 6.7418841645121574e-03 - - 6.2854416668415070e-02 -5.5376541614532471e-01 - <_> - - 0 -1 463 -1.3345720246434212e-02 - - -7.5741612911224365e-01 9.3524847179651260e-03 - <_> - - 0 -1 464 8.8471651077270508e-02 - - 5.5774558335542679e-02 -5.2644717693328857e-01 - <_> - - 0 -1 465 -1.4308050274848938e-02 - - -5.0163388252258301e-01 6.1552900820970535e-02 - <_> - - 0 -1 466 2.3234330583363771e-03 - - -8.7273299694061279e-02 3.7597200274467468e-01 - <_> - - 0 -1 467 -6.6605149768292904e-03 - - -5.6011527776718140e-01 4.5979429036378860e-02 - <_> - - 0 -1 468 -2.3684150073677301e-04 - - 9.2453077435493469e-02 -3.4188869595527649e-01 - <_> - - 0 -1 469 5.2499719895422459e-03 - - -1.0243079811334610e-01 3.8211381435394287e-01 - <_> - - 0 -1 470 9.6710777143016458e-05 - - -1.4891329407691956e-01 2.4878869950771332e-01 - <_> - - 0 -1 471 -3.1435599084943533e-03 - - 2.0501570403575897e-01 -5.9435389935970306e-02 - <_> - - 0 -1 472 -1.9189229351468384e-04 - - 1.2612619996070862e-01 -3.2496848702430725e-01 - <_> - - 0 -1 473 -4.6893218532204628e-03 - - 3.2404568791389465e-01 -3.2848190516233444e-02 - <_> - - 0 -1 474 3.0783370602875948e-03 - - 5.5750191211700439e-02 -5.7443851232528687e-01 - <_> - - 0 -1 475 1.3539710082113743e-02 - - -3.2638911157846451e-02 4.8875731229782104e-01 - <_> - - 0 -1 476 8.2393882621545345e-05 - - -2.2491760551929474e-01 1.5178939700126648e-01 - <_> - - 0 -1 477 -9.3342671170830727e-03 - - -5.7278221845626831e-01 4.6149488538503647e-02 - <_> - - 0 -1 478 4.5541571453213692e-03 - - -2.0548130571842194e-01 1.4704200625419617e-01 - <_> - - 0 -1 479 2.4691719561815262e-02 - - 2.0886249840259552e-02 -5.6028658151626587e-01 - <_> - - 0 -1 480 9.7412186732981354e-05 - - -1.5648730099201202e-01 1.9009509682655334e-01 - <_> - - 0 -1 481 5.7823117822408676e-03 - - -1.2173660099506378e-01 2.1024130284786224e-01 - <_> - - 0 -1 482 -6.4938321709632874e-02 - - 5.5764448642730713e-01 -6.1514221131801605e-02 - <_> - - 0 -1 483 -5.9424177743494511e-03 - - -4.4680491089820862e-01 5.5648550391197205e-02 - <_> - - 0 -1 484 -5.0992597825825214e-03 - - 1.9794790446758270e-01 -1.8055149912834167e-01 - <_> - - 0 -1 485 -1.5280229970812798e-02 - - -8.6270570755004883e-02 3.5552538931369781e-02 - <_> - - 0 -1 486 -7.4432790279388428e-03 - - 1.7408570647239685e-01 -1.8400490283966064e-01 - <_> - - 0 -1 487 5.1331128925085068e-03 - - -8.8491149246692657e-02 3.1532418727874756e-01 - <_> - - 0 -1 488 2.4648790713399649e-03 - - -8.3607397973537445e-02 3.5939309000968933e-01 - <_> - 57 - -1.2673230171203613e+00 - - <_> - - 0 -1 489 3.2584890723228455e-02 - - -2.9446709156036377e-01 3.8783320784568787e-01 - <_> - - 0 -1 490 -1.5954829752445221e-02 - - -8.7387222051620483e-01 1.3140209950506687e-02 - <_> - - 0 -1 491 6.5294029191136360e-03 - - -1.8746000528335571e-01 3.4920379519462585e-01 - <_> - - 0 -1 492 -6.9139063358306885e-02 - - -3.2066041231155396e-01 2.1070230752229691e-02 - <_> - - 0 -1 493 -2.7401080355048180e-02 - - 1.6137300431728363e-01 -3.3988159894943237e-01 - <_> - - 0 -1 494 5.4834091663360596e-01 - - -1.1290470138192177e-02 -1.0005040168762207e+00 - <_> - - 0 -1 495 4.6463169157505035e-02 - - -7.0668822526931763e-01 5.8523610234260559e-02 - <_> - - 0 -1 496 3.5692781209945679e-02 - - -1.2722860090434551e-02 5.1669907569885254e-01 - <_> - - 0 -1 497 -8.8253971189260483e-03 - - 3.5113370418548584e-01 -1.2264049798250198e-01 - <_> - - 0 -1 498 -2.4928439408540726e-02 - - -4.1226190328598022e-01 8.2819983363151550e-03 - <_> - - 0 -1 499 8.3438487490639091e-04 - - -3.1004768610000610e-01 1.2824219465255737e-01 - <_> - - 0 -1 500 4.3677380308508873e-03 - - 8.7895832955837250e-02 -5.5109828710556030e-01 - <_> - - 0 -1 501 -6.0594570823013783e-03 - - 2.3694829642772675e-01 -1.6963149607181549e-01 - <_> - - 0 -1 502 -1.3386299833655357e-02 - - -2.9353159666061401e-01 3.3642090857028961e-02 - <_> - - 0 -1 503 5.5047020316123962e-02 - - 9.9271617829799652e-02 -4.0973669290542603e-01 - <_> - - 0 -1 504 1.7345769330859184e-02 - - -1.0950370132923126e-01 4.2251870036125183e-01 - <_> - - 0 -1 505 5.1694452762603760e-01 - - -5.7410959154367447e-02 6.4137631654739380e-01 - <_> - - 0 -1 506 6.5628431737422943e-02 - - 3.3641148358583450e-02 -6.0003411769866943e-01 - <_> - - 0 -1 507 1.0161089897155762e-01 - - -2.5070580840110779e-01 1.8186099827289581e-01 - <_> - - 0 -1 508 2.9830370098352432e-02 - - -1.1608160287141800e-01 3.5246831178665161e-01 - <_> - - 0 -1 509 -6.6538550890982151e-04 - - -5.6480127573013306e-01 6.4513862133026123e-02 - <_> - - 0 -1 510 8.9011844247579575e-03 - - 3.7113070487976074e-02 -6.2943869829177856e-01 - <_> - - 0 -1 511 -5.7988148182630539e-03 - - 3.3002421259880066e-01 -1.1569269746541977e-01 - <_> - - 0 -1 512 1.8202450126409531e-02 - - 2.2297389805316925e-02 -6.8679827451705933e-01 - <_> - - 0 -1 513 -6.3430098816752434e-03 - - -5.9504687786102295e-01 5.3902018815279007e-02 - <_> - - 0 -1 514 1.0256610065698624e-01 - - 1.1425909586250782e-02 -3.4088680148124695e-01 - <_> - - 0 -1 515 -2.1729130297899246e-02 - - 1.0024060308933258e-01 -3.6016431450843811e-01 - <_> - - 0 -1 516 -4.0402188897132874e-02 - - -7.9971337318420410e-01 1.0374830104410648e-02 - <_> - - 0 -1 517 -1.1156830005347729e-02 - - 4.1818261146545410e-01 -1.0622619837522507e-01 - <_> - - 0 -1 518 1.0242810240015388e-03 - - -7.2071209549903870e-02 9.9886089563369751e-02 - <_> - - 0 -1 519 9.5549278194084764e-04 - - -1.6656149923801422e-01 2.7860009670257568e-01 - <_> - - 0 -1 520 1.3702700380235910e-04 - - -3.1575959920883179e-01 1.1808790266513824e-01 - <_> - - 0 -1 521 -1.9174149632453918e-01 - - 5.2235382795333862e-01 -7.6672300696372986e-02 - <_> - - 0 -1 522 2.5123620871454477e-03 - - -8.5517987608909607e-02 2.7882871031761169e-01 - <_> - - 0 -1 523 3.6384440027177334e-03 - - -1.0173840075731277e-01 3.6575859785079956e-01 - <_> - - 0 -1 524 -9.1068800538778305e-03 - - -1.9999110698699951e-01 3.5431660711765289e-02 - <_> - - 0 -1 525 -2.5456059724092484e-02 - - -6.6976618766784668e-01 5.1672291010618210e-02 - <_> - - 0 -1 526 -2.5856729596853256e-02 - - -7.3498648405075073e-01 2.7689380571246147e-02 - <_> - - 0 -1 527 8.5871294140815735e-03 - - -1.1443380266427994e-01 2.7319890260696411e-01 - <_> - - 0 -1 528 3.5716209094971418e-03 - - 6.0280900448560715e-02 -2.6631888747215271e-01 - <_> - - 0 -1 529 1.0332760401070118e-02 - - 3.8581959903240204e-02 -6.7532962560653687e-01 - <_> - - 0 -1 530 -8.3224009722471237e-03 - - 2.5268268585205078e-01 -6.8770729005336761e-02 - <_> - - 0 -1 531 -1.8182119820266962e-03 - - -3.1761169433593750e-01 9.2666782438755035e-02 - <_> - - 0 -1 532 -1.3169780373573303e-02 - - -5.3651332855224609e-01 2.8106879442930222e-02 - <_> - - 0 -1 533 2.0408600568771362e-02 - - -6.0603220015764236e-02 5.0572431087493896e-01 - <_> - - 0 -1 534 1.7321230471134186e-01 - - 2.1015009842813015e-03 3.2260191440582275e-01 - <_> - - 0 -1 535 -5.8910921216011047e-02 - - 1.4044930040836334e-01 -2.0362600684165955e-01 - <_> - - 0 -1 536 4.9123559147119522e-03 - - 7.1367353200912476e-02 -5.0733560323715210e-01 - <_> - - 0 -1 537 -1.3819620653521270e-04 - - 7.6624020934104919e-02 -3.4903231263160706e-01 - <_> - - 0 -1 538 1.2017219560220838e-03 - - -5.1169282197952271e-01 5.4793931543827057e-02 - <_> - - 0 -1 539 -5.4135429672896862e-03 - - -5.0181478261947632e-01 5.0226181745529175e-02 - <_> - - 0 -1 540 -3.3707648515701294e-02 - - -8.5764700174331665e-01 4.7642397694289684e-03 - <_> - - 0 -1 541 1.2718940153717995e-02 - - -1.0830610245466232e-01 2.8867751359939575e-01 - <_> - - 0 -1 542 -2.0672269165515900e-02 - - -3.0906811356544495e-01 2.1581029519438744e-02 - <_> - - 0 -1 543 1.5933969989418983e-02 - - -8.3755359053611755e-02 4.1743949055671692e-01 - <_> - - 0 -1 544 9.3405526131391525e-03 - - 4.7591928392648697e-02 -6.5143817663192749e-01 - <_> - - 0 -1 545 1.3016579672694206e-02 - - 5.3528260439634323e-02 -4.8644289374351501e-01 - <_> - 61 - -1.3531359434127808e+00 - - <_> - - 0 -1 546 5.0423052161931992e-03 - - -2.2111539542675018e-01 4.3673288822174072e-01 - <_> - - 0 -1 547 3.3594230189919472e-03 - - -1.7003799974918365e-01 1.2387859821319580e-01 - <_> - - 0 -1 548 -2.2854709997773170e-02 - - 3.0707350373268127e-01 -1.9186529517173767e-01 - <_> - - 0 -1 549 4.3850108049809933e-03 - - 3.2038759440183640e-02 -1.4620819687843323e-01 - <_> - - 0 -1 550 -5.3011639975011349e-03 - - 1.6375949978828430e-01 -2.8174880146980286e-01 - <_> - - 0 -1 551 4.9680870026350021e-02 - - 4.2250480502843857e-02 -6.0391640663146973e-01 - <_> - - 0 -1 552 -5.1453109830617905e-02 - - 6.5720152854919434e-01 -7.0812806487083435e-02 - <_> - - 0 -1 553 2.7113489806652069e-02 - - 2.9805190861225128e-02 -4.0825900435447693e-01 - <_> - - 0 -1 554 2.3578230291604996e-02 - - -3.0918011069297791e-01 2.1382910013198853e-01 - <_> - - 0 -1 555 2.9583559371531010e-03 - - 2.3970389738678932e-02 -1.6768220067024231e-01 - <_> - - 0 -1 556 -2.8374159592203796e-04 - - 1.9550369679927826e-01 -2.6317828893661499e-01 - <_> - - 0 -1 557 3.8295589387416840e-02 - - -8.1490896642208099e-02 4.1922101378440857e-01 - <_> - - 0 -1 558 -1.0575760155916214e-02 - - -5.5699461698532104e-01 6.0772120952606201e-02 - <_> - - 0 -1 559 -1.3283690204843879e-03 - - 9.2958763241767883e-02 -3.3554950356483459e-01 - <_> - - 0 -1 560 1.8217159667983651e-03 - - -9.9800482392311096e-02 3.8015770912170410e-01 - <_> - - 0 -1 561 -1.8067359924316406e-03 - - -5.1108711957931519e-01 6.8366326391696930e-02 - <_> - - 0 -1 562 6.6835001111030579e-02 - - 3.1457249075174332e-02 -6.9415211677551270e-01 - <_> - - 0 -1 563 -1.3109239749610424e-02 - - 6.0284411907196045e-01 -8.0423787236213684e-02 - <_> - - 0 -1 564 -1.9930349662899971e-03 - - -4.1979709267616272e-01 8.9367941021919250e-02 - <_> - - 0 -1 565 -1.0855719447135925e-03 - - -2.4703420698642731e-01 5.2764680236577988e-02 - <_> - - 0 -1 566 -2.0320110488682985e-03 - - -6.1820042133331299e-01 5.1938790827989578e-02 - <_> - - 0 -1 567 1.6026819124817848e-02 - - -8.5486106574535370e-02 5.8234047889709473e-01 - <_> - - 0 -1 568 1.7896020784974098e-02 - - 6.8894177675247192e-02 -5.8082962036132812e-01 - <_> - - 0 -1 569 -2.4853560607880354e-03 - - 2.0646420121192932e-01 -6.0466051101684570e-02 - <_> - - 0 -1 570 -1.8073250539600849e-03 - - 2.5038561224937439e-01 -1.3862800598144531e-01 - <_> - - 0 -1 571 -1.1800680309534073e-02 - - -5.5517327785491943e-01 2.3907609283924103e-02 - <_> - - 0 -1 572 5.3180782124400139e-03 - - -1.0365380346775055e-01 3.5622540116310120e-01 - <_> - - 0 -1 573 -1.9885929941665381e-04 - - 7.9137459397315979e-02 -7.1248553693294525e-02 - <_> - - 0 -1 574 1.2722889892756939e-02 - - 3.6043450236320496e-02 -7.7585661411285400e-01 - <_> - - 0 -1 575 5.4894611239433289e-03 - - -1.1198099702596664e-01 2.9539060592651367e-01 - <_> - - 0 -1 576 3.1117599457502365e-02 - - 6.8027697503566742e-02 -4.7621628642082214e-01 - <_> - - 0 -1 577 -1.0922919958829880e-02 - - 3.7011030316352844e-01 -1.5059700608253479e-01 - <_> - - 0 -1 578 -1.7167469486594200e-03 - - 2.7644971013069153e-01 -1.1304590106010437e-01 - <_> - - 0 -1 579 -1.3501050416380167e-03 - - -3.5303080081939697e-01 9.9187247455120087e-02 - <_> - - 0 -1 580 1.9909780472517014e-02 - - 6.5169408917427063e-02 -4.9353629350662231e-01 - <_> - - 0 -1 581 2.3044180124998093e-02 - - 1.7247360199689865e-02 -3.9788180589675903e-01 - <_> - - 0 -1 582 9.6177039667963982e-03 - - -1.1394459754228592e-01 3.1357648968696594e-01 - <_> - - 0 -1 583 -7.6275239698588848e-03 - - -9.2318731546401978e-01 7.8877164050936699e-03 - <_> - - 0 -1 584 8.7190303020179272e-05 - - -3.0970078706741333e-01 9.5611982047557831e-02 - <_> - - 0 -1 585 -1.1889990419149399e-02 - - 4.7901371121406555e-01 -3.5577189177274704e-02 - <_> - - 0 -1 586 8.4557365626096725e-03 - - 5.2709650248289108e-02 -5.7321697473526001e-01 - <_> - - 0 -1 587 1.1996040120720863e-02 - - 1.9709009677171707e-02 -6.9532912969589233e-01 - <_> - - 0 -1 588 -2.7005810290575027e-02 - - 5.9652292728424072e-01 -5.1673818379640579e-02 - <_> - - 0 -1 589 1.8543410114943981e-03 - - 7.2791919112205505e-02 -5.0846791267395020e-01 - <_> - - 0 -1 590 7.5675587868317962e-04 - - -3.8867241144180298e-01 6.5925061702728271e-02 - <_> - - 0 -1 591 -3.8905180990695953e-02 - - -6.0740387439727783e-01 3.5101689863950014e-03 - <_> - - 0 -1 592 -5.7714940048754215e-03 - - 1.7274090647697449e-01 -1.7644210159778595e-01 - <_> - - 0 -1 593 -9.1350553557276726e-03 - - -2.8621628880500793e-01 3.0258299782872200e-02 - <_> - - 0 -1 594 4.5439298264682293e-03 - - -8.5076972842216492e-02 4.1360539197921753e-01 - <_> - - 0 -1 595 1.5785360708832741e-02 - - -9.6528999507427216e-02 2.8125289082527161e-01 - <_> - - 0 -1 596 1.7944289371371269e-02 - - 5.0230890512466431e-02 -6.4134520292282104e-01 - <_> - - 0 -1 597 -3.8975570350885391e-02 - - -2.5966680049896240e-01 3.0592629685997963e-02 - <_> - - 0 -1 598 5.2373361540958285e-04 - - 1.0446350276470184e-01 -3.1365889310836792e-01 - <_> - - 0 -1 599 -2.5457229465246201e-02 - - -1.6731269657611847e-01 3.7427790462970734e-02 - <_> - - 0 -1 600 -4.2908679693937302e-02 - - -4.0295800566673279e-01 6.5455727279186249e-02 - <_> - - 0 -1 601 -5.1728109829127789e-03 - - 3.1299790740013123e-01 -7.0367880165576935e-02 - <_> - - 0 -1 602 -1.8753990298137069e-04 - - 1.5299630165100098e-01 -2.0695990324020386e-01 - <_> - - 0 -1 603 -1.9984589889645576e-03 - - 2.6436290144920349e-01 -1.0118020325899124e-01 - <_> - - 0 -1 604 -3.7929560057818890e-03 - - 2.8518161177635193e-01 -1.0743419826030731e-01 - <_> - - 0 -1 605 4.5540980994701385e-02 - - 4.5009840279817581e-02 -2.0425949990749359e-01 - <_> - - 0 -1 606 2.4831600487232208e-02 - - 4.9255561083555222e-02 -6.0236537456512451e-01 - <_> - 59 - -1.1971529722213745e+00 - - <_> - - 0 -1 607 3.9991321973502636e-03 - - -2.6711270213127136e-01 3.5392650961875916e-01 - <_> - - 0 -1 608 1.1023290455341339e-02 - - -1.0786689817905426e-01 1.0729049891233444e-01 - <_> - - 0 -1 609 -3.7521351128816605e-02 - - 3.0647391080856323e-01 -2.1749919652938843e-01 - <_> - - 0 -1 610 -2.7670729905366898e-03 - - -3.9869681000709534e-01 8.7402120232582092e-02 - <_> - - 0 -1 611 1.9890109542757273e-03 - - -3.2719919085502625e-01 2.0264029502868652e-01 - <_> - - 0 -1 612 1.9364669919013977e-02 - - -5.1705140620470047e-02 1.2021850049495697e-01 - <_> - - 0 -1 613 -1.1918369680643082e-02 - - 1.2546530365943909e-01 -3.7106749415397644e-01 - <_> - - 0 -1 614 9.5910847187042236e-02 - - -1.7389330267906189e-01 2.2600440680980682e-01 - <_> - - 0 -1 615 1.0751710087060928e-01 - - -7.8588336706161499e-02 5.7250618934631348e-01 - <_> - - 0 -1 616 -3.1022340059280396e-02 - - 1.4575169980525970e-01 -3.2396531105041504e-01 - <_> - - 0 -1 617 1.6883790493011475e-02 - - -1.6565980017185211e-01 2.9082998633384705e-01 - <_> - - 0 -1 618 5.0262849981663749e-05 - - -5.7035660743713379e-01 6.2110569328069687e-02 - <_> - - 0 -1 619 9.1006923466920853e-03 - - 5.5405318737030029e-02 -4.9272969365119934e-01 - <_> - - 0 -1 620 -1.6937600076198578e-01 - - 5.4915368556976318e-01 -3.9581310003995895e-02 - <_> - - 0 -1 621 1.9913749769330025e-02 - - 9.4958506524562836e-02 -5.1041561365127563e-01 - <_> - - 0 -1 622 3.0223759822547436e-03 - - -6.3331179320812225e-02 2.0407359302043915e-01 - <_> - - 0 -1 623 -4.5423391275107861e-03 - - 4.2783120274543762e-01 -7.8888073563575745e-02 - <_> - - 0 -1 624 -3.5147000104188919e-02 - - -6.1061471700668335e-01 2.5506079196929932e-02 - <_> - - 0 -1 625 2.0077088847756386e-03 - - 6.3804052770137787e-02 -4.4934588670730591e-01 - <_> - - 0 -1 626 -1.5540630556643009e-03 - - -4.0192028880119324e-01 3.1636688858270645e-02 - <_> - - 0 -1 627 1.4254899695515633e-02 - - -7.9566307365894318e-02 3.8706529140472412e-01 - <_> - - 0 -1 628 1.1024920269846916e-02 - - 6.7027233541011810e-02 -2.8063619136810303e-01 - <_> - - 0 -1 629 -5.1981899887323380e-03 - - 3.6570119857788086e-01 -1.1679860204458237e-01 - <_> - - 0 -1 630 4.9434448592364788e-03 - - 4.9997199326753616e-02 -1.4642210304737091e-01 - <_> - - 0 -1 631 -1.6670800745487213e-02 - - -4.9238750338554382e-01 6.1317440122365952e-02 - <_> - - 0 -1 632 7.7939140610396862e-03 - - -2.9953140765428543e-02 2.3316749930381775e-01 - <_> - - 0 -1 633 -1.4590610517188907e-03 - - -5.7006311416625977e-01 5.3406499326229095e-02 - <_> - - 0 -1 634 -2.2517830133438110e-02 - - 1.1464659869670868e-01 -1.2585699558258057e-01 - <_> - - 0 -1 635 1.4919370412826538e-02 - - 5.2204128354787827e-02 -5.6187790632247925e-01 - <_> - - 0 -1 636 -1.8656760454177856e-01 - - 6.0989791154861450e-01 -5.0142709165811539e-02 - <_> - - 0 -1 637 1.2466400221455842e-04 - - -3.2725819945335388e-01 8.6407169699668884e-02 - <_> - - 0 -1 638 -8.5008898749947548e-03 - - 4.0898931026458740e-01 -8.6464531719684601e-02 - <_> - - 0 -1 639 1.4465590007603168e-02 - - 5.5936750024557114e-02 -5.2939140796661377e-01 - <_> - - 0 -1 640 1.1536439880728722e-02 - - -9.3967936933040619e-02 4.0461421012878418e-01 - <_> - - 0 -1 641 1.6789000481367111e-02 - - 4.9098148941993713e-02 -6.1509531736373901e-01 - <_> - - 0 -1 642 -2.9727790970355272e-03 - - 1.5688349306583405e-01 -7.9878687858581543e-02 - <_> - - 0 -1 643 2.7876989915966988e-03 - - -1.1298049986362457e-01 2.3814339935779572e-01 - <_> - - 0 -1 644 2.6815771125257015e-03 - - -6.3131898641586304e-02 1.7341490089893341e-01 - <_> - - 0 -1 645 -1.6932430444285274e-03 - - 2.9134979844093323e-01 -9.7688913345336914e-02 - <_> - - 0 -1 646 -2.1838879212737083e-02 - - 2.2410179674625397e-01 -6.3271783292293549e-02 - <_> - - 0 -1 647 -4.6455059200525284e-02 - - -6.6729080677032471e-01 4.1569691151380539e-02 - <_> - - 0 -1 648 3.4257268905639648e-01 - - -4.3775469064712524e-02 4.2250889539718628e-01 - <_> - - 0 -1 649 -9.7134057432413101e-03 - - 2.8876009583473206e-01 -1.0904739797115326e-01 - <_> - - 0 -1 650 -1.9520539790391922e-03 - - 1.1463859677314758e-01 -1.0175020247697830e-01 - <_> - - 0 -1 651 -1.8771419301629066e-02 - - 6.2400698661804199e-01 -5.0913780927658081e-02 - <_> - - 0 -1 652 2.5264939665794373e-01 - - -2.2805340588092804e-01 1.4274069666862488e-01 - <_> - - 0 -1 653 -7.8301310539245605e-02 - - -4.9581411480903625e-01 5.4817609488964081e-02 - <_> - - 0 -1 654 -1.6115349531173706e-01 - - -5.7617807388305664e-01 4.2033191770315170e-02 - <_> - - 0 -1 655 1.3769039884209633e-02 - - 4.6666219830513000e-02 -5.0551378726959229e-01 - <_> - - 0 -1 656 -1.8329080194234848e-02 - - -7.9812979698181152e-01 -6.3357828184962273e-04 - <_> - - 0 -1 657 -3.9759539067745209e-03 - - 2.6330900192260742e-01 -1.0175059735774994e-01 - <_> - - 0 -1 658 1.9660349935293198e-02 - - 3.9909198880195618e-02 -6.7467451095581055e-01 - <_> - - 0 -1 659 -8.9697521179914474e-03 - - 5.5054008960723877e-02 -4.3380209803581238e-01 - <_> - - 0 -1 660 1.7052260041236877e-01 - - -8.9983023703098297e-02 1.5587039291858673e-01 - <_> - - 0 -1 661 -6.7584879696369171e-02 - - 1.8699319660663605e-01 -1.3449880480766296e-01 - <_> - - 0 -1 662 -4.9654832109808922e-03 - - 2.1740439534187317e-01 -6.8494133651256561e-02 - <_> - - 0 -1 663 -3.6419339012354612e-03 - - 2.2659860551357269e-01 -1.1511819809675217e-01 - <_> - - 0 -1 664 3.0941639095544815e-02 - - 9.5881456509232521e-03 -4.3764260411262512e-01 - <_> - - 0 -1 665 2.0714900456368923e-03 - - -6.9400407373905182e-02 3.5815268754959106e-01 - - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 3 7 8 2 -1. - <_> - 5 7 4 2 2. - <_> - - <_> - 6 4 3 4 -1. - <_> - 5 5 3 2 2. - 1 - <_> - - <_> - 4 0 8 18 -1. - <_> - 4 9 8 9 2. - <_> - - <_> - 0 18 3 2 -1. - <_> - 0 19 3 1 2. - <_> - - <_> - 11 0 1 10 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 0 0 10 1 -1. - <_> - 5 0 5 1 2. - <_> - - <_> - 2 5 8 14 -1. - <_> - 2 5 4 7 2. - <_> - 6 12 4 7 2. - <_> - - <_> - 0 0 12 8 -1. - <_> - 0 4 12 4 2. - <_> - - <_> - 2 7 6 10 -1. - <_> - 2 12 6 5 2. - <_> - - <_> - 8 2 4 8 -1. - <_> - 10 2 2 4 2. - <_> - 8 6 2 4 2. - <_> - - <_> - 0 2 4 8 -1. - <_> - 0 2 2 4 2. - <_> - 2 6 2 4 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 1 2. - <_> - 0 19 6 1 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 6 14 6 6 2. - <_> - - <_> - 6 12 2 6 -1. - <_> - 6 12 2 3 2. - 1 - <_> - - <_> - 6 12 6 2 -1. - <_> - 6 12 3 2 2. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 3 6 9 3 -1. - <_> - 6 7 3 1 9. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 6 2 4 5 -1. - <_> - 6 2 2 5 2. - 1 - <_> - - <_> - 4 5 4 4 -1. - <_> - 4 7 4 2 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 8 2 4 2 2. - <_> - - <_> - 3 0 3 20 -1. - <_> - 3 10 3 10 2. - <_> - - <_> - 9 16 3 4 -1. - <_> - 9 17 3 2 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 0 2 4 2 2. - <_> - - <_> - 9 16 3 4 -1. - <_> - 9 17 3 2 2. - <_> - - <_> - 0 16 3 4 -1. - <_> - 0 17 3 2 2. - <_> - - <_> - 3 7 8 1 -1. - <_> - 5 7 4 1 2. - <_> - - <_> - 0 4 9 6 -1. - <_> - 3 6 3 2 9. - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 6 13 1 6 -1. - <_> - 4 15 1 2 3. - 1 - <_> - - <_> - 2 3 9 2 -1. - <_> - 2 4 9 1 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 4 8 7 10 -1. - <_> - 4 13 7 5 2. - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 5 16 4 4 -1. - <_> - 5 18 4 2 2. - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 0 15 12 3 -1. - <_> - 0 15 6 3 2. - <_> - - <_> - 0 0 2 16 -1. - <_> - 0 4 2 8 2. - <_> - - <_> - 2 0 8 13 -1. - <_> - 2 0 4 13 2. - <_> - - <_> - 0 0 6 2 -1. - <_> - 0 1 6 1 2. - <_> - - <_> - 7 18 5 2 -1. - <_> - 7 19 5 1 2. - <_> - - <_> - 0 18 5 2 -1. - <_> - 0 19 5 1 2. - <_> - - <_> - 6 15 2 3 -1. - <_> - 6 15 1 3 2. - 1 - <_> - - <_> - 6 15 3 2 -1. - <_> - 6 15 3 1 2. - 1 - <_> - - <_> - 2 7 8 12 -1. - <_> - 2 7 4 6 2. - <_> - 6 13 4 6 2. - <_> - - <_> - 5 16 4 4 -1. - <_> - 5 18 4 2 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 0 16 12 4 -1. - <_> - 6 16 6 2 2. - <_> - 0 18 6 2 2. - <_> - - <_> - 0 2 10 4 -1. - <_> - 0 4 10 2 2. - <_> - - <_> - 8 9 2 8 -1. - <_> - 6 11 2 4 2. - 1 - <_> - - <_> - 4 9 8 3 -1. - <_> - 6 11 4 3 2. - 1 - <_> - - <_> - 6 12 1 6 -1. - <_> - 6 12 1 3 2. - 1 - <_> - - <_> - 6 12 6 1 -1. - <_> - 6 12 3 1 2. - 1 - <_> - - <_> - 8 1 4 10 -1. - <_> - 10 1 2 5 2. - <_> - 8 6 2 5 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 10 2 2 3 -1. - <_> - 10 3 2 1 3. - <_> - - <_> - 0 2 2 3 -1. - <_> - 0 3 2 1 3. - <_> - - <_> - 4 8 8 4 -1. - <_> - 6 10 4 4 2. - 1 - <_> - - <_> - 3 6 9 3 -1. - <_> - 6 7 3 1 9. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 1 2 5 2. - <_> - 2 6 2 5 2. - <_> - - <_> - 3 3 8 17 -1. - <_> - 5 3 4 17 2. - <_> - - <_> - 4 0 4 8 -1. - <_> - 6 0 2 8 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 0 18 4 2 -1. - <_> - 0 19 4 1 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 1 6 9 3 -1. - <_> - 4 7 3 1 9. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 6 10 3 6 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 0 0 12 10 -1. - <_> - 0 5 12 5 2. - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 4 5 4 8 -1. - <_> - 4 7 4 4 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 0 8 12 4 -1. - <_> - 0 9 12 2 2. - <_> - - <_> - 1 3 1 3 -1. - <_> - 1 4 1 1 3. - <_> - - <_> - 4 9 8 2 -1. - <_> - 6 11 4 2 2. - 1 - <_> - - <_> - 5 3 2 6 -1. - <_> - 5 5 2 2 3. - <_> - - <_> - 0 0 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 2 5 8 14 -1. - <_> - 6 5 4 7 2. - <_> - 2 12 4 7 2. - <_> - - <_> - 0 6 1 8 -1. - <_> - 0 8 1 4 2. - <_> - - <_> - 0 17 12 3 -1. - <_> - 0 17 6 3 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 5 12 6 8 -1. - <_> - 5 14 6 4 2. - <_> - - <_> - 3 11 4 9 -1. - <_> - 3 14 4 3 3. - <_> - - <_> - 2 0 10 16 -1. - <_> - 2 8 10 8 2. - <_> - - <_> - 5 15 3 2 -1. - <_> - 5 15 3 1 2. - 1 - <_> - - <_> - 8 15 4 1 -1. - <_> - 9 16 2 1 2. - 1 - <_> - - <_> - 4 15 1 4 -1. - <_> - 3 16 1 2 2. - 1 - <_> - - <_> - 6 14 3 3 -1. - <_> - 7 15 1 3 3. - 1 - <_> - - <_> - 6 14 3 3 -1. - <_> - 5 15 3 1 3. - 1 - <_> - - <_> - 3 6 8 2 -1. - <_> - 5 6 4 2 2. - <_> - - <_> - 3 2 6 17 -1. - <_> - 5 2 2 17 3. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 6 14 4 2 -1. - <_> - 6 14 4 1 2. - 1 - <_> - - <_> - 3 0 8 1 -1. - <_> - 3 0 4 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 6 4 3 3 -1. - <_> - 5 5 3 1 3. - 1 - <_> - - <_> - 8 0 4 2 -1. - <_> - 10 0 2 1 2. - <_> - 8 1 2 1 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 2 5 8 14 -1. - <_> - 2 5 4 7 2. - <_> - 6 12 4 7 2. - <_> - - <_> - 7 7 4 1 -1. - <_> - 7 7 2 1 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 8 6 4 1 -1. - <_> - 8 6 2 1 2. - 1 - <_> - - <_> - 4 6 1 4 -1. - <_> - 4 6 1 2 2. - 1 - <_> - - <_> - 3 1 7 9 -1. - <_> - 3 4 7 3 3. - <_> - - <_> - 3 9 6 3 -1. - <_> - 3 9 3 3 2. - 1 - <_> - - <_> - 2 18 10 2 -1. - <_> - 7 18 5 1 2. - <_> - 2 19 5 1 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 4 5 3 2 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 0 14 12 5 -1. - <_> - 0 14 6 5 2. - <_> - - <_> - 1 0 8 2 -1. - <_> - 5 0 4 2 2. - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 1 2 2. - 1 - <_> - - <_> - 6 16 2 2 -1. - <_> - 6 16 2 1 2. - 1 - <_> - - <_> - 6 9 1 6 -1. - <_> - 4 11 1 2 3. - 1 - <_> - - <_> - 6 9 6 1 -1. - <_> - 8 11 2 1 3. - 1 - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 11 2 1 18 -1. - <_> - 11 8 1 6 3. - <_> - - <_> - 0 0 1 20 -1. - <_> - 0 5 1 10 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 7 0 3 1 2. - <_> - 4 1 3 1 2. - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 2 3 4 2 -1. - <_> - 3 4 2 2 2. - 1 - <_> - - <_> - 6 5 2 2 -1. - <_> - 6 5 2 1 2. - 1 - <_> - - <_> - 0 12 12 5 -1. - <_> - 3 12 6 5 2. - <_> - - <_> - 0 18 10 2 -1. - <_> - 0 18 5 1 2. - <_> - 5 19 5 1 2. - <_> - - <_> - 3 3 8 13 -1. - <_> - 5 3 4 13 2. - <_> - - <_> - 1 3 8 13 -1. - <_> - 3 3 4 13 2. - <_> - - <_> - 11 0 1 4 -1. - <_> - 11 0 1 2 2. - 1 - <_> - - <_> - 0 1 10 2 -1. - <_> - 0 1 5 1 2. - <_> - 5 2 5 1 2. - <_> - - <_> - 4 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 0 0 1 14 -1. - <_> - 0 7 1 7 2. - <_> - - <_> - 8 10 4 6 -1. - <_> - 6 12 4 2 3. - 1 - <_> - - <_> - 4 10 6 4 -1. - <_> - 6 12 2 4 3. - 1 - <_> - - <_> - 0 17 12 2 -1. - <_> - 0 17 6 2 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 6 9 6 4 -1. - <_> - 6 9 3 4 2. - 1 - <_> - - <_> - 6 9 4 6 -1. - <_> - 6 9 4 3 2. - 1 - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 1 9 3 2 -1. - <_> - 2 9 1 2 3. - <_> - - <_> - 8 1 4 1 -1. - <_> - 9 2 2 1 2. - 1 - <_> - - <_> - 4 1 1 4 -1. - <_> - 3 2 1 2 2. - 1 - <_> - - <_> - 0 2 12 4 -1. - <_> - 0 4 12 2 2. - <_> - - <_> - 8 9 3 8 -1. - <_> - 6 11 3 4 2. - 1 - <_> - - <_> - 2 6 8 14 -1. - <_> - 2 6 4 7 2. - <_> - 6 13 4 7 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 2 2 -1. - <_> - 0 19 2 1 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 4 6 4 4 -1. - <_> - 4 7 4 2 2. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 1 1 2 3. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 4 0 8 8 -1. - <_> - 6 0 4 8 2. - <_> - - <_> - 0 12 12 7 -1. - <_> - 6 12 6 7 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 4 0 1 2 -1. - <_> - 4 0 1 1 2. - 1 - <_> - - <_> - 6 10 2 6 -1. - <_> - 4 12 2 2 3. - 1 - <_> - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - <_> - - <_> - 9 8 3 4 -1. - <_> - 10 8 1 4 3. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 4 4 6 12 -1. - <_> - 4 7 6 6 2. - <_> - - <_> - 3 16 4 4 -1. - <_> - 3 18 4 2 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 7 4 1 6 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 5 4 6 1 3. - 1 - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 11 0 1 6 -1. - <_> - 11 3 1 3 2. - <_> - - <_> - 0 4 6 16 -1. - <_> - 0 12 6 8 2. - <_> - - <_> - 11 0 1 6 -1. - <_> - 11 3 1 3 2. - <_> - - <_> - 6 12 6 1 -1. - <_> - 6 12 3 1 2. - 1 - <_> - - <_> - 0 13 12 3 -1. - <_> - 3 13 6 3 2. - <_> - - <_> - 4 6 8 2 -1. - <_> - 6 6 4 2 2. - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 3 2 3 2. - <_> - - <_> - 0 4 4 4 -1. - <_> - 0 4 2 2 2. - <_> - 2 6 2 2 2. - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 3 2 3 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 0 3 2 3 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 17 12 3 -1. - <_> - 6 17 6 3 2. - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 13 6 6 2. - <_> - - <_> - 0 5 8 4 -1. - <_> - 0 5 4 2 2. - <_> - 4 7 4 2 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 2 12 6 -1. - <_> - 0 5 12 3 2. - <_> - - <_> - 5 0 5 18 -1. - <_> - 5 6 5 6 3. - <_> - - <_> - 0 0 9 9 -1. - <_> - 3 0 3 9 3. - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 2 12 4 2 -1. - <_> - 2 12 2 2 2. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 1 10 3 1 -1. - <_> - 2 10 1 1 3. - <_> - - <_> - 9 14 3 4 -1. - <_> - 9 16 3 2 2. - <_> - - <_> - 0 14 3 4 -1. - <_> - 0 16 3 2 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 3 6 6 8 -1. - <_> - 3 10 6 4 2. - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 8 5 3 4 -1. - <_> - 9 6 1 4 3. - 1 - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 5 2 2 2. - <_> - - <_> - 3 14 6 6 -1. - <_> - 3 17 6 3 2. - <_> - - <_> - 0 5 8 12 -1. - <_> - 2 5 4 12 2. - <_> - - <_> - 11 0 1 4 -1. - <_> - 11 0 1 2 2. - 1 - <_> - - <_> - 1 0 4 1 -1. - <_> - 1 0 2 1 2. - 1 - <_> - - <_> - 4 18 6 2 -1. - <_> - 7 18 3 1 2. - <_> - 4 19 3 1 2. - <_> - - <_> - 0 18 8 2 -1. - <_> - 0 18 4 1 2. - <_> - 4 19 4 1 2. - <_> - - <_> - 4 0 8 8 -1. - <_> - 6 0 4 8 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 0 13 12 1 -1. - <_> - 3 13 6 1 2. - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 8 6 4 14 -1. - <_> - 10 6 2 7 2. - <_> - 8 13 2 7 2. - <_> - - <_> - 0 6 4 14 -1. - <_> - 0 6 2 7 2. - <_> - 2 13 2 7 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 4 4 8 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 18 3 2 -1. - <_> - 1 18 1 2 3. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 8 12 4 3. - <_> - - <_> - 0 6 6 14 -1. - <_> - 0 13 6 7 2. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 1 1 1 3. - 1 - <_> - - <_> - 5 7 2 3 -1. - <_> - 4 8 2 1 3. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 17 1 1 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 0 3 1 3 -1. - <_> - 0 4 1 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 6 2 4 6 -1. - <_> - 4 4 4 2 3. - 1 - <_> - - <_> - 5 17 6 2 -1. - <_> - 8 17 3 1 2. - <_> - 5 18 3 1 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 0 3 1 2. - <_> - 6 1 3 1 2. - <_> - - <_> - 11 3 1 2 -1. - <_> - 11 4 1 1 2. - <_> - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - <_> - - <_> - 10 4 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - <_> - - <_> - 0 13 12 5 -1. - <_> - 0 13 6 5 2. - <_> - - <_> - 1 9 10 10 -1. - <_> - 1 9 5 5 2. - <_> - 6 14 5 5 2. - <_> - - <_> - 1 1 6 2 -1. - <_> - 1 1 3 1 2. - <_> - 4 2 3 1 2. - <_> - - <_> - 7 4 3 5 -1. - <_> - 8 5 1 5 3. - 1 - <_> - - <_> - 6 3 6 1 -1. - <_> - 8 5 2 1 3. - 1 - <_> - - <_> - 11 4 1 12 -1. - <_> - 11 8 1 4 3. - <_> - - <_> - 0 4 1 12 -1. - <_> - 0 8 1 4 3. - <_> - - <_> - 8 8 4 8 -1. - <_> - 6 10 4 4 2. - 1 - <_> - - <_> - 1 7 10 12 -1. - <_> - 1 7 5 6 2. - <_> - 6 13 5 6 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 3 6 4 4 -1. - <_> - 3 6 2 2 2. - <_> - 5 8 2 2 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 3 2 1 2. - <_> - - <_> - 0 2 2 2 -1. - <_> - 0 3 2 1 2. - <_> - - <_> - 8 17 2 1 -1. - <_> - 8 17 1 1 2. - 1 - <_> - - <_> - 0 8 3 3 -1. - <_> - 1 8 1 3 3. - <_> - - <_> - 5 14 3 6 -1. - <_> - 6 14 1 6 3. - <_> - - <_> - 4 14 3 5 -1. - <_> - 5 14 1 5 3. - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 0 12 12 7 -1. - <_> - 0 12 6 7 2. - <_> - - <_> - 6 14 3 2 -1. - <_> - 7 15 1 2 3. - 1 - <_> - - <_> - 11 16 1 4 -1. - <_> - 11 18 1 2 2. - <_> - - <_> - 0 16 1 4 -1. - <_> - 0 18 1 2 2. - <_> - - <_> - 4 2 6 4 -1. - <_> - 4 4 6 2 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 8 0 4 20 -1. - <_> - 8 10 4 10 2. - <_> - - <_> - 3 11 2 3 -1. - <_> - 3 12 2 1 3. - <_> - - <_> - 8 0 4 20 -1. - <_> - 8 10 4 10 2. - <_> - - <_> - 0 0 4 20 -1. - <_> - 0 10 4 10 2. - <_> - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 6 1 3 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 0 9 12 3 -1. - <_> - 0 10 12 1 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 1 2. - <_> - 7 14 2 1 2. - <_> - - <_> - 1 13 4 2 -1. - <_> - 1 13 2 1 2. - <_> - 3 14 2 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 2 9 2 1 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 6 3 4 3 -1. - <_> - 5 4 4 1 3. - 1 - <_> - - <_> - 7 0 3 1 -1. - <_> - 8 1 1 1 3. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 8 9 3 8 -1. - <_> - 6 11 3 4 2. - 1 - <_> - - <_> - 4 9 8 3 -1. - <_> - 6 11 4 3 2. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 6 1 1 1 3. - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 0 11 12 1 2. - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 2 2 7 8 -1. - <_> - 2 4 7 4 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 9 17 3 3 -1. - <_> - 9 18 3 1 3. - <_> - - <_> - 0 17 3 3 -1. - <_> - 0 18 3 1 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 2 2. - <_> - - <_> - 0 11 12 5 -1. - <_> - 3 11 6 5 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 8 7 2 1 2. - 1 - <_> - - <_> - 4 7 1 4 -1. - <_> - 4 7 1 2 2. - 1 - <_> - - <_> - 4 0 6 7 -1. - <_> - 6 0 2 7 3. - <_> - - <_> - 2 0 6 7 -1. - <_> - 4 0 2 7 3. - <_> - - <_> - 0 16 12 3 -1. - <_> - 0 17 12 1 3. - <_> - - <_> - 4 17 4 2 -1. - <_> - 4 17 2 1 2. - <_> - 6 18 2 1 2. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 3 6 3 1 -1. - <_> - 4 6 1 1 3. - <_> - - <_> - 9 2 3 7 -1. - <_> - 10 3 1 7 3. - 1 - <_> - - <_> - 5 5 2 2 -1. - <_> - 5 5 2 1 2. - 1 - <_> - - <_> - 7 5 3 4 -1. - <_> - 8 6 1 4 3. - 1 - <_> - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 0 3 2 3 -1. - <_> - 0 4 2 1 3. - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 5 2 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 5 2 1 2. - <_> - - <_> - 7 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 3 10 2 1 -1. - <_> - 4 10 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 5 14 4 2 -1. - <_> - 5 14 4 1 2. - 1 - <_> - - <_> - 4 6 3 3 -1. - <_> - 4 7 3 1 3. - <_> - - <_> - 3 5 6 14 -1. - <_> - 6 5 3 7 2. - <_> - 3 12 3 7 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 1 3 1 2. - <_> - - <_> - 7 18 5 2 -1. - <_> - 7 19 5 1 2. - <_> - - <_> - 0 18 10 2 -1. - <_> - 0 19 10 1 2. - <_> - - <_> - 11 2 1 15 -1. - <_> - 11 7 1 5 3. - <_> - - <_> - 0 4 1 6 -1. - <_> - 0 7 1 3 2. - <_> - - <_> - 3 2 9 8 -1. - <_> - 3 4 9 4 2. - <_> - - <_> - 0 15 12 5 -1. - <_> - 6 15 6 5 2. - <_> - - <_> - 6 9 3 6 -1. - <_> - 4 11 3 2 3. - 1 - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 11 2 3 3. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - <_> - - <_> - 0 0 10 2 -1. - <_> - 5 0 5 2 2. - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 6 0 6 5 -1. - <_> - 6 0 3 5 2. - 1 - <_> - - <_> - 6 0 5 6 -1. - <_> - 6 0 5 3 2. - 1 - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 9 1 2 3. - 1 - <_> - - <_> - 4 8 2 3 -1. - <_> - 3 9 2 1 3. - 1 - <_> - - <_> - 11 6 1 3 -1. - <_> - 11 7 1 1 3. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 0 11 12 8 -1. - <_> - 0 15 12 4 2. - <_> - - <_> - 3 13 6 3 -1. - <_> - 5 13 2 3 3. - <_> - - <_> - 5 16 2 4 -1. - <_> - 5 17 2 2 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 1 1 1 1 2. - 1 - <_> - - <_> - 6 15 2 3 -1. - <_> - 5 16 2 1 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 6 5 2 3 -1. - <_> - 6 6 2 1 3. - <_> - - <_> - 4 5 2 3 -1. - <_> - 4 6 2 1 3. - <_> - - <_> - 10 5 2 3 -1. - <_> - 10 6 2 1 3. - <_> - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - <_> - - <_> - 8 7 1 8 -1. - <_> - 6 9 1 4 2. - 1 - <_> - - <_> - 0 5 2 3 -1. - <_> - 0 6 2 1 3. - <_> - - <_> - 5 5 2 3 -1. - <_> - 5 5 1 3 2. - <_> - - <_> - 4 7 8 1 -1. - <_> - 6 9 4 1 2. - 1 - <_> - - <_> - 6 15 2 3 -1. - <_> - 5 16 2 1 3. - 1 - <_> - - <_> - 6 15 3 2 -1. - <_> - 7 16 1 2 3. - 1 - <_> - - <_> - 9 13 2 3 -1. - <_> - 9 14 2 1 3. - <_> - - <_> - 1 13 2 3 -1. - <_> - 1 14 2 1 3. - <_> - - <_> - 0 5 12 12 -1. - <_> - 0 9 12 4 3. - <_> - - <_> - 0 9 3 2 -1. - <_> - 1 9 1 2 3. - <_> - - <_> - 6 13 6 1 -1. - <_> - 8 15 2 1 3. - 1 - <_> - - <_> - 0 9 2 4 -1. - <_> - 0 9 1 2 2. - <_> - 1 11 1 2 2. - <_> - - <_> - 2 17 8 2 -1. - <_> - 6 17 4 1 2. - <_> - 2 18 4 1 2. - <_> - - <_> - 1 8 9 2 -1. - <_> - 1 9 9 1 2. - <_> - - <_> - 5 4 1 4 -1. - <_> - 5 5 1 2 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 7 1 3 1 3. - 1 - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 1 1 3 3. - 1 - <_> - - <_> - 0 13 12 6 -1. - <_> - 0 13 6 6 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 9 17 1 3 -1. - <_> - 9 18 1 1 3. - <_> - - <_> - 2 17 1 3 -1. - <_> - 2 18 1 1 3. - <_> - - <_> - 0 9 12 6 -1. - <_> - 0 11 12 2 3. - <_> - - <_> - 5 6 6 2 -1. - <_> - 5 6 3 2 2. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 6 4 4 3 -1. - <_> - 5 5 4 1 3. - 1 - <_> - - <_> - 11 4 1 16 -1. - <_> - 11 8 1 8 2. - <_> - - <_> - 0 0 1 20 -1. - <_> - 0 5 1 10 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 13 6 6 -1. - <_> - 9 13 3 3 2. - <_> - 6 16 3 3 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 8 12 2 4 3. - 1 - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 13 6 6 -1. - <_> - 0 13 3 3 2. - <_> - 3 16 3 3 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 2 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 3 9 1 2 2. - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - <_> - - <_> - 4 4 5 12 -1. - <_> - 4 8 5 4 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 1 0 1 3 3. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 3 3. - 1 - <_> - - <_> - 4 7 3 3 -1. - <_> - 3 8 3 1 3. - 1 - <_> - - <_> - 11 1 1 2 -1. - <_> - 11 2 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 8 17 2 1 -1. - <_> - 8 17 1 1 2. - 1 - <_> - - <_> - 4 17 1 2 -1. - <_> - 4 17 1 1 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 8 6 1 2 2. - <_> - 7 8 1 2 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 6 8 6 3 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 8 6 1 2 2. - <_> - 7 8 1 2 2. - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 6 1 6 2 -1. - <_> - 8 3 2 2 3. - 1 - <_> - - <_> - 0 11 6 5 -1. - <_> - 3 11 3 5 2. - <_> - - <_> - 7 13 3 3 -1. - <_> - 8 13 1 3 3. - <_> - - <_> - 2 13 3 3 -1. - <_> - 3 13 1 3 3. - <_> - - <_> - 6 1 6 2 -1. - <_> - 8 3 2 2 3. - 1 - <_> - - <_> - 6 1 2 6 -1. - <_> - 4 3 2 2 3. - 1 - <_> - - <_> - 0 0 12 7 -1. - <_> - 0 0 6 7 2. - <_> - - <_> - 1 9 10 3 -1. - <_> - 1 10 10 1 3. - <_> - - <_> - 0 9 12 4 -1. - <_> - 0 10 12 2 2. - <_> - - <_> - 0 5 3 15 -1. - <_> - 0 10 3 5 3. - <_> - - <_> - 5 0 7 18 -1. - <_> - 5 9 7 9 2. - <_> - - <_> - 0 0 4 5 -1. - <_> - 2 0 2 5 2. - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 3 7 6 2 -1. - <_> - 3 7 3 1 2. - <_> - 6 8 3 1 2. - <_> - - <_> - 1 8 10 10 -1. - <_> - 6 8 5 5 2. - <_> - 1 13 5 5 2. - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 17 12 3 -1. - <_> - 0 17 6 3 2. - <_> - - <_> - 0 0 1 12 -1. - <_> - 0 6 1 6 2. - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - 1 - <_> - - <_> - 0 18 12 2 -1. - <_> - 0 18 6 1 2. - <_> - 6 19 6 1 2. - <_> - - <_> - 6 3 3 5 -1. - <_> - 7 4 1 5 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 5 4 5 1 3. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 6 1 2 3. - 1 - <_> - - <_> - 5 5 2 3 -1. - <_> - 4 6 2 1 3. - 1 - <_> - - <_> - 6 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 11 8 1 2 -1. - <_> - 11 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 5 0 1 2 2. - <_> - - <_> - 8 0 3 1 -1. - <_> - 9 1 1 1 3. - 1 - <_> - - <_> - 0 4 8 12 -1. - <_> - 0 7 8 6 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 0 16 12 2 3. - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 10 17 2 1 -1. - <_> - 10 17 1 1 2. - 1 - <_> - - <_> - 2 17 1 2 -1. - <_> - 2 17 1 1 2. - 1 - <_> - - <_> - 9 2 3 1 -1. - <_> - 10 3 1 1 3. - 1 - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 10 11 2 2 -1. - <_> - 10 12 2 1 2. - <_> - - <_> - 0 9 12 8 -1. - <_> - 0 11 12 4 2. - <_> - - <_> - 5 8 2 8 -1. - <_> - 5 10 2 4 2. - <_> - - <_> - 5 5 1 2 -1. - <_> - 5 6 1 1 2. - <_> - - <_> - 9 4 3 4 -1. - <_> - 9 5 3 2 2. - <_> - - <_> - 1 7 4 1 -1. - <_> - 3 7 2 1 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 0 9 2 1 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 10 6 2 1 -1. - <_> - 10 6 1 1 2. - 1 - <_> - - <_> - 2 6 1 2 -1. - <_> - 2 6 1 1 2. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 6 6 1 1 3. - <_> - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 0 1 3 3. - <_> - - <_> - 4 11 3 3 -1. - <_> - 5 12 1 3 3. - 1 - <_> - - <_> - 6 10 1 6 -1. - <_> - 6 10 1 3 2. - 1 - <_> - - <_> - 2 9 2 1 -1. - <_> - 3 9 1 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 1 3 1 2. - <_> - - <_> - 6 11 6 1 -1. - <_> - 6 11 3 1 2. - 1 - <_> - - <_> - 7 15 1 3 -1. - <_> - 6 16 1 1 3. - 1 - <_> - - <_> - 2 16 6 2 -1. - <_> - 2 16 3 1 2. - <_> - 5 17 3 1 2. - <_> - - <_> - 6 1 2 6 -1. - <_> - 6 1 1 6 2. - 1 - <_> - - <_> - 6 1 6 2 -1. - <_> - 6 1 6 1 2. - 1 - <_> - - <_> - 8 9 3 1 -1. - <_> - 9 9 1 1 3. - <_> - - <_> - 1 9 3 1 -1. - <_> - 2 9 1 1 3. - <_> - - <_> - 6 2 6 1 -1. - <_> - 8 4 2 1 3. - 1 - <_> - - <_> - 7 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 7 9 1 2 2. - <_> - - <_> - 3 7 2 4 -1. - <_> - 3 7 1 2 2. - <_> - 4 9 1 2 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 2 4 5 12 -1. - <_> - 2 7 5 6 2. - <_> - - <_> - 5 0 7 18 -1. - <_> - 5 9 7 9 2. - <_> - - <_> - 0 0 7 18 -1. - <_> - 0 9 7 9 2. - <_> - - <_> - 11 9 1 6 -1. - <_> - 11 12 1 3 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 1 2. - <_> - 6 1 2 1 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 0 7 1 6 -1. - <_> - 0 9 1 2 3. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 0 1 3 2. - <_> - - <_> - 3 15 6 2 -1. - <_> - 3 15 3 1 2. - <_> - 6 16 3 1 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 0 11 8 5 -1. - <_> - 4 11 4 5 2. - <_> - - <_> - 10 1 2 5 -1. - <_> - 10 1 1 5 2. - <_> - - <_> - 0 7 12 13 -1. - <_> - 6 7 6 13 2. - <_> - - <_> - 8 8 3 8 -1. - <_> - 6 10 3 4 2. - 1 - <_> - - <_> - 4 8 8 3 -1. - <_> - 6 10 4 3 2. - 1 - <_> - - <_> - 1 0 10 3 -1. - <_> - 1 1 10 1 3. - <_> - - <_> - 0 2 1 2 -1. - <_> - 0 3 1 1 2. - <_> - - <_> - 9 12 2 3 -1. - <_> - 9 13 2 1 3. - <_> - - <_> - 1 12 2 3 -1. - <_> - 1 13 2 1 3. - <_> - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 7 5 2 3 -1. - <_> - 7 5 1 3 2. - 1 - <_> - - <_> - 5 5 3 2 -1. - <_> - 5 5 3 1 2. - 1 - <_> - - <_> - 8 10 2 1 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 5 4 1 2. - <_> - - <_> - 0 9 12 9 -1. - <_> - 3 9 6 9 2. - <_> - - <_> - 9 12 1 3 -1. - <_> - 9 13 1 1 3. - <_> - - <_> - 2 12 1 3 -1. - <_> - 2 13 1 1 3. - <_> - - <_> - 6 12 3 5 -1. - <_> - 7 13 1 5 3. - 1 - <_> - - <_> - 6 12 5 3 -1. - <_> - 5 13 5 1 3. - 1 - <_> - - <_> - 3 17 6 3 -1. - <_> - 3 18 6 1 3. - <_> - - <_> - 5 15 2 4 -1. - <_> - 5 16 2 2 2. - <_> - - <_> - 7 18 3 2 -1. - <_> - 8 18 1 2 3. - <_> - - <_> - 1 4 2 4 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 10 4 2 3 -1. - <_> - 9 5 2 1 3. - 1 - <_> - - <_> - 2 4 3 2 -1. - <_> - 3 5 1 2 3. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 6 2 3 -1. - <_> - 5 7 2 1 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 6 3. - 1 - <_> - - <_> - 6 3 6 6 -1. - <_> - 4 5 6 2 3. - 1 - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 0 18 1 2 -1. - <_> - 0 19 1 1 2. - <_> - - <_> - 0 1 12 8 -1. - <_> - 0 5 12 4 2. - <_> - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 7 1 2 3. - 1 - <_> - - <_> - 5 6 2 3 -1. - <_> - 4 7 2 1 3. - 1 - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 5 0 3 2 -1. - <_> - 6 0 1 2 3. - <_> - - <_> - 5 15 3 2 -1. - <_> - 5 15 3 1 2. - 1 - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 5 4 4 3 -1. - <_> - 5 5 4 1 3. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 1 9. - <_> - - <_> - 7 16 1 4 -1. - <_> - 7 18 1 2 2. - <_> - - <_> - 4 16 1 4 -1. - <_> - 4 18 1 2 2. - <_> - - <_> - 6 13 1 6 -1. - <_> - 6 13 1 3 2. - 1 - <_> - - <_> - 6 13 6 1 -1. - <_> - 6 13 3 1 2. - 1 - <_> - - <_> - 6 7 1 6 -1. - <_> - 4 9 1 2 3. - 1 - <_> - - <_> - 6 7 6 1 -1. - <_> - 8 9 2 1 3. - 1 - <_> - - <_> - 11 9 1 6 -1. - <_> - 11 12 1 3 2. - <_> - - <_> - 0 9 1 6 -1. - <_> - 0 12 1 3 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 3 0 6 1 2. - <_> - - <_> - 3 0 6 8 -1. - <_> - 3 4 6 4 2. - <_> - - <_> - 3 3 6 12 -1. - <_> - 3 7 6 4 3. - <_> - - <_> - 4 6 1 2 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 0 12 8 3 -1. - <_> - 4 12 4 3 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 11 0 1 2 2. - <_> - 10 2 1 2 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 0 0 1 2 2. - <_> - 1 2 1 2 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 9 2 6 -1. - <_> - 11 9 1 3 2. - <_> - 10 12 1 3 2. - <_> - - <_> - 0 10 12 3 -1. - <_> - 0 11 12 1 3. - <_> - - <_> - 7 11 1 3 -1. - <_> - 7 12 1 1 3. - <_> - - <_> - 4 11 1 3 -1. - <_> - 4 12 1 1 3. - <_> - - <_> - 6 11 2 3 -1. - <_> - 6 12 2 1 3. - <_> - - <_> - 4 11 2 3 -1. - <_> - 4 12 2 1 3. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 4 1 4 2 -1. - <_> - 6 1 2 1 2. - <_> - 4 2 2 1 2. - <_> - - <_> - 6 0 2 6 -1. - <_> - 4 2 2 2 3. - 1 - <_> - - <_> - 10 9 2 6 -1. - <_> - 11 9 1 3 2. - <_> - 10 12 1 3 2. - <_> - - <_> - 0 9 2 6 -1. - <_> - 0 9 1 3 2. - <_> - 1 12 1 3 2. - <_> - - <_> - 3 8 6 2 -1. - <_> - 3 9 6 1 2. - <_> - - <_> - 0 8 12 3 -1. - <_> - 0 9 12 1 3. - <_> - - <_> - 6 4 3 2 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 6 4 2 3 -1. - <_> - 5 5 2 1 3. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 5 0 4 2 -1. - <_> - 7 0 2 1 2. - <_> - 5 1 2 1 2. - <_> - - <_> - 4 0 3 3 -1. - <_> - 5 0 1 3 3. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 2 0 6 2 -1. - <_> - 2 0 3 1 2. - <_> - 5 1 3 1 2. - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 0 0 4 4 -1. - <_> - 0 2 4 2 2. - <_> - - <_> - 8 5 2 3 -1. - <_> - 8 5 1 3 2. - 1 - <_> - - <_> - 4 5 3 2 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 5 1 3 -1. - <_> - 5 6 1 1 3. - 1 - <_> - - <_> - 10 1 2 7 -1. - <_> - 10 1 1 7 2. - <_> - - <_> - 0 1 2 8 -1. - <_> - 1 1 1 8 2. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 1 11 6 1 -1. - <_> - 1 11 3 1 2. - 1 - <_> - - <_> - 6 3 6 3 -1. - <_> - 8 5 2 3 3. - 1 - <_> - - <_> - 0 2 6 6 -1. - <_> - 2 4 2 2 9. - <_> - - <_> - 8 3 4 1 -1. - <_> - 9 4 2 1 2. - 1 - <_> - - <_> - 4 3 1 4 -1. - <_> - 3 4 1 2 2. - 1 - <_> - - <_> - 4 14 4 2 -1. - <_> - 6 14 2 1 2. - <_> - 4 15 2 1 2. - <_> - - <_> - 5 16 1 4 -1. - <_> - 5 17 1 2 2. - <_> - - <_> - 6 12 3 5 -1. - <_> - 7 13 1 5 3. - 1 - <_> - - <_> - 6 12 5 3 -1. - <_> - 5 13 5 1 3. - 1 - <_> - - <_> - 4 2 4 2 -1. - <_> - 4 2 2 1 2. - <_> - 6 3 2 1 2. - <_> - - <_> - 8 8 3 3 -1. - <_> - 9 9 1 3 3. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 9 17 2 3 -1. - <_> - 9 18 2 1 3. - <_> - - <_> - 1 17 2 3 -1. - <_> - 1 18 2 1 3. - <_> - - <_> - 8 2 4 10 -1. - <_> - 10 2 2 5 2. - <_> - 8 7 2 5 2. - <_> - - <_> - 0 2 4 10 -1. - <_> - 0 2 2 5 2. - <_> - 2 7 2 5 2. - <_> - - <_> - 0 13 12 5 -1. - <_> - 3 13 6 5 2. - <_> - - <_> - 0 18 12 2 -1. - <_> - 6 18 6 2 2. - <_> - - <_> - 4 14 5 6 -1. - <_> - 4 17 5 3 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 0 1 12 1 3. - <_> - - <_> - 0 3 12 2 -1. - <_> - 0 4 12 1 2. - <_> - - <_> - 0 0 8 8 -1. - <_> - 2 0 4 8 2. - <_> - - <_> - 6 10 6 3 -1. - <_> - 6 10 3 3 2. - 1 - <_> - - <_> - 4 10 6 4 -1. - <_> - 4 10 6 2 2. - 1 - <_> - - <_> - 6 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 0 1 1 2. - <_> - 5 1 1 1 2. - <_> - - <_> - 7 13 5 2 -1. - <_> - 7 13 5 1 2. - 1 - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 6 3 3 4 -1. - <_> - 7 4 1 4 3. - 1 - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 7 13 5 2 -1. - <_> - 7 13 5 1 2. - 1 - <_> - - <_> - 5 13 2 5 -1. - <_> - 5 13 1 5 2. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 3 3. - 1 - <_> - - <_> - 0 15 12 5 -1. - <_> - 3 15 6 5 2. - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 17 1 1 2. - 1 - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 1 14 4 6 -1. - <_> - 1 14 2 3 2. - <_> - 3 17 2 3 2. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 2 9 8 3 -1. - <_> - 2 10 8 1 3. - <_> - - <_> - 8 9 3 2 -1. - <_> - 9 9 1 2 3. - <_> - - <_> - 3 12 1 3 -1. - <_> - 3 13 1 1 3. - <_> - - <_> - 8 12 1 3 -1. - <_> - 8 13 1 1 3. - <_> - - <_> - 3 12 1 3 -1. - <_> - 3 13 1 1 3. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 5 1 2 9. - <_> - - <_> - 0 3 3 6 -1. - <_> - 1 5 1 2 9. - <_> - - <_> - 6 4 6 16 -1. - <_> - 6 12 6 8 2. - <_> - - <_> - 1 9 3 2 -1. - <_> - 2 9 1 2 3. - <_> - - <_> - 8 5 2 6 -1. - <_> - 9 5 1 3 2. - <_> - 8 8 1 3 2. - <_> - - <_> - 2 5 2 6 -1. - <_> - 2 5 1 3 2. - <_> - 3 8 1 3 2. - <_> - - <_> - 0 2 12 18 -1. - <_> - 6 2 6 9 2. - <_> - 0 11 6 9 2. - <_> - - <_> - 0 13 12 4 -1. - <_> - 0 13 6 2 2. - <_> - 6 15 6 2 2. - <_> - - <_> - 0 4 12 12 -1. - <_> - 0 7 12 6 2. - <_> - - <_> - 4 14 3 6 -1. - <_> - 5 14 1 6 3. - <_> - - <_> - 6 11 2 3 -1. - <_> - 6 12 2 1 3. - <_> - - <_> - 4 11 2 3 -1. - <_> - 4 12 2 1 3. - <_> - - <_> - 1 9 10 2 -1. - <_> - 6 9 5 1 2. - <_> - 1 10 5 1 2. - <_> - - <_> - 6 3 3 6 -1. - <_> - 4 5 3 2 3. - 1 - <_> - - <_> - 4 10 8 7 -1. - <_> - 4 10 4 7 2. - <_> - - <_> - 6 7 6 4 -1. - <_> - 6 7 3 4 2. - 1 - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 1 2. - <_> - 7 14 2 1 2. - <_> - - <_> - 1 13 4 2 -1. - <_> - 1 13 2 1 2. - <_> - 3 14 2 1 2. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 1 8 2 3 -1. - <_> - 2 8 1 3 2. - diff --git a/data/haarcascades/haarcascade_mcs_righteye.xml b/data/haarcascades/haarcascade_mcs_righteye.xml deleted file mode 100644 index 8db288d262..0000000000 --- a/data/haarcascades/haarcascade_mcs_righteye.xml +++ /dev/null @@ -1,34105 +0,0 @@ - - - -BOOST - HAAR - 18 - 12 - - 415 - - 0 - 18 - - <_> - 14 - -1.8531819581985474e+00 - - <_> - - 0 -1 0 -2.4424770474433899e-01 - - 6.9875770807266235e-01 -6.8658047914505005e-01 - <_> - - 0 -1 1 -7.8023127571213990e-05 - - 1.8409989774227142e-01 -1.5867869555950165e-01 - <_> - - 0 -1 2 6.1863329261541367e-02 - - -5.8069580793380737e-01 4.2429021000862122e-01 - <_> - - 0 -1 3 1.0108880087500438e-04 - - -2.1480329334735870e-01 2.5654569268226624e-01 - <_> - - 0 -1 4 -9.1220928879920393e-05 - - 3.8367459177970886e-01 -6.1654907464981079e-01 - <_> - - 0 -1 5 -3.0509479343891144e-02 - - 3.9360129833221436e-01 -1.3422299921512604e-01 - <_> - - 0 -1 6 -9.1780202637892216e-05 - - 2.7786558866500854e-01 -4.3007740378379822e-01 - <_> - - 0 -1 7 2.7771899476647377e-02 - - -8.0776482820510864e-02 2.8311640024185181e-01 - <_> - - 0 -1 8 -2.9620470479130745e-02 - - 4.8583909869194031e-01 -1.9754469394683838e-01 - <_> - - 0 -1 9 2.2866599261760712e-02 - - 1.0636190325021744e-01 -7.5176268815994263e-01 - <_> - - 0 -1 10 -4.1282488964498043e-03 - - -6.7065757513046265e-01 1.0479719936847687e-01 - <_> - - 0 -1 11 4.9167869292432442e-05 - - -4.3471860885620117e-01 1.9802249968051910e-01 - <_> - - 0 -1 12 1.0719999670982361e-01 - - -8.9806847274303436e-02 7.4682819843292236e-01 - <_> - - 0 -1 13 -1.0073629766702652e-01 - - 5.0939172506332397e-01 -1.3393540680408478e-01 - <_> - 18 - -1.7752469778060913e+00 - - <_> - - 0 -1 14 1.7802350223064423e-01 - - -7.5870281457901001e-01 5.3465932607650757e-01 - <_> - - 0 -1 15 -6.5577399730682373e-01 - - 6.4692652225494385e-01 -4.3502590060234070e-01 - <_> - - 0 -1 16 -4.0021299355430529e-05 - - 2.9965978860855103e-01 -5.6885862350463867e-01 - <_> - - 0 -1 17 -3.7154618650674820e-02 - - 3.4918901324272156e-01 -2.5589430704712868e-02 - <_> - - 0 -1 18 -1.2173940241336823e-01 - - 6.1586397886276245e-01 -2.0626740157604218e-01 - <_> - - 0 -1 19 5.2311879699118435e-05 - - -4.3647938966751099e-01 2.1958270668983459e-01 - <_> - - 0 -1 20 8.0859176814556122e-02 - - -1.9945010542869568e-01 6.7326688766479492e-01 - <_> - - 0 -1 21 4.0166039980249479e-05 - - -4.5640110969543457e-02 1.9430699944496155e-01 - <_> - - 0 -1 22 -3.1046951335156336e-05 - - 2.7887210249900818e-01 -3.9368268847465515e-01 - <_> - - 0 -1 23 4.4764861464500427e-02 - - 1.5304270200431347e-02 -5.4978501796722412e-01 - <_> - - 0 -1 24 4.1439689084654674e-05 - - -4.0887549519538879e-01 2.4293379485607147e-01 - <_> - - 0 -1 25 -6.8109878338873386e-03 - - 2.0475849509239197e-01 -1.7610409855842590e-01 - <_> - - 0 -1 26 -1.1959940195083618e-02 - - 3.2010918855667114e-01 -2.4382120370864868e-01 - <_> - - 0 -1 27 4.1247010231018066e-03 - - 1.0142499953508377e-01 -6.7148768901824951e-01 - <_> - - 0 -1 28 4.8378468491137028e-03 - - 1.0296879708766937e-01 -7.6776862144470215e-01 - <_> - - 0 -1 29 -6.9100200198590755e-03 - - -5.3126591444015503e-01 1.0427720099687576e-01 - <_> - - 0 -1 30 -1.0080339759588242e-01 - - 5.0777941942214966e-01 -1.3023640215396881e-01 - <_> - - 0 -1 31 -1.9967159628868103e-01 - - 3.8986781239509583e-01 -1.6772779822349548e-01 - <_> - 28 - -1.6665699481964111e+00 - - <_> - - 0 -1 32 2.5776880979537964e-01 - - -5.8348870277404785e-01 5.5340260267257690e-01 - <_> - - 0 -1 33 -7.3068267107009888e-01 - - 5.5796027183532715e-01 -3.2565701007843018e-01 - <_> - - 0 -1 34 -2.7534509077668190e-02 - - 4.8059350252151489e-01 -2.3844310641288757e-01 - <_> - - 0 -1 35 -2.3275651037693024e-03 - - -3.6521190404891968e-01 4.5028999447822571e-02 - <_> - - 0 -1 36 1.1417310452088714e-03 - - -3.4956368803977966e-01 2.9769980907440186e-01 - <_> - - 0 -1 37 -3.3687320537865162e-03 - - -7.0289838314056396e-01 1.2980960309505463e-01 - <_> - - 0 -1 38 2.4614449590444565e-02 - - 1.3107569515705109e-01 -5.4708969593048096e-01 - <_> - - 0 -1 39 -5.8426922187209129e-03 - - -5.8647221326828003e-01 9.7731806337833405e-02 - <_> - - 0 -1 40 -5.4343082010746002e-03 - - -5.7326608896255493e-01 1.1278089880943298e-01 - <_> - - 0 -1 41 2.2054079920053482e-02 - - -9.2888571321964264e-02 1.3657820224761963e-01 - <_> - - 0 -1 42 -1.5347589738667011e-02 - - -6.4429342746734619e-01 7.4354633688926697e-02 - <_> - - 0 -1 43 5.0572961568832397e-02 - - 5.6103519164025784e-03 -5.0079947710037231e-01 - <_> - - 0 -1 44 -1.3261740095913410e-02 - - -7.3392891883850098e-01 6.5433360636234283e-02 - <_> - - 0 -1 45 -3.8969300221651793e-03 - - 3.1489849090576172e-01 -8.1432163715362549e-02 - <_> - - 0 -1 46 -2.4822659790515900e-02 - - 3.8604599237442017e-01 -1.2266899645328522e-01 - <_> - - 0 -1 47 -1.1084429919719696e-02 - - -5.6293141841888428e-01 5.4145891219377518e-02 - <_> - - 0 -1 48 1.8387300893664360e-02 - - 6.0027949512004852e-02 -6.5090698003768921e-01 - <_> - - 0 -1 49 -2.7180250734090805e-02 - - 2.1603550016880035e-01 -9.3256972730159760e-02 - <_> - - 0 -1 50 -1.8154690042138100e-02 - - 2.4887280166149139e-01 -1.7248439788818359e-01 - <_> - - 0 -1 51 -7.4400618672370911e-02 - - 2.2635079920291901e-01 -1.9566230475902557e-01 - <_> - - 0 -1 52 2.5560980662703514e-02 - - -1.1583790183067322e-01 3.8171079754829407e-01 - <_> - - 0 -1 53 -1.4836280047893524e-01 - - 4.4178679585456848e-01 -9.0950436890125275e-02 - <_> - - 0 -1 54 2.7006680611521006e-03 - - 7.7947027981281281e-02 -5.5427479743957520e-01 - <_> - - 0 -1 55 -8.6278393864631653e-03 - - -6.9937318563461304e-01 4.9830928444862366e-02 - <_> - - 0 -1 56 6.8439252674579620e-02 - - -7.5978577136993408e-02 6.2046712636947632e-01 - <_> - - 0 -1 57 -1.0975140146911144e-02 - - -6.0147458314895630e-01 7.1278177201747894e-02 - <_> - - 0 -1 58 1.8099289387464523e-02 - - 5.1625069230794907e-02 -6.1827600002288818e-01 - <_> - - 0 -1 59 -3.3489301800727844e-02 - - -4.7863158583641052e-01 1.8769619986414909e-02 - <_> - 42 - -1.6865210533142090e+00 - - <_> - - 0 -1 60 -1.0777440071105957e+00 - - 6.4120662212371826e-01 -4.2570671439170837e-01 - <_> - - 0 -1 61 -9.1444328427314758e-02 - - -4.7957998514175415e-01 5.7769209146499634e-02 - <_> - - 0 -1 62 -7.4071469716727734e-03 - - 2.8621929883956909e-01 -4.1994690895080566e-01 - <_> - - 0 -1 63 4.7062758356332779e-02 - - -4.3619200587272644e-01 2.6828920841217041e-01 - <_> - - 0 -1 64 -3.6404181271791458e-02 - - 3.5899761319160461e-01 -2.1427430212497711e-01 - <_> - - 0 -1 65 8.6630545556545258e-03 - - 1.4662440121173859e-01 -6.7707377672195435e-01 - <_> - - 0 -1 66 9.3371979892253876e-03 - - 5.1249351352453232e-02 -6.2359398603439331e-01 - <_> - - 0 -1 67 -8.9909201487898827e-03 - - 1.8665479496121407e-02 -1.2940050661563873e-01 - <_> - - 0 -1 68 6.0002477839589119e-03 - - 1.2412460148334503e-01 -4.5031398534774780e-01 - <_> - - 0 -1 69 -4.1527119465172291e-03 - - -6.1313831806182861e-01 1.0697679966688156e-01 - <_> - - 0 -1 70 -9.4439463282469660e-05 - - 1.6724079847335815e-01 -2.9332458972930908e-01 - <_> - - 0 -1 71 7.7140098437666893e-03 - - 9.1794438660144806e-02 -5.2451968193054199e-01 - <_> - - 0 -1 72 2.9233409091830254e-02 - - -1.5653559565544128e-01 3.0735900998115540e-01 - <_> - - 0 -1 73 -2.8729479759931564e-02 - - 2.0408889651298523e-01 -1.5190300345420837e-01 - <_> - - 0 -1 74 -9.4922380521893501e-03 - - -6.5572720766067505e-01 8.0031089484691620e-02 - <_> - - 0 -1 75 1.5254859812557697e-02 - - -7.0718497037887573e-02 1.8037749826908112e-01 - <_> - - 0 -1 76 8.5085026919841766e-02 - - -8.7161593139171600e-02 5.4529631137847900e-01 - <_> - - 0 -1 77 -1.2432079762220383e-02 - - -6.0595548152923584e-01 6.3416220247745514e-02 - <_> - - 0 -1 78 7.8379884362220764e-03 - - 8.5878178477287292e-02 -4.8387068510055542e-01 - <_> - - 0 -1 79 3.0610410496592522e-02 - - -8.5991300642490387e-02 1.2778289616107941e-01 - <_> - - 0 -1 80 -7.8582251444458961e-03 - - -4.7124311327934265e-01 8.1875868141651154e-02 - <_> - - 0 -1 81 -4.0620751678943634e-02 - - 3.4080961346626282e-01 -6.9700337946414948e-02 - <_> - - 0 -1 82 3.8473328948020935e-01 - - 9.9060591310262680e-04 -4.8748442382812500e+03 - <_> - - 0 -1 83 8.8061448186635971e-03 - - 2.1548839285969734e-02 -3.8199108839035034e-01 - <_> - - 0 -1 84 -9.8602060461416841e-05 - - 1.4345769584178925e-01 -2.5611689686775208e-01 - <_> - - 0 -1 85 4.4175058603286743e-02 - - -3.5266518592834473e-02 5.0838309526443481e-01 - <_> - - 0 -1 86 1.6760559519752860e-03 - - 9.2227913439273834e-02 -4.0895891189575195e-01 - <_> - - 0 -1 87 -2.0384270697832108e-02 - - 1.1310269683599472e-01 -6.7171029746532440e-02 - <_> - - 0 -1 88 -2.8324460610747337e-02 - - 3.2514190673828125e-01 -1.1220960319042206e-01 - <_> - - 0 -1 89 1.1148240417242050e-02 - - 4.3706391006708145e-02 -5.6290757656097412e-01 - <_> - - 0 -1 90 -6.1231020838022232e-02 - - 3.2292550802230835e-01 -1.1842100322246552e-01 - <_> - - 0 -1 91 -2.5340579450130463e-03 - - -2.8566569089889526e-01 9.7137562930583954e-02 - <_> - - 0 -1 92 9.4344420358538628e-03 - - 5.5838178843259811e-02 -6.1303967237472534e-01 - <_> - - 0 -1 93 -2.4996360763907433e-02 - - 3.7379479408264160e-01 -9.5438957214355469e-02 - <_> - - 0 -1 94 -1.5579929575324059e-02 - - -4.3321099877357483e-01 8.2081481814384460e-02 - <_> - - 0 -1 95 -7.4995987117290497e-02 - - 2.2193589806556702e-01 -1.5627489984035492e-01 - <_> - - 0 -1 96 -1.0779550075531006e+00 - - -2.7007299661636353e-01 1.3836389780044556e-01 - <_> - - 0 -1 97 5.9222001582384109e-02 - - -3.7382701039314270e-01 1.1695600301027298e-01 - <_> - - 0 -1 98 -8.6024785414338112e-03 - - 2.7681049704551697e-01 -1.2526260316371918e-01 - <_> - - 0 -1 99 -9.9356677383184433e-03 - - -5.1475620269775391e-01 6.3418559730052948e-02 - <_> - - 0 -1 100 1.2248200178146362e-01 - - -8.3492033183574677e-02 3.8797920942306519e-01 - <_> - - 0 -1 101 1.2311439961194992e-02 - - 5.4995030164718628e-02 -3.6952498555183411e-01 - <_> - 56 - -1.6953380107879639e+00 - - <_> - - 0 -1 102 -6.7200362682342529e-02 - - 4.5108181238174438e-01 -5.3534239530563354e-01 - <_> - - 0 -1 103 -8.2662038505077362e-02 - - 3.4775099158287048e-01 -1.2517650425434113e-01 - <_> - - 0 -1 104 -2.5940420106053352e-02 - - 3.1833609938621521e-01 -3.6004140973091125e-01 - <_> - - 0 -1 105 5.3580861538648605e-02 - - -6.5426699817180634e-02 1.6147750616073608e-01 - <_> - - 0 -1 106 -5.7038158178329468e-02 - - 3.7935408949851990e-01 -2.5456818938255310e-01 - <_> - - 0 -1 107 1.3242330402135849e-02 - - -4.4407260417938232e-01 2.3491750657558441e-01 - <_> - - 0 -1 108 -3.9509739726781845e-02 - - 4.3274340033531189e-01 -1.9499629735946655e-01 - <_> - - 0 -1 109 -2.8298990800976753e-02 - - 2.0397779345512390e-01 -8.9589469134807587e-02 - <_> - - 0 -1 110 6.3852379098534584e-03 - - -3.5488009452819824e-01 1.9138309359550476e-01 - <_> - - 0 -1 111 1.1374940164387226e-02 - - -1.3457709550857544e-01 1.2404730170965195e-01 - <_> - - 0 -1 112 6.5829078666865826e-03 - - 9.5501258969306946e-02 -4.7210261225700378e-01 - <_> - - 0 -1 113 -8.6454320698976517e-03 - - 3.2122609019279480e-01 -8.4004022181034088e-02 - <_> - - 0 -1 114 -6.4918738789856434e-03 - - 3.7122198939323425e-01 -1.4155159890651703e-01 - <_> - - 0 -1 115 9.4650797545909882e-03 - - 4.8017621040344238e-02 -4.9044439196586609e-01 - <_> - - 0 -1 116 2.2820439189672470e-02 - - -1.2555100023746490e-01 3.2097619771957397e-01 - <_> - - 0 -1 117 5.9925079345703125e-02 - - 8.4711313247680664e-02 -4.5627591013908386e-01 - <_> - - 0 -1 118 8.8552264496684074e-03 - - 6.0358591377735138e-02 -6.0775542259216309e-01 - <_> - - 0 -1 119 -1.7045319080352783e-02 - - 9.4534762203693390e-02 -1.0723099857568741e-01 - <_> - - 0 -1 120 -3.8314480334520340e-02 - - -5.7877939939498901e-01 6.7216247320175171e-02 - <_> - - 0 -1 121 -6.9333538413047791e-02 - - -3.3919590711593628e-01 1.9480850547552109e-02 - <_> - - 0 -1 122 -1.8777130171656609e-02 - - 1.6830919682979584e-01 -2.0851990580558777e-01 - <_> - - 0 -1 123 3.2719969749450684e-02 - - 3.0514130368828773e-02 -4.5696869492530823e-01 - <_> - - 0 -1 124 -2.1114969626069069e-02 - - -4.8196780681610107e-01 7.8218683600425720e-02 - <_> - - 0 -1 125 4.8785269260406494e-02 - - 2.0097790285944939e-02 -3.5147210955619812e-01 - <_> - - 0 -1 126 5.9009779244661331e-02 - - 5.0008200109004974e-02 -7.1498161554336548e-01 - <_> - - 0 -1 127 -1.3095900416374207e-02 - - -2.0079830288887024e-01 7.4462093412876129e-02 - <_> - - 0 -1 128 4.8975921235978603e-03 - - 5.5243130773305893e-02 -5.7409340143203735e-01 - <_> - - 0 -1 129 -5.4940162226557732e-03 - - 3.5677149891853333e-01 -8.6807981133460999e-02 - <_> - - 0 -1 130 -3.1561508774757385e-02 - - -4.6615409851074219e-01 7.0244632661342621e-02 - <_> - - 0 -1 131 2.2134589962661266e-03 - - -6.8283282220363617e-02 7.9536527395248413e-02 - <_> - - 0 -1 132 -8.2062073051929474e-03 - - 2.7306330204010010e-01 -1.1220429837703705e-01 - <_> - - 0 -1 133 -4.2711659334599972e-03 - - 2.0383749902248383e-01 -1.1134400218725204e-01 - <_> - - 0 -1 134 -4.5153028331696987e-03 - - 2.1680480241775513e-01 -1.4698010683059692e-01 - <_> - - 0 -1 135 -6.8448767997324467e-03 - - -5.1700651645660400e-01 5.7613730430603027e-02 - <_> - - 0 -1 136 -9.3936352059245110e-03 - - -7.0918929576873779e-01 4.1451569646596909e-02 - <_> - - 0 -1 137 -3.5494949668645859e-02 - - 4.1316780447959900e-01 -6.1823520809412003e-02 - <_> - - 0 -1 138 -3.0114190652966499e-02 - - 4.9658629298210144e-01 -5.9313420206308365e-02 - <_> - - 0 -1 139 -2.8231500182300806e-03 - - -4.2436400055885315e-01 7.1718901395797729e-02 - <_> - - 0 -1 140 -5.4673277772963047e-03 - - -5.5095481872558594e-01 4.6391129493713379e-02 - <_> - - 0 -1 141 1.0120819933945313e-04 - - -5.8151338249444962e-02 5.8602251112461090e-02 - <_> - - 0 -1 142 -9.6490257419645786e-05 - - 1.2582179903984070e-01 -2.2901579737663269e-01 - <_> - - 0 -1 143 -6.1294160783290863e-02 - - 2.9266101121902466e-01 -9.5403976738452911e-02 - <_> - - 0 -1 144 2.8102770447731018e-02 - - -1.1171860247850418e-01 2.8479880094528198e-01 - <_> - - 0 -1 145 8.5702445358037949e-03 - - 3.3816758543252945e-02 -2.5395581126213074e-01 - <_> - - 0 -1 146 -1.0708959773182869e-02 - - -4.0251371264457703e-01 6.1992008239030838e-02 - <_> - - 0 -1 147 7.7682421542704105e-03 - - 4.5514889061450958e-02 -4.4539490342140198e-01 - <_> - - 0 -1 148 -3.9436880499124527e-02 - - -5.9126931428909302e-01 3.6915950477123260e-02 - <_> - - 0 -1 149 -8.3061866462230682e-03 - - 4.1907790303230286e-01 -3.8043338805437088e-02 - <_> - - 0 -1 150 -2.6948580052703619e-03 - - 2.6846599578857422e-01 -1.0144890099763870e-01 - <_> - - 0 -1 151 -5.0465110689401627e-02 - - 1.2373439967632294e-01 -1.2334769964218140e-01 - <_> - - 0 -1 152 -1.0141739767277613e-04 - - 1.0864509642124176e-01 -2.4142740666866302e-01 - <_> - - 0 -1 153 1.2928189709782600e-02 - - -7.8642763197422028e-02 2.5868999958038330e-01 - <_> - - 0 -1 154 -1.6396190039813519e-03 - - -2.5857350230216980e-01 8.3787269890308380e-02 - <_> - - 0 -1 155 6.9712791591882706e-03 - - -2.5677189230918884e-02 2.0356319844722748e-01 - <_> - - 0 -1 156 3.9361029863357544e-02 - - -5.5376350879669189e-02 3.9945369958877563e-01 - <_> - - 0 -1 157 -3.0988039448857307e-02 - - 3.2057970762252808e-01 -6.4473606646060944e-02 - <_> - 72 - -1.6599390506744385e+00 - - <_> - - 0 -1 158 -2.4494670331478119e-01 - - 4.0746760368347168e-01 -4.0469241142272949e-01 - <_> - - 0 -1 159 -1.8972739577293396e-02 - - 3.4485670924186707e-01 -3.0548089742660522e-01 - <_> - - 0 -1 160 -2.9695449396967888e-02 - - 2.4475049972534180e-01 -3.6786770820617676e-01 - <_> - - 0 -1 161 1.2069249898195267e-01 - - -3.3793058991432190e-01 2.0322279632091522e-01 - <_> - - 0 -1 162 -5.4062519222497940e-02 - - 4.5939388871192932e-01 -1.1671090126037598e-01 - <_> - - 0 -1 163 -7.3384187999181449e-05 - - 1.8353730440139771e-02 -1.0902920365333557e-01 - <_> - - 0 -1 164 -7.9208686656784266e-05 - - 1.5077480673789978e-01 -3.7546008825302124e-01 - <_> - - 0 -1 165 2.6447780430316925e-02 - - -4.1112259030342102e-02 5.3516292572021484e-01 - <_> - - 0 -1 166 -8.7839355692267418e-03 - - 3.7664881348609924e-01 -1.3378149271011353e-01 - <_> - - 0 -1 167 1.5802720189094543e-01 - - -7.5865842401981354e-02 5.6553637981414795e-01 - <_> - - 0 -1 168 -2.3577159270644188e-02 - - 5.0584560632705688e-01 -6.5434440970420837e-02 - <_> - - 0 -1 169 3.5952448844909668e-02 - - 6.8231552839279175e-02 -5.3152531385421753e-01 - <_> - - 0 -1 170 -8.6752548813819885e-03 - - 2.1871459484100342e-01 -1.8592439591884613e-01 - <_> - - 0 -1 171 -3.1334798783063889e-02 - - -5.2554857730865479e-01 6.3401840627193451e-02 - <_> - - 0 -1 172 -4.4468481093645096e-02 - - -6.1970520019531250e-01 4.7379858791828156e-02 - <_> - - 0 -1 173 1.0566320270299911e-02 - - 1.9362540915608406e-02 -3.8206431269645691e-01 - <_> - - 0 -1 174 -9.7126147011294961e-05 - - 1.4222820103168488e-01 -2.2819939255714417e-01 - <_> - - 0 -1 175 4.3628368526697159e-02 - - 9.2759296298027039e-02 -3.6083820462226868e-01 - <_> - - 0 -1 176 1.0665970330592245e-04 - - -2.5239759683609009e-01 1.2652850151062012e-01 - <_> - - 0 -1 177 -3.2759020105004311e-03 - - -5.0014287233352661e-01 5.5411998182535172e-02 - <_> - - 0 -1 178 -5.1345061510801315e-03 - - -4.9917379021644592e-01 5.3027190268039703e-02 - <_> - - 0 -1 179 -2.3086380679160357e-03 - - 1.4560249447822571e-01 -1.5677399933338165e-01 - <_> - - 0 -1 180 -1.1395690031349659e-02 - - -5.6590718030929565e-01 4.8358190804719925e-02 - <_> - - 0 -1 181 2.1377710625529289e-02 - - -2.0428450778126717e-02 3.3207640051841736e-01 - <_> - - 0 -1 182 -5.4581598378717899e-03 - - 1.8875059485435486e-01 -1.6000190377235413e-01 - <_> - - 0 -1 183 -6.5560699440538883e-03 - - 3.9806428551673889e-01 -5.0772599875926971e-02 - <_> - - 0 -1 184 -3.0029900372028351e-02 - - -6.3900482654571533e-01 4.8738751560449600e-02 - <_> - - 0 -1 185 1.7660830169916153e-02 - - -5.9581778943538666e-02 3.6284449696540833e-01 - <_> - - 0 -1 186 7.7252220362424850e-03 - - 4.8472359776496887e-02 -5.8043122291564941e-01 - <_> - - 0 -1 187 -3.8417279720306396e-03 - - 1.3482269644737244e-01 -6.1082180589437485e-02 - <_> - - 0 -1 188 1.6697360202670097e-02 - - -6.1526499688625336e-02 4.5710238814353943e-01 - <_> - - 0 -1 189 -4.7411560080945492e-03 - - -4.1636040806770325e-01 5.9805721044540405e-02 - <_> - - 0 -1 190 -6.6320500336587429e-03 - - 2.9735830426216125e-01 -8.8206142187118530e-02 - <_> - - 0 -1 191 1.1486539617180824e-02 - - 5.0168808549642563e-02 -5.0688809156417847e-01 - <_> - - 0 -1 192 -2.1305510774254799e-02 - - -5.8062469959259033e-01 4.1004549711942673e-02 - <_> - - 0 -1 193 -4.7006089240312576e-02 - - 3.6068481206893921e-01 -7.2690792381763458e-02 - <_> - - 0 -1 194 1.7832050099968910e-02 - - -7.4530497193336487e-02 4.0493220090866089e-01 - <_> - - 0 -1 195 -1.5592209994792938e-01 - - 1.7431819438934326e-01 -1.7088210582733154e-01 - <_> - - 0 -1 196 5.4303607903420925e-03 - - 7.9587250947952271e-02 -3.6683198809623718e-01 - <_> - - 0 -1 197 3.0937120318412781e-02 - - -6.5279401838779449e-02 4.5822051167488098e-01 - <_> - - 0 -1 198 -1.0075340047478676e-02 - - -3.8206771016120911e-01 5.8533921837806702e-02 - <_> - - 0 -1 199 -2.4391389451920986e-03 - - 1.6461110115051270e-01 -1.2688189744949341e-01 - <_> - - 0 -1 200 2.7846049517393112e-02 - - -6.8525552749633789e-02 2.9142960906028748e-01 - <_> - - 0 -1 201 -2.5113900192081928e-03 - - 7.9238571226596832e-02 -4.3009191751480103e-02 - <_> - - 0 -1 202 5.5342530831694603e-03 - - 3.6389451473951340e-02 -4.9398460984230042e-01 - <_> - - 0 -1 203 -1.1999580077826977e-02 - - -5.2778410911560059e-01 3.4849070012569427e-02 - <_> - - 0 -1 204 -3.9921961724758148e-03 - - 2.1965460479259491e-01 -9.6781797707080841e-02 - <_> - - 0 -1 205 -1.3837540149688721e-01 - - -2.2437030076980591e-01 1.5038269571959972e-02 - <_> - - 0 -1 206 3.9730938151478767e-03 - - 4.8632390797138214e-02 -3.8494649529457092e-01 - <_> - - 0 -1 207 -2.7530850842595100e-02 - - 9.1857790946960449e-02 -1.1331369727849960e-01 - <_> - - 0 -1 208 -4.8373710364103317e-02 - - 2.3593319952487946e-01 -8.9034907519817352e-02 - <_> - - 0 -1 209 -1.5814600046724081e-03 - - 1.0996560007333755e-01 -6.9286808371543884e-02 - <_> - - 0 -1 210 -8.7159816175699234e-03 - - 3.0356439948081970e-01 -6.6869571805000305e-02 - <_> - - 0 -1 211 1.8994549289345741e-02 - - 1.7783800140023232e-02 -5.1624137163162231e-01 - <_> - - 0 -1 212 9.0731251984834671e-03 - - 4.3918740004301071e-02 -4.1843789815902710e-01 - <_> - - 0 -1 213 1.5486050397157669e-02 - - -5.8535698801279068e-02 2.7429381012916565e-01 - <_> - - 0 -1 214 2.7820859104394913e-02 - - 2.9692919924855232e-02 -6.2087607383728027e-01 - <_> - - 0 -1 215 -1.3044780353084207e-03 - - 1.6318100690841675e-01 -5.9719368815422058e-02 - <_> - - 0 -1 216 8.5032671689987183e-02 - - -6.4964443445205688e-02 2.7426218986511230e-01 - <_> - - 0 -1 217 1.7395729199051857e-02 - - 3.8472320884466171e-02 -3.1618699431419373e-01 - <_> - - 0 -1 218 -2.1765150129795074e-02 - - -5.2773088216781616e-01 3.4570030868053436e-02 - <_> - - 0 -1 219 -9.7448393702507019e-02 - - 2.5861459970474243e-01 -7.4092611670494080e-02 - <_> - - 0 -1 220 -1.5628200490027666e-03 - - 2.5666180253028870e-01 -7.2598278522491455e-02 - <_> - - 0 -1 221 -3.7647458910942078e-01 - - 2.6231971383094788e-01 -7.1217708289623260e-02 - <_> - - 0 -1 222 -2.1947529166936874e-02 - - -5.5471789836883545e-01 3.2997239381074905e-02 - <_> - - 0 -1 223 3.8632971048355103e-01 - - 2.5074239820241928e-02 -6.0832667350769043e-01 - <_> - - 0 -1 224 -3.1041959300637245e-03 - - 1.6470110416412354e-01 -1.0676909983158112e-01 - <_> - - 0 -1 225 -3.4860908985137939e-02 - - -5.7921218872070312e-01 1.2084069661796093e-02 - <_> - - 0 -1 226 1.1423420161008835e-02 - - 5.6263469159603119e-02 -2.9407739639282227e-01 - <_> - - 0 -1 227 5.8854189701378345e-03 - - 1.7714949324727058e-02 -6.4319449663162231e-01 - <_> - - 0 -1 228 -6.7278537899255753e-03 - - 2.2641740739345551e-01 -7.9366579651832581e-02 - <_> - - 0 -1 229 -1.5968179330229759e-02 - - 8.4905549883842468e-02 -6.6024817526340485e-02 - <_> - 97 - -1.7070800065994263e+00 - - <_> - - 0 -1 230 -3.6784499883651733e-01 - - 4.5800340175628662e-01 -3.3849748969078064e-01 - <_> - - 0 -1 231 -9.4871893525123596e-02 - - -4.5669031143188477e-01 3.2879181206226349e-02 - <_> - - 0 -1 232 -1.8604120239615440e-02 - - 2.0924760401248932e-01 -3.6567929387092590e-01 - <_> - - 0 -1 233 2.9974810779094696e-02 - - -1.9289420545101166e-01 3.2448410987854004e-01 - <_> - - 0 -1 234 5.8208271861076355e-02 - - 1.3660140102729201e-03 -1.2704019775390625e+03 - <_> - - 0 -1 235 -2.8189869597554207e-02 - - 9.7124092280864716e-02 -1.7665229737758636e-01 - <_> - - 0 -1 236 3.6802981048822403e-02 - - -5.7311378419399261e-02 5.5507022142410278e-01 - <_> - - 0 -1 237 5.0173830240964890e-02 - - 6.7918449640274048e-02 -5.5383729934692383e-01 - <_> - - 0 -1 238 1.2276550114620477e-04 - - -3.6698448657989502e-01 1.1779980361461639e-01 - <_> - - 0 -1 239 -1.2047369964420795e-02 - - 2.8118661046028137e-01 -9.1286137700080872e-02 - <_> - - 0 -1 240 -1.3500650227069855e-01 - - 4.0587979555130005e-01 -1.1283899843692780e-01 - <_> - - 0 -1 241 -1.4946890063583851e-02 - - 1.1184260249137878e-01 -6.9855831563472748e-02 - <_> - - 0 -1 242 -2.8080230578780174e-02 - - 3.7134361267089844e-01 -1.1335489898920059e-01 - <_> - - 0 -1 243 8.9532906713429838e-05 - - -2.4021409451961517e-01 1.5452569723129272e-01 - <_> - - 0 -1 244 3.3625299111008644e-03 - - 7.6281696557998657e-02 -4.2249780893325806e-01 - <_> - - 0 -1 245 7.7109010890126228e-03 - - 6.4429573714733124e-02 -5.2580958604812622e-01 - <_> - - 0 -1 246 -4.0021299355430529e-05 - - 1.2313339859247208e-01 -2.5762450695037842e-01 - <_> - - 0 -1 247 -3.1202889513224363e-03 - - -4.6036028861999512e-01 5.1612310111522675e-02 - <_> - - 0 -1 248 -1.0011930018663406e-02 - - -5.9611922502517700e-01 4.7229800373315811e-02 - <_> - - 0 -1 249 1.7205670475959778e-02 - - -8.7691828608512878e-02 3.6531248688697815e-01 - <_> - - 0 -1 250 -8.0158591270446777e-02 - - 1.7942880094051361e-01 -1.8761360645294189e-01 - <_> - - 0 -1 251 -3.0895389616489410e-02 - - -5.3028690814971924e-01 6.2362041324377060e-02 - <_> - - 0 -1 252 -4.0663570165634155e-02 - - -6.5177547931671143e-01 4.2615588754415512e-02 - <_> - - 0 -1 253 1.3517879880964756e-02 - - -6.4104713499546051e-02 3.9314290881156921e-01 - <_> - - 0 -1 254 2.0111180841922760e-02 - - -1.7060810327529907e-01 1.8481850624084473e-01 - <_> - - 0 -1 255 1.0260569863021374e-02 - - 3.3398948609828949e-02 -4.3841761350631714e-01 - <_> - - 0 -1 256 -1.0485230013728142e-02 - - 1.9740979373455048e-01 -1.4588220417499542e-01 - <_> - - 0 -1 257 4.0648399590281770e-05 - - -7.9994283616542816e-02 4.1719149798154831e-02 - <_> - - 0 -1 258 -3.8299830630421638e-03 - - -5.3327178955078125e-01 5.3281601518392563e-02 - <_> - - 0 -1 259 1.7642440274357796e-02 - - -9.9251352250576019e-02 2.7189201116561890e-01 - <_> - - 0 -1 260 -2.4608120322227478e-02 - - 3.0124360322952271e-01 -8.6540237069129944e-02 - <_> - - 0 -1 261 1.3368680141866207e-02 - - 4.3695349246263504e-02 -6.1414361000061035e-01 - <_> - - 0 -1 262 -1.0268009646097198e-04 - - 8.9721798896789551e-02 -2.5240990519523621e-01 - <_> - - 0 -1 263 -2.8268070891499519e-02 - - -4.5758980512619019e-01 2.6957040652632713e-02 - <_> - - 0 -1 264 4.5313038863241673e-03 - - 6.2346488237380981e-02 -3.8223439455032349e-01 - <_> - - 0 -1 265 -1.4729249477386475e-01 - - 1.5171539783477783e-01 -1.7683920264244080e-01 - <_> - - 0 -1 266 -1.5091559849679470e-02 - - -3.2118791341781616e-01 8.1255659461021423e-02 - <_> - - 0 -1 267 -7.1740341372787952e-03 - - 1.7002619802951813e-01 -6.0686178505420685e-02 - <_> - - 0 -1 268 -8.0513395369052887e-03 - - 2.9498210549354553e-01 -9.3280687928199768e-02 - <_> - - 0 -1 269 -1.8630200624465942e-01 - - -4.4096079468727112e-01 5.3429558873176575e-02 - <_> - - 0 -1 270 -1.2388650327920914e-02 - - -5.8523058891296387e-01 3.1196039170026779e-02 - <_> - - 0 -1 271 -5.3622801788151264e-03 - - 1.0439769923686981e-01 -1.0434389859437943e-01 - <_> - - 0 -1 272 -1.9562510773539543e-02 - - -5.7829868793487549e-01 3.2233841717243195e-02 - <_> - - 0 -1 273 -1.4553970098495483e-01 - - -4.1880708932876587e-01 1.1629059445112944e-03 - <_> - - 0 -1 274 -7.3159099556505680e-03 - - 2.4218960106372833e-01 -7.8386463224887848e-02 - <_> - - 0 -1 275 9.5743779093027115e-03 - - 3.2800838351249695e-02 -3.5083159804344177e-01 - <_> - - 0 -1 276 2.4385999888181686e-02 - - 3.5847108811140060e-02 -4.7145798802375793e-01 - <_> - - 0 -1 277 1.5609519556164742e-02 - - -9.0331830084323883e-02 2.0074969530105591e-01 - <_> - - 0 -1 278 1.8569679930806160e-02 - - 3.5404149442911148e-02 -5.2113038301467896e-01 - <_> - - 0 -1 279 1.3852110505104065e-01 - - 1.9737629219889641e-02 -2.7352941036224365e-01 - <_> - - 0 -1 280 -2.0759139209985733e-02 - - 1.9612009823322296e-01 -9.6768572926521301e-02 - <_> - - 0 -1 281 -2.6231709867715836e-02 - - 5.5649291723966599e-02 -5.8627698570489883e-02 - <_> - - 0 -1 282 1.1033529788255692e-01 - - -6.5192982554435730e-02 3.2797458767890930e-01 - <_> - - 0 -1 283 8.1975180655717850e-03 - - -3.6720771342515945e-02 1.8983750045299530e-01 - <_> - - 0 -1 284 1.1925240047276020e-02 - - -4.7182181477546692e-01 3.9609570056200027e-02 - <_> - - 0 -1 285 -1.0444080084562302e-01 - - 3.0608791112899780e-01 -6.9167442619800568e-02 - <_> - - 0 -1 286 9.1293286532163620e-03 - - -9.6449576318264008e-02 2.2882050275802612e-01 - <_> - - 0 -1 287 3.5521490644896403e-05 - - -1.3747419416904449e-01 1.2723550200462341e-01 - <_> - - 0 -1 288 -6.4568631350994110e-03 - - -4.1703549027442932e-01 4.7209650278091431e-02 - <_> - - 0 -1 289 -3.6431129556149244e-03 - - 1.4550060033798218e-01 -7.9281456768512726e-02 - <_> - - 0 -1 290 -5.1797907799482346e-03 - - 2.0312570035457611e-01 -8.3984777331352234e-02 - <_> - - 0 -1 291 1.4643589965999126e-02 - - 3.9659328758716583e-02 -4.4028940796852112e-01 - <_> - - 0 -1 292 -8.0946777015924454e-03 - - -4.5905250310897827e-01 3.3486161381006241e-02 - <_> - - 0 -1 293 1.0767610371112823e-01 - - -1.4604750322178006e-03 -9.7961211204528809e-01 - <_> - - 0 -1 294 -6.4884279854595661e-03 - - 1.8487909436225891e-01 -9.3405902385711670e-02 - <_> - - 0 -1 295 -1.6400039196014404e-02 - - -4.0006530284881592e-01 3.2618328928947449e-02 - <_> - - 0 -1 296 3.0795740894973278e-03 - - 6.3936926424503326e-02 -2.4403099715709686e-01 - <_> - - 0 -1 297 2.3928020149469376e-02 - - -7.4498817324638367e-02 1.5541020035743713e-01 - <_> - - 0 -1 298 -8.8588669896125793e-03 - - -4.5777368545532227e-01 3.2278370112180710e-02 - <_> - - 0 -1 299 -3.0064169317483902e-02 - - 2.0335829257965088e-01 -4.4844739139080048e-02 - <_> - - 0 -1 300 -4.7341538593173027e-03 - - 1.2229750305414200e-01 -1.2873139977455139e-01 - <_> - - 0 -1 301 -8.5981301963329315e-02 - - 4.3083581328392029e-01 -6.3731619156897068e-03 - <_> - - 0 -1 302 -2.1685559302568436e-02 - - 2.8727719187736511e-01 -6.0343831777572632e-02 - <_> - - 0 -1 303 -1.3941359706223011e-02 - - -5.1329857110977173e-01 1.8201520666480064e-02 - <_> - - 0 -1 304 2.4440600536763668e-03 - - -8.6260870099067688e-02 1.6634729504585266e-01 - <_> - - 0 -1 305 1.7512999475002289e-02 - - 1.9067149609327316e-02 -4.1144749522209167e-01 - <_> - - 0 -1 306 1.1205240298295394e-04 - - -1.9769529998302460e-01 7.5256332755088806e-02 - <_> - - 0 -1 307 2.4711890518665314e-01 - - -8.4033057093620300e-02 1.7387530207633972e-01 - <_> - - 0 -1 308 9.2011861852370203e-05 - - -1.0857179760932922e-01 1.3808019459247589e-01 - <_> - - 0 -1 309 -9.0258494019508362e-03 - - -4.7819659113883972e-01 3.2357428222894669e-02 - <_> - - 0 -1 310 -3.6494661122560501e-02 - - 1.1401130259037018e-01 -1.3022980093955994e-01 - <_> - - 0 -1 311 -1.2746749818325043e-01 - - 5.1732218265533447e-01 -2.9527239501476288e-02 - <_> - - 0 -1 312 -1.4561279676854610e-02 - - 1.1064620316028595e-01 -1.4923259615898132e-01 - <_> - - 0 -1 313 -1.3745570322498679e-04 - - 5.8987621217966080e-02 -9.3671269714832306e-02 - <_> - - 0 -1 314 1.0125709697604179e-02 - - -4.6942770481109619e-02 3.4779500961303711e-01 - <_> - - 0 -1 315 -1.4763530343770981e-03 - - 6.7057438194751740e-02 -1.5268740057945251e-01 - <_> - - 0 -1 316 -5.1781561225652695e-02 - - 3.2812559604644775e-01 -4.9428470432758331e-02 - <_> - - 0 -1 317 -8.7604322470724583e-04 - - 9.5243208110332489e-02 -4.9483429640531540e-02 - <_> - - 0 -1 318 -2.2923199459910393e-02 - - -6.0710781812667847e-01 2.1902529522776604e-02 - <_> - - 0 -1 319 3.9328118873527274e-05 - - -7.6403297483921051e-02 9.5908410847187042e-02 - <_> - - 0 -1 320 -2.6600218843668699e-03 - - 2.4431939423084259e-01 -6.4098820090293884e-02 - <_> - - 0 -1 321 7.9669617116451263e-02 - - -1.1213810183107853e-02 1.5940660238265991e-01 - <_> - - 0 -1 322 -2.8348390012979507e-02 - - 1.5259909629821777e-01 -8.8062129914760590e-02 - <_> - - 0 -1 323 7.4440040625631809e-03 - - 2.1669639274477959e-02 -4.0132689476013184e-01 - <_> - - 0 -1 324 -1.1087640188634396e-02 - - -3.9004370570182800e-01 3.5446919500827789e-02 - <_> - - 0 -1 325 1.4261420071125031e-01 - - -3.9467811584472656e-02 3.4237340092658997e-01 - <_> - - 0 -1 326 1.0709280148148537e-02 - - 3.9296310395002365e-02 -3.3758899569511414e-01 - <_> - 116 - -1.6312040090560913e+00 - - <_> - - 0 -1 327 -4.9442949891090393e-01 - - 4.4323670864105225e-01 -2.7319180965423584e-01 - <_> - - 0 -1 328 -1.2554959952831268e-01 - - 4.0862751007080078e-01 -2.2868640720844269e-01 - <_> - - 0 -1 329 -5.2924221381545067e-03 - - 1.6534030437469482e-01 -4.3098509311676025e-01 - <_> - - 0 -1 330 -1.0192809998989105e-01 - - 2.6754850149154663e-01 -1.8038110435009003e-01 - <_> - - 0 -1 331 1.8004419803619385e+00 - - -2.1841609850525856e-02 -1.4260159912109375e+03 - <_> - - 0 -1 332 1.0608100332319736e-02 - - -5.9960059821605682e-02 3.4709489345550537e-01 - <_> - - 0 -1 333 -1.6630759928375483e-03 - - 2.8806871175765991e-01 -1.5445019304752350e-01 - <_> - - 0 -1 334 -1.1193910177098587e-04 - - 9.8864771425724030e-02 -1.1795780062675476e-01 - <_> - - 0 -1 335 -4.2859889566898346e-02 - - 1.6759259998798370e-01 -2.1457959711551666e-01 - <_> - - 0 -1 336 -9.3869988631922752e-05 - - 9.6965126693248749e-02 -8.3837963640689850e-02 - <_> - - 0 -1 337 1.1530930176377296e-02 - - 5.7559680193662643e-02 -5.2718931436538696e-01 - <_> - - 0 -1 338 1.9106600433588028e-02 - - -4.5117460191249847e-02 3.8243150711059570e-01 - <_> - - 0 -1 339 1.7600689083337784e-02 - - -8.8198132812976837e-02 4.3440911173820496e-01 - <_> - - 0 -1 340 -1.3769839890301228e-02 - - -4.3921610713005066e-01 2.8345840051770210e-02 - <_> - - 0 -1 341 -8.7673062807880342e-05 - - 1.2015280127525330e-01 -2.9294851422309875e-01 - <_> - - 0 -1 342 -7.6127682405058295e-05 - - 1.5655809640884399e-01 -1.5530920028686523e-01 - <_> - - 0 -1 343 8.4909036755561829e-02 - - -9.1236896812915802e-02 3.2453578710556030e-01 - <_> - - 0 -1 344 -1.5367859974503517e-02 - - -2.9729259014129639e-01 4.7699470072984695e-02 - <_> - - 0 -1 345 9.9366791546344757e-03 - - 5.7912901043891907e-02 -5.0259292125701904e-01 - <_> - - 0 -1 346 7.6439202530309558e-05 - - -9.9498890340328217e-02 1.3198280334472656e-01 - <_> - - 0 -1 347 -8.2395068602636456e-05 - - 1.7732089757919312e-01 -1.6241380572319031e-01 - <_> - - 0 -1 348 1.5879699960350990e-02 - - -7.5514368712902069e-02 3.5822570323944092e-01 - <_> - - 0 -1 349 -3.0790620949119329e-03 - - 1.1570940166711807e-01 -2.1889360249042511e-01 - <_> - - 0 -1 350 -1.4905449934303761e-02 - - -3.9039888978004456e-01 1.7254609614610672e-02 - <_> - - 0 -1 351 8.6873043328523636e-03 - - 4.4716950505971909e-02 -4.9758139252662659e-01 - <_> - - 0 -1 352 3.2028879970312119e-02 - - -8.2974523305892944e-02 2.8257378935813904e-01 - <_> - - 0 -1 353 -3.1918611377477646e-02 - - 3.5842159390449524e-01 -6.8592041730880737e-02 - <_> - - 0 -1 354 -9.8993210121989250e-03 - - -4.5753958821296692e-01 4.3285790830850601e-02 - <_> - - 0 -1 355 -9.1577637940645218e-03 - - 3.2826730608940125e-01 -6.6698208451271057e-02 - <_> - - 0 -1 356 -1.0106399655342102e-02 - - 9.1073133051395416e-02 -2.0907290279865265e-01 - <_> - - 0 -1 357 -1.0402830317616463e-02 - - -4.8874959349632263e-01 3.8931101560592651e-02 - <_> - - 0 -1 358 2.0562000572681427e-02 - - 3.9995308965444565e-02 -4.7452241182327271e-01 - <_> - - 0 -1 359 -3.8352191448211670e-02 - - -4.7058039903640747e-01 3.7908799946308136e-02 - <_> - - 0 -1 360 -6.9335498847067356e-03 - - 2.4987019598484039e-01 -5.6883011013269424e-02 - <_> - - 0 -1 361 -1.9851999357342720e-02 - - 1.8991729617118835e-01 -1.1510910093784332e-01 - <_> - - 0 -1 362 -9.5688046712893993e-05 - - 1.3111490011215210e-01 -2.0739020407199860e-01 - <_> - - 0 -1 363 -4.5679330825805664e-02 - - 1.4726249873638153e-01 -1.2605570256710052e-01 - <_> - - 0 -1 364 -4.4255409389734268e-02 - - 3.9286181330680847e-01 -5.6143738329410553e-02 - <_> - - 0 -1 365 -7.7998407185077667e-02 - - 1.7947210371494293e-01 -1.1833500117063522e-01 - <_> - - 0 -1 366 8.4853731095790863e-03 - - 2.5496419519186020e-02 -2.2068339586257935e-01 - <_> - - 0 -1 367 -1.7047259956598282e-02 - - 2.7297979593276978e-01 -7.0188298821449280e-02 - <_> - - 0 -1 368 7.9200501204468310e-05 - - -6.7605443298816681e-02 7.1529977023601532e-02 - <_> - - 0 -1 369 6.2673659995198250e-03 - - 5.4571509361267090e-02 -3.6617699265480042e-01 - <_> - - 0 -1 370 7.8682642197236419e-05 - - -7.1166932582855225e-02 7.9210631549358368e-02 - <_> - - 0 -1 371 -1.0391850082669407e-04 - - 1.1487320065498352e-01 -2.0163500308990479e-01 - <_> - - 0 -1 372 3.4147119149565697e-03 - - 4.0455348789691925e-02 -2.3108960688114166e-01 - <_> - - 0 -1 373 8.3642201498150826e-03 - - -4.5927461236715317e-02 4.0529310703277588e-01 - <_> - - 0 -1 374 3.6362249404191971e-02 - - 7.8255804255604744e-03 -7.4479711055755615e-01 - <_> - - 0 -1 375 -4.0266428142786026e-02 - - -2.9234629869461060e-01 5.7985309511423111e-02 - <_> - - 0 -1 376 -3.6416169255971909e-02 - - -5.7923018932342529e-01 5.2343257702887058e-03 - <_> - - 0 -1 377 1.4502329751849174e-02 - - 3.7191450595855713e-02 -4.7790169715881348e-01 - <_> - - 0 -1 378 7.1894600987434387e-02 - - 1.3680050149559975e-02 -4.2053639888763428e-01 - <_> - - 0 -1 379 4.7077611088752747e-02 - - 3.7311609834432602e-02 -4.4205638766288757e-01 - <_> - - 0 -1 380 -2.0691620185971260e-02 - - 9.2584423720836639e-02 -5.4656080901622772e-02 - <_> - - 0 -1 381 5.8702230453491211e-02 - - 4.2894300073385239e-02 -3.9461919665336609e-01 - <_> - - 0 -1 382 2.6266539469361305e-02 - - -1.6368310898542404e-02 4.1084641218185425e-01 - <_> - - 0 -1 383 -6.7523908801376820e-03 - - 1.4126999676227570e-01 -1.1122710257768631e-01 - <_> - - 0 -1 384 -3.0624749138951302e-02 - - 3.3001619577407837e-01 -2.4412149563431740e-02 - <_> - - 0 -1 385 -2.0111929625272751e-02 - - 3.6708730459213257e-01 -4.4314250349998474e-02 - <_> - - 0 -1 386 2.3419620469212532e-02 - - -3.7601488828659058e-01 4.3635338544845581e-02 - <_> - - 0 -1 387 -3.6192089319229126e-03 - - 2.9460039734840393e-01 -5.8415818959474564e-02 - <_> - - 0 -1 388 -4.6485148370265961e-02 - - 2.2718380391597748e-01 -7.9986602067947388e-02 - <_> - - 0 -1 389 -2.7961090207099915e-02 - - -4.8854830861091614e-01 4.0761001408100128e-02 - <_> - - 0 -1 390 -8.8993441313505173e-03 - - -6.1056411266326904e-01 3.1436510384082794e-02 - <_> - - 0 -1 391 -4.7756999731063843e-02 - - 3.5695630311965942e-01 -4.7706581652164459e-02 - <_> - - 0 -1 392 1.5203200280666351e-02 - - 3.2397348433732986e-02 -5.1129198074340820e-01 - <_> - - 0 -1 393 -2.6603629812598228e-02 - - -4.5528748631477356e-01 3.0705869197845459e-02 - <_> - - 0 -1 394 -2.0662199240177870e-03 - - 1.9821240007877350e-01 -5.1250338554382324e-02 - <_> - - 0 -1 395 6.8433540873229504e-03 - - 4.2817000299692154e-02 -3.4796771407127380e-01 - <_> - - 0 -1 396 1.3943660305812955e-03 - - -7.6624289155006409e-02 1.7947790026664734e-01 - <_> - - 0 -1 397 -1.5453259402420372e-04 - - 9.4035491347312927e-02 -1.5089119970798492e-01 - <_> - - 0 -1 398 -1.6063340008258820e-01 - - 1.8896080553531647e-01 -7.5927153229713440e-02 - <_> - - 0 -1 399 1.6323490440845490e-01 - - -3.5981848835945129e-02 3.8546431064605713e-01 - <_> - - 0 -1 400 -2.1562659740447998e-01 - - -3.0063590407371521e-01 1.0327990166842937e-02 - <_> - - 0 -1 401 -1.8259340897202492e-02 - - -3.5089141130447388e-01 3.8606669753789902e-02 - <_> - - 0 -1 402 8.7421722128055990e-05 - - -8.4997348487377167e-02 8.9438356459140778e-02 - <_> - - 0 -1 403 9.1984707978554070e-05 - - -1.2029039859771729e-01 1.2935799360275269e-01 - <_> - - 0 -1 404 -9.7184813057538122e-05 - - 1.5226499736309052e-01 -1.0576970130205154e-01 - <_> - - 0 -1 405 -8.1813501310534775e-05 - - 1.5129140019416809e-01 -1.0089760273694992e-01 - <_> - - 0 -1 406 3.6952689290046692e-01 - - 3.3503640443086624e-02 -4.0417960286140442e-01 - <_> - - 0 -1 407 2.2105079144239426e-02 - - -2.1560800075531006e-01 6.4489699900150299e-02 - <_> - - 0 -1 408 1.3170000165700912e-02 - - 3.2980829477310181e-02 -2.8448399901390076e-01 - <_> - - 0 -1 409 1.3640720397233963e-02 - - -5.6598719209432602e-02 2.4039690196514130e-01 - <_> - - 0 -1 410 1.2301489710807800e-02 - - 1.9816080108284950e-02 -4.6144211292266846e-01 - <_> - - 0 -1 411 -9.5483958721160889e-02 - - -3.4973609447479248e-01 3.5531830042600632e-02 - <_> - - 0 -1 412 -1.0081489570438862e-02 - - -3.1359091401100159e-01 2.1178700029850006e-02 - <_> - - 0 -1 413 8.1625310704112053e-03 - - 3.2066490501165390e-02 -4.2840909957885742e-01 - <_> - - 0 -1 414 5.9994839131832123e-02 - - 4.8301668721251190e-04 -2.8568148612976074e-01 - <_> - - 0 -1 415 -5.8298230171203613e-02 - - 2.8866380453109741e-01 -4.5333638787269592e-02 - <_> - - 0 -1 416 8.0641999375075102e-04 - - -2.7502080425620079e-02 5.5130850523710251e-02 - <_> - - 0 -1 417 9.2612383014056832e-05 - - -9.0724922716617584e-02 1.6268420219421387e-01 - <_> - - 0 -1 418 -1.4031870290637016e-02 - - -1.7377139627933502e-01 2.7589490637183189e-02 - <_> - - 0 -1 419 -2.1856749430298805e-02 - - 1.1253879964351654e-01 -1.1328639835119247e-01 - <_> - - 0 -1 420 -4.2751420289278030e-02 - - -5.2992081642150879e-01 4.2229499667882919e-03 - <_> - - 0 -1 421 -3.0375849455595016e-02 - - -7.1178191900253296e-01 1.7570890486240387e-02 - <_> - - 0 -1 422 3.7499099969863892e-02 - - 6.9999499246478081e-03 -3.7006160616874695e-01 - <_> - - 0 -1 423 1.1432570172473788e-03 - - -6.2220100313425064e-02 1.7703770101070404e-01 - <_> - - 0 -1 424 -8.5832587501499802e-05 - - 6.0030180960893631e-02 -5.1105540245771408e-02 - <_> - - 0 -1 425 -9.4309507403522730e-05 - - 1.0625579953193665e-01 -1.1291199922561646e-01 - <_> - - 0 -1 426 3.9328118873527274e-05 - - -6.4681328833103180e-02 7.1846023201942444e-02 - <_> - - 0 -1 427 1.8130460754036903e-02 - - 3.4265581518411636e-02 -3.6213138699531555e-01 - <_> - - 0 -1 428 -3.4514781087636948e-02 - - 3.1022149324417114e-01 -4.1098561137914658e-02 - <_> - - 0 -1 429 2.7974370867013931e-02 - - -3.9424188435077667e-02 3.0851641297340393e-01 - <_> - - 0 -1 430 -2.8201080858707428e-02 - - 1.1525700241327286e-01 -7.4511423707008362e-02 - <_> - - 0 -1 431 -3.0379800125956535e-02 - - -5.2470958232879639e-01 2.6152899488806725e-02 - <_> - - 0 -1 432 -3.2038960605859756e-02 - - 1.9343900680541992e-01 -6.1670139431953430e-02 - <_> - - 0 -1 433 1.1998290196061134e-02 - - -7.5464673340320587e-02 1.9255849719047546e-01 - <_> - - 0 -1 434 -3.5314068198204041e-02 - - -5.0705671310424805e-01 1.0585010051727295e-02 - <_> - - 0 -1 435 -1.8655620515346527e-02 - - -3.6211800575256348e-01 3.6405950784683228e-02 - <_> - - 0 -1 436 -2.8076169546693563e-03 - - 5.3241610527038574e-02 -6.1510920524597168e-02 - <_> - - 0 -1 437 6.1249658465385437e-02 - - -4.6230819076299667e-02 2.6103648543357849e-01 - <_> - - 0 -1 438 3.8007500115782022e-03 - - -3.3608149737119675e-02 6.3185527920722961e-02 - <_> - - 0 -1 439 -6.8106069229543209e-03 - - 1.3896889984607697e-01 -9.1367863118648529e-02 - <_> - - 0 -1 440 -1.4018400106579065e-03 - - 5.0228320062160492e-02 -6.7810513079166412e-02 - <_> - - 0 -1 441 4.1776038706302643e-03 - - 3.1617678701877594e-02 -3.8861921429634094e-01 - <_> - - 0 -1 442 -3.3317681401968002e-02 - - 1.5129630267620087e-01 -8.0862723290920258e-02 - <_> - 126 - -1.5601739883422852e+00 - - <_> - - 0 -1 443 -1.7488760873675346e-02 - - 3.2901680469512939e-01 -2.5890278816223145e-01 - <_> - - 0 -1 444 -7.6176282018423080e-03 - - 7.1541152894496918e-02 -2.3951459676027298e-02 - <_> - - 0 -1 445 2.7712950110435486e-01 - - -3.4845480322837830e-01 1.8256700038909912e-01 - <_> - - 0 -1 446 -6.2221560627222061e-02 - - 1.0674960166215897e-01 -1.4201539754867554e-01 - <_> - - 0 -1 447 -2.7581760659813881e-03 - - 2.0689900219440460e-01 -3.4231829643249512e-01 - <_> - - 0 -1 448 2.4392189458012581e-02 - - -1.8963119387626648e-01 2.5946459174156189e-01 - <_> - - 0 -1 449 -4.5020319521427155e-03 - - 4.0866190195083618e-01 -1.1621879786252975e-01 - <_> - - 0 -1 450 -3.3270670101046562e-03 - - 2.8641051054000854e-01 -7.0059493184089661e-02 - <_> - - 0 -1 451 3.1234470661729574e-03 - - -3.1795001029968262e-01 1.1268649995326996e-01 - <_> - - 0 -1 452 4.7244699671864510e-03 - - -7.4922777712345123e-02 3.2988309860229492e-01 - <_> - - 0 -1 453 -5.5989590473473072e-03 - - 1.4106449484825134e-01 -2.1870850026607513e-01 - <_> - - 0 -1 454 -1.3673740439116955e-02 - - -2.9188311100006104e-01 5.1885809749364853e-02 - <_> - - 0 -1 455 -1.5710070729255676e-02 - - -4.7450101375579834e-01 7.2411507368087769e-02 - <_> - - 0 -1 456 -6.2331659719347954e-03 - - 1.5145640075206757e-01 -4.7863069921731949e-02 - <_> - - 0 -1 457 -5.9798290021717548e-03 - - 3.0300670862197876e-01 -1.0020550340414047e-01 - <_> - - 0 -1 458 -1.9614109769463539e-02 - - 2.3906539380550385e-01 -1.2380470335483551e-01 - <_> - - 0 -1 459 -9.7658529877662659e-02 - - 3.3550170063972473e-01 -8.4931187331676483e-02 - <_> - - 0 -1 460 5.5993441492319107e-02 - - -1.5721499919891357e-02 4.0024089813232422e-01 - <_> - - 0 -1 461 -9.7235292196273804e-03 - - 2.1756379306316376e-01 -1.1435779929161072e-01 - <_> - - 0 -1 462 -1.4722860418260098e-02 - - -5.5747538805007935e-01 3.6078389734029770e-02 - <_> - - 0 -1 463 2.5517370551824570e-02 - - -8.2256257534027100e-02 3.1335538625717163e-01 - <_> - - 0 -1 464 1.3567660003900528e-02 - - 2.3133050650358200e-02 -4.1297689080238342e-01 - <_> - - 0 -1 465 -1.7204899340867996e-02 - - -4.4162181019783020e-01 5.2605498582124710e-02 - <_> - - 0 -1 466 3.4919459372758865e-02 - - 1.4397609978914261e-02 -3.9569649100303650e-01 - <_> - - 0 -1 467 -1.7781810835003853e-02 - - -5.8534961938858032e-01 3.7046588957309723e-02 - <_> - - 0 -1 468 6.0122098773717880e-02 - - 1.4435539953410625e-02 -3.3743178844451904e-01 - <_> - - 0 -1 469 -5.4228208027780056e-03 - - 2.5677248835563660e-01 -7.9253107309341431e-02 - <_> - - 0 -1 470 -1.2484540231525898e-02 - - 1.1836159974336624e-01 -8.1720106303691864e-02 - <_> - - 0 -1 471 -1.6004320234060287e-02 - - 1.6762499511241913e-01 -1.4247520267963409e-01 - <_> - - 0 -1 472 1.8744349479675293e-02 - - -7.5924798846244812e-02 2.7398949861526489e-01 - <_> - - 0 -1 473 1.1467009782791138e-02 - - 5.8074008673429489e-02 -3.7608700990676880e-01 - <_> - - 0 -1 474 2.0451270043849945e-01 - - -5.2543081343173981e-02 5.0651127099990845e-01 - <_> - - 0 -1 475 -1.5374840237200260e-02 - - 2.8505790233612061e-01 -8.5190899670124054e-02 - <_> - - 0 -1 476 8.3877835422754288e-03 - - 5.0722919404506683e-02 -2.4024839699268341e-01 - <_> - - 0 -1 477 1.9463960081338882e-02 - - 4.7701448202133179e-02 -4.0168151259422302e-01 - <_> - - 0 -1 478 -9.6702417067717761e-05 - - 8.0057263374328613e-02 -1.0148379951715469e-01 - <_> - - 0 -1 479 -2.8271209448575974e-02 - - -6.6573107242584229e-01 2.7066949754953384e-02 - <_> - - 0 -1 480 4.0985859930515289e-02 - - 2.3980900645256042e-02 -2.8985351324081421e-01 - <_> - - 0 -1 481 -2.4697459302842617e-03 - - 9.0631358325481415e-02 -2.1575699746608734e-01 - <_> - - 0 -1 482 -3.6953210830688477e-02 - - -6.1706972122192383e-01 2.4969769641757011e-02 - <_> - - 0 -1 483 -1.4313410036265850e-02 - - -4.3720778822898865e-01 3.4561868757009506e-02 - <_> - - 0 -1 484 1.5469809994101524e-02 - - -5.5725499987602234e-02 2.9458519816398621e-01 - <_> - - 0 -1 485 1.5401760116219521e-02 - - -1.2555029988288879e-01 1.7011690139770508e-01 - <_> - - 0 -1 486 2.0449940115213394e-02 - - 1.3330750167369843e-02 -3.5554531216621399e-01 - <_> - - 0 -1 487 -1.1459179950179532e-04 - - 1.0097809880971909e-01 -1.7902599275112152e-01 - <_> - - 0 -1 488 2.1345940232276917e-01 - - -6.0278929769992828e-02 2.4713979661464691e-01 - <_> - - 0 -1 489 -7.6341837644577026e-02 - - 1.0174889862537384e-01 -1.7403389513492584e-01 - <_> - - 0 -1 490 -2.7297199703752995e-03 - - 7.9033032059669495e-02 -4.8074871301651001e-02 - <_> - - 0 -1 491 -3.9923721924424171e-03 - - 1.9130119681358337e-01 -8.8253356516361237e-02 - <_> - - 0 -1 492 8.8855503126978874e-03 - - -7.5035899877548218e-02 2.4043780565261841e-01 - <_> - - 0 -1 493 -9.9884327501058578e-03 - - 1.9008040428161621e-01 -1.0136889666318893e-01 - <_> - - 0 -1 494 -2.7102470397949219e-02 - - -5.5960011482238770e-01 8.8603552430868149e-03 - <_> - - 0 -1 495 1.0957789607346058e-02 - - 4.1825290769338608e-02 -4.5446240901947021e-01 - <_> - - 0 -1 496 -1.7460700124502182e-02 - - -2.3399209976196289e-01 1.6339760273694992e-02 - <_> - - 0 -1 497 -1.9853349775075912e-02 - - -4.8932269215583801e-01 3.2708961516618729e-02 - <_> - - 0 -1 498 -6.1350357718765736e-03 - - -5.1191371679306030e-01 2.7723550796508789e-02 - <_> - - 0 -1 499 -4.8992279917001724e-02 - - -3.6576160788536072e-01 4.0420729666948318e-02 - <_> - - 0 -1 500 -3.3459690213203430e-01 - - -5.9153968095779419e-01 2.1460810676217079e-02 - <_> - - 0 -1 501 -2.8862519189715385e-02 - - -5.9815990924835205e-01 1.9781190901994705e-02 - <_> - - 0 -1 502 -1.1251099640503526e-03 - - 2.0122319459915161e-01 -8.7745033204555511e-02 - <_> - - 0 -1 503 -6.4093400724232197e-03 - - -6.1948382854461670e-01 2.3344030603766441e-02 - <_> - - 0 -1 504 1.1830270523205400e-03 - - -6.9342859089374542e-02 1.4039330184459686e-01 - <_> - - 0 -1 505 -1.0599560337141156e-03 - - 1.7260709404945374e-01 -8.1097446382045746e-02 - <_> - - 0 -1 506 -8.5180420428514481e-03 - - -5.3051722049713135e-01 2.6180759072303772e-02 - <_> - - 0 -1 507 -2.3521099239587784e-02 - - 2.5432139635086060e-01 -5.6951168924570084e-02 - <_> - - 0 -1 508 7.3622940108180046e-03 - - 3.0450310558080673e-02 -2.6797720789909363e-01 - <_> - - 0 -1 509 -2.1439490839838982e-02 - - -3.3608379960060120e-01 4.3043609708547592e-02 - <_> - - 0 -1 510 -1.1769459582865238e-02 - - 1.0212860256433487e-01 -1.0810419917106628e-01 - <_> - - 0 -1 511 2.8588879853487015e-02 - - -6.0787688940763474e-02 3.1145519018173218e-01 - <_> - - 0 -1 512 -1.1894520372152328e-02 - - -4.5586681365966797e-01 3.2649289816617966e-02 - <_> - - 0 -1 513 8.9476241555530578e-05 - - -1.7755030095577240e-01 7.9232156276702881e-02 - <_> - - 0 -1 514 1.0587619617581367e-02 - - -2.4411190301179886e-02 2.2775959968566895e-01 - <_> - - 0 -1 515 -1.3677559792995453e-02 - - 1.0863789916038513e-01 -1.2193650007247925e-01 - <_> - - 0 -1 516 1.3244390487670898e-01 - - -3.3203829079866409e-02 4.5417618751525879e-01 - <_> - - 0 -1 517 -3.4419998526573181e-02 - - -4.4876348972320557e-01 3.3680748194456100e-02 - <_> - - 0 -1 518 1.4392529614269733e-02 - - 1.7250670120120049e-02 -2.8750520944595337e-01 - <_> - - 0 -1 519 -1.5969440340995789e-02 - - -5.4419952630996704e-01 2.2490320727229118e-02 - <_> - - 0 -1 520 1.7835280159488320e-03 - - 2.8877379372715950e-02 -2.2269259393215179e-01 - <_> - - 0 -1 521 -4.9637211486697197e-03 - - 1.5367990732192993e-01 -8.0054156482219696e-02 - <_> - - 0 -1 522 3.7779840640723705e-03 - - -4.9544081091880798e-02 8.9024871587753296e-02 - <_> - - 0 -1 523 7.8981714323163033e-03 - - -7.4866697192192078e-02 2.0431950688362122e-01 - <_> - - 0 -1 524 -8.0553352832794189e-02 - - -5.6442260742187500e-01 9.1366795822978020e-03 - <_> - - 0 -1 525 -3.0759580433368683e-02 - - -4.4340169429779053e-01 2.4137599393725395e-02 - <_> - - 0 -1 526 -9.2535447329282761e-03 - - -5.6261157989501953e-01 9.2792203649878502e-03 - <_> - - 0 -1 527 -1.2369129399303347e-04 - - 1.0645399987697601e-01 -1.2000100314617157e-01 - <_> - - 0 -1 528 3.2567538321018219e-02 - - -4.0003869682550430e-02 1.9980829954147339e-01 - <_> - - 0 -1 529 -1.1247079819440842e-02 - - 1.8409490585327148e-01 -6.8117700517177582e-02 - <_> - - 0 -1 530 -2.9179789125919342e-02 - - 4.8721261322498322e-02 -4.7425370663404465e-02 - <_> - - 0 -1 531 4.9517739564180374e-02 - - 3.2707910984754562e-02 -3.8871440291404724e-01 - <_> - - 0 -1 532 -7.7525358647108078e-03 - - -4.0735891461372375e-01 2.7974059805274010e-02 - <_> - - 0 -1 533 2.0060930401086807e-02 - - -7.0303089916706085e-02 1.7212529480457306e-01 - <_> - - 0 -1 534 -6.1907349154353142e-03 - - 2.6576110720634460e-01 -6.0436088591814041e-02 - <_> - - 0 -1 535 -3.2592790666967630e-03 - - -4.4088658690452576e-01 2.9936179518699646e-02 - <_> - - 0 -1 536 6.9727632217109203e-03 - - 2.2902229800820351e-02 -3.0562791228294373e-01 - <_> - - 0 -1 537 -3.1218219548463821e-02 - - 1.3678680360317230e-01 -8.6494326591491699e-02 - <_> - - 0 -1 538 -2.1239029243588448e-02 - - 9.2500463128089905e-02 -1.4436760544776917e-01 - <_> - - 0 -1 539 -1.1203570291399956e-02 - - 1.7076200246810913e-01 -7.0275321602821350e-02 - <_> - - 0 -1 540 -2.5859309360384941e-02 - - 1.4182479679584503e-01 -3.3001139760017395e-02 - <_> - - 0 -1 541 1.2670049909502268e-04 - - -1.3006690144538879e-01 9.2362843453884125e-02 - <_> - - 0 -1 542 4.3577109463512897e-03 - - -3.5865459591150284e-02 4.4456228613853455e-02 - <_> - - 0 -1 543 2.7678349614143372e-01 - - 1.2988999485969543e-01 -9.0131908655166626e-02 - <_> - - 0 -1 544 -2.5398649275302887e-02 - - -8.2552421092987061e-01 3.6853079218417406e-03 - <_> - - 0 -1 545 -1.2352040037512779e-02 - - -5.6349527835845947e-01 1.8808899447321892e-02 - <_> - - 0 -1 546 8.2362545654177666e-03 - - 7.0837750099599361e-03 -5.5061972141265869e-01 - <_> - - 0 -1 547 1.1910520261153579e-03 - - -7.4929133057594299e-02 1.6042159497737885e-01 - <_> - - 0 -1 548 1.3469549594447017e-04 - - -5.1338870078325272e-02 5.3888119757175446e-02 - <_> - - 0 -1 549 -1.7835580511018634e-03 - - 2.1617199480533600e-01 -5.3082071244716644e-02 - <_> - - 0 -1 550 2.3661980405449867e-02 - - 5.9997271746397018e-03 -6.8889677524566650e-01 - <_> - - 0 -1 551 -9.9182292819023132e-02 - - 3.4148588776588440e-01 -3.3521678298711777e-02 - <_> - - 0 -1 552 1.6663040220737457e-01 - - -8.2063250243663788e-02 1.5505069494247437e-01 - <_> - - 0 -1 553 -3.2383298967033625e-03 - - 9.4989769160747528e-02 -1.3713200390338898e-01 - <_> - - 0 -1 554 -4.0861237794160843e-03 - - -2.9612249135971069e-01 1.4876189641654491e-02 - <_> - - 0 -1 555 -7.7778939157724380e-04 - - 1.5173420310020447e-01 -7.8519538044929504e-02 - <_> - - 0 -1 556 7.2721489705145359e-03 - - 2.4271810427308083e-02 -4.9869158864021301e-01 - <_> - - 0 -1 557 -1.1204819747945294e-04 - - 1.0622479766607285e-01 -1.0977140069007874e-01 - <_> - - 0 -1 558 -9.0798959136009216e-02 - - -2.7696010470390320e-01 1.6883529722690582e-02 - <_> - - 0 -1 559 1.7063830047845840e-02 - - -9.4675257802009583e-02 1.5047849714756012e-01 - <_> - - 0 -1 560 4.2208808660507202e-01 - - 2.2498339414596558e-02 -4.6997109055519104e-01 - <_> - - 0 -1 561 8.2323037087917328e-02 - - -2.4581270292401314e-02 4.4949281215667725e-01 - <_> - - 0 -1 562 -1.3997350470162928e-04 - - 1.0967099666595459e-01 -1.0202780365943909e-01 - <_> - - 0 -1 563 5.4491691291332245e-02 - - 2.7186699211597443e-02 -3.5525378584861755e-01 - <_> - - 0 -1 564 8.6169438436627388e-03 - - -2.3389210924506187e-02 8.4641262888908386e-02 - <_> - - 0 -1 565 -2.6372019201517105e-02 - - -4.8046991229057312e-01 2.0224269479513168e-02 - <_> - - 0 -1 566 -2.0510379690676928e-03 - - 6.4058199524879456e-02 -5.3157251328229904e-02 - <_> - - 0 -1 567 -2.8355750255286694e-03 - - 1.0579310357570648e-01 -1.0183099657297134e-01 - <_> - - 0 -1 568 -3.5882219672203064e-03 - - 4.1550219058990479e-02 -8.8538073003292084e-02 - <_> - 113 - -1.5219190120697021e+00 - - <_> - - 0 -1 569 -2.9585899785161018e-02 - - 2.3680339753627777e-01 -4.2841690778732300e-01 - <_> - - 0 -1 570 4.3837837874889374e-03 - - -1.0966610163450241e-01 2.1417999267578125e-01 - <_> - - 0 -1 571 -3.3207288943231106e-03 - - 2.0494979619979858e-01 -3.5999551415443420e-01 - <_> - - 0 -1 572 -1.3062369823455811e-01 - - 1.9599080085754395e-01 -5.5496081709861755e-02 - <_> - - 0 -1 573 -4.0074709802865982e-02 - - 3.5060319304466248e-01 -1.4514569938182831e-01 - <_> - - 0 -1 574 -9.1901496052742004e-03 - - 1.9584690034389496e-01 -1.8307019770145416e-01 - <_> - - 0 -1 575 3.1390838325023651e-02 - - -1.2538769841194153e-01 3.5840180516242981e-01 - <_> - - 0 -1 576 -2.8154529631137848e-02 - - 2.4045500159263611e-01 -1.0665749758481979e-01 - <_> - - 0 -1 577 -3.1386429909616709e-03 - - 1.0872109979391098e-01 -2.8648340702056885e-01 - <_> - - 0 -1 578 3.7445150315761566e-02 - - -1.9261129200458527e-02 2.9213270545005798e-01 - <_> - - 0 -1 579 -2.3726930841803551e-02 - - 2.1073000133037567e-01 -1.5662379562854767e-01 - <_> - - 0 -1 580 -1.2667299597524107e-04 - - 6.5764471888542175e-02 -8.8266886770725250e-02 - <_> - - 0 -1 581 -1.1386990081518888e-04 - - 1.2571960687637329e-01 -2.5380450487136841e-01 - <_> - - 0 -1 582 1.7410060390830040e-02 - - 2.1554760634899139e-02 -3.7880858778953552e-01 - <_> - - 0 -1 583 -2.0424669608473778e-02 - - -6.2727987766265869e-01 4.4566430151462555e-02 - <_> - - 0 -1 584 -1.9522489979863167e-02 - - 3.0573040246963501e-01 -7.4159696698188782e-02 - <_> - - 0 -1 585 -1.4893850684165955e-01 - - 2.1615840494632721e-01 -1.3478299975395203e-01 - <_> - - 0 -1 586 -1.8726779147982597e-02 - - -4.2101779580116272e-01 1.8423220142722130e-02 - <_> - - 0 -1 587 1.1000379920005798e-02 - - 4.8627670854330063e-02 -4.8832741379737854e-01 - <_> - - 0 -1 588 1.8614949658513069e-03 - - 5.4186780005693436e-02 -4.0128099918365479e-01 - <_> - - 0 -1 589 -9.9544697150122374e-05 - - 1.5979149937629700e-01 -1.5368139743804932e-01 - <_> - - 0 -1 590 -4.5718628913164139e-02 - - 1.9089759886264801e-01 -6.7994199693202972e-02 - <_> - - 0 -1 591 1.9421679899096489e-02 - - -7.1206711232662201e-02 3.1886649131774902e-01 - <_> - - 0 -1 592 1.3375740672927350e-04 - - -1.9609630107879639e-01 9.8393999040126801e-02 - <_> - - 0 -1 593 5.6271668523550034e-02 - - -7.0181913673877716e-02 2.9178839921951294e-01 - <_> - - 0 -1 594 -9.5227472484111786e-03 - - 1.2545530498027802e-01 -5.6728851050138474e-02 - <_> - - 0 -1 595 -8.3248773589730263e-03 - - 2.1773670613765717e-01 -9.0510971844196320e-02 - <_> - - 0 -1 596 -1.3861699961125851e-02 - - -5.0754171609878540e-01 3.4201409667730331e-02 - <_> - - 0 -1 597 -1.7032949253916740e-02 - - -6.0418641567230225e-01 2.9236070811748505e-02 - <_> - - 0 -1 598 1.8115249695256352e-03 - - 5.3599029779434204e-02 -3.8502350449562073e-01 - <_> - - 0 -1 599 -1.0465639934409410e-04 - - 1.4829610288143158e-01 -1.3145260512828827e-01 - <_> - - 0 -1 600 -4.5165838673710823e-03 - - 1.6519570350646973e-01 -8.2269832491874695e-02 - <_> - - 0 -1 601 -5.8911121450364590e-03 - - 2.3836469650268555e-01 -9.6064627170562744e-02 - <_> - - 0 -1 602 1.0750669753178954e-04 - - -1.0889690369367599e-01 8.3729512989521027e-02 - <_> - - 0 -1 603 -2.1406659856438637e-02 - - -5.7400590181350708e-01 3.4402690827846527e-02 - <_> - - 0 -1 604 -3.3456799574196339e-03 - - 1.7945970594882965e-01 -8.2998618483543396e-02 - <_> - - 0 -1 605 2.7489429339766502e-02 - - 3.0824439600110054e-02 -5.8022832870483398e-01 - <_> - - 0 -1 606 2.1110640373080969e-03 - - -6.6623561084270477e-02 1.1231890320777893e-01 - <_> - - 0 -1 607 -1.0807989747263491e-04 - - 8.9796923100948334e-02 -1.7956060171127319e-01 - <_> - - 0 -1 608 -1.1436110362410545e-02 - - -2.8840988874435425e-01 1.4820040203630924e-02 - <_> - - 0 -1 609 -1.1947689577937126e-02 - - -6.1322289705276489e-01 3.0310040339827538e-02 - <_> - - 0 -1 610 -1.1076559894718230e-04 - - 6.2256809324026108e-02 -6.6575892269611359e-02 - <_> - - 0 -1 611 -3.4022140316665173e-03 - - 2.0614670217037201e-01 -8.2437336444854736e-02 - <_> - - 0 -1 612 -2.1814549341797829e-02 - - -5.2821779251098633e-01 1.9165750592947006e-02 - <_> - - 0 -1 613 -5.7069370523095131e-03 - - 1.6021859645843506e-01 -1.0214129835367203e-01 - <_> - - 0 -1 614 -4.5757409185171127e-02 - - -5.9256380796432495e-01 1.5681680291891098e-02 - <_> - - 0 -1 615 -6.1292409896850586e-02 - - -6.0241961479187012e-01 2.3671669885516167e-02 - <_> - - 0 -1 616 -3.3792359754443169e-03 - - 1.3549880683422089e-01 -1.1183329671621323e-01 - <_> - - 0 -1 617 -1.3138949871063232e-02 - - 2.5460991263389587e-01 -6.0035631060600281e-02 - <_> - - 0 -1 618 1.3603650033473969e-02 - - -6.6929057240486145e-02 2.5394749641418457e-01 - <_> - - 0 -1 619 3.9979619905352592e-03 - - 4.5510061085224152e-02 -3.4562489390373230e-01 - <_> - - 0 -1 620 7.2696888819336891e-03 - - 1.4675630256533623e-02 -4.9067720770835876e-01 - <_> - - 0 -1 621 -1.9900960614904761e-04 - - 9.5301151275634766e-02 -1.6552710533142090e-01 - <_> - - 0 -1 622 -1.1526229977607727e-01 - - -1.9299569725990295e-01 2.6505190879106522e-02 - <_> - - 0 -1 623 1.5108739957213402e-02 - - -1.2415219843387604e-01 1.3125440478324890e-01 - <_> - - 0 -1 624 -3.7075690925121307e-02 - - 2.3687429726123810e-01 -4.0280740708112717e-02 - <_> - - 0 -1 625 -2.6980770751833916e-02 - - 2.8977629542350769e-01 -5.6271400302648544e-02 - <_> - - 0 -1 626 2.7761999517679214e-02 - - 2.1243380382657051e-02 -3.1720191240310669e-01 - <_> - - 0 -1 627 -2.3027699440717697e-02 - - 1.7699679732322693e-01 -8.7042309343814850e-02 - <_> - - 0 -1 628 5.4088570177555084e-02 - - -6.1808630824089050e-02 2.9303619265556335e-01 - <_> - - 0 -1 629 -5.8628612896427512e-04 - - 8.5848852992057800e-02 -1.6957600414752960e-01 - <_> - - 0 -1 630 -1.5223369933664799e-02 - - -3.7147569656372070e-01 1.1803089641034603e-02 - <_> - - 0 -1 631 -1.1488939635455608e-02 - - -4.5097041130065918e-01 3.1614851206541061e-02 - <_> - - 0 -1 632 2.0920310635119677e-03 - - -6.1659429222345352e-02 8.8506996631622314e-02 - <_> - - 0 -1 633 -4.0617170743644238e-03 - - 1.5518330037593842e-01 -9.1991297900676727e-02 - <_> - - 0 -1 634 1.1135039676446468e-04 - - -8.7840989232063293e-02 1.0133089870214462e-01 - <_> - - 0 -1 635 1.1977129906881601e-04 - - -1.1713469773530960e-01 1.2503969669342041e-01 - <_> - - 0 -1 636 -3.2901849597692490e-02 - - 9.3008488416671753e-02 -2.6525959372520447e-02 - <_> - - 0 -1 637 -4.8292260617017746e-02 - - 2.5879448652267456e-01 -5.9369418770074844e-02 - <_> - - 0 -1 638 -5.4056089371442795e-02 - - 1.0135240107774734e-01 -1.0452730208635330e-01 - <_> - - 0 -1 639 9.4745680689811707e-03 - - 3.4919779747724533e-02 -3.6243519186973572e-01 - <_> - - 0 -1 640 1.2838640250265598e-02 - - -3.3247381448745728e-02 8.1635028123855591e-02 - <_> - - 0 -1 641 5.8513090014457703e-02 - - 2.2172549739480019e-02 -6.3187897205352783e-01 - <_> - - 0 -1 642 3.1740390695631504e-03 - - 2.1843500435352325e-02 -4.1793620586395264e-01 - <_> - - 0 -1 643 -8.3488157542888075e-05 - - 1.3983680307865143e-01 -9.4738103449344635e-02 - <_> - - 0 -1 644 -2.4147950112819672e-01 - - -2.9803830385208130e-01 1.0715509764850140e-02 - <_> - - 0 -1 645 -1.5269799530506134e-01 - - 2.1027280390262604e-01 -6.2791332602500916e-02 - <_> - - 0 -1 646 8.1526712165214121e-05 - - -1.2688499689102173e-01 1.4064699411392212e-01 - <_> - - 0 -1 647 2.8918751049786806e-03 - - -5.3787451237440109e-02 2.5723600387573242e-01 - <_> - - 0 -1 648 1.0334750264883041e-01 - - -4.5310858637094498e-02 2.9249981045722961e-01 - <_> - - 0 -1 649 -4.4316049665212631e-02 - - 2.2686310112476349e-01 -7.3259286582469940e-02 - <_> - - 0 -1 650 1.0020990157499909e-04 - - -1.9540700316429138e-01 9.6934191882610321e-02 - <_> - - 0 -1 651 -5.4574098438024521e-02 - - -4.8137459158897400e-01 2.4985810741782188e-02 - <_> - - 0 -1 652 7.3195910081267357e-03 - - 3.1002139672636986e-02 -2.7970591187477112e-01 - <_> - - 0 -1 653 1.0135199874639511e-02 - - 4.3817508965730667e-02 -2.9374900460243225e-01 - <_> - - 0 -1 654 1.0032069985754788e-04 - - -7.1889169514179230e-02 5.5231738835573196e-02 - <_> - - 0 -1 655 -1.0669980198144913e-02 - - -5.4181689023971558e-01 2.2745499387383461e-02 - <_> - - 0 -1 656 1.3994649634696543e-04 - - -1.7900389432907104e-01 5.5582638829946518e-02 - <_> - - 0 -1 657 -1.9100980833172798e-02 - - 2.1325789391994476e-01 -5.5573090910911560e-02 - <_> - - 0 -1 658 -3.7138879299163818e-02 - - 1.0222770273685455e-01 -1.3214519619941711e-01 - <_> - - 0 -1 659 -3.0081560835242271e-02 - - -9.2211201786994934e-02 1.3682609796524048e-01 - <_> - - 0 -1 660 8.4205687046051025e-02 - - -8.9014582335948944e-03 4.9819019436836243e-01 - <_> - - 0 -1 661 5.4196681827306747e-02 - - -3.6897160112857819e-02 3.0469229817390442e-01 - <_> - - 0 -1 662 -3.0808220617473125e-03 - - -2.1802039444446564e-01 2.5868140161037445e-02 - <_> - - 0 -1 663 -3.8952209055423737e-02 - - -5.6945180892944336e-01 1.8307609483599663e-02 - <_> - - 0 -1 664 -2.0182169973850250e-03 - - 9.0408429503440857e-02 -3.9514921605587006e-02 - <_> - - 0 -1 665 1.2030619836878031e-04 - - -8.8653340935707092e-02 1.2966379523277283e-01 - <_> - - 0 -1 666 -3.4868849907070398e-03 - - -4.6177589893341064e-01 3.2781731337308884e-02 - <_> - - 0 -1 667 1.9827641081064939e-03 - - -5.7257439941167831e-02 2.0264209806919098e-01 - <_> - - 0 -1 668 -6.5655857324600220e-02 - - -6.0540872812271118e-01 9.3178926035761833e-03 - <_> - - 0 -1 669 -6.7180477082729340e-02 - - -7.7103197574615479e-01 1.4232809655368328e-02 - <_> - - 0 -1 670 -1.0016120359068736e-04 - - 7.7105052769184113e-02 -7.5750999152660370e-02 - <_> - - 0 -1 671 1.0698969708755612e-04 - - -9.5489822328090668e-02 1.1988189816474915e-01 - <_> - - 0 -1 672 -7.9930722713470459e-02 - - -1.6380259394645691e-01 1.3423699885606766e-02 - <_> - - 0 -1 673 -8.4473669528961182e-02 - - -4.8431029915809631e-01 2.2637430578470230e-02 - <_> - - 0 -1 674 -1.2981670442968607e-04 - - 8.6959727108478546e-02 -7.9428322613239288e-02 - <_> - - 0 -1 675 1.0976740159094334e-03 - - -7.1204371750354767e-02 1.7087329924106598e-01 - <_> - - 0 -1 676 1.6371599631384015e-03 - - -5.5209361016750336e-02 6.0871999710798264e-02 - <_> - - 0 -1 677 1.6619920730590820e-02 - - 2.4160409346222878e-02 -4.5807400345802307e-01 - <_> - - 0 -1 678 -4.8507770895957947e-01 - - -6.8080270290374756e-01 1.4013550244271755e-02 - <_> - - 0 -1 679 -2.2336160764098167e-03 - - 9.1761179268360138e-02 -1.2991249561309814e-01 - <_> - - 0 -1 680 -4.0087301284074783e-02 - - 2.5663140416145325e-01 -5.2874509245157242e-02 - <_> - - 0 -1 681 -2.0479310303926468e-02 - - 1.3254520297050476e-01 -1.1415109783411026e-01 - <_> - 165 - -1.5396820306777954e+00 - - <_> - - 0 -1 682 -3.0279869213700294e-02 - - 2.6074808835983276e-01 -2.9911878705024719e-01 - <_> - - 0 -1 683 2.5544969365000725e-02 - - -7.6168537139892578e-02 1.4981770515441895e-01 - <_> - - 0 -1 684 -3.0233090743422508e-02 - - 1.9648909568786621e-01 -2.8406110405921936e-01 - <_> - - 0 -1 685 -3.1364429742097855e-02 - - 1.3312689960002899e-01 -6.8049967288970947e-02 - <_> - - 0 -1 686 -6.6530257463455200e-02 - - 2.3011529445648193e-01 -1.5324029326438904e-01 - <_> - - 0 -1 687 -1.6842380166053772e-02 - - 3.3064040541648865e-01 -1.0679270327091217e-01 - <_> - - 0 -1 688 3.0633020401000977e-01 - - -5.1862299442291260e-03 -1.7709560546875000e+03 - <_> - - 0 -1 689 8.6503643542528152e-03 - - 4.1600249707698822e-02 -3.9576560258865356e-01 - <_> - - 0 -1 690 1.1161570250988007e-01 - - 6.7927487194538116e-02 -4.8279160261154175e-01 - <_> - - 0 -1 691 1.8374849110841751e-02 - - -1.4926449954509735e-01 1.6236560046672821e-01 - <_> - - 0 -1 692 1.1767529940698296e-04 - - -2.5731500983238220e-01 8.8558197021484375e-02 - <_> - - 0 -1 693 4.1459160856902599e-03 - - -1.2687800452113152e-02 7.7366776764392853e-02 - <_> - - 0 -1 694 1.9385030493140221e-02 - - 3.8660649210214615e-02 -5.6522101163864136e-01 - <_> - - 0 -1 695 -4.7151502221822739e-03 - - 1.7933480441570282e-01 -1.0190699994564056e-01 - <_> - - 0 -1 696 -6.3565477728843689e-02 - - 3.7969771027565002e-01 -6.1266478151082993e-02 - <_> - - 0 -1 697 -2.1264329552650452e-02 - - 1.7494979500770569e-01 -6.1323810368776321e-02 - <_> - - 0 -1 698 -1.5541970729827881e-01 - - 3.7420210242271423e-01 -5.9625931084156036e-02 - <_> - - 0 -1 699 -1.5928709506988525e-01 - - -2.0913429558277130e-01 9.9482368677854538e-03 - <_> - - 0 -1 700 -4.8500150442123413e-02 - - 2.0101189613342285e-01 -1.1658769845962524e-01 - <_> - - 0 -1 701 2.7365760877728462e-02 - - 1.7961660400032997e-02 -5.0528198480606079e-01 - <_> - - 0 -1 702 1.3842820189893246e-02 - - 4.5227438211441040e-02 -4.1571640968322754e-01 - <_> - - 0 -1 703 -7.3072552680969238e-02 - - -2.4777120351791382e-01 1.1063029989600182e-02 - <_> - - 0 -1 704 -3.2598939724266529e-03 - - 8.0251343548297882e-02 -2.9581651091575623e-01 - <_> - - 0 -1 705 2.5017689913511276e-02 - - 1.9366070628166199e-02 -3.5857200622558594e-01 - <_> - - 0 -1 706 1.6677830368280411e-02 - - 4.1564568877220154e-02 -4.3558189272880554e-01 - <_> - - 0 -1 707 -4.7600651159882545e-03 - - 2.5715979933738708e-01 -1.0322690010070801e-01 - <_> - - 0 -1 708 -5.4333410225808620e-03 - - 2.3189009726047516e-01 -8.1801012158393860e-02 - <_> - - 0 -1 709 -3.3548839855939150e-03 - - 1.9780829548835754e-01 -3.0241459608078003e-02 - <_> - - 0 -1 710 1.1623079888522625e-02 - - 3.4616850316524506e-02 -4.6493241190910339e-01 - <_> - - 0 -1 711 -3.2393898814916611e-02 - - 1.1313209682703018e-01 -3.5140689462423325e-02 - <_> - - 0 -1 712 -4.8913709819316864e-02 - - 4.8904749751091003e-01 -3.4122288227081299e-02 - <_> - - 0 -1 713 -1.8474429845809937e-02 - - 2.6580730080604553e-01 -5.8163199573755264e-02 - <_> - - 0 -1 714 5.4383978247642517e-02 - - -6.6510722041130066e-02 2.5590199232101440e-01 - <_> - - 0 -1 715 -9.6155777573585510e-03 - - 2.1052959561347961e-01 -7.2851337492465973e-02 - <_> - - 0 -1 716 -1.0688910260796547e-02 - - -5.1457118988037109e-01 3.7727449089288712e-02 - <_> - - 0 -1 717 -9.2319631949067116e-03 - - -3.8744360208511353e-01 3.1080190092325211e-02 - <_> - - 0 -1 718 -1.4203519560396671e-02 - - -5.2725839614868164e-01 2.8752619400620461e-02 - <_> - - 0 -1 719 -1.1013289913535118e-02 - - 1.8653820455074310e-01 -1.1610689759254456e-01 - <_> - - 0 -1 720 -8.6668403819203377e-03 - - -3.8775750994682312e-01 3.8770258426666260e-02 - <_> - - 0 -1 721 6.2698893249034882e-02 - - 3.0983440577983856e-02 -3.3265390992164612e-01 - <_> - - 0 -1 722 -8.5753016173839569e-03 - - -5.7140302658081055e-01 2.5879889726638794e-02 - <_> - - 0 -1 723 -4.7201640903949738e-02 - - -6.9058227539062500e-01 2.5752310175448656e-03 - <_> - - 0 -1 724 -4.5456448569893837e-03 - - 1.4207980036735535e-01 -1.0768160223960876e-01 - <_> - - 0 -1 725 6.5161921083927155e-03 - - -6.4744740724563599e-02 6.8756408989429474e-02 - <_> - - 0 -1 726 5.9258960187435150e-02 - - 3.5610690712928772e-02 -4.2347010970115662e-01 - <_> - - 0 -1 727 -1.0237420065095648e-04 - - 8.9698426425457001e-02 -1.1640360206365585e-01 - <_> - - 0 -1 728 -1.3284040323924273e-04 - - 8.1888839602470398e-02 -1.6856490075588226e-01 - <_> - - 0 -1 729 1.1395310139050707e-04 - - -6.6531307995319366e-02 6.2950029969215393e-02 - <_> - - 0 -1 730 -7.9775685444474220e-03 - - -3.6961629986763000e-01 3.9622299373149872e-02 - <_> - - 0 -1 731 1.1280580423772335e-02 - - 2.0512890070676804e-02 -3.2650449872016907e-01 - <_> - - 0 -1 732 -2.8830489609390497e-03 - - 1.7990750074386597e-01 -8.9808806777000427e-02 - <_> - - 0 -1 733 4.2662010528147221e-03 - - -4.1640471667051315e-02 3.2371160387992859e-01 - <_> - - 0 -1 734 -1.3183150440454483e-04 - - 1.3967730104923248e-01 -1.1727079749107361e-01 - <_> - - 0 -1 735 -2.2476160898804665e-02 - - -6.2844127416610718e-01 2.9074009507894516e-02 - <_> - - 0 -1 736 -1.4370390214025974e-02 - - 1.5368999540805817e-01 -1.0520540177822113e-01 - <_> - - 0 -1 737 1.1654799891402945e-04 - - -8.3058603107929230e-02 9.2904143035411835e-02 - <_> - - 0 -1 738 2.2677709348499775e-03 - - -7.2462536394596100e-02 2.1309800446033478e-01 - <_> - - 0 -1 739 2.3946949839591980e-01 - - -5.9451188892126083e-02 2.3515209555625916e-01 - <_> - - 0 -1 740 1.7877299338579178e-02 - - -1.1026129871606827e-01 1.4158380031585693e-01 - <_> - - 0 -1 741 -1.5361069701611996e-02 - - -4.9897781014442444e-01 2.3761089891195297e-02 - <_> - - 0 -1 742 7.5403959490358829e-03 - - -8.1947498023509979e-02 1.4900860190391541e-01 - <_> - - 0 -1 743 8.1448331475257874e-03 - - 3.5342019051313400e-02 -3.7091499567031860e-01 - <_> - - 0 -1 744 1.3363580219447613e-03 - - -7.6095156371593475e-02 1.6213759779930115e-01 - <_> - - 0 -1 745 -1.2043320020893589e-04 - - 9.0054206550121307e-02 -5.5159721523523331e-02 - <_> - - 0 -1 746 -1.2009990314254537e-04 - - 1.4145790040493011e-01 -9.4803117215633392e-02 - <_> - - 0 -1 747 1.0903520160354674e-04 - - -1.2242019921541214e-01 1.1741840094327927e-01 - <_> - - 0 -1 748 9.7870870376937091e-05 - - -1.2043909728527069e-01 1.1508560180664062e-01 - <_> - - 0 -1 749 -2.3091919720172882e-02 - - 1.3310079276561737e-01 -9.9734462797641754e-02 - <_> - - 0 -1 750 -3.9068670012056828e-03 - - 2.4054819345474243e-01 -5.9338040649890900e-02 - <_> - - 0 -1 751 -5.9686671011149883e-03 - - -4.9683380126953125e-01 2.9891790822148323e-02 - <_> - - 0 -1 752 -1.5916809439659119e-02 - - -3.4195870161056519e-01 3.1308840960264206e-02 - <_> - - 0 -1 753 2.3104140534996986e-02 - - -3.6324020475149155e-02 3.5032561421394348e-01 - <_> - - 0 -1 754 -1.1559560149908066e-01 - - 1.4629890024662018e-01 -8.7614320218563080e-02 - <_> - - 0 -1 755 3.3450409770011902e-02 - - 2.4819390848278999e-02 -2.5611048936843872e-01 - <_> - - 0 -1 756 -7.0857969112694263e-03 - - 7.8206166625022888e-02 -1.5480500459671021e-01 - <_> - - 0 -1 757 -6.6877126693725586e-02 - - 7.9394780099391937e-02 -1.6149780154228210e-01 - <_> - - 0 -1 758 3.8874439895153046e-02 - - -6.1855491250753403e-02 2.0676539838314056e-01 - <_> - - 0 -1 759 2.8544560074806213e-02 - - 5.5605778470635414e-03 -3.8904601335525513e-01 - <_> - - 0 -1 760 -5.5549708195030689e-03 - - 1.6296879947185516e-01 -6.9366142153739929e-02 - <_> - - 0 -1 761 -8.0097168684005737e-03 - - 1.4130909740924835e-01 -4.7679040580987930e-02 - <_> - - 0 -1 762 -5.1694051362574100e-03 - - 2.1644559502601624e-01 -5.8431811630725861e-02 - <_> - - 0 -1 763 5.8240639045834541e-03 - - 3.4278281033039093e-02 -3.1473830342292786e-01 - <_> - - 0 -1 764 1.0263649892294779e-04 - - -1.5524019300937653e-01 9.1399282217025757e-02 - <_> - - 0 -1 765 -1.2985959649085999e-02 - - -3.6545321345329285e-01 1.2820590287446976e-02 - <_> - - 0 -1 766 8.9552644640207291e-03 - - 2.9396979138255119e-02 -4.4281241297721863e-01 - <_> - - 0 -1 767 1.8870230764150620e-02 - - 2.0487939938902855e-02 -5.3079450130462646e-01 - <_> - - 0 -1 768 -4.4253231026232243e-03 - - 1.6098490357398987e-01 -7.0962816476821899e-02 - <_> - - 0 -1 769 -8.5866253357380629e-05 - - 7.3070809245109558e-02 -7.1717053651809692e-02 - <_> - - 0 -1 770 1.0140320286154747e-02 - - 3.5248361527919769e-02 -3.2715541124343872e-01 - <_> - - 0 -1 771 2.2763259708881378e-01 - - -2.6924060657620430e-02 4.1793221235275269e-01 - <_> - - 0 -1 772 -8.8044107542373240e-05 - - 9.1143772006034851e-02 -1.2312269955873489e-01 - <_> - - 0 -1 773 -1.0645220056176186e-02 - - -4.3658348917961121e-01 2.3624230176210403e-02 - <_> - - 0 -1 774 4.6525610378012061e-04 - - -7.9812757670879364e-02 1.3412840664386749e-01 - <_> - - 0 -1 775 -3.3041620627045631e-03 - - -3.8255479931831360e-01 1.6996940597891808e-02 - <_> - - 0 -1 776 -1.0777499846881256e-04 - - 1.6754819452762604e-01 -1.2961159646511078e-01 - <_> - - 0 -1 777 3.1904759816825390e-03 - - 1.7584459856152534e-02 -3.3535620570182800e-01 - <_> - - 0 -1 778 9.7345822723582387e-05 - - -1.2326420098543167e-01 1.4727219939231873e-01 - <_> - - 0 -1 779 9.7421427199151367e-05 - - -6.0977838933467865e-02 7.9623550176620483e-02 - <_> - - 0 -1 780 -7.4847228825092316e-04 - - 1.0238070040941238e-01 -1.1906520277261734e-01 - <_> - - 0 -1 781 -1.5704490244388580e-02 - - 9.3455828726291656e-02 -6.0468971729278564e-02 - <_> - - 0 -1 782 -8.1626698374748230e-05 - - 1.1332800239324570e-01 -8.8222980499267578e-02 - <_> - - 0 -1 783 -6.9608110934495926e-03 - - 1.1039009690284729e-01 -4.0659449994564056e-02 - <_> - - 0 -1 784 -4.4434489682316780e-03 - - 1.2838089466094971e-01 -8.1361807882785797e-02 - <_> - - 0 -1 785 -1.6160740051418543e-03 - - -3.3738899230957031e-01 3.5158511251211166e-02 - <_> - - 0 -1 786 1.0108389687957242e-04 - - -1.2524829804897308e-01 7.9936161637306213e-02 - <_> - - 0 -1 787 9.9391723051667213e-04 - - -8.4492728114128113e-02 1.9661809504032135e-01 - <_> - - 0 -1 788 -8.4912832826375961e-03 - - -2.9578000307083130e-01 4.2739611119031906e-02 - <_> - - 0 -1 789 9.5672323368489742e-05 - - -6.4625412225723267e-02 6.3440762460231781e-02 - <_> - - 0 -1 790 1.1625020124483854e-04 - - -9.1274477541446686e-02 1.1936099827289581e-01 - <_> - - 0 -1 791 -1.7826290568336844e-03 - - 9.5706947147846222e-02 -8.4634251892566681e-02 - <_> - - 0 -1 792 -6.2756668776273727e-03 - - 1.3744869828224182e-01 -9.1167822480201721e-02 - <_> - - 0 -1 793 -8.2775605842471123e-03 - - -1.3923400640487671e-01 3.6440789699554443e-02 - <_> - - 0 -1 794 3.0183959752321243e-03 - - -4.6180319041013718e-02 2.2055029869079590e-01 - <_> - - 0 -1 795 1.7405690625309944e-02 - - 8.9857252314686775e-03 -4.9438339471817017e-01 - <_> - - 0 -1 796 -1.2369710020720959e-04 - - 6.2267590314149857e-02 -1.5967980027198792e-01 - <_> - - 0 -1 797 -5.8059301227331161e-03 - - 4.9442801624536514e-02 -4.6539600938558578e-02 - <_> - - 0 -1 798 -1.0530239902436733e-02 - - -1.9742619991302490e-01 6.9146141409873962e-02 - <_> - - 0 -1 799 -2.9337439686059952e-02 - - -6.4315217733383179e-01 4.9710599705576897e-03 - <_> - - 0 -1 800 -5.6665588170289993e-02 - - -7.8389710187911987e-01 1.0764749720692635e-02 - <_> - - 0 -1 801 -5.8364521712064743e-02 - - -7.5414752960205078e-01 2.7036149986088276e-03 - <_> - - 0 -1 802 -6.0695819556713104e-03 - - 1.5555210411548615e-01 -6.3514240086078644e-02 - <_> - - 0 -1 803 -4.9055949784815311e-03 - - 1.5411140024662018e-01 -6.0024090111255646e-02 - <_> - - 0 -1 804 -2.4349590763449669e-02 - - 1.1066699773073196e-01 -8.9354656636714935e-02 - <_> - - 0 -1 805 -2.0510459318757057e-02 - - -1.7066219449043274e-01 1.8875259906053543e-02 - <_> - - 0 -1 806 -4.0406160056591034e-02 - - -5.1201337575912476e-01 1.8266160041093826e-02 - <_> - - 0 -1 807 1.1639139614999294e-02 - - -2.6663990691304207e-02 1.5386949479579926e-01 - <_> - - 0 -1 808 8.9536290615797043e-03 - - 2.2930210456252098e-02 -4.0166389942169189e-01 - <_> - - 0 -1 809 2.2256279364228249e-02 - - -4.9168240278959274e-02 1.8879279494285583e-01 - <_> - - 0 -1 810 -2.3009749129414558e-02 - - 1.8750759959220886e-01 -6.2172628939151764e-02 - <_> - - 0 -1 811 -1.1061690002679825e-01 - - -2.1010109782218933e-01 7.2418609634041786e-03 - <_> - - 0 -1 812 -1.0646130144596100e-01 - - 3.7617880105972290e-01 -2.4961100891232491e-02 - <_> - - 0 -1 813 -3.5521229729056358e-03 - - 1.1204829812049866e-01 -3.1895328313112259e-02 - <_> - - 0 -1 814 -4.2262352071702480e-03 - - -3.7392550706863403e-01 2.4184040725231171e-02 - <_> - - 0 -1 815 6.2988628633320332e-03 - - 8.1449449062347412e-03 -1.8559670448303223e-01 - <_> - - 0 -1 816 2.7100159786641598e-03 - - -4.7996520996093750e-02 2.3121020197868347e-01 - <_> - - 0 -1 817 3.3773749601095915e-03 - - -9.4845660030841827e-02 5.0685029476881027e-02 - <_> - - 0 -1 818 -2.8979899361729622e-03 - - 1.2751890718936920e-01 -7.5084179639816284e-02 - <_> - - 0 -1 819 2.3524831049144268e-03 - - -4.1102841496467590e-02 5.9530649334192276e-02 - <_> - - 0 -1 820 7.7729858458042145e-03 - - 4.5494630932807922e-02 -2.1120029687881470e-01 - <_> - - 0 -1 821 -3.6903400905430317e-03 - - 1.1549659818410873e-01 -4.9121920019388199e-02 - <_> - - 0 -1 822 -9.3724876642227173e-03 - - -3.5917419195175171e-01 2.6274360716342926e-02 - <_> - - 0 -1 823 -1.7983719590120018e-04 - - 5.4064981639385223e-02 -5.1320828497409821e-02 - <_> - - 0 -1 824 -5.0172610208392143e-03 - - 1.3417109847068787e-01 -6.9252252578735352e-02 - <_> - - 0 -1 825 1.0011839913204312e-04 - - -4.9067988991737366e-02 6.4117558300495148e-02 - <_> - - 0 -1 826 8.1611080095171928e-03 - - 2.4682909250259399e-02 -3.8521420955657959e-01 - <_> - - 0 -1 827 -9.0656030806712806e-05 - - 9.8888702690601349e-02 -8.8233307003974915e-02 - <_> - - 0 -1 828 -4.5008701272308826e-03 - - 1.5800720453262329e-01 -5.7534229010343552e-02 - <_> - - 0 -1 829 1.9587080925703049e-02 - - -1.7980769276618958e-02 2.6230278611183167e-01 - <_> - - 0 -1 830 -2.9633310623466969e-03 - - 8.2995072007179260e-02 -1.2231569737195969e-01 - <_> - - 0 -1 831 1.0743290185928345e-02 - - 1.2482419610023499e-02 -3.4274709224700928e-01 - <_> - - 0 -1 832 -4.9855629913508892e-03 - - 1.3816909492015839e-01 -6.4010940492153168e-02 - <_> - - 0 -1 833 1.2566439807415009e-01 - - -1.7671900568529963e-03 1.0003019571304321e+00 - <_> - - 0 -1 834 2.3738740012049675e-02 - - 2.7755569666624069e-02 -3.6009928584098816e-01 - <_> - - 0 -1 835 -1.4753870200365782e-03 - - 1.5723270177841187e-01 -4.7080140560865402e-02 - <_> - - 0 -1 836 -1.2558279559016228e-04 - - 1.0315959900617599e-01 -8.4792517125606537e-02 - <_> - - 0 -1 837 1.2353599595371634e-04 - - -1.0267879813909531e-01 1.0298290103673935e-01 - <_> - - 0 -1 838 1.0993010364472866e-03 - - -7.2144910693168640e-02 1.6145619750022888e-01 - <_> - - 0 -1 839 -4.3352600932121277e-01 - - 2.6333650946617126e-01 -3.7169009447097778e-02 - <_> - - 0 -1 840 5.0879339687526226e-03 - - 3.4845910966396332e-02 -3.0750349164009094e-01 - <_> - - 0 -1 841 -1.3961529731750488e-01 - - 1.0710100084543228e-01 -4.6853039413690567e-02 - <_> - - 0 -1 842 9.6808090806007385e-02 - - 4.7895569354295731e-02 -2.0780010521411896e-01 - <_> - - 0 -1 843 -3.8298558443784714e-02 - - 3.2057020068168640e-01 -4.3165210634469986e-02 - <_> - - 0 -1 844 1.0037220083177090e-02 - - 3.0110519379377365e-02 -3.1479340791702271e-01 - <_> - - 0 -1 845 4.8312591388821602e-03 - - -5.7667169719934464e-02 1.4061050117015839e-01 - <_> - - 0 -1 846 -2.1472699940204620e-02 - - 1.5234650671482086e-01 -6.5562672913074493e-02 - <_> - 211 - -1.4944460391998291e+00 - - <_> - - 0 -1 847 -2.2243140637874603e-01 - - 2.2312499582767487e-01 -2.6396349072456360e-01 - <_> - - 0 -1 848 3.2376810908317566e-02 - - -5.1940750330686569e-02 1.0894130170345306e-01 - <_> - - 0 -1 849 -4.4717159122228622e-02 - - 2.0623689889907837e-01 -2.3611530661582947e-01 - <_> - - 0 -1 850 -3.2623540610074997e-02 - - 2.7237409353256226e-01 -6.6274151206016541e-02 - <_> - - 0 -1 851 -2.6925209909677505e-02 - - 3.1263470649719238e-01 -1.2983320653438568e-01 - <_> - - 0 -1 852 5.2859159186482430e-03 - - -1.9235099852085114e-01 1.6803570091724396e-01 - <_> - - 0 -1 853 2.2291530668735504e-01 - - -3.4413149952888489e-01 5.6544858962297440e-02 - <_> - - 0 -1 854 -1.7159320414066315e-02 - - 1.7324289679527283e-01 -5.5152550339698792e-02 - <_> - - 0 -1 855 -9.4694783911108971e-03 - - 1.8445380032062531e-01 -1.2914590537548065e-01 - <_> - - 0 -1 856 -1.2710930313915014e-03 - - 9.0124821290373802e-03 -2.7641639113426208e-02 - <_> - - 0 -1 857 8.4737753495573997e-03 - - 4.9679640680551529e-02 -4.6019071340560913e-01 - <_> - - 0 -1 858 4.5989021658897400e-02 - - -1.0000479966402054e-01 2.3884369432926178e-01 - <_> - - 0 -1 859 -1.0296510299667716e-04 - - 9.8898597061634064e-02 -1.9507980346679688e-01 - <_> - - 0 -1 860 -3.0870530754327774e-02 - - 3.7806090712547302e-01 -5.2301649004220963e-02 - <_> - - 0 -1 861 1.0105510242283344e-02 - - 4.1510879993438721e-02 -4.5916628837585449e-01 - <_> - - 0 -1 862 -3.2147150486707687e-03 - - -2.8180390596389771e-01 6.4971752464771271e-02 - <_> - - 0 -1 863 9.1434055939316750e-03 - - -6.3290692865848541e-02 3.1076049804687500e-01 - <_> - - 0 -1 864 1.3100530020892620e-02 - - 3.1325671821832657e-02 -4.4022560119628906e-01 - <_> - - 0 -1 865 -1.5001240186393261e-02 - - -3.3287960290908813e-01 4.4980511069297791e-02 - <_> - - 0 -1 866 1.3146589696407318e-01 - - 4.6440351754426956e-02 -3.9830890297889709e-01 - <_> - - 0 -1 867 -7.5358957983553410e-03 - - -3.9559870958328247e-01 3.6384049803018570e-02 - <_> - - 0 -1 868 1.1706859804689884e-02 - - 2.5723859667778015e-02 -3.8717350363731384e-01 - <_> - - 0 -1 869 1.1505650356411934e-02 - - -6.2695182859897614e-02 2.3504909873008728e-01 - <_> - - 0 -1 870 3.8508679717779160e-02 - - 1.3529039919376373e-02 -4.6797460317611694e-01 - <_> - - 0 -1 871 1.3592040166258812e-02 - - 4.7803930938243866e-02 -3.5141488909721375e-01 - <_> - - 0 -1 872 -1.9229929894208908e-02 - - 1.7745910584926605e-01 -5.9988129884004593e-02 - <_> - - 0 -1 873 -6.2505668029189110e-03 - - 2.0134179294109344e-01 -8.1581160426139832e-02 - <_> - - 0 -1 874 -1.8178259953856468e-02 - - 5.4905299097299576e-02 -4.3673731386661530e-02 - <_> - - 0 -1 875 -5.6842509657144547e-02 - - 1.4393079280853271e-01 -1.1943359673023224e-01 - <_> - - 0 -1 876 -2.4953780695796013e-02 - - 1.2545959651470184e-01 -6.5463587641716003e-02 - <_> - - 0 -1 877 -2.6323249563574791e-02 - - 2.2335560619831085e-01 -9.6750900149345398e-02 - <_> - - 0 -1 878 -2.7933349832892418e-02 - - 1.3253739476203918e-01 -1.2293589860200882e-01 - <_> - - 0 -1 879 -1.2998450256418437e-04 - - 7.1499042212963104e-02 -2.0235860347747803e-01 - <_> - - 0 -1 880 -9.2149457486812025e-05 - - 5.9155948460102081e-02 -1.4431430399417877e-01 - <_> - - 0 -1 881 -1.7388040199875832e-02 - - -3.3351859450340271e-01 3.9699219167232513e-02 - <_> - - 0 -1 882 -8.6862171883694828e-05 - - 5.7397030293941498e-02 -7.0616796612739563e-02 - <_> - - 0 -1 883 8.9044791820924729e-05 - - -1.0670109838247299e-01 1.4415599405765533e-01 - <_> - - 0 -1 884 9.6210632473230362e-03 - - 2.9006609693169594e-02 -4.2044961452484131e-01 - <_> - - 0 -1 885 -1.3927029795013368e-04 - - 7.7079556882381439e-02 -1.6374519467353821e-01 - <_> - - 0 -1 886 -3.0657060444355011e-02 - - -6.1427122354507446e-01 1.4103920198976994e-02 - <_> - - 0 -1 887 -4.7086398117244244e-03 - - 1.6230380535125732e-01 -8.8489651679992676e-02 - <_> - - 0 -1 888 1.0449769906699657e-02 - - 2.0908510312438011e-02 -5.7801717519760132e-01 - <_> - - 0 -1 889 -1.6580440104007721e-02 - - -3.2363709807395935e-01 3.6240901798009872e-02 - <_> - - 0 -1 890 -1.8138250336050987e-02 - - 1.0105939954519272e-01 -1.7580989748239517e-02 - <_> - - 0 -1 891 -7.6911728829145432e-03 - - 1.4427539706230164e-01 -9.5350138843059540e-02 - <_> - - 0 -1 892 -9.3184299767017365e-03 - - 8.8270977139472961e-02 -1.1901699751615524e-01 - <_> - - 0 -1 893 2.7095710858702660e-02 - - -6.6773496568202972e-02 2.2551900148391724e-01 - <_> - - 0 -1 894 2.5444820057600737e-03 - - 5.2423369139432907e-02 -1.5915879607200623e-01 - <_> - - 0 -1 895 -5.9284839779138565e-02 - - 2.7843329310417175e-01 -4.8978719860315323e-02 - <_> - - 0 -1 896 2.2457299754023552e-02 - - -6.6214859485626221e-02 1.9962659478187561e-01 - <_> - - 0 -1 897 3.1462030019611120e-03 - - -1.8244290351867676e-01 8.5549309849739075e-02 - <_> - - 0 -1 898 -7.0586092770099640e-02 - - -2.7667859196662903e-01 1.4894080348312855e-02 - <_> - - 0 -1 899 -8.0054822319652885e-05 - - 1.0879600048065186e-01 -1.0610870271921158e-01 - <_> - - 0 -1 900 -3.0580060556530952e-02 - - 1.0778079926967621e-01 -2.0585630089044571e-02 - <_> - - 0 -1 901 9.1068223118782043e-03 - - -4.5717220753431320e-02 3.2543709874153137e-01 - <_> - - 0 -1 902 5.0897640176117420e-03 - - 3.4051191061735153e-02 -3.5899510979652405e-01 - <_> - - 0 -1 903 -5.0143159925937653e-02 - - 3.1396710872650146e-01 -4.0979839861392975e-02 - <_> - - 0 -1 904 -1.0316399857401848e-02 - - -4.3923801183700562e-01 2.9322719201445580e-02 - <_> - - 0 -1 905 -5.7999929413199425e-03 - - 2.0461860299110413e-01 -5.8188889175653458e-02 - <_> - - 0 -1 906 3.5368890967220068e-03 - - 5.3520288318395615e-02 -2.1615199744701385e-01 - <_> - - 0 -1 907 -2.6618309784680605e-03 - - -3.8629740476608276e-01 3.1471978873014450e-02 - <_> - - 0 -1 908 3.1112500000745058e-03 - - -3.3582359552383423e-02 1.4472900331020355e-01 - <_> - - 0 -1 909 -6.1837960965931416e-03 - - -3.9847150444984436e-01 2.6712730526924133e-02 - <_> - - 0 -1 910 -9.6736097475513816e-05 - - 9.6591942012310028e-02 -7.6616533100605011e-02 - <_> - - 0 -1 911 9.8329477012157440e-02 - - 4.3741971254348755e-02 -2.5856900215148926e-01 - <_> - - 0 -1 912 2.0389869809150696e-02 - - -5.5230699479579926e-02 2.1881949901580811e-01 - <_> - - 0 -1 913 -7.8190360218286514e-03 - - -3.0988308787345886e-01 3.4586869180202484e-02 - <_> - - 0 -1 914 -5.9094849973917007e-02 - - 1.6294850409030914e-01 -6.3798002898693085e-02 - <_> - - 0 -1 915 -2.4365609884262085e-01 - - 1.7031520605087280e-01 -6.8715758621692657e-02 - <_> - - 0 -1 916 -3.0184438824653625e-01 - - -3.4642049670219421e-01 2.5085069239139557e-02 - <_> - - 0 -1 917 -1.2000049464404583e-03 - - 1.7887699604034424e-01 -6.0992758721113205e-02 - <_> - - 0 -1 918 -1.0535799711942673e-01 - - 5.4462939500808716e-02 -6.4320951700210571e-02 - <_> - - 0 -1 919 -2.4108510464429855e-02 - - -4.7865489125251770e-01 2.0613849163055420e-02 - <_> - - 0 -1 920 1.1989559978246689e-01 - - -1.3448059558868408e-02 4.8987388610839844e-01 - <_> - - 0 -1 921 -2.5708250701427460e-02 - - 1.3927629590034485e-01 -7.3621720075607300e-02 - <_> - - 0 -1 922 -4.3719869852066040e-01 - - -7.3239421844482422e-01 4.4073038734495640e-03 - <_> - - 0 -1 923 -7.9788602888584137e-02 - - 1.0349279642105103e-01 -1.0366749763488770e-01 - <_> - - 0 -1 924 -3.5169530659914017e-02 - - 5.8486729860305786e-02 -4.2844671756029129e-02 - <_> - - 0 -1 925 -1.7630029469728470e-02 - - 1.0138259828090668e-01 -1.0425739735364914e-01 - <_> - - 0 -1 926 -8.3025526255369186e-03 - - -4.4066068530082703e-01 2.1682849153876305e-02 - <_> - - 0 -1 927 -8.2851955667138100e-03 - - -4.8541179299354553e-01 2.0918089896440506e-02 - <_> - - 0 -1 928 7.9370345920324326e-03 - - 5.9423311613500118e-03 -4.1828221082687378e-01 - <_> - - 0 -1 929 -1.0507660044822842e-04 - - 7.6169930398464203e-02 -1.4411410689353943e-01 - <_> - - 0 -1 930 -2.1757930517196655e-02 - - 1.7152060568332672e-01 -2.9704490676522255e-02 - <_> - - 0 -1 931 1.2922010384500027e-02 - - 2.9204640537500381e-02 -3.2309919595718384e-01 - <_> - - 0 -1 932 1.6168419271707535e-02 - - -7.6147191226482391e-02 2.6088440418243408e-01 - <_> - - 0 -1 933 -1.5057939291000366e-01 - - 1.4852869510650635e-01 -7.0202209055423737e-02 - <_> - - 0 -1 934 -6.3427072763442993e-01 - - 3.4904581308364868e-01 -2.9892899096012115e-02 - <_> - - 0 -1 935 -1.1482870206236839e-02 - - 1.5068680047988892e-01 -6.9276407361030579e-02 - <_> - - 0 -1 936 -6.2928773462772369e-02 - - -5.9944522380828857e-01 6.5263039432466030e-03 - <_> - - 0 -1 937 -2.7896769344806671e-02 - - 3.1232240796089172e-01 -3.0732870101928711e-02 - <_> - - 0 -1 938 1.1286689899861813e-02 - - 1.4317009598016739e-02 -2.2894239425659180e-01 - <_> - - 0 -1 939 -3.8705959450453520e-03 - - 8.5102573037147522e-02 -1.1673109978437424e-01 - <_> - - 0 -1 940 -1.4275030232965946e-02 - - -2.0762340724468231e-01 1.8262609839439392e-02 - <_> - - 0 -1 941 -1.2816109694540501e-02 - - -2.8642359375953674e-01 3.5254720598459244e-02 - <_> - - 0 -1 942 4.9328650347888470e-03 - - -4.9868829548358917e-02 8.1233069300651550e-02 - <_> - - 0 -1 943 -8.6533632129430771e-03 - - 2.1703800559043884e-01 -4.6255528926849365e-02 - <_> - - 0 -1 944 1.3576580211520195e-02 - - -1.0879430174827576e-01 8.3670340478420258e-02 - <_> - - 0 -1 945 -4.2641188949346542e-02 - - -4.9992290139198303e-01 1.9083680585026741e-02 - <_> - - 0 -1 946 -3.7867110222578049e-02 - - -5.3069418668746948e-01 -2.1276540064718574e-04 - <_> - - 0 -1 947 -1.1035409756004810e-02 - - 2.2670739889144897e-01 -4.3859541416168213e-02 - <_> - - 0 -1 948 2.4298341013491154e-03 - - -3.4560989588499069e-02 1.5052950382232666e-01 - <_> - - 0 -1 949 1.3272870332002640e-02 - - 1.8622349947690964e-02 -4.7048270702362061e-01 - <_> - - 0 -1 950 -1.1064320278819650e-04 - - 9.6265792846679688e-02 -8.1750109791755676e-02 - <_> - - 0 -1 951 -2.3866009432822466e-03 - - 1.8094350397586823e-01 -4.9262270331382751e-02 - <_> - - 0 -1 952 -7.9415831714868546e-04 - - -1.6565640270709991e-01 2.4288009852170944e-02 - <_> - - 0 -1 953 -2.2455830127000809e-02 - - 1.9843299686908722e-01 -4.4509500265121460e-02 - <_> - - 0 -1 954 3.0328119173645973e-03 - - 2.7753420174121857e-02 -3.9394208788871765e-01 - <_> - - 0 -1 955 -9.1960644349455833e-03 - - -5.9172922372817993e-01 1.2525149621069431e-02 - <_> - - 0 -1 956 -3.9500650018453598e-02 - - -9.8541247844696045e-01 1.5248659765347838e-03 - <_> - - 0 -1 957 1.2567999772727489e-02 - - 2.0022910088300705e-02 -3.8397899270057678e-01 - <_> - - 0 -1 958 -9.2911832325626165e-05 - - 7.3141880333423615e-02 -6.7897647619247437e-02 - <_> - - 0 -1 959 3.2143931835889816e-02 - - -6.4257197082042694e-02 1.3723790645599365e-01 - <_> - - 0 -1 960 -1.8411510391160846e-03 - - -2.6820561289787292e-01 4.4881530106067657e-02 - <_> - - 0 -1 961 -5.5849379859864712e-03 - - 1.6651730239391327e-01 -5.5644121021032333e-02 - <_> - - 0 -1 962 1.2912580277770758e-03 - - 6.2142610549926758e-02 -2.7014490962028503e-01 - <_> - - 0 -1 963 1.0070719872601330e-04 - - -8.8493198156356812e-02 1.0002399981021881e-01 - <_> - - 0 -1 964 -4.2259409092366695e-03 - - -3.2037448883056641e-01 1.2218790128827095e-02 - <_> - - 0 -1 965 -1.4590879436582327e-04 - - 1.1364399641752243e-01 -9.4178639352321625e-02 - <_> - - 0 -1 966 5.3230789490044117e-03 - - 1.7175100743770599e-02 -2.2011129558086395e-01 - <_> - - 0 -1 967 -1.7821589484810829e-02 - - 1.4161479473114014e-01 -6.1871610581874847e-02 - <_> - - 0 -1 968 -3.5818900913000107e-02 - - 8.7859541177749634e-02 -3.8827799260616302e-02 - <_> - - 0 -1 969 4.9706641584634781e-03 - - -1.7065429687500000e-01 5.0853051245212555e-02 - <_> - - 0 -1 970 6.6589623689651489e-02 - - -2.3590439930558205e-02 3.6133819818496704e-01 - <_> - - 0 -1 971 -3.2721939682960510e-01 - - -3.5842499136924744e-01 2.5435820221900940e-02 - <_> - - 0 -1 972 -3.9326760917901993e-02 - - 4.7284521162509918e-02 -6.2605947256088257e-02 - <_> - - 0 -1 973 2.8017789125442505e-02 - - -3.3617768436670303e-02 2.7131238579750061e-01 - <_> - - 0 -1 974 -1.2500650249421597e-02 - - -4.7937780618667603e-01 7.0343599654734135e-03 - <_> - - 0 -1 975 5.7694758288562298e-03 - - 3.1953860074281693e-02 -2.6032549142837524e-01 - <_> - - 0 -1 976 -4.7707721590995789e-02 - - -4.9741709232330322e-01 1.3043950311839581e-02 - <_> - - 0 -1 977 3.5443119704723358e-02 - - -3.1736850738525391e-02 3.1976988911628723e-01 - <_> - - 0 -1 978 1.4040179550647736e-02 - - -3.3049471676349640e-02 7.0506528019905090e-02 - <_> - - 0 -1 979 2.3037919402122498e-01 - - 1.8883729353547096e-02 -4.3587929010391235e-01 - <_> - - 0 -1 980 -9.6582166850566864e-02 - - -7.1832108497619629e-01 9.9819665774703026e-04 - <_> - - 0 -1 981 -1.4366320334374905e-02 - - 1.4567980170249939e-01 -6.5572626888751984e-02 - <_> - - 0 -1 982 -7.1069528348743916e-03 - - 6.6373258829116821e-02 -2.0451290532946587e-02 - <_> - - 0 -1 983 8.4905643016099930e-03 - - -6.3891783356666565e-02 1.5739880502223969e-01 - <_> - - 0 -1 984 1.1191760003566742e-01 - - -2.8282059356570244e-02 2.9970058798789978e-01 - <_> - - 0 -1 985 1.2471539957914501e-04 - - -8.4956198930740356e-02 9.8341517150402069e-02 - <_> - - 0 -1 986 -1.3551780022680759e-02 - - -3.5027718544006348e-01 1.1073109693825245e-02 - <_> - - 0 -1 987 -1.2808430008590221e-02 - - -4.5078259706497192e-01 1.9789749756455421e-02 - <_> - - 0 -1 988 -3.9998371154069901e-02 - - -6.8415868282318115e-01 2.3409149143844843e-03 - <_> - - 0 -1 989 -1.4464680571109056e-03 - - 1.4939129352569580e-01 -5.2095100283622742e-02 - <_> - - 0 -1 990 -1.2429339811205864e-02 - - -1.5857979655265808e-01 8.9363977313041687e-03 - <_> - - 0 -1 991 -2.9783550649881363e-02 - - -6.9471049308776855e-01 1.1115159839391708e-02 - <_> - - 0 -1 992 -5.6329318322241306e-03 - - 1.4112220704555511e-01 -5.2758459001779556e-02 - <_> - - 0 -1 993 -6.5792538225650787e-03 - - -3.4625589847564697e-01 2.3270340636372566e-02 - <_> - - 0 -1 994 -9.0057790279388428e-02 - - 7.5973026454448700e-02 -2.9642039909958839e-02 - <_> - - 0 -1 995 -1.3072340190410614e-01 - - -3.2420840859413147e-01 2.7410000562667847e-02 - <_> - - 0 -1 996 9.8338117823004723e-03 - - -6.0853008180856705e-02 1.0065329819917679e-01 - <_> - - 0 -1 997 -1.2233830057084560e-02 - - 1.5252889692783356e-01 -5.2607860416173935e-02 - <_> - - 0 -1 998 -2.3421589285135269e-02 - - 1.0870900005102158e-01 -9.1985270380973816e-02 - <_> - - 0 -1 999 -8.4613403305411339e-03 - - 1.8257629871368408e-01 -4.7872170805931091e-02 - <_> - - 0 -1 1000 -5.2086021751165390e-03 - - -7.0401079952716827e-02 1.6041789203882217e-02 - <_> - - 0 -1 1001 -1.4447170309722424e-02 - - -4.1489130258560181e-01 1.9600320607423782e-02 - <_> - - 0 -1 1002 -1.7468390287831426e-03 - - -1.9475990533828735e-01 3.0956840142607689e-02 - <_> - - 0 -1 1003 -2.9236089903861284e-03 - - 1.6618309915065765e-01 -4.5732278376817703e-02 - <_> - - 0 -1 1004 -1.1378220515325665e-03 - - 1.3497720658779144e-01 -5.7737439870834351e-02 - <_> - - 0 -1 1005 -2.2203589323908091e-03 - - 9.6290342509746552e-02 -7.8362621366977692e-02 - <_> - - 0 -1 1006 7.3363608680665493e-04 - - -8.0939002335071564e-02 1.6864289343357086e-01 - <_> - - 0 -1 1007 -1.0410290269646794e-04 - - 9.7535729408264160e-02 -8.3381116390228271e-02 - <_> - - 0 -1 1008 -2.9475050978362560e-03 - - -2.1080949902534485e-01 2.0222319290041924e-02 - <_> - - 0 -1 1009 -8.3546721725724638e-05 - - 7.0981398224830627e-02 -1.0542409867048264e-01 - <_> - - 0 -1 1010 -3.2032128423452377e-02 - - 1.0082499682903290e-01 -3.6564670503139496e-02 - <_> - - 0 -1 1011 -2.7375599741935730e-01 - - -4.7556069493293762e-01 1.6102559864521027e-02 - <_> - - 0 -1 1012 1.1218780418857932e-03 - - 2.7350509539246559e-02 -9.6968427300453186e-02 - <_> - - 0 -1 1013 4.0910821408033371e-02 - - 2.0444039255380630e-02 -3.8385981321334839e-01 - <_> - - 0 -1 1014 1.0185709834331647e-04 - - -6.2665432691574097e-02 8.6711652576923370e-02 - <_> - - 0 -1 1015 8.8024331489577889e-05 - - -9.0517483651638031e-02 8.3377197384834290e-02 - <_> - - 0 -1 1016 -2.3895479738712311e-02 - - 1.2739649415016174e-01 -8.3965286612510681e-02 - <_> - - 0 -1 1017 2.2485909983515739e-02 - - -5.5055338889360428e-02 1.3913129270076752e-01 - <_> - - 0 -1 1018 4.1692931205034256e-02 - - -1.6963820904493332e-02 1.8453200161457062e-01 - <_> - - 0 -1 1019 -2.6616320013999939e-02 - - 1.5978839993476868e-01 -5.5901341140270233e-02 - <_> - - 0 -1 1020 -3.7673220038414001e-02 - - -5.6011748313903809e-01 7.0831510238349438e-03 - <_> - - 0 -1 1021 8.7794396677054465e-05 - - -8.2011356949806213e-02 9.4610482454299927e-02 - <_> - - 0 -1 1022 1.1703169438987970e-03 - - 3.3138789236545563e-02 -1.2254939973354340e-01 - <_> - - 0 -1 1023 -1.8461579456925392e-02 - - 1.1984329670667648e-01 -7.3555886745452881e-02 - <_> - - 0 -1 1024 -4.9685002304613590e-03 - - 1.5291570127010345e-01 -4.5049760490655899e-02 - <_> - - 0 -1 1025 9.4893397763371468e-03 - - 3.8226161152124405e-02 -2.0697419345378876e-01 - <_> - - 0 -1 1026 4.2636949568986893e-02 - - 4.7441869974136353e-03 -2.4128800630569458e-01 - <_> - - 0 -1 1027 1.2260899879038334e-02 - - -5.2345231175422668e-02 1.5391710400581360e-01 - <_> - - 0 -1 1028 -3.6220869515091181e-03 - - -3.1135520339012146e-01 2.7554929256439209e-02 - <_> - - 0 -1 1029 1.8543130136094987e-04 - - -1.3158130645751953e-01 5.8432999998331070e-02 - <_> - - 0 -1 1030 1.9817280117422342e-03 - - -1.5591939911246300e-02 7.9335182905197144e-02 - <_> - - 0 -1 1031 3.0786939896643162e-03 - - -3.9832580834627151e-02 2.0168849825859070e-01 - <_> - - 0 -1 1032 -4.9620792269706726e-03 - - 4.3630041182041168e-02 -1.6167530789971352e-02 - <_> - - 0 -1 1033 1.0100869985762984e-04 - - -1.0894899815320969e-01 6.6285558044910431e-02 - <_> - - 0 -1 1034 4.5535610988736153e-03 - - -2.5678759440779686e-02 2.5574589148163795e-02 - <_> - - 0 -1 1035 1.8472580239176750e-02 - - 4.5276731252670288e-02 -1.8895520269870758e-01 - <_> - - 0 -1 1036 -1.2821660493500531e-04 - - 6.5693907439708710e-02 -6.1557758599519730e-02 - <_> - - 0 -1 1037 -9.1399750090204179e-05 - - 9.4862386584281921e-02 -7.9766832292079926e-02 - <_> - - 0 -1 1038 1.9103009253740311e-02 - - -1.5823919326066971e-02 2.0067700743675232e-01 - <_> - - 0 -1 1039 3.2626159489154816e-02 - - 1.1280800215899944e-02 -6.2056678533554077e-01 - <_> - - 0 -1 1040 -3.7017529830336571e-03 - - 6.2841519713401794e-02 -2.3586150258779526e-02 - <_> - - 0 -1 1041 -1.7747739329934120e-02 - - -5.6140452623367310e-01 1.2981880456209183e-02 - <_> - - 0 -1 1042 5.9074100106954575e-02 - - -3.3294579479843378e-03 8.4481179714202881e-01 - <_> - - 0 -1 1043 -5.4828140884637833e-02 - - 5.5514711141586304e-01 -1.1694990098476410e-02 - <_> - - 0 -1 1044 1.0296080290572718e-04 - - -4.5484889298677444e-02 5.8925010263919830e-02 - <_> - - 0 -1 1045 -9.7072806966025382e-05 - - 9.6935607492923737e-02 -8.0250047147274017e-02 - <_> - - 0 -1 1046 5.8545041829347610e-03 - - 1.4835690148174763e-02 -3.5753148794174194e-01 - <_> - - 0 -1 1047 1.6329690115526319e-03 - - -4.4237900525331497e-02 1.6755719482898712e-01 - <_> - - 0 -1 1048 1.5812419354915619e-02 - - 7.1729267947375774e-03 -7.8497059643268585e-02 - <_> - - 0 -1 1049 -4.3562431819736958e-03 - - 2.5313070416450500e-01 -2.8974350541830063e-02 - <_> - - 0 -1 1050 3.5560280084609985e-02 - - 1.7037480138242245e-03 -4.0621849894523621e-01 - <_> - - 0 -1 1051 1.0531170293688774e-02 - - 2.9233150184154510e-02 -2.6782780885696411e-01 - <_> - - 0 -1 1052 3.1187709420919418e-02 - - 4.4837938621640205e-03 -1.9009509682655334e-01 - <_> - - 0 -1 1053 -2.3982839658856392e-02 - - -4.6067911386489868e-01 1.5553499571979046e-02 - <_> - - 0 -1 1054 4.7000840306282043e-02 - - -1.8269939348101616e-02 8.1415437161922455e-02 - <_> - - 0 -1 1055 2.6086059212684631e-01 - - -1.1339389719069004e-02 5.6355899572372437e-01 - <_> - - 0 -1 1056 -8.8318936526775360e-02 - - -7.1698242425918579e-01 5.8255391195416451e-03 - <_> - - 0 -1 1057 -3.1121359206736088e-03 - - 5.7725358754396439e-02 -1.2493800371885300e-01 - <_> - 209 - -1.5047789812088013e+00 - - <_> - - 0 -1 1058 2.8087180107831955e-02 - - -1.5413700044155121e-01 4.5727699995040894e-01 - <_> - - 0 -1 1059 -5.5903568863868713e-02 - - 3.6255109310150146e-01 -1.4866210520267487e-01 - <_> - - 0 -1 1060 -5.3916401229798794e-03 - - 1.1215359717607498e-01 -3.0657169222831726e-01 - <_> - - 0 -1 1061 -5.7490311563014984e-02 - - -3.7761840224266052e-01 6.6982932388782501e-02 - <_> - - 0 -1 1062 3.3081531524658203e-02 - - 8.9242622256278992e-02 -4.1101458668708801e-01 - <_> - - 0 -1 1063 -3.3971451222896576e-02 - - 1.7306150496006012e-01 -1.7985619604587555e-01 - <_> - - 0 -1 1064 6.0396149754524231e-02 - - -5.2139468491077423e-02 4.2019769549369812e-01 - <_> - - 0 -1 1065 -1.5026940032839775e-02 - - 3.3774340152740479e-01 -9.3563601374626160e-02 - <_> - - 0 -1 1066 1.1687699705362320e-02 - - 8.5324212908744812e-02 -3.3287081122398376e-01 - <_> - - 0 -1 1067 -4.4202590361237526e-03 - - 3.0262300372123718e-01 -7.3225647211074829e-02 - <_> - - 0 -1 1068 9.8442351445555687e-03 - - 6.7588306963443756e-02 -3.6280980706214905e-01 - <_> - - 0 -1 1069 6.5739490091800690e-03 - - -6.6520340740680695e-02 3.6753880977630615e-01 - <_> - - 0 -1 1070 -1.2470779940485954e-02 - - 1.3371619582176208e-01 -1.3606360554695129e-01 - <_> - - 0 -1 1071 -8.7947519205044955e-05 - - 7.0185787975788116e-02 -7.1383133530616760e-02 - <_> - - 0 -1 1072 -4.1784630157053471e-03 - - 3.3897310495376587e-01 -6.0283429920673370e-02 - <_> - - 0 -1 1073 -1.0158100165426731e-02 - - -4.3232920765876770e-01 2.9709020629525185e-02 - <_> - - 0 -1 1074 -2.5939870625734329e-02 - - 2.9187950491905212e-01 -5.8434039354324341e-02 - <_> - - 0 -1 1075 1.6638180240988731e-02 - - -7.7353350818157196e-02 2.3780930042266846e-01 - <_> - - 0 -1 1076 1.4849379658699036e-03 - - 8.9698158204555511e-02 -2.0726980268955231e-01 - <_> - - 0 -1 1077 2.4323889985680580e-02 - - 4.6134989708662033e-02 -2.3631970584392548e-01 - <_> - - 0 -1 1078 7.4536320753395557e-03 - - 5.6870579719543457e-02 -2.9884359240531921e-01 - <_> - - 0 -1 1079 2.7136409655213356e-02 - - 3.3143240958452225e-02 -2.6137140393257141e-01 - <_> - - 0 -1 1080 -3.9215758442878723e-02 - - -4.2938810586929321e-01 3.9842639118432999e-02 - <_> - - 0 -1 1081 2.6724360883235931e-02 - - -1.0130269825458527e-01 1.5306079387664795e-01 - <_> - - 0 -1 1082 -7.7838180586695671e-03 - - -5.0431340932846069e-01 3.2204821705818176e-02 - <_> - - 0 -1 1083 3.1347721815109253e-02 - - -5.2811268717050552e-02 3.2771229743957520e-01 - <_> - - 0 -1 1084 5.1572020165622234e-03 - - 3.9264280349016190e-02 -4.0240189433097839e-01 - <_> - - 0 -1 1085 1.9256999716162682e-02 - - 3.3628650009632111e-02 -3.6241069436073303e-01 - <_> - - 0 -1 1086 1.7587229609489441e-02 - - -5.1554750651121140e-02 2.7599188685417175e-01 - <_> - - 0 -1 1087 -9.7410473972558975e-03 - - 2.3560559749603271e-01 -6.0343839228153229e-02 - <_> - - 0 -1 1088 -1.1508379975566640e-04 - - 6.9393739104270935e-02 -2.0505240559577942e-01 - <_> - - 0 -1 1089 -1.3304370641708374e-01 - - -3.9202588796615601e-01 3.1970690935850143e-02 - <_> - - 0 -1 1090 -4.7447659075260162e-02 - - -3.5722380876541138e-01 3.7217479199171066e-02 - <_> - - 0 -1 1091 -4.1948170401155949e-03 - - 1.3637860119342804e-01 -6.9371573626995087e-02 - <_> - - 0 -1 1092 -3.9906660094857216e-03 - - 1.4928449690341949e-01 -8.0571353435516357e-02 - <_> - - 0 -1 1093 -8.4894258179701865e-05 - - 8.8759668171405792e-02 -7.9379200935363770e-02 - <_> - - 0 -1 1094 -4.1100149246631190e-05 - - 1.2289889901876450e-01 -1.0322090238332748e-01 - <_> - - 0 -1 1095 1.4727080240845680e-02 - - 1.9744509831070900e-02 -3.6746519804000854e-01 - <_> - - 0 -1 1096 -8.5327234119176865e-03 - - -3.6299398541450500e-01 3.1131930649280548e-02 - <_> - - 0 -1 1097 -1.6553919762372971e-02 - - 1.0105790197849274e-01 -1.5329389274120331e-01 - <_> - - 0 -1 1098 -1.2337979860603809e-02 - - -4.6292439103126526e-01 2.2736590355634689e-02 - <_> - - 0 -1 1099 -3.6450990010052919e-03 - - 4.2629018425941467e-02 -1.3781179487705231e-01 - <_> - - 0 -1 1100 1.2839140370488167e-02 - - -4.1048280894756317e-02 4.3761840462684631e-01 - <_> - - 0 -1 1101 -9.3080453574657440e-02 - - 2.2917859256267548e-01 -5.0032921135425568e-02 - <_> - - 0 -1 1102 2.1762320771813393e-02 - - -5.0271000713109970e-02 2.2881449759006500e-01 - <_> - - 0 -1 1103 1.7361560836434364e-02 - - 2.5310549885034561e-02 -2.6760739088058472e-01 - <_> - - 0 -1 1104 -1.3084709644317627e-02 - - -2.9774340987205505e-01 4.3805930763483047e-02 - <_> - - 0 -1 1105 -8.4787927335128188e-05 - - 7.4056796729564667e-02 -1.1382059752941132e-01 - <_> - - 0 -1 1106 -5.2169840782880783e-03 - - 1.2962180376052856e-01 -8.9122071862220764e-02 - <_> - - 0 -1 1107 5.5256679654121399e-02 - - -1.6715130209922791e-01 4.9011368304491043e-02 - <_> - - 0 -1 1108 -1.0899559594690800e-02 - - 1.7473630607128143e-01 -6.5568633377552032e-02 - <_> - - 0 -1 1109 1.4722730033099651e-02 - - 2.1222619339823723e-02 -3.6853900551795959e-01 - <_> - - 0 -1 1110 3.0714910477399826e-02 - - -4.7032870352268219e-02 2.2777770459651947e-01 - <_> - - 0 -1 1111 -6.8415720015764236e-03 - - -2.5939539074897766e-01 2.4496970698237419e-02 - <_> - - 0 -1 1112 1.7822159454226494e-02 - - -7.9186916351318359e-02 1.4894349873065948e-01 - <_> - - 0 -1 1113 2.8468179516494274e-03 - - -3.7116099148988724e-02 1.6393619775772095e-01 - <_> - - 0 -1 1114 -1.3656679540872574e-02 - - -3.9892640709877014e-01 2.6514330878853798e-02 - <_> - - 0 -1 1115 -1.2483780086040497e-01 - - -3.8755100965499878e-01 8.9756725355982780e-03 - <_> - - 0 -1 1116 -4.3433021346572787e-05 - - 1.1973830312490463e-01 -8.5467711091041565e-02 - <_> - - 0 -1 1117 -2.1456810645759106e-03 - - 2.0692780613899231e-01 -5.0187058746814728e-02 - <_> - - 0 -1 1118 -9.6643620054237545e-05 - - 1.0034500062465668e-01 -1.1663100123405457e-01 - <_> - - 0 -1 1119 -4.7470871359109879e-03 - - -4.4494819641113281e-01 1.9583249464631081e-02 - <_> - - 0 -1 1120 -2.2244181018322706e-03 - - 1.9856449961662292e-01 -5.5820390582084656e-02 - <_> - - 0 -1 1121 3.7989660631865263e-03 - - 3.6714699119329453e-02 -2.9941511154174805e-01 - <_> - - 0 -1 1122 -5.7312021963298321e-03 - - -5.2832037210464478e-01 1.8550330772995949e-02 - <_> - - 0 -1 1123 -2.5910209864377975e-02 - - 2.8764611482620239e-01 -3.8489770144224167e-02 - <_> - - 0 -1 1124 -9.6947006881237030e-02 - - -5.9902548789978027e-01 1.8979549407958984e-02 - <_> - - 0 -1 1125 -5.4922740906476974e-02 - - 7.1482129395008087e-02 -1.0858479887247086e-01 - <_> - - 0 -1 1126 -2.7080800384283066e-02 - - 1.8649069964885712e-01 -5.9568218886852264e-02 - <_> - - 0 -1 1127 5.0297360867261887e-03 - - 3.3363129943609238e-02 -3.0831581354141235e-01 - <_> - - 0 -1 1128 3.3542269375175238e-03 - - -5.4571229964494705e-02 2.2534120082855225e-01 - <_> - - 0 -1 1129 1.2667280388996005e-03 - - -1.7840330302715302e-01 3.4346438944339752e-02 - <_> - - 0 -1 1130 1.1339919641613960e-02 - - 2.6406589895486832e-02 -3.8119348883628845e-01 - <_> - - 0 -1 1131 9.1608919319696724e-05 - - -1.0066139698028564e-01 8.7170496582984924e-02 - <_> - - 0 -1 1132 7.8464552643708885e-05 - - -1.0216680169105530e-01 1.0109920054674149e-01 - <_> - - 0 -1 1133 7.5286210631020367e-05 - - -5.6061439216136932e-02 5.8424450457096100e-02 - <_> - - 0 -1 1134 -2.6337830349802971e-03 - - 1.7215870320796967e-01 -5.7880070060491562e-02 - <_> - - 0 -1 1135 6.3031561672687531e-02 - - -1.9201409071683884e-02 2.7799960970878601e-01 - <_> - - 0 -1 1136 -2.3219529539346695e-02 - - 1.0284779965877533e-01 -9.8239988088607788e-02 - <_> - - 0 -1 1137 -9.0258438140153885e-03 - - 2.2167690098285675e-02 -8.2948818802833557e-02 - <_> - - 0 -1 1138 3.8732189685106277e-02 - - -2.8826160356402397e-02 3.4773069620132446e-01 - <_> - - 0 -1 1139 -4.7702491283416748e-02 - - -6.7103427648544312e-01 1.6573669388890266e-02 - <_> - - 0 -1 1140 -1.2847820296883583e-02 - - -3.8643950223922729e-01 2.0033469423651695e-02 - <_> - - 0 -1 1141 5.7381160557270050e-02 - - -1.1463870294392109e-02 2.6734361052513123e-01 - <_> - - 0 -1 1142 -1.0621190071105957e-02 - - -3.1218948960304260e-01 2.8248360380530357e-02 - <_> - - 0 -1 1143 -1.3676609843969345e-02 - - -1.2689730525016785e-01 8.6436048150062561e-03 - <_> - - 0 -1 1144 4.3348008766770363e-03 - - 5.1033958792686462e-02 -1.7394079267978668e-01 - <_> - - 0 -1 1145 7.5991630554199219e-02 - - -2.3328589275479317e-02 4.2845860123634338e-01 - <_> - - 0 -1 1146 1.3098600320518017e-02 - - -2.4747660383582115e-02 3.3785021305084229e-01 - <_> - - 0 -1 1147 -3.5736020654439926e-02 - - 3.7913449108600616e-02 -5.3559090942144394e-02 - <_> - - 0 -1 1148 1.0628229938447475e-04 - - -8.4522321820259094e-02 1.0640759766101837e-01 - <_> - - 0 -1 1149 2.1813490893691778e-03 - - 4.0383778512477875e-02 -1.9148570299148560e-01 - <_> - - 0 -1 1150 -9.4492107629776001e-02 - - 2.0704220235347748e-01 -4.4048219919204712e-02 - <_> - - 0 -1 1151 -1.3529360294342041e-01 - - -2.6852059364318848e-01 5.2231121808290482e-03 - <_> - - 0 -1 1152 -1.2129560112953186e-01 - - 9.0266220271587372e-02 -9.2542663216590881e-02 - <_> - - 0 -1 1153 -2.3765969090163708e-03 - - 8.2525849342346191e-02 -3.1835190951824188e-02 - <_> - - 0 -1 1154 1.2632180005311966e-02 - - -4.9935780465602875e-02 1.8270030617713928e-01 - <_> - - 0 -1 1155 3.7632249295711517e-03 - - 1.4996149577200413e-02 -1.3626490533351898e-01 - <_> - - 0 -1 1156 -4.1556770156603307e-05 - - 7.4878826737403870e-02 -1.1227519810199738e-01 - <_> - - 0 -1 1157 -6.9654630497097969e-03 - - 1.6071209311485291e-01 -5.4801609367132187e-02 - <_> - - 0 -1 1158 -4.2004981078207493e-03 - - -2.9972600936889648e-01 2.8893660753965378e-02 - <_> - - 0 -1 1159 -1.9440690521150827e-03 - - 1.2529659271240234e-01 -3.5508431494235992e-02 - <_> - - 0 -1 1160 -8.9434572146274149e-05 - - 9.8911896347999573e-02 -8.5844233632087708e-02 - <_> - - 0 -1 1161 9.9513839813880622e-05 - - -4.1452258825302124e-02 5.4522711783647537e-02 - <_> - - 0 -1 1162 -8.9198641944676638e-05 - - 7.3228873312473297e-02 -1.2978109717369080e-01 - <_> - - 0 -1 1163 5.7081338018178940e-03 - - -7.0425257086753845e-02 1.4262980222702026e-01 - <_> - - 0 -1 1164 -9.4857633113861084e-02 - - 2.3310409486293793e-01 -3.7148199975490570e-02 - <_> - - 0 -1 1165 2.8471320867538452e-02 - - -4.8538058996200562e-02 3.5143539309501648e-01 - <_> - - 0 -1 1166 4.1401110589504242e-02 - - -1.8223199993371964e-02 3.9729571342468262e-01 - <_> - - 0 -1 1167 -2.8941810131072998e-02 - - -2.2416530549526215e-01 1.4477049931883812e-02 - <_> - - 0 -1 1168 4.3586310930550098e-03 - - 4.5635841786861420e-02 -1.8632480502128601e-01 - <_> - - 0 -1 1169 -7.3322281241416931e-02 - - -1.9238489866256714e-01 1.2455330230295658e-02 - <_> - - 0 -1 1170 1.9518200308084488e-02 - - -2.0500229671597481e-02 4.1983589529991150e-01 - <_> - - 0 -1 1171 3.9780829101800919e-03 - - -4.5975688844919205e-02 1.0321869701147079e-01 - <_> - - 0 -1 1172 -9.7237170848529786e-05 - - 1.0506830364465714e-01 -8.7533041834831238e-02 - <_> - - 0 -1 1173 8.7185493612196296e-05 - - -6.2952272593975067e-02 7.8699469566345215e-02 - <_> - - 0 -1 1174 2.6201619766652584e-03 - - 2.9076900333166122e-02 -3.1879830360412598e-01 - <_> - - 0 -1 1175 6.8807557225227356e-02 - - -6.5168988658115268e-04 -7.2238290309906006e-01 - <_> - - 0 -1 1176 -6.4465478062629700e-02 - - 4.3315869569778442e-01 -2.1786129102110863e-02 - <_> - - 0 -1 1177 8.7852329015731812e-03 - - -5.7266969233751297e-02 7.7373459935188293e-02 - <_> - - 0 -1 1178 -1.5497979708015919e-02 - - 1.7337580025196075e-01 -5.8008719235658646e-02 - <_> - - 0 -1 1179 -2.2943260148167610e-02 - - 6.9100983440876007e-02 -4.1808031499385834e-02 - <_> - - 0 -1 1180 -8.2105891779065132e-03 - - -2.7963161468505859e-01 2.9525220394134521e-02 - <_> - - 0 -1 1181 -3.3475670963525772e-02 - - 1.1038400232791901e-01 -3.3238198608160019e-02 - <_> - - 0 -1 1182 8.7814498692750931e-03 - - -8.9171886444091797e-02 8.7001636624336243e-02 - <_> - - 0 -1 1183 3.4709158539772034e-01 - - -4.8120681196451187e-02 1.8035539984703064e-01 - <_> - - 0 -1 1184 -1.0401030158391222e-04 - - 9.4648033380508423e-02 -8.3219513297080994e-02 - <_> - - 0 -1 1185 -2.7705188840627670e-03 - - 1.5773800015449524e-01 -2.5001129135489464e-02 - <_> - - 0 -1 1186 -8.6398613348137587e-05 - - 7.1280792355537415e-02 -1.4600040018558502e-01 - <_> - - 0 -1 1187 -2.6759049296379089e-01 - - 1.2558859586715698e-01 -3.8995288312435150e-02 - <_> - - 0 -1 1188 -2.4231130257248878e-02 - - 8.8422782719135284e-02 -9.3978613615036011e-02 - <_> - - 0 -1 1189 1.0885329917073250e-02 - - -4.1272029280662537e-02 2.5976330041885376e-01 - <_> - - 0 -1 1190 2.1032560616731644e-02 - - -4.3483361601829529e-02 1.8442779779434204e-01 - <_> - - 0 -1 1191 -4.2315269820392132e-03 - - 1.2188120186328888e-01 -7.7749006450176239e-02 - <_> - - 0 -1 1192 -1.5873130410909653e-02 - - 1.0431399941444397e-01 -8.4082178771495819e-02 - <_> - - 0 -1 1193 -1.9862418994307518e-03 - - 3.7543788552284241e-02 -4.8584461212158203e-02 - <_> - - 0 -1 1194 7.8583601862192154e-05 - - -8.0581262707710266e-02 1.0911089926958084e-01 - <_> - - 0 -1 1195 2.9601699206978083e-03 - - 2.4551110342144966e-02 -3.3558800816535950e-01 - <_> - - 0 -1 1196 -9.5016136765480042e-02 - - -5.9915632009506226e-01 1.1551329866051674e-02 - <_> - - 0 -1 1197 1.1362539953552186e-04 - - -8.6923167109489441e-02 9.3489281833171844e-02 - <_> - - 0 -1 1198 -9.8137762397527695e-03 - - 7.6431483030319214e-02 -1.0938859730958939e-01 - <_> - - 0 -1 1199 9.8380893177818507e-05 - - -6.6263832151889801e-02 8.1618256866931915e-02 - <_> - - 0 -1 1200 2.2226599976420403e-03 - - 3.1717978417873383e-02 -2.4636030197143555e-01 - <_> - - 0 -1 1201 2.3853180464357138e-03 - - -2.7855399996042252e-02 1.2080640345811844e-01 - <_> - - 0 -1 1202 -3.9457518607378006e-02 - - -3.5027569532394409e-01 2.1213570609688759e-02 - <_> - - 0 -1 1203 -7.9605240898672491e-05 - - 8.8247403502464294e-02 -5.9798751026391983e-02 - <_> - - 0 -1 1204 -2.2772089578211308e-03 - - 1.8961960077285767e-01 -3.7514250725507736e-02 - <_> - - 0 -1 1205 2.0586390048265457e-02 - - 2.7481140568852425e-02 -8.0342061817646027e-02 - <_> - - 0 -1 1206 -7.4273057281970978e-02 - - -3.3686059713363647e-01 2.1948199719190598e-02 - <_> - - 0 -1 1207 1.8075270578265190e-02 - - -2.1912610158324242e-02 2.0319029688835144e-01 - <_> - - 0 -1 1208 -1.4953720383346081e-02 - - -2.6559591293334961e-01 2.6371410116553307e-02 - <_> - - 0 -1 1209 -4.8192208632826805e-03 - - 1.6707129776477814e-01 -1.4215789735317230e-02 - <_> - - 0 -1 1210 3.6314369936008006e-05 - - -7.7198803424835205e-02 1.0186760127544403e-01 - <_> - - 0 -1 1211 -8.3623798564076424e-03 - - -1.6067409515380859e-01 1.5523280017077923e-02 - <_> - - 0 -1 1212 2.3804600350558758e-03 - - 5.8899540454149246e-02 -1.3108530640602112e-01 - <_> - - 0 -1 1213 1.6680910484865308e-03 - - 3.0969940125942230e-02 -2.2598870098590851e-01 - <_> - - 0 -1 1214 1.5265520196408033e-03 - - -4.9240689724683762e-02 2.0791269838809967e-01 - <_> - - 0 -1 1215 1.4575149863958359e-02 - - -3.6837290972471237e-02 1.0154440253973007e-01 - <_> - - 0 -1 1216 -7.6943649910390377e-03 - - 1.5710060298442841e-01 -5.7826489210128784e-02 - <_> - - 0 -1 1217 -9.0497516794130206e-05 - - 4.7573201358318329e-02 -1.6521500051021576e-01 - <_> - - 0 -1 1218 -2.2794010117650032e-02 - - -2.5973218679428101e-01 2.6559799909591675e-02 - <_> - - 0 -1 1219 -9.0023465454578400e-03 - - 4.1206229478120804e-02 -2.2416520863771439e-02 - <_> - - 0 -1 1220 6.7992340773344040e-03 - - -3.9371181279420853e-02 1.7100240290164948e-01 - <_> - - 0 -1 1221 -4.3460330925881863e-03 - - 6.0964401811361313e-02 -2.0817179232835770e-02 - <_> - - 0 -1 1222 -3.7276789080351591e-03 - - 1.2307090312242508e-01 -5.8938860893249512e-02 - <_> - - 0 -1 1223 -8.4070830780547112e-05 - - 1.3861919939517975e-01 -8.2764759659767151e-02 - <_> - - 0 -1 1224 1.1763629736378789e-03 - - 5.0358530133962631e-02 -1.5933729708194733e-01 - <_> - - 0 -1 1225 5.5893128737807274e-03 - - 7.0979949086904526e-03 -5.8028382062911987e-01 - <_> - - 0 -1 1226 -1.0127289715455845e-04 - - 8.3265759050846100e-02 -8.2378573715686798e-02 - <_> - - 0 -1 1227 -2.4464890360832214e-02 - - -8.7221837043762207e-01 1.3292940566316247e-03 - <_> - - 0 -1 1228 -4.4401640479918569e-05 - - 5.6002810597419739e-02 -1.5147769451141357e-01 - <_> - - 0 -1 1229 5.7037789374589920e-02 - - 5.0832000561058521e-03 -1.1047369986772537e-01 - <_> - - 0 -1 1230 2.0243139937520027e-02 - - -4.9084380269050598e-02 1.5443739295005798e-01 - <_> - - 0 -1 1231 9.7376257181167603e-03 - - -1.9700789824128151e-02 5.2151169627904892e-02 - <_> - - 0 -1 1232 -1.5008449554443359e-02 - - 1.4697140455245972e-01 -5.0271861255168915e-02 - <_> - - 0 -1 1233 -2.1046690642833710e-02 - - -3.6531120538711548e-01 1.7672160640358925e-02 - <_> - - 0 -1 1234 9.5258541405200958e-03 - - 1.5648230910301208e-02 -4.0153148770332336e-01 - <_> - - 0 -1 1235 -2.2794330492615700e-02 - - 2.9926788806915283e-01 -2.3447409272193909e-02 - <_> - - 0 -1 1236 -7.8630357980728149e-02 - - -6.5496569871902466e-01 1.0836719535291195e-02 - <_> - - 0 -1 1237 9.5926318317651749e-03 - - 1.5389059670269489e-02 -3.6421850323677063e-01 - <_> - - 0 -1 1238 -2.7699070051312447e-03 - - 1.9490230083465576e-01 -3.2363388687372208e-02 - <_> - - 0 -1 1239 -1.1783170339185745e-04 - - 6.4062900841236115e-02 -4.3425600975751877e-02 - <_> - - 0 -1 1240 -2.1889989729970694e-03 - - -2.6822608709335327e-01 2.5960480794310570e-02 - <_> - - 0 -1 1241 -5.6854140013456345e-02 - - -6.9606697559356689e-01 5.1044360734522343e-03 - <_> - - 0 -1 1242 2.1522639691829681e-01 - - -1.1709770187735558e-02 5.6467902660369873e-01 - <_> - - 0 -1 1243 -2.0456990227103233e-02 - - 3.6347669363021851e-01 -3.6606830544769764e-03 - <_> - - 0 -1 1244 7.7381962910294533e-05 - - -1.1122140288352966e-01 5.8982748538255692e-02 - <_> - - 0 -1 1245 4.1361998766660690e-02 - - -5.1151089370250702e-02 3.9524771273136139e-02 - <_> - - 0 -1 1246 -9.8949691164307296e-05 - - 1.0554169863462448e-01 -7.2439141571521759e-02 - <_> - - 0 -1 1247 1.8021840602159500e-02 - - 1.4994920231401920e-02 -1.4176709949970245e-01 - <_> - - 0 -1 1248 8.2080148160457611e-02 - - 2.3314690217375755e-02 -2.8175860643386841e-01 - <_> - - 0 -1 1249 -1.0621119872666895e-04 - - 6.2869526445865631e-02 -6.1158828437328339e-02 - <_> - - 0 -1 1250 -7.9379147791769356e-05 - - 8.7550431489944458e-02 -8.2194067537784576e-02 - <_> - - 0 -1 1251 5.5925888009369373e-03 - - 3.7611849606037140e-02 -1.9585789740085602e-01 - <_> - - 0 -1 1252 2.2940209601074457e-03 - - -4.4044021517038345e-02 1.6968269646167755e-01 - <_> - - 0 -1 1253 -4.0604019165039062e-01 - - 1.7274110019207001e-01 -1.6850609332323074e-02 - <_> - - 0 -1 1254 4.1022609919309616e-02 - - -4.5638781040906906e-02 1.5800049901008606e-01 - <_> - - 0 -1 1255 -1.4138690195977688e-02 - - 6.5703168511390686e-02 -5.7085040956735611e-02 - <_> - - 0 -1 1256 6.9438129663467407e-02 - - 2.2782269865274429e-02 -3.2717821002006531e-01 - <_> - - 0 -1 1257 4.5383367687463760e-03 - - -1.6410829499363899e-02 1.9021320343017578e-01 - <_> - - 0 -1 1258 -7.3475250974297523e-03 - - 1.5832969546318054e-01 -4.1667878627777100e-02 - <_> - - 0 -1 1259 -2.8285540174692869e-03 - - 6.7029163241386414e-02 -4.5508660376071930e-02 - <_> - - 0 -1 1260 9.2704901471734047e-03 - - -5.2456460893154144e-02 1.5916010737419128e-01 - <_> - - 0 -1 1261 7.3743790388107300e-02 - - 2.7622079942375422e-03 -5.8930927515029907e-01 - <_> - - 0 -1 1262 -7.9017343523446470e-05 - - 5.8952510356903076e-02 -1.0288809984922409e-01 - <_> - - 0 -1 1263 -1.1446610005805269e-04 - - 6.6440522670745850e-02 -6.6069446504116058e-02 - <_> - - 0 -1 1264 -8.8836946815717965e-05 - - 8.7505243718624115e-02 -7.1942538022994995e-02 - <_> - - 0 -1 1265 8.6307860328815877e-05 - - -6.2407039105892181e-02 8.5861496627330780e-02 - <_> - - 0 -1 1266 2.8763279260601848e-05 - - -7.2714872658252716e-02 8.1864006817340851e-02 - <_> - 300 - -1.4390770196914673e+00 - - <_> - - 0 -1 1267 -2.7320239692926407e-02 - - 3.2964909076690674e-01 -1.7424769699573517e-01 - <_> - - 0 -1 1268 -1.2693449854850769e-01 - - 1.9988879561424255e-01 -1.8093200027942657e-01 - <_> - - 0 -1 1269 -5.8230119757354259e-03 - - 1.3379770517349243e-01 -2.9584899544715881e-01 - <_> - - 0 -1 1270 -1.0102219879627228e-02 - - 3.0932119488716125e-01 -1.0596410371363163e-02 - <_> - - 0 -1 1271 -6.1621540226042271e-03 - - 2.6765128970146179e-01 -1.1746490001678467e-01 - <_> - - 0 -1 1272 1.5751619637012482e-01 - - -4.4081759452819824e-01 2.5278929620981216e-02 - <_> - - 0 -1 1273 -1.1121460236608982e-02 - - 2.2672709822654724e-01 -1.2998679280281067e-01 - <_> - - 0 -1 1274 1.8185679614543915e-01 - - 2.7329839766025543e-02 -2.9153040051460266e-01 - <_> - - 0 -1 1275 -1.2944860383868217e-02 - - 9.6943646669387817e-02 -1.6887310147285461e-01 - <_> - - 0 -1 1276 -2.1488919854164124e-02 - - -2.9174751043319702e-01 2.2947270423173904e-02 - <_> - - 0 -1 1277 1.9648829475045204e-02 - - -1.5948629379272461e-01 1.0274410247802734e-01 - <_> - - 0 -1 1278 -2.0773630589246750e-02 - - 3.1656980514526367e-02 -2.1503049880266190e-02 - <_> - - 0 -1 1279 3.9682849310338497e-03 - - -2.1936699748039246e-01 7.8478358685970306e-02 - <_> - - 0 -1 1280 3.0420809984207153e-02 - - 1.0165469720959663e-02 -3.0965119600296021e-01 - <_> - - 0 -1 1281 -1.0891959816217422e-01 - - 1.2353190034627914e-01 -1.2826040387153625e-01 - <_> - - 0 -1 1282 7.3761628009378910e-03 - - -7.4341319501399994e-02 1.8419550359249115e-01 - <_> - - 0 -1 1283 8.1076346337795258e-02 - - -7.7455572783946991e-02 2.2572399675846100e-01 - <_> - - 0 -1 1284 -1.1007470078766346e-02 - - -2.9864379763603210e-01 3.6562368273735046e-02 - <_> - - 0 -1 1285 7.6382579281926155e-03 - - 3.0265279114246368e-02 -4.0436980128288269e-01 - <_> - - 0 -1 1286 -3.9173129945993423e-02 - - 3.6285480856895447e-01 -3.6153119057416916e-02 - <_> - - 0 -1 1287 -3.8692470639944077e-02 - - -3.6894500255584717e-01 4.1328370571136475e-02 - <_> - - 0 -1 1288 7.3556299321353436e-03 - - 1.4625470153987408e-02 -4.2549151182174683e-01 - <_> - - 0 -1 1289 -3.3073050435632467e-03 - - 1.8068400025367737e-01 -6.9157406687736511e-02 - <_> - - 0 -1 1290 1.6253300418611616e-04 - - -6.8862676620483398e-02 5.1595509052276611e-02 - <_> - - 0 -1 1291 -9.4225285574793816e-03 - - -5.4762011766433716e-01 2.1833010017871857e-02 - <_> - - 0 -1 1292 -8.5778563516214490e-05 - - 3.3158481121063232e-02 -2.9057880863547325e-02 - <_> - - 0 -1 1293 -1.2468020431697369e-02 - - -4.0364319086074829e-01 3.3987078815698624e-02 - <_> - - 0 -1 1294 3.3008489757776260e-02 - - 7.6816817745566368e-03 -5.0423312187194824e-01 - <_> - - 0 -1 1295 1.0868630371987820e-02 - - 4.5615401118993759e-02 -2.5677078962326050e-01 - <_> - - 0 -1 1296 -8.4409132599830627e-02 - - -3.1029421091079712e-01 4.6273539774119854e-03 - <_> - - 0 -1 1297 -9.3027371913194656e-03 - - 8.4993101656436920e-02 -1.4124239981174469e-01 - <_> - - 0 -1 1298 9.2303037643432617e-02 - - 7.9931216314435005e-03 -4.2582070827484131e-01 - <_> - - 0 -1 1299 -1.0815899819135666e-02 - - 2.1468059718608856e-01 -5.2153371274471283e-02 - <_> - - 0 -1 1300 -1.1681180330924690e-04 - - 4.8450410366058350e-02 -3.9833851158618927e-02 - <_> - - 0 -1 1301 -4.0612979792058468e-03 - - 1.6646389663219452e-01 -6.9063633680343628e-02 - <_> - - 0 -1 1302 5.7951388880610466e-03 - - -9.0683251619338989e-02 8.3746202290058136e-02 - <_> - - 0 -1 1303 4.9339048564434052e-02 - - 3.9173539727926254e-02 -3.3289939165115356e-01 - <_> - - 0 -1 1304 1.1971060303039849e-04 - - -5.3018629550933838e-02 5.9675298631191254e-02 - <_> - - 0 -1 1305 -1.0609890159685165e-04 - - 8.0995649099349976e-02 -1.6321890056133270e-01 - <_> - - 0 -1 1306 -3.0870910733938217e-02 - - -9.5257751643657684e-02 1.1297959834337234e-02 - <_> - - 0 -1 1307 1.2120340019464493e-01 - - -3.6473531275987625e-02 2.9850721359252930e-01 - <_> - - 0 -1 1308 -2.0626220107078552e-01 - - -2.3698499798774719e-01 1.0814179666340351e-02 - <_> - - 0 -1 1309 4.5673310756683350e-02 - - 4.6200390905141830e-02 -2.8622150421142578e-01 - <_> - - 0 -1 1310 -4.6554979681968689e-01 - - 2.3931290209293365e-01 -4.3889150023460388e-02 - <_> - - 0 -1 1311 -2.7247559279203415e-02 - - 2.2010290622711182e-01 -4.7335881739854813e-02 - <_> - - 0 -1 1312 6.7061851732432842e-03 - - -8.0964729189872742e-02 1.9794599711894989e-01 - <_> - - 0 -1 1313 1.0068929754197598e-02 - - 2.1472670137882233e-02 -4.2355400323867798e-01 - <_> - - 0 -1 1314 -2.0853739231824875e-02 - - 8.8176608085632324e-02 -1.1373549699783325e-01 - <_> - - 0 -1 1315 -1.6856560483574867e-02 - - -3.3476999402046204e-01 2.8114089742302895e-02 - <_> - - 0 -1 1316 1.0779639706015587e-02 - - 2.2091429680585861e-02 -2.6592388749122620e-01 - <_> - - 0 -1 1317 -1.4492620527744293e-01 - - -4.1471031308174133e-01 2.0235959440469742e-02 - <_> - - 0 -1 1318 -1.4222270250320435e-01 - - -5.0898122787475586e-01 1.4417699538171291e-02 - <_> - - 0 -1 1319 -2.6127409189939499e-02 - - -3.6849400401115417e-01 2.1076979115605354e-02 - <_> - - 0 -1 1320 -4.4306788593530655e-02 - - 2.4365669488906860e-01 -3.3151701092720032e-02 - <_> - - 0 -1 1321 -4.7106731683015823e-02 - - 2.2794100642204285e-01 -3.7193849682807922e-02 - <_> - - 0 -1 1322 -1.3220019638538361e-02 - - 9.2124797403812408e-02 -4.0445350110530853e-02 - <_> - - 0 -1 1323 -2.2011219989508390e-03 - - 1.1649300158023834e-01 -7.2288736701011658e-02 - <_> - - 0 -1 1324 -1.3163460418581963e-02 - - -2.7950811386108398e-01 1.8101029098033905e-02 - <_> - - 0 -1 1325 1.3168309815227985e-02 - - -4.7634720802307129e-02 1.8659350275993347e-01 - <_> - - 0 -1 1326 -3.1536500900983810e-03 - - -3.4663060307502747e-01 3.5029809921979904e-02 - <_> - - 0 -1 1327 -6.2986309640109539e-03 - - -4.4517099857330322e-01 1.6394890844821930e-02 - <_> - - 0 -1 1328 1.0520889918552712e-04 - - -1.2221650034189224e-01 9.1529771685600281e-02 - <_> - - 0 -1 1329 6.7712259478867054e-03 - - -6.2910549342632294e-02 1.3665160536766052e-01 - <_> - - 0 -1 1330 1.0879420442506671e-03 - - 5.4720260202884674e-02 -9.9656596779823303e-02 - <_> - - 0 -1 1331 -3.3788580913096666e-03 - - -2.9915699362754822e-01 2.9105750843882561e-02 - <_> - - 0 -1 1332 -4.8709530383348465e-03 - - 8.2811303436756134e-02 -1.3028509914875031e-01 - <_> - - 0 -1 1333 5.3894789889454842e-03 - - -4.2147580534219742e-02 2.2190959751605988e-01 - <_> - - 0 -1 1334 1.7554419115185738e-02 - - 2.4383009877055883e-03 -7.2084337472915649e-01 - <_> - - 0 -1 1335 -8.7206506577786058e-05 - - 5.3330589085817337e-02 -1.5196210145950317e-01 - <_> - - 0 -1 1336 1.5179510228335857e-02 - - -5.7497899979352951e-02 1.6275669634342194e-01 - <_> - - 0 -1 1337 -2.5617830455303192e-02 - - -2.2136710584163666e-01 4.4065218418836594e-02 - <_> - - 0 -1 1338 -8.7506044656038284e-03 - - 1.8021699786186218e-01 -4.8347599804401398e-02 - <_> - - 0 -1 1339 1.2497880379669368e-04 - - -1.3058370351791382e-01 6.3506737351417542e-02 - <_> - - 0 -1 1340 5.6294607929885387e-03 - - 2.2644480690360069e-02 -8.5971117019653320e-02 - <_> - - 0 -1 1341 -7.9026613384485245e-03 - - 1.5518979728221893e-01 -5.8897480368614197e-02 - <_> - - 0 -1 1342 -2.4716140702366829e-02 - - -4.9796000123023987e-01 1.8713599070906639e-02 - <_> - - 0 -1 1343 7.5827902182936668e-03 - - 1.3807909563183784e-02 -4.6953529119491577e-01 - <_> - - 0 -1 1344 1.5213450416922569e-02 - - -6.1865940690040588e-02 3.3661410212516785e-01 - <_> - - 0 -1 1345 5.6500758975744247e-02 - - 2.3028869181871414e-02 -3.8726210594177246e-01 - <_> - - 0 -1 1346 -1.2669079937040806e-02 - - 1.1255340278148651e-01 -7.1737729012966156e-02 - <_> - - 0 -1 1347 8.1679318100214005e-03 - - 3.0598040670156479e-02 -2.7574780583381653e-01 - <_> - - 0 -1 1348 2.4625749886035919e-01 - - -3.1543320510536432e-03 4.1911658644676208e-01 - <_> - - 0 -1 1349 -6.3956580124795437e-03 - - 1.2454889714717865e-01 -5.9035938233137131e-02 - <_> - - 0 -1 1350 2.5588089600205421e-02 - - 1.6577800735831261e-02 -7.5359277427196503e-02 - <_> - - 0 -1 1351 -7.4204497039318085e-02 - - -2.2262080013751984e-01 4.0606889873743057e-02 - <_> - - 0 -1 1352 -3.4715060144662857e-02 - - -4.0411248803138733e-01 1.5808880329132080e-02 - <_> - - 0 -1 1353 -1.1728240177035332e-02 - - 1.3309819996356964e-01 -5.6337751448154449e-02 - <_> - - 0 -1 1354 1.2831239961087704e-02 - - 1.9909920170903206e-02 -3.7757879495620728e-01 - <_> - - 0 -1 1355 -1.0563439689576626e-02 - - -3.2508909702301025e-01 2.3221909999847412e-02 - <_> - - 0 -1 1356 -3.5942891240119934e-01 - - -3.7527939677238464e-01 1.9600039348006248e-02 - <_> - - 0 -1 1357 -3.7011738866567612e-02 - - -5.4136317968368530e-01 1.2847639620304108e-02 - <_> - - 0 -1 1358 -2.5081379339098930e-02 - - -3.7354961037635803e-01 1.8088519573211670e-03 - <_> - - 0 -1 1359 -4.7535188496112823e-03 - - 1.9727499783039093e-01 -4.1774708777666092e-02 - <_> - - 0 -1 1360 -3.4907329827547073e-02 - - -7.2574031352996826e-01 1.4851300511509180e-03 - <_> - - 0 -1 1361 -7.4698338285088539e-03 - - -2.4860990047454834e-01 2.9280329123139381e-02 - <_> - - 0 -1 1362 -8.5913809016346931e-03 - - 6.7347623407840729e-02 -4.0358699858188629e-02 - <_> - - 0 -1 1363 -2.2700410336256027e-02 - - 8.9239656925201416e-02 -7.8781761229038239e-02 - <_> - - 0 -1 1364 2.2053509019315243e-03 - - -2.9912160709500313e-02 1.0977400094270706e-01 - <_> - - 0 -1 1365 -9.8910197615623474e-02 - - 1.8266810476779938e-01 -5.4516408592462540e-02 - <_> - - 0 -1 1366 1.8624879419803619e-02 - - -2.8659839183092117e-02 1.8234199285507202e-01 - <_> - - 0 -1 1367 2.1846349537372589e-01 - - -2.1460210904479027e-02 3.5764479637145996e-01 - <_> - - 0 -1 1368 -8.7592922151088715e-02 - - -1.3817930221557617e-01 5.3657878190279007e-02 - <_> - - 0 -1 1369 -5.9761269949376583e-03 - - -4.6034899353981018e-01 1.3340939767658710e-02 - <_> - - 0 -1 1370 -1.2421079911291599e-02 - - -3.3196499943733215e-01 1.2879449874162674e-02 - <_> - - 0 -1 1371 -1.3781080488115549e-03 - - 8.6616329848766327e-02 -7.4349276721477509e-02 - <_> - - 0 -1 1372 -1.4621959999203682e-02 - - 1.3001319766044617e-01 -6.7598417401313782e-02 - <_> - - 0 -1 1373 -2.4735030531883240e-01 - - 8.5237301886081696e-02 -8.4645196795463562e-02 - <_> - - 0 -1 1374 5.9308610856533051e-02 - - 1.3260659761726856e-02 -1.9157089293003082e-01 - <_> - - 0 -1 1375 2.7013169601559639e-02 - - -5.4349761456251144e-02 1.4400729537010193e-01 - <_> - - 0 -1 1376 -1.0043109767138958e-02 - - 9.7532339394092560e-02 -6.7870423197746277e-02 - <_> - - 0 -1 1377 1.6333710402250290e-02 - - -3.4645229578018188e-02 2.1960219740867615e-01 - <_> - - 0 -1 1378 -1.2308630160987377e-02 - - 8.2006506621837616e-02 -4.1976820677518845e-02 - <_> - - 0 -1 1379 1.0485749691724777e-02 - - -5.1224850118160248e-02 1.4488840103149414e-01 - <_> - - 0 -1 1380 -1.3628990564029664e-04 - - 6.1384610831737518e-02 -5.8191310614347458e-02 - <_> - - 0 -1 1381 8.5936411051079631e-04 - - -5.9147980064153671e-02 1.3367150723934174e-01 - <_> - - 0 -1 1382 8.3236678619869053e-05 - - -2.4901889264583588e-02 2.5403380393981934e-02 - <_> - - 0 -1 1383 1.3244279660284519e-02 - - 2.3201990872621536e-02 -3.1300029158592224e-01 - <_> - - 0 -1 1384 5.1960810087621212e-03 - - -2.0643370226025581e-02 1.6936659812927246e-01 - <_> - - 0 -1 1385 -1.0730049689300358e-04 - - 7.5357936322689056e-02 -8.5676707327365875e-02 - <_> - - 0 -1 1386 1.9123459234833717e-02 - - 7.9347174614667892e-03 -4.0754169225692749e-01 - <_> - - 0 -1 1387 1.5554900281131268e-02 - - 1.1862790212035179e-02 -5.2963471412658691e-01 - <_> - - 0 -1 1388 1.2289740145206451e-02 - - -4.7180838882923126e-02 1.5157990157604218e-01 - <_> - - 0 -1 1389 -1.4573910273611546e-02 - - -3.6669370532035828e-01 1.7396919429302216e-02 - <_> - - 0 -1 1390 9.7942277789115906e-03 - - 2.2446950897574425e-02 -1.9372400641441345e-01 - <_> - - 0 -1 1391 -1.1129249818623066e-02 - - 1.2022449821233749e-01 -5.0490919500589371e-02 - <_> - - 0 -1 1392 -2.8478259220719337e-02 - - -1.5742279589176178e-01 1.5236110426485538e-02 - <_> - - 0 -1 1393 1.7496680840849876e-02 - - 2.5690859183669090e-02 -2.3409870266914368e-01 - <_> - - 0 -1 1394 1.5521899797022343e-02 - - -5.5130939930677414e-02 1.3458259403705597e-01 - <_> - - 0 -1 1395 -7.6961889863014221e-02 - - 1.4820179343223572e-01 -5.2654728293418884e-02 - <_> - - 0 -1 1396 1.2541759759187698e-02 - - 1.9928690046072006e-02 -1.9568939507007599e-01 - <_> - - 0 -1 1397 1.4891889877617359e-03 - - -5.2284549921751022e-02 1.2443289905786514e-01 - <_> - - 0 -1 1398 -8.7659856944810599e-05 - - 5.6242011487483978e-02 -3.5084269940853119e-02 - <_> - - 0 -1 1399 -7.8899807704146951e-05 - - 1.0030300170183182e-01 -7.2244107723236084e-02 - <_> - - 0 -1 1400 1.0928830306511372e-04 - - -6.8274326622486115e-02 6.1526838690042496e-02 - <_> - - 0 -1 1401 9.7802199888974428e-05 - - -8.4941998124122620e-02 7.9070352017879486e-02 - <_> - - 0 -1 1402 -3.6586909554898739e-03 - - 8.4576956927776337e-02 -6.1979670077562332e-02 - <_> - - 0 -1 1403 -2.7165230363607407e-02 - - -1.3254989683628082e-01 4.7547008842229843e-02 - <_> - - 0 -1 1404 -2.4415540695190430e-01 - - -2.8779751062393188e-01 1.0103769600391388e-02 - <_> - - 0 -1 1405 2.1893939375877380e-01 - - -1.9153190776705742e-02 4.3883860111236572e-01 - <_> - - 0 -1 1406 -3.7663489580154419e-02 - - -5.3167599439620972e-01 8.6589939892292023e-03 - <_> - - 0 -1 1407 9.8570194095373154e-03 - - 3.5411339253187180e-02 -1.7533619701862335e-01 - <_> - - 0 -1 1408 -1.1069320142269135e-02 - - 8.7674133479595184e-02 -2.3971110582351685e-02 - <_> - - 0 -1 1409 -3.2092579640448093e-03 - - 1.1677669733762741e-01 -5.2938070148229599e-02 - <_> - - 0 -1 1410 3.1299121677875519e-02 - - 5.0855642184615135e-03 -1.6072839498519897e-01 - <_> - - 0 -1 1411 -1.6410440439358354e-03 - - -1.9995410740375519e-01 3.2194938510656357e-02 - <_> - - 0 -1 1412 -8.7659856944810599e-05 - - 7.1497410535812378e-02 -4.5898139476776123e-02 - <_> - - 0 -1 1413 -2.0864999387413263e-03 - - 1.7110210657119751e-01 -3.5948559641838074e-02 - <_> - - 0 -1 1414 -6.0527279973030090e-02 - - -7.6273518800735474e-01 1.3608309673145413e-03 - <_> - - 0 -1 1415 1.2230159714818001e-02 - - 2.8595050796866417e-02 -2.2392280399799347e-01 - <_> - - 0 -1 1416 -1.7876380681991577e-01 - - -3.5213679075241089e-01 1.7496939748525620e-02 - <_> - - 0 -1 1417 -9.4217322766780853e-03 - - 7.6749376952648163e-02 -7.8374743461608887e-02 - <_> - - 0 -1 1418 5.1809968426823616e-03 - - 3.2549921423196793e-02 -1.0737700015306473e-01 - <_> - - 0 -1 1419 1.2300110422074795e-02 - - 1.5902930870652199e-02 -3.8703128695487976e-01 - <_> - - 0 -1 1420 -1.2951259850524366e-04 - - 5.2656628191471100e-02 -6.0614999383687973e-02 - <_> - - 0 -1 1421 -1.0170210152864456e-01 - - -7.7593147754669189e-01 6.8476120941340923e-03 - <_> - - 0 -1 1422 -3.6904220469295979e-03 - - 1.9035929441452026e-01 -2.3995259776711464e-02 - <_> - - 0 -1 1423 1.5722079202532768e-02 - - 2.0075650885701180e-02 -2.8484240174293518e-01 - <_> - - 0 -1 1424 1.5800909604877234e-03 - - 1.4534479938447475e-02 -4.6087890863418579e-02 - <_> - - 0 -1 1425 1.9083570223301649e-03 - - -4.3277118355035782e-02 1.4814759790897369e-01 - <_> - - 0 -1 1426 4.5368049293756485e-02 - - 1.2600870104506612e-03 -1.0040459632873535e+00 - <_> - - 0 -1 1427 -3.1613200902938843e-02 - - 1.9041140377521515e-01 -3.0077679082751274e-02 - <_> - - 0 -1 1428 -5.9592720121145248e-02 - - 5.9635359793901443e-02 -6.2979087233543396e-02 - <_> - - 0 -1 1429 -2.2434289753437042e-01 - - -4.1175138950347900e-01 1.5641730278730392e-02 - <_> - - 0 -1 1430 -6.5899849869310856e-03 - - 1.9443179666996002e-01 -3.1694628298282623e-02 - <_> - - 0 -1 1431 7.9618580639362335e-03 - - -5.1823440939188004e-02 1.1943539977073669e-01 - <_> - - 0 -1 1432 2.4097269400954247e-02 - - 2.5083899963647127e-03 -5.8389508724212646e-01 - <_> - - 0 -1 1433 -1.9797749817371368e-02 - - -2.4893710017204285e-01 2.3319810628890991e-02 - <_> - - 0 -1 1434 3.0359720811247826e-02 - - -2.2299349308013916e-02 8.5980042815208435e-02 - <_> - - 0 -1 1435 -8.3497361629270017e-05 - - 6.4343743026256561e-02 -8.9677549898624420e-02 - <_> - - 0 -1 1436 -2.3914920166134834e-02 - - 1.2109059840440750e-01 -2.5260699912905693e-02 - <_> - - 0 -1 1437 -8.6520854383707047e-03 - - -4.7165429592132568e-01 1.2948970310389996e-02 - <_> - - 0 -1 1438 -1.8689059652388096e-03 - - -1.8584649264812469e-01 2.8544230386614799e-02 - <_> - - 0 -1 1439 -1.4712030068039894e-02 - - 7.3833480477333069e-02 -7.9545512795448303e-02 - <_> - - 0 -1 1440 9.6776559075806290e-05 - - -5.3808450698852539e-02 6.7052409052848816e-02 - <_> - - 0 -1 1441 -4.0881600230932236e-02 - - 1.5709510445594788e-01 -3.9720211178064346e-02 - <_> - - 0 -1 1442 4.3581537902355194e-03 - - -6.8891957402229309e-02 5.4509818553924561e-02 - <_> - - 0 -1 1443 -7.9926364123821259e-03 - - 9.5844186842441559e-02 -6.9580480456352234e-02 - <_> - - 0 -1 1444 1.0333009995520115e-02 - - -5.4686669260263443e-02 1.3011549413204193e-01 - <_> - - 0 -1 1445 -1.1435869964770973e-04 - - 6.7426279187202454e-02 -9.8393097519874573e-02 - <_> - - 0 -1 1446 -2.0709419623017311e-02 - - 2.0106869935989380e-01 -2.6080749928951263e-02 - <_> - - 0 -1 1447 -1.6621459508314729e-03 - - -2.2376410663127899e-01 2.6049429550766945e-02 - <_> - - 0 -1 1448 1.9625460263341665e-03 - - -4.3015338480472565e-02 1.2084879726171494e-01 - <_> - - 0 -1 1449 -4.7995131462812424e-02 - - -5.9408020973205566e-01 9.8937414586544037e-03 - <_> - - 0 -1 1450 -8.1422913353890181e-05 - - 6.3267372548580170e-02 -4.6790290623903275e-02 - <_> - - 0 -1 1451 -3.5077799111604691e-03 - - 2.0965479314327240e-01 -2.5860479101538658e-02 - <_> - - 0 -1 1452 6.1466880142688751e-03 - - 2.1389920264482498e-02 -1.5767499804496765e-01 - <_> - - 0 -1 1453 -2.2475130856037140e-02 - - -3.8649868965148926e-01 1.3500030152499676e-02 - <_> - - 0 -1 1454 -1.2854509986937046e-02 - - -3.1043541431427002e-01 1.6851799562573433e-02 - <_> - - 0 -1 1455 -3.2944459468126297e-02 - - -2.4135130643844604e-01 2.1218579262495041e-02 - <_> - - 0 -1 1456 -4.2211711406707764e-03 - - 5.4983090609312057e-02 -3.6255910992622375e-02 - <_> - - 0 -1 1457 -2.5159320794045925e-03 - - 6.7240409553050995e-02 -1.0563170164823532e-01 - <_> - - 0 -1 1458 1.2536929920315742e-02 - - -3.1297560781240463e-02 4.4635839760303497e-02 - <_> - - 0 -1 1459 -1.2544070370495319e-02 - - 2.4844449758529663e-01 -3.0549539253115654e-02 - <_> - - 0 -1 1460 -4.6609319746494293e-02 - - -4.1198849678039551e-01 7.2858459316194057e-03 - <_> - - 0 -1 1461 -1.3294920325279236e-02 - - 1.6136699914932251e-01 -4.0562149137258530e-02 - <_> - - 0 -1 1462 -2.8895901050418615e-03 - - 6.9220848381519318e-02 -3.4948769956827164e-02 - <_> - - 0 -1 1463 9.2754911747761071e-05 - - -6.2799602746963501e-02 9.0230673551559448e-02 - <_> - - 0 -1 1464 1.2964129447937012e-01 - - -8.1927813589572906e-03 3.8863879442214966e-01 - <_> - - 0 -1 1465 -2.8936140239238739e-02 - - 8.4075257182121277e-02 -6.7740783095359802e-02 - <_> - - 0 -1 1466 -1.4308850513771176e-03 - - -5.4857030510902405e-02 2.9219489544630051e-02 - <_> - - 0 -1 1467 2.3652089294046164e-03 - - -4.8029679805040359e-02 1.3704180717468262e-01 - <_> - - 0 -1 1468 1.5420720446854830e-03 - - -4.9499150365591049e-02 6.5847739577293396e-02 - <_> - - 0 -1 1469 -1.8509089713916183e-03 - - -2.3544579744338989e-01 2.5507390499114990e-02 - <_> - - 0 -1 1470 -6.0786440735682845e-04 - - 4.0977660566568375e-02 -3.0832519754767418e-02 - <_> - - 0 -1 1471 -4.1273389942944050e-03 - - 1.1393050104379654e-01 -5.2464749664068222e-02 - <_> - - 0 -1 1472 -2.1144140511751175e-02 - - -2.8581771254539490e-01 1.9020890817046165e-02 - <_> - - 0 -1 1473 -6.8623408675193787e-02 - - 5.2402520179748535e-01 -1.3370789587497711e-02 - <_> - - 0 -1 1474 -2.3273609578609467e-02 - - -1.9590279459953308e-01 1.5390779823064804e-02 - <_> - - 0 -1 1475 1.1729559861123562e-02 - - 1.2804569676518440e-02 -3.9975368976593018e-01 - <_> - - 0 -1 1476 -1.9197949441149831e-03 - - -2.5994110107421875e-01 2.8458990156650543e-02 - <_> - - 0 -1 1477 1.1447600554674864e-03 - - -4.5072000473737717e-02 1.3860389590263367e-01 - <_> - - 0 -1 1478 -1.0227440361632034e-04 - - 5.5592600256204605e-02 -4.9113009124994278e-02 - <_> - - 0 -1 1479 -1.0123359970748425e-04 - - 9.4505466520786285e-02 -8.8237293064594269e-02 - <_> - - 0 -1 1480 1.0893570288317278e-04 - - -4.5741818845272064e-02 5.8658581227064133e-02 - <_> - - 0 -1 1481 7.4765441240742803e-05 - - -8.0418758094310760e-02 1.0517989844083786e-01 - <_> - - 0 -1 1482 -1.0043049696832895e-03 - - 3.7291228771209717e-02 -9.5728866755962372e-02 - <_> - - 0 -1 1483 -1.3605220243334770e-02 - - -1.7957609891891479e-01 3.2971139997243881e-02 - <_> - - 0 -1 1484 2.8680460527539253e-03 - - 1.2185310013592243e-02 -2.6212790608406067e-01 - <_> - - 0 -1 1485 -1.2858140689786524e-04 - - 8.6011983454227448e-02 -6.9080702960491180e-02 - <_> - - 0 -1 1486 1.2469210196286440e-03 - - 2.2270040586590767e-02 -1.1044169962406158e-01 - <_> - - 0 -1 1487 8.2425161963328719e-04 - - -5.4833728820085526e-02 1.2498649954795837e-01 - <_> - - 0 -1 1488 7.8583601862192154e-05 - - -5.4548110812902451e-02 6.6198967397212982e-02 - <_> - - 0 -1 1489 -8.3637831266969442e-04 - - 1.3395069539546967e-01 -5.7126030325889587e-02 - <_> - - 0 -1 1490 1.0339979780837893e-04 - - -3.7374898791313171e-02 5.5564608424901962e-02 - <_> - - 0 -1 1491 1.1284360289573669e-01 - - -4.7857798635959625e-02 1.4919960498809814e-01 - <_> - - 0 -1 1492 -2.1991500630974770e-02 - - 7.4098996818065643e-02 -1.5654139220714569e-02 - <_> - - 0 -1 1493 -5.8295959606766701e-03 - - -1.2228869646787643e-01 4.6361729502677917e-02 - <_> - - 0 -1 1494 -4.7616049647331238e-01 - - 2.9897591471672058e-01 -1.9476199522614479e-02 - <_> - - 0 -1 1495 -9.6184182912111282e-03 - - 6.5632872283458710e-02 -9.7764529287815094e-02 - <_> - - 0 -1 1496 -9.8459348082542419e-03 - - 2.9953660443425179e-02 -4.1783228516578674e-02 - <_> - - 0 -1 1497 -3.4493058919906616e-02 - - 1.4814029633998871e-01 -5.2295818924903870e-02 - <_> - - 0 -1 1498 -2.7170699089765549e-02 - - -1.8757429718971252e-01 1.2358410283923149e-02 - <_> - - 0 -1 1499 3.2725300639867783e-02 - - 1.3365229591727257e-02 -4.1139039397239685e-01 - <_> - - 0 -1 1500 8.4677049017045647e-05 - - -3.6508630961179733e-02 4.4863410294055939e-02 - <_> - - 0 -1 1501 4.8961658030748367e-03 - - -4.9906510859727859e-02 1.1985769867897034e-01 - <_> - - 0 -1 1502 -9.8173961043357849e-02 - - -4.0475818514823914e-01 2.2186879068613052e-03 - <_> - - 0 -1 1503 -2.9190620407462120e-02 - - 2.0124709606170654e-01 -3.4556761384010315e-02 - <_> - - 0 -1 1504 1.6377819702029228e-03 - - 4.8856548964977264e-02 -1.1524800211191177e-01 - <_> - - 0 -1 1505 -1.1581239959923550e-04 - - 5.7624600827693939e-02 -9.5245189964771271e-02 - <_> - - 0 -1 1506 -1.2790900655090809e-04 - - 6.4437143504619598e-02 -6.1183791607618332e-02 - <_> - - 0 -1 1507 1.8525200430303812e-03 - - -3.9117921143770218e-02 1.5792779624462128e-01 - <_> - - 0 -1 1508 -1.6371360048651695e-02 - - -2.7185299992561340e-01 1.6307469457387924e-02 - <_> - - 0 -1 1509 9.7776018083095551e-04 - - -5.2038270980119705e-02 1.1381710320711136e-01 - <_> - - 0 -1 1510 1.5415719710290432e-02 - - 1.3977140188217163e-02 -3.4197929501533508e-01 - <_> - - 0 -1 1511 1.4122789725661278e-03 - - -4.9484260380268097e-02 1.1596909910440445e-01 - <_> - - 0 -1 1512 1.0917360335588455e-01 - - 4.8475428484380245e-03 -5.3975361585617065e-01 - <_> - - 0 -1 1513 6.0521319508552551e-02 - - 2.1077200770378113e-02 -2.8005740046501160e-01 - <_> - - 0 -1 1514 2.5193318724632263e-01 - - -7.9183783382177353e-03 4.0918448567390442e-01 - <_> - - 0 -1 1515 2.7253168821334839e-01 - - -1.2983440421521664e-02 4.2010658979415894e-01 - <_> - - 0 -1 1516 3.7246018648147583e-02 - - 8.6529608815908432e-03 -5.9303051233291626e-01 - <_> - - 0 -1 1517 -2.1589249372482300e-02 - - -3.1377330422401428e-01 1.6977600753307343e-02 - <_> - - 0 -1 1518 -2.6934880763292313e-02 - - -3.6965128779411316e-01 2.5225139688700438e-03 - <_> - - 0 -1 1519 1.0230350308120251e-02 - - 2.0219080150127411e-02 -2.8223741054534912e-01 - <_> - - 0 -1 1520 -2.4981389287859201e-03 - - 2.8802009299397469e-02 -4.1332159191370010e-02 - <_> - - 0 -1 1521 6.1933491379022598e-02 - - -2.1436979994177818e-02 2.8102350234985352e-01 - <_> - - 0 -1 1522 -1.5541249513626099e-01 - - 9.4182349741458893e-02 -5.3503081202507019e-02 - <_> - - 0 -1 1523 1.4328320324420929e-01 - - 1.8958590924739838e-02 -3.2329851388931274e-01 - <_> - - 0 -1 1524 1.0829309467226267e-03 - - -3.9980951696634293e-02 8.4950529038906097e-02 - <_> - - 0 -1 1525 4.2623549699783325e-02 - - 2.5714209303259850e-02 -2.0262250304222107e-01 - <_> - - 0 -1 1526 -9.4770672149024904e-05 - - 7.2402693331241608e-02 -7.2625011205673218e-02 - <_> - - 0 -1 1527 -4.9279178492724895e-03 - - -2.1339289844036102e-01 2.8035620227456093e-02 - <_> - - 0 -1 1528 2.2998640779405832e-03 - - 1.7618950456380844e-02 -1.7477869987487793e-01 - <_> - - 0 -1 1529 -1.8047069897875190e-03 - - 1.5262520313262939e-01 -3.3268321305513382e-02 - <_> - - 0 -1 1530 6.3559878617525101e-03 - - 2.4536989629268646e-02 -2.5021979212760925e-01 - <_> - - 0 -1 1531 1.7984479665756226e-02 - - -4.4790919870138168e-02 1.1593340337276459e-01 - <_> - - 0 -1 1532 -1.3372869789600372e-01 - - 3.0456998944282532e-01 -1.9601140171289444e-02 - <_> - - 0 -1 1533 -7.6566986739635468e-02 - - 3.2627278566360474e-01 -1.6411129385232925e-02 - <_> - - 0 -1 1534 5.7867518626153469e-04 - - -5.3845439106225967e-02 8.0281347036361694e-02 - <_> - - 0 -1 1535 -1.0546330304350704e-04 - - 5.7120978832244873e-02 -8.6317531764507294e-02 - <_> - - 0 -1 1536 6.7152240080758929e-04 - - -3.0404970049858093e-02 3.0943179503083229e-02 - <_> - - 0 -1 1537 -1.8690660595893860e-02 - - 1.0812710225582123e-01 -5.5201351642608643e-02 - <_> - - 0 -1 1538 -3.6627850495278835e-03 - - 1.0792650282382965e-01 -3.5584200173616409e-02 - <_> - - 0 -1 1539 1.9153920002281666e-03 - - -5.5652879178524017e-02 1.0891920328140259e-01 - <_> - - 0 -1 1540 -5.8281961828470230e-02 - - 9.2221289873123169e-02 -5.9672281146049500e-02 - <_> - - 0 -1 1541 2.0880669355392456e-02 - - -4.4841628521680832e-02 1.4994530379772186e-01 - <_> - - 0 -1 1542 -1.2872450053691864e-02 - - -1.8297229707241058e-01 1.2131419964134693e-02 - <_> - - 0 -1 1543 -1.5816009545233101e-04 - - 6.7625537514686584e-02 -7.4934296309947968e-02 - <_> - - 0 -1 1544 -3.6091450601816177e-03 - - 6.2888123095035553e-02 -6.1180680990219116e-02 - <_> - - 0 -1 1545 1.5257050283253193e-02 - - 4.0386959910392761e-02 -1.3029590249061584e-01 - <_> - - 0 -1 1546 7.2127310559153557e-03 - - -2.4583019316196442e-02 9.6449322998523712e-02 - <_> - - 0 -1 1547 -6.6937888041138649e-03 - - 1.2095390260219574e-01 -5.6884378194808960e-02 - <_> - - 0 -1 1548 -2.9697069898247719e-02 - - -4.4960159063339233e-01 2.3813890293240547e-03 - <_> - - 0 -1 1549 1.4415530022233725e-03 - - 3.7733301520347595e-02 -1.2737789750099182e-01 - <_> - - 0 -1 1550 1.4221980236470699e-03 - - -2.1170429885387421e-01 1.6940960660576820e-02 - <_> - - 0 -1 1551 -1.5120590105652809e-03 - - 1.2285920232534409e-01 -4.1854929178953171e-02 - <_> - - 0 -1 1552 2.0304210484027863e-02 - - 1.3554779812693596e-02 -1.9578050076961517e-01 - <_> - - 0 -1 1553 -2.0062210038304329e-02 - - -2.1793180704116821e-01 2.1363889798521996e-02 - <_> - - 0 -1 1554 -8.2440199330449104e-03 - - 2.9835399985313416e-01 -1.6030140221118927e-02 - <_> - - 0 -1 1555 -1.2381359934806824e-01 - - -7.2187852859497070e-01 7.2500761598348618e-03 - <_> - - 0 -1 1556 1.4663189649581909e-01 - - 1.0929410345852375e-02 -3.8258919119834900e-01 - <_> - - 0 -1 1557 -1.0277800261974335e-02 - - 1.1528860032558441e-01 -4.0658649057149887e-02 - <_> - - 0 -1 1558 3.3496099058538675e-03 - - -3.0865129083395004e-02 6.3714809715747833e-02 - <_> - - 0 -1 1559 -1.4789789915084839e-02 - - -2.6894780993461609e-01 2.2147249430418015e-02 - <_> - - 0 -1 1560 5.2639901638031006e-02 - - -1.1888500303030014e-03 8.4306770563125610e-01 - <_> - - 0 -1 1561 -2.2687960416078568e-02 - - -5.0103509426116943e-01 1.0603000409901142e-02 - <_> - - 0 -1 1562 1.3357940129935741e-02 - - 1.3358240015804768e-02 -3.4407868981361389e-01 - <_> - - 0 -1 1563 4.0347680449485779e-02 - - -2.2541839629411697e-02 2.1424660086631775e-01 - <_> - - 0 -1 1564 2.0399050787091255e-02 - - 5.7352068834006786e-03 -8.1542342901229858e-01 - <_> - - 0 -1 1565 -2.0794410258531570e-02 - - 2.8139808773994446e-01 -1.7350850626826286e-02 - <_> - - 0 -1 1566 -2.2991070523858070e-02 - - -2.3115499317646027e-01 1.0062159970402718e-02 - <_> - 278 - -1.4224710464477539e+00 - - <_> - - 0 -1 1567 -3.2529558986425400e-02 - - 3.8044160604476929e-01 -1.5227490663528442e-01 - <_> - - 0 -1 1568 -9.6866730600595474e-03 - - 1.7110300064086914e-01 -6.4435392618179321e-02 - <_> - - 0 -1 1569 -4.2818721383810043e-02 - - 3.5909658670425415e-01 -8.2244172692298889e-02 - <_> - - 0 -1 1570 4.7356471419334412e-02 - - -4.5057401061058044e-02 1.1725539714097977e-01 - <_> - - 0 -1 1571 -3.3883251249790192e-02 - - 1.5656350553035736e-01 -1.9660830497741699e-01 - <_> - - 0 -1 1572 1.6506519168615341e-02 - - -3.7829719483852386e-02 4.3533229827880859e-01 - <_> - - 0 -1 1573 1.4033010229468346e-02 - - -8.4303461015224457e-02 3.9072498679161072e-01 - <_> - - 0 -1 1574 -4.3674569576978683e-02 - - 3.5789701342582703e-01 -5.6618168950080872e-02 - <_> - - 0 -1 1575 3.9390970021486282e-02 - - 7.4526593089103699e-02 -2.8721511363983154e-01 - <_> - - 0 -1 1576 2.7967539429664612e-01 - - -1.7927689850330353e-01 9.5716983079910278e-02 - <_> - - 0 -1 1577 -2.7309380471706390e-02 - - 2.0642340183258057e-01 -9.6997790038585663e-02 - <_> - - 0 -1 1578 8.1798024475574493e-03 - - -4.3230161070823669e-02 1.0153889656066895e-01 - <_> - - 0 -1 1579 4.8562590964138508e-03 - - -6.6235437989234924e-02 2.2371730208396912e-01 - <_> - - 0 -1 1580 -2.1111050620675087e-02 - - -2.3597380518913269e-01 2.0980730652809143e-02 - <_> - - 0 -1 1581 2.9689490329474211e-03 - - 5.5319551378488541e-02 -3.1421989202499390e-01 - <_> - - 0 -1 1582 -1.4177729608491063e-03 - - -9.9316902458667755e-02 4.0930420160293579e-02 - <_> - - 0 -1 1583 1.8895609537139535e-03 - - 4.7736670821905136e-02 -3.3560028672218323e-01 - <_> - - 0 -1 1584 -3.2547879964113235e-02 - - -4.6100369095802307e-01 2.2066680714488029e-02 - <_> - - 0 -1 1585 -3.2047629356384277e-02 - - -3.7099909782409668e-01 3.5771168768405914e-02 - <_> - - 0 -1 1586 -1.0906500369310379e-01 - - 2.7380779385566711e-01 -5.1245860755443573e-02 - <_> - - 0 -1 1587 4.5085761696100235e-02 - - -8.0376937985420227e-02 2.0190399885177612e-01 - <_> - - 0 -1 1588 9.6619682153686881e-05 - - -3.8644108921289444e-02 4.5012358576059341e-02 - <_> - - 0 -1 1589 -1.2527930084615946e-04 - - 6.0821618884801865e-02 -2.3440569639205933e-01 - <_> - - 0 -1 1590 -7.6730418950319290e-03 - - -2.5697150826454163e-01 3.0136449262499809e-02 - <_> - - 0 -1 1591 -2.4111960083246231e-03 - - 1.3455359637737274e-01 -9.4123587012290955e-02 - <_> - - 0 -1 1592 -3.5480279475450516e-03 - - 1.6368620097637177e-01 -6.5735898911952972e-02 - <_> - - 0 -1 1593 -7.4420678429305553e-03 - - 4.3583691120147705e-01 -3.4085851162672043e-02 - <_> - - 0 -1 1594 6.9531807675957680e-03 - - 3.4082211554050446e-02 -1.5552860498428345e-01 - <_> - - 0 -1 1595 -1.1566810309886932e-02 - - -3.7222158908843994e-01 3.1968921422958374e-02 - <_> - - 0 -1 1596 7.3271869041491300e-05 - - -4.7866608947515488e-02 3.9341930299997330e-02 - <_> - - 0 -1 1597 -4.7459648922085762e-03 - - 1.8686290085315704e-01 -6.2216449528932571e-02 - <_> - - 0 -1 1598 -2.4754500016570091e-02 - - -5.0596177577972412e-01 1.3228390365839005e-02 - <_> - - 0 -1 1599 1.1549480259418488e-02 - - 4.1499558836221695e-02 -2.6305711269378662e-01 - <_> - - 0 -1 1600 7.6468382030725479e-03 - - 1.4065190218389034e-02 -3.6097638309001923e-02 - <_> - - 0 -1 1601 2.9371369630098343e-02 - - -5.6847479194402695e-02 1.8845230340957642e-01 - <_> - - 0 -1 1602 -6.5610869787633419e-03 - - 2.4409130215644836e-01 -7.4077129364013672e-02 - <_> - - 0 -1 1603 -1.7362499609589577e-02 - - -2.6955080032348633e-01 4.5806050300598145e-02 - <_> - - 0 -1 1604 -6.4328663051128387e-02 - - -6.7359542846679688e-01 8.9323017746210098e-03 - <_> - - 0 -1 1605 -2.5860529392957687e-02 - - -2.8402230143547058e-01 3.7698548287153244e-02 - <_> - - 0 -1 1606 -3.9703961461782455e-02 - - -4.8480059951543808e-02 1.0969489812850952e-02 - <_> - - 0 -1 1607 -3.3141750842332840e-02 - - 1.4789700508117676e-01 -8.2552701234817505e-02 - <_> - - 0 -1 1608 -3.9032109081745148e-02 - - 9.3282796442508698e-02 -5.6148871779441833e-02 - <_> - - 0 -1 1609 -1.1510000331327319e-04 - - 7.6830253005027771e-02 -1.4591589570045471e-01 - <_> - - 0 -1 1610 2.8774080798029900e-02 - - 1.4245410449802876e-02 -4.2927891016006470e-01 - <_> - - 0 -1 1611 -1.7967380583286285e-02 - - -2.8555288910865784e-01 3.5016119480133057e-02 - <_> - - 0 -1 1612 -1.4183930121362209e-02 - - -2.0557439327239990e-01 2.4191029369831085e-02 - <_> - - 0 -1 1613 9.5999464392662048e-03 - - 3.8848869502544403e-02 -2.5329971313476562e-01 - <_> - - 0 -1 1614 2.8658700175583363e-03 - - -3.8897961378097534e-02 2.1641039848327637e-01 - <_> - - 0 -1 1615 9.8942127078771591e-03 - - -2.2040490061044693e-02 4.1194090247154236e-01 - <_> - - 0 -1 1616 5.3157331421971321e-03 - - 3.4069050103425980e-02 -1.9336779415607452e-01 - <_> - - 0 -1 1617 1.1667669750750065e-02 - - 2.8704559430480003e-02 -3.2336559891700745e-01 - <_> - - 0 -1 1618 7.9165054485201836e-03 - - -2.1710209548473358e-02 2.7279400825500488e-01 - <_> - - 0 -1 1619 1.4896179549396038e-02 - - -2.8705410659313202e-02 2.9993739724159241e-01 - <_> - - 0 -1 1620 -4.6051971614360809e-02 - - -7.1714037656784058e-01 1.6391549725085497e-03 - <_> - - 0 -1 1621 1.2525349855422974e-02 - - -2.4171119555830956e-02 3.4617099165916443e-01 - <_> - - 0 -1 1622 -7.3274560272693634e-03 - - -1.2797740101814270e-01 4.1265968233346939e-02 - <_> - - 0 -1 1623 -1.0679940169211477e-04 - - 5.8594450354576111e-02 -1.5463119745254517e-01 - <_> - - 0 -1 1624 1.1660600081086159e-02 - - 1.1693470180034637e-02 -4.9165180325508118e-01 - <_> - - 0 -1 1625 -1.6170109808444977e-01 - - -3.9669001102447510e-01 2.2492909803986549e-02 - <_> - - 0 -1 1626 -2.1332919597625732e-02 - - 1.0327749699354172e-01 -7.7664600685238838e-03 - <_> - - 0 -1 1627 2.2397670894861221e-02 - - -3.1559981405735016e-02 2.6935219764709473e-01 - <_> - - 0 -1 1628 -9.1192683612462133e-05 - - 7.7337473630905151e-02 -7.5700417160987854e-02 - <_> - - 0 -1 1629 -2.4261020123958588e-02 - - 1.0713250190019608e-01 -8.2371480762958527e-02 - <_> - - 0 -1 1630 8.2271397113800049e-03 - - -2.9786510393023491e-02 1.6342550516128540e-01 - <_> - - 0 -1 1631 1.4093330129981041e-02 - - -2.8404369950294495e-02 3.5299220681190491e-01 - <_> - - 0 -1 1632 -1.0918209701776505e-01 - - 1.7027379572391510e-01 -6.2282849103212357e-02 - <_> - - 0 -1 1633 -3.2730210572481155e-02 - - -1.7788340151309967e-01 5.2962359040975571e-02 - <_> - - 0 -1 1634 -1.2067790143191814e-02 - - 1.1206190288066864e-01 -6.1255540698766708e-02 - <_> - - 0 -1 1635 1.0436809808015823e-01 - - -3.2521981745958328e-02 2.8920689225196838e-01 - <_> - - 0 -1 1636 5.5702589452266693e-03 - - 3.2705459743738174e-02 -1.8883390724658966e-01 - <_> - - 0 -1 1637 -7.4505289085209370e-03 - - 1.1109550297260284e-01 -7.6065346598625183e-02 - <_> - - 0 -1 1638 1.8507199361920357e-02 - - 5.1278448663651943e-03 -3.2454928755760193e-01 - <_> - - 0 -1 1639 -1.3000619946978986e-04 - - 6.5906368196010590e-02 -1.1608509719371796e-01 - <_> - - 0 -1 1640 -1.0110549919772893e-04 - - 6.6874466836452484e-02 -6.1187278479337692e-02 - <_> - - 0 -1 1641 -8.2355996710248291e-05 - - 5.6198339909315109e-02 -1.3230879604816437e-01 - <_> - - 0 -1 1642 6.7807449959218502e-03 - - -3.2801959663629532e-02 2.2695629298686981e-01 - <_> - - 0 -1 1643 -1.0289719700813293e-01 - - -3.2038938999176025e-01 2.5616079568862915e-02 - <_> - - 0 -1 1644 1.0858030145755038e-04 - - -2.3970989510416985e-02 3.6143548786640167e-02 - <_> - - 0 -1 1645 3.4920300822705030e-03 - - 4.0521498769521713e-02 -2.0743690431118011e-01 - <_> - - 0 -1 1646 8.4493216127157211e-03 - - 2.7343379333615303e-02 -8.0973640084266663e-02 - <_> - - 0 -1 1647 -5.8201588690280914e-03 - - 1.4030739665031433e-01 -5.3014609962701797e-02 - <_> - - 0 -1 1648 -2.0276790019124746e-03 - - -2.3815169930458069e-01 2.8206869959831238e-02 - <_> - - 0 -1 1649 -6.2650619074702263e-03 - - 1.0950689762830734e-01 -7.1786336600780487e-02 - <_> - - 0 -1 1650 1.8329780548810959e-02 - - 3.2881149090826511e-03 -2.4403749406337738e-01 - <_> - - 0 -1 1651 -1.4055710285902023e-02 - - -2.0988300442695618e-01 3.7349730730056763e-02 - <_> - - 0 -1 1652 1.6436750069260597e-02 - - -2.0020410418510437e-02 1.7581729590892792e-01 - <_> - - 0 -1 1653 -7.6040881685912609e-03 - - 1.1120659857988358e-01 -6.6377982497215271e-02 - <_> - - 0 -1 1654 -1.7437810311093926e-03 - - -1.1763899773359299e-01 2.0920079201459885e-02 - <_> - - 0 -1 1655 2.0605439785867929e-03 - - 3.0492970719933510e-02 -2.3323950171470642e-01 - <_> - - 0 -1 1656 -4.7545689158141613e-03 - - 1.5850760042667389e-01 -4.9032289534807205e-02 - <_> - - 0 -1 1657 1.0362310335040092e-02 - - -1.0725220292806625e-01 7.2945110499858856e-02 - <_> - - 0 -1 1658 1.9581569358706474e-02 - - -3.0178340151906013e-02 1.2788949906826019e-01 - <_> - - 0 -1 1659 -3.7324108183383942e-02 - - 2.5007569789886475e-01 -3.4548711031675339e-02 - <_> - - 0 -1 1660 -2.2115129977464676e-02 - - -3.5684010386466980e-01 1.4295370317995548e-02 - <_> - - 0 -1 1661 -1.7337020486593246e-02 - - 1.5191890299320221e-01 -5.3740900009870529e-02 - <_> - - 0 -1 1662 -1.1369160376489162e-02 - - -1.5406270325183868e-01 1.4785549603402615e-02 - <_> - - 0 -1 1663 -1.4761550351977348e-02 - - -3.7672498822212219e-01 2.3018039762973785e-02 - <_> - - 0 -1 1664 -1.1766609735786915e-02 - - 1.4722760021686554e-01 -3.5164430737495422e-02 - <_> - - 0 -1 1665 -5.1778471097350121e-03 - - -1.5880860388278961e-01 5.5203009396791458e-02 - <_> - - 0 -1 1666 1.8116280436515808e-01 - - 5.9258830733597279e-03 -3.4079378843307495e-01 - <_> - - 0 -1 1667 -2.8401340823620558e-03 - - -2.5190570950508118e-01 2.9740760102868080e-02 - <_> - - 0 -1 1668 -5.6462749838829041e-02 - - -4.2315030097961426e-01 9.2743232380598783e-04 - <_> - - 0 -1 1669 -3.3624221105128527e-03 - - 6.5666697919368744e-02 -1.0826759785413742e-01 - <_> - - 0 -1 1670 8.3388388156890869e-03 - - 1.0488309897482395e-02 -7.4981592595577240e-02 - <_> - - 0 -1 1671 -1.5665130689740181e-02 - - -3.9219671487808228e-01 1.8510419875383377e-02 - <_> - - 0 -1 1672 -1.7687210347503424e-03 - - 1.5860289335250854e-01 -3.9618719369173050e-02 - <_> - - 0 -1 1673 -6.9300839677453041e-03 - - -2.1337039768695831e-01 3.1901270151138306e-02 - <_> - - 0 -1 1674 -6.2634617090225220e-02 - - 4.6897390484809875e-01 -1.0887789539992809e-02 - <_> - - 0 -1 1675 3.6505470052361488e-03 - - -2.6130320504307747e-02 2.3748870193958282e-01 - <_> - - 0 -1 1676 1.1151240207254887e-02 - - 5.3229848854243755e-03 -3.2130768895149231e-01 - <_> - - 0 -1 1677 -4.5365858823060989e-03 - - 8.2844547927379608e-02 -8.0115981400012970e-02 - <_> - - 0 -1 1678 -4.3989070691168308e-03 - - -2.2062489390373230e-01 2.3956889286637306e-02 - <_> - - 0 -1 1679 -8.0931422417052090e-05 - - 8.3183720707893372e-02 -7.6105080544948578e-02 - <_> - - 0 -1 1680 1.7180040478706360e-02 - - 3.0891239643096924e-02 -2.1150709688663483e-01 - <_> - - 0 -1 1681 -1.9628280773758888e-02 - - 1.8306790292263031e-01 -3.8707170635461807e-02 - <_> - - 0 -1 1682 2.4444239214062691e-02 - - -2.6723939180374146e-01 2.7812579646706581e-02 - <_> - - 0 -1 1683 -3.6335210315883160e-03 - - 1.2941999733448029e-01 -6.0854408890008926e-02 - <_> - - 0 -1 1684 -1.5583789348602295e-01 - - 2.9201939702033997e-01 -2.2044450044631958e-02 - <_> - - 0 -1 1685 1.2645959854125977e-02 - - -5.7956811040639877e-02 1.2000530213117599e-01 - <_> - - 0 -1 1686 -1.8256660550832748e-02 - - 1.1456149816513062e-01 -6.6880658268928528e-02 - <_> - - 0 -1 1687 7.8691470623016357e-01 - - -1.9597550854086876e-02 3.9855471253395081e-01 - <_> - - 0 -1 1688 -2.6444930117577314e-03 - - -2.0646509528160095e-01 2.4280549958348274e-02 - <_> - - 0 -1 1689 -1.0909110278589651e-04 - - 9.3177713453769684e-02 -8.4980867803096771e-02 - <_> - - 0 -1 1690 -9.1609297669492662e-05 - - 6.3885338604450226e-02 -7.0593856275081635e-02 - <_> - - 0 -1 1691 1.0280970309395343e-04 - - -8.3767838776111603e-02 1.1355379968881607e-01 - <_> - - 0 -1 1692 6.5171226859092712e-02 - - -2.1008869633078575e-02 1.6222980618476868e-01 - <_> - - 0 -1 1693 -3.3189691603183746e-02 - - 1.4846749603748322e-01 -5.2959389984607697e-02 - <_> - - 0 -1 1694 -4.0189391374588013e-01 - - -4.9486890435218811e-01 1.5633370727300644e-02 - <_> - - 0 -1 1695 7.2733121924102306e-03 - - 2.7792690321803093e-02 -2.3128899931907654e-01 - <_> - - 0 -1 1696 -1.3244659639894962e-02 - - -2.8102970123291016e-01 2.6572089642286301e-02 - <_> - - 0 -1 1697 -2.2069490514695644e-03 - - -1.3499380648136139e-01 5.3295578807592392e-02 - <_> - - 0 -1 1698 6.3389358110725880e-03 - - -2.9710570350289345e-02 1.2620060145854950e-01 - <_> - - 0 -1 1699 -1.9882840570062399e-03 - - 1.4089819788932800e-01 -6.4480878412723541e-02 - <_> - - 0 -1 1700 1.1109679937362671e-02 - - 3.6036681383848190e-02 -2.0155589282512665e-01 - <_> - - 0 -1 1701 -1.5754520893096924e-02 - - -3.8578459620475769e-01 1.7101729288697243e-02 - <_> - - 0 -1 1702 -2.0075829233974218e-03 - - 1.0723750293254852e-01 -3.2845478504896164e-02 - <_> - - 0 -1 1703 -1.0277600085828453e-04 - - 8.9651212096214294e-02 -7.3453463613986969e-02 - <_> - - 0 -1 1704 -1.2877609580755234e-02 - - 1.1867459863424301e-01 -8.1963732838630676e-02 - <_> - - 0 -1 1705 2.2134140133857727e-02 - - -3.8634710013866425e-02 2.0064100623130798e-01 - <_> - - 0 -1 1706 -1.4158019796013832e-02 - - -1.3553419709205627e-01 2.2455710917711258e-02 - <_> - - 0 -1 1707 3.5068059805780649e-03 - - 4.1640508919954300e-02 -1.7104309797286987e-01 - <_> - - 0 -1 1708 3.4302179701626301e-03 - - -3.8643669337034225e-02 1.3460919260978699e-01 - <_> - - 0 -1 1709 -2.5867659132927656e-03 - - -3.3378678560256958e-01 2.0394440740346909e-02 - <_> - - 0 -1 1710 -8.3075952716171741e-05 - - 4.3186109513044357e-02 -3.6894761025905609e-02 - <_> - - 0 -1 1711 -2.9514790512621403e-03 - - 1.6360920667648315e-01 -4.0991440415382385e-02 - <_> - - 0 -1 1712 -6.6972076892852783e-02 - - 7.9344272613525391e-02 -1.7339119687676430e-02 - <_> - - 0 -1 1713 -8.7736167013645172e-02 - - -2.7998620271682739e-01 2.3209020495414734e-02 - <_> - - 0 -1 1714 2.8925359249114990e-02 - - -3.2643690705299377e-02 6.9175571203231812e-02 - <_> - - 0 -1 1715 1.3697390444576740e-02 - - -3.4412618726491928e-02 1.8311390280723572e-01 - <_> - - 0 -1 1716 -5.0847078673541546e-03 - - 9.3848191201686859e-02 -4.2314790189266205e-02 - <_> - - 0 -1 1717 3.8608049508184195e-03 - - -8.7915137410163879e-02 7.9263538122177124e-02 - <_> - - 0 -1 1718 1.0344120115041733e-01 - - 1.4294220134615898e-02 -1.7824479937553406e-01 - <_> - - 0 -1 1719 5.3322589956223965e-03 - - -1.9811069965362549e-01 3.3467840403318405e-02 - <_> - - 0 -1 1720 2.4972399696707726e-02 - - -2.9970880597829819e-02 2.5031089782714844e-01 - <_> - - 0 -1 1721 8.0840502050705254e-05 - - -8.1262156367301941e-02 7.6767727732658386e-02 - <_> - - 0 -1 1722 -9.6944597316905856e-05 - - 6.8264253437519073e-02 -4.7088030725717545e-02 - <_> - - 0 -1 1723 1.6829340020194650e-03 - - 3.8623999804258347e-02 -1.6512230038642883e-01 - <_> - - 0 -1 1724 2.5296229869127274e-02 - - 2.4244319647550583e-03 -4.9479418992996216e-01 - <_> - - 0 -1 1725 7.7065881341695786e-03 - - -4.0091071277856827e-02 1.7837360501289368e-01 - <_> - - 0 -1 1726 -6.3551932573318481e-02 - - -9.6359908580780029e-01 1.2983690248802304e-03 - <_> - - 0 -1 1727 1.2043629772961140e-02 - - 3.2327480614185333e-02 -2.0570349693298340e-01 - <_> - - 0 -1 1728 -5.1777001470327377e-02 - - 1.2718230485916138e-01 -2.5768250226974487e-02 - <_> - - 0 -1 1729 -5.2279248833656311e-02 - - 5.9088861942291260e-01 -1.0696710087358952e-02 - <_> - - 0 -1 1730 -2.8587870765477419e-03 - - -2.1566559374332428e-01 2.1160630509257317e-02 - <_> - - 0 -1 1731 -2.2894500289112329e-03 - - 1.4047910273075104e-01 -4.5665130019187927e-02 - <_> - - 0 -1 1732 4.4600428082048893e-03 - - 4.1558738797903061e-02 -1.1571829766035080e-01 - <_> - - 0 -1 1733 -2.5135470554232597e-02 - - 3.2584500312805176e-01 -1.9654629752039909e-02 - <_> - - 0 -1 1734 -4.1408590041100979e-03 - - -2.4931840598583221e-01 2.4890620261430740e-02 - <_> - - 0 -1 1735 2.5323050096631050e-02 - - -4.0092781186103821e-02 1.6539059579372406e-01 - <_> - - 0 -1 1736 -3.0261930078268051e-03 - - 1.3259239494800568e-01 -3.6744181066751480e-02 - <_> - - 0 -1 1737 -2.0923390984535217e-03 - - -2.3182089626789093e-01 2.6503330096602440e-02 - <_> - - 0 -1 1738 1.1389939754735678e-04 - - -8.6492210626602173e-02 3.3153928816318512e-02 - <_> - - 0 -1 1739 4.1002789512276649e-03 - - 2.8531620278954506e-02 -1.8766659498214722e-01 - <_> - - 0 -1 1740 -1.0652170021785423e-04 - - 7.3864407837390900e-02 -1.0641259700059891e-01 - <_> - - 0 -1 1741 -1.1209140211576596e-04 - - 7.4941687285900116e-02 -7.3481239378452301e-02 - <_> - - 0 -1 1742 -1.0086740076076239e-04 - - 5.8873329311609268e-02 -5.0781998783349991e-02 - <_> - - 0 -1 1743 8.7035987235140055e-05 - - -6.9829471409320831e-02 8.2421161234378815e-02 - <_> - - 0 -1 1744 9.9490047432482243e-05 - - -5.0873178988695145e-02 6.2739193439483643e-02 - <_> - - 0 -1 1745 -9.9564917036332190e-05 - - 9.5691867172718048e-02 -8.1678442656993866e-02 - <_> - - 0 -1 1746 3.5038128495216370e-02 - - 2.4704539682716131e-03 -7.5103992223739624e-01 - <_> - - 0 -1 1747 -2.2841310128569603e-02 - - -3.8842248916625977e-01 1.2580679729580879e-02 - <_> - - 0 -1 1748 -1.0086740076076239e-04 - - 4.8513848334550858e-02 -4.4357851147651672e-02 - <_> - - 0 -1 1749 8.7035987235140055e-05 - - -6.9275371730327606e-02 8.0701768398284912e-02 - <_> - - 0 -1 1750 8.4506031125783920e-03 - - 2.8818279504776001e-02 -2.3520529270172119e-01 - <_> - - 0 -1 1751 3.3874511718750000e-02 - - -1.8710069358348846e-02 2.9156479239463806e-01 - <_> - - 0 -1 1752 3.0527070164680481e-02 - - 2.8566541150212288e-03 -6.2721562385559082e-01 - <_> - - 0 -1 1753 4.5102681033313274e-03 - - -2.1763099357485771e-02 2.4781370162963867e-01 - <_> - - 0 -1 1754 -1.1711950413882732e-02 - - -8.2332722842693329e-02 7.1632838808000088e-03 - <_> - - 0 -1 1755 -1.9293600693345070e-02 - - -5.4533201456069946e-01 9.4053568318486214e-03 - <_> - - 0 -1 1756 -2.7695020660758018e-02 - - 1.2569870054721832e-01 -2.4778019636869431e-02 - <_> - - 0 -1 1757 6.4738709479570389e-03 - - -4.0420930832624435e-02 1.3924980163574219e-01 - <_> - - 0 -1 1758 8.3701964467763901e-03 - - 2.1314760670065880e-02 -1.3580240309238434e-01 - <_> - - 0 -1 1759 9.5793809741735458e-03 - - 1.0532050393521786e-02 -4.6821591258049011e-01 - <_> - - 0 -1 1760 8.8913729996420443e-05 - - -2.6148770004510880e-02 6.7171059548854828e-02 - <_> - - 0 -1 1761 -7.8428974375128746e-03 - - 1.4042629301548004e-01 -4.0453571826219559e-02 - <_> - - 0 -1 1762 -1.5551749616861343e-02 - - -2.3723240196704865e-01 8.9765731245279312e-03 - <_> - - 0 -1 1763 -1.0940689593553543e-02 - - -2.4828870594501495e-01 2.1254500374197960e-02 - <_> - - 0 -1 1764 1.3340170262381434e-03 - - 5.1965519785881042e-02 -2.4966360628604889e-01 - <_> - - 0 -1 1765 -3.9200708270072937e-03 - - 2.1566860377788544e-01 -2.9206639155745506e-02 - <_> - - 0 -1 1766 -8.4352102130651474e-03 - - 1.3894349336624146e-01 -2.7564799413084984e-02 - <_> - - 0 -1 1767 1.0151269816560671e-04 - - -7.4789039790630341e-02 7.8852757811546326e-02 - <_> - - 0 -1 1768 1.1394869943615049e-04 - - -3.3959168940782547e-02 4.0015239268541336e-02 - <_> - - 0 -1 1769 -1.0446170199429616e-04 - - 9.3367688357830048e-02 -7.0703469216823578e-02 - <_> - - 0 -1 1770 7.1699619293212891e-02 - - 2.0074559375643730e-02 -2.8401699662208557e-01 - <_> - - 0 -1 1771 7.6136142015457153e-02 - - -1.8674589693546295e-02 3.4351688623428345e-01 - <_> - - 0 -1 1772 -1.0139370337128639e-02 - - 7.9048253595829010e-02 -7.6241552829742432e-02 - <_> - - 0 -1 1773 -1.1787709780037403e-02 - - -3.8687211275100708e-01 1.5032519586384296e-02 - <_> - - 0 -1 1774 -1.1715809814631939e-03 - - -1.2566329538822174e-01 4.2748369276523590e-02 - <_> - - 0 -1 1775 -1.1624010221567005e-04 - - 7.7757306396961212e-02 -7.0283323526382446e-02 - <_> - - 0 -1 1776 -4.0296189486980438e-02 - - 4.0789419412612915e-01 -2.4684509262442589e-02 - <_> - - 0 -1 1777 -2.0148590207099915e-02 - - 1.6085879504680634e-01 -3.7873048335313797e-02 - <_> - - 0 -1 1778 -9.9596334621310234e-03 - - 4.6971559524536133e-02 -5.5278468877077103e-02 - <_> - - 0 -1 1779 1.0458829812705517e-02 - - 6.4418478868901730e-03 -7.1921861171722412e-01 - <_> - - 0 -1 1780 -8.3341188728809357e-03 - - 5.9552740305662155e-02 -1.6490520909428596e-02 - <_> - - 0 -1 1781 6.4220251515507698e-03 - - -3.1288038939237595e-02 1.6086129844188690e-01 - <_> - - 0 -1 1782 -1.4171390235424042e-01 - - -4.8521599173545837e-01 4.3316078372299671e-03 - <_> - - 0 -1 1783 -9.2059485614299774e-03 - - -1.3737039268016815e-01 3.9314210414886475e-02 - <_> - - 0 -1 1784 -1.1828100308775902e-02 - - -5.6232619285583496e-01 1.8052730010822415e-03 - <_> - - 0 -1 1785 -2.6902719400823116e-03 - - -2.2296780347824097e-01 2.3458529263734818e-02 - <_> - - 0 -1 1786 1.6899820417165756e-02 - - -2.2523698862642050e-03 3.2749548554420471e-01 - <_> - - 0 -1 1787 6.6508129239082336e-03 - - -2.2151440382003784e-02 2.6804810762405396e-01 - <_> - - 0 -1 1788 -1.1253960430622101e-02 - - -2.1269169449806213e-01 1.9085729494690895e-02 - <_> - - 0 -1 1789 8.1370659172534943e-03 - - 1.9186450168490410e-02 -2.7125069499015808e-01 - <_> - - 0 -1 1790 1.8258720636367798e-02 - - -2.0849399268627167e-02 1.6397699713706970e-01 - <_> - - 0 -1 1791 -7.3184021748602390e-03 - - 1.1440680176019669e-01 -4.5136548578739166e-02 - <_> - - 0 -1 1792 7.0838169194757938e-03 - - -3.0573329329490662e-01 1.5363070182502270e-02 - <_> - - 0 -1 1793 7.9824047861620784e-04 - - 5.4806288331747055e-02 -9.6648342907428741e-02 - <_> - - 0 -1 1794 3.8189259357750416e-03 - - -2.4906789883971214e-02 1.7047740519046783e-01 - <_> - - 0 -1 1795 -9.7243173513561487e-05 - - 9.7341060638427734e-02 -5.9142779558897018e-02 - <_> - - 0 -1 1796 3.8480389863252640e-02 - - -6.9969161413609982e-03 1.1771100014448166e-01 - <_> - - 0 -1 1797 -1.6899229958653450e-02 - - 7.8709267079830170e-02 -8.0960407853126526e-02 - <_> - - 0 -1 1798 3.4140020608901978e-02 - - 2.9647560790181160e-02 -2.1153970062732697e-01 - <_> - - 0 -1 1799 -1.3483889633789659e-03 - - 1.2221589684486389e-01 -5.2371580153703690e-02 - <_> - - 0 -1 1800 -4.5433178544044495e-02 - - 9.3226648867130280e-02 -2.4248609319329262e-02 - <_> - - 0 -1 1801 -9.8451746453065425e-05 - - 6.5616242587566376e-02 -7.7497042715549469e-02 - <_> - - 0 -1 1802 9.4870656728744507e-02 - - -6.5743089653551579e-03 2.4361729621887207e-01 - <_> - - 0 -1 1803 -4.5803082175552845e-03 - - 6.4869597554206848e-02 -8.1663407385349274e-02 - <_> - - 0 -1 1804 7.2096623480319977e-02 - - -1.3442070223391056e-02 1.4696159958839417e-01 - <_> - - 0 -1 1805 -8.6482256650924683e-02 - - -2.6061370968818665e-01 2.4327959865331650e-02 - <_> - - 0 -1 1806 -3.6125909537076950e-02 - - 7.1490518748760223e-02 -6.7800052464008331e-02 - <_> - - 0 -1 1807 -7.6352730393409729e-02 - - 1.3374680280685425e-01 -5.0326138734817505e-02 - <_> - - 0 -1 1808 -1.0973890312016010e-02 - - -6.9340631365776062e-02 1.5405960381031036e-02 - <_> - - 0 -1 1809 1.4667320251464844e-01 - - 1.3563389889895916e-02 -4.0459880232810974e-01 - <_> - - 0 -1 1810 1.2397590093314648e-02 - - 1.8343500792980194e-02 -1.4745520055294037e-01 - <_> - - 0 -1 1811 -4.3075408786535263e-02 - - -3.5041698813438416e-01 1.3814290054142475e-02 - <_> - - 0 -1 1812 -3.6940488964319229e-02 - - -7.8505232930183411e-02 3.4940339624881744e-02 - <_> - - 0 -1 1813 -1.3126240670681000e-01 - - -4.4067218899726868e-01 1.2085669673979282e-02 - <_> - - 0 -1 1814 -4.9558010697364807e-01 - - -3.1593188643455505e-01 1.4849360100924969e-02 - <_> - - 0 -1 1815 -2.4269169662147760e-03 - - -2.4598549306392670e-01 2.1273959428071976e-02 - <_> - - 0 -1 1816 -6.1519298469647765e-04 - - -1.1089760065078735e-01 5.2152808755636215e-02 - <_> - - 0 -1 1817 3.3521879464387894e-02 - - -1.4474649913609028e-02 3.3576649427413940e-01 - <_> - - 0 -1 1818 -4.4954858720302582e-02 - - -4.7776260972023010e-01 2.3775880690664053e-03 - <_> - - 0 -1 1819 -9.6803857013583183e-03 - - -1.3491189479827881e-01 3.7101969122886658e-02 - <_> - - 0 -1 1820 -1.5080680139362812e-02 - - 1.4766040444374084e-01 -1.4693359844386578e-02 - <_> - - 0 -1 1821 -7.0486129261553288e-03 - - 1.2857760488986969e-01 -3.8553401827812195e-02 - <_> - - 0 -1 1822 1.0608400218188763e-02 - - -6.4019598066806793e-02 7.8001968562602997e-02 - <_> - - 0 -1 1823 -5.9643429704010487e-03 - - 6.9554768502712250e-02 -8.1943526864051819e-02 - <_> - - 0 -1 1824 3.9288301020860672e-02 - - 6.0737589374184608e-03 -1.7827449738979340e-01 - <_> - - 0 -1 1825 -1.5277069993317127e-02 - - 1.2987169623374939e-01 -4.5128051191568375e-02 - <_> - - 0 -1 1826 9.2299269454088062e-05 - - -5.5158708244562149e-02 7.2173222899436951e-02 - <_> - - 0 -1 1827 2.4077570438385010e-01 - - 1.3051790185272694e-02 -3.7544038891792297e-01 - <_> - - 0 -1 1828 -8.2777936768252403e-05 - - 8.7432913482189178e-02 -8.0448426306247711e-02 - <_> - - 0 -1 1829 1.0664980072760954e-04 - - -6.8053416907787323e-02 7.9824432730674744e-02 - <_> - - 0 -1 1830 9.2299269454088062e-05 - - -5.7555299252271652e-02 7.4612356722354889e-02 - <_> - - 0 -1 1831 -8.7791820988059044e-05 - - 8.9770622551441193e-02 -7.8726790845394135e-02 - <_> - - 0 -1 1832 -9.7666241344995797e-05 - - 7.9511262476444244e-02 -8.0778427422046661e-02 - <_> - - 0 -1 1833 1.5842399443499744e-04 - - -6.3730709254741669e-02 8.8729366660118103e-02 - <_> - - 0 -1 1834 1.2284370313864201e-04 - - -5.6088779121637344e-02 8.1273712217807770e-02 - <_> - - 0 -1 1835 -1.1712549894582480e-04 - - 7.5557589530944824e-02 -7.6586730778217316e-02 - <_> - - 0 -1 1836 1.0328610427677631e-02 - - 1.0152160190045834e-02 -2.8533908724784851e-01 - <_> - - 0 -1 1837 2.9327110387384892e-03 - - 3.2252810895442963e-02 -1.5635579824447632e-01 - <_> - - 0 -1 1838 -1.0308229684596881e-04 - - 5.0609830766916275e-02 -5.6346200406551361e-02 - <_> - - 0 -1 1839 1.0124980326509103e-04 - - -6.1613030731678009e-02 8.9073821902275085e-02 - <_> - - 0 -1 1840 3.8937058299779892e-02 - - 2.0891619846224785e-02 -1.2963040173053741e-01 - <_> - - 0 -1 1841 1.1204339563846588e-02 - - -2.8574090451002121e-02 1.7617300152778625e-01 - <_> - - 0 -1 1842 1.0314460098743439e-01 - - 3.9013950154185295e-03 -4.3666309118270874e-01 - <_> - - 0 -1 1843 -1.1191029846668243e-01 - - 3.3865529298782349e-01 -1.4155720360577106e-02 - <_> - - 0 -1 1844 -2.6280559599399567e-02 - - -8.9043527841567993e-02 1.8448470160365105e-02 - <_> - 317 - -1.3818249702453613e+00 - - <_> - - 0 -1 1845 -1.2676210142672062e-02 - - 2.0237310230731964e-01 -2.5077709555625916e-01 - <_> - - 0 -1 1846 -4.6319760382175446e-02 - - 2.1999239921569824e-01 -1.6146729886531830e-01 - <_> - - 0 -1 1847 -3.5081539303064346e-02 - - 1.5923239290714264e-01 -2.1780499815940857e-01 - <_> - - 0 -1 1848 -1.8382079899311066e-02 - - 2.5103780627250671e-01 -3.1736700329929590e-03 - <_> - - 0 -1 1849 -7.4837259016931057e-03 - - 1.5708750486373901e-01 -1.2671829760074615e-01 - <_> - - 0 -1 1850 4.6564780175685883e-02 - - -2.2000789642333984e-01 5.6889738887548447e-02 - <_> - - 0 -1 1851 -2.0530119538307190e-02 - - 2.2484280169010162e-01 -8.0766998231410980e-02 - <_> - - 0 -1 1852 -2.1643849089741707e-02 - - 1.9534820318222046e-01 -7.6146677136421204e-02 - <_> - - 0 -1 1853 -3.3336980268359184e-03 - - 9.7043372690677643e-02 -2.0862129330635071e-01 - <_> - - 0 -1 1854 2.7746830135583878e-02 - - -4.2685609310865402e-02 1.9736699759960175e-01 - <_> - - 0 -1 1855 3.1199149787425995e-02 - - -8.8123418390750885e-02 1.6084210574626923e-01 - <_> - - 0 -1 1856 -1.4883769676089287e-02 - - 1.2884040176868439e-01 -4.9883481115102768e-02 - <_> - - 0 -1 1857 -1.2498069554567337e-02 - - 1.9557100534439087e-01 -7.3339052498340607e-02 - <_> - - 0 -1 1858 6.8398728035390377e-03 - - -1.9100619852542877e-01 3.0017739161849022e-02 - <_> - - 0 -1 1859 1.6698269173502922e-02 - - -6.6535621881484985e-02 2.4306890368461609e-01 - <_> - - 0 -1 1860 -1.3585180044174194e-02 - - -3.1157851219177246e-01 3.0332250520586967e-02 - <_> - - 0 -1 1861 -1.6012180596590042e-02 - - -3.8150539994239807e-01 2.9990119859576225e-02 - <_> - - 0 -1 1862 2.4959780275821686e-02 - - 1.7127040773630142e-02 -1.7174740135669708e-01 - <_> - - 0 -1 1863 -6.2679812312126160e-02 - - -2.4782620370388031e-01 5.0681248307228088e-02 - <_> - - 0 -1 1864 -5.1468160003423691e-02 - - -6.0602962970733643e-01 2.3179119452834129e-03 - <_> - - 0 -1 1865 1.7415819689631462e-02 - - 3.3250451087951660e-02 -3.6394399404525757e-01 - <_> - - 0 -1 1866 3.3267650753259659e-02 - - -5.9090301394462585e-02 2.3938019573688507e-01 - <_> - - 0 -1 1867 -1.0759649740066379e-04 - - 6.7025236785411835e-02 -1.7393949627876282e-01 - <_> - - 0 -1 1868 -1.1119269765913486e-02 - - -2.1026720106601715e-01 1.6025310382246971e-02 - <_> - - 0 -1 1869 -8.6540812626481056e-03 - - -2.9001379013061523e-01 3.4559149295091629e-02 - <_> - - 0 -1 1870 1.0427879897179082e-04 - - -1.3615639507770538e-01 5.5320408195257187e-02 - <_> - - 0 -1 1871 -1.4959470368921757e-02 - - -2.8106829524040222e-01 3.3888410776853561e-02 - <_> - - 0 -1 1872 -1.5031349658966064e-01 - - -1.0209769755601883e-01 9.4559686258435249e-03 - <_> - - 0 -1 1873 -2.0292310044169426e-02 - - -3.6912149190902710e-01 2.5728639215230942e-02 - <_> - - 0 -1 1874 1.6227319836616516e-02 - - 6.1225090175867081e-03 -4.6356171369552612e-01 - <_> - - 0 -1 1875 1.2045660056173801e-02 - - 3.1531188637018204e-02 -2.9530370235443115e-01 - <_> - - 0 -1 1876 9.5706343650817871e-02 - - 9.0816244482994080e-03 -6.9083817303180695e-02 - <_> - - 0 -1 1877 -1.4548900723457336e-01 - - -3.1886878609657288e-01 3.4880429506301880e-02 - <_> - - 0 -1 1878 1.1059490032494068e-02 - - 3.8989599794149399e-02 -1.3711850345134735e-01 - <_> - - 0 -1 1879 -5.6998720392584801e-03 - - -3.5794290900230408e-01 2.6885839179158211e-02 - <_> - - 0 -1 1880 -4.9371081404387951e-03 - - 1.0142619907855988e-01 -5.1279809325933456e-02 - <_> - - 0 -1 1881 -1.4712589792907238e-02 - - 1.2495979666709900e-01 -7.7691748738288879e-02 - <_> - - 0 -1 1882 1.1282210238277912e-02 - - -3.3828750252723694e-02 1.4979380369186401e-01 - <_> - - 0 -1 1883 -9.6910931169986725e-03 - - 2.3743079602718353e-01 -4.8856690526008606e-02 - <_> - - 0 -1 1884 -1.7229679971933365e-02 - - -5.6515389680862427e-01 8.7145604193210602e-03 - <_> - - 0 -1 1885 5.6609478779137135e-03 - - -6.0676008462905884e-02 1.5271340310573578e-01 - <_> - - 0 -1 1886 -5.3604390472173691e-02 - - -2.1472039818763733e-01 1.4890110120177269e-02 - <_> - - 0 -1 1887 -1.0153600014746189e-02 - - -3.1097480654716492e-01 2.8160639107227325e-02 - <_> - - 0 -1 1888 -1.7072910442948341e-02 - - 7.1882233023643494e-02 -5.2844271063804626e-02 - <_> - - 0 -1 1889 -1.0728809982538223e-02 - - 1.6389510035514832e-01 -5.4277900606393814e-02 - <_> - - 0 -1 1890 1.0714929550886154e-02 - - -4.3529260903596878e-02 1.5492570400238037e-01 - <_> - - 0 -1 1891 -9.1774649918079376e-03 - - 8.2661621272563934e-02 -1.1048959940671921e-01 - <_> - - 0 -1 1892 -5.1653548143804073e-03 - - 4.6839110553264618e-02 -5.0071209669113159e-02 - <_> - - 0 -1 1893 1.3472570106387138e-02 - - 2.3994479328393936e-02 -3.6207410693168640e-01 - <_> - - 0 -1 1894 9.8625328973866999e-05 - - -7.2403706610202789e-02 8.5279501974582672e-02 - <_> - - 0 -1 1895 -3.8795128930360079e-03 - - 9.9527172744274139e-02 -9.3315653502941132e-02 - <_> - - 0 -1 1896 2.4870259687304497e-02 - - 1.6243930906057358e-02 -4.6679219603538513e-01 - <_> - - 0 -1 1897 1.3287420570850372e-01 - - 2.9302369803190231e-02 -2.8217709064483643e-01 - <_> - - 0 -1 1898 1.3053320348262787e-02 - - -2.2584149613976479e-02 1.9151739776134491e-01 - <_> - - 0 -1 1899 -2.3439459037035704e-03 - - 1.3174580037593842e-01 -7.1855299174785614e-02 - <_> - - 0 -1 1900 -4.3457929044961929e-02 - - 6.9369621574878693e-02 -2.2885309532284737e-02 - <_> - - 0 -1 1901 -5.9775430709123611e-02 - - 2.3593389987945557e-01 -3.9723061025142670e-02 - <_> - - 0 -1 1902 -6.1264610849320889e-03 - - -2.1994990110397339e-01 2.2333640605211258e-02 - <_> - - 0 -1 1903 -2.2975069005042315e-03 - - 1.1488830298185349e-01 -8.4905907511711121e-02 - <_> - - 0 -1 1904 3.2943069934844971e-02 - - 8.4422080544754863e-04 -8.7972801923751831e-01 - <_> - - 0 -1 1905 -1.9385489868000150e-03 - - 8.5967347025871277e-02 -1.1247129738330841e-01 - <_> - - 0 -1 1906 -2.1609459072351456e-03 - - 7.8462250530719757e-02 -3.7393838167190552e-02 - <_> - - 0 -1 1907 -9.0928059071302414e-03 - - -4.1091561317443848e-01 1.8252879381179810e-02 - <_> - - 0 -1 1908 -1.6027869284152985e-01 - - -2.2541759908199310e-01 1.5782350674271584e-02 - <_> - - 0 -1 1909 -4.9950089305639267e-02 - - -1.8641009926795959e-01 4.2277488857507706e-02 - <_> - - 0 -1 1910 -1.0969909839332104e-02 - - -4.1804128885269165e-01 1.6149029135704041e-02 - <_> - - 0 -1 1911 9.3183261924423277e-05 - - -7.6907746493816376e-02 1.0072469711303711e-01 - <_> - - 0 -1 1912 1.3265410438179970e-02 - - 1.9543310627341270e-02 -1.7777380347251892e-01 - <_> - - 0 -1 1913 -1.2569909915328026e-02 - - -2.1007700264453888e-01 3.5157121717929840e-02 - <_> - - 0 -1 1914 9.8762623965740204e-03 - - 6.7626000382006168e-03 -3.0761849880218506e-01 - <_> - - 0 -1 1915 -2.1076570264995098e-03 - - 1.3363209366798401e-01 -5.7092700153589249e-02 - <_> - - 0 -1 1916 -7.1060168556869030e-04 - - -1.7669269442558289e-01 6.5393269062042236e-02 - <_> - - 0 -1 1917 -9.2764664441347122e-03 - - -2.4678149819374084e-01 2.7610789984464645e-02 - <_> - - 0 -1 1918 6.5380721352994442e-03 - - -2.3361699655652046e-02 2.5770819187164307e-01 - <_> - - 0 -1 1919 -1.1298989877104759e-02 - - 1.5731829404830933e-01 -4.3780930340290070e-02 - <_> - - 0 -1 1920 -2.8048140928149223e-02 - - -3.9991301298141479e-01 9.0252067893743515e-03 - <_> - - 0 -1 1921 1.1714899912476540e-02 - - 2.2580929100513458e-02 -3.1374511122703552e-01 - <_> - - 0 -1 1922 -1.2955210695508868e-04 - - 3.7720758467912674e-02 -6.0533870011568069e-02 - <_> - - 0 -1 1923 -3.7807179614901543e-03 - - 1.3487710058689117e-01 -5.6583140045404434e-02 - <_> - - 0 -1 1924 -4.9128020182251930e-03 - - 1.4564900100231171e-01 -2.7835259214043617e-02 - <_> - - 0 -1 1925 -1.6391910612583160e-02 - - -6.4010322093963623e-01 1.1727060191333294e-02 - <_> - - 0 -1 1926 -1.1464639566838741e-02 - - 3.9367951452732086e-02 -3.3033378422260284e-02 - <_> - - 0 -1 1927 -3.4916009753942490e-02 - - -3.3986571431159973e-01 2.0481580868363380e-02 - <_> - - 0 -1 1928 4.9870118498802185e-02 - - -5.0045821815729141e-02 4.6599239110946655e-02 - <_> - - 0 -1 1929 -1.0137989738723263e-04 - - 8.6516477167606354e-02 -8.1374593079090118e-02 - <_> - - 0 -1 1930 -8.1614796072244644e-03 - - 1.2585890293121338e-01 -2.4253010749816895e-02 - <_> - - 0 -1 1931 -5.1362808793783188e-02 - - 1.2383320182561874e-01 -5.7537298649549484e-02 - <_> - - 0 -1 1932 -9.2184888198971748e-03 - - 1.3315090537071228e-01 -6.2671236693859100e-02 - <_> - - 0 -1 1933 5.9735208749771118e-02 - - 1.9387029111385345e-02 -3.7452590465545654e-01 - <_> - - 0 -1 1934 -3.7147789262235165e-03 - - 1.3588359951972961e-01 -1.1573229730129242e-01 - <_> - - 0 -1 1935 -1.6745850443840027e-03 - - -2.1437530219554901e-01 3.1279198825359344e-02 - <_> - - 0 -1 1936 2.7367400005459785e-02 - - 6.2164650298655033e-03 -1.6582269966602325e-01 - <_> - - 0 -1 1937 -5.6425300426781178e-03 - - 8.9943163096904755e-02 -7.7249430119991302e-02 - <_> - - 0 -1 1938 -4.4944159686565399e-02 - - 1.0177309811115265e-01 -7.9409472644329071e-02 - <_> - - 0 -1 1939 -1.2397750280797482e-02 - - -2.5522980093955994e-01 2.5932550430297852e-02 - <_> - - 0 -1 1940 1.3257490098476410e-01 - - -6.0667068464681506e-04 -9.0462738275527954e-01 - <_> - - 0 -1 1941 -4.7687850892543793e-02 - - -2.9634040594100952e-01 2.2060779854655266e-02 - <_> - - 0 -1 1942 -1.3438980386126786e-04 - - 3.4807950258255005e-02 -2.3007700219750404e-02 - <_> - - 0 -1 1943 -4.7759748995304108e-02 - - 3.2043048739433289e-01 -2.0720070227980614e-02 - <_> - - 0 -1 1944 8.4569696336984634e-03 - - 1.6900449991226196e-02 -2.3434109985828400e-01 - <_> - - 0 -1 1945 -9.0884640812873840e-03 - - -2.7401408553123474e-01 2.3920679464936256e-02 - <_> - - 0 -1 1946 1.1316059681121260e-04 - - -7.1908891201019287e-02 6.4337499439716339e-02 - <_> - - 0 -1 1947 -2.2978619672358036e-03 - - 1.4139309525489807e-01 -4.6627011150121689e-02 - <_> - - 0 -1 1948 -7.0250302087515593e-05 - - 4.3631881475448608e-02 -8.9844681322574615e-02 - <_> - - 0 -1 1949 -2.4793320335447788e-03 - - 1.1531940102577209e-01 -5.4794210940599442e-02 - <_> - - 0 -1 1950 -2.3779749870300293e-02 - - -8.9623087644577026e-01 8.2168419612571597e-04 - <_> - - 0 -1 1951 1.5105960192158818e-03 - - -4.6251200139522552e-02 1.4637500047683716e-01 - <_> - - 0 -1 1952 -1.9929770380258560e-02 - - 1.0345499962568283e-01 -6.9326370954513550e-02 - <_> - - 0 -1 1953 5.6873750872910023e-03 - - 1.5714770182967186e-02 -4.3551269173622131e-01 - <_> - - 0 -1 1954 2.5528179481625557e-02 - - 1.7960410565137863e-02 -1.0271559655666351e-01 - <_> - - 0 -1 1955 6.2439180910587311e-03 - - -5.0889659672975540e-02 1.2102349847555161e-01 - <_> - - 0 -1 1956 -3.8433890789747238e-02 - - -1.1351989954710007e-01 1.1109850369393826e-02 - <_> - - 0 -1 1957 -1.1655789799988270e-02 - - 1.8188430368900299e-01 -3.4386049956083298e-02 - <_> - - 0 -1 1958 1.7019029706716537e-02 - - -2.8822610154747963e-02 1.7922890186309814e-01 - <_> - - 0 -1 1959 -2.1281840279698372e-02 - - 7.9361222684383392e-02 -1.4837169647216797e-01 - <_> - - 0 -1 1960 6.4630597829818726e-02 - - -8.3243446424603462e-03 3.4404671192169189e-01 - <_> - - 0 -1 1961 -2.0165389403700829e-02 - - 9.9575139582157135e-02 -6.4981013536453247e-02 - <_> - - 0 -1 1962 -4.8298938199877739e-03 - - 3.9893500506877899e-02 -4.0078371763229370e-02 - <_> - - 0 -1 1963 -3.3053491264581680e-02 - - 1.1697690188884735e-01 -5.5427171289920807e-02 - <_> - - 0 -1 1964 6.2406919896602631e-02 - - -2.2736979648470879e-02 3.6325179040431976e-02 - <_> - - 0 -1 1965 -6.1196450144052505e-02 - - 1.9369029998779297e-01 -3.5640351474285126e-02 - <_> - - 0 -1 1966 1.0678559541702271e-02 - - 1.6535019502043724e-02 -4.2336410284042358e-01 - <_> - - 0 -1 1967 1.6491359099745750e-02 - - -4.3294098228216171e-02 1.7356230318546295e-01 - <_> - - 0 -1 1968 -5.2192797884345055e-03 - - -4.0950641036033630e-01 2.0815720781683922e-02 - <_> - - 0 -1 1969 3.7556931376457214e-02 - - -3.5021461546421051e-02 1.9875930249691010e-01 - <_> - - 0 -1 1970 1.1630539665929973e-04 - - -6.6101007163524628e-02 2.8246320784091949e-02 - <_> - - 0 -1 1971 -2.9590369667857885e-03 - - -2.3298619687557220e-01 2.6747660711407661e-02 - <_> - - 0 -1 1972 9.7334973514080048e-02 - - 1.6407809453085065e-03 -5.2689087390899658e-01 - <_> - - 0 -1 1973 9.4552114605903625e-03 - - -1.2956419587135315e-01 4.3152049183845520e-02 - <_> - - 0 -1 1974 -1.9573559984564781e-03 - - 9.4022996723651886e-02 -5.0729468464851379e-02 - <_> - - 0 -1 1975 -1.9813209772109985e-02 - - -2.8099170327186584e-01 2.5431409478187561e-02 - <_> - - 0 -1 1976 4.6183229424059391e-03 - - 2.0152140408754349e-02 -2.8583228588104248e-01 - <_> - - 0 -1 1977 -1.3847060035914183e-03 - - 1.2452150136232376e-01 -4.8138331621885300e-02 - <_> - - 0 -1 1978 4.2347438633441925e-02 - - 1.4238060452044010e-02 -1.4341959357261658e-01 - <_> - - 0 -1 1979 -3.7257060408592224e-01 - - -3.1286910176277161e-01 1.8492879346013069e-02 - <_> - - 0 -1 1980 -3.0691500753164291e-02 - - -4.1157820820808411e-01 1.0822709649801254e-02 - <_> - - 0 -1 1981 -1.6395879909396172e-02 - - 1.4505170285701752e-01 -4.0790930390357971e-02 - <_> - - 0 -1 1982 -6.2989019788801670e-03 - - -4.1820481419563293e-01 1.2296830303966999e-02 - <_> - - 0 -1 1983 9.4060532748699188e-02 - - 1.3523289933800697e-02 -3.6032849550247192e-01 - <_> - - 0 -1 1984 -3.2638560980558395e-02 - - 8.1849083304405212e-02 -7.4722953140735626e-02 - <_> - - 0 -1 1985 -1.4613750390708447e-02 - - -2.2184589505195618e-01 2.5819279253482819e-02 - <_> - - 0 -1 1986 -1.7758510075509548e-03 - - 8.7858870625495911e-02 -2.7116740122437477e-02 - <_> - - 0 -1 1987 -3.7843519821763039e-03 - - -2.5046458840370178e-01 2.1436279639601707e-02 - <_> - - 0 -1 1988 -6.0635298723354936e-04 - - -4.7731950879096985e-01 1.1409179866313934e-01 - <_> - - 0 -1 1989 1.0241969721391797e-04 - - -9.3447387218475342e-02 6.7655086517333984e-02 - <_> - - 0 -1 1990 6.5193139016628265e-03 - - -1.4612539671361446e-02 2.0815970003604889e-01 - <_> - - 0 -1 1991 5.3755999542772770e-03 - - -3.8265600800514221e-02 1.9941569864749908e-01 - <_> - - 0 -1 1992 2.5083690416067839e-03 - - -3.9266299456357956e-02 4.1621260344982147e-02 - <_> - - 0 -1 1993 -6.1823232099413872e-03 - - 1.0581050068140030e-01 -5.8252051472663879e-02 - <_> - - 0 -1 1994 -1.7877219943329692e-03 - - 1.5875810384750366e-01 -3.8672041147947311e-02 - <_> - - 0 -1 1995 2.0424230024218559e-03 - - -1.2316930294036865e-01 4.7692388296127319e-02 - <_> - - 0 -1 1996 -7.9678567999508232e-05 - - 5.8007881045341492e-02 -3.7209790199995041e-02 - <_> - - 0 -1 1997 -2.4312110617756844e-03 - - 1.8218949437141418e-01 -3.1718999147415161e-02 - <_> - - 0 -1 1998 9.7082564607262611e-03 - - 2.5093549862504005e-02 -2.1581520140171051e-01 - <_> - - 0 -1 1999 1.8651289865374565e-02 - - -5.6221790611743927e-02 1.0076929628849030e-01 - <_> - - 0 -1 2000 -4.3425198644399643e-02 - - -5.2580821514129639e-01 2.3139629047363997e-03 - <_> - - 0 -1 2001 9.8262643441557884e-03 - - 2.8758440166711807e-02 -2.0458370447158813e-01 - <_> - - 0 -1 2002 -2.5310849305242300e-03 - - 2.2459560632705688e-01 -4.7744251787662506e-02 - <_> - - 0 -1 2003 -9.8680997325573117e-05 - - 5.2503999322652817e-02 -1.1616130173206329e-01 - <_> - - 0 -1 2004 8.7780077592469752e-05 - - -5.7921901345252991e-02 5.2974458783864975e-02 - <_> - - 0 -1 2005 -2.0101759582757950e-03 - - 1.3039940595626831e-01 -4.1645880788564682e-02 - <_> - - 0 -1 2006 -6.9859880022704601e-03 - - -2.5740739703178406e-01 2.2923920303583145e-02 - <_> - - 0 -1 2007 -8.5653923451900482e-03 - - -3.4816130995750427e-01 1.6321830451488495e-02 - <_> - - 0 -1 2008 4.1130301542580128e-03 - - -1.1193159967660904e-02 7.8239932656288147e-02 - <_> - - 0 -1 2009 -2.8649440035223961e-02 - - -2.4921450018882751e-01 2.3253569379448891e-02 - <_> - - 0 -1 2010 -7.1668572723865509e-02 - - 1.8234179913997650e-01 -3.2952211797237396e-02 - <_> - - 0 -1 2011 2.0047359168529510e-02 - - 3.4545011818408966e-02 -1.7593920230865479e-01 - <_> - - 0 -1 2012 9.2730745673179626e-03 - - 2.4312171153724194e-03 -3.6256709694862366e-01 - <_> - - 0 -1 2013 -1.3696910173166543e-04 - - 5.3849659860134125e-02 -1.0452479869127274e-01 - <_> - - 0 -1 2014 -1.6431650146842003e-02 - - 1.0723640024662018e-01 -2.3307560011744499e-02 - <_> - - 0 -1 2015 1.5543770045042038e-02 - - -6.2471259385347366e-02 1.2017949670553207e-01 - <_> - - 0 -1 2016 1.6755719482898712e-01 - - 2.9874350875616074e-03 -2.5671449303627014e-01 - <_> - - 0 -1 2017 -1.0847680270671844e-01 - - 3.7149819731712341e-01 -1.6100300475955009e-02 - <_> - - 0 -1 2018 -3.6692418158054352e-02 - - 1.0603889822959900e-01 -2.8071129694581032e-02 - <_> - - 0 -1 2019 -1.0187889635562897e-01 - - -5.4750579595565796e-01 1.0856229811906815e-02 - <_> - - 0 -1 2020 -2.3083990439772606e-02 - - -3.9017239212989807e-01 2.3198500275611877e-03 - <_> - - 0 -1 2021 1.1738779954612255e-02 - - 1.7849219962954521e-02 -2.9607269167900085e-01 - <_> - - 0 -1 2022 1.1186770163476467e-02 - - 1.7683990299701691e-02 -1.0949549823999405e-01 - <_> - - 0 -1 2023 1.3084909878671169e-02 - - -5.5493030697107315e-02 9.3764066696166992e-02 - <_> - - 0 -1 2024 -4.8294991254806519e-02 - - -1.0963620245456696e-01 6.0481518507003784e-02 - <_> - - 0 -1 2025 -1.2075870297849178e-02 - - 6.8646393716335297e-02 -8.8205531239509583e-02 - <_> - - 0 -1 2026 2.2616419941186905e-02 - - -5.2717179059982300e-02 3.7717801332473755e-01 - <_> - - 0 -1 2027 2.9184659942984581e-02 - - -1.7316710203886032e-02 3.2407519221305847e-01 - <_> - - 0 -1 2028 5.6647129356861115e-02 - - 1.4209809713065624e-02 -4.0311878919601440e-01 - <_> - - 0 -1 2029 -6.0038570314645767e-02 - - 6.3324189186096191e-01 -9.3253394588828087e-03 - <_> - - 0 -1 2030 -2.1041039377450943e-02 - - -7.0778012275695801e-02 1.0951139964163303e-02 - <_> - - 0 -1 2031 1.0698719881474972e-02 - - 3.0739499256014824e-02 -1.8623949587345123e-01 - <_> - - 0 -1 2032 -1.4163380255922675e-03 - - 1.4207880198955536e-01 -5.6051291525363922e-02 - <_> - - 0 -1 2033 1.9057249650359154e-02 - - 1.1568720452487469e-02 -4.1893801093101501e-01 - <_> - - 0 -1 2034 2.4255400523543358e-02 - - -2.7422881126403809e-01 1.5305199660360813e-02 - <_> - - 0 -1 2035 -1.6801659949123859e-03 - - 1.2455579638481140e-01 -4.5174699276685715e-02 - <_> - - 0 -1 2036 -7.1042921626940370e-04 - - 5.2189279347658157e-02 -3.7788871675729752e-02 - <_> - - 0 -1 2037 -9.6175346698146313e-05 - - 8.0373562872409821e-02 -6.5977610647678375e-02 - <_> - - 0 -1 2038 3.0253970623016357e-01 - - -6.4190649427473545e-03 2.8734558820724487e-01 - <_> - - 0 -1 2039 -3.3847650885581970e-01 - - -2.9949620366096497e-01 1.9311109557747841e-02 - <_> - - 0 -1 2040 1.8414769321680069e-02 - - 4.1407728567719460e-03 -3.2009989023208618e-01 - <_> - - 0 -1 2041 2.0269309170544147e-03 - - 3.8851920515298843e-02 -1.3650539517402649e-01 - <_> - - 0 -1 2042 -2.6168529875576496e-03 - - 2.1721449494361877e-01 -4.5792929828166962e-02 - <_> - - 0 -1 2043 -1.4506299339700490e-04 - - 7.7357552945613861e-02 -7.0164747536182404e-02 - <_> - - 0 -1 2044 1.5293279429897666e-03 - - 2.2826919332146645e-02 -6.4625710248947144e-02 - <_> - - 0 -1 2045 9.2465557157993317e-02 - - -3.0449060723185539e-02 2.2376939654350281e-01 - <_> - - 0 -1 2046 4.2030760087072849e-03 - - -6.8453937768936157e-02 6.1928309500217438e-02 - <_> - - 0 -1 2047 8.0572906881570816e-05 - - -5.9534300118684769e-02 8.1452347338199615e-02 - <_> - - 0 -1 2048 1.1286319792270660e-01 - - -1.3413679553195834e-03 5.4813021421432495e-01 - <_> - - 0 -1 2049 -6.4409552142024040e-03 - - -1.8755680322647095e-01 2.6392029598355293e-02 - <_> - - 0 -1 2050 -1.0748989880084991e-02 - - 1.2552680075168610e-01 -4.0465429425239563e-02 - <_> - - 0 -1 2051 -5.3139980882406235e-02 - - 1.2461829930543900e-01 -4.1095100343227386e-02 - <_> - - 0 -1 2052 2.2604359313845634e-02 - - -1.7869070172309875e-02 2.4132210016250610e-01 - <_> - - 0 -1 2053 2.2205261047929525e-03 - - 3.1968820840120316e-02 -1.6952280700206757e-01 - <_> - - 0 -1 2054 -3.9627980440855026e-03 - - 3.8538839668035507e-02 -2.9197089374065399e-02 - <_> - - 0 -1 2055 -1.5152409672737122e-02 - - 1.5154479444026947e-01 -3.3755920827388763e-02 - <_> - - 0 -1 2056 1.2909620068967342e-02 - - 1.9307920709252357e-02 -2.6814758777618408e-01 - <_> - - 0 -1 2057 -5.0301581621170044e-02 - - 2.6842170953750610e-01 -1.9832609221339226e-02 - <_> - - 0 -1 2058 2.3144690692424774e-01 - - -4.4317539781332016e-02 1.1355269700288773e-01 - <_> - - 0 -1 2059 2.4806660413742065e-01 - - -3.6366160959005356e-02 1.5459740161895752e-01 - <_> - - 0 -1 2060 1.0751839727163315e-02 - - -5.6199159473180771e-02 9.1953150928020477e-02 - <_> - - 0 -1 2061 -1.0409940034151077e-01 - - 2.6155480742454529e-01 -2.2073730826377869e-02 - <_> - - 0 -1 2062 3.4987339749932289e-03 - - -3.4594438970088959e-02 5.2544221282005310e-02 - <_> - - 0 -1 2063 -1.8789369612932205e-02 - - 1.4423690736293793e-01 -3.7627071142196655e-02 - <_> - - 0 -1 2064 2.3785369470715523e-02 - - -1.4142000116407871e-02 4.0588378906250000e-02 - <_> - - 0 -1 2065 -5.3594702482223511e-01 - - -3.1141081452369690e-01 1.6834039241075516e-02 - <_> - - 0 -1 2066 -9.9058146588504314e-05 - - 1.1654440313577652e-01 -9.4845108687877655e-02 - <_> - - 0 -1 2067 5.1509789191186428e-03 - - 2.4767279624938965e-02 -2.1172380447387695e-01 - <_> - - 0 -1 2068 -2.4665810167789459e-02 - - 8.9738540351390839e-02 -2.5230530649423599e-02 - <_> - - 0 -1 2069 -1.0207219747826457e-04 - - 7.1243196725845337e-02 -6.9542892277240753e-02 - <_> - - 0 -1 2070 8.9753637439571321e-05 - - -6.4138673245906830e-02 3.4588780254125595e-02 - <_> - - 0 -1 2071 7.5129319156985730e-05 - - -7.0998512208461761e-02 6.9298543035984039e-02 - <_> - - 0 -1 2072 1.2670209631323814e-02 - - 1.9961479119956493e-03 -6.1854892969131470e-01 - <_> - - 0 -1 2073 1.3350560038816184e-04 - - -9.3998126685619354e-02 6.0371071100234985e-02 - <_> - - 0 -1 2074 3.5089589655399323e-03 - - -4.3076660484075546e-02 6.9475613534450531e-02 - <_> - - 0 -1 2075 5.0673130899667740e-03 - - -5.1575150340795517e-02 1.2066970020532608e-01 - <_> - - 0 -1 2076 -4.9438390135765076e-01 - - -3.3594810962677002e-01 3.4810409415513277e-03 - <_> - - 0 -1 2077 3.1801950931549072e-01 - - -1.5378340147435665e-02 3.3919140696525574e-01 - <_> - - 0 -1 2078 -3.5130660980939865e-02 - - 1.8598470091819763e-01 -1.8994120880961418e-02 - <_> - - 0 -1 2079 -1.0103350359713659e-04 - - 5.9129860252141953e-02 -8.6535729467868805e-02 - <_> - - 0 -1 2080 -7.3789812624454498e-02 - - -1.8977540731430054e-01 3.4424799960106611e-03 - <_> - - 0 -1 2081 4.8484738916158676e-02 - - -1.9127920269966125e-02 3.3737879991531372e-01 - <_> - - 0 -1 2082 -3.2950159907341003e-01 - - -2.4671790003776550e-01 8.9904768392443657e-03 - <_> - - 0 -1 2083 5.1932130008935928e-02 - - 2.9886350035667419e-02 -1.7665469646453857e-01 - <_> - - 0 -1 2084 -4.7828998416662216e-02 - - 1.3356339931488037e-01 -2.2263629361987114e-02 - <_> - - 0 -1 2085 6.8820808082818985e-03 - - 2.6210820302367210e-02 -2.0100249350070953e-01 - <_> - - 0 -1 2086 7.0850020274519920e-03 - - 7.2960550896823406e-03 -2.2371199727058411e-01 - <_> - - 0 -1 2087 -2.7695680037140846e-02 - - 5.0937449932098389e-01 -1.0129760019481182e-02 - <_> - - 0 -1 2088 -3.7936570588499308e-03 - - -2.7367559075355530e-01 2.2888140752911568e-02 - <_> - - 0 -1 2089 6.6490046679973602e-02 - - -1.7767919227480888e-02 3.0243128538131714e-01 - <_> - - 0 -1 2090 2.4492349475622177e-02 - - 1.6199620440602303e-02 -1.8059089779853821e-01 - <_> - - 0 -1 2091 3.9224490523338318e-02 - - 6.2305349856615067e-03 -7.2741222381591797e-01 - <_> - - 0 -1 2092 -3.9555127732455730e-03 - - 8.3237506449222565e-02 -5.9971958398818970e-02 - <_> - - 0 -1 2093 -4.0117479860782623e-02 - - -8.9912259578704834e-01 5.7570450007915497e-03 - <_> - - 0 -1 2094 3.7345938384532928e-02 - - -1.0278220288455486e-02 5.5619978904724121e-01 - <_> - - 0 -1 2095 3.5555940121412277e-03 - - 1.6657149419188499e-02 -3.3648529648780823e-01 - <_> - - 0 -1 2096 -1.7665129853412509e-03 - - 1.1981459707021713e-01 -3.9624880999326706e-02 - <_> - - 0 -1 2097 4.8014218918979168e-03 - - 3.4317120909690857e-02 -1.4242500066757202e-01 - <_> - - 0 -1 2098 -4.8842090182006359e-03 - - -2.4056419730186462e-01 5.4772831499576569e-03 - <_> - - 0 -1 2099 1.1965839803451672e-04 - - -6.5111830830574036e-02 9.1186530888080597e-02 - <_> - - 0 -1 2100 6.1463210731744766e-02 - - 2.2536460310220718e-03 -5.8605438470840454e-01 - <_> - - 0 -1 2101 6.9882362149655819e-03 - - -5.1632720977067947e-02 1.0069630295038223e-01 - <_> - - 0 -1 2102 -1.5248640440404415e-02 - - -3.9649030566215515e-01 7.3884390294551849e-03 - <_> - - 0 -1 2103 -9.1895330115221441e-05 - - 6.6976770758628845e-02 -6.9580227136611938e-02 - <_> - - 0 -1 2104 -3.8073170930147171e-02 - - 7.1678817272186279e-02 -5.4218940436840057e-02 - <_> - - 0 -1 2105 6.0213740915060043e-02 - - -1.7918029800057411e-02 2.8277221322059631e-01 - <_> - - 0 -1 2106 -1.1608110507950187e-03 - - -1.3598379492759705e-01 2.9590860009193420e-02 - <_> - - 0 -1 2107 -1.8159779720008373e-03 - - 1.7696669697761536e-01 -3.3906169235706329e-02 - <_> - - 0 -1 2108 5.7966040913015604e-04 - - -3.8249019533395767e-02 2.4134349077939987e-02 - <_> - - 0 -1 2109 -9.4094357336871326e-05 - - 6.8295761942863464e-02 -6.8657957017421722e-02 - <_> - - 0 -1 2110 1.8233150243759155e-02 - - -9.2594744637608528e-03 2.2030550241470337e-01 - <_> - - 0 -1 2111 -2.1909039467573166e-02 - - -4.0802249312400818e-01 1.3047140091657639e-02 - <_> - - 0 -1 2112 -8.4120110841467977e-05 - - 4.6509388834238052e-02 -4.4079691171646118e-02 - <_> - - 0 -1 2113 3.1046951335156336e-05 - - -8.9913800358772278e-02 4.8912350088357925e-02 - <_> - - 0 -1 2114 2.5289219338446856e-03 - - -2.3542739450931549e-02 1.5479239821434021e-01 - <_> - - 0 -1 2115 -1.2940970063209534e-01 - - -3.9730009436607361e-01 1.2606710195541382e-02 - <_> - - 0 -1 2116 1.2858719564974308e-02 - - -3.6222558468580246e-02 1.6217750310897827e-01 - <_> - - 0 -1 2117 1.1377360351616517e-04 - - -1.0770879685878754e-01 4.6765219420194626e-02 - <_> - - 0 -1 2118 -2.9391219839453697e-02 - - 2.2892589867115021e-01 -3.4089948982000351e-02 - <_> - - 0 -1 2119 1.7511859536170959e-01 - - -1.8170779570937157e-02 2.6032659411430359e-01 - <_> - - 0 -1 2120 1.3814390404149890e-03 - - 3.3500280231237411e-02 -1.6772350668907166e-01 - <_> - - 0 -1 2121 -1.0088009730679914e-04 - - 6.9935522973537445e-02 -7.0163749158382416e-02 - <_> - - 0 -1 2122 -5.2363821305334568e-03 - - -3.8714709877967834e-01 3.8488220889121294e-03 - <_> - - 0 -1 2123 1.1944399448111653e-03 - - -4.0175188332796097e-02 1.1868380010128021e-01 - <_> - - 0 -1 2124 -1.0081879736389965e-04 - - 5.3753741085529327e-02 -5.6394770741462708e-02 - <_> - - 0 -1 2125 1.2026460171910003e-04 - - -6.2764182686805725e-02 7.7123142778873444e-02 - <_> - - 0 -1 2126 -1.1322049977025017e-04 - - 5.6235220283269882e-02 -5.4109230637550354e-02 - <_> - - 0 -1 2127 1.1329459812259302e-04 - - -5.6005071848630905e-02 7.9855620861053467e-02 - <_> - - 0 -1 2128 -1.0272819781675935e-04 - - 5.0986729562282562e-02 -4.5671850442886353e-02 - <_> - - 0 -1 2129 -9.1088571934960783e-05 - - 8.5412003099918365e-02 -7.8027188777923584e-02 - <_> - - 0 -1 2130 2.6975329965353012e-03 - - 1.1360989883542061e-02 -1.3084140419960022e-01 - <_> - - 0 -1 2131 1.1563959717750549e-01 - - 1.3141030445694923e-02 -3.4900349378585815e-01 - <_> - - 0 -1 2132 1.1328439723001793e-04 - - -4.6778239309787750e-02 6.6560126841068268e-02 - <_> - - 0 -1 2133 9.8681906820274889e-05 - - -6.3125617802143097e-02 7.3674477636814117e-02 - <_> - - 0 -1 2134 -6.7920819856226444e-03 - - -8.6472243070602417e-02 1.3665749691426754e-02 - <_> - - 0 -1 2135 7.4815307743847370e-03 - - 1.8933869898319244e-02 -2.4700309336185455e-01 - <_> - - 0 -1 2136 -9.6308911452069879e-05 - - 3.9868801832199097e-02 -4.4424280524253845e-02 - <_> - - 0 -1 2137 -1.4094969630241394e-01 - - -8.1448292732238770e-01 5.2730259485542774e-03 - <_> - - 0 -1 2138 6.3983728177845478e-03 - - -2.3488819599151611e-02 6.4670667052268982e-02 - <_> - - 0 -1 2139 -2.5239890441298485e-02 - - 1.6939760744571686e-01 -2.8049439191818237e-02 - <_> - - 0 -1 2140 1.7426529526710510e-01 - - 2.0990138873457909e-03 -5.8285897970199585e-01 - <_> - - 0 -1 2141 1.3174180686473846e-01 - - 1.1987269856035709e-02 -4.5190098881721497e-01 - <_> - - 0 -1 2142 1.1509929754538462e-04 - - -4.8113349825143814e-02 6.8035729229450226e-02 - <_> - - 0 -1 2143 9.7694486612454057e-05 - - -6.5665252506732941e-02 8.1481061875820160e-02 - <_> - - 0 -1 2144 8.2227466627955437e-03 - - -1.1364550143480301e-01 1.9999189302325249e-02 - <_> - - 0 -1 2145 -7.2657060809433460e-03 - - 1.9642250239849091e-01 -2.3443970829248428e-02 - <_> - - 0 -1 2146 -1.3820930384099483e-02 - - -3.5106611251831055e-01 2.1997150033712387e-02 - <_> - - 0 -1 2147 3.1349230557680130e-03 - - 3.4941900521516800e-02 -1.1724609881639481e-01 - <_> - - 0 -1 2148 7.1846559643745422e-02 - - 1.1878719553351402e-02 -3.4860029816627502e-01 - <_> - - 0 -1 2149 -1.4865489676594734e-02 - - -2.0006850361824036e-01 2.1975699812173843e-02 - <_> - - 0 -1 2150 2.2416159510612488e-02 - - -1.4369959942996502e-02 1.2353249639272690e-01 - <_> - - 0 -1 2151 -8.5451323539018631e-03 - - 9.6531502902507782e-02 -5.6036688387393951e-02 - <_> - - 0 -1 2152 -2.2441910579800606e-02 - - -1.7705179750919342e-01 1.5571230091154575e-02 - <_> - - 0 -1 2153 7.0013068616390228e-03 - - -4.0438491851091385e-02 1.0996779799461365e-01 - <_> - - 0 -1 2154 2.2682549431920052e-02 - - 6.6524217836558819e-03 -1.8406519293785095e-01 - <_> - - 0 -1 2155 -2.5074880104511976e-03 - - 5.7935230433940887e-02 -7.8782439231872559e-02 - <_> - - 0 -1 2156 -1.4321220107376575e-02 - - 1.2821240723133087e-01 -2.5092139840126038e-02 - <_> - - 0 -1 2157 -4.5356648042798042e-03 - - 9.1736033558845520e-02 -5.7933621108531952e-02 - <_> - - 0 -1 2158 1.9409060478210449e-02 - - 2.2336810827255249e-02 -1.6051660478115082e-01 - <_> - - 0 -1 2159 -1.8575839931145310e-03 - - 6.7214876413345337e-02 -7.1684822440147400e-02 - <_> - - 0 -1 2160 1.4123350381851196e-02 - - -1.8340790644288063e-02 6.5503582358360291e-02 - <_> - - 0 -1 2161 9.8213102319277823e-05 - - -6.1678610742092133e-02 7.3350921273231506e-02 - <_> - 365 - -1.3049939870834351e+00 - - <_> - - 0 -1 2162 -3.3882360905408859e-02 - - 2.0239050686359406e-01 -2.2946560382843018e-01 - <_> - - 0 -1 2163 5.7477080263197422e-03 - - -5.0940629094839096e-02 1.2186110019683838e-01 - <_> - - 0 -1 2164 -2.9972488991916180e-03 - - 1.0657569766044617e-01 -2.5070008635520935e-01 - <_> - - 0 -1 2165 -4.9375999718904495e-02 - - 2.2355130314826965e-01 -9.3850642442703247e-02 - <_> - - 0 -1 2166 -8.8743809610605240e-03 - - 1.8828199803829193e-01 -1.0731340199708939e-01 - <_> - - 0 -1 2167 -1.5041409991681576e-02 - - 5.3844779729843140e-02 -8.1702902913093567e-02 - <_> - - 0 -1 2168 -1.1803549714386463e-02 - - 2.0604920387268066e-01 -7.4148297309875488e-02 - <_> - - 0 -1 2169 -8.9601287618279457e-03 - - 9.8798438906669617e-02 -1.4819039404392242e-01 - <_> - - 0 -1 2170 -8.7451227009296417e-03 - - 2.2514469921588898e-01 -8.0280996859073639e-02 - <_> - - 0 -1 2171 -1.3039770722389221e-01 - - -1.9512100517749786e-01 2.9707670211791992e-02 - <_> - - 0 -1 2172 9.4073556363582611e-02 - - 4.4669799506664276e-02 -3.4604659676551819e-01 - <_> - - 0 -1 2173 1.1114570312201977e-02 - - 8.7716905400156975e-03 -3.6369881033897400e-01 - <_> - - 0 -1 2174 -2.8564259409904480e-02 - - 1.7795929312705994e-01 -7.0157200098037720e-02 - <_> - - 0 -1 2175 -4.0305700153112411e-02 - - 6.1408281326293945e-02 -1.1470430344343185e-01 - <_> - - 0 -1 2176 -2.6785670779645443e-03 - - 7.0054598152637482e-02 -2.1235230565071106e-01 - <_> - - 0 -1 2177 -1.2476369738578796e-02 - - 2.5417190790176392e-01 -3.6739729344844818e-02 - <_> - - 0 -1 2178 -3.7886248901486397e-03 - - 1.8476079404354095e-01 -6.2649697065353394e-02 - <_> - - 0 -1 2179 4.7300331294536591e-02 - - -1.8394020199775696e-01 2.0217979326844215e-02 - <_> - - 0 -1 2180 -5.1964629441499710e-02 - - -3.3711931109428406e-01 3.0889309942722321e-02 - <_> - - 0 -1 2181 6.8056071177124977e-03 - - -1.5254379808902740e-01 6.3084572553634644e-02 - <_> - - 0 -1 2182 2.8190209995955229e-03 - - 3.1094970181584358e-02 -2.6837760210037231e-01 - <_> - - 0 -1 2183 -6.6912218928337097e-02 - - 3.1126910448074341e-01 -3.2822500914335251e-02 - <_> - - 0 -1 2184 1.7488099634647369e-02 - - -8.8495753705501556e-02 1.4047129452228546e-01 - <_> - - 0 -1 2185 3.4225170966237783e-03 - - 4.2204130440950394e-02 -1.9856970012187958e-01 - <_> - - 0 -1 2186 -7.7762128785252571e-03 - - -3.8108658790588379e-01 2.8606420382857323e-02 - <_> - - 0 -1 2187 -1.2615400366485119e-02 - - 1.6002969443798065e-01 -5.7289630174636841e-02 - <_> - - 0 -1 2188 -4.2172331362962723e-02 - - 2.7694448828697205e-01 -3.3612001687288284e-02 - <_> - - 0 -1 2189 -2.9790079221129417e-02 - - -2.9134678840637207e-01 1.3471970334649086e-02 - <_> - - 0 -1 2190 -3.6842040717601776e-02 - - -2.9361110925674438e-01 2.9519720003008842e-02 - <_> - - 0 -1 2191 -3.3496100455522537e-02 - - -3.8665390014648438e-01 2.2829739376902580e-02 - <_> - - 0 -1 2192 1.6487220302224159e-02 - - 2.7645170688629150e-02 -3.0679538846015930e-01 - <_> - - 0 -1 2193 -7.6681151986122131e-03 - - 1.9639779627323151e-01 -5.6477900594472885e-02 - <_> - - 0 -1 2194 -8.4842611104249954e-03 - - 1.4659149944782257e-01 -5.8792188763618469e-02 - <_> - - 0 -1 2195 -6.6472780890762806e-03 - - 2.4539250880479813e-02 -1.2503169476985931e-01 - <_> - - 0 -1 2196 -4.3351850472390652e-03 - - 4.8890460282564163e-02 -1.8971499800682068e-01 - <_> - - 0 -1 2197 -1.6708990558981895e-02 - - -8.4014803171157837e-02 1.4256189577281475e-02 - <_> - - 0 -1 2198 1.3730719685554504e-02 - - -5.9245068579912186e-02 1.6668020188808441e-01 - <_> - - 0 -1 2199 -4.9747668206691742e-02 - - -5.0222182273864746e-01 -7.9818630183581263e-05 - <_> - - 0 -1 2200 -1.5398520044982433e-02 - - -2.4704429507255554e-01 3.7857480347156525e-02 - <_> - - 0 -1 2201 6.9194408133625984e-03 - - -2.5483440607786179e-02 5.9669129550457001e-02 - <_> - - 0 -1 2202 7.9743033275008202e-03 - - -4.5462001115083694e-02 2.1774409711360931e-01 - <_> - - 0 -1 2203 1.5987269580364227e-02 - - -2.6203149929642677e-02 1.6608029603958130e-01 - <_> - - 0 -1 2204 -1.1483809910714626e-02 - - -4.2757600545883179e-01 1.9634570926427841e-02 - <_> - - 0 -1 2205 -2.0910050719976425e-02 - - -1.9163990020751953e-01 1.8767410889267921e-02 - <_> - - 0 -1 2206 -9.1570820659399033e-03 - - -3.3912599086761475e-01 2.2093880921602249e-02 - <_> - - 0 -1 2207 -4.4602658599615097e-02 - - 1.1534290015697479e-01 -7.1533598005771637e-02 - <_> - - 0 -1 2208 -3.3839430660009384e-02 - - 9.7139656543731689e-02 -7.8735627233982086e-02 - <_> - - 0 -1 2209 2.2553609684109688e-02 - - 8.4229987114667892e-03 -1.5705260634422302e-01 - <_> - - 0 -1 2210 -2.9585180804133415e-02 - - 1.9586630165576935e-01 -4.2920190840959549e-02 - <_> - - 0 -1 2211 -4.5955018140375614e-03 - - 1.2022340297698975e-01 -8.3882987499237061e-02 - <_> - - 0 -1 2212 -9.5542743802070618e-03 - - -3.1514930725097656e-01 2.1119819954037666e-02 - <_> - - 0 -1 2213 -8.0368801951408386e-02 - - 1.3920859992504120e-01 -2.0802559331059456e-02 - <_> - - 0 -1 2214 -7.9689081758260727e-03 - - 1.2371149659156799e-01 -5.5208720266819000e-02 - <_> - - 0 -1 2215 -6.4949761144816875e-03 - - 1.7598539590835571e-01 -4.9857739359140396e-02 - <_> - - 0 -1 2216 1.5145390294492245e-02 - - -2.6866549253463745e-01 2.7768999338150024e-02 - <_> - - 0 -1 2217 -1.0654450207948685e-01 - - 3.8894391059875488e-01 -2.1989410743117332e-02 - <_> - - 0 -1 2218 1.8047619611024857e-02 - - -4.7987051308155060e-02 1.8138599395751953e-01 - <_> - - 0 -1 2219 -6.9957501254975796e-03 - - 1.0746960341930389e-01 -2.2650029510259628e-02 - <_> - - 0 -1 2220 -1.0456600284669548e-04 - - 5.8700188994407654e-02 -1.2299560010433197e-01 - <_> - - 0 -1 2221 9.3732677400112152e-02 - - 1.5036529861390591e-02 -2.1524760127067566e-01 - <_> - - 0 -1 2222 6.5442179329693317e-03 - - 3.6178309470415115e-02 -1.9664210081100464e-01 - <_> - - 0 -1 2223 6.9820377975702286e-03 - - -2.7531590312719345e-02 9.9207893013954163e-02 - <_> - - 0 -1 2224 -3.6357950884848833e-03 - - 1.2325549870729446e-01 -5.4068911820650101e-02 - <_> - - 0 -1 2225 -1.7133219167590141e-02 - - -1.5714760124683380e-01 1.1257690377533436e-02 - <_> - - 0 -1 2226 6.4856321550905704e-03 - - 3.5732869058847427e-02 -1.9302600622177124e-01 - <_> - - 0 -1 2227 1.5455770306289196e-02 - - 7.3288627900183201e-03 -3.3833038806915283e-01 - <_> - - 0 -1 2228 -1.5808869153261185e-02 - - -2.2456270456314087e-01 2.9451670125126839e-02 - <_> - - 0 -1 2229 -3.2471489161252975e-02 - - -5.5803108215332031e-01 2.8975890018045902e-03 - <_> - - 0 -1 2230 -3.9141788147389889e-03 - - 1.4021359384059906e-01 -5.0554420799016953e-02 - <_> - - 0 -1 2231 -1.0944330133497715e-02 - - -3.5154539346694946e-01 1.8400410190224648e-02 - <_> - - 0 -1 2232 1.0616300278343260e-04 - - -8.3685651421546936e-02 7.6890029013156891e-02 - <_> - - 0 -1 2233 6.1605898663401604e-03 - - 2.9453009366989136e-02 -1.9558599591255188e-01 - <_> - - 0 -1 2234 8.2721293438225985e-05 - - -8.0076627433300018e-02 8.3749473094940186e-02 - <_> - - 0 -1 2235 -8.6001930758357048e-03 - - 1.0143149644136429e-01 -4.6038668602705002e-02 - <_> - - 0 -1 2236 -2.0330580882728100e-03 - - 9.0525522828102112e-02 -8.3805181086063385e-02 - <_> - - 0 -1 2237 7.9374670982360840e-02 - - 1.8412400037050247e-02 -1.2558990716934204e-01 - <_> - - 0 -1 2238 -1.1706469580531120e-02 - - -3.4564140439033508e-01 1.7899520695209503e-02 - <_> - - 0 -1 2239 7.5991638004779816e-02 - - -1.7106909304857254e-02 6.7980378866195679e-02 - <_> - - 0 -1 2240 -5.0547100603580475e-02 - - 8.2406863570213318e-02 -9.9478118121623993e-02 - <_> - - 0 -1 2241 -3.1586930155754089e-02 - - -2.5311431288719177e-01 2.1670460700988770e-02 - <_> - - 0 -1 2242 -3.8616750389337540e-02 - - -2.5136458873748779e-01 3.0640950426459312e-02 - <_> - - 0 -1 2243 -2.8309430927038193e-03 - - 5.8621428906917572e-02 -3.4674659371376038e-02 - <_> - - 0 -1 2244 3.4507629461586475e-03 - - -5.9696689248085022e-02 1.4282059669494629e-01 - <_> - - 0 -1 2245 -6.4924471080303192e-03 - - 1.6060300171375275e-01 -3.9581570774316788e-02 - <_> - - 0 -1 2246 -8.9043304324150085e-03 - - -2.9341179132461548e-01 2.0171549171209335e-02 - <_> - - 0 -1 2247 -2.7951620519161224e-02 - - 7.2093032300472260e-02 -8.1142388284206390e-02 - <_> - - 0 -1 2248 7.9951416410040110e-05 - - -6.7746952176094055e-02 9.3461208045482635e-02 - <_> - - 0 -1 2249 1.1102859862148762e-02 - - -2.8035409748554230e-02 2.2704620659351349e-01 - <_> - - 0 -1 2250 1.3552259653806686e-02 - - -2.1036660298705101e-02 2.6905548572540283e-01 - <_> - - 0 -1 2251 1.4126170426607132e-02 - - 1.4326309785246849e-02 -2.2234620153903961e-01 - <_> - - 0 -1 2252 4.2146299965679646e-03 - - 3.7077061831951141e-02 -1.5360489487648010e-01 - <_> - - 0 -1 2253 -2.0096069201827049e-03 - - 1.0902349650859833e-01 -8.5512273013591766e-02 - <_> - - 0 -1 2254 1.8302820622920990e-02 - - -5.6824129074811935e-02 1.0522840172052383e-01 - <_> - - 0 -1 2255 6.5802307799458504e-03 - - 3.3959459513425827e-02 -7.0342078804969788e-02 - <_> - - 0 -1 2256 -3.5527150612324476e-03 - - 9.2438496649265289e-02 -6.8014897406101227e-02 - <_> - - 0 -1 2257 1.8833009526133537e-02 - - 1.6142280772328377e-02 -7.9908937215805054e-02 - <_> - - 0 -1 2258 6.4154029823839664e-03 - - 2.4767400696873665e-02 -2.4944229423999786e-01 - <_> - - 0 -1 2259 4.6186340041458607e-03 - - 2.4536220356822014e-02 -3.1335648894309998e-01 - <_> - - 0 -1 2260 1.1884859949350357e-01 - - 2.0980369299650192e-02 -2.5818759202957153e-01 - <_> - - 0 -1 2261 1.0991309682140127e-04 - - -3.7180811166763306e-02 4.6653941273689270e-02 - <_> - - 0 -1 2262 6.1736410856246948e-01 - - -2.1467130631208420e-02 3.1791171431541443e-01 - <_> - - 0 -1 2263 3.8408428430557251e-02 - - -3.5127598792314529e-02 1.8549050390720367e-01 - <_> - - 0 -1 2264 5.3536839783191681e-02 - - -4.1895449161529541e-02 1.3988719880580902e-01 - <_> - - 0 -1 2265 8.8034123182296753e-02 - - -6.8377859890460968e-02 4.1693281382322311e-02 - <_> - - 0 -1 2266 -1.2001659721136093e-02 - - 6.1066821217536926e-02 -1.0328210145235062e-01 - <_> - - 0 -1 2267 -4.8769591376185417e-03 - - 1.2130960077047348e-01 -4.3480679392814636e-02 - <_> - - 0 -1 2268 -2.9313350096344948e-03 - - 9.8697140812873840e-02 -5.4528530687093735e-02 - <_> - - 0 -1 2269 8.7714530527591705e-03 - - 1.5202780254185200e-02 -2.7232658863067627e-01 - <_> - - 0 -1 2270 2.5236629880964756e-03 - - -3.5202231258153915e-02 1.5970990061759949e-01 - <_> - - 0 -1 2271 -7.2554531507194042e-03 - - -3.3298349380493164e-01 1.7689129337668419e-02 - <_> - - 0 -1 2272 -5.7377000339329243e-03 - - -3.4500560164451599e-01 1.3545690104365349e-02 - <_> - - 0 -1 2273 -1.7369260312989354e-03 - - 8.0387458205223083e-02 -2.9330410063266754e-02 - <_> - - 0 -1 2274 7.4976221658289433e-03 - - -2.9240680858492851e-02 1.8164479732513428e-01 - <_> - - 0 -1 2275 2.6569119654595852e-03 - - -2.1224660798907280e-02 3.1799409538507462e-02 - <_> - - 0 -1 2276 1.0299009736627340e-03 - - -1.2613479793071747e-01 4.8335380852222443e-02 - <_> - - 0 -1 2277 7.3244851082563400e-03 - - 1.1200889945030212e-02 -4.4718209654092789e-02 - <_> - - 0 -1 2278 -8.6582284420728683e-03 - - 1.4065790176391602e-01 -4.3052151799201965e-02 - <_> - - 0 -1 2279 1.1580599675653502e-04 - - -7.2923496365547180e-02 6.7385733127593994e-02 - <_> - - 0 -1 2280 -1.4025709824636579e-03 - - -1.8745669722557068e-01 3.2026190310716629e-02 - <_> - - 0 -1 2281 3.4833580255508423e-02 - - 1.2874660082161427e-02 -2.5058078765869141e-01 - <_> - - 0 -1 2282 -4.0964070707559586e-02 - - -3.3095490932464600e-01 1.5322729945182800e-02 - <_> - - 0 -1 2283 -9.9130235612392426e-03 - - 5.0588980317115784e-02 -1.4300700277090073e-02 - <_> - - 0 -1 2284 3.1872559338808060e-03 - - -3.1206250190734863e-02 1.8519160151481628e-01 - <_> - - 0 -1 2285 1.2019430141663179e-04 - - -4.5336149632930756e-02 4.4496789574623108e-02 - <_> - - 0 -1 2286 7.7739008702337742e-03 - - 3.1605679541826248e-02 -1.7864149808883667e-01 - <_> - - 0 -1 2287 -2.1307980641722679e-03 - - -3.1884080171585083e-01 4.4108141213655472e-02 - <_> - - 0 -1 2288 1.4493019552901387e-03 - - -5.2389718592166901e-02 1.0424470156431198e-01 - <_> - - 0 -1 2289 -1.8452210724353790e-01 - - 1.7595799267292023e-01 -3.3386971801519394e-02 - <_> - - 0 -1 2290 -1.1728370009222999e-04 - - 6.0376390814781189e-02 -8.8284641504287720e-02 - <_> - - 0 -1 2291 -1.9901100546121597e-02 - - 2.2972399368882179e-02 -3.1790241599082947e-02 - <_> - - 0 -1 2292 6.2372140586376190e-02 - - -2.2591490298509598e-02 2.8110951185226440e-01 - <_> - - 0 -1 2293 -3.3517589326947927e-03 - - 6.8909741938114166e-02 -2.8704280033707619e-02 - <_> - - 0 -1 2294 -7.4083356594201177e-05 - - 8.3308637142181396e-02 -5.9445090591907501e-02 - <_> - - 0 -1 2295 -1.2365039438009262e-03 - - 7.1449361741542816e-02 -4.1921019554138184e-02 - <_> - - 0 -1 2296 -1.5120030147954822e-03 - - 8.8795676827430725e-02 -5.9792499989271164e-02 - <_> - - 0 -1 2297 7.4081351049244404e-03 - - 8.0022467300295830e-03 -3.2635369896888733e-01 - <_> - - 0 -1 2298 -1.2917170301079750e-02 - - -3.4276279807090759e-01 1.3512610457837582e-02 - <_> - - 0 -1 2299 5.6006559170782566e-03 - - -3.8777850568294525e-02 1.1089079827070236e-01 - <_> - - 0 -1 2300 2.9303599148988724e-02 - - -2.5236869230866432e-02 2.0500029623508453e-01 - <_> - - 0 -1 2301 -3.3195200376212597e-04 - - 6.2742240726947784e-02 -9.6477419137954712e-02 - <_> - - 0 -1 2302 -4.3038749136030674e-03 - - 1.1313679814338684e-01 -4.6373449265956879e-02 - <_> - - 0 -1 2303 -1.7296209931373596e-02 - - -3.8349351286888123e-01 1.0016939602792263e-02 - <_> - - 0 -1 2304 -2.2030149400234222e-01 - - -3.5790899395942688e-01 1.3102149590849876e-02 - <_> - - 0 -1 2305 1.7911270260810852e-02 - - 4.1835359297692776e-03 -2.5600808858871460e-01 - <_> - - 0 -1 2306 -1.1390260420739651e-02 - - -2.6581099629402161e-01 1.9057299941778183e-02 - <_> - - 0 -1 2307 -2.8078479692339897e-02 - - 1.6174699366092682e-01 -3.2481499016284943e-02 - <_> - - 0 -1 2308 -1.9583579152822495e-02 - - -2.6070371270179749e-01 2.2547200322151184e-02 - <_> - - 0 -1 2309 7.3393443017266691e-05 - - -5.4666221141815186e-02 4.0767289698123932e-02 - <_> - - 0 -1 2310 -4.6995278447866440e-02 - - -4.4603431224822998e-01 1.1102690361440182e-02 - <_> - - 0 -1 2311 -1.1355779861332849e-04 - - 3.3556360751390457e-02 -2.4448079988360405e-02 - <_> - - 0 -1 2312 4.7428491525352001e-03 - - -3.3876050263643265e-02 1.4432670176029205e-01 - <_> - - 0 -1 2313 6.0940310359001160e-03 - - -2.6939800009131432e-02 1.8384850025177002e-01 - <_> - - 0 -1 2314 -7.4838818982243538e-03 - - -2.9266190528869629e-01 1.5399949625134468e-02 - <_> - - 0 -1 2315 7.8164823353290558e-03 - - 9.0713957324624062e-03 -3.5414189100265503e-01 - <_> - - 0 -1 2316 -5.1856059581041336e-03 - - 1.4908669888973236e-01 -3.8270790129899979e-02 - <_> - - 0 -1 2317 -4.8475480079650879e-01 - - -5.6529688835144043e-01 9.0100103989243507e-03 - <_> - - 0 -1 2318 -6.0149569064378738e-02 - - -6.6451191902160645e-01 5.7822549715638161e-03 - <_> - - 0 -1 2319 -3.2175570726394653e-02 - - -1.6214740276336670e-01 2.4788419250398874e-03 - <_> - - 0 -1 2320 6.7587220109999180e-03 - - -3.7111308425664902e-02 1.3146670162677765e-01 - <_> - - 0 -1 2321 1.2848580256104469e-02 - - 8.4516126662492752e-03 -5.2762651443481445e-01 - <_> - - 0 -1 2322 5.1822371780872345e-02 - - -2.2025400772690773e-02 2.2004729509353638e-01 - <_> - - 0 -1 2323 4.3869521468877792e-02 - - 4.6415599063038826e-03 -2.9684591293334961e-01 - <_> - - 0 -1 2324 -2.8215179219841957e-02 - - -2.3835469782352448e-01 2.0944530144333839e-02 - <_> - - 0 -1 2325 1.1462989496067166e-03 - - -3.2323900610208511e-02 9.8447293043136597e-02 - <_> - - 0 -1 2326 -9.1807021817658097e-05 - - 4.8391621559858322e-02 -1.0352600365877151e-01 - <_> - - 0 -1 2327 -3.1447969377040863e-03 - - 7.9412266612052917e-02 -3.7316069006919861e-02 - <_> - - 0 -1 2328 -1.2354710139334202e-02 - - -4.4685348868370056e-01 1.0231420397758484e-02 - <_> - - 0 -1 2329 7.3198013007640839e-02 - - -2.3037230130285025e-03 4.2292898893356323e-01 - <_> - - 0 -1 2330 2.0700140297412872e-01 - - 6.5427711233496666e-03 -6.8654668331146240e-01 - <_> - - 0 -1 2331 -2.8876150026917458e-02 - - -3.4709088504314423e-02 2.2856339812278748e-02 - <_> - - 0 -1 2332 1.1793940328061581e-02 - - -3.7016589194536209e-02 1.2962980568408966e-01 - <_> - - 0 -1 2333 -8.4449667483568192e-03 - - 1.3182109594345093e-01 -4.6101968735456467e-02 - <_> - - 0 -1 2334 -1.7379879718646407e-03 - - -1.9482420384883881e-01 2.5667199864983559e-02 - <_> - - 0 -1 2335 -1.3288700021803379e-02 - - -4.4804200530052185e-02 1.5710260719060898e-02 - <_> - - 0 -1 2336 9.5334917306900024e-02 - - 1.0352609679102898e-02 -4.4375640153884888e-01 - <_> - - 0 -1 2337 1.1624330363702029e-04 - - -5.2062071859836578e-02 4.3834179639816284e-02 - <_> - - 0 -1 2338 -1.0214909707428887e-04 - - 8.4646992385387421e-02 -5.3199101239442825e-02 - <_> - - 0 -1 2339 3.3260729163885117e-02 - - 1.0557370260357857e-02 -1.7795279622077942e-01 - <_> - - 0 -1 2340 1.0356389975640923e-04 - - -6.9730758666992188e-02 5.8773018419742584e-02 - <_> - - 0 -1 2341 -8.6508220434188843e-01 - - 5.2564299106597900e-01 -7.9431589692831039e-03 - <_> - - 0 -1 2342 5.5448818206787109e-01 - - -1.1862279847264290e-02 3.3969870209693909e-01 - <_> - - 0 -1 2343 -1.2398809939622879e-01 - - -3.0059650540351868e-01 1.0551629588007927e-02 - <_> - - 0 -1 2344 -1.8067149445414543e-02 - - 4.8538219183683395e-02 -9.4906397163867950e-02 - <_> - - 0 -1 2345 1.7284390330314636e-01 - - 2.9056880157440901e-03 -2.6223310828208923e-01 - <_> - - 0 -1 2346 -5.6298580602742732e-05 - - 3.5491660237312317e-02 -1.1942940205335617e-01 - <_> - - 0 -1 2347 4.3891761451959610e-02 - - -5.7431817986071110e-03 1.2878720462322235e-01 - <_> - - 0 -1 2348 1.1601000092923641e-02 - - -2.7580419555306435e-02 1.6389440000057220e-01 - <_> - - 0 -1 2349 1.0969590395689011e-02 - - -2.4061219766736031e-02 6.6235110163688660e-02 - <_> - - 0 -1 2350 -6.5495766699314117e-02 - - 1.4799270033836365e-01 -3.7685319781303406e-02 - <_> - - 0 -1 2351 -4.1891798377037048e-02 - - -7.0353198051452637e-01 1.4793720329180360e-03 - <_> - - 0 -1 2352 1.0460639896336943e-04 - - -6.8750366568565369e-02 6.8998672068119049e-02 - <_> - - 0 -1 2353 3.0087800696492195e-02 - - -2.4997230619192123e-02 1.6010420024394989e-01 - <_> - - 0 -1 2354 -3.5395029187202454e-01 - - -2.6776018738746643e-01 1.9514789804816246e-02 - <_> - - 0 -1 2355 -1.7325379885733128e-03 - - 9.0407662093639374e-02 -3.3809348940849304e-02 - <_> - - 0 -1 2356 -9.1078240075148642e-05 - - 6.6738963127136230e-02 -6.4228832721710205e-02 - <_> - - 0 -1 2357 1.0164060222450644e-04 - - -5.5076360702514648e-02 8.6006529629230499e-02 - <_> - - 0 -1 2358 1.0091240255860612e-04 - - -6.6988758742809296e-02 9.0417332947254181e-02 - <_> - - 0 -1 2359 1.1433399777160957e-04 - - -7.9386427998542786e-02 3.3360429108142853e-02 - <_> - - 0 -1 2360 -9.1078240075148642e-05 - - 6.8556882441043854e-02 -6.7940391600131989e-02 - <_> - - 0 -1 2361 -3.9200659841299057e-02 - - 2.6595410704612732e-01 -1.1581010185182095e-02 - <_> - - 0 -1 2362 -4.0849689394235611e-02 - - 2.3699620366096497e-01 -1.8228670582175255e-02 - <_> - - 0 -1 2363 1.5409139450639486e-03 - - 3.2854549586772919e-02 -1.3879729807376862e-01 - <_> - - 0 -1 2364 2.2081700153648853e-03 - - 2.8462519869208336e-02 -1.5396310389041901e-01 - <_> - - 0 -1 2365 2.5576550979167223e-03 - - -3.1621441245079041e-02 1.3564549386501312e-01 - <_> - - 0 -1 2366 -1.0356900282204151e-02 - - -2.8086408972740173e-01 1.6379009932279587e-02 - <_> - - 0 -1 2367 2.6948269456624985e-02 - - -7.6934508979320526e-03 1.3261960446834564e-01 - <_> - - 0 -1 2368 -9.3930400907993317e-03 - - 7.1190893650054932e-02 -6.2922917306423187e-02 - <_> - - 0 -1 2369 3.2943800091743469e-02 - - -3.3817298710346222e-02 8.7523058056831360e-02 - <_> - - 0 -1 2370 8.8589258491992950e-02 - - 1.5241189859807491e-02 -3.6706811189651489e-01 - <_> - - 0 -1 2371 -8.0594501923769712e-05 - - 5.0675150007009506e-02 -1.8724879249930382e-02 - <_> - - 0 -1 2372 7.6212047133594751e-05 - - -1.1710049957036972e-01 4.6428650617599487e-02 - <_> - - 0 -1 2373 2.9634490609169006e-02 - - 6.1184200458228588e-03 -8.1311158835887909e-02 - <_> - - 0 -1 2374 4.9311809241771698e-02 - - 1.5268309973180294e-02 -2.9420408606529236e-01 - <_> - - 0 -1 2375 5.4893750697374344e-02 - - -1.0509899817407131e-02 1.4876569807529449e-01 - <_> - - 0 -1 2376 -2.2886209189891815e-02 - - 1.1702159792184830e-01 -4.0515769273042679e-02 - <_> - - 0 -1 2377 5.3369901143014431e-03 - - 2.2458840161561966e-02 -4.7646570950746536e-02 - <_> - - 0 -1 2378 -4.3291270732879639e-02 - - 4.2726710438728333e-01 -1.0213980451226234e-02 - <_> - - 0 -1 2379 7.1153361350297928e-03 - - -9.3713469803333282e-02 1.4859509654343128e-02 - <_> - - 0 -1 2380 1.9230809994041920e-03 - - -2.8736030682921410e-02 1.5192930400371552e-01 - <_> - - 0 -1 2381 -4.8766369000077248e-03 - - -1.2188100069761276e-01 3.5688500851392746e-02 - <_> - - 0 -1 2382 8.1249003414995968e-05 - - -6.9741703569889069e-02 7.9007953405380249e-02 - <_> - - 0 -1 2383 -3.0618819873780012e-03 - - -2.4777479469776154e-01 1.6769090667366982e-02 - <_> - - 0 -1 2384 -1.0020760237239301e-04 - - 8.9383192360401154e-02 -7.5246021151542664e-02 - <_> - - 0 -1 2385 -3.5711210221052170e-03 - - 3.2868590205907822e-02 -2.6319630444049835e-02 - <_> - - 0 -1 2386 4.4158261269330978e-02 - - 9.1490726917982101e-03 -4.9472698569297791e-01 - <_> - - 0 -1 2387 -1.2411230243742466e-02 - - -7.9080909490585327e-01 1.2701259693130851e-03 - <_> - - 0 -1 2388 3.1543849036097527e-03 - - -2.6582410559058189e-02 1.6744150221347809e-01 - <_> - - 0 -1 2389 -1.0832149535417557e-02 - - -1.4656180143356323e-01 9.8041100427508354e-03 - <_> - - 0 -1 2390 -9.0239293058402836e-05 - - 8.0845810472965240e-02 -5.8461051434278488e-02 - <_> - - 0 -1 2391 -7.7505349181592464e-03 - - -6.1667799949645996e-02 1.6547329723834991e-02 - <_> - - 0 -1 2392 1.4565950259566307e-02 - - 1.5213799662888050e-02 -2.6753041148185730e-01 - <_> - - 0 -1 2393 -8.4792282432317734e-03 - - 3.0588289722800255e-02 -4.4890258461236954e-02 - <_> - - 0 -1 2394 2.5341829750686884e-03 - - -2.3893959820270538e-02 1.7228589951992035e-01 - <_> - - 0 -1 2395 -5.7597858831286430e-03 - - 1.3594760000705719e-01 -1.5244400128722191e-02 - <_> - - 0 -1 2396 -1.4607460470870137e-03 - - -1.1625000089406967e-01 5.1985260099172592e-02 - <_> - - 0 -1 2397 2.8517120517790318e-03 - - -1.7940439283847809e-02 6.0237661004066467e-02 - <_> - - 0 -1 2398 8.9769951999187469e-02 - - -9.4037447124719620e-03 4.4200161099433899e-01 - <_> - - 0 -1 2399 1.8908040598034859e-02 - - 4.9003809690475464e-03 -2.7509149909019470e-01 - <_> - - 0 -1 2400 -8.5895955562591553e-03 - - -1.7463889718055725e-01 2.4978419765830040e-02 - <_> - - 0 -1 2401 -1.4033289626240730e-02 - - 1.1389180272817612e-01 -2.2636910900473595e-02 - <_> - - 0 -1 2402 -1.2071140110492706e-02 - - 1.0377719998359680e-01 -4.1957050561904907e-02 - <_> - - 0 -1 2403 7.8776637092232704e-03 - - 4.4563128612935543e-03 -2.5385779142379761e-01 - <_> - - 0 -1 2404 9.7573982202447951e-05 - - -7.1789413690567017e-02 6.4117558300495148e-02 - <_> - - 0 -1 2405 1.1756990104913712e-01 - - -1.0103950276970863e-02 2.8671211004257202e-01 - <_> - - 0 -1 2406 -1.7693729698657990e-01 - - -3.2672521471977234e-01 1.3368690386414528e-02 - <_> - - 0 -1 2407 6.9278101436793804e-03 - - -2.6613669469952583e-02 1.6719299554824829e-01 - <_> - - 0 -1 2408 8.2964971661567688e-03 - - -5.0678610801696777e-02 1.0666640102863312e-01 - <_> - - 0 -1 2409 -1.7562190070748329e-02 - - -2.2206050157546997e-01 1.2752059847116470e-02 - <_> - - 0 -1 2410 7.2527178563177586e-03 - - 2.5016179308295250e-02 -1.8147459626197815e-01 - <_> - - 0 -1 2411 -8.3280522376298904e-03 - - 1.0262949764728546e-01 -3.1841918826103210e-02 - <_> - - 0 -1 2412 8.1564113497734070e-03 - - -2.6094259694218636e-02 1.9404900074005127e-01 - <_> - - 0 -1 2413 9.6458224579691887e-03 - - -1.7504140734672546e-02 1.8571110069751740e-01 - <_> - - 0 -1 2414 -2.6147949974983931e-03 - - 5.7285130023956299e-02 -8.5206836462020874e-02 - <_> - - 0 -1 2415 -9.0203131549060345e-05 - - 4.4843290001153946e-02 -5.5859129875898361e-02 - <_> - - 0 -1 2416 -2.2970889508724213e-01 - - 4.1338160634040833e-01 -1.0467030107975006e-02 - <_> - - 0 -1 2417 -9.3038368504494429e-05 - - 6.5610900521278381e-02 -4.6013180166482925e-02 - <_> - - 0 -1 2418 3.2218669075518847e-03 - - 1.4394659548997879e-02 -2.8860649466514587e-01 - <_> - - 0 -1 2419 -5.4404459893703461e-02 - - 3.4964048862457275e-01 -4.6711899340152740e-03 - <_> - - 0 -1 2420 8.3852171897888184e-02 - - 9.7965141758322716e-03 -4.5140910148620605e-01 - <_> - - 0 -1 2421 -7.3948511853814125e-03 - - -1.6057239472866058e-01 2.0318130031228065e-02 - <_> - - 0 -1 2422 2.6246640086174011e-01 - - -9.4673177227377892e-03 4.4844120740890503e-01 - <_> - - 0 -1 2423 -1.0621179826557636e-03 - - -1.1759970337152481e-01 3.7068329751491547e-02 - <_> - - 0 -1 2424 3.9175958372652531e-03 - - -2.8878200799226761e-02 1.5599119663238525e-01 - <_> - - 0 -1 2425 2.3374879732728004e-02 - - -3.0305700376629829e-02 4.9608588218688965e-02 - <_> - - 0 -1 2426 7.0046126842498779e-02 - - 3.0271939933300018e-02 -1.6876719892024994e-01 - <_> - - 0 -1 2427 -1.4835690148174763e-02 - - 3.7178281694650650e-02 -5.0572458654642105e-02 - <_> - - 0 -1 2428 -6.1111040413379669e-02 - - 1.4954359829425812e-01 -3.3388800919055939e-02 - <_> - - 0 -1 2429 1.2960570165887475e-03 - - 7.7619366347789764e-02 -3.0182060599327087e-01 - <_> - - 0 -1 2430 -9.6840893093030900e-05 - - 7.6822131872177124e-02 -6.0163989663124084e-02 - <_> - - 0 -1 2431 -1.2722789542749524e-03 - - -3.2610461115837097e-01 7.6267711818218231e-02 - <_> - - 0 -1 2432 2.7745799161493778e-03 - - -3.7424080073833466e-02 1.5734979510307312e-01 - <_> - - 0 -1 2433 -1.3858770020306110e-02 - - 1.0158479958772659e-01 -1.1126480065286160e-02 - <_> - - 0 -1 2434 -7.4661108665168285e-03 - - 1.5804830193519592e-01 -2.9558379203081131e-02 - <_> - - 0 -1 2435 -6.5499739721417427e-03 - - 5.3577870130538940e-02 -1.8859000876545906e-02 - <_> - - 0 -1 2436 1.7137609422206879e-02 - - 2.8566429391503334e-02 -1.6672840714454651e-01 - <_> - - 0 -1 2437 -1.5429790318012238e-01 - - -5.3008288145065308e-01 4.6510128304362297e-03 - <_> - - 0 -1 2438 1.0610629804432392e-02 - - -1.4005419798195362e-02 3.5358279943466187e-01 - <_> - - 0 -1 2439 -1.2487419694662094e-01 - - -9.2341862618923187e-02 7.7773127704858780e-03 - <_> - - 0 -1 2440 2.4952359497547150e-02 - - -1.9140990450978279e-02 2.2024959325790405e-01 - <_> - - 0 -1 2441 -1.0323809832334518e-01 - - 4.6602148562669754e-02 -8.1108592450618744e-02 - <_> - - 0 -1 2442 -4.5149028301239014e-03 - - 8.9722327888011932e-02 -5.1392719149589539e-02 - <_> - - 0 -1 2443 -1.1647379724308848e-03 - - 6.6680416464805603e-02 -2.8577109798789024e-02 - <_> - - 0 -1 2444 -2.0229439437389374e-01 - - -1.4662939310073853e-01 3.2757651060819626e-02 - <_> - - 0 -1 2445 6.6811027936637402e-03 - - -2.2777039557695389e-02 6.4059197902679443e-02 - <_> - - 0 -1 2446 1.3379199663177133e-03 - - -3.8998249918222427e-02 1.1498399823904037e-01 - <_> - - 0 -1 2447 1.1130159720778465e-02 - - 1.1183519847691059e-02 -1.2708090245723724e-01 - <_> - - 0 -1 2448 -1.6420660540461540e-02 - - -4.4360479712486267e-01 8.8887596502900124e-03 - <_> - - 0 -1 2449 1.2306580320000648e-02 - - 1.6212840564548969e-03 -6.9290822744369507e-01 - <_> - - 0 -1 2450 -1.5455400571227074e-03 - - 1.0736440122127533e-01 -3.8405489176511765e-02 - <_> - - 0 -1 2451 1.2311200052499771e-01 - - -4.0762219578027725e-03 2.4662579596042633e-01 - <_> - - 0 -1 2452 -5.8553021401166916e-02 - - -1.7537310719490051e-01 2.4212690070271492e-02 - <_> - - 0 -1 2453 4.9732271581888199e-03 - - 8.6330175399780273e-03 -3.4557878971099854e-01 - <_> - - 0 -1 2454 1.0527500126045197e-04 - - -6.1904430389404297e-02 7.3099963366985321e-02 - <_> - - 0 -1 2455 3.3458888530731201e-02 - - -5.6895300745964050e-02 1.1233749985694885e-01 - <_> - - 0 -1 2456 1.0234630107879639e-01 - - 1.7183110117912292e-02 -2.6306340098381042e-01 - <_> - - 0 -1 2457 -1.1073449626564980e-02 - - -1.2017820030450821e-01 1.5160970389842987e-02 - <_> - - 0 -1 2458 -9.2945203185081482e-02 - - -3.8352051377296448e-01 1.1504840105772018e-02 - <_> - - 0 -1 2459 9.8843947052955627e-03 - - 9.4814822077751160e-03 -7.9045042395591736e-02 - <_> - - 0 -1 2460 8.5867056623101234e-03 - - -3.8179259747266769e-02 1.1506719887256622e-01 - <_> - - 0 -1 2461 7.7010630629956722e-03 - - 8.2067763432860374e-03 -3.1945049762725830e-01 - <_> - - 0 -1 2462 9.9160419777035713e-03 - - 1.8310869112610817e-02 -2.3958839476108551e-01 - <_> - - 0 -1 2463 -2.6565459556877613e-03 - - 1.4702770113945007e-01 -3.2037820667028427e-02 - <_> - - 0 -1 2464 -7.6955580152571201e-03 - - -3.1516849994659424e-01 1.3593629933893681e-02 - <_> - - 0 -1 2465 7.8387549147009850e-03 - - 1.0083840228617191e-02 -8.1965617835521698e-02 - <_> - - 0 -1 2466 -2.0592060685157776e-01 - - 2.3605699837207794e-01 -1.7845120280981064e-02 - <_> - - 0 -1 2467 -1.0210929758613929e-04 - - 4.5697391033172607e-02 -3.6160539835691452e-02 - <_> - - 0 -1 2468 7.4321818538010120e-03 - - 1.5175740234553814e-02 -2.6345270872116089e-01 - <_> - - 0 -1 2469 -5.3089652210474014e-03 - - 3.2872479408979416e-02 -4.2499881237745285e-02 - <_> - - 0 -1 2470 -1.0211910121142864e-02 - - -1.0723040252923965e-01 3.5072378814220428e-02 - <_> - - 0 -1 2471 1.5653369948267937e-02 - - -1.4208839833736420e-01 2.5232769548892975e-02 - <_> - - 0 -1 2472 -1.5530959703028202e-02 - - 7.1468062698841095e-02 -6.0601238161325455e-02 - <_> - - 0 -1 2473 -4.0227901190519333e-03 - - 6.1269611120223999e-02 -4.4298589229583740e-02 - <_> - - 0 -1 2474 7.8046880662441254e-03 - - -4.2839359492063522e-02 1.2119139730930328e-01 - <_> - - 0 -1 2475 -2.9384619556367397e-03 - - -1.6056729853153229e-01 1.4218579977750778e-02 - <_> - - 0 -1 2476 4.7694980166852474e-03 - - -1.9999140873551369e-02 2.1468199789524078e-01 - <_> - - 0 -1 2477 6.9417068734765053e-03 - - 2.2083880379796028e-02 -6.8389862775802612e-02 - <_> - - 0 -1 2478 -3.3458590041846037e-03 - - -2.1466180682182312e-01 2.0412910729646683e-02 - <_> - - 0 -1 2479 -2.8961960226297379e-02 - - -4.1232240200042725e-01 9.1418614611029625e-03 - <_> - - 0 -1 2480 -1.2559530325233936e-02 - - -3.8228130340576172e-01 9.3479985371232033e-03 - <_> - - 0 -1 2481 7.8233212232589722e-02 - - -1.4915429987013340e-02 2.4250149726867676e-01 - <_> - - 0 -1 2482 5.5003669112920761e-02 - - 5.6673302315175533e-03 -6.4445608854293823e-01 - <_> - - 0 -1 2483 -1.2113080359995365e-02 - - 1.4756150543689728e-01 -2.7481930330395699e-02 - <_> - - 0 -1 2484 -9.3241877038963139e-05 - - 7.1323297917842865e-02 -5.4497368633747101e-02 - <_> - - 0 -1 2485 -5.1809228025376797e-03 - - -1.9661720097064972e-01 1.0387259535491467e-02 - <_> - - 0 -1 2486 2.8799069114029408e-03 - - 2.2689169272780418e-02 -1.8536199629306793e-01 - <_> - - 0 -1 2487 1.4433950127568096e-04 - - -1.6389660537242889e-01 1.3282339274883270e-01 - <_> - - 0 -1 2488 -2.9764540959149599e-03 - - 1.9814909994602203e-01 -2.2932359948754311e-02 - <_> - - 0 -1 2489 -1.7436200752854347e-02 - - -1. 1.6758659621700644e-03 - <_> - - 0 -1 2490 -9.5769818872213364e-03 - - -6.0397851467132568e-01 5.7854237966239452e-03 - <_> - - 0 -1 2491 2.6807630434632301e-02 - - -1.4236460439860821e-02 3.6326110363006592e-01 - <_> - - 0 -1 2492 -9.0954907238483429e-02 - - 5.9409832954406738e-01 -5.7622790336608887e-03 - <_> - - 0 -1 2493 9.7699109464883804e-03 - - 1.0967959649860859e-02 -9.0999282896518707e-02 - <_> - - 0 -1 2494 6.5793031826615334e-03 - - 2.2652110084891319e-02 -1.7030160129070282e-01 - <_> - - 0 -1 2495 -7.5635597109794617e-02 - - 6.6555428504943848e-01 -2.2662319242954254e-03 - <_> - - 0 -1 2496 9.9336117506027222e-02 - - -1.7142260447144508e-02 2.3149140179157257e-01 - <_> - - 0 -1 2497 1.6461970284581184e-02 - - -4.0686290711164474e-02 8.8516846299171448e-02 - <_> - - 0 -1 2498 -7.6298139989376068e-02 - - 1.9077619910240173e-01 -2.1715249866247177e-02 - <_> - - 0 -1 2499 -2.1418400108814240e-01 - - 6.8394792079925537e-01 -2.8622080571949482e-03 - <_> - - 0 -1 2500 2.5286169722676277e-02 - - -1.6091799736022949e-01 3.1155489385128021e-02 - <_> - - 0 -1 2501 1.4956890046596527e-01 - - -1.0683029890060425e-02 2.1775540709495544e-01 - <_> - - 0 -1 2502 2.9672959446907043e-01 - - -7.5341230258345604e-03 5.3798502683639526e-01 - <_> - - 0 -1 2503 1.5840710699558258e-01 - - -2.0367559045553207e-03 7.8343671560287476e-01 - <_> - - 0 -1 2504 -2.0454709883779287e-03 - - -1.6811850666999817e-01 2.5403629988431931e-02 - <_> - - 0 -1 2505 1.4253250556066632e-03 - - -1.9209619611501694e-02 9.9919341504573822e-02 - <_> - - 0 -1 2506 -6.2084808945655823e-02 - - -3.2638630270957947e-01 1.5010939911007881e-02 - <_> - - 0 -1 2507 5.3531691431999207e-02 - - 1.5144430100917816e-02 -1.2006749957799911e-01 - <_> - - 0 -1 2508 1.0787569917738438e-02 - - -3.1277839094400406e-02 1.4318579435348511e-01 - <_> - - 0 -1 2509 -1.3449840247631073e-02 - - 1.5218019485473633e-01 -2.7612710371613503e-02 - <_> - - 0 -1 2510 1.1931080371141434e-02 - - 2.9722340404987335e-02 -1.5517580509185791e-01 - <_> - - 0 -1 2511 -4.5196209102869034e-02 - - -1.8409070372581482e-01 8.7686460465192795e-03 - <_> - - 0 -1 2512 6.5672039985656738e-02 - - -6.2955729663372040e-03 7.0492321252822876e-01 - <_> - - 0 -1 2513 7.7328020706772804e-03 - - -4.4531129300594330e-02 8.6046911776065826e-02 - <_> - - 0 -1 2514 -3.0604829080402851e-03 - - 1.0113420337438583e-01 -4.2885549366474152e-02 - <_> - - 0 -1 2515 8.2347340881824493e-02 - - 3.0522139277309179e-03 -2.3243139684200287e-01 - <_> - - 0 -1 2516 -6.9534480571746826e-03 - - 5.7797849178314209e-02 -7.6140359044075012e-02 - <_> - - 0 -1 2517 -1.4939639717340469e-02 - - 6.9081947207450867e-02 -4.3814908713102341e-02 - <_> - - 0 -1 2518 1.1418660171329975e-02 - - -3.2972648739814758e-02 1.6681009531021118e-01 - <_> - - 0 -1 2519 2.5770820677280426e-02 - - -4.2302068322896957e-02 1.1955089867115021e-01 - <_> - - 0 -1 2520 -8.1753218546509743e-03 - - 9.1556102037429810e-02 -5.3072091192007065e-02 - <_> - - 0 -1 2521 -2.1397249773144722e-02 - - 2.0224739611148834e-01 -2.8093929868191481e-03 - <_> - - 0 -1 2522 1.2690890580415726e-03 - - -3.5791151225566864e-02 1.2621949613094330e-01 - <_> - - 0 -1 2523 8.2354843616485596e-03 - - 3.1432591378688812e-02 -5.5796068161725998e-02 - <_> - - 0 -1 2524 4.4060330837965012e-02 - - 1.2473659589886665e-02 -3.6804640293121338e-01 - <_> - - 0 -1 2525 1.0450479749124497e-04 - - -4.5484520494937897e-02 3.2811541110277176e-02 - <_> - - 0 -1 2526 -6.3033318147063255e-03 - - 1.3801789283752441e-01 -3.1995330005884171e-02 - <_> - 415 - -1.3446700572967529e+00 - - <_> - - 0 -1 2527 -2.7316650375723839e-02 - - 2.7487730979919434e-01 -1.5850859880447388e-01 - <_> - - 0 -1 2528 7.6439790427684784e-03 - - -7.4583776295185089e-02 1.5125609934329987e-01 - <_> - - 0 -1 2529 -6.9862797856330872e-02 - - 2.8707519173622131e-01 -8.9994929730892181e-02 - <_> - - 0 -1 2530 -1.0788509994745255e-01 - - -3.3596950769424438e-01 2.0893020555377007e-02 - <_> - - 0 -1 2531 -1.5034900046885014e-02 - - 8.6543716490268707e-02 -2.3165270686149597e-01 - <_> - - 0 -1 2532 1.7096489667892456e-02 - - 1.2342380359768867e-02 3.7771260738372803e-01 - <_> - - 0 -1 2533 -2.1886809263378382e-03 - - 1.5675470232963562e-01 -1.1138690263032913e-01 - <_> - - 0 -1 2534 -2.4373169988393784e-02 - - 2.1010430157184601e-01 -1.4367789961397648e-02 - <_> - - 0 -1 2535 -8.1659909337759018e-03 - - 1.7865429818630219e-01 -9.5783412456512451e-02 - <_> - - 0 -1 2536 -7.5612151995301247e-03 - - 2.5702549144625664e-02 -7.9344697296619415e-02 - <_> - - 0 -1 2537 -6.5740081481635571e-04 - - -1.4089170098304749e-01 8.0607332289218903e-02 - <_> - - 0 -1 2538 -8.8607652287464589e-05 - - 7.5460836291313171e-02 -1.8756809830665588e-01 - <_> - - 0 -1 2539 6.2588072614744306e-04 - - 4.6485811471939087e-02 -2.5176569819450378e-01 - <_> - - 0 -1 2540 -1.2103809975087643e-02 - - 1.3484419882297516e-01 -8.9047953486442566e-02 - <_> - - 0 -1 2541 -6.8692131899297237e-03 - - 2.1173520386219025e-01 -6.5386101603507996e-02 - <_> - - 0 -1 2542 5.6604170240461826e-03 - - -1.3595540076494217e-02 1.8750169873237610e-01 - <_> - - 0 -1 2543 -9.4631352112628520e-05 - - 5.0867721438407898e-02 -1.8780030310153961e-01 - <_> - - 0 -1 2544 3.4878090955317020e-03 - - -5.1359388977289200e-02 1.1506889760494232e-01 - <_> - - 0 -1 2545 -9.4707533717155457e-03 - - 9.8822489380836487e-02 -9.3697369098663330e-02 - <_> - - 0 -1 2546 1.4385590329766273e-02 - - -7.8755013644695282e-02 3.1363941729068756e-02 - <_> - - 0 -1 2547 -1.4251519460231066e-03 - - 1.4444510638713837e-01 -6.3101217150688171e-02 - <_> - - 0 -1 2548 3.6899289116263390e-03 - - 2.3989859968423843e-02 -3.2146468758583069e-01 - <_> - - 0 -1 2549 -6.8723889999091625e-03 - - -2.5446730852127075e-01 3.3128850162029266e-02 - <_> - - 0 -1 2550 2.4660020135343075e-03 - - -4.3644420802593231e-02 1.4037939906120300e-01 - <_> - - 0 -1 2551 9.1303391382098198e-03 - - 2.3647300899028778e-02 -3.7906241416931152e-01 - <_> - - 0 -1 2552 -3.0127069912850857e-03 - - 2.3551990091800690e-01 -4.2731329798698425e-02 - <_> - - 0 -1 2553 1.1245849542319775e-02 - - 2.3805119097232819e-02 -3.1765449047088623e-01 - <_> - - 0 -1 2554 4.4033519923686981e-02 - - 1.5065879561007023e-02 -2.5235170125961304e-01 - <_> - - 0 -1 2555 -4.1104990988969803e-02 - - -2.5063040852546692e-01 3.0693089589476585e-02 - <_> - - 0 -1 2556 -3.6634609103202820e-02 - - 1.9319459795951843e-01 -4.1235551238059998e-02 - <_> - - 0 -1 2557 1.4633010141551495e-02 - - -6.6459119319915771e-02 1.5650509297847748e-01 - <_> - - 0 -1 2558 6.3870670273900032e-03 - - -2.6944689452648163e-02 3.7887599319219589e-02 - <_> - - 0 -1 2559 -8.5294283926486969e-03 - - 7.7619388699531555e-02 -1.0268399864435196e-01 - <_> - - 0 -1 2560 1.0175130330026150e-02 - - 2.1145140752196312e-02 -2.7438971400260925e-01 - <_> - - 0 -1 2561 4.6252820640802383e-02 - - -3.2085079699754715e-02 2.9516988992691040e-01 - <_> - - 0 -1 2562 -2.0645210519433022e-02 - - 9.0427830815315247e-02 -3.8768420927226543e-03 - <_> - - 0 -1 2563 -1.8383029848337173e-02 - - -3.1522661447525024e-01 3.0239699408411980e-02 - <_> - - 0 -1 2564 -7.0474706590175629e-02 - - 8.4262803196907043e-02 -9.4253793358802795e-02 - <_> - - 0 -1 2565 2.8779879212379456e-02 - - -4.3083410710096359e-02 2.5382921099662781e-01 - <_> - - 0 -1 2566 -3.9638858288526535e-03 - - -3.0343660712242126e-01 2.6317149400711060e-02 - <_> - - 0 -1 2567 -7.3942821472883224e-03 - - -4.3046790361404419e-01 1.5894040465354919e-02 - <_> - - 0 -1 2568 -3.9092078804969788e-02 - - -4.6360069513320923e-01 1.1617040261626244e-02 - <_> - - 0 -1 2569 -4.2651049792766571e-02 - - -4.4052749872207642e-01 1.4934539794921875e-02 - <_> - - 0 -1 2570 -3.2970950007438660e-02 - - -3.4874680638313293e-01 -3.7375820102170110e-04 - <_> - - 0 -1 2571 -1.3688179664313793e-02 - - 2.4025470018386841e-01 -3.0663989484310150e-02 - <_> - - 0 -1 2572 3.6174680572003126e-03 - - -4.3150220066308975e-02 1.1144080013036728e-01 - <_> - - 0 -1 2573 -1.8408719450235367e-02 - - -3.0483740568161011e-01 2.2827899083495140e-02 - <_> - - 0 -1 2574 8.4504440426826477e-02 - - -9.5612574368715286e-03 2.0102660357952118e-01 - <_> - - 0 -1 2575 3.1940080225467682e-02 - - 2.8196170926094055e-02 -2.6275300979614258e-01 - <_> - - 0 -1 2576 -5.6045739911496639e-03 - - 9.5459349453449249e-02 -7.0795007050037384e-02 - <_> - - 0 -1 2577 -2.7486490085721016e-02 - - -1.2586189806461334e-01 5.3209599107503891e-02 - <_> - - 0 -1 2578 4.0080148726701736e-02 - - -1.9919050391763449e-03 2.6778548955917358e-01 - <_> - - 0 -1 2579 -6.0500898398458958e-03 - - 1.0807660222053528e-01 -7.6502397656440735e-02 - <_> - - 0 -1 2580 1.6309870406985283e-02 - - 3.1113339588046074e-02 -2.2906629741191864e-01 - <_> - - 0 -1 2581 -2.1269150078296661e-02 - - -2.7229338884353638e-01 2.6028970256447792e-02 - <_> - - 0 -1 2582 -1.1312039714539424e-04 - - 5.4071560502052307e-02 -1.2318380177021027e-01 - <_> - - 0 -1 2583 -2.5106180459260941e-02 - - 1.9082669913768768e-01 -4.0326580405235291e-02 - <_> - - 0 -1 2584 -3.2266911119222641e-02 - - 6.0755331069231033e-02 -2.3014400154352188e-02 - <_> - - 0 -1 2585 -1.5903979539871216e-02 - - 6.6860802471637726e-02 -1.1064460128545761e-01 - <_> - - 0 -1 2586 6.2107760459184647e-03 - - 8.0979540944099426e-03 -2.5538039207458496e-01 - <_> - - 0 -1 2587 -9.4095463282428682e-05 - - 6.3928060233592987e-02 -1.1833990365266800e-01 - <_> - - 0 -1 2588 5.5843768641352654e-03 - - -5.0344880670309067e-02 1.4636759459972382e-01 - <_> - - 0 -1 2589 -7.3416143655776978e-02 - - -3.6426061391830444e-01 1.7588060349225998e-02 - <_> - - 0 -1 2590 7.9857250675559044e-03 - - -2.0407540723681450e-02 2.0582839846611023e-01 - <_> - - 0 -1 2591 -4.6555800363421440e-03 - - 1.1924490332603455e-01 -5.3060591220855713e-02 - <_> - - 0 -1 2592 -1.4567379839718342e-03 - - 8.0878950655460358e-02 -3.4969870001077652e-02 - <_> - - 0 -1 2593 -4.0669189766049385e-03 - - 1.3475550711154938e-01 -6.0763791203498840e-02 - <_> - - 0 -1 2594 -1.9439009483903646e-03 - - 3.5232741385698318e-02 -1.8867930397391319e-02 - <_> - - 0 -1 2595 -2.1124959457665682e-03 - - 9.3589469790458679e-02 -7.2769477963447571e-02 - <_> - - 0 -1 2596 -4.3111350387334824e-03 - - 2.3961730301380157e-02 -5.8411359786987305e-02 - <_> - - 0 -1 2597 5.6312880478799343e-03 - - 4.9782160669565201e-02 -1.3893429934978485e-01 - <_> - - 0 -1 2598 -2.9775509610772133e-02 - - -2.3828829824924469e-01 8.3421133458614349e-03 - <_> - - 0 -1 2599 -2.4996970314532518e-03 - - 7.0528857409954071e-02 -8.8426813483238220e-02 - <_> - - 0 -1 2600 -4.1618719696998596e-02 - - -4.5704779028892517e-01 2.4038259289227426e-04 - <_> - - 0 -1 2601 -1.7385400831699371e-02 - - -2.1895749866962433e-01 2.9016839340329170e-02 - <_> - - 0 -1 2602 -1.5565169742330909e-03 - - 3.5198878496885300e-02 -4.7955259680747986e-02 - <_> - - 0 -1 2603 1.1509309842949733e-04 - - -7.5342476367950439e-02 8.2199811935424805e-02 - <_> - - 0 -1 2604 4.9892379902303219e-03 - - 5.8806170709431171e-03 -3.6068248748779297e-01 - <_> - - 0 -1 2605 -1.0128300345968455e-04 - - 8.4276176989078522e-02 -6.8763136863708496e-02 - <_> - - 0 -1 2606 9.9149248853791505e-05 - - -6.1370018869638443e-02 9.2962853610515594e-02 - <_> - - 0 -1 2607 -7.4688978202175349e-05 - - 6.6261902451515198e-02 -8.9723907411098480e-02 - <_> - - 0 -1 2608 -1.1687710136175156e-01 - - -2.6946708559989929e-01 2.2773561067879200e-03 - <_> - - 0 -1 2609 -4.5594099909067154e-02 - - -2.1460740268230438e-01 2.7173580601811409e-02 - <_> - - 0 -1 2610 -2.0167430862784386e-02 - - -2.1186199784278870e-01 2.1692689508199692e-02 - <_> - - 0 -1 2611 -2.0116599276661873e-02 - - -4.2579978704452515e-01 1.2864829972386360e-02 - <_> - - 0 -1 2612 1.0467610554769635e-03 - - 3.5689130425453186e-02 -1.3110220432281494e-01 - <_> - - 0 -1 2613 -2.2577140480279922e-02 - - -2.8517609834671021e-01 1.9716870039701462e-02 - <_> - - 0 -1 2614 -1.6918679466471076e-03 - - -2.2059449553489685e-01 3.4719381481409073e-02 - <_> - - 0 -1 2615 -1.7014020122587681e-03 - - 1.6053110361099243e-01 -3.8246080279350281e-02 - <_> - - 0 -1 2616 6.3295272411778569e-04 - - 6.1598058789968491e-02 -1.5416809916496277e-01 - <_> - - 0 -1 2617 6.3840970396995544e-03 - - -4.4685110449790955e-02 1.4613169431686401e-01 - <_> - - 0 -1 2618 1.1487339623272419e-02 - - -2.0203100517392159e-02 1.0990539938211441e-01 - <_> - - 0 -1 2619 -9.9725337349809706e-05 - - 8.8752306997776031e-02 -7.8050062060356140e-02 - <_> - - 0 -1 2620 -1.3515730388462543e-02 - - 1.2383879721164703e-01 -6.8068411201238632e-03 - <_> - - 0 -1 2621 -1.9129710271954536e-02 - - -4.0590089559555054e-01 1.4618029817938805e-02 - <_> - - 0 -1 2622 -3.4465670585632324e-02 - - 2.8184041380882263e-01 -2.2152330726385117e-02 - <_> - - 0 -1 2623 -2.0487470552325249e-02 - - 8.6006246507167816e-02 -7.4289858341217041e-02 - <_> - - 0 -1 2624 2.1417900919914246e-02 - - -5.0567369908094406e-02 1.7608459293842316e-01 - <_> - - 0 -1 2625 1.0022870264947414e-04 - - -7.6136611402034760e-02 7.7453456819057465e-02 - <_> - - 0 -1 2626 -1.1440980015322566e-03 - - 1.3106130063533783e-01 -5.9427108615636826e-02 - <_> - - 0 -1 2627 -1.4926489675417542e-03 - - 1.1569160223007202e-01 -5.1303990185260773e-02 - <_> - - 0 -1 2628 -1.4178160345181823e-03 - - -1.1656679958105087e-01 3.6218471825122833e-02 - <_> - - 0 -1 2629 -4.7570239752531052e-02 - - -3.0153951048851013e-01 1.7995720729231834e-02 - <_> - - 0 -1 2630 6.7516998387873173e-03 - - 4.5671020634472370e-03 -3.2800048589706421e-01 - <_> - - 0 -1 2631 -9.9902870715595782e-05 - - 6.2831349670886993e-02 -9.0242616832256317e-02 - <_> - - 0 -1 2632 4.4691278599202633e-03 - - 1.6881229355931282e-02 -2.5619581341743469e-01 - <_> - - 0 -1 2633 -1.5597039600834250e-03 - - 1.5142050385475159e-01 -3.4283578395843506e-02 - <_> - - 0 -1 2634 -2.9167518950998783e-03 - - -2.3072950541973114e-01 1.3630339875817299e-02 - <_> - - 0 -1 2635 9.9341967143118382e-05 - - -7.1005381643772125e-02 8.1697426736354828e-02 - <_> - - 0 -1 2636 1.1012300092261285e-04 - - -3.6688800901174545e-02 5.5210899561643600e-02 - <_> - - 0 -1 2637 -1.2116230209358037e-04 - - 7.6930791139602661e-02 -7.8013658523559570e-02 - <_> - - 0 -1 2638 8.2692378782667220e-05 - - -6.9511868059635162e-02 5.4754100739955902e-02 - <_> - - 0 -1 2639 -5.7337670587003231e-03 - - -3.8145920634269714e-01 1.3249520212411880e-02 - <_> - - 0 -1 2640 8.4541890828404576e-05 - - -5.8527629822492599e-02 5.2114509046077728e-02 - <_> - - 0 -1 2641 -3.2148940954357386e-03 - - 1.9818669557571411e-01 -2.7734709903597832e-02 - <_> - - 0 -1 2642 2.6157390326261520e-02 - - -2.9161190614104271e-02 9.3741878867149353e-02 - <_> - - 0 -1 2643 -1.4505890198051929e-02 - - -2.2876620292663574e-01 2.3291150107979774e-02 - <_> - - 0 -1 2644 8.5460231639444828e-04 - - -1.7463499680161476e-02 4.9941889941692352e-02 - <_> - - 0 -1 2645 -7.4818951543420553e-04 - - 5.3755320608615875e-02 -1.2013070285320282e-01 - <_> - - 0 -1 2646 2.7736639603972435e-02 - - -4.6890750527381897e-03 5.5901169776916504e-01 - <_> - - 0 -1 2647 3.9643929339945316e-03 - - -3.6292050033807755e-02 1.5132050216197968e-01 - <_> - - 0 -1 2648 -2.2398240398615599e-03 - - -3.6148559302091599e-02 1.3452059589326382e-02 - <_> - - 0 -1 2649 -3.9014678914099932e-03 - - 1.1665710061788559e-01 -5.8023910969495773e-02 - <_> - - 0 -1 2650 7.8577287495136261e-03 - - -4.5177441090345383e-02 1.5682870149612427e-01 - <_> - - 0 -1 2651 2.2638099268078804e-02 - - -1.3579820096492767e-01 4.2554739862680435e-02 - <_> - - 0 -1 2652 -2.5986449792981148e-02 - - 1.7888210713863373e-01 -4.7442611306905746e-02 - <_> - - 0 -1 2653 1.9732700660824776e-02 - - -2.7600640431046486e-02 2.1244800090789795e-01 - <_> - - 0 -1 2654 -4.2725708335638046e-03 - - 4.8975061625242233e-02 -6.9325067102909088e-02 - <_> - - 0 -1 2655 3.9207109808921814e-01 - - -1.2857420369982719e-02 4.3954390287399292e-01 - <_> - - 0 -1 2656 -5.9483079239726067e-03 - - -3.7634629011154175e-01 8.6762178689241409e-03 - <_> - - 0 -1 2657 -8.9699737145565450e-05 - - 7.6080530881881714e-02 -8.0823980271816254e-02 - <_> - - 0 -1 2658 -8.3298161625862122e-03 - - -1.1028739809989929e-01 1.4299210160970688e-02 - <_> - - 0 -1 2659 -1.1061090044677258e-02 - - 2.3409999907016754e-01 -2.2986939176917076e-02 - <_> - - 0 -1 2660 -3.4027020446956158e-03 - - 1.2203729897737503e-01 -2.9225839301943779e-02 - <_> - - 0 -1 2661 8.6490763351321220e-05 - - -6.7251376807689667e-02 7.6228253543376923e-02 - <_> - - 0 -1 2662 6.6004507243633270e-02 - - 8.9948913082480431e-03 -1.1085270345211029e-01 - <_> - - 0 -1 2663 -6.1384908854961395e-02 - - -3.7708151340484619e-01 1.3758949935436249e-02 - <_> - - 0 -1 2664 2.2467050701379776e-02 - - 1.3185550458729267e-02 -1.5804879367351532e-01 - <_> - - 0 -1 2665 -1.0128029622137547e-02 - - 1.0872840136289597e-01 -5.3388658910989761e-02 - <_> - - 0 -1 2666 1.0057699866592884e-02 - - -4.2716991156339645e-02 1.2052679806947708e-01 - <_> - - 0 -1 2667 -1.4173669740557671e-02 - - -2.0305970311164856e-01 2.4551179260015488e-02 - <_> - - 0 -1 2668 -2.3401159793138504e-02 - - -4.0858080983161926e-01 2.0997230894863605e-03 - <_> - - 0 -1 2669 -1.2913989834487438e-02 - - -3.5346880555152893e-01 1.3238550163805485e-02 - <_> - - 0 -1 2670 1.1887939646840096e-02 - - -2.4994270876049995e-02 1.0629689693450928e-01 - <_> - - 0 -1 2671 1.4728870242834091e-02 - - 1.2584480457007885e-02 -3.5870888829231262e-01 - <_> - - 0 -1 2672 -2.6837689802050591e-03 - - 5.5337000638246536e-02 -3.3083409070968628e-02 - <_> - - 0 -1 2673 8.5124364122748375e-03 - - -5.2581608295440674e-02 1.2180329859256744e-01 - <_> - - 0 -1 2674 -9.1770477592945099e-03 - - -3.4201860427856445e-01 8.0853570252656937e-03 - <_> - - 0 -1 2675 8.6409807205200195e-02 - - 2.2997839376330376e-02 -2.0930939912796021e-01 - <_> - - 0 -1 2676 -1.4614709652960300e-02 - - -3.1371870636940002e-01 8.6596552282571793e-03 - <_> - - 0 -1 2677 -1.0003909847000614e-04 - - 4.7573979943990707e-02 -1.1311870068311691e-01 - <_> - - 0 -1 2678 1.4839449431747198e-03 - - -5.4255820810794830e-02 7.0115558803081512e-02 - <_> - - 0 -1 2679 4.3706027790904045e-03 - - -4.4686149805784225e-02 1.2047159671783447e-01 - <_> - - 0 -1 2680 1.4132079482078552e-01 - - 1.2737610377371311e-02 -1.4522150158882141e-01 - <_> - - 0 -1 2681 2.4103390052914619e-02 - - -2.4701459333300591e-02 1.9275949895381927e-01 - <_> - - 0 -1 2682 4.3824901804327965e-03 - - 2.7143049985170364e-02 -1.6311520338058472e-01 - <_> - - 0 -1 2683 -1.0324969887733459e-01 - - -1.4729699492454529e-01 3.1285788863897324e-02 - <_> - - 0 -1 2684 -5.8382350951433182e-02 - - 9.8135061562061310e-02 -3.9102800190448761e-02 - <_> - - 0 -1 2685 -1.9191790372133255e-02 - - 7.1935810148715973e-02 -8.2254111766815186e-02 - <_> - - 0 -1 2686 1.6117200255393982e-02 - - -3.9202481508255005e-02 9.5867179334163666e-02 - <_> - - 0 -1 2687 -6.6582779400050640e-03 - - 9.4062991440296173e-02 -5.7329818606376648e-02 - <_> - - 0 -1 2688 -1.6119579970836639e-01 - - -1.7675599455833435e-01 1.3390669599175453e-02 - <_> - - 0 -1 2689 -1.6168789565563202e-01 - - 2.7366220951080322e-01 -1.9569290801882744e-02 - <_> - - 0 -1 2690 -4.0631181001663208e-01 - - 1.6015130281448364e-01 -3.3474721014499664e-02 - <_> - - 0 -1 2691 2.6102520525455475e-02 - - -3.3659111708402634e-02 1.7118139564990997e-01 - <_> - - 0 -1 2692 2.0601820200681686e-02 - - 1.6000960022211075e-02 -2.3066750168800354e-01 - <_> - - 0 -1 2693 1.0951990261673927e-02 - - 2.4326240643858910e-02 -1.9323149323463440e-01 - <_> - - 0 -1 2694 -1.5384820289909840e-02 - - 1.2911400198936462e-01 -2.3152599111199379e-02 - <_> - - 0 -1 2695 9.1529190540313721e-03 - - -2.7552120387554169e-02 1.9494320452213287e-01 - <_> - - 0 -1 2696 5.8382698334753513e-03 - - -3.7690669298171997e-02 5.3948331624269485e-02 - <_> - - 0 -1 2697 -1.7356640100479126e-01 - - 1.5356999635696411e-01 -3.3633600920438766e-02 - <_> - - 0 -1 2698 7.6276779174804688e-02 - - 1.5475229592993855e-03 -7.5983768701553345e-01 - <_> - - 0 -1 2699 -1.7654739320278168e-02 - - -1.5101839601993561e-01 3.4960251301527023e-02 - <_> - - 0 -1 2700 5.0020511262118816e-03 - - 1.0976109653711319e-02 -1.1282850056886673e-01 - <_> - - 0 -1 2701 -7.6133022957947105e-05 - - 6.5145239233970642e-02 -8.6627103388309479e-02 - <_> - - 0 -1 2702 8.4629254415631294e-03 - - -3.0137870460748672e-02 7.9518511891365051e-02 - <_> - - 0 -1 2703 -5.5159530602395535e-03 - - 1.1917640268802643e-01 -4.7046270221471786e-02 - <_> - - 0 -1 2704 -1.0923639871180058e-02 - - -2.0526829361915588e-01 1.4711259864270687e-02 - <_> - - 0 -1 2705 -1.1515899561345577e-02 - - -2.4651350080966949e-01 2.2872030735015869e-02 - <_> - - 0 -1 2706 3.6823050322709605e-05 - - -6.6898003220558167e-02 7.6234780251979828e-02 - <_> - - 0 -1 2707 -1.3713270425796509e-02 - - 2.0567509531974792e-01 -2.3606160655617714e-02 - <_> - - 0 -1 2708 -5.5889528244733810e-02 - - -2.7449899911880493e-01 1.3196709565818310e-02 - <_> - - 0 -1 2709 -7.8329117968678474e-03 - - -3.5972028970718384e-01 1.2990689836442471e-02 - <_> - - 0 -1 2710 -7.7925767982378602e-04 - - -1.4078480005264282e-01 4.9385368824005127e-02 - <_> - - 0 -1 2711 -5.0162840634584427e-03 - - 1.9255110621452332e-01 -2.6873560622334480e-02 - <_> - - 0 -1 2712 8.3736347733065486e-04 - - 6.6555291414260864e-02 -1.9420300424098969e-01 - <_> - - 0 -1 2713 -3.5831771790981293e-02 - - 8.7871067225933075e-02 -5.5707920342683792e-02 - <_> - - 0 -1 2714 -2.4628289975225925e-03 - - -2.0921580493450165e-01 1.8114559352397919e-02 - <_> - - 0 -1 2715 9.1072899522259831e-05 - - -6.9014422595500946e-02 8.4240511059761047e-02 - <_> - - 0 -1 2716 -9.2241833044681698e-05 - - 4.5415610074996948e-02 -3.6202490329742432e-02 - <_> - - 0 -1 2717 -9.7194097179453820e-05 - - 8.1714563071727753e-02 -7.3729299008846283e-02 - <_> - - 0 -1 2718 -1.4691230654716492e-01 - - 4.7253649681806564e-02 -1.1035589873790741e-01 - <_> - - 0 -1 2719 4.6493168920278549e-03 - - -2.2682029753923416e-02 2.3072040081024170e-01 - <_> - - 0 -1 2720 -3.0784970149397850e-02 - - 1.5000149607658386e-01 -8.1769423559308052e-03 - <_> - - 0 -1 2721 4.7821208834648132e-02 - - 1.2351839803159237e-02 -3.6188510060310364e-01 - <_> - - 0 -1 2722 9.8456286650616676e-05 - - -3.4333311021327972e-02 4.0087040513753891e-02 - <_> - - 0 -1 2723 1.0053080040961504e-04 - - -6.2489669770002365e-02 6.9051243364810944e-02 - <_> - - 0 -1 2724 -1.1028290027752519e-03 - - 1.1222849786281586e-01 -4.7414951026439667e-02 - <_> - - 0 -1 2725 -1.0884639777941629e-04 - - 7.9145051538944244e-02 -7.1242846548557281e-02 - <_> - - 0 -1 2726 7.7682570554316044e-03 - - 8.4031699225306511e-03 -1.8451359868049622e-01 - <_> - - 0 -1 2727 -1.0334140388295054e-03 - - 7.7164746820926666e-02 -5.5574499070644379e-02 - <_> - - 0 -1 2728 -3.0169570818543434e-03 - - 6.5370842814445496e-02 -6.8895407021045685e-02 - <_> - - 0 -1 2729 4.2601529508829117e-02 - - 9.5762135460972786e-03 -4.5295569300651550e-01 - <_> - - 0 -1 2730 8.9718572795391083e-02 - - 5.8670719154179096e-03 -6.6131949424743652e-01 - <_> - - 0 -1 2731 -1.9257919630035758e-03 - - 1.2355759739875793e-01 -3.5531468689441681e-02 - <_> - - 0 -1 2732 -4.6729970723390579e-02 - - -3.8210949301719666e-01 2.5716701056808233e-03 - <_> - - 0 -1 2733 -1.9390480592846870e-02 - - -2.6054370403289795e-01 1.8408829346299171e-02 - <_> - - 0 -1 2734 -3.3818829804658890e-02 - - -8.3000667393207550e-02 1.8959350883960724e-02 - <_> - - 0 -1 2735 -2.7817259542644024e-03 - - 5.1791708916425705e-02 -9.4872772693634033e-02 - <_> - - 0 -1 2736 6.0290079563856125e-03 - - -4.2852569371461868e-02 8.8055506348609924e-02 - <_> - - 0 -1 2737 -6.8631009198725224e-03 - - 1.6017200052738190e-01 -3.7203401327133179e-02 - <_> - - 0 -1 2738 1.1772879958152771e-01 - - -1.8191840499639511e-03 6.7784088850021362e-01 - <_> - - 0 -1 2739 9.8577737808227539e-02 - - -6.5248049795627594e-03 6.2354952096939087e-01 - <_> - - 0 -1 2740 -1.1462450027465820e-02 - - -1.9901570677757263e-01 8.0179795622825623e-03 - <_> - - 0 -1 2741 -1.6331799328327179e-01 - - 9.0368956327438354e-02 -5.3411129862070084e-02 - <_> - - 0 -1 2742 -7.8257713466882706e-03 - - 7.4546746909618378e-02 -1.3470030389726162e-02 - <_> - - 0 -1 2743 8.9898668229579926e-03 - - 1.2299000285565853e-02 -3.7481948733329773e-01 - <_> - - 0 -1 2744 -5.6645218282938004e-02 - - 3.5397979617118835e-01 -2.1140910685062408e-03 - <_> - - 0 -1 2745 -4.2577688582241535e-03 - - 9.0883523225784302e-02 -5.0522129982709885e-02 - <_> - - 0 -1 2746 -7.0387452840805054e-02 - - 8.3182856440544128e-02 -1.1604440398514271e-02 - <_> - - 0 -1 2747 -1.3627569377422333e-01 - - -4.9146878719329834e-01 9.1721685603260994e-03 - <_> - - 0 -1 2748 -3.8915369659662247e-02 - - 6.6144913434982300e-02 -2.0414689555764198e-02 - <_> - - 0 -1 2749 -8.5782501846551895e-03 - - -1.2900049984455109e-01 4.2405869811773300e-02 - <_> - - 0 -1 2750 4.3098080903291702e-02 - - -1.8007570877671242e-02 2.4129959940910339e-01 - <_> - - 0 -1 2751 -3.3460808917880058e-03 - - 1.4778639376163483e-01 -3.3262528479099274e-02 - <_> - - 0 -1 2752 5.3540067747235298e-03 - - 1.4319010078907013e-02 -2.9529830813407898e-01 - <_> - - 0 -1 2753 -1.1729090329026803e-04 - - 5.7986699044704437e-02 -7.5029499828815460e-02 - <_> - - 0 -1 2754 -1.3683609664440155e-01 - - -2.7513518929481506e-01 8.0752503126859665e-03 - <_> - - 0 -1 2755 5.7693019509315491e-02 - - -1.1471459642052650e-02 3.7974670529365540e-01 - <_> - - 0 -1 2756 2.1746279671788216e-02 - - 2.2382160648703575e-02 -5.4663319140672684e-02 - <_> - - 0 -1 2757 -5.4478328675031662e-02 - - -5.7317501306533813e-01 8.2423100247979164e-03 - <_> - - 0 -1 2758 2.3975670337677002e-02 - - -2.3942779749631882e-02 1.8982769548892975e-01 - <_> - - 0 -1 2759 -3.4061338752508163e-02 - - -9.0856909751892090e-02 4.9854729324579239e-02 - <_> - - 0 -1 2760 5.6406371295452118e-03 - - -2.4469649791717529e-01 1.9837260246276855e-02 - <_> - - 0 -1 2761 1.5809290111064911e-01 - - -1.3730409555137157e-02 3.8538208603858948e-01 - <_> - - 0 -1 2762 -1.7964139580726624e-02 - - -7.9316347837448120e-02 1.2321749702095985e-02 - <_> - - 0 -1 2763 -1.1972050182521343e-02 - - -1.4300990104675293e-01 3.0117489397525787e-02 - <_> - - 0 -1 2764 1.3162150047719479e-02 - - 1.1303279548883438e-02 -1.7486180365085602e-01 - <_> - - 0 -1 2765 -8.5265472531318665e-02 - - -3.9678549766540527e-01 1.0860330425202847e-02 - <_> - - 0 -1 2766 1.7804340459406376e-03 - - -3.9756961166858673e-02 1.1241979897022247e-01 - <_> - - 0 -1 2767 -9.3962233222555369e-05 - - 6.7450180649757385e-02 -6.8437807261943817e-02 - <_> - - 0 -1 2768 -2.9045040719211102e-03 - - -1.5429930388927460e-01 1.6898680478334427e-02 - <_> - - 0 -1 2769 1.0914620361290872e-04 - - -6.4099319279193878e-02 8.4356158971786499e-02 - <_> - - 0 -1 2770 -2.6563489809632301e-02 - - -2.3420210182666779e-01 6.7638568580150604e-03 - <_> - - 0 -1 2771 5.8761797845363617e-03 - - 4.1062418371438980e-02 -1.1332540214061737e-01 - <_> - - 0 -1 2772 1.6818059608340263e-02 - - -3.7261139601469040e-02 1.0307539999485016e-01 - <_> - - 0 -1 2773 -6.8439432652667165e-05 - - 7.6601967215538025e-02 -6.5059483051300049e-02 - <_> - - 0 -1 2774 5.9544979594647884e-03 - - -5.1745139062404633e-02 1.1782070249319077e-01 - <_> - - 0 -1 2775 2.4542519822716713e-02 - - -4.4502120465040207e-02 1.3515689969062805e-01 - <_> - - 0 -1 2776 -1.7439179122447968e-02 - - -3.5987889766693115e-01 4.2388997972011566e-03 - <_> - - 0 -1 2777 8.4699690341949463e-02 - - -9.4887204468250275e-03 4.8985049128532410e-01 - <_> - - 0 -1 2778 5.8426469564437866e-02 - - -1.7764889635145664e-03 2.4012650549411774e-01 - <_> - - 0 -1 2779 -4.6921251341700554e-03 - - -1.8347929418087006e-01 2.4366600438952446e-02 - <_> - - 0 -1 2780 1.6189800226129591e-04 - - -1.5806570649147034e-02 6.0901619493961334e-02 - <_> - - 0 -1 2781 9.7161885350942612e-03 - - -1.5758480876684189e-02 3.3742859959602356e-01 - <_> - - 0 -1 2782 -1.4382590306922793e-03 - - -1.2217970192432404e-01 3.5345770418643951e-02 - <_> - - 0 -1 2783 7.7670789323747158e-05 - - -6.2246508896350861e-02 7.3040649294853210e-02 - <_> - - 0 -1 2784 -4.1573401540517807e-02 - - 4.1148650646209717e-01 -4.6173711307346821e-03 - <_> - - 0 -1 2785 1.1024770356016234e-04 - - -9.3715772032737732e-02 5.2691221237182617e-02 - <_> - - 0 -1 2786 1.0518720373511314e-03 - - 4.0317419916391373e-02 -1.0210459679365158e-01 - <_> - - 0 -1 2787 8.7676383554935455e-02 - - 1.8454900011420250e-02 -2.4232000112533569e-01 - <_> - - 0 -1 2788 -3.1262669712305069e-02 - - -4.8824569582939148e-01 6.7201550118625164e-03 - <_> - - 0 -1 2789 3.5472500603646040e-03 - - -4.7451101243495941e-02 9.8277866840362549e-02 - <_> - - 0 -1 2790 -6.1450069770216942e-03 - - -3.8893818855285645e-01 8.0250157043337822e-03 - <_> - - 0 -1 2791 -1.1112130014225841e-03 - - 1.2668809294700623e-01 -4.1672218590974808e-02 - <_> - - 0 -1 2792 -2.4048870429396629e-02 - - -1.9376470148563385e-01 7.5982958078384399e-03 - <_> - - 0 -1 2793 -1.1609439738094807e-02 - - 8.7421193718910217e-02 -5.1379751414060593e-02 - <_> - - 0 -1 2794 -4.6341970562934875e-02 - - 2.9603001475334167e-01 -7.7182101085782051e-03 - <_> - - 0 -1 2795 -1.9600499421358109e-02 - - -3.0478379130363464e-01 1.4669680036604404e-02 - <_> - - 0 -1 2796 -2.6132878847420216e-03 - - 8.9694216847419739e-02 -2.9012639075517654e-02 - <_> - - 0 -1 2797 3.4202230162918568e-03 - - 3.9998780936002731e-02 -1.0716559737920761e-01 - <_> - - 0 -1 2798 1.2173360300948843e-04 - - -3.2719809561967850e-02 3.9863388985395432e-02 - <_> - - 0 -1 2799 -8.2835118519142270e-05 - - 6.9058813154697418e-02 -6.5140433609485626e-02 - <_> - - 0 -1 2800 -8.8672131299972534e-02 - - -2.5951391458511353e-01 2.3857909254729748e-03 - <_> - - 0 -1 2801 5.6452948600053787e-02 - - -2.4432990700006485e-02 1.9439670443534851e-01 - <_> - - 0 -1 2802 3.5284429788589478e-02 - - -6.3825729303061962e-03 1.3022419810295105e-01 - <_> - - 0 -1 2803 3.3733129967004061e-03 - - 4.5979738235473633e-02 -1.0800649970769882e-01 - <_> - - 0 -1 2804 2.8562510851770639e-03 - - 1.6703339293599129e-02 -3.4011591225862503e-02 - <_> - - 0 -1 2805 -1.4414669713005424e-03 - - 9.9324166774749756e-02 -4.2529720813035965e-02 - <_> - - 0 -1 2806 -8.5116196423768997e-03 - - -7.5509257614612579e-02 1.0203289799392223e-02 - <_> - - 0 -1 2807 -9.2428773641586304e-03 - - -1.5811079740524292e-01 2.5361889973282814e-02 - <_> - - 0 -1 2808 -2.8794261161237955e-03 - - 7.9453438520431519e-02 -2.7514219284057617e-02 - <_> - - 0 -1 2809 1.0851400293176994e-04 - - -6.1319191008806229e-02 7.4100911617279053e-02 - <_> - - 0 -1 2810 1.7776450514793396e-01 - - -1.4268799684941769e-02 1.2164130061864853e-01 - <_> - - 0 -1 2811 -1.7149469256401062e-01 - - 1.5083140134811401e-01 -3.4926589578390121e-02 - <_> - - 0 -1 2812 1.5180290210992098e-04 - - -4.1534621268510818e-02 4.2376600205898285e-02 - <_> - - 0 -1 2813 6.3419649377465248e-03 - - 2.2105900570750237e-02 -2.1631160378456116e-01 - <_> - - 0 -1 2814 1.3935989700257778e-02 - - 5.4779318161308765e-03 -2.5664830207824707e-01 - <_> - - 0 -1 2815 -9.7202723845839500e-03 - - -2.7872490882873535e-01 1.5381219796836376e-02 - <_> - - 0 -1 2816 -2.7980960905551910e-02 - - -8.6809730529785156e-01 1.1637150309979916e-03 - <_> - - 0 -1 2817 3.6777809727936983e-03 - - -4.3908510357141495e-02 9.6896052360534668e-02 - <_> - - 0 -1 2818 -3.1721419654786587e-03 - - -2.4078020453453064e-01 1.3723400421440601e-02 - <_> - - 0 -1 2819 -3.9061410352587700e-03 - - 1.7140209674835205e-01 -2.2317929193377495e-02 - <_> - - 0 -1 2820 9.6693192608654499e-04 - - 3.2951351255178452e-02 -1.0080079734325409e-01 - <_> - - 0 -1 2821 -8.9019339065998793e-04 - - -1.1009719967842102e-01 3.8997169584035873e-02 - <_> - - 0 -1 2822 -1.1497789993882179e-02 - - 3.3927921205759048e-02 -3.9842899888753891e-02 - <_> - - 0 -1 2823 -7.9675206507090479e-05 - - 7.7203802764415741e-02 -6.1698041856288910e-02 - <_> - - 0 -1 2824 8.9554538135416806e-05 - - -5.7938948273658752e-02 6.7448146641254425e-02 - <_> - - 0 -1 2825 -5.9674619697034359e-03 - - 1.0244590044021606e-01 -3.9467670023441315e-02 - <_> - - 0 -1 2826 8.7341177277266979e-05 - - -5.9245120733976364e-02 6.4863033592700958e-02 - <_> - - 0 -1 2827 7.7206510468386114e-05 - - -7.0006839931011200e-02 6.3901223242282867e-02 - <_> - - 0 -1 2828 -3.6013379693031311e-02 - - -2.0447410643100739e-01 1.5239260159432888e-02 - <_> - - 0 -1 2829 -5.5890497751533985e-03 - - 1.5467870235443115e-01 -2.6221899315714836e-02 - <_> - - 0 -1 2830 -3.0190621037036180e-03 - - 1.1821600049734116e-01 -1.9682880491018295e-02 - <_> - - 0 -1 2831 -1.0563310206634924e-04 - - 3.9622470736503601e-02 -1.0212220251560211e-01 - <_> - - 0 -1 2832 2.9260979965329170e-02 - - 9.6228392794728279e-03 -7.9048648476600647e-02 - <_> - - 0 -1 2833 -2.4363890290260315e-02 - - -1.2736499309539795e-01 3.2335508614778519e-02 - <_> - - 0 -1 2834 6.9917208747938275e-04 - - 6.5614067018032074e-02 -2.3335599899291992e-01 - <_> - - 0 -1 2835 -1.6459520906209946e-02 - - 1.3085840642452240e-01 -3.2097321003675461e-02 - <_> - - 0 -1 2836 3.0983570031821728e-03 - - -3.2258279621601105e-02 5.0043828785419464e-02 - <_> - - 0 -1 2837 -3.2638181000947952e-02 - - -2.7409970760345459e-01 1.4894080348312855e-02 - <_> - - 0 -1 2838 1.5158359892666340e-03 - - -1.7136910930275917e-02 8.1351801753044128e-02 - <_> - - 0 -1 2839 -2.5613330304622650e-02 - - 4.1096380352973938e-01 -9.7792968153953552e-03 - <_> - - 0 -1 2840 -1.3288609916344285e-03 - - -1.2679819762706757e-01 3.7426289170980453e-02 - <_> - - 0 -1 2841 -1.9732659682631493e-02 - - -5.6787997484207153e-01 6.9732400588691235e-03 - <_> - - 0 -1 2842 2.7425400912761688e-02 - - -4.0334589779376984e-02 9.4880692660808563e-02 - <_> - - 0 -1 2843 -6.8159690126776695e-03 - - 1.0129919648170471e-01 -4.9294691532850266e-02 - <_> - - 0 -1 2844 -9.7623662441037595e-05 - - 5.7613339275121689e-02 -4.3638128787279129e-02 - <_> - - 0 -1 2845 7.9219877079594880e-05 - - -6.2002480030059814e-02 7.0036582648754120e-02 - <_> - - 0 -1 2846 -9.2277792282402515e-04 - - -7.1099899709224701e-02 2.3343959823250771e-02 - <_> - - 0 -1 2847 1.0547949932515621e-03 - - 3.8641069084405899e-02 -1.1528919637203217e-01 - <_> - - 0 -1 2848 1.1142979928990826e-04 - - -4.3857090175151825e-02 5.0205580890178680e-02 - <_> - - 0 -1 2849 -1.1004459811374545e-03 - - 8.3625599741935730e-02 -4.6221289783716202e-02 - <_> - - 0 -1 2850 -2.0133139565587044e-02 - - -1.8197959661483765e-01 1.9399069249629974e-02 - <_> - - 0 -1 2851 2.5024140253663063e-02 - - 1.1270459741353989e-02 -3.4410759806632996e-01 - <_> - - 0 -1 2852 -4.4190499931573868e-02 - - 2.9248470067977905e-01 -1.4849469996988773e-02 - <_> - - 0 -1 2853 -5.7440258562564850e-02 - - 4.7087571024894714e-01 -7.9044541344046593e-03 - <_> - - 0 -1 2854 1.4867359772324562e-02 - - -1.9268039613962173e-02 1.1098550260066986e-01 - <_> - - 0 -1 2855 1.9520210335031152e-03 - - -3.4362699836492538e-02 1.1349079757928848e-01 - <_> - - 0 -1 2856 -1.3590609654784203e-02 - - -7.9360902309417725e-01 1.8023570301011205e-03 - <_> - - 0 -1 2857 -2.6812639553099871e-03 - - 1.6896739602088928e-01 -2.6089740917086601e-02 - <_> - - 0 -1 2858 -8.6407686467282474e-05 - - 6.1775680631399155e-02 -4.4603981077671051e-02 - <_> - - 0 -1 2859 1.2983200140297413e-03 - - 3.4938950091600418e-02 -1.1019679903984070e-01 - <_> - - 0 -1 2860 2.6221210137009621e-03 - - -3.2050449401140213e-02 6.8139947950839996e-02 - <_> - - 0 -1 2861 1.2280650436878204e-02 - - 1.2359930202364922e-02 -2.9862219095230103e-01 - <_> - - 0 -1 2862 -5.0658849067986012e-03 - - -2.8093919157981873e-01 2.4003749713301659e-02 - <_> - - 0 -1 2863 -1.0383049811935052e-04 - - 6.0894660651683807e-02 -7.0253036916255951e-02 - <_> - - 0 -1 2864 9.8692486062645912e-03 - - 6.2764049507677555e-03 -3.6045169830322266e-01 - <_> - - 0 -1 2865 -9.1246962256263942e-05 - - 6.3636362552642822e-02 -6.4670093357563019e-02 - <_> - - 0 -1 2866 -7.5011849403381348e-03 - - 9.5473609864711761e-02 -3.6763638257980347e-02 - <_> - - 0 -1 2867 -1.4745439589023590e-01 - - -7.9214060306549072e-01 5.0740689039230347e-03 - <_> - - 0 -1 2868 -2.1300138905644417e-03 - - 1.0333529859781265e-01 -4.2891681194305420e-02 - <_> - - 0 -1 2869 2.5524429511278868e-03 - - -4.1929069906473160e-02 8.7996013462543488e-02 - <_> - - 0 -1 2870 5.8139938861131668e-02 - - 1.2611810117959976e-02 -3.0331811308860779e-01 - <_> - - 0 -1 2871 2.3743009194731712e-02 - - -2.9802089557051659e-02 1.2322849780321121e-01 - <_> - - 0 -1 2872 -6.2248498201370239e-02 - - 1.1110640317201614e-01 -2.0817250013351440e-02 - <_> - - 0 -1 2873 -9.1270900156814605e-05 - - 6.4382009208202362e-02 -6.0937818139791489e-02 - <_> - - 0 -1 2874 -3.9082568138837814e-02 - - 5.6695652008056641e-01 -1.1460679816082120e-03 - <_> - - 0 -1 2875 1.3248370029032230e-02 - - 1.2405660003423691e-02 -3.0858299136161804e-01 - <_> - - 0 -1 2876 -5.0235718488693237e-02 - - 1.6084699332714081e-01 -3.1474840361624956e-03 - <_> - - 0 -1 2877 8.1979725509881973e-03 - - -4.3110638856887817e-02 8.3337813615798950e-02 - <_> - - 0 -1 2878 4.5282919891178608e-03 - - -1.4737699925899506e-01 2.2266879677772522e-02 - <_> - - 0 -1 2879 -7.0286458358168602e-03 - - -2.1665599942207336e-01 1.8082590773701668e-02 - <_> - - 0 -1 2880 3.2996211200952530e-02 - - -1.1144799739122391e-01 3.5693738609552383e-02 - <_> - - 0 -1 2881 6.9042239338159561e-03 - - -3.2669480890035629e-02 1.2693080306053162e-01 - <_> - - 0 -1 2882 6.4168781973421574e-03 - - 1.3405409641563892e-02 -2.2676290571689606e-01 - <_> - - 0 -1 2883 3.2765600830316544e-02 - - -2.0737469196319580e-02 2.0090930163860321e-01 - <_> - - 0 -1 2884 -6.9006122648715973e-02 - - -4.8873770236968994e-01 2.5993511080741882e-03 - <_> - - 0 -1 2885 -1.5318569785449654e-04 - - 6.9251857697963715e-02 -6.4636163413524628e-02 - <_> - - 0 -1 2886 1.3968399725854397e-02 - - 2.3769039660692215e-02 -1.3656540215015411e-01 - <_> - - 0 -1 2887 2.4323699995875359e-02 - - 9.9094482138752937e-03 -3.6789679527282715e-01 - <_> - - 0 -1 2888 5.3771991282701492e-02 - - -3.4769340418279171e-03 5.6615811586380005e-01 - <_> - - 0 -1 2889 3.7300360854715109e-03 - - 1.1731130070984364e-02 -3.5765179991722107e-01 - <_> - - 0 -1 2890 -5.9517208486795425e-02 - - -4.9590829014778137e-01 1.2971699470654130e-03 - <_> - - 0 -1 2891 7.5328880921006203e-03 - - -3.6959148943424225e-02 1.0903140157461166e-01 - <_> - - 0 -1 2892 2.3298559244722128e-03 - - 1.4677469618618488e-02 -1.8427179753780365e-01 - <_> - - 0 -1 2893 -1.3588890433311462e-03 - - 1.1983290314674377e-01 -4.0848769247531891e-02 - <_> - - 0 -1 2894 -6.9162257015705109e-02 - - 9.9982842803001404e-02 -2.2005759179592133e-02 - <_> - - 0 -1 2895 -1.0890520364046097e-01 - - 3.5323360562324524e-01 -1.1501859873533249e-02 - <_> - - 0 -1 2896 3.4343260526657104e-01 - - -1.7977360635995865e-02 2.3037150502204895e-01 - <_> - - 0 -1 2897 -6.6631078720092773e-01 - - -4.3691501021385193e-01 1.1366610415279865e-02 - <_> - - 0 -1 2898 -4.5054171234369278e-02 - - 3.2915808260440826e-02 -8.5535138845443726e-02 - <_> - - 0 -1 2899 -1.4088810421526432e-02 - - 5.3100470453500748e-02 -7.7183209359645844e-02 - <_> - - 0 -1 2900 -9.3094259500503540e-03 - - 1.2417539954185486e-01 -3.2946839928627014e-02 - <_> - - 0 -1 2901 1.4807860367000103e-02 - - -7.0644028484821320e-02 8.1475563347339630e-02 - <_> - - 0 -1 2902 1.0399249941110611e-01 - - -1.4924500137567520e-02 1.8357430398464203e-01 - <_> - - 0 -1 2903 1.9406999647617340e-01 - - -6.4371521584689617e-03 6.0971242189407349e-01 - <_> - - 0 -1 2904 -3.8064900785684586e-02 - - -5.2255958318710327e-01 5.7811117731034756e-03 - <_> - - 0 -1 2905 -6.6563528962433338e-03 - - 9.4871222972869873e-02 -3.9789460599422455e-02 - <_> - - 0 -1 2906 -1.0609209857648239e-04 - - 4.5516170561313629e-02 -4.1418150067329407e-02 - <_> - - 0 -1 2907 7.0871852338314056e-02 - - 9.3520022928714752e-03 -3.6439558863639832e-01 - <_> - - 0 -1 2908 1.2085449881851673e-02 - - 2.3465529084205627e-02 -1.4409939944744110e-01 - <_> - - 0 -1 2909 -9.9468030384741724e-05 - - 5.7956721633672714e-02 -6.0917779803276062e-02 - <_> - - 0 -1 2910 1.6888909740373492e-03 - - -4.6765789389610291e-02 1.9036899507045746e-01 - <_> - - 0 -1 2911 -9.8317061201669276e-05 - - 7.2646446526050568e-02 -5.8051958680152893e-02 - <_> - - 0 -1 2912 8.1128161400556564e-03 - - -4.0620859712362289e-02 9.7611181437969208e-02 - <_> - - 0 -1 2913 1.7255520448088646e-02 - - 1.7161769792437553e-02 -2.4358719587326050e-01 - <_> - - 0 -1 2914 3.1692821532487869e-02 - - 1.1967140249907970e-02 -2.9160520434379578e-01 - <_> - - 0 -1 2915 -9.4834472984075546e-03 - - -1.4566260576248169e-01 3.1208310276269913e-02 - <_> - - 0 -1 2916 1.8280290532857180e-03 - - -1.4711730182170868e-02 5.5668108165264130e-02 - <_> - - 0 -1 2917 8.6632797319907695e-05 - - -6.1156060546636581e-02 7.0974543690681458e-02 - <_> - - 0 -1 2918 2.5025049224495888e-02 - - -1.3397550210356712e-02 1.0556930303573608e-01 - <_> - - 0 -1 2919 5.5940490216016769e-02 - - -1.4789390377700329e-02 2.4960540235042572e-01 - <_> - - 0 -1 2920 1.6337510198354721e-02 - - -5.6752599775791168e-02 1.3382770121097565e-02 - <_> - - 0 -1 2921 -4.5972689986228943e-01 - - -7.1287852525711060e-01 4.9509857781231403e-03 - <_> - - 0 -1 2922 -6.5172776579856873e-02 - - -8.2543537020683289e-02 1.5198189765214920e-02 - <_> - - 0 -1 2923 -2.6704780757427216e-02 - - -2.0916239917278290e-01 1.8581379204988480e-02 - <_> - - 0 -1 2924 1.8495510518550873e-01 - - 1.8260549986734986e-03 -3.9183071255683899e-01 - <_> - - 0 -1 2925 9.5611862838268280e-02 - - -1.5232330188155174e-02 3.0041059851646423e-01 - <_> - - 0 -1 2926 5.4745167493820190e-01 - - 6.3382647931575775e-03 -6.2035357952117920e-01 - <_> - - 0 -1 2927 7.9493559896945953e-03 - - -6.2048658728599548e-02 6.1209429055452347e-02 - <_> - - 0 -1 2928 2.7175021171569824e-01 - - -1.6191200120374560e-03 5.8006882667541504e-01 - <_> - - 0 -1 2929 1.3671410083770752e-01 - - 1.4446510002017021e-02 -2.6299729943275452e-01 - <_> - - 0 -1 2930 2.3144269362092018e-02 - - 1.5177230350673199e-02 -3.3594930171966553e-01 - <_> - - 0 -1 2931 -1.4187960186973214e-03 - - 9.5409370958805084e-02 -3.6757789552211761e-02 - <_> - - 0 -1 2932 -1.8819719552993774e-02 - - -4.0184121578931808e-02 1.3270259834825993e-02 - <_> - - 0 -1 2933 -8.1724688410758972e-02 - - 3.2492980360984802e-01 -1.1558920145034790e-02 - <_> - - 0 -1 2934 -8.0951452255249023e-03 - - -2.6765230298042297e-01 1.4577089808881283e-02 - <_> - - 0 -1 2935 -8.2515813119243830e-05 - - 3.8213159888982773e-02 -9.2825122177600861e-02 - <_> - - 0 -1 2936 4.9149271100759506e-02 - - -1.1441200040280819e-02 1.3343520462512970e-01 - <_> - - 0 -1 2937 5.3070918656885624e-03 - - -3.0889939516782761e-02 1.2001869827508926e-01 - <_> - - 0 -1 2938 1.2434639967978001e-02 - - 1.0091929696500301e-02 -1.6182650625705719e-01 - <_> - - 0 -1 2939 1.3028579996898770e-03 - - -5.6219980120658875e-02 6.6662617027759552e-02 - <_> - - 0 -1 2940 -1.0949189774692059e-02 - - -2.1038089692592621e-01 2.1130399778485298e-02 - <_> - - 0 -1 2941 -1.5839550644159317e-02 - - -3.2079550623893738e-01 1.0882910341024399e-02 - - <_> - - <_> - 3 0 12 12 -1. - <_> - 3 4 12 4 3. - <_> - - <_> - 16 0 2 5 -1. - <_> - 16 0 1 5 2. - <_> - - <_> - 7 4 4 8 -1. - <_> - 7 8 4 4 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 2 5 -1. - <_> - 1 0 1 5 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 3 2 3 2. - 1 - <_> - - <_> - 1 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 3 2 3 2. - 1 - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 6 10 12 2 -1. - <_> - 6 11 12 1 2. - <_> - - <_> - 6 0 6 8 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - <_> - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 9 0 2 7 -1. - <_> - 9 0 1 7 2. - 1 - <_> - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - <_> - - <_> - 9 10 9 2 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 10 11 8 1 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 0 11 8 1 2. - <_> - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - <_> - - <_> - 0 5 6 3 -1. - <_> - 2 5 2 3 3. - <_> - - <_> - 8 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - <_> - - <_> - 3 0 10 6 -1. - <_> - 3 2 10 2 3. - <_> - - <_> - 6 2 6 9 -1. - <_> - 8 5 2 3 9. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 10 2 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 10 4 2 2. - <_> - - <_> - 0 2 3 9 -1. - <_> - 0 5 3 3 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 10 1 8 2 -1. - <_> - 12 1 4 2 2. - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 12 4 6 5 -1. - <_> - 14 4 2 5 3. - <_> - - <_> - 0 4 6 5 -1. - <_> - 2 4 2 5 3. - <_> - - <_> - 1 3 16 8 -1. - <_> - 5 3 8 8 2. - <_> - - <_> - 5 2 7 3 -1. - <_> - 5 3 7 1 3. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 4 5 6 4 -1. - <_> - 6 5 2 4 3. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 8 4 2 8 -1. - <_> - 8 8 2 4 2. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 4 0 3 4 -1. - <_> - 5 0 1 4 3. - <_> - - <_> - 9 7 3 2 -1. - <_> - 9 7 3 1 2. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 0 0 3 2 -1. - <_> - 0 1 3 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 2 0 16 3 -1. - <_> - 6 0 8 3 2. - <_> - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 2 5 9 3 -1. - <_> - 5 5 3 3 3. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 6 0 12 5 -1. - <_> - 10 0 4 5 3. - <_> - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 2 0 12 4 -1. - <_> - 8 0 6 4 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 16 3 -1. - <_> - 4 9 8 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 5 0 8 2 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - <_> - - <_> - 5 2 8 6 -1. - <_> - 5 4 8 2 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 9 12 3 2. - <_> - - <_> - 0 5 2 5 -1. - <_> - 1 5 1 5 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 15 4 3 4 -1. - <_> - 15 5 3 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 7 2 4 2 3. - 1 - <_> - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - <_> - - <_> - 0 0 4 8 -1. - <_> - 2 0 2 8 2. - <_> - - <_> - 4 6 10 3 -1. - <_> - 4 6 5 3 2. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 10 10 8 2 2. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - <_> - - <_> - 3 0 15 3 -1. - <_> - 8 0 5 3 3. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 1 1 8 -1. - <_> - 0 3 1 4 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - <_> - - <_> - 0 6 18 4 -1. - <_> - 9 6 9 2 2. - <_> - 0 8 9 2 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 2 0 16 3 -1. - <_> - 6 0 8 3 2. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 11 14 1 -1. - <_> - 7 11 7 1 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 15 8 3 2 3. - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 0 8 3 2 3. - <_> - - <_> - 15 5 3 7 -1. - <_> - 16 5 1 7 3. - <_> - - <_> - 0 5 3 7 -1. - <_> - 1 5 1 7 3. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 1 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 3 0 11 4 -1. - <_> - 3 1 11 2 2. - <_> - - <_> - 15 3 3 2 -1. - <_> - 15 4 3 1 2. - <_> - - <_> - 0 3 3 2 -1. - <_> - 0 4 3 1 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 8 6 3 1 -1. - <_> - 9 6 1 1 3. - <_> - - <_> - 7 6 3 1 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 4 0 12 12 -1. - <_> - 7 0 6 12 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 8 7 4 3 -1. - <_> - 8 8 4 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 3 1 12 9 -1. - <_> - 3 4 12 3 3. - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 5 2 3 3. - <_> - - <_> - 0 0 12 4 -1. - <_> - 4 0 4 4 3. - <_> - - <_> - 3 6 12 6 -1. - <_> - 3 9 12 3 2. - <_> - - <_> - 5 3 8 4 -1. - <_> - 5 4 8 2 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 2 4 -1. - <_> - 1 0 1 4 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - <_> - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 0 7 18 4 -1. - <_> - 9 7 9 2 2. - <_> - 0 9 9 2 2. - <_> - - <_> - 7 10 1 2 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 16 4 2 5 -1. - <_> - 16 4 1 5 2. - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 16 4 2 5 -1. - <_> - 16 4 1 5 2. - <_> - - <_> - 0 4 2 5 -1. - <_> - 1 4 1 5 2. - <_> - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 10 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 6 9 2 3 -1. - <_> - 7 9 1 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 4 5 3 4 -1. - <_> - 5 5 1 4 3. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 5 0 6 2 -1. - <_> - 5 1 6 1 2. - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 2 6 6 3. - <_> - - <_> - 0 2 1 8 -1. - <_> - 0 4 1 4 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - <_> - - <_> - 4 7 10 3 -1. - <_> - 4 8 10 1 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 7 10 2 2 -1. - <_> - 8 10 1 2 2. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 6 6 9 6 -1. - <_> - 9 6 3 6 3. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 4 6 12 6 -1. - <_> - 8 6 4 6 3. - <_> - - <_> - 0 8 12 4 -1. - <_> - 3 8 6 4 2. - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 7 1 6 2 -1. - <_> - 7 2 6 1 2. - <_> - - <_> - 4 0 6 2 -1. - <_> - 6 0 2 2 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 2 12 10 -1. - <_> - 3 2 6 10 2. - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 0 4 11 8 -1. - <_> - 0 8 11 4 2. - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 4 2 12 9 -1. - <_> - 4 5 12 3 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 5 2. - <_> - 0 6 9 5 2. - <_> - - <_> - 2 5 3 3 -1. - <_> - 3 5 1 3 3. - <_> - - <_> - 13 7 2 3 -1. - <_> - 12 8 2 1 3. - 1 - <_> - - <_> - 5 7 3 2 -1. - <_> - 6 8 1 2 3. - 1 - <_> - - <_> - 9 11 3 1 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 0 7 3 4 -1. - <_> - 1 7 1 4 3. - <_> - - <_> - 11 2 3 7 -1. - <_> - 12 3 1 7 3. - 1 - <_> - - <_> - 4 1 9 9 -1. - <_> - 7 4 3 3 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 4 1 4 2 -1. - <_> - 5 1 2 2 2. - <_> - - <_> - 9 5 1 6 -1. - <_> - 9 5 1 3 2. - 1 - <_> - - <_> - 4 6 6 2 -1. - <_> - 6 6 2 2 3. - <_> - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 8 3 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 5 1 1 3. - 1 - <_> - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - <_> - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 2 3 1 2 -1. - <_> - 2 3 1 1 2. - 1 - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 1 2 1 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - <_> - - <_> - 0 1 18 4 -1. - <_> - 6 1 6 4 3. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 7 6 6 1 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 0 6 16 4 -1. - <_> - 0 6 8 2 2. - <_> - 8 8 8 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 2 6 2 2 3. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - <_> - - <_> - 4 0 8 4 -1. - <_> - 4 1 8 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 0 4 18 8 -1. - <_> - 6 4 6 8 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 0 2 18 8 -1. - <_> - 9 2 9 4 2. - <_> - 0 6 9 4 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 6 2 12 10 -1. - <_> - 9 2 6 10 2. - <_> - - <_> - 1 9 12 2 -1. - <_> - 4 9 6 2 2. - <_> - - <_> - 6 2 12 10 -1. - <_> - 9 2 6 10 2. - <_> - - <_> - 0 2 12 10 -1. - <_> - 3 2 6 10 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 4 12 8 -1. - <_> - 0 8 12 4 2. - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 7 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 6 1 6 3. - <_> - - <_> - 0 6 3 6 -1. - <_> - 1 6 1 6 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 6 1 12 2 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 7 2 4 7 -1. - <_> - 8 2 2 7 2. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 16 2 2 4 -1. - <_> - 16 3 2 2 2. - <_> - - <_> - 3 10 4 2 -1. - <_> - 3 11 4 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 0 2 12 4 -1. - <_> - 4 2 4 4 3. - <_> - - <_> - 4 4 10 4 -1. - <_> - 4 6 10 2 2. - <_> - - <_> - 0 0 3 9 -1. - <_> - 0 3 3 3 3. - <_> - - <_> - 16 3 2 7 -1. - <_> - 16 3 1 7 2. - <_> - - <_> - 0 3 2 7 -1. - <_> - 1 3 1 7 2. - <_> - - <_> - 14 7 3 2 -1. - <_> - 14 7 3 1 2. - 1 - <_> - - <_> - 9 2 6 1 -1. - <_> - 9 2 3 1 2. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 2 0 4 4 -1. - <_> - 3 0 2 4 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 12 4 6 8 -1. - <_> - 14 4 2 8 3. - <_> - - <_> - 0 4 6 8 -1. - <_> - 2 4 2 8 3. - <_> - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 6 0 6 6 -1. - <_> - 6 2 6 2 3. - <_> - - <_> - 6 1 1 3 -1. - <_> - 5 2 1 1 3. - 1 - <_> - - <_> - 0 2 18 6 -1. - <_> - 6 4 6 2 9. - <_> - - <_> - 6 4 6 6 -1. - <_> - 8 6 2 2 9. - <_> - - <_> - 0 0 4 5 -1. - <_> - 2 0 2 5 2. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 0 12 9 -1. - <_> - 4 3 4 3 9. - <_> - - <_> - 7 6 6 1 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 9 5 6 1 -1. - <_> - 9 5 3 1 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 17 2 1 6 -1. - <_> - 17 4 1 2 3. - <_> - - <_> - 0 2 1 6 -1. - <_> - 0 4 1 2 3. - <_> - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 5 6 1 2. - <_> - - <_> - 2 0 8 4 -1. - <_> - 4 0 4 4 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 1 6 2 2. - <_> - - <_> - 14 9 3 3 -1. - <_> - 14 10 3 1 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 6 2 2 2. - 1 - <_> - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - <_> - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - <_> - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 5 5 6 3 -1. - <_> - 7 5 2 3 3. - <_> - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - <_> - - <_> - 9 1 9 1 -1. - <_> - 12 4 3 1 3. - 1 - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 2 8 2 2. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 6 8 6 4 -1. - <_> - 6 9 6 2 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 15 5 1 6 -1. - <_> - 15 5 1 3 2. - 1 - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 0 3 2 2. - 1 - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - <_> - - <_> - 0 9 4 3 -1. - <_> - 0 10 4 1 3. - <_> - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - <_> - - <_> - 0 5 4 6 -1. - <_> - 0 7 4 2 3. - <_> - - <_> - 9 3 3 6 -1. - <_> - 10 4 1 6 3. - 1 - <_> - - <_> - 6 1 6 10 -1. - <_> - 6 1 3 5 2. - <_> - 9 6 3 5 2. - <_> - - <_> - 16 5 2 6 -1. - <_> - 16 5 1 6 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - <_> - - <_> - 13 0 5 2 -1. - <_> - 13 0 5 1 2. - 1 - <_> - - <_> - 5 0 2 5 -1. - <_> - 5 0 1 5 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 8 6 4 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 8 9 2 3 3. - <_> - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - <_> - - <_> - 9 4 3 4 -1. - <_> - 8 5 3 2 2. - 1 - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 1 4 2 4 -1. - <_> - 1 5 2 2 2. - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 3 3 6 9 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 6 6 6 -1. - <_> - 0 9 6 3 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 6 1 6 2 -1. - <_> - 6 2 6 1 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 2 1 10 1 -1. - <_> - 2 1 5 1 2. - 1 - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 1 - <_> - - <_> - 2 2 1 2 -1. - <_> - 2 2 1 1 2. - 1 - <_> - - <_> - 11 4 2 6 -1. - <_> - 11 4 1 6 2. - 1 - <_> - - <_> - 7 4 6 2 -1. - <_> - 7 4 6 1 2. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 6 6 2 2 -1. - <_> - 7 6 1 2 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 6 0 6 11 -1. - <_> - 8 0 2 11 3. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 4 10 6 2 -1. - <_> - 6 10 2 2 3. - <_> - - <_> - 14 2 4 4 -1. - <_> - 14 3 4 2 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 14 2 4 4 -1. - <_> - 14 3 4 2 2. - <_> - - <_> - 0 2 4 4 -1. - <_> - 0 3 4 2 2. - <_> - - <_> - 15 0 3 4 -1. - <_> - 14 1 3 2 2. - 1 - <_> - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - <_> - - <_> - 5 0 10 3 -1. - <_> - 5 0 5 3 2. - <_> - - <_> - 5 2 6 2 -1. - <_> - 7 2 2 2 3. - <_> - - <_> - 3 0 12 2 -1. - <_> - 3 1 12 1 2. - <_> - - <_> - 5 0 6 3 -1. - <_> - 5 1 6 1 3. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 10 5 8 7 -1. - <_> - 12 5 4 7 2. - <_> - - <_> - 0 5 8 7 -1. - <_> - 2 5 4 7 2. - <_> - - <_> - 12 8 6 2 -1. - <_> - 14 8 2 2 3. - <_> - - <_> - 0 8 6 2 -1. - <_> - 2 8 2 2 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 5 4 8 4 -1. - <_> - 5 5 8 2 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 16 0 2 6 -1. - <_> - 16 0 1 6 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 1 2 16 4 -1. - <_> - 5 2 8 4 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 1 0 8 3 -1. - <_> - 3 0 4 3 2. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 11 5 6 4 -1. - <_> - 13 5 2 4 3. - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - <_> - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - <_> - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 12 5 6 6 -1. - <_> - 14 5 2 6 3. - <_> - - <_> - 0 5 6 6 -1. - <_> - 2 5 2 6 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 4 2 2 2 -1. - <_> - 4 2 2 1 2. - 1 - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - <_> - - <_> - 10 8 4 4 -1. - <_> - 11 8 2 4 2. - <_> - - <_> - 6 8 6 3 -1. - <_> - 8 8 2 3 3. - <_> - - <_> - 15 3 1 2 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 15 2 3 9 -1. - <_> - 15 5 3 3 3. - <_> - - <_> - 0 2 3 9 -1. - <_> - 0 5 3 3 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 8 1 2 3 3. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 6 2 6 2 -1. - <_> - 6 3 6 1 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 2 0 16 9 -1. - <_> - 2 0 8 9 2. - <_> - - <_> - 1 0 15 12 -1. - <_> - 6 0 5 12 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 15 3 2 3 -1. - <_> - 14 4 2 1 3. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 13 0 4 1 -1. - <_> - 14 1 2 1 2. - 1 - <_> - - <_> - 5 0 1 4 -1. - <_> - 4 1 1 2 2. - 1 - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 2 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 0 2 18 10 -1. - <_> - 9 2 9 5 2. - <_> - 0 7 9 5 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - <_> - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - <_> - - <_> - 14 5 4 7 -1. - <_> - 14 5 2 7 2. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 9 4 1 3 3. - <_> - - <_> - 9 3 3 3 -1. - <_> - 8 4 3 1 3. - 1 - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 6 1 2 4 -1. - <_> - 5 2 2 2 2. - 1 - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 0 6 3 5 -1. - <_> - 1 6 1 5 3. - <_> - - <_> - 15 5 3 7 -1. - <_> - 16 5 1 7 3. - <_> - - <_> - 0 4 4 8 -1. - <_> - 1 4 2 8 2. - <_> - - <_> - 12 3 6 4 -1. - <_> - 12 4 6 2 2. - <_> - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 7 1 8 3 -1. - <_> - 7 2 8 1 3. - <_> - - <_> - 7 0 4 4 -1. - <_> - 7 1 4 2 2. - <_> - - <_> - 11 1 1 8 -1. - <_> - 9 3 1 4 2. - 1 - <_> - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 4 7 9 3 -1. - <_> - 4 8 9 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 8 1 2 8 -1. - <_> - 8 3 2 4 2. - <_> - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 5 2 3 3. - <_> - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - <_> - - <_> - 14 6 4 2 -1. - <_> - 15 7 2 2 2. - 1 - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 10 10 4 2 -1. - <_> - 11 10 2 2 2. - <_> - - <_> - 4 10 4 2 -1. - <_> - 5 10 2 2 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 2 8 1 -1. - <_> - 8 2 4 1 2. - 1 - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 10 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 8 10 3 1 -1. - <_> - 9 10 1 1 3. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 17 2 1 3 -1. - <_> - 17 3 1 1 3. - <_> - - <_> - 0 2 1 3 -1. - <_> - 0 3 1 1 3. - <_> - - <_> - 6 0 10 2 -1. - <_> - 6 0 5 2 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 8 0 5 2 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 4 6 6 4 -1. - <_> - 6 6 2 4 3. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 0 0 8 1 -1. - <_> - 2 0 4 1 2. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 1 0 3 8 -1. - <_> - 2 0 1 8 3. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 0 6 2 2. - 1 - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 9 4 2 6 -1. - <_> - 9 4 2 3 2. - 1 - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 2 10 16 1 -1. - <_> - 6 10 8 1 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 9 9 6 2 2. - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 4 7 4 1 -1. - <_> - 4 7 2 1 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 4 1 4 3. - 1 - <_> - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - <_> - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 13 0 4 4 -1. - <_> - 14 0 2 4 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 2 0 2 4 2. - <_> - - <_> - 7 2 5 3 -1. - <_> - 7 3 5 1 3. - <_> - - <_> - 3 3 12 6 -1. - <_> - 3 5 12 2 3. - <_> - - <_> - 13 1 4 1 -1. - <_> - 14 2 2 1 2. - 1 - <_> - - <_> - 5 1 1 4 -1. - <_> - 4 2 1 2 2. - 1 - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 10 3 4 4 -1. - <_> - 11 4 2 4 2. - 1 - <_> - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 0 0 12 4 -1. - <_> - 0 0 6 2 2. - <_> - 6 2 6 2 2. - <_> - - <_> - 5 1 12 2 -1. - <_> - 11 1 6 1 2. - <_> - 5 2 6 1 2. - <_> - - <_> - 2 1 12 2 -1. - <_> - 2 1 6 1 2. - <_> - 8 2 6 1 2. - <_> - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - <_> - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 11 6 4 3 -1. - <_> - 12 6 2 3 2. - <_> - - <_> - 3 6 4 3 -1. - <_> - 4 6 2 3 2. - <_> - - <_> - 14 7 2 3 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 12 0 3 10 -1. - <_> - 13 0 1 10 3. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 6 2 6 1 -1. - <_> - 6 2 3 1 2. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 2 3 2. - 1 - <_> - - <_> - 3 6 8 4 -1. - <_> - 3 6 4 2 2. - <_> - 7 8 4 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 7 8 6 3 -1. - <_> - 9 8 2 3 3. - <_> - - <_> - 1 1 16 1 -1. - <_> - 5 1 8 1 2. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 14 7 4 3 -1. - <_> - 15 7 2 3 2. - <_> - - <_> - 0 7 4 3 -1. - <_> - 1 7 2 3 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 12 2 2 7 -1. - <_> - 12 2 1 7 2. - 1 - <_> - - <_> - 6 2 7 2 -1. - <_> - 6 2 7 1 2. - 1 - <_> - - <_> - 13 2 3 9 -1. - <_> - 14 5 1 3 9. - <_> - - <_> - 0 4 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 11 14 1 -1. - <_> - 7 11 7 1 2. - <_> - - <_> - 14 10 2 2 -1. - <_> - 15 10 1 1 2. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 6 3 12 9 -1. - <_> - 9 3 6 9 2. - <_> - - <_> - 0 3 12 9 -1. - <_> - 3 3 6 9 2. - <_> - - <_> - 15 11 2 1 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 6 1 6 6 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 3 2 12 4 -1. - <_> - 3 3 12 2 2. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 2 0 6 5 -1. - <_> - 4 0 2 5 3. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 3 1 4 4 -1. - <_> - 4 1 2 4 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 12 10 6 2 -1. - <_> - 12 11 6 1 2. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 3 3. - 1 - <_> - - <_> - 0 5 18 1 -1. - <_> - 6 5 6 1 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 5 0 6 2 2. - 1 - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 14 11 4 1 2. - <_> - - <_> - 3 1 3 9 -1. - <_> - 4 1 1 9 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 8 0 3 12 -1. - <_> - 9 0 1 12 3. - <_> - - <_> - 7 0 3 12 -1. - <_> - 8 0 1 12 3. - <_> - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - <_> - - <_> - 14 2 4 6 -1. - <_> - 14 4 4 2 3. - <_> - - <_> - 0 2 4 6 -1. - <_> - 0 4 4 2 3. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 13 9 4 3 -1. - <_> - 13 10 4 1 3. - <_> - - <_> - 1 9 4 3 -1. - <_> - 1 10 4 1 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 0 3 7 2 -1. - <_> - 0 4 7 1 2. - <_> - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 3 0 3 5 2. - <_> - - <_> - 9 3 2 4 -1. - <_> - 8 4 2 2 2. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 0 0 4 12 -1. - <_> - 0 0 2 6 2. - <_> - 2 6 2 6 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 5 10 1 2 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 1 0 2 6 2. - <_> - - <_> - 12 6 4 2 -1. - <_> - 13 6 2 2 2. - <_> - - <_> - 6 3 6 5 -1. - <_> - 9 3 3 5 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - <_> - - <_> - 6 6 9 6 -1. - <_> - 9 6 3 6 3. - <_> - - <_> - 3 6 9 6 -1. - <_> - 6 6 3 6 3. - <_> - - <_> - 14 1 2 2 -1. - <_> - 14 1 1 2 2. - 1 - <_> - - <_> - 4 1 2 2 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 15 5 1 6 -1. - <_> - 15 5 1 3 2. - 1 - <_> - - <_> - 3 5 6 1 -1. - <_> - 3 5 3 1 2. - 1 - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 12 5 2 3 -1. - <_> - 12 5 1 3 2. - 1 - <_> - - <_> - 6 5 3 2 -1. - <_> - 6 5 3 1 2. - 1 - <_> - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 1 4 1 3. - <_> - - <_> - 5 2 4 2 -1. - <_> - 6 2 2 2 2. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 12 6 6 2 -1. - <_> - 14 6 2 2 3. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 13 5 4 3 -1. - <_> - 14 5 2 3 2. - <_> - - <_> - 1 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 0 6 5 6 -1. - <_> - 0 8 5 2 3. - <_> - - <_> - 13 4 1 2 -1. - <_> - 13 5 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - <_> - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - <_> - - <_> - 13 4 1 2 -1. - <_> - 13 5 1 1 2. - <_> - - <_> - 4 4 1 2 -1. - <_> - 4 5 1 1 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 7 10 4 2 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 2 0 14 12 -1. - <_> - 2 0 7 12 2. - <_> - - <_> - 5 1 8 3 -1. - <_> - 9 1 4 3 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 8 0 1 5 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 0 1 18 1 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 5 0 2 1 -1. - <_> - 5 0 1 1 2. - 1 - <_> - - <_> - 17 7 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - <_> - - <_> - 5 3 8 2 -1. - <_> - 5 4 8 1 2. - <_> - - <_> - 6 2 6 6 -1. - <_> - 8 4 2 2 9. - <_> - - <_> - 16 1 2 9 -1. - <_> - 16 4 2 3 3. - <_> - - <_> - 0 1 2 9 -1. - <_> - 0 4 2 3 3. - <_> - - <_> - 0 5 18 4 -1. - <_> - 6 5 6 4 3. - <_> - - <_> - 0 9 16 3 -1. - <_> - 4 9 8 3 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 2 6 4 2 -1. - <_> - 3 6 2 2 2. - <_> - - <_> - 10 5 4 4 -1. - <_> - 11 5 2 4 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - <_> - - <_> - 16 8 2 3 -1. - <_> - 16 9 2 1 3. - <_> - - <_> - 0 8 2 3 -1. - <_> - 0 9 2 1 3. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 4 4 4 2 -1. - <_> - 4 4 2 1 2. - <_> - 6 5 2 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 3 4 2 1 -1. - <_> - 4 4 1 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 8 5 3 3 -1. - <_> - 9 5 1 3 3. - <_> - - <_> - 7 5 3 3 -1. - <_> - 8 5 1 3 3. - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 2 9 2 1 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 11 2 1 -1. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 11 2 1 -1. - <_> - 2 11 1 1 2. - <_> - - <_> - 14 9 4 2 -1. - <_> - 14 9 2 2 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 15 7 2 3 -1. - <_> - 14 8 2 1 3. - 1 - <_> - - <_> - 3 9 1 2 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 2 0 3 9 -1. - <_> - 3 0 1 9 3. - <_> - - <_> - 10 4 3 5 -1. - <_> - 11 4 1 5 3. - <_> - - <_> - 5 4 3 5 -1. - <_> - 6 4 1 5 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 0 3 6 8 -1. - <_> - 2 3 2 8 3. - <_> - - <_> - 14 0 3 8 -1. - <_> - 15 0 1 8 3. - <_> - - <_> - 1 0 3 8 -1. - <_> - 2 0 1 8 3. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - <_> - - <_> - 6 0 4 2 -1. - <_> - 7 0 2 2 2. - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 0 0 8 4 -1. - <_> - 0 0 4 2 2. - <_> - 4 2 4 2 2. - <_> - - <_> - 9 2 1 8 -1. - <_> - 9 2 1 4 2. - 1 - <_> - - <_> - 9 2 8 1 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - <_> - - <_> - 16 7 2 3 -1. - <_> - 15 8 2 1 3. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 4 3 1 2. - <_> - 9 5 3 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 6 1 2 1 3. - <_> - - <_> - 12 3 1 6 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 5 3 1 6 -1. - <_> - 5 5 1 2 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 0 1 2 3. - <_> - - <_> - 4 0 10 2 -1. - <_> - 4 0 5 1 2. - <_> - 9 1 5 1 2. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 0 0 18 9 -1. - <_> - 0 0 9 9 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 2 2. - <_> - - <_> - 6 6 12 6 -1. - <_> - 6 6 6 6 2. - <_> - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - <_> - - <_> - 13 0 5 3 -1. - <_> - 12 1 5 1 3. - 1 - <_> - - <_> - 7 0 4 1 -1. - <_> - 9 0 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 1 3 1 2. - <_> - - <_> - 5 0 3 5 -1. - <_> - 6 1 1 5 3. - 1 - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 6 0 12 4 -1. - <_> - 9 0 6 4 2. - <_> - - <_> - 0 0 12 4 -1. - <_> - 3 0 6 4 2. - <_> - - <_> - 7 6 6 2 -1. - <_> - 9 6 2 2 3. - <_> - - <_> - 5 6 6 2 -1. - <_> - 7 6 2 2 3. - <_> - - <_> - 7 10 10 2 -1. - <_> - 7 11 10 1 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 6 1 4 3. - 1 - <_> - - <_> - 4 5 4 3 -1. - <_> - 3 6 4 1 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 8 0 2 4 -1. - <_> - 9 0 1 4 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 7 2 4 2 -1. - <_> - 7 3 4 1 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 9 2 2 2. - <_> - - <_> - 3 1 3 2 -1. - <_> - 3 1 3 1 2. - 1 - <_> - - <_> - 2 5 16 6 -1. - <_> - 10 5 8 3 2. - <_> - 2 8 8 3 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 3 0 6 2 -1. - <_> - 3 1 6 1 2. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 5 0 2 4 -1. - <_> - 4 1 2 2 2. - 1 - <_> - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - <_> - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - <_> - - <_> - 10 3 3 5 -1. - <_> - 11 4 1 5 3. - 1 - <_> - - <_> - 0 2 18 2 -1. - <_> - 6 2 6 2 3. - <_> - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 5 1 2 9. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 10 8 2 1 -1. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 8 2 1 -1. - <_> - 7 8 1 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 2 5 3 3 -1. - <_> - 3 5 1 3 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 14 4 4 6 -1. - <_> - 15 4 2 6 2. - <_> - - <_> - 0 4 4 6 -1. - <_> - 1 4 2 6 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 0 10 16 2 -1. - <_> - 4 10 8 2 2. - <_> - - <_> - 3 3 15 9 -1. - <_> - 8 3 5 9 3. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 2 2 2. - 1 - <_> - - <_> - 5 8 8 4 -1. - <_> - 5 9 8 2 2. - <_> - - <_> - 0 10 9 2 -1. - <_> - 0 11 9 1 2. - <_> - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - <_> - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 0 0 11 8 -1. - <_> - 0 4 11 4 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 4 2 1 2. - <_> - - <_> - 12 3 3 6 -1. - <_> - 13 5 1 2 9. - <_> - - <_> - 0 0 18 10 -1. - <_> - 9 0 9 10 2. - <_> - - <_> - 5 2 12 10 -1. - <_> - 9 2 4 10 3. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 3 3 15 9 -1. - <_> - 8 3 5 9 3. - <_> - - <_> - 4 1 2 3 -1. - <_> - 3 2 2 1 3. - 1 - <_> - - <_> - 11 5 6 3 -1. - <_> - 13 6 2 1 9. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - <_> - - <_> - 5 3 12 9 -1. - <_> - 9 3 4 9 3. - <_> - - <_> - 1 3 12 9 -1. - <_> - 5 3 4 9 3. - <_> - - <_> - 17 1 1 10 -1. - <_> - 17 1 1 5 2. - 1 - <_> - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 14 6 4 2 -1. - <_> - 15 7 2 2 2. - 1 - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 15 2 3 3 -1. - <_> - 14 3 3 1 3. - 1 - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 2 12 4 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - <_> - - <_> - 9 2 6 3 -1. - <_> - 11 2 2 3 3. - <_> - - <_> - 6 0 2 6 -1. - <_> - 6 0 1 6 2. - 1 - <_> - - <_> - 10 2 4 2 -1. - <_> - 11 2 2 2 2. - <_> - - <_> - 0 3 2 4 -1. - <_> - 1 3 1 4 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 1 2 1 2. - 1 - <_> - - <_> - 4 0 1 4 -1. - <_> - 3 1 1 2 2. - 1 - <_> - - <_> - 14 7 4 1 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 4 7 1 4 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 5 6 8 2 -1. - <_> - 5 7 8 1 2. - <_> - - <_> - 0 4 5 4 -1. - <_> - 0 5 5 2 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 14 7 4 4 -1. - <_> - 14 9 4 2 2. - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 4 1 4 1 -1. - <_> - 5 1 2 1 2. - <_> - - <_> - 10 0 4 4 -1. - <_> - 11 0 2 4 2. - <_> - - <_> - 4 0 4 4 -1. - <_> - 5 0 2 4 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 0 2 3 -1. - <_> - 5 1 2 1 3. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 1 9. - <_> - - <_> - 3 9 15 2 -1. - <_> - 8 9 5 2 3. - <_> - - <_> - 1 7 4 4 -1. - <_> - 1 9 4 2 2. - <_> - - <_> - 7 4 4 8 -1. - <_> - 7 4 2 8 2. - <_> - - <_> - 0 0 18 10 -1. - <_> - 0 0 9 5 2. - <_> - 9 5 9 5 2. - <_> - - <_> - 6 5 12 3 -1. - <_> - 6 5 6 3 2. - <_> - - <_> - 5 4 3 3 -1. - <_> - 6 5 1 3 3. - 1 - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - <_> - - <_> - 5 4 9 8 -1. - <_> - 5 8 9 4 2. - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - 1 - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 6 14 6 -1. - <_> - 7 6 7 6 2. - <_> - - <_> - 10 9 8 3 -1. - <_> - 12 9 4 3 2. - <_> - - <_> - 0 9 8 3 -1. - <_> - 2 9 4 3 2. - <_> - - <_> - 10 10 8 2 -1. - <_> - 12 10 4 2 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 5 12 2 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 5 1 3 -1. - <_> - 3 6 1 1 3. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 3 2 15 3 -1. - <_> - 8 2 5 3 3. - <_> - - <_> - 3 2 12 4 -1. - <_> - 6 2 6 4 2. - <_> - - <_> - 7 7 5 3 -1. - <_> - 7 8 5 1 3. - <_> - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 10 3 4 2 -1. - <_> - 11 3 2 2 2. - <_> - - <_> - 4 3 4 2 -1. - <_> - 5 3 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 15 1 2 2 -1. - <_> - 16 1 1 1 2. - <_> - 15 2 1 1 2. - <_> - - <_> - 1 1 2 2 -1. - <_> - 1 1 1 1 2. - <_> - 2 2 1 1 2. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - <_> - - <_> - 2 0 16 1 -1. - <_> - 2 0 8 1 2. - <_> - - <_> - 9 0 6 6 -1. - <_> - 9 0 3 6 2. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 0 4 3 8 -1. - <_> - 0 6 3 4 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 5 1 2 -1. - <_> - 0 6 1 1 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 15 0 3 3 2. - <_> - 12 3 3 3 2. - <_> - - <_> - 2 2 12 4 -1. - <_> - 2 3 12 2 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 15 0 3 3 2. - <_> - 12 3 3 3 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 0 3 3 2. - <_> - 3 3 3 3 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 0 9 15 1 -1. - <_> - 5 9 5 1 3. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 10 1 2 2. - <_> - - <_> - 0 8 1 4 -1. - <_> - 0 10 1 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 0 1 3 2. - 1 - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 14 1 2 2 -1. - <_> - 15 1 1 1 2. - <_> - 14 2 1 1 2. - <_> - - <_> - 2 1 2 2 -1. - <_> - 2 1 1 1 2. - <_> - 3 2 1 1 2. - <_> - - <_> - 9 1 2 3 -1. - <_> - 9 2 2 1 3. - <_> - - <_> - 1 1 3 6 -1. - <_> - 2 1 1 6 3. - <_> - - <_> - 12 8 1 3 -1. - <_> - 11 9 1 1 3. - 1 - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - <_> - - <_> - 5 7 4 2 -1. - <_> - 7 7 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 8 9 4 1 -1. - <_> - 9 9 2 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 3 7 4 1 -1. - <_> - 4 8 2 1 2. - 1 - <_> - - <_> - 14 7 2 3 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 13 2 1 9 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 4 2 1 9 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 13 0 2 3 2. - 1 - <_> - - <_> - 5 0 3 4 -1. - <_> - 5 0 3 2 2. - 1 - <_> - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 0 0 1 9 -1. - <_> - 0 3 1 3 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 0 2 6 7 -1. - <_> - 2 2 2 7 3. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 10 0 6 4 -1. - <_> - 12 0 2 4 3. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 0 10 7 2 -1. - <_> - 0 11 7 1 2. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 3 2 2 3. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 7 8 4 4 -1. - <_> - 7 9 4 2 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 2 2. - 1 - <_> - - <_> - 0 3 18 6 -1. - <_> - 9 3 9 3 2. - <_> - 0 6 9 3 2. - <_> - - <_> - 0 11 18 1 -1. - <_> - 9 11 9 1 2. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - <_> - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 6 4 6 8 -1. - <_> - 8 4 2 8 3. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 9 2 2 2. - <_> - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - <_> - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 7 1 4 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 1 7 1 4 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 6 7 8 3 2. - <_> - - <_> - 5 6 3 3 -1. - <_> - 6 7 1 1 9. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 1 0 10 4 -1. - <_> - 1 0 5 2 2. - <_> - 6 2 5 2 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - <_> - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - <_> - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - <_> - - <_> - 11 1 3 9 -1. - <_> - 12 4 1 3 9. - <_> - - <_> - 0 11 16 1 -1. - <_> - 4 11 8 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - <_> - - <_> - 14 8 4 4 -1. - <_> - 14 10 4 2 2. - <_> - - <_> - 0 4 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 15 7 3 1 -1. - <_> - 16 7 1 1 3. - <_> - - <_> - 0 7 3 1 -1. - <_> - 1 7 1 1 3. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 4 3 3 6 -1. - <_> - 5 5 1 2 9. - <_> - - <_> - 10 2 1 8 -1. - <_> - 10 2 1 4 2. - 1 - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 6 6 6 6 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 10 4 2 2. - <_> - - <_> - 11 2 3 7 -1. - <_> - 12 3 1 7 3. - 1 - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - <_> - - <_> - 5 0 4 5 -1. - <_> - 6 0 2 5 2. - <_> - - <_> - 0 3 18 1 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 6 4 2 3 -1. - <_> - 6 5 2 1 3. - <_> - - <_> - 10 2 1 8 -1. - <_> - 10 2 1 4 2. - 1 - <_> - - <_> - 6 10 2 1 -1. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 10 4 1 -1. - <_> - 11 10 2 1 2. - <_> - - <_> - 5 0 6 10 -1. - <_> - 8 0 3 10 2. - <_> - - <_> - 5 1 12 4 -1. - <_> - 8 1 6 4 2. - <_> - - <_> - 0 1 15 5 -1. - <_> - 5 1 5 5 3. - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 7 7 3 3 -1. - <_> - 7 8 3 1 3. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - <_> - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - <_> - - <_> - 4 10 4 1 -1. - <_> - 5 10 2 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 1 0 16 2 -1. - <_> - 9 0 8 1 2. - <_> - 1 1 8 1 2. - <_> - - <_> - 8 2 8 1 -1. - <_> - 8 2 4 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 13 3 4 1 3. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 5 3 1 4 3. - 1 - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 5 2 9 3 -1. - <_> - 8 2 3 3 3. - <_> - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - <_> - - <_> - 13 7 3 1 -1. - <_> - 14 8 1 1 3. - 1 - <_> - - <_> - 6 8 1 3 -1. - <_> - 6 9 1 1 3. - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 6 5 4 2 -1. - <_> - 6 5 4 1 2. - 1 - <_> - - <_> - 14 0 2 4 -1. - <_> - 13 1 2 2 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 5 1 2 2 2. - 1 - <_> - - <_> - 3 10 15 2 -1. - <_> - 8 10 5 2 3. - <_> - - <_> - 0 1 2 3 -1. - <_> - 0 2 2 1 3. - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 1 1 7 3. - 1 - <_> - - <_> - 4 0 10 2 -1. - <_> - 9 0 5 2 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - <_> - - <_> - 2 4 12 2 -1. - <_> - 2 5 12 1 2. - <_> - - <_> - 8 6 2 3 -1. - <_> - 8 7 2 1 3. - <_> - - <_> - 1 5 6 3 -1. - <_> - 3 6 2 1 9. - <_> - - <_> - 10 9 1 2 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 7 0 7 3 -1. - <_> - 6 1 7 1 3. - 1 - <_> - - <_> - 8 4 2 2 -1. - <_> - 9 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 8 3 3 3 -1. - <_> - 7 4 3 1 3. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 0 5 6 4 -1. - <_> - 0 6 6 2 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 12 0 6 6 -1. - <_> - 14 0 2 6 3. - <_> - - <_> - 0 0 6 6 -1. - <_> - 2 0 2 6 3. - <_> - - <_> - 6 2 8 1 -1. - <_> - 6 2 4 1 2. - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 5 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 8 4 2 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 5 8 4 2 -1. - <_> - 6 8 2 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 0 7 3 -1. - <_> - 9 1 7 1 3. - <_> - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - <_> - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - <_> - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 12 8 4 4 2. - <_> - - <_> - 1 8 3 4 -1. - <_> - 2 8 1 4 3. - <_> - - <_> - 14 7 3 3 -1. - <_> - 15 7 1 3 3. - <_> - - <_> - 1 7 3 3 -1. - <_> - 2 7 1 3 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 11 2 1 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 10 8 8 4 -1. - <_> - 12 8 4 4 2. - <_> - - <_> - 0 8 8 4 -1. - <_> - 2 8 4 4 2. - <_> - - <_> - 10 9 8 2 -1. - <_> - 12 9 4 2 2. - <_> - - <_> - 0 9 8 2 -1. - <_> - 2 9 4 2 2. - <_> - - <_> - 7 10 6 2 -1. - <_> - 9 10 2 2 3. - <_> - - <_> - 7 11 4 1 -1. - <_> - 9 11 2 1 2. - <_> - - <_> - 7 9 5 3 -1. - <_> - 7 10 5 1 3. - <_> - - <_> - 0 4 8 3 -1. - <_> - 0 5 8 1 3. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 11 0 3 9 -1. - <_> - 12 0 1 9 3. - <_> - - <_> - 0 4 9 3 -1. - <_> - 3 5 3 1 9. - <_> - - <_> - 9 3 1 2 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 5 3 8 8 -1. - <_> - 5 3 4 4 2. - <_> - 9 7 4 4 2. - <_> - - <_> - 9 9 3 1 -1. - <_> - 10 9 1 1 3. - <_> - - <_> - 6 9 3 1 -1. - <_> - 7 9 1 1 3. - <_> - - <_> - 7 7 4 4 -1. - <_> - 8 7 2 4 2. - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 6 10 12 2 -1. - <_> - 6 10 6 2 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 6 10 6 2 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 8 1 2 4 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 10 0 8 2 -1. - <_> - 14 0 4 1 2. - <_> - 10 1 4 1 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 0 0 4 1 2. - <_> - 4 1 4 1 2. - <_> - - <_> - 11 0 3 9 -1. - <_> - 12 0 1 9 3. - <_> - - <_> - 1 4 1 4 -1. - <_> - 1 5 1 2 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - <_> - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 5 6 4 2 -1. - <_> - 6 6 2 2 2. - <_> - - <_> - 3 4 12 8 -1. - <_> - 3 8 12 4 2. - <_> - - <_> - 4 4 5 3 -1. - <_> - 3 5 5 1 3. - 1 - <_> - - <_> - 9 1 9 8 -1. - <_> - 9 5 9 4 2. - <_> - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - <_> - - <_> - 8 2 6 2 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 0 6 16 6 -1. - <_> - 0 6 8 3 2. - <_> - 8 9 8 3 2. - <_> - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 3 3. - 1 - <_> - - <_> - 1 10 12 2 -1. - <_> - 1 11 12 1 2. - <_> - - <_> - 8 1 6 3 -1. - <_> - 10 1 2 3 3. - <_> - - <_> - 5 3 6 6 -1. - <_> - 7 5 2 2 9. - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 5 6 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 4 1 6 4 -1. - <_> - 6 1 2 4 3. - <_> - - <_> - 9 10 4 2 -1. - <_> - 10 10 2 2 2. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 14 7 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 5 10 4 2 -1. - <_> - 6 10 2 2 2. - <_> - - <_> - 14 7 1 4 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 4 7 4 1 -1. - <_> - 5 8 2 1 2. - 1 - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 0 1 3 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 15 2 2 8 -1. - <_> - 15 4 2 4 2. - <_> - - <_> - 1 2 2 8 -1. - <_> - 1 4 2 4 2. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 3 6 3 2 -1. - <_> - 4 6 1 2 3. - <_> - - <_> - 13 6 5 6 -1. - <_> - 13 8 5 2 3. - <_> - - <_> - 0 6 5 6 -1. - <_> - 0 8 5 2 3. - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - <_> - - <_> - 9 0 6 12 -1. - <_> - 9 0 3 12 2. - <_> - - <_> - 3 0 6 12 -1. - <_> - 6 0 3 12 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 6 1 6 8 -1. - <_> - 8 1 2 8 3. - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 0 6 18 1 -1. - <_> - 6 6 6 1 3. - <_> - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - <_> - - <_> - 5 1 8 4 -1. - <_> - 5 2 8 2 2. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 0 9 2 2 -1. - <_> - 1 9 1 2 2. - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 3 7 2 3 -1. - <_> - 2 8 2 1 3. - 1 - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 16 9 1 3 -1. - <_> - 16 10 1 1 3. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 4 7 4 1 -1. - <_> - 4 7 2 1 2. - 1 - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 1 8 1 2 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 2 1 6 -1. - <_> - 7 4 1 2 3. - 1 - <_> - - <_> - 6 4 6 2 -1. - <_> - 6 4 3 1 2. - <_> - 9 5 3 1 2. - <_> - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 7 0 8 2 -1. - <_> - 7 0 8 1 2. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 7 5 4 1 3. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 17 1 1 10 -1. - <_> - 17 1 1 5 2. - 1 - <_> - - <_> - 1 1 10 1 -1. - <_> - 1 1 5 1 2. - 1 - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - <_> - - <_> - 14 3 2 1 -1. - <_> - 14 3 1 1 2. - 1 - <_> - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 1 2 3 6 -1. - <_> - 2 2 1 6 3. - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 8 1 1 1 3. - <_> - - <_> - 16 7 2 4 -1. - <_> - 16 8 2 2 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - <_> - - <_> - 7 2 6 3 -1. - <_> - 6 3 6 1 3. - 1 - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 3 8 1 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 11 5 4 4 -1. - <_> - 12 5 2 4 2. - <_> - - <_> - 4 0 10 8 -1. - <_> - 4 2 10 4 2. - <_> - - <_> - 3 5 12 4 -1. - <_> - 6 5 6 4 2. - <_> - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 0 3 18 9 -1. - <_> - 6 3 6 9 3. - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 2 11 15 1 -1. - <_> - 7 11 5 1 3. - <_> - - <_> - 4 4 3 2 -1. - <_> - 5 5 1 2 3. - 1 - <_> - - <_> - 10 2 4 6 -1. - <_> - 12 2 2 3 2. - <_> - 10 5 2 3 2. - <_> - - <_> - 4 2 4 6 -1. - <_> - 4 2 2 3 2. - <_> - 6 5 2 3 2. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 11 1 4 1 -1. - <_> - 12 2 2 1 2. - 1 - <_> - - <_> - 7 1 1 4 -1. - <_> - 6 2 1 2 2. - 1 - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 3 1 12 2 -1. - <_> - 9 1 6 1 2. - <_> - 3 2 6 1 2. - <_> - - <_> - 6 6 5 6 -1. - <_> - 6 9 5 3 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 5 6 2 4 -1. - <_> - 4 7 2 2 2. - 1 - <_> - - <_> - 14 1 3 3 -1. - <_> - 15 2 1 3 3. - 1 - <_> - - <_> - 4 1 3 3 -1. - <_> - 3 2 3 1 3. - 1 - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 9 0 1 2 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 6 2 12 9 -1. - <_> - 9 2 6 9 2. - <_> - - <_> - 0 2 12 9 -1. - <_> - 3 2 6 9 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 9 1 5 3 -1. - <_> - 9 2 5 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 2 0 14 3 -1. - <_> - 2 0 7 3 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 5 1 2 3. - 1 - <_> - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 4 5 6 6 -1. - <_> - 4 8 6 3 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - <_> - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - <_> - - <_> - 11 0 1 3 -1. - <_> - 10 1 1 1 3. - 1 - <_> - - <_> - 5 3 6 3 -1. - <_> - 4 4 6 1 3. - 1 - <_> - - <_> - 10 3 6 6 -1. - <_> - 12 5 2 2 9. - <_> - - <_> - 2 3 6 6 -1. - <_> - 4 5 2 2 9. - <_> - - <_> - 6 9 6 2 -1. - <_> - 6 10 6 1 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 6 9 12 3 -1. - <_> - 9 9 6 3 2. - <_> - - <_> - 0 9 2 1 -1. - <_> - 1 9 1 1 2. - <_> - - <_> - 9 0 6 4 -1. - <_> - 9 1 6 2 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 3 6 3 -1. - <_> - 8 4 6 1 3. - 1 - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 6 2 7 3 -1. - <_> - 5 3 7 1 3. - 1 - <_> - - <_> - 6 4 12 4 -1. - <_> - 12 4 6 2 2. - <_> - 6 6 6 2 2. - <_> - - <_> - 1 10 12 1 -1. - <_> - 5 10 4 1 3. - <_> - - <_> - 3 2 12 2 -1. - <_> - 9 2 6 1 2. - <_> - 3 3 6 1 2. - <_> - - <_> - 2 2 1 2 -1. - <_> - 2 3 1 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 2 1 3 9 -1. - <_> - 3 1 1 9 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 7 10 6 1 -1. - <_> - 9 10 2 1 3. - <_> - - <_> - 0 8 4 4 -1. - <_> - 0 9 4 2 2. - <_> - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - <_> - - <_> - 2 2 6 3 -1. - <_> - 4 2 2 3 3. - <_> - - <_> - 8 3 9 1 -1. - <_> - 11 3 3 1 3. - <_> - - <_> - 1 3 9 1 -1. - <_> - 4 3 3 1 3. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - <_> - - <_> - 11 4 4 5 -1. - <_> - 12 4 2 5 2. - <_> - - <_> - 3 4 4 5 -1. - <_> - 4 4 2 5 2. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 10 6 6 3 -1. - <_> - 12 7 2 1 9. - <_> - - <_> - 0 1 6 10 -1. - <_> - 2 1 2 10 3. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 8 1 4 3. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 15 8 3 4 -1. - <_> - 16 8 1 4 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 1 8 1 4 3. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 7 6 4 2 -1. - <_> - 7 6 4 1 2. - 1 - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 5 1 8 11 -1. - <_> - 9 1 4 11 2. - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - <_> - - <_> - 4 3 10 9 -1. - <_> - 4 6 10 3 3. - <_> - - <_> - 0 0 2 9 -1. - <_> - 0 3 2 3 3. - <_> - - <_> - 8 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 6 0 4 10 -1. - <_> - 8 0 2 10 2. - <_> - - <_> - 9 1 6 3 -1. - <_> - 11 1 2 3 3. - <_> - - <_> - 3 1 6 3 -1. - <_> - 5 1 2 3 3. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 6 0 3 1 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 10 0 6 4 -1. - <_> - 10 1 6 2 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 2 1 6 2 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - <_> - - <_> - 2 3 2 1 -1. - <_> - 3 3 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 9 4 1 1 2. - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 7 6 2 2 -1. - <_> - 7 6 1 1 2. - <_> - 8 7 1 1 2. - <_> - - <_> - 6 5 8 4 -1. - <_> - 10 5 4 2 2. - <_> - 6 7 4 2 2. - <_> - - <_> - 4 5 8 4 -1. - <_> - 4 5 4 2 2. - <_> - 8 7 4 2 2. - <_> - - <_> - 10 3 6 6 -1. - <_> - 12 5 2 2 9. - <_> - - <_> - 2 3 6 6 -1. - <_> - 4 5 2 2 9. - <_> - - <_> - 15 3 3 4 -1. - <_> - 15 4 3 2 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 14 3 3 1 -1. - <_> - 15 4 1 1 3. - 1 - <_> - - <_> - 4 3 1 3 -1. - <_> - 3 4 1 1 3. - 1 - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 5 4 6 8 -1. - <_> - 7 4 2 8 3. - <_> - - <_> - 4 5 14 7 -1. - <_> - 4 5 7 7 2. - <_> - - <_> - 4 4 10 4 -1. - <_> - 9 4 5 4 2. - <_> - - <_> - 12 1 1 2 -1. - <_> - 12 2 1 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 0 9 12 3 -1. - <_> - 3 9 6 3 2. - <_> - - <_> - 6 3 6 9 -1. - <_> - 6 3 3 9 2. - <_> - - <_> - 8 0 8 1 -1. - <_> - 10 2 4 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - <_> - - <_> - 9 5 1 4 -1. - <_> - 8 6 1 2 2. - 1 - <_> - - <_> - 2 6 12 3 -1. - <_> - 2 7 12 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 5 6 1 3 -1. - <_> - 5 7 1 1 3. - <_> - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 0 3 1 3 -1. - <_> - 0 4 1 1 3. - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 6 0 3 2 -1. - <_> - 6 0 3 1 2. - 1 - <_> - - <_> - 13 1 4 4 -1. - <_> - 15 1 2 2 2. - <_> - 13 3 2 2 2. - <_> - - <_> - 1 1 4 4 -1. - <_> - 1 1 2 2 2. - <_> - 3 3 2 2 2. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 0 8 2 2 -1. - <_> - 0 8 1 1 2. - <_> - 1 9 1 1 2. - <_> - - <_> - 12 6 5 6 -1. - <_> - 12 9 5 3 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 2 3 -1. - <_> - 4 3 2 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 9 2 1 2. - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 0 2 18 4 -1. - <_> - 9 2 9 2 2. - <_> - 0 4 9 2 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 1 1 2 3. - 1 - <_> - - <_> - 11 0 6 1 -1. - <_> - 13 0 2 1 3. - <_> - - <_> - 1 0 6 1 -1. - <_> - 3 0 2 1 3. - <_> - - <_> - 9 0 6 1 -1. - <_> - 11 0 2 1 3. - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - <_> - - <_> - 4 1 6 3 -1. - <_> - 4 2 6 1 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 9 0 2 1 2. - <_> - 7 1 2 1 2. - <_> - - <_> - 8 0 4 1 -1. - <_> - 9 1 2 1 2. - 1 - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 6 0 12 3 -1. - <_> - 9 0 6 3 2. - <_> - - <_> - 0 0 4 8 -1. - <_> - 2 0 2 8 2. - <_> - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 6 4 6 3 -1. - <_> - 6 5 6 1 3. - <_> - - <_> - 6 0 3 4 -1. - <_> - 6 0 3 2 2. - 1 - <_> - - <_> - 5 4 12 8 -1. - <_> - 5 8 12 4 2. - <_> - - <_> - 0 9 12 2 -1. - <_> - 3 9 6 2 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 12 0 6 1 2. - <_> - 6 1 6 1 2. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 3 0 12 3 -1. - <_> - 7 1 4 1 9. - <_> - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - <_> - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 1 1 1 4 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - <_> - - <_> - 12 6 4 1 -1. - <_> - 13 6 2 1 2. - <_> - - <_> - 4 6 2 1 -1. - <_> - 5 6 1 1 2. - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - <_> - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - <_> - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - <_> - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - <_> - - <_> - 0 9 6 3 -1. - <_> - 0 10 6 1 3. - <_> - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 8 2 2 3 -1. - <_> - 8 3 2 1 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 5 2 2 1 3. - 1 - <_> - - <_> - 15 3 3 4 -1. - <_> - 15 5 3 2 2. - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 5 3 2 2. - <_> - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - <_> - - <_> - 9 3 6 1 -1. - <_> - 11 5 2 1 3. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 2 1 6 3 -1. - <_> - 4 1 2 3 3. - <_> - - <_> - 16 1 2 3 -1. - <_> - 16 1 1 3 2. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - <_> - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 5 5 3 1 -1. - <_> - 6 5 1 1 3. - <_> - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 0 5 2 5 -1. - <_> - 1 5 1 5 2. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - 1 - <_> - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - <_> - - <_> - 3 6 12 5 -1. - <_> - 6 6 6 5 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 2 1 2. - 1 - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 2 2. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 6 3 4 1 3. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - <_> - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 1 9. - <_> - - <_> - 1 9 15 3 -1. - <_> - 6 10 5 1 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 6 1 1 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 5 4 6 1 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - <_> - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - <_> - - <_> - 10 3 1 3 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 0 4 6 6 -1. - <_> - 0 6 6 2 3. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 15 7 2 3 -1. - <_> - 14 8 2 1 3. - 1 - <_> - - <_> - 0 7 3 4 -1. - <_> - 1 7 1 4 3. - <_> - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - <_> - - <_> - 1 6 3 3 -1. - <_> - 2 7 1 1 9. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - <_> - - <_> - 9 5 1 3 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 11 9 2 2 -1. - <_> - 12 9 1 1 2. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 9 7 2 3 -1. - <_> - 9 8 2 1 3. - <_> - - <_> - 0 5 12 4 -1. - <_> - 0 5 6 2 2. - <_> - 6 7 6 2 2. - <_> - - <_> - 11 4 3 4 -1. - <_> - 12 5 1 4 3. - 1 - <_> - - <_> - 6 3 5 3 -1. - <_> - 5 4 5 1 3. - 1 - <_> - - <_> - 13 4 3 1 -1. - <_> - 14 5 1 1 3. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 10 8 4 4 -1. - <_> - 11 8 2 4 2. - <_> - - <_> - 4 8 4 4 -1. - <_> - 5 8 2 4 2. - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 8 1 2 3. - 1 - <_> - - <_> - 1 6 12 4 -1. - <_> - 1 6 6 2 2. - <_> - 7 8 6 2 2. - <_> - - <_> - 8 5 10 6 -1. - <_> - 13 5 5 3 2. - <_> - 8 8 5 3 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - <_> - - <_> - 9 0 8 2 -1. - <_> - 11 0 4 2 2. - <_> - - <_> - 1 0 8 2 -1. - <_> - 3 0 4 2 2. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 0 2 3 2. - <_> - - <_> - 1 0 4 3 -1. - <_> - 2 0 2 3 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 5 8 9 1 -1. - <_> - 8 8 3 1 3. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 1 5 3 3 -1. - <_> - 2 6 1 1 9. - <_> - - <_> - 8 9 4 1 -1. - <_> - 9 9 2 1 2. - <_> - - <_> - 4 8 1 3 -1. - <_> - 4 9 1 1 3. - <_> - - <_> - 3 10 14 2 -1. - <_> - 10 10 7 1 2. - <_> - 3 11 7 1 2. - <_> - - <_> - 4 9 10 3 -1. - <_> - 4 10 10 1 3. - <_> - - <_> - 6 6 6 6 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - <_> - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - <_> - - <_> - 5 8 8 3 -1. - <_> - 5 9 8 1 3. - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 12 2. - <_> - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 6 0 12 2 -1. - <_> - 6 0 6 2 2. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 8 3 2 2 -1. - <_> - 8 3 1 2 2. - 1 - <_> - - <_> - 10 2 1 3 -1. - <_> - 10 3 1 1 3. - <_> - - <_> - 7 2 1 3 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 15 8 3 4 -1. - <_> - 15 9 3 2 2. - <_> - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - <_> - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - <_> - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - <_> - - <_> - 14 7 4 5 -1. - <_> - 14 7 2 5 2. - <_> - - <_> - 0 7 4 5 -1. - <_> - 2 7 2 5 2. - <_> - - <_> - 13 2 4 1 -1. - <_> - 14 3 2 1 2. - 1 - <_> - - <_> - 5 2 1 4 -1. - <_> - 4 3 1 2 2. - 1 - <_> - - <_> - 13 7 1 3 -1. - <_> - 13 8 1 1 3. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 13 7 1 3 -1. - <_> - 13 8 1 1 3. - <_> - - <_> - 4 7 1 3 -1. - <_> - 4 8 1 1 3. - <_> - - <_> - 13 2 5 6 -1. - <_> - 13 4 5 2 3. - <_> - - <_> - 0 2 5 6 -1. - <_> - 0 4 5 2 3. - <_> - - <_> - 11 3 2 6 -1. - <_> - 11 6 2 3 2. - <_> - - <_> - 3 0 3 2 -1. - <_> - 4 1 1 2 3. - 1 - <_> - - <_> - 9 0 4 3 -1. - <_> - 9 1 4 1 3. - <_> - - <_> - 6 0 6 2 -1. - <_> - 9 0 3 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 7 3 3 2. - <_> - - <_> - 4 3 10 1 -1. - <_> - 4 3 5 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 9 2 2 -1. - <_> - 16 9 1 1 2. - <_> - 15 10 1 1 2. - <_> - - <_> - 1 9 2 2 -1. - <_> - 1 9 1 1 2. - <_> - 2 10 1 1 2. - <_> - - <_> - 15 8 3 1 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 7 5 6 4 -1. - <_> - 9 5 2 4 3. - <_> - - <_> - 4 7 4 2 -1. - <_> - 6 7 2 2 2. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 4 7 3 1 -1. - <_> - 5 7 1 1 3. - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 0 10 6 1 2. - <_> - 6 11 6 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - <_> - - <_> - 10 1 1 3 -1. - <_> - 10 2 1 1 3. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 8 9 2 2 2. - <_> - - <_> - 15 2 2 4 -1. - <_> - 16 2 1 2 2. - <_> - 15 4 1 2 2. - <_> - - <_> - 0 5 3 1 -1. - <_> - 1 5 1 1 3. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 6 3 4 -1. - <_> - 0 7 3 2 2. - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 7 1 2 2 -1. - <_> - 7 1 1 1 2. - <_> - 8 2 1 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 9 3 6 1 -1. - <_> - 9 3 3 1 2. - 1 - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 6 0 8 3 -1. - <_> - 6 1 8 1 3. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 1 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - <_> - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 1 2 2 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 1 2. - <_> - 9 1 1 1 2. - <_> - - <_> - 7 0 2 2 -1. - <_> - 7 0 1 1 2. - <_> - 8 1 1 1 2. - <_> - - <_> - 3 3 12 6 -1. - <_> - 6 3 6 6 2. - <_> - - <_> - 5 2 6 7 -1. - <_> - 7 2 2 7 3. - <_> - - <_> - 6 1 6 3 -1. - <_> - 6 1 3 3 2. - <_> - - <_> - 5 2 4 2 -1. - <_> - 6 2 2 2 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 15 1 3 3 -1. - <_> - 14 2 3 1 3. - 1 - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 2 1 3 3. - 1 - <_> - - <_> - 9 3 3 3 -1. - <_> - 10 4 1 3 3. - 1 - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 0 3 2 9 -1. - <_> - 1 3 1 9 2. - <_> - - <_> - 5 3 12 2 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 16 10 2 2 -1. - <_> - 16 11 2 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - <_> - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 8 1 2 3. - 1 - <_> - - <_> - 5 7 2 3 -1. - <_> - 4 8 2 1 3. - 1 - <_> - - <_> - 5 5 11 6 -1. - <_> - 5 8 11 3 2. - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - <_> - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - <_> - - <_> - 10 3 3 6 -1. - <_> - 11 4 1 6 3. - 1 - <_> - - <_> - 8 3 6 3 -1. - <_> - 7 4 6 1 3. - 1 - <_> - - <_> - 5 6 8 4 -1. - <_> - 9 6 4 2 2. - <_> - 5 8 4 2 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 11 4 6 3 -1. - <_> - 13 5 2 1 9. - <_> - - <_> - 1 0 4 1 -1. - <_> - 2 0 2 1 2. - <_> - - <_> - 11 4 6 3 -1. - <_> - 13 5 2 1 9. - <_> - - <_> - 1 4 6 3 -1. - <_> - 3 5 2 1 9. - <_> - - <_> - 11 0 6 9 -1. - <_> - 13 0 2 9 3. - <_> - - <_> - 1 0 6 9 -1. - <_> - 3 0 2 9 3. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 0 0 16 2 -1. - <_> - 8 0 8 2 2. - <_> - - <_> - 12 0 4 5 -1. - <_> - 13 0 2 5 2. - <_> - - <_> - 0 1 2 6 -1. - <_> - 0 3 2 2 3. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 4 3 3 6 -1. - <_> - 5 5 1 2 9. - <_> - - <_> - 3 0 12 8 -1. - <_> - 3 4 12 4 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 13 0 2 4 -1. - <_> - 13 1 2 2 2. - <_> - - <_> - 3 0 2 4 -1. - <_> - 3 1 2 2 2. - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 1 8 2 2. - <_> - - <_> - 2 3 6 3 -1. - <_> - 4 4 2 1 9. - <_> - - <_> - 6 11 12 1 -1. - <_> - 10 11 4 1 3. - <_> - - <_> - 0 11 12 1 -1. - <_> - 4 11 4 1 3. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 10 2 1 -1. - <_> - 3 10 1 1 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 12 11 2 1 -1. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 11 2 1 -1. - <_> - 5 11 1 1 2. - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 8 1 10 1 -1. - <_> - 8 1 5 1 2. - 1 - <_> - - <_> - 14 2 4 3 -1. - <_> - 14 2 2 3 2. - 1 - <_> - - <_> - 4 2 3 4 -1. - <_> - 4 2 3 2 2. - 1 - <_> - - <_> - 10 2 6 4 -1. - <_> - 12 2 2 4 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 4 3 11 4 -1. - <_> - 4 4 11 2 2. - <_> - - <_> - 0 0 12 3 -1. - <_> - 4 0 4 3 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 7 1 3 3. - 1 - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 9 4 5 6 -1. - <_> - 9 7 5 3 2. - <_> - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 5 1 5 3. - 1 - <_> - - <_> - 0 0 2 7 -1. - <_> - 1 0 1 7 2. - <_> - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - <_> - - <_> - 5 4 3 3 -1. - <_> - 4 5 3 1 3. - 1 - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 7 4 3 2. - <_> - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - <_> - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - <_> - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 0 6 18 6 -1. - <_> - 0 6 9 3 2. - <_> - 9 9 9 3 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 14 1 1 3 3. - 1 - <_> - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - <_> - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - <_> - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 2 0 3 2 -1. - <_> - 2 0 3 1 2. - 1 - <_> - - <_> - 14 3 2 1 -1. - <_> - 14 3 1 1 2. - 1 - <_> - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - <_> - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - 1 - <_> - - <_> - 17 6 1 4 -1. - <_> - 17 8 1 2 2. - <_> - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - <_> - - <_> - 6 11 12 1 -1. - <_> - 9 11 6 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 2 6 2 2 3. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - <_> - - <_> - 0 11 6 1 -1. - <_> - 3 11 3 1 2. - <_> - - <_> - 6 3 9 2 -1. - <_> - 9 3 3 2 3. - <_> - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - <_> - - <_> - 3 3 15 1 -1. - <_> - 8 3 5 1 3. - <_> - - <_> - 5 0 4 3 -1. - <_> - 5 1 4 1 3. - <_> - - <_> - 10 0 4 2 -1. - <_> - 10 1 4 1 2. - <_> - - <_> - 2 3 9 2 -1. - <_> - 5 3 3 2 3. - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 0 3 3 4 -1. - <_> - 0 4 3 2 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 5 10 6 -1. - <_> - 0 5 5 3 2. - <_> - 5 8 5 3 2. - <_> - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - <_> - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - <_> - - <_> - 5 0 12 4 -1. - <_> - 11 0 6 2 2. - <_> - 5 2 6 2 2. - <_> - - <_> - 1 0 12 4 -1. - <_> - 1 0 6 2 2. - <_> - 7 2 6 2 2. - <_> - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 2 1 2 2. - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 5 9 4 2 -1. - <_> - 6 9 2 2 2. - <_> - - <_> - 12 1 6 6 -1. - <_> - 12 4 6 3 2. - <_> - - <_> - 4 5 6 1 -1. - <_> - 4 5 3 1 2. - 1 - <_> - - <_> - 5 6 9 6 -1. - <_> - 5 9 9 3 2. - <_> - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - <_> - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - <_> - - <_> - 15 7 3 1 -1. - <_> - 16 7 1 1 3. - <_> - - <_> - 0 7 3 1 -1. - <_> - 1 7 1 1 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 6 1 4 3 -1. - <_> - 7 1 2 3 2. - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 15 1 3 1 3. - <_> - - <_> - 0 0 3 3 -1. - <_> - 0 1 3 1 3. - <_> - - <_> - 8 2 4 1 -1. - <_> - 8 2 2 1 2. - <_> - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 1 - <_> - - <_> - 10 1 1 3 -1. - <_> - 10 2 1 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 13 4 5 4 -1. - <_> - 13 5 5 2 2. - <_> - - <_> - 0 4 5 4 -1. - <_> - 0 5 5 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 5 7 4 1 -1. - <_> - 6 7 2 1 2. - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 9 2 2 2. - <_> - - <_> - 2 7 14 3 -1. - <_> - 9 7 7 3 2. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 13 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 13 5 4 5 -1. - <_> - 14 5 2 5 2. - <_> - - <_> - 1 5 4 5 -1. - <_> - 2 5 2 5 2. - <_> - - <_> - 11 3 3 6 -1. - <_> - 12 5 1 2 9. - <_> - - <_> - 2 7 4 1 -1. - <_> - 3 8 2 1 2. - 1 - <_> - - <_> - 10 0 2 10 -1. - <_> - 10 0 1 10 2. - 1 - <_> - - <_> - 8 0 10 2 -1. - <_> - 8 0 10 1 2. - 1 - <_> - - <_> - 12 0 1 4 -1. - <_> - 11 1 1 2 2. - 1 - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 16 6 2 3 -1. - <_> - 16 7 2 1 3. - <_> - - <_> - 0 6 2 3 -1. - <_> - 0 7 2 1 3. - <_> - - <_> - 14 11 4 1 -1. - <_> - 15 11 2 1 2. - <_> - - <_> - 0 11 4 1 -1. - <_> - 1 11 2 1 2. - <_> - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 9 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 9 5 1 1 2. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 1 0 16 1 -1. - <_> - 5 0 8 1 2. - <_> - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 0 0 12 1 -1. - <_> - 6 0 6 1 2. - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 6 0 4 1 -1. - <_> - 7 1 2 1 2. - 1 - <_> - - <_> - 10 2 2 6 -1. - <_> - 10 4 2 2 3. - <_> - - <_> - 6 2 4 6 -1. - <_> - 6 4 4 2 3. - <_> - - <_> - 9 4 2 4 -1. - <_> - 8 5 2 2 2. - 1 - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 5 9 12 3 -1. - <_> - 8 9 6 3 2. - <_> - - <_> - 1 9 12 3 -1. - <_> - 4 9 6 3 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 10 7 3 3 2. - <_> - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 3 8 12 3 -1. - <_> - 3 9 12 1 3. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 10 5 3 4 -1. - <_> - 10 7 3 2 2. - <_> - - <_> - 5 5 3 4 -1. - <_> - 5 7 3 2 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 10 0 1 3 2. - 1 - <_> - - <_> - 5 0 6 2 -1. - <_> - 7 0 2 2 3. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 12 5 3 4 -1. - <_> - 13 6 1 4 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - <_> - - <_> - 12 4 4 1 -1. - <_> - 13 5 2 1 2. - 1 - <_> - - <_> - 6 5 4 3 -1. - <_> - 5 6 4 1 3. - 1 - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 0 4 10 4 -1. - <_> - 0 4 5 2 2. - <_> - 5 6 5 2 2. - <_> - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - <_> - - <_> - 2 0 4 5 -1. - <_> - 3 0 2 5 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 10 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 16 9 2 2 -1. - <_> - 17 9 1 1 2. - <_> - 16 10 1 1 2. - <_> - - <_> - 0 9 2 2 -1. - <_> - 0 9 1 1 2. - <_> - 1 10 1 1 2. - <_> - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - <_> - - <_> - 10 10 8 2 -1. - <_> - 12 10 4 2 2. - <_> - - <_> - 0 10 8 2 -1. - <_> - 2 10 4 2 2. - <_> - - <_> - 14 7 2 2 -1. - <_> - 15 7 1 1 2. - <_> - 14 8 1 1 2. - <_> - - <_> - 3 6 1 4 -1. - <_> - 3 8 1 2 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 2 7 12 3 -1. - <_> - 2 8 12 1 3. - <_> - - <_> - 17 5 1 6 -1. - <_> - 17 7 1 2 3. - <_> - - <_> - 0 5 1 6 -1. - <_> - 0 7 1 2 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - <_> - - <_> - 9 9 1 3 -1. - <_> - 9 10 1 1 3. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - <_> - - <_> - 10 7 3 2 -1. - <_> - 10 7 3 1 2. - 1 - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 7 1 3 2. - 1 - <_> - - <_> - 3 4 12 4 -1. - <_> - 3 6 12 2 2. - <_> - - <_> - 5 1 4 4 -1. - <_> - 5 1 4 2 2. - 1 - <_> - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 11 0 4 4 -1. - <_> - 11 1 4 2 2. - <_> - - <_> - 2 0 7 4 -1. - <_> - 2 1 7 2 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 2 4 2. - 1 - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 1 4 2 2. - 1 - <_> - - <_> - 10 1 3 8 -1. - <_> - 11 2 1 8 3. - 1 - <_> - - <_> - 8 1 8 3 -1. - <_> - 7 2 8 1 3. - 1 - <_> - - <_> - 12 0 3 1 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 6 0 1 3 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 4 12 2 2. - <_> - - <_> - 2 2 3 6 -1. - <_> - 3 4 1 2 9. - <_> - - <_> - 15 3 3 3 -1. - <_> - 14 4 3 1 3. - 1 - <_> - - <_> - 3 3 3 3 -1. - <_> - 4 4 1 3 3. - 1 - <_> - - <_> - 0 5 18 2 -1. - <_> - 9 5 9 1 2. - <_> - 0 6 9 1 2. - <_> - - <_> - 7 3 1 4 -1. - <_> - 7 3 1 2 2. - 1 - <_> - - <_> - 13 2 3 2 -1. - <_> - 14 3 1 2 3. - 1 - <_> - - <_> - 5 2 2 3 -1. - <_> - 4 3 2 1 3. - 1 - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 0 1 3 3 -1. - <_> - 0 2 3 1 3. - <_> - - <_> - 7 4 5 8 -1. - <_> - 7 8 5 4 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - <_> - - <_> - 10 2 6 9 -1. - <_> - 12 5 2 3 9. - <_> - - <_> - 2 2 6 9 -1. - <_> - 4 5 2 3 9. - <_> - - <_> - 16 4 2 4 -1. - <_> - 16 5 2 2 2. - <_> - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 9 3 9 6 -1. - <_> - 12 5 3 2 9. - <_> - - <_> - 2 3 12 4 -1. - <_> - 2 5 12 2 2. - <_> - - <_> - 12 3 1 2 -1. - <_> - 12 3 1 1 2. - 1 - <_> - - <_> - 7 3 2 2 -1. - <_> - 7 3 1 1 2. - <_> - 8 4 1 1 2. - <_> - - <_> - 7 7 6 3 -1. - <_> - 7 7 3 3 2. - <_> - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 5 4 6 7 -1. - <_> - 7 4 2 7 3. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 1 2. - <_> - 6 9 1 1 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - <_> - - <_> - 4 0 3 2 -1. - <_> - 5 1 1 2 3. - 1 - <_> - - <_> - 7 1 4 4 -1. - <_> - 8 1 2 4 2. - <_> - - <_> - 4 2 7 3 -1. - <_> - 3 3 7 1 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 12 2. - <_> - - <_> - 0 0 18 6 -1. - <_> - 9 0 9 6 2. - <_> - - <_> - 5 8 9 3 -1. - <_> - 5 9 9 1 3. - <_> - - <_> - 9 2 8 1 -1. - <_> - 9 2 4 1 2. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - <_> - - <_> - 8 0 9 9 -1. - <_> - 11 3 3 3 9. - <_> - - <_> - 1 0 9 9 -1. - <_> - 4 3 3 3 9. - <_> - - <_> - 15 11 3 1 -1. - <_> - 16 11 1 1 3. - <_> - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - <_> - - <_> - 6 2 12 3 -1. - <_> - 6 3 12 1 3. - <_> - - <_> - 0 11 3 1 -1. - <_> - 1 11 1 1 3. - <_> - - <_> - 16 10 1 2 -1. - <_> - 16 11 1 1 2. - <_> - - <_> - 0 10 2 2 -1. - <_> - 0 10 1 1 2. - <_> - 1 11 1 1 2. - <_> - - <_> - 17 10 1 2 -1. - <_> - 17 11 1 1 2. - <_> - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - <_> - - <_> - 15 8 3 1 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 9 3 9 6 -1. - <_> - 12 5 3 2 9. - <_> - - <_> - 0 3 9 6 -1. - <_> - 3 5 3 2 9. - <_> - - <_> - 12 3 1 6 -1. - <_> - 12 5 1 2 3. - <_> - - <_> - 3 3 2 1 -1. - <_> - 4 3 1 1 2. - <_> - - <_> - 5 2 12 2 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 1 2 12 2 -1. - <_> - 4 2 6 2 2. - <_> - - <_> - 9 1 8 11 -1. - <_> - 9 1 4 11 2. - <_> - - <_> - 1 1 8 11 -1. - <_> - 5 1 4 11 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 5 2 6 3. - <_> - - <_> - 4 7 2 3 -1. - <_> - 4 7 1 3 2. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 4 7 6 5 -1. - <_> - 6 7 2 5 3. - <_> - - <_> - 13 8 5 4 -1. - <_> - 13 9 5 2 2. - <_> - - <_> - 0 8 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 6 1 1 3. - 1 - <_> - - <_> - 5 5 1 3 -1. - <_> - 4 6 1 1 3. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - <_> - - <_> - 5 9 2 2 -1. - <_> - 5 9 1 1 2. - <_> - 6 10 1 1 2. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 2 1 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 9 1 1 3. - 1 - <_> - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 4 10 14 2 -1. - <_> - 11 10 7 1 2. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 10 14 2 -1. - <_> - 0 10 7 1 2. - <_> - 7 11 7 1 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 2 0 15 3 -1. - <_> - 7 0 5 3 3. - <_> - - <_> - 5 1 7 3 -1. - <_> - 5 2 7 1 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - <_> - - <_> - 0 2 3 1 -1. - <_> - 1 2 1 1 3. - <_> - - <_> - 14 1 4 3 -1. - <_> - 15 1 2 3 2. - <_> - - <_> - 0 1 4 3 -1. - <_> - 1 1 2 3 2. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 6 3 2 1 -1. - <_> - 6 3 1 1 2. - 1 - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 0 0 18 4 -1. - <_> - 0 0 9 2 2. - <_> - 9 2 9 2 2. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 7 10 1 2 -1. - <_> - 7 11 1 1 2. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 2 4 9 7 -1. - <_> - 5 4 3 7 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 11 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 10 2 1 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 0 8 18 4 -1. - <_> - 0 8 9 2 2. - <_> - 9 10 9 2 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - <_> - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 2 3 3 6 -1. - <_> - 3 5 1 2 9. - <_> - - <_> - 14 3 2 3 -1. - <_> - 13 4 2 1 3. - 1 - <_> - - <_> - 4 3 3 2 -1. - <_> - 5 4 1 2 3. - 1 - <_> - - <_> - 10 2 8 6 -1. - <_> - 14 2 4 3 2. - <_> - 10 5 4 3 2. - <_> - - <_> - 0 2 8 6 -1. - <_> - 0 2 4 3 2. - <_> - 4 5 4 3 2. - <_> - - <_> - 15 4 2 2 -1. - <_> - 16 4 1 1 2. - <_> - 15 5 1 1 2. - <_> - - <_> - 1 4 2 2 -1. - <_> - 1 4 1 1 2. - <_> - 2 5 1 1 2. - <_> - - <_> - 14 4 3 8 -1. - <_> - 14 8 3 4 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 7 10 4 1 2. - <_> - - <_> - 16 2 2 4 -1. - <_> - 16 3 2 2 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 3 2 2 2. - <_> - - <_> - 14 0 1 12 -1. - <_> - 14 6 1 6 2. - <_> - - <_> - 6 2 1 4 -1. - <_> - 5 3 1 2 2. - 1 - <_> - - <_> - 14 0 4 6 -1. - <_> - 16 0 2 3 2. - <_> - 14 3 2 3 2. - <_> - - <_> - 0 0 4 6 -1. - <_> - 0 0 2 3 2. - <_> - 2 3 2 3 2. - <_> - - <_> - 15 0 3 10 -1. - <_> - 16 0 1 10 3. - <_> - - <_> - 4 2 3 2 -1. - <_> - 5 3 1 2 3. - 1 - <_> - - <_> - 9 3 8 1 -1. - <_> - 11 3 4 1 2. - <_> - - <_> - 1 3 8 1 -1. - <_> - 3 3 4 1 2. - <_> - - <_> - 14 0 4 2 -1. - <_> - 14 0 4 1 2. - 1 - <_> - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - <_> - - <_> - 17 0 1 9 -1. - <_> - 17 3 1 3 3. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 1 2 1 2. - <_> - - <_> - 10 0 7 2 -1. - <_> - 10 1 7 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 9 2 3 4 -1. - <_> - 8 3 3 2 2. - 1 - <_> - - <_> - 12 0 6 1 -1. - <_> - 12 0 3 1 2. - <_> - - <_> - 0 0 6 1 -1. - <_> - 3 0 3 1 2. - <_> - - <_> - 3 3 12 4 -1. - <_> - 3 4 12 2 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - <_> - - <_> - 5 1 8 2 -1. - <_> - 5 1 4 2 2. - <_> - - <_> - 7 5 3 2 -1. - <_> - 8 5 1 2 3. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - <_> - - <_> - 13 2 5 8 -1. - <_> - 13 4 5 4 2. - <_> - - <_> - 0 0 2 6 -1. - <_> - 1 0 1 6 2. - <_> - - <_> - 11 5 2 6 -1. - <_> - 12 5 1 3 2. - <_> - 11 8 1 3 2. - <_> - - <_> - 5 5 2 6 -1. - <_> - 5 5 1 3 2. - <_> - 6 8 1 3 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 8 8 6 3 2. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - <_> - - <_> - 1 9 1 3 -1. - <_> - 1 10 1 1 3. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 6 0 6 4 -1. - <_> - 6 1 6 2 2. - <_> - - <_> - 17 0 1 4 -1. - <_> - 17 1 1 2 2. - <_> - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - <_> - - <_> - 7 0 5 3 -1. - <_> - 7 1 5 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 10 2 2 1 3. - 1 - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 3 1 6 4 -1. - <_> - 5 1 2 4 3. - <_> - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - <_> - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - <_> - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - <_> - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - <_> - - <_> - 13 2 5 9 -1. - <_> - 13 5 5 3 3. - <_> - - <_> - 0 2 5 8 -1. - <_> - 0 4 5 4 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 1 2. - <_> - 7 1 5 1 2. - <_> - - <_> - 13 3 5 2 -1. - <_> - 13 4 5 1 2. - <_> - - <_> - 0 3 5 2 -1. - <_> - 0 4 5 1 2. - <_> - - <_> - 14 0 1 3 -1. - <_> - 13 1 1 1 3. - 1 - <_> - - <_> - 4 0 3 1 -1. - <_> - 5 1 1 1 3. - 1 - <_> - - <_> - 7 2 10 2 -1. - <_> - 12 2 5 1 2. - <_> - 7 3 5 1 2. - <_> - - <_> - 5 9 4 3 -1. - <_> - 6 9 2 3 2. - <_> - - <_> - 14 2 3 2 -1. - <_> - 15 3 1 2 3. - 1 - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 10 18 2 -1. - <_> - 6 10 6 2 3. - <_> - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - <_> - - <_> - 10 0 1 4 -1. - <_> - 9 1 1 2 2. - 1 - <_> - - <_> - 4 1 3 4 -1. - <_> - 5 2 1 4 3. - 1 - <_> - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - <_> - - <_> - 3 1 3 3 -1. - <_> - 4 1 1 3 3. - <_> - - <_> - 3 1 14 4 -1. - <_> - 10 1 7 2 2. - <_> - 3 3 7 2 2. - <_> - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - <_> - - <_> - 5 5 5 6 -1. - <_> - 5 8 5 3 2. - <_> - - <_> - 7 3 4 6 -1. - <_> - 7 6 4 3 2. - <_> - - <_> - 4 4 10 2 -1. - <_> - 4 5 10 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 7 4 6 8 -1. - <_> - 7 6 6 4 2. - <_> - - <_> - 0 7 2 4 -1. - <_> - 0 8 2 2 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 0 2 2 8 -1. - <_> - 0 2 1 4 2. - <_> - 1 6 1 4 2. - <_> - - <_> - 14 0 4 4 -1. - <_> - 15 0 2 4 2. - <_> - - <_> - 0 0 4 4 -1. - <_> - 1 0 2 4 2. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - <_> - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - <_> - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 2 10 2 2 -1. - <_> - 2 10 1 1 2. - <_> - 3 11 1 1 2. - <_> - - <_> - 10 9 4 3 -1. - <_> - 11 9 2 3 2. - <_> - - <_> - 4 7 2 1 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 12 5 1 3 -1. - <_> - 11 6 1 1 3. - 1 - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 6 6 12 4 -1. - <_> - 12 6 6 2 2. - <_> - 6 8 6 2 2. - <_> - - <_> - 4 9 4 3 -1. - <_> - 5 9 2 3 2. - <_> - - <_> - 3 1 15 3 -1. - <_> - 8 1 5 3 3. - <_> - - <_> - 0 1 15 3 -1. - <_> - 5 1 5 3 3. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 4 0 6 5 -1. - <_> - 6 0 2 5 3. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 1 2 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 0 7 2 3 -1. - <_> - 0 8 2 1 3. - <_> - - <_> - 6 4 6 3 -1. - <_> - 8 5 2 1 9. - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 7 3 4 2 -1. - <_> - 7 4 4 1 2. - <_> - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 3 2 11 3 -1. - <_> - 3 3 11 1 3. - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 1 2 2 2. - 1 - <_> - - <_> - 1 5 3 4 -1. - <_> - 2 5 1 4 3. - <_> - - <_> - 13 0 4 3 -1. - <_> - 14 1 2 3 2. - 1 - <_> - - <_> - 4 3 1 2 -1. - <_> - 4 3 1 1 2. - 1 - <_> - - <_> - 17 8 1 3 -1. - <_> - 17 9 1 1 3. - <_> - - <_> - 0 5 12 7 -1. - <_> - 6 5 6 7 2. - <_> - - <_> - 11 8 2 1 -1. - <_> - 11 8 1 1 2. - <_> - - <_> - 0 1 18 10 -1. - <_> - 9 1 9 10 2. - <_> - - <_> - 7 0 4 10 -1. - <_> - 7 0 2 10 2. - <_> - - <_> - 1 0 14 4 -1. - <_> - 1 0 7 2 2. - <_> - 8 2 7 2 2. - <_> - - <_> - 8 4 7 6 -1. - <_> - 8 7 7 3 2. - <_> - - <_> - 5 0 9 3 -1. - <_> - 4 1 9 1 3. - 1 - <_> - - <_> - 8 8 3 3 -1. - <_> - 8 9 3 1 3. - <_> - - <_> - 4 3 1 4 -1. - <_> - 4 5 1 2 2. - <_> - - <_> - 8 0 4 2 -1. - <_> - 9 0 2 2 2. - <_> - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - <_> - - <_> - 17 6 1 6 -1. - <_> - 17 9 1 3 2. - <_> - - <_> - 0 8 1 3 -1. - <_> - 0 9 1 1 3. - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 1 5 1 6 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 6 1 6 -1. - <_> - 0 9 1 3 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 7 3 5 -1. - <_> - 1 7 1 5 3. - <_> - - <_> - 15 10 2 2 -1. - <_> - 16 10 1 1 2. - <_> - 15 11 1 1 2. - <_> - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - <_> - - <_> - 16 2 2 6 -1. - <_> - 16 4 2 2 3. - <_> - - <_> - 0 2 2 6 -1. - <_> - 0 4 2 2 3. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 16 7 2 3 -1. - <_> - 15 8 2 1 3. - 1 - <_> - - <_> - 2 7 3 2 -1. - <_> - 3 8 1 2 3. - 1 - <_> - - <_> - 16 2 2 2 -1. - <_> - 17 2 1 1 2. - <_> - 16 3 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 5 4 1 3 -1. - <_> - 4 5 1 1 3. - 1 - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 5 4 5 3 -1. - <_> - 4 5 5 1 3. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 1 2 1 3. - <_> - - <_> - 4 7 4 1 -1. - <_> - 5 7 2 1 2. - <_> - - <_> - 9 5 3 1 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 2 9 2 1 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 12 0 2 3 -1. - <_> - 12 1 2 1 3. - <_> - - <_> - 1 4 12 1 -1. - <_> - 7 4 6 1 2. - <_> - - <_> - 6 3 6 2 -1. - <_> - 8 3 2 2 3. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 3 1 12 5 -1. - <_> - 7 1 4 5 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - <_> - - <_> - 8 0 2 3 -1. - <_> - 7 1 2 1 3. - 1 - <_> - - <_> - 14 10 4 2 -1. - <_> - 15 10 2 2 2. - <_> - - <_> - 4 5 9 6 -1. - <_> - 4 8 9 3 2. - <_> - - <_> - 14 10 4 2 -1. - <_> - 15 10 2 2 2. - <_> - - <_> - 0 10 4 2 -1. - <_> - 1 10 2 2 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 0 9 5 2 -1. - <_> - 0 10 5 1 2. - <_> - - <_> - 14 9 2 1 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 4 0 3 12 -1. - <_> - 5 0 1 12 3. - <_> - - <_> - 11 0 2 8 -1. - <_> - 12 0 1 4 2. - <_> - 11 4 1 4 2. - <_> - - <_> - 5 0 2 8 -1. - <_> - 5 0 1 4 2. - <_> - 6 4 1 4 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 12 1 4 2 -1. - <_> - 13 2 2 2 2. - 1 - <_> - - <_> - 6 1 2 4 -1. - <_> - 5 2 2 2 2. - 1 - <_> - - <_> - 15 3 2 1 -1. - <_> - 15 3 1 1 2. - <_> - - <_> - 1 3 2 1 -1. - <_> - 2 3 1 1 2. - <_> - - <_> - 10 6 1 3 -1. - <_> - 10 7 1 1 3. - <_> - - <_> - 2 0 3 2 -1. - <_> - 3 0 1 2 3. - <_> - - <_> - 9 4 9 1 -1. - <_> - 12 4 3 1 3. - <_> - - <_> - 0 2 18 2 -1. - <_> - 9 2 9 2 2. - <_> - - <_> - 9 4 4 8 -1. - <_> - 9 6 4 4 2. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 6 9 6 3 -1. - <_> - 6 10 6 1 3. - <_> - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 2 6 12 2 -1. - <_> - 8 6 6 2 2. - <_> - - <_> - 11 9 2 3 -1. - <_> - 11 10 2 1 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 15 0 3 11 -1. - <_> - 16 0 1 11 3. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 0 0 15 6 -1. - <_> - 5 2 5 2 9. - <_> - - <_> - 9 3 1 8 -1. - <_> - 9 3 1 4 2. - 1 - <_> - - <_> - 2 3 12 3 -1. - <_> - 5 3 6 3 2. - <_> - - <_> - 14 0 4 9 -1. - <_> - 14 3 4 3 3. - <_> - - <_> - 0 0 4 9 -1. - <_> - 0 3 4 3 3. - <_> - - <_> - 10 1 1 10 -1. - <_> - 10 1 1 5 2. - 1 - <_> - - <_> - 3 3 3 2 -1. - <_> - 4 4 1 2 3. - 1 - <_> - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - <_> - - <_> - 0 10 16 2 -1. - <_> - 4 10 8 2 2. - <_> - - <_> - 11 9 2 3 -1. - <_> - 11 10 2 1 3. - <_> - - <_> - 5 9 2 3 -1. - <_> - 5 10 2 1 3. - <_> - - <_> - 6 8 7 3 -1. - <_> - 6 9 7 1 3. - <_> - - <_> - 0 5 12 6 -1. - <_> - 4 7 4 2 9. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 15 3 2 2 -1. - <_> - 16 3 1 1 2. - <_> - 15 4 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 3 1 1 2. - <_> - 2 4 1 1 2. - <_> - - <_> - 9 2 1 4 -1. - <_> - 9 2 1 2 2. - 1 - <_> - - <_> - 7 4 3 3 -1. - <_> - 6 5 3 1 3. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 8 0 2 5 -1. - <_> - 9 0 1 5 2. - <_> - - <_> - 9 4 1 4 -1. - <_> - 8 5 1 2 2. - 1 - <_> - - <_> - 9 4 4 1 -1. - <_> - 10 5 2 1 2. - 1 - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 3 7 12 2 -1. - <_> - 3 8 12 1 2. - <_> - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 6 10 1 2 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 0 2 4 -1. - <_> - 8 1 2 2 2. - 1 - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 0 4 1 2. - 1 - <_> - - <_> - 10 0 8 4 -1. - <_> - 14 0 4 2 2. - <_> - 10 2 4 2 2. - <_> - - <_> - 0 0 8 4 -1. - <_> - 0 0 4 2 2. - <_> - 4 2 4 2 2. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 9 2 4 1 -1. - <_> - 9 2 2 1 2. - 1 - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 9 2 3 2. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 7 8 4 2 -1. - <_> - 8 8 2 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 3 9 14 2 -1. - <_> - 10 9 7 1 2. - <_> - 3 10 7 1 2. - <_> - - <_> - 0 0 3 10 -1. - <_> - 1 0 1 10 3. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 17 0 1 6 -1. - <_> - 17 2 1 2 3. - <_> - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - <_> - - <_> - 4 6 14 1 -1. - <_> - 4 6 7 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 5 5 6 2 -1. - <_> - 5 6 6 1 2. - <_> - - <_> - 10 1 1 2 -1. - <_> - 10 2 1 1 2. - <_> - - <_> - 3 6 2 6 -1. - <_> - 3 9 2 3 2. - <_> - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - <_> - - <_> - 1 8 3 1 -1. - <_> - 2 9 1 1 3. - 1 - <_> - - <_> - 14 5 4 5 -1. - <_> - 15 5 2 5 2. - <_> - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 12 2 3 9 -1. - <_> - 13 5 1 3 9. - <_> - - <_> - 3 2 3 9 -1. - <_> - 4 5 1 3 9. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 1 2 1 2. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - <_> - - <_> - 5 3 1 3 -1. - <_> - 4 4 1 1 3. - 1 - <_> - - <_> - 14 5 1 2 -1. - <_> - 14 5 1 1 2. - 1 - <_> - - <_> - 4 5 2 1 -1. - <_> - 4 5 1 1 2. - 1 - <_> - - <_> - 14 2 4 1 -1. - <_> - 14 2 2 1 2. - <_> - - <_> - 0 2 4 1 -1. - <_> - 2 2 2 1 2. - <_> - - <_> - 11 11 2 1 -1. - <_> - 11 11 1 1 2. - <_> - - <_> - 1 0 5 8 -1. - <_> - 1 4 5 4 2. - <_> - - <_> - 14 6 2 2 -1. - <_> - 15 6 1 1 2. - <_> - 14 7 1 1 2. - <_> - - <_> - 5 11 2 1 -1. - <_> - 6 11 1 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 7 2 2 2. - <_> - - <_> - 9 2 9 1 -1. - <_> - 12 5 3 1 3. - 1 - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 0 8 15 3 -1. - <_> - 5 9 5 1 9. - <_> - - <_> - 8 9 2 2 -1. - <_> - 9 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 5 7 2 2 -1. - <_> - 5 7 1 1 2. - <_> - 6 8 1 1 2. - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 1 6 10 4 -1. - <_> - 1 6 5 2 2. - <_> - 6 8 5 2 2. - <_> - - <_> - 13 2 2 8 -1. - <_> - 13 2 1 8 2. - 1 - <_> - - <_> - 5 2 8 2 -1. - <_> - 5 2 8 1 2. - 1 - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 2 6 1 3 -1. - <_> - 2 7 1 1 3. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 11 0 2 3 -1. - <_> - 11 0 1 3 2. - 1 - <_> - - <_> - 9 0 2 3 -1. - <_> - 8 1 2 1 3. - 1 - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 1 10 1 -1. - <_> - 7 1 5 1 2. - 1 - <_> - - <_> - 4 1 11 8 -1. - <_> - 4 3 11 4 2. - <_> - - <_> - 0 11 6 1 -1. - <_> - 3 11 3 1 2. - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 0 0 10 6 -1. - <_> - 0 3 10 3 2. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - <_> - - <_> - 4 8 3 1 -1. - <_> - 5 9 1 1 3. - 1 - <_> - - <_> - 9 2 2 2 -1. - <_> - 10 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 17 0 1 10 -1. - <_> - 17 0 1 5 2. - 1 - <_> - - <_> - 1 0 10 1 -1. - <_> - 1 0 5 1 2. - 1 - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - <_> - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - <_> - - <_> - 12 5 6 6 -1. - <_> - 15 5 3 3 2. - <_> - 12 8 3 3 2. - <_> - - <_> - 0 5 8 6 -1. - <_> - 0 5 4 3 2. - <_> - 4 8 4 3 2. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 0 6 14 1 -1. - <_> - 7 6 7 1 2. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 7 7 2 3 -1. - <_> - 7 8 2 1 3. - <_> - - <_> - 17 5 1 3 -1. - <_> - 17 6 1 1 3. - <_> - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 0 5 1 3 -1. - <_> - 0 6 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - <_> - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - <_> - - <_> - 13 0 1 3 -1. - <_> - 13 1 1 1 3. - <_> - - <_> - 4 0 1 3 -1. - <_> - 4 1 1 1 3. - <_> - - <_> - 10 4 1 3 -1. - <_> - 9 5 1 1 3. - 1 - <_> - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - <_> - - <_> - 6 8 12 4 -1. - <_> - 6 10 12 2 2. - <_> - - <_> - 0 6 6 5 -1. - <_> - 2 6 2 5 3. - <_> - - <_> - 14 9 4 3 -1. - <_> - 14 9 2 3 2. - <_> - - <_> - 0 9 4 3 -1. - <_> - 2 9 2 3 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 15 10 3 2 -1. - <_> - 15 11 3 1 2. - <_> - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - <_> - - <_> - 7 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 0 6 7 2 -1. - <_> - 0 7 7 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 2 1 2. - 1 - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 9 0 4 1 -1. - <_> - 10 0 2 1 2. - <_> - - <_> - 5 0 4 1 -1. - <_> - 6 0 2 1 2. - <_> - - <_> - 16 7 2 2 -1. - <_> - 17 7 1 1 2. - <_> - 16 8 1 1 2. - <_> - - <_> - 0 7 2 2 -1. - <_> - 0 7 1 1 2. - <_> - 1 8 1 1 2. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 4 9 3 1 -1. - <_> - 5 9 1 1 3. - <_> - - <_> - 10 8 6 1 -1. - <_> - 12 8 2 1 3. - <_> - - <_> - 4 7 8 2 -1. - <_> - 6 7 4 2 2. - <_> - - <_> - 15 8 1 3 -1. - <_> - 14 9 1 1 3. - 1 - <_> - - <_> - 3 8 3 1 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 15 4 2 8 -1. - <_> - 15 8 2 4 2. - <_> - - <_> - 1 4 2 8 -1. - <_> - 1 8 2 4 2. - <_> - - <_> - 7 2 6 3 -1. - <_> - 7 3 6 1 3. - <_> - - <_> - 2 3 14 2 -1. - <_> - 9 3 7 2 2. - <_> - - <_> - 8 4 7 6 -1. - <_> - 8 7 7 3 2. - <_> - - <_> - 3 4 7 6 -1. - <_> - 3 7 7 3 2. - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - <_> - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - <_> - - <_> - 13 7 5 4 -1. - <_> - 13 9 5 2 2. - <_> - - <_> - 0 7 5 4 -1. - <_> - 0 9 5 2 2. - <_> - - <_> - 11 9 2 1 -1. - <_> - 11 9 1 1 2. - 1 - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 7 5 8 4 -1. - <_> - 11 5 4 2 2. - <_> - 7 7 4 2 2. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 5 3 8 2 -1. - <_> - 9 3 4 1 2. - <_> - 5 4 4 1 2. - <_> - - <_> - 2 0 6 4 -1. - <_> - 4 0 2 4 3. - <_> - - <_> - 6 2 9 2 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 2 3 6 2 -1. - <_> - 4 3 2 2 3. - <_> - - <_> - 3 6 12 3 -1. - <_> - 3 7 12 1 3. - <_> - - <_> - 7 6 1 3 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 6 2 9 2 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 3 2 9 2 -1. - <_> - 6 2 3 2 3. - <_> - - <_> - 10 0 8 2 -1. - <_> - 10 0 4 2 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 4 0 4 2 2. - <_> - - <_> - 3 9 12 2 -1. - <_> - 3 9 6 2 2. - <_> - - <_> - 2 9 8 2 -1. - <_> - 4 9 4 2 2. - <_> - - <_> - 14 9 2 1 -1. - <_> - 14 9 1 1 2. - 1 - <_> - - <_> - 4 9 1 2 -1. - <_> - 4 9 1 1 2. - 1 - <_> - - <_> - 12 0 6 5 -1. - <_> - 14 0 2 5 3. - <_> - - <_> - 0 0 6 5 -1. - <_> - 2 0 2 5 3. - <_> - - <_> - 9 5 2 4 -1. - <_> - 8 6 2 2 2. - 1 - <_> - - <_> - 6 7 2 3 -1. - <_> - 6 8 2 1 3. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 13 1 3 3 -1. - <_> - 14 2 1 1 9. - <_> - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - <_> - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - <_> - - <_> - 0 0 6 4 -1. - <_> - 3 0 3 4 2. - <_> - - <_> - 9 6 4 2 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 4 7 2 2 -1. - <_> - 4 7 1 1 2. - <_> - 5 8 1 1 2. - <_> - - <_> - 8 6 6 2 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 4 6 6 1 -1. - <_> - 6 6 2 1 3. - <_> - - <_> - 9 0 3 9 -1. - <_> - 6 3 3 3 3. - 1 - <_> - - <_> - 2 5 14 6 -1. - <_> - 2 5 7 3 2. - <_> - 9 8 7 3 2. - <_> - - <_> - 14 3 4 1 -1. - <_> - 15 4 2 1 2. - 1 - <_> - - <_> - 3 4 6 2 -1. - <_> - 3 4 3 2 2. - 1 - <_> - - <_> - 2 10 16 1 -1. - <_> - 6 10 8 1 2. - <_> - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - <_> - - <_> - 10 7 1 3 -1. - <_> - 10 8 1 1 3. - <_> - - <_> - 3 4 5 3 -1. - <_> - 2 5 5 1 3. - 1 - <_> - - <_> - 10 5 1 6 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 17 9 1 2 -1. - <_> - 17 9 1 1 2. - 1 - <_> - - <_> - 1 9 2 1 -1. - <_> - 1 9 1 1 2. - 1 - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 3 2 1 2. - 1 - <_> - - <_> - 11 0 6 5 -1. - <_> - 13 0 2 5 3. - <_> - - <_> - 1 0 6 5 -1. - <_> - 3 0 2 5 3. - <_> - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - <_> - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 0 2 6 5 -1. - <_> - 2 2 2 5 3. - <_> - - <_> - 14 2 3 1 -1. - <_> - 15 3 1 1 3. - 1 - <_> - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - <_> - - <_> - 0 3 18 2 -1. - <_> - 6 3 6 2 3. - <_> - - <_> - 0 5 4 7 -1. - <_> - 2 5 2 7 2. - <_> - - <_> - 13 10 5 2 -1. - <_> - 13 11 5 1 2. - <_> - - <_> - 0 10 5 2 -1. - <_> - 0 11 5 1 2. - <_> - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - <_> - - <_> - 5 0 6 4 -1. - <_> - 7 0 2 4 3. - <_> - - <_> - 11 0 1 4 -1. - <_> - 10 1 1 2 2. - 1 - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 1 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 9 2 2 1 2. - <_> - - <_> - 5 9 6 2 -1. - <_> - 7 9 2 2 3. - <_> - - <_> - 7 4 6 8 -1. - <_> - 9 4 2 8 3. - <_> - - <_> - 3 4 12 4 -1. - <_> - 6 4 6 4 2. - <_> - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - <_> - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - <_> - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - <_> - - <_> - 15 0 3 3 -1. - <_> - 16 1 1 3 3. - 1 - <_> - - <_> - 3 0 3 3 -1. - <_> - 2 1 3 1 3. - 1 - <_> - - <_> - 7 6 4 5 -1. - <_> - 8 6 2 5 2. - <_> - - <_> - 7 4 4 3 -1. - <_> - 6 5 4 1 3. - 1 - <_> - - <_> - 10 2 3 5 -1. - <_> - 11 3 1 5 3. - 1 - <_> - - <_> - 8 2 5 3 -1. - <_> - 7 3 5 1 3. - 1 - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 7 4 4 2 -1. - <_> - 7 5 4 1 2. - <_> - - <_> - 5 6 8 6 -1. - <_> - 5 6 4 3 2. - <_> - 9 9 4 3 2. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 5 5 3 3 -1. - <_> - 6 5 1 3 3. - <_> - - <_> - 11 7 3 1 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 4 6 2 2 2. - <_> - - <_> - 14 7 4 2 -1. - <_> - 15 7 2 2 2. - <_> - - <_> - 0 7 4 2 -1. - <_> - 1 7 2 2 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - <_> - - <_> - 7 7 3 2 -1. - <_> - 8 8 1 2 3. - 1 - <_> - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 9 2 1 -1. - <_> - 8 9 1 1 2. - <_> - - <_> - 15 4 1 3 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 2 4 1 3 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 15 3 3 6 -1. - <_> - 15 5 3 2 3. - <_> - - <_> - 0 3 3 6 -1. - <_> - 0 5 3 2 3. - <_> - - <_> - 15 2 3 2 -1. - <_> - 16 3 1 2 3. - 1 - <_> - - <_> - 4 6 10 6 -1. - <_> - 4 9 10 3 2. - <_> - - <_> - 9 9 2 2 -1. - <_> - 10 9 1 1 2. - <_> - 9 10 1 1 2. - <_> - - <_> - 3 2 2 3 -1. - <_> - 2 3 2 1 3. - 1 - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 0 3 2 -1. - <_> - 5 1 3 1 2. - <_> - - <_> - 9 2 8 2 -1. - <_> - 13 2 4 1 2. - <_> - 9 3 4 1 2. - <_> - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 3 0 6 1 -1. - <_> - 5 0 2 1 3. - <_> - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - <_> - - <_> - 0 1 15 1 -1. - <_> - 5 1 5 1 3. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 7 3 1 2 -1. - <_> - 7 3 1 1 2. - 1 - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - <_> - - <_> - 2 2 8 3 -1. - <_> - 4 2 4 3 2. - <_> - - <_> - 13 2 2 1 -1. - <_> - 13 2 1 1 2. - <_> - - <_> - 3 2 2 1 -1. - <_> - 4 2 1 1 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 2 1 -1. - <_> - 8 11 1 1 2. - <_> - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - <_> - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - <_> - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 11 6 6 4 -1. - <_> - 14 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 5 7 3 2 -1. - <_> - 6 8 1 2 3. - 1 - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 16 9 2 3 -1. - <_> - 16 9 1 3 2. - <_> - - <_> - 0 9 2 3 -1. - <_> - 1 9 1 3 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 5 4 3 6 -1. - <_> - 5 7 3 3 2. - <_> - - <_> - 14 4 2 3 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 4 4 3 2 -1. - <_> - 5 5 1 2 3. - 1 - <_> - - <_> - 3 8 15 4 -1. - <_> - 8 8 5 4 3. - <_> - - <_> - 0 3 15 9 -1. - <_> - 5 3 5 9 3. - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - <_> - - <_> - 15 7 1 4 -1. - <_> - 14 8 1 2 2. - 1 - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 10 6 8 4 -1. - <_> - 14 6 4 2 2. - <_> - 10 8 4 2 2. - <_> - - <_> - 0 6 8 4 -1. - <_> - 0 6 4 2 2. - <_> - 4 8 4 2 2. - <_> - - <_> - 9 9 8 2 -1. - <_> - 11 9 4 2 2. - <_> - - <_> - 1 9 8 2 -1. - <_> - 3 9 4 2 2. - <_> - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - <_> - - <_> - 3 7 3 2 -1. - <_> - 4 8 1 2 3. - 1 - <_> - - <_> - 13 0 4 2 -1. - <_> - 14 0 2 2 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 2 0 2 2 2. - <_> - - <_> - 10 0 8 2 -1. - <_> - 14 0 4 1 2. - <_> - 10 1 4 1 2. - <_> - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - <_> - - <_> - 11 0 6 2 -1. - <_> - 14 0 3 1 2. - <_> - 11 1 3 1 2. - <_> - - <_> - 0 0 8 2 -1. - <_> - 0 0 4 1 2. - <_> - 4 1 4 1 2. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 0 10 12 -1. - <_> - 5 0 5 12 2. - <_> - - <_> - 15 9 1 2 -1. - <_> - 15 9 1 1 2. - 1 - <_> - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - <_> - - <_> - 15 8 3 3 -1. - <_> - 16 8 1 3 3. - <_> - - <_> - 0 8 3 4 -1. - <_> - 1 8 1 4 3. - <_> - - <_> - 6 1 12 6 -1. - <_> - 10 1 4 6 3. - <_> - - <_> - 3 2 12 2 -1. - <_> - 3 2 6 1 2. - <_> - 9 3 6 1 2. - <_> - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - <_> - - <_> - 0 1 7 6 -1. - <_> - 0 4 7 3 2. - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 5 1 2 9. - <_> - - <_> - 2 3 3 6 -1. - <_> - 3 5 1 2 9. - <_> - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - <_> - - <_> - 2 2 3 2 -1. - <_> - 3 3 1 2 3. - 1 - <_> - - <_> - 7 1 10 4 -1. - <_> - 7 1 5 4 2. - <_> - - <_> - 1 1 10 4 -1. - <_> - 6 1 5 4 2. - <_> - - <_> - 0 0 18 11 -1. - <_> - 0 0 9 11 2. - <_> - - <_> - 9 3 4 3 -1. - <_> - 9 3 2 3 2. - 1 - <_> - - <_> - 13 1 3 2 -1. - <_> - 14 2 1 2 3. - 1 - <_> - - <_> - 5 1 2 3 -1. - <_> - 4 2 2 1 3. - 1 - <_> - - <_> - 11 0 3 4 -1. - <_> - 11 1 3 2 2. - <_> - - <_> - 5 4 2 4 -1. - <_> - 5 4 1 2 2. - <_> - 6 6 1 2 2. - <_> - - <_> - 10 2 4 3 -1. - <_> - 10 3 4 1 3. - <_> - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - <_> - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - <_> - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - <_> - - <_> - 10 3 4 1 -1. - <_> - 11 3 2 1 2. - <_> - - <_> - 4 3 4 1 -1. - <_> - 5 3 2 1 2. - <_> - - <_> - 12 4 1 2 -1. - <_> - 12 4 1 1 2. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 1 2 2 2. - <_> - - <_> - 7 0 6 1 -1. - <_> - 9 0 2 1 3. - <_> - - <_> - 5 0 6 1 -1. - <_> - 7 0 2 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 4 2. - 1 - <_> - - <_> - 12 5 5 4 -1. - <_> - 12 6 5 2 2. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 7 3 1 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 18 1 -1. - <_> - 6 0 6 1 3. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 2 2 -1. - <_> - 17 0 1 1 2. - <_> - 16 1 1 1 2. - <_> - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - <_> - - <_> - 6 1 6 9 -1. - <_> - 8 4 2 3 9. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 13 3 1 4 -1. - <_> - 13 3 1 2 2. - 1 - <_> - - <_> - 5 3 4 1 -1. - <_> - 5 3 2 1 2. - 1 - <_> - - <_> - 9 1 2 2 -1. - <_> - 10 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 4 6 1 3 -1. - <_> - 4 7 1 1 3. - <_> - - <_> - 13 0 4 10 -1. - <_> - 14 0 2 10 2. - <_> - - <_> - 1 0 4 10 -1. - <_> - 2 0 2 10 2. - <_> - - <_> - 3 6 12 2 -1. - <_> - 6 6 6 2 2. - <_> - - <_> - 2 7 2 2 -1. - <_> - 2 7 1 1 2. - <_> - 3 8 1 1 2. - <_> - - <_> - 15 5 3 4 -1. - <_> - 15 6 3 2 2. - <_> - - <_> - 0 5 3 4 -1. - <_> - 0 6 3 2 2. - <_> - - <_> - 12 4 6 4 -1. - <_> - 12 5 6 2 2. - <_> - - <_> - 0 4 6 4 -1. - <_> - 0 5 6 2 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 2 2 1 3. - <_> - - <_> - 6 1 2 3 -1. - <_> - 6 2 2 1 3. - <_> - - <_> - 7 6 6 3 -1. - <_> - 9 6 2 3 3. - <_> - - <_> - 5 6 6 3 -1. - <_> - 7 6 2 3 3. - <_> - - <_> - 9 8 2 3 -1. - <_> - 9 8 1 3 2. - <_> - - <_> - 2 3 12 9 -1. - <_> - 6 3 4 9 3. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 7 8 2 3 -1. - <_> - 8 8 1 3 2. - <_> - - <_> - 15 7 3 5 -1. - <_> - 16 7 1 5 3. - <_> - - <_> - 0 7 3 5 -1. - <_> - 1 7 1 5 3. - <_> - - <_> - 10 0 4 8 -1. - <_> - 11 1 2 8 2. - 1 - <_> - - <_> - 8 0 8 4 -1. - <_> - 7 1 8 2 2. - 1 - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 6 8 6 1 -1. - <_> - 8 8 2 1 3. - <_> - - <_> - 9 7 6 2 -1. - <_> - 11 7 2 2 3. - <_> - - <_> - 7 4 2 2 -1. - <_> - 7 4 1 1 2. - <_> - 8 5 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 8 0 2 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 1 10 1 -1. - <_> - 7 1 5 1 2. - 1 - <_> - - <_> - 12 0 2 8 -1. - <_> - 12 0 1 8 2. - 1 - <_> - - <_> - 6 4 6 8 -1. - <_> - 6 8 6 4 2. - <_> - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - <_> - - <_> - 4 4 5 8 -1. - <_> - 4 6 5 4 2. - <_> - - <_> - 13 6 4 6 -1. - <_> - 13 9 4 3 2. - <_> - - <_> - 1 6 4 6 -1. - <_> - 1 9 4 3 2. - <_> - - <_> - 15 8 2 2 -1. - <_> - 15 8 2 1 2. - 1 - <_> - - <_> - 3 8 2 2 -1. - <_> - 3 8 1 2 2. - 1 - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 0 2 4 6 -1. - <_> - 0 4 4 2 3. - <_> - - <_> - 13 7 2 2 -1. - <_> - 14 7 1 1 2. - <_> - 13 8 1 1 2. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 10 10 3 1 -1. - <_> - 11 10 1 1 3. - <_> - - <_> - 5 10 3 1 -1. - <_> - 6 10 1 1 3. - <_> - - <_> - 12 7 2 3 -1. - <_> - 11 8 2 1 3. - 1 - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 8 1 2 3. - 1 - <_> - - <_> - 6 8 7 3 -1. - <_> - 6 9 7 1 3. - <_> - - <_> - 7 8 1 3 -1. - <_> - 7 9 1 1 3. - <_> - - <_> - 5 9 8 1 -1. - <_> - 5 9 4 1 2. - <_> - - <_> - 5 8 8 2 -1. - <_> - 9 8 4 2 2. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 3 7 6 2 -1. - <_> - 5 7 2 2 3. - <_> - - <_> - 16 8 2 4 -1. - <_> - 16 10 2 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 16 8 2 1 -1. - <_> - 16 8 1 1 2. - 1 - <_> - - <_> - 2 8 1 2 -1. - <_> - 2 8 1 1 2. - 1 - <_> - - <_> - 8 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 5 8 2 1 -1. - <_> - 6 8 1 1 2. - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 2 1 2. - 1 - <_> - - <_> - 9 3 2 2 -1. - <_> - 9 3 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - <_> - - <_> - 13 5 2 6 -1. - <_> - 13 5 1 6 2. - <_> - - <_> - 3 5 2 6 -1. - <_> - 4 5 1 6 2. - <_> - - <_> - 9 8 2 2 -1. - <_> - 10 8 1 1 2. - <_> - 9 9 1 1 2. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 10 0 2 6 2. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 3 3. - 1 - <_> - - <_> - 15 6 3 3 -1. - <_> - 14 7 3 1 3. - 1 - <_> - - <_> - 4 7 3 2 -1. - <_> - 5 8 1 2 3. - 1 - <_> - - <_> - 12 5 3 1 -1. - <_> - 13 5 1 1 3. - <_> - - <_> - 6 2 2 3 -1. - <_> - 5 3 2 1 3. - 1 - <_> - - <_> - 12 5 3 1 -1. - <_> - 13 5 1 1 3. - <_> - - <_> - 3 5 3 1 -1. - <_> - 4 5 1 1 3. - <_> - - <_> - 12 3 2 7 -1. - <_> - 12 3 1 7 2. - 1 - <_> - - <_> - 3 0 9 3 -1. - <_> - 2 1 9 1 3. - 1 - <_> - - <_> - 9 0 4 7 -1. - <_> - 10 0 2 7 2. - <_> - - <_> - 5 0 4 7 -1. - <_> - 6 0 2 7 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 8 7 1 3 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 9 2 4 3 -1. - <_> - 10 2 2 3 2. - <_> - - <_> - 5 2 4 3 -1. - <_> - 6 2 2 3 2. - <_> - - <_> - 9 2 1 3 -1. - <_> - 9 3 1 1 3. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 3 0 15 3 -1. - <_> - 8 1 5 1 9. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - <_> - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - <_> - - <_> - 10 7 1 3 -1. - <_> - 10 8 1 1 3. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 3 7 2 2 -1. - <_> - 3 7 1 1 2. - <_> - 4 8 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 4 7 2 3 -1. - <_> - 3 8 2 1 3. - 1 - <_> - - <_> - 14 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 7 5 3 1 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - <_> - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - <_> - - <_> - 10 1 6 4 -1. - <_> - 12 1 2 4 3. - <_> - - <_> - 2 1 6 4 -1. - <_> - 4 1 2 4 3. - <_> - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - <_> - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 0 8 7 4 -1. - <_> - 0 9 7 2 2. - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 2 9 1 2 -1. - <_> - 2 9 1 1 2. - 1 - <_> - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 7 2 2 2. - <_> - - <_> - 4 2 11 4 -1. - <_> - 4 3 11 2 2. - <_> - - <_> - 0 1 10 2 -1. - <_> - 0 1 5 1 2. - <_> - 5 2 5 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 6 9 2 2 -1. - <_> - 6 9 1 1 2. - <_> - 7 10 1 1 2. - <_> - - <_> - 8 1 3 1 -1. - <_> - 9 1 1 1 3. - <_> - - <_> - 0 2 1 3 -1. - <_> - 0 3 1 1 3. - <_> - - <_> - 14 4 2 6 -1. - <_> - 14 4 1 6 2. - <_> - - <_> - 2 4 2 6 -1. - <_> - 3 4 1 6 2. - <_> - - <_> - 11 3 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 7 3 1 4 -1. - <_> - 7 3 1 2 2. - 1 - <_> - - <_> - 9 1 4 2 -1. - <_> - 9 2 4 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 15 7 2 2 -1. - <_> - 16 7 1 1 2. - <_> - 15 8 1 1 2. - <_> - - <_> - 1 7 2 2 -1. - <_> - 1 7 1 1 2. - <_> - 2 8 1 1 2. - <_> - - <_> - 14 9 2 2 -1. - <_> - 15 9 1 1 2. - <_> - 14 10 1 1 2. - <_> - - <_> - 2 9 2 2 -1. - <_> - 2 9 1 1 2. - <_> - 3 10 1 1 2. - <_> - - <_> - 14 9 3 3 -1. - <_> - 15 9 1 3 3. - <_> - - <_> - 0 4 3 2 -1. - <_> - 0 5 3 1 2. - <_> - - <_> - 16 3 1 3 -1. - <_> - 16 4 1 1 3. - <_> - - <_> - 1 3 1 3 -1. - <_> - 1 4 1 1 3. - <_> - - <_> - 17 1 1 3 -1. - <_> - 17 2 1 1 3. - <_> - - <_> - 0 1 1 3 -1. - <_> - 0 2 1 1 3. - <_> - - <_> - 8 2 3 5 -1. - <_> - 9 2 1 5 3. - <_> - - <_> - 9 0 6 4 -1. - <_> - 8 1 6 2 2. - 1 - <_> - - <_> - 14 9 3 3 -1. - <_> - 15 9 1 3 3. - <_> - - <_> - 1 9 3 3 -1. - <_> - 2 9 1 3 3. - <_> - - <_> - 1 11 16 1 -1. - <_> - 1 11 8 1 2. - <_> - - <_> - 0 10 12 2 -1. - <_> - 3 10 6 2 2. - <_> - - <_> - 2 10 16 2 -1. - <_> - 6 10 8 2 2. - <_> - - <_> - 1 9 3 1 -1. - <_> - 2 9 1 1 3. - <_> - - <_> - 12 8 4 2 -1. - <_> - 13 8 2 2 2. - <_> - - <_> - 2 8 4 2 -1. - <_> - 3 8 2 2 2. - <_> - - <_> - 4 9 14 2 -1. - <_> - 11 9 7 1 2. - <_> - 4 10 7 1 2. - <_> - - <_> - 0 9 14 2 -1. - <_> - 0 9 7 1 2. - <_> - 7 10 7 1 2. - <_> - - <_> - 11 8 7 4 -1. - <_> - 11 10 7 2 2. - <_> - - <_> - 0 8 2 4 -1. - <_> - 0 10 2 2 2. - <_> - - <_> - 5 5 8 4 -1. - <_> - 5 7 8 2 2. - <_> - - <_> - 5 8 1 3 -1. - <_> - 4 9 1 1 3. - 1 - <_> - - <_> - 14 8 1 3 -1. - <_> - 14 9 1 1 3. - <_> - - <_> - 6 8 6 3 -1. - <_> - 6 9 6 1 3. - <_> - - <_> - 10 8 8 3 -1. - <_> - 10 9 8 1 3. - <_> - - <_> - 0 8 8 3 -1. - <_> - 0 9 8 1 3. - <_> - - <_> - 12 9 6 3 -1. - <_> - 12 10 6 1 3. - <_> - - <_> - 0 9 6 3 -1. - <_> - 0 10 6 1 3. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 8 9 3 3 -1. - <_> - 9 10 1 1 9. - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 9 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 7 10 3 1 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 9 3 9 3 -1. - <_> - 12 4 3 1 9. - <_> - - <_> - 0 4 6 3 -1. - <_> - 3 4 3 3 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 0 7 12 2. - <_> - - <_> - 0 0 14 12 -1. - <_> - 7 0 7 12 2. - <_> - - <_> - 2 0 16 9 -1. - <_> - 6 0 8 9 2. - <_> - - <_> - 0 0 9 3 -1. - <_> - 3 0 3 3 3. - <_> - - <_> - 8 0 2 4 -1. - <_> - 8 1 2 2 2. - <_> - - <_> - 4 0 10 4 -1. - <_> - 4 1 10 2 2. - <_> - - <_> - 9 3 9 3 -1. - <_> - 12 4 3 1 9. - <_> - - <_> - 0 3 9 3 -1. - <_> - 3 4 3 1 9. - <_> - - <_> - 9 11 9 1 -1. - <_> - 12 11 3 1 3. - <_> - - <_> - 0 11 9 1 -1. - <_> - 3 11 3 1 3. - <_> - - <_> - 17 0 1 3 -1. - <_> - 17 1 1 1 3. - <_> - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - <_> - - <_> - 6 0 6 2 -1. - <_> - 8 0 2 2 3. - <_> - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 2 2 -1. - <_> - 1 0 1 1 2. - <_> - 2 1 1 1 2. - <_> - - <_> - 2 0 14 2 -1. - <_> - 9 0 7 1 2. - <_> - 2 1 7 1 2. - <_> - - <_> - 6 0 2 3 -1. - <_> - 5 1 2 1 3. - 1 - <_> - - <_> - 14 0 2 3 -1. - <_> - 14 0 1 3 2. - 1 - <_> - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - <_> - - <_> - 15 0 3 1 -1. - <_> - 16 0 1 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - <_> - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 2 2 6 9 -1. - <_> - 4 5 2 3 9. - <_> - - <_> - 12 0 4 5 -1. - <_> - 12 0 2 5 2. - 1 - <_> - - <_> - 1 0 4 7 -1. - <_> - 2 0 2 7 2. - <_> - - <_> - 12 0 4 5 -1. - <_> - 12 0 2 5 2. - 1 - <_> - - <_> - 6 0 5 4 -1. - <_> - 6 0 5 2 2. - 1 - <_> - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - <_> - - <_> - 3 1 12 1 -1. - <_> - 9 1 6 1 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 0 2 8 2. - 1 - <_> - - <_> - 9 0 8 4 -1. - <_> - 9 0 8 2 2. - 1 - <_> - - <_> - 14 3 4 3 -1. - <_> - 14 4 4 1 3. - <_> - - <_> - 0 0 3 1 -1. - <_> - 1 0 1 1 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 0 2 6 3. - <_> - - <_> - 4 0 8 3 -1. - <_> - 8 0 4 3 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - <_> - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - <_> - - <_> - 8 2 6 3 -1. - <_> - 8 3 6 1 3. - <_> - - <_> - 2 0 3 1 -1. - <_> - 3 1 1 1 3. - 1 - <_> - - <_> - 11 11 6 1 -1. - <_> - 13 11 2 1 3. - <_> - - <_> - 1 11 6 1 -1. - <_> - 3 11 2 1 3. - <_> - - <_> - 17 3 1 4 -1. - <_> - 17 5 1 2 2. - <_> - - <_> - 0 3 1 4 -1. - <_> - 0 5 1 2 2. - diff --git a/data/haarcascades/haarcascade_mcs_righteye_alt.xml b/data/haarcascades/haarcascade_mcs_righteye_alt.xml deleted file mode 100644 index 43245afc30..0000000000 --- a/data/haarcascades/haarcascade_mcs_righteye_alt.xml +++ /dev/null @@ -1,22351 +0,0 @@ - - - - - - 18 12 - - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -5.6810832023620605e-001 - 8.3960670232772827e-001 - -7.6481401920318604e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 2.0721870660781860e-001 - -7.1712601184844971e-001 - 5.2041262388229370e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.3353710023220628e-005 - 4.7114491462707520e-001 - -6.5355622768402100e-001 - <_> - - <_> - - - - <_> - 12 2 5 8 -1. - <_> - 12 6 5 4 2. - 0 - 1.3509589433670044e-001 - 2.9115460813045502e-002 - -3.3245581388473511e-001 - <_> - - <_> - - - - <_> - 8 5 2 2 -1. - <_> - 8 5 2 1 2. - 1 - -2.0615929737687111e-002 - 6.8218058347702026e-001 - -2.8196701407432556e-001 - <_> - - <_> - - - - <_> - 14 0 2 5 -1. - <_> - 14 0 1 5 2. - 0 - -4.6026369091123343e-005 - 2.0233640074729919e-001 - -1.3312029838562012e-001 - <_> - - <_> - - - - <_> - 2 0 2 5 -1. - <_> - 3 0 1 5 2. - 0 - -4.4764939957531169e-005 - 2.8388169407844543e-001 - -4.7019150853157043e-001 - <_> - - <_> - - - - <_> - 3 0 12 6 -1. - <_> - 3 2 12 2 3. - 0 - 1.1478319764137268e-001 - -1.8182520568370819e-001 - 6.4350587129592896e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 7.4280993430875242e-005 - -4.9766281247138977e-001 - 2.3925340175628662e-001 - -1.8184880018234253e+000 - -1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.0355957746505737e-001 - 8.0994802713394165e-001 - -6.6400188207626343e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 2.8693929314613342e-001 - -6.3067370653152466e-001 - 5.7269209623336792e-001 - <_> - - <_> - - - - <_> - 0 0 4 1 -1. - <_> - 2 0 2 1 2. - 0 - -4.2597850551828742e-005 - 3.1228521466255188e-001 - -6.9640642404556274e-001 - <_> - - <_> - - - - <_> - 4 2 10 6 -1. - <_> - 4 4 10 2 3. - 0 - -1.1617150157690048e-001 - 6.4757740497589111e-001 - -2.8760230541229248e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 1.3706079684197903e-002 - -6.4052939414978027e-001 - 1.9451349973678589e-001 - <_> - - <_> - - - - <_> - 8 6 4 2 -1. - <_> - 8 6 2 2 2. - 0 - -1.3996980153024197e-002 - 2.3904429376125336e-001 - -1.2181480228900909e-001 - <_> - - <_> - - - - <_> - 5 6 6 2 -1. - <_> - 8 6 3 2 2. - 0 - -2.3848619312047958e-002 - 4.1974571347236633e-001 - -2.9327690601348877e-001 - <_> - - <_> - - - - <_> - 15 0 1 2 -1. - <_> - 15 1 1 1 2. - 0 - -5.0047809054376557e-005 - 9.3466326594352722e-002 - -8.5978589951992035e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 1 1 1 2. - 0 - -4.8869820602703840e-005 - 2.9515549540519714e-001 - -3.6450791358947754e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - -8.1548085436224937e-003 - -7.9693388938903809e-001 - 1.1169960349798203e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 6.5567810088396072e-003 - 1.0915560275316238e-001 - -7.6665240526199341e-001 - -1.8897850513458252e+000 - 0 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 4 4 4 9. - 0 - -7.9526257514953613e-001 - 7.6672828197479248e-001 - -5.7977437973022461e-001 - <_> - - <_> - - - - <_> - 12 0 6 5 -1. - <_> - 12 0 3 5 2. - 0 - -1.7080819234251976e-002 - 2.3749460279941559e-001 - -1.0151080042123795e-001 - <_> - - <_> - - - - <_> - 9 3 4 4 -1. - <_> - 9 3 4 2 2. - 1 - -8.8396757841110229e-002 - 6.1395412683486938e-001 - -4.0397110581398010e-001 - <_> - - <_> - - - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - 0 - 3.0759669840335846e-002 - -1.5979920327663422e-001 - 2.1410289406776428e-001 - <_> - - <_> - - - - <_> - 0 0 6 6 -1. - <_> - 3 0 3 6 2. - 0 - -2.8572969138622284e-002 - 4.6015259623527527e-001 - -4.9520689249038696e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.1635340005159378e-001 - -6.0537588596343994e-001 - 2.3268540203571320e-001 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - 1.0375100100645795e-004 - -5.2447670698165894e-001 - 2.0643760263919830e-001 - <_> - - <_> - - - - <_> - 10 10 8 2 -1. - <_> - 10 11 8 1 2. - 0 - -5.9346808120608330e-003 - -5.8789312839508057e-001 - 8.3713911473751068e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 6.6315559670329094e-003 - 1.0943070054054260e-001 - -7.9030650854110718e-001 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - 6.4884088933467865e-003 - 2.3464180529117584e-002 - -4.6662831306457520e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.5442529469728470e-002 - 4.1558659076690674e-001 - -2.0745509862899780e-001 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - -1.4391910284757614e-002 - -5.1255929470062256e-001 - 4.2892999947071075e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - 3.7105670198798180e-003 - 1.3508659601211548e-001 - -6.7032521963119507e-001 - <_> - - <_> - - - - <_> - 7 1 4 3 -1. - <_> - 8 1 2 3 2. - 0 - -1.0664899833500385e-002 - -6.4452391862869263e-001 - 8.6801767349243164e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 1.3130259700119495e-002 - 7.2303600609302521e-002 - -7.2920471429824829e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - -1.1123689822852612e-002 - -6.3051140308380127e-001 - 8.8690377771854401e-002 - -1.7659480571746826e+000 - 1 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 1 12 9 -1. - <_> - 7 4 4 3 9. - 0 - -4.8238849639892578e-001 - 6.7658770084381104e-001 - -6.3496381044387817e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 3.6105468869209290e-001 - -4.7645848989486694e-001 - 4.3273618817329407e-001 - <_> - - <_> - - - - <_> - 3 6 6 2 -1. - <_> - 5 6 2 2 3. - 0 - 3.7622179836034775e-002 - -2.5917899608612061e-001 - 6.6635400056838989e-001 - <_> - - <_> - - - - <_> - 6 0 12 4 -1. - <_> - 10 0 4 4 3. - 0 - 3.3445660024881363e-002 - -5.1630370318889618e-002 - 1.9169320166110992e-001 - <_> - - <_> - - - - <_> - 0 0 4 6 -1. - <_> - 2 0 2 6 2. - 0 - -1.5409329906105995e-002 - 2.8438740968704224e-001 - -4.7467359900474548e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - -9.9044256785418838e-005 - 4.0987960994243622e-002 - -8.7138727307319641e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.1052149784518406e-004 - 2.7015548944473267e-001 - -3.5196688771247864e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 2.2914599627256393e-002 - -5.8854997158050537e-001 - 1.4034299552440643e-001 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -6.8064533174037933e-002 - 3.8482880592346191e-001 - -1.9926619529724121e-001 - <_> - - <_> - - - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - 0 - -1.3427540659904480e-001 - 5.3540730476379395e-001 - -1.2980240583419800e-001 - <_> - - <_> - - - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - 0 - -1.4653420075774193e-002 - 2.5729840993881226e-001 - -2.6571980118751526e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - -1.2547649384941906e-004 - 7.7122293412685394e-002 - -7.7603712677955627e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -8.8957793195731938e-005 - 1.8061220645904541e-001 - -3.2629799842834473e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.5391400083899498e-002 - -4.6647891402244568e-001 - 2.8946319594979286e-002 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.4515600167214870e-002 - -5.2544248104095459e-001 - 9.7634941339492798e-002 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 6.8836379796266556e-003 - 2.6379430666565895e-002 - -5.2875238656997681e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 2.9651119839400053e-003 - 9.0258508920669556e-002 - -5.3580790758132935e-001 - <_> - - <_> - - - - <_> - 9 5 4 4 -1. - <_> - 10 5 2 4 2. - 0 - -1.8835909664630890e-002 - 3.1948068737983704e-001 - -6.3316017389297485e-002 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - -7.3288138955831528e-003 - -4.4683480262756348e-001 - 1.0952600091695786e-001 - <_> - - <_> - - - - <_> - 2 0 14 8 -1. - <_> - 2 2 14 4 2. - 0 - 1.0221300274133682e-001 - -1.0253670066595078e-001 - 4.8284870386123657e-001 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -6.8491459824144840e-003 - 2.4407060444355011e-001 - -1.7565080523490906e-001 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -4.0765879675745964e-003 - -4.6912059187889099e-001 - 7.7857926487922668e-002 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - 9.3826521188020706e-003 - 6.5722987055778503e-002 - -5.7086908817291260e-001 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - 1.1709299869835377e-002 - 2.9651859775185585e-002 - -4.4558471441268921e-001 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 3.7532749120146036e-003 - 1.2010630220174789e-001 - -3.4494531154632568e-001 - <_> - - <_> - - - - <_> - 10 5 6 3 -1. - <_> - 12 5 2 3 3. - 0 - 4.9949299544095993e-002 - -3.8329821079969406e-002 - 2.5580260157585144e-001 - <_> - - <_> - - - - <_> - 2 5 6 3 -1. - <_> - 4 5 2 3 3. - 0 - -1.9659079611301422e-002 - 3.4948769211769104e-001 - -1.0688430070877075e-001 - <_> - - <_> - - - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - -9.4384029507637024e-003 - -4.4859799742698669e-001 - 6.0474641621112823e-002 - <_> - - <_> - - - - <_> - 5 0 6 4 -1. - <_> - 5 1 6 2 2. - 0 - -3.2340411096811295e-002 - 4.6869951486587524e-001 - -8.7362661957740784e-002 - <_> - - <_> - - - - <_> - 10 10 1 2 -1. - <_> - 10 11 1 1 2. - 0 - 1.6322209557984024e-004 - -1.5675650537014008e-001 - 1.1256299912929535e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 1.0735830292105675e-002 - 5.0046779215335846e-002 - -6.9020110368728638e-001 - <_> - - <_> - - - - <_> - 2 0 14 4 -1. - <_> - 2 1 14 2 2. - 0 - 2.6855830103158951e-002 - -1.3781370222568512e-001 - 2.5898760557174683e-001 - -1.9269560575485229e+000 - 2 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 4 2 -1. - <_> - 7 4 4 1 2. - 1 - -4.0210861712694168e-002 - 7.2760909795761108e-001 - -4.8194059729576111e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -9.4253152608871460e-001 - 6.5825307369232178e-001 - -3.3508211374282837e-001 - <_> - - <_> - - - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -6.7276130430400372e-003 - 4.6350660920143127e-001 - -2.6712501049041748e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 4 18 4 3. - 0 - -3.4221410751342773e-001 - 2.6187661290168762e-001 - -4.4321650266647339e-001 - <_> - - <_> - - - - <_> - 0 0 12 3 -1. - <_> - 3 0 6 3 2. - 0 - -2.6442220434546471e-002 - 2.5853350758552551e-001 - -4.2997428774833679e-001 - <_> - - <_> - - - - <_> - 10 9 1 2 -1. - <_> - 10 9 1 1 2. - 1 - -1.1211539822397754e-004 - 1.0946519672870636e-001 - -2.2906930744647980e-001 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 9 9 1 3 2. - 0 - -5.8475080877542496e-003 - -6.3840919733047485e-001 - 1.2859229743480682e-001 - <_> - - <_> - - - - <_> - 16 0 2 7 -1. - <_> - 16 0 1 7 2. - 0 - -3.1806540209800005e-003 - 1.5797249972820282e-001 - -2.2806149721145630e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 1 0 1 2 2. - 0 - -7.6963173341937363e-005 - 1.7013229429721832e-001 - -4.0136960148811340e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.0161420330405235e-002 - -1.2210579961538315e-001 - 4.2467159032821655e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -4.1128029115498066e-003 - 3.7742561101913452e-001 - -1.6708080470561981e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - 9.5285046845674515e-003 - 5.7505119591951370e-002 - -4.5794519782066345e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 3.5861488431692123e-002 - -1.1722719669342041e-001 - 5.0423789024353027e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.1980050243437290e-002 - 4.8618610948324203e-002 - -4.2829948663711548e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -4.5652940869331360e-002 - 4.4611850380897522e-001 - -1.2824800610542297e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - -1.2624289840459824e-002 - -4.7304341197013855e-001 - 3.3563230186700821e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - -6.4819469116628170e-003 - -4.9199560284614563e-001 - 1.0396429896354675e-001 - <_> - - <_> - - - - <_> - 16 2 2 8 -1. - <_> - 16 2 1 8 2. - 0 - -3.8513869512826204e-003 - 1.3302020728588104e-001 - -1.5856249630451202e-001 - <_> - - <_> - - - - <_> - 0 3 2 5 -1. - <_> - 1 3 1 5 2. - 0 - -5.6580482050776482e-003 - 2.5680649280548096e-001 - -2.1377700567245483e-001 - <_> - - <_> - - - - <_> - 14 8 2 2 -1. - <_> - 14 8 2 1 2. - 1 - -2.7151580899953842e-002 - -4.8710969090461731e-001 - 3.2073508948087692e-002 - <_> - - <_> - - - - <_> - 4 8 2 2 -1. - <_> - 4 8 1 2 2. - 1 - 4.4631878845393658e-003 - 1.0160399973392487e-001 - -5.0148272514343262e-001 - <_> - - <_> - - - - <_> - 3 0 12 12 -1. - <_> - 7 0 4 12 3. - 0 - -9.2112571001052856e-002 - 2.0617170631885529e-001 - -2.4160179495811462e-001 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -1.3351120054721832e-002 - -7.3643708229064941e-001 - 6.3407666981220245e-002 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - 1.4642560482025146e-001 - -1.0779049992561340e-001 - 4.4443801045417786e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.0188819840550423e-002 - -5.2276557683944702e-001 - 8.4325402975082397e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 1.6951869474723935e-004 - -4.0729030966758728e-001 - 1.0294459760189056e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - 4.2296588420867920e-002 - -8.3421789109706879e-002 - 4.9257528781890869e-001 - <_> - - <_> - - - - <_> - 8 0 2 3 -1. - <_> - 8 0 1 3 2. - 0 - -8.8663380593061447e-003 - -5.9615707397460938e-001 - 7.2008118033409119e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -2.6932360604405403e-002 - 3.9307719469070435e-001 - -9.4045691192150116e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -3.2513670623302460e-002 - 4.0155789256095886e-001 - -8.1126846373081207e-002 - <_> - - <_> - - - - <_> - 7 0 3 3 -1. - <_> - 8 0 1 3 3. - 0 - 5.6395838037133217e-003 - 8.2285016775131226e-002 - -4.2262369394302368e-001 - <_> - - <_> - - - - <_> - 9 4 4 3 -1. - <_> - 8 5 4 1 3. - 1 - 5.0715889781713486e-002 - -3.0324889346957207e-002 - 5.8319318294525146e-001 - <_> - - <_> - - - - <_> - 9 4 3 4 -1. - <_> - 10 5 1 4 3. - 1 - -1.4977410435676575e-002 - 2.2337380051612854e-001 - -1.5484930574893951e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - 0 - -3.6284331232309341e-002 - -7.2883737087249756e-001 - 4.9019519239664078e-002 - -1.8730369806289673e+000 - 3 - -1 - <_> - - - <_> - - <_> - - - - <_> - 3 2 12 6 -1. - <_> - 3 4 12 2 3. - 0 - -1.4310139417648315e-001 - 5.9999501705169678e-001 - -4.6854639053344727e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.5538708567619324e-002 - 6.0437542200088501e-001 - -3.2276171445846558e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 2.0528450608253479e-001 - -5.2343052625656128e-001 - 3.6189851164817810e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - 1.1236000136705115e-004 - -7.1042299270629883e-002 - 5.5464118719100952e-002 - <_> - - <_> - - - - <_> - 0 0 15 4 -1. - <_> - 5 0 5 4 3. - 0 - -6.6982686519622803e-002 - 2.1147069334983826e-001 - -3.7349238991737366e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - 4.2605780065059662e-002 - 1.5919719636440277e-001 - -4.6124869585037231e-001 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - 0 - -1.1038989759981632e-004 - 1.4112940430641174e-001 - -4.5499908924102783e-001 - <_> - - <_> - - - - <_> - 6 3 6 6 -1. - <_> - 8 5 2 2 9. - 0 - -1.1507949978113174e-001 - 2.5770258903503418e-001 - -2.6506200432777405e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 0 11 6 1 2. - 0 - -4.3419501744210720e-003 - -5.9668141603469849e-001 - 1.0230260342359543e-001 - <_> - - <_> - - - - <_> - 8 10 4 2 -1. - <_> - 9 10 2 2 2. - 0 - -7.3655629530549049e-003 - -7.5729858875274658e-001 - 6.3309803605079651e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 1.5698159113526344e-002 - 5.5984470993280411e-002 - -7.6305878162384033e-001 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - -1.4888670295476913e-002 - 1.4457429945468903e-001 - -5.9155210852622986e-002 - <_> - - <_> - - - - <_> - 1 6 6 2 -1. - <_> - 3 6 2 2 3. - 0 - -1.3309270143508911e-002 - 2.8473040461540222e-001 - -1.7599380016326904e-001 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - 1.2894039973616600e-002 - 5.7657320052385330e-002 - -5.1801967620849609e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -6.8263791035860777e-005 - 1.6647399961948395e-001 - -2.7714401483535767e-001 - <_> - - <_> - - - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - 0 - -1.4141130447387695e-001 - 5.0337702035903931e-001 - -9.7330093383789063e-002 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -7.0793926715850830e-002 - 2.2329810261726379e-001 - -1.8872700631618500e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 6.0439859516918659e-003 - 7.4497416615486145e-002 - -5.1863551139831543e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -8.5664521902799606e-003 - -5.3494322299957275e-001 - 6.5551057457923889e-002 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 8 3 1 2. - 0 - 1.2475060066208243e-004 - -2.2479990124702454e-001 - 8.8108353316783905e-002 - <_> - - <_> - - - - <_> - 0 5 2 7 -1. - <_> - 1 5 1 7 2. - 0 - -1.0743389837443829e-002 - 2.6506188511848450e-001 - -1.3862170279026031e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 6.9530052132904530e-003 - 3.3702958375215530e-002 - -4.7984018921852112e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -7.5777601450681686e-003 - -4.4925630092620850e-001 - 8.1961393356323242e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -3.6117959767580032e-002 - 4.0106239914894104e-001 - -9.4889998435974121e-002 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - 3.0786920338869095e-002 - -8.4221139550209045e-002 - 4.5751860737800598e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - 1.0906560346484184e-002 - 3.6288078874349594e-002 - -3.1307759881019592e-001 - <_> - - <_> - - - - <_> - 4 9 1 2 -1. - <_> - 4 10 1 1 2. - 0 - 7.7241609687916934e-005 - -2.6226210594177246e-001 - 1.2772110104560852e-001 - <_> - - <_> - - - - <_> - 16 3 2 4 -1. - <_> - 16 4 2 2 2. - 0 - -1.8342709168791771e-002 - -3.8035660982131958e-001 - 2.0931210368871689e-002 - <_> - - <_> - - - - <_> - 0 3 2 4 -1. - <_> - 0 4 2 2 2. - 0 - -1.4488579705357552e-002 - -6.2516981363296509e-001 - 5.0568919628858566e-002 - <_> - - <_> - - - - <_> - 17 2 1 8 -1. - <_> - 17 4 1 4 2. - 0 - -2.6086460798978806e-002 - -2.5289660692214966e-001 - 2.2778680548071861e-002 - <_> - - <_> - - - - <_> - 6 0 5 4 -1. - <_> - 6 1 5 2 2. - 0 - 2.4344440549612045e-002 - -1.0455399751663208e-001 - 3.2213151454925537e-001 - <_> - - <_> - - - - <_> - 17 2 1 8 -1. - <_> - 17 4 1 4 2. - 0 - 1.6739370301365852e-002 - 1.5031609684228897e-002 - -2.3286940157413483e-001 - <_> - - <_> - - - - <_> - 0 2 1 8 -1. - <_> - 0 4 1 4 2. - 0 - 6.9860741496086121e-003 - 8.2456819713115692e-002 - -4.0554359555244446e-001 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -6.3432222232222557e-003 - 3.0635970830917358e-001 - -5.6111559271812439e-002 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - 1.3267910107970238e-002 - 5.8571081608533859e-002 - -5.6226778030395508e-001 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - -7.8068808652460575e-003 - -3.3495968580245972e-001 - 4.8010118305683136e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -4.6056290157139301e-003 - 3.3558750152587891e-001 - -1.0367739945650101e-001 - <_> - - <_> - - - - <_> - 3 5 12 6 -1. - <_> - 7 5 4 6 3. - 0 - -3.5391300916671753e-002 - 1.3985100388526917e-001 - -2.4411860108375549e-001 - <_> - - <_> - - - - <_> - 5 0 7 3 -1. - <_> - 5 1 7 1 3. - 0 - -3.1272999942302704e-002 - 4.2635110020637512e-001 - -6.7719720304012299e-002 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - 5.0648758187890053e-003 - 5.6782770901918411e-002 - -1.8407820165157318e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - 1.1429510079324245e-002 - 5.1047790795564651e-002 - -5.8645612001419067e-001 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -1.2818889692425728e-002 - 2.5195059180259705e-001 - -1.7262229323387146e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.5068391114473343e-003 - 3.4061318635940552e-001 - -8.6949199438095093e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 5.4749757982790470e-003 - 2.3750610649585724e-002 - -2.5926721096038818e-001 - <_> - - <_> - - - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - 0 - 1.1854119598865509e-002 - -9.0619556605815887e-002 - 2.9119190573692322e-001 - -1.8880920410156250e+000 - 4 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 4 2 -1. - <_> - 7 4 4 1 2. - 1 - -4.7739148139953613e-002 - 7.0311528444290161e-001 - -4.0234449505805969e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -8.0938947200775146e-001 - 4.6052539348602295e-001 - -4.0787270665168762e-001 - <_> - - <_> - - - - <_> - 8 2 4 4 -1. - <_> - 8 2 4 2 2. - 1 - 1.9570919871330261e-001 - 6.3850008882582188e-003 - -1.0483790283203125e+003 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -5.5437600240111351e-003 - 4.4707939028739929e-001 - -2.0605599880218506e-001 - <_> - - <_> - - - - <_> - 2 0 13 4 -1. - <_> - 2 1 13 2 2. - 0 - 4.1489699482917786e-001 - 8.0591542646288872e-003 - -1.9253439941406250e+003 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 0 - 1.2064840120729059e-004 - -8.8089093565940857e-002 - 9.6394099295139313e-002 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -9.2417707492131740e-005 - 1.6505399346351624e-001 - -4.8010158538818359e-001 - <_> - - <_> - - - - <_> - 11 6 6 1 -1. - <_> - 13 6 2 1 3. - 0 - -1.2108679860830307e-002 - 3.5905620455741882e-001 - -1.1650399863719940e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.0738140344619751e-001 - -5.6591778993606567e-001 - 1.3803580403327942e-001 - <_> - - <_> - - - - <_> - 8 5 6 2 -1. - <_> - 10 5 2 2 3. - 0 - -2.1975189447402954e-002 - 4.2953509092330933e-001 - -1.5891620516777039e-001 - <_> - - <_> - - - - <_> - 1 4 6 4 -1. - <_> - 3 4 2 4 3. - 0 - -1.1959870345890522e-002 - 2.9616978764533997e-001 - -2.5460711121559143e-001 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -9.0528890723362565e-005 - 7.4505448341369629e-002 - -6.9072231650352478e-002 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - 0 - -8.5102466982789338e-005 - 1.6419610381126404e-001 - -3.6688721179962158e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 2.8498729690909386e-002 - 1.2233109772205353e-001 - -4.8675718903541565e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 9 11 2 1 2. - 0 - 7.7169570140540600e-003 - 6.4482487738132477e-002 - -6.9540137052536011e-001 - <_> - - <_> - - - - <_> - 7 5 4 6 -1. - <_> - 8 5 2 6 2. - 0 - -7.1217319928109646e-003 - 2.0365479588508606e-001 - -2.2741779685020447e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -1.1075680231442675e-004 - 1.4500780403614044e-001 - -3.4105348587036133e-001 - <_> - - <_> - - - - <_> - 15 0 1 2 -1. - <_> - 15 1 1 1 2. - 0 - 1.1053880007239059e-004 - -6.8307012319564819e-002 - 7.4650689959526062e-002 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 1 1 1 2. - 0 - -9.6507181297056377e-005 - 1.8268570303916931e-001 - -2.7704128623008728e-001 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 0 1 18 2 2. - 0 - 3.3470049500465393e-002 - -1.5655350685119629e-001 - 3.1936529278755188e-001 - <_> - - <_> - - - - <_> - 2 2 14 3 -1. - <_> - 2 3 14 1 3. - 0 - 2.0096020773053169e-002 - -1.5562969446182251e-001 - 3.1467041373252869e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - 7.0277601480484009e-003 - 3.7986829876899719e-002 - -3.0223649740219116e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - 6.9380169734358788e-003 - 8.1531472504138947e-002 - -5.6371027231216431e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - -2.7956028934568167e-003 - -1.8539020419120789e-001 - 3.9439260959625244e-002 - <_> - - <_> - - - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - 1.5885600820183754e-002 - 5.9267118573188782e-002 - -7.1854251623153687e-001 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 1 - 3.7774249911308289e-002 - 1.4310140162706375e-002 - -5.0811702013015747e-001 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - 1.5504850074648857e-002 - 8.0278262495994568e-002 - -4.4908508658409119e-001 - <_> - - <_> - - - - <_> - 15 2 2 8 -1. - <_> - 15 4 2 4 2. - 0 - -1.9444189965724945e-002 - 1.7838209867477417e-001 - -1.8505999445915222e-001 - <_> - - <_> - - - - <_> - 6 3 6 3 -1. - <_> - 6 4 6 1 3. - 0 - 2.8419150039553642e-002 - -8.1356927752494812e-002 - 4.9391180276870728e-001 - <_> - - <_> - - - - <_> - 5 1 8 6 -1. - <_> - 5 3 8 2 3. - 0 - -8.3308592438697815e-002 - 3.3119910955429077e-001 - -1.1275950074195862e-001 - <_> - - <_> - - - - <_> - 5 0 8 3 -1. - <_> - 5 1 8 1 3. - 0 - -2.0398350432515144e-002 - 3.7371310591697693e-001 - -1.0401429980993271e-001 - <_> - - <_> - - - - <_> - 15 1 3 9 -1. - <_> - 15 4 3 3 3. - 0 - 1.4064489305019379e-001 - 8.4198080003261566e-003 - -6.9457089900970459e-001 - <_> - - <_> - - - - <_> - 0 1 3 9 -1. - <_> - 0 4 3 3 3. - 0 - 1.9191060215234756e-002 - 8.8749423623085022e-002 - -4.0662020444869995e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -3.9051079656928778e-003 - -5.7998901605606079e-001 - 5.1149401813745499e-002 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -2.0223320461809635e-003 - -4.7456279397010803e-001 - 5.7810228317975998e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - -7.0939320139586926e-003 - 2.5586429238319397e-001 - -5.9901829808950424e-002 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 4 5 2 4 2. - 0 - -8.3198416978120804e-003 - 2.6578190922737122e-001 - -1.1572790145874023e-001 - <_> - - <_> - - - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - 0 - -7.8159309923648834e-003 - -5.6447637081146240e-001 - 5.0173521041870117e-002 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -1.1840989813208580e-002 - -7.6622551679611206e-001 - 3.0004199594259262e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.4432789757847786e-002 - 1.5162460505962372e-001 - -1.3350149989128113e-001 - <_> - - <_> - - - - <_> - 2 0 9 4 -1. - <_> - 5 0 3 4 3. - 0 - -8.0706225708127022e-003 - 1.2732319533824921e-001 - -2.2091729938983917e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 1.1658039875328541e-002 - 4.3274190276861191e-002 - -5.2941519021987915e-001 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.9893579185009003e-002 - -5.3083962202072144e-001 - 4.3910909444093704e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 6.7451149225234985e-003 - 2.1857760846614838e-002 - -4.6655520796775818e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.0237179958494380e-004 - 1.1223310232162476e-001 - -2.4498760700225830e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -3.7937998771667480e-002 - 1.5558369457721710e-001 - -2.5431839749217033e-002 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.2750740163028240e-002 - -3.4159570932388306e-001 - 7.8362293541431427e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 0 - -1.2596500164363533e-004 - 1.3888040184974670e-001 - -1.7169789969921112e-001 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 1 8 1 2 2. - 0 - -4.9405978061258793e-003 - 2.7017688751220703e-001 - -9.4520643353462219e-002 - <_> - - <_> - - - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - 0 - -2.8547599868034013e-005 - 6.3881427049636841e-002 - -6.6255062818527222e-002 - -1.8309839963912964e+000 - 5 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.2969099916517735e-002 - -4.2454311251640320e-001 - 6.9157850742340088e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 4 6 3 9. - 0 - -1.0824010372161865e+000 - 6.2524372339248657e-001 - -2.5212618708610535e-001 - <_> - - <_> - - - - <_> - 1 4 10 3 -1. - <_> - 6 4 5 3 2. - 0 - 2.3240320384502411e-001 - 2.6453230530023575e-002 - -1.4411560058593750e+003 - <_> - - <_> - - - - <_> - 10 2 3 5 -1. - <_> - 11 3 1 5 3. - 1 - -2.4583930149674416e-002 - 1.5964910387992859e-001 - -7.7864259481430054e-002 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.5321910399943590e-003 - 4.6771478652954102e-001 - -1.8968330323696136e-001 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 3.3865550160408020e-001 - -4.1563400626182556e-001 - 1.8573409318923950e-001 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 3 0 3 4 2. - 0 - -2.1326009184122086e-002 - 1.8573179841041565e-001 - -3.5007140040397644e-001 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -6.4955209381878376e-003 - 3.5978358983993530e-001 - -1.0183329880237579e-001 - <_> - - <_> - - - - <_> - 6 5 3 2 -1. - <_> - 7 5 1 2 3. - 0 - 1.1344100348651409e-002 - -9.0360596776008606e-002 - 5.8457189798355103e-001 - <_> - - <_> - - - - <_> - 11 10 1 2 -1. - <_> - 11 11 1 1 2. - 0 - 9.0495683252811432e-005 - -2.5225359201431274e-001 - 1.3392220437526703e-001 - <_> - - <_> - - - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - 0 - 7.7168926596641541e-002 - -1.5260620415210724e-001 - 3.4043470025062561e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - -9.9228993349242955e-005 - 8.5841812193393707e-002 - -5.2303139120340347e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 2.1849910262972116e-003 - 7.4815556406974792e-002 - -5.9763509035110474e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.0754860006272793e-002 - -3.8698300719261169e-001 - 3.2411929219961166e-002 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -1.0488190309843048e-004 - 1.3360279798507690e-001 - -3.4231778979301453e-001 - <_> - - <_> - - - - <_> - 11 1 3 6 -1. - <_> - 12 2 1 6 3. - 1 - -5.4005950689315796e-002 - 2.1657359600067139e-001 - -3.0087789520621300e-002 - <_> - - <_> - - - - <_> - 7 1 6 3 -1. - <_> - 6 2 6 1 3. - 1 - -1.8531499430537224e-002 - 1.7578999698162079e-001 - -2.3588539659976959e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - -9.0950122103095055e-003 - -5.1968222856521606e-001 - 6.4523756504058838e-002 - <_> - - <_> - - - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - 0 - -9.8823191365227103e-005 - 1.9835579395294189e-001 - -2.0098380744457245e-001 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 2.1061999723315239e-002 - -8.2831703126430511e-002 - 4.1824889183044434e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.6518259420990944e-002 - -9.7873881459236145e-002 - 3.6431550979614258e-001 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 16 4 1 2 2. - 0 - -1.9625299610197544e-003 - 1.8844370543956757e-001 - -1.6893580555915833e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 5.3389389067888260e-003 - 6.2860213220119476e-002 - -5.6821030378341675e-001 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 4 1 4 2. - 0 - -4.2285309173166752e-003 - 1.2900340557098389e-001 - -1.4946889877319336e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - -1.3029079884290695e-002 - -7.4421662092208862e-001 - 4.5929558575153351e-002 - <_> - - <_> - - - - <_> - 16 4 2 4 -1. - <_> - 16 4 1 4 2. - 0 - -2.1244779229164124e-002 - -3.6576640605926514e-001 - 1.0424939915537834e-002 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 1 4 1 4 2. - 0 - -4.5967479236423969e-003 - 1.7677290737628937e-001 - -1.8999819457530975e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -8.0737788230180740e-003 - -3.2994970679283142e-001 - 6.1676099896430969e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.6974760219454765e-002 - -7.1400022506713867e-001 - 4.0978480130434036e-002 - <_> - - <_> - - - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - 0 - 2.0088389515876770e-002 - -1.2316899746656418e-001 - 2.6806059479713440e-001 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 2.1707860752940178e-002 - -1.2791140377521515e-001 - 2.8688108921051025e-001 - <_> - - <_> - - - - <_> - 15 4 3 4 -1. - <_> - 15 5 3 2 2. - 0 - 1.4121609739959240e-002 - 3.0740590766072273e-002 - -3.4621009230613708e-001 - <_> - - <_> - - - - <_> - 0 4 2 4 -1. - <_> - 0 5 2 2 2. - 0 - -1.3910040259361267e-002 - -5.6334692239761353e-001 - 5.4368961602449417e-002 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - 1.3910540379583836e-002 - 3.5999219864606857e-002 - -3.7284949421882629e-001 - <_> - - <_> - - - - <_> - 4 1 8 3 -1. - <_> - 6 1 4 3 2. - 0 - -6.9868760183453560e-003 - 1.5719449520111084e-001 - -1.8703240156173706e-001 - <_> - - <_> - - - - <_> - 12 6 6 6 -1. - <_> - 12 8 6 2 3. - 0 - 1.0331939905881882e-001 - 2.4535490199923515e-002 - -5.5506777763366699e-001 - <_> - - <_> - - - - <_> - 0 6 6 6 -1. - <_> - 0 8 6 2 3. - 0 - -5.4182611405849457e-002 - -4.5211860537528992e-001 - 5.8777388185262680e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - -2.7721941005438566e-003 - -4.3239548802375793e-001 - 4.4798858463764191e-002 - <_> - - <_> - - - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - -2.7594869956374168e-002 - 1.6330890357494354e-001 - -1.6784989833831787e-001 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - 1.5242209658026695e-002 - 2.7706470340490341e-002 - -6.2536621093750000e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 10 2 1 2. - 0 - -2.6314980350434780e-003 - -4.2216229438781738e-001 - 6.5155752003192902e-002 - <_> - - <_> - - - - <_> - 7 2 4 4 -1. - <_> - 7 3 4 2 2. - 0 - -2.3606320843100548e-002 - 3.3093869686126709e-001 - -8.2543507218360901e-002 - <_> - - <_> - - - - <_> - 8 4 4 3 -1. - <_> - 7 5 4 1 3. - 1 - -4.0896769613027573e-002 - 4.7317719459533691e-001 - -5.4770849645137787e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 1.1066540144383907e-002 - -6.1698198318481445e-002 - 3.9080050587654114e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 6 7 3 1 3. - 1 - -3.5964860580861568e-004 - 1.7784999310970306e-001 - -1.5802909433841705e-001 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - 1.0035860352218151e-002 - 3.2939091324806213e-002 - -3.5791549086570740e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -2.1251719444990158e-002 - -4.0622410178184509e-001 - 5.7364061474800110e-002 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -9.6790026873350143e-005 - 5.5528908967971802e-002 - -6.0613408684730530e-002 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 4 6 2 2 2. - 1 - -2.0986420568078756e-003 - 8.7490037083625793e-002 - -2.5980108976364136e-001 - <_> - - <_> - - - - <_> - 15 8 2 1 -1. - <_> - 15 8 1 1 2. - 1 - -1.5904919710010290e-003 - 9.1209657490253448e-002 - -1.8434490263462067e-001 - <_> - - <_> - - - - <_> - 3 8 1 2 -1. - <_> - 3 8 1 1 2. - 1 - 2.8348378837108612e-003 - -7.5825102627277374e-002 - 3.1011909246444702e-001 - <_> - - <_> - - - - <_> - 4 11 14 1 -1. - <_> - 4 11 7 1 2. - 0 - 5.2976410835981369e-002 - 2.2894360125064850e-002 - -3.6694788932800293e-001 - <_> - - <_> - - - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - 0 - 5.2993461489677429e-002 - 4.8855211585760117e-002 - -4.9654829502105713e-001 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 1.1254799755988643e-004 - -6.4805597066879272e-002 - 7.7355362474918365e-002 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.5766988730756566e-005 - 1.0217899829149246e-001 - -2.4918699264526367e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - 1.2803260236978531e-002 - 2.1008219569921494e-002 - -4.8412579298019409e-001 - <_> - - <_> - - - - <_> - 2 0 1 2 -1. - <_> - 2 0 1 1 2. - 1 - -4.2998609133064747e-003 - -2.8178960084915161e-001 - 8.6436942219734192e-002 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 7.0341289974749088e-003 - 4.7605708241462708e-002 - -3.1112289428710938e-001 - <_> - - <_> - - - - <_> - 4 5 2 2 -1. - <_> - 4 5 1 1 2. - <_> - 5 6 1 1 2. - 0 - -1.0176310315728188e-003 - 2.3361669480800629e-001 - -9.6844062209129333e-002 - <_> - - <_> - - - - <_> - 7 9 6 3 -1. - <_> - 9 9 2 3 3. - 0 - 1.2555380351841450e-002 - 6.3771553337574005e-002 - -3.2026350498199463e-001 - <_> - - <_> - - - - <_> - 2 5 12 6 -1. - <_> - 2 5 6 3 2. - <_> - 8 8 6 3 2. - 0 - 1.4610219746828079e-002 - -1.7586620151996613e-001 - 1.1790910363197327e-001 - <_> - - <_> - - - - <_> - 12 5 6 4 -1. - <_> - 14 5 2 4 3. - 0 - -1.8952880054712296e-002 - 1.6201509535312653e-001 - -9.1056473553180695e-002 - <_> - - <_> - - - - <_> - 0 5 6 4 -1. - <_> - 2 5 2 4 3. - 0 - -1.7667450010776520e-002 - 1.7925499379634857e-001 - -1.3047270476818085e-001 - -1.7924000024795532e+000 - 6 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.9953019917011261e-002 - 4.6304538846015930e-001 - -5.4309362173080444e-001 - <_> - - <_> - - - - <_> - 6 4 11 6 -1. - <_> - 6 7 11 3 2. - 0 - 1.4101259410381317e-001 - -4.3483141064643860e-001 - 2.3144249618053436e-001 - <_> - - <_> - - - - <_> - 3 5 3 4 -1. - <_> - 4 5 1 4 3. - 0 - -3.8832230493426323e-003 - 3.5248211026191711e-001 - -3.3487960696220398e-001 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 5.5682440288364887e-003 - -5.0852102041244507e-001 - 2.4366380274295807e-001 - <_> - - <_> - - - - <_> - 1 7 10 2 -1. - <_> - 1 8 10 1 2. - 0 - 1.7619030177593231e-001 - -4.3959591537714005e-002 - -2.1098750000000000e+003 - <_> - - <_> - - - - <_> - 16 0 2 4 -1. - <_> - 16 0 1 4 2. - 0 - 2.1687010303139687e-003 - -1.0676959902048111e-001 - 1.9657030701637268e-001 - <_> - - <_> - - - - <_> - 0 0 2 5 -1. - <_> - 1 0 1 5 2. - 0 - -2.4930729996412992e-003 - 1.5274609625339508e-001 - -4.5544859766960144e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 6 4 6 4 9. - 0 - -1.3881989717483521e+000 - 3.6814248561859131e-001 - -2.1648240089416504e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.2570229591801763e-004 - 1.6871599853038788e-001 - -3.3025780320167542e-001 - <_> - - <_> - - - - <_> - 4 0 10 2 -1. - <_> - 4 1 10 1 2. - 0 - 2.0360499620437622e-002 - -1.0959889739751816e-001 - 4.3592530488967896e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -7.7699557878077030e-003 - 3.7267988920211792e-001 - -1.1310379952192307e-001 - <_> - - <_> - - - - <_> - 7 0 9 4 -1. - <_> - 10 0 3 4 3. - 0 - -6.6438332200050354e-002 - -5.0932061672210693e-001 - 3.8267329335212708e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3943830747157335e-003 - 3.7487560510635376e-001 - -1.1466500163078308e-001 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.9620539620518684e-002 - -6.1430118978023529e-002 - 4.3453490734100342e-001 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -3.5895970650017262e-003 - 2.9000890254974365e-001 - -1.4118500053882599e-001 - <_> - - <_> - - - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - 0 - 1.4298349618911743e-002 - 4.3023601174354553e-002 - -5.9506058692932129e-001 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - 8.2771573215723038e-003 - 5.7618878781795502e-002 - -6.0915398597717285e-001 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - -2.4311929009854794e-003 - 2.6851660013198853e-001 - -7.8011967241764069e-002 - <_> - - <_> - - - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - -1.1357249692082405e-002 - -5.7373368740081787e-001 - 6.1811648309230804e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.0995700731873512e-002 - 3.7857949733734131e-001 - -9.0212509036064148e-002 - <_> - - <_> - - - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - 0 - -1.9253190606832504e-002 - -6.1270111799240112e-001 - 5.8162990957498550e-002 - <_> - - <_> - - - - <_> - 13 8 2 2 -1. - <_> - 13 8 2 1 2. - 1 - -2.5958230253309011e-003 - 8.5419252514839172e-002 - -1.5067149698734283e-001 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.7749400809407234e-002 - -5.6233870983123779e-001 - 5.8707099407911301e-002 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -7.0752850733697414e-003 - 1.8340730667114258e-001 - -2.0476980507373810e-001 - <_> - - <_> - - - - <_> - 1 4 4 5 -1. - <_> - 2 4 2 5 2. - 0 - -8.4588937461376190e-003 - 2.5018799304962158e-001 - -1.4016430079936981e-001 - <_> - - <_> - - - - <_> - 9 3 1 8 -1. - <_> - 9 3 1 4 2. - 1 - 6.0339421033859253e-003 - 1.7297219485044479e-002 - -1.0938909649848938e-001 - <_> - - <_> - - - - <_> - 3 0 1 2 -1. - <_> - 3 0 1 1 2. - 1 - -8.7690055370330811e-003 - -5.3809267282485962e-001 - 5.5717989802360535e-002 - <_> - - <_> - - - - <_> - 0 2 18 8 -1. - <_> - 6 2 6 8 3. - 0 - -2.0211340487003326e-001 - 1.4996449649333954e-001 - -1.9804969429969788e-001 - <_> - - <_> - - - - <_> - 0 10 6 2 -1. - <_> - 3 10 3 2 2. - 0 - 9.2534068971872330e-003 - -1.2579849362373352e-001 - 2.6560428738594055e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.9985489547252655e-002 - -2.0184940099716187e-001 - 1.4270460605621338e-001 - <_> - - <_> - - - - <_> - 5 3 6 4 -1. - <_> - 5 3 3 2 2. - <_> - 8 5 3 2 2. - 0 - -6.4325458370149136e-003 - 1.4902539551258087e-001 - -2.2481849789619446e-001 - <_> - - <_> - - - - <_> - 15 1 2 1 -1. - <_> - 15 1 1 1 2. - 0 - -1.2979759776499122e-004 - 7.9636313021183014e-002 - -6.8467393517494202e-002 - <_> - - <_> - - - - <_> - 0 2 4 9 -1. - <_> - 0 5 4 3 3. - 0 - 7.4666491709649563e-003 - 9.1552861034870148e-002 - -3.0332839488983154e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -4.8323269933462143e-002 - 3.1203231215476990e-001 - -9.4739243388175964e-002 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.0795370326377451e-004 - 1.1953579634428024e-001 - -2.3774090409278870e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.1394219249486923e-002 - 3.8132411241531372e-001 - -6.8722970783710480e-002 - <_> - - <_> - - - - <_> - 5 9 6 3 -1. - <_> - 7 9 2 3 3. - 0 - -2.6666570454835892e-002 - -5.3747171163558960e-001 - 5.0780180841684341e-002 - <_> - - <_> - - - - <_> - 13 8 1 3 -1. - <_> - 12 9 1 1 3. - 1 - -1.6129670664668083e-002 - -5.7956278324127197e-001 - 7.9791489988565445e-003 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - 0 - 3.9990308880805969e-001 - 3.5521049052476883e-002 - -6.6213911771774292e-001 - <_> - - <_> - - - - <_> - 14 5 4 6 -1. - <_> - 14 7 4 2 3. - 0 - 5.8418158441781998e-002 - 2.0374530926346779e-002 - -3.9533859491348267e-001 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -6.9553457200527191e-002 - 1.5149369835853577e-001 - -1.7391009628772736e-001 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 14 8 4 2 3. - 0 - 7.5673670507967472e-003 - -1.0654059797525406e-001 - 1.0897749662399292e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 4.7387808561325073e-002 - 4.9468740820884705e-002 - -5.5027878284454346e-001 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - -3.7050791084766388e-002 - -3.8515409827232361e-001 - 2.2248979657888412e-002 - <_> - - <_> - - - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - 0 - -3.0018899589776993e-002 - -6.4674687385559082e-001 - 3.3203490078449249e-002 - <_> - - <_> - - - - <_> - 11 3 4 4 -1. - <_> - 11 4 4 2 2. - 0 - 1.5431820414960384e-002 - -4.4999931007623672e-002 - 2.4443189799785614e-001 - <_> - - <_> - - - - <_> - 2 3 6 4 -1. - <_> - 2 4 6 2 2. - 0 - -8.2180695608258247e-003 - 1.5854990482330322e-001 - -1.9471940398216248e-001 - <_> - - <_> - - - - <_> - 13 5 3 3 -1. - <_> - 14 6 1 3 3. - 1 - 4.0984179824590683e-002 - -3.4700211137533188e-002 - 3.3703771233558655e-001 - <_> - - <_> - - - - <_> - 5 5 3 3 -1. - <_> - 4 6 3 1 3. - 1 - -8.5833184421062469e-003 - 1.9440969824790955e-001 - -1.2268470227718353e-001 - <_> - - <_> - - - - <_> - 9 1 4 4 -1. - <_> - 10 1 2 4 2. - 0 - -4.5410390943288803e-002 - -8.1189441680908203e-001 - 8.0366088077425957e-003 - <_> - - <_> - - - - <_> - 4 9 4 2 -1. - <_> - 5 9 2 2 2. - 0 - -9.0532200410962105e-003 - -5.5083888769149780e-001 - 4.0210179984569550e-002 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - -1.1325759813189507e-002 - 9.9898673593997955e-002 - -3.9981659501791000e-002 - <_> - - <_> - - - - <_> - 5 1 4 4 -1. - <_> - 6 1 2 4 2. - 0 - -1.7502499744296074e-002 - -5.0785058736801147e-001 - 4.4904891401529312e-002 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - 4.0354807861149311e-003 - -7.3971033096313477e-002 - 8.6997002363204956e-002 - <_> - - <_> - - - - <_> - 3 6 3 3 -1. - <_> - 2 7 3 1 3. - 1 - -1.9440140575170517e-002 - 3.5637879371643066e-001 - -6.4185008406639099e-002 - <_> - - <_> - - - - <_> - 13 6 2 4 -1. - <_> - 13 6 2 2 2. - 1 - 3.4901369363069534e-002 - 1.3781890273094177e-002 - -3.0902290344238281e-001 - <_> - - <_> - - - - <_> - 5 6 4 2 -1. - <_> - 5 6 2 2 2. - 1 - -5.0566188991069794e-002 - -3.5108640789985657e-001 - 6.5844587981700897e-002 - <_> - - <_> - - - - <_> - 7 1 9 3 -1. - <_> - 10 1 3 3 3. - 0 - -1.4756169915199280e-001 - -6.8759101629257202e-001 - 4.7263758460758254e-005 - <_> - - <_> - - - - <_> - 2 1 9 3 -1. - <_> - 5 1 3 3 3. - 0 - -1.0150520130991936e-002 - 1.2052480131387711e-001 - -1.7938989400863647e-001 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - -2.2828230634331703e-002 - -4.8896029591560364e-001 - 1.8085980787873268e-002 - <_> - - <_> - - - - <_> - 7 5 3 3 -1. - <_> - 6 6 3 1 3. - 1 - -1.8258199095726013e-002 - 3.4773400425910950e-001 - -6.3224472105503082e-002 - <_> - - <_> - - - - <_> - 11 0 4 5 -1. - <_> - 12 0 2 5 2. - 0 - 1.3490609824657440e-002 - 2.3697679862380028e-002 - -1.3777829706668854e-001 - <_> - - <_> - - - - <_> - 3 0 4 5 -1. - <_> - 4 0 2 5 2. - 0 - -1.6170579940080643e-002 - -4.2869010567665100e-001 - 5.1102340221405029e-002 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -1.8929179757833481e-002 - 2.6792019605636597e-001 - -7.7223733067512512e-002 - -1.7122819423675537e+000 - 7 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 6 2 -1. - <_> - 7 4 6 1 2. - 1 - -5.6362848728895187e-002 - 6.2295049428939819e-001 - -3.9318370819091797e-001 - <_> - - <_> - - - - <_> - 6 0 12 3 -1. - <_> - 10 0 4 3 3. - 0 - 1.9950939342379570e-002 - -1.4530490338802338e-001 - 2.4978880584239960e-001 - <_> - - <_> - - - - <_> - 9 3 6 1 -1. - <_> - 9 3 3 1 2. - 1 - -4.6843659132719040e-002 - 3.9532458782196045e-001 - -3.0981910228729248e-001 - <_> - - <_> - - - - <_> - 14 0 4 2 -1. - <_> - 14 0 2 2 2. - 0 - 3.4703789278864861e-003 - -7.6643757522106171e-002 - 1.4895190298557281e-001 - <_> - - <_> - - - - <_> - 0 0 6 2 -1. - <_> - 3 0 3 2 2. - 0 - -6.1464528553187847e-003 - 1.8411460518836975e-001 - -4.8829838633537292e-001 - <_> - - <_> - - - - <_> - 3 10 12 2 -1. - <_> - 3 11 12 1 2. - 0 - 6.1217881739139557e-003 - -4.2313280701637268e-001 - 1.9597740471363068e-001 - <_> - - <_> - - - - <_> - 1 3 16 2 -1. - <_> - 1 4 16 1 2. - 0 - -1.8062189221382141e-002 - 2.3335799574851990e-001 - -2.9320231080055237e-001 - <_> - - <_> - - - - <_> - 12 5 4 3 -1. - <_> - 13 5 2 3 2. - 0 - -5.3905011154711246e-003 - 3.0706161260604858e-001 - -2.2423399984836578e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -1.1563429870875552e-004 - 1.2549179792404175e-001 - -3.5768839716911316e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.2130189687013626e-002 - -4.3862840533256531e-001 - 1.5064669772982597e-002 - <_> - - <_> - - - - <_> - 8 5 3 1 -1. - <_> - 9 6 1 1 3. - 1 - -4.5520379208028316e-003 - 1.7858989536762238e-001 - -2.0970739424228668e-001 - <_> - - <_> - - - - <_> - 14 0 3 2 -1. - <_> - 15 1 1 2 3. - 1 - -2.3341009393334389e-002 - -4.7605940699577332e-001 - 2.9896590858697891e-002 - <_> - - <_> - - - - <_> - 4 0 2 3 -1. - <_> - 3 1 2 1 3. - 1 - 1.0201729834079742e-002 - 7.7540546655654907e-002 - -4.6611380577087402e-001 - <_> - - <_> - - - - <_> - 11 6 6 2 -1. - <_> - 13 6 2 2 3. - 0 - 4.7306690365076065e-002 - -3.8885660469532013e-002 - 5.0057899951934814e-001 - <_> - - <_> - - - - <_> - 1 6 6 2 -1. - <_> - 3 6 2 2 3. - 0 - -9.2814108356833458e-003 - 2.0289039611816406e-001 - -1.8781319260597229e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 1.1665919795632362e-002 - 3.4593590535223484e-003 - -6.7075312137603760e-001 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -1.1174700222909451e-002 - -6.7676198482513428e-001 - 5.3503561764955521e-002 - <_> - - <_> - - - - <_> - 13 0 3 7 -1. - <_> - 14 0 1 7 3. - 0 - -3.0277540907263756e-002 - -6.1764931678771973e-001 - 2.5672059506177902e-002 - <_> - - <_> - - - - <_> - 2 0 3 7 -1. - <_> - 3 0 1 7 3. - 0 - -2.6489820331335068e-002 - -6.5213251113891602e-001 - 4.6798661351203918e-002 - <_> - - <_> - - - - <_> - 4 3 10 3 -1. - <_> - 4 4 10 1 3. - 0 - 3.6063250154256821e-002 - -7.9508572816848755e-002 - 3.9742410182952881e-001 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 3.8237631320953369e-002 - -3.4497588872909546e-001 - 8.8161222636699677e-002 - <_> - - <_> - - - - <_> - 16 9 2 3 -1. - <_> - 16 10 2 1 3. - 0 - 9.8143024370074272e-003 - 3.8055408746004105e-002 - -5.7297128438949585e-001 - <_> - - <_> - - - - <_> - 0 5 18 6 -1. - <_> - 0 5 9 3 2. - <_> - 9 8 9 3 2. - 0 - 1.0969569848384708e-004 - -2.3766790330410004e-001 - 1.1281009763479233e-001 - <_> - - <_> - - - - <_> - 13 1 5 9 -1. - <_> - 13 4 5 3 3. - 0 - -6.4720593392848969e-002 - 5.7318519800901413e-002 - -8.4692500531673431e-002 - <_> - - <_> - - - - <_> - 0 1 5 9 -1. - <_> - 0 4 5 3 3. - 0 - -9.3549508601427078e-003 - 1.0101249814033508e-001 - -3.0118590593338013e-001 - <_> - - <_> - - - - <_> - 0 4 18 2 -1. - <_> - 6 4 6 2 3. - 0 - -6.4732283353805542e-002 - 1.3135200738906860e-001 - -2.2299380600452423e-001 - <_> - - <_> - - - - <_> - 6 2 6 2 -1. - <_> - 6 3 6 1 2. - 0 - 1.4942260459065437e-002 - -7.4695453047752380e-002 - 4.2155799269676208e-001 - <_> - - <_> - - - - <_> - 6 0 6 2 -1. - <_> - 6 1 6 1 2. - 0 - 9.1112721711397171e-003 - -1.0271769762039185e-001 - 2.9674398899078369e-001 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - -1.0131099820137024e-001 - 4.0764111280441284e-001 - -8.9215211570262909e-002 - <_> - - <_> - - - - <_> - 16 0 2 2 -1. - <_> - 16 0 1 2 2. - 1 - 1.9525960087776184e-002 - 4.5859400182962418e-002 - -5.3067690134048462e-001 - <_> - - <_> - - - - <_> - 2 0 2 2 -1. - <_> - 2 0 2 1 2. - 1 - -1.6093149781227112e-002 - -5.0799179077148438e-001 - 4.7188449651002884e-002 - <_> - - <_> - - - - <_> - 10 11 2 1 -1. - <_> - 10 11 1 1 2. - 0 - -3.7084550131112337e-003 - -5.4375791549682617e-001 - 1.7073409631848335e-002 - <_> - - <_> - - - - <_> - 6 11 2 1 -1. - <_> - 7 11 1 1 2. - 0 - -1.0553289757808670e-004 - 1.6604019701480865e-001 - -1.4265109598636627e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - -2.2228319197893143e-002 - 1.1051969975233078e-001 - -6.7340642213821411e-002 - <_> - - <_> - - - - <_> - 0 6 2 2 -1. - <_> - 1 6 1 2 2. - 0 - -3.9571961387991905e-003 - 1.9017930328845978e-001 - -1.2256579846143723e-001 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -2.9267009813338518e-003 - 9.4764962792396545e-002 - -1.8430569767951965e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 4.4974898919463158e-003 - -9.1449737548828125e-002 - 3.5069960355758667e-001 - <_> - - <_> - - - - <_> - 0 0 18 1 -1. - <_> - 0 0 9 1 2. - 0 - -1.8627950921654701e-002 - 2.3541490733623505e-001 - -1.0408759862184525e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - -1.2022979557514191e-002 - -3.8634741306304932e-001 - 6.5065048635005951e-002 - <_> - - <_> - - - - <_> - 15 5 3 6 -1. - <_> - 15 7 3 2 3. - 0 - 5.6308001279830933e-002 - 1.1871179565787315e-002 - -4.9800288677215576e-001 - <_> - - <_> - - - - <_> - 0 5 3 6 -1. - <_> - 0 7 3 2 3. - 0 - 3.9565019309520721e-002 - 3.7156730890274048e-002 - -6.4833837747573853e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - 2.8078509494662285e-002 - -2.1756550297141075e-002 - 2.5639408826828003e-001 - <_> - - <_> - - - - <_> - 8 4 4 3 -1. - <_> - 7 5 4 1 3. - 1 - 4.6927139163017273e-002 - -5.3349718451499939e-002 - 4.3058720231056213e-001 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - -2.5176439434289932e-002 - 9.7822599112987518e-002 - -5.9893220663070679e-002 - <_> - - <_> - - - - <_> - 7 2 1 3 -1. - <_> - 6 3 1 1 3. - 1 - 8.8344141840934753e-003 - 5.6916769593954086e-002 - -4.0340718626976013e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.7008539289236069e-002 - 1.8180780112743378e-002 - -5.2570241689682007e-001 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - -8.2875955849885941e-003 - -4.3682220578193665e-001 - 5.4094731807708740e-002 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - 3.8746491074562073e-002 - -1.8321389332413673e-002 - 3.3403670787811279e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -7.2010462172329426e-003 - -5.4613822698593140e-001 - 4.0649890899658203e-002 - <_> - - <_> - - - - <_> - 11 3 3 4 -1. - <_> - 12 4 1 4 3. - 1 - -9.9961467087268829e-002 - -4.5017239451408386e-001 - 2.8199090156704187e-003 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 6 4 4 1 3. - 1 - -2.5273600593209267e-002 - 2.8241640329360962e-001 - -7.7918551862239838e-002 - <_> - - <_> - - - - <_> - 11 5 4 3 -1. - <_> - 12 5 2 3 2. - 0 - 1.0812750086188316e-002 - -6.5411068499088287e-002 - 1.8664279580116272e-001 - <_> - - <_> - - - - <_> - 0 8 6 4 -1. - <_> - 0 9 6 2 2. - 0 - 2.7010150253772736e-002 - 3.8035649806261063e-002 - -5.4452228546142578e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - 0 - -1.1786170216510072e-004 - 1.0787220299243927e-001 - -9.9519513547420502e-002 - <_> - - <_> - - - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - 0 - -1.1047790030715987e-004 - 1.5495459735393524e-001 - -1.3301509618759155e-001 - <_> - - <_> - - - - <_> - 5 1 8 2 -1. - <_> - 5 2 8 1 2. - 0 - 1.8215600401163101e-002 - -6.8660423159599304e-002 - 3.1199648976325989e-001 - <_> - - <_> - - - - <_> - 0 0 10 4 -1. - <_> - 0 0 5 2 2. - <_> - 5 2 5 2 2. - 0 - -5.3898409008979797e-002 - 3.9685648679733276e-001 - -6.3897557556629181e-002 - <_> - - <_> - - - - <_> - 11 0 3 5 -1. - <_> - 12 0 1 5 3. - 0 - 1.3358090072870255e-002 - 3.1209040433168411e-002 - -2.4712960422039032e-001 - <_> - - <_> - - - - <_> - 4 0 3 5 -1. - <_> - 5 0 1 5 3. - 0 - -1.5800479799509048e-002 - -5.2216792106628418e-001 - 4.1600730270147324e-002 - <_> - - <_> - - - - <_> - 17 1 1 2 -1. - <_> - 17 2 1 1 2. - 0 - -1.1199319851584733e-004 - 8.4395922720432281e-002 - -8.4499090909957886e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -9.2885202320758253e-005 - 9.7559772431850433e-002 - -2.1725979447364807e-001 - <_> - - <_> - - - - <_> - 11 5 3 4 -1. - <_> - 12 5 1 4 3. - 0 - -4.7041969373822212e-003 - 2.4064439535140991e-001 - -8.1906877458095551e-002 - <_> - - <_> - - - - <_> - 3 4 4 5 -1. - <_> - 4 4 2 5 2. - 0 - -6.7193550057709217e-003 - 2.0804579555988312e-001 - -1.2089549750089645e-001 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 1.1287519708275795e-002 - 2.9528530314564705e-002 - -7.2591358423233032e-001 - <_> - - <_> - - - - <_> - 8 2 5 3 -1. - <_> - 7 3 5 1 3. - 1 - -1.5930920839309692e-002 - 1.1086650192737579e-001 - -1.8737399578094482e-001 - <_> - - <_> - - - - <_> - 16 8 1 2 -1. - <_> - 16 9 1 1 2. - 0 - 1.2024390161968768e-004 - -1.7434149980545044e-001 - 6.9688543677330017e-002 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - -1.0100419633090496e-002 - -5.1131051778793335e-001 - 3.8271598517894745e-002 - <_> - - <_> - - - - <_> - 13 1 3 3 -1. - <_> - 12 2 3 1 3. - 1 - 2.5751100853085518e-002 - -5.4672010242938995e-002 - 2.3799930512905121e-001 - <_> - - <_> - - - - <_> - 5 1 3 3 -1. - <_> - 6 2 1 3 3. - 1 - -2.0234059542417526e-002 - 2.6857110857963562e-001 - -7.7714122831821442e-002 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - -2.0138830586802214e-004 - 6.1015319079160690e-002 - -5.6767448782920837e-002 - <_> - - <_> - - - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - 0 - 8.7477441411465406e-005 - -1.6955520212650299e-001 - 1.1403830349445343e-001 - -1.7348790168762207e+000 - 8 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.8045219630002975e-002 - 6.2558948993682861e-001 - -3.3365538716316223e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - -5.0243478268384933e-002 - 4.7322180867195129e-001 - -2.9186329245567322e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 3.8331419229507446e-001 - -3.9113879203796387e-001 - 2.5622650980949402e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -4.0044081397354603e-003 - 3.6399510502815247e-001 - -1.9256359338760376e-001 - <_> - - <_> - - - - <_> - 0 0 12 3 -1. - <_> - 4 0 4 3 3. - 0 - -3.7470009177923203e-002 - 1.7452430725097656e-001 - -3.1919050216674805e-001 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - 2.9117159545421600e-002 - -5.4369669407606125e-002 - 3.1064510345458984e-001 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -1.1656920425593853e-002 - 2.5671890377998352e-001 - -1.8017989397048950e-001 - <_> - - <_> - - - - <_> - 16 3 2 1 -1. - <_> - 16 3 1 1 2. - 0 - -1.0440209734952077e-004 - 6.1535339802503586e-002 - -9.6504412591457367e-002 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -1.0555270273471251e-004 - 1.2562979757785797e-001 - -2.9777041077613831e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 7.5841680169105530e-002 - 7.2272002696990967e-002 - -3.9159971475601196e-001 - <_> - - <_> - - - - <_> - 6 5 6 3 -1. - <_> - 8 6 2 1 9. - 0 - -3.0494170263409615e-002 - 1.4515119791030884e-001 - -2.1794329583644867e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.8034840971231461e-002 - -4.3140959739685059e-001 - 9.2317827045917511e-002 - <_> - - <_> - - - - <_> - 1 1 10 8 -1. - <_> - 6 1 5 8 2. - 0 - -2.9059879481792450e-002 - 1.2736010551452637e-001 - -2.6893270015716553e-001 - <_> - - <_> - - - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - 0 - 1.1368029663572088e-004 - -7.3847033083438873e-002 - 8.1634096801280975e-002 - <_> - - <_> - - - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - 0 - -9.8208111012354493e-005 - 1.4976090192794800e-001 - -2.6417461037635803e-001 - <_> - - <_> - - - - <_> - 3 0 15 4 -1. - <_> - 3 1 15 2 2. - 0 - 3.9730750024318695e-002 - -1.3633200526237488e-001 - 2.3572669923305511e-001 - <_> - - <_> - - - - <_> - 2 2 14 4 -1. - <_> - 2 3 14 2 2. - 0 - 2.9196860268712044e-002 - -1.1701930314302444e-001 - 3.0721390247344971e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 7.9500172287225723e-003 - 6.5656699240207672e-002 - -3.5064420104026794e-001 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - -1.0177420452237129e-002 - -5.5617290735244751e-001 - 5.7798638939857483e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 1.6030209371820092e-004 - -4.1421860456466675e-001 - 6.5753549337387085e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - -9.3059297651052475e-003 - -5.4771828651428223e-001 - 5.4126661270856857e-002 - <_> - - <_> - - - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - 0 - 3.0308510176837444e-003 - -7.0931516587734222e-002 - 2.7669700980186462e-001 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -1.1008529691025615e-003 - 2.4519720673561096e-001 - -1.1666910350322723e-001 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - 1.1806489899754524e-002 - 3.6385551095008850e-002 - -3.4721049666404724e-001 - <_> - - <_> - - - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - 1.1421480216085911e-002 - 6.0349930077791214e-002 - -4.1798681020736694e-001 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - -3.1913980841636658e-002 - 3.7621480226516724e-001 - -7.5227960944175720e-002 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - 0 - -1.0130680311704054e-004 - 1.8032610416412354e-001 - -1.4267539978027344e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - 1.2019679881632328e-002 - 4.4374089688062668e-002 - -4.2647609114646912e-001 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -1.1055770301027223e-004 - 9.3973703682422638e-002 - -2.4647060036659241e-001 - <_> - - <_> - - - - <_> - 15 0 2 3 -1. - <_> - 15 0 1 3 2. - 1 - 3.0081219971179962e-002 - 1.8790829926729202e-002 - -3.6197790503501892e-001 - <_> - - <_> - - - - <_> - 3 0 3 2 -1. - <_> - 3 0 3 1 2. - 1 - -1.3911399990320206e-002 - -3.4600418806076050e-001 - 6.4775317907333374e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.1680570431053638e-002 - 2.8401941061019897e-001 - -8.2157500088214874e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -1.1604610335780308e-004 - 9.5449857413768768e-002 - -2.5136241316795349e-001 - <_> - - <_> - - - - <_> - 9 1 4 5 -1. - <_> - 10 2 2 5 2. - 1 - -4.9045611172914505e-002 - 1.6295669972896576e-001 - -3.1894739717245102e-002 - <_> - - <_> - - - - <_> - 9 1 5 4 -1. - <_> - 8 2 5 2 2. - 1 - -3.2497879117727280e-002 - 1.2830619513988495e-001 - -1.9523960351943970e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.1159799993038177e-002 - 9.6235200762748718e-002 - -1.3243910670280457e-001 - <_> - - <_> - - - - <_> - 4 8 3 1 -1. - <_> - 5 9 1 1 3. - 1 - -1.0230819694697857e-002 - -5.4654151201248169e-001 - 4.2988520115613937e-002 - <_> - - <_> - - - - <_> - 11 3 3 5 -1. - <_> - 12 4 1 5 3. - 1 - 1.3818079605698586e-002 - -3.5042509436607361e-002 - 1.9387160241603851e-001 - <_> - - <_> - - - - <_> - 7 3 5 3 -1. - <_> - 6 4 5 1 3. - 1 - -3.2773461192846298e-002 - 3.3459728956222534e-001 - -6.9436222314834595e-002 - <_> - - <_> - - - - <_> - 11 6 4 1 -1. - <_> - 12 6 2 1 2. - 0 - -3.0122410971671343e-003 - 2.3572669923305511e-001 - -6.8288393318653107e-002 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -3.6818650551140308e-003 - 1.9051979482173920e-001 - -1.4668950438499451e-001 - <_> - - <_> - - - - <_> - 12 3 3 1 -1. - <_> - 13 4 1 1 3. - 1 - -3.0836980789899826e-002 - -3.7860611081123352e-001 - 1.3093659654259682e-002 - <_> - - <_> - - - - <_> - 6 3 1 3 -1. - <_> - 5 4 1 1 3. - 1 - -1.6258839517831802e-002 - -6.0836392641067505e-001 - 4.6812709420919418e-002 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - 0 - -9.0061817318201065e-003 - -5.4105937480926514e-001 - 3.7968978285789490e-002 - <_> - - <_> - - - - <_> - 6 0 5 2 -1. - <_> - 6 1 5 1 2. - 0 - 1.1912579648196697e-002 - -8.6741238832473755e-002 - 2.6622739434242249e-001 - <_> - - <_> - - - - <_> - 13 0 3 2 -1. - <_> - 14 1 1 2 3. - 1 - -4.3502021580934525e-002 - -7.2856420278549194e-001 - 7.2535811923444271e-003 - <_> - - <_> - - - - <_> - 5 0 2 3 -1. - <_> - 4 1 2 1 3. - 1 - 1.1481899768114090e-002 - 6.1771500855684280e-002 - -4.0001630783081055e-001 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - -2.1509420126676559e-002 - -6.4027559757232666e-001 - 2.7487259358167648e-002 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - -3.9324969984591007e-003 - -7.3666751384735107e-001 - 2.0676780492067337e-002 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 15 6 2 6 2. - 0 - -4.7581312246620655e-003 - 1.4155970513820648e-001 - -9.4146639108657837e-002 - <_> - - <_> - - - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 2 2. - 1 - -1.7454020678997040e-002 - -3.8733229041099548e-001 - 4.8368278890848160e-002 - <_> - - <_> - - - - <_> - 14 6 4 6 -1. - <_> - 15 6 2 6 2. - 0 - -4.7281790524721146e-002 - -4.6986758708953857e-001 - 5.1076877862215042e-003 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 1 6 2 6 2. - 0 - -1.0604689829051495e-002 - 2.0816320180892944e-001 - -8.8896490633487701e-002 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -6.6771931014955044e-003 - 1.4150680601596832e-001 - -2.3727510124444962e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 8.6871385574340820e-003 - 4.5327730476856232e-002 - -4.2952930927276611e-001 - <_> - - <_> - - - - <_> - 14 5 4 5 -1. - <_> - 15 5 2 5 2. - 0 - -5.8880778960883617e-003 - 6.8065337836742401e-002 - -4.6702779829502106e-002 - <_> - - <_> - - - - <_> - 0 5 4 5 -1. - <_> - 1 5 2 5 2. - 0 - 9.6327122300863266e-003 - -8.0038279294967651e-002 - 2.5579911470413208e-001 - <_> - - <_> - - - - <_> - 8 0 3 4 -1. - <_> - 9 0 1 4 3. - 0 - 1.3295389711856842e-002 - 1.7721930518746376e-002 - -3.2223680615425110e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -2.2117589833214879e-004 - 8.6900167167186737e-002 - -2.2269949316978455e-001 - <_> - - <_> - - - - <_> - 16 4 2 2 -1. - <_> - 17 4 1 1 2. - <_> - 16 5 1 1 2. - 0 - -1.1635709961410612e-004 - 1.1741170287132263e-001 - -1.1703369766473770e-001 - <_> - - <_> - - - - <_> - 0 4 2 2 -1. - <_> - 0 4 1 1 2. - <_> - 1 5 1 1 2. - 0 - -1.1243829794693738e-004 - 1.5170790255069733e-001 - -1.2557980418205261e-001 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - 1.3494050130248070e-002 - -3.2267540693283081e-002 - 1.3067859411239624e-001 - <_> - - <_> - - - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -1.4105159789323807e-002 - 2.5845968723297119e-001 - -8.1946328282356262e-002 - <_> - - <_> - - - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - 0 - -4.9773012287914753e-003 - -2.4286900460720062e-001 - 2.4097239598631859e-002 - <_> - - <_> - - - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - 0 - -1.1385620018700138e-004 - 1.2425749748945236e-001 - -1.9230820238590240e-001 - <_> - - <_> - - - - <_> - 0 9 18 3 -1. - <_> - 6 9 6 3 3. - 0 - -8.6696133017539978e-002 - 2.1385669708251953e-001 - -9.1387532651424408e-002 - <_> - - <_> - - - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - 1.0115380398929119e-002 - -5.7194989174604416e-002 - 3.4964808821678162e-001 - <_> - - <_> - - - - <_> - 15 8 3 4 -1. - <_> - 15 9 3 2 2. - 0 - 1.2917679734528065e-002 - 6.4482808113098145e-002 - -3.6598050594329834e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.0063810274004936e-002 - -4.3763339519500732e-001 - 4.6401929110288620e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.8289760705083609e-003 - 2.6984658837318420e-001 - -4.3675228953361511e-002 - <_> - - <_> - - - - <_> - 3 0 6 4 -1. - <_> - 5 0 2 4 3. - 0 - 2.9884070158004761e-002 - 3.4730698913335800e-002 - -4.9211961030960083e-001 - <_> - - <_> - - - - <_> - 10 0 1 6 -1. - <_> - 8 2 1 2 3. - 1 - 4.9557611346244812e-002 - -1.4452800154685974e-002 - 2.5015810132026672e-001 - <_> - - <_> - - - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - 0 - -1.1242230236530304e-001 - -7.0981448888778687e-001 - 2.4513319134712219e-002 - <_> - - <_> - - - - <_> - 11 5 1 3 -1. - <_> - 10 6 1 1 3. - 1 - -7.2617297992110252e-003 - 1.1259379982948303e-001 - -9.0036422014236450e-002 - <_> - - <_> - - - - <_> - 0 4 3 2 -1. - <_> - 0 5 3 1 2. - 0 - 1.0905790142714977e-002 - 3.5278510302305222e-002 - -4.7903269529342651e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -2.1580660715699196e-002 - 2.4947710335254669e-001 - -6.7340537905693054e-002 - <_> - - <_> - - - - <_> - 6 0 3 4 -1. - <_> - 7 0 1 4 3. - 0 - 1.2180290184915066e-002 - 3.3950321376323700e-002 - -4.9424359202384949e-001 - <_> - - <_> - - - - <_> - 9 3 1 6 -1. - <_> - 7 5 1 2 3. - 1 - 6.1639029532670975e-002 - -1.5156419947743416e-002 - 1.7232060432434082e-001 - <_> - - <_> - - - - <_> - 9 3 6 1 -1. - <_> - 11 5 2 1 3. - 1 - -3.4598629921674728e-002 - 1.7717359960079193e-001 - -9.7788341343402863e-002 - <_> - - <_> - - - - <_> - 8 9 3 3 -1. - <_> - 9 9 1 3 3. - 0 - -6.7015062086284161e-003 - -3.5656741261482239e-001 - 3.8341779261827469e-002 - <_> - - <_> - - - - <_> - 6 10 6 2 -1. - <_> - 8 10 2 2 3. - 0 - 1.7201770097017288e-002 - 2.7020750567317009e-002 - -5.7964348793029785e-001 - <_> - - <_> - - - - <_> - 8 5 4 3 -1. - <_> - 9 5 2 3 2. - 0 - -8.1718079745769501e-003 - 1.1538869887590408e-001 - -7.7362932264804840e-002 - <_> - - <_> - - - - <_> - 6 5 4 3 -1. - <_> - 7 5 2 3 2. - 0 - -5.1809311844408512e-003 - 1.5495200455188751e-001 - -1.1836340278387070e-001 - <_> - - <_> - - - - <_> - 10 6 4 1 -1. - <_> - 11 6 2 1 2. - 0 - -2.5254609063267708e-003 - 2.1247270703315735e-001 - -6.8675488233566284e-002 - <_> - - <_> - - - - <_> - 6 6 2 1 -1. - <_> - 7 6 1 1 2. - 0 - 6.1780458781868219e-004 - -7.9140536487102509e-002 - 2.4011979997158051e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -1.1357679963111877e-001 - 1.8214240670204163e-001 - -9.2686779797077179e-002 - -1.6796829700469971e+000 - 9 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.2196098268032074e-002 - 6.2321871519088745e-001 - -3.0846419930458069e-001 - <_> - - <_> - - - - <_> - 3 2 15 6 -1. - <_> - 3 4 15 2 3. - 0 - -1.6721360385417938e-001 - 3.9328968524932861e-001 - -2.9381090402603149e-001 - <_> - - <_> - - - - <_> - 0 0 4 3 -1. - <_> - 2 0 2 3 2. - 0 - -6.1970818787813187e-003 - 1.9036029279232025e-001 - -4.2775529623031616e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -6.0129230841994286e-003 - 3.3292838931083679e-001 - -1.6145950555801392e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 0 9 18 3 2. - 0 - 1.7938390374183655e-001 - -4.7852781414985657e-001 - 8.2675926387310028e-002 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -2.8582969680428505e-002 - -6.5726870298385620e-001 - 2.7196610346436501e-002 - <_> - - <_> - - - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - 0 - -4.3926457874476910e-003 - 2.2020849585533142e-001 - -1.9411289691925049e-001 - <_> - - <_> - - - - <_> - 10 0 4 5 -1. - <_> - 11 1 2 5 2. - 1 - 1.9471900537610054e-002 - -3.7211358547210693e-002 - 1.0708980262279510e-001 - <_> - - <_> - - - - <_> - 0 4 18 2 -1. - <_> - 6 4 6 2 3. - 0 - -8.2243539392948151e-002 - 1.6777120530605316e-001 - -2.5471720099449158e-001 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - 1.1272449977695942e-002 - 3.0362820252776146e-002 - -3.2199749350547791e-001 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - 7.7296248637139797e-003 - 5.1309239119291306e-002 - -5.2529060840606689e-001 - <_> - - <_> - - - - <_> - 6 6 6 1 -1. - <_> - 8 6 2 1 3. - 0 - -6.6719911992549896e-003 - 1.2681700289249420e-001 - -2.2429600358009338e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -6.2269289046525955e-002 - -4.0020480751991272e-001 - 8.0248616635799408e-002 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 6 1 4 3. - 1 - 5.1855400204658508e-002 - -8.9768264442682266e-003 - 3.4974721074104309e-001 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 4 6 4 1 3. - 1 - -7.2366232052445412e-003 - 1.7443999648094177e-001 - -1.7355519533157349e-001 - <_> - - <_> - - - - <_> - 2 6 16 6 -1. - <_> - 10 6 8 3 2. - <_> - 2 9 8 3 2. - 0 - 7.4777632951736450e-002 - 5.1062591373920441e-002 - -3.6973360180854797e-001 - <_> - - <_> - - - - <_> - 3 9 2 1 -1. - <_> - 3 9 1 1 2. - 1 - -1.1314899893477559e-004 - 1.0845900326967239e-001 - -2.3838439583778381e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -2.9757779557257891e-003 - -3.7891590595245361e-001 - 4.7076370567083359e-002 - <_> - - <_> - - - - <_> - 1 0 16 4 -1. - <_> - 1 1 16 2 2. - 0 - 4.3355841189622879e-002 - -1.0889430344104767e-001 - 2.2752620279788971e-001 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 3.1121319159865379e-002 - -1.0356359928846359e-001 - 3.2433480024337769e-001 - <_> - - <_> - - - - <_> - 3 0 8 4 -1. - <_> - 5 0 4 4 2. - 0 - -3.2188410405069590e-003 - 1.1988320201635361e-001 - -2.5309950113296509e-001 - <_> - - <_> - - - - <_> - 8 0 4 4 -1. - <_> - 9 0 2 4 2. - 0 - -1.3322260230779648e-002 - -4.6327260136604309e-001 - 2.7917400002479553e-002 - <_> - - <_> - - - - <_> - 6 0 4 4 -1. - <_> - 7 0 2 4 2. - 0 - -1.1763609945774078e-002 - -4.9447950720787048e-001 - 6.2780112028121948e-002 - <_> - - <_> - - - - <_> - 5 4 8 2 -1. - <_> - 5 5 8 1 2. - 0 - 2.6546010747551918e-002 - -7.0860996842384338e-002 - 3.8759338855743408e-001 - <_> - - <_> - - - - <_> - 0 0 1 6 -1. - <_> - 0 2 1 2 3. - 0 - 1.0983680374920368e-002 - 5.2215598523616791e-002 - -4.7912430763244629e-001 - <_> - - <_> - - - - <_> - 10 3 1 6 -1. - <_> - 8 5 1 2 3. - 1 - -3.5203430801630020e-002 - 1.4733970165252686e-001 - -4.7205299139022827e-002 - <_> - - <_> - - - - <_> - 3 0 6 5 -1. - <_> - 5 0 2 5 3. - 0 - -4.8792399466037750e-002 - -4.8313421010971069e-001 - 5.1030978560447693e-002 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.4748310204595327e-003 - 8.6995199322700500e-002 - -1.3301639258861542e-001 - <_> - - <_> - - - - <_> - 8 3 6 1 -1. - <_> - 10 5 2 1 3. - 1 - -2.3379849269986153e-002 - 1.2155140191316605e-001 - -1.8905250728130341e-001 - <_> - - <_> - - - - <_> - 5 0 8 6 -1. - <_> - 5 2 8 2 3. - 0 - -1.4968539774417877e-001 - 5.3282499313354492e-001 - -4.3869771063327789e-002 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 0 9 6 2. - <_> - 9 6 9 6 2. - 0 - 4.3147540092468262e-001 - 3.6285050213336945e-002 - -7.2065258026123047e-001 - <_> - - <_> - - - - <_> - 11 9 7 3 -1. - <_> - 11 10 7 1 3. - 0 - 3.2757069915533066e-002 - 1.5488710254430771e-002 - -6.0830378532409668e-001 - <_> - - <_> - - - - <_> - 6 9 6 2 -1. - <_> - 8 9 2 2 3. - 0 - -2.0532529801130295e-002 - -5.3597778081893921e-001 - 3.8419000804424286e-002 - <_> - - <_> - - - - <_> - 11 9 7 3 -1. - <_> - 11 10 7 1 3. - 0 - -4.3228048831224442e-002 - -6.8606472015380859e-001 - 4.9887378700077534e-003 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 5 1 3 3. - 0 - -6.1122281476855278e-003 - 2.4422119557857513e-001 - -8.1252299249172211e-002 - <_> - - <_> - - - - <_> - 12 5 6 3 -1. - <_> - 14 5 2 3 3. - 0 - -1.4673279598355293e-002 - 2.1088060736656189e-001 - -1.6600500047206879e-001 - <_> - - <_> - - - - <_> - 0 5 6 3 -1. - <_> - 2 5 2 3 3. - 0 - -1.0619849897921085e-002 - 1.5236820280551910e-001 - -1.5812709927558899e-001 - <_> - - <_> - - - - <_> - 13 5 5 4 -1. - <_> - 13 6 5 2 2. - 0 - -6.5401569008827209e-002 - -5.9497058391571045e-001 - 1.7393449321389198e-002 - <_> - - <_> - - - - <_> - 0 9 7 3 -1. - <_> - 0 10 7 1 3. - 0 - 2.1991839632391930e-002 - 3.2845780253410339e-002 - -5.8278721570968628e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - -1.6024880111217499e-002 - -5.9319758415222168e-001 - 7.7277477830648422e-003 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -7.4009672971442342e-005 - 1.0054150223731995e-001 - -1.9513580203056335e-001 - <_> - - <_> - - - - <_> - 0 1 18 9 -1. - <_> - 6 1 6 9 3. - 0 - -1.8304589390754700e-001 - 1.1641489714384079e-001 - -1.9243900477886200e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 5.1587168127298355e-003 - 2.7310799807310104e-002 - -6.5126478672027588e-001 - <_> - - <_> - - - - <_> - 15 7 2 3 -1. - <_> - 15 7 1 3 2. - 1 - -4.0543098002672195e-003 - 3.5822600126266479e-002 - -1.2355879694223404e-001 - <_> - - <_> - - - - <_> - 3 7 3 2 -1. - <_> - 3 7 3 1 2. - 1 - 1.0826930403709412e-002 - -5.6947678327560425e-002 - 3.7964731454849243e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.9336320459842682e-002 - -2.7437770366668701e-001 - 2.3742979392409325e-002 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 1 9 2 3 2. - 0 - 3.0844670254737139e-003 - -8.8440679013729095e-002 - 2.0758619904518127e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.4967800118029118e-002 - 3.0504930764436722e-002 - -2.1708330512046814e-001 - <_> - - <_> - - - - <_> - 4 1 7 2 -1. - <_> - 4 2 7 1 2. - 0 - 1.4697089791297913e-002 - -6.8411618471145630e-002 - 2.7859160304069519e-001 - <_> - - <_> - - - - <_> - 15 2 1 2 -1. - <_> - 15 3 1 1 2. - 0 - -1.2393240467645228e-004 - 6.8553149700164795e-002 - -8.7831273674964905e-002 - <_> - - <_> - - - - <_> - 2 2 1 2 -1. - <_> - 2 3 1 1 2. - 0 - -1.0554819891694933e-004 - 1.1712960153818130e-001 - -1.5531350672245026e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 1 6 1 9. - 0 - 1.0648550093173981e-001 - -6.1998508870601654e-002 - 2.7710339426994324e-001 - <_> - - <_> - - - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - 0 - -3.0953379347920418e-002 - 3.0595239996910095e-001 - -6.0716990381479263e-002 - <_> - - <_> - - - - <_> - 15 1 3 2 -1. - <_> - 16 2 1 2 3. - 1 - -2.9498629271984100e-002 - -3.9406108856201172e-001 - 1.6826160252094269e-002 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 4.9228470772504807e-002 - 3.4308459609746933e-002 - -5.0780892372131348e-001 - <_> - - <_> - - - - <_> - 5 4 9 8 -1. - <_> - 5 8 9 4 2. - 0 - -1.1081350035965443e-002 - -6.4533978700637817e-001 - 2.1389039233326912e-002 - <_> - - <_> - - - - <_> - 5 1 1 4 -1. - <_> - 4 2 1 2 2. - 1 - -1.5145439654588699e-002 - -4.2602449655532837e-001 - 3.9356358349323273e-002 - <_> - - <_> - - - - <_> - 10 5 3 2 -1. - <_> - 11 5 1 2 3. - 0 - -5.2890921942889690e-003 - 1.9488410651683807e-001 - -6.0674101114273071e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -7.3016500100493431e-003 - -5.4184222221374512e-001 - 3.1283780932426453e-002 - <_> - - <_> - - - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 0 - -4.2362208478152752e-003 - -2.9087099432945251e-001 - 1.4468260109424591e-002 - <_> - - <_> - - - - <_> - 7 2 2 1 -1. - <_> - 8 2 1 1 2. - 0 - 1.1999450362054631e-004 - -1.3722729682922363e-001 - 1.2392169982194901e-001 - <_> - - <_> - - - - <_> - 16 11 2 1 -1. - <_> - 16 11 1 1 2. - 0 - 1.9742529839277267e-003 - 2.9429899528622627e-002 - -1.6445399820804596e-001 - <_> - - <_> - - - - <_> - 0 11 2 1 -1. - <_> - 1 11 1 1 2. - 0 - -1.2930440425407141e-004 - 1.2450899928808212e-001 - -1.3043509423732758e-001 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - -2.2735600359737873e-003 - 6.0308720916509628e-002 - -1.3316330313682556e-001 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 4.2600082233548164e-003 - -6.8703986704349518e-002 - 2.7337071299552917e-001 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - 0 - -7.8149579465389252e-002 - -4.7220858931541443e-001 - 2.1372530609369278e-002 - <_> - - <_> - - - - <_> - 0 6 1 4 -1. - <_> - 0 8 1 2 2. - 0 - -4.1436408646404743e-003 - -3.3360588550567627e-001 - 5.2412509918212891e-002 - <_> - - <_> - - - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - 0 - -1.1810749856522307e-004 - 1.2552410364151001e-001 - -1.2879179418087006e-001 - <_> - - <_> - - - - <_> - 2 2 2 2 -1. - <_> - 2 2 1 1 2. - <_> - 3 3 1 1 2. - 0 - -1.2218070332892239e-004 - 1.3134269416332245e-001 - -1.2296169996261597e-001 - <_> - - <_> - - - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - 0 - -1.8656680360436440e-002 - -3.5880041122436523e-001 - 1.2528499588370323e-002 - <_> - - <_> - - - - <_> - 6 2 6 7 -1. - <_> - 8 2 2 7 3. - 0 - -3.4258540719747543e-002 - 1.2983490526676178e-001 - -1.2182570248842239e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 7.7113481238484383e-003 - -5.6336041539907455e-002 - 1.5032570064067841e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - -7.5950678437948227e-003 - 3.3188471198081970e-001 - -6.1699498444795609e-002 - <_> - - <_> - - - - <_> - 16 4 2 1 -1. - <_> - 16 4 1 1 2. - 0 - -1.0678060352802277e-002 - -6.6613417863845825e-001 - 1.2147589586675167e-002 - <_> - - <_> - - - - <_> - 0 4 2 1 -1. - <_> - 1 4 1 1 2. - 0 - -1.3358499563764781e-004 - 8.6387783288955688e-002 - -2.0256230235099792e-001 - <_> - - <_> - - - - <_> - 7 11 6 1 -1. - <_> - 9 11 2 1 3. - 0 - -1.4575020410120487e-002 - -7.3572522401809692e-001 - 2.1267030388116837e-002 - <_> - - <_> - - - - <_> - 5 11 6 1 -1. - <_> - 7 11 2 1 3. - 0 - -1.1412939988076687e-002 - -5.0988101959228516e-001 - 2.6772709563374519e-002 - <_> - - <_> - - - - <_> - 15 0 3 3 -1. - <_> - 14 1 3 1 3. - 1 - -3.4162081778049469e-002 - 3.6300870776176453e-001 - -2.7194390073418617e-002 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - -2.2955790162086487e-002 - 2.7859601378440857e-001 - -5.2748218178749084e-002 - <_> - - <_> - - - - <_> - 13 2 3 9 -1. - <_> - 14 5 1 3 9. - 0 - -2.8807529807090759e-001 - -8.1691658496856689e-001 - 9.1450996696949005e-003 - <_> - - <_> - - - - <_> - 2 2 3 9 -1. - <_> - 3 5 1 3 9. - 0 - -2.7352200821042061e-002 - 1.0071670264005661e-001 - -1.6602990031242371e-001 - <_> - - <_> - - - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - 0 - -2.8700050897896290e-003 - 1.2723830342292786e-001 - -5.8128058910369873e-002 - <_> - - <_> - - - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - 0 - -3.0184709466993809e-003 - 1.8212230503559113e-001 - -8.9592203497886658e-002 - <_> - - <_> - - - - <_> - 13 1 3 2 -1. - <_> - 14 2 1 2 3. - 1 - 2.5293970480561256e-002 - 1.2859360314905643e-002 - -2.1852749586105347e-001 - <_> - - <_> - - - - <_> - 5 1 2 3 -1. - <_> - 4 2 2 1 3. - 1 - 9.6635837107896805e-003 - 5.2143279463052750e-002 - -3.0202549695968628e-001 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 10 8 2 1 2. - 1 - 4.5520989224314690e-003 - -2.3607470095157623e-002 - 1.8376210331916809e-001 - <_> - - <_> - - - - <_> - 0 0 18 6 -1. - <_> - 0 3 18 3 2. - 0 - -4.9739900231361389e-001 - -5.3579831123352051e-001 - 2.8743360191583633e-002 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - -1.5186400152742863e-002 - -3.3224511146545410e-001 - 8.5207987576723099e-003 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.6664810478687286e-002 - -3.6154919862747192e-001 - 4.0535591542720795e-002 - <_> - - <_> - - - - <_> - 11 9 1 2 -1. - <_> - 11 9 1 1 2. - 1 - -1.6777740092948079e-003 - 5.6449390947818756e-002 - -8.3506047725677490e-002 - <_> - - <_> - - - - <_> - 7 9 2 1 -1. - <_> - 7 9 1 1 2. - 1 - -8.6815550457686186e-004 - 8.6002722382545471e-002 - -1.6662649810314178e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.1504880860447884e-002 - 3.0984830856323242e-001 - -4.7374550253152847e-002 - <_> - - <_> - - - - <_> - 3 2 12 3 -1. - <_> - 3 3 12 1 3. - 0 - 1.2018860317766666e-002 - -1.1302450299263000e-001 - 1.5601180493831635e-001 - <_> - - <_> - - - - <_> - 11 1 3 1 -1. - <_> - 12 2 1 1 3. - 1 - -4.8626540228724480e-003 - 7.7384807169437408e-002 - -2.6118829846382141e-002 - <_> - - <_> - - - - <_> - 7 1 1 3 -1. - <_> - 6 2 1 1 3. - 1 - 8.0883055925369263e-003 - 5.0701878964900970e-002 - -3.0898410081863403e-001 - <_> - - <_> - - - - <_> - 14 6 4 4 -1. - <_> - 15 6 2 4 2. - 0 - -6.0818139463663101e-003 - 1.0439839959144592e-001 - -5.4040290415287018e-002 - <_> - - <_> - - - - <_> - 4 0 10 6 -1. - <_> - 4 2 10 2 3. - 0 - 2.3746709525585175e-001 - -3.6280110478401184e-002 - 3.9113318920135498e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 6 11 6 1 3. - 0 - -1.7426609992980957e-002 - 1.6401870548725128e-001 - -8.8042907416820526e-002 - <_> - - <_> - - - - <_> - 0 6 4 4 -1. - <_> - 1 6 2 4 2. - 0 - -1.0071439668536186e-002 - 1.9563260674476624e-001 - -6.9586493074893951e-002 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 15 0 2 4 2. - 0 - 1.6055470332503319e-002 - 1.6443690285086632e-002 - -1.8746310472488403e-001 - <_> - - <_> - - - - <_> - 0 0 4 4 -1. - <_> - 1 0 2 4 2. - 0 - -1.9599670544266701e-002 - -4.7449600696563721e-001 - 3.2551929354667664e-002 - <_> - - <_> - - - - <_> - 5 1 12 2 -1. - <_> - 11 1 6 1 2. - <_> - 5 2 6 1 2. - 0 - 1.0608370415866375e-002 - -3.7545830011367798e-002 - 9.7375199198722839e-002 - <_> - - <_> - - - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - 0 - -1.4044529758393764e-002 - 2.1422649919986725e-001 - -6.7895002663135529e-002 - <_> - - <_> - - - - <_> - 12 0 4 2 -1. - <_> - 13 0 2 2 2. - 0 - -1.5813199803233147e-002 - -6.4780187606811523e-001 - 1.3148790225386620e-002 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 3 0 2 2 2. - 0 - -1.5055449679493904e-002 - -6.8386191129684448e-001 - 1.9564820453524590e-002 - <_> - - <_> - - - - <_> - 14 4 4 6 -1. - <_> - 14 6 4 2 3. - 0 - -1.5806560218334198e-001 - -5.3126132488250732e-001 - 3.8119140663184226e-004 - <_> - - <_> - - - - <_> - 2 6 12 4 -1. - <_> - 2 6 6 2 2. - <_> - 8 8 6 2 2. - 0 - 2.0771630108356476e-002 - -1.1685659736394882e-001 - 1.1046549677848816e-001 - <_> - - <_> - - - - <_> - 13 3 3 1 -1. - <_> - 14 4 1 1 3. - 1 - -2.8288820758461952e-002 - -5.9239888191223145e-001 - 7.6842932030558586e-003 - <_> - - <_> - - - - <_> - 5 3 1 3 -1. - <_> - 4 4 1 1 3. - 1 - 5.6896908208727837e-003 - 4.6517208218574524e-002 - -2.9473629593849182e-001 - -1.6673049926757812e+000 - 10 - -1 - <_> - - - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.9956759661436081e-002 - 5.2230298519134521e-001 - -3.5263240337371826e-001 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -2.8569729998707771e-002 - 1.4566479623317719e-001 - -1.1563750356435776e-001 - <_> - - <_> - - - - <_> - 8 1 6 1 -1. - <_> - 10 3 2 1 3. - 1 - -4.1501019150018692e-002 - 3.6643621325492859e-001 - -2.2006149590015411e-001 - <_> - - <_> - - - - <_> - 7 7 9 1 -1. - <_> - 10 7 3 1 3. - 0 - 2.3764509707689285e-002 - -1.0637629777193069e-001 - 3.3757281303405762e-001 - <_> - - <_> - - - - <_> - 1 0 12 3 -1. - <_> - 5 0 4 3 3. - 0 - -3.6841601133346558e-002 - 2.0969760417938232e-001 - -3.5538119077682495e-001 - <_> - - <_> - - - - <_> - 1 4 16 8 -1. - <_> - 1 8 16 4 2. - 0 - 4.5045730471611023e-001 - -2.5148901343345642e-001 - 2.7531328797340393e-001 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -1.1612180242082104e-004 - 1.4220459759235382e-001 - -3.4681579470634460e-001 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 6 1 3 3. - 1 - -2.4308359250426292e-002 - 2.7634850144386292e-001 - -5.8556519448757172e-002 - <_> - - <_> - - - - <_> - 9 2 6 3 -1. - <_> - 11 4 2 3 3. - 1 - -1.0739170014858246e-001 - 2.5513848662376404e-001 - -1.8360190093517303e-001 - <_> - - <_> - - - - <_> - 11 5 6 3 -1. - <_> - 13 5 2 3 3. - 0 - -2.1329099312424660e-002 - 2.8843191266059875e-001 - -1.2600709497928619e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 5 6 3 1 3. - 1 - -9.9198631942272186e-003 - 2.5516051054000854e-001 - -1.7994299530982971e-001 - <_> - - <_> - - - - <_> - 2 10 16 2 -1. - <_> - 2 11 16 1 2. - 0 - 3.3280439674854279e-003 - -3.5088729858398438e-001 - 1.0136920213699341e-001 - <_> - - <_> - - - - <_> - 0 0 1 4 -1. - <_> - 0 1 1 2 2. - 0 - 4.8708179965615273e-003 - 5.1397740840911865e-002 - -5.6077277660369873e-001 - <_> - - <_> - - - - <_> - 9 0 4 3 -1. - <_> - 10 0 2 3 2. - 0 - 9.8150614649057388e-003 - 3.9320938289165497e-002 - -4.5681610703468323e-001 - <_> - - <_> - - - - <_> - 5 0 4 3 -1. - <_> - 6 0 2 3 2. - 0 - -1.2296459637582302e-002 - -5.4089337587356567e-001 - 4.8353921622037888e-002 - <_> - - <_> - - - - <_> - 8 0 5 2 -1. - <_> - 8 1 5 1 2. - 0 - 1.5832969918847084e-002 - -9.2032462358474731e-002 - 3.3556351065635681e-001 - <_> - - <_> - - - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - 0 - -1.1616790288826451e-004 - 1.3700810074806213e-001 - -2.0924359560012817e-001 - <_> - - <_> - - - - <_> - 8 9 4 3 -1. - <_> - 9 9 2 3 2. - 0 - 9.3623008579015732e-003 - 3.4387368708848953e-002 - -6.4315831661224365e-001 - <_> - - <_> - - - - <_> - 6 9 4 3 -1. - <_> - 7 9 2 3 2. - 0 - 7.3407022282481194e-003 - 4.7527570277452469e-002 - -5.2763640880584717e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -9.7040366381406784e-003 - 6.1033390462398529e-002 - -1.1603049933910370e-001 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.6028270125389099e-002 - -5.8752918243408203e-001 - 4.3372269719839096e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -1.0594909638166428e-001 - -6.6139537096023560e-001 - -1.2790230102837086e-003 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - 2.9476720839738846e-002 - -8.3381086587905884e-002 - 3.2143539190292358e-001 - <_> - - <_> - - - - <_> - 13 2 4 4 -1. - <_> - 13 2 2 4 2. - 0 - -1.2502159923315048e-002 - 9.9471800029277802e-002 - -6.8885073065757751e-002 - <_> - - <_> - - - - <_> - 0 1 1 3 -1. - <_> - 0 2 1 1 3. - 0 - -3.1669840682297945e-003 - -3.3657288551330566e-001 - 6.7130729556083679e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -3.7675988860428333e-003 - 2.5373768806457520e-001 - -5.4118018597364426e-002 - <_> - - <_> - - - - <_> - 3 0 3 5 -1. - <_> - 4 0 1 5 3. - 0 - 9.5973610877990723e-003 - 5.0982888787984848e-002 - -3.9950078725814819e-001 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - 6.5194750204682350e-003 - -5.6820228695869446e-002 - 9.7085036337375641e-002 - <_> - - <_> - - - - <_> - 1 0 8 4 -1. - <_> - 1 0 4 2 2. - <_> - 5 2 4 2 2. - 0 - -3.0232090502977371e-002 - 2.6110428571701050e-001 - -7.0189543068408966e-002 - <_> - - <_> - - - - <_> - 4 1 10 6 -1. - <_> - 4 3 10 2 3. - 0 - 1.9264510273933411e-001 - -3.8105361163616180e-002 - 4.9786558747291565e-001 - <_> - - <_> - - - - <_> - 1 2 2 1 -1. - <_> - 2 2 1 1 2. - 0 - -1.0531100269872695e-004 - 1.0181579738855362e-001 - -1.9895200431346893e-001 - <_> - - <_> - - - - <_> - 14 1 4 6 -1. - <_> - 16 1 2 3 2. - <_> - 14 4 2 3 2. - 0 - -1.7167180776596069e-002 - 1.7047409713268280e-001 - -1.1575569957494736e-001 - <_> - - <_> - - - - <_> - 0 1 4 6 -1. - <_> - 0 1 2 3 2. - <_> - 2 4 2 3 2. - 0 - -1.6330849379301071e-002 - 2.3561200499534607e-001 - -8.8093422353267670e-002 - <_> - - <_> - - - - <_> - 16 4 2 3 -1. - <_> - 16 5 2 1 3. - 0 - 9.9368933588266373e-003 - 3.6905229091644287e-002 - -4.8101478815078735e-001 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -9.1113299131393433e-003 - -3.9816591143608093e-001 - 4.4077850878238678e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 1.4140089973807335e-002 - -4.0721800923347473e-001 - 4.7490529716014862e-002 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - -1.8617640016600490e-003 - 2.3672190308570862e-001 - -7.6820157468318939e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - -2.7797909453511238e-002 - -5.5653101205825806e-001 - 1.8978169187903404e-002 - <_> - - <_> - - - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - -2.7056299149990082e-002 - 1.3742800056934357e-001 - -1.2685729563236237e-001 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 5.5972482077777386e-003 - 2.3374689742922783e-002 - -3.7989559769630432e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -1.4289989485405385e-004 - 9.2340193688869476e-002 - -1.8222640454769135e-001 - <_> - - <_> - - - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - 0 - 4.7072111628949642e-003 - -8.2098759710788727e-002 - 1.4458109438419342e-001 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - 8.2740625366568565e-003 - 3.5707078874111176e-002 - -4.9938249588012695e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - 4.1985020041465759e-001 - 2.5246109813451767e-002 - -5.8404290676116943e-001 - <_> - - <_> - - - - <_> - 0 8 3 4 -1. - <_> - 0 9 3 2 2. - 0 - -1.1979590170085430e-002 - -4.3877130746841431e-001 - 3.5344090312719345e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - -1.0584940202534199e-002 - 2.2189530730247498e-001 - -7.5947776436805725e-002 - <_> - - <_> - - - - <_> - 0 4 4 4 -1. - <_> - 0 5 4 2 2. - 0 - -3.6539521068334579e-002 - -7.4320507049560547e-001 - 2.2532209753990173e-002 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - 6.2696770764887333e-003 - 2.5996619835495949e-002 - -4.3524068593978882e-001 - <_> - - <_> - - - - <_> - 5 6 2 2 -1. - <_> - 5 6 1 1 2. - <_> - 6 7 1 1 2. - 0 - -2.2490890696644783e-003 - 2.4717779457569122e-001 - -6.4497016370296478e-002 - <_> - - <_> - - - - <_> - 17 4 1 4 -1. - <_> - 17 5 1 2 2. - 0 - -1.9729709252715111e-002 - -8.2047319412231445e-001 - 7.4640130624175072e-003 - <_> - - <_> - - - - <_> - 0 4 1 4 -1. - <_> - 0 5 1 2 2. - 0 - 4.4493898749351501e-003 - 4.1863039135932922e-002 - -3.7814080715179443e-001 - <_> - - <_> - - - - <_> - 12 7 3 2 -1. - <_> - 13 8 1 2 3. - 1 - 7.3664717376232147e-002 - -4.8542860895395279e-003 - 7.5385349988937378e-001 - <_> - - <_> - - - - <_> - 6 7 2 3 -1. - <_> - 5 8 2 1 3. - 1 - -6.0322289355099201e-003 - 1.7529049515724182e-001 - -9.2345252633094788e-002 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -3.9990269578993320e-003 - 7.0288032293319702e-002 - -1.3759149610996246e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 4.4922139495611191e-003 - -7.2460688650608063e-002 - 2.6984411478042603e-001 - <_> - - <_> - - - - <_> - 14 10 4 2 -1. - <_> - 14 10 2 2 2. - 0 - -9.6887518884614110e-004 - 1.0673040151596069e-001 - -1.0224950313568115e-001 - <_> - - <_> - - - - <_> - 3 0 12 3 -1. - <_> - 3 1 12 1 3. - 0 - 1.4500839635729790e-002 - -1.0403750091791153e-001 - 1.6688880324363708e-001 - <_> - - <_> - - - - <_> - 12 3 3 9 -1. - <_> - 13 3 1 9 3. - 0 - -3.5295259207487106e-002 - -5.0939851999282837e-001 - 2.0862380042672157e-002 - <_> - - <_> - - - - <_> - 0 5 18 6 -1. - <_> - 0 8 18 3 2. - 0 - 8.5677601397037506e-002 - -3.8956940174102783e-001 - 3.8175251334905624e-002 - <_> - - <_> - - - - <_> - 14 10 4 2 -1. - <_> - 14 10 2 2 2. - 0 - -2.5425739586353302e-002 - -3.1342959403991699e-001 - 1.3558049686253071e-002 - <_> - - <_> - - - - <_> - 0 10 4 2 -1. - <_> - 2 10 2 2 2. - 0 - -8.3960685878992081e-003 - 2.0714859664440155e-001 - -9.0884797275066376e-002 - <_> - - <_> - - - - <_> - 4 3 10 2 -1. - <_> - 4 4 10 1 2. - 0 - 2.7257710695266724e-002 - -3.4004978835582733e-002 - 4.2590439319610596e-001 - <_> - - <_> - - - - <_> - 1 1 16 4 -1. - <_> - 1 2 16 2 2. - 0 - 3.2978549599647522e-002 - -9.6014492213726044e-002 - 1.6614159941673279e-001 - <_> - - <_> - - - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - 1 - -6.8808980286121368e-003 - 2.0307220518589020e-001 - -2.9098080471158028e-002 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 4 1 3 1 3. - 1 - 1.2321489863097668e-002 - 5.6583181023597717e-002 - -2.9808661341667175e-001 - <_> - - <_> - - - - <_> - 12 1 2 2 -1. - <_> - 12 1 1 2 2. - 1 - 8.0069275572896004e-003 - -4.5793779194355011e-002 - 6.0080189257860184e-002 - <_> - - <_> - - - - <_> - 6 1 2 2 -1. - <_> - 6 1 2 1 2. - 1 - 1.8184490501880646e-002 - 3.9265241473913193e-002 - -4.3420770764350891e-001 - <_> - - <_> - - - - <_> - 5 2 12 2 -1. - <_> - 11 2 6 1 2. - <_> - 5 3 6 1 2. - 0 - -1.2880899943411350e-002 - 7.1062043309211731e-002 - -3.2926250249147415e-002 - <_> - - <_> - - - - <_> - 1 2 12 2 -1. - <_> - 1 2 6 1 2. - <_> - 7 3 6 1 2. - 0 - 1.7656469717621803e-002 - -5.3377009928226471e-002 - 2.8472688794136047e-001 - <_> - - <_> - - - - <_> - 13 8 1 3 -1. - <_> - 12 9 1 1 3. - 1 - 1.7241619527339935e-002 - 1.2728299945592880e-002 - -5.9147852659225464e-001 - <_> - - <_> - - - - <_> - 5 8 3 1 -1. - <_> - 6 9 1 1 3. - 1 - -8.1344433128833771e-003 - -3.9443930983543396e-001 - 3.5933971405029297e-002 - <_> - - <_> - - - - <_> - 7 2 4 2 -1. - <_> - 8 2 2 2 2. - 0 - 6.2624989077448845e-003 - 4.1950210928916931e-002 - -3.1127980351448059e-001 - <_> - - <_> - - - - <_> - 6 0 6 4 -1. - <_> - 8 0 2 4 3. - 0 - -3.7106670439243317e-002 - -4.6345439553260803e-001 - 3.2157208770513535e-002 - <_> - - <_> - - - - <_> - 8 5 4 2 -1. - <_> - 9 5 2 2 2. - 0 - 5.2173170261085033e-003 - -3.0107850208878517e-002 - 1.4784480631351471e-001 - <_> - - <_> - - - - <_> - 5 8 2 1 -1. - <_> - 5 8 1 1 2. - 1 - -8.0826329067349434e-003 - -2.8399410843849182e-001 - 4.7271709889173508e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 1.8598020076751709e-002 - 1.2912260135635734e-003 - -8.2174521684646606e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.0656929953256622e-004 - 7.9160809516906738e-002 - -1.9015760719776154e-001 - <_> - - <_> - - - - <_> - 11 4 3 4 -1. - <_> - 12 4 1 4 3. - 0 - -6.2989699654281139e-003 - 1.4902189373970032e-001 - -4.3334830552339554e-002 - <_> - - <_> - - - - <_> - 2 3 2 2 -1. - <_> - 2 3 1 1 2. - <_> - 3 4 1 1 2. - 0 - -1.3413479609880596e-004 - 1.2274789810180664e-001 - -1.1754590272903442e-001 - <_> - - <_> - - - - <_> - 9 1 1 8 -1. - <_> - 9 1 1 4 2. - 1 - -8.0092161893844604e-002 - -1.9501920044422150e-001 - 1.7820900306105614e-002 - <_> - - <_> - - - - <_> - 9 1 8 1 -1. - <_> - 9 1 4 1 2. - 1 - -9.0993821620941162e-002 - 4.8223200440406799e-001 - -3.1845889985561371e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 5 1 3 3. - 0 - 1.1353549547493458e-002 - -2.8713610023260117e-002 - 1.0261540114879608e-001 - <_> - - <_> - - - - <_> - 3 6 12 6 -1. - <_> - 7 8 4 2 9. - 0 - 3.9425060153007507e-001 - -2.1073190495371819e-002 - 6.6874951124191284e-001 - <_> - - <_> - - - - <_> - 12 9 6 3 -1. - <_> - 14 9 2 3 3. - 0 - -2.9247280210256577e-002 - -2.3554429411888123e-001 - 2.3138720542192459e-002 - <_> - - <_> - - - - <_> - 0 9 6 3 -1. - <_> - 2 9 2 3 3. - 0 - 9.9638495594263077e-003 - -7.8489832580089569e-002 - 1.8867549300193787e-001 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 15 7 3 1 2. - 1 - -2.3715409915894270e-003 - 4.1485100984573364e-002 - -1.0372100025415421e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -2.3743370547890663e-002 - -3.9640530943870544e-001 - 3.4268859773874283e-002 - <_> - - <_> - - - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - 0 - 1.0030630044639111e-002 - 2.1527150645852089e-002 - -2.5675439834594727e-001 - <_> - - <_> - - - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - 0 - -4.3138000182807446e-003 - 1.9897720217704773e-001 - -7.1912497282028198e-002 - <_> - - <_> - - - - <_> - 16 6 2 5 -1. - <_> - 16 6 1 5 2. - 0 - -2.5737010873854160e-003 - 1.0103909671306610e-001 - -1.2687060236930847e-001 - <_> - - <_> - - - - <_> - 0 6 2 5 -1. - <_> - 1 6 1 5 2. - 0 - 8.6109479889273643e-003 - -5.2193351089954376e-002 - 3.1577721238136292e-001 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - -1.5778529923409224e-003 - -1.9565540552139282e-001 - 3.0738929286599159e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -8.8134268298745155e-003 - -8.0713188648223877e-001 - 1.7111089080572128e-002 - <_> - - <_> - - - - <_> - 16 9 2 2 -1. - <_> - 16 10 2 1 2. - 0 - 3.9245299994945526e-003 - 5.1848150789737701e-002 - -1.0634920001029968e-001 - <_> - - <_> - - - - <_> - 0 9 2 2 -1. - <_> - 0 10 2 1 2. - 0 - -2.6619979180395603e-003 - -3.1994658708572388e-001 - 4.2416218668222427e-002 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -1.5030719805508852e-003 - 9.4091989099979401e-002 - -7.0534393191337585e-002 - <_> - - <_> - - - - <_> - 2 3 2 1 -1. - <_> - 3 3 1 1 2. - 0 - -1.0380429739598185e-004 - 8.6452230811119080e-002 - -1.5703070163726807e-001 - <_> - - <_> - - - - <_> - 0 1 18 3 -1. - <_> - 6 1 6 3 3. - 0 - 1.3336679339408875e-001 - -3.6738030612468719e-002 - 4.2388269305229187e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - -3.4340259153395891e-003 - 2.0463900268077850e-001 - -6.4795367419719696e-002 - <_> - - <_> - - - - <_> - 7 5 4 4 -1. - <_> - 8 5 2 4 2. - 0 - -5.3972420282661915e-003 - 1.0175999999046326e-001 - -1.4838589727878571e-001 - <_> - - <_> - - - - <_> - 7 4 3 2 -1. - <_> - 7 4 3 1 2. - 1 - -3.9831619709730148e-002 - -2.6058611273765564e-001 - 7.4131652712821960e-002 - <_> - - <_> - - - - <_> - 6 2 9 3 -1. - <_> - 9 2 3 3 3. - 0 - -8.1318423151969910e-002 - -4.0708750486373901e-001 - 2.2578919306397438e-002 - <_> - - <_> - - - - <_> - 7 6 2 2 -1. - <_> - 7 7 2 1 2. - 0 - 4.9819168634712696e-003 - -1.1497610062360764e-001 - 1.1413440108299255e-001 - <_> - - <_> - - - - <_> - 11 2 7 4 -1. - <_> - 11 4 7 2 2. - 0 - -9.9393740296363831e-002 - -1.6260729730129242e-001 - 2.3891910910606384e-002 - <_> - - <_> - - - - <_> - 0 1 5 6 -1. - <_> - 0 4 5 3 2. - 0 - -1.0838139802217484e-001 - -3.6615368723869324e-001 - 3.3786319196224213e-002 - <_> - - <_> - - - - <_> - 12 6 6 3 -1. - <_> - 14 6 2 3 3. - 0 - 4.5659400522708893e-002 - -1.9689550623297691e-002 - 3.2644659280776978e-001 - <_> - - <_> - - - - <_> - 0 6 6 3 -1. - <_> - 2 6 2 3 3. - 0 - -1.3475780375301838e-002 - 1.3673679530620575e-001 - -9.8038949072360992e-002 - <_> - - <_> - - - - <_> - 12 9 2 2 -1. - <_> - 13 9 1 1 2. - <_> - 12 10 1 1 2. - 0 - 1.1365469981683418e-004 - -5.1998078823089600e-002 - 6.7236803472042084e-002 - <_> - - <_> - - - - <_> - 4 9 2 2 -1. - <_> - 4 9 1 1 2. - <_> - 5 10 1 1 2. - 0 - 1.3144240074325353e-004 - -1.0585889965295792e-001 - 1.2168779969215393e-001 - <_> - - <_> - - - - <_> - 4 1 12 3 -1. - <_> - 8 1 4 3 3. - 0 - -1.2846590019762516e-002 - 8.2202516496181488e-002 - -7.9589501023292542e-002 - <_> - - <_> - - - - <_> - 4 3 3 4 -1. - <_> - 4 4 3 2 2. - 0 - -4.2092949151992798e-003 - 9.4016201794147491e-002 - -1.3796289265155792e-001 - <_> - - <_> - - - - <_> - 3 1 12 6 -1. - <_> - 3 3 12 2 3. - 0 - 1.6699990257620811e-002 - -9.4395473599433899e-002 - 1.7067569494247437e-001 - <_> - - <_> - - - - <_> - 0 2 18 2 -1. - <_> - 0 3 18 1 2. - 0 - -2.7878250926733017e-002 - 1.4458370208740234e-001 - -1.0783910006284714e-001 - <_> - - <_> - - - - <_> - 12 2 2 1 -1. - <_> - 12 2 1 1 2. - 1 - 2.7518719434738159e-003 - -4.4989299029111862e-002 - 4.7646138817071915e-002 - <_> - - <_> - - - - <_> - 6 2 1 2 -1. - <_> - 6 2 1 1 2. - 1 - 8.1301108002662659e-003 - 4.4808190315961838e-002 - -3.2438778877258301e-001 - <_> - - <_> - - - - <_> - 2 4 15 3 -1. - <_> - 7 4 5 3 3. - 0 - -2.4894459545612335e-001 - -3.0193850398063660e-001 - 2.7400370687246323e-002 - <_> - - <_> - - - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - 0 - -7.5494530610740185e-003 - -5.3039801120758057e-001 - 2.3136850446462631e-002 - <_> - - <_> - - - - <_> - 12 0 6 8 -1. - <_> - 15 0 3 4 2. - <_> - 12 4 3 4 2. - 0 - 5.8778919279575348e-002 - -2.6784939691424370e-002 - 2.1899110078811646e-001 - -1.6442040205001831e+000 - 11 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1325679719448090e-002 - -4.7803491353988647e-001 - 7.3498201370239258e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - -5.9533089399337769e-002 - 5.5771350860595703e-001 - -2.2670570015907288e-001 - <_> - - <_> - - - - <_> - 7 5 2 2 -1. - <_> - 7 5 1 1 2. - <_> - 8 6 1 1 2. - 0 - -3.1314720399677753e-003 - 4.4743809103965759e-001 - -1.3644909858703613e-001 - <_> - - <_> - - - - <_> - 6 4 7 4 -1. - <_> - 6 6 7 2 2. - 0 - 3.2649870961904526e-002 - -1.5226930379867554e-001 - 7.8735552728176117e-002 - <_> - - <_> - - - - <_> - 5 6 2 6 -1. - <_> - 5 9 2 3 2. - 0 - 1.2642489373683929e-001 - -4.1502929525449872e-004 - -1.0683220214843750e+003 - <_> - - <_> - - - - <_> - 10 3 4 4 -1. - <_> - 10 3 2 4 2. - 1 - -7.6149761676788330e-002 - 8.4858410060405731e-002 - -6.4545206725597382e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -5.6127519346773624e-003 - 4.4183671474456787e-001 - -1.0350040346384048e-001 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 1.0242169810226187e-004 - -9.8213642835617065e-002 - 1.2914030253887177e-001 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -6.8429631937760860e-005 - 1.0027779638767242e-001 - -3.8002538681030273e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - 1.9151799380779266e-002 - -7.5300611555576324e-002 - 4.5866578817367554e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -4.0838099084794521e-003 - 5.1005601882934570e-001 - -6.4336180686950684e-002 - <_> - - <_> - - - - <_> - 7 0 8 3 -1. - <_> - 9 0 4 3 2. - 0 - -3.2537680119276047e-002 - -4.6181130409240723e-001 - 3.3831451088190079e-002 - <_> - - <_> - - - - <_> - 0 0 16 4 -1. - <_> - 4 0 8 4 2. - 0 - -8.7081208825111389e-002 - 1.6511060297489166e-001 - -2.0930479466915131e-001 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - -1.4256989583373070e-002 - 1.4572089910507202e-001 - -6.4026951789855957e-002 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - -6.5033003687858582e-002 - 5.1746249198913574e-001 - -7.6861917972564697e-002 - <_> - - <_> - - - - <_> - 10 2 2 6 -1. - <_> - 8 4 2 2 3. - 1 - 3.0242659151554108e-002 - -1.7024759203195572e-002 - 2.2390039265155792e-001 - <_> - - <_> - - - - <_> - 8 2 6 2 -1. - <_> - 10 4 2 2 3. - 1 - -5.1224708557128906e-002 - 1.4911690354347229e-001 - -2.7958190441131592e-001 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - 9.4173839897848666e-005 - -2.2882409393787384e-001 - 8.2659862935543060e-002 - <_> - - <_> - - - - <_> - 5 4 6 2 -1. - <_> - 5 4 3 2 2. - 1 - 1.0907740332186222e-002 - 6.5371036529541016e-002 - -4.9981170892715454e-001 - <_> - - <_> - - - - <_> - 1 3 16 4 -1. - <_> - 5 3 8 4 2. - 0 - -2.6308920979499817e-001 - -6.0524332523345947e-001 - 4.5024640858173370e-002 - <_> - - <_> - - - - <_> - 0 2 7 4 -1. - <_> - 0 4 7 2 2. - 0 - -7.3864251375198364e-002 - -4.8135051131248474e-001 - 4.9323990941047668e-002 - <_> - - <_> - - - - <_> - 12 10 1 2 -1. - <_> - 12 11 1 1 2. - 0 - -1.1241710308240727e-004 - 1.3900199532508850e-001 - -4.0958389639854431e-002 - <_> - - <_> - - - - <_> - 5 10 1 2 -1. - <_> - 5 11 1 1 2. - 0 - 9.9417651654221117e-005 - -2.8291520476341248e-001 - 9.7753129899501801e-002 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - 4.0392991155385971e-002 - 6.6282726824283600e-002 - -3.1161430478096008e-001 - <_> - - <_> - - - - <_> - 0 2 2 2 -1. - <_> - 0 2 1 1 2. - <_> - 1 3 1 1 2. - 0 - -9.7815187473315746e-005 - 1.5816099941730499e-001 - -1.4707480370998383e-001 - <_> - - <_> - - - - <_> - 4 0 14 2 -1. - <_> - 11 0 7 1 2. - <_> - 4 1 7 1 2. - 0 - -3.0936010181903839e-002 - 2.6339599490165710e-001 - -2.3398019373416901e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 7 1 4 1 3. - 0 - 1.3425219804048538e-002 - -8.9827023446559906e-002 - 2.6492318511009216e-001 - <_> - - <_> - - - - <_> - 1 10 16 1 -1. - <_> - 5 10 8 1 2. - 0 - -3.3873628824949265e-002 - 2.8317770361900330e-001 - -7.7808901667594910e-002 - <_> - - <_> - - - - <_> - 7 1 4 4 -1. - <_> - 7 2 4 2 2. - 0 - 1.2463210150599480e-002 - -1.2371910363435745e-001 - 1.8724919855594635e-001 - <_> - - <_> - - - - <_> - 17 0 1 8 -1. - <_> - 17 2 1 4 2. - 0 - 2.9030779376626015e-002 - 9.0519478544592857e-003 - -4.1493371129035950e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.1256829835474491e-002 - 8.7845213711261749e-002 - -2.3316149413585663e-001 - <_> - - <_> - - - - <_> - 7 6 4 3 -1. - <_> - 7 7 4 1 3. - 0 - -1.5189910307526588e-002 - 2.9291531443595886e-001 - -8.0204613506793976e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -9.1453723143786192e-005 - 1.5025730431079865e-001 - -1.3389849662780762e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - 0 - -1.7369290813803673e-002 - 2.1264329552650452e-001 - -1.1079180240631104e-001 - <_> - - <_> - - - - <_> - 0 0 1 8 -1. - <_> - 0 2 1 4 2. - 0 - 6.0836751945316792e-003 - 6.6616423428058624e-002 - -3.2809430360794067e-001 - <_> - - <_> - - - - <_> - 4 2 12 2 -1. - <_> - 8 2 4 2 3. - 0 - -1.8416589125990868e-002 - 1.0930880159139633e-001 - -1.0196469724178314e-001 - <_> - - <_> - - - - <_> - 7 2 4 10 -1. - <_> - 7 2 2 5 2. - <_> - 9 7 2 5 2. - 0 - 2.4164859205484390e-002 - 6.5767362713813782e-002 - -3.2412400841712952e-001 - <_> - - <_> - - - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - 0 - -8.7694352259859443e-005 - 1.1597049981355667e-001 - -1.1484769731760025e-001 - <_> - - <_> - - - - <_> - 1 0 16 3 -1. - <_> - 1 1 16 1 3. - 0 - -2.7230460196733475e-002 - 2.6190671324729919e-001 - -7.0017747581005096e-002 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 7.9280352219939232e-003 - 4.4160388410091400e-002 - -3.5706248879432678e-001 - <_> - - <_> - - - - <_> - 9 4 1 3 -1. - <_> - 8 5 1 1 3. - 1 - 2.9761910438537598e-002 - -2.6648679748177528e-002 - 7.6121932268142700e-001 - <_> - - <_> - - - - <_> - 14 7 3 2 -1. - <_> - 14 7 3 1 2. - 1 - 2.3093869909644127e-002 - 1.1457229964435101e-002 - -4.8356440663337708e-001 - <_> - - <_> - - - - <_> - 4 7 2 3 -1. - <_> - 4 7 1 3 2. - 1 - 1.5517040155827999e-002 - 2.8549319133162498e-002 - -5.8977079391479492e-001 - <_> - - <_> - - - - <_> - 16 1 2 2 -1. - <_> - 17 1 1 1 2. - <_> - 16 2 1 1 2. - 0 - -9.1348258138168603e-005 - 6.3839852809906006e-002 - -6.8278312683105469e-002 - <_> - - <_> - - - - <_> - 0 1 2 2 -1. - <_> - 0 1 1 1 2. - <_> - 1 2 1 1 2. - 0 - -9.5886833150871098e-005 - 1.3642780482769012e-001 - -1.2203469872474670e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - -7.8461649536620826e-005 - 9.5480233430862427e-002 - -8.4051437675952911e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -8.5865067376289517e-005 - 8.1667177379131317e-002 - -2.2435750067234039e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 6 1 1 9. - 0 - 1.8028339371085167e-002 - -4.2098421603441238e-002 - 2.6320070028305054e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 6 1 1 9. - 0 - -1.1890250258147717e-002 - 1.8222090601921082e-001 - -9.6351742744445801e-002 - <_> - - <_> - - - - <_> - 9 5 2 1 -1. - <_> - 9 5 1 1 2. - 0 - 7.6375443313736469e-005 - -3.6046039313077927e-002 - 6.4947687089443207e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 8 5 1 1 9. - 0 - -9.7775431349873543e-003 - 1.3119940459728241e-001 - -1.3694000244140625e-001 - <_> - - <_> - - - - <_> - 9 0 6 4 -1. - <_> - 11 0 2 4 3. - 0 - 2.0142890512943268e-002 - 4.9725331366062164e-002 - -2.0494620501995087e-001 - <_> - - <_> - - - - <_> - 6 6 1 3 -1. - <_> - 5 7 1 1 3. - 1 - -6.0250670649111271e-003 - 1.8385030329227448e-001 - -8.9287042617797852e-002 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - -5.2001518197357655e-003 - 2.7691179513931274e-001 - -6.5970212221145630e-002 - <_> - - <_> - - - - <_> - 1 2 12 2 -1. - <_> - 5 2 4 2 3. - 0 - -1.6988459974527359e-002 - 1.0599619895219803e-001 - -1.7461700737476349e-001 - <_> - - <_> - - - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - 0 - 1.6818750649690628e-002 - -1.3084490597248077e-001 - 1.3686789572238922e-001 - <_> - - <_> - - - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - 9.4254389405250549e-003 - 3.5684291273355484e-002 - -4.7307041287422180e-001 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -1.7591860145330429e-002 - 2.8785240650177002e-001 - -6.0098338872194290e-002 - <_> - - <_> - - - - <_> - 4 0 3 3 -1. - <_> - 3 1 3 1 3. - 1 - -1.6125669702887535e-002 - -3.0210059881210327e-001 - 5.8409459888935089e-002 - <_> - - <_> - - - - <_> - 15 7 3 4 -1. - <_> - 16 7 1 4 3. - 0 - 2.0552899688482285e-002 - 4.2291129939258099e-003 - -2.4721190333366394e-001 - <_> - - <_> - - - - <_> - 0 5 3 4 -1. - <_> - 1 5 1 4 3. - 0 - -1.0046569630503654e-002 - 2.7138590812683105e-001 - -6.3029937446117401e-002 - <_> - - <_> - - - - <_> - 8 1 4 2 -1. - <_> - 9 1 2 2 2. - 0 - -7.2175520472228527e-003 - -2.5999858975410461e-001 - 2.3320039734244347e-002 - <_> - - <_> - - - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - 0 - -9.3304775655269623e-003 - -5.2186262607574463e-001 - 2.9735490679740906e-002 - <_> - - <_> - - - - <_> - 10 7 3 2 -1. - <_> - 10 7 3 1 2. - 1 - -4.0984921157360077e-002 - -2.2182470560073853e-001 - 5.1118140108883381e-003 - <_> - - <_> - - - - <_> - 3 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - 2.7245599776506424e-002 - 3.0876399949193001e-002 - -5.1215821504592896e-001 - <_> - - <_> - - - - <_> - 11 6 2 1 -1. - <_> - 11 6 1 1 2. - 0 - 3.0668000690639019e-003 - -4.3708208948373795e-002 - 2.7001819014549255e-001 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - -9.3389411631505936e-005 - 1.4854280650615692e-001 - -1.1542809754610062e-001 - -1.5643759965896606e+000 - 12 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 8.3494018763303757e-003 - -5.3271728754043579e-001 - 7.3268449306488037e-001 - <_> - - <_> - - - - <_> - 6 1 11 4 -1. - <_> - 6 2 11 2 2. - 0 - 3.4267958253622055e-002 - -2.5425639748573303e-001 - 5.1729089021682739e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - -3.9879079908132553e-002 - 6.3676887750625610e-001 - -1.6440890729427338e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -1.2493499554693699e-002 - 6.1780160665512085e-001 - -1.5069130063056946e-001 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - 9.4682415947318077e-003 - -1.4532479643821716e-001 - 6.0617917776107788e-001 - <_> - - <_> - - - - <_> - 4 2 10 3 -1. - <_> - 4 3 10 1 3. - 0 - -2.7246329933404922e-002 - 5.3559631109237671e-001 - -8.9151263236999512e-002 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -5.6648440659046173e-002 - 6.2180757522583008e-001 - -8.5310757160186768e-002 - <_> - - <_> - - - - <_> - 7 7 4 3 -1. - <_> - 7 8 4 1 3. - 0 - 1.4102620072662830e-002 - -9.3592159450054169e-002 - 4.4376650452613831e-001 - <_> - - <_> - - - - <_> - 5 3 8 7 -1. - <_> - 9 3 4 7 2. - 0 - 3.3257868885993958e-001 - -1.2685759924352169e-002 - -8.2546881103515625e+002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 9.9063739180564880e-003 - -1.0738559812307358e-001 - 5.0298547744750977e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 8.3582093939185143e-003 - 1.5422430634498596e-001 - -3.5790690779685974e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -3.2779511064291000e-002 - 6.4060282707214355e-001 - -1.4030179940164089e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - -2.0835140720009804e-002 - 5.4712289571762085e-001 - -7.4879899621009827e-002 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 8 1 1 1 2. - 0 - -5.1647479267558083e-005 - 1.8039730191230774e-001 - -2.2248619794845581e-001 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.1204670667648315e-002 - 2.9656040668487549e-001 - -1.2957809865474701e-001 - <_> - - <_> - - - - <_> - 12 5 3 2 -1. - <_> - 13 6 1 2 3. - 1 - -1.7422020435333252e-002 - 3.9275988936424255e-001 - -6.5897516906261444e-002 - <_> - - <_> - - - - <_> - 1 5 6 3 -1. - <_> - 3 5 2 3 3. - 0 - -1.2536820024251938e-002 - 2.0158059895038605e-001 - -1.9292819499969482e-001 - <_> - - <_> - - - - <_> - 12 9 2 1 -1. - <_> - 12 9 1 1 2. - 0 - -4.8037480155471712e-005 - 1.2082680314779282e-001 - -1.4217889308929443e-001 - <_> - - <_> - - - - <_> - 4 0 9 12 -1. - <_> - 4 6 9 6 2. - 0 - 6.5716922283172607e-002 - -3.0140811204910278e-001 - 1.0884209722280502e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - 3.8559301174245775e-005 - -1.1485870182514191e-001 - 1.2233419716358185e-001 - <_> - - <_> - - - - <_> - 3 10 2 2 -1. - <_> - 3 10 1 1 2. - <_> - 4 11 1 1 2. - 0 - 4.6443768951576203e-005 - -1.6948090493679047e-001 - 1.8788060545921326e-001 - <_> - - <_> - - - - <_> - 13 10 2 2 -1. - <_> - 14 10 1 1 2. - <_> - 13 11 1 1 2. - 0 - -4.1368581150891259e-005 - 2.4010670185089111e-001 - -1.4868290722370148e-001 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -5.4830620065331459e-003 - 6.1856138706207275e-001 - -4.8334259539842606e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - 1.7779540270566940e-002 - -2.6616660878062248e-002 - 4.9245241284370422e-001 - <_> - - <_> - - - - <_> - 0 10 4 2 -1. - <_> - 0 11 4 1 2. - 0 - -4.0962300263345242e-003 - -5.4207402467727661e-001 - 5.9048470109701157e-002 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -1.6451759263873100e-002 - 7.6350831985473633e-001 - -2.5473199784755707e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 9 11 8 1 2. - 0 - -2.2241640836000443e-002 - -3.6452740430831909e-001 - 8.6116299033164978e-002 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -2.7459589764475822e-003 - -2.4589340388774872e-001 - 3.3040750771760941e-002 - <_> - - <_> - - - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - 0 - -4.0295468352269381e-005 - 2.0092859864234924e-001 - -2.0132540166378021e-001 - <_> - - <_> - - - - <_> - 11 6 3 2 -1. - <_> - 12 6 1 2 3. - 0 - -4.5473738573491573e-003 - 2.1073690056800842e-001 - -4.5514870434999466e-002 - <_> - - <_> - - - - <_> - 4 6 3 2 -1. - <_> - 5 6 1 2 3. - 0 - -3.7957709282636642e-003 - 3.0283540487289429e-001 - -9.5874093472957611e-002 - <_> - - <_> - - - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - -6.6188150085508823e-003 - 7.9740211367607117e-002 - -1.6595689952373505e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - 0 - -4.5857861550757661e-005 - 1.7260129749774933e-001 - -1.6178980469703674e-001 - <_> - - <_> - - - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - 0 - -4.8166970373131335e-005 - 1.4548319578170776e-001 - -1.6439950466156006e-001 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 7 1 3 2. - 1 - -5.2052710088901222e-005 - 8.3391591906547546e-002 - -3.4013390541076660e-001 - <_> - - <_> - - - - <_> - 8 1 2 1 -1. - <_> - 8 1 1 1 2. - 0 - 4.5986729674041271e-005 - -1.2061770260334015e-001 - 2.4329949915409088e-001 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -4.6646920964121819e-005 - 1.0119310021400452e-001 - -3.0405890941619873e-001 - <_> - - <_> - - - - <_> - 16 3 2 2 -1. - <_> - 17 3 1 1 2. - <_> - 16 4 1 1 2. - 0 - 4.7388079110532999e-005 - -1.1716579645872116e-001 - 2.1742169559001923e-001 - <_> - - <_> - - - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - 0 - -4.6242319513112307e-005 - 1.8022020161151886e-001 - -1.5529049932956696e-001 - -1.6128469705581665e+000 - 13 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.6110079362988472e-002 - -4.1071599721908569e-001 - 7.7589380741119385e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -2.5305269286036491e-002 - 6.6618782281875610e-001 - -1.5485580265522003e-001 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -2.5699760764837265e-002 - 3.3241620659828186e-001 - -2.3156909644603729e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -5.7776989415287971e-003 - 4.1196781396865845e-001 - -1.3117870688438416e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 8.1719085574150085e-003 - -6.9755800068378448e-002 - 6.4852428436279297e-001 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -6.5088421106338501e-002 - 6.1390417814254761e-001 - -5.9815850108861923e-002 - <_> - - <_> - - - - <_> - 1 0 9 10 -1. - <_> - 4 0 3 10 3. - 0 - 1.0464339703321457e-001 - 9.0163193643093109e-002 - -4.5573940873146057e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -3.1685851514339447e-002 - 5.5533021688461304e-001 - -6.2855109572410583e-002 - <_> - - <_> - - - - <_> - 5 6 2 1 -1. - <_> - 6 6 1 1 2. - 0 - -8.0294553190469742e-003 - 6.7273747920989990e-001 - -4.3747950345277786e-002 - <_> - - <_> - - - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 0 - 2.4209800176322460e-003 - 4.0785990655422211e-002 - -3.1722348928451538e-001 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 4 5 2 3 2. - 0 - -8.1889061257243156e-003 - 2.6846039295196533e-001 - -1.2580759823322296e-001 - <_> - - <_> - - - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - 0 - 9.3489009886980057e-003 - 5.0966899842023849e-002 - -3.9423060417175293e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - 6.9262371398508549e-003 - 6.0307100415229797e-002 - -5.6436121463775635e-001 - <_> - - <_> - - - - <_> - 5 7 8 3 -1. - <_> - 5 8 8 1 3. - 0 - 2.3801159113645554e-002 - -9.9566370248794556e-002 - 3.3963540196418762e-001 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 2 0 1 1 2. - 0 - -4.1956758650485426e-005 - 9.3987770378589630e-002 - -3.0422720313072205e-001 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 1.3572919368743896e-001 - 2.9968850314617157e-002 - -4.2673060297966003e-001 - <_> - - <_> - - - - <_> - 4 5 6 2 -1. - <_> - 7 5 3 2 2. - 0 - -2.1524201147258282e-003 - 8.3092503249645233e-002 - -3.2027548551559448e-001 - <_> - - <_> - - - - <_> - 12 7 1 4 -1. - <_> - 12 9 1 2 2. - 0 - -2.2321950644254684e-002 - 3.8670408725738525e-001 - -2.8302310965955257e-003 - <_> - - <_> - - - - <_> - 0 10 2 2 -1. - <_> - 0 11 2 1 2. - 0 - -3.3701520878821611e-003 - -5.4070180654525757e-001 - 4.8329830169677734e-002 - <_> - - <_> - - - - <_> - 17 8 1 4 -1. - <_> - 17 9 1 2 2. - 0 - -2.8812189120799303e-003 - -4.1134339570999146e-001 - 5.0348810851573944e-002 - <_> - - <_> - - - - <_> - 4 1 10 3 -1. - <_> - 4 2 10 1 3. - 0 - 3.3026181161403656e-002 - -9.1724671423435211e-002 - 2.7849179506301880e-001 - <_> - - <_> - - - - <_> - 5 0 8 4 -1. - <_> - 5 1 8 2 2. - 0 - -4.8657391220331192e-002 - 5.2620977163314819e-001 - -4.8676058650016785e-002 - <_> - - <_> - - - - <_> - 0 8 1 4 -1. - <_> - 0 9 1 2 2. - 0 - -3.7647879216820002e-003 - -4.5844191312789917e-001 - 6.4317077398300171e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - 2.0504679530858994e-002 - -9.4328112900257111e-002 - 2.9794049263000488e-001 - <_> - - <_> - - - - <_> - 4 0 2 1 -1. - <_> - 5 0 1 1 2. - 0 - -3.6554280086420476e-005 - 1.2746079266071320e-001 - -1.9186210632324219e-001 - <_> - - <_> - - - - <_> - 13 9 1 2 -1. - <_> - 13 9 1 1 2. - 1 - 9.4470614567399025e-003 - 9.2077916488051414e-003 - -5.2767378091812134e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - 1.6520130448043346e-003 - 5.3146030753850937e-002 - -4.0580609440803528e-001 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 7 1 3 3. - 1 - -1.9722340628504753e-002 - 2.8976440429687500e-001 - -5.8757949620485306e-002 - <_> - - <_> - - - - <_> - 3 6 3 3 -1. - <_> - 2 7 3 1 3. - 1 - 1.5641599893569946e-002 - -8.5858047008514404e-002 - 2.7374029159545898e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - -1.2213470414280891e-002 - -1.8302009999752045e-001 - 2.5141900405287743e-002 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - 5.5025829933583736e-003 - 7.0544131100177765e-002 - -3.0967020988464355e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - -7.9423412680625916e-003 - 3.8959950208663940e-001 - -4.3679900467395782e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 8.4905028343200684e-003 - -7.2534352540969849e-002 - 3.3101171255111694e-001 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - -1.4299919828772545e-002 - 5.9872722625732422e-001 - -2.7945769950747490e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - 6.7005599848926067e-003 - 4.8855118453502655e-002 - -5.2919381856918335e-001 - <_> - - <_> - - - - <_> - 15 6 3 3 -1. - <_> - 16 6 1 3 3. - 0 - 3.9664511568844318e-003 - -4.3123081326484680e-002 - 1.0984309762716293e-001 - <_> - - <_> - - - - <_> - 0 6 3 3 -1. - <_> - 1 6 1 3 3. - 0 - -7.5540919788181782e-003 - 3.0421760678291321e-001 - -7.2253189980983734e-002 - <_> - - <_> - - - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - 0 - -3.7034100387245417e-003 - -5.4518002271652222e-001 - 3.5437230020761490e-002 - <_> - - <_> - - - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - 0 - -2.5188990402966738e-003 - -4.5737591385841370e-001 - 5.5983148515224457e-002 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 2.0579920709133148e-001 - -2.7724468964152038e-004 - -6.6996318101882935e-001 - <_> - - <_> - - - - <_> - 4 8 10 3 -1. - <_> - 4 9 10 1 3. - 0 - 2.9303770512342453e-002 - -5.6496240198612213e-002 - 3.5997670888900757e-001 - <_> - - <_> - - - - <_> - 8 4 10 6 -1. - <_> - 13 4 5 3 2. - <_> - 8 7 5 3 2. - 0 - 6.9648310542106628e-002 - 3.1737551093101501e-002 - -6.8570420145988464e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 9 11 8 1 2. - 0 - -4.2670730501413345e-002 - -5.1828289031982422e-001 - 3.7313610315322876e-002 - <_> - - <_> - - - - <_> - 14 5 4 4 -1. - <_> - 14 7 4 2 2. - 0 - 5.3184129297733307e-002 - -3.8423359394073486e-002 - 1.3666149973869324e-001 - <_> - - <_> - - - - <_> - 0 2 18 10 -1. - <_> - 0 2 9 5 2. - <_> - 9 7 9 5 2. - 0 - 3.1404110789299011e-001 - 3.7239000201225281e-002 - -6.1689531803131104e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - -1.1121670156717300e-001 - -3.4866338968276978e-001 - 5.0600431859493256e-002 - <_> - - <_> - - - - <_> - 9 3 4 1 -1. - <_> - 10 4 2 1 2. - 1 - -1.2414909899234772e-002 - 1.6056859493255615e-001 - -1.3499259948730469e-001 - <_> - - <_> - - - - <_> - 10 4 3 4 -1. - <_> - 11 4 1 4 3. - 0 - -1.0976280085742474e-002 - 4.0659919381141663e-001 - -7.1035951375961304e-002 - <_> - - <_> - - - - <_> - 5 4 3 4 -1. - <_> - 6 4 1 4 3. - 0 - -1.0068650357425213e-002 - 3.9899739623069763e-001 - -4.7854758799076080e-002 - <_> - - <_> - - - - <_> - 12 10 2 1 -1. - <_> - 12 10 1 1 2. - 0 - -4.4595100916922092e-005 - 1.2453170120716095e-001 - -1.5943150222301483e-001 - <_> - - <_> - - - - <_> - 0 3 2 3 -1. - <_> - 0 4 2 1 3. - 0 - 5.2231438457965851e-003 - 5.1684871315956116e-002 - -3.7264791131019592e-001 - <_> - - <_> - - - - <_> - 9 0 9 6 -1. - <_> - 9 3 9 3 2. - 0 - -3.1584289669990540e-001 - -5.6410568952560425e-001 - 1.6620539128780365e-002 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -4.9251379095949233e-005 - 6.4569346606731415e-002 - -2.6977449655532837e-001 - <_> - - <_> - - - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - -1.5871439129114151e-002 - -1.0536020249128342e-001 - 2.2641019895672798e-002 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 4 1 4 1 3. - 0 - -1.4802659861743450e-002 - 3.0771070718765259e-001 - -5.6442748755216599e-002 - <_> - - <_> - - - - <_> - 11 8 2 2 -1. - <_> - 11 8 2 1 2. - 1 - 6.2432001868728548e-005 - -1.3522149994969368e-002 - 6.4676657319068909e-002 - <_> - - <_> - - - - <_> - 0 3 1 2 -1. - <_> - 0 4 1 1 2. - 0 - -3.6458349786698818e-003 - -3.7946069240570068e-001 - 4.3726790696382523e-002 - <_> - - <_> - - - - <_> - 12 2 4 6 -1. - <_> - 10 4 4 2 3. - 1 - -1.2038329988718033e-001 - 8.3884507417678833e-002 - -5.7846531271934509e-002 - <_> - - <_> - - - - <_> - 6 2 6 4 -1. - <_> - 8 4 2 4 3. - 1 - -1.5285080671310425e-001 - -4.1195228695869446e-001 - 4.1427899152040482e-002 - <_> - - <_> - - - - <_> - 9 4 3 4 -1. - <_> - 10 4 1 4 3. - 0 - -2.4037640541791916e-002 - 3.6811178922653198e-001 - -2.8063010424375534e-002 - <_> - - <_> - - - - <_> - 0 9 4 2 -1. - <_> - 0 10 4 1 2. - 0 - -5.0715710967779160e-003 - -4.3527451157569885e-001 - 3.7839580327272415e-002 - <_> - - <_> - - - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - 0 - 2.2647699806839228e-003 - 3.3513750880956650e-002 - -3.1196358799934387e-001 - <_> - - <_> - - - - <_> - 2 11 2 1 -1. - <_> - 3 11 1 1 2. - 0 - 2.8620659577427432e-005 - -1.2641629576683044e-001 - 1.4573280513286591e-001 - <_> - - <_> - - - - <_> - 14 3 4 6 -1. - <_> - 14 5 4 2 3. - 0 - -1.5032389760017395e-001 - -5.1674288511276245e-001 - 6.3420650549232960e-003 - <_> - - <_> - - - - <_> - 0 3 4 6 -1. - <_> - 0 5 4 2 3. - 0 - -1.0515840258449316e-003 - 7.3436759412288666e-002 - -2.2326730191707611e-001 - <_> - - <_> - - - - <_> - 9 5 3 3 -1. - <_> - 10 5 1 3 3. - 0 - -6.2594460323452950e-003 - 1.0833080112934113e-001 - -4.8997879028320313e-002 - <_> - - <_> - - - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - 0 - -1.9374769181013107e-002 - 2.9532751441001892e-001 - -5.0250150263309479e-002 - <_> - - <_> - - - - <_> - 9 2 2 1 -1. - <_> - 9 2 1 1 2. - 0 - -4.1956758650485426e-005 - 8.0195806920528412e-002 - -1.0686949640512466e-001 - <_> - - <_> - - - - <_> - 7 5 3 1 -1. - <_> - 8 6 1 1 3. - 1 - -3.4468329977244139e-003 - 1.2324280291795731e-001 - -1.1800339818000793e-001 - <_> - - <_> - - - - <_> - 10 6 4 2 -1. - <_> - 11 6 2 2 2. - 0 - 2.0574549213051796e-002 - -2.3928789421916008e-002 - 2.7955460548400879e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.6083529219031334e-002 - 6.2995746731758118e-002 - -3.2501700520515442e-001 - <_> - - <_> - - - - <_> - 3 0 12 9 -1. - <_> - 6 0 6 9 2. - 0 - -1.5888260304927826e-001 - -1.9509589672088623e-001 - 8.4130212664604187e-002 - <_> - - <_> - - - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - 0 - -1.0786239989101887e-002 - 3.0075341463088989e-001 - -5.3811751306056976e-002 - <_> - - <_> - - - - <_> - 16 7 2 5 -1. - <_> - 16 7 1 5 2. - 0 - -5.0971349992323667e-005 - 1.0555840283632278e-001 - -1.8500010669231415e-001 - <_> - - <_> - - - - <_> - 5 1 3 4 -1. - <_> - 5 1 3 2 2. - 1 - 2.0255280658602715e-002 - 5.4217409342527390e-002 - -2.6162931323051453e-001 - <_> - - <_> - - - - <_> - 11 2 1 4 -1. - <_> - 11 2 1 2 2. - 1 - 4.5595720410346985e-002 - -2.1169850602746010e-002 - 1.7655989527702332e-001 - <_> - - <_> - - - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - 1 - -1.4993960503488779e-003 - -2.4702130258083344e-001 - 6.4111799001693726e-002 - <_> - - <_> - - - - <_> - 4 1 10 4 -1. - <_> - 4 2 10 2 2. - 0 - -5.1197629421949387e-002 - 3.8098621368408203e-001 - -4.3534200638532639e-002 - <_> - - <_> - - - - <_> - 0 7 2 5 -1. - <_> - 1 7 1 5 2. - 0 - -1.2308140285313129e-002 - 2.2999510169029236e-001 - -6.8426601588726044e-002 - <_> - - <_> - - - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - 2.3125670850276947e-002 - 7.3915729299187660e-003 - -8.1511551141738892e-001 - <_> - - <_> - - - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 2 2. - 1 - -1.0254840366542339e-002 - -2.0483459532260895e-001 - 7.4748978018760681e-002 - <_> - - <_> - - - - <_> - 15 6 3 5 -1. - <_> - 16 6 1 5 3. - 0 - 1.6489239409565926e-002 - -1.0638999752700329e-002 - 1.5904539823532104e-001 - <_> - - <_> - - - - <_> - 1 10 2 2 -1. - <_> - 1 10 1 1 2. - <_> - 2 11 1 1 2. - 0 - 4.6443768951576203e-005 - -1.2445150315761566e-001 - 1.2339290231466293e-001 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - -3.6345820408314466e-003 - 3.3572021126747131e-001 - -5.3786080330610275e-002 - <_> - - <_> - - - - <_> - 5 11 4 1 -1. - <_> - 6 11 2 1 2. - 0 - -4.2814682237803936e-003 - -4.0974819660186768e-001 - 3.8746099919080734e-002 - <_> - - <_> - - - - <_> - 11 5 2 2 -1. - <_> - 12 5 1 1 2. - <_> - 11 6 1 1 2. - 0 - 2.5832538958638906e-003 - -7.4852287769317627e-002 - 3.2739511132240295e-001 - <_> - - <_> - - - - <_> - 0 3 2 1 -1. - <_> - 1 3 1 1 2. - 0 - -1.4718719467055053e-004 - 6.8306617438793182e-002 - -2.0809960365295410e-001 - -1.6440550088882446e+000 - 14 - -1 - <_> - - - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.9498139619827271e-002 - -3.3759370446205139e-001 - 6.7766612768173218e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -3.4336470067501068e-002 - 6.9824808835983276e-001 - -1.3596299290657043e-001 - <_> - - <_> - - - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - 9.7922142595052719e-003 - 8.3390571177005768e-002 - -4.1553869843482971e-001 - <_> - - <_> - - - - <_> - 10 2 1 6 -1. - <_> - 8 4 1 2 3. - 1 - -6.3095659017562866e-002 - 1.7525289952754974e-001 - -3.5272590816020966e-002 - <_> - - <_> - - - - <_> - 8 2 6 1 -1. - <_> - 10 4 2 1 3. - 1 - -3.7893280386924744e-002 - 1.7454449832439423e-001 - -2.0477719604969025e-001 - <_> - - <_> - - - - <_> - 7 0 6 4 -1. - <_> - 9 0 2 4 3. - 0 - 2.9307829216122627e-002 - 4.0337048470973969e-002 - -4.0458971261978149e-001 - <_> - - <_> - - - - <_> - 4 0 6 4 -1. - <_> - 6 0 2 4 3. - 0 - 3.3006248995661736e-003 - 1.0832270234823227e-001 - -3.8293439149856567e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - -6.9221840240061283e-003 - 3.0836719274520874e-001 - -5.3221769630908966e-002 - <_> - - <_> - - - - <_> - 4 0 3 4 -1. - <_> - 3 1 3 2 2. - 1 - 1.2095970101654530e-002 - 6.8258158862590790e-002 - -4.5494788885116577e-001 - <_> - - <_> - - - - <_> - 9 6 3 1 -1. - <_> - 10 6 1 1 3. - 0 - 7.8306095674633980e-003 - -3.9104040712118149e-002 - 5.2432292699813843e-001 - <_> - - <_> - - - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - 0 - 1.1000329628586769e-002 - -4.8125259578227997e-002 - 5.9042930603027344e-001 - <_> - - <_> - - - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - 0 - 5.3003318607807159e-003 - 7.7072180807590485e-002 - -4.6984028816223145e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -4.0341410785913467e-002 - 5.3887742757797241e-001 - -4.8817768692970276e-002 - <_> - - <_> - - - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - 0 - 4.5519209379563108e-005 - -4.8769790679216385e-002 - 6.1085790395736694e-002 - <_> - - <_> - - - - <_> - 0 1 2 1 -1. - <_> - 1 1 1 1 2. - 0 - -3.5766988730756566e-005 - 8.8775523006916046e-002 - -3.1009709835052490e-001 - <_> - - <_> - - - - <_> - 9 3 3 4 -1. - <_> - 10 4 1 4 3. - 1 - -1.2121529877185822e-001 - -8.7199020385742188e-001 - 1.9037359743379056e-004 - <_> - - <_> - - - - <_> - 9 3 4 3 -1. - <_> - 8 4 4 1 3. - 1 - -2.0810520276427269e-002 - 1.2869510054588318e-001 - -2.2694960236549377e-001 - <_> - - <_> - - - - <_> - 9 9 4 3 -1. - <_> - 10 9 2 3 2. - 0 - -7.5748898088932037e-003 - -5.6044650077819824e-001 - 6.8818382918834686e-002 - <_> - - <_> - - - - <_> - 2 0 6 5 -1. - <_> - 4 0 2 5 3. - 0 - 2.2772360593080521e-002 - 4.9116428941488266e-002 - -4.5276260375976563e-001 - <_> - - <_> - - - - <_> - 15 3 3 6 -1. - <_> - 16 4 1 6 3. - 1 - -3.1300768256187439e-002 - 2.4237060546875000e-001 - -6.5867289900779724e-002 - <_> - - <_> - - - - <_> - 6 0 3 4 -1. - <_> - 5 1 3 2 2. - 1 - -3.4844119101762772e-002 - -4.4477778673171997e-001 - 5.1829639822244644e-002 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - 3.5052769817411900e-005 - -4.2088508605957031e-002 - 4.7609008848667145e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - 1.5844260342419147e-003 - 5.6480269879102707e-002 - -4.1779080033302307e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - 2.6414310559630394e-002 - -7.2216093540191650e-002 - 3.0886408686637878e-001 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 6 1 6 1 3. - 0 - -2.4469729512929916e-002 - 3.4676471352577209e-001 - -6.7458316683769226e-002 - <_> - - <_> - - - - <_> - 7 0 4 3 -1. - <_> - 8 0 2 3 2. - 0 - 5.6515377946197987e-003 - 6.4198330044746399e-002 - -3.5227119922637939e-001 - <_> - - <_> - - - - <_> - 0 8 8 4 -1. - <_> - 0 9 8 2 2. - 0 - 1.9363719969987869e-002 - 5.6742910295724869e-002 - -3.4612348675727844e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 7 1 1 3. - 1 - 2.0357580855488777e-002 - -4.8724349588155746e-002 - 3.8238760828971863e-001 - <_> - - <_> - - - - <_> - 7 6 1 3 -1. - <_> - 6 7 1 1 3. - 1 - -5.1647052168846130e-003 - 2.1022629737854004e-001 - -1.0693299770355225e-001 - <_> - - <_> - - - - <_> - 6 5 7 6 -1. - <_> - 6 8 7 3 2. - 0 - 1.4845539815723896e-002 - -6.1529231071472168e-001 - 3.5300489515066147e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -8.6702024564146996e-003 - -4.0551638603210449e-001 - 4.2726211249828339e-002 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - -1.4502460137009621e-002 - -4.2973139882087708e-001 - 2.6243820786476135e-002 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 3.6778231151401997e-003 - 6.6653557121753693e-002 - -2.8710830211639404e-001 - <_> - - <_> - - - - <_> - 16 0 2 10 -1. - <_> - 16 0 2 5 2. - 1 - 1.3134600222110748e-001 - 1.4174330048263073e-002 - -1.5358589589595795e-001 - <_> - - <_> - - - - <_> - 2 0 10 2 -1. - <_> - 2 0 5 2 2. - 1 - -1.3666020333766937e-001 - -4.2397919297218323e-001 - 5.0294190645217896e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - 7.2551309131085873e-003 - 8.2462644204497337e-003 - -3.2001951336860657e-001 - <_> - - <_> - - - - <_> - 5 5 3 2 -1. - <_> - 6 5 1 2 3. - 0 - -1.3511019758880138e-002 - 5.0302737951278687e-001 - -3.4302528947591782e-002 - <_> - - <_> - - - - <_> - 11 6 2 2 -1. - <_> - 11 6 1 2 2. - 0 - -1.3929050415754318e-002 - 4.3465730547904968e-001 - -4.2992260307073593e-002 - <_> - - <_> - - - - <_> - 2 4 12 3 -1. - <_> - 5 4 6 3 2. - 0 - -1.2819659709930420e-001 - -4.8288840055465698e-001 - 4.2751569300889969e-002 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.6732519492506981e-002 - -4.3209370970726013e-001 - 3.1982630025595427e-003 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - 2.0149480551481247e-003 - 4.4975060969591141e-002 - -3.9710980653762817e-001 - <_> - - <_> - - - - <_> - 4 0 14 2 -1. - <_> - 11 0 7 1 2. - <_> - 4 1 7 1 2. - 0 - 8.7468000128865242e-003 - -4.2383570224046707e-002 - 9.5026336610317230e-002 - <_> - - <_> - - - - <_> - 0 0 14 2 -1. - <_> - 0 0 7 1 2. - <_> - 7 1 7 1 2. - 0 - 2.3763459175825119e-002 - -7.2902612388134003e-002 - 2.4120329320430756e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -1.5337429940700531e-002 - 1.2962980568408966e-001 - -5.8821711689233780e-002 - <_> - - <_> - - - - <_> - 4 0 4 3 -1. - <_> - 5 0 2 3 2. - 0 - -1.1038820259273052e-002 - -3.9287769794464111e-001 - 4.2961981147527695e-002 - <_> - - <_> - - - - <_> - 0 1 18 6 -1. - <_> - 0 4 18 3 2. - 0 - -4.6639290452003479e-001 - -5.7689660787582397e-001 - 2.6615839451551437e-002 - <_> - - <_> - - - - <_> - 3 4 12 2 -1. - <_> - 3 5 12 1 2. - 0 - -4.5179851353168488e-002 - 2.5730028748512268e-001 - -6.9095030426979065e-002 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - -6.9027519784867764e-003 - -4.2040190100669861e-001 - 4.1919898241758347e-002 - <_> - - <_> - - - - <_> - 1 2 12 3 -1. - <_> - 5 2 4 3 3. - 0 - -4.3509289622306824e-002 - 1.1465229839086533e-001 - -1.5128579735755920e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 4.9952589906752110e-003 - -2.7340779080986977e-002 - 2.4642029404640198e-001 - <_> - - <_> - - - - <_> - 0 3 1 4 -1. - <_> - 0 4 1 2 2. - 0 - 3.4534540027379990e-003 - 4.9953348934650421e-002 - -3.1069651246070862e-001 - <_> - - <_> - - - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 0 - 1.2536670081317425e-002 - -1.5751969069242477e-002 - 2.3830600082874298e-001 - <_> - - <_> - - - - <_> - 5 5 2 6 -1. - <_> - 5 5 1 3 2. - <_> - 6 8 1 3 2. - 0 - -4.6358969993889332e-003 - 1.9324310123920441e-001 - -8.0604627728462219e-002 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - -4.2210690677165985e-002 - -3.9498311281204224e-001 - 1.5114610083401203e-002 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - 1.7369300127029419e-002 - -4.9444381147623062e-002 - 3.1055888533592224e-001 - <_> - - <_> - - - - <_> - 14 3 4 4 -1. - <_> - 14 4 4 2 2. - 0 - 2.8287919703871012e-003 - -3.8280609995126724e-002 - 8.8243007659912109e-002 - <_> - - <_> - - - - <_> - 0 3 4 4 -1. - <_> - 0 4 4 2 2. - 0 - -2.8313150629401207e-002 - -5.6536638736724854e-001 - 2.8949340805411339e-002 - <_> - - <_> - - - - <_> - 13 4 4 4 -1. - <_> - 13 4 4 2 2. - 1 - -2.2647269070148468e-002 - 5.6739021092653275e-002 - -1.2499769777059555e-001 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - -8.6736697703599930e-003 - -6.2506991624832153e-001 - 2.3742560297250748e-002 - <_> - - <_> - - - - <_> - 12 3 3 6 -1. - <_> - 13 3 1 6 3. - 0 - 2.8303779661655426e-002 - -2.7384009212255478e-002 - 3.2746648788452148e-001 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 3 1 6 3. - 0 - -2.3424259852617979e-003 - 1.0716210305690765e-001 - -1.4106050133705139e-001 - <_> - - <_> - - - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 2 9. - 0 - -1.0879710316658020e-001 - 1.4286050200462341e-001 - -1.0067559778690338e-001 - <_> - - <_> - - - - <_> - 1 3 6 6 -1. - <_> - 3 5 2 2 9. - 0 - -2.3998910188674927e-001 - -7.2609817981719971e-001 - 2.1252749487757683e-002 - <_> - - <_> - - - - <_> - 5 9 8 3 -1. - <_> - 5 10 8 1 3. - 0 - -1.0510819964110851e-002 - 2.0192959904670715e-001 - -7.1475587785243988e-002 - <_> - - <_> - - - - <_> - 0 8 2 2 -1. - <_> - 0 9 2 1 2. - 0 - -2.9618060216307640e-003 - -3.3826011419296265e-001 - 4.2012460529804230e-002 - <_> - - <_> - - - - <_> - 16 7 2 3 -1. - <_> - 16 7 1 3 2. - 1 - 6.5366048365831375e-003 - 2.1016959100961685e-002 - -3.3604449033737183e-001 - <_> - - <_> - - - - <_> - 2 7 3 2 -1. - <_> - 2 7 3 1 2. - 1 - 1.5359099954366684e-002 - -3.9575159549713135e-002 - 4.1411620378494263e-001 - <_> - - <_> - - - - <_> - 16 1 2 8 -1. - <_> - 17 1 1 4 2. - <_> - 16 5 1 4 2. - 0 - -5.9200981631875038e-003 - 1.0086079686880112e-001 - -6.0626558959484100e-002 - <_> - - <_> - - - - <_> - 0 1 2 8 -1. - <_> - 0 1 1 4 2. - <_> - 1 5 1 4 2. - 0 - -6.7361057735979557e-003 - 2.1334829926490784e-001 - -6.8882316350936890e-002 - <_> - - <_> - - - - <_> - 13 0 4 5 -1. - <_> - 14 0 2 5 2. - 0 - 6.4818300306797028e-003 - 6.3638597726821899e-002 - -1.9560219347476959e-001 - <_> - - <_> - - - - <_> - 1 0 4 5 -1. - <_> - 2 0 2 5 2. - 0 - 7.0354170165956020e-003 - 5.4166000336408615e-002 - -2.7890819311141968e-001 - <_> - - <_> - - - - <_> - 0 6 18 6 -1. - <_> - 9 6 9 3 2. - <_> - 0 9 9 3 2. - 0 - -1.7828759551048279e-001 - -3.7294510006904602e-001 - 3.6584310233592987e-002 - <_> - - <_> - - - - <_> - 0 5 7 6 -1. - <_> - 0 7 7 2 3. - 0 - -7.8773088753223419e-002 - -3.6562091112136841e-001 - 3.5259820520877838e-002 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - 0 - -3.4936249256134033e-002 - 3.4944280982017517e-001 - -4.2130310088396072e-002 - <_> - - <_> - - - - <_> - 3 1 11 3 -1. - <_> - 3 2 11 1 3. - 0 - 5.1275938749313354e-002 - -4.9116469919681549e-002 - 3.2908609509468079e-001 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - 8.3894617855548859e-003 - 1.0704530403017998e-002 - -4.0773379802703857e-001 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - 3.8752930704504251e-003 - 3.0874349176883698e-002 - -4.2981019616127014e-001 - <_> - - <_> - - - - <_> - 6 4 6 6 -1. - <_> - 8 4 2 6 3. - 0 - -2.8959279879927635e-002 - 9.8091676831245422e-002 - -1.3165040314197540e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - 1.9355230033397675e-002 - 4.9088131636381149e-002 - -2.8296470642089844e-001 - <_> - - <_> - - - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - 0 - 2.4605318903923035e-003 - -4.4935218989849091e-002 - 2.1187350153923035e-001 - <_> - - <_> - - - - <_> - 6 5 2 2 -1. - <_> - 6 5 1 1 2. - <_> - 7 6 1 1 2. - 0 - -4.3705930002033710e-003 - 2.9035219550132751e-001 - -4.9733299762010574e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 16 1 2 1 3. - 0 - 8.8900327682495117e-003 - 2.7575170621275902e-002 - -2.5662681460380554e-001 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - 0 - -1.1210380122065544e-002 - -4.5494940876960754e-001 - 2.8127580881118774e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -1.0722589679062366e-002 - 2.5290718674659729e-001 - -5.1751948893070221e-002 - <_> - - <_> - - - - <_> - 9 2 6 2 -1. - <_> - 11 4 2 2 3. - 1 - -5.4759901016950607e-002 - 9.5928423106670380e-002 - -1.3142620027065277e-001 - <_> - - <_> - - - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - 0 - -1.4724220382049680e-003 - -3.2331600785255432e-001 - 3.6647390574216843e-002 - <_> - - <_> - - - - <_> - 7 0 2 3 -1. - <_> - 6 1 2 1 3. - 1 - 1.2189580127596855e-002 - 4.0190368890762329e-002 - -2.7344599366188049e-001 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 3 3. - 1 - -9.5241647213697433e-003 - 2.8725100681185722e-002 - -5.1296249032020569e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -2.9368860647082329e-002 - 2.6298341155052185e-001 - -4.5174758881330490e-002 - <_> - - <_> - - - - <_> - 8 4 4 8 -1. - <_> - 8 6 4 4 2. - 0 - -1.6835989430546761e-002 - -7.7370226383209229e-002 - 8.7621882557868958e-002 - <_> - - <_> - - - - <_> - 9 5 6 1 -1. - <_> - 11 7 2 1 3. - 1 - 4.8315960913896561e-002 - 2.8099019080400467e-002 - -4.4539469480514526e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - -1.7475409433245659e-002 - 3.2665181159973145e-001 - -7.0993858389556408e-003 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 1.1099129915237427e-002 - -4.1876319795846939e-002 - 2.9490828514099121e-001 - <_> - - <_> - - - - <_> - 9 11 2 1 -1. - <_> - 9 11 1 1 2. - 0 - 2.3201128933578730e-003 - 2.8871670365333557e-002 - -3.9258959889411926e-001 - <_> - - <_> - - - - <_> - 6 11 6 1 -1. - <_> - 8 11 2 1 3. - 0 - -1.0768280364573002e-002 - -4.6519058942794800e-001 - 2.4949219077825546e-002 - <_> - - <_> - - - - <_> - 0 0 18 2 -1. - <_> - 6 0 6 2 3. - 0 - -7.2821088135242462e-002 - 1.3412840664386749e-001 - -9.3141697347164154e-002 - <_> - - <_> - - - - <_> - 2 0 10 1 -1. - <_> - 7 0 5 1 2. - 0 - 1.7050189897418022e-002 - -6.0329660773277283e-002 - 2.1904440224170685e-001 - <_> - - <_> - - - - <_> - 2 0 14 3 -1. - <_> - 2 0 7 3 2. - 0 - -1.8992629647254944e-001 - -5.1518648862838745e-001 - 2.1408829838037491e-002 - <_> - - <_> - - - - <_> - 3 5 4 3 -1. - <_> - 2 6 4 1 3. - 1 - -1.7060669139027596e-002 - 1.9582070410251617e-001 - -5.6239139288663864e-002 - <_> - - <_> - - - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - 0 - -1.4951139688491821e-002 - -3.6664319038391113e-001 - 2.4565050378441811e-002 - <_> - - <_> - - - - <_> - 0 6 4 3 -1. - <_> - 1 6 2 3 2. - 0 - 9.6735544502735138e-003 - -5.2386801689863205e-002 - 2.1741649508476257e-001 - <_> - - <_> - - - - <_> - 12 2 3 2 -1. - <_> - 13 3 1 2 3. - 1 - -1.7105480656027794e-002 - 7.0179320871829987e-002 - -2.0144950598478317e-002 - <_> - - <_> - - - - <_> - 6 2 2 3 -1. - <_> - 5 3 2 1 3. - 1 - 7.2467918507754803e-003 - 5.2429918199777603e-002 - -2.1052859723567963e-001 - <_> - - <_> - - - - <_> - 13 0 4 3 -1. - <_> - 12 1 4 1 3. - 1 - -3.1322270631790161e-002 - 3.1517499685287476e-001 - -4.4390950351953506e-002 - <_> - - <_> - - - - <_> - 3 5 10 6 -1. - <_> - 3 8 10 3 2. - 0 - -5.6205280125141144e-002 - -8.7249839305877686e-001 - 1.2938500382006168e-002 - <_> - - <_> - - - - <_> - 13 0 4 3 -1. - <_> - 12 1 4 1 3. - 1 - 3.2938860356807709e-002 - -4.3342970311641693e-002 - 2.4175900220870972e-001 - <_> - - <_> - - - - <_> - 4 3 10 4 -1. - <_> - 4 4 10 2 2. - 0 - 2.2955680266022682e-002 - -4.1244581341743469e-002 - 2.6797288656234741e-001 - <_> - - <_> - - - - <_> - 16 7 2 5 -1. - <_> - 16 7 1 5 2. - 0 - -4.0403520688414574e-003 - 1.1751759797334671e-001 - -8.8851161301136017e-002 - <_> - - <_> - - - - <_> - 6 3 2 4 -1. - <_> - 6 4 2 2 2. - 0 - -7.3366537690162659e-003 - 1.1126759648323059e-001 - -1.0500030219554901e-001 - <_> - - <_> - - - - <_> - 14 2 4 2 -1. - <_> - 14 2 2 2 2. - 0 - -3.7868309766054153e-002 - -3.6040359735488892e-001 - 4.1551068425178528e-003 - <_> - - <_> - - - - <_> - 0 2 4 2 -1. - <_> - 2 2 2 2 2. - 0 - -4.6715070493519306e-003 - 7.4014060199260712e-002 - -1.6199620068073273e-001 - <_> - - <_> - - - - <_> - 15 3 3 4 -1. - <_> - 16 4 1 4 3. - 1 - 4.7153029590845108e-002 - -1.6626819968223572e-002 - 3.0439698696136475e-001 - <_> - - <_> - - - - <_> - 3 3 4 3 -1. - <_> - 2 4 4 1 3. - 1 - -5.7896347716450691e-003 - 1.0218390077352524e-001 - -1.0985810309648514e-001 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 15 6 1 4 2. - 1 - -5.8129139244556427e-002 - 2.4536029994487762e-001 - -1.0435160249471664e-002 - <_> - - <_> - - - - <_> - 3 6 4 2 -1. - <_> - 3 6 4 1 2. - 1 - 1.8205940723419189e-002 - -2.8424680233001709e-002 - 4.3812799453735352e-001 - <_> - - <_> - - - - <_> - 13 9 5 3 -1. - <_> - 13 10 5 1 3. - 0 - 1.1710450053215027e-002 - 4.2386539280414581e-002 - -2.1680490672588348e-001 - <_> - - <_> - - - - <_> - 0 9 5 3 -1. - <_> - 0 10 5 1 3. - 0 - -1.9464310258626938e-002 - -5.8676087856292725e-001 - 1.9311159849166870e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - -2.5619969237595797e-003 - -2.4047499895095825e-001 - 2.5458659976720810e-002 - <_> - - <_> - - - - <_> - 3 0 4 3 -1. - <_> - 4 1 2 3 2. - 1 - 6.4271733164787292e-002 - -1.6712099313735962e-002 - 7.0072662830352783e-001 - <_> - - <_> - - - - <_> - 17 2 1 3 -1. - <_> - 17 3 1 1 3. - 0 - 3.4974149893969297e-003 - 4.0429990738630295e-002 - -1.9398880004882813e-001 - <_> - - <_> - - - - <_> - 6 11 4 1 -1. - <_> - 7 11 2 1 2. - 0 - -3.5052769817411900e-005 - 9.8691992461681366e-002 - -1.0426600277423859e-001 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 2 11 8 1 2. - 0 - -6.2979538924992085e-003 - 4.3742060661315918e-002 - -4.0012229233980179e-002 - <_> - - <_> - - - - <_> - 0 11 16 1 -1. - <_> - 8 11 8 1 2. - 0 - 7.6886221766471863e-002 - 1.4384250156581402e-002 - -7.6758372783660889e-001 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 9 2 3 2. - 0 - -6.2105238437652588e-002 - -7.5344699621200562e-001 - 2.2511880379170179e-003 - <_> - - <_> - - - - <_> - 0 9 4 3 -1. - <_> - 2 9 2 3 2. - 0 - 7.9736672341823578e-003 - -6.3740402460098267e-002 - 1.6708980500698090e-001 - <_> - - <_> - - - - <_> - 17 7 1 4 -1. - <_> - 17 8 1 2 2. - 0 - 4.7112111933529377e-003 - 2.9338790103793144e-002 - -1.9519449770450592e-001 - <_> - - <_> - - - - <_> - 0 7 1 4 -1. - <_> - 0 8 1 2 2. - 0 - -4.7494978643953800e-003 - -3.1782409548759460e-001 - 3.3812701702117920e-002 - <_> - - <_> - - - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - -2.3578179534524679e-003 - 3.7033520638942719e-002 - -5.1874168217182159e-002 - -1.6447039842605591e+000 - 15 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.7099228948354721e-002 - 5.1232028007507324e-001 - -4.0044599771499634e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -8.5581682622432709e-002 - 4.7390219569206238e-001 - -8.0851227045059204e-002 - <_> - - <_> - - - - <_> - 0 2 15 6 -1. - <_> - 0 4 15 2 3. - 0 - -1.5751540660858154e-001 - 3.0307799577713013e-001 - -2.9985809326171875e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - -7.7447071671485901e-003 - 3.9014250040054321e-001 - -1.2618440389633179e-001 - <_> - - <_> - - - - <_> - 3 6 12 2 -1. - <_> - 7 6 4 2 3. - 0 - -1.3232390582561493e-001 - -6.1038082838058472e-001 - 6.2328979372978210e-002 - <_> - - <_> - - - - <_> - 9 5 8 4 -1. - <_> - 11 5 4 4 2. - 0 - 9.9189996719360352e-002 - 4.0009308606386185e-002 - -2.4128450453281403e-001 - <_> - - <_> - - - - <_> - 5 2 8 8 -1. - <_> - 7 2 4 8 2. - 0 - 2.3752479255199432e-001 - 2.4606010993011296e-004 - -9.8147119140625000e+002 - <_> - - <_> - - - - <_> - 12 0 6 2 -1. - <_> - 12 0 3 2 2. - 0 - 5.3483508527278900e-003 - -5.8558419346809387e-002 - 9.7474083304405212e-002 - <_> - - <_> - - - - <_> - 0 0 6 2 -1. - <_> - 3 0 3 2 2. - 0 - -1.5156139619648457e-002 - 1.7715239524841309e-001 - -2.7982389926910400e-001 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - 0 - 1.0705590248107910e-002 - -3.0257379636168480e-002 - 3.6629560589790344e-001 - <_> - - <_> - - - - <_> - 4 6 2 4 -1. - <_> - 4 6 1 2 2. - <_> - 5 8 1 2 2. - 0 - -3.2671689987182617e-003 - 2.1479220688343048e-001 - -1.5616300702095032e-001 - <_> - - <_> - - - - <_> - 12 0 4 8 -1. - <_> - 13 0 2 8 2. - 0 - -3.9971169084310532e-002 - -4.8491969704627991e-001 - 1.6523819416761398e-002 - <_> - - <_> - - - - <_> - 0 8 18 4 -1. - <_> - 0 10 18 2 2. - 0 - 4.3550558388233185e-002 - -3.3622530102729797e-001 - 8.8661476969718933e-002 - <_> - - <_> - - - - <_> - 10 0 4 6 -1. - <_> - 11 1 2 6 2. - 1 - -7.8984871506690979e-002 - 1.8954129517078400e-001 - -2.6538040488958359e-002 - <_> - - <_> - - - - <_> - 8 0 6 4 -1. - <_> - 7 1 6 2 2. - 1 - -3.7077900022268295e-002 - 1.2257669866085052e-001 - -2.1321929991245270e-001 - <_> - - <_> - - - - <_> - 16 1 2 3 -1. - <_> - 16 1 1 3 2. - 1 - 2.6359550654888153e-002 - 3.6721199750900269e-002 - -4.6964219212532043e-001 - <_> - - <_> - - - - <_> - 2 1 3 2 -1. - <_> - 2 1 3 1 2. - 1 - 5.8852001093327999e-003 - 6.9452546536922455e-002 - -3.5492339730262756e-001 - <_> - - <_> - - - - <_> - 11 0 6 8 -1. - <_> - 13 0 2 8 3. - 0 - -1.8738530576229095e-002 - 1.1359489709138870e-001 - -8.9908212423324585e-002 - <_> - - <_> - - - - <_> - 1 0 6 8 -1. - <_> - 3 0 2 8 3. - 0 - -9.6431776881217957e-002 - -5.3097301721572876e-001 - 4.5616019517183304e-002 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - -3.2832629512995481e-003 - 2.3055520653724670e-001 - -5.9067908674478531e-002 - <_> - - <_> - - - - <_> - 4 6 3 1 -1. - <_> - 5 6 1 1 3. - 0 - -1.9987220875918865e-003 - 2.4238279461860657e-001 - -8.8716529309749603e-002 - <_> - - <_> - - - - <_> - 12 5 4 4 -1. - <_> - 13 5 2 4 2. - 0 - -5.6294091045856476e-003 - 1.6706959903240204e-001 - -1.2665410339832306e-001 - <_> - - <_> - - - - <_> - 9 2 6 1 -1. - <_> - 11 4 2 1 3. - 1 - -4.1918899863958359e-002 - 1.7224679887294769e-001 - -1.2623949348926544e-001 - <_> - - <_> - - - - <_> - 0 0 18 4 -1. - <_> - 6 0 6 4 3. - 0 - -1.0357339680194855e-001 - 1.4425869286060333e-001 - -1.5410119295120239e-001 - <_> - - <_> - - - - <_> - 2 5 4 4 -1. - <_> - 3 5 2 4 2. - 0 - -7.8944843262434006e-003 - 1.5122400224208832e-001 - -1.2487240135669708e-001 - <_> - - <_> - - - - <_> - 11 7 2 3 -1. - <_> - 10 8 2 1 3. - 1 - -1.9367299973964691e-002 - -3.5261449217796326e-001 - 2.1729569882154465e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - -3.6256119608879089e-002 - 3.7000009417533875e-001 - -5.3758278489112854e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -4.7164689749479294e-002 - -2.3610420525074005e-001 - 9.7192026674747467e-002 - <_> - - <_> - - - - <_> - 9 4 4 2 -1. - <_> - 10 5 2 2 2. - 1 - -1.7230700701475143e-002 - 1.4201079308986664e-001 - -1.5985390543937683e-001 - <_> - - <_> - - - - <_> - 4 2 10 4 -1. - <_> - 4 3 10 2 2. - 0 - -5.0030000507831573e-002 - 2.6506531238555908e-001 - -8.6499691009521484e-002 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -9.2107948148623109e-005 - 9.5687441527843475e-002 - -1.9993349909782410e-001 - <_> - - <_> - - - - <_> - 10 0 4 5 -1. - <_> - 11 0 2 5 2. - 0 - -1.0295229963958263e-002 - -2.9639908671379089e-001 - 4.1017848998308182e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 8 9 2 3 2. - 0 - -7.7980589121580124e-003 - -4.3875318765640259e-001 - 3.9625078439712524e-002 - <_> - - <_> - - - - <_> - 5 2 8 4 -1. - <_> - 5 3 8 2 2. - 0 - 4.7733850777149200e-002 - -5.9582959860563278e-002 - 2.9455170035362244e-001 - <_> - - <_> - - - - <_> - 4 0 4 5 -1. - <_> - 5 0 2 5 2. - 0 - -1.8985090777277946e-002 - -5.1091802120208740e-001 - 3.6479711532592773e-002 - <_> - - <_> - - - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - 0 - 6.6718719899654388e-003 - -7.0748023688793182e-002 - 1.6990910470485687e-001 - <_> - - <_> - - - - <_> - 5 9 2 1 -1. - <_> - 5 9 1 1 2. - 1 - -1.0109299910254776e-004 - 7.2951592504978180e-002 - -2.2971729934215546e-001 - <_> - - <_> - - - - <_> - 14 6 2 4 -1. - <_> - 14 6 2 2 2. - 1 - 1.3687750324606895e-002 - -1.7154410481452942e-002 - 1.5828810632228851e-001 - <_> - - <_> - - - - <_> - 5 8 2 2 -1. - <_> - 5 8 1 2 2. - 1 - -1.1907920241355896e-002 - -2.7717119455337524e-001 - 6.1360988765954971e-002 - <_> - - <_> - - - - <_> - 11 6 3 3 -1. - <_> - 10 7 3 1 3. - 1 - 3.2344508916139603e-002 - 6.6562681458890438e-003 - -3.7267601490020752e-001 - <_> - - <_> - - - - <_> - 7 6 3 3 -1. - <_> - 8 7 1 3 3. - 1 - -3.3367820084095001e-002 - -5.3337848186492920e-001 - 2.7859410271048546e-002 - <_> - - <_> - - - - <_> - 3 0 14 2 -1. - <_> - 10 0 7 1 2. - <_> - 3 1 7 1 2. - 0 - 8.3360234275460243e-003 - -5.2400518208742142e-002 - 1.2462449818849564e-001 - <_> - - <_> - - - - <_> - 1 1 9 9 -1. - <_> - 4 4 3 3 9. - 0 - -5.2082502841949463e-001 - -4.6310651302337646e-001 - 3.1300779432058334e-002 - <_> - - <_> - - - - <_> - 16 2 2 3 -1. - <_> - 16 3 2 1 3. - 0 - 1.3498559594154358e-002 - 1.9706040620803833e-002 - -4.2935219407081604e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 6 1 4 1 3. - 0 - -1.1888509616255760e-002 - 2.1265150606632233e-001 - -6.5112717449665070e-002 - <_> - - <_> - - - - <_> - 1 0 16 3 -1. - <_> - 1 1 16 1 3. - 0 - 1.8383689224720001e-002 - -9.9591173231601715e-002 - 1.7049969732761383e-001 - <_> - - <_> - - - - <_> - 5 0 1 3 -1. - <_> - 4 1 1 1 3. - 1 - 1.0062440298497677e-002 - 3.3510580658912659e-002 - -4.7417938709259033e-001 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - 5.7981228455901146e-003 - 3.6437921226024628e-002 - -2.2873109579086304e-001 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.0684519559144974e-002 - 1.4713959395885468e-001 - -8.7145403027534485e-002 - <_> - - <_> - - - - <_> - 11 4 4 5 -1. - <_> - 12 4 2 5 2. - 0 - 2.3879610002040863e-002 - -7.0351168513298035e-002 - 2.7118590474128723e-001 - <_> - - <_> - - - - <_> - 0 5 18 2 -1. - <_> - 6 5 6 2 3. - 0 - -2.5044348835945129e-001 - -4.7885990142822266e-001 - 3.1736131757497787e-002 - <_> - - <_> - - - - <_> - 11 1 3 3 -1. - <_> - 12 1 1 3 3. - 0 - 1.3026770204305649e-002 - 1.0787160135805607e-002 - -2.5330540537834167e-001 - <_> - - <_> - - - - <_> - 4 1 3 3 -1. - <_> - 5 1 1 3 3. - 0 - 9.0072769671678543e-003 - 2.7806090191006660e-002 - -4.7443199157714844e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -5.7155848480761051e-003 - 1.9597819447517395e-001 - -5.6443430483341217e-002 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 6.5435571596026421e-003 - 2.4191839620471001e-002 - -5.9032911062240601e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - 5.8930469676852226e-003 - -5.4064448922872543e-002 - 1.3058720529079437e-001 - <_> - - <_> - - - - <_> - 0 2 2 3 -1. - <_> - 0 3 2 1 3. - 0 - 7.1939909830689430e-003 - 3.4566860646009445e-002 - -3.6955019831657410e-001 - <_> - - <_> - - - - <_> - 10 6 3 2 -1. - <_> - 11 6 1 2 3. - 0 - -2.9776040464639664e-002 - -4.4595420360565186e-001 - 4.1442508809268475e-003 - <_> - - <_> - - - - <_> - 5 6 3 2 -1. - <_> - 6 6 1 2 3. - 0 - -3.2136470545083284e-003 - 2.2781200706958771e-001 - -5.8483459055423737e-002 - <_> - - <_> - - - - <_> - 11 5 4 4 -1. - <_> - 12 5 2 4 2. - 0 - -1.1251470074057579e-002 - 1.0093680024147034e-001 - -1.7605800181627274e-002 - <_> - - <_> - - - - <_> - 3 5 4 4 -1. - <_> - 4 5 2 4 2. - 0 - -4.6385750174522400e-003 - 1.3835780322551727e-001 - -1.2052179872989655e-001 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - -1.0255860164761543e-002 - -2.6656809449195862e-001 - 2.2648969665169716e-002 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.1238789738854393e-004 - 7.0958286523818970e-002 - -1.9030919671058655e-001 - <_> - - <_> - - - - <_> - 15 8 2 2 -1. - <_> - 15 8 1 2 2. - 1 - -1.8172770505771041e-003 - 5.7135429233312607e-002 - -1.9398370385169983e-001 - <_> - - <_> - - - - <_> - 3 8 2 2 -1. - <_> - 3 8 2 1 2. - 1 - 5.5736447684466839e-003 - -5.8273639529943466e-002 - 2.7279791235923767e-001 - <_> - - <_> - - - - <_> - 17 6 1 2 -1. - <_> - 17 7 1 1 2. - 0 - -8.3255711942911148e-003 - -7.4055558443069458e-001 - 9.1970404610037804e-003 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 9 2 2 2. - 0 - -3.1887560617178679e-003 - -2.4141499400138855e-001 - 5.7376209646463394e-002 - <_> - - <_> - - - - <_> - 14 6 3 4 -1. - <_> - 15 6 1 4 3. - 0 - -2.2584979888051748e-003 - 1.3913479447364807e-001 - -1.1590459942817688e-001 - <_> - - <_> - - - - <_> - 0 6 1 2 -1. - <_> - 0 7 1 1 2. - 0 - 9.4622228061780334e-005 - -1.3526099920272827e-001 - 9.5751672983169556e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 9 5 1 1 9. - 0 - -2.1349849179387093e-002 - 1.4678120613098145e-001 - -6.3536033034324646e-002 - <_> - - <_> - - - - <_> - 5 2 6 4 -1. - <_> - 7 2 2 4 3. - 0 - -4.4286339543759823e-003 - 8.8673412799835205e-002 - -1.5095430612564087e-001 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 15 5 2 2 2. - 0 - -4.3985550291836262e-003 - 1.5795840322971344e-001 - -7.5238667428493500e-002 - <_> - - <_> - - - - <_> - 0 10 3 2 -1. - <_> - 0 11 3 1 2. - 0 - -9.3446951359510422e-003 - -6.5790867805480957e-001 - 2.0568570122122765e-002 - <_> - - <_> - - - - <_> - 14 5 4 2 -1. - <_> - 15 5 2 2 2. - 0 - -2.5447890162467957e-002 - -4.1285929083824158e-001 - 5.0353291444480419e-003 - <_> - - <_> - - - - <_> - 0 5 4 2 -1. - <_> - 1 5 2 2 2. - 0 - -5.0448579713702202e-003 - 1.8336050212383270e-001 - -7.2318047285079956e-002 - <_> - - <_> - - - - <_> - 10 0 3 4 -1. - <_> - 11 0 1 4 3. - 0 - 7.2271078824996948e-003 - 4.0401030331850052e-002 - -2.2265300154685974e-001 - <_> - - <_> - - - - <_> - 3 0 3 3 -1. - <_> - 4 1 1 3 3. - 1 - 1.3982810080051422e-002 - -5.7746250182390213e-002 - 2.2017340362071991e-001 - <_> - - <_> - - - - <_> - 16 2 2 3 -1. - <_> - 16 2 1 3 2. - 0 - -2.8559179045259953e-003 - 5.0909828394651413e-002 - -3.0777629464864731e-002 - <_> - - <_> - - - - <_> - 0 2 2 3 -1. - <_> - 1 2 1 3 2. - 0 - -1.8284700345247984e-003 - 7.4684068560600281e-002 - -1.7498280107975006e-001 - <_> - - <_> - - - - <_> - 3 1 12 4 -1. - <_> - 3 2 12 2 2. - 0 - 6.3661746680736542e-002 - -6.5391771495342255e-002 - 2.2334089875221252e-001 - <_> - - <_> - - - - <_> - 5 1 8 3 -1. - <_> - 5 2 8 1 3. - 0 - -2.7838269248604774e-002 - 2.9847261309623718e-001 - -4.9533151090145111e-002 - <_> - - <_> - - - - <_> - 8 0 2 1 -1. - <_> - 8 0 1 1 2. - 0 - -1.0150820162380114e-004 - 1.1381319910287857e-001 - -1.2988950312137604e-001 - <_> - - <_> - - - - <_> - 6 0 4 3 -1. - <_> - 7 0 2 3 2. - 0 - -8.2104168832302094e-003 - -3.3482441306114197e-001 - 4.3320100754499435e-002 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - -2.3469710722565651e-002 - 1.0485579818487167e-001 - -2.6606179773807526e-002 - <_> - - <_> - - - - <_> - 0 4 5 6 -1. - <_> - 0 6 5 2 3. - 0 - -1.0225430130958557e-001 - -5.8360242843627930e-001 - 1.9875079393386841e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - 1.1051409819629043e-004 - -5.1062610000371933e-002 - 5.9449151158332825e-002 - <_> - - <_> - - - - <_> - 3 1 2 3 -1. - <_> - 2 2 2 1 3. - 1 - -2.8587339445948601e-002 - -6.5006488561630249e-001 - 1.7431130632758141e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - -1.3374029658734798e-002 - -1.4429409801959991e-001 - 1.7930189147591591e-002 - <_> - - <_> - - - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - 0 - -2.3064489942044020e-003 - 2.0024579763412476e-001 - -5.6077890098094940e-002 - <_> - - <_> - - - - <_> - 9 1 4 3 -1. - <_> - 10 1 2 3 2. - 0 - 8.4166266024112701e-003 - 2.1211260929703712e-002 - -1.6266340017318726e-001 - <_> - - <_> - - - - <_> - 3 4 3 4 -1. - <_> - 4 4 1 4 3. - 0 - -3.9152640849351883e-002 - -7.4495017528533936e-001 - 1.5373099595308304e-002 - <_> - - <_> - - - - <_> - 15 4 3 3 -1. - <_> - 15 5 3 1 3. - 0 - 2.2199099883437157e-002 - 3.8378299213945866e-003 - -4.2204570770263672e-001 - <_> - - <_> - - - - <_> - 0 4 3 3 -1. - <_> - 0 5 3 1 3. - 0 - -2.1212680265307426e-002 - -6.2949067354202271e-001 - 1.7416249960660934e-002 - <_> - - <_> - - - - <_> - 10 4 1 4 -1. - <_> - 9 5 1 2 2. - 1 - 2.4373589083552361e-002 - -1.2476569972932339e-002 - 2.4312859773635864e-001 - <_> - - <_> - - - - <_> - 8 4 4 1 -1. - <_> - 9 5 2 1 2. - 1 - -6.5655349753797054e-003 - 8.4354929625988007e-002 - -1.5370599925518036e-001 - <_> - - <_> - - - - <_> - 9 1 4 3 -1. - <_> - 10 1 2 3 2. - 0 - -2.7004949748516083e-002 - -5.8976668119430542e-001 - 2.9545149300247431e-003 - <_> - - <_> - - - - <_> - 5 1 4 3 -1. - <_> - 6 1 2 3 2. - 0 - 7.3342039249837399e-003 - 3.2064430415630341e-002 - -3.6039480566978455e-001 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -3.6217659711837769e-002 - 4.1957581043243408e-001 - -2.8667179867625237e-002 - <_> - - <_> - - - - <_> - 1 0 12 1 -1. - <_> - 7 0 6 1 2. - 0 - -3.3907890319824219e-002 - 1.9862470030784607e-001 - -5.4882749915122986e-002 - <_> - - <_> - - - - <_> - 15 7 3 2 -1. - <_> - 16 8 1 2 3. - 1 - 3.3384829759597778e-002 - 9.7365463152527809e-003 - -5.0248068571090698e-001 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 2 8 2 1 3. - 1 - 1.6862079501152039e-002 - -4.6240940690040588e-002 - 2.6544511318206787e-001 - <_> - - <_> - - - - <_> - 14 9 4 1 -1. - <_> - 15 9 2 1 2. - 0 - 1.0384619963588193e-004 - -6.5498687326908112e-002 - 7.5105533003807068e-002 - <_> - - <_> - - - - <_> - 0 9 4 1 -1. - <_> - 1 9 2 1 2. - 0 - -1.8147130031138659e-003 - 1.5277540683746338e-001 - -7.0199362933635712e-002 - <_> - - <_> - - - - <_> - 8 1 3 2 -1. - <_> - 9 1 1 2 3. - 0 - -7.1106678806245327e-003 - -3.0020499229431152e-001 - 1.6424750909209251e-002 - <_> - - <_> - - - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - 0 - -3.5177739337086678e-003 - 1.7865179479122162e-001 - -5.8777790516614914e-002 - <_> - - <_> - - - - <_> - 12 1 6 6 -1. - <_> - 15 1 3 3 2. - <_> - 12 4 3 3 2. - 0 - -4.1041579097509384e-002 - 1.8218480050563812e-001 - -8.1268668174743652e-002 - <_> - - <_> - - - - <_> - 6 10 4 2 -1. - <_> - 7 10 2 2 2. - 0 - 5.7358681224286556e-003 - 2.5911739096045494e-002 - -4.2743799090385437e-001 - <_> - - <_> - - - - <_> - 7 10 4 1 -1. - <_> - 7 10 2 1 2. - 0 - -1.0798470117151737e-002 - -6.1551171541213989e-001 - 1.5165490098297596e-002 - <_> - - <_> - - - - <_> - 1 10 12 2 -1. - <_> - 4 10 6 2 2. - 0 - -1.6831440851092339e-002 - 1.4407679438591003e-001 - -8.0768980085849762e-002 - <_> - - <_> - - - - <_> - 1 11 16 1 -1. - <_> - 5 11 8 1 2. - 0 - 1.0636080056428909e-002 - -6.2096010893583298e-002 - 1.9595879316329956e-001 - <_> - - <_> - - - - <_> - 1 0 12 2 -1. - <_> - 1 0 6 1 2. - <_> - 7 1 6 1 2. - 0 - -1.2243179604411125e-002 - 2.0768819749355316e-001 - -5.2664700895547867e-002 - <_> - - <_> - - - - <_> - 15 0 3 1 -1. - <_> - 16 1 1 1 3. - 1 - -1.2133699841797352e-002 - -2.9647940397262573e-001 - 2.0730949938297272e-002 - <_> - - <_> - - - - <_> - 3 0 1 3 -1. - <_> - 2 1 1 1 3. - 1 - 1.1067570187151432e-002 - 2.1148590371012688e-002 - -4.9197408556938171e-001 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - 0 - -9.8478456493467093e-005 - 1.1343929916620255e-001 - -8.3189181983470917e-002 - <_> - - <_> - - - - <_> - 2 0 4 3 -1. - <_> - 2 1 4 1 3. - 0 - -5.6805750355124474e-003 - 1.5700399875640869e-001 - -6.6936172544956207e-002 - <_> - - <_> - - - - <_> - 6 5 6 6 -1. - <_> - 6 8 6 3 2. - 0 - -2.8414670377969742e-002 - -7.0801937580108643e-001 - 1.5312350355088711e-002 - <_> - - <_> - - - - <_> - 6 5 2 6 -1. - <_> - 6 5 1 3 2. - <_> - 7 8 1 3 2. - 0 - -8.3131557330489159e-003 - 3.2525569200515747e-001 - -3.9767459034919739e-002 - <_> - - <_> - - - - <_> - 6 0 6 10 -1. - <_> - 8 0 2 10 3. - 0 - -1.6154859215021133e-002 - 7.2170242667198181e-002 - -1.6181150078773499e-001 - <_> - - <_> - - - - <_> - 5 10 8 2 -1. - <_> - 7 10 4 2 2. - 0 - -2.8748309239745140e-002 - -5.0679367780685425e-001 - 2.0193170756101608e-002 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 8 10 2 1 3. - 0 - -4.1366219520568848e-003 - 2.0419590175151825e-001 - -6.5082170069217682e-002 - <_> - - <_> - - - - <_> - 2 0 2 8 -1. - <_> - 2 0 1 4 2. - <_> - 3 4 1 4 2. - 0 - -1.5805249568074942e-003 - 1.0301300138235092e-001 - -9.4873502850532532e-002 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.0768450010800734e-004 - -1.3171160221099854e-001 - 6.4459241926670074e-002 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - 1.0487069812370464e-004 - -1.2248139828443527e-001 - 7.9662062227725983e-002 - <_> - - <_> - - - - <_> - 17 9 1 3 -1. - <_> - 17 10 1 1 3. - 0 - 2.3125091101974249e-003 - 4.4756468385457993e-002 - -1.7060999572277069e-001 - <_> - - <_> - - - - <_> - 0 9 1 3 -1. - <_> - 0 10 1 1 3. - 0 - 2.1291899029165506e-003 - 4.8184551298618317e-002 - -2.3906719684600830e-001 - <_> - - <_> - - - - <_> - 10 0 3 2 -1. - <_> - 10 1 3 1 2. - 0 - 1.5565729700028896e-002 - -2.2367909550666809e-002 - 1.5265730023384094e-001 - <_> - - <_> - - - - <_> - 0 2 2 2 -1. - <_> - 1 2 1 2 2. - 0 - 1.2233420275151730e-002 - -1.4203540049493313e-002 - 6.9559741020202637e-001 - <_> - - <_> - - - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - 1.4537650160491467e-002 - -2.8447359800338745e-002 - 8.0053016543388367e-002 - <_> - - <_> - - - - <_> - 7 6 3 2 -1. - <_> - 7 6 3 1 2. - 1 - -6.6005781292915344e-002 - 8.9588922262191772e-001 - -1.1561259627342224e-002 - <_> - - <_> - - - - <_> - 11 0 1 10 -1. - <_> - 11 0 1 5 2. - 1 - -1.0381550341844559e-001 - -1.8446309864521027e-001 - 1.7674740403890610e-002 - <_> - - <_> - - - - <_> - 7 0 10 1 -1. - <_> - 7 0 5 1 2. - 1 - -1.3172790408134460e-001 - 5.0180637836456299e-001 - -2.0710369572043419e-002 - <_> - - <_> - - - - <_> - 4 2 14 2 -1. - <_> - 11 2 7 1 2. - <_> - 4 3 7 1 2. - 0 - -1.5426370315253735e-002 - 7.8415192663669586e-002 - -2.7261590585112572e-002 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.0778359865071252e-004 - 6.0409270226955414e-002 - -1.5471479296684265e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -2.4746390059590340e-002 - 1.2564839422702789e-001 - -3.3081028610467911e-002 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - 0 - -1.5458550304174423e-002 - 1.7179520428180695e-001 - -5.8264948427677155e-002 - <_> - - <_> - - - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - 1 - -1.0445830412209034e-002 - 1.4642359316349030e-001 - -3.6354210227727890e-002 - <_> - - <_> - - - - <_> - 8 0 2 2 -1. - <_> - 8 0 2 1 2. - 1 - 2.6862770318984985e-002 - 2.1519670262932777e-002 - -4.7783750295639038e-001 - <_> - - <_> - - - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - 3.5936690866947174e-002 - 4.5006349682807922e-003 - -1.7359879612922668e-001 - <_> - - <_> - - - - <_> - 5 0 3 2 -1. - <_> - 5 0 3 1 2. - 1 - -1.5734670683741570e-002 - -3.0777779221534729e-001 - 3.1397148966789246e-002 - <_> - - <_> - - - - <_> - 5 5 12 6 -1. - <_> - 9 7 4 2 9. - 0 - 2.6576629281044006e-001 - 8.3727054297924042e-003 - -1.7637939751148224e-001 - <_> - - <_> - - - - <_> - 1 5 12 6 -1. - <_> - 5 7 4 2 9. - 0 - -2.7198851108551025e-001 - -2.5540670752525330e-001 - 3.7426579743623734e-002 - <_> - - <_> - - - - <_> - 10 9 3 1 -1. - <_> - 11 9 1 1 3. - 0 - -7.8124678111635149e-005 - 6.1373539268970490e-002 - -5.4453648626804352e-002 - <_> - - <_> - - - - <_> - 5 9 3 1 -1. - <_> - 6 9 1 1 3. - 0 - -7.9498830018565059e-005 - 1.0011609643697739e-001 - -9.8592832684516907e-002 - <_> - - <_> - - - - <_> - 10 8 2 2 -1. - <_> - 11 8 1 1 2. - <_> - 10 9 1 1 2. - 0 - 1.0202309931628406e-004 - -7.4067138135433197e-002 - 7.4745737016201019e-002 - <_> - - <_> - - - - <_> - 6 8 2 2 -1. - <_> - 6 8 1 1 2. - <_> - 7 9 1 1 2. - 0 - -9.2606707767117769e-005 - 1.3342879712581635e-001 - -9.0439222753047943e-002 - <_> - - <_> - - - - <_> - 8 9 2 3 -1. - <_> - 8 10 2 1 3. - 0 - 3.8040629588067532e-003 - -6.1666429042816162e-002 - 1.6896329820156097e-001 - <_> - - <_> - - - - <_> - 5 6 3 3 -1. - <_> - 4 7 3 1 3. - 1 - -8.1060919910669327e-003 - 1.3207329809665680e-001 - -7.3784358799457550e-002 - <_> - - <_> - - - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - 0 - -1.0786090046167374e-002 - -5.6200730800628662e-001 - 1.3227690011262894e-002 - <_> - - <_> - - - - <_> - 2 8 3 1 -1. - <_> - 3 8 1 1 3. - 0 - 9.7276162705384195e-005 - -9.7462959587574005e-002 - 1.1971189826726913e-001 - <_> - - <_> - - - - <_> - 10 6 6 6 -1. - <_> - 12 8 2 2 9. - 0 - 2.8057929873466492e-001 - -3.0780870001763105e-003 - 6.8235772848129272e-001 - <_> - - <_> - - - - <_> - 2 6 6 6 -1. - <_> - 4 8 2 2 9. - 0 - -1.3232059776782990e-001 - -3.8513648509979248e-001 - 2.6804640889167786e-002 - <_> - - <_> - - - - <_> - 9 2 2 7 -1. - <_> - 9 2 1 7 2. - 1 - -6.3539249822497368e-003 - -4.4983521103858948e-002 - 2.9777200892567635e-002 - <_> - - <_> - - - - <_> - 8 1 2 3 -1. - <_> - 8 2 2 1 3. - 0 - -6.7433509975671768e-003 - 2.0317420363426208e-001 - -4.5301459729671478e-002 - <_> - - <_> - - - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - 0 - 1.0802519682329148e-004 - -5.8308821171522141e-002 - 7.4881277978420258e-002 - <_> - - <_> - - - - <_> - 2 0 2 1 -1. - <_> - 3 0 1 1 2. - 0 - -1.0485889652045444e-004 - 6.7523166537284851e-002 - -1.4478640258312225e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 9 0 9 6 2. - <_> - 0 6 9 6 2. - 0 - -3.5352221131324768e-001 - -4.2312130331993103e-001 - 1.9533690065145493e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 4 9 4 2. - <_> - 9 8 9 4 2. - 0 - -1.2163110077381134e-001 - -2.7824950218200684e-001 - 3.1736399978399277e-002 - <_> - - <_> - - - - <_> - 15 1 2 10 -1. - <_> - 16 1 1 5 2. - <_> - 15 6 1 5 2. - 0 - -1.9749959465116262e-003 - 3.7093818187713623e-002 - -3.7182409316301346e-002 - <_> - - <_> - - - - <_> - 1 1 2 10 -1. - <_> - 1 1 1 5 2. - <_> - 2 6 1 5 2. - 0 - -5.9040738269686699e-003 - 1.7077660560607910e-001 - -5.1128141582012177e-002 - <_> - - <_> - - - - <_> - 17 6 1 3 -1. - <_> - 17 7 1 1 3. - 0 - 6.3806660473346710e-003 - 1.8414629623293877e-002 - -3.3528879284858704e-001 - <_> - - <_> - - - - <_> - 0 6 1 3 -1. - <_> - 0 7 1 1 3. - 0 - 3.0919709242880344e-003 - 3.3527199178934097e-002 - -2.5639230012893677e-001 - <_> - - <_> - - - - <_> - 9 11 9 1 -1. - <_> - 12 11 3 1 3. - 0 - -3.3380180597305298e-002 - -5.6673657894134521e-001 - 9.6841529011726379e-003 - <_> - - <_> - - - - <_> - 0 11 9 1 -1. - <_> - 3 11 3 1 3. - 0 - 5.3758830763399601e-003 - -7.3790043592453003e-002 - 1.2300299853086472e-001 - <_> - - <_> - - - - <_> - 10 2 2 1 -1. - <_> - 10 2 1 1 2. - 0 - -9.6056828624568880e-005 - 6.6307842731475830e-002 - -8.0982752144336700e-002 - <_> - - <_> - - - - <_> - 6 2 2 1 -1. - <_> - 7 2 1 1 2. - 0 - 9.6216521342284977e-005 - -9.5515526831150055e-002 - 9.8478242754936218e-002 - <_> - - <_> - - - - <_> - 11 6 4 2 -1. - <_> - 12 6 2 2 2. - 0 - 2.0997669547796249e-002 - -1.9261270761489868e-002 - 1.9147670269012451e-001 - <_> - - <_> - - - - <_> - 8 1 7 2 -1. - <_> - 8 1 7 1 2. - 1 - 4.0974739938974380e-002 - 3.5511299967765808e-002 - -2.3782519996166229e-001 - <_> - - <_> - - - - <_> - 8 3 2 3 -1. - <_> - 8 4 2 1 3. - 0 - 1.5249810181558132e-002 - -3.2638609409332275e-002 - 2.6787319779396057e-001 - <_> - - <_> - - - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - 0 - -8.7066702544689178e-003 - 1.6137360036373138e-001 - -6.4327538013458252e-002 - -1.6502959728240967e+000 - 16 - -1 - <_> - - - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6222651153802872e-002 - 5.9786707162857056e-001 - -3.5909670591354370e-001 - <_> - - <_> - - - - <_> - 14 6 2 3 -1. - <_> - 13 7 2 1 3. - 1 - 4.1003809310495853e-003 - -2.0380510389804840e-001 - 1.9502650201320648e-001 - <_> - - <_> - - - - <_> - 5 3 8 3 -1. - <_> - 5 4 8 1 3. - 0 - -4.9330119043588638e-002 - 5.0600039958953857e-001 - -1.6639490425586700e-001 - <_> - - <_> - - - - <_> - 12 5 3 3 -1. - <_> - 13 5 1 3 3. - 0 - -6.4293588511645794e-003 - 1.8901120126247406e-001 - -1.4212790131568909e-001 - <_> - - <_> - - - - <_> - 3 0 2 6 -1. - <_> - 4 0 1 6 2. - 0 - -4.7428511606995016e-005 - 1.1049690097570419e-001 - -3.3191910386085510e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 0 1 1 2. - 1 - -2.2071679122745991e-003 - 1.3103869557380676e-001 - -7.3238097131252289e-002 - <_> - - <_> - - - - <_> - 1 0 2 1 -1. - <_> - 1 0 1 1 2. - 1 - 1.6127950511872768e-003 - -3.1489709019660950e-001 - 1.1853870004415512e-001 - <_> - - <_> - - - - <_> - 5 4 8 3 -1. - <_> - 5 5 8 1 3. - 0 - -5.1899220794439316e-002 - 3.3643078804016113e-001 - -9.0716972947120667e-002 - <_> - - <_> - - - - <_> - 0 4 18 8 -1. - <_> - 0 8 18 4 2. - 0 - 3.6771941184997559e-001 - -2.8837621212005615e-001 - 9.6811376512050629e-002 - <_> - - <_> - - - - <_> - 12 6 3 3 -1. - <_> - 13 7 1 3 3. - 1 - -6.9863619282841682e-003 - 9.2437140643596649e-002 - -2.5936789810657501e-002 - <_> - - <_> - - - - <_> - 6 5 2 3 -1. - <_> - 5 6 2 1 3. - 1 - -9.8948301747441292e-003 - 2.0623749494552612e-001 - -1.3285739719867706e-001 - <_> - - <_> - - - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - 1.1778100393712521e-002 - 2.3808769881725311e-002 - -1.5618060529232025e-001 - <_> - - <_> - - - - <_> - 6 2 1 3 -1. - <_> - 5 3 1 1 3. - 1 - -9.7711039707064629e-003 - -4.4414070248603821e-001 - 5.2495859563350677e-002 - <_> - - <_> - - - - <_> - 12 6 2 4 -1. - <_> - 12 6 2 2 2. - 1 - 2.2034980356693268e-002 - 1.2899329885840416e-002 - -3.1973049044609070e-001 - <_> - - <_> - - - - <_> - 6 6 4 2 -1. - <_> - 6 6 2 2 2. - 1 - -4.9070861190557480e-002 - -3.8365250825881958e-001 - 6.3556171953678131e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - 6.3082459382712841e-003 - -3.8817681372165680e-002 - 1.8945780396461487e-001 - <_> - - <_> - - - - <_> - 0 10 1 2 -1. - <_> - 0 11 1 1 2. - 0 - -1.7394339665770531e-003 - -4.3998670578002930e-001 - 4.6502090990543365e-002 - <_> - - <_> - - - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - 0 - -4.4195288792252541e-003 - 1.1859840154647827e-001 - -7.3243133723735809e-002 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6303210556507111e-002 - -2.6308500766754150e-001 - 7.2903439402580261e-002 - <_> - - <_> - - - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 1 9. - 0 - 3.4307971596717834e-002 - -6.0798160731792450e-002 - 3.9862269163131714e-001 - <_> - - <_> - - - - <_> - 8 5 3 1 -1. - <_> - 9 6 1 1 3. - 1 - -3.3242679201066494e-003 - 1.0307639837265015e-001 - -2.0086939632892609e-001 - <_> - - <_> - - - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - 1 - 1.0037739761173725e-002 - 2.2954529151320457e-002 - -3.3619529008865356e-001 - <_> - - <_> - - - - <_> - 6 2 6 3 -1. - <_> - 6 3 6 1 3. - 0 - -1.8309960141777992e-002 - 2.7249470353126526e-001 - -7.5265437364578247e-002 - <_> - - <_> - - - - <_> - 10 4 3 3 -1. - <_> - 11 5 1 1 9. - 0 - -1.2437590397894382e-002 - 1.6988450288772583e-001 - -1.2346489727497101e-001 - <_> - - <_> - - - - <_> - 1 3 2 1 -1. - <_> - 2 3 1 1 2. - 0 - -9.7200412710662931e-005 - 9.2975288629531860e-002 - -2.1013750135898590e-001 - <_> - - <_> - - - - <_> - 15 0 3 2 -1. - <_> - 16 1 1 2 3. - 1 - 1.5010629780590534e-002 - 2.7979910373687744e-002 - -2.2502240538597107e-001 - <_> - - <_> - - - - <_> - 4 0 5 2 -1. - <_> - 4 1 5 1 2. - 0 - 6.8223020061850548e-003 - -9.1722019016742706e-002 - 2.1493209898471832e-001 - <_> - - <_> - - - - <_> - 7 0 4 2 -1. - <_> - 8 0 2 2 2. - 0 - 7.6006199233233929e-003 - 3.4965578466653824e-002 - -5.5234891176223755e-001 - <_> - - <_> - - - - <_> - 2 0 4 2 -1. - <_> - 2 0 4 1 2. - 1 - -2.6817400008440018e-002 - -4.8797228932380676e-001 - 3.0805250629782677e-002 - <_> - - <_> - - - - <_> - 0 10 18 2 -1. - <_> - 0 11 18 1 2. - 0 - 7.0448551559820771e-004 - -3.5009810328483582e-001 - 4.8253938555717468e-002 - <_> - - <_> - - - - <_> - 8 3 4 3 -1. - <_> - 7 4 4 1 3. - 1 - -3.3609889447689056e-002 - 1.7630560696125031e-001 - -9.8770871758460999e-002 - <_> - - <_> - - - - <_> - 7 6 6 2 -1. - <_> - 9 6 2 2 3. - 0 - -1.8547330051660538e-002 - 1.0437929630279541e-001 - -1.1144720017910004e-001 - <_> - - <_> - - - - <_> - 5 6 8 2 -1. - <_> - 7 6 4 2 2. - 0 - -5.6172698736190796e-002 - -3.0085611343383789e-001 - 7.9608023166656494e-002 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 6 1 2 3. - 1 - -2.3099640384316444e-002 - 2.7257511019706726e-001 - -2.9355559498071671e-002 - <_> - - <_> - - - - <_> - 4 5 3 3 -1. - <_> - 5 6 1 1 9. - 0 - 3.9425190538167953e-002 - -5.3158119320869446e-002 - 3.6481729149818420e-001 - <_> - - <_> - - - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - 1 - 2.0240049809217453e-002 - 5.3568179719150066e-003 - -1.8116340041160583e-001 - <_> - - <_> - - - - <_> - 3 0 2 2 -1. - <_> - 3 0 2 1 2. - 1 - 9.3122208490967751e-003 - 5.0547938793897629e-002 - -3.4074148535728455e-001 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - -2.3379230871796608e-002 - -2.1109730005264282e-001 - 1.6865389421582222e-002 - <_> - - <_> - - - - <_> - 3 7 2 3 -1. - <_> - 3 7 1 3 2. - 1 - -1.9556559622287750e-002 - -3.4358918666839600e-001 - 4.2624428868293762e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 3.1322460621595383e-002 - -3.9133161306381226e-002 - 5.5833168327808380e-002 - <_> - - <_> - - - - <_> - 0 9 2 3 -1. - <_> - 0 10 2 1 3. - 0 - -7.3630441911518574e-003 - -4.7864329814910889e-001 - 2.9872870072722435e-002 - <_> - - <_> - - - - <_> - 14 9 4 2 -1. - <_> - 14 9 2 2 2. - 0 - -2.3409801069647074e-003 - 1.3057319819927216e-001 - -1.4621940255165100e-001 - <_> - - <_> - - - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - 0 - 9.2211654409766197e-003 - -6.7346267402172089e-002 - 2.5263699889183044e-001 - <_> - - <_> - - - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - -1.0466010309755802e-002 - -1.9848449528217316e-001 - 1.8861690536141396e-002 - <_> - - <_> - - - - <_> - 6 9 2 1 -1. - <_> - 6 9 1 1 2. - 1 - -9.7899202955886722e-005 - 6.3450932502746582e-002 - -2.1557840704917908e-001 - <_> - - <_> - - - - <_> - 13 4 2 3 -1. - <_> - 12 5 2 1 3. - 1 - -2.3922720924019814e-002 - 2.4631519615650177e-001 - -5.1129460334777832e-002 - <_> - - <_> - - - - <_> - 0 0 2 3 -1. - <_> - 0 1 2 1 3. - 0 - 5.7842950336635113e-003 - 4.2333669960498810e-002 - -3.3898320794105530e-001 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - -2.3269839584827423e-002 - 2.4037189781665802e-001 - -3.4505158662796021e-002 - <_> - - <_> - - - - <_> - 5 4 3 2 -1. - <_> - 6 5 1 2 3. - 1 - -1.6350559890270233e-002 - 1.9407600164413452e-001 - -7.0264637470245361e-002 - <_> - - <_> - - - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - -4.7969698905944824e-002 - 2.3122610151767731e-001 - -5.0500500947237015e-003 - <_> - - <_> - - - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 3 3. - 1 - -1.7734989523887634e-002 - 2.2820329666137695e-001 - -6.5362311899662018e-002 - <_> - - <_> - - - - <_> - 11 0 4 4 -1. - <_> - 12 0 2 4 2. - 0 - -9.5965424552559853e-003 - -3.6203289031982422e-001 - 4.2960420250892639e-002 - <_> - - <_> - - - - <_> - 3 0 4 4 -1. - <_> - 4 0 2 4 2. - 0 - -1.1790839955210686e-002 - -3.3380389213562012e-001 - 3.7407919764518738e-002 - <_> - - <_> - - - - <_> - 9 4 3 5 -1. - <_> - 10 4 1 5 3. - 0 - -6.5361768007278442e-002 - -7.3411208391189575e-001 - 3.7781549617648125e-003 - <_> - - <_> - - - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - 0 - -9.2028174549341202e-003 - 1.9058810174465179e-001 - -7.3330029845237732e-002 - <_> - - <_> - - - - <_> - 16 8 2 3 -1. - <_> - 16 8 1 3 2. - 0 - -9.7162883321288973e-005 - 4.1498031467199326e-002 - -7.5053706765174866e-002 - <_> - - <_> - - - - <_> - 8 4 3 3 -1. - <_> - 7 5 3 1 3. - 1 - 3.4400381147861481e-002 - -5.5474020540714264e-002 - 2.4660380184650421e-001 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - 7.3116212151944637e-003 - -4.3518859893083572e-002 - 2.7988308668136597e-001 - <_> - - <_> - - - - <_> - 6 1 4 4 -1. - <_> - 7 1 2 4 2. - 0 - -1.3429949991405010e-002 - -3.6247709393501282e-001 - 3.9708640426397324e-002 - <_> - - <_> - - - - <_> - 7 2 8 2 -1. - <_> - 9 2 4 2 2. - 0 - -9.1758027672767639e-002 - 1. - -3.3344780094921589e-003 - <_> - - <_> - - - - <_> - 3 2 8 2 -1. - <_> - 5 2 4 2 2. - 0 - -6.6716182045638561e-003 - 1.0546670109033585e-001 - -1.4009909331798553e-001 - <_> - - <_> - - - - <_> - 5 1 10 2 -1. - <_> - 10 1 5 1 2. - <_> - 5 2 5 1 2. - 0 - 1.3265940360724926e-002 - -3.3783260732889175e-002 - 1.4028559625148773e-001 - <_> - - <_> - - - - <_> - 4 1 4 4 -1. - <_> - 5 1 2 4 2. - 0 - -1.2150679714977741e-002 - -3.2402610778808594e-001 - 4.1329998522996902e-002 - <_> - - <_> - - - - <_> - 10 6 3 1 -1. - <_> - 11 6 1 1 3. - 0 - -2.4970290251076221e-003 - 1.1668320000171661e-001 - -4.5901168137788773e-002 - <_> - - <_> - - - - <_> - 5 6 3 1 -1. - <_> - 6 6 1 1 3. - 0 - -2.3780330084264278e-003 - 2.3035770654678345e-001 - -5.9925749897956848e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.1058100312948227e-001 - 1.2656870298087597e-002 - -3.2122999429702759e-001 - <_> - - <_> - - - - <_> - 7 11 4 1 -1. - <_> - 8 11 2 1 2. - 0 - -4.5881681144237518e-003 - -5.6259912252426147e-001 - 2.2143730893731117e-002 - <_> - - <_> - - - - <_> - 15 2 3 1 -1. - <_> - 16 3 1 1 3. - 1 - 3.8563141133636236e-003 - 5.0461299717426300e-002 - -1.8779960274696350e-001 - <_> - - <_> - - - - <_> - 0 2 14 2 -1. - <_> - 0 2 7 1 2. - <_> - 7 3 7 1 2. - 0 - 3.3232510089874268e-002 - -3.6194700747728348e-002 - 3.8118681311607361e-001 - <_> - - <_> - - - - <_> - 11 2 1 4 -1. - <_> - 11 2 1 2 2. - 1 - -3.6123570054769516e-002 - 2.1880419552326202e-001 - -4.5539699494838715e-003 - <_> - - <_> - - - - <_> - 7 2 4 1 -1. - <_> - 7 2 2 1 2. - 1 - 7.2496462962590158e-005 - -2.3785440623760223e-001 - 6.5444566309452057e-002 - <_> - - <_> - - - - <_> - 12 2 3 4 -1. - <_> - 12 2 3 2 2. - 1 - -4.7242470085620880e-002 - 1.2158119678497314e-001 - -1.2862590141594410e-002 - <_> - - <_> - - - - <_> - 6 0 6 3 -1. - <_> - 9 0 3 3 2. - 0 - 8.3945877850055695e-003 - -1.2558129429817200e-001 - 9.8872929811477661e-002 - <_> - - <_> - - - - <_> - 16 8 2 3 -1. - <_> - 16 8 1 3 2. - 0 - -1.0565370321273804e-002 - -1.6977620124816895e-001 - 1.4602130278944969e-002 - <_> - - <_> - - - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - 0 - -8.1733884289860725e-003 - 2.1745790541172028e-001 - -6.1847139149904251e-002 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - -6.1808120459318161e-002 - 4.5185729861259460e-001 - -2.6334449648857117e-002 - <_> - - <_> - - - - <_> - 8 11 2 1 -1. - <_> - 9 11 1 1 2. - 0 - 4.0804222226142883e-003 - 1.8054539337754250e-002 - -7.1874141693115234e-001 - <_> - - <_> - - - - <_> - 16 1 2 4 -1. - <_> - 16 2 2 2 2. - 0 - 1.3910960406064987e-002 - 2.3350890725851059e-002 - -2.6776230335235596e-001 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - -2.5405980646610260e-002 - -2.9497951269149780e-001 - 3.8374088704586029e-002 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.6777290403842926e-001 - 2.8599929646588862e-004 - -5.5159300565719604e-001 - <_> - - <_> - - - - <_> - 1 1 12 2 -1. - <_> - 1 1 6 1 2. - <_> - 7 2 6 1 2. - 0 - 2.3761730641126633e-002 - -4.5785948634147644e-002 - 2.5161430239677429e-001 - <_> - - <_> - - - - <_> - 2 0 15 2 -1. - <_> - 7 0 5 2 3. - 0 - 6.6237300634384155e-002 - -3.4752521663904190e-002 - 2.6538351178169250e-001 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - 8.1444196403026581e-002 - 3.5755679011344910e-002 - -3.4804859757423401e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 2.3394089657813311e-003 - -3.3602658659219742e-002 - 1.0252500325441360e-001 - <_> - - <_> - - - - <_> - 3 2 1 3 -1. - <_> - 2 3 1 1 3. - 1 - 4.5066410675644875e-003 - 4.4362049549818039e-002 - -2.4036149680614471e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -1.0031039710156620e-004 - 6.1728168278932571e-002 - -5.3097378462553024e-002 - <_> - - <_> - - - - <_> - 6 6 2 2 -1. - <_> - 6 6 1 1 2. - <_> - 7 7 1 1 2. - 0 - 3.0237529426813126e-003 - -6.2164731323719025e-002 - 1.8157570064067841e-001 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -6.1851800419390202e-003 - 9.2360317707061768e-002 - -1.8650660291314125e-002 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - 0 - -9.3809583631809801e-005 - 8.8021188974380493e-002 - -1.2617850303649902e-001 - <_> - - <_> - - - - <_> - 13 3 2 1 -1. - <_> - 13 3 1 1 2. - 1 - 1.4543529599905014e-002 - 2.8216699138283730e-002 - -3.8093110918998718e-001 - <_> - - <_> - - - - <_> - 5 3 1 2 -1. - <_> - 5 3 1 1 2. - 1 - 8.3325942978262901e-003 - 2.8149429708719254e-002 - -3.9534220099449158e-001 - <_> - - <_> - - - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - 0 - -9.0263289166614413e-005 - 1.0053239762783051e-001 - -1.6846680641174316e-001 - <_> - - <_> - - - - <_> - 7 4 5 3 -1. - <_> - 6 5 5 1 3. - 1 - -4.0444839745759964e-002 - 4.4246968626976013e-001 - -2.5906469672918320e-002 - <_> - - <_> - - - - <_> - 5 9 8 1 -1. - <_> - 7 9 4 1 2. - 0 - -1.5071580186486244e-002 - -3.9157819747924805e-001 - 3.2732911407947540e-002 - <_> - - <_> - - - - <_> - 0 0 6 9 -1. - <_> - 2 0 2 9 3. - 0 - -2.4117240682244301e-002 - 1.0829959809780121e-001 - -1.0823729634284973e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 4.8642940819263458e-002 - 2.5470780208706856e-002 - -4.2936301231384277e-001 - <_> - - <_> - - - - <_> - 4 4 3 4 -1. - <_> - 5 4 1 4 3. - 0 - -6.2909321859478951e-003 - 1.6408300399780273e-001 - -6.6978372633457184e-002 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - -2.8071459382772446e-002 - -5.0821262598037720e-001 - 4.2055668309330940e-003 - <_> - - <_> - - - - <_> - 7 0 1 3 -1. - <_> - 6 1 1 1 3. - 1 - 9.8752342164516449e-003 - 3.0895600095391273e-002 - -3.6008161306381226e-001 - <_> - - <_> - - - - <_> - 0 11 18 1 -1. - <_> - 0 11 9 1 2. - 0 - 3.3613730221986771e-002 - 3.5042371600866318e-002 - -3.0913650989532471e-001 - <_> - - <_> - - - - <_> - 2 5 4 3 -1. - <_> - 3 5 2 3 2. - 0 - -9.5183821395039558e-003 - 1.4006739854812622e-001 - -8.0449193716049194e-002 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 14 7 2 2 2. - 1 - 2.9920000582933426e-002 - 9.9910451099276543e-003 - -1.4463490247726440e-001 - <_> - - <_> - - - - <_> - 3 6 4 2 -1. - <_> - 4 7 2 2 2. - 1 - -2.4601869285106659e-002 - -3.5186180472373962e-001 - 3.2366871833801270e-002 - <_> - - <_> - - - - <_> - 1 0 16 9 -1. - <_> - 1 3 16 3 3. - 0 - 2.9126951098442078e-001 - -2.5616630911827087e-002 - 4.3393591046333313e-001 - <_> - - <_> - - - - <_> - 4 8 6 4 -1. - <_> - 6 8 2 4 3. - 0 - -4.0764931589365005e-002 - -5.0976359844207764e-001 - 2.2032100707292557e-002 - <_> - - <_> - - - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - 0 - 1.7800629138946533e-002 - 1.9135050475597382e-002 - -4.2754751443862915e-001 - <_> - - <_> - - - - <_> - 7 0 3 3 -1. - <_> - 7 1 3 1 3. - 0 - 8.7978048250079155e-003 - -6.5080061554908752e-002 - 1.5290130674839020e-001 - <_> - - <_> - - - - <_> - 11 0 3 3 -1. - <_> - 11 1 3 1 3. - 0 - -6.4738159999251366e-003 - 1.6798080503940582e-001 - -5.1510188728570938e-002 - <_> - - <_> - - - - <_> - 0 3 3 3 -1. - <_> - 0 4 3 1 3. - 0 - -1.6864249482750893e-002 - -5.1681691408157349e-001 - 2.2280450910329819e-002 - <_> - - <_> - - - - <_> - 11 8 3 4 -1. - <_> - 12 8 1 4 3. - 0 - -1.0029999539256096e-002 - -3.4445670247077942e-001 - 2.4154469370841980e-002 - <_> - - <_> - - - - <_> - 1 0 14 2 -1. - <_> - 1 0 7 1 2. - <_> - 8 1 7 1 2. - 0 - 2.3689860478043556e-002 - -5.5780500173568726e-002 - 1.7974789440631866e-001 - <_> - - <_> - - - - <_> - 11 10 2 1 -1. - <_> - 11 10 1 1 2. - 0 - -3.5954909399151802e-003 - -2.9106938838958740e-001 - 1.8568839877843857e-002 - <_> - - <_> - - - - <_> - 1 10 16 2 -1. - <_> - 5 10 8 2 2. - 0 - -3.5044439136981964e-002 - 1.4640870690345764e-001 - -7.3545977473258972e-002 - <_> - - <_> - - - - <_> - 2 11 16 1 -1. - <_> - 6 11 8 1 2. - 0 - 5.0175017677247524e-003 - -6.3143156468868256e-002 - 1.2632110714912415e-001 - <_> - - <_> - - - - <_> - 4 8 3 4 -1. - <_> - 5 8 1 4 3. - 0 - -1.3052280060946941e-002 - -4.5200330018997192e-001 - 2.3266959935426712e-002 - <_> - - <_> - - - - <_> - 16 5 2 7 -1. - <_> - 16 5 1 7 2. - 0 - -1.9564910326153040e-003 - 7.2890207171440125e-002 - -1.5138550102710724e-001 - <_> - - <_> - - - - <_> - 0 5 2 7 -1. - <_> - 1 5 1 7 2. - 0 - 1.9179390743374825e-002 - -2.7251120656728745e-002 - 4.2502841353416443e-001 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 8 2 1 2. - 0 - 9.5272713224403560e-005 - -1.3008250296115875e-001 - 3.9709929376840591e-002 - <_> - - <_> - - - - <_> - 8 8 2 2 -1. - <_> - 8 8 1 2 2. - 1 - -1.4395490288734436e-002 - -2.2929459810256958e-001 - 4.1678968816995621e-002 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - -1.1709270067512989e-002 - 2.5639939308166504e-001 - -4.5481789857149124e-002 - <_> - - <_> - - - - <_> - 8 7 2 3 -1. - <_> - 8 8 2 1 3. - 0 - -7.6440530829131603e-003 - 2.8145501017570496e-001 - -4.3814260512590408e-002 - <_> - - <_> - - - - <_> - 16 7 2 2 -1. - <_> - 16 8 2 1 2. - 0 - 1.7276149243116379e-002 - 1.1722300201654434e-002 - -3.9212688803672791e-001 - <_> - - <_> - - - - <_> - 0 7 2 2 -1. - <_> - 0 8 2 1 2. - 0 - -2.8190009761601686e-003 - -2.8279209136962891e-001 - 3.6502439528703690e-002 - <_> - - <_> - - - - <_> - 6 5 8 6 -1. - <_> - 6 8 8 3 2. - 0 - -1.8481500446796417e-002 - -5.1169121265411377e-001 - 1.1270510032773018e-002 - <_> - - <_> - - - - <_> - 5 3 3 2 -1. - <_> - 6 4 1 2 3. - 1 - 2.3208990693092346e-002 - -2.9588380828499794e-002 - 3.4806481003761292e-001 - <_> - - <_> - - - - <_> - 14 3 1 2 -1. - <_> - 14 4 1 1 2. - 0 - 3.8326040375977755e-003 - -1.6199409961700439e-002 - 2.3312510550022125e-001 - <_> - - <_> - - - - <_> - 3 3 1 2 -1. - <_> - 3 4 1 1 2. - 0 - -1.2569040700327605e-004 - 8.2235969603061676e-002 - -1.2257509678602219e-001 - <_> - - <_> - - - - <_> - 11 0 3 1 -1. - <_> - 12 0 1 1 3. - 0 - -4.9403999000787735e-003 - -3.2972040772438049e-001 - 1.6205759719014168e-002 - <_> - - <_> - - - - <_> - 7 10 2 2 -1. - <_> - 7 10 1 1 2. - <_> - 8 11 1 1 2. - 0 - -9.9995522759854794e-005 - 1.0087980329990387e-001 - -8.4534652531147003e-002 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - -2.0880589261651039e-002 - -5.3558897972106934e-001 - 6.1522522009909153e-003 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - 9.4737410545349121e-003 - 2.2640680894255638e-002 - -3.5979229211807251e-001 - <_> - - <_> - - - - <_> - 15 6 2 4 -1. - <_> - 15 6 1 4 2. - 1 - 1.0163559578359127e-002 - -1.7618730664253235e-002 - 1.7577609419822693e-001 - <_> - - <_> - - - - <_> - 3 0 2 3 -1. - <_> - 2 1 2 1 3. - 1 - -1.6203319653868675e-002 - -3.0511561036109924e-001 - 2.7852470055222511e-002 - <_> - - <_> - - - - <_> - 11 1 5 6 -1. - <_> - 11 1 5 3 2. - 1 - -2.0264959335327148e-001 - 9.8889827728271484e-002 - -1.6635639593005180e-002 - <_> - - <_> - - - - <_> - 7 1 6 5 -1. - <_> - 7 1 3 5 2. - 1 - -1.8808260560035706e-001 - -3.3819800615310669e-001 - 2.7649369090795517e-002 - <_> - - <_> - - - - <_> - 7 9 4 3 -1. - <_> - 7 10 4 1 3. - 0 - -7.3039499111473560e-003 - 1.6829389333724976e-001 - -4.9701988697052002e-002 - <_> - - <_> - - - - <_> - 2 2 3 9 -1. - <_> - 3 5 1 3 9. - 0 - -2.1467709541320801e-001 - -8.2673180103302002e-001 - 9.7144627943634987e-003 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - -4.4587019830942154e-002 - 3.8129490613937378e-001 - -2.8068590909242630e-002 - <_> - - <_> - - - - <_> - 2 2 14 3 -1. - <_> - 2 3 14 1 3. - 0 - 2.2911230102181435e-002 - -7.0285782217979431e-002 - 1.2464100122451782e-001 - <_> - - <_> - - - - <_> - 11 3 1 6 -1. - <_> - 11 6 1 3 2. - 0 - 9.4582252204418182e-003 - -5.0712950527667999e-002 - 6.1203949153423309e-002 - <_> - - <_> - - - - <_> - 3 3 3 6 -1. - <_> - 4 5 1 2 9. - 0 - -1.2501789629459381e-001 - -6.4006787538528442e-001 - 1.1908539570868015e-002 - <_> - - <_> - - - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - 1.5444659627974033e-002 - -5.8896608650684357e-002 - 1.0827670246362686e-001 - <_> - - <_> - - - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - 0 - 1.5270099975168705e-003 - 4.3858438730239868e-002 - -1.9123759865760803e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 15 0 3 2 2. - <_> - 12 2 3 2 2. - 0 - -5.3543699905276299e-003 - 3.6371748894453049e-002 - -4.0430441498756409e-002 - <_> - - <_> - - - - <_> - 0 0 6 4 -1. - <_> - 0 0 3 2 2. - <_> - 3 2 3 2 2. - 0 - -1.5797719359397888e-002 - 1.6159279644489288e-001 - -5.5993270128965378e-002 - <_> - - <_> - - - - <_> - 16 0 2 3 -1. - <_> - 15 1 2 1 3. - 1 - -1.2601099908351898e-002 - 1.7859940230846405e-001 - -2.9063930734992027e-002 - <_> - - <_> - - - - <_> - 4 0 3 4 -1. - <_> - 5 1 1 4 3. - 1 - 8.4664657711982727e-002 - -1.0474080219864845e-002 - 8.0984550714492798e-001 - <_> - - <_> - - - - <_> - 16 2 2 1 -1. - <_> - 16 2 1 1 2. - 0 - 1.0696209938032553e-004 - -4.8453640192747116e-002 - 6.7813120782375336e-002 - <_> - - <_> - - - - <_> - 0 2 2 1 -1. - <_> - 1 2 1 1 2. - 0 - -1.1764469672925770e-004 - 5.3902100771665573e-002 - -1.8017460405826569e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - 9.8984912037849426e-003 - 1.9158050417900085e-002 - -2.7733120322227478e-001 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - -1.1610490037128329e-004 - 9.6694946289062500e-002 - -8.9068733155727386e-002 - <_> - - <_> - - - - <_> - 14 4 2 2 -1. - <_> - 15 4 1 1 2. - <_> - 14 5 1 1 2. - 0 - 3.3369490411132574e-003 - -3.5014580935239792e-002 - 2.6304298639297485e-001 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - 7.8220298746600747e-005 - -8.2813262939453125e-002 - 1.0475490242242813e-001 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 1 - -9.5098288729786873e-003 - -2.6514530181884766e-001 - 2.4094179272651672e-002 - <_> - - <_> - - - - <_> - 9 3 3 3 -1. - <_> - 8 4 3 1 3. - 1 - -1.2982529588043690e-002 - 6.4530380070209503e-002 - -1.3815590739250183e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 3.7175510078668594e-003 - -3.4010428935289383e-002 - 7.3918223381042480e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - -8.9635830372571945e-003 - 3.1214600801467896e-001 - -3.1653881072998047e-002 - <_> - - <_> - - - - <_> - 12 0 2 9 -1. - <_> - 12 0 1 9 2. - 1 - -3.8576980587095022e-003 - 6.2791481614112854e-002 - -4.3215770274400711e-002 - <_> - - <_> - - - - <_> - 6 0 9 2 -1. - <_> - 6 0 9 1 2. - 1 - 5.7608600705862045e-002 - 1.8788769841194153e-002 - -5.0399798154830933e-001 - <_> - - <_> - - - - <_> - 7 10 4 2 -1. - <_> - 8 10 2 2 2. - 0 - 3.1125131063163280e-003 - 3.5144101828336716e-002 - -2.3461879789829254e-001 - <_> - - <_> - - - - <_> - 0 0 4 1 -1. - <_> - 1 0 2 1 2. - 0 - -7.6296702027320862e-003 - -5.3097987174987793e-001 - 1.4961520209908485e-002 - <_> - - <_> - - - - <_> - 12 1 6 2 -1. - <_> - 12 1 3 2 2. - 0 - -6.5751709043979645e-003 - 5.0126578658819199e-002 - -3.6364991217851639e-002 - <_> - - <_> - - - - <_> - 0 1 6 2 -1. - <_> - 3 1 3 2 2. - 0 - 2.1125350147485733e-002 - -2.4575449526309967e-002 - 3.9593890309333801e-001 - <_> - - <_> - - - - <_> - 11 7 1 3 -1. - <_> - 11 8 1 1 3. - 0 - -3.0265909153968096e-003 - 1.1584889888763428e-001 - -2.8826450929045677e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - 1.2929990189149976e-003 - 2.6206869632005692e-002 - -3.0620381236076355e-001 - <_> - - <_> - - - - <_> - 16 8 2 4 -1. - <_> - 17 8 1 2 2. - <_> - 16 10 1 2 2. - 0 - 9.5255090855062008e-005 - -9.1093979775905609e-002 - 5.6246880441904068e-002 - <_> - - <_> - - - - <_> - 0 8 2 4 -1. - <_> - 0 8 1 2 2. - <_> - 1 10 1 2 2. - 0 - -1.1346739716827869e-002 - 4.4599908590316772e-001 - -1.9490949809551239e-002 - <_> - - <_> - - - - <_> - 16 6 2 2 -1. - <_> - 16 6 2 1 2. - 1 - -3.9465399459004402e-003 - 7.9005546867847443e-002 - -1.0729230195283890e-001 - <_> - - <_> - - - - <_> - 2 6 2 2 -1. - <_> - 2 6 1 2 2. - 1 - -1.3709669932723045e-002 - -2.6804009079933167e-001 - 3.4483738243579865e-002 - <_> - - <_> - - - - <_> - 8 6 4 2 -1. - <_> - 9 6 2 2 2. - 0 - -3.7944439798593521e-002 - -3.8875928521156311e-001 - 4.3536517769098282e-003 - <_> - - <_> - - - - <_> - 6 6 4 2 -1. - <_> - 7 6 2 2 2. - 0 - -5.1233209669589996e-003 - 1.1811450123786926e-001 - -7.6210573315620422e-002 - -1.5979900360107422e+000 - 17 - -1 - <_> - - - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - 5.4262988269329071e-003 - -3.0050519108772278e-001 - 6.7211848497390747e-001 - <_> - - <_> - - - - <_> - 7 3 4 3 -1. - <_> - 7 4 4 1 3. - 0 - -1.9688049331307411e-002 - 4.2098221182823181e-001 - -1.8416300415992737e-001 - <_> - - <_> - - - - <_> - 7 0 3 4 -1. - <_> - 7 1 3 2 2. - 0 - 1.0437469929456711e-001 - 7.9985307529568672e-003 - -1.3431090087890625e+003 - <_> - - <_> - - - - <_> - 6 6 6 2 -1. - <_> - 8 6 2 2 3. - 0 - -1.8829930573701859e-002 - 1.8901979923248291e-001 - -3.1901699304580688e-001 - <_> - - <_> - - - - <_> - 1 0 4 7 -1. - <_> - 3 0 2 7 2. - 0 - -9.0354820713400841e-003 - 9.9983938038349152e-002 - -3.9372038841247559e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - 8.2086473703384399e-003 - -1.3759939372539520e-001 - 4.2291760444641113e-001 - <_> - - <_> - - - - <_> - 7 1 5 4 -1. - <_> - 7 1 5 2 2. - 1 - 1.9290760159492493e-001 - -1.9123300909996033e-002 - -7.1446881103515625e+002 - <_> - - <_> - - - - <_> - 10 7 2 2 -1. - <_> - 11 7 1 1 2. - <_> - 10 8 1 1 2. - 0 - 7.5846072286367416e-003 - -3.0995719134807587e-002 - 2.8077399730682373e-001 - <_> - - <_> - - - - <_> - 6 7 2 2 -1. - <_> - 6 7 1 1 2. - <_> - 7 8 1 1 2. - 0 - 5.4157869890332222e-003 - 9.7298726439476013e-002 - -4.8166570067405701e-001 - <_> - - <_> - - - - <_> - 11 6 3 1 -1. - <_> - 12 6 1 1 3. - 0 - -3.2942730467766523e-003 - 2.7938959002494812e-001 - -4.1473869234323502e-002 - <_> - - <_> - - - - <_> - 0 3 3 1 -1. - <_> - 1 3 1 1 3. - 0 - -1.1245800124015659e-004 - 1.5364760160446167e-001 - -1.6658879816532135e-001 - <_> - - <_> - - - - <_> - 1 6 16 4 -1. - <_> - 9 6 8 2 2. - <_> - 1 8 8 2 2. - 0 - 1.7863340675830841e-002 - 7.2040103375911713e-002 - -3.2273280620574951e-001 - <_> - - <_> - - - - <_> - 4 4 4 3 -1. - <_> - 3 5 4 1 3. - 1 - -9.2770978808403015e-003 - 1.5470069646835327e-001 - -1.5196369588375092e-001 - <_> - - <_> - - - - <_> - 9 3 4 8 -1. - <_> - 9 7 4 4 2. - 0 - 4.9009688198566437e-002 - -2.1719500422477722e-001 - 4.7354388982057571e-002 - <_> - - <_> - - - - <_> - 3 4 12 2 -1. - <_> - 3 5 12 1 2. - 0 - -4.0119819343090057e-002 - 2.7460759878158569e-001 - -8.6348831653594971e-002 - <_> - - <_> - - - - <_> - 11 0 3 12 -1. - <_> - 11 6 3 6 2. - 0 - 1.9793610274791718e-001 - 1.8624650314450264e-002 - -5.3495907783508301e-001 - <_> - - <_> - - - - <_> - 4 0 3 12 -1. - <_> - 4 6 3 6 2. - 0 - 3.8065958768129349e-002 - -2.5904580950737000e-001 - 1.0311370342969894e-001 - <_> - - <_> - - - - <_> - 3 0 12 4 -1. - <_> - 3 1 12 2 2. - 0 - 3.7357859313488007e-002 - -1.1903320252895355e-001 - 1.6979260742664337e-001 - <_> - - <_> - - - - <_> - 0 0 18 3 -1. - <_> - 6 0 6 3 3. - 0 - -8.9973270893096924e-002 - 1.6638070344924927e-001 - -1.2824270129203796e-001 - <_> - - <_> - - - - <_> - 17 1 1 2 -1. - <_> - 17 2 1 1 2. - 0 - -3.6491220816969872e-003 - -2.0123389363288879e-001 - 2.1278910338878632e-002 - <_> - - <_> - - - - <_> - 0 1 1 2 -1. - <_> - 0 2 1 1 2. - 0 - -9.1840978711843491e-005 - 1.0628490149974823e-001 - -1.7940549552440643e-001 - <_> - - <_> - - - - <_> - 15 1 3 1 -1. - <_> - 16 2 1 1 3. - 1 - -1.1649549938738346e-002 - -4.3736520409584045e-001 - 3.0724890530109406e-002 - <_> - - <_> - - - - <_> - 3 1 1 3 -1. - <_> - 2 2 1 1 3. - 1 - -7.1681910194456577e-003 - -3.2502311468124390e-001 - 5.0562191754579544e-002 - <_> - - <_> - - - - <_> - 7 10 7 2 -1. - <_> - 7 11 7 1 2. - 0 - 3.7875070702284575e-003 - -1.9940949976444244e-001 - 7.7970452606678009e-002 - <_> - - <_> - - - - <_> - 3 5 3 3 -1. - <_> - 4 5 1 3 3. - 0 - -5.3427959792315960e-003 - 1.4677309989929199e-001 - -1.1329550296068192e-001 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 5 1 3 3. - 0 - 2.3160399869084358e-002 - -4.2170170694589615e-002 - 3.1582599878311157e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 6 2 2 2. - 0 - -7.6770680025219917e-003 - 3.1857290863990784e-001 - -5.1229890435934067e-002 - <_> - - <_> - - - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - 0 - 7.1013960987329483e-003 - 3.1445540487766266e-002 - -3.2645389437675476e-001 - <_> - - <_> - - - - <_> - 4 6 4 2 -1. - <_> - 5 7 2 2 2. - 1 - -2.0252959802746773e-002 - -4.0472069382667542e-001 - 3.4693039953708649e-002 - <_> - - <_> - - - - <_> - 7 0 4 4 -1. - <_> - 8 0 2 4 2. - 0 - -9.6413884311914444e-003 - -3.3648169040679932e-001 - 4.1794441640377045e-002 - <_> - - <_> - - - - <_> - 7 2 4 3 -1. - <_> - 7 3 4 1 3. - 0 - -2.3985069245100021e-002 - 3.1614878773689270e-001 - -4.6249549835920334e-002 - <_> - - <_> - - - - <_> - 15 5 3 1 -1. - <_> - 16 5 1 1 3. - 0 - -1.4840610325336456e-002 - -7.3656052350997925e-001 - 8.9046377688646317e-003 - <_> - - <_> - - - - <_> - 0 5 3 1 -1. - <_> - 1 5 1 1 3. - 0 - -9.4987051852513105e-005 - 1.1953199654817581e-001 - -1.1896529793739319e-001 - <_> - - <_> - - - - <_> - 11 2 3 4 -1. - <_> - 11 2 3 2 2. - 1 - 7.0412069559097290e-002 - -4.0320910513401031e-002 - 1.6706739366054535e-001 - <_> - - <_> - - - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - 4.9093589186668396e-003 - 4.8656750470399857e-002 - -2.8003680706024170e-001 - <_> - - <_> - - - - <_> - 6 10 6 1 -1. - <_> - 8 10 2 1 3. - 0 - -9.6227843314409256e-003 - -4.0062141418457031e-001 - 3.0084159225225449e-002 - <_> - - <_> - - - - <_> - 0 5 14 7 -1. - <_> - 7 5 7 7 2. - 0 - 1.6841889917850494e-001 - 1.9700720906257629e-002 - -5.4525882005691528e-001 - <_> - - <_> - - - - <_> - 17 0 1 2 -1. - <_> - 17 1 1 1 2. - 0 - 9.9319182336330414e-003 - 6.6423388198018074e-003 - -4.9300599098205566e-001 - <_> - - <_> - - - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - 0 - -9.2917856818530709e-005 - 7.3449976742267609e-002 - -1.6144999861717224e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - 4.0923128835856915e-003 - -4.7123961150646210e-002 - 7.2986431419849396e-002 - <_> - - <_> - - - - <_> - 6 1 4 2 -1. - <_> - 7 1 2 2 2. - 0 - 8.6956098675727844e-003 - 2.1329889073967934e-002 - -5.1486510038375854e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - -9.8282760009169579e-003 - 1.9071890413761139e-001 - -2.5422919541597366e-002 - <_> - - <_> - - - - <_> - 0 1 15 6 -1. - <_> - 5 3 5 2 9. - 0 - -7.6692271232604980e-001 - -6.6095298528671265e-001 - 1.8228070810437202e-002 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -3.2330170273780823e-002 - 1.4530169963836670e-001 - -1.4983410015702248e-002 - <_> - - <_> - - - - <_> - 5 7 2 3 -1. - <_> - 5 7 1 3 2. - 1 - 1.0294170118868351e-002 - 2.4919189512729645e-002 - -4.5525848865509033e-001 - <_> - - <_> - - - - <_> - 11 5 3 2 -1. - <_> - 12 5 1 2 3. - 0 - -3.0171580612659454e-002 - -4.6189090609550476e-001 - 3.3882521092891693e-003 - <_> - - <_> - - - - <_> - 4 5 3 2 -1. - <_> - 5 5 1 2 3. - 0 - -4.7148168087005615e-003 - 1.9720679521560669e-001 - -6.3187547028064728e-002 - <_> - - <_> - - - - <_> - 9 5 4 3 -1. - <_> - 10 5 2 3 2. - 0 - -9.0056415647268295e-003 - 1.8307769298553467e-001 - -7.2591513395309448e-002 - <_> - - <_> - - - - <_> - 5 5 4 3 -1. - <_> - 6 5 2 3 2. - 0 - -1.0803050361573696e-002 - 2.9357129335403442e-001 - -5.2083630114793777e-002 - <_> - - <_> - - - - <_> - 8 3 6 2 -1. - <_> - 10 3 2 2 3. - 0 - -2.2687910124659538e-002 - -2.2910049557685852e-001 - 2.9485609382390976e-002 - <_> - - <_> - - - - <_> - 7 8 3 1 -1. - <_> - 8 9 1 1 3. - 1 - 8.0813551321625710e-003 - 2.8026320040225983e-002 - -3.9691281318664551e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 9.2932283878326416e-003 - -2.3965410888195038e-002 - 1.1968089640140533e-001 - <_> - - <_> - - - - <_> - 4 3 6 2 -1. - <_> - 6 3 2 2 3. - 0 - -2.3424040526151657e-002 - -2.8772619366645813e-001 - 3.8220979273319244e-002 - <_> - - <_> - - - - <_> - 6 1 12 2 -1. - <_> - 12 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -7.5453490018844604e-002 - -8.9001321792602539e-001 - 9.9092291202396154e-004 - <_> - - <_> - - - - <_> - 0 1 12 2 -1. - <_> - 0 1 6 1 2. - <_> - 6 2 6 1 2. - 0 - -2.0602909848093987e-002 - 2.4050650000572205e-001 - -4.7928169369697571e-002 - <_> - - <_> - - - - <_> - 8 0 2 3 -1. - <_> - 8 1 2 1 3. - 0 - -7.1518528275191784e-003 - 2.2132579982280731e-001 - -6.0036528855562210e-002 - <_> - - <_> - - - - <_> - 7 0 3 2 -1. - <_> - 7 1 3 1 2. - 0 - 4.1199801489710808e-003 - -8.7927162647247314e-002 - 1.6041250526905060e-001 - <_> - - <_> - - - - <_> - 12 0 3 3 -1. - <_> - 13 1 1 3 3. - 1 - 3.9387959986925125e-002 - 1.0958000086247921e-002 - -2.2292630374431610e-001 - <_> - - <_> - - - - <_> - 6 0 3 3 -1. - <_> - 5 1 3 1 3. - 1 - 1.0546170175075531e-002 - 5.3426049649715424e-002 - -2.7179110050201416e-001 - <_> - - <_> - - - - <_> - 10 0 4 2 -1. - <_> - 11 0 2 2 2. - 0 - -1.1257980018854141e-002 - -5.5188918113708496e-001 - 1.2321829795837402e-002 - <_> - - <_> - - - - <_> - 5 7 2 1 -1. - <_> - 6 7 1 1 2. - 0 - 2.8547599868034013e-005 - -1.0614909976720810e-001 - 1.0695829987525940e-001 - <_> - - <_> - - - - <_> - 11 2 3 4 -1. - <_> - 11 2 3 2 2. - 1 - 1.4024679549038410e-003 - -6.3827931880950928e-002 - 3.6412809044122696e-002 - <_> - - <_> - - - - <_> - 6 6 2 4 -1. - <_> - 6 6 1 4 2. - 1 - -2.5279590860009193e-002 - -2.3291009664535522e-001 - 5.1007620990276337e-002 - <_> - - <_> - - - - <_> - 16 5 2 6 -1. - <_> - 16 7 2 2 3. - 0 - 5.5645029991865158e-002 - 1.4120610430836678e-003 - -5.9250742197036743e-001 - <_> - - <_> - - - - <_> - 0 5 2 6 -1. - <_> - 0 7 2 2 3. - 0 - 2.3897020146250725e-002 - 2.4702310562133789e-002 - -4.1002118587493896e-001 - <_> - - <_> - - - - <_> - 15 6 3 2 -1. - <_> - 16 6 1 2 3. - 0 - 1.7050260677933693e-002 - 8.3261402323842049e-003 - -3.5209038853645325e-001 - <_> - - <_> - - - - <_> - 0 6 3 2 -1. - <_> - 1 6 1 2 3. - 0 - -7.8733973205089569e-003 - 2.3625299334526062e-001 - -4.2287878692150116e-002 - <_> - - <_> - - - - <_> - 15 5 3 4 -1. - <_> - 16 5 1 4 3. - 0 - -2.5967480614781380e-002 - -3.5506701469421387e-001 - 1.0870999656617641e-002 - <_> - - <_> - - - - <_> - 0 5 3 4 -1. - <_> - 1 5 1 4 3. - 0 - 5.1288940012454987e-003 - -7.0529833436012268e-002 - 1.7466700077056885e-001 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - 5.2364799194037914e-003 - 2.0953370258212090e-002 - -3.3864089846611023e-001 - <_> - - <_> - - - - <_> - 4 0 4 2 -1. - <_> - 5 0 2 2 2. - 0 - 5.0087850540876389e-003 - 2.9292659834027290e-002 - -3.4224748611450195e-001 - <_> - - <_> - - - - <_> - 11 0 1 2 -1. - <_> - 11 0 1 1 2. - 1 - 1.9541790708899498e-002 - 1.5414350200444460e-003 - -2.3330779373645782e-001 - <_> - - <_> - - - - <_> - 7 0 2 1 -1. - <_> - 7 0 1 1 2. - 1 - 1.2687229551374912e-002 - -3.2202750444412231e-002 - 3.4885931015014648e-001 - <_> - - <_> - - - - <_> - 1 4 17 4 -1. - <_> - 1 5 17 2 2. - 0 - -3.1968150287866592e-002 - 7.6574698090553284e-002 - -1.1693509668111801e-001 - <_> - - <_> - - - - <_> - 0 0 18 12 -1. - <_> - 0 3 18 6 2. - 0 - -8.4089142084121704e-001 - -3.7160590291023254e-001 - 2.8848029673099518e-002 - <_> - - <_> - - - - <_> - 14 9 1 2 -1. - <_> - 14 9 1 1 2. - 1 - -1.2128669914091006e-004 - 3.5618349909782410e-002 - -8.1658117473125458e-002 - <_> - - <_> - - - - <_> - 4 9 2 1 -1. - <_> - 4 9 1 1 2. - 1 - -1.1257309961365536e-004 - 6.1848249286413193e-002 - -1.7893390357494354e-001 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.5692369639873505e-001 - 2.0418250933289528e-003 - -3.8372790813446045e-001 - <_> - - <_> - - - - <_> - 0 4 1 3 -1. - <_> - 0 5 1 1 3. - 0 - 2.9397590551525354e-003 - 3.6909751594066620e-002 - -2.6979750394821167e-001 - <_> - - <_> - - - - <_> - 14 6 3 3 -1. - <_> - 15 6 1 3 3. - 0 - -2.5340609718114138e-003 - 1.2149509787559509e-001 - -1.0271450132131577e-001 - <_> - - <_> - - - - <_> - 1 6 3 3 -1. - <_> - 2 6 1 3 3. - 0 - 7.0472261868417263e-003 - -5.1498528569936752e-002 - 1.9663390517234802e-001 - <_> - - <_> - - - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - -3.5378870088607073e-003 - 1.1377040296792984e-001 - -1.2270720303058624e-001 - <_> - - <_> - - - - <_> - 9 2 8 2 -1. - <_> - 9 2 4 2 2. - 1 - -1.9171670079231262e-001 - 2.0281049609184265e-001 - -5.9293661266565323e-002 - <_> - - <_> - - - - <_> - 14 5 3 1 -1. - <_> - 15 6 1 1 3. - 1 - -2.8194790706038475e-002 - -4.0183740854263306e-001 - 9.4950878992676735e-003 - <_> - - <_> - - - - <_> - 4 5 1 3 -1. - <_> - 3 6 1 1 3. - 1 - -2.7471040375530720e-003 - 1.3657639920711517e-001 - -8.3562202751636505e-002 - <_> - - <_> - - - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - 0 - -2.3678690195083618e-003 - 2.8895410895347595e-001 - -7.0791177451610565e-002 - <_> - - <_> - - - - <_> - 8 9 2 1 -1. - <_> - 8 9 1 1 2. - 1 - -1.0364330373704433e-002 - -3.6532059311866760e-001 - 3.1027559190988541e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - -3.1868910882622004e-003 - 1.2471160292625427e-001 - -2.1058630198240280e-002 - <_> - - <_> - - - - <_> - 4 0 3 2 -1. - <_> - 4 0 3 1 2. - 1 - -1.5623000450432301e-002 - -2.9756268858909607e-001 - 3.3180721104145050e-002 - <_> - - <_> - - - - <_> - 2 0 16 2 -1. - <_> - 10 0 8 1 2. - <_> - 2 1 8 1 2. - 0 - 1.7447229474782944e-003 - -5.5369090288877487e-002 - 8.0895766615867615e-002 - <_> - - <_> - - - - <_> - 4 0 3 3 -1. - <_> - 4 1 3 1 3. - 0 - -8.7693594396114349e-003 - 2.0353169739246368e-001 - -5.9447389096021652e-002 - <_> - - <_> - - - - <_> - 16 0 2 1 -1. - <_> - 16 0 1 1 2. - 0 - 1.0933070007013157e-004 - -5.3917091339826584e-002 - 6.7618027329444885e-002 - <_> - - <_> - - - - <_> - 0 0 2 1 -1. - <_> - 1 0 1 1 2. - 0 - -1.2108810187783092e-004 - 5.5683720856904984e-002 - -1.7708249390125275e-001 - <_> - - <_> - - - - <_> - 14 0 4 4 -1. - <_> - 16 0 2 2 2. - <_> - 14 2 2 2 2. - 0 - -9.8970606923103333e-003 - 9.2097222805023193e-002 - -3.7907868623733521e-002 - <_> - - <_> - - - - <_> - 0 0 4 4 -1. - <_> - 0 0 2 2 2. - <_> - 2 2 2 2 2. - 0 - -5.3500072099268436e-003 - 1.4658580720424652e-001 - -7.1295157074928284e-002 - <_> - - <_> - - - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - -7.7157528139650822e-003 - -2.1293020248413086e-001 - 3.0109029263257980e-002 - <_> - - <_> - - - - <_> - 4 0 1 3 -1. - <_> - 3 1 1 1 3. - 1 - -7.2461022064089775e-003 - -2.4743880331516266e-001 - 3.6422520875930786e-002 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 5 3 8 1 3. - 0 - 4.5332200825214386e-002 - -4.3887101113796234e-002 - 2.2771969437599182e-001 - <_> - - <_> - - - - <_> - 0 0 2 2 -1. - <_> - 0 0 1 1 2. - <_> - 1 1 1 1 2. - 0 - -1.0587189899524674e-004 - 1.0036029666662216e-001 - -9.9796630442142487e-002 - <_> - - <_> - - - - <_> - 6 0 12 2 -1. - <_> - 6 0 6 2 2. - 0 - -1.1086790263652802e-001 - -2.6335340738296509e-001 - 1.9541220739483833e-002 - <_> - - <_> - - - - <_> - 0 0 12 2 -1. - <_> - 6 0 6 2 2. - 0 - 1.4828580431640148e-002 - -6.1396230012178421e-002 - 1.5963110327720642e-001 - <_> - - <_> - - - - <_> - 8 5 10 4 -1. - <_> - 13 5 5 2 2. - <_> - 8 7 5 2 2. - 0 - 1.1451540194684640e-004 - -3.4139700233936310e-002 - 1.8776599317789078e-002 - <_> - - <_> - - - - <_> - 0 5 10 4 -1. - <_> - 0 5 5 2 2. - <_> - 5 7 5 2 2. - 0 - 1.0391230136156082e-001 - 1.8342059105634689e-002 - -5.5741232633590698e-001 - <_> - - <_> - - - - <_> - 17 4 1 3 -1. - <_> - 17 5 1 1 3. - 0 - -2.8403440956026316e-003 - -1.6176800429821014e-001 - 4.2230840772390366e-002 - <_> - - <_> - - - - <_> - 0 8 2 3 -1. - <_> - 1 8 1 3 2. - 0 - -3.9837881922721863e-003 - 1.2188349664211273e-001 - -7.5493358075618744e-002 - <_> - - <_> - - - - <_> - 12 9 6 2 -1. - <_> - 14 9 2 2 3. - 0 - -2.6931989938020706e-002 - -2.7949911355972290e-001 - 1.8144300207495689e-002 - <_> - - <_> - - - - <_> - 0 9 6 2 -1. - <_> - 2 9 2 2 3. - 0 - 6.3719637691974640e-003 - -7.2795078158378601e-002 - 1.5270389616489410e-001 - <_> - - <_> - - - - <_> - 10 4 3 5 -1. - <_> - 11 5 1 5 3. - 1 - 4.1068520396947861e-002 - -8.6038000881671906e-003 - 2.9300528764724731e-001 - <_> - - <_> - - - - <_> - 8 4 5 3 -1. - <_> - 7 5 5 1 3. - 1 - -3.8765709847211838e-002 - 2.6667380332946777e-001 - -3.6998551338911057e-002 - <_> - - <_> - - - - <_> - 9 8 2 1 -1. - <_> - 9 8 1 1 2. - 0 - -3.3269529230892658e-003 - -2.3761349916458130e-001 - 3.2018061727285385e-002 - <_> - - <_> - - - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - 0 - 8.5056803072802722e-005 - -7.0894226431846619e-002 - 1.2628500163555145e-001 - <_> - - <_> - - - - <_> - 6 8 6 2 -1. - <_> - 8 8 2 2 3. - 0 - 2.1096479147672653e-002 - 2.4189710617065430e-002 - -5.0479072332382202e-001 - <_> - - <_> - - - - <_> - 7 8 4 3 -1. - <_> - 7 9 4 1 3. - 0 - 1.5069710090756416e-002 - -4.9047719687223434e-002 - 2.0302620530128479e-001 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - -1.7079169629141688e-003 - 9.5796592533588409e-002 - -3.4222289919853210e-002 - <_> - - <_> - - - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - 0 - 4.1216560639441013e-003 - 2.4934209883213043e-002 - -3.6697131395339966e-001 - <_> - - <_> - - - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - 0 - 6.1798160895705223e-003 - -2.5011969730257988e-002 - 7.8190803527832031e-002 - <_> - - <_> - - - - <_> - 0 4 2 3 -1. - <_> - 0 5 2 1 3. - 0 - -1.0259440168738365e-002 - -3.8385409116744995e-001 - 2.3607190698385239e-002 - <_> - - <_> - - - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 1 2. - <_> - 10 7 1 1 2. - 0 - 4.2493520304560661e-003 - -1.8063470721244812e-002 - 9.7392469644546509e-002 - <_> - - <_> - - - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 2 2. - 1 - -1.8078900873661041e-002 - -2.8260070085525513e-001 - 3.2420400530099869e-002 - <_> - - <_> - - - - <_> - 15 4 1 2 -1. - <_> - 15 5 1 1 2. - 0 - -1.0033250146079808e-004 - 5.8378711342811584e-002 - -9.5965467393398285e-002 - <_> - - <_> - - - - <_> - 6 5 2 4 -1. - <_> - 6 5 1 2 2. - <_> - 7 7 1 2 2. - 0 - 5.5636470206081867e-003 - -6.2373951077461243e-002 - 1.3677039742469788e-001 - <_> - - <_> - - - - <_> - 12 3 1 4 -1. - <_> - 12 3 1 2 2. - 1 - 5.9635799378156662e-002 - 7.6047349721193314e-003 - -3.7049409747123718e-001 - <_> - - <_> - - - - <_> - 1 1 2 1 -1. - <_> - 2 1 1 1 2. - 0 - -1.1734029976651073e-004 - 5.6312419474124908e-002 - -1.6223900020122528e-001 - <_> - - <_> - - - - <_> - 12 0 6 4 -1. - <_> - 14 0 2 4 3. - 0 - 3.2071691006422043e-002 - 1.7075739800930023e-002 - -1.7555209994316101e-001 - <_> - - <_> - - - - <_> - 0 0 1 3 -1. - <_> - 0 1 1 1 3. - 0 - -9.0831192210316658e-005 - 9.6431486308574677e-002 - -9.5327220857143402e-002 - <_> - - <_> - - - - <_> - 5 0 12 2 -1. - <_> - 11 0 6 1 2. - <_> - 5 1 6 1 2. - 0 - 3.1735259108245373e-003 - -3.5405401140451431e-002 - 5.5357661098241806e-002 - <_> - - <_> - - - - <_> - 2 1 12 3 -1. - <_> - 6 1 4 3 3. - 0 - -2.9976980760693550e-002 - 8.3683349192142487e-002 - -1.0876650363206863e-001 - <_> - - <_> - - - - <_> - 5 2 8 3 -1. - <_> - 7 2 4 3 2. - 0 - -3.8275059312582016e-002 - -2.4115200340747833e-001 - 4.2547758668661118e-002 - <_> - - <_> - - - - <_> - 3 0 2 4 -1. - <_> - 3 1 2 2 2. - 0 - 3.6104370374232531e-003 - -7.1690596640110016e-002 - 1.3356970250606537e-001 - <_> - - <_> - - - - <_> - 14 1 4 3 -1. - <_> - 14 2 4 1 3. - 0 - 2.7101410552859306e-002 - 1.6210360452532768e-002 - -3.3410280942916870e-001 - <_> - - <_> - - - - <_> - 0 11 15 1 -1. - <_> - 5 11 5 1 3. - 0 - 7.4129230342805386e-003 - -7.1663141250610352e-002 - 1.4046929776668549e-001 - <_> - - <_> - - - - <_> - 15 1 3 3 -1. - <_> - 15 2 3 1 3. - 0 - 1.6567030921578407e-002 - 8.9016826823353767e-003 - -1.1316739767789841e-001 - <_> - - <_> - - - - <_> - 0 6 4 6 -1. - <_> - 0 8 4 2 3. - 0 - 6.4526550471782684e-002 - 1.4559620060026646e-002 - -6.1538118124008179e-001 - <_> - - <_> - - - - <_> - 14 4 1 2 -1. - <_> - 14 5 1 1 2. - 0 - 6.8156858906149864e-003 - -1.9643720239400864e-002 - 4.3227869272232056e-001 - <_> - - <_> - - - - <_> - 3 4 1 2 -1. - <_> - 3 5 1 1 2. - 0 - -8.8827422587200999e-005 - 9.6494443714618683e-002 - -9.7575537860393524e-002 - <_> - - <_> - - - - <_> - 10 2 6 6 -1. - <_> - 12 4 2 2 9. - 0 - -8.9457683265209198e-002 - 7.5192607939243317e-002 - -4.5244731009006500e-002 - <_> - - <_> - - - - <_> - 2 2 6 6 -1. - <_> - 4 4 2 2 9. - 0 - -2.1514390408992767e-001 - -4.5402219891548157e-001 - 1.9804859533905983e-002 - <_> - - <_> - - - - <_> - 9 0 1 3 -1. - <_> - 8 1 1 1 3. - 1 - -1.2561500072479248e-002 - -2.4084420502185822e-001 - 1.3274069875478745e-002 - <_> - - <_> - - - - <_> - 9 0 3 1 -1. - <_> - 10 1 1 1 3. - 1 - -8.4761697798967361e-003 - 2.7529099583625793e-001 - -4.5817509293556213e-002 - <_> - - <_> - - - - <_> - 6 1 6 3 -1. - <_> - 6 2 6 1 3. - 0 - 5.1104858517646790e-002 - -2.5254199281334877e-002 - 3.1543159484863281e-001 - <_> - - <_> - - - - <_> - 0 8 1 2 -1. - <_> - 0 9 1 1 2. - 0 - 9.7488082246854901e-005 - -1.2215600162744522e-001 - 7.2712212800979614e-002 - <_> - - <_> - - - - <_> - 14 9 4 3 -1. - <_> - 14 10 4 1 3. - 0 - 1.4160290360450745e-002 - 2.8567990288138390e-002 - -3.4588310122489929e-001 - <_> - - <_> - - - - <_> - 8 5 4 3 -1. - <_> - 9 6 2 3 2. - 1 - -4.9706948630046099e-005 - 5.6665088981389999e-002 - -1.4329999685287476e-001 - <_> - - <_> - - - - <_> - 9 7 9 4 -1. - <_> - 9 9 9 2 2. - 0 - 2.2474400699138641e-002 - -2.0662429928779602e-001 - 2.6640780270099640e-002 - <_> - - <_> - - - - <_> - 0 7 9 4 -1. - <_> - 0 9 9 2 2. - 0 - 9.7482956945896149e-002 - 5.0016429275274277e-002 - -2.0301230251789093e-001 - <_> - - <_> - - - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - -4.8470269888639450e-002 - 2.1042500436306000e-001 - -1.9063079729676247e-002 - <_> - - <_> - - - - <_> - 3 8 1 3 -1. - <_> - 2 9 1 1 3. - 1 - 7.1597727946937084e-003 - -4.5765839517116547e-002 - 1.9567190110683441e-001 - <_> - - <_> - - - - <_> - 15 9 3 3 -1. - <_> - 15 10 3 1 3. - 0 - -7.2543402202427387e-003 - -3.2032880187034607e-001 - 2.6651080697774887e-002 - <_> - - <_> - - - - <_> - 6 4 5 3 -1. - <_> - 5 5 5 1 3. - 1 - -1.8530499190092087e-002 - 1.9439229369163513e-001 - -4.8699580132961273e-002 - <_> - - <_> - - - - <_> - 2 6 15 6 -1. - <_> - 7 8 5 2 9. - 0 - 3.8783821463584900e-001 - -1.6777930781245232e-002 - 3.7111368775367737e-001 - <_> - - <_> - - - - <_> - 3 5 12 3 -1. - <_> - 6 5 6 3 2. - 0 - 7.6014406979084015e-002 - 1.7125319689512253e-002 - -5.8361458778381348e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - 4.9989949911832809e-003 - 1.7290040850639343e-002 - -1.2039519846439362e-001 - <_> - - <_> - - - - <_> - 0 9 3 3 -1. - <_> - 0 10 3 1 3. - 0 - 9.9080810323357582e-003 - 2.3359630256891251e-002 - -3.7375789880752563e-001 - <_> - - <_> - - - - <_> - 17 9 1 2 -1. - <_> - 17 10 1 1 2. - 0 - 1.0389750241301954e-004 - -1.0736549645662308e-001 - 4.5764569193124771e-002 - <_> - - <_> - - - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - 0 - -1.0103100212290883e-003 - -2.2198240458965302e-001 - 3.9023850113153458e-002 - <_> - - <_> - - - - <_> - 16 8 2 2 -1. - <_> - 16 8 1 2 2. - 1 - -2.3250900208950043e-002 - 1.2186550348997116e-001 - -1.8887069076299667e-002 - <_> - - <_> - - - - <_> - 2 8 2 2 -1. - <_> - 2 8 2 1 2. - 1 - 8.6560938507318497e-003 - -3.4802809357643127e-002 - 2.6685670018196106e-001 - <_> - - <_> - - - - <_> - 17 8 1 3 -1. - <_> - 16 9 1 1 3. - 1 - 1.0738030076026917e-002 - 1.4226100407540798e-002 - -2.1260090172290802e-001 - <_> - - <_> - - - - <_> - 0 7 3 3 -1. - <_> - 1 7 1 3 3. - 0 - -3.5327710211277008e-003 - 1.3741309940814972e-001 - -6.6508442163467407e-002 - <_> - - <_> - - - - <_> - 17 7 1 2 -1. - <_> - 17 8 1 1 2. - 0 - 3.4663160331547260e-003 - 2.8193399310112000e-002 - -8.0336898565292358e-002 - <_> - - <_> - - - - <_> - 0 7 1 2 -1. - <_> - 0 8 1 1 2. - 0 - -1.0870849946513772e-003 - -2.1752350032329559e-001 - 4.2343270033597946e-002 - <_> - - <_> - - - - <_> - 16 1 2 4 -1. - <_> - 15 2 2 2 2. - 1 - -3.5930581390857697e-002 - 3.5099908709526062e-001 - -3.8252778351306915e-002 - <_> - - <_> - - - - <_> - 7 4 3 3 -1. - <_> - 7 5 3 1 3. - 0 - -2.5020960718393326e-002 - 2.2377529740333557e-001 - -3.8715720176696777e-002 - <_> - - <_> - - - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - 0 - -2.4599849712103605e-003 - 7.4148297309875488e-002 - -7.8528337180614471e-002 - <_> - - <_> - - - - <_> - 3 2 12 1 -1. - <_> - 9 2 6 1 2. - 0 - 6.0168118216097355e-003 - -1.0999929904937744e-001 - 7.8647941350936890e-002 - <_> - - <_> - - - - <_> - 4 0 10 4 -1. - <_> - 4 0 5 4 2. - 0 - -1.4243890345096588e-001 - -3.6323529481887817e-001 - 2.4560069665312767e-002 - <_> - - <_> - - - - <_> - 2 5 3 4 -1. - <_> - 3 5 1 4 3. - 0 - -4.7228108160197735e-003 - 1.0705450177192688e-001 - -7.6868243515491486e-002 - <_> - - <_> - - - - <_> - 13 0 3 12 -1. - <_> - 14 0 1 12 3. - 0 - -3.1893420964479446e-002 - -3.7086701393127441e-001 - 2.6756819337606430e-002 - <_> - - <_> - - - - <_> - 2 4 2 2 -1. - <_> - 2 4 1 1 2. - <_> - 3 5 1 1 2. - 0 - 3.5616129171103239e-003 - -3.2798498868942261e-002 - 2.6696491241455078e-001 - <_> - - <_> - - - - <_> - 13 0 2 12 -1. - <_> - 13 0 1 12 2. - 0 - 5.4270081222057343e-002 - 7.0277871564030647e-003 - -8.3340001106262207e-001 - <_> - - <_> - - - - <_> - 3 0 2 12 -1. - <_> - 4 0 1 12 2. - 0 - 4.1021820157766342e-002 - 8.8532911613583565e-003 - -7.8412932157516479e-001 - <_> - - <_> - - - - <_> - 17 1 1 4 -1. - <_> - 17 2 1 2 2. - 0 - -1.7731649801135063e-002 - -4.3762990832328796e-001 - -6.9212907692417502e-004 - <_> - - <_> - - - - <_> - 0 1 3 3 -1. - <_> - 0 2 3 1 3. - 0 - 1.0361500084400177e-002 - 2.4823799729347229e-002 - -3.1671279668807983e-001 - <_> - - <_> - - - - <_> - 8 5 3 2 -1. - <_> - 9 5 1 2 3. - 0 - -7.0502250455319881e-003 - 1.2061820179224014e-001 - -4.4687919318675995e-002 - <_> - - <_> - - - - <_> - 2 5 1 2 -1. - <_> - 2 5 1 1 2. - 1 - -1.6122040105983615e-003 - 6.3392668962478638e-002 - -1.2448409944772720e-001 - <_> - - <_> - - - - <_> - 13 1 4 3 -1. - <_> - 12 2 4 1 3. - 1 - 4.6751599758863449e-002 - -3.2111309468746185e-002 - 3.8545480370521545e-001 - <_> - - <_> - - - - <_> - 5 1 3 4 -1. - <_> - 6 2 1 4 3. - 1 - 1.5507729724049568e-002 - -4.6862591058015823e-002 - 1.9358439743518829e-001 - <_> - - <_> - - - - <_> - 9 1 2 6 -1. - <_> - 9 1 1 6 2. - 1 - 4.2960081249475479e-002 - -1.0605080053210258e-002 - 1.3616879284381866e-001 - <_> - - <_> - - - - <_> - 9 1 6 2 -1. - <_> - 9 1 6 1 2. - 1 - 5.3200960159301758e-002 - 2.9277659952640533e-002 - -3.0889630317687988e-001 - <_> - - <_> - - - - <_> - 12 1 6 4 -1. - <_> - 15 1 3 2 2. - <_> - 12 3 3 2 2. - 0 - -2.5974009186029434e-002 - 8.4145203232765198e-002 - -3.3409930765628815e-002 - <_> - - <_> - - - - <_> - 0 1 6 4 -1. - <_> - 0 1 3 2 2. - <_> - 3 3 3 2 2. - 0 - -1.8476620316505432e-002 - 1.4825859665870667e-001 - -5.3597509860992432e-002 - <_> - - <_> - - - - <_> - 8 5 4 7 -1. - <_> - 9 5 2 7 2. - 0 - -1.3039880432188511e-003 - 4.0190171450376511e-002 - -9.2481881380081177e-002 - <_> - - <_> - - - - <_> - 6 5 4 7 -1. - <_> - 7 5 2 7 2. - 0 - -3.1569059938192368e-003 - 8.6595647037029266e-002 - -1.2246470153331757e-001 - <_> - - <_> - - - - <_> - 8 9 4 2 -1. - <_> - 9 9 2 2 2. - 0 - -6.9843409582972527e-003 - -3.1575238704681396e-001 - 2.5440100580453873e-002 - <_> - - <_> - - - - <_> - 6 9 4 2 -1. - <_> - 7 9 2 2 2. - 0 - -5.6869657710194588e-003 - -2.8521931171417236e-001 - 3.2773211598396301e-002 - <_> - - <_> - - - - <_> - 10 5 3 3 -1. - <_> - 11 6 1 3 3. - 1 - -1.7049470916390419e-002 - 7.7424846589565277e-002 - -3.9009008556604385e-002 - <_> - - <_> - - - - <_> - 8 5 3 3 -1. - <_> - 7 6 3 1 3. - 1 - -3.3813931047916412e-002 - 4.3394011259078979e-001 - -2.1828850731253624e-002 - <_> - - <_> - - - - <_> - 11 2 4 4 -1. - <_> - 11 2 4 2 2. - 1 - -7.7675722539424896e-002 - 1.6437239944934845e-001 - -1.6524160280823708e-002 - <_> - - <_> - - - - <_> - 6 8 1 3 -1. - <_> - 5 9 1 1 3. - 1 - -4.9925399944186211e-003 - 1.7385929822921753e-001 - -4.9703989177942276e-002 - -1.5637309551239014e+000 - 18 - -1 - diff --git a/data/haarcascades/haarcascade_mcs_upperbody.xml b/data/haarcascades/haarcascade_mcs_upperbody.xml deleted file mode 100644 index 76ba9ceef9..0000000000 --- a/data/haarcascades/haarcascade_mcs_upperbody.xml +++ /dev/null @@ -1,37318 +0,0 @@ - - - -BOOST - HAAR - 22 - 20 - - 334 - - 0 - 19 - - <_> - 34 - -1.3463230133056641e+00 - - <_> - - 0 -1 0 1.2492679525166750e-03 - - -4.9203258752822876e-01 3.8543990254402161e-01 - <_> - - 0 -1 1 3.1020329333841801e-04 - - -3.7493890523910522e-01 2.8437709808349609e-01 - <_> - - 0 -1 2 9.6315346658229828e-02 - - -1.1613050103187561e-01 7.2967511415481567e-01 - <_> - - 0 -1 3 -2.5381650775671005e-02 - - 3.4308171272277832e-01 -2.1711470186710358e-01 - <_> - - 0 -1 4 -3.3788379369070753e-05 - - 2.3084780573844910e-01 -2.1428909897804260e-01 - <_> - - 0 -1 5 -9.9204434081912041e-03 - - -5.4596477746963501e-01 1.4852449297904968e-01 - <_> - - 0 -1 6 3.7437680363655090e-01 - - -5.5639829486608505e-02 -3.8648000488281250e+03 - <_> - - 0 -1 7 1.5777030587196350e-01 - - -8.3601050078868866e-02 6.3613307476043701e-01 - <_> - - 0 -1 8 -8.6156948236748576e-04 - - -4.2473611235618591e-01 1.1517520248889923e-01 - <_> - - 0 -1 9 1.4470949536189437e-03 - - 8.8099062442779541e-02 -3.3703750371932983e-01 - <_> - - 0 -1 10 9.6110720187425613e-04 - - 1.4646869897842407e-01 -3.9539098739624023e-01 - <_> - - 0 -1 11 -1.7864780500531197e-02 - - 3.4492269158363342e-01 -1.1889699846506119e-01 - <_> - - 0 -1 12 1.4062010450288653e-05 - - -1.7647840082645416e-01 2.4890510737895966e-01 - <_> - - 0 -1 13 -4.6323220885824412e-05 - - 1.1303039640188217e-01 -1.2764999270439148e-01 - <_> - - 0 -1 14 7.5712718535214663e-04 - - 1.6781170666217804e-01 -3.5051900148391724e-01 - <_> - - 0 -1 15 8.4784009959548712e-04 - - 4.7085449099540710e-02 -2.7790009975433350e-01 - <_> - - 0 -1 16 -1.3911760179325938e-03 - - -4.4459569454193115e-01 1.2602819502353668e-01 - <_> - - 0 -1 17 -6.3936309888958931e-03 - - 4.0806901454925537e-01 -1.0456319898366928e-01 - <_> - - 0 -1 18 -3.4687869629124179e-05 - - 2.0899119973182678e-01 -1.7859880626201630e-01 - <_> - - 0 -1 19 4.6302800910780206e-05 - - -8.1336483359336853e-02 6.3226006925106049e-02 - <_> - - 0 -1 20 -5.2149579860270023e-03 - - 3.4537479281425476e-01 -1.0222029685974121e-01 - <_> - - 0 -1 21 -1.4078790554776788e-03 - - -3.1319180130958557e-01 1.2761330604553223e-01 - <_> - - 0 -1 22 -1.7251130193471909e-03 - - -5.3231698274612427e-01 3.0767120420932770e-02 - <_> - - 0 -1 23 6.3083309214562178e-04 - - 7.3742397129535675e-02 -2.9746720194816589e-01 - <_> - - 0 -1 24 2.8300069272518158e-02 - - -5.0585608929395676e-02 5.7231342792510986e-01 - <_> - - 0 -1 25 3.0987561331130564e-05 - - -1.9619299471378326e-01 1.5451109409332275e-01 - <_> - - 0 -1 26 2.0265610516071320e-01 - - -8.0046234652400017e-03 -2.8372451171875000e+03 - <_> - - 0 -1 27 -3.0515150865539908e-04 - - 2.8124749660491943e-01 -1.4992569386959076e-01 - <_> - - 0 -1 28 4.3186601251363754e-03 - - 9.0424761176109314e-02 -5.3762412071228027e-01 - <_> - - 0 -1 29 -1.0599900037050247e-01 - - -4.8290529847145081e-01 8.8053867220878601e-03 - <_> - - 0 -1 30 6.4299613237380981e-02 - - -2.2408259974326938e-04 -3.2261879882812500e+03 - <_> - - 0 -1 31 -4.6435470721917227e-05 - - 1.3458590209484100e-01 -1.2009020149707794e-01 - <_> - - 0 -1 32 5.3147651487961411e-04 - - 1.2874309718608856e-01 -3.3382850885391235e-01 - <_> - - 0 -1 33 1.0495550185441971e-01 - - -7.2582751512527466e-02 4.0762761235237122e-01 - <_> - 24 - -1.3991409540176392e+00 - - <_> - - 0 -1 34 2.6972210034728050e-03 - - -4.9663209915161133e-01 5.2796190977096558e-01 - <_> - - 0 -1 35 -3.1051780097186565e-03 - - 3.0832630395889282e-01 -1.7500090599060059e-01 - <_> - - 0 -1 36 -4.6089510433375835e-03 - - 3.9825218915939331e-01 -2.3838889598846436e-01 - <_> - - 0 -1 37 7.6866783201694489e-02 - - -1.2886370718479156e-01 5.6268239021301270e-01 - <_> - - 0 -1 38 6.0181751847267151e-02 - - 1.1992460116744041e-02 -5.7196899414062500e+03 - <_> - - 0 -1 39 -2.3719770833849907e-03 - - 9.6406437456607819e-02 -7.2531573474407196e-02 - <_> - - 0 -1 40 -2.2351389750838280e-02 - - 4.2732998728752136e-01 -2.3335489630699158e-01 - <_> - - 0 -1 41 1.1298250174149871e-03 - - -2.4561679363250732e-01 2.3006400465965271e-01 - <_> - - 0 -1 42 -1.6542900353670120e-02 - - -7.2953182458877563e-01 7.1322768926620483e-02 - <_> - - 0 -1 43 1.6292719170451164e-02 - - 5.3547341376543045e-02 -6.5810048580169678e-01 - <_> - - 0 -1 44 1.4970790361985564e-03 - - -1.8056739866733551e-01 2.4561589956283569e-01 - <_> - - 0 -1 45 -1.4413120225071907e-03 - - 1.1152800172567368e-01 -8.2167521119117737e-02 - <_> - - 0 -1 46 -1.0352210141718388e-02 - - -5.1681971549987793e-01 7.7380821108818054e-02 - <_> - - 0 -1 47 -5.2497540600597858e-03 - - 1.5652020275592804e-01 -1.2938609719276428e-01 - <_> - - 0 -1 48 1.5690580476075411e-03 - - 1.5069690346717834e-01 -4.0132901072502136e-01 - <_> - - 0 -1 49 -2.6500379666686058e-02 - - 1.0065379738807678e-01 -1.3190379738807678e-01 - <_> - - 0 -1 50 6.9238577270880342e-04 - - -1.6020749509334564e-01 2.6513510942459106e-01 - <_> - - 0 -1 51 -1.2375250225886703e-03 - - -3.6430040001869202e-01 1.5638789534568787e-01 - <_> - - 0 -1 52 8.3097338676452637e-02 - - -5.0581160932779312e-02 -1.1069330078125000e+04 - <_> - - 0 -1 53 2.7459360659122467e-02 - - 1.2003759853541851e-02 -6.0372191667556763e-01 - <_> - - 0 -1 54 -9.3256239779293537e-04 - - -3.2193431258201599e-01 1.0041300207376480e-01 - <_> - - 0 -1 55 1.3935200404375792e-03 - - -1.6904979944229126e-01 1.5307870507240295e-01 - <_> - - 0 -1 56 1.1394890025258064e-03 - - 1.4565330743789673e-01 -2.9629468917846680e-01 - <_> - - 0 -1 57 7.9129770398139954e-02 - - -1.5996749699115753e-01 2.6491358876228333e-01 - <_> - 56 - -1.1955209970474243e+00 - - <_> - - 0 -1 58 4.6252529136836529e-03 - - -3.4763190150260925e-01 4.8843431472778320e-01 - <_> - - 0 -1 59 4.4427260756492615e-02 - - -1.6238899528980255e-01 6.0961002111434937e-01 - <_> - - 0 -1 60 -1.2432290241122246e-02 - - 3.0170831084251404e-01 -1.7306919395923615e-01 - <_> - - 0 -1 61 9.8982118070125580e-02 - - -9.2205569148063660e-02 5.9408599138259888e-01 - <_> - - 0 -1 62 2.0849579572677612e-01 - - 1.0404920205473900e-02 -1.1054240234375000e+04 - <_> - - 0 -1 63 4.2460359632968903e-02 - - 1.3334839604794979e-04 -2.9971960067749023e+01 - <_> - - 0 -1 64 2.5334998965263367e-01 - - 2.1595309954136610e-04 -2.6144009765625000e+04 - <_> - - 0 -1 65 -1.6708360612392426e-01 - - 4.0918990969657898e-01 -1.0354740172624588e-01 - <_> - - 0 -1 66 6.9854892790317535e-02 - - 4.6605318784713745e-03 -5.1069450000000000e+05 - <_> - - 0 -1 67 -1.1447629658505321e-03 - - 1.4222350716590881e-01 -8.5505887866020203e-02 - <_> - - 0 -1 68 -3.4705658908933401e-03 - - -5.2971118688583374e-01 8.3049722015857697e-02 - <_> - - 0 -1 69 2.1921019069850445e-03 - - 7.1161970496177673e-02 -4.0433588624000549e-01 - <_> - - 0 -1 70 1.1649200459942222e-03 - - 1.2676270306110382e-01 -4.0600609779357910e-01 - <_> - - 0 -1 71 -4.4645569287240505e-03 - - 1.1181999742984772e-01 -5.5742070078849792e-02 - <_> - - 0 -1 72 8.8914260268211365e-02 - - 3.0051500070840120e-03 -4.1628109375000000e+04 - <_> - - 0 -1 73 -6.0652620159089565e-03 - - 2.6277920603752136e-01 -1.5126389265060425e-01 - <_> - - 0 -1 74 6.2857627868652344e-02 - - -1.3715559616684914e-02 -8.7274068750000000e+05 - <_> - - 0 -1 75 5.6487987749278545e-03 - - -1.5913739800453186e-01 3.1859260797500610e-01 - <_> - - 0 -1 76 1.4022980630397797e-01 - - -9.5816357061266899e-03 -1.0553549804687500e+04 - <_> - - 0 -1 77 2.3099619895219803e-02 - - 9.7601450979709625e-02 -3.8035428524017334e-01 - <_> - - 0 -1 78 6.2180660665035248e-02 - - 7.3636812157928944e-03 -2183168. - <_> - - 0 -1 79 -5.5402978323400021e-03 - - -5.0896018743515015e-01 5.4681908339262009e-02 - <_> - - 0 -1 80 1.5392599999904633e-01 - - 4.8121181316673756e-03 -1.8279500000000000e+04 - <_> - - 0 -1 81 -7.0815882645547390e-04 - - -2.2779859602451324e-01 5.8023121207952499e-02 - <_> - - 0 -1 82 3.2015278702601790e-04 - - -1.5084609389305115e-01 2.1459349989891052e-01 - <_> - - 0 -1 83 2.3664999753236771e-02 - - -3.5690288990736008e-02 3.1699979305267334e-01 - <_> - - 0 -1 84 -3.3508460037410259e-03 - - -4.5990100502967834e-01 6.0951150953769684e-02 - <_> - - 0 -1 85 -7.5522147119045258e-02 - - 1.1057890206575394e-01 -4.0514450520277023e-02 - <_> - - 0 -1 86 -5.7262121699750423e-03 - - 2.3271149396896362e-01 -1.3407149910926819e-01 - <_> - - 0 -1 87 2.1024739369750023e-02 - - 5.9381611645221710e-03 -5.5033719539642334e-01 - <_> - - 0 -1 88 3.1837709248065948e-03 - - -1.2809669971466064e-01 2.6653018593788147e-01 - <_> - - 0 -1 89 1.9705400336533785e-03 - - 7.8466497361660004e-02 -3.2406198978424072e-01 - <_> - - 0 -1 90 6.6750179976224899e-03 - - 9.1531157493591309e-02 -3.7249198555946350e-01 - <_> - - 0 -1 91 -2.4148779921233654e-03 - - -1.7111690342426300e-01 5.6762799620628357e-02 - <_> - - 0 -1 92 -9.5466198399662971e-03 - - 4.0662801265716553e-01 -7.4411712586879730e-02 - <_> - - 0 -1 93 -3.2907661050558090e-02 - - -7.1888977289199829e-01 1.4721539802849293e-02 - <_> - - 0 -1 94 -8.1849691923707724e-04 - - 1.4569100737571716e-01 -1.9963370263576508e-01 - <_> - - 0 -1 95 7.2181539144366980e-04 - - 8.2231067121028900e-02 -2.1973559260368347e-01 - <_> - - 0 -1 96 2.2785319015383720e-03 - - 7.5317807495594025e-02 -3.4543770551681519e-01 - <_> - - 0 -1 97 -5.9232191415503621e-04 - - 1.6397179663181305e-01 -1.4223779737949371e-01 - <_> - - 0 -1 98 -1.4906689757481217e-03 - - 2.7065008878707886e-01 -1.0185220092535019e-01 - <_> - - 0 -1 99 -5.0783937331289053e-04 - - -2.3237000405788422e-01 1.2487719953060150e-01 - <_> - - 0 -1 100 1.2358260573819280e-03 - - 7.1889422833919525e-02 -3.2292270660400391e-01 - <_> - - 0 -1 101 9.5672700554132462e-03 - - -7.7361442148685455e-02 3.1491670012474060e-01 - <_> - - 0 -1 102 -4.9210679717361927e-03 - - 2.0018289983272552e-01 -1.6144259274005890e-01 - <_> - - 0 -1 103 5.0535827176645398e-04 - - 7.0756010711193085e-02 -1.7633900046348572e-01 - <_> - - 0 -1 104 -1.3640619814395905e-02 - - -6.6401261091232300e-01 4.0987018495798111e-02 - <_> - - 0 -1 105 -6.5427437424659729e-02 - - -7.1546489000320435e-01 -1.4467790024355054e-03 - <_> - - 0 -1 106 -5.7416707277297974e-01 - - -6.4211571216583252e-01 3.7077069282531738e-02 - <_> - - 0 -1 107 -1.4680740423500538e-02 - - -5.7911068201065063e-01 1.2332480400800705e-02 - <_> - - 0 -1 108 1.0403449647128582e-02 - - 3.0869459733366966e-02 -6.5323889255523682e-01 - <_> - - 0 -1 109 3.1473999843001366e-03 - - -6.3593432307243347e-02 1.5316939353942871e-01 - <_> - - 0 -1 110 -3.7591080181300640e-03 - - 2.3941740393638611e-01 -1.0980860143899918e-01 - <_> - - 0 -1 111 -1.1320270132273436e-03 - - -3.4076210856437683e-01 4.7114279121160507e-02 - <_> - - 0 -1 112 2.3911079391837120e-02 - - 2.4294020608067513e-02 -8.7374562025070190e-01 - <_> - - 0 -1 113 1.6331439837813377e-03 - - -1.4867100119590759e-01 1.4686830341815948e-01 - <_> - 72 - -1.2550790309906006e+00 - - <_> - - 0 -1 114 1.4273949898779392e-02 - - -2.2028170526027679e-01 5.8278697729110718e-01 - <_> - - 0 -1 115 -1.3155260123312473e-02 - - 3.2376781105995178e-01 -1.7588689923286438e-01 - <_> - - 0 -1 116 -4.7336989082396030e-03 - - 3.2771259546279907e-01 -1.3504040241241455e-01 - <_> - - 0 -1 117 -4.9824719317257404e-03 - - -4.0712320804595947e-01 1.0729070007801056e-01 - <_> - - 0 -1 118 5.3574908524751663e-03 - - -6.1188440769910812e-02 4.2176121473312378e-01 - <_> - - 0 -1 119 7.2625762550160289e-04 - - 7.0681191980838776e-02 -3.9249309897422791e-01 - <_> - - 0 -1 120 3.1754389405250549e-02 - - -4.8160050064325333e-03 -2.6766890625000000e+04 - <_> - - 0 -1 121 7.4712611967697740e-04 - - 1.0044159740209579e-01 -3.5845521092414856e-01 - <_> - - 0 -1 122 -6.1364839784801006e-03 - - 2.2930769622325897e-01 -1.4849479496479034e-01 - <_> - - 0 -1 123 -3.1043920898810029e-04 - - -1.2606529891490936e-01 5.2981439977884293e-02 - <_> - - 0 -1 124 9.5097370445728302e-02 - - 6.5563217503950000e-04 -4.3957660156250000e+04 - <_> - - 0 -1 125 1.7895869677886367e-04 - - 6.6079929471015930e-02 -1.6163720190525055e-01 - <_> - - 0 -1 126 6.2283757142722607e-04 - - 8.1336148083209991e-02 -3.7853249907493591e-01 - <_> - - 0 -1 127 1.6121419146656990e-02 - - -7.0124477148056030e-02 4.2186841368675232e-01 - <_> - - 0 -1 128 4.9409839510917664e-01 - - 5.6105360388755798e-02 -5.5268967151641846e-01 - <_> - - 0 -1 129 2.6086641009896994e-03 - - -5.4303850978612900e-02 8.3350032567977905e-02 - <_> - - 0 -1 130 -8.0985590815544128e-02 - - -5.1889681816101074e-01 7.6113581657409668e-02 - <_> - - 0 -1 131 -1.8206849694252014e-02 - - 2.3450860381126404e-01 -1.5028589963912964e-01 - <_> - - 0 -1 132 2.4453869089484215e-02 - - 7.7094620792195201e-05 -3.4958081054687500e+03 - <_> - - 0 -1 133 7.3357089422643185e-03 - - 6.4979292452335358e-02 -4.4848531484603882e-01 - <_> - - 0 -1 134 2.6216730475425720e-03 - - -1.4167490601539612e-01 2.0859889686107635e-01 - <_> - - 0 -1 135 1.1409450089558959e-03 - - 7.6701499521732330e-02 -2.9446929693222046e-01 - <_> - - 0 -1 136 1.2580930255353451e-02 - - -1.9673809874802828e-03 -2.9883010253906250e+03 - <_> - - 0 -1 137 -3.9991579949855804e-02 - - -6.5278917551040649e-01 1.8880249932408333e-02 - <_> - - 0 -1 138 -2.9880989342927933e-02 - - -5.7953011989593506e-01 4.3329969048500061e-02 - <_> - - 0 -1 139 1.7895980272442102e-03 - - -1.0572429746389389e-01 2.3993469774723053e-01 - <_> - - 0 -1 140 2.6439139619469643e-03 - - 5.3754869848489761e-02 -4.9620249867439270e-01 - <_> - - 0 -1 141 8.2859180110972375e-05 - - -2.0419049263000488e-01 1.2806950509548187e-01 - <_> - - 0 -1 142 -1.0911240242421627e-02 - - 3.4400200843811035e-01 -7.6199240982532501e-02 - <_> - - 0 -1 143 -4.1699931025505066e-03 - - -5.0042337179183960e-01 3.5767048597335815e-02 - <_> - - 0 -1 144 2.0652399398386478e-03 - - -1.5200750529766083e-01 1.6699029505252838e-01 - <_> - - 0 -1 145 -1.2707760324701667e-03 - - -1.0397709906101227e-01 2.6426579803228378e-02 - <_> - - 0 -1 146 8.2581391325220466e-04 - - 9.1073229908943176e-02 -2.8431761264801025e-01 - <_> - - 0 -1 147 6.9688400253653526e-03 - - -5.6411981582641602e-02 2.3267549276351929e-01 - <_> - - 0 -1 148 -1.5607889508828521e-03 - - -3.6969760060310364e-01 6.9473750889301300e-02 - <_> - - 0 -1 149 1.2131650000810623e-03 - - -7.9323820769786835e-02 1.5876859426498413e-01 - <_> - - 0 -1 150 1.0624749585986137e-02 - - 4.3361671268939972e-02 -5.7412439584732056e-01 - <_> - - 0 -1 151 -7.2990538319572806e-04 - - 1.9509379565715790e-01 -1.3665750622749329e-01 - <_> - - 0 -1 152 2.9572990536689758e-01 - - 2.2201120373210870e-05 -3.4219890136718750e+03 - <_> - - 0 -1 153 2.5999290868639946e-02 - - -3.6369461566209793e-02 7.7490493655204773e-02 - <_> - - 0 -1 154 8.0749327316880226e-03 - - 8.0705903470516205e-02 -2.8219139575958252e-01 - <_> - - 0 -1 155 7.5860577635467052e-04 - - -7.7643670141696930e-02 1.2977090477943420e-01 - <_> - - 0 -1 156 -1.7625710461288691e-03 - - 2.2141739726066589e-01 -9.8886981606483459e-02 - <_> - - 0 -1 157 1.1849809670820832e-03 - - 3.8486298173666000e-02 -2.7905330061912537e-01 - <_> - - 0 -1 158 -1.7625589668750763e-01 - - -4.3920260667800903e-01 5.1971361041069031e-02 - <_> - - 0 -1 159 -1.4031480532139540e-04 - - 1.2916420400142670e-01 -1.1323709785938263e-01 - <_> - - 0 -1 160 9.1363089159131050e-03 - - -1.1492040008306503e-01 2.2249349951744080e-01 - <_> - - 0 -1 161 -2.0029260776937008e-03 - - -2.1929590404033661e-01 4.0854889899492264e-02 - <_> - - 0 -1 162 5.5052232742309570e-01 - - 2.5654939934611320e-02 -8.3052450418472290e-01 - <_> - - 0 -1 163 -3.3507261425256729e-02 - - -7.0289891958236694e-01 1.2886079959571362e-02 - <_> - - 0 -1 164 -2.7022568974643946e-03 - - -3.9878979325294495e-01 4.9893561750650406e-02 - <_> - - 0 -1 165 3.3577920403331518e-03 - - -9.1834627091884613e-02 2.3746329545974731e-01 - <_> - - 0 -1 166 -1.3520480133593082e-03 - - 2.5809058547019958e-01 -1.1761110275983810e-01 - <_> - - 0 -1 167 5.6797950528562069e-03 - - 3.7395790219306946e-02 -5.9308350086212158e-01 - <_> - - 0 -1 168 1.4522479847073555e-02 - - 2.6865359395742416e-02 -6.3552677631378174e-01 - <_> - - 0 -1 169 8.3791668293997645e-04 - - -1.0668759793043137e-01 1.5068009495735168e-01 - <_> - - 0 -1 170 8.3057529991492629e-04 - - 7.6927617192268372e-02 -2.6659971475601196e-01 - <_> - - 0 -1 171 6.6323182545602322e-04 - - 4.0672291070222855e-02 -1.7801180481910706e-01 - <_> - - 0 -1 172 -5.4344389354810119e-04 - - -2.6988148689270020e-01 7.3258846998214722e-02 - <_> - - 0 -1 173 -3.6860290914773941e-02 - - 4.3150851130485535e-01 -4.9470368772745132e-02 - <_> - - 0 -1 174 7.5951730832457542e-03 - - 4.7471638768911362e-02 -4.4909921288490295e-01 - <_> - - 0 -1 175 2.5462580844759941e-02 - - -5.9732828289270401e-02 2.8767639398574829e-01 - <_> - - 0 -1 176 -3.7006419152021408e-03 - - 1.7362360656261444e-01 -1.0997570306062698e-01 - <_> - - 0 -1 177 2.5741709396243095e-03 - - -1.0621029883623123e-01 2.0239670574665070e-01 - <_> - - 0 -1 178 -7.0176380686461926e-03 - - -3.6438140273094177e-01 5.3866349160671234e-02 - <_> - - 0 -1 179 9.4404182163998485e-04 - - 5.6630179286003113e-02 -2.5456568598747253e-01 - <_> - - 0 -1 180 -1.7664339393377304e-02 - - 2.6503831148147583e-01 -7.4382461607456207e-02 - <_> - - 0 -1 181 -3.6102120066061616e-04 - - -1.7355899512767792e-01 6.0770709067583084e-02 - <_> - - 0 -1 182 -4.5951951295137405e-02 - - 5.9183728694915771e-01 -3.0130209401249886e-02 - <_> - - 0 -1 183 -4.7274961252696812e-04 - - 1.7608879506587982e-01 -8.7248638272285461e-02 - <_> - - 0 -1 184 2.6895289192907512e-04 - - 8.0688200891017914e-02 -2.2756110131740570e-01 - <_> - - 0 -1 185 3.1682780385017395e-01 - - 2.1571939811110497e-02 -7.6482397317886353e-01 - <_> - 80 - -1.2471400499343872e+00 - - <_> - - 0 -1 186 -3.0944950412958860e-03 - - 4.3914398550987244e-01 -2.8156408667564392e-01 - <_> - - 0 -1 187 6.9179706275463104e-02 - - -9.3691639602184296e-02 6.0624539852142334e-01 - <_> - - 0 -1 188 6.4804498106241226e-03 - - -1.8341860175132751e-01 3.0555349588394165e-01 - <_> - - 0 -1 189 -9.8769506439566612e-04 - - 1.9242240488529205e-01 -1.7901280522346497e-01 - <_> - - 0 -1 190 9.7585223615169525e-02 - - 2.1803719573654234e-04 -1.2009589843750000e+03 - <_> - - 0 -1 191 3.0975039408076555e-05 - - -2.3390169441699982e-01 1.3082669675350189e-01 - <_> - - 0 -1 192 -7.0616282755509019e-04 - - -2.9879850149154663e-01 1.3913549482822418e-01 - <_> - - 0 -1 193 1.1368830455467105e-03 - - -1.5226979553699493e-01 2.2299830615520477e-01 - <_> - - 0 -1 194 -5.0543190445750952e-04 - - -2.7679550647735596e-01 1.4219869673252106e-01 - <_> - - 0 -1 195 -5.1033319905400276e-03 - - 1.2869720160961151e-01 -9.3029417097568512e-02 - <_> - - 0 -1 196 1.4584139920771122e-02 - - 8.6251437664031982e-02 -4.2429849505424500e-01 - <_> - - 0 -1 197 8.8234096765518188e-02 - - -1.0650979727506638e-01 4.4383850693702698e-01 - <_> - - 0 -1 198 -1.2861689552664757e-02 - - -5.8968228101730347e-01 7.3525756597518921e-02 - <_> - - 0 -1 199 -4.9134939908981323e-02 - - 5.2274858951568604e-01 -8.1357583403587341e-02 - <_> - - 0 -1 200 8.5799451917409897e-03 - - -3.2367199659347534e-02 4.2821809649467468e-01 - <_> - - 0 -1 201 -5.7424148544669151e-03 - - -6.2083131074905396e-01 4.0638320147991180e-02 - <_> - - 0 -1 202 3.6491660284809768e-04 - - -1.5325640141963959e-01 1.4113970100879669e-01 - <_> - - 0 -1 203 -5.1613878458738327e-03 - - -4.1736799478530884e-01 8.1837482750415802e-02 - <_> - - 0 -1 204 -4.7439550980925560e-03 - - -2.9808390140533447e-01 8.1017002463340759e-02 - <_> - - 0 -1 205 4.1151638142764568e-03 - - -3.0103120952844620e-03 -2.4902789294719696e-01 - <_> - - 0 -1 206 1.2242980301380157e-01 - - 1.5216519823297858e-03 -1.7302570312500000e+05 - <_> - - 0 -1 207 -1.2401449494063854e-03 - - 1.7064030468463898e-01 -7.9368427395820618e-02 - <_> - - 0 -1 208 1.6567549901083112e-03 - - -9.2235311865806580e-02 2.3849889636039734e-01 - <_> - - 0 -1 209 8.1565687432885170e-03 - - -9.6964061260223389e-02 1.4428420364856720e-01 - <_> - - 0 -1 210 7.3455911874771118e-01 - - 3.2895841286517680e-04 -2.5542700195312500e+03 - <_> - - 0 -1 211 -3.5420949570834637e-03 - - -2.5129461288452148e-01 2.4388620629906654e-02 - <_> - - 0 -1 212 1.8159820139408112e-01 - - -2.5665969587862492e-03 -6.3014418945312500e+03 - <_> - - 0 -1 213 -2.5773700326681137e-02 - - -5.5453181266784668e-01 2.5118520483374596e-02 - <_> - - 0 -1 214 -3.6018029786646366e-03 - - 2.0427179336547852e-01 -1.1549550294876099e-01 - <_> - - 0 -1 215 2.0895600318908691e-03 - - 5.0279490649700165e-02 -3.1693729758262634e-01 - <_> - - 0 -1 216 -2.5717200711369514e-02 - - 1.7803180217742920e-01 -1.1794260144233704e-01 - <_> - - 0 -1 217 1.2641009688377380e-01 - - 8.8736182078719139e-03 -8.0529242753982544e-01 - <_> - - 0 -1 218 -3.0391849577426910e-03 - - -5.0898671150207520e-01 3.8904190063476562e-02 - <_> - - 0 -1 219 3.4312950447201729e-03 - - 1.1260470375418663e-02 -6.8515866994857788e-02 - <_> - - 0 -1 220 1.3510970347851980e-05 - - -1.4117120206356049e-01 1.5203879773616791e-01 - <_> - - 0 -1 221 -6.0387961566448212e-03 - - 2.0285439491271973e-01 -1.0382819920778275e-01 - <_> - - 0 -1 222 7.5726248323917389e-02 - - 3.9297537878155708e-03 -1.7562469482421875e+03 - <_> - - 0 -1 223 -1.9819270819425583e-02 - - -4.0167808532714844e-01 5.6793309748172760e-02 - <_> - - 0 -1 224 4.9060788005590439e-03 - - -8.3899140357971191e-02 2.9041549563407898e-01 - <_> - - 0 -1 225 -8.1648901104927063e-02 - - -3.6353430151939392e-01 6.3147798180580139e-02 - <_> - - 0 -1 226 -1.0384770110249519e-02 - - -5.3429818153381348e-01 3.6934189498424530e-02 - <_> - - 0 -1 227 8.6628712713718414e-02 - - -6.6336899995803833e-02 2.7173450589179993e-01 - <_> - - 0 -1 228 -3.5050030797719955e-02 - - 1.7942179739475250e-01 -1.2234839797019958e-01 - <_> - - 0 -1 229 -4.8283189535140991e-03 - - -2.4450659751892090e-01 3.5196378827095032e-02 - <_> - - 0 -1 230 6.4928561914712191e-04 - - 6.8680599331855774e-02 -2.6865988969802856e-01 - <_> - - 0 -1 231 -3.8541138172149658e-02 - - 3.0204850435256958e-01 -3.6987539380788803e-02 - <_> - - 0 -1 232 -4.1178430547006428e-04 - - -2.5598031282424927e-01 7.3106467723846436e-02 - <_> - - 0 -1 233 -1.1390140280127525e-02 - - 2.4735149741172791e-01 -7.3474846780300140e-02 - <_> - - 0 -1 234 9.6719461726024747e-04 - - -1.4487570524215698e-01 1.6915149986743927e-01 - <_> - - 0 -1 235 5.8444878086447716e-03 - - -8.8432386517524719e-02 2.5800499320030212e-01 - <_> - - 0 -1 236 2.3828010261058807e-01 - - 1.7703069606795907e-03 -5.5330332031250000e+03 - <_> - - 0 -1 237 1.5342529513873160e-04 - - -9.9161237478256226e-02 1.1086180061101913e-01 - <_> - - 0 -1 238 -1.8891949206590652e-02 - - -5.4732471704483032e-01 3.6851409822702408e-02 - <_> - - 0 -1 239 -1.4927709707990289e-03 - - -2.0114320516586304e-01 4.4706899672746658e-02 - <_> - - 0 -1 240 -4.1659721173346043e-03 - - 3.2556429505348206e-01 -6.0132320970296860e-02 - <_> - - 0 -1 241 -1.1243360117077827e-02 - - -7.0226919651031494e-01 2.9433030635118484e-02 - <_> - - 0 -1 242 -3.3863231074064970e-03 - - 2.7912768721580505e-01 -7.1983598172664642e-02 - <_> - - 0 -1 243 -1.2514149770140648e-02 - - -6.0517168045043945e-01 3.4084219485521317e-02 - <_> - - 0 -1 244 1.3723900337936357e-05 - - -1.4314189553260803e-01 1.3461969792842865e-01 - <_> - - 0 -1 245 -7.5697568245232105e-03 - - -3.7676548957824707e-01 2.5302769616246223e-02 - <_> - - 0 -1 246 2.5683428975753486e-04 - - -1.4978440105915070e-01 1.1690360307693481e-01 - <_> - - 0 -1 247 -7.2857661871239543e-04 - - -1.6689300537109375e-01 3.8428731262683868e-02 - <_> - - 0 -1 248 -3.6967459321022034e-01 - - -3.1460630893707275e-01 5.0487510859966278e-02 - <_> - - 0 -1 249 -8.5158832371234894e-03 - - 1.1459340155124664e-01 -6.8403221666812897e-02 - <_> - - 0 -1 250 8.1972801126539707e-04 - - 5.2736330777406693e-02 -3.1499680876731873e-01 - <_> - - 0 -1 251 -4.1751582175493240e-03 - - 1.7611530423164368e-01 -8.1676989793777466e-02 - <_> - - 0 -1 252 -9.8344944417476654e-03 - - 2.0449779927730560e-01 -9.0233117341995239e-02 - <_> - - 0 -1 253 4.3716239742934704e-03 - - 4.1800890117883682e-02 -3.7982788681983948e-01 - <_> - - 0 -1 254 1.7981700366362929e-03 - - -9.7453393042087555e-02 1.7104120552539825e-01 - <_> - - 0 -1 255 -7.8003508970141411e-03 - - -4.3254071474075317e-01 2.9787249863147736e-02 - <_> - - 0 -1 256 -4.4292348623275757e-01 - - -4.7411221265792847e-01 3.3337648957967758e-02 - <_> - - 0 -1 257 -4.7213938087224960e-03 - - 2.2911380231380463e-01 -9.4238728284835815e-02 - <_> - - 0 -1 258 -9.7442632541060448e-03 - - -6.4544659852981567e-01 3.0015440657734871e-02 - <_> - - 0 -1 259 1.5859480481594801e-03 - - 4.3672118335962296e-02 -2.2221189737319946e-01 - <_> - - 0 -1 260 -2.3678180295974016e-03 - - 1.5183700621128082e-01 -1.0775730013847351e-01 - <_> - - 0 -1 261 -3.2757879234850407e-03 - - -2.5875130295753479e-01 5.0640020519495010e-02 - <_> - - 0 -1 262 2.9536550864577293e-02 - - -4.3125800788402557e-02 3.9636090397834778e-01 - <_> - - 0 -1 263 1.4104120200499892e-03 - - 2.6309840381145477e-02 -7.1616649627685547e-02 - <_> - - 0 -1 264 -2.9282430186867714e-03 - - -3.1005808711051941e-01 5.6898139417171478e-02 - <_> - - 0 -1 265 -1.2943849433213472e-03 - - 1.9013640284538269e-01 -8.8158689439296722e-02 - <_> - 97 - -1.1778520345687866e+00 - - <_> - - 0 -1 266 2.0764119923114777e-02 - - -1.4975740015506744e-01 5.2302300930023193e-01 - <_> - - 0 -1 267 -1.0967290028929710e-02 - - 2.7506521344184875e-01 -1.7145189642906189e-01 - <_> - - 0 -1 268 4.5052461326122284e-02 - - -1.0644319653511047e-01 3.6856299638748169e-01 - <_> - - 0 -1 269 1.0590599849820137e-02 - - 6.2317319214344025e-02 -5.3822457790374756e-01 - <_> - - 0 -1 270 6.0975952073931694e-03 - - 1.1455009877681732e-01 -3.7335288524627686e-01 - <_> - - 0 -1 271 -3.7739051040261984e-03 - - 2.6657769083976746e-01 -1.0533609986305237e-01 - <_> - - 0 -1 272 4.2882350087165833e-01 - - -1.0790639789775014e-03 -2.2903289062500000e+04 - <_> - - 0 -1 273 -6.7734188633039594e-04 - - -3.0621621012687683e-01 6.9742493331432343e-02 - <_> - - 0 -1 274 3.4243479371070862e-02 - - 6.6037551732733846e-04 -1.2504589843750000e+04 - <_> - - 0 -1 275 4.0923009510152042e-04 - - 1.0079199820756912e-01 -3.5287478566169739e-01 - <_> - - 0 -1 276 2.3382599651813507e-01 - - -1.5880500897765160e-02 -1.7048220214843750e+03 - <_> - - 0 -1 277 1.6109049320220947e-02 - - -6.2004629522562027e-02 4.0062409639358521e-01 - <_> - - 0 -1 278 6.8031012779101729e-04 - - -1.4876119792461395e-01 1.7793330550193787e-01 - <_> - - 0 -1 279 -3.9104801416397095e-01 - - 5.4885149002075195e-01 -4.6494610607624054e-02 - <_> - - 0 -1 280 1.5723650157451630e-01 - - 6.0893679037690163e-03 -1.7285980224609375e+03 - <_> - - 0 -1 281 -3.7645339034497738e-04 - - -2.5363451242446899e-01 8.2632511854171753e-02 - <_> - - 0 -1 282 8.7999942479655147e-04 - - -1.8807730078697205e-01 1.1852300167083740e-01 - <_> - - 0 -1 283 6.7365981522016227e-06 - - -7.4151508510112762e-02 8.9997649192810059e-02 - <_> - - 0 -1 284 8.3209738135337830e-02 - - 2.1281070075929165e-03 -6.3955561523437500e+03 - <_> - - 0 -1 285 1.6005210636649281e-04 - - 4.8919059336185455e-02 -1.0724899917840958e-01 - <_> - - 0 -1 286 -5.7949139736592770e-03 - - -5.8656597137451172e-01 3.3166468143463135e-02 - <_> - - 0 -1 287 -1.4493979979306459e-03 - - -2.6738798618316650e-01 7.4978969991207123e-02 - <_> - - 0 -1 288 7.8148208558559418e-04 - - -1.3112050294876099e-01 1.4760360121726990e-01 - <_> - - 0 -1 289 -2.5643259286880493e-02 - - 1.6250650584697723e-01 -9.1025821864604950e-02 - <_> - - 0 -1 290 -1.2929979711771011e-02 - - -6.5028107166290283e-01 3.1778071075677872e-02 - <_> - - 0 -1 291 -2.3630550131201744e-03 - - 2.0410169661045074e-01 -9.9841013550758362e-02 - <_> - - 0 -1 292 8.1470218719914556e-04 - - 6.2313590198755264e-02 -3.6279430985450745e-01 - <_> - - 0 -1 293 6.7365981522016227e-06 - - -5.2140578627586365e-02 6.2869362533092499e-02 - <_> - - 0 -1 294 -3.5238551208749413e-04 - - -2.4512000381946564e-01 8.4787286818027496e-02 - <_> - - 0 -1 295 1.7286300659179688e-02 - - 2.2450499236583710e-02 -3.8069969415664673e-01 - <_> - - 0 -1 296 2.2224580869078636e-02 - - -7.4508157558739185e-04 -3.7578330078125000e+03 - <_> - - 0 -1 297 -6.9434130564332008e-03 - - 3.0345991253852844e-01 -6.8258620798587799e-02 - <_> - - 0 -1 298 -1.9307930488139391e-03 - - 1.9534489512443542e-01 -1.0631649941205978e-01 - <_> - - 0 -1 299 2.9717159923166037e-03 - - -7.6913289725780487e-02 2.8775081038475037e-01 - <_> - - 0 -1 300 1.4184940373525023e-03 - - -9.5377556979656219e-02 2.3964689671993256e-01 - <_> - - 0 -1 301 -5.2888790378347039e-04 - - -2.0120939612388611e-01 5.8836109936237335e-02 - <_> - - 0 -1 302 -6.4028277993202209e-03 - - -5.1489818096160889e-01 3.8380980491638184e-02 - <_> - - 0 -1 303 -6.9917421787977219e-03 - - -3.8498568534851074e-01 3.4050729125738144e-02 - <_> - - 0 -1 304 1.1123559670522809e-03 - - -8.2141973078250885e-02 2.0122329890727997e-01 - <_> - - 0 -1 305 -1.9065090455114841e-03 - - 2.3690469563007355e-01 -8.7772883474826813e-02 - <_> - - 0 -1 306 -7.7383301686495543e-04 - - -3.3837988972663879e-01 6.4057871699333191e-02 - <_> - - 0 -1 307 -3.2006528228521347e-02 - - 1.9329549372196198e-01 -4.2547859251499176e-02 - <_> - - 0 -1 308 1.0583669645711780e-03 - - 5.5602710694074631e-02 -3.3093279600143433e-01 - <_> - - 0 -1 309 -3.8688271160935983e-05 - - 1.2988729774951935e-01 -1.2732440233230591e-01 - <_> - - 0 -1 310 4.2495719389989972e-04 - - 6.6007331013679504e-02 -2.4933560192584991e-01 - <_> - - 0 -1 311 -1.0858799796551466e-03 - - 1.7536289989948273e-01 -8.8097922503948212e-02 - <_> - - 0 -1 312 -4.4220269774086773e-04 - - -2.4474479258060455e-01 6.7323610186576843e-02 - <_> - - 0 -1 313 -2.3488050326704979e-02 - - -7.9384112358093262e-01 2.2099610418081284e-02 - <_> - - 0 -1 314 -1.1940260231494904e-01 - - 2.4683830142021179e-01 -7.0952303707599640e-02 - <_> - - 0 -1 315 1.3755969703197479e-02 - - -8.4090009331703186e-02 1.3500119745731354e-01 - <_> - - 0 -1 316 1.1233439436182380e-03 - - 5.7501669973134995e-02 -2.9114100337028503e-01 - <_> - - 0 -1 317 5.5660970509052277e-02 - - -2.6459809392690659e-02 8.7817266583442688e-02 - <_> - - 0 -1 318 5.8998711407184601e-02 - - -5.8845829218626022e-02 2.6846578717231750e-01 - <_> - - 0 -1 319 2.9505279660224915e-01 - - 4.5877238735556602e-03 -5.7907432317733765e-01 - <_> - - 0 -1 320 -1.8508419394493103e-02 - - 1.5778020024299622e-01 -1.0833639651536942e-01 - <_> - - 0 -1 321 -1.4618839323520660e-01 - - -4.9797090888023376e-01 1.0800120420753956e-02 - <_> - - 0 -1 322 5.1881098188459873e-03 - - 7.1662880480289459e-02 -2.3642310500144958e-01 - <_> - - 0 -1 323 3.4516301006078720e-02 - - 1.5872199088335037e-02 -7.6911771297454834e-01 - <_> - - 0 -1 324 -1.3522060215473175e-01 - - 2.3531170189380646e-01 -6.6149227321147919e-02 - <_> - - 0 -1 325 2.9648290947079659e-03 - - -1.1206760257482529e-01 1.5914240479469299e-01 - <_> - - 0 -1 326 -3.2500699162483215e-01 - - -2.9588839411735535e-01 5.4077230393886566e-02 - <_> - - 0 -1 327 1.8331170082092285e-02 - - 8.5066035389900208e-03 -7.3759001493453979e-01 - <_> - - 0 -1 328 -4.9089170061051846e-03 - - -5.8902698755264282e-01 2.1977530792355537e-02 - <_> - - 0 -1 329 -3.5843739751726389e-03 - - 2.5745728611946106e-01 -6.3865438103675842e-02 - <_> - - 0 -1 330 2.4481210857629776e-03 - - -9.6901766955852509e-02 1.8875969946384430e-01 - <_> - - 0 -1 331 6.8095198366791010e-04 - - 5.3433369845151901e-02 -1.8442170321941376e-01 - <_> - - 0 -1 332 1.9464099779725075e-02 - - 2.3036409169435501e-02 -6.8508958816528320e-01 - <_> - - 0 -1 333 -1.3493030564859509e-03 - - -2.5615009665489197e-01 4.4585660099983215e-02 - <_> - - 0 -1 334 6.7073898389935493e-03 - - -5.5639579892158508e-02 2.7087089419364929e-01 - <_> - - 0 -1 335 3.5809920518659055e-04 - - 7.6499707996845245e-02 -2.3015449941158295e-01 - <_> - - 0 -1 336 -2.1596080623567104e-03 - - 1.3892489671707153e-01 -1.0937239974737167e-01 - <_> - - 0 -1 337 2.8032960835844278e-03 - - -6.7089870572090149e-02 2.2176960110664368e-01 - <_> - - 0 -1 338 2.7888039126992226e-02 - - 2.6833660900592804e-02 -5.6622868776321411e-01 - <_> - - 0 -1 339 6.7365981522016227e-06 - - -7.2127588093280792e-02 8.5058122873306274e-02 - <_> - - 0 -1 340 -6.2904052902013063e-04 - - -2.5115230679512024e-01 5.6262891739606857e-02 - <_> - - 0 -1 341 1.5627900138497353e-03 - - -5.7666070759296417e-02 2.6594689488410950e-01 - <_> - - 0 -1 342 1.7357030883431435e-02 - - 1.6016509383916855e-02 -8.6053389310836792e-01 - <_> - - 0 -1 343 -9.3336682766675949e-03 - - -3.2241278886795044e-01 3.9600308984518051e-02 - <_> - - 0 -1 344 2.3083039559423923e-04 - - -1.6356049478054047e-01 9.8472960293292999e-02 - <_> - - 0 -1 345 2.9408670961856842e-03 - - -6.8432979285717010e-02 1.3971360027790070e-01 - <_> - - 0 -1 346 4.0767160244286060e-03 - - -7.9789556562900543e-02 1.7827980220317841e-01 - <_> - - 0 -1 347 7.0768459700047970e-03 - - -7.2593651711940765e-02 1.4493489265441895e-01 - <_> - - 0 -1 348 3.5675889812409878e-03 - - 4.6059738844633102e-02 -3.3893358707427979e-01 - <_> - - 0 -1 349 7.5691796839237213e-02 - - 6.0740611515939236e-03 -6.1316579580307007e-01 - <_> - - 0 -1 350 3.8123109843581915e-03 - - -9.8515607416629791e-02 1.4706909656524658e-01 - <_> - - 0 -1 351 -7.3113790713250637e-03 - - -4.7229430079460144e-01 2.1679550409317017e-02 - <_> - - 0 -1 352 -7.2989451885223389e-01 - - -6.8595397472381592e-01 1.9538680091500282e-02 - <_> - - 0 -1 353 1.4671859389636666e-04 - - 5.1220420747995377e-02 -1.1446470022201538e-01 - <_> - - 0 -1 354 -5.5560008622705936e-03 - - -4.1612398624420166e-01 3.2702378928661346e-02 - <_> - - 0 -1 355 -1.5673910093028098e-04 - - 1.3286870718002319e-01 -1.3249930739402771e-01 - <_> - - 0 -1 356 -2.7738639619201422e-03 - - 2.0943209528923035e-01 -6.3917256891727448e-02 - <_> - - 0 -1 357 2.2972989827394485e-03 - - 7.4391417205333710e-02 -2.0786069333553314e-01 - <_> - - 0 -1 358 5.2493470720946789e-03 - - -6.4007326960563660e-02 2.2066879272460938e-01 - <_> - - 0 -1 359 6.3456031493842602e-03 - - 1.9649159163236618e-02 -5.3507632017135620e-01 - <_> - - 0 -1 360 -6.7409980110824108e-03 - - -6.1353850364685059e-01 2.1510519087314606e-02 - <_> - - 0 -1 361 -1.1170540004968643e-02 - - -3.7826779484748840e-01 2.0506409928202629e-02 - <_> - - 0 -1 362 3.8897111080586910e-03 - - -6.6197447478771210e-02 2.1680620312690735e-01 - <_> - 102 - -1.1284530162811279e+00 - - <_> - - 0 -1 363 -9.1578466817736626e-03 - - 4.2972201108932495e-01 -2.3510800302028656e-01 - <_> - - 0 -1 364 1.4027149975299835e-01 - - 7.2441468946635723e-03 -3.2531410217285156e+01 - <_> - - 0 -1 365 2.2851820103824139e-03 - - -1.2872549891471863e-01 3.2936421036720276e-01 - <_> - - 0 -1 366 -4.8890261678025126e-04 - - 2.3927259445190430e-01 -1.4880880713462830e-01 - <_> - - 0 -1 367 -1.3616800308227539e-02 - - -5.4977691173553467e-01 5.1818989217281342e-02 - <_> - - 0 -1 368 2.3789319675415754e-03 - - -9.8430566489696503e-02 2.3688089847564697e-01 - <_> - - 0 -1 369 -1.4167469998938031e-05 - - 1.0164249688386917e-01 -2.1797139942646027e-01 - <_> - - 0 -1 370 2.8050719265593216e-05 - - -1.0424599796533585e-01 2.6081371307373047e-01 - <_> - - 0 -1 371 -1.9801670685410500e-02 - - 1.6776250302791595e-01 -1.3982580602169037e-01 - <_> - - 0 -1 372 -1.8928950652480125e-02 - - -2.8522980213165283e-01 7.3428876698017120e-02 - <_> - - 0 -1 373 -1.3925390318036079e-02 - - 3.5411250591278076e-01 -6.2552347779273987e-02 - <_> - - 0 -1 374 8.3792414516210556e-03 - - -4.7943230718374252e-02 1.0880140215158463e-01 - <_> - - 0 -1 375 6.2343817949295044e-01 - - -3.8946459535509348e-03 -3.5067338867187500e+03 - <_> - - 0 -1 376 2.1577600389719009e-02 - - 2.5115730240941048e-02 -2.8660660982131958e-01 - <_> - - 0 -1 377 1.0512989945709705e-02 - - -4.6095490455627441e-02 4.1044908761978149e-01 - <_> - - 0 -1 378 1.3560419902205467e-02 - - 2.5737280026078224e-02 -3.8515180349349976e-01 - <_> - - 0 -1 379 2.1165169775485992e-01 - - 2.4527360219508410e-03 -7.2768730468750000e+03 - <_> - - 0 -1 380 -3.3338558860123158e-03 - - -2.0405860245227814e-01 4.3633658438920975e-02 - <_> - - 0 -1 381 8.9795915409922600e-03 - - 7.8953661024570465e-02 -2.7793759107589722e-01 - <_> - - 0 -1 382 5.3711910732090473e-03 - - -2.4344349279999733e-02 6.6921539604663849e-02 - <_> - - 0 -1 383 -8.3309561014175415e-03 - - -3.5009130835533142e-01 5.9051599353551865e-02 - <_> - - 0 -1 384 2.8106879908591509e-03 - - -1.2311270087957382e-01 1.0225059837102890e-01 - <_> - - 0 -1 385 2.1045610308647156e-02 - - 5.5626410990953445e-02 -3.3561658859252930e-01 - <_> - - 0 -1 386 3.7455770652741194e-03 - - -6.7443586885929108e-02 2.2442549467086792e-01 - <_> - - 0 -1 387 6.9531667232513428e-01 - - 1.5418729744851589e-03 -1.3301940429687500e+04 - <_> - - 0 -1 388 -6.6458311630412936e-04 - - -2.2340250015258789e-01 5.1155500113964081e-02 - <_> - - 0 -1 389 5.3947657579556108e-04 - - -1.3277970254421234e-01 1.3717539608478546e-01 - <_> - - 0 -1 390 -1.7990419641137123e-02 - - -6.2576317787170410e-01 2.9063150286674500e-02 - <_> - - 0 -1 391 4.7633830457925797e-02 - - -7.7418819069862366e-02 2.3740810155868530e-01 - <_> - - 0 -1 392 -3.3820658922195435e-02 - - 1.5334419906139374e-01 -1.1414159834384918e-01 - <_> - - 0 -1 393 -2.8191189630888402e-04 - - -2.3677270114421844e-01 8.2807861268520355e-02 - <_> - - 0 -1 394 -1.3994389446452260e-03 - - -2.8520968556404114e-01 2.2187830880284309e-02 - <_> - - 0 -1 395 -7.1874959394335747e-03 - - 2.7148950099945068e-01 -6.6327087581157684e-02 - <_> - - 0 -1 396 4.0477450238540769e-04 - - 6.4594961702823639e-02 -2.2240179777145386e-01 - <_> - - 0 -1 397 -3.2028779387474060e-03 - - 2.1377420425415039e-01 -9.7073882818222046e-02 - <_> - - 0 -1 398 1.4322189599624835e-05 - - -1.4376519620418549e-01 9.7971871495246887e-02 - <_> - - 0 -1 399 1.2757449876517057e-03 - - -8.4751658141613007e-02 2.2380630671977997e-01 - <_> - - 0 -1 400 4.8291438724845648e-04 - - 4.6522580087184906e-02 -2.2262130677700043e-01 - <_> - - 0 -1 401 1.3836859579896554e-05 - - -1.6030070185661316e-01 1.1645960062742233e-01 - <_> - - 0 -1 402 -2.6899509248323739e-04 - - -1.2680959701538086e-01 5.1257088780403137e-02 - <_> - - 0 -1 403 1.3922810321673751e-03 - - -1.2315029650926590e-01 1.5025359392166138e-01 - <_> - - 0 -1 404 1.3342479360289872e-04 - - 3.3665519207715988e-02 -8.1610232591629028e-02 - <_> - - 0 -1 405 6.1454152455553412e-04 - - 5.6519761681556702e-02 -3.1433230638504028e-01 - <_> - - 0 -1 406 -1.7104489961639047e-03 - - 2.2990170121192932e-01 -8.1584148108959198e-02 - <_> - - 0 -1 407 1.3824190318700857e-05 - - -1.1941490322351456e-01 1.3250949978828430e-01 - <_> - - 0 -1 408 2.7970890514552593e-03 - - -4.7103289514780045e-02 1.9908480346202850e-01 - <_> - - 0 -1 409 -3.9447317831218243e-03 - - -3.2104620337486267e-01 6.1310898512601852e-02 - <_> - - 0 -1 410 -3.4402438905090094e-03 - - 2.1354329586029053e-01 -6.1212468892335892e-02 - <_> - - 0 -1 411 -2.4654779583215714e-02 - - 2.3340779542922974e-01 -6.6846966743469238e-02 - <_> - - 0 -1 412 6.3331361161544919e-04 - - -9.4038836658000946e-02 7.8479669988155365e-02 - <_> - - 0 -1 413 -4.2303430382162333e-04 - - -2.3801739513874054e-01 7.2642073035240173e-02 - <_> - - 0 -1 414 2.9926518909633160e-03 - - -6.4649626612663269e-02 2.4833339452743530e-01 - <_> - - 0 -1 415 -1.1798020452260971e-02 - - -3.0166530609130859e-01 6.1118420213460922e-02 - <_> - - 0 -1 416 -9.7868414595723152e-03 - - -4.5015549659729004e-01 2.8377190232276917e-02 - <_> - - 0 -1 417 -5.7037919759750366e-03 - - 2.4853350222110748e-01 -6.9355443120002747e-02 - <_> - - 0 -1 418 1.4342799659061711e-05 - - -1.1431010067462921e-01 1.2247920036315918e-01 - <_> - - 0 -1 419 3.3727320260368288e-04 - - 7.1289442479610443e-02 -2.1220469474792480e-01 - <_> - - 0 -1 420 -1.3521739747375250e-03 - - 1.8407520651817322e-01 -8.8902108371257782e-02 - <_> - - 0 -1 421 3.9903540164232254e-03 - - -7.5362227857112885e-02 2.0549720525741577e-01 - <_> - - 0 -1 422 1.9200939685106277e-02 - - 1.3868289999663830e-02 -4.2045280337333679e-01 - <_> - - 0 -1 423 -1.3546509668231010e-02 - - -5.1325750350952148e-01 2.9454749077558517e-02 - <_> - - 0 -1 424 -1.5859559644013643e-03 - - 2.2549459338188171e-01 -8.4416687488555908e-02 - <_> - - 0 -1 425 2.0342590287327766e-03 - - 6.7020267248153687e-02 -2.3722359538078308e-01 - <_> - - 0 -1 426 6.5835699439048767e-02 - - 2.2492709103971720e-03 -6.3382607698440552e-01 - <_> - - 0 -1 427 -1.9567420706152916e-02 - - -4.0725719928741455e-01 3.5422671586275101e-02 - <_> - - 0 -1 428 4.8953219084069133e-04 - - -6.0342669486999512e-02 1.3273899257183075e-01 - <_> - - 0 -1 429 1.4131540410744492e-05 - - -1.1641930043697357e-01 1.2682040035724640e-01 - <_> - - 0 -1 430 1.4203680620994419e-04 - - -8.8367782533168793e-02 1.3554699718952179e-01 - <_> - - 0 -1 431 7.1458360180258751e-03 - - 4.3511848896741867e-02 -3.1864428520202637e-01 - <_> - - 0 -1 432 -3.3641001209616661e-04 - - 1.0204680263996124e-01 -9.4299122691154480e-02 - <_> - - 0 -1 433 1.0267529869452119e-03 - - -5.9334348887205124e-02 2.2539639472961426e-01 - <_> - - 0 -1 434 -1.7631480295676738e-04 - - -1.0789939761161804e-01 5.4198570549488068e-02 - <_> - - 0 -1 435 2.8943250072188675e-05 - - -1.4709359407424927e-01 9.9714383482933044e-02 - <_> - - 0 -1 436 -1.3899109944759402e-05 - - 8.0603472888469696e-02 -6.6251203417778015e-02 - <_> - - 0 -1 437 3.2039379584603012e-04 - - 7.1343272924423218e-02 -2.0526170730590820e-01 - <_> - - 0 -1 438 -3.6573910620063543e-03 - - 2.4581959843635559e-01 -6.0287520289421082e-02 - <_> - - 0 -1 439 1.3356460258364677e-03 - - 5.8436870574951172e-02 -2.4109329283237457e-01 - <_> - - 0 -1 440 -1.4866300261928700e-05 - - 6.8313658237457275e-02 -7.8472986817359924e-02 - <_> - - 0 -1 441 -2.8311789501458406e-03 - - 1.3542939722537994e-01 -9.7606517374515533e-02 - <_> - - 0 -1 442 3.0081909149885178e-02 - - 3.2058879733085632e-02 -4.4436109066009521e-01 - <_> - - 0 -1 443 -1.8263630568981171e-02 - - -7.2238588333129883e-01 1.5590840019285679e-02 - <_> - - 0 -1 444 -3.3928160555660725e-03 - - 2.1983329951763153e-01 -2.1465340629220009e-02 - <_> - - 0 -1 445 1.7436090274713933e-04 - - -1.0531249642372131e-01 1.1543189734220505e-01 - <_> - - 0 -1 446 -2.3402511142194271e-03 - - -8.7868809700012207e-02 5.3345490247011185e-02 - <_> - - 0 -1 447 -1.4445939996221568e-05 - - 1.2160749733448029e-01 -1.1292660236358643e-01 - <_> - - 0 -1 448 6.8112200824543834e-04 - - -4.6869128942489624e-02 8.0613352358341217e-02 - <_> - - 0 -1 449 5.8264320250600576e-04 - - -9.6398808062076569e-02 1.1941459774971008e-01 - <_> - - 0 -1 450 1.9176679779775441e-04 - - 5.0320759415626526e-02 -1.1637129634618759e-01 - <_> - - 0 -1 451 -2.7771131135523319e-04 - - -1.9483520090579987e-01 6.6177822649478912e-02 - <_> - - 0 -1 452 3.9666048251092434e-03 - - -5.0924081355333328e-02 2.5490629673004150e-01 - <_> - - 0 -1 453 -1.1685799807310104e-02 - - -4.9997681379318237e-01 2.5235859677195549e-02 - <_> - - 0 -1 454 2.6211979985237122e-01 - - 2.2027140483260155e-02 -5.0479358434677124e-01 - <_> - - 0 -1 455 2.6809240225702524e-03 - - -4.1297640651464462e-02 3.1011810898780823e-01 - <_> - - 0 -1 456 -1.4688560440845322e-05 - - 9.8060786724090576e-02 -9.0592108666896820e-02 - <_> - - 0 -1 457 6.3697979785501957e-03 - - 6.6596217453479767e-02 -2.0278799533843994e-01 - <_> - - 0 -1 458 4.6842519193887711e-02 - - -5.1452621817588806e-02 2.5977781414985657e-01 - <_> - - 0 -1 459 -1.3824669622408692e-05 - - 1.0483329743146896e-01 -1.1802680045366287e-01 - <_> - - 0 -1 460 4.4806601363234222e-04 - - -3.3751420676708221e-02 7.9996213316917419e-02 - <_> - - 0 -1 461 3.8907579437363893e-05 - - -1.0547590255737305e-01 1.2467110157012939e-01 - <_> - - 0 -1 462 1.3659050455316901e-03 - - 4.0345400571823120e-02 -1.9732360541820526e-01 - <_> - - 0 -1 463 5.0416071899235249e-03 - - -8.6208023130893707e-02 1.3775950670242310e-01 - <_> - - 0 -1 464 -4.6140711754560471e-02 - - 1.4173319935798645e-01 -9.5894940197467804e-02 - <_> - 125 - -1.1831159591674805e+00 - - <_> - - 0 -1 465 8.3971247076988220e-03 - - -2.5191619992256165e-01 3.7484309077262878e-01 - <_> - - 0 -1 466 2.1425200626254082e-02 - - -9.7007170319557190e-02 5.1687681674957275e-01 - <_> - - 0 -1 467 -1.0318770073354244e-02 - - 2.9335889220237732e-01 -1.2733930349349976e-01 - <_> - - 0 -1 468 1.1448180302977562e-03 - - -1.8665100634098053e-01 1.7313909530639648e-01 - <_> - - 0 -1 469 7.5393520295619965e-02 - - -6.0648728162050247e-02 3.6127880215644836e-01 - <_> - - 0 -1 470 -9.3370512127876282e-02 - - 2.3438410460948944e-01 -8.7117947638034821e-02 - <_> - - 0 -1 471 5.2113737910985947e-03 - - 6.1274390667676926e-02 -3.0776879191398621e-01 - <_> - - 0 -1 472 9.9769225344061852e-03 - - -6.4087107777595520e-02 3.1106120347976685e-01 - <_> - - 0 -1 473 1.9360840087756515e-03 - - -1.2336800247430801e-01 1.8175140023231506e-01 - <_> - - 0 -1 474 7.2699370793998241e-03 - - 9.7474679350852966e-02 -2.7541360259056091e-01 - <_> - - 0 -1 475 2.1936019882559776e-02 - - -4.1907928884029388e-02 -1356970. - <_> - - 0 -1 476 2.1171040134504437e-04 - - -1.0929139703512192e-01 1.3006860017776489e-01 - <_> - - 0 -1 477 3.3750660717487335e-02 - - 2.8121320530772209e-02 -1164827. - <_> - - 0 -1 478 7.5086490251123905e-03 - - 4.7132410109043121e-02 -3.7406718730926514e-01 - <_> - - 0 -1 479 4.4921328662894666e-04 - - 7.6395303010940552e-02 -2.3185940086841583e-01 - <_> - - 0 -1 480 -6.6751212580129504e-04 - - -2.4809950590133667e-01 4.5045658946037292e-02 - <_> - - 0 -1 481 1.6522139310836792e-01 - - -2.5855910032987595e-02 -2.0928300781250000e+04 - <_> - - 0 -1 482 -2.3144209757447243e-02 - - 4.0059879422187805e-01 -2.7459429576992989e-02 - <_> - - 0 -1 483 -1.3048340380191803e-01 - - 6.6290372610092163e-01 3.1869049416854978e-04 - <_> - - 0 -1 484 3.1665959395468235e-03 - - 4.9700789153575897e-02 -1.5884129703044891e-01 - <_> - - 0 -1 485 2.2637179121375084e-02 - - -2.2492250427603722e-02 -1.7191429443359375e+03 - <_> - - 0 -1 486 -3.7033710628747940e-02 - - 1.7758910357952118e-01 -1.1330360174179077e-01 - <_> - - 0 -1 487 9.5705546438694000e-02 - - -4.9311641603708267e-02 2.7034428715705872e-01 - <_> - - 0 -1 488 4.9114227294921875e-04 - - 5.6370090693235397e-02 -2.7641159296035767e-01 - <_> - - 0 -1 489 1.5984029741957784e-03 - - -1.3944919407367706e-01 1.1525160074234009e-01 - <_> - - 0 -1 490 -2.3700800375081599e-04 - - -1.2026940286159515e-01 4.5053198933601379e-02 - <_> - - 0 -1 491 -1.7486650031059980e-03 - - 2.2485430538654327e-01 -6.9119632244110107e-02 - <_> - - 0 -1 492 8.1553738564252853e-03 - - 6.8141236901283264e-02 -2.3620179295539856e-01 - <_> - - 0 -1 493 5.3146569989621639e-03 - - 6.0295980423688889e-02 -2.6967340707778931e-01 - <_> - - 0 -1 494 2.0854989998042583e-04 - - -9.9282257258892059e-02 1.4055749773979187e-01 - <_> - - 0 -1 495 -2.0299179013818502e-03 - - 1.4621229469776154e-01 -1.0290420055389404e-01 - <_> - - 0 -1 496 -4.4038048945367336e-03 - - 1.7609240114688873e-01 -7.7655613422393799e-02 - <_> - - 0 -1 497 2.3809750564396381e-03 - - -7.1971938014030457e-02 2.1995179355144501e-01 - <_> - - 0 -1 498 5.7388218119740486e-03 - - 6.1643019318580627e-02 -2.8285768628120422e-01 - <_> - - 0 -1 499 -6.7427940666675568e-03 - - -4.5731940865516663e-01 2.6625709608197212e-02 - <_> - - 0 -1 500 -1.2488880020100623e-04 - - 7.1579828858375549e-02 -7.4957497417926788e-02 - <_> - - 0 -1 501 -7.2185341268777847e-03 - - -2.9619631171226501e-01 4.9233179539442062e-02 - <_> - - 0 -1 502 -5.8523979969322681e-03 - - -2.4193920195102692e-01 3.9187800139188766e-02 - <_> - - 0 -1 503 -1.5999950468540192e-02 - - 1.7959849536418915e-01 -9.0380683541297913e-02 - <_> - - 0 -1 504 -1.4750259651918896e-05 - - 1.2605859339237213e-01 -1.1274249851703644e-01 - <_> - - 0 -1 505 1.2057370040565729e-03 - - -6.0650561004877090e-02 2.1973450481891632e-01 - <_> - - 0 -1 506 -4.5243799686431885e-03 - - -4.3269020318984985e-01 2.5853620842099190e-02 - <_> - - 0 -1 507 2.5474729482084513e-03 - - 3.3592820167541504e-02 -3.6064180731773376e-01 - <_> - - 0 -1 508 -1.2268190039321780e-03 - - 9.5219276845455170e-02 -9.6889063715934753e-02 - <_> - - 0 -1 509 7.5668231584131718e-03 - - -4.2003981769084930e-02 3.1474891304969788e-01 - <_> - - 0 -1 510 -2.9940240085124969e-02 - - -4.1186788678169250e-01 1.5012119896709919e-02 - <_> - - 0 -1 511 -1.4460280362982303e-04 - - 1.1282800137996674e-01 -1.1564549803733826e-01 - <_> - - 0 -1 512 5.5179679766297340e-03 - - 1.4783410355448723e-02 -7.8069239854812622e-01 - <_> - - 0 -1 513 4.3602618388831615e-03 - - 1.9197709858417511e-02 -5.7175260782241821e-01 - <_> - - 0 -1 514 -1.7657090211287141e-03 - - 1.6336660087108612e-01 -7.2352141141891479e-02 - <_> - - 0 -1 515 1.4166040637064725e-04 - - -9.6755802631378174e-02 1.2809459865093231e-01 - <_> - - 0 -1 516 3.1230010092258453e-02 - - 1.5640569850802422e-02 -6.4757531881332397e-01 - <_> - - 0 -1 517 -4.3514901335584000e-05 - - 1.0053110122680664e-01 -1.2408100068569183e-01 - <_> - - 0 -1 518 -3.5158041282556951e-04 - - 1.5431529283523560e-01 -6.7390359938144684e-02 - <_> - - 0 -1 519 2.0108280295971781e-04 - - -9.8362952470779419e-02 1.3764080405235291e-01 - <_> - - 0 -1 520 4.1300798766314983e-03 - - 5.7529108598828316e-03 -5.3467559814453125e-01 - <_> - - 0 -1 521 -2.4093700631055981e-04 - - -1.9900210201740265e-01 7.4284136295318604e-02 - <_> - - 0 -1 522 -1.2804890284314752e-03 - - 1.6396580636501312e-01 -3.6987289786338806e-02 - <_> - - 0 -1 523 -4.7115217894315720e-03 - - -3.1582680344581604e-01 3.9736218750476837e-02 - <_> - - 0 -1 524 1.1140770278871059e-02 - - -1.0182269662618637e-01 1.2548080086708069e-01 - <_> - - 0 -1 525 3.8028880953788757e-02 - - 2.3916039615869522e-02 -6.0534471273422241e-01 - <_> - - 0 -1 526 -1.7240589950233698e-03 - - 1.2157250195741653e-01 -1.0092329978942871e-01 - <_> - - 0 -1 527 1.0013659484684467e-03 - - -4.9875840544700623e-02 2.2872529923915863e-01 - <_> - - 0 -1 528 1.1469529708847404e-03 - - 4.1399698704481125e-02 -2.3377139866352081e-01 - <_> - - 0 -1 529 3.5106660798192024e-03 - - 3.3997271209955215e-02 -3.2346510887145996e-01 - <_> - - 0 -1 530 -1.4566490426659584e-03 - - 2.5346401333808899e-01 -4.1150610893964767e-02 - <_> - - 0 -1 531 3.7483999133110046e-01 - - 3.3477351069450378e-02 -3.6484500765800476e-01 - <_> - - 0 -1 532 -1.4147689798846841e-03 - - -2.0284929871559143e-01 3.7319269031286240e-02 - <_> - - 0 -1 533 -2.1542280912399292e-02 - - 3.0418759584426880e-01 -3.8817461580038071e-02 - <_> - - 0 -1 534 -4.7629610635340214e-03 - - -3.3018890023231506e-01 1.3088730163872242e-02 - <_> - - 0 -1 535 1.4096570201218128e-02 - - -3.6260299384593964e-02 3.2955801486968994e-01 - <_> - - 0 -1 536 3.5879030474461615e-04 - - 3.9928831160068512e-02 -7.8107982873916626e-02 - <_> - - 0 -1 537 2.0676909480243921e-03 - - 3.7309668958187103e-02 -3.1918200850486755e-01 - <_> - - 0 -1 538 2.2880220785737038e-02 - - -8.5903979837894440e-02 1.5334339439868927e-01 - <_> - - 0 -1 539 2.1201509982347488e-02 - - 2.6472510769963264e-02 -5.0557321310043335e-01 - <_> - - 0 -1 540 -6.0203541070222855e-03 - - -1.6318249702453613e-01 2.0732490345835686e-02 - <_> - - 0 -1 541 -5.0420581828802824e-04 - - 1.6668680310249329e-01 -6.6697582602500916e-02 - <_> - - 0 -1 542 6.0316012240946293e-04 - - -6.4793847501277924e-02 1.3266150653362274e-01 - <_> - - 0 -1 543 3.4756860695779324e-03 - - 5.6924119591712952e-02 -2.4802610278129578e-01 - <_> - - 0 -1 544 -2.8164550894871354e-04 - - 1.0731890052556992e-01 -6.8889446556568146e-02 - <_> - - 0 -1 545 1.0619480162858963e-03 - - -7.1329578757286072e-02 1.9133770465850830e-01 - <_> - - 0 -1 546 -1.2039010412991047e-02 - - -1.8531359732151031e-01 1.9869519397616386e-02 - <_> - - 0 -1 547 7.3727907147258520e-04 - - 6.9557242095470428e-02 -1.6892650723457336e-01 - <_> - - 0 -1 548 -8.9795957319438457e-04 - - 1.0048580169677734e-01 -1.1249220371246338e-01 - <_> - - 0 -1 549 -1.4421059750020504e-03 - - -2.5942280888557434e-01 4.3461620807647705e-02 - <_> - - 0 -1 550 1.2128099799156189e-02 - - 1.0867379605770111e-03 -9.6219289302825928e-01 - <_> - - 0 -1 551 -3.8773349951952696e-03 - - -4.4588619470596313e-01 2.3271450772881508e-02 - <_> - - 0 -1 552 -1.8645300297066569e-03 - - 1.1588860303163528e-01 -7.4421487748622894e-02 - <_> - - 0 -1 553 1.5988890081644058e-03 - - -7.1976162493228912e-02 1.3814139366149902e-01 - <_> - - 0 -1 554 -1.0482260026037693e-02 - - -1.8418419361114502e-01 5.8082859963178635e-02 - <_> - - 0 -1 555 2.5457469746470451e-03 - - -4.9719039350748062e-02 2.2162219882011414e-01 - <_> - - 0 -1 556 -5.3013530559837818e-03 - - -1.5105170011520386e-01 1.7132120206952095e-02 - <_> - - 0 -1 557 -7.1186490822583437e-04 - - 1.2436850368976593e-01 -8.9634358882904053e-02 - <_> - - 0 -1 558 -8.6922161281108856e-03 - - -5.9594017267227173e-01 1.1369950138032436e-02 - <_> - - 0 -1 559 4.9854819662868977e-03 - - 4.8545241355895996e-02 -2.1625879406929016e-01 - <_> - - 0 -1 560 -1.9476209999993443e-03 - - 1.7202959954738617e-01 -6.6241711378097534e-02 - <_> - - 0 -1 561 4.6425309847109020e-04 - - -8.7388113141059875e-02 1.2562519311904907e-01 - <_> - - 0 -1 562 -7.8054452314972878e-03 - - -5.4023122787475586e-01 5.5168392136693001e-03 - <_> - - 0 -1 563 -1.7876500496640801e-03 - - -4.1625720262527466e-01 2.3760259151458740e-02 - <_> - - 0 -1 564 3.4986619721166790e-04 - - -1.0645300149917603e-01 1.3415950536727905e-01 - <_> - - 0 -1 565 -1.7780930502340198e-03 - - 1.4130510389804840e-01 -8.0240763723850250e-02 - <_> - - 0 -1 566 -1.8860380351543427e-01 - - -2.0148520171642303e-01 3.6658711731433868e-02 - <_> - - 0 -1 567 -1.0677129961550236e-02 - - 1.3416449725627899e-01 -7.6406367123126984e-02 - <_> - - 0 -1 568 2.2988369688391685e-02 - - 1.8132690340280533e-02 -4.8544389009475708e-01 - <_> - - 0 -1 569 -1.3255500234663486e-03 - - 2.5572159886360168e-01 -4.0705129504203796e-02 - <_> - - 0 -1 570 5.9496019966900349e-03 - - 3.9314180612564087e-02 -2.7970561385154724e-01 - <_> - - 0 -1 571 -6.6567502915859222e-02 - - -5.5705511569976807e-01 1.6444809734821320e-02 - <_> - - 0 -1 572 2.4936130270361900e-02 - - -2.8254570439457893e-02 2.3453700542449951e-01 - <_> - - 0 -1 573 6.7102699540555477e-04 - - 5.2245128899812698e-02 -1.9548429548740387e-01 - <_> - - 0 -1 574 -6.5158591605722904e-03 - - 1.3059410452842712e-01 -5.4246369749307632e-02 - <_> - - 0 -1 575 -2.0384399220347404e-02 - - 2.6776239275932312e-01 -3.7303801625967026e-02 - <_> - - 0 -1 576 -4.9205501563847065e-03 - - -8.7404273450374603e-02 1.6793090850114822e-02 - <_> - - 0 -1 577 -2.9292369261384010e-02 - - -2.3264780640602112e-01 4.3655201792716980e-02 - <_> - - 0 -1 578 7.2546571493148804e-02 - - -3.6490269005298615e-02 2.7231520414352417e-01 - <_> - - 0 -1 579 -3.7642000243067741e-03 - - 1.8231450021266937e-01 -7.1627296507358551e-02 - <_> - - 0 -1 580 -7.5870528817176819e-03 - - -1.0087859630584717e-01 3.5317219793796539e-02 - <_> - - 0 -1 581 1.8255389295518398e-04 - - -9.3993760645389557e-02 1.0116200149059296e-01 - <_> - - 0 -1 582 3.2301910221576691e-02 - - 7.2117331437766552e-03 -3.5486260056495667e-01 - <_> - - 0 -1 583 2.5892930105328560e-02 - - -3.7203889340162277e-02 2.5027701258659363e-01 - <_> - - 0 -1 584 4.9849660135805607e-03 - - 2.3954670876264572e-02 -3.0998921394348145e-01 - <_> - - 0 -1 585 3.6892869975417852e-03 - - 3.6769930273294449e-02 -2.6462849974632263e-01 - <_> - - 0 -1 586 5.7481178082525730e-03 - - -4.1655130684375763e-02 1.4225460588932037e-01 - <_> - - 0 -1 587 -8.9322368148714304e-04 - - -1.6857950389385223e-01 5.5090259760618210e-02 - <_> - - 0 -1 588 -3.4081860212609172e-04 - - 3.9664719253778458e-02 -3.8179200142621994e-02 - <_> - - 0 -1 589 7.7733430080115795e-03 - - -4.2298160493373871e-02 2.4191489815711975e-01 - <_> - 125 - -1.0558769702911377e+00 - - <_> - - 0 -1 590 5.8826277963817120e-03 - - -2.6752731204032898e-01 3.7303671240806580e-01 - <_> - - 0 -1 591 -2.4791009491309524e-04 - - 7.8501053154468536e-02 -6.5277233719825745e-02 - <_> - - 0 -1 592 2.3347679525613785e-02 - - 1.7821240180637687e-04 -2.9028310546875000e+03 - <_> - - 0 -1 593 -1.1582409963011742e-02 - - 3.0084291100502014e-01 -1.1225110292434692e-01 - <_> - - 0 -1 594 -7.4398629367351532e-03 - - 3.3014228940010071e-01 -1.4450010657310486e-01 - <_> - - 0 -1 595 -1.2356679653748870e-03 - - 9.9596269428730011e-02 -4.4884901493787766e-02 - <_> - - 0 -1 596 -3.1098300591111183e-02 - - 3.4724020957946777e-01 -5.0089869648218155e-02 - <_> - - 0 -1 597 -8.6721731349825859e-05 - - 1.2793859839439392e-01 -1.3050040602684021e-01 - <_> - - 0 -1 598 4.8631811514496803e-03 - - 9.1580100357532501e-02 -2.8963008522987366e-01 - <_> - - 0 -1 599 -8.2328416407108307e-02 - - 4.8640829324722290e-01 -8.5621501784771681e-04 - <_> - - 0 -1 600 2.6845820248126984e-02 - - 8.0719226389192045e-05 -2.7684570312500000e+03 - <_> - - 0 -1 601 -5.2039809525012970e-02 - - 7.9396322369575500e-02 -5.8004710823297501e-02 - <_> - - 0 -1 602 -6.9675371050834656e-02 - - 4.9873960018157959e-01 -3.7314310669898987e-02 - <_> - - 0 -1 603 -2.2737689316272736e-02 - - -4.0688079595565796e-01 4.2751029133796692e-02 - <_> - - 0 -1 604 -5.3844530135393143e-02 - - 1.6214320063591003e-01 -9.7108319401741028e-02 - <_> - - 0 -1 605 7.2368777182418853e-05 - - -1.8385389447212219e-01 1.0155250132083893e-01 - <_> - - 0 -1 606 2.3242140014190227e-04 - - -1.4277349412441254e-01 1.2259999662637711e-01 - <_> - - 0 -1 607 -4.3009149521822110e-05 - - 1.2804460525512695e-01 -1.2545910477638245e-01 - <_> - - 0 -1 608 -2.7856770902872086e-02 - - 1.7858579754829407e-01 -8.4731630980968475e-02 - <_> - - 0 -1 609 -4.7926288098096848e-03 - - -4.3757480382919312e-01 1.6302520409226418e-02 - <_> - - 0 -1 610 1.3976480113342404e-03 - - 4.9515519291162491e-02 -2.8802138566970825e-01 - <_> - - 0 -1 611 1.4469549991190434e-02 - - -6.7634709179401398e-02 1.3598270714282990e-01 - <_> - - 0 -1 612 -1.3993920219945721e-05 - - 1.0967969894409180e-01 -1.1632110178470612e-01 - <_> - - 0 -1 613 3.3816839568316936e-03 - - 2.8795750811696053e-02 -2.4082769453525543e-01 - <_> - - 0 -1 614 2.5580629706382751e-01 - - -2.8704650700092316e-02 4.6601611375808716e-01 - <_> - - 0 -1 615 -1.7578320112079382e-03 - - 1.5108330547809601e-01 -6.3459686934947968e-02 - <_> - - 0 -1 616 -8.2289418205618858e-03 - - -2.9966801404953003e-01 4.3361451476812363e-02 - <_> - - 0 -1 617 -1.3895850315748248e-05 - - 1.0622219741344452e-01 -1.0804539918899536e-01 - <_> - - 0 -1 618 5.4432791657745838e-03 - - -7.2269909083843231e-02 1.6688150167465210e-01 - <_> - - 0 -1 619 3.6632400006055832e-02 - - 3.5935431718826294e-02 -1.9747260212898254e-01 - <_> - - 0 -1 620 -1.2231309898197651e-02 - - -2.6235920190811157e-01 4.7610200941562653e-02 - <_> - - 0 -1 621 -1.3806000351905823e-02 - - 3.0292961001396179e-01 -4.8921317793428898e-03 - <_> - - 0 -1 622 -1.2311399914324284e-03 - - 1.7459060251712799e-01 -6.8353146314620972e-02 - <_> - - 0 -1 623 -2.6005920022726059e-02 - - 1.9050909578800201e-01 -4.6166021376848221e-02 - <_> - - 0 -1 624 4.6127731911838055e-03 - - -8.3376087248325348e-02 1.5262119472026825e-01 - <_> - - 0 -1 625 5.7869260199368000e-03 - - 7.0412610657513142e-03 -7.1386951208114624e-01 - <_> - - 0 -1 626 6.7721348023042083e-04 - - 4.9267031252384186e-02 -2.4897420406341553e-01 - <_> - - 0 -1 627 -2.2731769829988480e-02 - - -5.9203499555587769e-01 6.8012541159987450e-03 - <_> - - 0 -1 628 -7.6365371933206916e-04 - - 1.0652580112218857e-01 -1.0599949955940247e-01 - <_> - - 0 -1 629 -4.3849581852555275e-03 - - 2.3418359458446503e-01 -4.6867609024047852e-02 - <_> - - 0 -1 630 3.9877369999885559e-03 - - 7.7556453645229340e-02 -1.8153350055217743e-01 - <_> - - 0 -1 631 1.3219149550423026e-03 - - -6.7613117396831512e-02 1.7171590030193329e-01 - <_> - - 0 -1 632 6.7325757117941976e-04 - - -8.9826732873916626e-02 1.4020709693431854e-01 - <_> - - 0 -1 633 9.2688068980351090e-04 - - 5.6085910648107529e-02 -1.8546910583972931e-01 - <_> - - 0 -1 634 -1.5381709672510624e-03 - - -2.3733399808406830e-01 4.8890858888626099e-02 - <_> - - 0 -1 635 2.7073239907622337e-03 - - -7.5124382972717285e-02 9.6407197415828705e-02 - <_> - - 0 -1 636 -2.8456549625843763e-03 - - 2.2722889482975006e-01 -7.2055377066135406e-02 - <_> - - 0 -1 637 3.1373579986393452e-03 - - 3.6863651126623154e-02 -3.2780879735946655e-01 - <_> - - 0 -1 638 -3.7588209379464388e-03 - - -4.2295080423355103e-01 2.3650530725717545e-02 - <_> - - 0 -1 639 2.2759051062166691e-03 - - -5.4995559155941010e-02 1.2049350142478943e-01 - <_> - - 0 -1 640 -1.9469429552555084e-01 - - -2.4324010312557220e-01 4.6331658959388733e-02 - <_> - - 0 -1 641 -9.6125272102653980e-04 - - 1.3797989487648010e-01 -9.2063806951045990e-02 - <_> - - 0 -1 642 -2.0522899925708771e-01 - - 4.7303131222724915e-01 -2.2172510623931885e-02 - <_> - - 0 -1 643 -6.8699531257152557e-02 - - 3.5191631317138672e-01 -2.8691360726952553e-02 - <_> - - 0 -1 644 -5.8615300804376602e-03 - - -3.6117011308670044e-01 3.5613741725683212e-02 - <_> - - 0 -1 645 -3.0823880806565285e-02 - - -1.5480700135231018e-01 3.6030359566211700e-02 - <_> - - 0 -1 646 6.5875430591404438e-03 - - -4.9618080258369446e-02 2.2783710062503815e-01 - <_> - - 0 -1 647 1.7855790257453918e-01 - - 1.6644019633531570e-02 -5.2305930852890015e-01 - <_> - - 0 -1 648 4.7204419388435781e-04 - - 4.3169219046831131e-02 -2.4191060662269592e-01 - <_> - - 0 -1 649 1.0938299819827080e-02 - - -3.4621201455593109e-02 2.3645110428333282e-01 - <_> - - 0 -1 650 2.6551820337772369e-04 - - 1.0797390341758728e-01 -1.4064499735832214e-01 - <_> - - 0 -1 651 -1.8384570255875587e-02 - - 2.2139449417591095e-01 -2.6545690372586250e-02 - <_> - - 0 -1 652 2.6976049412041903e-03 - - 4.4117338955402374e-02 -2.4985639750957489e-01 - <_> - - 0 -1 653 1.9213970750570297e-02 - - -1.4211599715054035e-02 2.0341560244560242e-01 - <_> - - 0 -1 654 1.8765490502119064e-02 - - -2.6414619758725166e-02 4.2244899272918701e-01 - <_> - - 0 -1 655 -4.8726210370659828e-03 - - -3.1537351012229919e-01 2.7417080476880074e-02 - <_> - - 0 -1 656 6.8514510057866573e-03 - - 1.8685810267925262e-02 -6.0053402185440063e-01 - <_> - - 0 -1 657 3.4302549902349710e-03 - - 5.5539049208164215e-02 -5.1063228398561478e-02 - <_> - - 0 -1 658 -5.1368698477745056e-03 - - 1.4823649823665619e-01 -7.6043047010898590e-02 - <_> - - 0 -1 659 4.0547490119934082e-02 - - 2.2683000192046165e-02 -1.4686860144138336e-01 - <_> - - 0 -1 660 -3.0698770657181740e-02 - - -2.3555910587310791e-01 4.2929988354444504e-02 - <_> - - 0 -1 661 -4.8826341517269611e-03 - - 1.0821360349655151e-01 -4.0258530527353287e-02 - <_> - - 0 -1 662 -1.1315810261294246e-03 - - 1.3305909931659698e-01 -7.6758652925491333e-02 - <_> - - 0 -1 663 1.0131190065294504e-03 - - -4.2856771498918533e-02 2.2082559764385223e-01 - <_> - - 0 -1 664 4.5927320607006550e-03 - - 4.9640059471130371e-02 -2.3265250027179718e-01 - <_> - - 0 -1 665 -1.4334080333355814e-05 - - 8.6082011461257935e-02 -1.0041899979114532e-01 - <_> - - 0 -1 666 -4.3432948586996645e-05 - - 1.0282029956579208e-01 -9.4649210572242737e-02 - <_> - - 0 -1 667 -2.2497640457004309e-03 - - 1.0315570235252380e-01 -4.1888978332281113e-02 - <_> - - 0 -1 668 -6.4464588649570942e-04 - - 1.1629430204629898e-01 -8.5485748946666718e-02 - <_> - - 0 -1 669 -1.4639640226960182e-02 - - -8.2875743508338928e-02 4.0666591376066208e-02 - <_> - - 0 -1 670 -2.5217140093445778e-02 - - -2.0571319758892059e-01 5.6192658841609955e-02 - <_> - - 0 -1 671 1.0123199783265591e-02 - - -4.2151961475610733e-02 2.9707989096641541e-01 - <_> - - 0 -1 672 -1.9428769592195749e-03 - - 1.1105760186910629e-01 -9.5682419836521149e-02 - <_> - - 0 -1 673 -1.5970990061759949e-03 - - -1.8751560151576996e-01 2.6098659262061119e-02 - <_> - - 0 -1 674 -4.1399329347768798e-05 - - 1.0210459679365158e-01 -9.5533169806003571e-02 - <_> - - 0 -1 675 -1.2740289792418480e-02 - - -3.0079340934753418e-01 3.0958199873566628e-02 - <_> - - 0 -1 676 -1.0377629660069942e-03 - - 1.1889539659023285e-01 -8.3339259028434753e-02 - <_> - - 0 -1 677 7.3452817741781473e-04 - - -4.5579340308904648e-02 6.5332867205142975e-02 - <_> - - 0 -1 678 2.1210229024291039e-03 - - -7.7647641301155090e-02 1.3552039861679077e-01 - <_> - - 0 -1 679 -3.9646559162065387e-04 - - -1.3039469718933105e-01 4.4221781194210052e-02 - <_> - - 0 -1 680 -2.9011480510234833e-02 - - 1.0911560058593750e-01 -8.6852982640266418e-02 - <_> - - 0 -1 681 2.8868720619357191e-05 - - -9.7223073244094849e-02 1.0939110070466995e-01 - <_> - - 0 -1 682 4.4219941628398374e-05 - - -9.6626587212085724e-02 1.0396730154752731e-01 - <_> - - 0 -1 683 -2.1061650477349758e-03 - - 1.5594449639320374e-01 -6.9388382136821747e-02 - <_> - - 0 -1 684 -1.3419709866866469e-03 - - -2.3559910058975220e-01 4.3852631002664566e-02 - <_> - - 0 -1 685 5.4303952492773533e-04 - - 3.7652920931577682e-02 -1.4700250327587128e-01 - <_> - - 0 -1 686 1.9228000019211322e-04 - - -8.5958786308765411e-02 1.1486630141735077e-01 - <_> - - 0 -1 687 6.4260498620569706e-03 - - 3.0003899708390236e-02 -2.6264539361000061e-01 - <_> - - 0 -1 688 1.7857449129223824e-02 - - -3.8392178714275360e-02 2.5491470098495483e-01 - <_> - - 0 -1 689 1.4346039853990078e-02 - - 8.1513654440641403e-03 -6.6368842124938965e-01 - <_> - - 0 -1 690 -1.5616989694535732e-02 - - 2.7357009053230286e-01 -3.9104361087083817e-02 - <_> - - 0 -1 691 2.7434809133410454e-02 - - 1.8959000706672668e-02 -5.5424922704696655e-01 - <_> - - 0 -1 692 5.8466667542234063e-04 - - 3.7940360605716705e-02 -2.2365260124206543e-01 - <_> - - 0 -1 693 -6.7438739351928234e-03 - - 1.3055540621280670e-01 -2.7127960696816444e-02 - <_> - - 0 -1 694 2.8279089747229591e-05 - - -1.1748810112476349e-01 7.3770336806774139e-02 - <_> - - 0 -1 695 -2.5857390835881233e-02 - - -7.1859562397003174e-01 1.0667249560356140e-02 - <_> - - 0 -1 696 -1.4455829841608647e-05 - - 8.8825918734073639e-02 -9.6560813486576080e-02 - <_> - - 0 -1 697 -2.8761640351149254e-05 - - 7.1224972605705261e-02 -8.1536293029785156e-02 - <_> - - 0 -1 698 -4.4676151126623154e-02 - - 4.6559768915176392e-01 -1.8218420445919037e-02 - <_> - - 0 -1 699 -1.7473939806222916e-02 - - -2.5894200801849365e-01 9.1081187129020691e-03 - <_> - - 0 -1 700 1.1752460151910782e-02 - - 2.3866819217801094e-02 -3.6384621262550354e-01 - <_> - - 0 -1 701 -1.9191680476069450e-03 - - 2.5190669298171997e-01 -3.0651960521936417e-02 - <_> - - 0 -1 702 -1.0809469968080521e-01 - - -1.5673610568046570e-01 5.7125121355056763e-02 - <_> - - 0 -1 703 -2.0007440820336342e-02 - - -6.9761687517166138e-01 2.1351710893213749e-03 - <_> - - 0 -1 704 -9.3738699797540903e-04 - - 1.2027209997177124e-01 -8.2730740308761597e-02 - <_> - - 0 -1 705 -1.9725980237126350e-02 - - 6.5103426575660706e-02 -4.3104868382215500e-02 - <_> - - 0 -1 706 -1.5965709462761879e-02 - - 1.4421139657497406e-01 -7.7061690390110016e-02 - <_> - - 0 -1 707 3.1250261235982180e-04 - - 3.4393820911645889e-02 -8.0702297389507294e-02 - <_> - - 0 -1 708 1.4896600041538477e-03 - - 3.5183548927307129e-02 -2.5886499881744385e-01 - <_> - - 0 -1 709 -5.3775031119585037e-04 - - 1.1620610207319260e-01 -6.3611187040805817e-02 - <_> - - 0 -1 710 2.0904899574816227e-03 - - -4.1186600923538208e-02 2.2300550341606140e-01 - <_> - - 0 -1 711 2.9691499657928944e-03 - - 4.8269309103488922e-02 -2.0335279405117035e-01 - <_> - - 0 -1 712 1.4572769941878505e-05 - - -9.8957553505897522e-02 9.3041956424713135e-02 - <_> - - 0 -1 713 -3.1554070301353931e-03 - - -6.6760122776031494e-01 1.3520079664885998e-02 - <_> - - 0 -1 714 2.9881219234084710e-05 - - -1.0356040298938751e-01 8.6093403398990631e-02 - <_> - 159 - -1.0136179924011230e+00 - - <_> - - 0 -1 715 4.9129109829664230e-02 - - -1.5613749623298645e-01 3.9328530430793762e-01 - <_> - - 0 -1 716 -1.7286360263824463e-02 - - 3.0204918980598450e-01 -9.7565330564975739e-02 - <_> - - 0 -1 717 1.7046910524368286e-01 - - 2.3067509755492210e-03 -1.9497540283203125e+03 - <_> - - 0 -1 718 8.8703386485576630e-02 - - -7.4917137622833252e-02 2.8316649794578552e-01 - <_> - - 0 -1 719 6.5491542220115662e-02 - - 1.6591310268267989e-03 -2.0010880126953125e+03 - <_> - - 0 -1 720 1.3477590400725603e-03 - - -1.6203269362449646e-01 1.0843209922313690e-01 - <_> - - 0 -1 721 -1.2740620411932468e-02 - - 1.7574480175971985e-01 -9.3244768679141998e-02 - <_> - - 0 -1 722 -5.6134728947654366e-04 - - 1.1455350369215012e-01 -1.7354020476341248e-01 - <_> - - 0 -1 723 3.5389710683375597e-03 - - 1.1717150360345840e-01 -2.0976379513740540e-01 - <_> - - 0 -1 724 2.4736139923334122e-02 - - 1.6364879906177521e-02 -4.7255611419677734e-01 - <_> - - 0 -1 725 -1.0651050135493279e-02 - - -4.5489090681076050e-01 3.1939528882503510e-02 - <_> - - 0 -1 726 1.7559889703989029e-02 - - -4.8362668603658676e-02 3.2062488794326782e-01 - <_> - - 0 -1 727 -6.6924717975780368e-04 - - -2.4639719724655151e-01 5.7935819029808044e-02 - <_> - - 0 -1 728 -5.8407627511769533e-04 - - 1.1204340308904648e-01 -9.8744787275791168e-02 - <_> - - 0 -1 729 3.7473749835044146e-03 - - 6.2822163105010986e-02 -2.6915690302848816e-01 - <_> - - 0 -1 730 -5.7835220359265804e-03 - - 1.7725090682506561e-01 -1.0722990334033966e-01 - <_> - - 0 -1 731 -1.3994470238685608e-02 - - -3.2291290163993835e-01 5.9133160859346390e-02 - <_> - - 0 -1 732 -5.0094961188733578e-03 - - 3.2413411140441895e-01 -4.6946190297603607e-02 - <_> - - 0 -1 733 2.0974679291248322e-01 - - 1.2724619591608644e-03 -1.5398029785156250e+03 - <_> - - 0 -1 734 -2.3002800345420837e-01 - - 2.4346500635147095e-01 -5.2076339721679688e-02 - <_> - - 0 -1 735 1.5492799878120422e-01 - - -3.8256648927927017e-02 3.8398009538650513e-01 - <_> - - 0 -1 736 -1.6321489820256829e-03 - - -2.6898738741874695e-01 5.1475409418344498e-02 - <_> - - 0 -1 737 7.1139976382255554e-02 - - -1.7741069896146655e-03 -3.6228640136718750e+03 - <_> - - 0 -1 738 1.1452710023149848e-03 - - 6.0054820030927658e-02 -2.2977289557456970e-01 - <_> - - 0 -1 739 -4.5410130405798554e-04 - - 1.2813620269298553e-01 -1.0090760141611099e-01 - <_> - - 0 -1 740 -1.4720089893671684e-05 - - 1.0322000086307526e-01 -1.2641830742359161e-01 - <_> - - 0 -1 741 -1.1304479558020830e-03 - - -3.1935998797416687e-01 3.4723218530416489e-02 - <_> - - 0 -1 742 -1.6922319307923317e-02 - - 1.3957360386848450e-01 -5.1543079316616058e-02 - <_> - - 0 -1 743 -2.3215101100504398e-03 - - -2.3895290493965149e-01 4.7668199986219406e-02 - <_> - - 0 -1 744 3.7084489595144987e-03 - - -6.5825067460536957e-02 2.2757640480995178e-01 - <_> - - 0 -1 745 1.0309210047125816e-03 - - 5.1278948783874512e-02 -1.9257369637489319e-01 - <_> - - 0 -1 746 -1.5648710541427135e-03 - - 8.9634187519550323e-02 -7.3585078120231628e-02 - <_> - - 0 -1 747 -4.1427151300013065e-03 - - 1.3048550486564636e-01 -8.4395110607147217e-02 - <_> - - 0 -1 748 2.6113409548997879e-02 - - 2.2152740508317947e-02 -5.3387731313705444e-01 - <_> - - 0 -1 749 -2.8209320589667186e-05 - - 8.8220342993736267e-02 -1.1844480037689209e-01 - <_> - - 0 -1 750 -1.8846359848976135e-01 - - -1.4832919836044312e-01 2.7575379237532616e-02 - <_> - - 0 -1 751 -3.1241099350154400e-04 - - 1.5323509275913239e-01 -6.7858032882213593e-02 - <_> - - 0 -1 752 1.1768529657274485e-03 - - -8.8187567889690399e-02 1.4614510536193848e-01 - <_> - - 0 -1 753 -8.1158941611647606e-03 - - -2.5933700799942017e-01 4.0161240845918655e-02 - <_> - - 0 -1 754 -2.1158249583095312e-03 - - -1.2951439619064331e-01 3.7622030824422836e-02 - <_> - - 0 -1 755 -1.6689589247107506e-02 - - 1.6230119764804840e-01 -6.4093820750713348e-02 - <_> - - 0 -1 756 3.5482600796967745e-03 - - -7.9667016863822937e-02 1.1273019760847092e-01 - <_> - - 0 -1 757 5.6378880981355906e-04 - - 5.0050869584083557e-02 -2.2882069647312164e-01 - <_> - - 0 -1 758 7.8708422370254993e-04 - - 3.6162361502647400e-02 -1.5072689950466156e-01 - <_> - - 0 -1 759 7.2509991005063057e-03 - - -6.2301669269800186e-02 1.6492590308189392e-01 - <_> - - 0 -1 760 6.6566158784553409e-04 - - 3.7793241441249847e-02 -2.1191699802875519e-01 - <_> - - 0 -1 761 5.8047431707382202e-01 - - 1.0952480137348175e-02 -8.0813771486282349e-01 - <_> - - 0 -1 762 -7.9105071723461151e-02 - - 3.6394488811492920e-01 -3.0609829351305962e-02 - <_> - - 0 -1 763 5.6401832262054086e-04 - - -6.6107980906963348e-02 1.4774860441684723e-01 - <_> - - 0 -1 764 -9.1791141312569380e-04 - - 9.9861629307270050e-02 -5.6733511388301849e-02 - <_> - - 0 -1 765 5.6301942095160484e-04 - - 4.6789381653070450e-02 -2.4219739437103271e-01 - <_> - - 0 -1 766 8.3375308895483613e-04 - - -5.3760558366775513e-02 1.3650870323181152e-01 - <_> - - 0 -1 767 -3.1824249308556318e-03 - - 2.5260570645332336e-01 -4.1767410933971405e-02 - <_> - - 0 -1 768 -7.2406530380249023e-03 - - -3.4584280848503113e-01 3.2235089689493179e-02 - <_> - - 0 -1 769 -8.3251204341650009e-03 - - -4.1309550404548645e-01 2.1623320877552032e-02 - <_> - - 0 -1 770 1.3309439644217491e-02 - - -2.3230889812111855e-02 3.7454131245613098e-01 - <_> - - 0 -1 771 -2.3259570822119713e-02 - - -2.1350060403347015e-01 4.5240461826324463e-02 - <_> - - 0 -1 772 1.1522470042109489e-02 - - -3.7700131535530090e-02 2.9872789978981018e-01 - <_> - - 0 -1 773 -2.5679599493741989e-02 - - -4.9193280935287476e-01 2.0760089159011841e-02 - <_> - - 0 -1 774 -4.0818247944116592e-03 - - 9.8320446908473969e-02 -5.9292558580636978e-02 - <_> - - 0 -1 775 1.3823170214891434e-02 - - 8.0420680344104767e-02 -1.4796389639377594e-01 - <_> - - 0 -1 776 -1.4133610420685727e-05 - - 7.2154417634010315e-02 -7.8407011926174164e-02 - <_> - - 0 -1 777 1.3749630190432072e-02 - - -2.5718940421938896e-02 3.5190111398696899e-01 - <_> - - 0 -1 778 -4.7446079552173615e-03 - - -2.9917961359024048e-01 1.6113970428705215e-02 - <_> - - 0 -1 779 -6.0454257763922215e-03 - - -5.3650712966918945e-01 1.6792129725217819e-02 - <_> - - 0 -1 780 -2.8823830187320709e-02 - - -6.8795108795166016e-01 3.6530119832605124e-03 - <_> - - 0 -1 781 9.7567550837993622e-03 - - -3.8970921188592911e-02 2.4093149602413177e-01 - <_> - - 0 -1 782 5.4871398024260998e-03 - - 1.4116980135440826e-02 -2.5804948806762695e-01 - <_> - - 0 -1 783 -1.2061520246788859e-03 - - -1.9207270443439484e-01 4.9500379711389542e-02 - <_> - - 0 -1 784 9.8257837817072868e-03 - - -3.8585498929023743e-02 2.2697679698467255e-01 - <_> - - 0 -1 785 2.2018669545650482e-01 - - 1.2777510099112988e-02 -7.5363188982009888e-01 - <_> - - 0 -1 786 -4.5528009533882141e-02 - - 1.0831479728221893e-01 -8.8267646729946136e-02 - <_> - - 0 -1 787 8.6856030975468457e-05 - - -1.0284650325775146e-01 9.9360488355159760e-02 - <_> - - 0 -1 788 -5.6585170328617096e-02 - - 2.3910149931907654e-01 -2.3736249655485153e-02 - <_> - - 0 -1 789 -3.1276450026780367e-03 - - -2.2727750241756439e-01 3.8768850266933441e-02 - <_> - - 0 -1 790 3.9087659679353237e-03 - - -3.9192341268062592e-02 2.4087190628051758e-01 - <_> - - 0 -1 791 7.8154838411137462e-04 - - 7.4562981724739075e-02 -1.2905180454254150e-01 - <_> - - 0 -1 792 -2.4408260360360146e-03 - - -9.1020442545413971e-02 3.9251521229743958e-02 - <_> - - 0 -1 793 2.8101990465074778e-03 - - -6.4837038516998291e-02 1.3925389945507050e-01 - <_> - - 0 -1 794 -3.9855740033090115e-03 - - 9.1817371547222137e-02 -8.3031117916107178e-02 - <_> - - 0 -1 795 -1.7297789454460144e-02 - - 2.0965570211410522e-01 -5.2194979041814804e-02 - <_> - - 0 -1 796 -3.2247748225927353e-02 - - -4.5823940634727478e-01 8.3728311583399773e-03 - <_> - - 0 -1 797 -6.8068369291722775e-03 - - -2.0197209715843201e-01 5.5631320923566818e-02 - <_> - - 0 -1 798 -1.0506629478186369e-03 - - 1.3209819793701172e-01 -7.6885670423507690e-02 - <_> - - 0 -1 799 3.7760898703709245e-04 - - 4.6161610633134842e-02 -1.9694140553474426e-01 - <_> - - 0 -1 800 -5.7537568500265479e-04 - - -1.0717370361089706e-01 3.6240298300981522e-02 - <_> - - 0 -1 801 7.4092741124331951e-04 - - -1.0475870221853256e-01 8.0978676676750183e-02 - <_> - - 0 -1 802 1.4430390438064933e-03 - - -2.0330719649791718e-02 1.4773130416870117e-01 - <_> - - 0 -1 803 -4.0292008779942989e-03 - - -4.0607890486717224e-01 2.2358359768986702e-02 - <_> - - 0 -1 804 -2.7180630713701248e-02 - - 1.7108470201492310e-01 -5.5255688726902008e-02 - <_> - - 0 -1 805 -1.1956419795751572e-02 - - -7.1867120265960693e-01 1.3094569556415081e-02 - <_> - - 0 -1 806 4.1116480133496225e-04 - - 4.8153460025787354e-02 -1.2433259934186935e-01 - <_> - - 0 -1 807 -1.3963999663246796e-05 - - 1.0292939841747284e-01 -8.6958311498165131e-02 - <_> - - 0 -1 808 -1.4570109669875819e-05 - - 7.4470147490501404e-02 -7.0470541715621948e-02 - <_> - - 0 -1 809 1.7139190807938576e-02 - - -2.6172630488872528e-02 3.3085009455680847e-01 - <_> - - 0 -1 810 -1.6302539734169841e-03 - - -2.3916280269622803e-01 3.5871699452400208e-02 - <_> - - 0 -1 811 -1.4535409718519077e-05 - - 9.6902176737785339e-02 -9.2061087489128113e-02 - <_> - - 0 -1 812 -2.1566040813922882e-02 - - 7.8962132334709167e-02 -2.5336209684610367e-02 - <_> - - 0 -1 813 -3.6455708742141724e-01 - - -3.5508298873901367e-01 2.5631109252572060e-02 - <_> - - 0 -1 814 2.4588650092482567e-02 - - -4.8407679423689842e-03 3.9943900704383850e-01 - <_> - - 0 -1 815 -7.7711517224088311e-04 - - 9.7201973199844360e-02 -9.5743231475353241e-02 - <_> - - 0 -1 816 2.1896770223975182e-02 - - -4.5299168676137924e-02 1.0756900161504745e-01 - <_> - - 0 -1 817 -4.4443400838645175e-05 - - 1.0131599754095078e-01 -8.8843531906604767e-02 - <_> - - 0 -1 818 -7.6723480597138405e-03 - - -4.5738580822944641e-01 4.6079889871180058e-03 - <_> - - 0 -1 819 -1.4039639609109145e-05 - - 9.8416067659854889e-02 -8.7553597986698151e-02 - <_> - - 0 -1 820 8.6473729461431503e-03 - - 3.3540779259055853e-03 -4.1771999001502991e-01 - <_> - - 0 -1 821 -1.3825670066580642e-05 - - 9.9857017397880554e-02 -8.5694387555122375e-02 - <_> - - 0 -1 822 -2.6278168661519885e-04 - - -5.6113108992576599e-02 2.7346489951014519e-02 - <_> - - 0 -1 823 -7.9181697219610214e-04 - - -1.8118320405483246e-01 4.7429770231246948e-02 - <_> - - 0 -1 824 -1.4099719701334834e-03 - - 2.7458798885345459e-01 -5.1484808325767517e-02 - <_> - - 0 -1 825 7.0703573524951935e-02 - - 1.5473419800400734e-02 -5.7706528902053833e-01 - <_> - - 0 -1 826 2.0189339295029640e-02 - - 3.1696720980107784e-03 -4.8307558894157410e-01 - <_> - - 0 -1 827 -2.1223660558462143e-02 - - 2.4657000601291656e-01 -3.2886128872632980e-02 - <_> - - 0 -1 828 -3.0176939908415079e-03 - - -2.4524199962615967e-01 9.7305262461304665e-03 - <_> - - 0 -1 829 -4.6038549393415451e-02 - - 2.7145799994468689e-01 -3.0896479263901711e-02 - <_> - - 0 -1 830 3.5309030208736658e-03 - - 6.3980512320995331e-02 -1.3888190686702728e-01 - <_> - - 0 -1 831 -1.6515320166945457e-03 - - 9.5719188451766968e-02 -8.7903097271919250e-02 - <_> - - 0 -1 832 4.9779191613197327e-03 - - 4.1744681075215340e-03 -5.4084128141403198e-01 - <_> - - 0 -1 833 -2.6704220101237297e-02 - - -1.7620840668678284e-01 4.7774009406566620e-02 - <_> - - 0 -1 834 -1.9596800208091736e-02 - - 1.4712940156459808e-01 -6.3787601888179779e-02 - <_> - - 0 -1 835 -3.7246679421514273e-03 - - -2.3852190375328064e-01 4.4740460813045502e-02 - <_> - - 0 -1 836 1.1539430357515812e-02 - - -2.2072600200772285e-02 1.1525920033454895e-01 - <_> - - 0 -1 837 4.7176578664220870e-04 - - 4.7127831727266312e-02 -1.8147450685501099e-01 - <_> - - 0 -1 838 -1.9762469455599785e-03 - - 1.3748070597648621e-01 -5.9092778712511063e-02 - <_> - - 0 -1 839 5.5772662162780762e-03 - - -4.5019958168268204e-02 2.1034489572048187e-01 - <_> - - 0 -1 840 -2.0157389342784882e-02 - - -5.7496970891952515e-01 5.7354308664798737e-03 - <_> - - 0 -1 841 1.7307110130786896e-02 - - 1.1190719902515411e-02 -7.1707981824874878e-01 - <_> - - 0 -1 842 -4.8755120951682329e-04 - - 5.0394590944051743e-02 -4.8666480928659439e-02 - <_> - - 0 -1 843 -2.6511559262871742e-02 - - -8.9478939771652222e-01 9.4358548521995544e-03 - <_> - - 0 -1 844 -2.2744829766452312e-03 - - -1.2894369661808014e-01 2.2440349683165550e-02 - <_> - - 0 -1 845 -5.0057587213814259e-04 - - 1.4377559721469879e-01 -7.1598902344703674e-02 - <_> - - 0 -1 846 6.6602397710084915e-03 - - -2.3207439109683037e-02 7.1363903582096100e-02 - <_> - - 0 -1 847 3.1885830685496330e-03 - - 5.8010980486869812e-02 -1.6450870037078857e-01 - <_> - - 0 -1 848 5.7782739168033004e-04 - - -4.3485600501298904e-02 1.3383249938488007e-01 - <_> - - 0 -1 849 -6.0897087678313255e-04 - - 1.4787660539150238e-01 -6.2495529651641846e-02 - <_> - - 0 -1 850 -1.6388659423682839e-04 - - 9.3325972557067871e-02 -7.6554320752620697e-02 - <_> - - 0 -1 851 6.1837752582505345e-04 - - 5.1471889019012451e-02 -1.7382960021495819e-01 - <_> - - 0 -1 852 -3.3793110400438309e-02 - - -3.6461350321769714e-01 3.7170569412410259e-03 - <_> - - 0 -1 853 1.4411949552595615e-02 - - -3.5240508615970612e-02 2.8138169646263123e-01 - <_> - - 0 -1 854 -4.1771069169044495e-02 - - -8.4693837165832520e-01 5.6314789690077305e-03 - <_> - - 0 -1 855 2.6250649243593216e-02 - - 1.1048519983887672e-02 -6.5604877471923828e-01 - <_> - - 0 -1 856 3.8364190608263016e-02 - - 1.3381119817495346e-02 -5.1028597354888916e-01 - <_> - - 0 -1 857 -4.2627542279660702e-03 - - 1.0298670083284378e-01 -7.7517427504062653e-02 - <_> - - 0 -1 858 2.6290370151400566e-03 - - 5.3536839783191681e-02 -1.6710819303989410e-01 - <_> - - 0 -1 859 3.0461929272860289e-03 - - -7.0506170392036438e-02 1.2971059978008270e-01 - <_> - - 0 -1 860 -8.1220280844718218e-04 - - -1.5027570724487305e-01 2.4919940158724785e-02 - <_> - - 0 -1 861 -1.3896619748265948e-05 - - 9.4428047537803650e-02 -8.7662227451801300e-02 - <_> - - 0 -1 862 -1.1810410069301724e-03 - - -7.8689701855182648e-02 4.2385399341583252e-02 - <_> - - 0 -1 863 -4.3100272305309772e-03 - - 1.0542859882116318e-01 -7.6924249529838562e-02 - <_> - - 0 -1 864 4.9178837798535824e-03 - - -4.4045768678188324e-02 1.1219839751720428e-01 - <_> - - 0 -1 865 2.7417130768299103e-03 - - 4.8411499708890915e-02 -1.5718230605125427e-01 - <_> - - 0 -1 866 -2.0775299519300461e-02 - - -5.5444902181625366e-01 5.7630650699138641e-03 - <_> - - 0 -1 867 9.2838220298290253e-03 - - 2.3150760680437088e-02 -3.2565519213676453e-01 - <_> - - 0 -1 868 2.9645489994436502e-03 - - -5.1561180502176285e-02 7.8658573329448700e-02 - <_> - - 0 -1 869 -3.5985060967504978e-03 - - 1.0409019887447357e-01 -7.8626610338687897e-02 - <_> - - 0 -1 870 2.9037541151046753e-01 - - 2.0822859369218349e-03 -9.9926912784576416e-01 - <_> - - 0 -1 871 -1.7383049428462982e-01 - - -6.1185789108276367e-01 1.1905180290341377e-02 - <_> - - 0 -1 872 -1.4491450201603584e-05 - - 7.7290393412113190e-02 -7.9787142574787140e-02 - <_> - - 0 -1 873 5.9369370341300964e-02 - - -1.5881380066275597e-02 4.9138128757476807e-01 - <_> - 181 - -9.4397127628326416e-01 - - <_> - - 0 -1 874 1.2147969566285610e-02 - - -1.7027840018272400e-01 3.0278548598289490e-01 - <_> - - 0 -1 875 -5.1608979701995850e-03 - - 1.6070939600467682e-01 -9.7643166780471802e-02 - <_> - - 0 -1 876 -5.6379679590463638e-03 - - 1.7696949839591980e-01 -1.1813969910144806e-01 - <_> - - 0 -1 877 -1.3411770341917872e-03 - - -2.1609729528427124e-01 8.4236972033977509e-02 - <_> - - 0 -1 878 1.6899369657039642e-02 - - 3.9709590375423431e-02 -7.1516290283203125e+02 - <_> - - 0 -1 879 6.0409329831600189e-02 - - 9.9979763035662472e-05 -3.8527749633789062e+02 - <_> - - 0 -1 880 6.2134090811014175e-02 - - 6.3906911236699671e-05 -3.9919741210937500e+03 - <_> - - 0 -1 881 1.0131259914487600e-03 - - 9.7780823707580566e-02 -1.9260010123252869e-01 - <_> - - 0 -1 882 8.5585671663284302e-01 - - -1.2213829904794693e-02 -3.4853699218750000e+04 - <_> - - 0 -1 883 -3.2218709588050842e-02 - - 3.9832469820976257e-01 -4.5990351587533951e-02 - <_> - - 0 -1 884 2.2235669195652008e-02 - - -4.0369831025600433e-02 3.6789301037788391e-01 - <_> - - 0 -1 885 -8.8841008255258203e-04 - - -2.1880610287189484e-01 5.0560429692268372e-02 - <_> - - 0 -1 886 3.5561749245971441e-03 - - -5.2009329199790955e-02 2.1389879286289215e-01 - <_> - - 0 -1 887 9.6833909628912807e-04 - - 1.4613860286772251e-02 -1.9754350185394287e-01 - <_> - - 0 -1 888 -2.7736829593777657e-02 - - -4.5046409964561462e-01 2.7601879090070724e-02 - <_> - - 0 -1 889 7.4900686740875244e-02 - - -1.5738090500235558e-02 1.3751170039176941e-01 - <_> - - 0 -1 890 -1.4089980140852276e-05 - - 8.2234293222427368e-02 -1.2902089953422546e-01 - <_> - - 0 -1 891 2.8132699299021624e-05 - - -8.9415237307548523e-02 1.4247649908065796e-01 - <_> - - 0 -1 892 3.6726798862218857e-03 - - 3.6753758788108826e-02 -3.0238619446754456e-01 - <_> - - 0 -1 893 5.8316331356763840e-02 - - -2.8371790423989296e-02 2.3014989495277405e-01 - <_> - - 0 -1 894 7.8186690807342529e-03 - - -4.2724270373582840e-02 2.9279640316963196e-01 - <_> - - 0 -1 895 8.1707425415515900e-03 - - 5.6390549987554550e-02 -2.2707839310169220e-01 - <_> - - 0 -1 896 -4.8393788747489452e-03 - - 1.4251850545406342e-01 -9.1900318861007690e-02 - <_> - - 0 -1 897 -1.7523720860481262e-02 - - 2.0598100125789642e-01 -2.8702840209007263e-02 - <_> - - 0 -1 898 -1.7228579963557422e-04 - - 1.0865160077810287e-01 -1.0427589714527130e-01 - <_> - - 0 -1 899 1.4811339788138866e-03 - - 4.6113200485706329e-02 -2.3989810049533844e-01 - <_> - - 0 -1 900 -2.7818970847874880e-03 - - -1.9629709422588348e-01 5.7060431689023972e-02 - <_> - - 0 -1 901 1.8516130745410919e-02 - - -6.8399876356124878e-02 9.2525057494640350e-02 - <_> - - 0 -1 902 1.2470349902287126e-03 - - -4.7470189630985260e-02 2.3869030177593231e-01 - <_> - - 0 -1 903 8.1306131323799491e-04 - - 5.8681190013885498e-02 -1.3293729722499847e-01 - <_> - - 0 -1 904 1.0061890352517366e-03 - - -4.7185059636831284e-02 2.0784549415111542e-01 - <_> - - 0 -1 905 1.3212660560384393e-03 - - -3.2092861831188202e-02 6.1370160430669785e-02 - <_> - - 0 -1 906 7.1786798071116209e-04 - - 5.5250648409128189e-02 -1.8089100718498230e-01 - <_> - - 0 -1 907 -9.6626102458685637e-04 - - -1.3047799468040466e-01 3.3318478614091873e-02 - <_> - - 0 -1 908 1.7763959476724267e-03 - - -4.6832490712404251e-02 2.0682440698146820e-01 - <_> - - 0 -1 909 -2.8751560021191835e-03 - - -2.1038760244846344e-01 4.4965479522943497e-02 - <_> - - 0 -1 910 1.9038280006498098e-03 - - -4.5024219900369644e-02 2.8117001056671143e-01 - <_> - - 0 -1 911 2.9590770136564970e-03 - - 4.8174291849136353e-02 -6.7409582436084747e-02 - <_> - - 0 -1 912 9.4039470423012972e-04 - - -8.8440768420696259e-02 1.1570060253143311e-01 - <_> - - 0 -1 913 2.4125039577484131e-02 - - 7.2013828903436661e-03 -3.8961169123649597e-01 - <_> - - 0 -1 914 -6.2984478427097201e-04 - - -2.3360639810562134e-01 4.2562689632177353e-02 - <_> - - 0 -1 915 -2.9172660782933235e-02 - - 1.7174050211906433e-01 -4.6448789536952972e-02 - <_> - - 0 -1 916 -1.4338050277729053e-05 - - 1.0395999997854233e-01 -9.0066507458686829e-02 - <_> - - 0 -1 917 -1.4969659787311684e-05 - - 5.0678368657827377e-02 -3.9614308625459671e-02 - <_> - - 0 -1 918 1.4065210052649491e-05 - - -9.3186452984809875e-02 1.2208849936723709e-01 - <_> - - 0 -1 919 -2.7412388590164483e-04 - - -1.0865789651870728e-01 4.3262030929327011e-02 - <_> - - 0 -1 920 -2.1822929556947201e-04 - - -1.4428439736366272e-01 6.3061922788619995e-02 - <_> - - 0 -1 921 2.9122079722583294e-03 - - -5.2774921059608459e-02 5.9191830456256866e-02 - <_> - - 0 -1 922 -3.6725331097841263e-02 - - 2.1313689649105072e-01 -5.1487848162651062e-02 - <_> - - 0 -1 923 1.3013239949941635e-02 - - -5.7525340467691422e-02 1.2103849649429321e-01 - <_> - - 0 -1 924 1.1602040380239487e-02 - - 5.0670608878135681e-02 -2.1417009830474854e-01 - <_> - - 0 -1 925 -2.1189039107412100e-03 - - -2.3993240296840668e-01 3.9067979902029037e-02 - <_> - - 0 -1 926 -9.8798265680670738e-03 - - 2.0317670702934265e-01 -4.6872068196535110e-02 - <_> - - 0 -1 927 4.1930121369659901e-03 - - -4.9094110727310181e-02 7.1827210485935211e-02 - <_> - - 0 -1 928 1.5404559671878815e-02 - - 2.5184549391269684e-02 -3.7926280498504639e-01 - <_> - - 0 -1 929 4.7204889357089996e-02 - - 6.5619370434433222e-04 -8.5161781311035156e-01 - <_> - - 0 -1 930 6.5289321355521679e-03 - - -7.8455463051795959e-02 1.2842629849910736e-01 - <_> - - 0 -1 931 5.6735638529062271e-02 - - -1.4093150384724140e-02 1.2426369637250900e-01 - <_> - - 0 -1 932 2.6140250265598297e-03 - - -9.2374339699745178e-02 1.0978870093822479e-01 - <_> - - 0 -1 933 8.9589040726423264e-04 - - 3.4749828279018402e-02 -1.0929500311613083e-01 - <_> - - 0 -1 934 -9.0662058210000396e-04 - - -1.6220299899578094e-01 5.0702780485153198e-02 - <_> - - 0 -1 935 -5.6750950170680881e-04 - - -1.3976819813251495e-01 3.3563069999217987e-02 - <_> - - 0 -1 936 3.9271891000680625e-04 - - 5.3779508918523788e-02 -1.7188000679016113e-01 - <_> - - 0 -1 937 -8.0099105834960938e-03 - - 1.9834689795970917e-01 -3.8824960589408875e-02 - <_> - - 0 -1 938 1.0684199631214142e-02 - - -2.8290269896388054e-02 3.4395828843116760e-01 - <_> - - 0 -1 939 1.4759440091438591e-05 - - -7.8098028898239136e-02 9.7656883299350739e-02 - <_> - - 0 -1 940 1.6975859180092812e-02 - - -5.6326240301132202e-02 1.5583120286464691e-01 - <_> - - 0 -1 941 -1.3971020052849781e-05 - - 7.2150066494941711e-02 -7.1441337466239929e-02 - <_> - - 0 -1 942 -2.6035839691758156e-03 - - 1.0941360145807266e-01 -8.1451512873172760e-02 - <_> - - 0 -1 943 2.5178899988532066e-02 - - 1.2207499705255032e-02 -2.2756040096282959e-01 - <_> - - 0 -1 944 -3.9559401571750641e-02 - - -5.8328497409820557e-01 1.4910699799656868e-02 - <_> - - 0 -1 945 -1.4030520105734468e-05 - - 5.3006969392299652e-02 -4.6118430793285370e-02 - <_> - - 0 -1 946 -1.4760649719391949e-05 - - 9.7830682992935181e-02 -8.5236847400665283e-02 - <_> - - 0 -1 947 -7.2725438512861729e-03 - - -1.7783139646053314e-01 2.1142490208148956e-02 - <_> - - 0 -1 948 -1.3526830116461497e-05 - - 9.1094732284545898e-02 -8.8054873049259186e-02 - <_> - - 0 -1 949 2.7169808745384216e-01 - - 6.9690002128481865e-03 -5.7763397693634033e-01 - <_> - - 0 -1 950 -1.4148949645459652e-02 - - -4.2174759507179260e-01 1.7959559336304665e-02 - <_> - - 0 -1 951 -2.7665561065077782e-03 - - -5.9134751558303833e-01 1.1650159955024719e-02 - <_> - - 0 -1 952 -2.0631540101021528e-03 - - 1.2150909751653671e-01 -6.4721226692199707e-02 - <_> - - 0 -1 953 1.3370909982768353e-05 - - -5.6479219347238541e-02 7.5040176510810852e-02 - <_> - - 0 -1 954 6.4982241019606590e-04 - - 4.2173530906438828e-02 -1.9766530394554138e-01 - <_> - - 0 -1 955 2.4920518626458943e-04 - - -6.2353838235139847e-02 9.4402343034744263e-02 - <_> - - 0 -1 956 -1.2078540166839957e-03 - - 1.6323770582675934e-01 -6.4028233289718628e-02 - <_> - - 0 -1 957 -2.2494650911539793e-03 - - 1.8250890076160431e-01 -1.3332289643585682e-02 - <_> - - 0 -1 958 5.9620937099680305e-04 - - -6.5838947892189026e-02 1.5421830117702484e-01 - <_> - - 0 -1 959 -3.9258919423446059e-04 - - -1.4715319871902466e-01 3.9555948227643967e-02 - <_> - - 0 -1 960 -8.1223007291555405e-03 - - -2.2444109618663788e-01 4.2161621153354645e-02 - <_> - - 0 -1 961 -4.7881420701742172e-02 - - -8.7091821432113647e-01 8.1774117425084114e-03 - <_> - - 0 -1 962 -2.2748390212655067e-02 - - 2.9979050159454346e-01 -2.8346529230475426e-02 - <_> - - 0 -1 963 1.0392880067229271e-03 - - 2.7098760008811951e-02 -1.0330139845609665e-01 - <_> - - 0 -1 964 -2.8231230317032896e-05 - - 7.7585183084011078e-02 -1.0317090153694153e-01 - <_> - - 0 -1 965 -4.2344927787780762e-03 - - 1.0193389654159546e-01 -4.3151829391717911e-02 - <_> - - 0 -1 966 1.5932330861687660e-02 - - -3.4068148583173752e-02 2.2951790690422058e-01 - <_> - - 0 -1 967 1.8464079766999930e-04 - - 4.5591291040182114e-02 -1.2555940449237823e-01 - <_> - - 0 -1 968 -1.9733259454369545e-02 - - 2.2064359486103058e-01 -3.5928118973970413e-02 - <_> - - 0 -1 969 1.4354330232890788e-05 - - -5.3893670439720154e-02 7.3926411569118500e-02 - <_> - - 0 -1 970 7.6591788092628121e-04 - - 4.8648048192262650e-02 -1.6688610613346100e-01 - <_> - - 0 -1 971 4.8519670963287354e-03 - - 1.8916709348559380e-02 -3.8225510716438293e-01 - <_> - - 0 -1 972 7.8907480929046869e-04 - - -5.8328978717327118e-02 1.3417090475559235e-01 - <_> - - 0 -1 973 3.2383669167757034e-02 - - 4.5701907947659492e-03 -3.7887600064277649e-01 - <_> - - 0 -1 974 -1.2292680330574512e-03 - - -1.5834780037403107e-01 4.7614280134439468e-02 - <_> - - 0 -1 975 2.7047060430049896e-02 - - 6.6439821384847164e-03 -5.9655481576919556e-01 - <_> - - 0 -1 976 1.4375980198383331e-01 - - -1.7842639237642288e-02 4.2351529002189636e-01 - <_> - - 0 -1 977 -1.5783259645104408e-02 - - 8.8244073092937469e-02 -1.2464329600334167e-02 - <_> - - 0 -1 978 -1.4875989872962236e-03 - - -1.3130789995193481e-01 5.7446569204330444e-02 - <_> - - 0 -1 979 2.5348609313368797e-02 - - -1.8971860408782959e-02 1.5281090140342712e-01 - <_> - - 0 -1 980 3.4981030970811844e-02 - - 1.0243220254778862e-02 -7.7604120969772339e-01 - <_> - - 0 -1 981 -1.0513720102608204e-02 - - 1.0823149979114532e-01 -2.8787430375814438e-02 - <_> - - 0 -1 982 -7.3121190071105957e-03 - - -8.3258008956909180e-01 9.2471670359373093e-03 - <_> - - 0 -1 983 -1.3201700150966644e-01 - - -2.9581999778747559e-01 1.6155829653143883e-03 - <_> - - 0 -1 984 3.1345361471176147e-01 - - 1.0132989846169949e-02 -7.1845752000808716e-01 - <_> - - 0 -1 985 6.7774970084428787e-03 - - 1.6121359542012215e-02 -3.0593600869178772e-01 - <_> - - 0 -1 986 -1.6488260030746460e-01 - - -7.3052179813385010e-01 9.3599827960133553e-03 - <_> - - 0 -1 987 3.0263569205999374e-02 - - -2.1490950137376785e-02 2.1476639807224274e-01 - <_> - - 0 -1 988 -1.0164840146899223e-02 - - -1.2528149783611298e-01 6.0508821159601212e-02 - <_> - - 0 -1 989 -4.9876107368618250e-04 - - 1.1736539751291275e-01 -6.5368436276912689e-02 - <_> - - 0 -1 990 -2.0281779870856553e-04 - - -1.4580169320106506e-01 5.3317841142416000e-02 - <_> - - 0 -1 991 7.5787317473441362e-04 - - -5.0901308655738831e-02 9.6431486308574677e-02 - <_> - - 0 -1 992 3.0924860038794577e-04 - - -7.4172429740428925e-02 1.0036680102348328e-01 - <_> - - 0 -1 993 -1.7347460612654686e-02 - - -7.0043748617172241e-01 5.1052640192210674e-03 - <_> - - 0 -1 994 4.2674738913774490e-02 - - -4.3247479945421219e-02 1.8100689351558685e-01 - <_> - - 0 -1 995 -3.1056061387062073e-01 - - -8.1626391410827637e-01 1.7991130007430911e-03 - <_> - - 0 -1 996 2.6550391316413879e-01 - - 1.3434600085020065e-02 -6.2406688928604126e-01 - <_> - - 0 -1 997 4.2594179831212386e-05 - - -3.9899569004774094e-02 3.6133170127868652e-02 - <_> - - 0 -1 998 -5.9230630286037922e-03 - - -3.3807530999183655e-01 2.2033369168639183e-02 - <_> - - 0 -1 999 7.4049353599548340e-02 - - 1.3915670569986105e-03 -6.9353181123733521e-01 - <_> - - 0 -1 1000 -1.7220899462699890e-02 - - 2.3747919499874115e-01 -3.3367458730936050e-02 - <_> - - 0 -1 1001 5.3963330574333668e-03 - - 5.0931539386510849e-02 -1.5562909841537476e-01 - <_> - - 0 -1 1002 -1.8919620197266340e-03 - - -1.5169349312782288e-01 5.3993280977010727e-02 - <_> - - 0 -1 1003 -1.5097260475158691e-03 - - 1.9851540029048920e-01 -3.3595308661460876e-02 - <_> - - 0 -1 1004 3.0020769685506821e-02 - - -1.7136970534920692e-02 4.1571149230003357e-01 - <_> - - 0 -1 1005 5.0775688141584396e-03 - - 9.6978880465030670e-03 -1.7263160645961761e-01 - <_> - - 0 -1 1006 -1.1930350447073579e-03 - - -1.7071479558944702e-01 4.4078700244426727e-02 - <_> - - 0 -1 1007 -4.3130549602210522e-03 - - 7.3799706995487213e-02 -6.1707559973001480e-02 - <_> - - 0 -1 1008 3.7032270338386297e-03 - - -3.6637570708990097e-02 2.2825400531291962e-01 - <_> - - 0 -1 1009 -1.2335710227489471e-01 - - -8.0323278903961182e-01 5.5564441718161106e-03 - <_> - - 0 -1 1010 -1.6671289503574371e-01 - - -7.4742680788040161e-01 7.7674849890172482e-03 - <_> - - 0 -1 1011 -4.2208871245384216e-01 - - -4.7446969151496887e-01 6.5842550247907639e-03 - <_> - - 0 -1 1012 -9.1678872704505920e-02 - - -6.0947632789611816e-01 1.0897959582507610e-02 - <_> - - 0 -1 1013 6.3239918090403080e-03 - - -3.3826641738414764e-02 1.8243339657783508e-01 - <_> - - 0 -1 1014 4.2129371315240860e-02 - - 9.4385631382465363e-03 -7.7248048782348633e-01 - <_> - - 0 -1 1015 -9.3927257694303989e-04 - - 7.1579143404960632e-02 -3.5312049090862274e-02 - <_> - - 0 -1 1016 -2.5862399488687515e-03 - - -1.7614290118217468e-01 3.8970381021499634e-02 - <_> - - 0 -1 1017 -6.0188758652657270e-05 - - 5.7997729629278183e-02 -6.4837977290153503e-02 - <_> - - 0 -1 1018 -2.8638429284910671e-05 - - 9.1408349573612213e-02 -1.0475879907608032e-01 - <_> - - 0 -1 1019 3.8879539351910353e-03 - - -5.7216320186853409e-02 1.3386100530624390e-01 - <_> - - 0 -1 1020 -1.1557409539818764e-02 - - -2.0509949326515198e-01 3.6868590861558914e-02 - <_> - - 0 -1 1021 -1.3373260153457522e-03 - - 1.2270689755678177e-01 -6.2221698462963104e-02 - <_> - - 0 -1 1022 1.6762840095907450e-03 - - -8.8421173393726349e-02 1.3434900343418121e-01 - <_> - - 0 -1 1023 7.7090170234441757e-03 - - 4.9661491066217422e-03 -7.5325018167495728e-01 - <_> - - 0 -1 1024 -1.7691600369289517e-03 - - -1.5910659730434418e-01 5.0247859209775925e-02 - <_> - - 0 -1 1025 1.4020030386745930e-02 - - -2.1401990205049515e-02 3.8334238529205322e-01 - <_> - - 0 -1 1026 1.4426360394281801e-05 - - -7.8059092164039612e-02 8.9304782450199127e-02 - <_> - - 0 -1 1027 -3.1559329479932785e-02 - - 2.3358459770679474e-01 -2.1906960755586624e-02 - <_> - - 0 -1 1028 -1.1780899949371815e-03 - - -1.7116659879684448e-01 4.0173828601837158e-02 - <_> - - 0 -1 1029 1.4788280241191387e-02 - - -3.6710381507873535e-02 2.1811370551586151e-01 - <_> - - 0 -1 1030 7.2554568760097027e-04 - - -9.1587312519550323e-02 7.8570358455181122e-02 - <_> - - 0 -1 1031 5.7623899920145050e-05 - - -8.7541349232196808e-02 7.2184711694717407e-02 - <_> - - 0 -1 1032 2.2748520132154226e-03 - - 5.7446658611297607e-02 -1.3148130476474762e-01 - <_> - - 0 -1 1033 -4.1168648749589920e-03 - - -2.0229530334472656e-01 1.2693749740719795e-02 - <_> - - 0 -1 1034 -1.0332450270652771e-02 - - 1.0516080260276794e-01 -7.0124857127666473e-02 - <_> - - 0 -1 1035 3.3246190287172794e-03 - - -4.0530338883399963e-02 5.9988118708133698e-02 - <_> - - 0 -1 1036 1.7478669760748744e-03 - - -8.1173956394195557e-02 1.1108309775590897e-01 - <_> - - 0 -1 1037 3.9028140599839389e-04 - - 4.8233661800622940e-02 -1.9484539330005646e-01 - <_> - - 0 -1 1038 1.6148900613188744e-04 - - 8.2814067602157593e-02 -9.4663769006729126e-02 - <_> - - 0 -1 1039 -1.7121629416942596e-01 - - 3.1984481215476990e-01 -1.1575589887797832e-02 - <_> - - 0 -1 1040 2.4543540179729462e-01 - - 1.4251790009438992e-02 -5.0641399621963501e-01 - <_> - - 0 -1 1041 3.0413989443331957e-03 - - -2.4235099554061890e-02 1.8348780274391174e-01 - <_> - - 0 -1 1042 -3.5697590559720993e-02 - - -2.8293010592460632e-01 2.4910699576139450e-02 - <_> - - 0 -1 1043 -2.9557330999523401e-03 - - 2.4772000312805176e-01 -2.4235939607024193e-02 - <_> - - 0 -1 1044 7.2135991649702191e-04 - - 3.4506618976593018e-02 -2.2165650129318237e-01 - <_> - - 0 -1 1045 -1.0706990025937557e-02 - - -8.6768919229507446e-01 6.9787860848009586e-03 - <_> - - 0 -1 1046 3.4451750107109547e-03 - - -2.2823199629783630e-02 3.1982448697090149e-01 - <_> - - 0 -1 1047 2.6111999526619911e-02 - - 3.6254660226404667e-03 -7.5875741243362427e-01 - <_> - - 0 -1 1048 -1.2527000159025192e-02 - - -4.5790728926658630e-01 1.6250349581241608e-02 - <_> - - 0 -1 1049 4.3875008821487427e-02 - - 1.7482640221714973e-02 -3.9459380507469177e-01 - <_> - - 0 -1 1050 6.7723668180406094e-03 - - -5.2476380020380020e-02 1.4575639367103577e-01 - <_> - - 0 -1 1051 7.8281061723828316e-03 - - -4.2176958173513412e-02 7.7543281018733978e-02 - <_> - - 0 -1 1052 -1.3225760310888290e-02 - - 1.5081860125064850e-01 -5.1193341612815857e-02 - <_> - - 0 -1 1053 1.0840999893844128e-03 - - 3.5837080329656601e-02 -2.2138750553131104e-01 - <_> - - 0 -1 1054 1.9366490596439689e-04 - - -8.7103597819805145e-02 8.8438250124454498e-02 - <_> - 161 - -1.0122050046920776e+00 - - <_> - - 0 -1 1055 -4.8138638958334923e-03 - - 3.3305510878562927e-01 -1.1184120178222656e-01 - <_> - - 0 -1 1056 -4.8076249659061432e-03 - - 2.2943000495433807e-01 -8.7792031466960907e-02 - <_> - - 0 -1 1057 -6.3146371394395828e-04 - - -2.5594729185104370e-01 7.8774467110633850e-02 - <_> - - 0 -1 1058 -3.3615701249800622e-04 - - -1.8154360353946686e-01 7.7407546341419220e-02 - <_> - - 0 -1 1059 5.8366339653730392e-02 - - 2.0159339532256126e-02 -3.7257949218750000e+04 - <_> - - 0 -1 1060 6.9574371445924044e-04 - - 8.5560150444507599e-02 -2.8294658660888672e-01 - <_> - - 0 -1 1061 6.4000801648944616e-04 - - 1.1213850229978561e-01 -2.4997310340404510e-01 - <_> - - 0 -1 1062 -8.4167812019586563e-03 - - 3.4115108847618103e-01 -9.1669142246246338e-02 - <_> - - 0 -1 1063 -2.2956470493227243e-03 - - 2.4936810135841370e-01 -5.6569069623947144e-02 - <_> - - 0 -1 1064 1.1676879599690437e-02 - - 3.5941518843173981e-02 -3.6494261026382446e-01 - <_> - - 0 -1 1065 -1.7014340264722705e-03 - - 1.4737150073051453e-01 -1.1686210334300995e-01 - <_> - - 0 -1 1066 -7.0934131508693099e-04 - - 9.5654368400573730e-02 -1.1207240074872971e-01 - <_> - - 0 -1 1067 4.3072118423879147e-03 - - 7.2915956377983093e-02 -2.3251010477542877e-01 - <_> - - 0 -1 1068 5.1240371540188789e-03 - - -4.7454528510570526e-02 3.8078710436820984e-01 - <_> - - 0 -1 1069 3.5788940731436014e-03 - - -4.7301489859819412e-02 2.9896679520606995e-01 - <_> - - 0 -1 1070 -3.3787379506975412e-03 - - -2.1025639772415161e-01 3.1566038727760315e-02 - <_> - - 0 -1 1071 1.6957529587671161e-03 - - 7.7830709517002106e-02 -1.7848539352416992e-01 - <_> - - 0 -1 1072 5.4554390953853726e-04 - - 3.4314308315515518e-02 -1.1110570281744003e-01 - <_> - - 0 -1 1073 7.1256239898502827e-03 - - -6.7792102694511414e-02 1.9082720577716827e-01 - <_> - - 0 -1 1074 -7.1168097201734781e-04 - - -1.4311639964580536e-01 4.7033898532390594e-02 - <_> - - 0 -1 1075 9.6405223011970520e-03 - - -3.5559050738811493e-02 3.5041770339012146e-01 - <_> - - 0 -1 1076 -1.4268929589889012e-05 - - 7.1855843067169189e-02 -7.3007427155971527e-02 - <_> - - 0 -1 1077 -3.9352979511022568e-03 - - -2.1431219577789307e-01 5.3092300891876221e-02 - <_> - - 0 -1 1078 -1.1273019947111607e-02 - - 4.3782061338424683e-01 -2.5934530422091484e-02 - <_> - - 0 -1 1079 -2.8332630172371864e-03 - - -2.6155671477317810e-01 4.1156601160764694e-02 - <_> - - 0 -1 1080 -1.3269010232761502e-03 - - 1.5967020392417908e-01 -3.3737391233444214e-02 - <_> - - 0 -1 1081 -9.1561209410429001e-03 - - -3.1967610120773315e-01 3.3890329301357269e-02 - <_> - - 0 -1 1082 -1.7915640026330948e-02 - - -7.0053237676620483e-01 4.4488841667771339e-03 - <_> - - 0 -1 1083 3.8176840171217918e-03 - - 6.2512502074241638e-02 -1.6921320557594299e-01 - <_> - - 0 -1 1084 4.5008640881860629e-05 - - -9.8662726581096649e-02 7.9565010964870453e-02 - <_> - - 0 -1 1085 -5.6530670262873173e-03 - - 2.9453009366989136e-01 -4.3036140501499176e-02 - <_> - - 0 -1 1086 1.3065920211374760e-03 - - -6.6126309335231781e-02 1.9360679388046265e-01 - <_> - - 0 -1 1087 4.9355439841747284e-03 - - 4.9594070762395859e-02 -2.2154040634632111e-01 - <_> - - 0 -1 1088 1.5995210036635399e-02 - - 4.5337058603763580e-02 -2.1014940738677979e-01 - <_> - - 0 -1 1089 1.0815339628607035e-03 - - -1.1542639881372452e-01 8.3288490772247314e-02 - <_> - - 0 -1 1090 8.7853492004796863e-04 - - 2.7896849438548088e-02 -9.9133409559726715e-02 - <_> - - 0 -1 1091 7.3434278601780534e-04 - - -5.6502331048250198e-02 1.7661200463771820e-01 - <_> - - 0 -1 1092 -1.0622059926390648e-03 - - -1.0033279657363892e-01 2.4592749774456024e-02 - <_> - - 0 -1 1093 -6.9304608041420579e-04 - - 1.5932570397853851e-01 -5.8667950332164764e-02 - <_> - - 0 -1 1094 9.1822311514988542e-04 - - 3.3871021121740341e-02 -1.1693420261144638e-01 - <_> - - 0 -1 1095 3.5730420495383441e-04 - - -7.0367507636547089e-02 1.4592669904232025e-01 - <_> - - 0 -1 1096 -7.4347230838611722e-04 - - -1.3231860101222992e-01 4.2515788227319717e-02 - <_> - - 0 -1 1097 -2.7919169515371323e-02 - - -6.4661091566085815e-01 1.4362960122525692e-02 - <_> - - 0 -1 1098 -7.2348387911915779e-03 - - 1.5208439528942108e-01 -2.5076340883970261e-02 - <_> - - 0 -1 1099 -1.2335630133748055e-02 - - -3.2772049307823181e-01 2.7494419366121292e-02 - <_> - - 0 -1 1100 8.9493131963536143e-04 - - -7.3789313435554504e-02 1.4715169370174408e-01 - <_> - - 0 -1 1101 -1.1678929440677166e-03 - - 2.3279860615730286e-01 -4.6786271035671234e-02 - <_> - - 0 -1 1102 -1.4189979992806911e-05 - - 4.3930541723966599e-02 -3.7888601422309875e-02 - <_> - - 0 -1 1103 1.1783849913626909e-03 - - 4.6435151249170303e-02 -2.2555530071258545e-01 - <_> - - 0 -1 1104 3.1638250220566988e-03 - - 1.4266540296375751e-02 -1.5830729901790619e-01 - <_> - - 0 -1 1105 -4.2278678156435490e-03 - - -2.3111909627914429e-01 3.9585571736097336e-02 - <_> - - 0 -1 1106 -2.9055060818791389e-02 - - 2.2005799412727356e-01 -1.8948260694742203e-02 - <_> - - 0 -1 1107 -1.4660089618701022e-05 - - 9.4057418406009674e-02 -8.9589871466159821e-02 - <_> - - 0 -1 1108 1.5642490470781922e-03 - - -2.9802989214658737e-02 2.0670419931411743e-01 - <_> - - 0 -1 1109 -1.6279580304399133e-03 - - -2.3323430120944977e-01 3.6563020199537277e-02 - <_> - - 0 -1 1110 -1.0405499488115311e-03 - - 5.9083230793476105e-02 -3.2685071229934692e-02 - <_> - - 0 -1 1111 -1.6444999491795897e-03 - - 1.3493299484252930e-01 -6.0224398970603943e-02 - <_> - - 0 -1 1112 -5.3500832291319966e-04 - - -1.0380990058183670e-01 2.6242509484291077e-02 - <_> - - 0 -1 1113 8.8775012409314513e-04 - - 3.5718239843845367e-02 -2.5862941145896912e-01 - <_> - - 0 -1 1114 3.7019669543951750e-03 - - -2.2746559232473373e-02 2.7165991067886353e-01 - <_> - - 0 -1 1115 -1.9900789484381676e-03 - - 2.2302250564098358e-01 -3.6304280161857605e-02 - <_> - - 0 -1 1116 3.3227570820599794e-03 - - 6.1393459327518940e-03 -5.9358280897140503e-01 - <_> - - 0 -1 1117 8.7127886712551117e-02 - - 3.1586099416017532e-02 -2.4441570043563843e-01 - <_> - - 0 -1 1118 -2.2545009851455688e-02 - - 6.0322389006614685e-02 -5.0378400832414627e-02 - <_> - - 0 -1 1119 7.1416068822145462e-03 - - -5.1704131066799164e-02 1.6004230082035065e-01 - <_> - - 0 -1 1120 -1.5722440555691719e-02 - - -7.1705770492553711e-01 1.1371869593858719e-02 - <_> - - 0 -1 1121 -3.6207420635037124e-04 - - -1.4637580513954163e-01 5.2074629813432693e-02 - <_> - - 0 -1 1122 -3.0946239829063416e-02 - - 2.8515431284904480e-01 -2.8299989178776741e-02 - <_> - - 0 -1 1123 -3.8750860840082169e-03 - - -1.8727800250053406e-01 4.7576699405908585e-02 - <_> - - 0 -1 1124 -5.3602852858603001e-04 - - 7.9475373029708862e-02 -3.9783481508493423e-02 - <_> - - 0 -1 1125 9.3597290106117725e-04 - - 3.0939189717173576e-02 -2.6814800500869751e-01 - <_> - - 0 -1 1126 8.5998268332332373e-04 - - -6.1905588954687119e-02 1.4959439635276794e-01 - <_> - - 0 -1 1127 -1.0758650023490191e-03 - - 7.5612559914588928e-02 -1.1494939774274826e-01 - <_> - - 0 -1 1128 4.5355302281677723e-03 - - 5.6059500202536583e-03 -5.7013422250747681e-01 - <_> - - 0 -1 1129 4.7198678657878190e-05 - - -1.0799890011548996e-01 8.5406206548213959e-02 - <_> - - 0 -1 1130 -1.0689400369301438e-03 - - 1.3189959526062012e-01 -7.2640426456928253e-02 - <_> - - 0 -1 1131 -7.7435292769223452e-04 - - -2.0819279551506042e-01 4.1918680071830750e-02 - <_> - - 0 -1 1132 -4.1570421308279037e-02 - - -3.8603949546813965e-01 6.2196617946028709e-03 - <_> - - 0 -1 1133 -1.2767040729522705e-01 - - -4.1226288676261902e-01 1.9546430557966232e-02 - <_> - - 0 -1 1134 4.6110390685498714e-03 - - -7.0534370839595795e-02 6.4243637025356293e-02 - <_> - - 0 -1 1135 -1.9830530509352684e-03 - - 1.5599420666694641e-01 -7.5535386800765991e-02 - <_> - - 0 -1 1136 5.5741341784596443e-03 - - -5.3869280964136124e-02 1.7663550376892090e-01 - <_> - - 0 -1 1137 -6.2112910673022270e-03 - - -2.4935899674892426e-01 3.7481259554624557e-02 - <_> - - 0 -1 1138 -1.4880870003253222e-03 - - 1.7453719675540924e-01 -2.9856640845537186e-02 - <_> - - 0 -1 1139 -1.6566930571570992e-03 - - -1.3825559616088867e-01 6.4315892755985260e-02 - <_> - - 0 -1 1140 -1.2179469689726830e-02 - - -7.3452550172805786e-01 6.6957371309399605e-03 - <_> - - 0 -1 1141 -8.2790851593017578e-04 - - -2.1595530211925507e-01 3.7085570394992828e-02 - <_> - - 0 -1 1142 -1.6515310853719711e-02 - - 8.6132906377315521e-02 -3.9982698857784271e-02 - <_> - - 0 -1 1143 6.3035473227500916e-02 - - -3.2119460403919220e-02 2.7596130967140198e-01 - <_> - - 0 -1 1144 -1.4381350483745337e-03 - - -2.1799820661544800e-01 4.0228120982646942e-02 - <_> - - 0 -1 1145 -8.3341673016548157e-03 - - 2.0551650226116180e-01 -4.3687049299478531e-02 - <_> - - 0 -1 1146 -2.6486050337553024e-03 - - 1.1604149639606476e-01 -1.5633650124073029e-02 - <_> - - 0 -1 1147 1.0625630384311080e-03 - - -5.9282109141349792e-02 1.7666099965572357e-01 - <_> - - 0 -1 1148 1.6927489778026938e-03 - - 2.1706450730562210e-02 -1.2041869759559631e-01 - <_> - - 0 -1 1149 4.3286401778459549e-03 - - 1.2777020223438740e-02 -6.8458771705627441e-01 - <_> - - 0 -1 1150 -5.0025819800794125e-03 - - 6.9742977619171143e-02 -4.5128200203180313e-02 - <_> - - 0 -1 1151 -4.0001221932470798e-03 - - -2.1252320706844330e-01 4.0566269308328629e-02 - <_> - - 0 -1 1152 -2.9794070869684219e-03 - - -1.9225180149078369e-01 3.7790048867464066e-02 - <_> - - 0 -1 1153 -4.7926669940352440e-03 - - 2.0764119923114777e-01 -4.1848249733448029e-02 - <_> - - 0 -1 1154 -1.2958609731867909e-03 - - 1.0586590319871902e-01 -1.0162109881639481e-01 - <_> - - 0 -1 1155 -3.9834968745708466e-02 - - -4.6228501200675964e-01 1.7882000654935837e-02 - <_> - - 0 -1 1156 -3.5444050445221364e-04 - - 9.8369859158992767e-02 -7.9836666584014893e-02 - <_> - - 0 -1 1157 7.3516031261533499e-04 - - 4.3184559792280197e-02 -1.7705610394477844e-01 - <_> - - 0 -1 1158 -2.2232010960578918e-03 - - 2.6093319058418274e-01 -2.0896289497613907e-02 - <_> - - 0 -1 1159 -3.3918209373950958e-02 - - -4.2818689346313477e-01 1.8691619858145714e-02 - <_> - - 0 -1 1160 1.6966359689831734e-03 - - -3.7930358201265335e-02 5.3745239973068237e-02 - <_> - - 0 -1 1161 -1.6069110482931137e-02 - - 2.7468490600585938e-01 -2.6708930730819702e-02 - <_> - - 0 -1 1162 6.7740790545940399e-03 - - 1.4412250369787216e-02 -4.3264049291610718e-01 - <_> - - 0 -1 1163 -4.1755018755793571e-03 - - -2.5962948799133301e-01 2.8292329981923103e-02 - <_> - - 0 -1 1164 1.2053320184350014e-02 - - -1.6576129943132401e-02 2.3224839568138123e-01 - <_> - - 0 -1 1165 -2.6080579118570313e-05 - - 8.1346921622753143e-02 -9.0487897396087646e-02 - <_> - - 0 -1 1166 -1.4344100236485247e-05 - - 3.6852870136499405e-02 -4.1185200214385986e-02 - <_> - - 0 -1 1167 -3.9379368536174297e-03 - - -3.1543010473251343e-01 2.5417279452085495e-02 - <_> - - 0 -1 1168 4.0381070226430893e-02 - - 2.3525550495833158e-03 -6.2616312503814697e-01 - <_> - - 0 -1 1169 6.4301681704819202e-03 - - -5.3877070546150208e-02 1.4479260146617889e-01 - <_> - - 0 -1 1170 -4.6332839876413345e-02 - - -3.8724219799041748e-01 9.4530889764428139e-03 - <_> - - 0 -1 1171 1.0219570249319077e-02 - - 2.7350710704922676e-02 -2.6912888884544373e-01 - <_> - - 0 -1 1172 3.5570480395108461e-03 - - -3.1693849712610245e-02 9.5666013658046722e-02 - <_> - - 0 -1 1173 3.3236679882975295e-05 - - -7.8234672546386719e-02 9.4776540994644165e-02 - <_> - - 0 -1 1174 -5.1339739002287388e-03 - - 1.6685609519481659e-01 -2.7505289763212204e-02 - <_> - - 0 -1 1175 -1.4517169802275021e-05 - - 7.5686343014240265e-02 -1.0133370012044907e-01 - <_> - - 0 -1 1176 3.1801449949853122e-04 - - 4.8777759075164795e-02 -1.4337550103664398e-01 - <_> - - 0 -1 1177 3.1173340976238251e-03 - - -3.3060338348150253e-02 2.3306910693645477e-01 - <_> - - 0 -1 1178 2.5181370973587036e-01 - - 2.5762580335140228e-03 -8.7339729070663452e-01 - <_> - - 0 -1 1179 -2.1105359494686127e-01 - - -4.9011439085006714e-01 1.4697089791297913e-02 - <_> - - 0 -1 1180 2.0397249609231949e-02 - - 6.3519459217786789e-03 -4.9986541271209717e-01 - <_> - - 0 -1 1181 5.0813501002267003e-04 - - 4.4790260493755341e-02 -1.4761149883270264e-01 - <_> - - 0 -1 1182 -3.8189589977264404e-03 - - 9.7741521894931793e-02 -3.0301010236144066e-02 - <_> - - 0 -1 1183 -1.7395459581166506e-03 - - 2.4675619602203369e-01 -2.9020030051469803e-02 - <_> - - 0 -1 1184 4.1809340473264456e-04 - - 5.0920631736516953e-02 -1.0856080055236816e-01 - <_> - - 0 -1 1185 1.3991099549457431e-03 - - 5.8758009225130081e-02 -1.1712399870157242e-01 - <_> - - 0 -1 1186 8.7988591985777020e-04 - - -3.8413930684328079e-02 6.0627821832895279e-02 - <_> - - 0 -1 1187 -1.7343460349366069e-03 - - 1.2327539920806885e-01 -5.8927621692419052e-02 - <_> - - 0 -1 1188 -5.1964629441499710e-02 - - -2.7523401379585266e-01 2.5769200176000595e-02 - <_> - - 0 -1 1189 1.1679840087890625e-01 - - -1.6948359087109566e-02 4.8907220363616943e-01 - <_> - - 0 -1 1190 1.5027469999040477e-05 - - -4.2930729687213898e-02 4.5053750276565552e-02 - <_> - - 0 -1 1191 -6.2790908850729465e-03 - - 1.0057970136404037e-01 -7.1604646742343903e-02 - <_> - - 0 -1 1192 2.2292429581284523e-02 - - -3.3260539174079895e-02 5.9876371175050735e-02 - <_> - - 0 -1 1193 1.1112909764051437e-02 - - 1.8461560830473900e-02 -4.0056389570236206e-01 - <_> - - 0 -1 1194 -2.7678120881319046e-02 - - -1.5821710228919983e-01 4.4526699930429459e-02 - <_> - - 0 -1 1195 1.1028380133211613e-02 - - -5.8520350605249405e-02 1.2061409652233124e-01 - <_> - - 0 -1 1196 -3.5407328605651855e-01 - - -9.0477108955383301e-01 3.2190340571105480e-03 - <_> - - 0 -1 1197 -2.9098710510879755e-03 - - 2.3300099372863770e-01 -3.2274879515171051e-02 - <_> - - 0 -1 1198 6.7031742073595524e-03 - - 5.4442249238491058e-02 -1.4111320674419403e-01 - <_> - - 0 -1 1199 -2.3569950833916664e-02 - - 2.6528549194335938e-01 -2.7591150254011154e-02 - <_> - - 0 -1 1200 8.1230228533968329e-04 - - -3.4654319286346436e-02 3.8616400212049484e-02 - <_> - - 0 -1 1201 -4.9135009758174419e-03 - - -4.4999811053276062e-01 1.7377259209752083e-02 - <_> - - 0 -1 1202 4.7644469304941595e-04 - - 4.3053060770034790e-02 -1.6222530603408813e-01 - <_> - - 0 -1 1203 -1.2371529592201114e-03 - - -1.9527329504489899e-01 3.4781698137521744e-02 - <_> - - 0 -1 1204 2.7213430032134056e-02 - - 2.6703500188887119e-03 -4.6807101368904114e-01 - <_> - - 0 -1 1205 7.8581515699625015e-03 - - -3.1454358249902725e-02 2.3968310654163361e-01 - <_> - - 0 -1 1206 -9.4054918736219406e-03 - - -1.8506290018558502e-01 2.6161460205912590e-02 - <_> - - 0 -1 1207 2.1883580833673477e-02 - - 1.5367889776825905e-02 -4.7111880779266357e-01 - <_> - - 0 -1 1208 1.8064159899950027e-02 - - -2.2110609337687492e-02 2.4883800745010376e-01 - <_> - - 0 -1 1209 9.4773704186081886e-03 - - -3.2008700072765350e-02 2.1519260108470917e-01 - <_> - - 0 -1 1210 -1.6133759170770645e-02 - - -3.2680571079254150e-01 1.9019920378923416e-02 - <_> - - 0 -1 1211 2.4490270763635635e-02 - - -5.3573019802570343e-02 1.3475239276885986e-01 - <_> - - 0 -1 1212 -4.5099710114300251e-03 - - 6.3583053648471832e-02 -4.9054648727178574e-02 - <_> - - 0 -1 1213 1.4463099651038647e-03 - - 5.5047128349542618e-02 -1.3593649864196777e-01 - <_> - - 0 -1 1214 2.7760691009461880e-03 - - -4.2384490370750427e-02 6.7933753132820129e-02 - <_> - - 0 -1 1215 -1.4073699712753296e-01 - - -2.4455660581588745e-01 2.8879430145025253e-02 - <_> - 237 - -9.5147550106048584e-01 - - <_> - - 0 -1 1216 -1.3682370074093342e-02 - - 3.2413798570632935e-01 -1.4175209403038025e-01 - <_> - - 0 -1 1217 -1.4372760429978371e-02 - - 2.4135230481624603e-01 -4.4534299522638321e-02 - <_> - - 0 -1 1218 -8.1836461322382092e-04 - - 1.0672769695520401e-01 -1.5665370225906372e-01 - <_> - - 0 -1 1219 -1.2486530095338821e-01 - - 3.4077370166778564e-01 -4.3315630406141281e-02 - <_> - - 0 -1 1220 1.6304250061511993e-01 - - 1.5282359672710299e-03 -4.0748660278320312e+02 - <_> - - 0 -1 1221 3.2605718821287155e-02 - - -6.1942920088768005e-02 2.5561058521270752e-01 - <_> - - 0 -1 1222 1.8693620339035988e-02 - - 1.0656840167939663e-03 -1.1298509521484375e+03 - <_> - - 0 -1 1223 4.1687521152198315e-03 - - 3.6205310374498367e-02 -3.4358918666839600e-01 - <_> - - 0 -1 1224 2.4810180068016052e-01 - - 1.0417460463941097e-02 -1.4925009765625000e+03 - <_> - - 0 -1 1225 -1.5247239498421550e-03 - - 1.0447689890861511e-01 -1.1282300204038620e-01 - <_> - - 0 -1 1226 4.3308010697364807e-01 - - -4.9477489665150642e-03 -2.2265880859375000e+04 - <_> - - 0 -1 1227 1.2200199998915195e-03 - - 4.8132400959730148e-02 -1.1945640295743942e-01 - <_> - - 0 -1 1228 3.4034859389066696e-02 - - 1.2363449670374393e-02 -1.2715170312500000e+05 - <_> - - 0 -1 1229 2.9459499273798428e-05 - - -4.2258169502019882e-02 4.6157348901033401e-02 - <_> - - 0 -1 1230 5.0410781055688858e-02 - - 3.1929798424243927e-02 -7.3170861816406250e+02 - <_> - - 0 -1 1231 3.4591180738061666e-03 - - 6.5230898559093475e-02 -1.8423840403556824e-01 - <_> - - 0 -1 1232 6.1741018295288086e-01 - - -9.0229194611310959e-03 -1.5548990234375000e+04 - <_> - - 0 -1 1233 1.6172550618648529e-02 - - -2.1732240915298462e-02 4.3600159883499146e-01 - <_> - - 0 -1 1234 4.3139848858118057e-03 - - 7.4104718863964081e-02 -1.5698270499706268e-01 - <_> - - 0 -1 1235 2.5886419415473938e-01 - - -3.3373549580574036e-02 2.7657139301300049e-01 - <_> - - 0 -1 1236 -5.6355118751525879e-02 - - 1.6577279567718506e-01 -7.0722267031669617e-02 - <_> - - 0 -1 1237 -2.8677979484200478e-02 - - -1.8732979893684387e-01 3.8104340434074402e-02 - <_> - - 0 -1 1238 2.6342319324612617e-02 - - -6.6387602128088474e-03 -1.2419830078125000e+04 - <_> - - 0 -1 1239 2.3009490221738815e-02 - - -2.2657530382275581e-02 1.2870970368385315e-01 - <_> - - 0 -1 1240 -2.8790850192308426e-03 - - 1.2932890653610229e-01 -7.0002339780330658e-02 - <_> - - 0 -1 1241 -3.6661271005868912e-02 - - -2.0944400131702423e-01 5.1285970956087112e-02 - <_> - - 0 -1 1242 1.0139449685811996e-01 - - 6.2089762650430202e-04 -1.0912600097656250e+03 - <_> - - 0 -1 1243 -9.5230191946029663e-03 - - 1.1074540019035339e-01 -4.9746628850698471e-02 - <_> - - 0 -1 1244 4.7148238867521286e-02 - - -1.8974080681800842e-02 4.4045388698577881e-01 - <_> - - 0 -1 1245 2.6617941330187023e-04 - - 3.5245511680841446e-02 -1.2747010588645935e-01 - <_> - - 0 -1 1246 -1.6388510121032596e-03 - - 9.0450480580329895e-02 -9.1294348239898682e-02 - <_> - - 0 -1 1247 1.0469569824635983e-03 - - 3.5024590790271759e-02 -2.4553160369396210e-01 - <_> - - 0 -1 1248 5.7105771265923977e-03 - - -4.1117560118436813e-02 2.0729669928550720e-01 - <_> - - 0 -1 1249 -3.0254309531301260e-03 - - -1.6913729906082153e-01 3.2537300139665604e-02 - <_> - - 0 -1 1250 4.3001459562219679e-04 - - -9.0787641704082489e-02 9.5726296305656433e-02 - <_> - - 0 -1 1251 -2.8151560574769974e-02 - - 3.1782031059265137e-01 -1.5754420310258865e-02 - <_> - - 0 -1 1252 1.4203020371496677e-02 - - 3.6543320864439011e-02 -2.4772170186042786e-01 - <_> - - 0 -1 1253 1.4925509458407760e-03 - - -5.6895390152931213e-02 1.6450239717960358e-01 - <_> - - 0 -1 1254 -1.5694119501858950e-03 - - -2.1969459950923920e-01 4.2165379971265793e-02 - <_> - - 0 -1 1255 3.3460158854722977e-02 - - -3.0376350507140160e-02 2.4883690476417542e-01 - <_> - - 0 -1 1256 2.1535790438065305e-05 - - -1.1558929830789566e-01 7.5267367064952850e-02 - <_> - - 0 -1 1257 2.2091339633334428e-04 - - 4.7116700559854507e-02 -1.3771249353885651e-01 - <_> - - 0 -1 1258 -3.0852231429889798e-04 - - -1.7308589816093445e-01 5.2946820855140686e-02 - <_> - - 0 -1 1259 -2.2987410426139832e-02 - - 9.3859672546386719e-02 -4.9169398844242096e-02 - <_> - - 0 -1 1260 -1.9873609766364098e-02 - - 2.2172120213508606e-01 -4.0203988552093506e-02 - <_> - - 0 -1 1261 -2.1868769545108080e-03 - - 7.3976643383502960e-02 -4.0414918214082718e-02 - <_> - - 0 -1 1262 1.9180430099368095e-03 - - 2.2919140756130219e-02 -3.7119540572166443e-01 - <_> - - 0 -1 1263 1.9919909536838531e-03 - - -4.3757811188697815e-02 1.5035259723663330e-01 - <_> - - 0 -1 1264 -1.8371410667896271e-02 - - -3.4854280948638916e-01 2.2885089740157127e-02 - <_> - - 0 -1 1265 3.3407800365239382e-03 - - 3.4570869058370590e-02 -1.2488479912281036e-01 - <_> - - 0 -1 1266 -5.8704670518636703e-02 - - 3.7905201315879822e-01 -2.6460919529199600e-02 - <_> - - 0 -1 1267 6.8355379626154900e-03 - - 6.1131529510021210e-03 -3.2385069131851196e-01 - <_> - - 0 -1 1268 -2.8255670331418514e-03 - - -3.1155520677566528e-01 2.6504810899496078e-02 - <_> - - 0 -1 1269 2.2296449169516563e-03 - - -3.1206009909510612e-02 1.7110890150070190e-01 - <_> - - 0 -1 1270 6.5813441760838032e-03 - - -4.7404121607542038e-02 1.7835719883441925e-01 - <_> - - 0 -1 1271 1.0121960192918777e-01 - - 1.4261390082538128e-02 -4.3145358562469482e-01 - <_> - - 0 -1 1272 3.0684550292789936e-03 - - 3.0059700831770897e-02 -2.4846489727497101e-01 - <_> - - 0 -1 1273 -3.0772039666771889e-02 - - 3.2272088527679443e-01 -1.0183470323681831e-02 - <_> - - 0 -1 1274 2.2650569677352905e-02 - - -2.3484040051698685e-02 3.2515829801559448e-01 - <_> - - 0 -1 1275 3.3587489277124405e-02 - - -3.5907190293073654e-02 9.0325959026813507e-02 - <_> - - 0 -1 1276 -1.0384810157120228e-02 - - -2.4556130170822144e-01 3.0561409890651703e-02 - <_> - - 0 -1 1277 -1.3354570546653122e-04 - - 8.3960212767124176e-02 -9.1717928647994995e-02 - <_> - - 0 -1 1278 -2.9986540321260691e-03 - - 1.6547350585460663e-01 -5.0249978899955750e-02 - <_> - - 0 -1 1279 -2.9653869205503725e-05 - - 4.8514939844608307e-02 -3.7718929350376129e-02 - <_> - - 0 -1 1280 -1.8298539798706770e-03 - - 1.0312289744615555e-01 -7.0163890719413757e-02 - <_> - - 0 -1 1281 -7.9780339729040861e-04 - - -1.6155080497264862e-01 3.3425241708755493e-02 - <_> - - 0 -1 1282 1.6090199351310730e-02 - - -2.3172449320554733e-02 3.1312319636344910e-01 - <_> - - 0 -1 1283 -2.6117239147424698e-02 - - -1.8283359706401825e-01 4.4406160712242126e-02 - <_> - - 0 -1 1284 5.3988862782716751e-04 - - 3.7879750132560730e-02 -1.9420880079269409e-01 - <_> - - 0 -1 1285 8.3446368575096130e-02 - - -5.4222598671913147e-02 1.1876580119132996e-01 - <_> - - 0 -1 1286 -5.8048460632562637e-02 - - 1.1394450068473816e-01 -9.1198466718196869e-02 - <_> - - 0 -1 1287 -1.8814830109477043e-03 - - -1.5262010693550110e-01 2.3864509537816048e-02 - <_> - - 0 -1 1288 1.3132189633324742e-03 - - -4.6137560158967972e-02 1.4679610729217529e-01 - <_> - - 0 -1 1289 -1.7690629465505481e-03 - - 9.4071052968502045e-02 -3.4722801297903061e-02 - <_> - - 0 -1 1290 -1.0372219840064645e-03 - - 1.8261389434337616e-01 -4.6382140368223190e-02 - <_> - - 0 -1 1291 1.0254649678245187e-03 - - 4.6782769262790680e-02 -1.5734140574932098e-01 - <_> - - 0 -1 1292 6.0706451768055558e-04 - - 5.0757829099893570e-02 -1.4380960166454315e-01 - <_> - - 0 -1 1293 2.8512319549918175e-02 - - -4.1036080569028854e-02 1.3501669466495514e-01 - <_> - - 0 -1 1294 1.3121340423822403e-02 - - 1.8242850899696350e-02 -4.0659961104393005e-01 - <_> - - 0 -1 1295 -1.0520350188016891e-03 - - -9.1481313109397888e-02 4.8208720982074738e-02 - <_> - - 0 -1 1296 -5.2031682571396232e-04 - - 1.7003460228443146e-01 -5.6223969906568527e-02 - <_> - - 0 -1 1297 3.6587389186024666e-03 - - 2.7709450572729111e-02 -2.8259190917015076e-01 - <_> - - 0 -1 1298 6.9533567875623703e-03 - - -2.7793539687991142e-02 2.6696971058845520e-01 - <_> - - 0 -1 1299 -2.7009609621018171e-03 - - -1.1849860101938248e-01 2.9575539752840996e-02 - <_> - - 0 -1 1300 2.6926631107926369e-03 - - 3.4701220691204071e-02 -1.9704259932041168e-01 - <_> - - 0 -1 1301 8.9048492908477783e-01 - - 9.4922678545117378e-03 -6.9257652759552002e-01 - <_> - - 0 -1 1302 1.2570730410516262e-02 - - 1.0482070036232471e-02 -5.3685492277145386e-01 - <_> - - 0 -1 1303 -9.8518103361129761e-02 - - -1.3873669505119324e-01 1.6502020880579948e-02 - <_> - - 0 -1 1304 2.2518350742757320e-03 - - -3.8794040679931641e-02 1.7727519571781158e-01 - <_> - - 0 -1 1305 2.5133260060101748e-03 - - -2.7275720611214638e-02 1.4456109702587128e-01 - <_> - - 0 -1 1306 -1.6838839510455728e-03 - - 1.5908120572566986e-01 -4.3830271810293198e-02 - <_> - - 0 -1 1307 1.0922889923676848e-03 - - 3.0462669208645821e-02 -2.0940789580345154e-01 - <_> - - 0 -1 1308 -4.6525499783456326e-03 - - -5.0559902191162109e-01 1.2849849648773670e-02 - <_> - - 0 -1 1309 3.9402171969413757e-03 - - 1.2510060332715511e-02 -3.6254620552062988e-01 - <_> - - 0 -1 1310 3.1555439345538616e-03 - - 9.6861021593213081e-03 -6.0146772861480713e-01 - <_> - - 0 -1 1311 -7.4672501068562269e-04 - - 7.9826571047306061e-02 -6.6200077533721924e-02 - <_> - - 0 -1 1312 3.4551098942756653e-03 - - -2.1648630499839783e-02 2.7341049909591675e-01 - <_> - - 0 -1 1313 -1.8974170088768005e-03 - - -9.0953402221202850e-02 1.6143409535288811e-02 - <_> - - 0 -1 1314 3.5065270494669676e-03 - - 2.2660460323095322e-02 -2.7876350283622742e-01 - <_> - - 0 -1 1315 -2.8986909455852583e-05 - - 5.1336620002985001e-02 -6.1516389250755310e-02 - <_> - - 0 -1 1316 -7.4356691911816597e-03 - - 1.0708740353584290e-01 -6.0333460569381714e-02 - <_> - - 0 -1 1317 3.8960299571044743e-04 - - -4.9783200025558472e-02 4.2651828378438950e-02 - <_> - - 0 -1 1318 -3.8861521170474589e-04 - - 1.1715649813413620e-01 -6.5398089587688446e-02 - <_> - - 0 -1 1319 6.1152309179306030e-02 - - 3.6394819617271423e-03 -6.6099071502685547e-01 - <_> - - 0 -1 1320 -3.3038608729839325e-02 - - -1.7845560610294342e-01 3.6528710275888443e-02 - <_> - - 0 -1 1321 -4.0356258978135884e-04 - - 2.6595359668135643e-02 -3.6493018269538879e-02 - <_> - - 0 -1 1322 -2.9699380975216627e-03 - - 1.7883479595184326e-01 -4.9407958984375000e-02 - <_> - - 0 -1 1323 5.5536800064146519e-03 - - 2.0649340003728867e-02 -1.5717330574989319e-01 - <_> - - 0 -1 1324 -2.0024640485644341e-02 - - 2.2152520716190338e-01 -3.0920460820198059e-02 - <_> - - 0 -1 1325 -6.8768248893320560e-03 - - -2.0433600246906281e-01 1.4137160032987595e-02 - <_> - - 0 -1 1326 2.7050529606640339e-03 - - 4.4882070273160934e-02 -1.6589009761810303e-01 - <_> - - 0 -1 1327 4.5226789079606533e-03 - - -9.3675320968031883e-03 8.1165276467800140e-02 - <_> - - 0 -1 1328 -1.0950569994747639e-03 - - -1.6356320679187775e-01 4.3779909610748291e-02 - <_> - - 0 -1 1329 -9.1500708367675543e-04 - - 1.1621239781379700e-01 -4.0983591228723526e-02 - <_> - - 0 -1 1330 2.8402361273765564e-01 - - 1.0129080154001713e-02 -6.0319852828979492e-01 - <_> - - 0 -1 1331 -1.6765540465712547e-02 - - 7.5574487447738647e-02 -4.7983448952436447e-02 - <_> - - 0 -1 1332 -1.0621249675750732e-03 - - -1.7645570635795593e-01 3.7266809493303299e-02 - <_> - - 0 -1 1333 -1.3859430328011513e-02 - - 1.9205330312252045e-01 -2.5051679462194443e-02 - <_> - - 0 -1 1334 6.3116271048784256e-03 - - -3.7239659577608109e-02 1.7168369889259338e-01 - <_> - - 0 -1 1335 1.7877150326967239e-02 - - 5.6739561259746552e-03 -3.8877210021018982e-01 - <_> - - 0 -1 1336 5.4825581610202789e-03 - - 3.0310610309243202e-02 -2.2730059921741486e-01 - <_> - - 0 -1 1337 -1.3553289696574211e-02 - - 2.6057419180870056e-01 -6.3845720142126083e-03 - <_> - - 0 -1 1338 2.5274800136685371e-03 - - 4.0234599262475967e-02 -1.7549510300159454e-01 - <_> - - 0 -1 1339 -6.4695789478719234e-03 - - 7.6588369905948639e-02 -5.7295378297567368e-02 - <_> - - 0 -1 1340 -6.7757196724414825e-02 - - 2.2221979498863220e-01 -3.3134650439023972e-02 - <_> - - 0 -1 1341 -8.4518149495124817e-02 - - -5.0019848346710205e-01 4.1239801794290543e-03 - <_> - - 0 -1 1342 -8.1915102899074554e-02 - - -6.5000212192535400e-01 9.2215994372963905e-03 - <_> - - 0 -1 1343 5.9685902670025826e-04 - - 3.1704228371381760e-02 -7.0871040225028992e-02 - <_> - - 0 -1 1344 -2.3389240726828575e-02 - - 1.0624480247497559e-01 -6.4790308475494385e-02 - <_> - - 0 -1 1345 -8.0898992018774152e-04 - - -1.1900889873504639e-01 3.2629311084747314e-02 - <_> - - 0 -1 1346 1.9939169287681580e-03 - - 7.4816852807998657e-02 -9.5308631658554077e-02 - <_> - - 0 -1 1347 -3.4726969897747040e-03 - - 2.1070009469985962e-01 -3.9540618658065796e-02 - <_> - - 0 -1 1348 -3.3657159656286240e-03 - - 1.2709540128707886e-01 -5.5735819041728973e-02 - <_> - - 0 -1 1349 -1.3575919903814793e-02 - - -1.5449869632720947e-01 4.0265358984470367e-02 - <_> - - 0 -1 1350 1.6253659850917757e-04 - - -1.1073529720306396e-01 6.9158107042312622e-02 - <_> - - 0 -1 1351 -8.3766528405249119e-04 - - 8.5044503211975098e-02 -5.0807278603315353e-02 - <_> - - 0 -1 1352 6.7485118051990867e-04 - - 3.3850058913230896e-02 -1.8681390583515167e-01 - <_> - - 0 -1 1353 4.5086331665515900e-02 - - -2.2217540070414543e-02 1.6278229653835297e-01 - <_> - - 0 -1 1354 3.5375991137698293e-04 - - -8.4861122071743011e-02 7.9549372196197510e-02 - <_> - - 0 -1 1355 -5.7213287800550461e-03 - - -1.5201200544834137e-01 8.8938418775796890e-03 - <_> - - 0 -1 1356 -7.2676259151194245e-05 - - 7.4427559971809387e-02 -9.4257198274135590e-02 - <_> - - 0 -1 1357 -1.5427060425281525e-03 - - 9.9066533148288727e-02 -1.4238010160624981e-02 - <_> - - 0 -1 1358 -3.1625840347260237e-03 - - -1.8063150346279144e-01 3.3944349735975266e-02 - <_> - - 0 -1 1359 6.6523120040073991e-04 - - -4.0894519537687302e-02 6.0058850795030594e-02 - <_> - - 0 -1 1360 -2.7951318770647049e-04 - - 8.7963223457336426e-02 -7.9021811485290527e-02 - <_> - - 0 -1 1361 2.1129949018359184e-03 - - 3.6279819905757904e-02 -8.4132328629493713e-02 - <_> - - 0 -1 1362 9.9497847259044647e-03 - - -5.5264249444007874e-02 1.2318620085716248e-01 - <_> - - 0 -1 1363 5.4585319012403488e-03 - - 1.7271419987082481e-02 -1.4714859426021576e-01 - <_> - - 0 -1 1364 -1.5861300053074956e-03 - - 1.7243680357933044e-01 -3.7152450531721115e-02 - <_> - - 0 -1 1365 -3.7650260492227972e-04 - - -1.5841029584407806e-01 4.2054440826177597e-02 - <_> - - 0 -1 1366 4.8947380855679512e-04 - - -8.6445927619934082e-02 8.4095031023025513e-02 - <_> - - 0 -1 1367 -4.2103161104023457e-04 - - 1.2958380579948425e-01 -5.7010810822248459e-02 - <_> - - 0 -1 1368 1.7509369645267725e-03 - - -3.1569670885801315e-02 2.3537610471248627e-01 - <_> - - 0 -1 1369 3.2388899475336075e-02 - - 9.8493462428450584e-03 -2.5093591213226318e-01 - <_> - - 0 -1 1370 -1.1695439752656966e-04 - - -1.2052779644727707e-01 5.7291809469461441e-02 - <_> - - 0 -1 1371 5.2962708286941051e-04 - - 3.8372319191694260e-02 -1.2122260034084320e-01 - <_> - - 0 -1 1372 -1.6693899407982826e-02 - - 9.3027323484420776e-02 -6.7262589931488037e-02 - <_> - - 0 -1 1373 -4.4602990965358913e-04 - - -9.7155101597309113e-02 3.2263729721307755e-02 - <_> - - 0 -1 1374 2.7705840766429901e-02 - - -4.5673649758100510e-02 1.3469059765338898e-01 - <_> - - 0 -1 1375 1.4168629604682792e-05 - - -5.1646851003170013e-02 5.7442869991064072e-02 - <_> - - 0 -1 1376 6.5597752109169960e-04 - - 4.1580449789762497e-02 -1.5479899942874908e-01 - <_> - - 0 -1 1377 -1.9950540736317635e-02 - - 1.0158760100603104e-01 -4.1194550693035126e-02 - <_> - - 0 -1 1378 -1.0277380049228668e-01 - - 2.7642831206321716e-01 -2.2232910618185997e-02 - <_> - - 0 -1 1379 -1.1396359652280807e-02 - - -2.9092219471931458e-01 7.6221348717808723e-03 - <_> - - 0 -1 1380 4.2369891889393330e-03 - - 2.8951080515980721e-02 -2.1133390069007874e-01 - <_> - - 0 -1 1381 1.3533539604395628e-03 - - -1.7100410535931587e-02 1.1205810308456421e-01 - <_> - - 0 -1 1382 3.8031381368637085e-01 - - 1.7792930826544762e-02 -3.3087378740310669e-01 - <_> - - 0 -1 1383 -4.9306880100630224e-05 - - 5.7494789361953735e-02 -5.7994779199361801e-02 - <_> - - 0 -1 1384 -2.0659419242292643e-03 - - -2.4288409948348999e-01 2.6420449838042259e-02 - <_> - - 0 -1 1385 -5.7952571660280228e-04 - - 4.3308749794960022e-02 -5.1844529807567596e-02 - <_> - - 0 -1 1386 2.9111439289408736e-05 - - -1.0596740245819092e-01 5.8839380741119385e-02 - <_> - - 0 -1 1387 1.4325099982670508e-05 - - -7.7876992523670197e-02 6.6765457391738892e-02 - <_> - - 0 -1 1388 7.4459682218730450e-04 - - -8.3045527338981628e-02 1.0169909894466400e-01 - <_> - - 0 -1 1389 -2.7282300870865583e-03 - - 7.7897660434246063e-02 -2.5507520884275436e-02 - <_> - - 0 -1 1390 1.5567449852824211e-02 - - 1.0506859980523586e-02 -5.9925341606140137e-01 - <_> - - 0 -1 1391 -6.8032061681151390e-03 - - 2.6317459344863892e-01 -2.7121569961309433e-02 - <_> - - 0 -1 1392 4.7938480973243713e-02 - - 7.4435519054532051e-03 -8.8113451004028320e-01 - <_> - - 0 -1 1393 -1.7394230235368013e-03 - - -1.0975260287523270e-01 5.5294711142778397e-02 - <_> - - 0 -1 1394 2.0128060132265091e-02 - - -2.9149420559406281e-02 2.2172920405864716e-01 - <_> - - 0 -1 1395 -4.3711899779736996e-03 - - -1.2924540042877197e-01 1.5891730785369873e-02 - <_> - - 0 -1 1396 1.0657859966158867e-02 - - -2.6825129985809326e-02 2.2967310249805450e-01 - <_> - - 0 -1 1397 -2.5562180206179619e-02 - - -9.6018558740615845e-01 2.4847979657351971e-03 - <_> - - 0 -1 1398 1.2549740495160222e-03 - - 6.5428301692008972e-02 -9.0715043246746063e-02 - <_> - - 0 -1 1399 -3.6583960056304932e-02 - - -8.2619887590408325e-01 9.8219967912882566e-04 - <_> - - 0 -1 1400 -1.0427700355648994e-02 - - 2.0940390229225159e-01 -2.9688650742173195e-02 - <_> - - 0 -1 1401 4.6284540439955890e-04 - - -9.5797866582870483e-02 6.4504817128181458e-02 - <_> - - 0 -1 1402 -1.7270300304517150e-03 - - -1.8250599503517151e-01 4.3564688414335251e-02 - <_> - - 0 -1 1403 -2.0097640808671713e-03 - - 1.7395040392875671e-01 -3.4777939319610596e-02 - <_> - - 0 -1 1404 -1.0565159842371941e-02 - - -6.7046958208084106e-01 9.1460766270756721e-03 - <_> - - 0 -1 1405 3.6083920858800411e-03 - - -4.0318038314580917e-02 1.0652980208396912e-01 - <_> - - 0 -1 1406 -1.0259989649057388e-03 - - -1.4572420716285706e-01 4.2951799929141998e-02 - <_> - - 0 -1 1407 -3.7319560069590807e-03 - - 7.1757651865482330e-02 -2.9140990227460861e-02 - <_> - - 0 -1 1408 1.2519509764388204e-03 - - -7.6744079589843750e-02 8.8873356580734253e-02 - <_> - - 0 -1 1409 -2.6295570656657219e-02 - - -5.4250258207321167e-01 6.4060981385409832e-03 - <_> - - 0 -1 1410 2.1677089855074883e-02 - - 1.4695540070533752e-02 -4.2403239011764526e-01 - <_> - - 0 -1 1411 1.2761490419507027e-02 - - -1.7890950664877892e-02 1.9420540332794189e-01 - <_> - - 0 -1 1412 -2.0567029714584351e-03 - - 6.7716017365455627e-02 -9.1368153691291809e-02 - <_> - - 0 -1 1413 -7.7950339764356613e-03 - - 6.9471307098865509e-02 -3.2636199146509171e-02 - <_> - - 0 -1 1414 1.2084699701517820e-03 - - 3.9306450635194778e-02 -1.9763720035552979e-01 - <_> - - 0 -1 1415 4.1114289313554764e-02 - - -9.3598989769816399e-03 1.9510230422019958e-01 - <_> - - 0 -1 1416 -1.9867620430886745e-03 - - 8.9320957660675049e-02 -7.0197992026805878e-02 - <_> - - 0 -1 1417 4.3194511090405285e-04 - - -7.2992227971553802e-02 8.7222076952457428e-02 - <_> - - 0 -1 1418 -1.2856139801442623e-02 - - -1.9291040301322937e-01 3.7453301250934601e-02 - <_> - - 0 -1 1419 3.3460529521107674e-03 - - -1.7367599532008171e-02 2.7341571450233459e-01 - <_> - - 0 -1 1420 3.0642180354334414e-04 - - 3.8734178990125656e-02 -1.5396389365196228e-01 - <_> - - 0 -1 1421 1.0412399657070637e-02 - - -2.2793370299041271e-03 4.4056978821754456e-01 - <_> - - 0 -1 1422 2.8117289766669273e-03 - - -1.9140290096402168e-02 2.9534861445426941e-01 - <_> - - 0 -1 1423 5.9893741272389889e-03 - - 5.6822518818080425e-03 -3.9801359176635742e-01 - <_> - - 0 -1 1424 -1.4277939953899477e-05 - - 7.5205951929092407e-02 -7.2355180978775024e-02 - <_> - - 0 -1 1425 2.8138908743858337e-01 - - 3.0617320444434881e-03 -5.3069370985031128e-01 - <_> - - 0 -1 1426 -8.7479073554277420e-03 - - -9.0702220797538757e-02 6.1258301138877869e-02 - <_> - - 0 -1 1427 -5.6720711290836334e-02 - - 1.7737619578838348e-01 -1.7746560275554657e-02 - <_> - - 0 -1 1428 6.8297073245048523e-02 - - -2.3318519815802574e-02 2.7793890237808228e-01 - <_> - - 0 -1 1429 1.2627799808979034e-01 - - 1.2115039862692356e-02 -4.1395869851112366e-01 - <_> - - 0 -1 1430 6.1351219192147255e-03 - - 2.9587330296635628e-02 -1.9230470061302185e-01 - <_> - - 0 -1 1431 -1.8394199432805181e-03 - - 1.7592909932136536e-01 -2.5844290852546692e-02 - <_> - - 0 -1 1432 2.9283049516379833e-03 - - 1.1218659579753876e-02 -5.0416141748428345e-01 - <_> - - 0 -1 1433 -6.1085459310561419e-04 - - 8.2549288868904114e-02 -6.5701678395271301e-02 - <_> - - 0 -1 1434 -4.8793861060403287e-04 - - 7.1810998022556305e-02 -7.6354406774044037e-02 - <_> - - 0 -1 1435 8.6069349199533463e-03 - - 4.0774960070848465e-02 -1.1507250368595123e-01 - <_> - - 0 -1 1436 1.4266039943322539e-03 - - -4.1656959801912308e-02 1.6798630356788635e-01 - <_> - - 0 -1 1437 4.8269471153616905e-03 - - 4.0586888790130615e-03 -6.3450187444686890e-01 - <_> - - 0 -1 1438 3.0349730513989925e-04 - - -7.4305862188339233e-02 9.2885307967662811e-02 - <_> - - 0 -1 1439 4.0700649842619896e-03 - - 1.7601199448108673e-02 -1.4042760431766510e-01 - <_> - - 0 -1 1440 1.7230060184374452e-03 - - 6.7328721284866333e-02 -1.1149639636278152e-01 - <_> - - 0 -1 1441 -4.2959861457347870e-02 - - 8.9163742959499359e-02 -5.3549990057945251e-02 - <_> - - 0 -1 1442 -7.6154018752276897e-03 - - 1.1312600225210190e-01 -5.6240588426589966e-02 - <_> - - 0 -1 1443 1.1204009875655174e-02 - - 2.1411050111055374e-02 -3.1488281488418579e-01 - <_> - - 0 -1 1444 -3.5213530063629150e-02 - - -2.0609620213508606e-01 2.8586030006408691e-02 - <_> - - 0 -1 1445 4.5947679318487644e-03 - - -1.7090849578380585e-02 2.2707240283489227e-01 - <_> - - 0 -1 1446 4.5796878635883331e-02 - - -1.3230360113084316e-02 4.3202790617942810e-01 - <_> - - 0 -1 1447 -2.9980540275573730e-03 - - -1.2645569443702698e-01 5.0367150455713272e-02 - <_> - - 0 -1 1448 -5.3378548473119736e-03 - - 9.5470063388347626e-02 -5.8848761022090912e-02 - <_> - - 0 -1 1449 1.0418590391054749e-03 - - -6.1176940798759460e-02 6.5677382051944733e-02 - <_> - - 0 -1 1450 6.4219138585031033e-04 - - -7.8584067523479462e-02 7.0961080491542816e-02 - <_> - - 0 -1 1451 1.0756379924714565e-03 - - 4.1385240852832794e-02 -1.4342910051345825e-01 - <_> - - 0 -1 1452 -5.4661920294165611e-03 - - 1.2052729725837708e-01 -4.7768119722604752e-02 - <_> - 245 - -8.9815771579742432e-01 - - <_> - - 0 -1 1453 1.4044909738004208e-02 - - -1.1754830181598663e-01 2.9966700077056885e-01 - <_> - - 0 -1 1454 1.3747519915341400e-05 - - -4.0695600211620331e-02 5.3288660943508148e-02 - <_> - - 0 -1 1455 6.1071332311257720e-04 - - -1.5881499648094177e-01 9.3698732554912567e-02 - <_> - - 0 -1 1456 -1.2948609655722976e-03 - - -5.4627988487482071e-02 2.7983199805021286e-02 - <_> - - 0 -1 1457 3.4624651074409485e-01 - - 2.6321019977331161e-02 -1.4812429687500000e+04 - <_> - - 0 -1 1458 -3.8160590920597315e-03 - - 2.4088940024375916e-01 -2.9296329244971275e-02 - <_> - - 0 -1 1459 3.4190680831670761e-02 - - -2.7402290143072605e-03 -3.1396430664062500e+03 - <_> - - 0 -1 1460 1.1889369925484061e-03 - - -6.6801503300666809e-02 1.2544539570808411e-01 - <_> - - 0 -1 1461 -1.1160460300743580e-02 - - 1.4045539498329163e-01 -8.2512803375720978e-02 - <_> - - 0 -1 1462 1.5963950427249074e-03 - - 6.3538387417793274e-02 -1.7245189845561981e-01 - <_> - - 0 -1 1463 1.0270989732816815e-03 - - 8.7721683084964752e-02 -1.2988109886646271e-01 - <_> - - 0 -1 1464 3.6547291092574596e-03 - - -9.1982476413249969e-02 1.1752050369977951e-01 - <_> - - 0 -1 1465 -1.7952709458768368e-03 - - 1.4286880195140839e-01 -7.6801367104053497e-02 - <_> - - 0 -1 1466 -6.8708707112818956e-04 - - -1.3375990092754364e-01 6.5970778465270996e-02 - <_> - - 0 -1 1467 2.2609028965234756e-03 - - 3.1525388360023499e-02 -2.9333940148353577e-01 - <_> - - 0 -1 1468 -7.9880550038069487e-04 - - 9.2652402818202972e-02 -4.8865720629692078e-02 - <_> - - 0 -1 1469 -1.4205630123615265e-01 - - 2.9974219202995300e-01 -3.1955420970916748e-02 - <_> - - 0 -1 1470 -2.6552429422736168e-02 - - 9.3852818012237549e-02 -5.9430178254842758e-02 - <_> - - 0 -1 1471 -1.3033810071647167e-02 - - -2.1567200124263763e-01 4.3825730681419373e-02 - <_> - - 0 -1 1472 1.5498420223593712e-02 - - -1.4112919569015503e-02 1.0027839988470078e-01 - <_> - - 0 -1 1473 -2.1014609374105930e-03 - - 1.6404679417610168e-01 -6.6425412893295288e-02 - <_> - - 0 -1 1474 9.5388311892747879e-03 - - 3.8093499839305878e-02 -2.9983720183372498e-01 - <_> - - 0 -1 1475 -1.5687920385971665e-03 - - 2.3949630558490753e-01 -4.6231910586357117e-02 - <_> - - 0 -1 1476 4.2190421372652054e-03 - - -4.4786229729652405e-02 2.0811119675636292e-01 - <_> - - 0 -1 1477 -3.0952331144362688e-04 - - -1.2582519650459290e-01 8.1964462995529175e-02 - <_> - - 0 -1 1478 4.6312180347740650e-04 - - -9.6806809306144714e-02 9.4297870993614197e-02 - <_> - - 0 -1 1479 2.4860999546945095e-03 - - 5.5631000548601151e-02 -1.5159459412097931e-01 - <_> - - 0 -1 1480 -5.3660441190004349e-03 - - -2.8408879041671753e-01 2.7606539428234100e-02 - <_> - - 0 -1 1481 -1.3755810214206576e-03 - - 2.1815380454063416e-01 -3.9356950670480728e-02 - <_> - - 0 -1 1482 4.6460707671940327e-03 - - 2.5740889832377434e-02 -2.4686050415039062e-01 - <_> - - 0 -1 1483 6.6427360288798809e-03 - - -5.2207160741090775e-02 1.5937830507755280e-01 - <_> - - 0 -1 1484 -8.5125081241130829e-03 - - -5.1953881978988647e-01 5.7587879709899426e-03 - <_> - - 0 -1 1485 -1.0186510160565376e-02 - - -4.9416080117225647e-01 1.4378200285136700e-02 - <_> - - 0 -1 1486 3.3871911466121674e-02 - - -2.1367419511079788e-02 3.4267479181289673e-01 - <_> - - 0 -1 1487 -1.2628670083358884e-03 - - 8.1579618155956268e-02 -8.5091993212699890e-02 - <_> - - 0 -1 1488 5.8080098824575543e-04 - - 4.0864091366529465e-02 -1.9041730463504791e-01 - <_> - - 0 -1 1489 -1.5919590368866920e-03 - - 2.1132859587669373e-01 -3.2383318990468979e-02 - <_> - - 0 -1 1490 1.9183800322934985e-03 - - 3.5422440618276596e-02 -1.2954640388488770e-01 - <_> - - 0 -1 1491 -3.3837689552456141e-03 - - -3.9200991392135620e-01 1.7284810543060303e-02 - <_> - - 0 -1 1492 -4.4958260841667652e-03 - - -6.5269482135772705e-01 8.9287841692566872e-03 - <_> - - 0 -1 1493 1.1123440228402615e-02 - - -4.9451079219579697e-02 1.3990929722785950e-01 - <_> - - 0 -1 1494 -2.1186670288443565e-02 - - 1.4022010564804077e-01 -3.2561041414737701e-02 - <_> - - 0 -1 1495 4.7813180834054947e-02 - - 1.7437700182199478e-02 -4.0824559330940247e-01 - <_> - - 0 -1 1496 4.3155639432370663e-03 - - 1.9035950303077698e-02 -1.5336640179157257e-01 - <_> - - 0 -1 1497 4.8115472309291363e-03 - - 3.1786568462848663e-02 -2.2056590020656586e-01 - <_> - - 0 -1 1498 9.8020406439900398e-03 - - -3.6895118653774261e-02 2.3310080170631409e-01 - <_> - - 0 -1 1499 -3.0184770002961159e-03 - - 1.5916270017623901e-01 -5.2995648235082626e-02 - <_> - - 0 -1 1500 2.6722450274974108e-03 - - -7.5243122875690460e-02 5.0269700586795807e-02 - <_> - - 0 -1 1501 1.2502169702202082e-03 - - -5.1091250032186508e-02 1.4441229403018951e-01 - <_> - - 0 -1 1502 1.4972910284996033e-03 - - 2.6812529191374779e-02 -1.6315759718418121e-01 - <_> - - 0 -1 1503 -2.8825521003454924e-03 - - -4.1588610410690308e-01 1.8284549936652184e-02 - <_> - - 0 -1 1504 -2.2845040075480938e-03 - - 1.1726160347461700e-01 -5.0136148929595947e-02 - <_> - - 0 -1 1505 5.2596088498830795e-03 - - 2.4950170889496803e-02 -3.0131611227989197e-01 - <_> - - 0 -1 1506 1.5561799518764019e-03 - - -1.0462810099124908e-01 7.1823246777057648e-02 - <_> - - 0 -1 1507 -2.5602891109883785e-03 - - 1.6153579950332642e-01 -4.4245410710573196e-02 - <_> - - 0 -1 1508 8.9566741371527314e-04 - - 2.8113519772887230e-02 -8.6903810501098633e-02 - <_> - - 0 -1 1509 1.3984919860376976e-05 - - -1.0637009888887405e-01 6.4237020909786224e-02 - <_> - - 0 -1 1510 -3.0262451036833227e-04 - - -1.6569760441780090e-01 5.9751808643341064e-02 - <_> - - 0 -1 1511 -2.5108361151069403e-03 - - 8.8912777602672577e-02 -7.2652541100978851e-02 - <_> - - 0 -1 1512 1.9389450317248702e-03 - - 2.9152520000934601e-02 -9.1866388916969299e-02 - <_> - - 0 -1 1513 7.3843088466674089e-04 - - -4.2057931423187256e-02 1.5995030105113983e-01 - <_> - - 0 -1 1514 -3.6558669526129961e-03 - - -9.5142677426338196e-02 1.7093049362301826e-02 - <_> - - 0 -1 1515 2.6905719190835953e-02 - - -5.1677141338586807e-02 1.2445399910211563e-01 - <_> - - 0 -1 1516 1.5600489859934896e-04 - - 4.8049561679363251e-02 -1.0828830301761627e-01 - <_> - - 0 -1 1517 -2.9363629437284544e-05 - - 7.7676616609096527e-02 -8.3602227270603180e-02 - <_> - - 0 -1 1518 -1.3152750208973885e-02 - - -5.3625142574310303e-01 9.8441755399107933e-03 - <_> - - 0 -1 1519 1.2583429925143719e-03 - - 3.6697480827569962e-02 -1.9785030186176300e-01 - <_> - - 0 -1 1520 -3.5280231386423111e-02 - - 2.8760561347007751e-01 -2.4332510307431221e-02 - <_> - - 0 -1 1521 1.0623750276863575e-03 - - -6.4936116337776184e-02 1.0775420069694519e-01 - <_> - - 0 -1 1522 1.3485189811035525e-05 - - -9.1917447745800018e-02 5.9476271271705627e-02 - <_> - - 0 -1 1523 2.6417789049446583e-03 - - 5.2622731775045395e-02 -1.3380350172519684e-01 - <_> - - 0 -1 1524 -4.2458991520106792e-03 - - 1.5622630715370178e-01 -3.9715219289064407e-02 - <_> - - 0 -1 1525 -1.2747449800372124e-02 - - -3.9632159471511841e-01 1.6892410814762115e-02 - <_> - - 0 -1 1526 5.0329609075561166e-04 - - -4.6448979526758194e-02 8.7452828884124756e-02 - <_> - - 0 -1 1527 -1.3987520105729345e-05 - - 9.0819023549556732e-02 -8.3491086959838867e-02 - <_> - - 0 -1 1528 3.3579400042071939e-04 - - 3.0231660231947899e-02 -8.4349960088729858e-02 - <_> - - 0 -1 1529 5.5269408039748669e-03 - - -7.3858089745044708e-02 8.5668817162513733e-02 - <_> - - 0 -1 1530 -1.7237789870705456e-04 - - -7.0609577000141144e-02 3.4158289432525635e-02 - <_> - - 0 -1 1531 -2.7978639118373394e-03 - - 1.9515010714530945e-01 -3.3844988793134689e-02 - <_> - - 0 -1 1532 -1.4513960195472464e-05 - - 4.3614171445369720e-02 -3.4747149795293808e-02 - <_> - - 0 -1 1533 6.4136547734960914e-04 - - 4.0988758206367493e-02 -1.7332290112972260e-01 - <_> - - 0 -1 1534 -9.5870634540915489e-03 - - 1.4798779785633087e-01 -3.3517260104417801e-02 - <_> - - 0 -1 1535 -1.6748090274631977e-03 - - -1.8289859592914581e-01 3.4056250005960464e-02 - <_> - - 0 -1 1536 -3.5602890420705080e-04 - - -9.0450271964073181e-02 2.9689440503716469e-02 - <_> - - 0 -1 1537 -2.5170370936393738e-03 - - 3.3267921209335327e-01 -1.9150910899043083e-02 - <_> - - 0 -1 1538 3.6662290804088116e-03 - - 2.0794689655303955e-02 -1.1462289839982986e-01 - <_> - - 0 -1 1539 3.3933550585061312e-03 - - -2.0670190453529358e-02 2.8567948937416077e-01 - <_> - - 0 -1 1540 -9.3351822579279542e-04 - - 8.7735213339328766e-02 -4.1667710989713669e-02 - <_> - - 0 -1 1541 1.5587939880788326e-02 - - 3.2399158924818039e-02 -1.9780139625072479e-01 - <_> - - 0 -1 1542 3.8261379813775420e-04 - - -8.8336393237113953e-02 5.5809110403060913e-02 - <_> - - 0 -1 1543 1.2352470075711608e-03 - - 3.4270290285348892e-02 -1.7848719656467438e-01 - <_> - - 0 -1 1544 7.5910572195425630e-04 - - -5.5778361856937408e-02 6.1857070773839951e-02 - <_> - - 0 -1 1545 2.8413049876689911e-03 - - -2.7083519846200943e-02 2.3203529417514801e-01 - <_> - - 0 -1 1546 -1.4313060091808438e-05 - - 6.6050931811332703e-02 -5.9752069413661957e-02 - <_> - - 0 -1 1547 -3.6771351005882025e-03 - - -4.0045088529586792e-01 1.4387479983270168e-02 - <_> - - 0 -1 1548 -2.5888609234243631e-03 - - 1.1220999807119370e-01 -4.7137189656496048e-02 - <_> - - 0 -1 1549 1.1471610050648451e-03 - - 4.7330550849437714e-02 -1.3199129700660706e-01 - <_> - - 0 -1 1550 1.6501640900969505e-02 - - -3.4597828984260559e-02 9.5769941806793213e-02 - <_> - - 0 -1 1551 3.3293468877673149e-03 - - 4.1258718818426132e-02 -1.6558709740638733e-01 - <_> - - 0 -1 1552 1.7063439590856433e-03 - - -3.2584629952907562e-02 2.7619439363479614e-01 - <_> - - 0 -1 1553 -2.7118679136037827e-03 - - 8.9609041810035706e-02 -6.4858056604862213e-02 - <_> - - 0 -1 1554 -4.1943859308958054e-02 - - -5.3329932689666748e-01 6.9506950676441193e-03 - <_> - - 0 -1 1555 2.2219200618565083e-03 - - -5.6344181299209595e-02 1.0510399937629700e-01 - <_> - - 0 -1 1556 4.4396471232175827e-02 - - 8.1383727956563234e-04 -1.0001629590988159e+00 - <_> - - 0 -1 1557 -6.6766492091119289e-03 - - -1.4048320055007935e-01 4.3647080659866333e-02 - <_> - - 0 -1 1558 -1.4053310267627239e-02 - - -7.8012561798095703e-01 2.0627910271286964e-03 - <_> - - 0 -1 1559 2.8836489946115762e-05 - - -6.9865100085735321e-02 8.1550262868404388e-02 - <_> - - 0 -1 1560 2.3246949538588524e-02 - - -1.0230179876089096e-02 2.2243100404739380e-01 - <_> - - 0 -1 1561 -1.8424650654196739e-02 - - -2.1308340132236481e-01 3.0248960480093956e-02 - <_> - - 0 -1 1562 -1.1484029702842236e-02 - - 1.9427800178527832e-01 -3.0198210850358009e-02 - <_> - - 0 -1 1563 -1.1278050020337105e-02 - - -1.8280689418315887e-01 3.2126009464263916e-02 - <_> - - 0 -1 1564 8.0079799517989159e-03 - - -2.2145880386233330e-02 2.8033518791198730e-01 - <_> - - 0 -1 1565 2.4508950300514698e-03 - - -3.1573358923196793e-02 1.9028620421886444e-01 - <_> - - 0 -1 1566 -7.3367758886888623e-04 - - 6.2882833182811737e-02 -2.9410809278488159e-02 - <_> - - 0 -1 1567 4.7427918761968613e-03 - - 1.8659200519323349e-02 -3.6193120479583740e-01 - <_> - - 0 -1 1568 -1.5166309662163258e-02 - - -3.0083620548248291e-01 5.1251458935439587e-03 - <_> - - 0 -1 1569 2.0500000100582838e-03 - - -3.3869780600070953e-02 1.6676980257034302e-01 - <_> - - 0 -1 1570 8.9623825624585152e-03 - - 9.9547952413558960e-03 -1.3321259617805481e-01 - <_> - - 0 -1 1571 5.8658542111515999e-03 - - 2.8031339868903160e-02 -2.1094280481338501e-01 - <_> - - 0 -1 1572 7.1393670514225960e-03 - - -3.3273868262767792e-02 9.2609196901321411e-02 - <_> - - 0 -1 1573 -2.3449780419468880e-03 - - 9.6021108329296112e-02 -8.1295557320117950e-02 - <_> - - 0 -1 1574 6.0673272237181664e-03 - - -3.7160739302635193e-02 5.9563819319009781e-02 - <_> - - 0 -1 1575 -7.9464316368103027e-03 - - 1.2790870666503906e-01 -6.0662470757961273e-02 - <_> - - 0 -1 1576 6.3600740395486355e-04 - - 2.4837940931320190e-02 -1.1699199676513672e-01 - <_> - - 0 -1 1577 -5.9671682538464665e-04 - - -1.7579829692840576e-01 3.9644010365009308e-02 - <_> - - 0 -1 1578 3.8733381032943726e-01 - - 1.2454539537429810e-02 -4.6469339728355408e-01 - <_> - - 0 -1 1579 2.0961730182170868e-01 - - 8.1857265904545784e-03 -6.0814487934112549e-01 - <_> - - 0 -1 1580 -3.6388849839568138e-03 - - -1.9478240609169006e-01 2.6340700685977936e-02 - <_> - - 0 -1 1581 -3.9718127809464931e-03 - - 2.7739891409873962e-01 -2.2029049694538116e-02 - <_> - - 0 -1 1582 -8.7379878095816821e-05 - - 3.6866988986730576e-02 -3.4307479858398438e-02 - <_> - - 0 -1 1583 -4.9215141683816910e-02 - - -4.5262241363525391e-01 1.2579060159623623e-02 - <_> - - 0 -1 1584 -1.6017559682950377e-03 - - 2.0021310448646545e-01 -4.3042439967393875e-02 - <_> - - 0 -1 1585 -1.4037380424269941e-05 - - 7.3363706469535828e-02 -7.9242199659347534e-02 - <_> - - 0 -1 1586 2.0111119747161865e-01 - - 7.1724099107086658e-03 -3.6252960562705994e-01 - <_> - - 0 -1 1587 1.1730849510058761e-03 - - 4.5483089983463287e-02 -1.2364199757575989e-01 - <_> - - 0 -1 1588 -4.1541741666151211e-05 - - 5.3658191114664078e-02 -5.7738419622182846e-02 - <_> - - 0 -1 1589 3.6186390207149088e-04 - - -8.9843407273292542e-02 7.6897308230400085e-02 - <_> - - 0 -1 1590 -5.7938909158110619e-03 - - -1.3961860537528992e-01 3.0140429735183716e-02 - <_> - - 0 -1 1591 -9.3461759388446808e-04 - - 1.3507390022277832e-01 -4.6672869473695755e-02 - <_> - - 0 -1 1592 4.0281258523464203e-02 - - 5.6996531784534454e-03 -5.3407847881317139e-01 - <_> - - 0 -1 1593 -2.3343730717897415e-02 - - -5.6592631340026855e-01 9.9596958607435226e-03 - <_> - - 0 -1 1594 1.0834979824721813e-02 - - -2.0727390423417091e-02 1.3920789957046509e-01 - <_> - - 0 -1 1595 -1.0692279785871506e-02 - - -3.9034500718116760e-01 1.4858629554510117e-02 - <_> - - 0 -1 1596 -3.7577420007437468e-03 - - 7.2709776461124420e-02 -5.5485241115093231e-02 - <_> - - 0 -1 1597 4.8496359959244728e-03 - - -4.4144079089164734e-02 1.4520399272441864e-01 - <_> - - 0 -1 1598 -2.0216009579598904e-03 - - -1.2228240072727203e-01 1.9589329138398170e-02 - <_> - - 0 -1 1599 -3.0792229808866978e-03 - - -1.3739609718322754e-01 4.4269159436225891e-02 - <_> - - 0 -1 1600 -3.0445810407400131e-02 - - 1.0403379797935486e-01 -6.3097096979618073e-02 - <_> - - 0 -1 1601 3.2141059637069702e-02 - - -3.4690480679273605e-02 1.9732339680194855e-01 - <_> - - 0 -1 1602 1.0678219841793180e-03 - - 3.1145870685577393e-02 -7.4491903185844421e-02 - <_> - - 0 -1 1603 5.7594738900661469e-02 - - -2.1155780181288719e-02 2.7825739979743958e-01 - <_> - - 0 -1 1604 -4.3557130265980959e-04 - - 7.0562250912189484e-02 -4.3941300362348557e-02 - <_> - - 0 -1 1605 2.6335280854254961e-03 - - 3.4343041479587555e-02 -1.9728440046310425e-01 - <_> - - 0 -1 1606 -1.8992539844475687e-04 - - 3.8183588534593582e-02 -3.9899230003356934e-02 - <_> - - 0 -1 1607 2.3401959333568811e-03 - - 4.3499860912561417e-02 -1.4296689629554749e-01 - <_> - - 0 -1 1608 2.2936260327696800e-02 - - -4.5327339321374893e-02 9.6657410264015198e-02 - <_> - - 0 -1 1609 -9.9645974114537239e-04 - - -1.3013899326324463e-01 4.2947601526975632e-02 - <_> - - 0 -1 1610 -1.6800489975139499e-03 - - 1.2129139900207520e-01 -4.8279300332069397e-02 - <_> - - 0 -1 1611 1.4437539903155994e-05 - - -7.6120197772979736e-02 8.3246052265167236e-02 - <_> - - 0 -1 1612 -2.4843189865350723e-02 - - -1.3380190730094910e-01 1.3220779597759247e-02 - <_> - - 0 -1 1613 -1.0164140257984400e-03 - - 1.0272929817438126e-01 -7.6802343130111694e-02 - <_> - - 0 -1 1614 -4.1430609417147934e-04 - - -1.1245259642601013e-01 3.0514910817146301e-02 - <_> - - 0 -1 1615 -6.7945162300020456e-04 - - -1.6325150430202484e-01 3.3536169677972794e-02 - <_> - - 0 -1 1616 1.9495520740747452e-02 - - 5.7650068774819374e-03 -4.5265421271324158e-01 - <_> - - 0 -1 1617 -5.3661768324673176e-03 - - 9.9718101322650909e-02 -5.6515909731388092e-02 - <_> - - 0 -1 1618 5.6726497132331133e-04 - - -6.0869559645652771e-02 7.9314343631267548e-02 - <_> - - 0 -1 1619 1.3020439445972443e-01 - - 8.3379819989204407e-03 -6.4657479524612427e-01 - <_> - - 0 -1 1620 -1.5517289936542511e-01 - - -1.9947460293769836e-01 2.8714579530060291e-03 - <_> - - 0 -1 1621 -1.0103389620780945e-02 - - -5.5504488945007324e-01 9.4422968104481697e-03 - <_> - - 0 -1 1622 -5.3147180005908012e-04 - - -1.1538010090589523e-01 2.5066599249839783e-02 - <_> - - 0 -1 1623 2.7250559069216251e-03 - - -3.1389288604259491e-02 1.6994899511337280e-01 - <_> - - 0 -1 1624 5.7027460570679978e-05 - - -5.3073558956384659e-02 5.3962681442499161e-02 - <_> - - 0 -1 1625 -1.5532029792666435e-02 - - 7.9827189445495605e-02 -6.7680947482585907e-02 - <_> - - 0 -1 1626 8.5362847894430161e-03 - - -7.0293392054736614e-03 3.0805149674415588e-01 - <_> - - 0 -1 1627 -3.7575151509372517e-05 - - 8.4663920104503632e-02 -7.6399482786655426e-02 - <_> - - 0 -1 1628 -8.6169335991144180e-03 - - -2.5099471211433411e-01 6.7693921737372875e-03 - <_> - - 0 -1 1629 -4.6231658197939396e-03 - - -2.1756580471992493e-01 2.6302969083189964e-02 - <_> - - 0 -1 1630 -3.0669190455228090e-03 - - 4.9040269106626511e-02 -2.9388900846242905e-02 - <_> - - 0 -1 1631 -2.0297299488447607e-04 - - 7.3129378259181976e-02 -7.3650099337100983e-02 - <_> - - 0 -1 1632 3.7411341327242553e-04 - - -5.7002428919076920e-02 1.1576510220766068e-01 - <_> - - 0 -1 1633 -3.6344649270176888e-03 - - -1.2033560127019882e-01 5.1267258822917938e-02 - <_> - - 0 -1 1634 -4.1708979755640030e-02 - - 1.7255930602550507e-01 -2.5525050237774849e-02 - <_> - - 0 -1 1635 -3.8403399288654327e-02 - - -5.6570559740066528e-01 9.7671225666999817e-03 - <_> - - 0 -1 1636 4.1329801082611084e-02 - - 1.8378839595243335e-03 -7.4326777458190918e-01 - <_> - - 0 -1 1637 5.1363147795200348e-03 - - -3.5778369754552841e-02 1.5663790702819824e-01 - <_> - - 0 -1 1638 -4.3387200683355331e-02 - - -7.4183559417724609e-01 7.4417991563677788e-03 - <_> - - 0 -1 1639 -3.9333879947662354e-01 - - -8.0782192945480347e-01 5.0263358280062675e-03 - <_> - - 0 -1 1640 -4.5350207947194576e-03 - - -1.0642389953136444e-01 1.5727840363979340e-02 - <_> - - 0 -1 1641 1.9919529557228088e-02 - - 6.0822288505733013e-03 -8.2916480302810669e-01 - <_> - - 0 -1 1642 2.3730589076876640e-02 - - 6.4080459997057915e-03 -1.6867209970951080e-01 - <_> - - 0 -1 1643 -2.8552979230880737e-02 - - 2.0902900397777557e-01 -2.5401420891284943e-02 - <_> - - 0 -1 1644 -1.0153220035135746e-02 - - -1.7431560158729553e-01 3.2279461622238159e-02 - <_> - - 0 -1 1645 -1.3743219897150993e-02 - - 1.4481510221958160e-01 -3.8015659898519516e-02 - <_> - - 0 -1 1646 -5.0018008798360825e-02 - - 1.2793619930744171e-01 -1.7024690285325050e-02 - <_> - - 0 -1 1647 7.3427949100732803e-03 - - -6.1966661363840103e-02 9.6776783466339111e-02 - <_> - - 0 -1 1648 -2.8415350243449211e-05 - - 3.8222339004278183e-02 -3.4578870981931686e-02 - <_> - - 0 -1 1649 -4.7856881283223629e-03 - - -2.3318560421466827e-01 2.6358589529991150e-02 - <_> - - 0 -1 1650 -2.5914890691637993e-02 - - -3.9864018559455872e-01 5.1441029645502567e-03 - <_> - - 0 -1 1651 -2.9252108652144670e-04 - - 7.1496248245239258e-02 -8.0430403351783752e-02 - <_> - - 0 -1 1652 -1.1403319658711553e-03 - - 5.4625019431114197e-02 -3.8924530148506165e-02 - <_> - - 0 -1 1653 8.4561068797484040e-04 - - 3.3605828881263733e-02 -1.6251370310783386e-01 - <_> - - 0 -1 1654 6.5537020564079285e-02 - - -4.3104059994220734e-02 1.2173459678888321e-01 - <_> - - 0 -1 1655 -1.4268089830875397e-01 - - -3.9792910218238831e-01 1.4490179717540741e-02 - <_> - - 0 -1 1656 -1.9059600308537483e-02 - - 1.4526650309562683e-01 -8.6782136932015419e-03 - <_> - - 0 -1 1657 -1.5515769831836224e-02 - - 1.1133140325546265e-01 -5.3697030991315842e-02 - <_> - - 0 -1 1658 1.3885410130023956e-01 - - -5.0534959882497787e-03 1.6789239645004272e-01 - <_> - - 0 -1 1659 1.7033860087394714e-01 - - 1.0047719813883305e-02 -6.4494568109512329e-01 - <_> - - 0 -1 1660 5.2646450698375702e-02 - - 3.6884329747408628e-03 -1.8775080144405365e-01 - <_> - - 0 -1 1661 -7.9300440847873688e-03 - - -3.2442069053649902e-01 1.6116160899400711e-02 - <_> - - 0 -1 1662 3.1593221426010132e-01 - - -1.2846199795603752e-02 4.5563331246376038e-01 - <_> - - 0 -1 1663 8.8319703936576843e-03 - - 5.2410300821065903e-02 -1.1414919793605804e-01 - <_> - - 0 -1 1664 -1.2973800301551819e-02 - - 2.3786480724811554e-01 -2.0313760265707970e-02 - <_> - - 0 -1 1665 3.0844169668853283e-03 - - 6.0380458831787109e-02 -1.0091140121221542e-01 - <_> - - 0 -1 1666 -2.7839969843626022e-02 - - 1.0084290057420731e-01 -1.0545670054852962e-02 - <_> - - 0 -1 1667 -3.0661900527775288e-03 - - -1.0459470003843307e-01 5.1240298897027969e-02 - <_> - - 0 -1 1668 -8.1280972808599472e-03 - - 1.5106280148029327e-01 -1.9644349813461304e-02 - <_> - - 0 -1 1669 3.8767930120229721e-02 - - 6.2415110878646374e-03 -8.3952087163925171e-01 - <_> - - 0 -1 1670 6.6339358687400818e-02 - - -2.3870199918746948e-02 2.2625799477100372e-01 - <_> - - 0 -1 1671 -2.9363119974732399e-03 - - -1.5040889382362366e-01 3.6693960428237915e-02 - <_> - - 0 -1 1672 -9.2636849731206894e-03 - - 1.2020699679851532e-01 -1.1293319985270500e-02 - <_> - - 0 -1 1673 1.3361490331590176e-02 - - 1.5341799706220627e-02 -3.5258570313453674e-01 - <_> - - 0 -1 1674 4.6068900264799595e-03 - - -4.5361459255218506e-02 5.5542398244142532e-02 - <_> - - 0 -1 1675 5.9639662504196167e-04 - - 3.2120391726493835e-02 -1.7702579498291016e-01 - <_> - - 0 -1 1676 1.5830510528758168e-04 - - 4.2900439351797104e-02 -8.0514959990978241e-02 - <_> - - 0 -1 1677 9.4060867559164762e-04 - - -3.9882160723209381e-02 1.3454659283161163e-01 - <_> - - 0 -1 1678 -3.8463119417428970e-02 - - -1. 1.4261410105973482e-03 - <_> - - 0 -1 1679 1.2119730236008763e-03 - - -1.0469900071620941e-01 6.5710946917533875e-02 - <_> - - 0 -1 1680 -5.8379401452839375e-03 - - 1.4715319871902466e-01 -6.5610289573669434e-02 - <_> - - 0 -1 1681 -1.4856379712000489e-03 - - -1.6367240250110626e-01 3.6001469939947128e-02 - <_> - - 0 -1 1682 -4.6175359748303890e-03 - - 1.8892879784107208e-01 -1.4663389883935452e-02 - <_> - - 0 -1 1683 1.9380920275580138e-04 - - -7.0864766836166382e-02 9.3604557216167450e-02 - <_> - - 0 -1 1684 -2.9661089647561312e-03 - - -6.1803489923477173e-01 8.6903069168329239e-03 - <_> - - 0 -1 1685 1.4307440324046183e-05 - - -9.0512536466121674e-02 5.9804238379001617e-02 - <_> - - 0 -1 1686 1.2180440127849579e-02 - - 2.3737740702927113e-03 -5.6064158678054810e-01 - <_> - - 0 -1 1687 -3.3536320552229881e-03 - - 2.5614398717880249e-01 -2.1437460556626320e-02 - <_> - - 0 -1 1688 -1.2697829864919186e-02 - - 2.7518770098686218e-01 -2.1501349285244942e-02 - <_> - - 0 -1 1689 -1.7751600593328476e-02 - - -4.6445640921592712e-01 1.5054970048367977e-02 - <_> - - 0 -1 1690 4.3673209846019745e-02 - - 3.3700480125844479e-03 -3.1441199779510498e-01 - <_> - - 0 -1 1691 4.5492161065340042e-02 - - 8.5049429908394814e-03 -6.4043509960174561e-01 - <_> - - 0 -1 1692 -1.0141120105981827e-01 - - -1. 1.4608280616812408e-04 - <_> - - 0 -1 1693 -2.7950519695878029e-02 - - 2.3282410204410553e-01 -2.4742539972066879e-02 - <_> - - 0 -1 1694 6.3734117429703474e-04 - - -6.5201878547668457e-02 5.8342281728982925e-02 - <_> - - 0 -1 1695 -3.2297719735652208e-03 - - -1.2013810127973557e-01 4.8295538872480392e-02 - <_> - - 0 -1 1696 -4.7359239310026169e-02 - - -6.5350711345672607e-01 2.3264330811798573e-03 - <_> - - 0 -1 1697 1.8326259450986981e-03 - - -5.5741731077432632e-02 9.5505326986312866e-02 - <_> - 279 - -9.5101702213287354e-01 - - <_> - - 0 -1 1698 6.9287262856960297e-02 - - -1.0325390100479126e-01 3.6703258752822876e-01 - <_> - - 0 -1 1699 -7.8862551599740982e-03 - - -7.5367718935012817e-01 6.1004441231489182e-03 - <_> - - 0 -1 1700 -8.6761467158794403e-02 - - 4.2298769950866699e-01 -4.8861160874366760e-02 - <_> - - 0 -1 1701 -4.6193759888410568e-02 - - 1.2829530239105225e-01 -6.2890656292438507e-02 - <_> - - 0 -1 1702 4.5601249439641833e-04 - - -1.4540119469165802e-01 8.9171208441257477e-02 - <_> - - 0 -1 1703 2.2151950001716614e-01 - - 1.0495079681277275e-02 -1.9372780621051788e-01 - <_> - - 0 -1 1704 -2.8609700166271068e-05 - - 8.9309170842170715e-02 -1.2048160284757614e-01 - <_> - - 0 -1 1705 1.1661860160529613e-02 - - -3.6442179232835770e-02 3.2719528675079346e-01 - <_> - - 0 -1 1706 -3.9292860776185989e-02 - - 2.3638220131397247e-01 -2.1902250126004219e-02 - <_> - - 0 -1 1707 4.7508609713986516e-04 - - -8.2093991339206696e-02 7.0899896323680878e-02 - <_> - - 0 -1 1708 2.7530049905180931e-02 - - -4.6179860830307007e-02 2.2978270053863525e-01 - <_> - - 0 -1 1709 2.4088330566883087e-02 - - 2.5007570162415504e-02 -3.6831110715866089e-01 - <_> - - 0 -1 1710 3.1142881198320538e-05 - - -1.5297169983386993e-01 7.4359253048896790e-02 - <_> - - 0 -1 1711 -3.8976089563220739e-03 - - -1.8000039458274841e-01 5.2392251789569855e-02 - <_> - - 0 -1 1712 -7.5943870469927788e-03 - - -1.9217739999294281e-01 4.8256490379571915e-02 - <_> - - 0 -1 1713 -3.4858959261327982e-03 - - 8.1301920115947723e-02 -6.6110998392105103e-02 - <_> - - 0 -1 1714 -3.5117838531732559e-02 - - -2.6033520698547363e-01 3.9632041007280350e-02 - <_> - - 0 -1 1715 2.2614879906177521e-01 - - -2.9896909371018410e-02 2.8666049242019653e-01 - <_> - - 0 -1 1716 1.9386729598045349e-01 - - -1.4692339755129069e-04 -7.1909208984375000e+03 - <_> - - 0 -1 1717 -4.5231450349092484e-03 - - -7.1015566587448120e-02 2.1436849609017372e-02 - <_> - - 0 -1 1718 -2.9855089262127876e-02 - - 1.1950010061264038e-01 -7.5768560171127319e-02 - <_> - - 0 -1 1719 -7.8530138125643134e-04 - - 1.5392230451107025e-01 -4.3703861534595490e-02 - <_> - - 0 -1 1720 -4.3314939830452204e-05 - - 9.2457972466945648e-02 -9.1111399233341217e-02 - <_> - - 0 -1 1721 9.0954294428229332e-03 - - -2.0682830363512039e-02 7.5521059334278107e-02 - <_> - - 0 -1 1722 -6.4024911262094975e-04 - - -2.0595400035381317e-01 4.3313179165124893e-02 - <_> - - 0 -1 1723 2.1848140750080347e-03 - - -2.3959070444107056e-02 1.3920339941978455e-01 - <_> - - 0 -1 1724 -6.5740908030420542e-04 - - 9.6214868128299713e-02 -8.4607146680355072e-02 - <_> - - 0 -1 1725 -2.6019528741016984e-04 - - -1.3024799525737762e-01 5.1234468817710876e-02 - <_> - - 0 -1 1726 -5.0155790522694588e-03 - - -5.7478731870651245e-01 1.1919369921088219e-02 - <_> - - 0 -1 1727 3.2060540979728103e-04 - - 4.5675579458475113e-02 -1.5236130356788635e-01 - <_> - - 0 -1 1728 8.5811875760555267e-03 - - -3.0357500538229942e-02 2.1575599908828735e-01 - <_> - - 0 -1 1729 1.1925109662115574e-02 - - -2.8248419985175133e-02 1.9682750105857849e-01 - <_> - - 0 -1 1730 -4.7097587957978249e-03 - - 8.2625426352024078e-02 -1.1231990158557892e-01 - <_> - - 0 -1 1731 -1.0695779928937554e-03 - - 3.4612610936164856e-02 -3.4769508987665176e-02 - <_> - - 0 -1 1732 -4.9490150995552540e-03 - - -1.8427060544490814e-01 4.2387481778860092e-02 - <_> - - 0 -1 1733 -6.7667837720364332e-04 - - 9.3548178672790527e-02 -8.7969146668910980e-02 - <_> - - 0 -1 1734 4.9757309257984161e-02 - - 2.7587689459323883e-02 -2.5638130307197571e-01 - <_> - - 0 -1 1735 -1.0812530526891351e-03 - - 1.6654999554157257e-01 -3.7381488829851151e-02 - <_> - - 0 -1 1736 5.0784139893949032e-03 - - 2.1401269361376762e-02 -3.2902011275291443e-01 - <_> - - 0 -1 1737 -1.4780629426240921e-03 - - 5.8206021785736084e-02 -2.8309479355812073e-02 - <_> - - 0 -1 1738 8.3614438772201538e-03 - - -5.0670899450778961e-02 1.6926950216293335e-01 - <_> - - 0 -1 1739 8.0310832709074020e-03 - - 2.3582600057125092e-02 -3.0375048518180847e-01 - <_> - - 0 -1 1740 -2.8671300242422149e-05 - - 7.7157698571681976e-02 -7.8943833708763123e-02 - <_> - - 0 -1 1741 -7.9513173550367355e-03 - - -1.3142600655555725e-01 3.4881640225648880e-02 - <_> - - 0 -1 1742 1.4974420191720128e-03 - - -5.1281169056892395e-02 1.2815970182418823e-01 - <_> - - 0 -1 1743 -2.2107020486146212e-03 - - 7.8908361494541168e-02 -3.5110998898744583e-02 - <_> - - 0 -1 1744 3.3375908969901502e-04 - - -7.3800027370452881e-02 9.0184502303600311e-02 - <_> - - 0 -1 1745 -1.5214539598673582e-03 - - -1.4592529833316803e-01 4.7654949128627777e-02 - <_> - - 0 -1 1746 4.4929070281796157e-04 - - -7.0153526961803436e-02 9.5465831458568573e-02 - <_> - - 0 -1 1747 1.5836360398679972e-03 - - 2.8301160782575607e-02 -1.4393569529056549e-01 - <_> - - 0 -1 1748 -1.6235290095210075e-02 - - 1.8387019634246826e-01 -3.6908861249685287e-02 - <_> - - 0 -1 1749 -3.4098308533430099e-02 - - 1.6756339371204376e-01 -2.5717439129948616e-02 - <_> - - 0 -1 1750 -2.9732889379374683e-04 - - -1.3297170400619507e-01 4.8040248453617096e-02 - <_> - - 0 -1 1751 1.3863020285498351e-05 - - -4.4619798660278320e-02 4.9105420708656311e-02 - <_> - - 0 -1 1752 4.7123921103775501e-04 - - 4.3268211185932159e-02 -1.6172820329666138e-01 - <_> - - 0 -1 1753 -4.1129379533231258e-03 - - 2.1532170474529266e-01 -2.2212410345673561e-02 - <_> - - 0 -1 1754 8.4233487723395228e-04 - - -3.9122831076383591e-02 1.6345480084419250e-01 - <_> - - 0 -1 1755 1.3869360554963350e-03 - - 4.0814429521560669e-02 -2.4761269986629486e-01 - <_> - - 0 -1 1756 2.3325090296566486e-03 - - 3.6428030580282211e-02 -1.5850290656089783e-01 - <_> - - 0 -1 1757 9.2067092657089233e-02 - - -3.6511659622192383e-02 9.4252876937389374e-02 - <_> - - 0 -1 1758 -6.6990442574024200e-02 - - 3.1247970461845398e-01 -2.1145220845937729e-02 - <_> - - 0 -1 1759 -2.0284320414066315e-01 - - -1.4556419849395752e-01 3.4133061766624451e-02 - <_> - - 0 -1 1760 -1.9777350127696991e-01 - - 2.0860530436038971e-01 -3.0937839299440384e-02 - <_> - - 0 -1 1761 2.9955860227346420e-03 - - 5.1478169858455658e-02 -9.0642452239990234e-02 - <_> - - 0 -1 1762 -1.3588789850473404e-02 - - -1.5979449450969696e-01 4.2713351547718048e-02 - <_> - - 0 -1 1763 -1.0466199601069093e-03 - - 1.0747960209846497e-01 -5.8228868991136551e-02 - <_> - - 0 -1 1764 2.8862239560112357e-04 - - -7.2858572006225586e-02 1.0977680236101151e-01 - <_> - - 0 -1 1765 -2.7921080589294434e-02 - - -2.4890719354152679e-01 8.8059734553098679e-03 - <_> - - 0 -1 1766 -1.1447289958596230e-02 - - 1.5152229368686676e-01 -3.8170240819454193e-02 - <_> - - 0 -1 1767 -3.3761549275368452e-03 - - 1.1309570074081421e-01 -5.5087108165025711e-02 - <_> - - 0 -1 1768 -5.2940822206437588e-03 - - -1.5518580377101898e-01 3.7175498902797699e-02 - <_> - - 0 -1 1769 6.9440458901226521e-04 - - -3.9365228265523911e-02 1.3071919977664948e-01 - <_> - - 0 -1 1770 1.4813370398769621e-05 - - -7.1707822382450104e-02 7.4765637516975403e-02 - <_> - - 0 -1 1771 -1.3590740272775292e-03 - - -1.2917560338973999e-01 4.3069899082183838e-02 - <_> - - 0 -1 1772 6.9750571856275201e-04 - - -4.3258938938379288e-02 1.4512489736080170e-01 - <_> - - 0 -1 1773 -4.6163110528141260e-04 - - 9.1437846422195435e-02 -5.3290210664272308e-02 - <_> - - 0 -1 1774 -3.0486299656331539e-03 - - -2.1486389636993408e-01 2.7408670634031296e-02 - <_> - - 0 -1 1775 -3.3797100186347961e-03 - - 1.0764840245246887e-01 -4.3844230473041534e-02 - <_> - - 0 -1 1776 -8.4170768968760967e-04 - - -1.9803969562053680e-01 2.9308119788765907e-02 - <_> - - 0 -1 1777 1.0257579851895571e-03 - - -7.4067540466785431e-02 1.2488970160484314e-01 - <_> - - 0 -1 1778 8.0574918538331985e-03 - - 2.0815389230847359e-02 -2.6045981049537659e-01 - <_> - - 0 -1 1779 -8.3471642574295402e-04 - - 8.7164878845214844e-02 -6.6393643617630005e-02 - <_> - - 0 -1 1780 -1.9537750631570816e-04 - - 8.0834336578845978e-02 -6.8215869367122650e-02 - <_> - - 0 -1 1781 -6.3116732053458691e-03 - - -7.2064602375030518e-01 3.9312788285315037e-03 - <_> - - 0 -1 1782 1.4718360034748912e-04 - - 5.1508098840713501e-02 -1.0907209664583206e-01 - <_> - - 0 -1 1783 2.8240380343049765e-03 - - -3.5113781690597534e-02 8.6087152361869812e-02 - <_> - - 0 -1 1784 -1.0794559493660927e-03 - - 8.6356408894062042e-02 -6.2143780291080475e-02 - <_> - - 0 -1 1785 4.7946680337190628e-02 - - 1.2823230354115367e-03 -9.1077202558517456e-01 - <_> - - 0 -1 1786 2.9353320132941008e-04 - - -7.4236482381820679e-02 9.5342949032783508e-02 - <_> - - 0 -1 1787 3.4700211137533188e-02 - - 2.1481830626726151e-03 -8.7691652774810791e-01 - <_> - - 0 -1 1788 -2.0402260124683380e-02 - - -4.9989640712738037e-01 9.8876487463712692e-03 - <_> - - 0 -1 1789 1.9776409026235342e-03 - - -4.6828888356685638e-02 5.6408070027828217e-02 - <_> - - 0 -1 1790 -6.9213248789310455e-03 - - -1.9620729982852936e-01 2.7109440416097641e-02 - <_> - - 0 -1 1791 4.3053150177001953e-02 - - -1.6171690076589584e-02 1.1537670344114304e-01 - <_> - - 0 -1 1792 4.0770901250652969e-05 - - -7.2369873523712158e-02 7.8648090362548828e-02 - <_> - - 0 -1 1793 -1.1116759851574898e-02 - - 1.7709450423717499e-01 -2.6758000254631042e-02 - <_> - - 0 -1 1794 2.2260710597038269e-02 - - 4.2804859578609467e-02 -1.3306209444999695e-01 - <_> - - 0 -1 1795 2.2397749125957489e-02 - - -8.4760002791881561e-03 2.0141950249671936e-01 - <_> - - 0 -1 1796 -2.2704310249537230e-03 - - 1.0329409688711166e-01 -5.9588078409433365e-02 - <_> - - 0 -1 1797 8.6120571941137314e-03 - - 4.4897329062223434e-02 -1.5256009995937347e-01 - <_> - - 0 -1 1798 4.2043669964186847e-05 - - -7.5515180826187134e-02 7.4329316616058350e-02 - <_> - - 0 -1 1799 -2.6688739657402039e-02 - - -9.0282207727432251e-01 2.5531589053571224e-03 - <_> - - 0 -1 1800 -1.2111039832234383e-03 - - 8.7331131100654602e-02 -6.1327978968620300e-02 - <_> - - 0 -1 1801 6.6678058356046677e-03 - - 1.2144420295953751e-02 -1.7702829837799072e-01 - <_> - - 0 -1 1802 5.1054819487035275e-03 - - -5.2553549408912659e-02 1.0995060205459595e-01 - <_> - - 0 -1 1803 -4.3119120527990162e-04 - - -1.1329609900712967e-01 2.7260279282927513e-02 - <_> - - 0 -1 1804 9.0407149400562048e-04 - - -7.4957557022571564e-02 7.0602118968963623e-02 - <_> - - 0 -1 1805 -4.2526099085807800e-01 - - -2.2629819810390472e-01 1.2958800420165062e-02 - <_> - - 0 -1 1806 -1.8204950029030442e-03 - - 2.1072770655155182e-01 -2.8397979214787483e-02 - <_> - - 0 -1 1807 1.6079390048980713e-01 - - -1.1575119569897652e-02 4.7614181041717529e-01 - <_> - - 0 -1 1808 1.7258119769394398e-03 - - 4.1094399988651276e-02 -1.4275330305099487e-01 - <_> - - 0 -1 1809 -1.4840350486338139e-03 - - -1.6670119762420654e-01 3.2535050064325333e-02 - <_> - - 0 -1 1810 7.1747507899999619e-03 - - 7.0819728076457977e-02 -8.9106030762195587e-02 - <_> - - 0 -1 1811 -8.2580056041479111e-03 - - 1.0304500162601471e-01 -3.3432789146900177e-02 - <_> - - 0 -1 1812 -6.7563762422651052e-04 - - 9.2545412480831146e-02 -6.2600679695606232e-02 - <_> - - 0 -1 1813 1.5063700266182423e-03 - - 3.4287590533494949e-02 -5.2697051316499710e-02 - <_> - - 0 -1 1814 6.4832060597836971e-03 - - -7.9551890492439270e-02 8.3565287292003632e-02 - <_> - - 0 -1 1815 1.5010650269687176e-02 - - -2.3017060011625290e-02 2.8918200731277466e-01 - <_> - - 0 -1 1816 2.3918910883367062e-03 - - 2.2861290723085403e-02 -2.8804329037666321e-01 - <_> - - 0 -1 1817 1.8441990017890930e-02 - - 5.6940279901027679e-03 -4.0642881393432617e-01 - <_> - - 0 -1 1818 1.5894079580903053e-02 - - 9.7483089193701744e-03 -5.4180818796157837e-01 - <_> - - 0 -1 1819 -6.0511790215969086e-03 - - 5.1702819764614105e-02 -1.8666969612240791e-02 - <_> - - 0 -1 1820 -1.7308069393038750e-02 - - -6.4874321222305298e-01 8.5127726197242737e-03 - <_> - - 0 -1 1821 -3.0910979956388474e-02 - - -3.5174548625946045e-01 1.5809880569577217e-03 - <_> - - 0 -1 1822 -9.6330260857939720e-03 - - 1.6103549301624298e-01 -3.5562090575695038e-02 - <_> - - 0 -1 1823 -3.8023660890758038e-03 - - -1.0701960325241089e-01 2.3216780275106430e-02 - <_> - - 0 -1 1824 -1.1252719908952713e-01 - - -8.6782878637313843e-01 5.9430040419101715e-03 - <_> - - 0 -1 1825 -8.0329097807407379e-02 - - 2.3479300737380981e-01 -2.4581069126725197e-02 - <_> - - 0 -1 1826 -4.8303799703717232e-03 - - -2.0043809711933136e-01 2.9466770589351654e-02 - <_> - - 0 -1 1827 5.9475651942193508e-03 - - -4.1612159460783005e-02 1.0927669703960419e-01 - <_> - - 0 -1 1828 -1.5954700112342834e-01 - - -9.2996472120285034e-01 5.9394179843366146e-03 - <_> - - 0 -1 1829 -6.2117610126733780e-02 - - -1. -9.8518899176269770e-04 - <_> - - 0 -1 1830 -1.6722660511732101e-02 - - 2.0358540117740631e-01 -2.6677429676055908e-02 - <_> - - 0 -1 1831 2.5412259856238961e-04 - - 3.5772711038589478e-02 -1.1497990041971207e-01 - <_> - - 0 -1 1832 -4.4589709490537643e-02 - - -8.2331168651580811e-01 5.8186561800539494e-03 - <_> - - 0 -1 1833 5.0029508769512177e-02 - - 6.5201208926737309e-03 -6.0308629274368286e-01 - <_> - - 0 -1 1834 2.7316421270370483e-01 - - 1.0105229914188385e-02 -4.4744080305099487e-01 - <_> - - 0 -1 1835 1.9679760560393333e-02 - - 7.3466659523546696e-03 -2.7913179993629456e-01 - <_> - - 0 -1 1836 -2.6382820680737495e-02 - - -6.0314857959747314e-01 7.7110212296247482e-03 - <_> - - 0 -1 1837 -6.1990451067686081e-03 - - 1.5202729403972626e-01 -2.0159959793090820e-02 - <_> - - 0 -1 1838 9.0291406959295273e-03 - - -2.3990979418158531e-02 2.4176830053329468e-01 - <_> - - 0 -1 1839 -1.3173219747841358e-02 - - -4.7442790865898132e-01 6.2788990326225758e-03 - <_> - - 0 -1 1840 9.9061578512191772e-03 - - 1.1161520145833492e-02 -5.1541870832443237e-01 - <_> - - 0 -1 1841 9.6910722553730011e-02 - - 1.9756879657506943e-02 -1.1220339685678482e-01 - <_> - - 0 -1 1842 -1.2751290202140808e-01 - - -1.1650139838457108e-01 4.3513149023056030e-02 - <_> - - 0 -1 1843 7.3522380553185940e-03 - - -1.5223789960145950e-02 1.2865990400314331e-01 - <_> - - 0 -1 1844 -8.0287149176001549e-03 - - 1.0930059850215912e-01 -5.2379939705133438e-02 - <_> - - 0 -1 1845 6.0138270258903503e-02 - - 5.8138328604400158e-03 -1.7840869724750519e-01 - <_> - - 0 -1 1846 -2.4024039506912231e-02 - - 1.8859949707984924e-01 -2.9658870771527290e-02 - <_> - - 0 -1 1847 -1.6334449872374535e-02 - - -1.3187359273433685e-01 2.2140020504593849e-02 - <_> - - 0 -1 1848 4.8175701522268355e-05 - - -7.6274849474430084e-02 7.0715323090553284e-02 - <_> - - 0 -1 1849 1.1565199820324779e-03 - - 4.4213209301233292e-02 -1.1717999726533890e-01 - <_> - - 0 -1 1850 2.5506340898573399e-03 - - -3.0667930841445923e-02 1.8196919560432434e-01 - <_> - - 0 -1 1851 -6.5251272171735764e-03 - - -1.1443450301885605e-01 3.5183969885110855e-02 - <_> - - 0 -1 1852 6.6153168678283691e-02 - - -2.7254449203610420e-02 1.9241680204868317e-01 - <_> - - 0 -1 1853 4.2829991434700787e-04 - - -6.3267558813095093e-02 8.3096623420715332e-02 - <_> - - 0 -1 1854 -2.9148950488888659e-05 - - 5.9166900813579559e-02 -9.1467723250389099e-02 - <_> - - 0 -1 1855 1.3398390365182422e-05 - - -6.2772221863269806e-02 7.6751098036766052e-02 - <_> - - 0 -1 1856 -3.1628899159841239e-04 - - 1.0652689635753632e-01 -4.8427011817693710e-02 - <_> - - 0 -1 1857 4.7857520985417068e-04 - - 3.1358771026134491e-02 -1.3498780131340027e-01 - <_> - - 0 -1 1858 5.3419070318341255e-03 - - -5.9767518192529678e-02 9.7649917006492615e-02 - <_> - - 0 -1 1859 -4.8007210716605186e-03 - - 5.7684548199176788e-02 -3.3368781208992004e-02 - <_> - - 0 -1 1860 -2.5623580440878868e-03 - - 8.2448042929172516e-02 -6.7134477198123932e-02 - <_> - - 0 -1 1861 -7.8163482248783112e-04 - - -1.3109140098094940e-01 2.2550739347934723e-02 - <_> - - 0 -1 1862 -5.9796901041409001e-05 - - 7.8017666935920715e-02 -7.2233237326145172e-02 - <_> - - 0 -1 1863 -1.4955470105633140e-03 - - -1.7849470674991608e-01 2.6512440294027328e-02 - <_> - - 0 -1 1864 -1.0731930285692215e-01 - - -5.5978351831436157e-01 7.9387873411178589e-03 - <_> - - 0 -1 1865 -1.1570350266993046e-02 - - 3.2721909880638123e-01 -1.5334350056946278e-02 - <_> - - 0 -1 1866 1.2698080390691757e-03 - - -5.2673868834972382e-02 9.5417343080043793e-02 - <_> - - 0 -1 1867 -2.1792970073875040e-04 - - -6.7746378481388092e-02 3.5121351480484009e-02 - <_> - - 0 -1 1868 2.7424149448052049e-04 - - -7.2451137006282806e-02 6.9099687039852142e-02 - <_> - - 0 -1 1869 -1.4675620150228497e-05 - - 6.1696369200944901e-02 -6.3419573009014130e-02 - <_> - - 0 -1 1870 4.5412341132760048e-03 - - 8.6941216140985489e-03 -5.6155169010162354e-01 - <_> - - 0 -1 1871 -1.7456309869885445e-03 - - 1.2214440107345581e-01 -4.3239079415798187e-02 - <_> - - 0 -1 1872 2.1515421103686094e-03 - - 4.2700000107288361e-02 -1.3580679893493652e-01 - <_> - - 0 -1 1873 2.5772679597139359e-02 - - -6.7501049488782883e-03 2.0923960208892822e-01 - <_> - - 0 -1 1874 -2.2853460162878036e-02 - - -6.3482582569122314e-01 7.7631678432226181e-03 - <_> - - 0 -1 1875 1.0445450246334076e-01 - - 8.2119172438979149e-03 -1.1739929765462875e-01 - <_> - - 0 -1 1876 3.4289199393242598e-03 - - -1.9393250346183777e-02 2.5361278653144836e-01 - <_> - - 0 -1 1877 -4.4450531277107075e-05 - - 3.0491659417748451e-02 -3.3532731235027313e-02 - <_> - - 0 -1 1878 -1.3084859820082784e-03 - - -1.2543289363384247e-01 4.2175199836492538e-02 - <_> - - 0 -1 1879 -8.2920619752258062e-04 - - 8.8702872395515442e-02 -5.9949461370706558e-02 - <_> - - 0 -1 1880 -1.1649610241875052e-03 - - -1.2260919809341431e-01 3.9777249097824097e-02 - <_> - - 0 -1 1881 -1.1792209697887301e-03 - - 4.8803780227899551e-02 -3.1617261469364166e-02 - <_> - - 0 -1 1882 1.4045130228623748e-03 - - -6.8578563630580902e-02 1.0806819796562195e-01 - <_> - - 0 -1 1883 8.1535786390304565e-02 - - 7.5162621214985847e-03 -1.9914560019969940e-01 - <_> - - 0 -1 1884 1.3402649760246277e-01 - - 1.1346439830958843e-02 -4.2387020587921143e-01 - <_> - - 0 -1 1885 5.1846381276845932e-02 - - -2.4805670604109764e-02 1.0611870139837265e-01 - <_> - - 0 -1 1886 2.2436599829234183e-04 - - 4.9879040569067001e-02 -1.0322760045528412e-01 - <_> - - 0 -1 1887 2.0504279434680939e-01 - - 1.2941809836775064e-03 -7.3124569654464722e-01 - <_> - - 0 -1 1888 4.9221020191907883e-02 - - -3.2314330339431763e-02 1.6341570019721985e-01 - <_> - - 0 -1 1889 -2.7643840294331312e-03 - - -7.2709262371063232e-02 2.9063390567898750e-02 - <_> - - 0 -1 1890 1.7601479776203632e-03 - - 7.0655502378940582e-02 -9.9655970931053162e-02 - <_> - - 0 -1 1891 -1.5338409692049026e-02 - - 1.0849429666996002e-01 -6.5918280743062496e-03 - <_> - - 0 -1 1892 1.3629199936985970e-02 - - -3.1854670494794846e-02 1.7387719452381134e-01 - <_> - - 0 -1 1893 -1.4116940292296931e-05 - - 7.0969909429550171e-02 -7.6373629271984100e-02 - <_> - - 0 -1 1894 -1.5539459884166718e-02 - - -2.2922930121421814e-01 2.2228740155696869e-02 - <_> - - 0 -1 1895 9.2819044366478920e-03 - - -4.8776720650494099e-03 2.0902079343795776e-01 - <_> - - 0 -1 1896 -1.4155480130284559e-05 - - 6.7757986485958099e-02 -7.2306759655475616e-02 - <_> - - 0 -1 1897 -8.7379867909476161e-04 - - -1.3424280285835266e-01 3.0613569542765617e-02 - <_> - - 0 -1 1898 -1.0997530072927475e-02 - - 3.0229330062866211e-01 -1.6519390046596527e-02 - <_> - - 0 -1 1899 6.6538681276142597e-03 - - 6.3065579161047935e-03 -6.2725418806076050e-01 - <_> - - 0 -1 1900 -1.3275049859657884e-03 - - -1.7980930209159851e-01 2.7482420206069946e-02 - <_> - - 0 -1 1901 -9.1509369667619467e-04 - - 8.2379557192325592e-02 -4.4698160141706467e-02 - <_> - - 0 -1 1902 3.7874261033721268e-04 - - 3.9099998772144318e-02 -1.2113759666681290e-01 - <_> - - 0 -1 1903 3.1279059476219118e-04 - - -4.0467869490385056e-02 8.0922096967697144e-02 - <_> - - 0 -1 1904 -4.4098051148466766e-04 - - -1.3570870459079742e-01 3.4640021622180939e-02 - <_> - - 0 -1 1905 -2.3545681033283472e-03 - - 1.8316949903964996e-01 -6.5944390371441841e-03 - <_> - - 0 -1 1906 -1.4042760085430928e-05 - - 7.1066640317440033e-02 -7.2712719440460205e-02 - <_> - - 0 -1 1907 -3.4967949613928795e-03 - - 2.8079178929328918e-01 -2.0121440291404724e-02 - <_> - - 0 -1 1908 3.8677681004628539e-05 - - -7.7483072876930237e-02 6.1632208526134491e-02 - <_> - - 0 -1 1909 4.0409551002085209e-03 - - -2.8791289776563644e-02 1.0144700109958649e-01 - <_> - - 0 -1 1910 4.3885988998226821e-04 - - 4.4285491108894348e-02 -1.0667510330677032e-01 - <_> - - 0 -1 1911 2.8847819194197655e-03 - - -3.0110429972410202e-02 1.9770030677318573e-01 - <_> - - 0 -1 1912 -3.6182960029691458e-03 - - -1.5853509306907654e-01 3.1248699873685837e-02 - <_> - - 0 -1 1913 -7.4127241969108582e-02 - - 2.6847139000892639e-01 -7.5118849053978920e-03 - <_> - - 0 -1 1914 -1.7701960168778896e-03 - - 7.0348329842090607e-02 -7.6661907136440277e-02 - <_> - - 0 -1 1915 -2.2964610159397125e-01 - - -1.7674639821052551e-01 2.6304980739951134e-02 - <_> - - 0 -1 1916 -8.4374961443245411e-04 - - 1.2280090153217316e-01 -3.9470311254262924e-02 - <_> - - 0 -1 1917 6.2283687293529510e-04 - - -5.9402100741863251e-02 1.0227580368518829e-01 - <_> - - 0 -1 1918 3.7774170050397515e-04 - - -6.5731868147850037e-02 9.4461776316165924e-02 - <_> - - 0 -1 1919 -9.1600026935338974e-03 - - -2.3604519665241241e-01 8.3174835890531540e-03 - <_> - - 0 -1 1920 -3.9922599680721760e-03 - - -1.6145500540733337e-01 3.2346289604902267e-02 - <_> - - 0 -1 1921 -3.3894251100718975e-03 - - 2.5536310672760010e-01 -1.6282750293612480e-02 - <_> - - 0 -1 1922 2.0170630887150764e-03 - - -3.3730961382389069e-02 1.4327409863471985e-01 - <_> - - 0 -1 1923 6.0314318398013711e-04 - - 2.0838299766182899e-02 -8.0766737461090088e-02 - <_> - - 0 -1 1924 -3.5625399323180318e-04 - - -1.1648300290107727e-01 4.1728250682353973e-02 - <_> - - 0 -1 1925 -2.3485629935748875e-04 - - 5.0236988812685013e-02 -3.5763539373874664e-02 - <_> - - 0 -1 1926 4.1733398102223873e-03 - - 6.2450668774545193e-03 -7.5315088033676147e-01 - <_> - - 0 -1 1927 -1.5104680322110653e-02 - - -3.7117061018943787e-01 3.5868769045919180e-03 - <_> - - 0 -1 1928 -3.3432588679715991e-04 - - 7.3129981756210327e-02 -6.3462227582931519e-02 - <_> - - 0 -1 1929 9.2645268887281418e-04 - - -2.8360379859805107e-02 8.1202872097492218e-02 - <_> - - 0 -1 1930 -1.6456949524581432e-03 - - -1.4563870429992676e-01 3.3951658755540848e-02 - <_> - - 0 -1 1931 -1.2158240424469113e-03 - - 4.5882221311330795e-02 -5.7257469743490219e-02 - <_> - - 0 -1 1932 4.9246400594711304e-03 - - -4.3981380760669708e-02 1.1510019749403000e-01 - <_> - - 0 -1 1933 -6.6806487739086151e-03 - - 7.1484349668025970e-02 -7.7606171369552612e-02 - <_> - - 0 -1 1934 -4.2396718636155128e-03 - - 1.2487599998712540e-01 -4.1228380054235458e-02 - <_> - - 0 -1 1935 5.9024091809988022e-02 - - 8.7620420381426811e-03 -2.3974700272083282e-01 - <_> - - 0 -1 1936 -8.4677420090883970e-04 - - -1.6061230003833771e-01 2.9858700931072235e-02 - <_> - - 0 -1 1937 3.0823849374428391e-04 - - -4.2748618870973587e-02 6.5159931778907776e-02 - <_> - - 0 -1 1938 -1.5910139773041010e-03 - - 1.0174900293350220e-01 -5.2041478455066681e-02 - <_> - - 0 -1 1939 6.5938353538513184e-02 - - -8.7185706943273544e-03 1.2778709828853607e-01 - <_> - - 0 -1 1940 6.9909919984638691e-03 - - 2.1958060562610626e-02 -2.2432990372180939e-01 - <_> - - 0 -1 1941 -3.7245001643896103e-02 - - 1.0239789634943008e-01 -1.2216970324516296e-02 - <_> - - 0 -1 1942 -7.1809038519859314e-02 - - -1.4630299806594849e-01 3.5678751766681671e-02 - <_> - - 0 -1 1943 1.2186600361019373e-03 - - -3.0746009200811386e-02 9.0086430311203003e-02 - <_> - - 0 -1 1944 -1.4185549844114576e-05 - - 7.2184130549430847e-02 -8.0784916877746582e-02 - <_> - - 0 -1 1945 -4.7359269112348557e-02 - - -5.1488220691680908e-02 8.3303246647119522e-03 - <_> - - 0 -1 1946 -9.9122747778892517e-02 - - 7.4836689233779907e-01 -7.0312391035258770e-03 - <_> - - 0 -1 1947 6.5616220235824585e-03 - - 2.9704109765589237e-03 -8.6616927385330200e-01 - <_> - - 0 -1 1948 1.4554029803548474e-05 - - -6.6417336463928223e-02 6.9943219423294067e-02 - <_> - - 0 -1 1949 -1.4783379810978658e-05 - - 4.8168119043111801e-02 -4.5541871339082718e-02 - <_> - - 0 -1 1950 3.4434479312039912e-04 - - 3.9564359933137894e-02 -1.3817049562931061e-01 - <_> - - 0 -1 1951 -1.5220089815557003e-02 - - 5.6425478309392929e-02 -3.1832590699195862e-02 - <_> - - 0 -1 1952 -9.9003070499747992e-04 - - 8.4525726735591888e-02 -6.0871038585901260e-02 - <_> - - 0 -1 1953 5.0106819253414869e-04 - - -7.4269689619541168e-02 7.5144886970520020e-02 - <_> - - 0 -1 1954 2.1565580368041992e-01 - - 1.3532330282032490e-02 -3.6944881081581116e-01 - <_> - - 0 -1 1955 4.6514578163623810e-02 - - -3.2852739095687866e-02 7.5578376650810242e-02 - <_> - - 0 -1 1956 -3.3291958272457123e-02 - - 9.8225638270378113e-02 -8.4359258413314819e-02 - <_> - - 0 -1 1957 -3.7740701436996460e-01 - - -4.0594369173049927e-01 6.7579401656985283e-03 - <_> - - 0 -1 1958 1.3958640396595001e-02 - - 1.4477419666945934e-02 -3.5323330760002136e-01 - <_> - - 0 -1 1959 -1.0354929603636265e-02 - - 4.9957130104303360e-02 -3.3316690474748611e-02 - <_> - - 0 -1 1960 -3.5259810090065002e-01 - - -8.8354581594467163e-01 5.2982778288424015e-03 - <_> - - 0 -1 1961 -2.5497689843177795e-02 - - -5.0059622526168823e-01 3.3401530236005783e-03 - <_> - - 0 -1 1962 -1.3579069636762142e-02 - - -7.9210782051086426e-01 5.2573881112039089e-03 - <_> - - 0 -1 1963 -6.4325397834181786e-03 - - 2.2479079663753510e-01 -1.2490210123360157e-02 - <_> - - 0 -1 1964 1.7743050120770931e-03 - - 3.6416389048099518e-02 -1.2674359977245331e-01 - <_> - - 0 -1 1965 -2.8727769386023283e-03 - - 2.6288139820098877e-01 -1.4163469895720482e-02 - <_> - - 0 -1 1966 9.7850046586245298e-05 - - -6.3954651355743408e-02 8.0631032586097717e-02 - <_> - - 0 -1 1967 1.7374150454998016e-02 - - 2.8990509454160929e-03 -4.2226800322532654e-01 - <_> - - 0 -1 1968 -1.4066740404814482e-03 - - 1.0372389853000641e-01 -4.6474151313304901e-02 - <_> - - 0 -1 1969 -1.6724130138754845e-02 - - -2.8448548913002014e-01 9.2373117804527283e-03 - <_> - - 0 -1 1970 -1.0558520443737507e-02 - - -1.0547369718551636e-01 5.2889660000801086e-02 - <_> - - 0 -1 1971 1.5293300151824951e-01 - - 3.2300320453941822e-03 -4.7545519471168518e-01 - <_> - - 0 -1 1972 7.7029820531606674e-03 - - -6.0984298586845398e-02 8.6567848920822144e-02 - <_> - - 0 -1 1973 1.4633269980549812e-02 - - -1.7254069447517395e-02 7.3769517242908478e-02 - <_> - - 0 -1 1974 -5.9058261103928089e-03 - - 1.0765349864959717e-01 -5.8216858655214310e-02 - <_> - - 0 -1 1975 -8.6052267579361796e-04 - - -2.4705569446086884e-01 3.9832849055528641e-02 - <_> - - 0 -1 1976 1.3982819837110583e-05 - - -6.8481527268886566e-02 7.2419390082359314e-02 - <_> - 292 - -8.8979828357696533e-01 - - <_> - - 0 -1 1977 -2.2767020389437675e-02 - - 3.7855881452560425e-01 -7.4579752981662750e-02 - <_> - - 0 -1 1978 1.3848500326275826e-02 - - -3.8395948708057404e-02 1.5865300595760345e-01 - <_> - - 0 -1 1979 1.6501640900969505e-02 - - -4.0356989949941635e-02 3.1940919160842896e-01 - <_> - - 0 -1 1980 4.9945950508117676e-02 - - 1.3500959612429142e-03 -7.1901618957519531e+01 - <_> - - 0 -1 1981 2.3085280554369092e-04 - - -1.5948350727558136e-01 6.2301728874444962e-02 - <_> - - 0 -1 1982 -3.2616918906569481e-04 - - 1.1485809832811356e-01 -8.2625932991504669e-02 - <_> - - 0 -1 1983 2.0700939930975437e-03 - - 9.9244236946105957e-02 -1.8762749433517456e-01 - <_> - - 0 -1 1984 3.6466990131884813e-03 - - -5.9486821293830872e-02 2.3915329948067665e-02 - <_> - - 0 -1 1985 4.3258240818977356e-01 - - -3.5108299925923347e-03 -8.8022760009765625e+02 - <_> - - 0 -1 1986 -1.5135499835014343e-01 - - 2.1386210620403290e-01 -3.7147529423236847e-02 - <_> - - 0 -1 1987 1.4268080121837556e-05 - - -7.8762777149677277e-02 1.1088649928569794e-01 - <_> - - 0 -1 1988 4.5837109792046249e-04 - - 3.1337808817625046e-02 -1.2781299650669098e-01 - <_> - - 0 -1 1989 8.5760722868144512e-04 - - -1.1430999636650085e-01 8.4779530763626099e-02 - <_> - - 0 -1 1990 -1.3306170003488660e-03 - - 1.2380199879407883e-01 -6.3108362257480621e-02 - <_> - - 0 -1 1991 -7.8581267734989524e-04 - - 1.4474479854106903e-01 -6.6131599247455597e-02 - <_> - - 0 -1 1992 2.9203219339251518e-02 - - 1.5835119411349297e-02 -2.7886340022087097e-01 - <_> - - 0 -1 1993 -3.3595840795896947e-04 - - -1.3980509340763092e-01 5.2156690508127213e-02 - <_> - - 0 -1 1994 -4.9088441301137209e-04 - - -1.6182370483875275e-01 5.2929759025573730e-02 - <_> - - 0 -1 1995 -1.0883460193872452e-01 - - 2.0574440062046051e-01 -4.0060799568891525e-02 - <_> - - 0 -1 1996 -3.5458389669656754e-02 - - 1.0138759762048721e-01 -8.3750143647193909e-02 - <_> - - 0 -1 1997 8.7126181460916996e-04 - - 4.4440608471632004e-02 -1.9689509272575378e-01 - <_> - - 0 -1 1998 -1.3993269763886929e-02 - - -2.2459620237350464e-01 1.2766630388796329e-02 - <_> - - 0 -1 1999 -2.2845380008220673e-03 - - 7.6802432537078857e-02 -9.2134661972522736e-02 - <_> - - 0 -1 2000 -1.0183329693973064e-02 - - 1.1236850172281265e-01 -5.3973980247974396e-02 - <_> - - 0 -1 2001 3.5436619073152542e-03 - - 4.4633179903030396e-02 -1.4774739742279053e-01 - <_> - - 0 -1 2002 2.3777359456289560e-04 - - -8.6299903690814972e-02 5.5821128189563751e-02 - <_> - - 0 -1 2003 1.0005419608205557e-03 - - -3.9257239550352097e-02 1.5329119563102722e-01 - <_> - - 0 -1 2004 6.4915331313386559e-04 - - -4.9939561635255814e-02 7.5440049171447754e-02 - <_> - - 0 -1 2005 -7.5847338885068893e-03 - - -2.4265210330486298e-01 2.5270320475101471e-02 - <_> - - 0 -1 2006 -1.5712540596723557e-02 - - 1.7297010123729706e-01 -3.9057541638612747e-02 - <_> - - 0 -1 2007 -3.9321780204772949e-01 - - -2.5074109435081482e-01 3.5513188689947128e-02 - <_> - - 0 -1 2008 6.4803091809153557e-03 - - 3.5816188901662827e-02 -1.5493710339069366e-01 - <_> - - 0 -1 2009 -3.6928490735590458e-03 - - 6.6010497510433197e-02 -9.1977387666702271e-02 - <_> - - 0 -1 2010 4.0171178989112377e-04 - - -5.3731810301542282e-02 6.2330979853868484e-02 - <_> - - 0 -1 2011 -1.0566849960014224e-03 - - 2.4069379270076752e-01 -3.8379501551389694e-02 - <_> - - 0 -1 2012 -6.2974360771477222e-03 - - -5.5077511072158813e-01 1.1444900184869766e-02 - <_> - - 0 -1 2013 -2.2626901045441628e-03 - - -3.0054908990859985e-01 1.9966229796409607e-02 - <_> - - 0 -1 2014 4.4639740372076631e-04 - - -9.2869967222213745e-02 1.1919409781694412e-01 - <_> - - 0 -1 2015 1.2323829287197441e-04 - - -8.0585919320583344e-02 9.6582867205142975e-02 - <_> - - 0 -1 2016 -4.2977688281098381e-05 - - 5.6325040757656097e-02 -6.1825469136238098e-02 - <_> - - 0 -1 2017 -1.3477250467985868e-03 - - -1.2008170038461685e-01 5.5916771292686462e-02 - <_> - - 0 -1 2018 4.2214780114591122e-04 - - -8.4175691008567810e-02 9.9671080708503723e-02 - <_> - - 0 -1 2019 2.8857209254056215e-03 - - 6.5345473587512970e-02 -1.0931260138750076e-01 - <_> - - 0 -1 2020 3.0309830326586962e-03 - - -2.5247409939765930e-02 1.9884890317916870e-01 - <_> - - 0 -1 2021 -5.3361342288553715e-03 - - 1.0040310025215149e-01 -5.8072179555892944e-02 - <_> - - 0 -1 2022 -3.8242610171437263e-03 - - 1.5898209810256958e-01 -4.2140848934650421e-02 - <_> - - 0 -1 2023 -1.7378249904140830e-03 - - -1.3454620540142059e-01 5.5477790534496307e-02 - <_> - - 0 -1 2024 -1.0192190296947956e-02 - - 1.2067530304193497e-01 -5.3306579589843750e-02 - <_> - - 0 -1 2025 -7.0896078832447529e-03 - - -1.5418629348278046e-01 4.4162388890981674e-02 - <_> - - 0 -1 2026 -2.4648339021950960e-03 - - 1.7080619931221008e-01 -2.7274850755929947e-02 - <_> - - 0 -1 2027 -6.4241851214319468e-04 - - -1.5442839264869690e-01 4.0064170956611633e-02 - <_> - - 0 -1 2028 6.6317862365394831e-04 - - -3.0377250164747238e-02 5.6270759552717209e-02 - <_> - - 0 -1 2029 -8.2941073924303055e-03 - - -4.1811838746070862e-01 1.3492629863321781e-02 - <_> - - 0 -1 2030 -3.6951078800484538e-04 - - 4.8480831086635590e-02 -3.3837471157312393e-02 - <_> - - 0 -1 2031 1.3221809640526772e-03 - - -4.2906221002340317e-02 1.2838859856128693e-01 - <_> - - 0 -1 2032 -1.2671080185100436e-03 - - -1.1043450236320496e-01 2.5441320613026619e-02 - <_> - - 0 -1 2033 2.4836331140249968e-03 - - 3.4706719219684601e-02 -1.8949089944362640e-01 - <_> - - 0 -1 2034 -6.2526516616344452e-02 - - -5.9004527330398560e-01 2.7786649297922850e-03 - <_> - - 0 -1 2035 -1.4897409826517105e-02 - - 1.8752850592136383e-01 -3.3959109336137772e-02 - <_> - - 0 -1 2036 -1.2002790346741676e-02 - - -2.8914290666580200e-01 7.3392977938055992e-03 - <_> - - 0 -1 2037 3.1435370910912752e-03 - - 4.4084388762712479e-02 -1.5315219759941101e-01 - <_> - - 0 -1 2038 -2.4036609102040529e-03 - - 1.1861529946327209e-01 -2.7313409373164177e-02 - <_> - - 0 -1 2039 -3.5791810601949692e-02 - - 1.6680610179901123e-01 -3.5469651222229004e-02 - <_> - - 0 -1 2040 5.7867588475346565e-03 - - 2.2431949153542519e-02 -8.4338746964931488e-02 - <_> - - 0 -1 2041 -2.6954410132020712e-03 - - -3.4904921054840088e-01 1.4700699597597122e-02 - <_> - - 0 -1 2042 6.2262167921289802e-04 - - -4.2427390813827515e-02 1.0650890320539474e-01 - <_> - - 0 -1 2043 -8.7842030916363001e-04 - - 1.3310040533542633e-01 -4.1842449456453323e-02 - <_> - - 0 -1 2044 -2.0373899023979902e-03 - - -2.3306299746036530e-01 1.7812909558415413e-02 - <_> - - 0 -1 2045 1.3666530139744282e-03 - - 2.5180319324135780e-02 -2.1236039698123932e-01 - <_> - - 0 -1 2046 -1.3152270112186670e-03 - - 1.9212719798088074e-01 -4.6617131680250168e-02 - <_> - - 0 -1 2047 1.9801879301667213e-02 - - 1.4901800081133842e-02 -3.5319229960441589e-01 - <_> - - 0 -1 2048 3.1510000117123127e-03 - - -1.2941169552505016e-02 1.4735250174999237e-01 - <_> - - 0 -1 2049 3.5291429609060287e-02 - - 7.3530990630388260e-03 -7.1556198596954346e-01 - <_> - - 0 -1 2050 -2.8649759769905359e-05 - - 3.4785639494657516e-02 -3.3928319811820984e-02 - <_> - - 0 -1 2051 1.2113710399717093e-03 - - -3.5517819225788116e-02 1.3941350579261780e-01 - <_> - - 0 -1 2052 -1.8620840273797512e-03 - - -1.3029609620571136e-01 2.4534810334444046e-02 - <_> - - 0 -1 2053 -2.7619469910860062e-02 - - 1.4360269904136658e-01 -3.4316640347242355e-02 - <_> - - 0 -1 2054 5.0724758766591549e-03 - - 2.0405089482665062e-02 -6.9412447512149811e-02 - <_> - - 0 -1 2055 1.0903120040893555e-02 - - 5.0989679992198944e-02 -1.1491060256958008e-01 - <_> - - 0 -1 2056 -2.7553900144994259e-03 - - 1.9678440690040588e-01 -1.2697969563305378e-02 - <_> - - 0 -1 2057 -1.8694249447435141e-03 - - -2.9915121197700500e-01 1.6838220879435539e-02 - <_> - - 0 -1 2058 1.5511639649048448e-03 - - 2.4750430136919022e-02 -1.0845399647951126e-01 - <_> - - 0 -1 2059 -1.4158929698169231e-02 - - 1.2197340279817581e-01 -4.1165851056575775e-02 - <_> - - 0 -1 2060 -1.2717859819531441e-02 - - -4.3909710645675659e-01 7.9397717490792274e-03 - <_> - - 0 -1 2061 -1.6385139897465706e-03 - - -1.6575939953327179e-01 3.1098280102014542e-02 - <_> - - 0 -1 2062 3.5357510205358267e-04 - - -3.6188390105962753e-02 6.4537517726421356e-02 - <_> - - 0 -1 2063 -1.3709410559386015e-03 - - 1.9694100320339203e-01 -3.0401369556784630e-02 - <_> - - 0 -1 2064 1.2311729602515697e-02 - - 9.1771297156810760e-03 -1.3160559535026550e-01 - <_> - - 0 -1 2065 1.8457289552316070e-03 - - 3.0837250873446465e-02 -1.6602100431919098e-01 - <_> - - 0 -1 2066 -1.5473379753530025e-02 - - 2.5880289077758789e-01 -2.2011399269104004e-02 - <_> - - 0 -1 2067 -2.1259100176393986e-03 - - -1.0968039929866791e-01 4.7188289463520050e-02 - <_> - - 0 -1 2068 -3.1477488577365875e-02 - - 8.7950423359870911e-02 -2.9075659811496735e-02 - <_> - - 0 -1 2069 8.3510661497712135e-03 - - -5.7418391108512878e-02 1.2259429693222046e-01 - <_> - - 0 -1 2070 -1.5261439839377999e-03 - - 5.1226388663053513e-02 -5.6588850915431976e-02 - <_> - - 0 -1 2071 -4.0471060201525688e-03 - - -7.3753368854522705e-01 6.5819500014185905e-03 - <_> - - 0 -1 2072 2.3618470877408981e-03 - - -5.8076798915863037e-02 9.7385376691818237e-02 - <_> - - 0 -1 2073 -5.0288718193769455e-03 - - -4.0696510672569275e-01 1.2450199574232101e-02 - <_> - - 0 -1 2074 -4.5899039832875133e-04 - - -1.1976789683103561e-01 3.0493760481476784e-02 - <_> - - 0 -1 2075 -7.6553300023078918e-03 - - 3.2797640562057495e-01 -1.4679649844765663e-02 - <_> - - 0 -1 2076 3.1651180237531662e-02 - - 9.8373405635356903e-03 -9.9427476525306702e-02 - <_> - - 0 -1 2077 -4.2005829163827002e-04 - - 6.9475196301937103e-02 -6.6317923367023468e-02 - <_> - - 0 -1 2078 -4.3475469574332237e-03 - - -9.2239603400230408e-02 3.7397488951683044e-02 - <_> - - 0 -1 2079 3.5791029222309589e-03 - - -1.9854990765452385e-02 2.4084280431270599e-01 - <_> - - 0 -1 2080 -1.0942749679088593e-02 - - 2.6542368531227112e-01 -1.2423070147633553e-02 - <_> - - 0 -1 2081 3.8771289400756359e-03 - - -5.7885479182004929e-02 1.0133259743452072e-01 - <_> - - 0 -1 2082 5.1080808043479919e-03 - - 4.0216930210590363e-03 -8.9897549152374268e-01 - <_> - - 0 -1 2083 4.7296998673118651e-04 - - 3.9465188980102539e-02 -1.3236129283905029e-01 - <_> - - 0 -1 2084 -8.7365293875336647e-03 - - -8.5640531778335571e-01 6.3242338364943862e-04 - <_> - - 0 -1 2085 -2.3332149721682072e-03 - - -3.0867880582809448e-01 1.7711369320750237e-02 - <_> - - 0 -1 2086 9.1973934322595596e-03 - - 1.2881910428404808e-02 -2.7063271403312683e-01 - <_> - - 0 -1 2087 -9.0592764317989349e-03 - - 3.7111261487007141e-01 -1.5435660257935524e-02 - <_> - - 0 -1 2088 -6.8536121398210526e-03 - - -2.3248560726642609e-01 1.4396419748663902e-02 - <_> - - 0 -1 2089 3.2640730496495962e-03 - - -1.6830140724778175e-02 2.8828591108322144e-01 - <_> - - 0 -1 2090 8.4918318316340446e-04 - - 2.8029309585690498e-02 -1.9904230535030365e-01 - <_> - - 0 -1 2091 -2.1864029113203287e-03 - - 2.0627869665622711e-01 -2.2290140390396118e-02 - <_> - - 0 -1 2092 -4.4997650547884405e-04 - - -1.5903109312057495e-01 4.2944360524415970e-02 - <_> - - 0 -1 2093 2.9121869374648668e-05 - - -6.5282016992568970e-02 7.1159698069095612e-02 - <_> - - 0 -1 2094 4.3467659503221512e-02 - - -1.6959929838776588e-02 1.0998240113258362e-01 - <_> - - 0 -1 2095 -1.1365989921614528e-03 - - -2.2058859467506409e-01 2.3035509511828423e-02 - <_> - - 0 -1 2096 -1.8206920474767685e-02 - - -2.9789340496063232e-01 9.9594965577125549e-03 - <_> - - 0 -1 2097 6.6835589706897736e-02 - - -1.8957259133458138e-02 3.0663791298866272e-01 - <_> - - 0 -1 2098 -1.4330899830383714e-05 - - 5.7081911712884903e-02 -6.5903536975383759e-02 - <_> - - 0 -1 2099 1.4206670457497239e-03 - - -3.8737241178750992e-02 1.2876810133457184e-01 - <_> - - 0 -1 2100 2.7356849750503898e-04 - - -7.6959587633609772e-02 5.7561419904232025e-02 - <_> - - 0 -1 2101 -4.3629730498651043e-05 - - 6.8417556583881378e-02 -7.2743088006973267e-02 - <_> - - 0 -1 2102 2.2442260757088661e-02 - - 1.2906930409371853e-02 -2.7765989303588867e-01 - <_> - - 0 -1 2103 -9.5062162727117538e-03 - - 2.2520409524440765e-01 -2.2552950307726860e-02 - <_> - - 0 -1 2104 1.2153879739344120e-02 - - 1.4640049776062369e-03 -8.2713627815246582e-01 - <_> - - 0 -1 2105 -3.8760809693485498e-03 - - -3.0009371042251587e-01 1.5818350017070770e-02 - <_> - - 0 -1 2106 1.8056180328130722e-02 - - -2.7300639078021049e-02 1.1843930184841156e-01 - <_> - - 0 -1 2107 -1.0198189876973629e-02 - - -4.6742329001426697e-01 1.1439249850809574e-02 - <_> - - 0 -1 2108 -1.8736829515546560e-03 - - 6.1713431030511856e-02 -5.4324761033058167e-02 - <_> - - 0 -1 2109 -1.4160489627101924e-05 - - 6.5854422748088837e-02 -7.1403980255126953e-02 - <_> - - 0 -1 2110 -7.5924489647150040e-04 - - -7.3370590806007385e-02 1.5395210124552250e-02 - <_> - - 0 -1 2111 1.9678730517625809e-02 - - -1.7670389264822006e-02 2.6263308525085449e-01 - <_> - - 0 -1 2112 -1.7821189761161804e-01 - - -5.2703332901000977e-01 9.4334492459893227e-03 - <_> - - 0 -1 2113 1.4515940165438224e-05 - - -6.4707919955253601e-02 6.9548860192298889e-02 - <_> - - 0 -1 2114 -1.4563810545951128e-03 - - 4.2549580335617065e-02 -3.3000539988279343e-02 - <_> - - 0 -1 2115 2.1180020645260811e-02 - - 2.6962980628013611e-02 -1.7822809517383575e-01 - <_> - - 0 -1 2116 7.7891332330182195e-04 - - -5.7932410389184952e-02 7.7026076614856720e-02 - <_> - - 0 -1 2117 -3.8158979732543230e-03 - - 9.7226321697235107e-02 -5.2060168236494064e-02 - <_> - - 0 -1 2118 7.4426521314308047e-04 - - 1.9151100888848305e-02 -9.7902022302150726e-02 - <_> - - 0 -1 2119 -6.9776270538568497e-03 - - 1.1507830023765564e-01 -4.7722190618515015e-02 - <_> - - 0 -1 2120 1.4204400031303521e-05 - - -4.1490320116281509e-02 4.9247849732637405e-02 - <_> - - 0 -1 2121 -5.6304200552403927e-04 - - -1.4389720559120178e-01 3.6801539361476898e-02 - <_> - - 0 -1 2122 2.6648829225450754e-03 - - -6.0111761093139648e-02 9.3297347426414490e-02 - <_> - - 0 -1 2123 -8.8225618004798889e-02 - - -1.7006370425224304e-01 2.9528470709919930e-02 - <_> - - 0 -1 2124 -8.7953936308622360e-03 - - -5.8269548416137695e-01 1.8716199556365609e-03 - <_> - - 0 -1 2125 -1.1649719672277570e-03 - - 1.2489689886569977e-01 -4.3457120656967163e-02 - <_> - - 0 -1 2126 1.3699769624508917e-05 - - -4.2961910367012024e-02 4.4930510222911835e-02 - <_> - - 0 -1 2127 2.8596229385584593e-03 - - 1.4335130341351032e-02 -3.0572828650474548e-01 - <_> - - 0 -1 2128 -2.2674720734357834e-02 - - 4.0617591142654419e-01 -1.0855849832296371e-02 - <_> - - 0 -1 2129 -9.9256280809640884e-03 - - 2.7254319190979004e-01 -1.6158660873770714e-02 - <_> - - 0 -1 2130 5.9502501040697098e-02 - - 4.5848288573324680e-03 -7.3743087053298950e-01 - <_> - - 0 -1 2131 5.1061160862445831e-02 - - 5.0964308902621269e-03 -7.6984941959381104e-01 - <_> - - 0 -1 2132 -1.2472540140151978e-02 - - 8.4497779607772827e-02 -3.3125039190053940e-02 - <_> - - 0 -1 2133 1.4897279907017946e-03 - - 3.6912161856889725e-02 -1.3818310201168060e-01 - <_> - - 0 -1 2134 -2.2147510200738907e-02 - - -1.6144229471683502e-01 9.0466598048806190e-03 - <_> - - 0 -1 2135 9.4495322555303574e-03 - - 4.6972200274467468e-02 -1.0716339945793152e-01 - <_> - - 0 -1 2136 1.9293139921501279e-03 - - -3.4286331385374069e-02 5.2777741104364395e-02 - <_> - - 0 -1 2137 -3.8894641399383545e-01 - - -7.6786720752716064e-01 5.8184252120554447e-03 - <_> - - 0 -1 2138 2.2508520632982254e-02 - - -1.1624289676547050e-02 8.8422507047653198e-02 - <_> - - 0 -1 2139 -2.2605659440159798e-02 - - 2.4461190402507782e-01 -1.7740579321980476e-02 - <_> - - 0 -1 2140 -1.1666050180792809e-02 - - -2.5602799654006958e-01 1.1454549618065357e-02 - <_> - - 0 -1 2141 -2.0710580050945282e-02 - - -5.5883651971817017e-01 7.5737191364169121e-03 - <_> - - 0 -1 2142 7.8827500343322754e-02 - - 3.9148649193521123e-06 -7.5623649358749390e-01 - <_> - - 0 -1 2143 2.3726599290966988e-02 - - -2.3146500810980797e-02 1.9937509298324585e-01 - <_> - - 0 -1 2144 1.2368409661576152e-03 - - 3.8288921117782593e-02 -1.2177640199661255e-01 - <_> - - 0 -1 2145 -1.4358550288307015e-05 - - 6.0658939182758331e-02 -7.3654122650623322e-02 - <_> - - 0 -1 2146 8.7936148047447205e-03 - - -3.3896610140800476e-02 9.5205701887607574e-02 - <_> - - 0 -1 2147 -2.3806949320714921e-04 - - -9.9966533482074738e-02 4.5478440821170807e-02 - <_> - - 0 -1 2148 -8.3054965361952782e-03 - - 1.3420370221138000e-01 -2.5543849915266037e-02 - <_> - - 0 -1 2149 8.1005110405385494e-04 - - 4.0490619838237762e-02 -1.1215209960937500e-01 - <_> - - 0 -1 2150 -1.7238059639930725e-01 - - -5.0442242622375488e-01 8.9577194303274155e-03 - <_> - - 0 -1 2151 2.9706210625590757e-05 - - -7.0957981050014496e-02 6.3416786491870880e-02 - <_> - - 0 -1 2152 -3.5412028431892395e-02 - - -1.7485639452934265e-01 9.6797533333301544e-03 - <_> - - 0 -1 2153 8.2069952040910721e-03 - - -2.8969779610633850e-02 1.6151989996433258e-01 - <_> - - 0 -1 2154 -4.4735260307788849e-03 - - -4.4660449028015137e-01 1.0111720301210880e-02 - <_> - - 0 -1 2155 4.2432491318322718e-04 - - -4.5450739562511444e-02 9.8722547292709351e-02 - <_> - - 0 -1 2156 -9.3795463442802429e-02 - - 4.7356921434402466e-01 -5.7168500497937202e-03 - <_> - - 0 -1 2157 -6.3939332903828472e-05 - - -1.0030250251293182e-01 5.6099571287631989e-02 - <_> - - 0 -1 2158 -5.1775861531496048e-02 - - -8.5062891244888306e-01 2.1091110538691282e-03 - <_> - - 0 -1 2159 2.3427829146385193e-03 - - -6.0702718794345856e-02 8.7300397455692291e-02 - <_> - - 0 -1 2160 -5.5683478713035583e-02 - - -3.6283439397811890e-01 6.0013919137418270e-03 - <_> - - 0 -1 2161 1.9656179472804070e-02 - - -1.5454960055649281e-02 2.9359608888626099e-01 - <_> - - 0 -1 2162 -5.2067539654672146e-03 - - -1.4107729494571686e-01 9.3313539400696754e-03 - <_> - - 0 -1 2163 -8.1932216882705688e-02 - - -7.0356172323226929e-01 6.1017181724309921e-03 - <_> - - 0 -1 2164 -1.0771179944276810e-01 - - 1.2234950065612793e-01 -2.7294529601931572e-02 - <_> - - 0 -1 2165 -4.4263739138841629e-02 - - -4.6973970532417297e-01 1.1172570288181305e-02 - <_> - - 0 -1 2166 -1.1734849773347378e-02 - - 7.9907633364200592e-02 -3.9245810359716415e-02 - <_> - - 0 -1 2167 -4.9447570927441120e-03 - - -1.4253869652748108e-01 3.6019299179315567e-02 - <_> - - 0 -1 2168 -1.2758700177073479e-02 - - 2.1074560284614563e-01 -2.7008490636944771e-02 - <_> - - 0 -1 2169 -2.4229190312325954e-03 - - -1.7348369956016541e-01 2.7011310681700706e-02 - <_> - - 0 -1 2170 1.2762489728629589e-02 - - -4.0995080024003983e-02 1.0026659816503525e-01 - <_> - - 0 -1 2171 -1.9846750423312187e-02 - - -1.7189559340476990e-01 2.7843099087476730e-02 - <_> - - 0 -1 2172 -9.6252951771020889e-03 - - 7.5235731899738312e-02 -6.2477041035890579e-02 - <_> - - 0 -1 2173 1.4421059750020504e-02 - - -4.4746961444616318e-02 1.2761180102825165e-01 - <_> - - 0 -1 2174 -1.7601229250431061e-02 - - -1.8411770462989807e-01 7.5616179965436459e-03 - <_> - - 0 -1 2175 2.6960249524563551e-03 - - 5.1309641450643539e-02 -9.9234290421009064e-02 - <_> - - 0 -1 2176 8.8272113353013992e-03 - - -2.9426699504256248e-02 1.2871199846267700e-01 - <_> - - 0 -1 2177 1.5159220201894641e-03 - - -7.0951983332633972e-02 7.0258103311061859e-02 - <_> - - 0 -1 2178 9.9900282919406891e-02 - - 4.2045200243592262e-03 -2.5636160373687744e-01 - <_> - - 0 -1 2179 -9.0645171701908112e-02 - - -7.3471748828887939e-01 7.1614691987633705e-03 - <_> - - 0 -1 2180 -8.4249622887000442e-04 - - -1.5900529921054840e-01 2.4666419252753258e-02 - <_> - - 0 -1 2181 -3.0089109204709530e-03 - - 2.3173299431800842e-01 -2.1815709769725800e-02 - <_> - - 0 -1 2182 -3.3637441694736481e-02 - - -3.6218351125717163e-01 7.5414488092064857e-03 - <_> - - 0 -1 2183 -2.2824279963970184e-01 - - -5.3426170349121094e-01 8.0225821584463120e-03 - <_> - - 0 -1 2184 1.8216760829091072e-02 - - -1.5583549626171589e-02 1.6877870261669159e-01 - <_> - - 0 -1 2185 3.0790129676461220e-03 - - 2.4512980133295059e-02 -1.9235950708389282e-01 - <_> - - 0 -1 2186 -4.4569619931280613e-03 - - -2.0312610268592834e-01 2.4477139115333557e-02 - <_> - - 0 -1 2187 -1.2145079672336578e-02 - - 5.4033899307250977e-01 -8.7826717644929886e-03 - <_> - - 0 -1 2188 -2.3873759433627129e-02 - - 1.3763800263404846e-01 -1.1732709594070911e-02 - <_> - - 0 -1 2189 -2.7447650209069252e-02 - - -1.6193859279155731e-01 2.8378870338201523e-02 - <_> - - 0 -1 2190 -4.5404389500617981e-02 - - 2.2645190358161926e-01 -2.8770249336957932e-02 - <_> - - 0 -1 2191 1.6533889574930072e-03 - - 3.0014310032129288e-02 -1.5527120232582092e-01 - <_> - - 0 -1 2192 -1.2394280172884464e-02 - - 1.1130840331315994e-01 -2.5827359408140182e-02 - <_> - - 0 -1 2193 1.8719509243965149e-02 - - -1.9343839958310127e-02 2.6074668765068054e-01 - <_> - - 0 -1 2194 -2.9856900218874216e-03 - - -2.8213161230087280e-01 7.8225499019026756e-03 - <_> - - 0 -1 2195 -2.0480990409851074e-02 - - -5.6029498577117920e-01 8.0386884510517120e-03 - <_> - - 0 -1 2196 6.2915110029280186e-03 - - -4.7007601708173752e-02 6.9091297686100006e-02 - <_> - - 0 -1 2197 -1.1142699979245663e-02 - - 2.1556779742240906e-01 -2.0254980772733688e-02 - <_> - - 0 -1 2198 -3.1025360804051161e-03 - - -2.1672689914703369e-01 1.3014920055866241e-02 - <_> - - 0 -1 2199 7.7247130684554577e-03 - - 9.9663622677326202e-03 -4.4809859991073608e-01 - <_> - - 0 -1 2200 -8.8526323437690735e-02 - - 5.4465758800506592e-01 -1.8960989546030760e-03 - <_> - - 0 -1 2201 6.1687689274549484e-02 - - 8.9669581502676010e-03 -5.0003600120544434e-01 - <_> - - 0 -1 2202 1.3722930103540421e-02 - - -1.3184379786252975e-02 2.3204129934310913e-01 - <_> - - 0 -1 2203 -4.9674719572067261e-02 - - -3.9700868725776672e-01 1.1291200295090675e-02 - <_> - - 0 -1 2204 1.4873009640723467e-03 - - -3.7490010261535645e-02 1.4988760650157928e-01 - <_> - - 0 -1 2205 1.4871370512992144e-03 - - 2.5183940306305885e-02 -1.8258319795131683e-01 - <_> - - 0 -1 2206 -4.9300859682261944e-03 - - 2.3329930007457733e-01 -2.0209580659866333e-02 - <_> - - 0 -1 2207 3.8708809018135071e-01 - - 1.4189199544489384e-02 -3.3035850524902344e-01 - <_> - - 0 -1 2208 -1.5642799437046051e-02 - - -2.2099809348583221e-01 7.4994498863816261e-03 - <_> - - 0 -1 2209 4.7617158852517605e-03 - - 2.7577200904488564e-02 -1.6086949408054352e-01 - <_> - - 0 -1 2210 6.0681640170514584e-03 - - -3.7658590823411942e-02 9.0074919164180756e-02 - <_> - - 0 -1 2211 7.3775771306827664e-04 - - -5.7681489735841751e-02 8.1796541810035706e-02 - <_> - - 0 -1 2212 9.9665368907153606e-04 - - -2.9481150209903717e-02 4.9594949930906296e-02 - <_> - - 0 -1 2213 -7.1411498356610537e-04 - - 7.9853750765323639e-02 -5.6889399886131287e-02 - <_> - - 0 -1 2214 4.0103218634612858e-04 - - 3.9645630866289139e-02 -1.2507979571819305e-01 - <_> - - 0 -1 2215 -4.3492428958415985e-03 - - 3.4267151355743408e-01 -1.3171579688787460e-02 - <_> - - 0 -1 2216 -4.5664971694350243e-03 - - -5.7348942756652832e-01 3.4244819544255733e-03 - <_> - - 0 -1 2217 -1.6654949635267258e-02 - - -2.9475829005241394e-01 1.4510709792375565e-02 - <_> - - 0 -1 2218 1.6763679683208466e-01 - - 7.0861837593838573e-04 -9.9972397089004517e-01 - <_> - - 0 -1 2219 -1.4438680373132229e-02 - - 9.1619342565536499e-02 -5.1960468292236328e-02 - <_> - - 0 -1 2220 6.6305609652772546e-04 - - 2.9365209862589836e-02 -1.3490900397300720e-01 - <_> - - 0 -1 2221 -1.4088350326346699e-05 - - 6.8118147552013397e-02 -6.9758139550685883e-02 - <_> - - 0 -1 2222 -1.4499350450932980e-02 - - 1.0636260360479355e-01 -2.6339579373598099e-02 - <_> - - 0 -1 2223 -1.4112069948168937e-05 - - 6.7933529615402222e-02 -7.1538552641868591e-02 - <_> - - 0 -1 2224 3.2297680154442787e-03 - - 3.5616960376501083e-02 -1.4987170696258545e-01 - <_> - - 0 -1 2225 -1.2449090136215091e-03 - - 8.5310973227024078e-02 -5.0303228199481964e-02 - <_> - - 0 -1 2226 1.9396430579945445e-03 - - -3.2993078231811523e-02 5.2711058408021927e-02 - <_> - - 0 -1 2227 1.5153799904510379e-03 - - 4.7350451350212097e-02 -9.0107597410678864e-02 - <_> - - 0 -1 2228 -2.0151579752564430e-02 - - 3.1018638610839844e-01 -1.0560410097241402e-02 - <_> - - 0 -1 2229 -1.0241220006719232e-03 - - -1.5783089399337769e-01 2.6851199567317963e-02 - <_> - - 0 -1 2230 2.8379200026392937e-02 - - -9.9058141931891441e-03 1.4265379309654236e-01 - <_> - - 0 -1 2231 5.3610950708389282e-02 - - 1.0473029688000679e-02 -4.4550651311874390e-01 - <_> - - 0 -1 2232 -1.4160390011966228e-02 - - -1. 7.1694981306791306e-04 - <_> - - 0 -1 2233 2.1303679386619478e-04 - - -6.9676317274570465e-02 6.4859509468078613e-02 - <_> - - 0 -1 2234 -4.8539000563323498e-03 - - 7.1323692798614502e-02 -4.6175349503755569e-02 - <_> - - 0 -1 2235 3.0484499875456095e-03 - - -5.1321279257535934e-02 1.4626629650592804e-01 - <_> - - 0 -1 2236 1.2647379934787750e-01 - - 7.6361437095329165e-04 -1.0042829513549805e+00 - <_> - - 0 -1 2237 -3.1012939289212227e-02 - - -1.6555130481719971e-01 3.1050549820065498e-02 - <_> - - 0 -1 2238 5.1011998206377029e-02 - - 1.7226659692823887e-03 -3.5149711370468140e-01 - <_> - - 0 -1 2239 1.0826109908521175e-02 - - 3.8518119603395462e-02 -1.3052040338516235e-01 - <_> - - 0 -1 2240 4.8744820058345795e-02 - - -2.2428359836339951e-02 1.8270319700241089e-01 - <_> - - 0 -1 2241 -1.2570779770612717e-02 - - 2.8901270031929016e-01 -1.7391089349985123e-02 - <_> - - 0 -1 2242 1.7412479966878891e-02 - - -1.0330840013921261e-02 1.6961729526519775e-01 - <_> - - 0 -1 2243 2.0524440333247185e-04 - - 3.8509201258420944e-02 -1.2219169735908508e-01 - <_> - - 0 -1 2244 -1.2439410202205181e-03 - - 5.4002009332180023e-02 -3.5104531794786453e-02 - <_> - - 0 -1 2245 6.1096338322386146e-04 - - -7.0445932447910309e-02 6.2362931668758392e-02 - <_> - - 0 -1 2246 -1.3741919770836830e-02 - - 9.2544101178646088e-02 -3.0641069635748863e-02 - <_> - - 0 -1 2247 -2.8044390492141247e-03 - - -1.2330780178308487e-01 4.2105171829462051e-02 - <_> - - 0 -1 2248 4.7048758715391159e-02 - - 1.0950920404866338e-03 -8.4190052747726440e-01 - <_> - - 0 -1 2249 -1.4890570193529129e-02 - - 2.5517889857292175e-01 -1.7952889204025269e-02 - <_> - - 0 -1 2250 3.8549639284610748e-03 - - 2.2235570475459099e-02 -4.2414370924234390e-02 - <_> - - 0 -1 2251 -8.3304597064852715e-03 - - -1.7280849814414978e-01 2.6187630370259285e-02 - <_> - - 0 -1 2252 -2.4235919117927551e-03 - - 6.1521679162979126e-02 -4.2346790432929993e-02 - <_> - - 0 -1 2253 2.0981200505048037e-03 - - -4.5152019709348679e-02 1.2587040662765503e-01 - <_> - - 0 -1 2254 -3.1279098242521286e-02 - - -4.9621739983558655e-01 3.0154960695654154e-03 - <_> - - 0 -1 2255 -9.8806107416749001e-04 - - 7.8685648739337921e-02 -6.1010491102933884e-02 - <_> - - 0 -1 2256 -3.1887448858469725e-03 - - 4.8666700720787048e-02 -6.9095551967620850e-02 - <_> - - 0 -1 2257 3.6120909499004483e-04 - - 3.7986539304256439e-02 -1.2916709482669830e-01 - <_> - - 0 -1 2258 -4.7003240324556828e-03 - - 1.5735860168933868e-01 -3.1987510621547699e-02 - <_> - - 0 -1 2259 4.0772740612737834e-04 - - -8.1700682640075684e-02 7.0277199149131775e-02 - <_> - - 0 -1 2260 -1.5688460553064942e-04 - - 6.6089183092117310e-02 -5.8684460818767548e-02 - <_> - - 0 -1 2261 -8.8306762336287647e-05 - - 7.6648086309432983e-02 -6.1461128294467926e-02 - <_> - - 0 -1 2262 -8.4060793742537498e-03 - - -4.7935470938682556e-02 1.9660739228129387e-02 - <_> - - 0 -1 2263 -7.5640631839632988e-03 - - -1.3129790127277374e-01 3.6835629492998123e-02 - <_> - - 0 -1 2264 2.9140699552954175e-05 - - -4.8771411180496216e-02 5.4109010845422745e-02 - <_> - - 0 -1 2265 -2.9703689506277442e-05 - - 7.7505372464656830e-02 -6.2566630542278290e-02 - <_> - - 0 -1 2266 4.6520221233367920e-01 - - 3.2388810068368912e-03 -9.5390701293945312e-01 - <_> - - 0 -1 2267 4.3617340922355652e-01 - - -1.0471199639141560e-02 4.9274379014968872e-01 - <_> - - 0 -1 2268 4.7622469067573547e-01 - - 1.0192049667239189e-02 -3.0609691143035889e-01 - <_> - 312 - -8.6750441789627075e-01 - - <_> - - 0 -1 2269 -6.9590657949447632e-03 - - 1.5868470072746277e-01 -1.6239820420742035e-01 - <_> - - 0 -1 2270 -3.0573920812457800e-03 - - 1.5380610525608063e-01 -1.0447710007429123e-01 - <_> - - 0 -1 2271 4.9113620072603226e-02 - - 3.1365771428681910e-04 -5.9103668212890625e+02 - <_> - - 0 -1 2272 3.5433040466159582e-03 - - -5.8694530278444290e-02 1.9025419652462006e-01 - <_> - - 0 -1 2273 -3.1152060255408287e-03 - - 1.6918399930000305e-01 -5.7261351495981216e-02 - <_> - - 0 -1 2274 -3.0493480153381824e-04 - - 8.7339952588081360e-02 -1.1609370261430740e-01 - <_> - - 0 -1 2275 -2.9056929051876068e-03 - - -1.6569739580154419e-01 8.9497320353984833e-02 - <_> - - 0 -1 2276 2.4364320561289787e-03 - - -6.1192200519144535e-03 -1.1708849668502808e-01 - <_> - - 0 -1 2277 -1.9272440671920776e-01 - - 2.5199291110038757e-01 -2.5372540578246117e-02 - <_> - - 0 -1 2278 -1.5847420692443848e-01 - - 4.7349348664283752e-01 1.1943650431931019e-02 - <_> - - 0 -1 2279 -1.4465919695794582e-02 - - 2.6014938950538635e-01 -3.2948598265647888e-02 - <_> - - 0 -1 2280 1.4936940371990204e-01 - - 1.3150180166121572e-04 -1.8844749450683594e+01 - <_> - - 0 -1 2281 -8.5310498252511024e-04 - - -1.7988120019435883e-01 3.9786599576473236e-02 - <_> - - 0 -1 2282 -7.1676567196846008e-02 - - 9.7726896405220032e-02 -7.2678178548812866e-02 - <_> - - 0 -1 2283 -1.6500559868291020e-03 - - -1.6228690743446350e-01 4.5543350279331207e-02 - <_> - - 0 -1 2284 8.7681278586387634e-02 - - 1.0731910355389118e-02 -2.5473240017890930e-01 - <_> - - 0 -1 2285 4.2137179523706436e-02 - - -5.8585599064826965e-02 1.2307800352573395e-01 - <_> - - 0 -1 2286 1.5697469934821129e-03 - - 3.9195891469717026e-02 -3.7577088922262192e-02 - <_> - - 0 -1 2287 4.3402929441072047e-04 - - 7.2439298033714294e-02 -9.1538086533546448e-02 - <_> - - 0 -1 2288 -4.3872660025954247e-03 - - 1.8260389566421509e-01 -1.8635680899024010e-02 - <_> - - 0 -1 2289 -6.7455501994118094e-04 - - 8.0404117703437805e-02 -8.2332372665405273e-02 - <_> - - 0 -1 2290 6.0816952027380466e-03 - - 4.2769778519868851e-02 -1.8744979798793793e-01 - <_> - - 0 -1 2291 1.6488720430061221e-03 - - -4.2755078524351120e-02 1.4212779700756073e-01 - <_> - - 0 -1 2292 3.2328169327229261e-03 - - 3.3626940101385117e-02 -7.8316323459148407e-02 - <_> - - 0 -1 2293 4.7256439924240112e-02 - - -2.2591020911931992e-02 3.0011969804763794e-01 - <_> - - 0 -1 2294 -6.2247258611023426e-03 - - -1.0147669911384583e-01 1.6788400709629059e-02 - <_> - - 0 -1 2295 1.6149500152096152e-03 - - 5.5833689868450165e-02 -1.0707660019397736e-01 - <_> - - 0 -1 2296 9.1500347480177879e-04 - - -6.9352641701698303e-02 8.8161237537860870e-02 - <_> - - 0 -1 2297 -2.2576500196009874e-03 - - -1.2706309556961060e-01 5.4880708456039429e-02 - <_> - - 0 -1 2298 -3.4538839012384415e-02 - - 2.7154579758644104e-01 -2.4382650852203369e-02 - <_> - - 0 -1 2299 -1.7117150127887726e-03 - - 1.4996920526027679e-01 -4.0825318545103073e-02 - <_> - - 0 -1 2300 -3.2278900034725666e-03 - - -1.2764149904251099e-01 2.3431450128555298e-02 - <_> - - 0 -1 2301 -4.4023559894412756e-05 - - 7.7392660081386566e-02 -7.4177153408527374e-02 - <_> - - 0 -1 2302 7.5647688936442137e-04 - - 3.3927328884601593e-02 -1.4417350292205811e-01 - <_> - - 0 -1 2303 8.4927473217248917e-03 - - -4.0082499384880066e-02 1.2817430496215820e-01 - <_> - - 0 -1 2304 -7.6771569438278675e-03 - - -6.8460687994956970e-02 2.7800939977169037e-02 - <_> - - 0 -1 2305 -7.1219368837773800e-03 - - 1.7107799649238586e-01 -3.3437490463256836e-02 - <_> - - 0 -1 2306 -5.5628590285778046e-02 - - 2.7421030402183533e-01 -5.5358181707561016e-03 - <_> - - 0 -1 2307 -8.6285015568137169e-03 - - 9.6154272556304932e-02 -5.9233158826828003e-02 - <_> - - 0 -1 2308 -8.4619313478469849e-02 - - -1.0364869982004166e-01 4.1444499045610428e-02 - <_> - - 0 -1 2309 3.9100160938687623e-04 - - -7.1321249008178711e-02 8.9755021035671234e-02 - <_> - - 0 -1 2310 -1.8672130536288023e-03 - - -1.1459860205650330e-01 2.5895899161696434e-02 - <_> - - 0 -1 2311 -3.3822900149971247e-05 - - 7.9902566969394684e-02 -6.7662969231605530e-02 - <_> - - 0 -1 2312 8.1294048577547073e-03 - - -1.5307970345020294e-02 1.3641610741615295e-01 - <_> - - 0 -1 2313 -3.7496020086109638e-03 - - -1.9913309812545776e-01 3.0319629237055779e-02 - <_> - - 0 -1 2314 -1.2066840194165707e-02 - - 9.3559846282005310e-02 -2.5958370417356491e-02 - <_> - - 0 -1 2315 7.5598962604999542e-02 - - 1.5041110105812550e-02 -3.6718261241912842e-01 - <_> - - 0 -1 2316 -1.6014720313251019e-03 - - -1.5824559330940247e-01 1.6495509073138237e-02 - <_> - - 0 -1 2317 -1.6493949806317687e-03 - - 1.5612399578094482e-01 -3.3213630318641663e-02 - <_> - - 0 -1 2318 7.5000891229137778e-04 - - -6.6709816455841064e-02 1.1225040256977081e-01 - <_> - - 0 -1 2319 4.4484718819148839e-04 - - 3.6335270851850510e-02 -1.6284869611263275e-01 - <_> - - 0 -1 2320 2.5233838823623955e-04 - - 3.3983569592237473e-02 -1.0951840132474899e-01 - <_> - - 0 -1 2321 -3.3512299414724112e-03 - - 9.6623063087463379e-02 -5.5458720773458481e-02 - <_> - - 0 -1 2322 -9.4628758961334825e-04 - - -1.7076319456100464e-01 2.2219700738787651e-02 - <_> - - 0 -1 2323 9.0931905433535576e-03 - - -2.2302780300378799e-02 2.3247869312763214e-01 - <_> - - 0 -1 2324 1.4432819625653792e-05 - - -1.7819089815020561e-02 2.5444870814681053e-02 - <_> - - 0 -1 2325 -1.2126220099162310e-04 - - -1.0076980292797089e-01 4.8461761325597763e-02 - <_> - - 0 -1 2326 -1.5898300334811211e-03 - - 7.1014806628227234e-02 -4.2943000793457031e-02 - <_> - - 0 -1 2327 6.1745261773467064e-03 - - -2.9729399830102921e-02 1.6170799732208252e-01 - <_> - - 0 -1 2328 -3.0631071422249079e-04 - - -8.7092787027359009e-02 3.1442601233720779e-02 - <_> - - 0 -1 2329 -5.8703188551589847e-04 - - 6.9914981722831726e-02 -6.8044006824493408e-02 - <_> - - 0 -1 2330 -6.2474939040839672e-03 - - -9.6013367176055908e-02 2.9822429642081261e-02 - <_> - - 0 -1 2331 -8.4606884047389030e-03 - - -4.9265980720520020e-01 9.7682923078536987e-03 - <_> - - 0 -1 2332 -8.2077048718929291e-02 - - 2.4171060323715210e-01 -2.1062780171632767e-02 - <_> - - 0 -1 2333 2.4003140628337860e-02 - - -1.1466279625892639e-02 4.2264458537101746e-01 - <_> - - 0 -1 2334 5.0643119961023331e-02 - - 1.1797649785876274e-02 -3.0376261472702026e-01 - <_> - - 0 -1 2335 -7.5805537402629852e-02 - - -6.0144102573394775e-01 7.6154861599206924e-03 - <_> - - 0 -1 2336 2.1794199710711837e-04 - - -7.6192483305931091e-02 6.0302849858999252e-02 - <_> - - 0 -1 2337 -1.1538410035427660e-04 - - 9.7286820411682129e-02 -6.3996717333793640e-02 - <_> - - 0 -1 2338 -5.6703570298850536e-03 - - 4.7419899702072144e-01 -8.9765265583992004e-03 - <_> - - 0 -1 2339 9.0920249931514263e-04 - - -5.4096128791570663e-02 9.9844329059123993e-02 - <_> - - 0 -1 2340 6.6968752071261406e-04 - - 2.9092999175190926e-02 -1.4089579880237579e-01 - <_> - - 0 -1 2341 -1.3045269995927811e-02 - - -3.6840420961380005e-01 1.3595229946076870e-02 - <_> - - 0 -1 2342 8.1813009455800056e-04 - - 2.0997049286961555e-02 -7.1003288030624390e-02 - <_> - - 0 -1 2343 3.0674310401082039e-03 - - -2.0319199189543724e-02 2.1805720031261444e-01 - <_> - - 0 -1 2344 2.4622390046715736e-03 - - -4.3403070420026779e-02 9.6221841871738434e-02 - <_> - - 0 -1 2345 4.0511658880859613e-04 - - 3.8897279649972916e-02 -1.3268139958381653e-01 - <_> - - 0 -1 2346 -8.4437627810984850e-04 - - 5.0205118954181671e-02 -3.7280499935150146e-02 - <_> - - 0 -1 2347 -1.3546720147132874e-03 - - 8.7879791855812073e-02 -5.8279629796743393e-02 - <_> - - 0 -1 2348 -3.7650408921763301e-04 - - -9.4865918159484863e-02 4.2081668972969055e-02 - <_> - - 0 -1 2349 3.3679799525998533e-04 - - 4.7310721129179001e-02 -1.0243420302867889e-01 - <_> - - 0 -1 2350 -2.8126540200901218e-05 - - 4.7269638627767563e-02 -5.5766370147466660e-02 - <_> - - 0 -1 2351 4.1841669008135796e-03 - - -1.9733460620045662e-02 2.3084339499473572e-01 - <_> - - 0 -1 2352 -1.1791250435635448e-03 - - 1.7762739956378937e-01 -3.5704571753740311e-02 - <_> - - 0 -1 2353 -2.4450810160487890e-03 - - -1.1740010231733322e-01 4.4417370110750198e-02 - <_> - - 0 -1 2354 2.6766739320009947e-03 - - 3.3644858747720718e-02 -1.5421959757804871e-01 - <_> - - 0 -1 2355 9.7273271530866623e-03 - - -3.6012981086969376e-02 1.4240190386772156e-01 - <_> - - 0 -1 2356 -4.9499998567625880e-04 - - -8.1604748964309692e-02 2.0572710782289505e-02 - <_> - - 0 -1 2357 -1.4889230020344257e-02 - - -4.6096751093864441e-01 9.8663335666060448e-03 - <_> - - 0 -1 2358 -3.0629769898951054e-03 - - 2.6929551362991333e-01 -1.9634859636425972e-02 - <_> - - 0 -1 2359 -2.3329691030085087e-03 - - -1.8056930601596832e-01 2.6195030659437180e-02 - <_> - - 0 -1 2360 1.4440430095419288e-03 - - -3.6736939102411270e-02 9.5665268599987030e-02 - <_> - - 0 -1 2361 -2.4700779467821121e-03 - - 7.1355991065502167e-02 -6.9826416671276093e-02 - <_> - - 0 -1 2362 2.5538569316267967e-03 - - -5.2430380135774612e-02 1.4462329447269440e-01 - <_> - - 0 -1 2363 1.2297700159251690e-03 - - 5.3223300725221634e-02 -1.0887510329484940e-01 - <_> - - 0 -1 2364 -1.1272770352661610e-02 - - 1.2317550182342529e-01 -2.3890729993581772e-02 - <_> - - 0 -1 2365 8.5928626358509064e-03 - - 4.2121421545743942e-02 -1.1863400042057037e-01 - <_> - - 0 -1 2366 3.3916949760168791e-03 - - -2.8021439909934998e-02 2.1571420133113861e-01 - <_> - - 0 -1 2367 3.9071948267519474e-03 - - 1.2598560191690922e-02 -3.9708340167999268e-01 - <_> - - 0 -1 2368 -1.7956830561161041e-03 - - 1.2647710740566254e-01 -5.7237148284912109e-02 - <_> - - 0 -1 2369 -7.7512441202998161e-04 - - -1.6876439750194550e-01 2.8973329812288284e-02 - <_> - - 0 -1 2370 1.0271680355072021e-01 - - -1.2080660089850426e-02 3.9716011285781860e-01 - <_> - - 0 -1 2371 -4.0367760811932385e-04 - - 6.7599602043628693e-02 -6.7388482391834259e-02 - <_> - - 0 -1 2372 -2.2988640703260899e-03 - - -9.6752107143402100e-02 5.6014880537986755e-02 - <_> - - 0 -1 2373 -7.7720789704471827e-04 - - 1.2280429899692535e-01 -3.8351070135831833e-02 - <_> - - 0 -1 2374 4.3838539568241686e-05 - - -2.9446190223097801e-02 2.5065520778298378e-02 - <_> - - 0 -1 2375 -4.3220039515290409e-05 - - 6.0876619070768356e-02 -7.4360720813274384e-02 - <_> - - 0 -1 2376 1.8013520457316190e-04 - - 4.4003210961818695e-02 -1.2167269736528397e-01 - <_> - - 0 -1 2377 -1.5988990664482117e-02 - - -3.6425220966339111e-01 1.1611090041697025e-02 - <_> - - 0 -1 2378 3.0585259664803743e-03 - - -1.7674630507826805e-02 1.4486950635910034e-01 - <_> - - 0 -1 2379 -7.9687736928462982e-02 - - -5.1687908172607422e-01 9.3473158776760101e-03 - <_> - - 0 -1 2380 -1.9053969532251358e-02 - - 6.6542461514472961e-02 -3.9088901132345200e-02 - <_> - - 0 -1 2381 6.2866392545402050e-04 - - -4.2991779744625092e-02 1.0028839856386185e-01 - <_> - - 0 -1 2382 -4.6688509173691273e-03 - - 5.5551759898662567e-02 -4.2753148823976517e-02 - <_> - - 0 -1 2383 -1.4348989680001978e-05 - - 7.3363922536373138e-02 -7.5351633131504059e-02 - <_> - - 0 -1 2384 2.9872718732804060e-04 - - -7.7761411666870117e-02 5.4107978940010071e-02 - <_> - - 0 -1 2385 -1.4901659451425076e-03 - - -1.2372410297393799e-01 3.6912061274051666e-02 - <_> - - 0 -1 2386 3.0812988989055157e-03 - - -8.6249075829982758e-03 1.9336590170860291e-01 - <_> - - 0 -1 2387 -2.1335019264370203e-03 - - 2.3859849572181702e-01 -1.8126849085092545e-02 - <_> - - 0 -1 2388 9.9391005933284760e-03 - - 1.1431059800088406e-02 -2.2138220071792603e-01 - <_> - - 0 -1 2389 8.2578818546608090e-04 - - 3.9670199155807495e-02 -1.0737189650535583e-01 - <_> - - 0 -1 2390 1.8395700026303530e-03 - - -2.7136169373989105e-02 1.1130770295858383e-01 - <_> - - 0 -1 2391 3.8778909947723150e-03 - - -5.4471541196107864e-02 8.4703780710697174e-02 - <_> - - 0 -1 2392 1.1750679695978761e-03 - - 2.1696800366044044e-02 -1.3571469485759735e-01 - <_> - - 0 -1 2393 -1.5827510505914688e-03 - - 7.7993959188461304e-02 -6.2593907117843628e-02 - <_> - - 0 -1 2394 -8.1443432718515396e-03 - - -8.9417421817779541e-01 2.4376239161938429e-03 - <_> - - 0 -1 2395 -3.5362979397177696e-03 - - -3.3739840984344482e-01 1.3051600195467472e-02 - <_> - - 0 -1 2396 -7.5185662135481834e-03 - - 1.7903229594230652e-01 -9.4940410926938057e-03 - <_> - - 0 -1 2397 -1.3678180053830147e-02 - - -7.1258807182312012e-01 6.1758197844028473e-03 - <_> - - 0 -1 2398 2.9812520369887352e-03 - - -6.2631383538246155e-02 8.0112308263778687e-02 - <_> - - 0 -1 2399 -3.6354900803416967e-03 - - 1.1051779985427856e-01 -3.6950528621673584e-02 - <_> - - 0 -1 2400 4.4591492041945457e-03 - - 2.5896830484271049e-02 -1.0620719939470291e-01 - <_> - - 0 -1 2401 1.6104400157928467e-02 - - 1.0394480079412460e-02 -4.1476351022720337e-01 - <_> - - 0 -1 2402 1.4112349599599838e-02 - - 6.1774178175255656e-04 -6.8693232536315918e-01 - <_> - - 0 -1 2403 -3.7388880737125874e-03 - - 1.5318030118942261e-01 -2.9674530029296875e-02 - <_> - - 0 -1 2404 -3.8605570793151855e-02 - - -7.0356887578964233e-01 2.6169209741055965e-03 - <_> - - 0 -1 2405 1.8483239691704512e-03 - - 7.5572483241558075e-02 -6.1567280441522598e-02 - <_> - - 0 -1 2406 -3.7039730232208967e-03 - - 1.6795060038566589e-01 -2.0140400156378746e-02 - <_> - - 0 -1 2407 -6.7307491553947330e-04 - - -1.5372750163078308e-01 2.9886560514569283e-02 - <_> - - 0 -1 2408 1.9836979918181896e-03 - - -1.8347289413213730e-02 1.3557240366935730e-01 - <_> - - 0 -1 2409 -1.9738670380320400e-04 - - 6.6614717245101929e-02 -8.0920897424221039e-02 - <_> - - 0 -1 2410 -1.4239580370485783e-02 - - -1.3320599496364594e-01 1.2875780463218689e-02 - <_> - - 0 -1 2411 4.0507009252905846e-03 - - 4.0493208914995193e-02 -1.1370310187339783e-01 - <_> - - 0 -1 2412 -1.0803360491991043e-03 - - 8.2551851868629456e-02 -5.4668750613927841e-02 - <_> - - 0 -1 2413 -1.4226039638742805e-03 - - -1.2009900063276291e-01 3.7243649363517761e-02 - <_> - - 0 -1 2414 -2.1526139229536057e-02 - - 1.9598940014839172e-01 -1.1042039841413498e-02 - <_> - - 0 -1 2415 -2.0712440833449364e-02 - - 2.9122969508171082e-01 -1.5912450850009918e-02 - <_> - - 0 -1 2416 -1.4033130137249827e-03 - - -1.2359079718589783e-01 1.6418259590864182e-02 - <_> - - 0 -1 2417 5.8878812706097960e-04 - - 3.4428730607032776e-02 -1.3279630243778229e-01 - <_> - - 0 -1 2418 -4.0147930121747777e-05 - - 5.2795641124248505e-02 -4.6990659087896347e-02 - <_> - - 0 -1 2419 2.2268320899456739e-03 - - -2.1238829940557480e-02 2.1404080092906952e-01 - <_> - - 0 -1 2420 1.3318729586899281e-02 - - 1.4480380341410637e-02 -2.3123030364513397e-01 - <_> - - 0 -1 2421 -1.7160760238766670e-02 - - -3.9468988776206970e-01 1.0943929664790630e-02 - <_> - - 0 -1 2422 3.0774369835853577e-02 - - 2.1721019875258207e-03 -3.1501969695091248e-01 - <_> - - 0 -1 2423 -1.6679989174008369e-02 - - 2.5761198997497559e-01 -1.7667369917035103e-02 - <_> - - 0 -1 2424 -9.7562937298789620e-04 - - -7.6857216656208038e-02 2.7707789093255997e-02 - <_> - - 0 -1 2425 -6.4838528633117676e-03 - - 2.0521609485149384e-01 -2.1178059279918671e-02 - <_> - - 0 -1 2426 -2.4545229971408844e-03 - - -1.5586429834365845e-01 3.2481741160154343e-02 - <_> - - 0 -1 2427 -2.4111429229378700e-03 - - 9.1278932988643646e-02 -4.8587068915367126e-02 - <_> - - 0 -1 2428 1.5041510050650686e-04 - - -9.5509223639965057e-02 5.4279290139675140e-02 - <_> - - 0 -1 2429 4.1928939521312714e-02 - - 5.5031818337738514e-03 -7.7479290962219238e-01 - <_> - - 0 -1 2430 2.0099419634789228e-03 - - -2.8640370815992355e-02 1.4182229340076447e-01 - <_> - - 0 -1 2431 1.9516570027917624e-03 - - 1.4893580228090286e-02 -3.1890881061553955e-01 - <_> - - 0 -1 2432 -1.2247270205989480e-03 - - 7.2824656963348389e-02 -3.1667441129684448e-02 - <_> - - 0 -1 2433 -1.0412910021841526e-02 - - -1.4135329425334930e-01 3.2725520431995392e-02 - <_> - - 0 -1 2434 -8.6048692464828491e-03 - - -1.7254149913787842e-01 3.4668690059334040e-03 - <_> - - 0 -1 2435 3.4611239098012447e-03 - - 3.1594958156347275e-02 -1.5405359864234924e-01 - <_> - - 0 -1 2436 4.4333230704069138e-02 - - -2.0914139226078987e-02 1.6136829555034637e-01 - <_> - - 0 -1 2437 -3.2635610550642014e-02 - - 2.1003389358520508e-01 -2.9780490323901176e-02 - <_> - - 0 -1 2438 -7.9052507877349854e-02 - - 1.8492619693279266e-01 -1.1976730078458786e-02 - <_> - - 0 -1 2439 7.3115207254886627e-02 - - 8.8554704561829567e-03 -5.1346242427825928e-01 - <_> - - 0 -1 2440 6.3138650730252266e-03 - - 1.2937859632074833e-02 -2.1465529501438141e-01 - <_> - - 0 -1 2441 -1.0274830274283886e-03 - - 1.1241199821233749e-01 -4.2139180004596710e-02 - <_> - - 0 -1 2442 -1.6066900570876896e-04 - - -9.2596597969532013e-02 3.3403988927602768e-02 - <_> - - 0 -1 2443 1.4575430192053318e-02 - - -2.3500410839915276e-02 1.8772770464420319e-01 - <_> - - 0 -1 2444 -5.7197501882910728e-03 - - -1.4184519648551941e-01 3.3893290907144547e-02 - <_> - - 0 -1 2445 -1.0095680132508278e-02 - - -3.6976811289787292e-01 1.1113449931144714e-02 - <_> - - 0 -1 2446 -1.2176940217614174e-03 - - 5.1818449050188065e-02 -4.7457851469516754e-02 - <_> - - 0 -1 2447 7.8980736434459686e-02 - - 9.7751449793577194e-03 -4.3593549728393555e-01 - <_> - - 0 -1 2448 -9.6514541655778885e-04 - - 4.8271138221025467e-02 -4.6483509242534637e-02 - <_> - - 0 -1 2449 9.1809416189789772e-03 - - -2.1579770371317863e-02 1.9924899935722351e-01 - <_> - - 0 -1 2450 -1.8495230004191399e-02 - - -3.4228208661079407e-01 6.5597319044172764e-03 - <_> - - 0 -1 2451 -2.2168110590428114e-03 - - 9.0867489576339722e-02 -5.5027540773153305e-02 - <_> - - 0 -1 2452 -1.5820340195205063e-04 - - -9.0893670916557312e-02 4.0111150592565536e-02 - <_> - - 0 -1 2453 1.5867890324443579e-03 - - -5.1445338875055313e-02 8.2311213016510010e-02 - <_> - - 0 -1 2454 1.4582079648971558e-01 - - 1.1615890543907881e-03 -8.7532532215118408e-01 - <_> - - 0 -1 2455 -6.6445011179894209e-04 - - -9.8049089312553406e-02 4.4343311339616776e-02 - <_> - - 0 -1 2456 5.8919959701597691e-03 - - 1.5775660285726190e-03 -1.0001260042190552e+00 - <_> - - 0 -1 2457 -1.3995329936733469e-05 - - 7.3066778481006622e-02 -5.7691581547260284e-02 - <_> - - 0 -1 2458 -9.9132228642702103e-03 - - -7.5529462099075317e-01 5.2168890833854675e-03 - <_> - - 0 -1 2459 -1.5792429447174072e-02 - - 2.8222128748893738e-01 -1.7060630023479462e-02 - <_> - - 0 -1 2460 -2.6797680184245110e-03 - - -7.9262927174568176e-02 1.5230569988489151e-02 - <_> - - 0 -1 2461 -1.4144170098006725e-02 - - -7.6791101694107056e-01 5.3670979104936123e-03 - <_> - - 0 -1 2462 1.6818119585514069e-01 - - 9.6734073013067245e-03 -3.3587118983268738e-01 - <_> - - 0 -1 2463 -2.0679819583892822e-01 - - -4.4644999504089355e-01 8.5481600835919380e-03 - <_> - - 0 -1 2464 1.4232929970603436e-05 - - -4.8844348639249802e-02 4.5179460197687149e-02 - <_> - - 0 -1 2465 -2.0378379151225090e-02 - - 3.2889419794082642e-01 -1.3800919987261295e-02 - <_> - - 0 -1 2466 1.4215029776096344e-02 - - -1.0470540262758732e-02 1.1338669806718826e-01 - <_> - - 0 -1 2467 4.8233679262921214e-04 - - 4.4216580688953400e-02 -1.0093499720096588e-01 - <_> - - 0 -1 2468 4.3106778321089223e-05 - - -3.8059741258621216e-02 3.7995509803295135e-02 - <_> - - 0 -1 2469 9.0388357639312744e-02 - - 8.3996197208762169e-03 -4.9610888957977295e-01 - <_> - - 0 -1 2470 3.7458650767803192e-02 - - 2.8608210850507021e-03 -3.5298860073089600e-01 - <_> - - 0 -1 2471 3.1219370663166046e-02 - - -8.9630456641316414e-03 5.2930659055709839e-01 - <_> - - 0 -1 2472 1.4717579819262028e-02 - - -3.5097280051559210e-03 2.6866179704666138e-01 - <_> - - 0 -1 2473 1.4505100436508656e-02 - - 6.5859002061188221e-03 -6.7086291313171387e-01 - <_> - - 0 -1 2474 2.6275549316778779e-04 - - 3.2062649726867676e-02 -5.3764168173074722e-02 - <_> - - 0 -1 2475 -1.5802070265635848e-03 - - 1.7928290367126465e-01 -2.2988079115748405e-02 - <_> - - 0 -1 2476 -2.4961680173873901e-02 - - -7.6229918003082275e-01 1.3633499620482326e-03 - <_> - - 0 -1 2477 -1.0827300138771534e-02 - - -4.1359999775886536e-01 1.0123790241777897e-02 - <_> - - 0 -1 2478 3.1056890729814768e-03 - - -1.4968870207667351e-02 1.4612309634685516e-01 - <_> - - 0 -1 2479 -3.2839320600032806e-02 - - -8.3612412214279175e-01 5.1855011843144894e-03 - <_> - - 0 -1 2480 -8.2352161407470703e-03 - - 2.2326070070266724e-01 -9.2590171843767166e-03 - <_> - - 0 -1 2481 9.3107353895902634e-03 - - -9.7794700413942337e-03 4.2239460349082947e-01 - <_> - - 0 -1 2482 -1.4591770246624947e-02 - - -2.4204090237617493e-01 8.5437763482332230e-03 - <_> - - 0 -1 2483 -2.1764719858765602e-02 - - -6.0603100061416626e-01 7.0369099266827106e-03 - <_> - - 0 -1 2484 1.3476300409820396e-05 - - -5.2269939333200455e-02 6.5587602555751801e-02 - <_> - - 0 -1 2485 1.3351259753108025e-02 - - -4.0418989956378937e-02 1.0951729863882065e-01 - <_> - - 0 -1 2486 -6.3701579347252846e-03 - - -1.3111020624637604e-01 3.8481429219245911e-02 - <_> - - 0 -1 2487 1.5143630094826221e-02 - - -2.0249659195542336e-02 2.1716409921646118e-01 - <_> - - 0 -1 2488 4.5786341652274132e-03 - - 1.4322079718112946e-02 -5.7222241163253784e-01 - <_> - - 0 -1 2489 -4.6741031110286713e-02 - - -7.2265928983688354e-01 4.1450331918895245e-03 - <_> - - 0 -1 2490 9.5456670969724655e-03 - - -1.0392360389232635e-02 1.8317960202693939e-01 - <_> - - 0 -1 2491 -1.7097139358520508e-01 - - -2.6629018783569336e-01 1.5714570879936218e-02 - <_> - - 0 -1 2492 -7.1421632310375571e-04 - - 6.8821117281913757e-02 -1.8535939976572990e-02 - <_> - - 0 -1 2493 4.7080889344215393e-03 - - 8.7029086425900459e-03 -4.7382900118827820e-01 - <_> - - 0 -1 2494 2.8823789762100205e-05 - - -3.5033170133829117e-02 4.1010260581970215e-02 - <_> - - 0 -1 2495 -2.3279939778149128e-03 - - 2.3261049389839172e-01 -1.7835669219493866e-02 - <_> - - 0 -1 2496 8.4805669030174613e-04 - - 2.5282969698309898e-02 -1.7157159745693207e-01 - <_> - - 0 -1 2497 -6.5123359672725201e-04 - - 8.6811847984790802e-02 -4.7068729996681213e-02 - <_> - - 0 -1 2498 -1.1371539440006018e-03 - - 8.0242671072483063e-02 -1.6520520672202110e-02 - <_> - - 0 -1 2499 -5.6554668117314577e-04 - - -1.4709630608558655e-01 3.2420728355646133e-02 - <_> - - 0 -1 2500 2.4779029190540314e-03 - - -9.6723642200231552e-03 1.3506250083446503e-01 - <_> - - 0 -1 2501 1.7332839779555798e-03 - - -2.4561529979109764e-02 1.7612139880657196e-01 - <_> - - 0 -1 2502 -4.4806491583585739e-02 - - -6.0948181152343750e-01 3.4338440746068954e-03 - <_> - - 0 -1 2503 -2.0501140505075455e-02 - - -5.4643869400024414e-01 7.2927437722682953e-03 - <_> - - 0 -1 2504 -1.6198139637708664e-02 - - -6.6130048036575317e-01 2.1677929908037186e-03 - <_> - - 0 -1 2505 1.4479210221907124e-05 - - -5.5189680308103561e-02 7.2523497045040131e-02 - <_> - - 0 -1 2506 -1.7286660149693489e-03 - - -1.7387390136718750e-01 8.9998291805386543e-03 - <_> - - 0 -1 2507 -1.3669549844053108e-05 - - 6.6204346716403961e-02 -6.1010520905256271e-02 - <_> - - 0 -1 2508 3.5130590200424194e-01 - - 1.3569389702752233e-03 -8.1200098991394043e-01 - <_> - - 0 -1 2509 2.4454699456691742e-01 - - 9.9658807739615440e-03 -4.1247910261154175e-01 - <_> - - 0 -1 2510 -3.2614581286907196e-02 - - 7.0626311004161835e-02 -2.6639420539140701e-02 - <_> - - 0 -1 2511 2.4752068566158414e-04 - - 3.3226758241653442e-02 -1.3203519582748413e-01 - <_> - - 0 -1 2512 -1.3165399432182312e-03 - - 7.8517846763134003e-02 -1.9580749794840813e-02 - <_> - - 0 -1 2513 -1.6912100545596331e-04 - - -9.7635522484779358e-02 4.3525248765945435e-02 - <_> - - 0 -1 2514 9.2338479589670897e-04 - - -2.9401849955320358e-02 8.0856159329414368e-02 - <_> - - 0 -1 2515 -1.0980790248140693e-03 - - 1.2562260031700134e-01 -3.5378601402044296e-02 - <_> - - 0 -1 2516 7.5967791490256786e-03 - - 1.2936309911310673e-02 -2.9600989818572998e-01 - <_> - - 0 -1 2517 3.6338350037112832e-04 - - 4.7169290482997894e-02 -9.5228493213653564e-02 - <_> - - 0 -1 2518 -6.4660399220883846e-03 - - 9.8374269902706146e-02 -4.1656348854303360e-02 - <_> - - 0 -1 2519 5.0431757699698210e-04 - - -6.7573040723800659e-02 6.5746881067752838e-02 - <_> - - 0 -1 2520 2.0181000232696533e-02 - - -2.6914089918136597e-02 1.6784250736236572e-01 - <_> - - 0 -1 2521 8.3369575440883636e-03 - - 4.0364239364862442e-02 -1.3436989486217499e-01 - <_> - - 0 -1 2522 6.0851150192320347e-04 - - -4.2444441467523575e-02 1.2860350310802460e-01 - <_> - - 0 -1 2523 2.4325479753315449e-03 - - 3.1940739601850510e-02 -1.8476389348506927e-01 - <_> - - 0 -1 2524 -9.9839484319090843e-03 - - 1.1942879855632782e-01 -4.2162060737609863e-02 - <_> - - 0 -1 2525 -5.5000629276037216e-02 - - -1.1925660073757172e-01 4.6324558556079865e-02 - <_> - - 0 -1 2526 1.9433120265603065e-02 - - 5.1037009805440903e-02 -5.5511191487312317e-02 - <_> - - 0 -1 2527 -5.4839542135596275e-03 - - 8.1406086683273315e-02 -6.0122720897197723e-02 - <_> - - 0 -1 2528 -3.0243439599871635e-02 - - -9.7785070538520813e-02 2.1915659308433533e-02 - <_> - - 0 -1 2529 2.0199140999466181e-03 - - -1.8789879977703094e-02 2.4053630232810974e-01 - <_> - - 0 -1 2530 1.2714860029518604e-02 - - 3.9840238168835640e-03 -3.1065699458122253e-01 - <_> - - 0 -1 2531 -1.6343439929187298e-03 - - -1.4421850442886353e-01 3.4464638680219650e-02 - <_> - - 0 -1 2532 -7.7880651224404573e-04 - - 6.4484052360057831e-02 -3.2130420207977295e-02 - <_> - - 0 -1 2533 -5.3918338380753994e-03 - - 2.0775160193443298e-01 -2.2383010014891624e-02 - <_> - - 0 -1 2534 5.8038760907948017e-03 - - 2.5264130905270576e-02 -8.7034113705158234e-02 - <_> - - 0 -1 2535 -1.5872420044615865e-03 - - -1.3280770182609558e-01 3.2864589244127274e-02 - <_> - - 0 -1 2536 -2.0254219416528940e-03 - - 5.4597068578004837e-02 -6.1921451240777969e-02 - <_> - - 0 -1 2537 -1.0030369739979506e-03 - - 9.2259302735328674e-02 -5.1212120801210403e-02 - <_> - - 0 -1 2538 2.1510530263185501e-02 - - -8.8652186095714569e-03 2.4676810204982758e-01 - <_> - - 0 -1 2539 -3.9943971205502748e-04 - - 7.5322106480598450e-02 -6.5167978405952454e-02 - <_> - - 0 -1 2540 9.4137862324714661e-03 - - 1.0708389803767204e-02 -2.1738730370998383e-01 - <_> - - 0 -1 2541 5.5900849401950836e-02 - - -2.9666159301996231e-02 1.5803800523281097e-01 - <_> - - 0 -1 2542 1.2583700008690357e-02 - - 2.0409680902957916e-02 -2.3156540095806122e-01 - <_> - - 0 -1 2543 -1.2195089831948280e-02 - - -3.1428098678588867e-01 1.3503570109605789e-02 - <_> - - 0 -1 2544 2.8386089950799942e-02 - - -1.9067099317908287e-02 1.2438379973173141e-01 - <_> - - 0 -1 2545 -2.5152720627374947e-04 - - 7.1380242705345154e-02 -5.8560580015182495e-02 - <_> - - 0 -1 2546 2.9507439583539963e-02 - - 6.3799307681620121e-03 -1.4193299412727356e-01 - <_> - - 0 -1 2547 1.2022940441966057e-02 - - -5.3622491657733917e-02 8.0924786627292633e-02 - <_> - - 0 -1 2548 1.2839339673519135e-02 - - -2.6221500709652901e-02 4.1462760418653488e-02 - <_> - - 0 -1 2549 5.8855762472376227e-04 - - 3.8205999881029129e-02 -1.1232639849185944e-01 - <_> - - 0 -1 2550 -1.8602449446916580e-02 - - 4.2938970029354095e-02 -2.1604780107736588e-02 - <_> - - 0 -1 2551 9.6901757642626762e-03 - - -6.5837942063808441e-02 9.5084339380264282e-02 - <_> - - 0 -1 2552 -2.1559480577707291e-02 - - 1.0580649971961975e-01 -1.8551910296082497e-02 - <_> - - 0 -1 2553 7.3115159757435322e-03 - - 3.6227419972419739e-02 -1.2839490175247192e-01 - <_> - - 0 -1 2554 3.5540990065783262e-03 - - -1.4768529683351517e-02 1.0962279886007309e-01 - <_> - - 0 -1 2555 -3.5278309136629105e-02 - - -1.6880880296230316e-01 2.6196459308266640e-02 - <_> - - 0 -1 2556 -4.6638878993690014e-03 - - 2.2009849548339844e-01 -1.9692299887537956e-02 - <_> - - 0 -1 2557 1.9794099498540163e-03 - - 3.6675110459327698e-02 -1.1910759657621384e-01 - <_> - - 0 -1 2558 -6.8223169073462486e-03 - - -7.6013803482055664e-02 2.6197660714387894e-02 - <_> - - 0 -1 2559 5.9645362198352814e-03 - - 4.9213368445634842e-02 -1.0780470073223114e-01 - <_> - - 0 -1 2560 1.4459050260484219e-02 - - 3.2462789677083492e-03 -8.5476738214492798e-01 - <_> - - 0 -1 2561 -3.1713109463453293e-02 - - 1.3757289946079254e-01 -3.6400198936462402e-02 - <_> - - 0 -1 2562 1.7335789743810892e-03 - - -4.3718948960304260e-02 5.9835158288478851e-02 - <_> - - 0 -1 2563 -5.0536859780550003e-03 - - -1.5021230280399323e-01 2.9182959347963333e-02 - <_> - - 0 -1 2564 8.4217369556427002e-02 - - 1.3661800185218453e-03 -9.5813941955566406e-01 - <_> - - 0 -1 2565 -1.0397040285170078e-02 - - 1.3979810476303101e-01 -3.3863049000501633e-02 - <_> - - 0 -1 2566 2.2687430027872324e-03 - - 1.8805570900440216e-02 -6.6583722829818726e-02 - <_> - - 0 -1 2567 -8.4558986127376556e-03 - - 9.0560458600521088e-02 -5.0610478967428207e-02 - <_> - - 0 -1 2568 1.3801630120724440e-03 - - 1.7754420638084412e-02 -2.1638050675392151e-01 - <_> - - 0 -1 2569 -5.5963802151381969e-03 - - -2.8498208522796631e-01 1.5376719646155834e-02 - <_> - - 0 -1 2570 2.6721679023467004e-04 - - -3.9111170917749405e-02 6.6796816885471344e-02 - <_> - - 0 -1 2571 -2.1694051101803780e-03 - - 2.2806470096111298e-01 -1.9059510901570320e-02 - <_> - - 0 -1 2572 -3.1538289040327072e-02 - - -8.6931541562080383e-02 9.8167890682816505e-03 - <_> - - 0 -1 2573 -7.5018982170149684e-04 - - 9.9676176905632019e-02 -4.2362589389085770e-02 - <_> - - 0 -1 2574 -6.4003129955381155e-04 - - 6.2989667057991028e-02 -3.9446629583835602e-02 - <_> - - 0 -1 2575 -1.5866950154304504e-02 - - -4.8367229104042053e-01 8.9298039674758911e-03 - <_> - - 0 -1 2576 8.7925972184166312e-04 - - -7.2101019322872162e-02 4.3867569416761398e-02 - <_> - - 0 -1 2577 -4.5651597902178764e-03 - - -1.3108620047569275e-01 3.7173461169004440e-02 - <_> - - 0 -1 2578 -2.7413619682192802e-03 - - 1.1473529785871506e-01 -4.2169798165559769e-02 - <_> - - 0 -1 2579 -2.1342469379305840e-02 - - -6.8548619747161865e-01 5.8210380375385284e-03 - <_> - - 0 -1 2580 1.4491120055026840e-05 - - -2.9132340103387833e-02 3.3831749111413956e-02 - <_> - 309 - -7.9887461662292480e-01 - - <_> - - 0 -1 2581 -1.8552249297499657e-02 - - 3.3236879110336304e-01 -7.6788291335105896e-02 - <_> - - 0 -1 2582 3.7926589720882475e-04 - - 1.7414020374417305e-02 -5.7631779462099075e-02 - <_> - - 0 -1 2583 2.1424360573291779e-02 - - -6.4302399754524231e-02 2.4737679958343506e-01 - <_> - - 0 -1 2584 4.4263061136007309e-03 - - -7.7862620353698730e-02 1.6879579424858093e-01 - <_> - - 0 -1 2585 -1.5863520093262196e-04 - - 1.4739909768104553e-01 -5.0722010433673859e-02 - <_> - - 0 -1 2586 -6.6188991069793701e-02 - - 5.7475470006465912e-02 -5.5869068950414658e-02 - <_> - - 0 -1 2587 3.4559089690446854e-02 - - -6.9819921627640724e-03 -4.1039318847656250e+02 - <_> - - 0 -1 2588 7.3930531740188599e-02 - - 6.0889549786224961e-05 -1.9960350036621094e+02 - <_> - - 0 -1 2589 1.8902160227298737e-02 - - 2.9056149287498556e-05 -5.2581162109375000e+03 - <_> - - 0 -1 2590 1.9612549804151058e-03 - - -2.3328019306063652e-02 4.2286589741706848e-02 - <_> - - 0 -1 2591 -2.7586980722844601e-03 - - -1.7501020431518555e-01 4.9470871686935425e-02 - <_> - - 0 -1 2592 -1.2046890333294868e-02 - - 2.2035419940948486e-01 1.2788879685103893e-02 - <_> - - 0 -1 2593 -1.8279790878295898e-02 - - 4.5822000503540039e-01 -1.9634220749139786e-02 - <_> - - 0 -1 2594 4.3859930883627385e-05 - - -3.4029088914394379e-02 3.8145478814840317e-02 - <_> - - 0 -1 2595 7.6734893023967743e-02 - - -3.1122019514441490e-02 2.9373010993003845e-01 - <_> - - 0 -1 2596 -2.2784480825066566e-02 - - 1.0999619960784912e-01 -4.7260750085115433e-02 - <_> - - 0 -1 2597 1.7537520034238696e-03 - - 7.7944591641426086e-02 -9.3691043555736542e-02 - <_> - - 0 -1 2598 -7.5380277121439576e-04 - - -1.2007279694080353e-01 3.7189111113548279e-02 - <_> - - 0 -1 2599 4.9356842646375299e-04 - - -5.6529350578784943e-02 1.1932630091905594e-01 - <_> - - 0 -1 2600 -3.1938559841364622e-03 - - 2.3886230587959290e-01 -1.0429210029542446e-02 - <_> - - 0 -1 2601 -6.2314997194334865e-04 - - -1.4654360711574554e-01 4.6651639044284821e-02 - <_> - - 0 -1 2602 7.5532711343839765e-04 - - -3.2616719603538513e-02 1.0278490185737610e-01 - <_> - - 0 -1 2603 -6.0558720724657178e-04 - - 1.4802519977092743e-01 -5.5854860693216324e-02 - <_> - - 0 -1 2604 -1.2911390513181686e-03 - - -2.4329729378223419e-01 2.1729959174990654e-02 - <_> - - 0 -1 2605 1.0470219422131777e-03 - - 3.1796138733625412e-02 -2.0254389941692352e-01 - <_> - - 0 -1 2606 2.2770989744458348e-04 - - -9.9047839641571045e-02 8.5004203021526337e-02 - <_> - - 0 -1 2607 -6.8532312288880348e-03 - - 9.5258437097072601e-02 -6.6690467298030853e-02 - <_> - - 0 -1 2608 1.6310160281136632e-03 - - 2.5861479341983795e-02 -1.2913499772548676e-01 - <_> - - 0 -1 2609 8.4447831613942981e-04 - - -9.9558450281620026e-02 7.8244321048259735e-02 - <_> - - 0 -1 2610 1.2907589785754681e-02 - - -1.9313080236315727e-02 1.5871819853782654e-01 - <_> - - 0 -1 2611 -1.8375849351286888e-02 - - -1.6427409648895264e-01 3.7290308624505997e-02 - <_> - - 0 -1 2612 7.7001117169857025e-02 - - 4.6129091642796993e-03 -3.5554099082946777e-01 - <_> - - 0 -1 2613 4.3118221219629049e-04 - - -7.4013233184814453e-02 7.7864721417427063e-02 - <_> - - 0 -1 2614 -2.3275790736079216e-03 - - 1.2112230062484741e-01 -6.0913208872079849e-02 - <_> - - 0 -1 2615 3.4061390906572342e-03 - - 4.6381261199712753e-02 -1.5369950234889984e-01 - <_> - - 0 -1 2616 1.6798749566078186e-03 - - -4.8045791685581207e-02 1.6896919906139374e-01 - <_> - - 0 -1 2617 -2.8759230190189555e-05 - - 7.1234047412872314e-02 -8.4967203438282013e-02 - <_> - - 0 -1 2618 -3.8337870500981808e-03 - - 8.6094066500663757e-02 -1.8024690449237823e-02 - <_> - - 0 -1 2619 -3.9875688962638378e-03 - - -1.9953170418739319e-01 3.2206621021032333e-02 - <_> - - 0 -1 2620 9.3647763133049011e-03 - - -3.1845349818468094e-02 1.1254569888114929e-01 - <_> - - 0 -1 2621 -1.8147890223190188e-03 - - 8.5613116621971130e-02 -6.8807862699031830e-02 - <_> - - 0 -1 2622 2.3888219147920609e-03 - - 4.1106618940830231e-02 -1.3841870427131653e-01 - <_> - - 0 -1 2623 7.7157230116426945e-03 - - -4.8835061490535736e-02 1.2875230610370636e-01 - <_> - - 0 -1 2624 1.2959349900484085e-02 - - 1.2101089581847191e-02 -7.2399519383907318e-02 - <_> - - 0 -1 2625 2.0204610191285610e-03 - - -7.5819760560989380e-02 9.4004109501838684e-02 - <_> - - 0 -1 2626 2.4580449098721147e-04 - - 2.7981899678707123e-02 -7.9659119248390198e-02 - <_> - - 0 -1 2627 2.6291629672050476e-01 - - 7.6313978061079979e-03 -6.2488871812820435e-01 - <_> - - 0 -1 2628 5.4684141650795937e-04 - - 3.6020711064338684e-02 -1.2037140130996704e-01 - <_> - - 0 -1 2629 2.2176979109644890e-03 - - -2.5367310270667076e-02 1.9185779988765717e-01 - <_> - - 0 -1 2630 -1.7476399661973119e-03 - - -6.5879262983798981e-02 2.9718939214944839e-02 - <_> - - 0 -1 2631 -2.3619020357728004e-02 - - 2.6847231388092041e-01 -1.8415899947285652e-02 - <_> - - 0 -1 2632 -2.8751560021191835e-03 - - -1.2898570299148560e-01 2.4393929168581963e-02 - <_> - - 0 -1 2633 6.8191969767212868e-03 - - 1.8544880673289299e-02 -2.7904790639877319e-01 - <_> - - 0 -1 2634 3.0725370161235332e-03 - - -2.1483320742845535e-02 2.4263529479503632e-01 - <_> - - 0 -1 2635 -2.0298749208450317e-02 - - -1.4076599478721619e-01 3.2566029578447342e-02 - <_> - - 0 -1 2636 -1.5689089894294739e-02 - - -6.9940197467803955e-01 3.9432961493730545e-03 - <_> - - 0 -1 2637 -1.1604740284383297e-03 - - 9.5765352249145508e-02 -6.2716588377952576e-02 - <_> - - 0 -1 2638 7.5667561031877995e-03 - - -2.6595719158649445e-02 1.9355979561805725e-01 - <_> - - 0 -1 2639 -3.1542551005259156e-04 - - 7.0579119026660919e-02 -7.1788802742958069e-02 - <_> - - 0 -1 2640 2.9042719397693872e-03 - - -6.1845920979976654e-02 4.2431510984897614e-02 - <_> - - 0 -1 2641 3.5413689911365509e-03 - - 5.9017430990934372e-02 -9.6548438072204590e-02 - <_> - - 0 -1 2642 1.1393419699743390e-03 - - 4.3081670999526978e-02 -1.4239120483398438e-01 - <_> - - 0 -1 2643 -4.6505071222782135e-03 - - 1.3614599406719208e-01 -4.5110020786523819e-02 - <_> - - 0 -1 2644 -3.4854039549827576e-03 - - -6.9675557315349579e-02 1.4633069746196270e-02 - <_> - - 0 -1 2645 -3.7426329217851162e-03 - - -1.5967729687690735e-01 3.3669691532850266e-02 - <_> - - 0 -1 2646 -2.9627270996570587e-03 - - 2.0822240412235260e-01 -2.2225260734558105e-02 - <_> - - 0 -1 2647 -3.4283090382814407e-02 - - 2.1095730364322662e-01 -2.3902049288153648e-02 - <_> - - 0 -1 2648 3.3819628879427910e-04 - - 3.9674218744039536e-02 -1.3274720311164856e-01 - <_> - - 0 -1 2649 2.3642720188945532e-03 - - -2.4829670786857605e-02 2.0826670527458191e-01 - <_> - - 0 -1 2650 -1.2370860204100609e-02 - - -1.7958630621433258e-01 7.0276390761137009e-03 - <_> - - 0 -1 2651 -9.7465672297403216e-04 - - 6.9008462131023407e-02 -7.2172008454799652e-02 - <_> - - 0 -1 2652 4.1931481100618839e-03 - - -4.4049788266420364e-02 6.0757238417863846e-02 - <_> - - 0 -1 2653 -5.9395581483840942e-03 - - -1.1568579822778702e-01 4.6306878328323364e-02 - <_> - - 0 -1 2654 3.3657620660960674e-03 - - 7.1067977696657181e-03 -5.6800097227096558e-01 - <_> - - 0 -1 2655 5.2664991468191147e-02 - - -8.0993287265300751e-03 6.1797207593917847e-01 - <_> - - 0 -1 2656 -8.6903236806392670e-03 - - 8.8130272924900055e-02 -5.3699720650911331e-02 - <_> - - 0 -1 2657 5.1246141083538532e-04 - - 3.2490119338035583e-02 -1.4880390465259552e-01 - <_> - - 0 -1 2658 4.1789390146732330e-02 - - -1.0749000124633312e-02 1.7396600544452667e-01 - <_> - - 0 -1 2659 1.2822130229324102e-03 - - -4.3590739369392395e-02 1.0424520075321198e-01 - <_> - - 0 -1 2660 1.5393650159239769e-02 - - 1.2413539923727512e-02 -1.1460710316896439e-01 - <_> - - 0 -1 2661 -7.1986489929258823e-03 - - -1.5547029674053192e-01 3.2518330961465836e-02 - <_> - - 0 -1 2662 2.4960329756140709e-03 - - -3.2073240727186203e-02 6.2223941087722778e-02 - <_> - - 0 -1 2663 1.5824640169739723e-02 - - -3.3876150846481323e-02 1.3409389555454254e-01 - <_> - - 0 -1 2664 -1.1245839996263385e-03 - - -1.0918530076742172e-01 3.2895151525735855e-02 - <_> - - 0 -1 2665 1.5742470277473330e-03 - - -6.6320508718490601e-02 6.3174061477184296e-02 - <_> - - 0 -1 2666 1.3438949827104807e-03 - - -3.1797438859939575e-02 8.5642039775848389e-02 - <_> - - 0 -1 2667 -1.7369530396535993e-03 - - -1.0020039975643158e-01 4.5710239559412003e-02 - <_> - - 0 -1 2668 1.3791640289127827e-02 - - -1.3253919780254364e-02 1.0214310139417648e-01 - <_> - - 0 -1 2669 -1.0735140182077885e-02 - - 1.2846539914608002e-01 -3.9404049515724182e-02 - <_> - - 0 -1 2670 2.9586190357804298e-03 - - 2.0358830690383911e-02 -6.5112963318824768e-02 - <_> - - 0 -1 2671 4.0438622236251831e-03 - - -2.4486489593982697e-02 1.7876209318637848e-01 - <_> - - 0 -1 2672 -3.6525711417198181e-02 - - -3.0766680836677551e-01 3.2902029342949390e-03 - <_> - - 0 -1 2673 8.7369624525308609e-03 - - 2.9470490291714668e-02 -1.5324589610099792e-01 - <_> - - 0 -1 2674 2.0252179820090532e-03 - - -4.0819671005010605e-02 5.9705868363380432e-02 - <_> - - 0 -1 2675 5.5626290850341320e-03 - - 1.1083589866757393e-02 -3.8313630223274231e-01 - <_> - - 0 -1 2676 -1.4883900294080377e-03 - - 8.7504617869853973e-02 -6.4911797642707825e-02 - <_> - - 0 -1 2677 1.4624910363636445e-05 - - -7.4116103351116180e-02 5.5589601397514343e-02 - <_> - - 0 -1 2678 3.4180650254711509e-04 - - -5.3940810263156891e-02 5.3457278758287430e-02 - <_> - - 0 -1 2679 1.5538090374320745e-03 - - 5.6233700364828110e-02 -8.4622420370578766e-02 - <_> - - 0 -1 2680 6.7849917104467750e-04 - - -3.8959890604019165e-02 1.0434179753065109e-01 - <_> - - 0 -1 2681 -4.7519501298666000e-02 - - 1.0885579884052277e-01 -4.0618479251861572e-02 - <_> - - 0 -1 2682 2.4074900895357132e-02 - - 3.5018681082874537e-03 -6.4238542318344116e-01 - <_> - - 0 -1 2683 3.7433409597724676e-03 - - 2.6027470827102661e-02 -1.6493119299411774e-01 - <_> - - 0 -1 2684 7.2088050656020641e-03 - - -1.2712650001049042e-02 1.3134109973907471e-01 - <_> - - 0 -1 2685 -1.0108030401170254e-03 - - 6.1837401241064072e-02 -8.2996368408203125e-02 - <_> - - 0 -1 2686 4.1825440712273121e-03 - - -1.0030060075223446e-02 1.1928550153970718e-01 - <_> - - 0 -1 2687 -3.1841539312154055e-03 - - -2.5018841028213501e-01 1.7455190420150757e-02 - <_> - - 0 -1 2688 -2.5301869958639145e-02 - - -4.0261000394821167e-01 1.0077700018882751e-02 - <_> - - 0 -1 2689 -7.3312386870384216e-02 - - 2.7588349580764771e-01 -1.7455000430345535e-02 - <_> - - 0 -1 2690 2.8851899504661560e-01 - - 9.3694366514682770e-03 -2.5082978606224060e-01 - <_> - - 0 -1 2691 -3.0820369720458984e-03 - - 2.5158360600471497e-01 -1.8791029229760170e-02 - <_> - - 0 -1 2692 -1.5379919670522213e-02 - - -3.3297958970069885e-01 6.7029618658125401e-03 - <_> - - 0 -1 2693 -2.5755220558494329e-03 - - -1.4434809982776642e-01 3.0039159581065178e-02 - <_> - - 0 -1 2694 -2.1770859602838755e-03 - - 6.2653936445713043e-02 -3.4369219094514847e-02 - <_> - - 0 -1 2695 -1.1601459980010986e-01 - - -1.2724180519580841e-01 3.5242829471826553e-02 - <_> - - 0 -1 2696 3.9402980357408524e-02 - - -1.7962940037250519e-02 8.2134842872619629e-02 - <_> - - 0 -1 2697 3.1257659196853638e-02 - - -4.9964789301156998e-02 1.0353790223598480e-01 - <_> - - 0 -1 2698 2.6839839294552803e-02 - - -3.4829258918762207e-02 7.7249996364116669e-02 - <_> - - 0 -1 2699 6.1816979199647903e-02 - - -3.2788280397653580e-02 1.3600580394268036e-01 - <_> - - 0 -1 2700 6.3738808035850525e-02 - - 1.5652630478143692e-02 -1.4570459723472595e-01 - <_> - - 0 -1 2701 -3.6892290227115154e-03 - - -1.3121150434017181e-01 3.6355018615722656e-02 - <_> - - 0 -1 2702 -8.2587070763111115e-02 - - -1.7447319626808167e-01 5.7495138607919216e-03 - <_> - - 0 -1 2703 5.6636601686477661e-02 - - -1.0941830463707447e-02 4.2631658911705017e-01 - <_> - - 0 -1 2704 -6.5044318325817585e-03 - - 7.4859157204627991e-02 -3.5383179783821106e-02 - <_> - - 0 -1 2705 -2.3780569434165955e-02 - - -1.5401679277420044e-01 3.0552649870514870e-02 - <_> - - 0 -1 2706 2.8647059574723244e-02 - - 4.9762979149818420e-02 -4.5181389898061752e-02 - <_> - - 0 -1 2707 -5.7239918969571590e-03 - - 1.3393920660018921e-01 -3.6599840968847275e-02 - <_> - - 0 -1 2708 -1.8808670341968536e-01 - - -8.2748666405677795e-02 1.3201599940657616e-02 - <_> - - 0 -1 2709 -1.5791060402989388e-02 - - 1.6398489475250244e-01 -2.7588550001382828e-02 - <_> - - 0 -1 2710 9.5513111352920532e-01 - - -2.2177249193191528e-03 3.4002560377120972e-01 - <_> - - 0 -1 2711 6.9580972194671631e-01 - - -1.0847539640963078e-02 4.2184200882911682e-01 - <_> - - 0 -1 2712 -2.2638689726591110e-02 - - -6.9218701124191284e-01 1.8343270057812333e-03 - <_> - - 0 -1 2713 2.4945749901235104e-03 - - 3.4244280308485031e-02 -1.2839129567146301e-01 - <_> - - 0 -1 2714 1.1748660355806351e-02 - - -1.3351519592106342e-02 1.3926979899406433e-01 - <_> - - 0 -1 2715 -9.7356218611821532e-04 - - 1.0277090221643448e-01 -5.4498881101608276e-02 - <_> - - 0 -1 2716 -2.5124179199337959e-02 - - -1.2226320058107376e-01 2.4546569213271141e-02 - <_> - - 0 -1 2717 -2.9109479859471321e-02 - - -1.3387270271778107e-01 3.4804411232471466e-02 - <_> - - 0 -1 2718 -2.5209460407495499e-02 - - 1.5426969528198242e-01 -2.9093060642480850e-02 - <_> - - 0 -1 2719 2.8921720513608307e-05 - - -8.7873406708240509e-02 5.0044890493154526e-02 - <_> - - 0 -1 2720 1.5944410115480423e-03 - - -2.1487699821591377e-02 3.3794458955526352e-02 - <_> - - 0 -1 2721 -2.4497460108250380e-03 - - 9.3932069838047028e-02 -4.6001140028238297e-02 - <_> - - 0 -1 2722 1.0740390047430992e-02 - - 4.5302681624889374e-02 -9.2800490558147430e-02 - <_> - - 0 -1 2723 3.4238519147038460e-03 - - -6.3131660223007202e-02 7.8274093568325043e-02 - <_> - - 0 -1 2724 1.2687790207564831e-02 - - -1.4953400008380413e-02 2.3682670295238495e-01 - <_> - - 0 -1 2725 -7.3656099848449230e-03 - - -1.9476279616355896e-01 2.4360220879316330e-02 - <_> - - 0 -1 2726 1.0200890153646469e-01 - - 4.0122540667653084e-03 -5.3724962472915649e-01 - <_> - - 0 -1 2727 -2.6625579223036766e-02 - - 1.7184010148048401e-01 -2.5444649159908295e-02 - <_> - - 0 -1 2728 -2.9014078900218010e-03 - - -3.6081880331039429e-01 8.7030120193958282e-03 - <_> - - 0 -1 2729 -1.4157840269035660e-05 - - 6.8706989288330078e-02 -6.4286127686500549e-02 - <_> - - 0 -1 2730 -6.1351951444521546e-04 - - -6.6050916910171509e-02 2.2572780027985573e-02 - <_> - - 0 -1 2731 2.0250449888408184e-03 - - -1.9751559942960739e-02 2.2373759746551514e-01 - <_> - - 0 -1 2732 4.2518540285527706e-03 - - 2.3174580186605453e-02 -7.0114336907863617e-02 - <_> - - 0 -1 2733 -2.1689679473638535e-02 - - -5.1939392089843750e-01 8.3778435364365578e-03 - <_> - - 0 -1 2734 -1.4693619959871285e-05 - - 4.3421141803264618e-02 -4.3481610715389252e-02 - <_> - - 0 -1 2735 -1.1886609718203545e-03 - - -1.4900510013103485e-01 2.8446840122342110e-02 - <_> - - 0 -1 2736 -2.3027509450912476e-03 - - 3.8527239114046097e-02 -4.0906090289354324e-02 - <_> - - 0 -1 2737 -1.2595600448548794e-02 - - 1.0461640357971191e-01 -3.8185920566320419e-02 - <_> - - 0 -1 2738 -6.2729697674512863e-03 - - 9.3321256339550018e-02 -4.8175711184740067e-02 - <_> - - 0 -1 2739 -4.6335258521139622e-03 - - -1.3342230021953583e-01 3.1944058835506439e-02 - <_> - - 0 -1 2740 -9.7669087350368500e-02 - - -4.1564458608627319e-01 4.0813097730278969e-03 - <_> - - 0 -1 2741 -1.0522989928722382e-01 - - -4.2108398675918579e-01 9.7584994509816170e-03 - <_> - - 0 -1 2742 3.0224110931158066e-02 - - 1.7810890451073647e-02 -1.8008120357990265e-01 - <_> - - 0 -1 2743 -4.4741849415004253e-03 - - 1.7108829319477081e-01 -2.5597169995307922e-02 - <_> - - 0 -1 2744 -1.4250929780246224e-05 - - 3.8947280496358871e-02 -4.8989661037921906e-02 - <_> - - 0 -1 2745 -1.3952420093119144e-02 - - -2.8586119413375854e-01 1.4210299588739872e-02 - <_> - - 0 -1 2746 -5.9520517243072391e-04 - - 2.8458939865231514e-02 -4.8770058900117874e-02 - <_> - - 0 -1 2747 1.2668339535593987e-02 - - -1.9914640113711357e-02 2.2914430499076843e-01 - <_> - - 0 -1 2748 -6.5630413591861725e-02 - - 9.5949631929397583e-01 -8.1838190089911222e-04 - <_> - - 0 -1 2749 5.1044370047748089e-04 - - -6.2212668359279633e-02 6.8753853440284729e-02 - <_> - - 0 -1 2750 8.2773733884096146e-03 - - 7.8722098842263222e-03 -5.2360677719116211e-01 - <_> - - 0 -1 2751 -1.3714290224015713e-02 - - 2.9130959510803223e-01 -1.6186399385333061e-02 - <_> - - 0 -1 2752 -1.6599230002611876e-03 - - -1.8650990724563599e-01 2.1775769069790840e-02 - <_> - - 0 -1 2753 1.3917240314185619e-02 - - -5.4833069443702698e-02 7.5145483016967773e-02 - <_> - - 0 -1 2754 -1.4104699715971947e-02 - - -1.2660549581050873e-01 3.9071101695299149e-02 - <_> - - 0 -1 2755 -2.6598859578371048e-02 - - 9.9623836576938629e-02 -4.5457080006599426e-02 - <_> - - 0 -1 2756 -5.3842482157051563e-04 - - -8.2026347517967224e-02 2.7188310399651527e-02 - <_> - - 0 -1 2757 1.4044049748918042e-05 - - -6.2360528856515884e-02 6.7301332950592041e-02 - <_> - - 0 -1 2758 -3.9561990648508072e-02 - - -4.8174971342086792e-01 4.6106358058750629e-03 - <_> - - 0 -1 2759 1.0853289859369397e-03 - - 2.6313990354537964e-02 -1.5306760370731354e-01 - <_> - - 0 -1 2760 -1.9153479486703873e-02 - - 1.8400320410728455e-01 -9.7944093868136406e-03 - <_> - - 0 -1 2761 3.0306449159979820e-02 - - -1.0793870314955711e-02 3.9886739850044250e-01 - <_> - - 0 -1 2762 1.6124650137498975e-03 - - -1.1791810393333435e-02 1.2058059871196747e-01 - <_> - - 0 -1 2763 1.2632669880986214e-02 - - 9.2375585809350014e-03 -4.2379188537597656e-01 - <_> - - 0 -1 2764 -4.3210129661019892e-05 - - 5.3656429052352905e-02 -4.3450549244880676e-02 - <_> - - 0 -1 2765 1.4556180394720286e-04 - - -5.0275009125471115e-02 7.6121151447296143e-02 - <_> - - 0 -1 2766 1.4344939700094983e-05 - - -5.1202371716499329e-02 5.5829189717769623e-02 - <_> - - 0 -1 2767 -7.3230598354712129e-04 - - 1.3922749459743500e-01 -3.2454621046781540e-02 - <_> - - 0 -1 2768 1.1387620121240616e-02 - - -6.2937070615589619e-03 1.8512730300426483e-01 - <_> - - 0 -1 2769 -2.5180529337376356e-03 - - -1.3749399781227112e-01 3.2907929271459579e-02 - <_> - - 0 -1 2770 5.1528509706258774e-02 - - -1.1617249809205532e-02 1.0777329653501511e-01 - <_> - - 0 -1 2771 -2.5644950568675995e-02 - - 1.2324140220880508e-01 -3.5101208835840225e-02 - <_> - - 0 -1 2772 1.6199030214920640e-03 - - 3.3527150750160217e-02 -1.3585910201072693e-01 - <_> - - 0 -1 2773 -1.8191960407420993e-03 - - -1.6489550471305847e-01 3.0319610610604286e-02 - <_> - - 0 -1 2774 -3.1801960431039333e-03 - - 1.1684840172529221e-01 -1.8739059567451477e-02 - <_> - - 0 -1 2775 9.2808151384815574e-04 - - 3.8395769894123077e-02 -1.1520709842443466e-01 - <_> - - 0 -1 2776 -4.1049402207136154e-03 - - 4.4779919087886810e-02 -2.7737030759453773e-02 - <_> - - 0 -1 2777 6.7887702025473118e-03 - - -4.8911478370428085e-02 9.7002588212490082e-02 - <_> - - 0 -1 2778 -4.7330660745501518e-03 - - -9.3821138143539429e-02 2.7040770277380943e-02 - <_> - - 0 -1 2779 -2.1507510915398598e-02 - - 1.4032480120658875e-01 -3.1963579356670380e-02 - <_> - - 0 -1 2780 5.0437378883361816e-01 - - 8.9663412654772401e-04 -1.0000989437103271e+00 - <_> - - 0 -1 2781 -2.8804481029510498e-01 - - -3.1754299998283386e-01 1.2626879848539829e-02 - <_> - - 0 -1 2782 -5.2623480558395386e-02 - - 8.1666037440299988e-02 -1.2998109683394432e-02 - <_> - - 0 -1 2783 4.1319038718938828e-03 - - -7.2914630174636841e-02 7.3860652744770050e-02 - <_> - - 0 -1 2784 3.5127711016684771e-03 - - 2.1715799346566200e-02 -9.8766706883907318e-02 - <_> - - 0 -1 2785 -6.7080818116664886e-03 - - -2.4903470277786255e-01 2.0480340346693993e-02 - <_> - - 0 -1 2786 -1.3876140117645264e-02 - - 7.2459720075130463e-02 -1.1381589807569981e-02 - <_> - - 0 -1 2787 3.6984090693295002e-03 - - -5.0353258848190308e-02 1.0232850164175034e-01 - <_> - - 0 -1 2788 -5.5892078671604395e-04 - - 5.5168900638818741e-02 -2.3259639739990234e-02 - <_> - - 0 -1 2789 1.9318210252095014e-04 - - -5.3024489432573318e-02 8.0820031464099884e-02 - <_> - - 0 -1 2790 5.4443400353193283e-02 - - 1.9684119615703821e-03 -4.9336650967597961e-01 - <_> - - 0 -1 2791 5.7882429100573063e-03 - - 4.2235270142555237e-02 -9.3656897544860840e-02 - <_> - - 0 -1 2792 -5.3214468061923981e-04 - - -6.8211279809474945e-02 4.0915060788393021e-02 - <_> - - 0 -1 2793 -1.5291050076484680e-03 - - 1.3078080117702484e-01 -3.1037170439958572e-02 - <_> - - 0 -1 2794 1.4692340300825890e-05 - - -9.7166307270526886e-02 5.8675400912761688e-02 - <_> - - 0 -1 2795 8.1570359179750085e-04 - - -5.2740119397640228e-02 8.4838531911373138e-02 - <_> - - 0 -1 2796 8.3234731573611498e-04 - - -4.5831769704818726e-02 6.0256149619817734e-02 - <_> - - 0 -1 2797 -1.8306729616597295e-03 - - -2.7214428782463074e-01 1.8664810806512833e-02 - <_> - - 0 -1 2798 1.6016690060496330e-03 - - -2.3981889709830284e-02 1.5741920471191406e-01 - <_> - - 0 -1 2799 1.5611300477758050e-03 - - 4.9081899225711823e-02 -9.3477390706539154e-02 - <_> - - 0 -1 2800 -5.3921141661703587e-03 - - 8.7293423712253571e-02 -3.9956189692020416e-02 - <_> - - 0 -1 2801 1.6652110498398542e-03 - - -5.1185470074415207e-02 7.7633060514926910e-02 - <_> - - 0 -1 2802 -1.2331049656495452e-03 - - -7.4288368225097656e-02 2.3193370550870895e-02 - <_> - - 0 -1 2803 5.6793959811329842e-04 - - -6.6756121814250946e-02 8.2881033420562744e-02 - <_> - - 0 -1 2804 1.5132910339161754e-03 - - 2.0081700757145882e-02 -7.6579719781875610e-02 - <_> - - 0 -1 2805 -1.0698379483073950e-03 - - -1.3229699432849884e-01 4.2196661233901978e-02 - <_> - - 0 -1 2806 -1.7369719222187996e-02 - - 2.7938818931579590e-01 -1.5034230425953865e-02 - <_> - - 0 -1 2807 -9.2626689001917839e-03 - - -2.2753229737281799e-01 1.9179979339241982e-02 - <_> - - 0 -1 2808 1.8482010811567307e-02 - - -1.4924430288374424e-02 3.1277260184288025e-01 - <_> - - 0 -1 2809 -1.4998589642345905e-02 - - 2.6199528574943542e-01 -1.5377020463347435e-02 - <_> - - 0 -1 2810 6.5004371572285891e-04 - - 2.4507129564881325e-02 -1.6830539703369141e-01 - <_> - - 0 -1 2811 -2.5195319205522537e-02 - - -5.9329587221145630e-01 6.0378611087799072e-03 - <_> - - 0 -1 2812 8.1507470458745956e-03 - - -1.5775049105286598e-02 1.2555959820747375e-01 - <_> - - 0 -1 2813 4.5397952198982239e-03 - - 7.2475941851735115e-03 -5.6123107671737671e-01 - <_> - - 0 -1 2814 2.8840870072599500e-05 - - -6.5030217170715332e-02 5.5643379688262939e-02 - <_> - - 0 -1 2815 -4.3392801284790039e-01 - - -5.7634198665618896e-01 7.1343099698424339e-03 - <_> - - 0 -1 2816 -2.1952809765934944e-03 - - 4.5806728303432465e-02 -2.1312480792403221e-02 - <_> - - 0 -1 2817 -1.1394290486350656e-03 - - 1.4237360656261444e-01 -2.5946369394659996e-02 - <_> - - 0 -1 2818 3.0147060751914978e-03 - - 1.7312619835138321e-02 -3.8250389695167542e-01 - <_> - - 0 -1 2819 1.5648039698135108e-04 - - 3.9767131209373474e-02 -9.9703207612037659e-02 - <_> - - 0 -1 2820 1.0532010346651077e-03 - - -1.5648569911718369e-02 9.7645491361618042e-02 - <_> - - 0 -1 2821 -7.9741291701793671e-03 - - 1.8544709682464600e-01 -2.2098619490861893e-02 - <_> - - 0 -1 2822 -4.7134719789028168e-03 - - -9.1619712114334106e-01 3.6266651004552841e-03 - <_> - - 0 -1 2823 1.4999460428953171e-02 - - -9.6984812989830971e-03 5.0326949357986450e-01 - <_> - - 0 -1 2824 2.7833459898829460e-03 - - 4.8701078630983829e-03 -2.6087599992752075e-01 - <_> - - 0 -1 2825 2.1982809994369745e-04 - - 3.7642948329448700e-02 -1.1638490110635757e-01 - <_> - - 0 -1 2826 -5.5281631648540497e-04 - - 5.3662311285734177e-02 -1.8457710742950439e-02 - <_> - - 0 -1 2827 8.1757438601925969e-04 - - -3.0396200716495514e-02 1.4339430630207062e-01 - <_> - - 0 -1 2828 -5.7877011597156525e-02 - - -5.6250417232513428e-01 3.0934759415686131e-03 - <_> - - 0 -1 2829 -4.4983409345149994e-02 - - -8.4331500530242920e-01 4.5743319205939770e-03 - <_> - - 0 -1 2830 -1.6125569818541408e-03 - - -1.6456800699234009e-01 2.5509359315037727e-02 - <_> - - 0 -1 2831 7.2911148890852928e-03 - - -4.7056321054697037e-02 8.0835387110710144e-02 - <_> - - 0 -1 2832 1.7726710066199303e-03 - - 3.7935160100460052e-02 -6.6936686635017395e-02 - <_> - - 0 -1 2833 -8.0677121877670288e-03 - - -1.9031119346618652e-01 2.4777170270681381e-02 - <_> - - 0 -1 2834 -7.9460779670625925e-04 - - 8.6663946509361267e-02 -3.5398159176111221e-02 - <_> - - 0 -1 2835 -1.4300229850050528e-05 - - 6.0487300157546997e-02 -6.5558813512325287e-02 - <_> - - 0 -1 2836 2.0962581038475037e-03 - - -2.0192330703139305e-02 1.3147759437561035e-01 - <_> - - 0 -1 2837 5.0030398415401578e-04 - - 3.4723591059446335e-02 -1.1322329938411713e-01 - <_> - - 0 -1 2838 2.0867818966507912e-03 - - -1.3874029740691185e-02 6.8921387195587158e-02 - <_> - - 0 -1 2839 3.3986899070441723e-03 - - -1.8986670300364494e-02 2.0400190353393555e-01 - <_> - - 0 -1 2840 1.1253410018980503e-02 - - 2.2273620124906301e-03 -9.2255651950836182e-01 - <_> - - 0 -1 2841 -1.2344319839030504e-03 - - -1.2524029612541199e-01 3.1339269131422043e-02 - <_> - - 0 -1 2842 1.6126739792525768e-03 - - -1.5665169805288315e-02 8.4837719798088074e-02 - <_> - - 0 -1 2843 -5.2141858031973243e-04 - - 9.5479287207126617e-02 -4.7874130308628082e-02 - <_> - - 0 -1 2844 3.8721379823982716e-03 - - 5.4993298836052418e-03 -4.4602560997009277e-01 - <_> - - 0 -1 2845 1.7618340253829956e-01 - - -4.1341241449117661e-02 1.0009519755840302e-01 - <_> - - 0 -1 2846 -1.0830520186573267e-03 - - 6.8640246987342834e-02 -4.4131200760602951e-02 - <_> - - 0 -1 2847 1.0719549609348178e-03 - - 3.9141189306974411e-02 -1.0489390045404434e-01 - <_> - - 0 -1 2848 9.4975891988724470e-04 - - 3.6073371767997742e-02 -1.2237410247325897e-01 - <_> - - 0 -1 2849 -9.6825882792472839e-03 - - 2.1743309497833252e-01 -1.9503809511661530e-02 - <_> - - 0 -1 2850 2.9981420375406742e-03 - - -1.1931939981877804e-02 9.4061717391014099e-02 - <_> - - 0 -1 2851 3.3787859138101339e-03 - - 3.8003969937562943e-02 -1.1360760033130646e-01 - <_> - - 0 -1 2852 -2.6151719503104687e-03 - - 1.5477259457111359e-01 -2.9518639668822289e-02 - <_> - - 0 -1 2853 -1.1613050010055304e-03 - - -2.0248539745807648e-01 2.0097140222787857e-02 - <_> - - 0 -1 2854 -1.6141240485012531e-03 - - -1.0936950147151947e-01 2.9148740693926811e-02 - <_> - - 0 -1 2855 -2.1682349033653736e-03 - - 1.3386780023574829e-01 -2.9886990785598755e-02 - <_> - - 0 -1 2856 2.1131899207830429e-02 - - 4.5307017862796783e-03 -5.3612178564071655e-01 - <_> - - 0 -1 2857 1.6037460591178387e-04 - - 4.3597098439931870e-02 -8.4111146628856659e-02 - <_> - - 0 -1 2858 -9.3009177362546325e-04 - - 9.5719091594219208e-02 -3.5718031227588654e-02 - <_> - - 0 -1 2859 -8.7824072688817978e-03 - - -3.6118468642234802e-01 1.0629709810018539e-02 - <_> - - 0 -1 2860 5.3067589178681374e-03 - - -8.9432783424854279e-03 1.5807029604911804e-01 - <_> - - 0 -1 2861 4.6785878948867321e-03 - - -1.6060940921306610e-02 2.4921239912509918e-01 - <_> - - 0 -1 2862 6.7471889778971672e-03 - - -3.2983239740133286e-02 6.1737928539514542e-02 - <_> - - 0 -1 2863 -4.1250120848417282e-03 - - -1.3271600008010864e-01 3.0833190307021141e-02 - <_> - - 0 -1 2864 6.8065262166783214e-04 - - 2.5545250624418259e-02 -1.0341659933328629e-01 - <_> - - 0 -1 2865 2.1838350221514702e-03 - - -2.5376550853252411e-02 1.5284040570259094e-01 - <_> - - 0 -1 2866 -8.2007780671119690e-02 - - -6.8529888987541199e-02 3.8178220391273499e-02 - <_> - - 0 -1 2867 5.4427138529717922e-03 - - 4.2902021668851376e-03 -8.7351191043853760e-01 - <_> - - 0 -1 2868 5.6404271163046360e-04 - - 3.5445190966129303e-02 -8.5448153316974640e-02 - <_> - - 0 -1 2869 -4.0039150044322014e-03 - - -2.2544440627098083e-01 1.6658950597047806e-02 - <_> - - 0 -1 2870 7.1750470669940114e-04 - - -3.5013999789953232e-02 8.5731953382492065e-02 - <_> - - 0 -1 2871 2.1980039309710264e-03 - - -3.5395350307226181e-02 1.0176719725131989e-01 - <_> - - 0 -1 2872 -6.0970097547397017e-04 - - 6.0024809092283249e-02 -8.4693066775798798e-02 - <_> - - 0 -1 2873 5.7354441378265619e-04 - - -5.5539701133966446e-02 8.1733368337154388e-02 - <_> - - 0 -1 2874 1.1020589619874954e-02 - - 4.4961579144001007e-02 -1.0106059908866882e-01 - <_> - - 0 -1 2875 3.2966160215437412e-03 - - -5.1389090716838837e-02 8.1389263272285461e-02 - <_> - - 0 -1 2876 -2.0174959208816290e-03 - - 4.0528461337089539e-02 -3.2342150807380676e-02 - <_> - - 0 -1 2877 -4.8243958735838532e-04 - - -1.1752799898386002e-01 3.4329470247030258e-02 - <_> - - 0 -1 2878 -3.7981800734996796e-02 - - 2.0706389844417572e-01 -9.8644997924566269e-03 - <_> - - 0 -1 2879 -6.9430111907422543e-03 - - 3.3689939975738525e-01 -1.1807870119810104e-02 - <_> - - 0 -1 2880 -4.8804618418216705e-03 - - -4.1485041379928589e-01 8.2202637568116188e-03 - <_> - - 0 -1 2881 1.4070210454519838e-05 - - -5.6398481130599976e-02 6.8512678146362305e-02 - <_> - - 0 -1 2882 -2.7632080018520355e-02 - - -5.7075572013854980e-01 6.3934479840099812e-03 - <_> - - 0 -1 2883 6.5936171449720860e-04 - - 3.2117888331413269e-02 -1.1347310245037079e-01 - <_> - - 0 -1 2884 5.0442051142454147e-02 - - 3.5058089997619390e-03 -2.4307049810886383e-01 - <_> - - 0 -1 2885 -3.5251879598945379e-03 - - 7.3516011238098145e-02 -5.0434000790119171e-02 - <_> - - 0 -1 2886 -9.8136421293020248e-03 - - 6.6950842738151550e-02 -3.7114970386028290e-02 - <_> - - 0 -1 2887 7.7288062311708927e-03 - - -3.3462271094322205e-02 1.4445079863071442e-01 - <_> - - 0 -1 2888 -6.5115757752209902e-04 - - 4.9658838659524918e-02 -3.3331710845232010e-02 - <_> - - 0 -1 2889 -7.3544832412153482e-04 - - -1.6646279394626617e-01 3.0607059597969055e-02 - <_> - 334 - -7.7826201915740967e-01 - - <_> - - 0 -1 2890 -6.5500719938427210e-04 - - 1.0611940175294876e-01 -1.8115450441837311e-01 - <_> - - 0 -1 2891 -1.9778949208557606e-03 - - 1.3503830134868622e-01 -4.6880759298801422e-02 - <_> - - 0 -1 2892 5.9389008674770594e-04 - - -8.4648221731185913e-02 1.2404429912567139e-01 - <_> - - 0 -1 2893 1.0614610509946942e-03 - - -5.9560459107160568e-02 1.8259480595588684e-01 - <_> - - 0 -1 2894 2.7606791257858276e-01 - - 6.2563497340306640e-04 -2.1944240234375000e+04 - <_> - - 0 -1 2895 -2.9046900453977287e-04 - - 7.4143633246421814e-02 -1.1948379874229431e-01 - <_> - - 0 -1 2896 1.1933119967579842e-02 - - -1.3460500165820122e-02 2.7524510025978088e-01 - <_> - - 0 -1 2897 1.0096719861030579e-01 - - -5.6561990641057491e-03 -2.4996870040893555e+01 - <_> - - 0 -1 2898 -1.5156090259552002e-02 - - 1.4056429266929626e-01 -4.4841770082712173e-02 - <_> - - 0 -1 2899 -1.5076439594849944e-03 - - -1.7628009617328644e-01 3.8193639367818832e-02 - <_> - - 0 -1 2900 -1.9093969604000449e-03 - - 1.1207529902458191e-01 -4.8806078732013702e-02 - <_> - - 0 -1 2901 3.5581018892116845e-04 - - 5.0305519253015518e-02 -1.2028399854898453e-01 - <_> - - 0 -1 2902 1.2928070500493050e-03 - - -6.7517459392547607e-02 8.5675567388534546e-02 - <_> - - 0 -1 2903 -1.1862709652632475e-03 - - -7.1755349636077881e-02 2.9050039127469063e-02 - <_> - - 0 -1 2904 2.9675700716325082e-05 - - -9.7550496459007263e-02 5.5263109505176544e-02 - <_> - - 0 -1 2905 -5.1812059246003628e-04 - - 1.3014769554138184e-01 -4.0146790444850922e-02 - <_> - - 0 -1 2906 -2.4787770234979689e-04 - - -1.2997619807720184e-01 4.5160390436649323e-02 - <_> - - 0 -1 2907 5.0375860882923007e-04 - - 2.5243489071726799e-02 -1.1178129911422729e-01 - <_> - - 0 -1 2908 6.3750747358426452e-04 - - -5.1844630390405655e-02 1.1380760371685028e-01 - <_> - - 0 -1 2909 -5.5010168580338359e-04 - - -1.5109330415725708e-01 3.0021730810403824e-02 - <_> - - 0 -1 2910 2.0001670054625720e-04 - - 4.6603560447692871e-02 -1.2110610306262970e-01 - <_> - - 0 -1 2911 -1.2848580256104469e-02 - - 1.4400559663772583e-01 -2.4580590426921844e-02 - <_> - - 0 -1 2912 8.7248822674155235e-03 - - -3.0027579516172409e-02 1.8809199333190918e-01 - <_> - - 0 -1 2913 9.0796118602156639e-03 - - 8.9979087933897972e-03 -2.1755939722061157e-01 - <_> - - 0 -1 2914 -6.0907658189535141e-03 - - -2.4176609516143799e-01 2.0848300307989120e-02 - <_> - - 0 -1 2915 -2.0602690055966377e-02 - - 1.4985099434852600e-01 -2.2443689405918121e-02 - <_> - - 0 -1 2916 2.1011219359934330e-04 - - 5.8400630950927734e-02 -8.2507818937301636e-02 - <_> - - 0 -1 2917 7.6200407929718494e-03 - - -4.6605788171291351e-02 1.1164589971303940e-01 - <_> - - 0 -1 2918 1.3028680346906185e-02 - - 1.1367970146238804e-02 -4.4878101348876953e-01 - <_> - - 0 -1 2919 3.9239479228854179e-03 - - -1.7383949831128120e-02 1.8231689929962158e-01 - <_> - - 0 -1 2920 -1.3659669784829021e-03 - - 1.7153720557689667e-01 -2.8898969292640686e-02 - <_> - - 0 -1 2921 -1.4295619621407241e-05 - - 3.6472570151090622e-02 -5.7127911597490311e-02 - <_> - - 0 -1 2922 -1.4978270046412945e-03 - - -1.0584619641304016e-01 5.2903588861227036e-02 - <_> - - 0 -1 2923 7.7579449862241745e-04 - - -3.2008528709411621e-02 1.6330100595951080e-01 - <_> - - 0 -1 2924 -5.3715571993961930e-04 - - 1.0312590003013611e-01 -5.1378048956394196e-02 - <_> - - 0 -1 2925 -1.8734990153461695e-03 - - -1.0094600170850754e-01 3.1621370464563370e-02 - <_> - - 0 -1 2926 -2.7301919180899858e-03 - - -1.8882660567760468e-01 2.5445640087127686e-02 - <_> - - 0 -1 2927 -2.7519989758729935e-02 - - 2.0207390189170837e-01 -8.7642138823866844e-03 - <_> - - 0 -1 2928 -5.7156491093337536e-03 - - -1.4730660617351532e-01 3.8653228431940079e-02 - <_> - - 0 -1 2929 -3.8841580972075462e-03 - - 1.9324040412902832e-01 -3.3158119767904282e-02 - <_> - - 0 -1 2930 -2.9681410524062812e-04 - - 7.0978216826915741e-02 -8.3440601825714111e-02 - <_> - - 0 -1 2931 -7.3247430846095085e-03 - - 9.9289767444133759e-02 -7.1985991671681404e-03 - <_> - - 0 -1 2932 4.0174159221351147e-03 - - 2.3349240422248840e-02 -2.0595629513263702e-01 - <_> - - 0 -1 2933 3.0161300674080849e-03 - - -1.1856850236654282e-02 7.5035043060779572e-02 - <_> - - 0 -1 2934 -6.0926907462999225e-04 - - 6.6941566765308380e-02 -7.4088506400585175e-02 - <_> - - 0 -1 2935 -2.8288490138947964e-03 - - -8.4346950054168701e-02 2.0641390234231949e-02 - <_> - - 0 -1 2936 1.5945710241794586e-02 - - 1.8828209489583969e-02 -2.5902500748634338e-01 - <_> - - 0 -1 2937 -6.2250817427411675e-04 - - 8.3537682890892029e-02 -4.3164398521184921e-02 - <_> - - 0 -1 2938 9.3902602791786194e-02 - - -2.8874060139060020e-02 1.4930969476699829e-01 - <_> - - 0 -1 2939 4.2735088616609573e-02 - - -2.1169420331716537e-02 1.8162199854850769e-01 - <_> - - 0 -1 2940 2.3074240016285330e-04 - - 3.7333559244871140e-02 -1.1767379939556122e-01 - <_> - - 0 -1 2941 1.4175169781083241e-05 - - -3.7760701030492783e-02 4.1684981435537338e-02 - <_> - - 0 -1 2942 -4.4660810381174088e-03 - - -2.0308449864387512e-01 2.1115880459547043e-02 - <_> - - 0 -1 2943 1.2269329745322466e-03 - - -3.2496001571416855e-02 3.2794348895549774e-02 - <_> - - 0 -1 2944 3.9916601032018661e-02 - - -2.5608949363231659e-02 1.9469550251960754e-01 - <_> - - 0 -1 2945 -7.3776850476861000e-03 - - 8.0924406647682190e-02 -4.2932409793138504e-02 - <_> - - 0 -1 2946 2.3230710066854954e-03 - - 2.0082749426364899e-02 -2.2169919312000275e-01 - <_> - - 0 -1 2947 5.5887812050059438e-04 - - -4.9321770668029785e-02 1.3549089431762695e-01 - <_> - - 0 -1 2948 1.4422759704757482e-05 - - -6.2462970614433289e-02 7.0136800408363342e-02 - <_> - - 0 -1 2949 -9.0111764147877693e-03 - - -1.1790829896926880e-01 1.3764100149273872e-02 - <_> - - 0 -1 2950 -2.5969429407268763e-03 - - 8.5311427712440491e-02 -5.3704299032688141e-02 - <_> - - 0 -1 2951 4.2405598796904087e-03 - - -3.4656058996915817e-02 7.6122537255287170e-02 - <_> - - 0 -1 2952 -2.8519309125840664e-04 - - 6.7123286426067352e-02 -7.1620211005210876e-02 - <_> - - 0 -1 2953 -9.1536442050710320e-04 - - -1.0286690294742584e-01 4.6275518834590912e-02 - <_> - - 0 -1 2954 8.9915059506893158e-03 - - 2.1047739312052727e-02 -2.0345629751682281e-01 - <_> - - 0 -1 2955 -2.3468779399991035e-03 - - 6.1836708337068558e-02 -2.7794880792498589e-02 - <_> - - 0 -1 2956 7.8483502147719264e-04 - - -5.6725129485130310e-02 8.2626231014728546e-02 - <_> - - 0 -1 2957 -4.2987228371202946e-03 - - -4.6485468745231628e-01 1.2136589735746384e-02 - <_> - - 0 -1 2958 3.7865751073695719e-04 - - -5.7894710451364517e-02 7.8972049057483673e-02 - <_> - - 0 -1 2959 -1.8922489834949374e-04 - - -4.8778239637613297e-02 2.8404900804162025e-02 - <_> - - 0 -1 2960 1.4289650134742260e-03 - - -5.4618939757347107e-02 7.4633039534091949e-02 - <_> - - 0 -1 2961 -6.3519232207909226e-04 - - -1.2235110253095627e-01 2.2536490112543106e-02 - <_> - - 0 -1 2962 -1.3744450407102704e-03 - - 8.7468042969703674e-02 -4.6227011829614639e-02 - <_> - - 0 -1 2963 8.3811202785000205e-04 - - -5.3081158548593521e-02 6.6298030316829681e-02 - <_> - - 0 -1 2964 -4.7142491675913334e-03 - - -1.4428180456161499e-01 3.1851839274168015e-02 - <_> - - 0 -1 2965 3.5760139580816031e-03 - - -5.4558500647544861e-02 7.7983260154724121e-02 - <_> - - 0 -1 2966 1.3958959840238094e-02 - - -4.3213408440351486e-02 1.0227949917316437e-01 - <_> - - 0 -1 2967 1.4338699656946119e-05 - - -5.6758139282464981e-02 5.9547949582338333e-02 - <_> - - 0 -1 2968 -1.0628110030665994e-03 - - -1.6489389538764954e-01 2.7261860668659210e-02 - <_> - - 0 -1 2969 1.0051510296761990e-02 - - -9.7075058147311211e-03 1.9438129663467407e-01 - <_> - - 0 -1 2970 -1.1699779424816370e-03 - - 8.6702376604080200e-02 -5.1672320812940598e-02 - <_> - - 0 -1 2971 -3.3962219953536987e-02 - - -2.3889440298080444e-01 9.8034106194972992e-03 - <_> - - 0 -1 2972 3.5306809004396200e-03 - - -2.0434120669960976e-02 2.0758320391178131e-01 - <_> - - 0 -1 2973 -7.7752848155796528e-03 - - -1.5383580327033997e-01 2.4621009826660156e-02 - <_> - - 0 -1 2974 1.8700800137594342e-03 - - 3.6134559661149979e-02 -1.3638550043106079e-01 - <_> - - 0 -1 2975 2.8848159126937389e-03 - - -1.8914660438895226e-02 1.8570280075073242e-01 - <_> - - 0 -1 2976 -1.9861269742250443e-02 - - 3.6918470263481140e-01 -1.1665159836411476e-02 - <_> - - 0 -1 2977 -2.7482518926262856e-03 - - -2.1028390526771545e-01 2.3893959820270538e-02 - <_> - - 0 -1 2978 -2.7001290582120419e-03 - - 2.0786289870738983e-01 -2.1798720583319664e-02 - <_> - - 0 -1 2979 -4.5068548060953617e-03 - - -8.6702600121498108e-02 4.8602908849716187e-02 - <_> - - 0 -1 2980 2.4951489642262459e-02 - - -1.5552300028502941e-02 2.7785879373550415e-01 - <_> - - 0 -1 2981 1.2935699487570673e-04 - - -7.3888942599296570e-02 4.8402789980173111e-02 - <_> - - 0 -1 2982 9.3646477907896042e-03 - - -2.5281939655542374e-02 1.8370600044727325e-01 - <_> - - 0 -1 2983 8.4151826798915863e-02 - - 1.0824269615113735e-02 -1.9552649557590485e-01 - <_> - - 0 -1 2984 1.1270279996097088e-02 - - 1.0561659932136536e-02 -3.9813381433486938e-01 - <_> - - 0 -1 2985 -2.3937860503792763e-02 - - -6.0860121250152588e-01 4.2452588677406311e-03 - <_> - - 0 -1 2986 2.0148959010839462e-03 - - -3.0430519953370094e-02 1.3252329826354980e-01 - <_> - - 0 -1 2987 -9.2081452021375299e-04 - - -6.4787812530994415e-02 2.7679389342665672e-02 - <_> - - 0 -1 2988 2.4192659184336662e-03 - - 4.7041378915309906e-02 -8.9719109237194061e-02 - <_> - - 0 -1 2989 -6.5186403691768646e-02 - - -5.6671458482742310e-01 2.5166301056742668e-03 - <_> - - 0 -1 2990 2.8571339324116707e-02 - - -2.5201410055160522e-02 1.9006469845771790e-01 - <_> - - 0 -1 2991 -3.3785749692469835e-03 - - -1.2729710340499878e-01 1.9669840112328529e-02 - <_> - - 0 -1 2992 1.0253169573843479e-02 - - -2.0659439265727997e-02 2.0298719406127930e-01 - <_> - - 0 -1 2993 4.9304449930787086e-03 - - 2.1737489849328995e-02 -1.2347099930047989e-01 - <_> - - 0 -1 2994 9.6938945353031158e-03 - - 6.0204151086509228e-03 -6.4063978195190430e-01 - <_> - - 0 -1 2995 -4.8665871145203710e-04 - - 4.7643549740314484e-02 -2.8483150526881218e-02 - <_> - - 0 -1 2996 -2.1001850254833698e-03 - - 8.1388853490352631e-02 -4.8343729227781296e-02 - <_> - - 0 -1 2997 7.1035227738320827e-03 - - 4.8637919127941132e-02 -5.9368059039115906e-02 - <_> - - 0 -1 2998 7.6833309140056372e-04 - - -5.5948581546545029e-02 9.0324163436889648e-02 - <_> - - 0 -1 2999 3.0236479360610247e-03 - - 2.4593129754066467e-02 -4.8018101602792740e-02 - <_> - - 0 -1 3000 -1.5640349593013525e-03 - - -1.4176750183105469e-01 4.4273559004068375e-02 - <_> - - 0 -1 3001 -4.9588200636208057e-03 - - 3.3299440145492554e-01 -1.3866799883544445e-02 - <_> - - 0 -1 3002 -3.1740468693897128e-04 - - -9.9935911595821381e-02 4.1256289929151535e-02 - <_> - - 0 -1 3003 -8.0420851008966565e-04 - - 1.0639169812202454e-01 -2.8372989967465401e-02 - <_> - - 0 -1 3004 1.6408630181103945e-03 - - -2.4030350148677826e-02 1.7486830055713654e-01 - <_> - - 0 -1 3005 -6.1796259880065918e-01 - - -3.5708969831466675e-01 4.0679760277271271e-03 - <_> - - 0 -1 3006 -1.7735069990158081e-01 - - -6.1740487813949585e-01 6.5281139686703682e-03 - <_> - - 0 -1 3007 9.8318364471197128e-03 - - -9.5694959163665771e-03 9.4102367758750916e-02 - <_> - - 0 -1 3008 -9.9137630313634872e-03 - - 2.0841769874095917e-01 -2.0038869231939316e-02 - <_> - - 0 -1 3009 1.0139079764485359e-02 - - 8.6421063169836998e-03 -1.6476039588451385e-01 - <_> - - 0 -1 3010 -4.7524129040539265e-03 - - -9.3199521303176880e-01 4.2677428573369980e-03 - <_> - - 0 -1 3011 -3.5657559055835009e-03 - - -7.0002816617488861e-02 1.3544510118663311e-02 - <_> - - 0 -1 3012 -7.5818779878318310e-03 - - -2.5617438554763794e-01 1.5119800344109535e-02 - <_> - - 0 -1 3013 3.2128070015460253e-03 - - -4.7117389738559723e-02 4.2283978313207626e-02 - <_> - - 0 -1 3014 -1.4448419678956270e-03 - - 1.2069970369338989e-01 -3.4035868942737579e-02 - <_> - - 0 -1 3015 4.3855889089172706e-05 - - -3.3758200705051422e-02 2.9251309111714363e-02 - <_> - - 0 -1 3016 7.9919979907572269e-04 - - 5.2105661481618881e-02 -1.0435529798269272e-01 - <_> - - 0 -1 3017 1.6669919714331627e-02 - - 3.1498380005359650e-02 -7.5712457299232483e-02 - <_> - - 0 -1 3018 4.4861449860036373e-03 - - -6.0100939124822617e-02 1.0679920017719269e-01 - <_> - - 0 -1 3019 1.5718489885330200e-03 - - 2.2957760840654373e-02 -5.1999129354953766e-02 - <_> - - 0 -1 3020 -1.0987470159307122e-03 - - 6.7808508872985840e-02 -6.2232740223407745e-02 - <_> - - 0 -1 3021 3.6574289202690125e-01 - - 8.5034789517521858e-03 -8.7944783270359039e-02 - <_> - - 0 -1 3022 6.2328672409057617e-01 - - 6.2737329863011837e-03 -6.5871769189834595e-01 - <_> - - 0 -1 3023 -2.0381929352879524e-02 - - 2.0589959621429443e-01 -2.1329719573259354e-02 - <_> - - 0 -1 3024 1.2231430038809776e-02 - - 1.6662970185279846e-02 -2.4959360063076019e-01 - <_> - - 0 -1 3025 1.1891610175371170e-01 - - 4.6012690290808678e-03 -2.4065980315208435e-01 - <_> - - 0 -1 3026 -4.5336168259382248e-02 - - 2.6013681292533875e-01 -1.5307229943573475e-02 - <_> - - 0 -1 3027 1.0635649785399437e-02 - - 1.3968730345368385e-02 -1.8730120360851288e-01 - <_> - - 0 -1 3028 8.0420613288879395e-02 - - 6.4792581833899021e-03 -7.3739159107208252e-01 - <_> - - 0 -1 3029 4.1983132250607014e-03 - - -4.0718421339988708e-02 4.9123499542474747e-02 - <_> - - 0 -1 3030 2.7840971015393734e-03 - - -4.6847000718116760e-02 8.3045586943626404e-02 - <_> - - 0 -1 3031 -2.3969069588929415e-03 - - -1.0305040329694748e-01 3.6219939589500427e-02 - <_> - - 0 -1 3032 2.3801729083061218e-02 - - -2.6440629735589027e-02 1.5566450357437134e-01 - <_> - - 0 -1 3033 5.8980349422199652e-05 - - -7.4151277542114258e-02 5.3694751113653183e-02 - <_> - - 0 -1 3034 4.2179841548204422e-03 - - 5.8198180049657822e-02 -6.9338247179985046e-02 - <_> - - 0 -1 3035 -7.3058279231190681e-03 - - -9.0065263211727142e-02 3.4009128808975220e-02 - <_> - - 0 -1 3036 5.0189117901027203e-03 - - -1.8705239519476891e-02 2.2443990409374237e-01 - <_> - - 0 -1 3037 -2.0936098881065845e-03 - - -6.6003449261188507e-02 1.9856190308928490e-02 - <_> - - 0 -1 3038 6.8444077624008060e-04 - - 5.4512381553649902e-02 -9.2761643230915070e-02 - <_> - - 0 -1 3039 -4.1365441866219044e-03 - - -1.0075940191745758e-01 2.9440989717841148e-02 - <_> - - 0 -1 3040 9.9968025460839272e-03 - - -3.8969870656728745e-02 1.4083629846572876e-01 - <_> - - 0 -1 3041 4.1777390288189054e-04 - - 1.6349399462342262e-02 -8.7681837379932404e-02 - <_> - - 0 -1 3042 1.4318599824036937e-05 - - -6.0149569064378738e-02 7.5571998953819275e-02 - <_> - - 0 -1 3043 1.0386370122432709e-02 - - 1.3826809823513031e-02 -1.3289609551429749e-01 - <_> - - 0 -1 3044 -3.4228169824928045e-03 - - 6.8344578146934509e-02 -5.8622609823942184e-02 - <_> - - 0 -1 3045 1.4140920029603876e-05 - - -3.3672899007797241e-02 3.4742329269647598e-02 - <_> - - 0 -1 3046 -2.9150721430778503e-01 - - -2.6706650853157043e-01 1.6969459131360054e-02 - <_> - - 0 -1 3047 -2.2624819539487362e-03 - - 5.8930430561304092e-02 -3.8748141378164291e-02 - <_> - - 0 -1 3048 6.0357558540999889e-03 - - -5.4498948156833649e-02 8.3862930536270142e-02 - <_> - - 0 -1 3049 -4.2928759939968586e-03 - - -7.3004312813282013e-02 1.4651809819042683e-02 - <_> - - 0 -1 3050 1.1044720187783241e-02 - - 1.2078249827027321e-02 -3.9404100179672241e-01 - <_> - - 0 -1 3051 -1.0535520268604159e-03 - - 4.8318728804588318e-02 -3.4919891506433487e-02 - <_> - - 0 -1 3052 5.6404650211334229e-02 - - -6.8446230143308640e-03 6.1755502223968506e-01 - <_> - - 0 -1 3053 -8.4812091663479805e-03 - - -1.3839499652385712e-01 1.2489840388298035e-02 - <_> - - 0 -1 3054 1.6193240880966187e-02 - - 9.0974392369389534e-03 -4.4633740186691284e-01 - <_> - - 0 -1 3055 -2.8318920521996915e-04 - - 8.2474879920482635e-02 -4.7371931374073029e-02 - <_> - - 0 -1 3056 4.1413828730583191e-03 - - -1.4848480001091957e-02 2.8132051229476929e-01 - <_> - - 0 -1 3057 -3.4166331170126796e-04 - - -6.0937568545341492e-02 2.9026310890913010e-02 - <_> - - 0 -1 3058 2.0170300267636776e-03 - - 1.9604349508881569e-02 -2.0822779834270477e-01 - <_> - - 0 -1 3059 -2.0873220637440681e-03 - - 1.0310489684343338e-01 -3.7634961307048798e-02 - <_> - - 0 -1 3060 -5.6890142150223255e-03 - - -1.2544399499893188e-01 3.3915720880031586e-02 - <_> - - 0 -1 3061 1.0917709767818451e-01 - - 7.4923089705407619e-03 -1.1904879659414291e-01 - <_> - - 0 -1 3062 -5.0970359006896615e-04 - - 9.7908712923526764e-02 -3.9758011698722839e-02 - <_> - - 0 -1 3063 -1.4320580661296844e-01 - - -8.0416381359100342e-01 6.3695549033582211e-04 - <_> - - 0 -1 3064 -8.0799080431461334e-02 - - 3.1338238716125488e-01 -1.3846360146999359e-02 - <_> - - 0 -1 3065 -9.3855917453765869e-02 - - -1.4186389744281769e-01 4.8957560211420059e-03 - <_> - - 0 -1 3066 1.0711970180273056e-01 - - 1.0395029559731483e-02 -3.9300349354743958e-01 - <_> - - 0 -1 3067 5.6628540158271790e-02 - - 1.6760550206527114e-03 -7.5297760963439941e-01 - <_> - - 0 -1 3068 -5.9830099344253540e-03 - - 9.8864533007144928e-02 -4.2337849736213684e-02 - <_> - - 0 -1 3069 3.2563660293817520e-02 - - 7.7907292870804667e-04 -1.0018880367279053e+00 - <_> - - 0 -1 3070 5.2614361047744751e-03 - - -2.3592080920934677e-02 1.8561479449272156e-01 - <_> - - 0 -1 3071 -2.8537029400467873e-02 - - -8.7918317317962646e-01 2.7133359108120203e-03 - <_> - - 0 -1 3072 -1.1468839831650257e-02 - - -2.8566700220108032e-01 1.4948310330510139e-02 - <_> - - 0 -1 3073 5.8335228823125362e-04 - - 1.6099810600280762e-02 -1.0043399780988693e-01 - <_> - - 0 -1 3074 4.0041147731244564e-03 - - 5.0489702261984348e-03 -7.1332311630249023e-01 - <_> - - 0 -1 3075 -2.3596179671585560e-03 - - 2.4190050363540649e-01 -1.4085929840803146e-02 - <_> - - 0 -1 3076 3.3726831316016614e-04 - - 2.9679410159587860e-02 -1.2967990338802338e-01 - <_> - - 0 -1 3077 6.7051057703793049e-04 - - -4.2348969727754593e-02 6.4362458884716034e-02 - <_> - - 0 -1 3078 -3.4773809602484107e-04 - - 6.9616302847862244e-02 -6.3760548830032349e-02 - <_> - - 0 -1 3079 2.6000179350376129e-02 - - 3.4755310043692589e-03 -5.2053117752075195e-01 - <_> - - 0 -1 3080 -1.6987169161438942e-02 - - -4.3342560529708862e-01 8.5654119029641151e-03 - <_> - - 0 -1 3081 2.9391179850790650e-05 - - -3.6627989262342453e-02 4.1910480707883835e-02 - <_> - - 0 -1 3082 -2.4438139516860247e-03 - - 3.0130320787429810e-01 -1.3301130384206772e-02 - <_> - - 0 -1 3083 6.4233690500259399e-03 - - 7.3442691937088966e-03 -5.7522922754287720e-01 - <_> - - 0 -1 3084 1.1681020259857178e-01 - - 3.3814390189945698e-03 -8.7938332557678223e-01 - <_> - - 0 -1 3085 -2.7548689104150981e-05 - - 6.4680196344852448e-02 -5.7411041110754013e-02 - <_> - - 0 -1 3086 2.4947611382231116e-04 - - -7.5326800346374512e-02 4.8592418432235718e-02 - <_> - - 0 -1 3087 -7.1671740151941776e-03 - - -8.3547100424766541e-02 2.1562419831752777e-02 - <_> - - 0 -1 3088 -1.8627879908308387e-03 - - 1.0043080151081085e-01 -3.8185749202966690e-02 - <_> - - 0 -1 3089 -1.6036540269851685e-02 - - -9.1825373470783234e-02 3.9515469223260880e-02 - <_> - - 0 -1 3090 -1.2315779924392700e-02 - - 2.3118409514427185e-01 -1.7156910151243210e-02 - <_> - - 0 -1 3091 -1.3695989735424519e-02 - - -4.6317929029464722e-01 2.2789770737290382e-03 - <_> - - 0 -1 3092 -8.4357131272554398e-03 - - -2.6425519585609436e-01 1.4832129701972008e-02 - <_> - - 0 -1 3093 -9.2736718943342566e-04 - - 7.9645402729511261e-02 -4.9840580672025681e-02 - <_> - - 0 -1 3094 -7.3909357888624072e-04 - - 1.1675740033388138e-01 -3.2842319458723068e-02 - <_> - - 0 -1 3095 -5.3007681854069233e-03 - - -5.8355450630187988e-02 2.4915490299463272e-02 - <_> - - 0 -1 3096 2.3519468959420919e-03 - - 3.4184001386165619e-02 -1.2361560016870499e-01 - <_> - - 0 -1 3097 3.6758350324817002e-04 - - 2.4377340450882912e-02 -9.2866457998752594e-02 - <_> - - 0 -1 3098 -1.8738239305093884e-04 - - -9.7189396619796753e-02 4.5581560581922531e-02 - <_> - - 0 -1 3099 -4.3005049228668213e-03 - - 5.9655640274286270e-02 -2.6550989598035812e-02 - <_> - - 0 -1 3100 3.0303259845823050e-03 - - -4.6652421355247498e-02 8.3090431988239288e-02 - <_> - - 0 -1 3101 9.1612888500094414e-03 - - 8.1623140722513199e-03 -1.4294110238552094e-01 - <_> - - 0 -1 3102 -7.1365521289408207e-03 - - -2.1283440291881561e-01 1.9532319158315659e-02 - <_> - - 0 -1 3103 4.0135360322892666e-03 - - -2.7977779507637024e-02 6.5373353660106659e-02 - <_> - - 0 -1 3104 7.3571591638028622e-03 - - -3.3633861690759659e-02 1.1916100233793259e-01 - <_> - - 0 -1 3105 -1.4602700248360634e-03 - - 1.4011189341545105e-01 -1.2051680125296116e-02 - <_> - - 0 -1 3106 1.4471929716819432e-05 - - -5.7255640625953674e-02 6.8829320371150970e-02 - <_> - - 0 -1 3107 -1.4309570360637736e-05 - - 8.2789108157157898e-02 -8.4355473518371582e-02 - <_> - - 0 -1 3108 -5.5356771918013692e-04 - - -1.4383679628372192e-01 3.1933940947055817e-02 - <_> - - 0 -1 3109 2.1484889090061188e-02 - - -3.0742040835320950e-03 3.7881690263748169e-01 - <_> - - 0 -1 3110 -9.8766442388296127e-03 - - 3.5023438930511475e-01 -1.0607440024614334e-02 - <_> - - 0 -1 3111 -4.5920489355921745e-04 - - -1.1301189661026001e-01 2.3139599710702896e-02 - <_> - - 0 -1 3112 -1.6422939952462912e-03 - - 7.4747122824192047e-02 -5.0454050302505493e-02 - <_> - - 0 -1 3113 -5.3874298464506865e-04 - - -1.3922649621963501e-01 2.9874069616198540e-02 - <_> - - 0 -1 3114 -5.7828719727694988e-03 - - 8.0108322203159332e-02 -4.9318719655275345e-02 - <_> - - 0 -1 3115 -1.1254530400037766e-02 - - -9.4960838556289673e-02 1.2815359979867935e-02 - <_> - - 0 -1 3116 -6.3977600075304508e-03 - - 1.8505319952964783e-01 -1.9816260784864426e-02 - <_> - - 0 -1 3117 -1.7287230002693832e-04 - - -4.4736761599779129e-02 3.1513940542936325e-02 - <_> - - 0 -1 3118 -4.4290270656347275e-02 - - -8.4371000528335571e-01 4.1946070268750191e-03 - <_> - - 0 -1 3119 1.4135680430626962e-05 - - -2.8704009950160980e-02 2.9664069414138794e-02 - <_> - - 0 -1 3120 1.4838889910606667e-05 - - -5.7750280946493149e-02 5.9877578169107437e-02 - <_> - - 0 -1 3121 1.4357990039570723e-05 - - -4.8069581389427185e-02 5.2067048847675323e-02 - <_> - - 0 -1 3122 -3.0332439928315580e-04 - - -1.1391550302505493e-01 3.3420108258724213e-02 - <_> - - 0 -1 3123 -2.1341539919376373e-02 - - 1.3414019346237183e-01 -2.8697019442915916e-02 - <_> - - 0 -1 3124 1.2220669537782669e-02 - - -3.1815130263566971e-02 1.2447299808263779e-01 - <_> - - 0 -1 3125 -1.7970399931073189e-03 - - -7.8972600400447845e-02 2.3819999769330025e-02 - <_> - - 0 -1 3126 1.0250660125166178e-03 - - 9.1715447604656219e-02 -5.1853589713573456e-02 - <_> - - 0 -1 3127 2.9596749300253578e-05 - - -4.5877501368522644e-02 2.2276140749454498e-02 - <_> - - 0 -1 3128 -2.9857519548386335e-03 - - -1.0987590253353119e-01 3.9163749665021896e-02 - <_> - - 0 -1 3129 3.4685849677771330e-03 - - -3.1400199979543686e-02 5.9269599616527557e-02 - <_> - - 0 -1 3130 -5.0253752851858735e-04 - - 6.8993613123893738e-02 -5.6809179484844208e-02 - <_> - - 0 -1 3131 3.1805990729480982e-03 - - 1.7488589510321617e-02 -1.0994870215654373e-01 - <_> - - 0 -1 3132 -6.3892719335854053e-03 - - 2.3231509327888489e-01 -1.6345100477337837e-02 - <_> - - 0 -1 3133 4.7345750033855438e-02 - - 3.2520359382033348e-03 -7.1971511840820312e-01 - <_> - - 0 -1 3134 -6.3473977148532867e-02 - - -5.7145291566848755e-01 5.7878792285919189e-03 - <_> - - 0 -1 3135 1.8283590674400330e-02 - - -3.0776629224419594e-02 6.7068859934806824e-02 - <_> - - 0 -1 3136 3.3511288464069366e-02 - - 9.5050930976867676e-03 -3.9411789178848267e-01 - <_> - - 0 -1 3137 5.8480639010667801e-02 - - 8.8002288248389959e-04 -7.2193121910095215e-01 - <_> - - 0 -1 3138 -6.8779820576310158e-03 - - -1.3660149276256561e-01 2.8550539165735245e-02 - <_> - - 0 -1 3139 -7.4082398787140846e-03 - - -1. 1.4721560291945934e-03 - <_> - - 0 -1 3140 1.9716760143637657e-03 - - -3.1249720603227615e-02 1.2497240304946899e-01 - <_> - - 0 -1 3141 -8.5898824036121368e-03 - - 7.3831759393215179e-02 -5.1625881344079971e-02 - <_> - - 0 -1 3142 3.8665629923343658e-02 - - -4.0125548839569092e-02 1.0069020092487335e-01 - <_> - - 0 -1 3143 -2.3928559385240078e-03 - - 4.5589141547679901e-02 -4.5100230723619461e-02 - <_> - - 0 -1 3144 -6.2895438168197870e-04 - - -1.1667449772357941e-01 3.2768420875072479e-02 - <_> - - 0 -1 3145 -2.3187010083347559e-03 - - 1.3001890480518341e-01 -1.0718069970607758e-02 - <_> - - 0 -1 3146 1.4138329788693227e-05 - - -6.4404919743537903e-02 5.7263828814029694e-02 - <_> - - 0 -1 3147 -2.8554860502481461e-02 - - -5.0639897584915161e-01 1.1023499537259340e-03 - <_> - - 0 -1 3148 3.2312930561602116e-03 - - 3.6267548799514771e-02 -1.0106699913740158e-01 - <_> - - 0 -1 3149 1.6222210251726210e-04 - - -4.0285501629114151e-02 3.1679298728704453e-02 - <_> - - 0 -1 3150 4.2762039811350405e-04 - - -3.6203209310770035e-02 1.0361579805612564e-01 - <_> - - 0 -1 3151 3.3335629268549383e-04 - - -2.9866840690374374e-02 2.9882159084081650e-02 - <_> - - 0 -1 3152 -2.2189140319824219e-01 - - -3.8243699073791504e-01 9.5520019531250000e-03 - <_> - - 0 -1 3153 8.7596403318457305e-05 - - 3.9001930505037308e-02 -8.1183552742004395e-02 - <_> - - 0 -1 3154 -1.1259169696131721e-04 - - 6.3710443675518036e-02 -5.8460969477891922e-02 - <_> - - 0 -1 3155 -1.6238780226558447e-03 - - 4.1994798928499222e-02 -4.4873479753732681e-02 - <_> - - 0 -1 3156 -6.0143370181322098e-02 - - -6.9434410333633423e-01 5.1933941431343555e-03 - <_> - - 0 -1 3157 2.2263569757342339e-02 - - 7.1151661686599255e-03 -1.6245369613170624e-01 - <_> - - 0 -1 3158 1.5287219546735287e-02 - - -3.1578138470649719e-02 1.3159650564193726e-01 - <_> - - 0 -1 3159 -2.7766029816120863e-03 - - 3.3783968538045883e-02 -3.1077789142727852e-02 - <_> - - 0 -1 3160 1.6177409561350942e-03 - - 3.9119731634855270e-02 -9.9278897047042847e-02 - <_> - - 0 -1 3161 1.9479090115055442e-03 - - -5.3654409945011139e-02 7.0118047297000885e-02 - <_> - - 0 -1 3162 1.2130389921367168e-02 - - 4.0306180715560913e-02 -9.0640321373939514e-02 - <_> - - 0 -1 3163 -1.3028389774262905e-02 - - 1.1700630187988281e-01 -6.7425691522657871e-03 - <_> - - 0 -1 3164 -5.0146891735494137e-03 - - -1.3672140240669250e-01 2.8440289199352264e-02 - <_> - - 0 -1 3165 2.9157409444451332e-03 - - -2.0223509520292282e-02 1.7895069718360901e-01 - <_> - - 0 -1 3166 1.4704049564898014e-02 - - -1.1754130013287067e-02 3.0486410856246948e-01 - <_> - - 0 -1 3167 -6.0479778796434402e-02 - - -7.8139930963516235e-01 2.7442490682005882e-03 - <_> - - 0 -1 3168 -4.3481457978487015e-03 - - -1.3809560239315033e-01 2.4240119382739067e-02 - <_> - - 0 -1 3169 -2.0365869626402855e-02 - - 4.7886461019515991e-02 -2.1922210231423378e-02 - <_> - - 0 -1 3170 3.8487561047077179e-02 - - -1.4815949834883213e-02 2.8366428613662720e-01 - <_> - - 0 -1 3171 8.8168919086456299e-02 - - 6.1495671980082989e-03 -1.1289569735527039e-01 - <_> - - 0 -1 3172 4.0345671586692333e-03 - - -6.8296507000923157e-02 5.5224869400262833e-02 - <_> - - 0 -1 3173 9.2876404523849487e-03 - - 3.4623101353645325e-02 -5.4317090660333633e-02 - <_> - - 0 -1 3174 1.6310110222548246e-03 - - -2.9204320162534714e-02 1.2989430129528046e-01 - <_> - - 0 -1 3175 -1.2771799811162055e-04 - - 5.7855401188135147e-02 -6.3030250370502472e-02 - <_> - - 0 -1 3176 1.3937779702246189e-02 - - 6.9280698895454407e-02 -6.1526641249656677e-02 - <_> - - 0 -1 3177 6.8672648631036282e-03 - - 7.0364428684115410e-03 -4.4557929039001465e-01 - <_> - - 0 -1 3178 2.1003469824790955e-02 - - -3.5268500447273254e-02 1.5359219908714294e-01 - <_> - - 0 -1 3179 -5.0168340094387531e-03 - - -5.2301561832427979e-01 3.5861700307577848e-03 - <_> - - 0 -1 3180 -3.1568898702971637e-04 - - -1.1868490278720856e-01 2.9266620054841042e-02 - <_> - - 0 -1 3181 -9.4318166375160217e-03 - - 1.2853389978408813e-01 -2.4564500898122787e-02 - <_> - - 0 -1 3182 6.0749690979719162e-02 - - 1.5456859953701496e-02 -2.3764939606189728e-01 - <_> - - 0 -1 3183 1.4245889615267515e-03 - - -2.7731699869036674e-02 7.5339756906032562e-02 - <_> - - 0 -1 3184 4.5280749909579754e-03 - - 7.9670632258057594e-03 -4.6478900313377380e-01 - <_> - - 0 -1 3185 -1.1256569996476173e-03 - - 8.7405860424041748e-02 -2.8235470876097679e-02 - <_> - - 0 -1 3186 7.1023160126060247e-04 - - -4.5912958681583405e-02 7.7868096530437469e-02 - <_> - - 0 -1 3187 -1.0647220187820494e-04 - - -6.9129116833209991e-02 3.4806620329618454e-02 - <_> - - 0 -1 3188 4.0483310818672180e-02 - - -6.7497747950255871e-03 5.7718431949615479e-01 - <_> - - 0 -1 3189 3.1162700615823269e-03 - - -1.5197520144283772e-02 1.5354870259761810e-01 - <_> - - 0 -1 3190 4.5352601446211338e-03 - - 1.9577570259571075e-02 -1.9316029548645020e-01 - <_> - - 0 -1 3191 -4.1040619835257530e-03 - - 1.6863599419593811e-01 -2.3052209988236427e-02 - <_> - - 0 -1 3192 -1.2791199842467904e-03 - - -1.2263630330562592e-01 3.3852901309728622e-02 - <_> - - 0 -1 3193 3.7750229239463806e-02 - - 2.7295380830764771e-02 -3.9029780775308609e-02 - <_> - - 0 -1 3194 -3.1329069286584854e-02 - - -1.7695879936218262e-01 2.3652670904994011e-02 - <_> - - 0 -1 3195 6.9908007979393005e-02 - - -1.3607740402221680e-02 1.7705820500850677e-01 - <_> - - 0 -1 3196 -1.7724529607221484e-03 - - 8.9443042874336243e-02 -4.4195320457220078e-02 - <_> - - 0 -1 3197 9.5961341867223382e-04 - - 4.6264778822660446e-02 -8.5146717727184296e-02 - <_> - - 0 -1 3198 4.8880279064178467e-03 - - -4.3457351624965668e-02 8.3665966987609863e-02 - <_> - - 0 -1 3199 -1.8521700054407120e-02 - - -1.9846099615097046e-01 7.7576087787747383e-03 - <_> - - 0 -1 3200 -2.9453789466060698e-04 - - 6.5195016562938690e-02 -7.3865167796611786e-02 - <_> - - 0 -1 3201 3.2816329039633274e-03 - - 1.0613779537379742e-02 -1.2129720300436020e-01 - <_> - - 0 -1 3202 -4.1478020139038563e-03 - - 1.3219490647315979e-01 -2.7838779613375664e-02 - <_> - - 0 -1 3203 2.9324321076273918e-03 - - 1.5625990927219391e-02 -1.3332700729370117e-01 - <_> - - 0 -1 3204 1.4735000149812549e-05 - - -6.6767387092113495e-02 6.7779406905174255e-02 - <_> - - 0 -1 3205 1.0550020262598991e-02 - - -1.8690729513764381e-02 3.5460308194160461e-02 - <_> - - 0 -1 3206 6.6441838862374425e-04 - - 3.1682059168815613e-02 -1.2590830028057098e-01 - <_> - - 0 -1 3207 -7.8891811426728964e-04 - - 4.1447490453720093e-02 -1.9493930041790009e-02 - <_> - - 0 -1 3208 4.0985438972711563e-03 - - -1.4138899743556976e-02 2.5552189350128174e-01 - <_> - - 0 -1 3209 -1.1657159775495529e-03 - - -9.9526606500148773e-02 2.5209929794073105e-02 - <_> - - 0 -1 3210 8.3427336066961288e-03 - - 6.7264190874993801e-03 -5.3164392709732056e-01 - <_> - - 0 -1 3211 1.1264909990131855e-02 - - -2.0710369572043419e-02 1.7936679720878601e-01 - <_> - - 0 -1 3212 -4.5051681809127331e-03 - - -6.6127192974090576e-01 5.7547520846128464e-03 - <_> - - 0 -1 3213 -1.4798439806327224e-03 - - 1.0810559988021851e-01 -1.9588569179177284e-02 - <_> - - 0 -1 3214 1.6471470007672906e-04 - - 5.3238850086927414e-02 -6.9692611694335938e-02 - <_> - - 0 -1 3215 4.4582888484001160e-02 - - 7.8089488670229912e-03 -3.7653329968452454e-01 - <_> - - 0 -1 3216 -1.9773680716753006e-02 - - 1.3560689985752106e-01 -3.0749319121241570e-02 - <_> - - 0 -1 3217 4.3540569022297859e-03 - - 9.3921516090631485e-03 -1.9494530558586121e-01 - <_> - - 0 -1 3218 -2.4175210297107697e-01 - - -6.3273942470550537e-01 5.7554137893021107e-03 - <_> - - 0 -1 3219 -4.4678640551865101e-04 - - 7.4578367173671722e-02 -5.0328239798545837e-02 - <_> - - 0 -1 3220 1.4537060260772705e-01 - - 7.1067730896174908e-03 -5.0648421049118042e-01 - <_> - - 0 -1 3221 1.4327790267998353e-05 - - -2.8675070032477379e-02 2.7644269168376923e-02 - <_> - - 0 -1 3222 6.7291660234332085e-03 - - 8.8470866903662682e-03 -4.2330700159072876e-01 - <_> - - 0 -1 3223 2.2473030257970095e-03 - - -1.4289340004324913e-02 1.4410759508609772e-01 - - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 5 4 12 7 -1. - <_> - 8 4 6 7 2. - <_> - - <_> - 3 1 16 8 -1. - <_> - 7 1 8 8 2. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 0 0 15 9 -1. - <_> - 0 3 15 3 3. - <_> - - <_> - 5 2 12 6 -1. - <_> - 9 4 4 2 9. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 6 17 2 3 -1. - <_> - 6 18 2 1 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 12 13 4 1 -1. - <_> - 12 13 2 1 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 20 1 2 4 -1. - <_> - 21 1 1 2 2. - <_> - 20 3 1 2 2. - <_> - - <_> - 0 1 2 4 -1. - <_> - 0 1 1 2 2. - <_> - 1 3 1 2 2. - <_> - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 15 4 3 1 -1. - <_> - 16 5 1 1 3. - 1 - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 1 0 1 3 -1. - <_> - 1 1 1 1 3. - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 1 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 0 16 18 2 -1. - <_> - 6 16 6 2 3. - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 5 3 17 8 -1. - <_> - 5 7 17 4 2. - <_> - - <_> - 3 6 3 3 -1. - <_> - 4 7 1 3 3. - 1 - <_> - - <_> - 10 5 4 2 -1. - <_> - 12 5 2 1 2. - <_> - 10 6 2 1 2. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 10 4 9 14 -1. - <_> - 13 4 3 14 3. - <_> - - <_> - 8 4 6 4 -1. - <_> - 10 4 2 4 3. - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 5 2 12 9 -1. - <_> - 8 2 6 9 2. - <_> - - <_> - 10 11 4 2 -1. - <_> - 10 11 2 2 2. - 1 - <_> - - <_> - 7 14 8 6 -1. - <_> - 7 17 8 3 2. - <_> - - <_> - 5 4 12 11 -1. - <_> - 9 4 4 11 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 1 17 17 3 -1. - <_> - 1 18 17 1 3. - <_> - - <_> - 1 17 20 3 -1. - <_> - 1 18 20 1 3. - <_> - - <_> - 11 0 5 3 -1. - <_> - 10 1 5 1 3. - 1 - <_> - - <_> - 8 1 8 2 -1. - <_> - 8 1 4 2 2. - <_> - - <_> - 9 7 3 6 -1. - <_> - 9 9 3 2 3. - <_> - - <_> - 13 0 4 18 -1. - <_> - 13 0 2 18 2. - <_> - - <_> - 1 0 2 3 -1. - <_> - 1 1 2 1 3. - <_> - - <_> - 10 6 9 12 -1. - <_> - 13 6 3 12 3. - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 6 1 2 3. - <_> - - <_> - 19 0 2 3 -1. - <_> - 19 1 2 1 3. - <_> - - <_> - 0 7 20 1 -1. - <_> - 10 7 10 1 2. - <_> - - <_> - 13 5 4 4 -1. - <_> - 13 7 4 2 2. - <_> - - <_> - 2 0 2 3 -1. - <_> - 2 1 2 1 3. - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 3 6 3 2 -1. - <_> - 3 7 3 1 2. - <_> - - <_> - 3 4 16 16 -1. - <_> - 7 4 8 16 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 7 3 8 9 -1. - <_> - 9 3 4 9 2. - <_> - - <_> - 4 2 6 13 -1. - <_> - 7 2 3 13 2. - <_> - - <_> - 3 3 16 6 -1. - <_> - 7 3 8 6 2. - <_> - - <_> - 0 0 4 20 -1. - <_> - 0 0 2 10 2. - <_> - 2 10 2 10 2. - <_> - - <_> - 11 9 3 2 -1. - <_> - 11 9 3 1 2. - 1 - <_> - - <_> - 7 0 6 6 -1. - <_> - 9 2 2 2 9. - <_> - - <_> - 3 6 16 14 -1. - <_> - 3 13 16 7 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 11 4 3 3 2. - <_> - - <_> - 12 12 2 2 -1. - <_> - 12 12 1 2 2. - 1 - <_> - - <_> - 4 3 3 3 -1. - <_> - 4 4 3 1 3. - <_> - - <_> - 16 3 2 3 -1. - <_> - 16 4 2 1 3. - <_> - - <_> - 4 3 2 3 -1. - <_> - 4 4 2 1 3. - <_> - - <_> - 12 3 4 8 -1. - <_> - 12 3 4 4 2. - 1 - <_> - - <_> - 0 3 7 3 -1. - <_> - 0 4 7 1 3. - <_> - - <_> - 8 0 8 4 -1. - <_> - 8 2 8 2 2. - <_> - - <_> - 1 6 14 2 -1. - <_> - 1 6 7 1 2. - <_> - 8 7 7 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 6 5 12 -1. - <_> - 8 9 5 6 2. - <_> - - <_> - 2 1 18 2 -1. - <_> - 2 1 9 2 2. - <_> - - <_> - 0 5 2 6 -1. - <_> - 0 8 2 3 2. - <_> - - <_> - 15 17 4 3 -1. - <_> - 15 18 4 1 3. - <_> - - <_> - 0 13 13 3 -1. - <_> - 0 14 13 1 3. - <_> - - <_> - 12 17 1 3 -1. - <_> - 12 18 1 1 3. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 7 1 1 2. - <_> - - <_> - 18 10 4 10 -1. - <_> - 20 10 2 5 2. - <_> - 18 15 2 5 2. - <_> - - <_> - 1 17 3 3 -1. - <_> - 1 18 3 1 3. - <_> - - <_> - 11 2 9 15 -1. - <_> - 14 7 3 5 9. - <_> - - <_> - 5 3 12 2 -1. - <_> - 8 3 6 2 2. - <_> - - <_> - 4 5 18 2 -1. - <_> - 13 5 9 1 2. - <_> - 4 6 9 1 2. - <_> - - <_> - 7 2 2 9 -1. - <_> - 8 2 1 9 2. - <_> - - <_> - 16 17 4 3 -1. - <_> - 16 18 4 1 3. - <_> - - <_> - 6 0 10 1 -1. - <_> - 11 0 5 1 2. - <_> - - <_> - 15 17 6 3 -1. - <_> - 15 18 6 1 3. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 2 4 2 2. - <_> - 9 4 4 2 2. - <_> - - <_> - 5 10 12 3 -1. - <_> - 5 11 12 1 3. - <_> - - <_> - 8 8 5 4 -1. - <_> - 8 10 5 2 2. - <_> - - <_> - 18 2 2 3 -1. - <_> - 18 3 2 1 3. - <_> - - <_> - 2 17 4 3 -1. - <_> - 2 18 4 1 3. - <_> - - <_> - 13 3 1 2 -1. - <_> - 13 3 1 1 2. - 1 - <_> - - <_> - 7 8 2 3 -1. - <_> - 8 8 1 3 2. - <_> - - <_> - 18 2 2 3 -1. - <_> - 18 3 2 1 3. - <_> - - <_> - 2 2 2 3 -1. - <_> - 2 3 2 1 3. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 16 17 2 3 -1. - <_> - 16 18 2 1 3. - <_> - - <_> - 2 14 8 3 -1. - <_> - 2 15 8 1 3. - <_> - - <_> - 2 13 18 4 -1. - <_> - 11 13 9 2 2. - <_> - 2 15 9 2 2. - <_> - - <_> - 0 0 22 20 -1. - <_> - 11 0 11 20 2. - <_> - - <_> - 12 3 5 3 -1. - <_> - 12 4 5 1 3. - <_> - - <_> - 5 3 5 3 -1. - <_> - 5 4 5 1 3. - <_> - - <_> - 10 10 6 4 -1. - <_> - 13 10 3 2 2. - <_> - 10 12 3 2 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 6 10 3 2 2. - <_> - 9 12 3 2 2. - <_> - - <_> - 16 1 2 1 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 10 4 2 6 2. - <_> - - <_> - 9 0 4 8 -1. - <_> - 10 0 2 8 2. - <_> - - <_> - 7 4 8 2 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 6 5 3 5 -1. - <_> - 7 5 1 5 3. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 6 3 3 9 -1. - <_> - 7 3 1 9 3. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 0 18 4 2 -1. - <_> - 0 18 2 1 2. - <_> - 2 19 2 1 2. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 2 1 2 2. - <_> - - <_> - 6 3 4 12 -1. - <_> - 7 3 2 12 2. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 4 7 3 3 -1. - <_> - 5 8 1 1 9. - <_> - - <_> - 18 3 1 2 -1. - <_> - 18 4 1 1 2. - <_> - - <_> - 3 3 1 2 -1. - <_> - 3 4 1 1 2. - <_> - - <_> - 9 0 5 4 -1. - <_> - 9 2 5 2 2. - <_> - - <_> - 0 0 22 19 -1. - <_> - 11 0 11 19 2. - <_> - - <_> - 17 9 3 6 -1. - <_> - 18 10 1 6 3. - 1 - <_> - - <_> - 0 1 22 3 -1. - <_> - 11 1 11 3 2. - <_> - - <_> - 3 3 16 4 -1. - <_> - 7 3 8 4 2. - <_> - - <_> - 6 17 2 2 -1. - <_> - 6 18 2 1 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 10 3 3 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 3 8 2 1 -1. - <_> - 4 8 1 1 2. - <_> - - <_> - 8 4 8 6 -1. - <_> - 12 4 4 3 2. - <_> - 8 7 4 3 2. - <_> - - <_> - 6 4 8 6 -1. - <_> - 6 4 4 3 2. - <_> - 10 7 4 3 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 3 4 1 3. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 9 1 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 11 1 5 3 -1. - <_> - 10 2 5 1 3. - 1 - <_> - - <_> - 15 18 3 2 -1. - <_> - 15 19 3 1 2. - <_> - - <_> - 4 18 3 2 -1. - <_> - 4 19 3 1 2. - <_> - - <_> - 12 1 4 9 -1. - <_> - 13 1 2 9 2. - <_> - - <_> - 0 0 4 2 -1. - <_> - 0 0 2 1 2. - <_> - 2 1 2 1 2. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 0 1 6 3. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 1 11 18 4 -1. - <_> - 7 11 6 4 3. - <_> - - <_> - 5 8 16 5 -1. - <_> - 9 8 8 5 2. - <_> - - <_> - 4 0 14 1 -1. - <_> - 11 0 7 1 2. - <_> - - <_> - 11 11 3 3 -1. - <_> - 12 11 1 3 3. - <_> - - <_> - 8 11 3 3 -1. - <_> - 9 11 1 3 3. - <_> - - <_> - 21 9 1 2 -1. - <_> - 21 10 1 1 2. - <_> - - <_> - 0 13 22 7 -1. - <_> - 11 13 11 7 2. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 8 1 2 2. - <_> - - <_> - 6 4 6 10 -1. - <_> - 8 4 2 10 3. - <_> - - <_> - 17 6 2 3 -1. - <_> - 17 7 2 1 3. - <_> - - <_> - 0 0 16 19 -1. - <_> - 8 0 8 19 2. - <_> - - <_> - 10 5 4 6 -1. - <_> - 10 8 4 3 2. - <_> - - <_> - 3 6 2 3 -1. - <_> - 3 7 2 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 16 14 6 6 -1. - <_> - 16 14 3 6 2. - <_> - - <_> - 5 7 12 4 -1. - <_> - 8 7 6 4 2. - <_> - - <_> - 7 10 8 1 -1. - <_> - 9 10 4 1 2. - <_> - - <_> - 8 6 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 16 0 2 2 -1. - <_> - 16 1 2 1 2. - <_> - - <_> - 0 14 6 5 -1. - <_> - 3 14 3 5 2. - <_> - - <_> - 21 9 1 2 -1. - <_> - 21 10 1 1 2. - <_> - - <_> - 2 5 18 1 -1. - <_> - 8 5 6 1 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 0 9 1 2 -1. - <_> - 0 10 1 1 2. - <_> - - <_> - 0 0 22 7 -1. - <_> - 0 0 11 7 2. - <_> - - <_> - 10 2 2 2 -1. - <_> - 10 2 1 2 2. - 1 - <_> - - <_> - 7 4 8 9 -1. - <_> - 9 4 4 9 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 8 0 2 3 2. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 0 1 4 10 -1. - <_> - 0 1 2 5 2. - <_> - 2 6 2 5 2. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 4 2 1 2. - <_> - - <_> - 12 6 3 2 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 3 1 1 4 -1. - <_> - 3 2 1 2 2. - <_> - - <_> - 11 3 4 7 -1. - <_> - 12 3 2 7 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 10 2 2 8 2. - <_> - - <_> - 5 4 12 6 -1. - <_> - 8 4 6 6 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 5 2 12 3 -1. - <_> - 8 2 6 3 2. - <_> - - <_> - 10 0 3 3 -1. - <_> - 11 1 1 3 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 8 0 6 1 -1. - <_> - 8 0 3 1 2. - <_> - - <_> - 6 0 10 1 -1. - <_> - 11 0 5 1 2. - <_> - - <_> - 18 9 2 3 -1. - <_> - 18 10 2 1 3. - <_> - - <_> - 2 14 12 3 -1. - <_> - 5 14 6 3 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 6 1 3 3. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 9 8 10 12 -1. - <_> - 14 8 5 6 2. - <_> - 9 14 5 6 2. - <_> - - <_> - 0 12 21 6 -1. - <_> - 7 14 7 2 9. - <_> - - <_> - 12 7 1 2 -1. - <_> - 12 7 1 1 2. - 1 - <_> - - <_> - 11 2 4 11 -1. - <_> - 12 3 2 11 2. - 1 - <_> - - <_> - 10 5 4 6 -1. - <_> - 10 8 4 3 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 16 1 3 2 -1. - <_> - 16 2 3 1 2. - <_> - - <_> - 2 10 11 10 -1. - <_> - 2 15 11 5 2. - <_> - - <_> - 2 6 18 6 -1. - <_> - 2 8 18 2 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 10 7 1 2 2. - <_> - - <_> - 13 17 6 1 -1. - <_> - 13 17 3 1 2. - <_> - - <_> - 10 14 1 2 -1. - <_> - 10 15 1 1 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 11 0 8 1 -1. - <_> - 13 2 4 1 2. - 1 - <_> - - <_> - 3 4 16 4 -1. - <_> - 11 4 8 2 2. - <_> - 3 6 8 2 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 3 3. - 1 - <_> - - <_> - 0 2 22 4 -1. - <_> - 0 2 11 4 2. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 4 1 2. - 1 - <_> - - <_> - 8 1 9 17 -1. - <_> - 11 1 3 17 3. - <_> - - <_> - 3 1 16 17 -1. - <_> - 7 1 8 17 2. - <_> - - <_> - 15 6 7 2 -1. - <_> - 15 7 7 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 16 10 5 4 -1. - <_> - 16 10 5 2 2. - 1 - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 6 3 8 3 -1. - <_> - 6 4 8 1 3. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 0 0 22 4 -1. - <_> - 0 0 11 2 2. - <_> - 11 2 11 2 2. - <_> - - <_> - 11 4 1 3 -1. - <_> - 11 5 1 1 3. - <_> - - <_> - 9 4 3 9 -1. - <_> - 9 7 3 3 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 15 16 2 2 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 9 7 4 4 -1. - <_> - 11 7 2 2 2. - <_> - 9 9 2 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 3 15 16 2 -1. - <_> - 11 15 8 1 2. - <_> - 3 16 8 1 2. - <_> - - <_> - 9 12 2 2 -1. - <_> - 9 13 2 1 2. - <_> - - <_> - 12 4 6 2 -1. - <_> - 12 5 6 1 2. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 13 15 1 2 -1. - <_> - 13 16 1 1 2. - <_> - - <_> - 0 2 21 18 -1. - <_> - 7 8 7 6 9. - <_> - - <_> - 11 10 4 6 -1. - <_> - 9 12 4 2 3. - 1 - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 13 7 3 9 -1. - <_> - 14 7 1 9 3. - <_> - - <_> - 7 7 8 9 -1. - <_> - 9 7 4 9 2. - <_> - - <_> - 17 6 5 2 -1. - <_> - 17 7 5 1 2. - <_> - - <_> - 7 1 2 6 -1. - <_> - 7 1 1 3 2. - <_> - 8 4 1 3 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 0 1 22 19 -1. - <_> - 11 1 11 19 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 9 2 3 4 -1. - <_> - 10 2 1 4 3. - <_> - - <_> - 16 1 4 1 -1. - <_> - 16 1 2 1 2. - <_> - - <_> - 7 3 3 9 -1. - <_> - 8 3 1 9 3. - <_> - - <_> - 11 7 2 2 -1. - <_> - 11 7 1 2 2. - 1 - <_> - - <_> - 6 5 6 10 -1. - <_> - 6 5 3 5 2. - <_> - 9 10 3 5 2. - <_> - - <_> - 16 6 6 2 -1. - <_> - 16 7 6 1 2. - <_> - - <_> - 0 6 6 2 -1. - <_> - 0 7 6 1 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 7 4 8 2 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 3 2 16 2 -1. - <_> - 7 2 8 2 2. - <_> - - <_> - 5 7 12 4 -1. - <_> - 8 7 6 4 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 11 4 2 3 2. - <_> - 9 7 2 3 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 0 2 20 7 -1. - <_> - 10 2 10 7 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 0 0 2 3 -1. - <_> - 1 0 1 3 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 16 11 4 -1. - <_> - 5 18 11 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 2 0 18 9 -1. - <_> - 8 3 6 3 9. - <_> - - <_> - 4 0 7 8 -1. - <_> - 4 2 7 4 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 6 8 4 -1. - <_> - 7 7 8 2 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 3 15 2 3 -1. - <_> - 2 16 2 1 3. - 1 - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 10 7 1 4 -1. - <_> - 10 9 1 2 2. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 9 3 3 3 -1. - <_> - 9 4 3 1 3. - <_> - - <_> - 11 4 10 12 -1. - <_> - 11 4 5 12 2. - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 5 1 1 2 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 16 1 1 2 -1. - <_> - 16 2 1 1 2. - <_> - - <_> - 5 1 1 2 -1. - <_> - 5 2 1 1 2. - <_> - - <_> - 4 16 14 4 -1. - <_> - 4 17 14 2 2. - <_> - - <_> - 5 14 2 2 -1. - <_> - 5 14 1 1 2. - <_> - 6 15 1 1 2. - <_> - - <_> - 10 1 3 4 -1. - <_> - 10 3 3 2 2. - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 13 6 3 3 -1. - <_> - 14 6 1 3 3. - <_> - - <_> - 6 6 3 3 -1. - <_> - 7 6 1 3 3. - <_> - - <_> - 13 16 1 2 -1. - <_> - 13 17 1 1 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 0 1 3 3. - <_> - - <_> - 10 1 3 6 -1. - <_> - 11 1 1 6 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 16 1 2 -1. - <_> - 8 17 1 1 2. - <_> - - <_> - 18 8 2 8 -1. - <_> - 18 8 2 4 2. - 1 - <_> - - <_> - 9 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 0 4 1 2 -1. - <_> - 0 5 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 10 3 4 6 -1. - <_> - 12 3 2 3 2. - <_> - 10 6 2 3 2. - <_> - - <_> - 1 4 12 15 -1. - <_> - 5 4 4 15 3. - <_> - - <_> - 9 10 12 7 -1. - <_> - 13 10 4 7 3. - <_> - - <_> - 6 18 2 2 -1. - <_> - 6 19 2 1 2. - <_> - - <_> - 12 8 10 9 -1. - <_> - 12 8 5 9 2. - <_> - - <_> - 0 11 15 6 -1. - <_> - 5 11 5 6 3. - <_> - - <_> - 11 5 10 12 -1. - <_> - 11 5 5 12 2. - <_> - - <_> - 1 5 10 12 -1. - <_> - 6 5 5 12 2. - <_> - - <_> - 15 0 6 11 -1. - <_> - 15 0 3 11 2. - 1 - <_> - - <_> - 4 0 2 8 -1. - <_> - 4 4 2 4 2. - <_> - - <_> - 2 9 20 3 -1. - <_> - 2 10 20 1 3. - <_> - - <_> - 3 7 13 12 -1. - <_> - 3 13 13 6 2. - <_> - - <_> - 9 11 5 6 -1. - <_> - 9 14 5 3 2. - <_> - - <_> - 0 2 21 18 -1. - <_> - 7 8 7 6 9. - <_> - - <_> - 10 6 7 2 -1. - <_> - 10 7 7 1 2. - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 5 2 1 2. - <_> - - <_> - 9 5 4 5 -1. - <_> - 10 5 2 5 2. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 5 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 0 7 4 -1. - <_> - 7 1 7 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 9 0 2 5 2. - <_> - 11 5 2 5 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 6 7 2 -1. - <_> - 5 7 7 1 2. - <_> - - <_> - 10 5 2 9 -1. - <_> - 10 8 2 3 3. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 11 3 4 7 -1. - <_> - 12 3 2 7 2. - <_> - - <_> - 7 3 4 7 -1. - <_> - 8 3 2 7 2. - <_> - - <_> - 13 3 6 6 -1. - <_> - 15 3 2 6 3. - <_> - - <_> - 0 1 1 6 -1. - <_> - 0 3 1 2 3. - <_> - - <_> - 13 3 6 6 -1. - <_> - 15 3 2 6 3. - <_> - - <_> - 3 3 6 6 -1. - <_> - 5 3 2 6 3. - <_> - - <_> - 14 6 8 2 -1. - <_> - 18 6 4 1 2. - <_> - 14 7 4 1 2. - <_> - - <_> - 1 0 20 20 -1. - <_> - 1 10 20 10 2. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 0 6 8 2 -1. - <_> - 0 6 4 1 2. - <_> - 4 7 4 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 1 2 10 -1. - <_> - 11 1 1 5 2. - <_> - 10 6 1 5 2. - <_> - - <_> - 8 4 5 3 -1. - <_> - 8 5 5 1 3. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 5 18 16 2 -1. - <_> - 13 18 8 1 2. - <_> - 5 19 8 1 2. - <_> - - <_> - 6 3 4 6 -1. - <_> - 7 3 2 6 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 16 0 6 6 -1. - <_> - 16 2 6 2 3. - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 8 1 2 3. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 9 2 2 4 2. - <_> - 11 6 2 4 2. - <_> - - <_> - 8 11 6 1 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 10 2 3 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 3 4 16 4 -1. - <_> - 7 4 8 4 2. - <_> - - <_> - 3 2 16 6 -1. - <_> - 11 2 8 3 2. - <_> - 3 5 8 3 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 16 11 6 9 -1. - <_> - 18 11 2 9 3. - <_> - - <_> - 1 8 18 9 -1. - <_> - 7 8 6 9 3. - <_> - - <_> - 12 3 7 4 -1. - <_> - 12 5 7 2 2. - <_> - - <_> - 9 0 3 3 -1. - <_> - 10 1 1 3 3. - 1 - <_> - - <_> - 11 0 2 10 -1. - <_> - 11 0 1 10 2. - <_> - - <_> - 4 1 8 6 -1. - <_> - 4 4 8 3 2. - <_> - - <_> - 11 0 2 10 -1. - <_> - 11 0 1 10 2. - <_> - - <_> - 4 0 3 8 -1. - <_> - 4 4 3 4 2. - <_> - - <_> - 12 6 8 4 -1. - <_> - 14 8 4 4 2. - 1 - <_> - - <_> - 6 1 10 1 -1. - <_> - 11 1 5 1 2. - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 0 3 22 1 -1. - <_> - 11 3 11 1 2. - <_> - - <_> - 12 6 3 3 -1. - <_> - 13 6 1 3 3. - <_> - - <_> - 0 4 20 13 -1. - <_> - 10 4 10 13 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 10 3 2 3 -1. - <_> - 10 4 2 1 3. - <_> - - <_> - 10 4 2 9 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 4 8 13 10 -1. - <_> - 4 13 13 5 2. - <_> - - <_> - 4 9 14 10 -1. - <_> - 4 14 14 5 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 3 3. - 1 - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 11 5 2 1 -1. - <_> - 11 5 1 1 2. - <_> - - <_> - 9 1 3 4 -1. - <_> - 9 2 3 2 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 4 18 3 -1. - <_> - 1 5 18 1 3. - <_> - - <_> - 20 1 1 2 -1. - <_> - 20 2 1 1 2. - <_> - - <_> - 1 1 1 2 -1. - <_> - 1 2 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 9 15 2 2 -1. - <_> - 9 16 2 1 2. - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 6 2 2 2. - 1 - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 6 3 9 9 -1. - <_> - 9 3 3 9 3. - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 6 5 3 3 -1. - <_> - 7 5 1 3 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 15 1 1 3 3. - 1 - <_> - - <_> - 8 0 3 3 -1. - <_> - 7 1 3 1 3. - 1 - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 4 15 7 2 -1. - <_> - 4 16 7 1 2. - <_> - - <_> - 12 4 10 4 -1. - <_> - 12 6 10 2 2. - <_> - - <_> - 0 4 10 4 -1. - <_> - 0 6 10 2 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 1 16 20 2 -1. - <_> - 1 16 10 1 2. - <_> - 11 17 10 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 8 5 2 1 -1. - <_> - 9 5 1 1 2. - <_> - - <_> - 14 0 2 1 -1. - <_> - 14 0 1 1 2. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 19 16 1 4 -1. - <_> - 19 18 1 2 2. - <_> - - <_> - 8 1 5 4 -1. - <_> - 8 2 5 2 2. - <_> - - <_> - 2 15 18 4 -1. - <_> - 11 15 9 2 2. - <_> - 2 17 9 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 11 14 3 1 -1. - <_> - 12 14 1 1 3. - <_> - - <_> - 7 5 2 1 -1. - <_> - 8 5 1 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 1 - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 12 9 2 6 -1. - <_> - 13 9 1 3 2. - <_> - 12 12 1 3 2. - <_> - - <_> - 7 1 3 2 -1. - <_> - 8 2 1 2 3. - 1 - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 4 3 5 4 -1. - <_> - 4 4 5 2 2. - <_> - - <_> - 0 8 22 8 -1. - <_> - 0 8 11 8 2. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 14 14 2 2 -1. - <_> - 14 14 1 2 2. - 1 - <_> - - <_> - 4 18 14 1 -1. - <_> - 11 18 7 1 2. - <_> - - <_> - 14 7 7 6 -1. - <_> - 12 9 7 2 3. - 1 - <_> - - <_> - 1 16 2 4 -1. - <_> - 1 18 2 2 2. - <_> - - <_> - 18 18 3 1 -1. - <_> - 19 18 1 1 3. - <_> - - <_> - 1 18 3 1 -1. - <_> - 2 18 1 1 3. - <_> - - <_> - 13 17 2 3 -1. - <_> - 13 18 2 1 3. - <_> - - <_> - 9 10 4 8 -1. - <_> - 9 14 4 4 2. - <_> - - <_> - 4 6 14 12 -1. - <_> - 4 12 14 6 2. - <_> - - <_> - 5 2 8 4 -1. - <_> - 5 2 4 2 2. - <_> - 9 4 4 2 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 7 0 7 4 -1. - <_> - 7 2 7 2 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 7 4 2 2. - <_> - - <_> - 7 4 8 8 -1. - <_> - 9 4 4 8 2. - <_> - - <_> - 2 0 18 11 -1. - <_> - 8 0 6 11 3. - <_> - - <_> - 3 3 16 2 -1. - <_> - 3 3 8 1 2. - <_> - 11 4 8 1 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 6 3 6 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 0 11 1 2 -1. - <_> - 0 12 1 1 2. - <_> - - <_> - 11 8 2 4 -1. - <_> - 12 8 1 2 2. - <_> - 11 10 1 2 2. - <_> - - <_> - 7 6 2 4 -1. - <_> - 7 7 2 2 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 11 7 3 2 2. - <_> - 8 9 3 2 2. - <_> - - <_> - 4 0 2 2 -1. - <_> - 4 1 2 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 6 2 8 3 -1. - <_> - 6 2 4 3 2. - 1 - <_> - - <_> - 10 0 6 6 -1. - <_> - 13 0 3 3 2. - <_> - 10 3 3 3 2. - <_> - - <_> - 6 8 6 6 -1. - <_> - 6 8 3 6 2. - 1 - <_> - - <_> - 4 6 14 2 -1. - <_> - 11 6 7 1 2. - <_> - 4 7 7 1 2. - <_> - - <_> - 9 16 1 3 -1. - <_> - 9 17 1 1 3. - <_> - - <_> - 1 10 20 10 -1. - <_> - 1 15 20 5 2. - <_> - - <_> - 3 6 16 14 -1. - <_> - 3 13 16 7 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 8 2 6 8 -1. - <_> - 11 2 3 4 2. - <_> - 8 6 3 4 2. - <_> - - <_> - 8 4 6 4 -1. - <_> - 8 4 3 2 2. - <_> - 11 6 3 2 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 6 6 3 4 -1. - <_> - 7 6 1 4 3. - <_> - - <_> - 13 5 3 4 -1. - <_> - 14 5 1 4 3. - <_> - - <_> - 6 5 3 4 -1. - <_> - 7 5 1 4 3. - <_> - - <_> - 6 0 10 1 -1. - <_> - 6 0 5 1 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 10 6 2 4 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 9 4 3 9 -1. - <_> - 9 7 3 3 3. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 6 7 3 12 -1. - <_> - 6 13 3 6 2. - <_> - - <_> - 10 5 2 2 -1. - <_> - 11 5 1 1 2. - <_> - 10 6 1 1 2. - <_> - - <_> - 9 5 2 3 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 15 3 2 3 -1. - <_> - 15 4 2 1 3. - <_> - - <_> - 5 3 2 3 -1. - <_> - 5 4 2 1 3. - <_> - - <_> - 9 0 7 4 -1. - <_> - 9 1 7 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 11 3 5 8 -1. - <_> - 11 5 5 4 2. - <_> - - <_> - 10 4 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 9 4 5 3 -1. - <_> - 9 5 5 1 3. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 2 14 19 3 -1. - <_> - 2 15 19 1 3. - <_> - - <_> - 2 18 5 2 -1. - <_> - 2 19 5 1 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 8 0 6 8 -1. - <_> - 8 4 6 4 2. - <_> - - <_> - 6 3 5 8 -1. - <_> - 6 5 5 4 2. - <_> - - <_> - 11 3 6 2 -1. - <_> - 11 3 3 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 19 2 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 0 0 22 17 -1. - <_> - 11 0 11 17 2. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 9 0 3 4 -1. - <_> - 10 1 1 4 3. - 1 - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 6 17 2 3 -1. - <_> - 6 18 2 1 3. - <_> - - <_> - 5 2 12 6 -1. - <_> - 8 2 6 6 2. - <_> - - <_> - 6 0 6 3 -1. - <_> - 8 0 2 3 3. - <_> - - <_> - 19 6 3 3 -1. - <_> - 20 7 1 1 9. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 0 6 3 3 -1. - <_> - 1 7 1 1 9. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 1 16 3 2 -1. - <_> - 2 16 1 2 3. - <_> - - <_> - 17 0 4 8 -1. - <_> - 19 0 2 4 2. - <_> - 17 4 2 4 2. - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 8 6 6 1 3. - <_> - - <_> - 3 18 2 2 -1. - <_> - 3 19 2 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 8 0 9 2 -1. - <_> - 8 1 9 1 2. - <_> - - <_> - 6 0 10 4 -1. - <_> - 6 1 10 2 2. - <_> - - <_> - 8 4 6 6 -1. - <_> - 10 6 2 2 9. - <_> - - <_> - 8 8 2 6 -1. - <_> - 8 8 1 3 2. - <_> - 9 11 1 3 2. - <_> - - <_> - 11 7 3 2 -1. - <_> - 11 7 3 1 2. - 1 - <_> - - <_> - 8 9 2 4 -1. - <_> - 8 9 1 2 2. - <_> - 9 11 1 2 2. - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 1 0 4 8 -1. - <_> - 1 0 2 4 2. - <_> - 3 4 2 4 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 2 4 3 -1. - <_> - 8 3 4 1 3. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 7 8 1 -1. - <_> - 7 7 4 1 2. - <_> - - <_> - 3 5 18 12 -1. - <_> - 9 9 6 4 9. - <_> - - <_> - 11 9 6 5 -1. - <_> - 13 11 2 5 3. - 1 - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 2 18 18 2 -1. - <_> - 11 18 9 1 2. - <_> - 2 19 9 1 2. - <_> - - <_> - 9 0 3 14 -1. - <_> - 9 7 3 7 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 13 9 8 2 2. - 1 - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 7 2 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 13 9 8 2 2. - 1 - <_> - - <_> - 8 8 4 8 -1. - <_> - 9 9 2 8 2. - 1 - <_> - - <_> - 17 0 4 2 -1. - <_> - 17 0 4 1 2. - 1 - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 8 9 7 -1. - <_> - 11 8 3 7 3. - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 8 2 2 2. - 1 - <_> - - <_> - 10 8 3 6 -1. - <_> - 11 10 1 2 9. - <_> - - <_> - 4 15 4 4 -1. - <_> - 4 15 2 2 2. - <_> - 6 17 2 2 2. - <_> - - <_> - 13 4 4 4 -1. - <_> - 12 5 4 2 2. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 7 14 1 2 -1. - <_> - 7 14 1 1 2. - 1 - <_> - - <_> - 12 8 3 3 -1. - <_> - 13 9 1 3 3. - 1 - <_> - - <_> - 10 8 3 3 -1. - <_> - 9 9 3 1 3. - 1 - <_> - - <_> - 7 0 4 6 -1. - <_> - 7 0 2 3 2. - <_> - 9 3 2 3 2. - <_> - - <_> - 6 18 10 2 -1. - <_> - 6 19 10 1 2. - <_> - - <_> - 10 17 1 3 -1. - <_> - 10 18 1 1 3. - <_> - - <_> - 8 0 12 4 -1. - <_> - 14 0 6 2 2. - <_> - 8 2 6 2 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 14 14 7 2 -1. - <_> - 14 15 7 1 2. - <_> - - <_> - 2 0 12 6 -1. - <_> - 2 0 6 3 2. - <_> - 8 3 6 3 2. - <_> - - <_> - 11 5 1 2 -1. - <_> - 11 6 1 1 2. - <_> - - <_> - 8 7 4 6 -1. - <_> - 8 10 4 3 2. - <_> - - <_> - 12 6 10 4 -1. - <_> - 12 6 10 2 2. - 1 - <_> - - <_> - 3 18 3 1 -1. - <_> - 4 18 1 1 3. - <_> - - <_> - 8 2 12 18 -1. - <_> - 8 11 12 9 2. - <_> - - <_> - 10 6 4 10 -1. - <_> - 10 6 2 10 2. - 1 - <_> - - <_> - 4 1 14 4 -1. - <_> - 11 1 7 2 2. - <_> - 4 3 7 2 2. - <_> - - <_> - 2 1 18 9 -1. - <_> - 8 1 6 9 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 0 13 12 7 -1. - <_> - 4 13 4 7 3. - <_> - - <_> - 12 0 4 1 -1. - <_> - 13 0 2 1 2. - <_> - - <_> - 6 0 4 1 -1. - <_> - 7 0 2 1 2. - <_> - - <_> - 14 6 4 12 -1. - <_> - 14 12 4 6 2. - <_> - - <_> - 4 17 2 2 -1. - <_> - 4 18 2 1 2. - <_> - - <_> - 16 2 5 2 -1. - <_> - 16 3 5 1 2. - <_> - - <_> - 3 0 15 6 -1. - <_> - 8 2 5 2 9. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 0 17 19 2 -1. - <_> - 0 18 19 1 2. - <_> - - <_> - 18 15 1 2 -1. - <_> - 18 16 1 1 2. - <_> - - <_> - 5 9 4 5 -1. - <_> - 6 10 2 5 2. - 1 - <_> - - <_> - 3 6 18 2 -1. - <_> - 3 6 9 2 2. - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 7 2 2 9. - <_> - - <_> - 13 8 2 2 -1. - <_> - 13 8 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 2 1 2. - 1 - <_> - - <_> - 10 9 6 10 -1. - <_> - 13 9 3 5 2. - <_> - 10 14 3 5 2. - <_> - - <_> - 2 9 6 8 -1. - <_> - 2 9 3 4 2. - <_> - 5 13 3 4 2. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 12 11 7 3 -1. - <_> - 12 12 7 1 3. - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 9 4 2 6 -1. - <_> - 9 7 2 3 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 9 2 3 -1. - <_> - 10 10 2 1 3. - <_> - - <_> - 16 0 2 4 -1. - <_> - 16 1 2 2 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 1 2 2 2. - <_> - - <_> - 11 1 4 4 -1. - <_> - 13 1 2 2 2. - <_> - 11 3 2 2 2. - <_> - - <_> - 6 1 6 4 -1. - <_> - 6 1 3 2 2. - <_> - 9 3 3 2 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 1 5 18 12 -1. - <_> - 7 9 6 4 9. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 5 1 12 12 -1. - <_> - 9 1 4 12 3. - <_> - - <_> - 8 3 6 11 -1. - <_> - 8 3 3 11 2. - <_> - - <_> - 9 0 3 5 -1. - <_> - 10 0 1 5 3. - <_> - - <_> - 10 3 6 9 -1. - <_> - 12 6 2 3 9. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 3 1 18 8 -1. - <_> - 3 5 18 4 2. - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 5 4 -1. - <_> - 10 0 5 2 2. - 1 - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 12 0 4 3 -1. - <_> - 11 1 4 1 3. - 1 - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 13 3 3 3 -1. - <_> - 13 4 3 1 3. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 10 4 6 9 -1. - <_> - 12 7 2 3 9. - <_> - - <_> - 6 2 3 7 -1. - <_> - 7 2 1 7 3. - <_> - - <_> - 7 0 15 3 -1. - <_> - 12 1 5 1 9. - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 14 9 2 6 -1. - <_> - 14 9 1 6 2. - 1 - <_> - - <_> - 8 13 4 2 -1. - <_> - 10 13 2 2 2. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 11 7 2 3 -1. - <_> - 11 7 1 3 2. - 1 - <_> - - <_> - 18 16 1 4 -1. - <_> - 18 18 1 2 2. - <_> - - <_> - 7 13 2 1 -1. - <_> - 8 13 1 1 2. - <_> - - <_> - 12 13 6 1 -1. - <_> - 14 13 2 1 3. - <_> - - <_> - 4 13 6 1 -1. - <_> - 6 13 2 1 3. - <_> - - <_> - 7 0 15 3 -1. - <_> - 12 1 5 1 9. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 14 0 4 3 -1. - <_> - 13 1 4 1 3. - 1 - <_> - - <_> - 6 0 7 4 -1. - <_> - 6 1 7 2 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 1 14 20 3 -1. - <_> - 1 15 20 1 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 15 16 6 4 -1. - <_> - 17 16 2 4 3. - <_> - - <_> - 1 16 6 4 -1. - <_> - 3 16 2 4 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 3 8 16 10 -1. - <_> - 3 13 16 5 2. - <_> - - <_> - 12 12 1 2 -1. - <_> - 12 13 1 1 2. - <_> - - <_> - 9 12 1 2 -1. - <_> - 9 13 1 1 2. - <_> - - <_> - 9 12 4 3 -1. - <_> - 9 13 4 1 3. - <_> - - <_> - 3 6 4 2 -1. - <_> - 3 6 2 1 2. - <_> - 5 7 2 1 2. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 9 15 1 4 -1. - <_> - 9 17 1 2 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 11 0 4 5 -1. - <_> - 12 1 2 5 2. - 1 - <_> - - <_> - 11 5 2 2 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 10 1 4 3 -1. - <_> - 11 2 2 3 2. - 1 - <_> - - <_> - 8 2 6 6 -1. - <_> - 11 2 3 3 2. - <_> - 8 5 3 3 2. - <_> - - <_> - 8 18 1 2 -1. - <_> - 8 19 1 1 2. - <_> - - <_> - 9 10 7 3 -1. - <_> - 9 11 7 1 3. - <_> - - <_> - 9 3 2 6 -1. - <_> - 10 3 1 6 2. - <_> - - <_> - 3 15 17 2 -1. - <_> - 3 16 17 1 2. - <_> - - <_> - 4 13 1 2 -1. - <_> - 4 14 1 1 2. - <_> - - <_> - 12 8 1 2 -1. - <_> - 12 9 1 1 2. - <_> - - <_> - 8 4 4 11 -1. - <_> - 10 4 2 11 2. - <_> - - <_> - 18 10 2 4 -1. - <_> - 18 10 1 4 2. - 1 - <_> - - <_> - 4 10 4 2 -1. - <_> - 4 10 4 1 2. - 1 - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 2 6 15 12 -1. - <_> - 7 10 5 4 9. - <_> - - <_> - 12 10 4 3 -1. - <_> - 12 11 4 1 3. - <_> - - <_> - 6 10 4 3 -1. - <_> - 6 11 4 1 3. - <_> - - <_> - 7 4 12 15 -1. - <_> - 11 4 4 15 3. - <_> - - <_> - 5 5 8 13 -1. - <_> - 7 5 4 13 2. - <_> - - <_> - 14 0 4 1 -1. - <_> - 15 0 2 1 2. - <_> - - <_> - 4 0 4 1 -1. - <_> - 5 0 2 1 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 9 7 4 4 -1. - <_> - 11 7 2 2 2. - <_> - 9 9 2 2 2. - <_> - - <_> - 10 6 2 2 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 10 4 2 2 -1. - <_> - 11 4 1 1 2. - <_> - 10 5 1 1 2. - <_> - - <_> - 8 4 3 1 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 8 2 6 6 -1. - <_> - 10 4 2 2 9. - <_> - - <_> - 5 2 12 2 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 0 0 6 6 -1. - <_> - 0 3 6 3 2. - <_> - - <_> - 5 1 12 8 -1. - <_> - 8 1 6 8 2. - <_> - - <_> - 0 0 3 5 -1. - <_> - 1 0 1 5 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 5 0 11 4 -1. - <_> - 5 2 11 2 2. - <_> - - <_> - 10 4 4 6 -1. - <_> - 12 4 2 3 2. - <_> - 10 7 2 3 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 12 5 1 3 3. - 1 - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 3 7 2 1 -1. - <_> - 4 7 1 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 2 4 4 4 -1. - <_> - 2 4 2 2 2. - <_> - 4 6 2 2 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 9 5 4 6 -1. - <_> - 9 8 4 3 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 1 4 8 8 -1. - <_> - 3 4 4 8 2. - <_> - - <_> - 2 5 18 14 -1. - <_> - 2 12 18 7 2. - <_> - - <_> - 3 9 15 10 -1. - <_> - 3 14 15 5 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 17 1 1 1 2. - 1 - <_> - - <_> - 0 14 20 1 -1. - <_> - 5 14 10 1 2. - <_> - - <_> - 17 1 2 1 -1. - <_> - 17 1 1 1 2. - 1 - <_> - - <_> - 8 5 2 2 -1. - <_> - 8 5 1 1 2. - <_> - 9 6 1 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 11 0 1 1 2. - <_> - - <_> - 14 14 8 6 -1. - <_> - 14 14 4 6 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 13 4 3 5 -1. - <_> - 14 4 1 5 3. - <_> - - <_> - 3 2 2 3 -1. - <_> - 4 2 1 3 2. - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 3 2 2 2. - <_> - - <_> - 6 6 4 6 -1. - <_> - 7 6 2 6 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 4 0 18 18 -1. - <_> - 4 0 9 18 2. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 11 4 4 5 -1. - <_> - 12 5 2 5 2. - 1 - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 0 15 8 5 -1. - <_> - 4 15 4 5 2. - <_> - - <_> - 12 17 10 3 -1. - <_> - 12 17 5 3 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 10 0 3 1 -1. - <_> - 11 0 1 1 3. - <_> - - <_> - 0 17 8 3 -1. - <_> - 4 17 4 3 2. - <_> - - <_> - 16 16 1 2 -1. - <_> - 16 17 1 1 2. - <_> - - <_> - 0 0 18 18 -1. - <_> - 9 0 9 18 2. - <_> - - <_> - 8 3 6 12 -1. - <_> - 8 3 3 12 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 5 16 1 2 -1. - <_> - 5 17 1 1 2. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 6 3 10 2 -1. - <_> - 11 3 5 1 2. - <_> - 6 4 5 1 2. - <_> - - <_> - 9 0 3 6 -1. - <_> - 10 0 1 6 3. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 0 2 20 6 -1. - <_> - 0 2 10 3 2. - <_> - 10 5 10 3 2. - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 0 12 20 3 -1. - <_> - 0 13 20 1 3. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 3 6 3 -1. - <_> - 10 4 2 1 9. - <_> - - <_> - 10 4 4 2 -1. - <_> - 12 4 2 1 2. - <_> - 10 5 2 1 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 9 4 6 4 -1. - <_> - 12 4 3 2 2. - <_> - 9 6 3 2 2. - <_> - - <_> - 8 4 6 3 -1. - <_> - 8 5 6 1 3. - <_> - - <_> - 13 5 3 2 -1. - <_> - 13 6 3 1 2. - <_> - - <_> - 6 5 3 2 -1. - <_> - 6 6 3 1 2. - <_> - - <_> - 12 0 5 3 -1. - <_> - 11 1 5 1 3. - 1 - <_> - - <_> - 0 2 19 12 -1. - <_> - 0 5 19 6 2. - <_> - - <_> - 6 4 15 16 -1. - <_> - 6 12 15 8 2. - <_> - - <_> - 9 13 4 2 -1. - <_> - 9 14 4 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 14 8 8 2 2. - 1 - <_> - - <_> - 3 16 4 4 -1. - <_> - 3 17 4 2 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 11 4 2 3 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 14 1 3 8 -1. - <_> - 15 2 1 8 3. - 1 - <_> - - <_> - 7 1 2 6 -1. - <_> - 7 1 1 3 2. - <_> - 8 4 1 3 2. - <_> - - <_> - 12 0 5 3 -1. - <_> - 11 1 5 1 3. - 1 - <_> - - <_> - 3 0 10 8 -1. - <_> - 3 0 5 4 2. - <_> - 8 4 5 4 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 7 0 9 3 -1. - <_> - 6 1 9 1 3. - 1 - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 10 1 1 6 -1. - <_> - 10 4 1 3 2. - <_> - - <_> - 14 8 2 2 -1. - <_> - 15 8 1 1 2. - <_> - 14 9 1 1 2. - <_> - - <_> - 8 9 2 2 -1. - <_> - 8 10 2 1 2. - <_> - - <_> - 1 15 20 3 -1. - <_> - 6 15 10 3 2. - <_> - - <_> - 1 17 7 2 -1. - <_> - 1 18 7 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 12 1 1 2. - <_> - 1 13 1 1 2. - <_> - - <_> - 19 17 1 2 -1. - <_> - 19 18 1 1 2. - <_> - - <_> - 10 0 3 5 -1. - <_> - 11 1 1 5 3. - 1 - <_> - - <_> - 18 17 2 2 -1. - <_> - 18 18 2 1 2. - <_> - - <_> - 2 17 1 2 -1. - <_> - 2 18 1 1 2. - <_> - - <_> - 14 8 8 4 -1. - <_> - 14 8 8 2 2. - 1 - <_> - - <_> - 0 2 22 15 -1. - <_> - 11 2 11 15 2. - <_> - - <_> - 13 3 4 2 -1. - <_> - 13 3 2 2 2. - <_> - - <_> - 5 3 4 2 -1. - <_> - 7 3 2 2 2. - <_> - - <_> - 4 2 16 4 -1. - <_> - 8 2 8 4 2. - <_> - - <_> - 8 18 4 1 -1. - <_> - 10 18 2 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 2 12 2 2 -1. - <_> - 2 12 1 1 2. - <_> - 3 13 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 1 12 2 2 -1. - <_> - 1 12 1 1 2. - <_> - 2 13 1 1 2. - <_> - - <_> - 20 2 2 4 -1. - <_> - 21 2 1 2 2. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 2 2 4 -1. - <_> - 0 2 1 2 2. - <_> - 1 4 1 2 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 5 1 11 8 -1. - <_> - 5 3 11 4 2. - <_> - - <_> - 16 10 3 2 -1. - <_> - 17 11 1 2 3. - 1 - <_> - - <_> - 8 9 4 7 -1. - <_> - 9 10 2 7 2. - 1 - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 7 9 4 7 -1. - <_> - 7 9 2 7 2. - 1 - <_> - - <_> - 6 5 10 4 -1. - <_> - 11 5 5 2 2. - <_> - 6 7 5 2 2. - <_> - - <_> - 5 5 8 3 -1. - <_> - 5 6 8 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 6 3 6 9 -1. - <_> - 8 6 2 3 9. - <_> - - <_> - 5 8 12 5 -1. - <_> - 9 8 4 5 3. - <_> - - <_> - 9 5 4 6 -1. - <_> - 10 5 2 6 2. - <_> - - <_> - 14 6 3 5 -1. - <_> - 15 7 1 5 3. - 1 - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 16 10 3 2 -1. - <_> - 17 11 1 2 3. - 1 - <_> - - <_> - 6 10 2 3 -1. - <_> - 5 11 2 1 3. - 1 - <_> - - <_> - 17 14 3 4 -1. - <_> - 17 16 3 2 2. - <_> - - <_> - 5 10 7 4 -1. - <_> - 5 11 7 2 2. - <_> - - <_> - 13 7 1 4 -1. - <_> - 12 8 1 2 2. - 1 - <_> - - <_> - 9 11 4 1 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 12 8 3 5 -1. - <_> - 13 9 1 5 3. - 1 - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 4 0 2 3 -1. - <_> - 4 1 2 1 3. - <_> - - <_> - 12 8 3 5 -1. - <_> - 13 9 1 5 3. - 1 - <_> - - <_> - 10 8 5 3 -1. - <_> - 9 9 5 1 3. - 1 - <_> - - <_> - 12 8 3 8 -1. - <_> - 13 8 1 8 3. - <_> - - <_> - 7 8 3 8 -1. - <_> - 8 8 1 8 3. - <_> - - <_> - 8 7 6 6 -1. - <_> - 8 9 6 2 3. - <_> - - <_> - 4 2 1 18 -1. - <_> - 4 11 1 9 2. - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - <_> - - <_> - 3 9 3 8 -1. - <_> - 3 13 3 4 2. - <_> - - <_> - 20 11 1 2 -1. - <_> - 20 12 1 1 2. - <_> - - <_> - 1 11 1 2 -1. - <_> - 1 12 1 1 2. - <_> - - <_> - 15 1 2 6 -1. - <_> - 15 3 2 2 3. - <_> - - <_> - 2 1 18 4 -1. - <_> - 2 2 18 2 2. - <_> - - <_> - 9 0 6 6 -1. - <_> - 9 2 6 2 3. - <_> - - <_> - 3 2 7 4 -1. - <_> - 3 3 7 2 2. - <_> - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - <_> - - <_> - 9 0 3 2 -1. - <_> - 9 0 3 1 2. - 1 - <_> - - <_> - 10 18 12 2 -1. - <_> - 14 18 4 2 3. - <_> - - <_> - 0 18 12 2 -1. - <_> - 4 18 4 2 3. - <_> - - <_> - 5 9 16 8 -1. - <_> - 9 9 8 8 2. - <_> - - <_> - 1 9 16 8 -1. - <_> - 5 9 8 8 2. - <_> - - <_> - 20 16 1 2 -1. - <_> - 20 17 1 1 2. - <_> - - <_> - 11 0 6 4 -1. - <_> - 11 0 6 2 2. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 12 4 4 5 -1. - <_> - 13 4 2 5 2. - <_> - - <_> - 6 4 4 5 -1. - <_> - 7 4 2 5 2. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 3 15 1 4 -1. - <_> - 3 16 1 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 6 16 6 4 -1. - <_> - 6 17 6 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 4 2 9 18 -1. - <_> - 7 8 3 6 9. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 16 0 4 2 -1. - <_> - 18 0 2 1 2. - <_> - 16 1 2 1 2. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 8 0 4 12 -1. - <_> - 8 0 2 6 2. - <_> - 10 6 2 6 2. - <_> - - <_> - 12 4 10 14 -1. - <_> - 17 4 5 7 2. - <_> - 12 11 5 7 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 10 9 2 2 -1. - <_> - 10 10 2 1 2. - <_> - - <_> - 10 7 2 6 -1. - <_> - 10 10 2 3 2. - <_> - - <_> - 12 9 7 8 -1. - <_> - 12 13 7 4 2. - <_> - - <_> - 6 4 3 5 -1. - <_> - 7 4 1 5 3. - <_> - - <_> - 5 3 12 1 -1. - <_> - 5 3 6 1 2. - <_> - - <_> - 4 3 8 2 -1. - <_> - 8 3 4 2 2. - <_> - - <_> - 11 0 2 6 -1. - <_> - 11 0 1 6 2. - 1 - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 16 1 1 4 -1. - <_> - 16 3 1 2 2. - <_> - - <_> - 5 3 12 2 -1. - <_> - 5 3 6 1 2. - <_> - 11 4 6 1 2. - <_> - - <_> - 7 2 13 10 -1. - <_> - 7 7 13 5 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 20 1 2 8 -1. - <_> - 21 1 1 4 2. - <_> - 20 5 1 4 2. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 12 9 1 3 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 2 6 4 2 -1. - <_> - 2 6 2 1 2. - <_> - 4 7 2 1 2. - <_> - - <_> - 16 6 4 2 -1. - <_> - 18 6 2 1 2. - <_> - 16 7 2 1 2. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 7 5 2 2 -1. - <_> - 8 5 1 2 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 3 6 2 2 -1. - <_> - 3 6 1 1 2. - <_> - 4 7 1 1 2. - <_> - - <_> - 15 7 7 6 -1. - <_> - 13 9 7 2 3. - 1 - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 15 2 2 1 -1. - <_> - 15 2 1 1 2. - <_> - - <_> - 5 2 2 1 -1. - <_> - 6 2 1 1 2. - <_> - - <_> - 21 7 1 12 -1. - <_> - 21 7 1 6 2. - 1 - <_> - - <_> - 7 7 6 7 -1. - <_> - 9 9 2 7 3. - 1 - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 3 16 16 1 -1. - <_> - 11 16 8 1 2. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 7 4 8 5 -1. - <_> - 9 4 4 5 2. - <_> - - <_> - 9 9 6 3 -1. - <_> - 9 9 3 3 2. - <_> - - <_> - 10 6 4 2 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 14 6 3 5 -1. - <_> - 15 7 1 5 3. - 1 - <_> - - <_> - 7 9 6 3 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 4 12 12 6 -1. - <_> - 4 12 6 3 2. - <_> - 10 15 6 3 2. - <_> - - <_> - 13 17 3 3 -1. - <_> - 13 18 3 1 3. - <_> - - <_> - 6 17 3 3 -1. - <_> - 6 18 3 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 10 0 3 4 -1. - <_> - 10 1 3 2 2. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 4 8 4 10 -1. - <_> - 4 13 4 5 2. - <_> - - <_> - 19 16 1 2 -1. - <_> - 19 17 1 1 2. - <_> - - <_> - 5 10 3 6 -1. - <_> - 5 13 3 3 2. - <_> - - <_> - 8 0 12 2 -1. - <_> - 11 0 6 2 2. - <_> - - <_> - 6 0 10 2 -1. - <_> - 11 0 5 2 2. - <_> - - <_> - 19 16 2 2 -1. - <_> - 20 16 1 1 2. - <_> - 19 17 1 1 2. - <_> - - <_> - 1 16 2 2 -1. - <_> - 1 16 1 1 2. - <_> - 2 17 1 1 2. - <_> - - <_> - 12 5 4 4 -1. - <_> - 11 6 4 2 2. - 1 - <_> - - <_> - 1 16 1 2 -1. - <_> - 1 17 1 1 2. - <_> - - <_> - 5 0 16 10 -1. - <_> - 5 5 16 5 2. - <_> - - <_> - 10 5 4 4 -1. - <_> - 11 6 2 4 2. - 1 - <_> - - <_> - 10 9 2 2 -1. - <_> - 11 9 1 1 2. - <_> - 10 10 1 1 2. - <_> - - <_> - 3 0 10 2 -1. - <_> - 3 0 5 1 2. - <_> - 8 1 5 1 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 2 0 2 2 -1. - <_> - 2 1 2 1 2. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 10 1 7 3 -1. - <_> - 9 2 7 1 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 8 8 6 3 2. - <_> - - <_> - 7 8 3 7 -1. - <_> - 8 9 1 7 3. - 1 - <_> - - <_> - 19 9 3 2 -1. - <_> - 19 10 3 1 2. - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 11 0 6 3 -1. - <_> - 10 1 6 1 3. - 1 - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 10 0 2 9 -1. - <_> - 10 3 2 3 3. - <_> - - <_> - 18 0 1 2 -1. - <_> - 18 1 1 1 2. - <_> - - <_> - 0 9 3 2 -1. - <_> - 0 10 3 1 2. - <_> - - <_> - 10 1 2 3 -1. - <_> - 10 1 1 3 2. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 12 7 3 2 2. - 1 - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 8 11 11 3 -1. - <_> - 8 12 11 1 3. - <_> - - <_> - 5 4 12 3 -1. - <_> - 9 5 4 1 9. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 9 4 4 4 -1. - <_> - 10 5 2 4 2. - 1 - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 11 5 10 3 -1. - <_> - 11 5 5 3 2. - 1 - <_> - - <_> - 3 9 16 11 -1. - <_> - 7 9 8 11 2. - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 7 14 5 -1. - <_> - 7 7 7 5 2. - <_> - - <_> - 10 6 6 10 -1. - <_> - 13 6 3 5 2. - <_> - 10 11 3 5 2. - <_> - - <_> - 5 6 12 8 -1. - <_> - 5 6 6 4 2. - <_> - 11 10 6 4 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 3 0 1 2 -1. - <_> - 3 1 1 1 2. - <_> - - <_> - 18 17 4 3 -1. - <_> - 19 17 2 3 2. - <_> - - <_> - 0 17 4 3 -1. - <_> - 1 17 2 3 2. - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 0 14 6 -1. - <_> - 0 0 7 3 2. - <_> - 7 3 7 3 2. - <_> - - <_> - 14 0 8 11 -1. - <_> - 14 0 4 11 2. - 1 - <_> - - <_> - 8 0 11 8 -1. - <_> - 8 0 11 4 2. - 1 - <_> - - <_> - 18 14 4 3 -1. - <_> - 18 15 4 1 3. - <_> - - <_> - 0 14 4 3 -1. - <_> - 0 15 4 1 3. - <_> - - <_> - 11 4 3 11 -1. - <_> - 12 5 1 11 3. - 1 - <_> - - <_> - 11 4 11 3 -1. - <_> - 10 5 11 1 3. - 1 - <_> - - <_> - 8 3 6 6 -1. - <_> - 11 3 3 3 2. - <_> - 8 6 3 3 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 10 7 2 3 2. - 1 - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 9 7 2 9 -1. - <_> - 9 7 1 9 2. - 1 - <_> - - <_> - 19 12 2 1 -1. - <_> - 19 12 1 1 2. - 1 - <_> - - <_> - 3 12 1 2 -1. - <_> - 3 12 1 1 2. - 1 - <_> - - <_> - 9 0 10 4 -1. - <_> - 9 2 10 2 2. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 1 4 1 2. - <_> - - <_> - 12 2 9 9 -1. - <_> - 12 5 9 3 3. - <_> - - <_> - 4 3 6 17 -1. - <_> - 6 3 2 17 3. - <_> - - <_> - 8 4 13 16 -1. - <_> - 8 12 13 8 2. - <_> - - <_> - 1 2 9 9 -1. - <_> - 1 5 9 3 3. - <_> - - <_> - 12 10 3 2 -1. - <_> - 13 11 1 2 3. - 1 - <_> - - <_> - 5 6 3 14 -1. - <_> - 6 6 1 14 3. - <_> - - <_> - 14 2 2 4 -1. - <_> - 15 2 1 2 2. - <_> - 14 4 1 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 10 0 4 3 -1. - <_> - 11 0 2 3 2. - <_> - - <_> - 8 0 4 3 -1. - <_> - 9 0 2 3 2. - <_> - - <_> - 8 0 6 6 -1. - <_> - 8 2 6 2 3. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 11 7 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 10 7 1 4 -1. - <_> - 10 9 1 2 2. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 6 18 2 2 -1. - <_> - 6 18 1 1 2. - <_> - 7 19 1 1 2. - <_> - - <_> - 10 4 4 12 -1. - <_> - 10 4 2 12 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 10 4 6 -1. - <_> - 9 10 2 6 2. - <_> - - <_> - 9 3 4 2 -1. - <_> - 9 3 4 1 2. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 1 3 2 -1. - <_> - 9 1 3 1 2. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 0 14 10 6 -1. - <_> - 5 14 5 6 2. - <_> - - <_> - 12 17 10 2 -1. - <_> - 12 17 5 2 2. - <_> - - <_> - 0 17 10 2 -1. - <_> - 5 17 5 2 2. - <_> - - <_> - 15 16 1 2 -1. - <_> - 15 17 1 1 2. - <_> - - <_> - 9 2 5 3 -1. - <_> - 8 3 5 1 3. - 1 - <_> - - <_> - 10 7 12 12 -1. - <_> - 16 7 6 6 2. - <_> - 10 13 6 6 2. - <_> - - <_> - 3 0 12 14 -1. - <_> - 3 7 12 7 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 1 15 18 4 -1. - <_> - 1 17 18 2 2. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 16 1 2 -1. - <_> - 6 17 1 1 2. - <_> - - <_> - 10 3 2 6 -1. - <_> - 11 3 1 3 2. - <_> - 10 6 1 3 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 11 11 6 3 -1. - <_> - 11 12 6 1 3. - <_> - - <_> - 5 11 6 3 -1. - <_> - 5 12 6 1 3. - <_> - - <_> - 5 7 12 6 -1. - <_> - 11 7 6 3 2. - <_> - 5 10 6 3 2. - <_> - - <_> - 3 11 5 6 -1. - <_> - 3 13 5 2 3. - <_> - - <_> - 11 12 8 8 -1. - <_> - 15 12 4 4 2. - <_> - 11 16 4 4 2. - <_> - - <_> - 3 12 8 8 -1. - <_> - 3 12 4 4 2. - <_> - 7 16 4 4 2. - <_> - - <_> - 16 12 2 1 -1. - <_> - 16 12 1 1 2. - <_> - - <_> - 5 14 4 4 -1. - <_> - 5 14 2 2 2. - <_> - 7 16 2 2 2. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 3 0 2 2 -1. - <_> - 4 0 1 2 2. - <_> - - <_> - 17 0 2 2 -1. - <_> - 17 0 1 2 2. - <_> - - <_> - 3 12 7 3 -1. - <_> - 3 13 7 1 3. - <_> - - <_> - 17 0 2 2 -1. - <_> - 17 0 1 2 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 4 0 1 2 2. - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 6 7 3 1 -1. - <_> - 7 7 1 1 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 11 1 2 4 2. - <_> - 9 5 2 4 2. - <_> - - <_> - 8 1 3 3 -1. - <_> - 9 2 1 1 9. - <_> - - <_> - 11 4 2 6 -1. - <_> - 12 4 1 3 2. - <_> - 11 7 1 3 2. - <_> - - <_> - 9 3 4 6 -1. - <_> - 9 3 2 3 2. - <_> - 11 6 2 3 2. - <_> - - <_> - 13 7 3 2 -1. - <_> - 14 7 1 2 3. - <_> - - <_> - 6 7 3 2 -1. - <_> - 7 7 1 2 3. - <_> - - <_> - 14 18 5 2 -1. - <_> - 14 19 5 1 2. - <_> - - <_> - 4 18 14 2 -1. - <_> - 4 18 7 1 2. - <_> - 11 19 7 1 2. - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 1 9. - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 9 0 3 2 -1. - <_> - 10 1 1 2 3. - 1 - <_> - - <_> - 14 18 2 2 -1. - <_> - 14 19 2 1 2. - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 4 17 4 3 -1. - <_> - 4 18 4 1 3. - <_> - - <_> - 11 11 2 2 -1. - <_> - 12 11 1 1 2. - <_> - 11 12 1 1 2. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 12 6 1 3 3. - 1 - <_> - - <_> - 11 5 3 3 -1. - <_> - 10 6 3 1 3. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 6 16 2 -1. - <_> - 3 6 8 1 2. - <_> - 11 7 8 1 2. - <_> - - <_> - 5 3 12 6 -1. - <_> - 11 3 6 3 2. - <_> - 5 6 6 3 2. - <_> - - <_> - 8 2 6 9 -1. - <_> - 8 5 6 3 3. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 20 6 2 4 -1. - <_> - 21 6 1 2 2. - <_> - 20 8 1 2 2. - <_> - - <_> - 8 2 7 3 -1. - <_> - 7 3 7 1 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 10 6 1 8 -1. - <_> - 10 10 1 4 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 15 17 2 3 -1. - <_> - 15 18 2 1 3. - <_> - - <_> - 5 17 2 3 -1. - <_> - 5 18 2 1 3. - <_> - - <_> - 12 6 1 2 -1. - <_> - 12 6 1 1 2. - 1 - <_> - - <_> - 9 0 2 10 -1. - <_> - 10 0 1 10 2. - <_> - - <_> - 11 5 4 8 -1. - <_> - 11 5 2 8 2. - <_> - - <_> - 9 1 2 1 -1. - <_> - 10 1 1 1 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 0 6 2 4 -1. - <_> - 0 6 1 2 2. - <_> - 1 8 1 2 2. - <_> - - <_> - 16 17 6 1 -1. - <_> - 18 17 2 1 3. - <_> - - <_> - 0 17 6 1 -1. - <_> - 2 17 2 1 3. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 11 14 3 1 -1. - <_> - 12 14 1 1 3. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 10 1 1 2. - <_> - - <_> - 10 7 3 10 -1. - <_> - 10 7 3 5 2. - 1 - <_> - - <_> - 10 7 9 12 -1. - <_> - 10 13 9 6 2. - <_> - - <_> - 8 9 6 3 -1. - <_> - 7 10 6 1 3. - 1 - <_> - - <_> - 9 0 4 5 -1. - <_> - 10 0 2 5 2. - <_> - - <_> - 1 3 2 2 -1. - <_> - 1 4 2 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 7 0 4 2 -1. - <_> - 7 0 4 1 2. - 1 - <_> - - <_> - 12 0 1 3 -1. - <_> - 12 1 1 1 3. - <_> - - <_> - 1 3 1 2 -1. - <_> - 1 4 1 1 2. - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 3 1 1 3. - <_> - - <_> - 10 0 6 2 -1. - <_> - 10 0 6 1 2. - 1 - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 10 6 1 2 -1. - <_> - 10 7 1 1 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 8 14 1 2 -1. - <_> - 8 15 1 1 2. - <_> - - <_> - 13 6 3 4 -1. - <_> - 13 6 3 2 2. - 1 - <_> - - <_> - 1 16 20 4 -1. - <_> - 11 16 10 4 2. - <_> - - <_> - 11 5 4 8 -1. - <_> - 11 5 2 8 2. - <_> - - <_> - 3 8 10 1 -1. - <_> - 8 8 5 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 8 6 4 2 -1. - <_> - 9 7 2 2 2. - 1 - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 4 8 14 2 -1. - <_> - 4 8 7 1 2. - <_> - 11 9 7 1 2. - <_> - - <_> - 11 5 1 6 -1. - <_> - 11 8 1 3 2. - <_> - - <_> - 10 1 2 1 -1. - <_> - 11 1 1 1 2. - <_> - - <_> - 15 7 7 6 -1. - <_> - 13 9 7 2 3. - 1 - <_> - - <_> - 7 7 6 7 -1. - <_> - 9 9 2 7 3. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 13 3 3 1 -1. - <_> - 14 3 1 1 3. - <_> - - <_> - 6 3 3 1 -1. - <_> - 7 3 1 1 3. - <_> - - <_> - 11 18 2 2 -1. - <_> - 11 18 1 2 2. - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 8 11 8 5 -1. - <_> - 10 11 4 5 2. - <_> - - <_> - 8 7 6 2 -1. - <_> - 10 7 2 2 3. - <_> - - <_> - 11 8 1 4 -1. - <_> - 11 10 1 2 2. - <_> - - <_> - 6 2 6 4 -1. - <_> - 6 2 3 2 2. - <_> - 9 4 3 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 2 8 6 5 -1. - <_> - 4 8 2 5 3. - <_> - - <_> - 10 6 2 3 -1. - <_> - 10 6 1 3 2. - <_> - - <_> - 6 14 1 3 -1. - <_> - 6 15 1 1 3. - <_> - - <_> - 11 13 2 2 -1. - <_> - 12 13 1 1 2. - <_> - 11 14 1 1 2. - <_> - - <_> - 6 10 9 1 -1. - <_> - 9 13 3 1 3. - 1 - <_> - - <_> - 15 10 4 3 -1. - <_> - 14 11 4 1 3. - 1 - <_> - - <_> - 7 10 3 4 -1. - <_> - 8 11 1 4 3. - 1 - <_> - - <_> - 13 3 3 3 -1. - <_> - 13 4 3 1 3. - <_> - - <_> - 6 3 3 3 -1. - <_> - 6 4 3 1 3. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 3 18 3 2 -1. - <_> - 3 19 3 1 2. - <_> - - <_> - 15 18 4 2 -1. - <_> - 15 19 4 1 2. - <_> - - <_> - 3 18 4 2 -1. - <_> - 3 19 4 1 2. - <_> - - <_> - 10 7 6 2 -1. - <_> - 12 7 2 2 3. - <_> - - <_> - 6 7 6 2 -1. - <_> - 8 7 2 2 3. - <_> - - <_> - 14 6 3 4 -1. - <_> - 14 6 3 2 2. - 1 - <_> - - <_> - 9 6 3 2 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 9 16 1 2 -1. - <_> - 9 17 1 1 2. - <_> - - <_> - 9 7 6 3 -1. - <_> - 9 8 6 1 3. - <_> - - <_> - 10 8 1 2 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 14 0 6 10 -1. - <_> - 14 0 6 5 2. - 1 - <_> - - <_> - 8 0 10 6 -1. - <_> - 8 0 5 6 2. - 1 - <_> - - <_> - 12 0 2 6 -1. - <_> - 12 0 1 6 2. - <_> - - <_> - 5 0 3 1 -1. - <_> - 6 0 1 1 3. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 9 13 2 2 -1. - <_> - 9 13 1 1 2. - <_> - 10 14 1 1 2. - <_> - - <_> - 15 3 2 3 -1. - <_> - 15 4 2 1 3. - <_> - - <_> - 5 4 12 2 -1. - <_> - 5 4 6 1 2. - <_> - 11 5 6 1 2. - <_> - - <_> - 19 12 2 3 -1. - <_> - 18 13 2 1 3. - 1 - <_> - - <_> - 3 12 3 2 -1. - <_> - 4 13 1 2 3. - 1 - <_> - - <_> - 3 0 16 3 -1. - <_> - 3 0 8 3 2. - <_> - - <_> - 7 2 8 9 -1. - <_> - 11 2 4 9 2. - <_> - - <_> - 16 13 4 2 -1. - <_> - 18 13 2 1 2. - <_> - 16 14 2 1 2. - <_> - - <_> - 7 8 2 12 -1. - <_> - 7 14 2 6 2. - <_> - - <_> - 13 4 5 16 -1. - <_> - 13 12 5 8 2. - <_> - - <_> - 7 3 2 4 -1. - <_> - 7 5 2 2 2. - <_> - - <_> - 5 14 12 5 -1. - <_> - 5 14 6 5 2. - <_> - - <_> - 6 10 6 4 -1. - <_> - 9 10 3 4 2. - <_> - - <_> - 10 0 9 18 -1. - <_> - 13 0 3 18 3. - <_> - - <_> - 2 13 4 2 -1. - <_> - 2 13 2 1 2. - <_> - 4 14 2 1 2. - <_> - - <_> - 2 4 18 1 -1. - <_> - 2 4 9 1 2. - <_> - - <_> - 7 5 4 8 -1. - <_> - 9 5 2 8 2. - <_> - - <_> - 12 7 1 4 -1. - <_> - 11 8 1 2 2. - 1 - <_> - - <_> - 9 7 2 3 -1. - <_> - 10 7 1 3 2. - <_> - - <_> - 10 18 2 1 -1. - <_> - 10 18 1 1 2. - <_> - - <_> - 3 1 2 2 -1. - <_> - 3 2 2 1 2. - <_> - - <_> - 14 5 3 4 -1. - <_> - 15 5 1 4 3. - <_> - - <_> - 5 5 3 4 -1. - <_> - 6 5 1 4 3. - <_> - - <_> - 2 14 19 3 -1. - <_> - 2 15 19 1 3. - <_> - - <_> - 1 14 19 3 -1. - <_> - 1 15 19 1 3. - <_> - - <_> - 9 3 5 4 -1. - <_> - 9 4 5 2 2. - <_> - - <_> - 10 1 3 4 -1. - <_> - 11 2 1 4 3. - 1 - <_> - - <_> - 10 4 4 8 -1. - <_> - 10 6 4 4 2. - <_> - - <_> - 5 4 3 16 -1. - <_> - 5 12 3 8 2. - <_> - - <_> - 14 9 5 8 -1. - <_> - 14 13 5 4 2. - <_> - - <_> - 7 14 3 2 -1. - <_> - 8 15 1 2 3. - 1 - <_> - - <_> - 16 0 6 4 -1. - <_> - 15 1 6 2 2. - 1 - <_> - - <_> - 2 8 18 6 -1. - <_> - 8 10 6 2 9. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 11 0 2 5 -1. - <_> - 11 0 1 5 2. - 1 - <_> - - <_> - 8 4 4 6 -1. - <_> - 8 4 2 3 2. - <_> - 10 7 2 3 2. - <_> - - <_> - 2 2 18 3 -1. - <_> - 8 3 6 1 9. - <_> - - <_> - 0 12 4 8 -1. - <_> - 0 14 4 4 2. - <_> - - <_> - 7 8 8 4 -1. - <_> - 9 8 4 4 2. - <_> - - <_> - 8 2 1 2 -1. - <_> - 8 3 1 1 2. - <_> - - <_> - 10 1 2 6 -1. - <_> - 11 1 1 3 2. - <_> - 10 4 1 3 2. - <_> - - <_> - 9 2 10 4 -1. - <_> - 9 2 5 4 2. - 1 - <_> - - <_> - 8 5 6 3 -1. - <_> - 8 6 6 1 3. - <_> - - <_> - 0 15 18 5 -1. - <_> - 6 15 6 5 3. - <_> - - <_> - 10 6 3 6 -1. - <_> - 10 9 3 3 2. - <_> - - <_> - 1 11 2 3 -1. - <_> - 1 12 2 1 3. - <_> - - <_> - 12 14 2 2 -1. - <_> - 12 15 2 1 2. - <_> - - <_> - 11 14 2 3 -1. - <_> - 11 14 1 3 2. - 1 - <_> - - <_> - 8 4 6 6 -1. - <_> - 11 4 3 3 2. - <_> - 8 7 3 3 2. - <_> - - <_> - 2 8 15 11 -1. - <_> - 7 8 5 11 3. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 8 2 6 2 -1. - <_> - 11 2 3 2 2. - <_> - - <_> - 3 6 17 14 -1. - <_> - 3 13 17 7 2. - <_> - - <_> - 3 2 16 8 -1. - <_> - 7 2 8 8 2. - <_> - - <_> - 19 1 1 18 -1. - <_> - 13 7 1 6 3. - 1 - <_> - - <_> - 7 8 2 1 -1. - <_> - 7 8 1 1 2. - 1 - <_> - - <_> - 10 10 6 5 -1. - <_> - 12 10 2 5 3. - <_> - - <_> - 7 11 4 5 -1. - <_> - 8 11 2 5 2. - <_> - - <_> - 2 1 18 8 -1. - <_> - 11 1 9 4 2. - <_> - 2 5 9 4 2. - <_> - - <_> - 0 3 16 2 -1. - <_> - 4 3 8 2 2. - <_> - - <_> - 13 0 3 15 -1. - <_> - 14 0 1 15 3. - <_> - - <_> - 11 0 6 4 -1. - <_> - 11 0 6 2 2. - 1 - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 6 1 7 3 -1. - <_> - 6 2 7 1 3. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 7 6 3 3 -1. - <_> - 8 6 1 3 3. - <_> - - <_> - 20 1 2 8 -1. - <_> - 21 1 1 4 2. - <_> - 20 5 1 4 2. - <_> - - <_> - 8 8 3 1 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 9 2 4 8 -1. - <_> - 10 2 2 8 2. - <_> - - <_> - 9 1 4 3 -1. - <_> - 9 2 4 1 3. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 12 4 6 8 -1. - <_> - 14 4 2 8 3. - <_> - - <_> - 3 5 6 4 -1. - <_> - 3 5 3 2 2. - <_> - 6 7 3 2 2. - <_> - - <_> - 18 6 1 2 -1. - <_> - 18 7 1 1 2. - <_> - - <_> - 3 6 1 2 -1. - <_> - 3 7 1 1 2. - <_> - - <_> - 14 2 3 18 -1. - <_> - 14 11 3 9 2. - <_> - - <_> - 11 0 6 2 -1. - <_> - 11 0 6 1 2. - 1 - <_> - - <_> - 13 4 3 2 -1. - <_> - 14 4 1 2 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 13 4 3 2 -1. - <_> - 14 4 1 2 3. - <_> - - <_> - 11 0 6 1 -1. - <_> - 11 0 3 1 2. - 1 - <_> - - <_> - 13 0 2 3 -1. - <_> - 13 0 1 3 2. - 1 - <_> - - <_> - 7 1 6 11 -1. - <_> - 10 1 3 11 2. - <_> - - <_> - 11 0 2 2 -1. - <_> - 11 0 1 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 10 0 1 2 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 10 8 2 1 -1. - <_> - 10 8 1 1 2. - 1 - <_> - - <_> - 12 7 8 2 -1. - <_> - 12 7 8 1 2. - 1 - <_> - - <_> - 10 7 2 8 -1. - <_> - 10 7 1 8 2. - 1 - <_> - - <_> - 9 8 11 12 -1. - <_> - 9 14 11 6 2. - <_> - - <_> - 9 4 4 9 -1. - <_> - 9 7 4 3 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 8 4 5 3 -1. - <_> - 8 5 5 1 3. - <_> - - <_> - 12 1 1 4 -1. - <_> - 11 2 1 2 2. - 1 - <_> - - <_> - 10 0 4 1 -1. - <_> - 11 1 2 1 2. - 1 - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 1 12 20 6 -1. - <_> - 11 12 10 3 2. - <_> - 1 15 10 3 2. - <_> - - <_> - 6 15 1 2 -1. - <_> - 6 16 1 1 2. - <_> - - <_> - 3 0 18 20 -1. - <_> - 3 10 18 10 2. - <_> - - <_> - 0 0 19 20 -1. - <_> - 0 10 19 10 2. - <_> - - <_> - 15 14 2 3 -1. - <_> - 15 15 2 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 14 8 2 3 -1. - <_> - 14 8 1 3 2. - 1 - <_> - - <_> - 9 11 2 2 -1. - <_> - 9 11 1 1 2. - <_> - 10 12 1 1 2. - <_> - - <_> - 15 14 2 3 -1. - <_> - 15 15 2 1 3. - <_> - - <_> - 5 14 2 3 -1. - <_> - 5 15 2 1 3. - <_> - - <_> - 15 4 3 14 -1. - <_> - 15 11 3 7 2. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 9 6 5 4 -1. - <_> - 9 8 5 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 17 1 1 6 -1. - <_> - 17 4 1 3 2. - <_> - - <_> - 4 1 1 6 -1. - <_> - 4 4 1 3 2. - <_> - - <_> - 2 0 18 20 -1. - <_> - 8 0 6 20 3. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 16 1 4 15 -1. - <_> - 11 6 4 5 3. - 1 - <_> - - <_> - 1 17 3 2 -1. - <_> - 2 17 1 2 3. - <_> - - <_> - 18 18 3 2 -1. - <_> - 19 18 1 2 3. - <_> - - <_> - 1 18 3 2 -1. - <_> - 2 18 1 2 3. - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 9 9 4 2 -1. - <_> - 9 9 2 1 2. - <_> - 11 10 2 1 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 10 4 2 2 -1. - <_> - 10 4 1 1 2. - <_> - 11 5 1 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 4 4 2 -1. - <_> - 15 4 2 1 2. - <_> - 13 5 2 1 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 1 2. - <_> - 7 5 2 1 2. - <_> - - <_> - 14 3 6 2 -1. - <_> - 17 3 3 1 2. - <_> - 14 4 3 1 2. - <_> - - <_> - 6 1 3 16 -1. - <_> - 7 1 1 16 3. - <_> - - <_> - 13 8 2 1 -1. - <_> - 13 8 1 1 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 8 1 1 2. - 1 - <_> - - <_> - 12 6 3 13 -1. - <_> - 13 6 1 13 3. - <_> - - <_> - 6 0 16 2 -1. - <_> - 10 4 8 2 2. - 1 - <_> - - <_> - 12 1 2 4 -1. - <_> - 12 1 2 2 2. - 1 - <_> - - <_> - 9 2 3 4 -1. - <_> - 9 4 3 2 2. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 10 0 2 6 -1. - <_> - 10 2 2 2 3. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 12 0 2 1 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 12 0 1 2 -1. - <_> - 12 0 1 1 2. - 1 - <_> - - <_> - 8 1 11 8 -1. - <_> - 8 1 11 4 2. - 1 - <_> - - <_> - 14 6 6 8 -1. - <_> - 16 8 2 8 3. - 1 - <_> - - <_> - 10 0 2 2 -1. - <_> - 11 0 1 2 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 18 9 4 2 -1. - <_> - 18 9 2 2 2. - <_> - - <_> - 0 9 4 2 -1. - <_> - 2 9 2 2 2. - <_> - - <_> - 20 8 2 2 -1. - <_> - 20 8 2 1 2. - 1 - <_> - - <_> - 2 8 2 2 -1. - <_> - 2 8 1 2 2. - 1 - <_> - - <_> - 17 4 2 16 -1. - <_> - 17 12 2 8 2. - <_> - - <_> - 3 4 6 15 -1. - <_> - 3 9 6 5 3. - <_> - - <_> - 16 4 4 6 -1. - <_> - 14 6 4 2 3. - 1 - <_> - - <_> - 6 4 6 4 -1. - <_> - 8 6 2 4 3. - 1 - <_> - - <_> - 16 9 2 1 -1. - <_> - 16 9 1 1 2. - 1 - <_> - - <_> - 3 0 8 12 -1. - <_> - 5 0 4 12 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 10 7 4 2 -1. - <_> - 10 7 4 1 2. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 10 4 7 -1. - <_> - 9 10 2 7 2. - <_> - - <_> - 10 6 3 9 -1. - <_> - 11 9 1 3 9. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 9 6 7 3 -1. - <_> - 9 7 7 1 3. - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 13 14 9 6 -1. - <_> - 16 14 3 6 3. - <_> - - <_> - 3 19 16 1 -1. - <_> - 7 19 8 1 2. - <_> - - <_> - 11 18 5 2 -1. - <_> - 11 19 5 1 2. - <_> - - <_> - 2 18 11 2 -1. - <_> - 2 19 11 1 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 6 11 1 4 -1. - <_> - 5 12 1 2 2. - 1 - <_> - - <_> - 16 17 6 1 -1. - <_> - 16 17 3 1 2. - <_> - - <_> - 0 17 6 1 -1. - <_> - 3 17 3 1 2. - <_> - - <_> - 6 0 16 1 -1. - <_> - 10 0 8 1 2. - <_> - - <_> - 0 11 6 8 -1. - <_> - 3 11 3 8 2. - <_> - - <_> - 18 13 2 2 -1. - <_> - 18 13 1 2 2. - 1 - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 15 0 2 1 -1. - <_> - 15 0 1 1 2. - <_> - - <_> - 7 3 2 4 -1. - <_> - 7 3 1 2 2. - <_> - 8 5 1 2 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 5 0 2 1 -1. - <_> - 6 0 1 1 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - <_> - - <_> - 0 6 16 11 -1. - <_> - 4 6 8 11 2. - <_> - - <_> - 15 3 1 2 -1. - <_> - 15 4 1 1 2. - <_> - - <_> - 0 12 10 6 -1. - <_> - 5 12 5 6 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 15 0 1 2 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 6 0 1 2 2. - <_> - - <_> - 14 6 8 14 -1. - <_> - 18 6 4 7 2. - <_> - 14 13 4 7 2. - <_> - - <_> - 1 2 8 18 -1. - <_> - 1 2 4 9 2. - <_> - 5 11 4 9 2. - <_> - - <_> - 19 13 2 2 -1. - <_> - 19 13 1 2 2. - 1 - <_> - - <_> - 3 13 2 2 -1. - <_> - 3 13 2 1 2. - 1 - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 0 0 18 15 -1. - <_> - 9 0 9 15 2. - <_> - - <_> - 19 17 2 2 -1. - <_> - 19 18 2 1 2. - <_> - - <_> - 1 17 2 2 -1. - <_> - 1 18 2 1 2. - <_> - - <_> - 15 1 3 5 -1. - <_> - 16 2 1 5 3. - 1 - <_> - - <_> - 9 5 2 2 -1. - <_> - 10 5 1 2 2. - <_> - - <_> - 11 3 3 3 -1. - <_> - 12 3 1 3 3. - <_> - - <_> - 8 3 3 3 -1. - <_> - 9 3 1 3 3. - <_> - - <_> - 11 1 3 4 -1. - <_> - 10 2 3 2 2. - 1 - <_> - - <_> - 8 9 6 3 -1. - <_> - 8 10 6 1 3. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 10 0 8 3 -1. - <_> - 9 1 8 1 3. - 1 - <_> - - <_> - 8 6 6 4 -1. - <_> - 11 6 3 2 2. - <_> - 8 8 3 2 2. - <_> - - <_> - 11 5 9 3 -1. - <_> - 10 6 9 1 3. - 1 - <_> - - <_> - 12 9 1 3 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 10 10 3 3 -1. - <_> - 9 11 3 1 3. - 1 - <_> - - <_> - 11 4 2 4 -1. - <_> - 10 5 2 2 2. - 1 - <_> - - <_> - 11 4 4 2 -1. - <_> - 12 5 2 2 2. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 10 2 3 2 2. - 1 - <_> - - <_> - 11 1 4 3 -1. - <_> - 12 2 2 3 2. - 1 - <_> - - <_> - 10 3 3 4 -1. - <_> - 11 3 1 4 3. - <_> - - <_> - 9 3 3 4 -1. - <_> - 10 3 1 4 3. - <_> - - <_> - 8 5 6 1 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 6 5 3 3 -1. - <_> - 6 6 3 1 3. - <_> - - <_> - 10 4 3 3 -1. - <_> - 10 5 3 1 3. - <_> - - <_> - 5 12 1 2 -1. - <_> - 5 12 1 1 2. - 1 - <_> - - <_> - 12 15 10 4 -1. - <_> - 17 15 5 2 2. - <_> - 12 17 5 2 2. - <_> - - <_> - 0 15 10 4 -1. - <_> - 0 15 5 2 2. - <_> - 5 17 5 2 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 9 7 3 6 -1. - <_> - 9 9 3 2 3. - <_> - - <_> - 13 8 3 3 -1. - <_> - 14 9 1 3 3. - 1 - <_> - - <_> - 8 8 6 8 -1. - <_> - 8 10 6 4 2. - <_> - - <_> - 11 11 2 6 -1. - <_> - 9 13 2 2 3. - 1 - <_> - - <_> - 8 16 2 2 -1. - <_> - 8 17 2 1 2. - <_> - - <_> - 11 11 2 6 -1. - <_> - 9 13 2 2 3. - 1 - <_> - - <_> - 11 11 6 2 -1. - <_> - 13 13 2 2 3. - 1 - <_> - - <_> - 8 12 6 2 -1. - <_> - 8 13 6 1 2. - <_> - - <_> - 9 8 3 6 -1. - <_> - 10 10 1 2 9. - <_> - - <_> - 10 8 3 1 -1. - <_> - 11 8 1 1 3. - <_> - - <_> - 0 0 1 2 -1. - <_> - 0 1 1 1 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 2 7 1 3 -1. - <_> - 2 8 1 1 3. - <_> - - <_> - 17 5 2 2 -1. - <_> - 17 6 2 1 2. - <_> - - <_> - 3 5 2 2 -1. - <_> - 3 6 2 1 2. - <_> - - <_> - 13 2 9 9 -1. - <_> - 16 5 3 3 9. - <_> - - <_> - 0 2 9 9 -1. - <_> - 3 5 3 3 9. - <_> - - <_> - 16 7 6 6 -1. - <_> - 14 9 6 2 3. - 1 - <_> - - <_> - 6 7 6 6 -1. - <_> - 8 9 2 6 3. - 1 - <_> - - <_> - 18 0 3 10 -1. - <_> - 18 0 3 5 2. - 1 - <_> - - <_> - 6 11 1 4 -1. - <_> - 6 11 1 2 2. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 6 1 1 2. - <_> - 10 7 1 1 2. - <_> - - <_> - 9 10 4 7 -1. - <_> - 10 10 2 7 2. - <_> - - <_> - 11 1 2 2 -1. - <_> - 11 1 2 1 2. - 1 - <_> - - <_> - 7 3 9 6 -1. - <_> - 7 5 9 2 3. - <_> - - <_> - 9 5 2 3 -1. - <_> - 9 6 2 1 3. - <_> - - <_> - 11 6 1 2 -1. - <_> - 11 7 1 1 2. - <_> - - <_> - 10 6 1 2 -1. - <_> - 10 7 1 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 5 1 3 2. - 1 - <_> - - <_> - 10 5 1 8 -1. - <_> - 10 7 1 4 2. - <_> - - <_> - 5 8 13 10 -1. - <_> - 5 13 13 5 2. - <_> - - <_> - 8 6 5 4 -1. - <_> - 7 7 5 2 2. - 1 - <_> - - <_> - 3 12 16 2 -1. - <_> - 11 12 8 1 2. - <_> - 3 13 8 1 2. - <_> - - <_> - 0 0 22 2 -1. - <_> - 11 0 11 2 2. - <_> - - <_> - 11 11 4 2 -1. - <_> - 13 11 2 1 2. - <_> - 11 12 2 1 2. - <_> - - <_> - 11 2 4 5 -1. - <_> - 11 2 2 5 2. - 1 - <_> - - <_> - 8 4 6 4 -1. - <_> - 11 4 3 2 2. - <_> - 8 6 3 2 2. - <_> - - <_> - 8 1 6 6 -1. - <_> - 10 3 2 2 9. - <_> - - <_> - 7 3 9 3 -1. - <_> - 7 4 9 1 3. - <_> - - <_> - 9 4 3 3 -1. - <_> - 9 5 3 1 3. - <_> - - <_> - 10 3 2 4 -1. - <_> - 11 3 1 2 2. - <_> - 10 5 1 2 2. - <_> - - <_> - 3 13 4 3 -1. - <_> - 3 13 2 3 2. - 1 - <_> - - <_> - 7 0 4 6 -1. - <_> - 7 0 2 3 2. - <_> - 9 3 2 3 2. - <_> - - <_> - 12 17 1 2 -1. - <_> - 12 18 1 1 2. - <_> - - <_> - 11 3 3 1 -1. - <_> - 12 4 1 1 3. - 1 - <_> - - <_> - 19 0 3 12 -1. - <_> - 20 0 1 12 3. - <_> - - <_> - 0 5 6 9 -1. - <_> - 2 8 2 3 9. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 5 4 1 6 -1. - <_> - 5 7 1 3 2. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 0 0 14 4 -1. - <_> - 0 0 7 2 2. - <_> - 7 2 7 2 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 11 7 3 2 -1. - <_> - 12 8 1 2 3. - 1 - <_> - - <_> - 8 10 6 3 -1. - <_> - 10 10 2 3 3. - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 16 1 3 2 -1. - <_> - 16 2 3 1 2. - <_> - - <_> - 3 1 3 2 -1. - <_> - 3 2 3 1 2. - <_> - - <_> - 13 1 2 4 -1. - <_> - 14 1 1 2 2. - <_> - 13 3 1 2 2. - <_> - - <_> - 4 6 10 4 -1. - <_> - 4 6 5 4 2. - 1 - <_> - - <_> - 14 4 6 16 -1. - <_> - 14 12 6 8 2. - <_> - - <_> - 7 3 7 9 -1. - <_> - 7 6 7 3 3. - <_> - - <_> - 14 7 2 4 -1. - <_> - 14 7 1 4 2. - 1 - <_> - - <_> - 8 7 4 2 -1. - <_> - 8 7 4 1 2. - 1 - <_> - - <_> - 8 9 6 4 -1. - <_> - 11 9 3 2 2. - <_> - 8 11 3 2 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 11 5 3 2 -1. - <_> - 11 5 3 1 2. - 1 - <_> - - <_> - 11 6 2 2 -1. - <_> - 11 7 2 1 2. - <_> - - <_> - 3 1 16 2 -1. - <_> - 3 1 8 1 2. - <_> - 11 2 8 1 2. - <_> - - <_> - 8 0 6 1 -1. - <_> - 8 0 3 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 10 7 3 3 -1. - <_> - 9 8 3 1 3. - 1 - <_> - - <_> - 10 4 3 2 -1. - <_> - 11 4 1 2 3. - <_> - - <_> - 6 2 3 4 -1. - <_> - 6 3 3 2 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 9 2 4 2 3. - <_> - - <_> - 9 1 3 3 -1. - <_> - 9 2 3 1 3. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 15 1 1 6 -1. - <_> - 15 3 1 2 3. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 2 8 8 8 -1. - <_> - 2 10 8 4 2. - <_> - - <_> - 14 7 4 9 -1. - <_> - 14 10 4 3 3. - <_> - - <_> - 0 12 22 4 -1. - <_> - 0 12 11 2 2. - <_> - 11 14 11 2 2. - <_> - - <_> - 13 7 2 2 -1. - <_> - 13 7 2 1 2. - 1 - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 8 2 2 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 11 6 6 1 -1. - <_> - 11 6 3 1 2. - 1 - <_> - - <_> - 9 6 6 6 -1. - <_> - 9 8 6 2 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 13 8 1 3 -1. - <_> - 13 9 1 1 3. - <_> - - <_> - 8 8 1 3 -1. - <_> - 8 9 1 1 3. - <_> - - <_> - 9 6 5 3 -1. - <_> - 9 7 5 1 3. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 13 17 3 3 -1. - <_> - 13 18 3 1 3. - <_> - - <_> - 9 4 2 1 -1. - <_> - 10 4 1 1 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 2 9 4 11 -1. - <_> - 4 9 2 11 2. - <_> - - <_> - 16 14 2 2 -1. - <_> - 16 14 1 2 2. - 1 - <_> - - <_> - 9 8 2 2 -1. - <_> - 9 8 1 1 2. - <_> - 10 9 1 1 2. - <_> - - <_> - 16 14 2 2 -1. - <_> - 16 14 1 2 2. - 1 - <_> - - <_> - 0 9 8 11 -1. - <_> - 4 9 4 11 2. - <_> - - <_> - 16 6 1 2 -1. - <_> - 16 7 1 1 2. - <_> - - <_> - 11 4 4 1 -1. - <_> - 12 5 2 1 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 8 4 6 5 -1. - <_> - 8 4 3 5 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 8 3 2 4 2. - <_> - - <_> - 13 6 1 2 -1. - <_> - 13 7 1 1 2. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 7 7 10 3 -1. - <_> - 7 8 10 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 2 2. - 1 - <_> - - <_> - 11 10 1 3 -1. - <_> - 11 11 1 1 3. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 5 0 6 16 -1. - <_> - 5 0 3 8 2. - <_> - 8 8 3 8 2. - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 9 0 2 1 -1. - <_> - 9 0 1 1 2. - 1 - <_> - - <_> - 15 1 3 1 -1. - <_> - 16 1 1 1 3. - <_> - - <_> - 4 1 3 1 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 6 17 3 3 -1. - <_> - 6 18 3 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 6 13 2 2 -1. - <_> - 6 13 1 1 2. - <_> - 7 14 1 1 2. - <_> - - <_> - 9 17 7 3 -1. - <_> - 9 18 7 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 11 2 1 -1. - <_> - 14 11 1 1 2. - 1 - <_> - - <_> - 6 9 3 4 -1. - <_> - 6 9 3 2 2. - 1 - <_> - - <_> - 10 2 4 9 -1. - <_> - 10 5 4 3 3. - <_> - - <_> - 7 17 2 3 -1. - <_> - 7 18 2 1 3. - <_> - - <_> - 8 7 7 2 -1. - <_> - 8 8 7 1 2. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 14 8 2 2 -1. - <_> - 14 8 1 2 2. - <_> - - <_> - 2 5 2 2 -1. - <_> - 2 6 2 1 2. - <_> - - <_> - 13 8 3 2 -1. - <_> - 14 8 1 2 3. - <_> - - <_> - 6 8 2 2 -1. - <_> - 7 8 1 2 2. - <_> - - <_> - 11 0 10 6 -1. - <_> - 16 0 5 3 2. - <_> - 11 3 5 3 2. - <_> - - <_> - 6 3 10 2 -1. - <_> - 6 3 5 1 2. - <_> - 11 4 5 1 2. - <_> - - <_> - 13 11 2 2 -1. - <_> - 14 11 1 1 2. - <_> - 13 12 1 1 2. - <_> - - <_> - 0 15 8 5 -1. - <_> - 2 15 4 5 2. - <_> - - <_> - 5 1 15 3 -1. - <_> - 5 2 15 1 3. - <_> - - <_> - 0 15 4 5 -1. - <_> - 2 15 2 5 2. - <_> - - <_> - 11 7 1 6 -1. - <_> - 9 9 1 2 3. - 1 - <_> - - <_> - 11 7 6 1 -1. - <_> - 13 9 2 1 3. - 1 - <_> - - <_> - 14 8 1 3 -1. - <_> - 13 9 1 1 3. - 1 - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 11 1 2 5 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 7 4 3 6 -1. - <_> - 8 6 1 2 9. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 5 4 2 2. - <_> - - <_> - 9 3 3 9 -1. - <_> - 10 6 1 3 9. - <_> - - <_> - 9 7 4 2 -1. - <_> - 9 8 4 1 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 7 4 1 -1. - <_> - 12 7 2 1 2. - <_> - - <_> - 7 7 4 1 -1. - <_> - 8 7 2 1 2. - <_> - - <_> - 20 11 2 3 -1. - <_> - 20 11 1 3 2. - 1 - <_> - - <_> - 7 8 3 1 -1. - <_> - 8 8 1 1 3. - <_> - - <_> - 20 11 2 3 -1. - <_> - 20 11 1 3 2. - 1 - <_> - - <_> - 2 11 3 2 -1. - <_> - 2 11 3 1 2. - 1 - <_> - - <_> - 18 10 2 10 -1. - <_> - 18 15 2 5 2. - <_> - - <_> - 2 10 2 10 -1. - <_> - 2 15 2 5 2. - <_> - - <_> - 13 12 8 8 -1. - <_> - 17 12 4 4 2. - <_> - 13 16 4 4 2. - <_> - - <_> - 1 12 8 8 -1. - <_> - 1 12 4 4 2. - <_> - 5 16 4 4 2. - <_> - - <_> - 13 15 1 2 -1. - <_> - 13 16 1 1 2. - <_> - - <_> - 8 15 1 2 -1. - <_> - 8 16 1 1 2. - <_> - - <_> - 0 5 22 12 -1. - <_> - 0 5 11 12 2. - <_> - - <_> - 3 0 12 10 -1. - <_> - 3 5 12 5 2. - <_> - - <_> - 13 0 6 1 -1. - <_> - 15 0 2 1 3. - <_> - - <_> - 6 14 2 4 -1. - <_> - 6 14 1 2 2. - <_> - 7 16 1 2 2. - <_> - - <_> - 14 12 2 2 -1. - <_> - 14 12 1 2 2. - <_> - - <_> - 7 9 7 6 -1. - <_> - 7 11 7 2 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 12 2 2 -1. - <_> - 7 12 1 2 2. - <_> - - <_> - 17 0 5 10 -1. - <_> - 17 0 5 5 2. - 1 - <_> - - <_> - 10 5 1 6 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 11 5 1 4 -1. - <_> - 11 6 1 2 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 10 7 3 6 -1. - <_> - 10 9 3 2 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 0 3 6 -1. - <_> - 15 1 1 6 3. - 1 - <_> - - <_> - 8 0 6 3 -1. - <_> - 7 1 6 1 3. - 1 - <_> - - <_> - 13 5 3 8 -1. - <_> - 14 5 1 8 3. - <_> - - <_> - 8 0 3 2 -1. - <_> - 8 0 3 1 2. - 1 - <_> - - <_> - 13 5 3 8 -1. - <_> - 14 5 1 8 3. - <_> - - <_> - 6 5 3 8 -1. - <_> - 7 5 1 8 3. - <_> - - <_> - 14 0 4 1 -1. - <_> - 14 0 2 1 2. - <_> - - <_> - 11 4 1 4 -1. - <_> - 10 5 1 2 2. - 1 - <_> - - <_> - 2 1 18 3 -1. - <_> - 8 1 6 3 3. - <_> - - <_> - 9 0 9 1 -1. - <_> - 12 3 3 1 3. - 1 - <_> - - <_> - 12 14 4 3 -1. - <_> - 12 15 4 1 3. - <_> - - <_> - 8 4 7 6 -1. - <_> - 6 6 7 2 3. - 1 - <_> - - <_> - 14 10 2 1 -1. - <_> - 14 10 1 1 2. - 1 - <_> - - <_> - 8 10 1 2 -1. - <_> - 8 10 1 1 2. - 1 - <_> - - <_> - 14 10 4 1 -1. - <_> - 15 11 2 1 2. - 1 - <_> - - <_> - 8 10 1 4 -1. - <_> - 7 11 1 2 2. - 1 - <_> - - <_> - 2 14 20 4 -1. - <_> - 7 14 10 4 2. - <_> - - <_> - 8 15 2 1 -1. - <_> - 8 15 1 1 2. - 1 - <_> - - <_> - 10 12 2 3 -1. - <_> - 10 13 2 1 3. - <_> - - <_> - 10 12 1 2 -1. - <_> - 10 13 1 1 2. - <_> - - <_> - 11 7 1 12 -1. - <_> - 11 13 1 6 2. - <_> - - <_> - 10 11 1 9 -1. - <_> - 10 14 1 3 3. - <_> - - <_> - 17 8 1 2 -1. - <_> - 17 9 1 1 2. - <_> - - <_> - 4 8 1 2 -1. - <_> - 4 9 1 1 2. - <_> - - <_> - 8 11 7 3 -1. - <_> - 8 12 7 1 3. - <_> - - <_> - 8 14 6 6 -1. - <_> - 8 17 6 3 2. - <_> - - <_> - 10 14 3 4 -1. - <_> - 10 16 3 2 2. - <_> - - <_> - 0 4 20 3 -1. - <_> - 10 4 10 3 2. - <_> - - <_> - 11 6 4 10 -1. - <_> - 11 6 4 5 2. - 1 - <_> - - <_> - 5 6 4 3 -1. - <_> - 5 7 4 1 3. - <_> - - <_> - 16 17 1 2 -1. - <_> - 16 18 1 1 2. - <_> - - <_> - 10 11 2 3 -1. - <_> - 10 12 2 1 3. - <_> - - <_> - 11 13 1 2 -1. - <_> - 11 14 1 1 2. - <_> - - <_> - 4 10 13 10 -1. - <_> - 4 15 13 5 2. - <_> - - <_> - 11 16 2 1 -1. - <_> - 11 16 1 1 2. - 1 - <_> - - <_> - 11 16 1 2 -1. - <_> - 11 16 1 1 2. - 1 - <_> - - <_> - 11 12 1 4 -1. - <_> - 11 14 1 2 2. - <_> - - <_> - 5 14 5 3 -1. - <_> - 5 15 5 1 3. - <_> - - <_> - 9 6 10 8 -1. - <_> - 9 8 10 4 2. - <_> - - <_> - 10 5 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 5 2 2 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 10 3 6 2 -1. - <_> - 10 3 6 1 2. - 1 - <_> - - <_> - 9 0 5 6 -1. - <_> - 9 2 5 2 3. - <_> - - <_> - 8 4 6 6 -1. - <_> - 8 7 6 3 2. - <_> - - <_> - 11 2 1 16 -1. - <_> - 11 10 1 8 2. - <_> - - <_> - 9 13 4 4 -1. - <_> - 10 13 2 4 2. - <_> - - <_> - 2 2 18 3 -1. - <_> - 2 3 18 1 3. - <_> - - <_> - 0 8 15 12 -1. - <_> - 5 8 5 12 3. - <_> - - <_> - 18 5 3 2 -1. - <_> - 18 5 3 1 2. - 1 - <_> - - <_> - 4 5 2 3 -1. - <_> - 4 5 1 3 2. - 1 - <_> - - <_> - 11 2 1 16 -1. - <_> - 11 10 1 8 2. - <_> - - <_> - 3 6 10 8 -1. - <_> - 3 8 10 4 2. - <_> - - <_> - 10 6 2 9 -1. - <_> - 10 9 2 3 3. - <_> - - <_> - 7 9 4 7 -1. - <_> - 8 10 2 7 2. - 1 - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 6 8 6 6 -1. - <_> - 8 10 2 6 3. - 1 - <_> - - <_> - 17 13 2 1 -1. - <_> - 17 13 1 1 2. - <_> - - <_> - 1 16 7 2 -1. - <_> - 1 17 7 1 2. - <_> - - <_> - 16 15 4 4 -1. - <_> - 16 17 4 2 2. - <_> - - <_> - 2 15 4 4 -1. - <_> - 2 17 4 2 2. - <_> - - <_> - 17 10 2 9 -1. - <_> - 17 13 2 3 3. - <_> - - <_> - 3 13 2 1 -1. - <_> - 4 13 1 1 2. - <_> - - <_> - 5 6 15 12 -1. - <_> - 5 12 15 6 2. - <_> - - <_> - 11 6 10 4 -1. - <_> - 11 6 5 4 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 7 1 3 2. - 1 - <_> - - <_> - 3 8 6 12 -1. - <_> - 3 12 6 4 3. - <_> - - <_> - 16 2 4 10 -1. - <_> - 16 2 4 5 2. - 1 - <_> - - <_> - 6 2 10 4 -1. - <_> - 6 2 5 4 2. - 1 - <_> - - <_> - 11 12 5 6 -1. - <_> - 11 15 5 3 2. - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 8 2 6 15 -1. - <_> - 10 7 2 5 9. - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 8 1 2 9. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 6 1 9 3 -1. - <_> - 5 2 9 1 3. - 1 - <_> - - <_> - 11 1 4 11 -1. - <_> - 12 2 2 11 2. - 1 - <_> - - <_> - 8 7 6 6 -1. - <_> - 8 7 3 3 2. - <_> - 11 10 3 3 2. - <_> - - <_> - 11 3 4 4 -1. - <_> - 13 3 2 2 2. - <_> - 11 5 2 2 2. - <_> - - <_> - 4 7 4 4 -1. - <_> - 6 7 2 4 2. - <_> - - <_> - 8 1 6 14 -1. - <_> - 8 1 3 14 2. - <_> - - <_> - 9 0 4 10 -1. - <_> - 10 0 2 10 2. - <_> - - <_> - 11 5 1 4 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 11 5 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 5 6 1 2 -1. - <_> - 5 7 1 1 2. - <_> - - <_> - 16 5 1 3 -1. - <_> - 16 6 1 1 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 11 5 4 3 -1. - <_> - 11 5 2 3 2. - <_> - - <_> - 7 5 4 3 -1. - <_> - 9 5 2 3 2. - <_> - - <_> - 8 1 6 14 -1. - <_> - 10 1 2 14 3. - <_> - - <_> - 8 4 1 4 -1. - <_> - 8 5 1 2 2. - <_> - - <_> - 12 7 2 4 -1. - <_> - 13 7 1 2 2. - <_> - 12 9 1 2 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 13 6 1 2 -1. - <_> - 13 7 1 1 2. - <_> - - <_> - 8 6 1 2 -1. - <_> - 8 7 1 1 2. - <_> - - <_> - 11 6 3 2 -1. - <_> - 11 7 3 1 2. - <_> - - <_> - 8 6 3 2 -1. - <_> - 8 7 3 1 2. - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 2 1 9 3. - 1 - <_> - - <_> - 9 1 9 3 -1. - <_> - 8 2 9 1 3. - 1 - <_> - - <_> - 11 0 4 11 -1. - <_> - 12 1 2 11 2. - 1 - <_> - - <_> - 11 0 11 4 -1. - <_> - 10 1 11 2 2. - 1 - <_> - - <_> - 8 3 8 3 -1. - <_> - 8 4 8 1 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 9 1 2 4 2. - <_> - 11 5 2 4 2. - <_> - - <_> - 8 0 12 2 -1. - <_> - 11 0 6 2 2. - <_> - - <_> - 5 5 1 12 -1. - <_> - 5 8 1 6 2. - <_> - - <_> - 8 2 6 6 -1. - <_> - 10 4 2 2 9. - <_> - - <_> - 21 0 1 3 -1. - <_> - 21 1 1 1 3. - <_> - - <_> - 5 1 12 3 -1. - <_> - 9 2 4 1 9. - <_> - - <_> - 11 0 9 14 -1. - <_> - 14 0 3 14 3. - <_> - - <_> - 8 4 2 2 -1. - <_> - 9 4 1 2 2. - <_> - - <_> - 12 3 6 10 -1. - <_> - 12 3 6 5 2. - 1 - <_> - - <_> - 9 8 1 2 -1. - <_> - 9 9 1 1 2. - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 5 0 12 10 -1. - <_> - 9 0 4 10 3. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 7 6 3 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 9 6 4 1 -1. - <_> - 10 6 2 1 2. - <_> - - <_> - 10 5 4 8 -1. - <_> - 10 7 4 4 2. - <_> - - <_> - 11 0 6 1 -1. - <_> - 11 0 3 1 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 14 5 1 3 3. - <_> - - <_> - 10 0 12 1 -1. - <_> - 14 4 4 1 3. - 1 - <_> - - <_> - 3 7 16 12 -1. - <_> - 3 13 16 6 2. - <_> - - <_> - 2 6 5 12 -1. - <_> - 2 9 5 6 2. - <_> - - <_> - 11 13 4 3 -1. - <_> - 12 14 2 3 2. - 1 - <_> - - <_> - 2 4 6 16 -1. - <_> - 2 12 6 8 2. - <_> - - <_> - 11 9 3 1 -1. - <_> - 12 9 1 1 3. - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 11 9 4 2 -1. - <_> - 11 9 2 2 2. - <_> - - <_> - 3 3 1 3 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 13 6 3 1 -1. - <_> - 14 6 1 1 3. - <_> - - <_> - 6 6 3 1 -1. - <_> - 7 6 1 1 3. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 10 0 3 3 -1. - <_> - 11 1 1 3 3. - 1 - <_> - - <_> - 12 0 6 3 -1. - <_> - 11 1 6 1 3. - 1 - <_> - - <_> - 5 0 10 6 -1. - <_> - 5 2 10 2 3. - <_> - - <_> - 13 0 6 10 -1. - <_> - 13 5 6 5 2. - <_> - - <_> - 6 5 10 4 -1. - <_> - 6 7 10 2 2. - <_> - - <_> - 10 4 2 4 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 3 0 6 10 -1. - <_> - 3 5 6 5 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 10 0 1 2 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 11 9 4 2 -1. - <_> - 11 9 2 2 2. - <_> - - <_> - 7 9 4 2 -1. - <_> - 9 9 2 2 2. - <_> - - <_> - 9 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 5 17 1 2 -1. - <_> - 5 18 1 1 2. - <_> - - <_> - 8 3 7 9 -1. - <_> - 8 6 7 3 3. - <_> - - <_> - 6 6 3 3 -1. - <_> - 7 6 1 3 3. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 8 2 1 2. - <_> - - <_> - 15 17 3 3 -1. - <_> - 15 18 3 1 3. - <_> - - <_> - 8 10 4 6 -1. - <_> - 9 11 2 6 2. - 1 - <_> - - <_> - 4 6 16 8 -1. - <_> - 4 8 16 4 2. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 13 17 1 3 -1. - <_> - 13 18 1 1 3. - <_> - - <_> - 8 17 1 3 -1. - <_> - 8 18 1 1 3. - <_> - - <_> - 12 5 1 3 -1. - <_> - 12 6 1 1 3. - <_> - - <_> - 9 5 1 3 -1. - <_> - 9 6 1 1 3. - <_> - - <_> - 13 3 1 3 -1. - <_> - 13 4 1 1 3. - <_> - - <_> - 8 4 6 2 -1. - <_> - 8 4 3 1 2. - <_> - 11 5 3 1 2. - <_> - - <_> - 5 0 16 16 -1. - <_> - 5 8 16 8 2. - <_> - - <_> - 2 0 12 10 -1. - <_> - 2 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 1 5 20 15 -1. - <_> - 6 5 10 15 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 6 1 5 3. - 1 - <_> - - <_> - 11 3 6 6 -1. - <_> - 13 5 2 6 3. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 10 1 3 -1. - <_> - 10 11 1 1 3. - <_> - - <_> - 17 0 3 10 -1. - <_> - 18 1 1 10 3. - 1 - <_> - - <_> - 9 7 5 3 -1. - <_> - 8 8 5 1 3. - 1 - <_> - - <_> - 5 7 12 3 -1. - <_> - 9 8 4 1 9. - <_> - - <_> - 10 5 5 3 -1. - <_> - 9 6 5 1 3. - 1 - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 15 2 2 -1. - <_> - 8 16 2 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 11 9 3 1 2. - <_> - 8 10 3 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 10 2 2 -1. - <_> - 13 10 1 1 2. - <_> - 12 11 1 1 2. - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 6 0 2 1 -1. - <_> - 7 0 1 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 5 15 6 4 -1. - <_> - 5 16 6 2 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 18 3 1 3 -1. - <_> - 18 4 1 1 3. - <_> - - <_> - 3 3 1 3 -1. - <_> - 3 4 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 12 9 3 3 -1. - <_> - 13 10 1 1 9. - <_> - - <_> - 7 9 3 3 -1. - <_> - 8 10 1 1 9. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 6 15 4 1 -1. - <_> - 6 15 2 1 2. - 1 - <_> - - <_> - 13 8 7 9 -1. - <_> - 13 11 7 3 3. - <_> - - <_> - 10 14 1 2 -1. - <_> - 10 15 1 1 2. - <_> - - <_> - 11 12 4 6 -1. - <_> - 13 12 2 3 2. - <_> - 11 15 2 3 2. - <_> - - <_> - 5 15 12 5 -1. - <_> - 11 15 6 5 2. - <_> - - <_> - 11 12 4 6 -1. - <_> - 13 12 2 3 2. - <_> - 11 15 2 3 2. - <_> - - <_> - 7 12 4 6 -1. - <_> - 7 12 2 3 2. - <_> - 9 15 2 3 2. - <_> - - <_> - 7 16 8 3 -1. - <_> - 7 16 4 3 2. - <_> - - <_> - 10 13 1 2 -1. - <_> - 10 14 1 1 2. - <_> - - <_> - 10 12 5 3 -1. - <_> - 10 13 5 1 3. - <_> - - <_> - 9 0 4 2 -1. - <_> - 9 1 4 1 2. - <_> - - <_> - 17 10 3 3 -1. - <_> - 18 10 1 3 3. - <_> - - <_> - 0 0 12 4 -1. - <_> - 0 0 6 2 2. - <_> - 6 2 6 2 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 7 0 4 1 -1. - <_> - 7 0 2 1 2. - 1 - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 7 8 2 2 -1. - <_> - 7 8 1 1 2. - <_> - 8 9 1 1 2. - <_> - - <_> - 7 1 8 14 -1. - <_> - 7 1 4 14 2. - <_> - - <_> - 2 10 3 3 -1. - <_> - 3 10 1 3 3. - <_> - - <_> - 8 7 6 1 -1. - <_> - 10 7 2 1 3. - <_> - - <_> - 9 4 3 9 -1. - <_> - 10 7 1 3 9. - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 10 3 1 6 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 12 1 1 4 -1. - <_> - 11 2 1 2 2. - 1 - <_> - - <_> - 9 1 4 9 -1. - <_> - 9 4 4 3 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 10 8 1 4 -1. - <_> - 10 10 1 2 2. - <_> - - <_> - 12 0 3 2 -1. - <_> - 13 1 1 2 3. - 1 - <_> - - <_> - 10 0 2 3 -1. - <_> - 9 1 2 1 3. - 1 - <_> - - <_> - 12 10 3 3 -1. - <_> - 13 11 1 3 3. - 1 - <_> - - <_> - 7 12 5 3 -1. - <_> - 7 13 5 1 3. - <_> - - <_> - 12 10 3 3 -1. - <_> - 13 11 1 3 3. - 1 - <_> - - <_> - 10 10 3 3 -1. - <_> - 9 11 3 1 3. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 12 1 1 4 3. - <_> - - <_> - 6 8 8 11 -1. - <_> - 8 8 4 11 2. - <_> - - <_> - 5 6 12 6 -1. - <_> - 9 6 4 6 3. - <_> - - <_> - 8 1 3 4 -1. - <_> - 9 1 1 4 3. - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 9 6 8 6 -1. - <_> - 7 8 8 2 3. - 1 - <_> - - <_> - 15 8 6 3 -1. - <_> - 14 9 6 1 3. - 1 - <_> - - <_> - 7 8 3 6 -1. - <_> - 8 9 1 6 3. - 1 - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 0 11 20 3 -1. - <_> - 0 12 20 1 3. - <_> - - <_> - 0 3 22 1 -1. - <_> - 0 3 11 1 2. - <_> - - <_> - 0 7 14 12 -1. - <_> - 0 13 14 6 2. - <_> - - <_> - 16 4 4 3 -1. - <_> - 15 5 4 1 3. - 1 - <_> - - <_> - 6 4 3 4 -1. - <_> - 7 5 1 4 3. - 1 - <_> - - <_> - 9 4 8 2 -1. - <_> - 13 4 4 1 2. - <_> - 9 5 4 1 2. - <_> - - <_> - 5 4 8 2 -1. - <_> - 5 4 4 1 2. - <_> - 9 5 4 1 2. - <_> - - <_> - 12 3 4 3 -1. - <_> - 12 4 4 1 3. - <_> - - <_> - 6 3 4 3 -1. - <_> - 6 4 4 1 3. - <_> - - <_> - 4 5 15 3 -1. - <_> - 9 6 5 1 9. - <_> - - <_> - 0 5 21 12 -1. - <_> - 7 9 7 4 9. - <_> - - <_> - 13 0 2 6 -1. - <_> - 14 0 1 3 2. - <_> - 13 3 1 3 2. - <_> - - <_> - 3 7 16 2 -1. - <_> - 7 7 8 2 2. - <_> - - <_> - 14 4 5 9 -1. - <_> - 14 7 5 3 3. - <_> - - <_> - 3 4 5 9 -1. - <_> - 3 7 5 3 3. - <_> - - <_> - 9 3 7 9 -1. - <_> - 9 6 7 3 3. - <_> - - <_> - 11 4 2 1 -1. - <_> - 11 4 1 1 2. - 1 - <_> - - <_> - 8 4 6 2 -1. - <_> - 11 4 3 1 2. - <_> - 8 5 3 1 2. - <_> - - <_> - 8 8 2 4 -1. - <_> - 8 8 1 2 2. - <_> - 9 10 1 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 8 1 6 15 -1. - <_> - 11 1 3 15 2. - <_> - - <_> - 10 9 2 6 -1. - <_> - 10 9 1 6 2. - <_> - - <_> - 9 9 1 2 -1. - <_> - 9 10 1 1 2. - <_> - - <_> - 21 0 1 2 -1. - <_> - 21 1 1 1 2. - <_> - - <_> - 7 8 2 1 -1. - <_> - 8 8 1 1 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 5 5 2 14 -1. - <_> - 5 12 2 7 2. - <_> - - <_> - 10 15 12 2 -1. - <_> - 13 15 6 2 2. - <_> - - <_> - 0 15 12 2 -1. - <_> - 3 15 6 2 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 11 15 1 2 -1. - <_> - 11 15 1 1 2. - 1 - <_> - - <_> - 15 0 4 2 -1. - <_> - 17 0 2 1 2. - <_> - 15 1 2 1 2. - <_> - - <_> - 7 13 8 7 -1. - <_> - 11 13 4 7 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 6 2 3 -1. - <_> - 9 7 2 1 3. - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 10 4 1 3 -1. - <_> - 10 5 1 1 3. - <_> - - <_> - 16 18 2 2 -1. - <_> - 16 19 2 1 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 11 5 3 1 -1. - <_> - 12 6 1 1 3. - 1 - <_> - - <_> - 7 11 12 1 -1. - <_> - 10 11 6 1 2. - <_> - - <_> - 3 11 12 1 -1. - <_> - 6 11 6 1 2. - <_> - - <_> - 7 9 14 4 -1. - <_> - 7 9 7 4 2. - <_> - - <_> - 7 11 3 1 -1. - <_> - 8 11 1 1 3. - <_> - - <_> - 17 0 3 10 -1. - <_> - 18 1 1 10 3. - 1 - <_> - - <_> - 10 7 4 1 -1. - <_> - 11 8 2 1 2. - 1 - <_> - - <_> - 8 8 6 3 -1. - <_> - 8 9 6 1 3. - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 11 11 2 8 -1. - <_> - 11 11 1 8 2. - <_> - - <_> - 9 12 4 6 -1. - <_> - 10 12 2 6 2. - <_> - - <_> - 13 0 6 4 -1. - <_> - 13 0 3 4 2. - 1 - <_> - - <_> - 1 9 14 4 -1. - <_> - 8 9 7 4 2. - <_> - - <_> - 11 5 6 9 -1. - <_> - 13 7 2 9 3. - 1 - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 2 2. - <_> - 5 2 1 2 2. - <_> - - <_> - 12 4 6 10 -1. - <_> - 14 6 2 10 3. - 1 - <_> - - <_> - 10 4 10 6 -1. - <_> - 8 6 10 2 3. - 1 - <_> - - <_> - 12 5 2 4 -1. - <_> - 12 5 1 4 2. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 9 5 3 2 2. - 1 - <_> - - <_> - 11 1 4 3 -1. - <_> - 10 2 4 1 3. - 1 - <_> - - <_> - 11 1 3 4 -1. - <_> - 12 2 1 4 3. - 1 - <_> - - <_> - 8 3 6 2 -1. - <_> - 11 3 3 1 2. - <_> - 8 4 3 1 2. - <_> - - <_> - 5 0 10 3 -1. - <_> - 4 1 10 1 3. - 1 - <_> - - <_> - 21 9 1 4 -1. - <_> - 21 11 1 2 2. - <_> - - <_> - 0 9 1 4 -1. - <_> - 0 11 1 2 2. - <_> - - <_> - 16 18 2 2 -1. - <_> - 16 19 2 1 2. - <_> - - <_> - 1 7 12 2 -1. - <_> - 1 7 6 1 2. - <_> - 7 8 6 1 2. - <_> - - <_> - 13 7 1 4 -1. - <_> - 13 8 1 2 2. - <_> - - <_> - 8 7 1 4 -1. - <_> - 8 8 1 2 2. - <_> - - <_> - 13 0 2 4 -1. - <_> - 14 0 1 2 2. - <_> - 13 2 1 2 2. - <_> - - <_> - 4 18 2 2 -1. - <_> - 4 19 2 1 2. - <_> - - <_> - 15 19 3 1 -1. - <_> - 16 19 1 1 3. - <_> - - <_> - 5 18 1 2 -1. - <_> - 5 19 1 1 2. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 6 18 1 2 -1. - <_> - 6 19 1 1 2. - <_> - - <_> - 18 19 3 1 -1. - <_> - 19 19 1 1 3. - <_> - - <_> - 9 3 1 3 -1. - <_> - 9 4 1 1 3. - <_> - - <_> - 14 0 3 3 -1. - <_> - 13 1 3 1 3. - 1 - <_> - - <_> - 0 0 6 2 -1. - <_> - 0 0 3 1 2. - <_> - 3 1 3 1 2. - <_> - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - <_> - - <_> - 10 4 1 6 -1. - <_> - 10 6 1 2 3. - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 11 2 9 1 -1. - <_> - 14 5 3 1 3. - 1 - <_> - - <_> - 0 2 22 14 -1. - <_> - 0 2 11 14 2. - <_> - - <_> - 1 19 3 1 -1. - <_> - 2 19 1 1 3. - <_> - - <_> - 18 17 3 3 -1. - <_> - 19 17 1 3 3. - <_> - - <_> - 1 17 3 3 -1. - <_> - 2 17 1 3 3. - <_> - - <_> - 15 4 1 6 -1. - <_> - 15 6 1 2 3. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 6 1 1 3. - 1 - <_> - - <_> - 12 4 1 3 -1. - <_> - 12 5 1 1 3. - <_> - - <_> - 9 4 1 3 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 16 1 1 4 -1. - <_> - 16 2 1 2 2. - <_> - - <_> - 5 1 1 4 -1. - <_> - 5 2 1 2 2. - <_> - - <_> - 18 16 3 2 -1. - <_> - 19 16 1 2 3. - <_> - - <_> - 3 9 2 2 -1. - <_> - 3 9 1 1 2. - <_> - 4 10 1 1 2. - <_> - - <_> - 12 3 2 8 -1. - <_> - 13 3 1 4 2. - <_> - 12 7 1 4 2. - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 0 1 3 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 1 1 2 2. - <_> - 11 3 1 2 2. - <_> - - <_> - 15 1 2 3 -1. - <_> - 14 2 2 1 3. - 1 - <_> - - <_> - 7 0 7 6 -1. - <_> - 7 2 7 2 3. - <_> - - <_> - 8 0 6 6 -1. - <_> - 10 2 2 2 9. - <_> - - <_> - 7 1 3 2 -1. - <_> - 8 2 1 2 3. - 1 - <_> - - <_> - 8 2 8 8 -1. - <_> - 8 4 8 4 2. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 11 11 4 2 -1. - <_> - 13 11 2 1 2. - <_> - 11 12 2 1 2. - <_> - - <_> - 8 14 6 1 -1. - <_> - 10 14 2 1 3. - <_> - - <_> - 11 0 5 6 -1. - <_> - 11 0 5 3 2. - 1 - <_> - - <_> - 3 15 12 2 -1. - <_> - 3 15 6 1 2. - <_> - 9 16 6 1 2. - <_> - - <_> - 7 4 10 4 -1. - <_> - 7 4 5 4 2. - <_> - - <_> - 4 2 9 12 -1. - <_> - 7 6 3 4 9. - <_> - - <_> - 14 2 2 4 -1. - <_> - 15 2 1 2 2. - <_> - 14 4 1 2 2. - <_> - - <_> - 6 2 2 4 -1. - <_> - 6 2 1 2 2. - <_> - 7 4 1 2 2. - <_> - - <_> - 11 0 5 6 -1. - <_> - 11 0 5 3 2. - 1 - <_> - - <_> - 5 4 10 4 -1. - <_> - 10 4 5 4 2. - <_> - - <_> - 16 15 2 2 -1. - <_> - 17 15 1 1 2. - <_> - 16 16 1 1 2. - <_> - - <_> - 4 15 2 2 -1. - <_> - 4 15 1 1 2. - <_> - 5 16 1 1 2. - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 5 15 1 2 -1. - <_> - 5 16 1 1 2. - <_> - - <_> - 20 6 2 12 -1. - <_> - 20 6 2 6 2. - 1 - <_> - - <_> - 3 12 3 6 -1. - <_> - 3 14 3 2 3. - <_> - - <_> - 2 10 18 4 -1. - <_> - 11 10 9 2 2. - <_> - 2 12 9 2 2. - <_> - - <_> - 1 0 14 8 -1. - <_> - 8 0 7 8 2. - <_> - - <_> - 8 6 14 14 -1. - <_> - 8 13 14 7 2. - <_> - - <_> - 6 4 10 16 -1. - <_> - 6 12 10 8 2. - <_> - - <_> - 8 6 14 14 -1. - <_> - 8 13 14 7 2. - <_> - - <_> - 2 6 4 1 -1. - <_> - 2 6 2 1 2. - 1 - <_> - - <_> - 7 3 12 15 -1. - <_> - 7 8 12 5 3. - <_> - - <_> - 0 8 20 9 -1. - <_> - 10 8 10 9 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 0 12 1 6 -1. - <_> - 0 14 1 2 3. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 5 0 6 1 -1. - <_> - 7 0 2 1 3. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 13 0 2 6 -1. - <_> - 14 0 1 3 2. - <_> - 13 3 1 3 2. - <_> - - <_> - 7 0 2 6 -1. - <_> - 7 0 1 3 2. - <_> - 8 3 1 3 2. - <_> - - <_> - 12 1 4 2 -1. - <_> - 13 2 2 2 2. - 1 - <_> - - <_> - 7 2 3 6 -1. - <_> - 8 4 1 2 9. - <_> - - <_> - 14 7 7 6 -1. - <_> - 12 9 7 2 3. - 1 - <_> - - <_> - 8 7 6 7 -1. - <_> - 10 9 2 7 3. - 1 - <_> - - <_> - 14 9 7 4 -1. - <_> - 13 10 7 2 2. - 1 - <_> - - <_> - 8 9 4 7 -1. - <_> - 9 10 2 7 2. - 1 - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 6 10 2 2 -1. - <_> - 6 10 1 1 2. - <_> - 7 11 1 1 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 11 0 4 4 -1. - <_> - 12 1 2 4 2. - 1 - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 4 4 2 2. - <_> - - <_> - 8 16 6 3 -1. - <_> - 8 17 6 1 3. - <_> - - <_> - 9 5 4 2 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 11 5 2 2 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 9 12 10 1 -1. - <_> - 9 12 5 1 2. - <_> - - <_> - 0 1 12 6 -1. - <_> - 4 3 4 2 9. - <_> - - <_> - 3 2 16 12 -1. - <_> - 7 2 8 12 2. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 5 1 1 3. - 1 - <_> - - <_> - 17 0 4 2 -1. - <_> - 19 0 2 1 2. - <_> - 17 1 2 1 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 7 4 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 9 7 4 1 3. - <_> - - <_> - 9 7 4 3 -1. - <_> - 9 8 4 1 3. - <_> - - <_> - 12 2 3 6 -1. - <_> - 12 5 3 3 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 17 0 4 2 -1. - <_> - 19 0 2 1 2. - <_> - 17 1 2 1 2. - <_> - - <_> - 0 5 18 12 -1. - <_> - 0 9 18 4 3. - <_> - - <_> - 5 6 12 14 -1. - <_> - 5 13 12 7 2. - <_> - - <_> - 1 0 4 2 -1. - <_> - 1 0 2 1 2. - <_> - 3 1 2 1 2. - <_> - - <_> - 11 5 3 6 -1. - <_> - 11 8 3 3 2. - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 7 0 9 6 -1. - <_> - 10 0 3 6 3. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 13 4 2 1 -1. - <_> - 13 4 1 1 2. - 1 - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 11 12 1 4 -1. - <_> - 11 14 1 2 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 9 0 4 8 -1. - <_> - 9 4 4 4 2. - <_> - - <_> - 0 1 21 18 -1. - <_> - 7 7 7 6 9. - <_> - - <_> - 7 3 8 4 -1. - <_> - 11 3 4 2 2. - <_> - 7 5 4 2 2. - <_> - - <_> - 10 0 3 6 -1. - <_> - 11 1 1 6 3. - 1 - <_> - - <_> - 12 2 2 2 -1. - <_> - 13 2 1 1 2. - <_> - 12 3 1 1 2. - <_> - - <_> - 8 2 2 2 -1. - <_> - 8 2 1 1 2. - <_> - 9 3 1 1 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 9 1 3 1 -1. - <_> - 10 1 1 1 3. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 10 7 2 2 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 11 6 1 4 -1. - <_> - 11 8 1 2 2. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 13 6 1 2 2. - <_> - 12 8 1 2 2. - <_> - - <_> - 11 5 4 3 -1. - <_> - 10 6 4 1 3. - 1 - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 1 6 6 -1. - <_> - 10 3 2 2 9. - <_> - - <_> - 10 3 2 4 -1. - <_> - 10 5 2 2 2. - <_> - - <_> - 8 7 6 3 -1. - <_> - 10 7 2 3 3. - <_> - - <_> - 7 9 8 8 -1. - <_> - 9 9 4 8 2. - <_> - - <_> - 8 2 3 9 -1. - <_> - 8 5 3 3 3. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 16 1 4 -1. - <_> - 8 17 1 2 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 0 3 8 2 -1. - <_> - 0 3 4 1 2. - <_> - 4 4 4 1 2. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 10 1 1 2. - 1 - <_> - - <_> - 10 10 2 1 -1. - <_> - 10 10 1 1 2. - 1 - <_> - - <_> - 9 7 6 5 -1. - <_> - 9 7 3 5 2. - <_> - - <_> - 7 7 6 5 -1. - <_> - 10 7 3 5 2. - <_> - - <_> - 12 7 3 2 -1. - <_> - 12 7 3 1 2. - 1 - <_> - - <_> - 10 7 2 3 -1. - <_> - 10 7 1 3 2. - 1 - <_> - - <_> - 11 4 2 3 -1. - <_> - 11 5 2 1 3. - <_> - - <_> - 8 9 6 5 -1. - <_> - 10 11 2 5 3. - 1 - <_> - - <_> - 15 8 6 2 -1. - <_> - 15 8 3 2 2. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 20 17 1 3 -1. - <_> - 20 18 1 1 3. - <_> - - <_> - 1 17 1 3 -1. - <_> - 1 18 1 1 3. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 8 6 2 -1. - <_> - 4 8 3 2 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 9 1 4 9 -1. - <_> - 10 1 2 9 2. - <_> - - <_> - 18 17 3 1 -1. - <_> - 19 17 1 1 3. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 15 15 2 1 -1. - <_> - 15 15 1 1 2. - 1 - <_> - - <_> - 3 8 6 9 -1. - <_> - 3 11 6 3 3. - <_> - - <_> - 7 8 12 4 -1. - <_> - 13 8 6 2 2. - <_> - 7 10 6 2 2. - <_> - - <_> - 3 6 14 8 -1. - <_> - 3 6 7 4 2. - <_> - 10 10 7 4 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 6 4 1 2 -1. - <_> - 6 5 1 1 2. - <_> - - <_> - 15 15 2 1 -1. - <_> - 15 15 1 1 2. - 1 - <_> - - <_> - 11 1 5 2 -1. - <_> - 11 1 5 1 2. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 10 1 3 2. - <_> - - <_> - 7 15 1 2 -1. - <_> - 7 15 1 1 2. - 1 - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 12 2 1 4 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 0 1 2 2. - <_> - 11 2 1 2 2. - <_> - - <_> - 8 5 6 2 -1. - <_> - 8 5 3 2 2. - <_> - - <_> - 9 7 4 6 -1. - <_> - 9 7 2 3 2. - <_> - 11 10 2 3 2. - <_> - - <_> - 14 5 6 6 -1. - <_> - 16 7 2 6 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 6 7 6 2 3. - 1 - <_> - - <_> - 4 5 17 3 -1. - <_> - 4 6 17 1 3. - <_> - - <_> - 8 9 1 2 -1. - <_> - 8 10 1 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 8 12 4 1 -1. - <_> - 9 12 2 1 2. - <_> - - <_> - 15 6 1 2 -1. - <_> - 15 7 1 1 2. - <_> - - <_> - 9 4 2 3 -1. - <_> - 9 5 2 1 3. - <_> - - <_> - 14 0 2 12 -1. - <_> - 14 6 2 6 2. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 6 2 2 2. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 13 0 2 8 -1. - <_> - 14 0 1 4 2. - <_> - 13 4 1 4 2. - <_> - - <_> - 7 0 2 8 -1. - <_> - 7 0 1 4 2. - <_> - 8 4 1 4 2. - <_> - - <_> - 15 6 1 2 -1. - <_> - 15 7 1 1 2. - <_> - - <_> - 6 6 1 2 -1. - <_> - 6 7 1 1 2. - <_> - - <_> - 15 6 1 3 -1. - <_> - 15 7 1 1 3. - <_> - - <_> - 6 6 1 3 -1. - <_> - 6 7 1 1 3. - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 10 2 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 13 0 2 2 -1. - <_> - 13 0 1 2 2. - 1 - <_> - - <_> - 2 10 1 3 -1. - <_> - 2 11 1 1 3. - <_> - - <_> - 18 17 1 2 -1. - <_> - 18 18 1 1 2. - <_> - - <_> - 8 11 2 2 -1. - <_> - 8 11 1 1 2. - <_> - 9 12 1 1 2. - <_> - - <_> - 18 17 1 2 -1. - <_> - 18 18 1 1 2. - <_> - - <_> - 5 17 2 2 -1. - <_> - 5 17 1 1 2. - <_> - 6 18 1 1 2. - <_> - - <_> - 11 4 4 9 -1. - <_> - 11 4 2 9 2. - 1 - <_> - - <_> - 3 17 1 2 -1. - <_> - 3 18 1 1 2. - <_> - - <_> - 9 11 12 2 -1. - <_> - 9 12 12 1 2. - <_> - - <_> - 11 4 9 4 -1. - <_> - 11 4 9 2 2. - 1 - <_> - - <_> - 18 16 1 4 -1. - <_> - 18 18 1 2 2. - <_> - - <_> - 9 7 2 4 -1. - <_> - 9 7 1 2 2. - <_> - 10 9 1 2 2. - <_> - - <_> - 8 6 9 4 -1. - <_> - 8 8 9 2 2. - <_> - - <_> - 10 8 1 3 -1. - <_> - 10 9 1 1 3. - <_> - - <_> - 10 5 3 6 -1. - <_> - 10 7 3 2 3. - <_> - - <_> - 0 7 14 2 -1. - <_> - 0 7 7 1 2. - <_> - 7 8 7 1 2. - <_> - - <_> - 12 9 1 2 -1. - <_> - 12 9 1 1 2. - 1 - <_> - - <_> - 10 9 2 1 -1. - <_> - 10 9 1 1 2. - 1 - <_> - - <_> - 8 0 12 4 -1. - <_> - 14 0 6 2 2. - <_> - 8 2 6 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 11 0 3 2 -1. - <_> - 12 1 1 2 3. - 1 - <_> - - <_> - 2 17 2 2 -1. - <_> - 2 18 2 1 2. - <_> - - <_> - 20 18 2 1 -1. - <_> - 20 18 1 1 2. - <_> - - <_> - 10 9 5 3 -1. - <_> - 9 10 5 1 3. - 1 - <_> - - <_> - 11 1 8 19 -1. - <_> - 13 1 4 19 2. - <_> - - <_> - 0 18 2 1 -1. - <_> - 1 18 1 1 2. - <_> - - <_> - 16 16 6 4 -1. - <_> - 18 16 2 4 3. - <_> - - <_> - 6 9 2 6 -1. - <_> - 6 9 2 3 2. - 1 - <_> - - <_> - 16 16 6 4 -1. - <_> - 18 16 2 4 3. - <_> - - <_> - 0 16 6 4 -1. - <_> - 2 16 2 4 3. - <_> - - <_> - 21 17 1 3 -1. - <_> - 21 18 1 1 3. - <_> - - <_> - 2 12 6 8 -1. - <_> - 2 12 3 4 2. - <_> - 5 16 3 4 2. - <_> - - <_> - 21 17 1 3 -1. - <_> - 21 18 1 1 3. - <_> - - <_> - 0 17 1 3 -1. - <_> - 0 18 1 1 3. - <_> - - <_> - 16 0 6 4 -1. - <_> - 15 1 6 2 2. - 1 - <_> - - <_> - 5 6 12 9 -1. - <_> - 9 9 4 3 9. - <_> - - <_> - 11 11 3 1 -1. - <_> - 12 11 1 1 3. - <_> - - <_> - 8 11 3 1 -1. - <_> - 9 11 1 1 3. - <_> - - <_> - 14 8 4 1 -1. - <_> - 15 8 2 1 2. - <_> - - <_> - 8 3 1 3 -1. - <_> - 8 4 1 1 3. - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 7 1 3 1 -1. - <_> - 8 2 1 1 3. - 1 - <_> - - <_> - 13 0 2 16 -1. - <_> - 13 0 1 16 2. - <_> - - <_> - 7 0 2 16 -1. - <_> - 8 0 1 16 2. - <_> - - <_> - 14 0 7 3 -1. - <_> - 13 1 7 1 3. - 1 - <_> - - <_> - 6 4 3 2 -1. - <_> - 6 5 3 1 2. - <_> - - <_> - 15 0 1 12 -1. - <_> - 15 6 1 6 2. - <_> - - <_> - 2 2 18 6 -1. - <_> - 2 2 9 3 2. - <_> - 11 5 9 3 2. - <_> - - <_> - 11 12 4 3 -1. - <_> - 11 12 2 3 2. - <_> - - <_> - 1 5 9 15 -1. - <_> - 4 10 3 5 9. - <_> - - <_> - 11 6 8 3 -1. - <_> - 10 7 8 1 3. - 1 - <_> - - <_> - 11 6 3 8 -1. - <_> - 12 7 1 8 3. - 1 - <_> - - <_> - 12 15 9 3 -1. - <_> - 12 16 9 1 3. - <_> - - <_> - 9 6 3 6 -1. - <_> - 9 8 3 2 3. - <_> - - <_> - 13 2 3 11 -1. - <_> - 14 3 1 11 3. - 1 - <_> - - <_> - 9 2 11 3 -1. - <_> - 8 3 11 1 3. - 1 - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 2 3 6 2 -1. - <_> - 2 3 3 1 2. - <_> - 5 4 3 1 2. - <_> - - <_> - 2 19 20 1 -1. - <_> - 7 19 10 1 2. - <_> - - <_> - 6 3 1 2 -1. - <_> - 6 4 1 1 2. - <_> - - <_> - 12 5 3 5 -1. - <_> - 13 5 1 5 3. - <_> - - <_> - 7 14 1 2 -1. - <_> - 7 14 1 1 2. - 1 - <_> - - <_> - 5 13 12 7 -1. - <_> - 5 13 6 7 2. - <_> - - <_> - 6 13 2 4 -1. - <_> - 6 13 1 2 2. - <_> - 7 15 1 2 2. - <_> - - <_> - 10 9 5 8 -1. - <_> - 10 11 5 4 2. - <_> - - <_> - 7 5 3 5 -1. - <_> - 8 5 1 5 3. - <_> - - <_> - 9 1 4 1 -1. - <_> - 10 1 2 1 2. - <_> - - <_> - 6 5 3 1 -1. - <_> - 7 5 1 1 3. - <_> - - <_> - 5 1 16 6 -1. - <_> - 13 1 8 3 2. - <_> - 5 4 8 3 2. - <_> - - <_> - 1 1 16 6 -1. - <_> - 1 1 8 3 2. - <_> - 9 4 8 3 2. - <_> - - <_> - 14 4 4 8 -1. - <_> - 15 4 2 8 2. - <_> - - <_> - 4 4 4 8 -1. - <_> - 5 4 2 8 2. - <_> - - <_> - 12 0 4 13 -1. - <_> - 13 0 2 13 2. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 15 12 2 1 -1. - <_> - 15 12 1 1 2. - 1 - <_> - - <_> - 6 0 4 20 -1. - <_> - 7 0 2 20 2. - <_> - - <_> - 5 5 15 15 -1. - <_> - 5 10 15 5 3. - <_> - - <_> - 7 9 5 8 -1. - <_> - 7 11 5 4 2. - <_> - - <_> - 10 9 12 3 -1. - <_> - 10 9 6 3 2. - <_> - - <_> - 11 3 6 4 -1. - <_> - 10 4 6 2 2. - 1 - <_> - - <_> - 9 3 4 4 -1. - <_> - 9 5 4 2 2. - <_> - - <_> - 7 12 1 2 -1. - <_> - 7 12 1 1 2. - 1 - <_> - - <_> - 14 9 3 10 -1. - <_> - 14 14 3 5 2. - <_> - - <_> - 9 6 3 9 -1. - <_> - 10 9 1 3 9. - <_> - - <_> - 1 13 20 6 -1. - <_> - 1 16 20 3 2. - <_> - - <_> - 5 9 3 10 -1. - <_> - 5 14 3 5 2. - <_> - - <_> - 14 1 3 6 -1. - <_> - 15 2 1 6 3. - 1 - <_> - - <_> - 8 1 6 3 -1. - <_> - 7 2 6 1 3. - 1 - <_> - - <_> - 11 6 3 3 -1. - <_> - 12 7 1 1 9. - <_> - - <_> - 3 9 8 1 -1. - <_> - 3 9 4 1 2. - 1 - <_> - - <_> - 10 9 12 3 -1. - <_> - 10 9 6 3 2. - <_> - - <_> - 0 9 12 3 -1. - <_> - 6 9 6 3 2. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 10 4 3 6 -1. - <_> - 11 6 1 2 9. - <_> - - <_> - 3 8 9 12 -1. - <_> - 3 14 9 6 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 7 1 6 3. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 9 3 1 2. - <_> - 11 10 3 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 4 2. - <_> - - <_> - 11 6 2 6 -1. - <_> - 11 6 2 3 2. - 1 - <_> - - <_> - 6 4 6 9 -1. - <_> - 8 7 2 3 9. - <_> - - <_> - 8 7 6 8 -1. - <_> - 8 7 3 8 2. - <_> - - <_> - 10 15 2 2 -1. - <_> - 11 15 1 2 2. - <_> - - <_> - 15 6 3 6 -1. - <_> - 16 7 1 6 3. - 1 - <_> - - <_> - 7 6 6 3 -1. - <_> - 6 7 6 1 3. - 1 - <_> - - <_> - 11 3 2 2 -1. - <_> - 12 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 2 12 7 4 -1. - <_> - 2 13 7 2 2. - <_> - - <_> - 11 7 10 10 -1. - <_> - 16 7 5 5 2. - <_> - 11 12 5 5 2. - <_> - - <_> - 1 13 3 3 -1. - <_> - 2 14 1 1 9. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 0 12 3 2 -1. - <_> - 1 12 1 2 3. - <_> - - <_> - 14 0 2 14 -1. - <_> - 14 7 2 7 2. - <_> - - <_> - 6 0 2 14 -1. - <_> - 6 7 2 7 2. - <_> - - <_> - 6 0 11 2 -1. - <_> - 6 1 11 1 2. - <_> - - <_> - 7 3 7 6 -1. - <_> - 7 5 7 2 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 0 0 22 14 -1. - <_> - 11 0 11 14 2. - <_> - - <_> - 17 9 3 6 -1. - <_> - 18 9 1 6 3. - <_> - - <_> - 2 9 3 6 -1. - <_> - 3 9 1 6 3. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 1 14 4 6 -1. - <_> - 2 14 2 6 2. - <_> - - <_> - 18 16 3 3 -1. - <_> - 19 17 1 1 9. - <_> - - <_> - 1 16 3 3 -1. - <_> - 2 17 1 1 9. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 1 2 3 1 -1. - <_> - 2 2 1 1 3. - <_> - - <_> - 20 3 2 2 -1. - <_> - 21 3 1 1 2. - <_> - 20 4 1 1 2. - <_> - - <_> - 8 17 6 2 -1. - <_> - 11 17 3 2 2. - <_> - - <_> - 20 6 2 12 -1. - <_> - 20 6 2 6 2. - 1 - <_> - - <_> - 2 6 12 2 -1. - <_> - 2 6 6 2 2. - 1 - <_> - - <_> - 18 12 1 2 -1. - <_> - 18 13 1 1 2. - <_> - - <_> - 3 12 1 2 -1. - <_> - 3 13 1 1 2. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 3 15 1 2 -1. - <_> - 3 16 1 1 2. - <_> - - <_> - 14 0 2 2 -1. - <_> - 14 0 1 2 2. - 1 - <_> - - <_> - 1 10 7 3 -1. - <_> - 1 11 7 1 3. - <_> - - <_> - 14 8 4 6 -1. - <_> - 14 10 4 2 3. - <_> - - <_> - 2 14 11 3 -1. - <_> - 2 15 11 1 3. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 6 14 1 3 -1. - <_> - 6 15 1 1 3. - <_> - - <_> - 16 8 6 4 -1. - <_> - 15 9 6 2 2. - 1 - <_> - - <_> - 10 1 10 4 -1. - <_> - 9 2 10 2 2. - 1 - <_> - - <_> - 13 4 2 1 -1. - <_> - 13 4 1 1 2. - 1 - <_> - - <_> - 9 4 1 2 -1. - <_> - 9 4 1 1 2. - 1 - <_> - - <_> - 13 3 3 6 -1. - <_> - 14 3 1 6 3. - <_> - - <_> - 6 3 3 6 -1. - <_> - 7 3 1 6 3. - <_> - - <_> - 11 3 2 9 -1. - <_> - 8 6 2 3 3. - 1 - <_> - - <_> - 11 3 9 2 -1. - <_> - 14 6 3 2 3. - 1 - <_> - - <_> - 12 5 1 9 -1. - <_> - 9 8 1 3 3. - 1 - <_> - - <_> - 10 5 9 1 -1. - <_> - 13 8 3 1 3. - 1 - <_> - - <_> - 6 6 12 8 -1. - <_> - 6 8 12 4 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 0 3 2 2 -1. - <_> - 0 3 1 1 2. - <_> - 1 4 1 1 2. - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 11 4 2 2 -1. - <_> - 11 4 2 1 2. - 1 - <_> - - <_> - 9 0 12 6 -1. - <_> - 15 0 6 3 2. - <_> - 9 3 6 3 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 11 13 3 3 -1. - <_> - 12 14 1 1 9. - <_> - - <_> - 8 13 3 3 -1. - <_> - 9 14 1 1 9. - <_> - - <_> - 12 5 3 6 -1. - <_> - 13 6 1 6 3. - 1 - <_> - - <_> - 10 5 6 3 -1. - <_> - 9 6 6 1 3. - 1 - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 5 0 11 2 -1. - <_> - 5 1 11 1 2. - <_> - - <_> - 16 3 2 9 -1. - <_> - 16 3 1 9 2. - 1 - <_> - - <_> - 6 3 5 2 -1. - <_> - 6 3 5 1 2. - 1 - <_> - - <_> - 13 0 7 3 -1. - <_> - 12 1 7 1 3. - 1 - <_> - - <_> - 3 6 2 1 -1. - <_> - 4 6 1 1 2. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 10 4 2 3 -1. - <_> - 10 5 2 1 3. - <_> - - <_> - 11 4 1 4 -1. - <_> - 11 5 1 2 2. - <_> - - <_> - 10 9 2 1 -1. - <_> - 11 9 1 1 2. - <_> - - <_> - 11 3 1 6 -1. - <_> - 9 5 1 2 3. - 1 - <_> - - <_> - 11 3 6 1 -1. - <_> - 13 5 2 1 3. - 1 - <_> - - <_> - 17 15 2 2 -1. - <_> - 18 15 1 1 2. - <_> - 17 16 1 1 2. - <_> - - <_> - 3 15 2 2 -1. - <_> - 3 15 1 1 2. - <_> - 4 16 1 1 2. - <_> - - <_> - 4 7 18 12 -1. - <_> - 4 7 9 12 2. - <_> - - <_> - 0 7 18 12 -1. - <_> - 9 7 9 12 2. - <_> - - <_> - 8 0 14 19 -1. - <_> - 8 0 7 19 2. - <_> - - <_> - 10 0 3 4 -1. - <_> - 11 1 1 4 3. - 1 - <_> - - <_> - 9 5 4 3 -1. - <_> - 9 6 4 1 3. - <_> - - <_> - 2 17 6 2 -1. - <_> - 2 18 6 1 2. - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 7 6 6 3 -1. - <_> - 7 7 6 1 3. - <_> - - <_> - 10 5 2 6 -1. - <_> - 10 8 2 3 2. - <_> - - <_> - 8 5 6 4 -1. - <_> - 8 7 6 2 2. - <_> - - <_> - 13 15 5 2 -1. - <_> - 13 16 5 1 2. - <_> - - <_> - 1 4 20 15 -1. - <_> - 1 9 20 5 3. - <_> - - <_> - 5 2 12 9 -1. - <_> - 8 2 6 9 2. - <_> - - <_> - 10 0 2 4 -1. - <_> - 10 0 1 4 2. - 1 - <_> - - <_> - 19 6 1 12 -1. - <_> - 15 10 1 4 3. - 1 - <_> - - <_> - 2 0 4 2 -1. - <_> - 2 0 2 1 2. - <_> - 4 1 2 1 2. - <_> - - <_> - 3 0 16 20 -1. - <_> - 3 10 16 10 2. - <_> - - <_> - 10 4 4 1 -1. - <_> - 11 5 2 1 2. - 1 - <_> - - <_> - 12 0 10 8 -1. - <_> - 12 4 10 4 2. - <_> - - <_> - 1 1 7 18 -1. - <_> - 1 10 7 9 2. - <_> - - <_> - 16 0 3 10 -1. - <_> - 17 1 1 10 3. - 1 - <_> - - <_> - 6 0 10 3 -1. - <_> - 5 1 10 1 3. - 1 - <_> - - <_> - 11 8 3 2 -1. - <_> - 12 8 1 2 3. - <_> - - <_> - 9 7 2 1 -1. - <_> - 9 7 1 1 2. - 1 - <_> - - <_> - 9 2 4 8 -1. - <_> - 11 2 2 4 2. - <_> - 9 6 2 4 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 9 6 2 2 2. - <_> - - <_> - 11 4 3 2 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 10 5 4 8 -1. - <_> - 10 7 4 4 2. - <_> - - <_> - 9 4 4 6 -1. - <_> - 9 4 2 3 2. - <_> - 11 7 2 3 2. - <_> - - <_> - 12 6 3 2 -1. - <_> - 13 6 1 2 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 6 3 2 2. - <_> - 11 8 3 2 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 8 7 2 4 -1. - <_> - 9 7 1 4 2. - <_> - - <_> - 12 6 2 4 -1. - <_> - 11 7 2 2 2. - 1 - <_> - - <_> - 9 9 2 1 -1. - <_> - 10 9 1 1 2. - <_> - - <_> - 16 0 4 2 -1. - <_> - 18 0 2 1 2. - <_> - 16 1 2 1 2. - <_> - - <_> - 8 8 2 8 -1. - <_> - 9 8 1 8 2. - <_> - - <_> - 11 2 5 9 -1. - <_> - 11 5 5 3 3. - <_> - - <_> - 9 3 3 4 -1. - <_> - 9 5 3 2 2. - <_> - - <_> - 11 1 1 10 -1. - <_> - 11 1 1 5 2. - 1 - <_> - - <_> - 11 1 10 1 -1. - <_> - 11 1 5 1 2. - 1 - <_> - - <_> - 3 7 18 9 -1. - <_> - 9 10 6 3 9. - <_> - - <_> - 10 12 1 4 -1. - <_> - 10 14 1 2 2. - <_> - - <_> - 13 14 1 2 -1. - <_> - 13 14 1 1 2. - 1 - <_> - - <_> - 8 15 2 1 -1. - <_> - 9 15 1 1 2. - <_> - - <_> - 12 8 2 10 -1. - <_> - 13 8 1 5 2. - <_> - 12 13 1 5 2. - <_> - - <_> - 11 5 4 2 -1. - <_> - 12 6 2 2 2. - 1 - <_> - - <_> - 14 10 2 8 -1. - <_> - 14 14 2 4 2. - <_> - - <_> - 6 3 7 9 -1. - <_> - 6 6 7 3 3. - <_> - - <_> - 10 3 3 1 -1. - <_> - 11 3 1 1 3. - <_> - - <_> - 9 6 4 2 -1. - <_> - 9 7 4 1 2. - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 1 6 1 2 -1. - <_> - 1 7 1 1 2. - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 11 11 6 1 -1. - <_> - 13 13 2 1 3. - 1 - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 8 8 2 10 -1. - <_> - 8 8 1 5 2. - <_> - 9 13 1 5 2. - <_> - - <_> - 20 6 1 2 -1. - <_> - 20 7 1 1 2. - <_> - - <_> - 1 6 1 2 -1. - <_> - 1 7 1 1 2. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 4 7 6 3 -1. - <_> - 4 8 6 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 1 4 2 10 -1. - <_> - 1 9 2 5 2. - <_> - - <_> - 14 1 4 8 -1. - <_> - 15 2 2 8 2. - 1 - <_> - - <_> - 8 7 6 2 -1. - <_> - 8 7 3 1 2. - <_> - 11 8 3 1 2. - <_> - - <_> - 2 5 18 9 -1. - <_> - 2 8 18 3 3. - <_> - - <_> - 8 9 2 4 -1. - <_> - 8 9 1 4 2. - 1 - <_> - - <_> - 10 8 12 6 -1. - <_> - 10 10 12 2 3. - <_> - - <_> - 0 8 12 6 -1. - <_> - 0 10 12 2 3. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 8 4 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 15 17 1 3 -1. - <_> - 15 18 1 1 3. - <_> - - <_> - 9 7 2 6 -1. - <_> - 9 9 2 2 3. - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 1 17 3 1 -1. - <_> - 2 17 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 16 18 6 2 -1. - <_> - 18 18 2 2 3. - <_> - - <_> - 0 18 6 2 -1. - <_> - 2 18 2 2 3. - <_> - - <_> - 17 6 2 4 -1. - <_> - 18 6 1 2 2. - <_> - 17 8 1 2 2. - <_> - - <_> - 3 6 2 4 -1. - <_> - 3 6 1 2 2. - <_> - 4 8 1 2 2. - <_> - - <_> - 14 18 5 2 -1. - <_> - 14 19 5 1 2. - <_> - - <_> - 8 10 4 2 -1. - <_> - 8 10 2 1 2. - <_> - 10 11 2 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 8 9 5 2 -1. - <_> - 8 10 5 1 2. - <_> - - <_> - 6 9 10 2 -1. - <_> - 6 10 10 1 2. - <_> - - <_> - 8 10 3 7 -1. - <_> - 9 11 1 7 3. - 1 - <_> - - <_> - 16 15 1 2 -1. - <_> - 16 16 1 1 2. - <_> - - <_> - 9 1 2 12 -1. - <_> - 9 1 1 6 2. - <_> - 10 7 1 6 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 10 1 1 2 -1. - <_> - 10 1 1 1 2. - 1 - <_> - - <_> - 13 3 3 2 -1. - <_> - 14 3 1 2 3. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 8 0 6 4 -1. - <_> - 8 1 6 2 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 6 0 16 2 -1. - <_> - 6 1 16 1 2. - <_> - - <_> - 4 5 6 6 -1. - <_> - 4 5 3 3 2. - <_> - 7 8 3 3 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 8 4 1 3 -1. - <_> - 8 5 1 1 3. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 5 15 1 2 -1. - <_> - 5 16 1 1 2. - <_> - - <_> - 7 7 8 8 -1. - <_> - 7 7 4 8 2. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 7 2 3 2. - <_> - - <_> - 7 5 8 6 -1. - <_> - 7 8 8 3 2. - <_> - - <_> - 7 7 1 3 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 7 13 4 3 -1. - <_> - 8 14 2 3 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 6 9 3 3 -1. - <_> - 5 10 3 1 3. - 1 - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 4 0 18 1 -1. - <_> - 10 6 6 1 3. - 1 - <_> - - <_> - 7 5 10 12 -1. - <_> - 7 9 10 4 3. - <_> - - <_> - 6 8 3 1 -1. - <_> - 7 8 1 1 3. - <_> - - <_> - 13 1 3 9 -1. - <_> - 14 1 1 9 3. - <_> - - <_> - 6 7 2 1 -1. - <_> - 7 7 1 1 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 13 8 1 1 3. - 1 - <_> - - <_> - 9 14 2 1 -1. - <_> - 9 14 1 1 2. - 1 - <_> - - <_> - 11 14 2 2 -1. - <_> - 12 14 1 1 2. - <_> - 11 15 1 1 2. - <_> - - <_> - 9 14 2 2 -1. - <_> - 9 14 1 1 2. - <_> - 10 15 1 1 2. - <_> - - <_> - 14 7 1 3 -1. - <_> - 13 8 1 1 3. - 1 - <_> - - <_> - 7 13 1 2 -1. - <_> - 7 13 1 1 2. - 1 - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 1 9 7 8 -1. - <_> - 1 11 7 4 2. - <_> - - <_> - 20 15 1 4 -1. - <_> - 20 16 1 2 2. - <_> - - <_> - 3 7 3 12 -1. - <_> - 3 11 3 4 3. - <_> - - <_> - 20 15 1 4 -1. - <_> - 20 16 1 2 2. - <_> - - <_> - 1 15 1 4 -1. - <_> - 1 16 1 2 2. - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 8 7 3 1 -1. - <_> - 9 8 1 1 3. - 1 - <_> - - <_> - 16 7 5 12 -1. - <_> - 16 10 5 6 2. - <_> - - <_> - 5 12 3 2 -1. - <_> - 6 13 1 2 3. - 1 - <_> - - <_> - 15 6 4 2 -1. - <_> - 15 6 4 1 2. - 1 - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 6 1 2 3. - 1 - <_> - - <_> - 13 8 2 4 -1. - <_> - 14 8 1 2 2. - <_> - 13 10 1 2 2. - <_> - - <_> - 7 8 2 4 -1. - <_> - 7 8 1 2 2. - <_> - 8 10 1 2 2. - <_> - - <_> - 12 2 3 6 -1. - <_> - 13 3 1 6 3. - 1 - <_> - - <_> - 10 2 6 3 -1. - <_> - 9 3 6 1 3. - 1 - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 6 17 1 3 -1. - <_> - 6 18 1 1 3. - <_> - - <_> - 12 1 1 3 -1. - <_> - 12 2 1 1 3. - <_> - - <_> - 9 1 1 3 -1. - <_> - 9 2 1 1 3. - <_> - - <_> - 15 6 4 2 -1. - <_> - 15 6 4 1 2. - 1 - <_> - - <_> - 7 6 2 4 -1. - <_> - 7 6 1 4 2. - 1 - <_> - - <_> - 9 2 4 4 -1. - <_> - 9 3 4 2 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 3 2 1 2. - <_> - - <_> - 13 4 3 3 -1. - <_> - 14 5 1 1 9. - <_> - - <_> - 6 4 3 3 -1. - <_> - 7 5 1 1 9. - <_> - - <_> - 16 10 2 1 -1. - <_> - 16 10 1 1 2. - <_> - - <_> - 4 10 2 1 -1. - <_> - 5 10 1 1 2. - <_> - - <_> - 17 13 1 3 -1. - <_> - 17 14 1 1 3. - <_> - - <_> - 4 13 1 3 -1. - <_> - 4 14 1 1 3. - <_> - - <_> - 12 12 10 3 -1. - <_> - 12 13 10 1 3. - <_> - - <_> - 0 12 10 3 -1. - <_> - 0 13 10 1 3. - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 4 1 5 3. - <_> - - <_> - 7 4 3 5 -1. - <_> - 8 4 1 5 3. - <_> - - <_> - 12 2 3 1 -1. - <_> - 13 3 1 1 3. - 1 - <_> - - <_> - 8 4 6 2 -1. - <_> - 10 4 2 2 3. - <_> - - <_> - 9 1 4 8 -1. - <_> - 10 1 2 8 2. - <_> - - <_> - 8 0 6 5 -1. - <_> - 10 0 2 5 3. - <_> - - <_> - 12 4 2 1 -1. - <_> - 12 4 1 1 2. - <_> - - <_> - 7 0 3 11 -1. - <_> - 8 0 1 11 3. - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 10 3 2 2 -1. - <_> - 10 3 1 1 2. - <_> - 11 4 1 1 2. - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 6 3 6 -1. - <_> - 8 8 1 2 9. - <_> - - <_> - 12 8 2 2 -1. - <_> - 12 8 2 1 2. - 1 - <_> - - <_> - 10 8 2 2 -1. - <_> - 10 8 1 2 2. - 1 - <_> - - <_> - 10 4 4 12 -1. - <_> - 10 4 2 12 2. - <_> - - <_> - 8 2 6 12 -1. - <_> - 10 6 2 4 9. - <_> - - <_> - 8 7 8 12 -1. - <_> - 8 10 8 6 2. - <_> - - <_> - 0 10 14 2 -1. - <_> - 7 10 7 2 2. - <_> - - <_> - 10 1 3 3 -1. - <_> - 11 1 1 3 3. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - 1 - <_> - - <_> - 17 0 2 2 -1. - <_> - 18 0 1 1 2. - <_> - 17 1 1 1 2. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 8 1 1 9. - <_> - - <_> - 10 4 2 6 -1. - <_> - 10 6 2 2 3. - <_> - - <_> - 7 12 8 2 -1. - <_> - 7 12 4 1 2. - <_> - 11 13 4 1 2. - <_> - - <_> - 8 0 9 2 -1. - <_> - 8 1 9 1 2. - <_> - - <_> - 6 2 16 1 -1. - <_> - 6 2 8 1 2. - 1 - <_> - - <_> - 12 10 3 2 -1. - <_> - 13 11 1 2 3. - 1 - <_> - - <_> - 10 10 2 3 -1. - <_> - 9 11 2 1 3. - 1 - <_> - - <_> - 11 11 3 2 -1. - <_> - 12 12 1 2 3. - 1 - <_> - - <_> - 11 11 2 3 -1. - <_> - 10 12 2 1 3. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 7 13 4 2 -1. - <_> - 9 13 2 2 2. - <_> - - <_> - 8 0 12 3 -1. - <_> - 12 1 4 1 9. - <_> - - <_> - 8 13 2 1 -1. - <_> - 8 13 1 1 2. - 1 - <_> - - <_> - 17 0 2 2 -1. - <_> - 18 0 1 1 2. - <_> - 17 1 1 1 2. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 1 2. - <_> - 4 1 1 1 2. - <_> - - <_> - 8 8 6 2 -1. - <_> - 11 8 3 1 2. - <_> - 8 9 3 1 2. - <_> - - <_> - 9 5 4 4 -1. - <_> - 9 6 4 2 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 10 2 1 3 -1. - <_> - 9 3 1 1 3. - 1 - <_> - - <_> - 12 0 9 15 -1. - <_> - 15 0 3 15 3. - <_> - - <_> - 1 0 9 15 -1. - <_> - 4 0 3 15 3. - <_> - - <_> - 16 2 3 10 -1. - <_> - 17 2 1 10 3. - <_> - - <_> - 3 2 3 10 -1. - <_> - 4 2 1 10 3. - <_> - - <_> - 18 1 1 4 -1. - <_> - 18 1 1 2 2. - 1 - <_> - - <_> - 2 8 3 2 -1. - <_> - 3 8 1 2 3. - <_> - - <_> - 14 18 4 1 -1. - <_> - 14 18 2 1 2. - <_> - - <_> - 5 10 12 8 -1. - <_> - 5 10 6 4 2. - <_> - 11 14 6 4 2. - <_> - - <_> - 13 6 1 6 -1. - <_> - 13 6 1 3 2. - 1 - <_> - - <_> - 9 6 6 1 -1. - <_> - 9 6 3 1 2. - 1 - <_> - - <_> - 15 3 1 6 -1. - <_> - 15 6 1 3 2. - <_> - - <_> - 6 3 1 6 -1. - <_> - 6 6 1 3 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 7 7 2 2 -1. - <_> - 7 7 1 1 2. - <_> - 8 8 1 1 2. - <_> - - <_> - 17 0 4 4 -1. - <_> - 19 0 2 2 2. - <_> - 17 2 2 2 2. - <_> - - <_> - 1 0 4 4 -1. - <_> - 1 0 2 2 2. - <_> - 3 2 2 2 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 2 13 15 2 -1. - <_> - 2 14 15 1 2. - <_> - - <_> - 14 8 1 4 -1. - <_> - 14 10 1 2 2. - <_> - - <_> - 7 8 1 4 -1. - <_> - 7 10 1 2 2. - <_> - - <_> - 15 6 2 3 -1. - <_> - 14 7 2 1 3. - 1 - <_> - - <_> - 7 6 3 2 -1. - <_> - 8 7 1 2 3. - 1 - <_> - - <_> - 20 0 1 2 -1. - <_> - 20 1 1 1 2. - <_> - - <_> - 9 4 12 4 -1. - <_> - 8 5 12 2 2. - 1 - <_> - - <_> - 9 7 4 8 -1. - <_> - 11 7 2 4 2. - <_> - 9 11 2 4 2. - <_> - - <_> - 8 6 3 3 -1. - <_> - 9 7 1 1 9. - <_> - - <_> - 13 6 1 3 -1. - <_> - 13 7 1 1 3. - <_> - - <_> - 7 8 3 12 -1. - <_> - 8 8 1 12 3. - <_> - - <_> - 16 16 3 3 -1. - <_> - 17 16 1 3 3. - <_> - - <_> - 3 0 16 18 -1. - <_> - 3 0 8 9 2. - <_> - 11 9 8 9 2. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 8 6 1 3 -1. - <_> - 8 7 1 1 3. - <_> - - <_> - 19 7 1 3 -1. - <_> - 19 8 1 1 3. - <_> - - <_> - 2 7 1 3 -1. - <_> - 2 8 1 1 3. - <_> - - <_> - 10 1 2 1 -1. - <_> - 10 1 1 1 2. - <_> - - <_> - 7 1 2 4 -1. - <_> - 7 1 1 2 2. - <_> - 8 3 1 2 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 6 5 1 2 -1. - <_> - 6 6 1 1 2. - <_> - - <_> - 13 2 2 2 -1. - <_> - 14 2 1 1 2. - <_> - 13 3 1 1 2. - <_> - - <_> - 7 2 2 2 -1. - <_> - 7 2 1 1 2. - <_> - 8 3 1 1 2. - <_> - - <_> - 6 14 16 4 -1. - <_> - 6 15 16 2 2. - <_> - - <_> - 0 11 3 3 -1. - <_> - 1 12 1 1 9. - <_> - - <_> - 11 4 1 9 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 1 0 1 2 -1. - <_> - 1 1 1 1 2. - <_> - - <_> - 16 0 1 2 -1. - <_> - 16 1 1 1 2. - <_> - - <_> - 6 5 1 2 -1. - <_> - 6 6 1 1 2. - <_> - - <_> - 13 0 8 12 -1. - <_> - 13 0 4 12 2. - 1 - <_> - - <_> - 9 0 12 8 -1. - <_> - 9 0 12 4 2. - 1 - <_> - - <_> - 14 1 4 4 -1. - <_> - 14 1 4 2 2. - 1 - <_> - - <_> - 5 0 1 2 -1. - <_> - 5 1 1 1 2. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 5 0 1 3 -1. - <_> - 5 1 1 1 3. - <_> - - <_> - 13 2 3 1 -1. - <_> - 14 2 1 1 3. - <_> - - <_> - 6 2 3 1 -1. - <_> - 7 2 1 1 3. - <_> - - <_> - 14 0 3 1 -1. - <_> - 15 1 1 1 3. - 1 - <_> - - <_> - 8 0 1 3 -1. - <_> - 7 1 1 1 3. - 1 - <_> - - <_> - 14 11 8 6 -1. - <_> - 18 11 4 3 2. - <_> - 14 14 4 3 2. - <_> - - <_> - 7 0 3 2 -1. - <_> - 8 1 1 2 3. - 1 - <_> - - <_> - 8 7 6 5 -1. - <_> - 8 7 3 5 2. - <_> - - <_> - 9 9 3 6 -1. - <_> - 10 11 1 2 9. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 8 10 6 2 -1. - <_> - 8 11 6 1 2. - <_> - - <_> - 9 8 4 8 -1. - <_> - 9 8 2 8 2. - <_> - - <_> - 2 9 15 6 -1. - <_> - 7 11 5 2 9. - <_> - - <_> - 1 7 21 3 -1. - <_> - 8 8 7 1 9. - <_> - - <_> - 8 1 4 4 -1. - <_> - 8 1 2 4 2. - 1 - <_> - - <_> - 17 0 1 8 -1. - <_> - 17 0 1 4 2. - 1 - <_> - - <_> - 2 4 1 3 -1. - <_> - 2 5 1 1 3. - <_> - - <_> - 13 7 1 4 -1. - <_> - 12 8 1 2 2. - 1 - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 8 2 1 2. - 1 - <_> - - <_> - 11 7 3 3 -1. - <_> - 12 7 1 3 3. - <_> - - <_> - 8 7 3 3 -1. - <_> - 9 7 1 3 3. - <_> - - <_> - 13 6 2 6 -1. - <_> - 13 6 1 6 2. - 1 - <_> - - <_> - 10 7 2 1 -1. - <_> - 10 7 1 1 2. - 1 - <_> - - <_> - 9 10 5 6 -1. - <_> - 9 12 5 2 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 10 13 3 3 -1. - <_> - 11 14 1 1 9. - <_> - - <_> - 9 13 3 3 -1. - <_> - 10 14 1 1 9. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 3 6 10 -1. - <_> - 10 3 2 10 3. - <_> - - <_> - 3 14 16 3 -1. - <_> - 3 15 16 1 3. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 2 2. - 1 - <_> - - <_> - 14 10 4 9 -1. - <_> - 14 13 4 3 3. - <_> - - <_> - 10 12 2 4 -1. - <_> - 11 12 1 4 2. - <_> - - <_> - 15 2 4 10 -1. - <_> - 17 2 2 5 2. - <_> - 15 7 2 5 2. - <_> - - <_> - 5 10 6 4 -1. - <_> - 5 10 3 4 2. - 1 - <_> - - <_> - 14 3 3 16 -1. - <_> - 14 11 3 8 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 14 3 3 16 -1. - <_> - 14 11 3 8 2. - <_> - - <_> - 5 3 3 16 -1. - <_> - 5 11 3 8 2. - <_> - - <_> - 15 7 3 8 -1. - <_> - 15 11 3 4 2. - <_> - - <_> - 3 2 4 10 -1. - <_> - 3 2 2 5 2. - <_> - 5 7 2 5 2. - <_> - - <_> - 11 5 3 3 -1. - <_> - 11 6 3 1 3. - <_> - - <_> - 10 8 2 10 -1. - <_> - 10 8 2 5 2. - 1 - <_> - - <_> - 10 8 2 4 -1. - <_> - 10 9 2 2 2. - <_> - - <_> - 8 11 3 4 -1. - <_> - 8 12 3 2 2. - <_> - - <_> - 10 8 3 6 -1. - <_> - 11 10 1 2 9. - <_> - - <_> - 9 8 3 6 -1. - <_> - 10 10 1 2 9. - <_> - - <_> - 12 12 6 2 -1. - <_> - 15 12 3 1 2. - <_> - 12 13 3 1 2. - <_> - - <_> - 0 8 8 12 -1. - <_> - 0 8 4 6 2. - <_> - 4 14 4 6 2. - <_> - - <_> - 16 10 4 8 -1. - <_> - 18 10 2 4 2. - <_> - 16 14 2 4 2. - <_> - - <_> - 11 4 4 4 -1. - <_> - 10 5 4 2 2. - 1 - <_> - - <_> - 12 4 10 4 -1. - <_> - 11 5 10 2 2. - 1 - <_> - - <_> - 11 7 6 2 -1. - <_> - 11 7 3 2 2. - 1 - <_> - - <_> - 9 19 6 1 -1. - <_> - 9 19 3 1 2. - <_> - - <_> - 3 11 10 8 -1. - <_> - 3 11 5 4 2. - <_> - 8 15 5 4 2. - <_> - - <_> - 18 15 1 2 -1. - <_> - 18 16 1 1 2. - <_> - - <_> - 10 9 3 1 -1. - <_> - 11 10 1 1 3. - 1 - <_> - - <_> - 12 13 2 2 -1. - <_> - 13 13 1 1 2. - <_> - 12 14 1 1 2. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 5 1 14 2 -1. - <_> - 5 1 7 2 2. - <_> - - <_> - 6 8 4 1 -1. - <_> - 8 8 2 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 13 5 1 1 2. - <_> - 12 6 1 1 2. - <_> - - <_> - 4 1 4 1 -1. - <_> - 4 1 2 1 2. - 1 - <_> - - <_> - 12 6 2 6 -1. - <_> - 12 8 2 2 3. - <_> - - <_> - 8 9 6 4 -1. - <_> - 8 9 3 2 2. - <_> - 11 11 3 2 2. - <_> - - <_> - 5 7 12 3 -1. - <_> - 5 8 12 1 3. - <_> - - <_> - 5 0 3 3 -1. - <_> - 6 1 1 1 9. - <_> - - <_> - 19 8 2 2 -1. - <_> - 20 8 1 1 2. - <_> - 19 9 1 1 2. - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 2 1 3 3. - 1 - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 9 1 4 6 -1. - <_> - 9 3 4 2 3. - <_> - - <_> - 9 4 4 3 -1. - <_> - 9 5 4 1 3. - <_> - - <_> - 9 8 4 1 -1. - <_> - 10 8 2 1 2. - <_> - - <_> - 6 1 16 11 -1. - <_> - 6 1 8 11 2. - <_> - - <_> - 2 15 1 3 -1. - <_> - 2 16 1 1 3. - <_> - - <_> - 8 6 6 4 -1. - <_> - 8 8 6 2 2. - <_> - - <_> - 10 14 2 2 -1. - <_> - 10 15 2 1 2. - <_> - - <_> - 17 6 3 4 -1. - <_> - 18 7 1 4 3. - 1 - <_> - - <_> - 8 5 6 6 -1. - <_> - 10 7 2 2 9. - <_> - - <_> - 13 3 2 6 -1. - <_> - 13 3 1 6 2. - <_> - - <_> - 7 3 2 6 -1. - <_> - 8 3 1 6 2. - <_> - - <_> - 10 16 2 2 -1. - <_> - 10 17 2 1 2. - <_> - - <_> - 4 8 4 10 -1. - <_> - 4 13 4 5 2. - <_> - - <_> - 10 13 12 6 -1. - <_> - 13 13 6 6 2. - <_> - - <_> - 6 0 8 3 -1. - <_> - 5 1 8 1 3. - 1 - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 4 0 2 4 -1. - <_> - 4 0 1 2 2. - <_> - 5 2 1 2 2. - <_> - - <_> - 11 10 2 2 -1. - <_> - 12 10 1 1 2. - <_> - 11 11 1 1 2. - <_> - - <_> - 9 10 2 2 -1. - <_> - 9 10 1 1 2. - <_> - 10 11 1 1 2. - <_> - - <_> - 18 17 1 3 -1. - <_> - 18 18 1 1 3. - <_> - - <_> - 3 17 1 3 -1. - <_> - 3 18 1 1 3. - <_> - - <_> - 13 6 2 1 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 0 0 14 4 -1. - <_> - 0 0 7 2 2. - <_> - 7 2 7 2 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 6 3 8 3 -1. - <_> - 6 4 8 1 3. - <_> - - <_> - 13 1 3 3 -1. - <_> - 12 2 3 1 3. - 1 - <_> - - <_> - 9 1 3 3 -1. - <_> - 10 2 1 3 3. - 1 - <_> - - <_> - 11 0 9 6 -1. - <_> - 11 3 9 3 2. - <_> - - <_> - 7 6 2 1 -1. - <_> - 8 6 1 1 2. - <_> - - <_> - 5 6 12 3 -1. - <_> - 9 7 4 1 9. - <_> - - <_> - 11 3 7 2 -1. - <_> - 11 3 7 1 2. - 1 - <_> - - <_> - 12 6 1 3 -1. - <_> - 12 7 1 1 3. - <_> - - <_> - 3 18 3 2 -1. - <_> - 3 19 3 1 2. - <_> - - <_> - 17 12 1 8 -1. - <_> - 17 14 1 4 2. - <_> - - <_> - 4 18 8 2 -1. - <_> - 4 19 8 1 2. - <_> - - <_> - 13 16 9 2 -1. - <_> - 16 16 3 2 3. - <_> - - <_> - 0 16 9 2 -1. - <_> - 3 16 3 2 3. - <_> - - <_> - 6 3 10 2 -1. - <_> - 11 3 5 1 2. - <_> - 6 4 5 1 2. - <_> - - <_> - 0 16 6 4 -1. - <_> - 3 16 3 4 2. - <_> - - <_> - 20 13 1 6 -1. - <_> - 20 13 1 3 2. - 1 - <_> - - <_> - 2 13 6 1 -1. - <_> - 2 13 3 1 2. - 1 - <_> - - <_> - 21 12 1 2 -1. - <_> - 21 13 1 1 2. - <_> - - <_> - 1 0 18 10 -1. - <_> - 1 5 18 5 2. - <_> - - <_> - 16 0 2 4 -1. - <_> - 17 0 1 2 2. - <_> - 16 2 1 2 2. - <_> - - <_> - 9 7 1 2 -1. - <_> - 9 8 1 1 2. - <_> - - <_> - 12 4 1 4 -1. - <_> - 11 5 1 2 2. - 1 - <_> - - <_> - 11 3 11 3 -1. - <_> - 10 4 11 1 3. - 1 - <_> - - <_> - 11 7 1 6 -1. - <_> - 11 9 1 2 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 9 1 2 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 2 3 12 -1. - <_> - 8 6 1 4 9. - <_> - - <_> - 12 9 3 2 -1. - <_> - 13 9 1 2 3. - <_> - - <_> - 7 9 3 2 -1. - <_> - 8 9 1 2 3. - <_> - - <_> - 9 0 4 4 -1. - <_> - 9 1 4 2 2. - <_> - - <_> - 10 4 1 4 -1. - <_> - 10 6 1 2 2. - <_> - - <_> - 10 1 4 10 -1. - <_> - 10 6 4 5 2. - <_> - - <_> - 10 7 5 2 -1. - <_> - 10 7 5 1 2. - 1 - <_> - - <_> - 10 6 2 6 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 9 2 4 6 -1. - <_> - 9 4 4 2 3. - <_> - - <_> - 6 2 12 2 -1. - <_> - 12 2 6 1 2. - <_> - 6 3 6 1 2. - <_> - - <_> - 4 2 12 2 -1. - <_> - 4 2 6 1 2. - <_> - 10 3 6 1 2. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 9 0 3 6 -1. - <_> - 9 2 3 2 3. - <_> - - <_> - 10 0 2 1 -1. - <_> - 10 0 1 1 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 12 3 3 3 -1. - <_> - 13 4 1 3 3. - 1 - <_> - - <_> - 10 3 3 3 -1. - <_> - 9 4 3 1 3. - 1 - <_> - - <_> - 9 9 6 3 -1. - <_> - 9 9 3 3 2. - <_> - - <_> - 6 4 10 6 -1. - <_> - 6 4 5 3 2. - <_> - 11 7 5 3 2. - <_> - - <_> - 10 0 2 2 -1. - <_> - 11 0 1 1 2. - <_> - 10 1 1 1 2. - <_> - - <_> - 11 1 4 3 -1. - <_> - 11 1 2 3 2. - 1 - <_> - - <_> - 6 1 10 7 -1. - <_> - 6 1 5 7 2. - <_> - - <_> - 0 12 1 2 -1. - <_> - 0 13 1 1 2. - <_> - - <_> - 14 1 3 14 -1. - <_> - 15 2 1 14 3. - 1 - <_> - - <_> - 10 8 1 3 -1. - <_> - 9 9 1 1 3. - 1 - <_> - - <_> - 12 4 3 5 -1. - <_> - 13 5 1 5 3. - 1 - <_> - - <_> - 10 4 5 3 -1. - <_> - 9 5 5 1 3. - 1 - <_> - - <_> - 14 4 3 6 -1. - <_> - 15 4 1 6 3. - <_> - - <_> - 8 1 14 3 -1. - <_> - 7 2 14 1 3. - 1 - <_> - - <_> - 17 4 2 3 -1. - <_> - 17 4 1 3 2. - <_> - - <_> - 0 5 9 2 -1. - <_> - 3 5 3 2 3. - <_> - - <_> - 13 6 3 2 -1. - <_> - 14 6 1 2 3. - <_> - - <_> - 5 4 2 5 -1. - <_> - 6 4 1 5 2. - <_> - - <_> - 13 8 3 4 -1. - <_> - 14 9 1 4 3. - 1 - <_> - - <_> - 9 8 4 3 -1. - <_> - 8 9 4 1 3. - 1 - <_> - - <_> - 11 6 2 4 -1. - <_> - 11 6 1 4 2. - 1 - <_> - - <_> - 6 6 3 2 -1. - <_> - 7 6 1 2 3. - <_> - - <_> - 11 5 1 8 -1. - <_> - 9 7 1 4 2. - 1 - <_> - - <_> - 11 5 8 1 -1. - <_> - 13 7 4 1 2. - 1 - <_> - - <_> - 18 9 4 10 -1. - <_> - 20 9 2 5 2. - <_> - 18 14 2 5 2. - <_> - - <_> - 5 4 4 2 -1. - <_> - 5 4 2 1 2. - <_> - 7 5 2 1 2. - <_> - - <_> - 18 9 4 10 -1. - <_> - 20 9 2 5 2. - <_> - 18 14 2 5 2. - <_> - - <_> - 8 5 3 1 -1. - <_> - 9 5 1 1 3. - <_> - - <_> - 12 6 1 2 -1. - <_> - 12 7 1 1 2. - <_> - - <_> - 11 4 3 3 -1. - <_> - 10 5 3 1 3. - 1 - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 4 0 8 18 -1. - <_> - 6 0 4 18 2. - <_> - - <_> - 8 0 12 1 -1. - <_> - 11 0 6 1 2. - <_> - - <_> - 9 4 3 2 -1. - <_> - 10 4 1 2 3. - <_> - - <_> - 11 4 3 4 -1. - <_> - 11 5 3 2 2. - <_> - - <_> - 5 5 10 3 -1. - <_> - 5 6 10 1 3. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 1 5 3 2 -1. - <_> - 1 6 3 1 2. - <_> - - <_> - 8 6 6 3 -1. - <_> - 10 7 2 1 9. - <_> - - <_> - 7 2 6 13 -1. - <_> - 10 2 3 13 2. - <_> - - <_> - 2 3 20 9 -1. - <_> - 2 3 10 9 2. - <_> - - <_> - 9 6 2 2 -1. - <_> - 9 7 2 1 2. - <_> - - <_> - 11 4 2 6 -1. - <_> - 11 7 2 3 2. - <_> - - <_> - 9 0 2 2 -1. - <_> - 9 0 2 1 2. - 1 - <_> - - <_> - 10 1 6 1 -1. - <_> - 10 1 3 1 2. - <_> - - <_> - 1 7 18 9 -1. - <_> - 7 10 6 3 9. - <_> - - <_> - 16 8 6 6 -1. - <_> - 14 10 6 2 3. - 1 - <_> - - <_> - 8 1 8 8 -1. - <_> - 8 1 4 8 2. - 1 - <_> - - <_> - 11 7 8 12 -1. - <_> - 11 13 8 6 2. - <_> - - <_> - 2 0 16 12 -1. - <_> - 2 3 16 6 2. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 10 4 4 5 -1. - <_> - 11 5 2 5 2. - 1 - <_> - - <_> - 11 0 4 5 -1. - <_> - 11 0 2 5 2. - 1 - <_> - - <_> - 11 0 5 4 -1. - <_> - 11 0 5 2 2. - 1 - <_> - - <_> - 15 8 7 4 -1. - <_> - 14 9 7 2 2. - 1 - <_> - - <_> - 10 0 9 6 -1. - <_> - 8 2 9 2 3. - 1 - <_> - - <_> - 5 4 15 9 -1. - <_> - 10 7 5 3 9. - <_> - - <_> - 9 5 2 3 -1. - <_> - 8 6 2 1 3. - 1 - <_> - - <_> - 7 1 12 18 -1. - <_> - 11 7 4 6 9. - <_> - - <_> - 10 4 4 10 -1. - <_> - 11 5 2 10 2. - 1 - <_> - - <_> - 7 1 12 18 -1. - <_> - 11 7 4 6 9. - <_> - - <_> - 3 1 12 18 -1. - <_> - 7 7 4 6 9. - <_> - - <_> - 15 11 2 2 -1. - <_> - 15 11 1 2 2. - 1 - <_> - - <_> - 7 11 2 2 -1. - <_> - 7 11 2 1 2. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 13 9 1 2 2. - 1 - <_> - - <_> - 9 9 2 2 -1. - <_> - 9 9 2 1 2. - 1 - <_> - - <_> - 10 7 6 6 -1. - <_> - 12 9 2 2 9. - <_> - - <_> - 6 3 6 12 -1. - <_> - 8 7 2 4 9. - <_> - - <_> - 8 0 12 10 -1. - <_> - 14 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 9 5 2 4 -1. - <_> - 10 5 1 4 2. - <_> - - <_> - 11 0 8 2 -1. - <_> - 13 0 4 2 2. - <_> - - <_> - 0 11 6 4 -1. - <_> - 0 11 3 2 2. - <_> - 3 13 3 2 2. - <_> - - <_> - 8 5 6 3 -1. - <_> - 10 6 2 1 9. - <_> - - <_> - 4 1 6 6 -1. - <_> - 4 1 3 3 2. - <_> - 7 4 3 3 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 2 0 12 1 -1. - <_> - 5 0 6 1 2. - <_> - - <_> - 12 0 6 4 -1. - <_> - 12 0 3 4 2. - 1 - <_> - - <_> - 3 6 11 8 -1. - <_> - 3 8 11 4 2. - <_> - - <_> - 20 12 1 2 -1. - <_> - 20 13 1 1 2. - <_> - - <_> - 1 12 1 2 -1. - <_> - 1 13 1 1 2. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 8 10 2 2 -1. - <_> - 8 10 1 1 2. - <_> - 9 11 1 1 2. - <_> - - <_> - 12 11 3 3 -1. - <_> - 13 12 1 1 9. - <_> - - <_> - 7 11 3 3 -1. - <_> - 8 12 1 1 9. - <_> - - <_> - 20 12 2 2 -1. - <_> - 20 13 2 1 2. - <_> - - <_> - 0 12 2 2 -1. - <_> - 0 13 2 1 2. - <_> - - <_> - 12 5 4 8 -1. - <_> - 13 5 2 8 2. - <_> - - <_> - 6 5 4 8 -1. - <_> - 7 5 2 8 2. - <_> - - <_> - 8 11 6 7 -1. - <_> - 10 11 2 7 3. - <_> - - <_> - 10 7 1 6 -1. - <_> - 10 10 1 3 2. - <_> - - <_> - 11 0 4 20 -1. - <_> - 11 0 2 20 2. - <_> - - <_> - 4 0 5 16 -1. - <_> - 4 4 5 8 2. - <_> - - <_> - 19 0 2 14 -1. - <_> - 19 7 2 7 2. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 11 11 1 4 -1. - <_> - 11 12 1 2 2. - <_> - - <_> - 8 9 6 4 -1. - <_> - 8 9 3 2 2. - <_> - 11 11 3 2 2. - <_> - - <_> - 14 0 2 3 -1. - <_> - 13 1 2 1 3. - 1 - <_> - - <_> - 8 0 3 2 -1. - <_> - 9 1 1 2 3. - 1 - <_> - - <_> - 18 0 2 4 -1. - <_> - 18 0 2 2 2. - 1 - <_> - - <_> - 4 0 4 2 -1. - <_> - 4 0 2 2 2. - 1 - <_> - - <_> - 8 9 6 2 -1. - <_> - 8 10 6 1 2. - <_> - - <_> - 7 6 3 6 -1. - <_> - 7 8 3 2 3. - <_> - - <_> - 13 7 1 4 -1. - <_> - 13 8 1 2 2. - <_> - - <_> - 0 12 16 6 -1. - <_> - 8 12 8 6 2. - <_> - - <_> - 5 16 12 3 -1. - <_> - 5 16 6 3 2. - <_> - - <_> - 0 14 12 6 -1. - <_> - 6 14 6 6 2. - <_> - - <_> - 18 15 1 4 -1. - <_> - 18 16 1 2 2. - <_> - - <_> - 3 5 2 3 -1. - <_> - 4 5 1 3 2. - <_> - - <_> - 6 1 14 2 -1. - <_> - 6 2 14 1 2. - <_> - - <_> - 3 15 1 4 -1. - <_> - 3 16 1 2 2. - <_> - - <_> - 14 0 6 2 -1. - <_> - 14 0 6 1 2. - 1 - <_> - - <_> - 8 0 2 6 -1. - <_> - 8 0 1 6 2. - 1 - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 6 1 10 2 -1. - <_> - 6 1 5 1 2. - <_> - 11 2 5 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 4 13 2 2 -1. - <_> - 4 13 1 1 2. - <_> - 5 14 1 1 2. - <_> - - <_> - 16 13 2 2 -1. - <_> - 17 13 1 1 2. - <_> - 16 14 1 1 2. - <_> - - <_> - 4 13 2 2 -1. - <_> - 4 13 1 1 2. - <_> - 5 14 1 1 2. - <_> - - <_> - 14 10 3 1 -1. - <_> - 15 11 1 1 3. - 1 - <_> - - <_> - 8 10 1 3 -1. - <_> - 7 11 1 1 3. - 1 - <_> - - <_> - 13 8 7 9 -1. - <_> - 13 11 7 3 3. - <_> - - <_> - 2 8 7 9 -1. - <_> - 2 11 7 3 3. - <_> - - <_> - 17 13 2 1 -1. - <_> - 17 13 1 1 2. - 1 - <_> - - <_> - 5 13 1 2 -1. - <_> - 5 13 1 1 2. - 1 - <_> - - <_> - 13 11 3 1 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 5 14 1 2 -1. - <_> - 5 14 1 1 2. - 1 - <_> - - <_> - 16 9 4 9 -1. - <_> - 16 12 4 3 3. - <_> - - <_> - 2 9 4 9 -1. - <_> - 2 12 4 3 3. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 2 0 12 10 -1. - <_> - 2 0 6 5 2. - <_> - 8 5 6 5 2. - <_> - - <_> - 4 2 18 11 -1. - <_> - 4 2 9 11 2. - <_> - - <_> - 0 2 18 11 -1. - <_> - 9 2 9 11 2. - <_> - - <_> - 10 1 8 14 -1. - <_> - 14 1 4 7 2. - <_> - 10 8 4 7 2. - <_> - - <_> - 4 1 8 14 -1. - <_> - 4 1 4 7 2. - <_> - 8 8 4 7 2. - <_> - - <_> - 15 6 2 4 -1. - <_> - 15 8 2 2 2. - <_> - - <_> - 5 6 2 4 -1. - <_> - 5 8 2 2 2. - <_> - - <_> - 14 10 7 3 -1. - <_> - 13 11 7 1 3. - 1 - <_> - - <_> - 8 10 3 7 -1. - <_> - 9 11 1 7 3. - 1 - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 18 1 2 2. - <_> - - <_> - 3 18 2 2 -1. - <_> - 4 18 1 2 2. - <_> - - <_> - 15 0 3 9 -1. - <_> - 16 1 1 9 3. - 1 - <_> - - <_> - 7 0 9 3 -1. - <_> - 6 1 9 1 3. - 1 - <_> - - <_> - 9 2 6 8 -1. - <_> - 9 4 6 4 2. - <_> - - <_> - 8 4 4 2 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 10 4 3 1 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 7 3 2 -1. - <_> - 9 8 3 1 2. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 9 4 3 1 -1. - <_> - 10 4 1 1 3. - <_> - - <_> - 12 7 2 2 -1. - <_> - 13 7 1 1 2. - <_> - 12 8 1 1 2. - <_> - - <_> - 9 5 3 6 -1. - <_> - 9 8 3 3 2. - <_> - - <_> - 10 4 8 2 -1. - <_> - 10 4 4 2 2. - <_> - - <_> - 7 12 4 2 -1. - <_> - 9 12 2 2 2. - <_> - - <_> - 14 14 1 2 -1. - <_> - 14 14 1 1 2. - 1 - <_> - - <_> - 10 13 2 4 -1. - <_> - 10 15 2 2 2. - <_> - - <_> - 14 14 1 2 -1. - <_> - 14 14 1 1 2. - 1 - <_> - - <_> - 8 14 2 1 -1. - <_> - 8 14 1 1 2. - 1 - <_> - - <_> - 13 13 3 3 -1. - <_> - 14 14 1 1 9. - <_> - - <_> - 8 5 4 8 -1. - <_> - 8 7 4 4 2. - <_> - - <_> - 13 13 3 3 -1. - <_> - 14 14 1 1 9. - <_> - - <_> - 6 13 3 3 -1. - <_> - 7 14 1 1 9. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 5 10 9 3 -1. - <_> - 5 11 9 1 3. - <_> - - <_> - 10 4 4 4 -1. - <_> - 10 5 4 2 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 12 6 2 2 -1. - <_> - 13 6 1 1 2. - <_> - 12 7 1 1 2. - <_> - - <_> - 3 0 16 20 -1. - <_> - 7 0 8 20 2. - <_> - - <_> - 8 6 9 3 -1. - <_> - 8 7 9 1 3. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 5 3 2 2 -1. - <_> - 5 3 1 1 2. - <_> - 6 4 1 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 7 3 4 4 -1. - <_> - 7 3 2 2 2. - <_> - 9 5 2 2 2. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 8 4 3 4 -1. - <_> - 8 5 3 2 2. - <_> - - <_> - 17 3 2 2 -1. - <_> - 18 3 1 1 2. - <_> - 17 4 1 1 2. - <_> - - <_> - 3 3 2 2 -1. - <_> - 3 3 1 1 2. - <_> - 4 4 1 1 2. - <_> - - <_> - 14 2 2 2 -1. - <_> - 15 2 1 1 2. - <_> - 14 3 1 1 2. - <_> - - <_> - 6 2 2 2 -1. - <_> - 6 2 1 1 2. - <_> - 7 3 1 1 2. - <_> - - <_> - 14 0 7 3 -1. - <_> - 13 1 7 1 3. - 1 - <_> - - <_> - 8 0 3 7 -1. - <_> - 9 1 1 7 3. - 1 - <_> - - <_> - 13 5 1 3 -1. - <_> - 13 6 1 1 3. - <_> - - <_> - 2 7 6 9 -1. - <_> - 2 10 6 3 3. - <_> - - <_> - 12 1 2 12 -1. - <_> - 13 1 1 6 2. - <_> - 12 7 1 6 2. - <_> - - <_> - 8 1 2 12 -1. - <_> - 8 1 1 6 2. - <_> - 9 7 1 6 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 3 8 3 2 -1. - <_> - 3 9 3 1 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 5 9 2 1 -1. - <_> - 6 9 1 1 2. - <_> - - <_> - 18 2 3 1 -1. - <_> - 19 3 1 1 3. - 1 - <_> - - <_> - 6 11 3 1 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 14 9 3 1 -1. - <_> - 15 9 1 1 3. - <_> - - <_> - 5 9 3 1 -1. - <_> - 6 9 1 1 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 13 5 1 2 -1. - <_> - 13 6 1 1 2. - <_> - - <_> - 0 5 21 6 -1. - <_> - 7 7 7 2 9. - <_> - - <_> - 11 4 6 1 -1. - <_> - 11 4 3 1 2. - <_> - - <_> - 8 8 2 3 -1. - <_> - 8 9 2 1 3. - <_> - - <_> - 9 9 4 2 -1. - <_> - 11 9 2 1 2. - <_> - 9 10 2 1 2. - <_> - - <_> - 5 5 8 2 -1. - <_> - 5 5 4 1 2. - <_> - 9 6 4 1 2. - <_> - - <_> - 11 5 2 3 -1. - <_> - 11 6 2 1 3. - <_> - - <_> - 8 7 6 4 -1. - <_> - 8 7 3 2 2. - <_> - 11 9 3 2 2. - <_> - - <_> - 10 5 2 6 -1. - <_> - 11 5 1 3 2. - <_> - 10 8 1 3 2. - <_> - - <_> - 8 5 1 2 -1. - <_> - 8 6 1 1 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 4 2 1 3 -1. - <_> - 3 3 1 1 3. - 1 - <_> - - <_> - 8 11 7 3 -1. - <_> - 8 12 7 1 3. - <_> - - <_> - 2 1 4 2 -1. - <_> - 2 1 2 1 2. - <_> - 4 2 2 1 2. - <_> - - <_> - 14 5 3 1 -1. - <_> - 15 5 1 1 3. - <_> - - <_> - 3 0 2 2 -1. - <_> - 3 0 1 2 2. - 1 - <_> - - <_> - 18 3 3 2 -1. - <_> - 19 3 1 2 3. - <_> - - <_> - 1 3 3 2 -1. - <_> - 2 3 1 2 3. - <_> - - <_> - 14 10 8 8 -1. - <_> - 14 12 8 4 2. - <_> - - <_> - 0 18 22 2 -1. - <_> - 0 18 11 1 2. - <_> - 11 19 11 1 2. - <_> - - <_> - 15 10 2 1 -1. - <_> - 15 10 1 1 2. - <_> - - <_> - 5 5 3 1 -1. - <_> - 6 5 1 1 3. - <_> - - <_> - 1 5 21 12 -1. - <_> - 8 9 7 4 9. - <_> - - <_> - 5 10 2 1 -1. - <_> - 6 10 1 1 2. - <_> - - <_> - 13 3 2 3 -1. - <_> - 13 4 2 1 3. - <_> - - <_> - 7 3 2 3 -1. - <_> - 7 4 2 1 3. - <_> - - <_> - 13 8 3 1 -1. - <_> - 14 8 1 1 3. - <_> - - <_> - 7 1 5 4 -1. - <_> - 7 2 5 2 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 10 2 2 2 2. - <_> - - <_> - 9 2 4 3 -1. - <_> - 9 3 4 1 3. - <_> - - <_> - 8 2 6 3 -1. - <_> - 10 3 2 1 9. - <_> - - <_> - 0 0 16 4 -1. - <_> - 0 0 8 2 2. - <_> - 8 2 8 2 2. - <_> - - <_> - 11 3 6 2 -1. - <_> - 11 3 3 2 2. - <_> - - <_> - 7 0 1 2 -1. - <_> - 7 1 1 1 2. - <_> - - <_> - 13 0 3 6 -1. - <_> - 14 2 1 2 9. - <_> - - <_> - 6 0 2 4 -1. - <_> - 6 0 1 2 2. - <_> - 7 2 1 2 2. - <_> - - <_> - 13 9 1 3 -1. - <_> - 13 10 1 1 3. - <_> - - <_> - 2 2 2 2 -1. - <_> - 2 3 2 1 2. - <_> - - <_> - 9 2 4 8 -1. - <_> - 11 2 2 4 2. - <_> - 9 6 2 4 2. - <_> - - <_> - 8 9 1 3 -1. - <_> - 8 10 1 1 3. - <_> - - <_> - 13 9 7 4 -1. - <_> - 12 10 7 2 2. - 1 - <_> - - <_> - 9 9 4 7 -1. - <_> - 10 10 2 7 2. - 1 - <_> - - <_> - 11 10 3 6 -1. - <_> - 9 12 3 2 3. - 1 - <_> - - <_> - 8 8 2 12 -1. - <_> - 8 11 2 6 2. - <_> - - <_> - 11 14 1 4 -1. - <_> - 11 14 1 2 2. - 1 - <_> - - <_> - 7 18 2 1 -1. - <_> - 8 18 1 1 2. - <_> - - <_> - 9 3 2 1 -1. - <_> - 9 3 1 1 2. - 1 - <_> - - <_> - 13 0 2 4 -1. - <_> - 14 0 1 2 2. - <_> - 13 2 1 2 2. - <_> - - <_> - 9 6 1 2 -1. - <_> - 9 7 1 1 2. - <_> - - <_> - 12 7 1 2 -1. - <_> - 12 8 1 1 2. - <_> - - <_> - 5 2 9 12 -1. - <_> - 5 8 9 6 2. - <_> - - <_> - 10 4 2 8 -1. - <_> - 10 8 2 4 2. - <_> - - <_> - 7 0 4 3 -1. - <_> - 8 1 2 3 2. - 1 - <_> - - <_> - 15 3 4 4 -1. - <_> - 15 3 4 2 2. - 1 - <_> - - <_> - 11 0 5 2 -1. - <_> - 11 0 5 1 2. - 1 - <_> - - <_> - 9 7 4 2 -1. - <_> - 11 7 2 1 2. - <_> - 9 8 2 1 2. - <_> - - <_> - 4 4 8 1 -1. - <_> - 8 4 4 1 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 7 3 3 6 -1. - <_> - 8 3 1 6 3. - <_> - - <_> - 10 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 8 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 9 7 4 1 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 8 7 2 2 -1. - <_> - 8 7 1 1 2. - <_> - 9 8 1 1 2. - <_> - - <_> - 16 6 2 2 -1. - <_> - 17 6 1 1 2. - <_> - 16 7 1 1 2. - <_> - - <_> - 4 6 2 2 -1. - <_> - 4 6 1 1 2. - <_> - 5 7 1 1 2. - <_> - - <_> - 13 7 3 3 -1. - <_> - 14 8 1 1 9. - <_> - - <_> - 6 7 3 3 -1. - <_> - 7 8 1 1 9. - <_> - - <_> - 11 6 1 6 -1. - <_> - 11 8 1 2 3. - <_> - - <_> - 9 6 4 4 -1. - <_> - 9 6 2 2 2. - <_> - 11 8 2 2 2. - <_> - - <_> - 13 0 3 3 -1. - <_> - 12 1 3 1 3. - 1 - <_> - - <_> - 8 1 5 4 -1. - <_> - 7 2 5 2 2. - 1 - <_> - - <_> - 9 6 4 10 -1. - <_> - 9 6 2 10 2. - <_> - - <_> - 9 3 3 4 -1. - <_> - 10 3 1 4 3. - <_> - - <_> - 12 7 1 3 -1. - <_> - 12 8 1 1 3. - <_> - - <_> - 9 7 1 3 -1. - <_> - 9 8 1 1 3. - <_> - - <_> - 11 8 2 2 -1. - <_> - 11 9 2 1 2. - <_> - - <_> - 9 6 4 6 -1. - <_> - 9 6 2 3 2. - <_> - 11 9 2 3 2. - <_> - - <_> - 11 7 2 2 -1. - <_> - 12 7 1 1 2. - <_> - 11 8 1 1 2. - <_> - - <_> - 9 7 2 2 -1. - <_> - 9 7 1 1 2. - <_> - 10 8 1 1 2. - <_> - - <_> - 11 7 1 4 -1. - <_> - 11 9 1 2 2. - <_> - - <_> - 10 5 4 1 -1. - <_> - 11 6 2 1 2. - 1 - <_> - - <_> - 12 1 4 7 -1. - <_> - 13 2 2 7 2. - 1 - <_> - - <_> - 10 1 7 4 -1. - <_> - 9 2 7 2 2. - 1 - <_> - - <_> - 10 2 2 4 -1. - <_> - 10 4 2 2 2. - <_> - - <_> - 11 0 3 1 -1. - <_> - 12 1 1 1 3. - 1 - <_> - - <_> - 9 5 6 2 -1. - <_> - 12 5 3 1 2. - <_> - 9 6 3 1 2. - <_> - - <_> - 8 4 6 2 -1. - <_> - 8 4 3 1 2. - <_> - 11 5 3 1 2. - <_> - - <_> - 9 5 6 2 -1. - <_> - 12 5 3 1 2. - <_> - 9 6 3 1 2. - <_> - - <_> - 7 5 6 2 -1. - <_> - 7 5 3 1 2. - <_> - 10 6 3 1 2. - <_> - - <_> - 12 4 4 3 -1. - <_> - 11 5 4 1 3. - 1 - <_> - - <_> - 10 4 3 4 -1. - <_> - 11 5 1 4 3. - 1 - <_> - - <_> - 10 11 4 1 -1. - <_> - 11 11 2 1 2. - <_> - - <_> - 2 3 16 12 -1. - <_> - 2 6 16 6 2. - <_> - - <_> - 12 10 7 6 -1. - <_> - 12 13 7 3 2. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 20 4 2 2 -1. - <_> - 20 4 1 2 2. - <_> - - <_> - 0 3 8 2 -1. - <_> - 0 3 4 1 2. - <_> - 4 4 4 1 2. - <_> - - <_> - 11 11 1 6 -1. - <_> - 11 11 1 3 2. - 1 - <_> - - <_> - 0 13 6 7 -1. - <_> - 3 13 3 7 2. - <_> - - <_> - 16 14 6 6 -1. - <_> - 16 14 3 6 2. - <_> - - <_> - 10 9 1 4 -1. - <_> - 10 11 1 2 2. - <_> - - <_> - 10 10 2 2 -1. - <_> - 10 11 2 1 2. - <_> - - <_> - 0 4 2 2 -1. - <_> - 1 4 1 2 2. - <_> - - <_> - 18 5 4 3 -1. - <_> - 18 5 2 3 2. - <_> - - <_> - 0 14 4 5 -1. - <_> - 2 14 2 5 2. - <_> - - <_> - 17 9 2 8 -1. - <_> - 17 13 2 4 2. - <_> - - <_> - 4 16 3 4 -1. - <_> - 4 18 3 2 2. - <_> - - <_> - 6 18 10 2 -1. - <_> - 11 18 5 1 2. - <_> - 6 19 5 1 2. - <_> - - <_> - 0 5 4 3 -1. - <_> - 2 5 2 3 2. - <_> - - <_> - 17 14 4 5 -1. - <_> - 18 14 2 5 2. - <_> - - <_> - 1 14 4 5 -1. - <_> - 2 14 2 5 2. - <_> - - <_> - 17 18 2 2 -1. - <_> - 17 19 2 1 2. - <_> - - <_> - 10 9 1 3 -1. - <_> - 10 10 1 1 3. - <_> - - <_> - 14 17 2 3 -1. - <_> - 14 18 2 1 3. - <_> - - <_> - 0 14 6 6 -1. - <_> - 0 14 3 3 2. - <_> - 3 17 3 3 2. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 8 6 5 3 -1. - <_> - 8 7 5 1 3. - <_> - - <_> - 11 6 2 3 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 5 10 3 3 -1. - <_> - 4 11 3 1 3. - 1 - <_> - - <_> - 0 12 22 4 -1. - <_> - 11 12 11 2 2. - <_> - 0 14 11 2 2. - <_> - - <_> - 9 7 7 6 -1. - <_> - 7 9 7 2 3. - 1 - <_> - - <_> - 11 15 2 2 -1. - <_> - 11 16 2 1 2. - <_> - - <_> - 8 6 1 4 -1. - <_> - 8 7 1 2 2. - <_> - - <_> - 11 12 3 1 -1. - <_> - 12 13 1 1 3. - 1 - <_> - - <_> - 11 12 1 3 -1. - <_> - 10 13 1 1 3. - 1 - <_> - - <_> - 11 10 5 6 -1. - <_> - 11 12 5 2 3. - <_> - - <_> - 8 14 3 1 -1. - <_> - 9 14 1 1 3. - <_> - - <_> - 5 14 14 3 -1. - <_> - 5 15 14 1 3. - <_> - - <_> - 6 14 4 3 -1. - <_> - 6 15 4 1 3. - <_> - - <_> - 14 10 1 3 -1. - <_> - 14 11 1 1 3. - <_> - - <_> - 2 5 12 1 -1. - <_> - 5 5 6 1 2. - <_> - - <_> - 10 1 2 4 -1. - <_> - 11 1 1 2 2. - <_> - 10 3 1 2 2. - <_> - - <_> - 7 10 1 3 -1. - <_> - 7 11 1 1 3. - <_> - - <_> - 6 7 10 6 -1. - <_> - 11 7 5 3 2. - <_> - 6 10 5 3 2. - <_> - - <_> - 9 0 4 6 -1. - <_> - 10 1 2 6 2. - 1 - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 8 4 5 4 -1. - <_> - 8 5 5 2 2. - <_> - - <_> - 8 2 10 9 -1. - <_> - 8 5 10 3 3. - <_> - - <_> - 7 0 3 4 -1. - <_> - 8 0 1 4 3. - <_> - - <_> - 7 9 9 3 -1. - <_> - 7 10 9 1 3. - <_> - - <_> - 9 6 1 3 -1. - <_> - 9 7 1 1 3. - <_> - - <_> - 11 6 1 6 -1. - <_> - 11 8 1 2 3. - <_> - - <_> - 11 7 3 3 -1. - <_> - 12 8 1 3 3. - 1 - <_> - - <_> - 12 6 4 10 -1. - <_> - 13 7 2 10 2. - 1 - <_> - - <_> - 10 6 10 4 -1. - <_> - 9 7 10 2 2. - 1 - <_> - - <_> - 13 5 3 3 -1. - <_> - 13 6 3 1 3. - <_> - - <_> - 1 7 3 3 -1. - <_> - 2 8 1 1 9. - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 6 5 3 3 -1. - <_> - 6 6 3 1 3. - <_> - - <_> - 13 6 3 1 -1. - <_> - 14 7 1 1 3. - 1 - <_> - - <_> - 9 6 1 3 -1. - <_> - 8 7 1 1 3. - 1 - <_> - - <_> - 9 6 6 3 -1. - <_> - 11 7 2 1 9. - <_> - - <_> - 10 6 2 4 -1. - <_> - 11 6 1 4 2. - <_> - - <_> - 11 4 1 9 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 10 4 1 9 -1. - <_> - 10 7 1 3 3. - <_> - - <_> - 10 5 2 4 -1. - <_> - 11 5 1 2 2. - <_> - 10 7 1 2 2. - <_> - - <_> - 3 0 2 4 -1. - <_> - 3 0 1 2 2. - <_> - 4 2 1 2 2. - <_> - - <_> - 12 1 2 2 -1. - <_> - 13 1 1 1 2. - <_> - 12 2 1 1 2. - <_> - - <_> - 8 1 2 2 -1. - <_> - 8 1 1 1 2. - <_> - 9 2 1 1 2. - <_> - - <_> - 4 0 18 20 -1. - <_> - 4 0 9 20 2. - <_> - - <_> - 4 7 9 11 -1. - <_> - 7 7 3 11 3. - <_> - - <_> - 10 14 8 1 -1. - <_> - 12 14 4 1 2. - <_> - - <_> - 4 14 8 1 -1. - <_> - 6 14 4 1 2. - <_> - - <_> - 14 13 3 4 -1. - <_> - 15 13 1 4 3. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 14 13 3 4 -1. - <_> - 15 13 1 4 3. - <_> - - <_> - 9 0 4 4 -1. - <_> - 10 0 2 4 2. - <_> - - <_> - 11 2 4 4 -1. - <_> - 13 2 2 2 2. - <_> - 11 4 2 2 2. - <_> - - <_> - 8 8 3 2 -1. - <_> - 9 8 1 2 3. - <_> - - <_> - 11 7 2 1 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 11 7 1 2 -1. - <_> - 11 7 1 1 2. - 1 - <_> - - <_> - 12 5 3 9 -1. - <_> - 13 8 1 3 9. - <_> - - <_> - 8 9 4 3 -1. - <_> - 10 9 2 3 2. - <_> - - <_> - 12 10 1 2 -1. - <_> - 12 10 1 1 2. - 1 - <_> - - <_> - 9 11 4 4 -1. - <_> - 9 12 4 2 2. - <_> - - <_> - 4 0 18 20 -1. - <_> - 4 0 9 20 2. - <_> - - <_> - 0 0 18 20 -1. - <_> - 9 0 9 20 2. - <_> - - <_> - 7 7 8 2 -1. - <_> - 7 7 4 2 2. - <_> - - <_> - 9 6 4 3 -1. - <_> - 11 6 2 3 2. - <_> - - <_> - 10 11 11 9 -1. - <_> - 10 14 11 3 3. - <_> - - <_> - 7 5 6 8 -1. - <_> - 9 5 2 8 3. - <_> - - <_> - 9 7 6 1 -1. - <_> - 11 7 2 1 3. - <_> - - <_> - 6 3 8 2 -1. - <_> - 6 3 4 2 2. - 1 - <_> - - <_> - 11 0 3 8 -1. - <_> - 11 0 3 4 2. - 1 - <_> - - <_> - 8 0 3 3 -1. - <_> - 9 1 1 3 3. - 1 - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 10 2 12 3 -1. - <_> - 9 3 12 1 3. - 1 - <_> - - <_> - 10 6 2 2 -1. - <_> - 10 7 2 1 2. - <_> - - <_> - 7 5 3 6 -1. - <_> - 8 7 1 2 9. - <_> - - <_> - 12 3 3 9 -1. - <_> - 13 6 1 3 9. - <_> - - <_> - 8 5 3 3 -1. - <_> - 8 6 3 1 3. - <_> - - <_> - 11 4 3 2 -1. - <_> - 12 5 1 2 3. - 1 - <_> - - <_> - 11 4 2 3 -1. - <_> - 10 5 2 1 3. - 1 - <_> - - <_> - 11 0 3 7 -1. - <_> - 12 0 1 7 3. - <_> - - <_> - 10 2 3 3 -1. - <_> - 11 3 1 3 3. - 1 - <_> - - <_> - 18 1 1 2 -1. - <_> - 18 2 1 1 2. - <_> - - <_> - 3 1 1 2 -1. - <_> - 3 2 1 1 2. - <_> - - <_> - 13 2 1 6 -1. - <_> - 13 5 1 3 2. - <_> - - <_> - 8 12 5 8 -1. - <_> - 8 16 5 4 2. - <_> - - <_> - 11 15 2 2 -1. - <_> - 11 16 2 1 2. - <_> - - <_> - 6 2 10 18 -1. - <_> - 6 11 10 9 2. - <_> - - <_> - 16 8 1 12 -1. - <_> - 16 12 1 4 3. - <_> - - <_> - 9 2 13 4 -1. - <_> - 8 3 13 2 2. - 1 - <_> - - <_> - 13 2 1 8 -1. - <_> - 13 4 1 4 2. - <_> - - <_> - 8 2 1 8 -1. - <_> - 8 4 1 4 2. - <_> - - <_> - 12 3 2 4 -1. - <_> - 12 3 2 2 2. - 1 - <_> - - <_> - 11 2 4 4 -1. - <_> - 11 2 2 4 2. - 1 - <_> - - <_> - 19 15 3 2 -1. - <_> - 20 16 1 2 3. - 1 - <_> - - <_> - 3 15 2 3 -1. - <_> - 2 16 2 1 3. - 1 - <_> - - <_> - 18 19 3 1 -1. - <_> - 19 19 1 1 3. - <_> - - <_> - 1 19 3 1 -1. - <_> - 2 19 1 1 3. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 5 1 3 -1. - <_> - 8 6 1 1 3. - <_> - - <_> - 9 7 6 2 -1. - <_> - 9 8 6 1 2. - <_> - - <_> - 11 6 6 1 -1. - <_> - 13 8 2 1 3. - 1 - <_> - - <_> - 14 3 2 12 -1. - <_> - 14 3 2 6 2. - 1 - <_> - - <_> - 9 6 3 2 -1. - <_> - 9 7 3 1 2. - <_> - - <_> - 14 3 2 12 -1. - <_> - 14 3 2 6 2. - 1 - <_> - - <_> - 8 3 12 2 -1. - <_> - 8 3 6 2 2. - 1 - <_> - - <_> - 11 11 11 9 -1. - <_> - 11 14 11 3 3. - <_> - - <_> - 0 11 11 9 -1. - <_> - 0 14 11 3 3. - <_> - - <_> - 15 7 2 9 -1. - <_> - 15 10 2 3 3. - <_> - - <_> - 5 7 2 9 -1. - <_> - 5 10 2 3 3. - <_> - - <_> - 14 10 4 3 -1. - <_> - 14 11 4 1 3. - <_> - - <_> - 4 10 4 3 -1. - <_> - 4 11 4 1 3. - <_> - - <_> - 17 8 3 3 -1. - <_> - 18 9 1 1 9. - <_> - - <_> - 2 8 3 3 -1. - <_> - 3 9 1 1 9. - <_> - - <_> - 15 18 1 2 -1. - <_> - 15 19 1 1 2. - <_> - - <_> - 0 6 2 2 -1. - <_> - 0 6 1 1 2. - <_> - 1 7 1 1 2. - <_> - - <_> - 13 16 2 2 -1. - <_> - 14 16 1 1 2. - <_> - 13 17 1 1 2. - <_> - - <_> - 6 18 1 2 -1. - <_> - 6 19 1 1 2. - <_> - - <_> - 16 18 6 1 -1. - <_> - 16 18 3 1 2. - <_> - - <_> - 0 18 6 1 -1. - <_> - 3 18 3 1 2. - <_> - - <_> - 17 17 3 3 -1. - <_> - 18 18 1 1 9. - <_> - - <_> - 2 17 3 3 -1. - <_> - 3 18 1 1 9. - <_> - - <_> - 13 16 2 2 -1. - <_> - 14 16 1 1 2. - <_> - 13 17 1 1 2. - <_> - - <_> - 7 16 2 2 -1. - <_> - 7 16 1 1 2. - <_> - 8 17 1 1 2. - <_> - - <_> - 9 8 4 2 -1. - <_> - 11 8 2 1 2. - <_> - 9 9 2 1 2. - <_> - - <_> - 10 0 4 6 -1. - <_> - 10 0 4 3 2. - 1 - <_> - - <_> - 10 18 2 2 -1. - <_> - 11 18 1 1 2. - <_> - 10 19 1 1 2. - <_> - - <_> - 10 6 2 4 -1. - <_> - 10 7 2 2 2. - <_> - - <_> - 9 7 5 6 -1. - <_> - 9 9 5 2 3. - <_> - - <_> - 10 10 2 3 -1. - <_> - 10 11 2 1 3. - <_> - - <_> - 8 9 6 6 -1. - <_> - 10 11 2 2 9. - <_> - - <_> - 8 10 6 2 -1. - <_> - 10 10 2 2 3. - <_> - - <_> - 11 5 2 5 -1. - <_> - 11 5 1 5 2. - <_> - - <_> - 8 10 1 6 -1. - <_> - 8 12 1 2 3. - <_> - - <_> - 10 11 2 3 -1. - <_> - 10 12 2 1 3. - <_> - - <_> - 8 13 2 2 -1. - <_> - 8 13 1 1 2. - <_> - 9 14 1 1 2. - <_> - - <_> - 15 1 2 10 -1. - <_> - 15 1 1 10 2. - 1 - <_> - - <_> - 4 9 10 2 -1. - <_> - 4 9 5 1 2. - <_> - 9 10 5 1 2. - <_> - - <_> - 11 18 1 2 -1. - <_> - 11 19 1 1 2. - <_> - - <_> - 10 18 1 2 -1. - <_> - 10 19 1 1 2. - <_> - - <_> - 16 10 4 8 -1. - <_> - 18 10 2 4 2. - <_> - 16 14 2 4 2. - <_> - - <_> - 2 10 4 8 -1. - <_> - 2 10 2 4 2. - <_> - 4 14 2 4 2. - <_> - - <_> - 17 8 2 6 -1. - <_> - 17 8 1 6 2. - <_> - - <_> - 3 8 2 6 -1. - <_> - 4 8 1 6 2. - <_> - - <_> - 18 6 3 14 -1. - <_> - 19 6 1 14 3. - <_> - - <_> - 1 6 3 14 -1. - <_> - 2 6 1 14 3. - <_> - - <_> - 16 17 2 2 -1. - <_> - 17 17 1 1 2. - <_> - 16 18 1 1 2. - <_> - - <_> - 4 17 2 2 -1. - <_> - 4 17 1 1 2. - <_> - 5 18 1 1 2. - <_> - - <_> - 17 17 1 2 -1. - <_> - 17 18 1 1 2. - <_> - - <_> - 4 17 1 2 -1. - <_> - 4 18 1 1 2. - <_> - - <_> - 12 2 1 4 -1. - <_> - 11 3 1 2 2. - 1 - <_> - - <_> - 10 2 4 1 -1. - <_> - 11 3 2 1 2. - 1 - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 1 0 5 6 -1. - <_> - 1 3 5 3 2. - <_> - - <_> - 16 3 1 2 -1. - <_> - 16 4 1 1 2. - <_> - - <_> - 6 0 16 3 -1. - <_> - 5 1 16 1 3. - 1 - <_> - - <_> - 12 0 2 20 -1. - <_> - 12 0 1 20 2. - <_> - - <_> - 7 7 6 2 -1. - <_> - 7 8 6 1 2. - <_> - - <_> - 18 1 1 9 -1. - <_> - 18 4 1 3 3. - <_> - - <_> - 8 0 2 20 -1. - <_> - 9 0 1 20 2. - <_> - - <_> - 18 1 2 3 -1. - <_> - 18 1 1 3 2. - <_> - - <_> - 2 1 2 3 -1. - <_> - 3 1 1 3 2. - <_> - - <_> - 18 1 3 2 -1. - <_> - 19 1 1 2 3. - <_> - - <_> - 5 3 1 2 -1. - <_> - 5 4 1 1 2. - <_> - - <_> - 1 3 20 1 -1. - <_> - 6 3 10 1 2. - <_> - - <_> - 11 0 5 3 -1. - <_> - 10 1 5 1 3. - 1 - <_> - - <_> - 13 6 3 4 -1. - <_> - 12 7 3 2 2. - 1 - <_> - - <_> - 9 4 8 1 -1. - <_> - 11 6 4 1 2. - 1 - <_> - - <_> - 13 6 1 4 -1. - <_> - 12 7 1 2 2. - 1 - <_> - - <_> - 8 7 2 6 -1. - <_> - 8 9 2 2 3. - <_> - - <_> - 14 11 4 6 -1. - <_> - 14 13 4 2 3. - <_> - - <_> - 6 8 9 3 -1. - <_> - 6 9 9 1 3. - <_> - - <_> - 8 9 9 2 -1. - <_> - 8 10 9 1 2. - <_> - - <_> - 2 13 6 2 -1. - <_> - 2 13 3 1 2. - <_> - 5 14 3 1 2. - <_> - - <_> - 12 0 3 6 -1. - <_> - 13 1 1 6 3. - 1 - <_> - - <_> - 0 10 8 8 -1. - <_> - 0 12 8 4 2. - <_> - - <_> - 11 12 10 4 -1. - <_> - 11 12 5 4 2. - <_> - - <_> - 10 0 6 3 -1. - <_> - 9 1 6 1 3. - 1 - <_> - - <_> - 12 1 3 8 -1. - <_> - 13 2 1 8 3. - 1 - <_> - - <_> - 10 1 8 3 -1. - <_> - 9 2 8 1 3. - 1 - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 8 7 2 4 -1. - <_> - 8 7 1 2 2. - <_> - 9 9 1 2 2. - <_> - - <_> - 4 0 14 12 -1. - <_> - 4 3 14 6 2. - <_> - - <_> - 1 0 16 12 -1. - <_> - 1 3 16 6 2. - <_> - - <_> - 12 0 8 6 -1. - <_> - 12 3 8 3 2. - <_> - - <_> - 8 14 1 3 -1. - <_> - 8 15 1 1 3. - <_> - - <_> - 13 9 2 2 -1. - <_> - 14 9 1 1 2. - <_> - 13 10 1 1 2. - <_> - - <_> - 8 6 2 2 -1. - <_> - 8 6 1 1 2. - <_> - 9 7 1 1 2. - <_> - - <_> - 12 4 4 4 -1. - <_> - 11 5 4 2 2. - 1 - <_> - - <_> - 8 4 6 4 -1. - <_> - 8 4 3 2 2. - <_> - 11 6 3 2 2. - <_> - - <_> - 13 6 2 4 -1. - <_> - 13 8 2 2 2. - <_> - - <_> - 7 9 2 2 -1. - <_> - 7 9 1 1 2. - <_> - 8 10 1 1 2. - <_> - - <_> - 12 5 2 2 -1. - <_> - 12 5 1 2 2. - 1 - <_> - - <_> - 0 4 20 7 -1. - <_> - 10 4 10 7 2. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 10 15 3 2 -1. - <_> - 10 15 3 1 2. - 1 - <_> - - <_> - 5 16 17 4 -1. - <_> - 5 18 17 2 2. - <_> - - <_> - 4 1 9 1 -1. - <_> - 7 4 3 1 3. - 1 - <_> - - <_> - 12 5 1 6 -1. - <_> - 10 7 1 2 3. - 1 - <_> - - <_> - 10 5 6 1 -1. - <_> - 12 7 2 1 3. - 1 - <_> - - <_> - 9 0 12 2 -1. - <_> - 9 0 6 2 2. - <_> - - <_> - 7 17 3 3 -1. - <_> - 8 18 1 1 9. - <_> - - <_> - 1 0 20 2 -1. - <_> - 1 0 10 2 2. - <_> - - <_> - 0 0 15 3 -1. - <_> - 5 1 5 1 9. - <_> - - <_> - 8 1 12 1 -1. - <_> - 11 1 6 1 2. - <_> - - <_> - 2 1 12 1 -1. - <_> - 5 1 6 1 2. - <_> - - <_> - 13 5 3 1 -1. - <_> - 14 5 1 1 3. - <_> - - <_> - 9 15 3 2 -1. - <_> - 10 16 1 2 3. - 1 - <_> - - <_> - 12 6 3 13 -1. - <_> - 13 6 1 13 3. - <_> - - <_> - 9 5 4 3 -1. - <_> - 10 6 2 3 2. - 1 - <_> - - <_> - 8 2 9 9 -1. - <_> - 11 2 3 9 3. - <_> - - <_> - 11 2 5 4 -1. - <_> - 11 2 5 2 2. - 1 - <_> - - <_> - 15 6 6 6 -1. - <_> - 13 8 6 2 3. - 1 - <_> - - <_> - 11 2 6 3 -1. - <_> - 13 4 2 3 3. - 1 - <_> - - <_> - 9 6 6 3 -1. - <_> - 11 7 2 1 9. - <_> - - <_> - 10 5 2 4 -1. - <_> - 10 5 1 2 2. - <_> - 11 7 1 2 2. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 6 4 9 3 -1. - <_> - 9 5 3 1 9. - <_> - - <_> - 11 3 1 3 -1. - <_> - 11 4 1 1 3. - <_> - - <_> - 9 2 3 6 -1. - <_> - 9 4 3 2 3. - <_> - - <_> - 11 6 2 2 -1. - <_> - 12 6 1 1 2. - <_> - 11 7 1 1 2. - <_> - - <_> - 5 0 2 2 -1. - <_> - 5 0 1 1 2. - <_> - 6 1 1 1 2. - <_> - - <_> - 15 0 2 3 -1. - <_> - 14 1 2 1 3. - 1 - <_> - - <_> - 1 6 16 2 -1. - <_> - 9 6 8 2 2. - <_> - - <_> - 9 0 8 2 -1. - <_> - 13 0 4 1 2. - <_> - 9 1 4 1 2. - <_> - - <_> - 8 14 1 3 -1. - <_> - 8 15 1 1 3. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 3 15 3 5 -1. - <_> - 4 15 1 5 3. - <_> - - <_> - 15 0 2 2 -1. - <_> - 16 0 1 1 2. - <_> - 15 1 1 1 2. - <_> - - <_> - 3 7 12 1 -1. - <_> - 9 7 6 1 2. - <_> - - <_> - 13 14 3 1 -1. - <_> - 14 14 1 1 3. - <_> - - <_> - 9 5 3 2 -1. - <_> - 10 5 1 2 3. - <_> - - <_> - 10 7 3 3 -1. - <_> - 11 7 1 3 3. - <_> - - <_> - 9 5 2 5 -1. - <_> - 10 5 1 5 2. - <_> - - <_> - 10 2 6 15 -1. - <_> - 12 7 2 5 9. - <_> - - <_> - 8 2 3 15 -1. - <_> - 9 7 1 5 9. - <_> - - <_> - 11 7 10 10 -1. - <_> - 16 7 5 5 2. - <_> - 11 12 5 5 2. - <_> - - <_> - 3 14 3 6 -1. - <_> - 4 14 1 6 3. - <_> - - <_> - 9 4 4 4 -1. - <_> - 11 4 2 2 2. - <_> - 9 6 2 2 2. - <_> - - <_> - 0 0 21 2 -1. - <_> - 7 0 7 2 3. - <_> - - <_> - 11 1 8 1 -1. - <_> - 11 1 4 1 2. - <_> - - <_> - 3 1 8 1 -1. - <_> - 7 1 4 1 2. - <_> - - <_> - 15 3 3 3 -1. - <_> - 15 4 3 1 3. - <_> - - <_> - 9 12 3 3 -1. - <_> - 9 13 3 1 3. - <_> - - <_> - 12 12 2 2 -1. - <_> - 12 13 2 1 2. - <_> - - <_> - 8 12 2 2 -1. - <_> - 8 13 2 1 2. - <_> - - <_> - 10 7 8 12 -1. - <_> - 10 11 8 4 3. - <_> - - <_> - 8 13 1 2 -1. - <_> - 8 14 1 1 2. - <_> - - <_> - 10 13 4 2 -1. - <_> - 12 13 2 1 2. - <_> - 10 14 2 1 2. - <_> - - <_> - 6 14 3 1 -1. - <_> - 7 14 1 1 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 4 3 3 3 -1. - <_> - 4 4 3 1 3. - <_> - - <_> - 15 0 2 3 -1. - <_> - 14 1 2 1 3. - 1 - <_> - - <_> - 3 12 2 2 -1. - <_> - 3 12 1 1 2. - <_> - 4 13 1 1 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - <_> - - <_> - 5 1 3 2 -1. - <_> - 6 1 1 2 3. - <_> - - <_> - 13 0 3 18 -1. - <_> - 14 0 1 18 3. - <_> - - <_> - 6 0 3 18 -1. - <_> - 7 0 1 18 3. - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 0 12 12 8 -1. - <_> - 4 12 4 8 3. - <_> - - <_> - 10 8 2 3 -1. - <_> - 10 8 1 3 2. - <_> - - <_> - 3 0 10 3 -1. - <_> - 3 0 5 3 2. - 1 - <_> - - <_> - 15 15 2 4 -1. - <_> - 16 15 1 2 2. - <_> - 15 17 1 2 2. - <_> - - <_> - 5 15 2 4 -1. - <_> - 5 15 1 2 2. - <_> - 6 17 1 2 2. - <_> - - <_> - 17 10 1 3 -1. - <_> - 17 11 1 1 3. - diff --git a/data/softcascade/inria_caltech-17.01.2013.xml b/data/softcascade/inria_caltech-17.01.2013.xml deleted file mode 100644 index af4d89eda6..0000000000 --- a/data/softcascade/inria_caltech-17.01.2013.xml +++ /dev/null @@ -1,61401 +0,0 @@ - - - - - - - - - BOOST - ICF - 2 - 64 - 128 - 4 - - <_> - -1 - 1024 - - <_> - -9.4971716403961182e-01 - - 1 2 0 3.7500000000000000e+01 0 -1 1 6.6500000000000000e+01 - -2 -3 2 1.7235000000000000e+03 - - -9.4971716403961182e-01 2.6997840404510498e-01 - 7.8099721670150757e-01 -7.7198696136474609e-01 - <_> - -1.7211276292800903e+00 - - 1 2 3 8.4650000000000000e+02 0 -1 4 1.2500000000000000e+01 - -2 -3 5 5.8500000000000000e+01 - - -5.5446445941925049e-01 7.2089314460754395e-01 - -9.4914066791534424e-01 -4.8974543809890747e-02 - <_> - -2.4981524944305420e+00 - - 1 2 6 2.5000000000000000e+00 0 -1 7 5.9500000000000000e+01 - -2 -3 8 5.6500000000000000e+01 - - -7.7702480554580688e-01 6.2583726644515991e-01 - 5.4469954967498779e-01 -8.8470917940139771e-01 - <_> - -2.1237995624542236e+00 - - 1 2 9 7.8500000000000000e+01 0 -1 10 1.2005000000000000e+03 - -2 -3 11 3.5000000000000000e+00 - - -2.2334083914756775e-03 -9.4934105873107910e-01 - 6.9860899448394775e-01 -5.2581334114074707e-01 - <_> - -1.4558345079421997e+00 - - 1 2 12 5.6550000000000000e+02 0 -1 13 1.5000000000000000e+00 - -2 -3 14 7.2500000000000000e+01 - - -3.4912836551666260e-01 -9.5133358240127563e-01 - -1.3602481782436371e-01 6.6796511411666870e-01 - <_> - -1.5295742750167847e+00 - - 1 2 15 2.7500000000000000e+01 0 -1 16 8.5000000000000000e+00 - -2 -3 17 2.2500000000000000e+01 - - -7.7886241674423218e-01 4.4655936956405640e-01 - -7.3739707469940186e-02 -7.9169273376464844e-01 - <_> - -2.2253897190093994e+00 - - 1 2 18 5.0000000000000000e-01 0 -1 19 1.5000000000000000e+00 - -2 -3 20 2.6925000000000000e+03 - - -8.5955154895782471e-01 5.1408839225769043e-01 - 3.5344448685646057e-01 -6.9581556320190430e-01 - <_> - -1.6767826080322266e+00 - - 1 2 21 4.8050000000000000e+02 0 -1 22 1.2500000000000000e+01 - -2 -3 23 5.5000000000000000e+00 - - -6.2450993061065674e-01 2.5221033021807671e-02 - -6.7134410142898560e-01 6.1318635940551758e-01 - <_> - -1.3603744506835938e+00 - - 1 2 24 1.1435000000000000e+03 0 -1 25 1.7835000000000000e+03 - -2 -3 26 4.2500000000000000e+01 - - -6.0388273000717163e-01 3.1640821695327759e-01 - -8.4853601455688477e-01 6.8783169984817505e-01 - <_> - -1.0207209587097168e+00 - - 1 2 27 3.5000000000000000e+00 0 -1 28 4.9500000000000000e+01 - -2 -3 29 9.0500000000000000e+01 - - 3.3346191048622131e-01 -8.7325519323348999e-01 - -8.2403194904327393e-01 3.3965352177619934e-01 - <_> - -7.3391747474670410e-01 - - 1 2 30 1.5000000000000000e+00 0 -1 31 3.2950000000000000e+02 - -2 -3 32 1.1500000000000000e+01 - - 6.6277317702770233e-02 -6.9447505474090576e-01 - -5.3387427330017090e-01 4.5649796724319458e-01 - <_> - -8.5609853267669678e-01 - - 1 2 33 5.0000000000000000e-01 0 -1 34 9.9450000000000000e+02 - -2 -3 35 6.9500000000000000e+01 - - 4.8371157050132751e-01 -5.3800541162490845e-01 - -7.2787827253341675e-01 3.4235689043998718e-01 - <_> - -5.6636196374893188e-01 - - 1 2 36 6.5000000000000000e+00 0 -1 37 72. -2 -3 38 - 3.0950000000000000e+02 - - -8.5185158252716064e-01 7.3330056667327881e-01 - 2.8973656892776489e-01 -6.7352497577667236e-01 - <_> - -3.7486231327056885e-01 - - 1 2 39 2.5000000000000000e+00 0 -1 40 7.1500000000000000e+01 - -2 -3 41 6.5000000000000000e+00 - - -9.3279057741165161e-01 7.1982288360595703e-01 - -7.4711191654205322e-01 1.9149963557720184e-01 - <_> - -4.8397040367126465e-01 - - 1 2 42 1.1825000000000000e+03 0 -1 43 7.1500000000000000e+01 - -2 -3 44 1000. - - -1.9838142395019531e-01 4.8220044374465942e-01 - -8.3472287654876709e-01 9.5568519830703735e-01 - <_> - -4.4923403859138489e-01 - - 1 2 45 1.4050000000000000e+02 0 -1 46 3.8645000000000000e+03 - -2 -3 47 5.7750000000000000e+02 - - -5.5212533473968506e-01 4.4974172115325928e-01 - -7.6033878326416016e-01 3.4736368805170059e-02 - <_> - -4.2061111330986023e-01 - - 1 2 48 3.2500000000000000e+01 0 -1 49 5.0000000000000000e-01 - -2 -3 50 715. - - 3.7134438753128052e-01 -3.3291110396385193e-01 - -8.0598479509353638e-01 9.6374911069869995e-01 - <_> - -1.9169148802757263e-01 - - 1 2 51 1.0500000000000000e+01 0 -1 52 1.0500000000000000e+01 - -2 -3 53 4.9500000000000000e+01 - - -8.6079102754592896e-01 6.6127598285675049e-01 - 2.2891961038112640e-01 -9.0992504358291626e-01 - <_> - -5.1674181222915649e-01 - - 1 2 54 2.6150000000000000e+02 0 -1 55 3.2695000000000000e+03 - -2 -3 56 1409. - - -9.3132334947586060e-01 9.0150839090347290e-01 - -5.5453002452850342e-01 1.6071465611457825e-01 - <_> - 7.2020828723907471e-02 - - 1 2 57 7.9500000000000000e+01 0 -1 58 2.8025000000000000e+03 - -2 -3 59 9.5000000000000000e+00 - - -7.9213029146194458e-01 5.8876264095306396e-01 - -6.8830287456512451e-01 1.2910151481628418e-01 - <_> - 2.1566778421401978e-01 - - 1 2 60 3.5000000000000000e+00 0 -1 61 1.0500000000000000e+01 - -2 -3 62 1.9500000000000000e+01 - - 4.0831661224365234e-01 -4.9088028073310852e-01 - -6.5012139081954956e-01 3.4508187323808670e-02 - <_> - -2.1515211090445518e-02 - - 1 2 63 2.8050000000000000e+02 0 -1 64 1.3550000000000000e+02 - -2 -3 65 6.4500000000000000e+01 - - -8.1834840774536133e-01 3.4400060772895813e-01 - -6.3054949045181274e-01 1.1890744417905807e-01 - <_> - 3.1621408462524414e-01 - - 1 2 66 9.5000000000000000e+00 0 -1 67 6.1450000000000000e+02 - -2 -3 68 1.3500000000000000e+01 - - 9.3128114938735962e-02 -9.1282945871353149e-01 - -3.9921483397483826e-01 3.3772930502891541e-01 - <_> - 5.6335878372192383e-01 - - 1 2 69 3.7950000000000000e+02 0 -1 70 1.3500000000000000e+01 - -2 -3 71 1.5000000000000000e+00 - - -7.0056474208831787e-01 5.2738833427429199e-01 - 3.5282510519027710e-01 -3.3403894305229187e-01 - <_> - 5.6363087892532349e-01 - - 1 2 72 1.1250000000000000e+02 0 -1 73 5.0000000000000000e-01 - -2 -3 74 1.2050000000000000e+02 - - -4.6730571985244751e-01 2.9215443134307861e-01 - -8.7365627288818359e-01 3.9535489678382874e-01 - <_> - 6.9701683521270752e-01 - - 1 2 75 5.0425000000000000e+03 0 -1 76 4.5000000000000000e+00 - -2 -3 77 6.5000000000000000e+00 - - -6.0965454578399658e-01 1.8540042638778687e-01 - -9.2315214872360229e-01 5.3048878908157349e-01 - <_> - 4.5701298117637634e-01 - - 1 2 78 5.0000000000000000e-01 0 -1 79 6.5000000000000000e+00 - -2 -3 80 2.5000000000000000e+00 - - -2.7668315172195435e-01 5.6005096435546875e-01 - 2.1146409213542938e-01 -5.8390063047409058e-01 - <_> - 5.3680413961410522e-01 - - 1 2 81 1.6385000000000000e+03 0 -1 82 1.6425000000000000e+03 - -2 -3 83 9.5650000000000000e+02 - - -4.7798931598663330e-01 7.4568957090377808e-01 - -6.5293675661087036e-01 7.9791143536567688e-02 - <_> - 7.9123014211654663e-01 - - 1 2 84 2.5000000000000000e+00 0 -1 85 3.5000000000000000e+00 - -2 -3 86 2.7500000000000000e+01 - - -8.4295582771301270e-01 3.1564649939537048e-01 - 2.5442600250244141e-01 -5.3678894042968750e-01 - <_> - 9.9566841125488281e-01 - - 1 2 87 1.5000000000000000e+00 0 -1 88 8.3500000000000000e+01 - -2 -3 89 4.3585000000000000e+03 - - -6.9861388206481934e-01 5.2257591485977173e-01 - 2.0443826913833618e-01 -9.2329531908035278e-01 - <_> - 6.9697165489196777e-01 - - 1 2 90 6.5000000000000000e+00 0 -1 91 5.0000000000000000e-01 - -2 -3 92 1.5500000000000000e+01 - - 5.5905121564865112e-01 -4.5287278294563293e-01 - 4.4855368137359619e-01 -5.0183618068695068e-01 - <_> - 9.2100763320922852e-01 - - 1 2 93 1.5500000000000000e+01 0 -1 94 1727. -2 -3 95 - 4.0650000000000000e+02 - - 8.0813169479370117e-02 -7.7053368091583252e-01 - -6.6791737079620361e-01 5.0257974863052368e-01 - <_> - 1.2186468839645386e+00 - - 1 2 96 2.5000000000000000e+00 0 -1 97 9.4450000000000000e+02 - -2 -3 98 2.8250000000000000e+02 - - 5.1938551664352417e-01 -6.8461489677429199e-01 - 2.9763919115066528e-01 -5.4145312309265137e-01 - <_> - 1.5830533504486084e+00 - - 1 2 99 1.5000000000000000e+00 0 -1 100 - 6.4500000000000000e+01 -2 -3 101 4.1500000000000000e+01 - - 3.6440649628639221e-01 -8.8290220499038696e-01 - -5.5990779399871826e-01 5.2934420108795166e-01 - <_> - 1.6476187705993652e+00 - - 1 2 102 6.3500000000000000e+01 0 -1 103 1272. -2 -3 104 - 3.5000000000000000e+00 - - 7.6397061347961426e-02 -6.9906431436538696e-01 - -3.5238000750541687e-01 4.7082781791687012e-01 - <_> - 1.9613027572631836e+00 - - 1 2 105 1.9050000000000000e+02 0 -1 106 - 2.5950000000000000e+02 -2 -3 107 8.6850000000000000e+02 - - 4.7928789258003235e-01 -5.8920049667358398e-01 - 3.1368392705917358e-01 -7.1384090185165405e-01 - <_> - 1.8639501333236694e+00 - - 1 2 108 4.5000000000000000e+00 0 -1 109 - 2.5000000000000000e+00 -2 -3 110 3.4500000000000000e+01 - - -6.9352459907531738e-01 7.6466333866119385e-01 - -4.9252825975418091e-01 3.0242496728897095e-01 - <_> - 1.8654627799987793e+00 - - 1 2 111 5.5000000000000000e+00 0 -1 112 - 4.6550000000000000e+02 -2 -3 113 6.6500000000000000e+01 - - 3.1676077842712402e-01 -5.6126487255096436e-01 - -7.7573800086975098e-01 5.2215093374252319e-01 - <_> - 2.1480247974395752e+00 - - 1 2 114 6.0500000000000000e+01 0 -1 115 - 2.0500000000000000e+01 -2 -3 116 2.3450000000000000e+02 - - -8.9376759529113770e-01 -1.0997094959020615e-01 - 7.2199839353561401e-01 -5.0327394157648087e-02 - <_> - 1.9088299274444580e+00 - - 1 2 117 7.5000000000000000e+00 0 -1 118 - 4.0500000000000000e+01 -2 -3 119 6.5000000000000000e+00 - - 4.8195198178291321e-02 -7.0370197296142578e-01 - -2.3919497430324554e-01 4.2311295866966248e-01 - <_> - 1.5272409915924072e+00 - - 1 2 120 1.6050000000000000e+02 0 -1 121 - 1.0500000000000000e+01 -2 -3 122 1.0500000000000000e+01 - - 2.4770694971084595e-01 -3.8158890604972839e-01 - -9.7206908464431763e-01 8.9829629659652710e-01 - <_> - 1.9680063724517822e+00 - - 1 2 123 2.5000000000000000e+00 0 -1 124 - 1.9500000000000000e+01 -2 -3 125 2.5735000000000000e+03 - - -4.3100010603666306e-02 -7.5473427772521973e-01 - -3.5048019886016846e-01 4.4076529145240784e-01 - <_> - 2.3465363979339600e+00 - - 1 2 126 1.2500000000000000e+01 0 -1 127 - 1.0555000000000000e+03 -2 -3 128 7.5000000000000000e+00 - - -8.7551236152648926e-01 -6.7303813993930817e-02 - 3.7853002548217773e-01 -3.1027609109878540e-01 - <_> - 2.9033544063568115e+00 - - 1 2 129 8.5000000000000000e+00 0 -1 130 - 5.6250000000000000e+02 -2 -3 131 1.3550000000000000e+02 - - -3.6559425294399261e-02 -7.8142386674880981e-01 - 7.2312414646148682e-01 2.3289153352379799e-02 - <_> - 2.9388859272003174e+00 - - 1 2 132 5.0000000000000000e-01 0 -1 133 - 5.5250000000000000e+02 -2 -3 134 9.5000000000000000e+00 - - -3.9772734045982361e-01 3.6010205745697021e-01 - -5.2232388406991959e-02 -8.5994052886962891e-01 - <_> - 3.1289162635803223e+00 - - 1 2 135 2.5000000000000000e+00 0 -1 136 - 9.3550000000000000e+02 -2 -3 137 3.4500000000000000e+01 - - 6.5386021137237549e-01 -7.9960751533508301e-01 - 5.9937894344329834e-01 -9.3748055398464203e-02 - <_> - 2.9401018619537354e+00 - - 1 2 138 2.3500000000000000e+01 0 -1 139 - 4.9500000000000000e+01 -2 -3 140 3.6500000000000000e+01 - - -2.2960659861564636e-01 6.7244362831115723e-01 - 7.8785783052444458e-01 -9.8723149299621582e-01 - <_> - 3.1424379348754883e+00 - - 1 2 141 2.5000000000000000e+00 0 -1 142 - 5.5000000000000000e+00 -2 -3 143 2361. - - -9.1799181699752808e-01 4.2446807026863098e-01 - 2.0233620703220367e-01 -9.6672892570495605e-01 - <_> - 3.4968855381011963e+00 - - 1 2 144 2.8550000000000000e+02 0 -1 145 - 5.1500000000000000e+01 -2 -3 146 5.6650000000000000e+02 - - -8.5579192638397217e-01 -9.2651106417179108e-02 - 3.8093444705009460e-01 -5.7530546188354492e-01 - <_> - 3.1502232551574707e+00 - - 1 2 147 4.5000000000000000e+00 0 -1 148 - 6.8500000000000000e+01 -2 -3 149 9.5000000000000000e+00 - - -8.9113306999206543e-01 7.8237515687942505e-01 - 3.2001781463623047e-01 -3.7314903736114502e-01 - <_> - 3.8585174083709717e+00 - - 1 2 150 5.0000000000000000e-01 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 4.1050000000000000e+02 - - -4.9204528331756592e-01 7.0829415321350098e-01 - 7.4046157300472260e-02 -6.1383426189422607e-01 - <_> - 3.8080792427062988e+00 - - 1 2 153 3.5500000000000000e+01 0 -1 154 7681. -2 -3 155 - 2.4675000000000000e+03 - - 3.3740982413291931e-02 -7.4226945638656616e-01 - -7.3395508527755737e-01 3.6083909869194031e-01 - <_> - 3.3863887786865234e+00 - - 1 2 156 5.6500000000000000e+01 0 -1 157 - 5.0000000000000000e-01 -2 -3 158 8.4050000000000000e+02 - - 1.7904321849346161e-01 -4.8003113269805908e-01 - -9.6535164117813110e-01 6.9043123722076416e-01 - <_> - 3.6636304855346680e+00 - - 1 2 159 4.5000000000000000e+00 0 -1 160 - 2.5000000000000000e+00 -2 -3 161 5.8950000000000000e+02 - - 2.8943026065826416e-01 -6.7487114667892456e-01 - 2.7724167704582214e-01 -8.2213556766510010e-01 - <_> - 3.8721060752868652e+00 - - 1 2 162 1.2150000000000000e+02 0 -1 163 - 1.4500000000000000e+01 -2 -3 164 1.7500000000000000e+01 - - 2.0847551524639130e-01 -6.2353050708770752e-01 - -9.3967980146408081e-01 1.3107043504714966e-01 - <_> - 3.7894663810729980e+00 - - 1 2 165 2.5000000000000000e+00 0 -1 166 - 1.5500000000000000e+01 -2 -3 167 7.4500000000000000e+01 - - -7.5801634788513184e-01 4.9648978747427464e-03 - 2.7702361345291138e-01 -6.3914996385574341e-01 - <_> - 4.0543885231018066e+00 - - 1 2 168 9.3500000000000000e+01 0 -1 169 - 6.1500000000000000e+01 -2 -3 170 2.8500000000000000e+01 - - -4.7131806612014771e-01 7.3680460453033447e-01 - 3.5524344444274902e-01 -8.2101029157638550e-01 - <_> - 3.9048261642456055e+00 - - 1 2 171 7.5500000000000000e+01 0 -1 172 - 5.0000000000000000e-01 -2 -3 173 1.6500000000000000e+01 - - 4.9885207414627075e-01 -1.4956261217594147e-01 - -9.2175818979740143e-02 -8.9010834693908691e-01 - <_> - 4.4586915969848633e+00 - - 1 2 174 2.6950000000000000e+02 0 -1 175 - 1.7605000000000000e+03 -2 -3 176 2.8545000000000000e+03 - - 8.6131852865219116e-01 -1.3636624813079834e-01 - -7.9446256160736084e-01 5.2974238060414791e-03 - <_> - 4.6468200683593750e+00 - - 1 2 177 8.5000000000000000e+00 0 -1 178 - 1.7250000000000000e+02 -2 -3 179 1.5000000000000000e+00 - - 7.8949034214019775e-01 -6.4925616979598999e-01 - -4.3843978643417358e-01 3.6792558431625366e-01 - <_> - 5.0024299621582031e+00 - - 1 2 180 5.0000000000000000e-01 0 -1 181 - 1.5000000000000000e+00 -2 -3 182 3.2500000000000000e+01 - - -6.3265806436538696e-01 5.1995193958282471e-01 - -5.6129783391952515e-01 3.8019722700119019e-01 - <_> - 4.7194237709045410e+00 - - 1 2 183 4.2650000000000000e+02 0 -1 184 - 8.5000000000000000e+00 -2 -3 185 4.4950000000000000e+02 - - -7.5718921422958374e-01 2.8537952899932861e-01 - -6.2070721387863159e-01 4.7228741645812988e-01 - <_> - 5.0188984870910645e+00 - - 1 2 186 4.5000000000000000e+00 0 -1 187 - 7.5000000000000000e+00 -2 -3 188 2.5500000000000000e+01 - - -7.2133111953735352e-01 5.6136214733123779e-01 - -6.9119346141815186e-01 3.8566098082810640e-03 - <_> - 5.3487014770507812e+00 - - 1 2 189 5.7500000000000000e+01 0 -1 190 - 2.5000000000000000e+00 -2 -3 191 7.8350000000000000e+02 - - -4.0980994701385498e-01 3.2980319857597351e-01 - -8.2106924057006836e-01 8.7380580604076385e-02 - <_> - 5.4926447868347168e+00 - - 1 2 192 4.0550000000000000e+02 0 -1 193 - 1.4450000000000000e+02 -2 -3 194 6.5005000000000000e+03 - - 7.8168880939483643e-01 -9.9427944421768188e-01 - 1.4394305646419525e-01 -8.7959676980972290e-01 - <_> - 4.9957537651062012e+00 - - 1 2 195 4.8150000000000000e+02 0 -1 196 - 1.5000000000000000e+00 -2 -3 197 3.5035000000000000e+03 - - 7.3646187782287598e-02 -4.9689114093780518e-01 - 4.9998056888580322e-01 -8.2785910367965698e-01 - <_> - 5.1939215660095215e+00 - - 1 2 198 2.5000000000000000e+00 0 -1 199 - 5.0000000000000000e-01 -2 -3 200 2.3500000000000000e+01 - - 1.2600880861282349e-01 -7.7916258573532104e-01 - 5.3144866228103638e-01 -1.1227495223283768e-01 - <_> - 5.0181527137756348e+00 - - 1 2 201 8.5000000000000000e+00 0 -1 202 - 4.4750000000000000e+02 -2 -3 203 5.0000000000000000e-01 - - 5.7900190353393555e-02 -7.0389288663864136e-01 - 5.1429390907287598e-01 -1.7576885223388672e-01 - <_> - 5.5697488784790039e+00 - - 1 2 204 1.0500000000000000e+01 0 -1 205 70. -2 -3 206 - 6.7350000000000000e+02 - - -8.7297052145004272e-01 7.0906364917755127e-01 - -1.4972299337387085e-01 5.5159616470336914e-01 - <_> - 5.7136139869689941e+00 - - 1 2 207 1.3650000000000000e+02 0 -1 208 - 1.6175000000000000e+03 -2 -3 209 3.7500000000000000e+01 - - -7.1608042716979980e-01 6.8123096227645874e-01 - -5.4103106260299683e-01 1.4386519789695740e-01 - <_> - 6.0863943099975586e+00 - - 1 2 210 4.2350000000000000e+02 0 -1 211 - 6.5000000000000000e+00 -2 -3 212 1.6500000000000000e+01 - - -5.0391936302185059e-01 3.7278059124946594e-01 - -6.1555516719818115e-01 3.6680406332015991e-01 - <_> - 6.0900993347167969e+00 - - 1 2 213 7.5000000000000000e+00 0 -1 214 - 6.3500000000000000e+01 -2 -3 215 1.7150000000000000e+02 - - -8.1301319599151611e-01 2.1032735705375671e-01 - 2.5279974937438965e-01 -7.4217134714126587e-01 - <_> - 5.8023753166198730e+00 - - 1 2 216 1.2500000000000000e+01 0 -1 217 - 1.5000000000000000e+00 -2 -3 218 2.6500000000000000e+01 - - -7.2685444355010986e-01 7.9898738861083984e-01 - -2.8772389888763428e-01 5.6455093622207642e-01 - <_> - 6.3323311805725098e+00 - - 1 2 219 1.5000000000000000e+00 0 -1 220 - 8.5000000000000000e+00 -2 -3 221 1475. - - -1.4710092544555664e-01 5.2995562553405762e-01 - -5.9936457872390747e-01 6.4512765407562256e-01 - <_> - 6.6095805168151855e+00 - - 1 2 222 1.0050000000000000e+02 0 -1 223 - 1.3850000000000000e+02 -2 -3 224 1.6500000000000000e+01 - - -3.7491708993911743e-01 2.7724933624267578e-01 - -9.3418252468109131e-01 7.3304271697998047e-01 - <_> - 6.3995418548583984e+00 - - 1 2 225 5.0000000000000000e-01 0 -1 226 - 5.0000000000000000e-01 -2 -3 227 404. - - -5.4505115747451782e-01 3.4958031773567200e-01 - 3.8955518603324890e-01 -5.4077529907226562e-01 - <_> - 6.4326496124267578e+00 - - 1 2 228 1.4725000000000000e+03 0 -1 229 - 1.5000000000000000e+00 -2 -3 230 1.8750000000000000e+02 - - -5.1992988586425781e-01 3.2155281305313110e-01 - -8.8109362125396729e-01 1.9341170787811279e-01 - <_> - 6.6780347824096680e+00 - - 1 2 231 4.1500000000000000e+01 0 -1 232 - 3.7950000000000000e+02 -2 -3 233 5.6500000000000000e+01 - - -3.8503032922744751e-01 2.4538502097129822e-01 - -8.7592208385467529e-01 1. - <_> - 6.2248573303222656e+00 - - 1 2 234 7.5000000000000000e+00 0 -1 235 - 3.2500000000000000e+01 -2 -3 236 5.7950000000000000e+02 - - -4.5317751169204712e-01 2.1532684564590454e-01 - 5.8404910564422607e-01 -2.4274602532386780e-01 - <_> - 6.4159698486328125e+00 - - 1 2 237 1.1535000000000000e+03 0 -1 238 - 5.5000000000000000e+00 -2 -3 239 6.4500000000000000e+01 - - -8.7068289518356323e-01 1.9111247360706329e-01 - -9.4053912162780762e-01 4.4355693459510803e-01 - <_> - 7.1638717651367188e+00 - - 1 2 240 1.4050000000000000e+02 0 -1 241 - 5.0000000000000000e-01 -2 -3 242 1.2650000000000000e+02 - - 4.4086909294128418e-01 -5.0150549411773682e-01 - 7.4790221452713013e-01 -9.0757437050342560e-02 - <_> - 6.9956283569335938e+00 - - 1 2 243 4.0550000000000000e+02 0 -1 244 - 3.7650000000000000e+02 -2 -3 245 4524. - - -3.4899798035621643e-01 8.1103372573852539e-01 - -8.7178498506546021e-01 -4.8995027318596840e-03 - <_> - 7.4554481506347656e+00 - - 1 2 246 2.3150000000000000e+02 0 -1 247 - 3.1425000000000000e+03 -2 -3 248 6.5000000000000000e+00 - - 5.2766591310501099e-01 -6.1232703924179077e-01 - -6.5764123201370239e-01 2.0478096604347229e-01 - <_> - 7.2104501724243164e+00 - - 1 2 249 2.9500000000000000e+01 0 -1 250 - 5.0000000000000000e-01 -2 -3 251 2.1500000000000000e+01 - - 4.3428641557693481e-01 -3.1284397840499878e-01 - 8.8815468549728394e-01 -4.8376885056495667e-01 - <_> - 7.4390578269958496e+00 - - 1 2 252 5.5000000000000000e+00 0 -1 253 - 1.3500000000000000e+01 -2 -3 254 6.2500000000000000e+01 - - 7.5515633821487427e-01 -9.5432144403457642e-01 - 2.2860760986804962e-01 -7.0533061027526855e-01 - <_> - 7.9283328056335449e+00 - - 1 2 255 2.5000000000000000e+00 0 -1 256 - 2.2050000000000000e+02 -2 -3 257 6.5000000000000000e+00 - - 2.8305485844612122e-01 -4.7798827290534973e-01 - -6.9612729549407959e-01 4.8927512764930725e-01 - <_> - 7.8133955001831055e+00 - - 1 2 258 9.5000000000000000e+00 0 -1 259 - 4.5000000000000000e+00 -2 -3 260 1.7500000000000000e+01 - - 6.2756460905075073e-01 -7.5498276948928833e-01 - 3.5729703307151794e-01 -4.0417757630348206e-01 - <_> - 8.1147861480712891e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 5.0000000000000000e-01 -2 -3 263 1.5000000000000000e+00 - - -4.9173495173454285e-01 4.1440054774284363e-01 - 1.4962354302406311e-01 -6.2164884805679321e-01 - <_> - 8.0036125183105469e+00 - - 1 2 264 2.7250000000000000e+02 0 -1 265 - 6.6500000000000000e+01 -2 -3 266 8.6500000000000000e+01 - - 8.9536643028259277e-01 -8.2981568574905396e-01 - -1.1117322742938995e-01 5.5591076612472534e-01 - <_> - 7.9468250274658203e+00 - - 1 2 267 3.4355000000000000e+03 0 -1 268 - 1.2500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - -5.6787721812725067e-02 6.2517631053924561e-01 - 9.5699685811996460e-01 -8.4953671693801880e-01 - <_> - 8.1981401443481445e+00 - - 1 2 270 5.1255000000000000e+03 0 -1 271 - 7.5500000000000000e+01 -2 -3 272 3.5000000000000000e+00 - - 5.5827653408050537e-01 -8.1833952665328979e-01 - -7.4658811092376709e-01 2.5131568312644958e-01 - <_> - 8.5107431411743164e+00 - - 1 2 273 1.4500000000000000e+01 0 -1 274 - 1.2465000000000000e+03 -2 -3 275 2.5000000000000000e+00 - - -4.7990524768829346e-01 3.1260266900062561e-01 - -7.6885735988616943e-01 2.7144250273704529e-01 - <_> - 8.5296592712402344e+00 - - 1 2 276 8.5000000000000000e+00 0 -1 277 - 4.5000000000000000e+00 -2 -3 278 2.2500000000000000e+01 - - -2.7888947725296021e-01 4.1390788555145264e-01 - -7.5243312120437622e-01 3.8646731525659561e-02 - <_> - 8.1502628326416016e+00 - - 1 2 279 7.5000000000000000e+00 0 -1 280 - 4.5000000000000000e+00 -2 -3 281 6.5000000000000000e+00 - - -9.1697919368743896e-01 2.5899103283882141e-01 - 2.9392924904823303e-01 -3.7939697504043579e-01 - <_> - 8.5284252166748047e+00 - - 1 2 282 7.5000000000000000e+00 0 -1 283 - 4.5000000000000000e+00 -2 -3 284 1.6650000000000000e+02 - - 4.6240034699440002e-01 -5.9770995378494263e-01 - 3.7816286087036133e-01 -4.5079508423805237e-01 - <_> - 8.8317689895629883e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 1.0500000000000000e+01 -2 -3 287 9.3500000000000000e+01 - - -2.2997814416885376e-01 5.8687257766723633e-01 - -3.8729551434516907e-01 8.3155500888824463e-01 - <_> - 9.0805969238281250e+00 - - 1 2 288 4.5000000000000000e+00 0 -1 289 - 1.5000000000000000e+00 -2 -3 290 9.5500000000000000e+01 - - -5.1435619592666626e-01 6.5646749734878540e-01 - 2.3559592664241791e-01 -5.2417474985122681e-01 - <_> - 9.1131057739257812e+00 - - 1 2 291 1.0550000000000000e+02 0 -1 292 - 2.5000000000000000e+00 -2 -3 293 2.5000000000000000e+00 - - 2.8382772207260132e-01 -7.2767460346221924e-01 - -2.2438500821590424e-01 5.3264546394348145e-01 - <_> - 9.5003452301025391e+00 - - 1 2 294 3.6250000000000000e+02 0 -1 295 - 5.2500000000000000e+01 -2 -3 296 1.0500000000000000e+01 - - -1.5170100331306458e-01 5.5480080842971802e-01 - -5.9511619806289673e-01 9.4855791330337524e-01 - <_> - 9.8572778701782227e+00 - - 1 2 297 1.5000000000000000e+00 0 -1 298 - 5.2450000000000000e+02 -2 -3 299 9.4850000000000000e+02 - - -7.1444231271743774e-01 5.5506742000579834e-01 - -3.6931082606315613e-01 3.5693225264549255e-01 - <_> - 9.9349241256713867e+00 - - 1 2 300 9.4850000000000000e+02 0 -1 301 267. -2 -3 302 - 1.6500000000000000e+01 - - -8.8825285434722900e-01 7.0393162965774536e-01 - -7.8592085838317871e-01 1.2156928423792124e-03 - <_> - 9.9322500228881836e+00 - - 1 2 303 2.5500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 159. - - 3.4359598159790039e-01 -2.4455060064792633e-01 1. - -7.8989464044570923e-01 - <_> - 1.0058608055114746e+01 - - 1 2 306 5.0000000000000000e-01 0 -1 307 - 2.2500000000000000e+01 -2 -3 308 1.1515000000000000e+03 - - -9.0996569395065308e-01 9.2380321025848389e-01 - -1.6473907232284546e-01 4.1052249073982239e-01 - <_> - 1.0223997116088867e+01 - - 1 2 309 4.2500000000000000e+01 0 -1 310 - 8.6650000000000000e+02 -2 -3 311 2.2500000000000000e+01 - - 1.9234158098697662e-01 -7.2460043430328369e-01 - -7.9836362600326538e-01 9.6195751428604126e-01 - <_> - 1.0008197784423828e+01 - - 1 2 312 5.5000000000000000e+00 0 -1 313 - 2.6650000000000000e+02 -2 -3 314 3.3500000000000000e+01 - - 1.2523138523101807e-01 -8.6618262529373169e-01 - -2.4275220930576324e-01 4.0779858827590942e-01 - <_> - 1.0062645912170410e+01 - - 1 2 315 5.0000000000000000e-01 0 -1 316 - 1.5500000000000000e+01 -2 -3 317 3.5000000000000000e+00 - - -5.3337979316711426e-01 3.9335799217224121e-01 - 1.6538677737116814e-02 -6.5064489841461182e-01 - <_> - 1.0137523651123047e+01 - - 1 2 318 6.5000000000000000e+00 0 -1 319 - 9.7500000000000000e+01 -2 -3 320 4.2250000000000000e+02 - - -8.1692630052566528e-01 3.2735434174537659e-01 - 3.4575462341308594e-01 -3.3049446344375610e-01 - <_> - 1.0166016578674316e+01 - - 1 2 321 2.5500000000000000e+01 0 -1 322 - 8.5000000000000000e+00 -2 -3 323 1.6500000000000000e+01 - - 9.1644279658794403e-02 -5.2864229679107666e-01 - 6.9183582067489624e-01 -8.6679929494857788e-01 - <_> - 1.0464833259582520e+01 - - 1 2 324 4.3500000000000000e+01 0 -1 325 - 2.0500000000000000e+01 -2 -3 326 8.0500000000000000e+01 - - -7.2728145122528076e-01 7.6082414388656616e-01 - 2.9881590604782104e-01 -7.0052075386047363e-01 - <_> - 1.0593893051147461e+01 - - 1 2 327 754. 0 -1 328 3.1500000000000000e+01 -2 -3 329 - 1.1650000000000000e+02 - - 1.2906002998352051e-01 -9.6310997009277344e-01 - -9.4967085123062134e-01 9.2896288633346558e-01 - <_> - 1.0529273033142090e+01 - - 1 2 330 1.5950000000000000e+02 0 -1 331 - 5.0000000000000000e-01 -2 -3 332 1.0500000000000000e+01 - - 4.0252849459648132e-01 -2.2623433172702789e-01 - -8.2927960157394409e-01 7.9533529281616211e-01 - <_> - 1.0765100479125977e+01 - - 1 2 333 3.7500000000000000e+01 0 -1 334 2857. -2 -3 335 - 2.9500000000000000e+01 - - 1.0000352561473846e-01 -6.7226463556289673e-01 - -2.3132064938545227e-01 6.5264308452606201e-01 - <_> - 1.0927120208740234e+01 - - 1 2 336 1.4500000000000000e+01 0 -1 337 - 1.7500000000000000e+01 -2 -3 338 7.5000000000000000e+00 - - 1. -9.8882341384887695e-01 -8.0750954151153564e-01 - 1.6201967000961304e-01 - <_> - 1.0593936920166016e+01 - - 1 2 339 3.5500000000000000e+01 0 -1 340 - 1.9835000000000000e+03 -2 -3 341 2.3950000000000000e+02 - - -7.7594196796417236e-01 5.6257498264312744e-01 - -3.3318310976028442e-01 7.2988075017929077e-01 - <_> - 1.0573868751525879e+01 - - 1 2 342 4.0345000000000000e+03 0 -1 343 - 1.7500000000000000e+01 -2 -3 344 2.4500000000000000e+01 - - -2.0068552345037460e-02 6.8981468677520752e-01 - -9.6814006567001343e-01 1. - <_> - 1.0650080680847168e+01 - - 1 2 345 7.5000000000000000e+00 0 -1 346 - 1.2500000000000000e+01 -2 -3 347 5.0000000000000000e-01 - - 7.6211549341678619e-02 -5.1685106754302979e-01 - 7.4474209547042847e-01 -4.1124773025512695e-01 - <_> - 1.1117682456970215e+01 - - 1 2 348 2.6150000000000000e+02 0 -1 349 - 3.6500000000000000e+01 -2 -3 350 1.3225000000000000e+03 - - 3.7473414093255997e-02 -7.5915354490280151e-01 - -8.7183421850204468e-01 5.9835737943649292e-01 - <_> - 1.1351815223693848e+01 - - 1 2 351 1.5000000000000000e+00 0 -1 352 - 1.1500000000000000e+01 -2 -3 353 1.5000000000000000e+00 - - -7.5888788700103760e-01 8.4721368551254272e-01 - -5.5274593830108643e-01 2.3413263261318207e-01 - <_> - 1.1546736717224121e+01 - - 1 2 354 1.3500000000000000e+01 0 -1 355 - 6.5450000000000000e+02 -2 -3 356 9.5000000000000000e+00 - - -7.7053505182266235e-01 2.9745939373970032e-01 - -6.9932419061660767e-01 6.4165964722633362e-02 - <_> - 1.1826669692993164e+01 - - 1 2 357 5.0000000000000000e-01 0 -1 358 55. -2 -3 359 - 2.4850000000000000e+02 - - 4.2303827404975891e-01 -5.7265710830688477e-01 - 2.7993318438529968e-01 -8.1947267055511475e-01 - <_> - 1.1284319877624512e+01 - - 1 2 360 5.0000000000000000e-01 0 -1 361 - 6.5000000000000000e+00 -2 -3 362 1.1500000000000000e+01 - - -9.5987164974212646e-01 3.2443001866340637e-01 - -6.4488828182220459e-01 1.1978100985288620e-01 - <_> - 1.1630601882934570e+01 - - 1 2 363 5.0000000000000000e-01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 8.4500000000000000e+01 - - -8.8305491209030151e-01 3.4628173708915710e-01 - -4.7460108995437622e-01 7.0546346902847290e-01 - <_> - 1.2214597702026367e+01 - - 1 2 366 9.4450000000000000e+02 0 -1 367 - 1.2500000000000000e+01 -2 -3 368 8.5000000000000000e+00 - - 8.7438219785690308e-01 -7.6936721801757812e-01 - -5.2558350563049316e-01 1.2239178270101547e-01 - <_> - 1.2195128440856934e+01 - - 1 2 369 2.7550000000000000e+02 0 -1 370 - 1.7650000000000000e+02 -2 -3 371 2.2735000000000000e+03 - - -1.9470088183879852e-02 -9.6673905849456787e-01 - -4.8436808586120605e-01 3.0466488003730774e-01 - <_> - 1.2251366615295410e+01 - - 1 2 372 5.2650000000000000e+02 0 -1 373 546. -2 -3 374 - 1.1050000000000000e+02 - - -1. 9.5037066936492920e-01 -3.8202244043350220e-01 - 2.0185998082160950e-01 - <_> - 1.2102990150451660e+01 - - 1 2 375 3.2500000000000000e+01 0 -1 376 - 2.1500000000000000e+01 -2 -3 377 8.4500000000000000e+01 - - -3.2463604211807251e-01 3.6814257502555847e-01 - -7.3823076486587524e-01 7.4913966655731201e-01 - <_> - 1.2312093734741211e+01 - - 1 2 378 3.4355000000000000e+03 0 -1 379 - 2.5000000000000000e+00 -2 -3 380 6.3500000000000000e+01 - - -7.8733509778976440e-01 2.0910337567329407e-01 - -9.0931433439254761e-01 3.8765233755111694e-01 - <_> - 1.2890332221984863e+01 - - 1 2 381 3.0500000000000000e+01 0 -1 382 3778. -2 -3 383 - 3.5000000000000000e+00 - - -9.6564710140228271e-01 6.7786568403244019e-01 - -6.9395273923873901e-01 6.1719562858343124e-02 - <_> - 1.2589548110961914e+01 - - 1 2 384 1.9950000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 8.1500000000000000e+01 - - 3.0389565229415894e-01 -3.0078458786010742e-01 - 9.3047642707824707e-01 -8.3185690641403198e-01 - <_> - 1.3083652496337891e+01 - - 1 2 387 6.8500000000000000e+01 0 -1 388 - 2.9495000000000000e+03 -2 -3 389 1.6500000000000000e+01 - - 4.2328838258981705e-02 -8.1223583221435547e-01 - -2.1020211279392242e-01 5.5431735515594482e-01 - <_> - 1.3218968391418457e+01 - - 1 2 390 1.6705000000000000e+03 0 -1 391 - 2.5500000000000000e+01 -2 -3 392 4.8050000000000000e+02 - - 4.8974525928497314e-01 -5.1326960325241089e-01 - -5.8406698703765869e-01 1.3531610369682312e-01 - <_> - 1.2885004043579102e+01 - - 1 2 393 8.5000000000000000e+00 0 -1 394 - 4.1845000000000000e+03 -2 -3 395 1.3500000000000000e+01 - - -1.3101078569889069e-01 -8.4397506713867188e-01 - 3.3940505981445312e-01 -5.4651063680648804e-01 - <_> - 1.3153897285461426e+01 - - 1 2 396 5.5000000000000000e+00 0 -1 397 - 6.1950000000000000e+02 -2 -3 398 2.8500000000000000e+01 - - 1.9637145102024078e-01 -4.6468892693519592e-01 - 5.5541270971298218e-01 -1. - <_> - 1.3368961334228516e+01 - - 1 2 399 9.5000000000000000e+00 0 -1 400 - 1.5000000000000000e+00 -2 -3 401 5.1500000000000000e+01 - - 9.3293839693069458e-01 -8.3272749185562134e-01 - 2.1506418287754059e-01 -8.0539971590042114e-01 - <_> - 1.3012317657470703e+01 - - 1 2 402 5.5000000000000000e+00 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.5000000000000000e+00 - - 7.4536651372909546e-01 -6.8645662069320679e-01 - 3.7242239713668823e-01 -3.5664358735084534e-01 - <_> - 1.3480623245239258e+01 - - 1 2 405 5.0000000000000000e-01 0 -1 406 - 5.5000000000000000e+00 -2 -3 407 1.2950000000000000e+02 - - -3.6363714933395386e-01 4.6830555796623230e-01 - -5.7222759723663330e-01 4.0735042095184326e-01 - <_> - 1.3696137428283691e+01 - - 1 2 408 5.0000000000000000e-01 0 -1 409 - 3.5500000000000000e+01 -2 -3 410 2.4750000000000000e+02 - - -8.6935847997665405e-01 6.8743604421615601e-01 - 2.1551388502120972e-01 -7.8673112392425537e-01 - <_> - 1.3721407890319824e+01 - - 1 2 411 3.8500000000000000e+01 0 -1 412 - 3.8150000000000000e+02 -2 -3 413 6.5000000000000000e+00 - - -5.6747698783874512e-01 8.5023626685142517e-02 - -7.0082569122314453e-01 6.5703827142715454e-01 - <_> - 1.3873306274414062e+01 - - 1 2 414 3.0435000000000000e+03 0 -1 415 29. -2 -3 416 83. - - 1.5189857780933380e-01 -9.3611216545104980e-01 - -9.5821422338485718e-01 6.5282088518142700e-01 - <_> - 1.4014303207397461e+01 - - 1 2 417 5.0000000000000000e-01 0 -1 418 - 5.5000000000000000e+00 -2 -3 419 2.8500000000000000e+01 - - -6.7168551683425903e-01 3.7073549628257751e-01 - -6.0920524597167969e-01 1.5500061213970184e-01 - <_> - 1.4489161491394043e+01 - - 1 2 420 1.0500000000000000e+01 0 -1 421 - 9.2500000000000000e+01 -2 -3 422 9.5000000000000000e+00 - - 4.7485816478729248e-01 -9.3795543909072876e-01 - -4.8096546530723572e-01 3.2066935300827026e-01 - <_> - 1.4712132453918457e+01 - - 1 2 423 5.6500000000000000e+01 0 -1 424 - 1.5500000000000000e+01 -2 -3 425 11. - - -5.4511427879333496e-01 2.2297111153602600e-01 - -9.3687444925308228e-01 9.3418681621551514e-01 - <_> - 1.4426413536071777e+01 - - 1 2 426 9.7450000000000000e+02 0 -1 427 - 8.3850000000000000e+02 -2 -3 428 127. - - 4.5185938477516174e-01 -2.0019924640655518e-01 - 2.9750302433967590e-01 -7.1074008941650391e-01 - <_> - 1.4523365974426270e+01 - - 1 2 429 3.0500000000000000e+01 0 -1 430 - 5.0000000000000000e-01 -2 -3 431 200. - - 9.6951834857463837e-02 -4.6191120147705078e-01 1. -1. - <_> - 1.4775473594665527e+01 - - 1 2 432 5.5000000000000000e+00 0 -1 433 - 3.8500000000000000e+01 -2 -3 434 34. - - -6.4820885658264160e-01 9.7515827417373657e-01 - -8.0702418088912964e-01 2.5210806727409363e-01 - <_> - 1.4361328125000000e+01 - - 1 2 435 9.5500000000000000e+01 0 -1 436 - 1.9250000000000000e+02 -2 -3 437 2.1500000000000000e+01 - - -5.9286040067672729e-01 3.2556504011154175e-01 - 2.8273129463195801e-01 -9.3379873037338257e-01 - <_> - 1.4586226463317871e+01 - - 1 2 438 3412. 0 -1 439 8.5000000000000000e+00 -2 -3 440 100. - - -4.1335216164588928e-01 2.2489830851554871e-01 - -9.9015569686889648e-01 1. - <_> - 1.5102481842041016e+01 - - 1 2 441 4.1150000000000000e+02 0 -1 442 - 5.0500000000000000e+01 -2 -3 443 3.0395000000000000e+03 - - -9.5133119821548462e-01 7.9551450908184052e-02 - 5.3846877813339233e-01 -1.1589291691780090e-01 - <_> - 1.5133154869079590e+01 - - 1 2 444 1.9265000000000000e+03 0 -1 445 - 5.0000000000000000e-01 -2 -3 446 1.0750000000000000e+02 - - 9.7796529531478882e-02 -4.9147978425025940e-01 - 5.6562197208404541e-01 -7.0251446962356567e-01 - <_> - 1.5480172157287598e+01 - - 1 2 447 7.0500000000000000e+01 0 -1 448 239. -2 -3 449 - 1.1755000000000000e+03 - - 4.4128131121397018e-02 -7.7577579021453857e-01 - 3.4701684117317200e-01 -8.5588878393173218e-01 - <_> - 1.5623726844787598e+01 - - 1 2 450 5.0000000000000000e-01 0 -1 451 33. -2 -3 452 - 5.7500000000000000e+01 - - -9.8123723268508911e-01 1. 1.4355540275573730e-01 - -7.0005464553833008e-01 - <_> - 1.5563958168029785e+01 - - 1 2 453 1.5000000000000000e+00 0 -1 454 - 2.8500000000000000e+01 -2 -3 455 47. - - -6.2908321619033813e-01 5.0617432594299316e-01 - -3.7233376502990723e-01 8.5267359018325806e-01 - <_> - 1.5404257774353027e+01 - - 1 2 456 4.1500000000000000e+01 0 -1 457 - 4.5000000000000000e+00 -2 -3 458 1.5000000000000000e+00 - - -9.4914859533309937e-01 9.4575625658035278e-01 - -3.8208422064781189e-01 1.9698897004127502e-01 - <_> - 1.6029253005981445e+01 - - 1 2 459 8.5000000000000000e+00 0 -1 460 - 3.6500000000000000e+01 -2 -3 461 5.5000000000000000e+00 - - -8.4917742013931274e-01 6.1574220657348633e-01 - 8.2632422447204590e-01 -3.3165588974952698e-02 - <_> - 1.5608561515808105e+01 - - 1 2 462 1.3500000000000000e+01 0 -1 463 - 5.3950000000000000e+02 -2 -3 464 5.5000000000000000e+00 - - -9.0597325563430786e-01 2.5814166665077209e-01 - -7.0283818244934082e-01 3.1022888422012329e-01 - <_> - 1.5827486038208008e+01 - - 1 2 465 2.5000000000000000e+00 0 -1 466 - 8.1500000000000000e+01 -2 -3 467 2.0550000000000000e+02 - - -8.6807721853256226e-01 1. 2.1892426908016205e-01 - -6.2899088859558105e-01 - <_> - 1.6221029281616211e+01 - - 1 2 468 8.9850000000000000e+02 0 -1 469 - 4.2050000000000000e+02 -2 -3 470 7.6450000000000000e+02 - - -3.1118813902139664e-02 -8.0856597423553467e-01 - 3.9354413747787476e-01 -7.0517486333847046e-01 - <_> - 1.6183372497558594e+01 - - 1 2 471 2.0545000000000000e+03 0 -1 472 - 2.5050000000000000e+02 -2 -3 473 4.4995000000000000e+03 - - 6.4125961065292358e-01 -8.5631817579269409e-01 - 7.6069533824920654e-01 -3.7658475339412689e-02 - <_> - 1.6466924667358398e+01 - - 1 2 474 7.5000000000000000e+00 0 -1 475 - 4.2895000000000000e+03 -2 -3 476 6.2950000000000000e+02 - - 8.1660963594913483e-02 -7.4422889947891235e-01 - 4.2579609155654907e-01 -4.2402768135070801e-01 - <_> - 1.6026039123535156e+01 - - 1 2 477 5.0000000000000000e-01 0 -1 478 - 1.8500000000000000e+01 -2 -3 479 4.4850000000000000e+02 - - -3.0789500474929810e-01 5.8823746442794800e-01 - -4.4998848438262939e-01 5.3471541404724121e-01 - <_> - 1.6353460311889648e+01 - - 1 2 480 7.6050000000000000e+02 0 -1 481 - 1.9250000000000000e+02 -2 -3 482 6.8500000000000000e+01 - - -6.1745387315750122e-01 9.0257441997528076e-01 - 3.2742044329643250e-01 -7.8960853815078735e-01 - <_> - 1.6734058380126953e+01 - - 1 2 483 2.5000000000000000e+00 0 -1 484 - 1.0500000000000000e+01 -2 -3 485 5.0000000000000000e-01 - - -5.9715515375137329e-01 8.1663769483566284e-01 - 5.2075517177581787e-01 -1.6225169599056244e-01 - <_> - 1.6345090866088867e+01 - - 1 2 486 1.1500000000000000e+01 0 -1 487 - 2.8500000000000000e+01 -2 -3 488 1.7150000000000000e+02 - - 3.0138874053955078e-01 -5.6442081928253174e-01 - 9.8830562829971313e-01 -6.2377959489822388e-01 - <_> - 1.6049247741699219e+01 - - 1 2 489 4.8500000000000000e+01 0 -1 490 - 4.5000000000000000e+00 -2 -3 491 15. - - 3.0436006188392639e-01 -2.9584380984306335e-01 - -9.3031573295593262e-01 8.9746475219726562e-01 - <_> - 1.6490245819091797e+01 - - 1 2 492 1.5500000000000000e+01 0 -1 493 - 1.0500000000000000e+01 -2 -3 494 1.5000000000000000e+00 - - 1.5252333879470825e-01 -6.3438588380813599e-01 - -4.9522089958190918e-01 4.4099876284599304e-01 - <_> - 1.7003578186035156e+01 - - 1 2 495 9.5500000000000000e+01 0 -1 496 - 4.8050000000000000e+02 -2 -3 497 8.8500000000000000e+01 - - -9.6510402858257294e-02 5.1333212852478027e-01 - -8.6270028352737427e-01 7.7527511119842529e-01 - <_> - 1.7326871871948242e+01 - - 1 2 498 5.4050000000000000e+02 0 -1 499 - 9.3500000000000000e+01 -2 -3 500 4075. - - 8.5396260023117065e-01 -4.0819042921066284e-01 - -8.7424677610397339e-01 -4.3737210333347321e-02 - <_> - 1.7417627334594727e+01 - - 1 2 501 4.5000000000000000e+00 0 -1 502 - 2.8565000000000000e+03 -2 -3 503 5.0000000000000000e-01 - - 3.1944847106933594e-01 -7.1486788988113403e-01 - 4.2967954277992249e-01 -7.0940160751342773e-01 - <_> - 1.7675552368164062e+01 - - 1 2 504 2.1500000000000000e+01 0 -1 505 - 3.5000000000000000e+00 -2 -3 506 3946. - - 5.1202677190303802e-02 -8.8791614770889282e-01 - -7.7767062187194824e-01 2.5792467594146729e-01 - <_> - 1.7575408935546875e+01 - - 1 2 507 9.5000000000000000e+00 0 -1 508 - 5.8450000000000000e+02 -2 -3 509 5.0000000000000000e-01 - - 1.6954909265041351e-01 -6.1507350206375122e-01 - -7.3153948783874512e-01 4.1231128573417664e-01 - <_> - 1.7513637542724609e+01 - - 1 2 510 2.7550000000000000e+02 0 -1 511 - 4.4650000000000000e+02 -2 -3 512 1.4500000000000000e+01 - - -6.8732649087905884e-01 9.6409857273101807e-01 - -3.7864384055137634e-01 3.5600626468658447e-01 - <_> - 1.7776586532592773e+01 - - 1 2 513 2.0075000000000000e+03 0 -1 514 - 5.5000000000000000e+00 -2 -3 515 118. - - -4.9108317494392395e-01 2.7656924724578857e-01 - -7.8876090049743652e-01 9.7231864929199219e-01 - <_> - 1.7636518478393555e+01 - - 1 2 516 1.1250000000000000e+02 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 96. - - -6.6741842031478882e-01 2.0427951216697693e-01 - -8.4879159927368164e-01 7.6417601108551025e-01 - <_> - 1.7906213760375977e+01 - - 1 2 519 5.0000000000000000e-01 0 -1 520 - 5.5150000000000000e+02 -2 -3 521 2.5500000000000000e+01 - - -4.4012060761451721e-01 4.9110901355743408e-01 - -7.8305160999298096e-01 -7.4652910232543945e-02 - <_> - 1.7903791427612305e+01 - - 1 2 522 4.5000000000000000e+00 0 -1 523 43. -2 -3 524 - 5.0000000000000000e-01 - - 6.1665916442871094e-01 -7.0740306377410889e-01 - 4.7637423872947693e-01 -1.9755503535270691e-01 - <_> - 1.8408391952514648e+01 - - 1 2 525 5.0000000000000000e-01 0 -1 526 - 1.6500000000000000e+01 -2 -3 527 1.5000000000000000e+00 - - -8.8571590185165405e-01 6.4138215780258179e-01 - 5.0460076332092285e-01 -1.1802505701780319e-01 - <_> - 1.8595077514648438e+01 - - 1 2 528 5.8550000000000000e+02 0 -1 529 - 1.5000000000000000e+00 -2 -3 530 9. - - -6.1554092168807983e-01 1.8668572604656219e-01 - 6.6736525297164917e-01 -9.3229418992996216e-01 - <_> - 1.8598781585693359e+01 - - 1 2 531 1.0500000000000000e+01 0 -1 532 92. -2 -3 533 - 1.0500000000000000e+01 - - -8.5246169567108154e-01 6.4911514520645142e-01 - 7.2167778015136719e-01 -9.1329686343669891e-02 - <_> - 1.8938451766967773e+01 - - 1 2 534 1.9500000000000000e+01 0 -1 535 423. -2 -3 536 - 1.0500000000000000e+01 - - 1.0317068547010422e-01 -6.1221712827682495e-01 - 6.0012447834014893e-01 -5.8523362874984741e-01 - <_> - 1.8760560989379883e+01 - - 1 2 537 1.4500000000000000e+01 0 -1 538 - 8.0950000000000000e+02 -2 -3 539 2.6500000000000000e+01 - - 3.8693800568580627e-01 -4.4410958886146545e-01 - -1.4373737573623657e-01 6.0054707527160645e-01 - <_> - 1.8992055892944336e+01 - - 1 2 540 9.6050000000000000e+02 0 -1 541 - 5.0000000000000000e-01 -2 -3 542 4.2985000000000000e+03 - - 3.1399947404861450e-01 -4.3735453486442566e-01 - 5.6782770156860352e-01 -7.3470437526702881e-01 - <_> - 1.8955116271972656e+01 - - 1 2 543 3.5000000000000000e+00 0 -1 544 - 1.1500000000000000e+01 -2 -3 545 321. - - -8.4036970138549805e-01 6.5071582794189453e-01 - 2.5595465302467346e-01 -5.7423371076583862e-01 - <_> - 1.9468976974487305e+01 - - 1 2 546 8.6500000000000000e+01 0 -1 547 - 2.0500000000000000e+01 -2 -3 548 5.8500000000000000e+01 - - -4.5299276709556580e-01 6.0038709640502930e-01 - 4.3307629227638245e-01 -9.3825417757034302e-01 - <_> - 1.9293138504028320e+01 - - 1 2 549 4.7250000000000000e+02 0 -1 550 1323. -2 -3 551 - 5.9650000000000000e+02 - - 5.0125539302825928e-01 -7.2148317098617554e-01 - 2.1997858583927155e-01 -9.2881590127944946e-01 - <_> - 1.9323114395141602e+01 - - 1 2 552 1314. 0 -1 553 1.9850000000000000e+02 -2 -3 554 - 8.8500000000000000e+01 - - -6.5315421670675278e-03 -9.2719602584838867e-01 - -7.3869484663009644e-01 9.9385118484497070e-01 - <_> - 1.9764301300048828e+01 - - 1 2 555 1.5000000000000000e+00 0 -1 556 - 1.5000000000000000e+00 -2 -3 557 5.0000000000000000e-01 - - -9.3367540836334229e-01 7.1327829360961914e-01 - 4.4118791818618774e-01 -1.8068529665470123e-01 - <_> - 1.9636823654174805e+01 - - 1 2 558 1.0500000000000000e+01 0 -1 559 42. -2 -3 560 - 5.5000000000000000e+00 - - 6.9835877418518066e-01 -4.6136018633842468e-01 - 4.5605877041816711e-01 -4.3727838993072510e-01 - <_> - 1.9982168197631836e+01 - - 1 2 561 2.0995000000000000e+03 0 -1 562 - 2.3500000000000000e+01 -2 -3 563 6.4650000000000000e+02 - - -3.2764279842376709e-01 3.4534373879432678e-01 - -8.4930855035781860e-01 6.6431248188018799e-01 - <_> - 2.0156673431396484e+01 - - 1 2 564 4.7500000000000000e+01 0 -1 565 - 3.5000000000000000e+00 -2 -3 566 2. - - -8.3068168163299561e-01 1.7450474202632904e-01 1. - -9.4794863462448120e-01 - <_> - 2.0342718124389648e+01 - - 1 2 567 6.7050000000000000e+02 0 -1 568 - 3.8850000000000000e+02 -2 -3 569 2.5755000000000000e+03 - - -9.3422073125839233e-01 7.7690583467483521e-01 - 1.8604567646980286e-01 -6.9958645105361938e-01 - <_> - 2.0286355972290039e+01 - - 1 2 570 1.5000000000000000e+00 0 -1 571 - 7.5000000000000000e+00 -2 -3 572 5.0000000000000000e-01 - - -7.9801106452941895e-01 9.1817361116409302e-01 - 5.1868724822998047e-01 -1.3428531587123871e-01 - <_> - 2.0473787307739258e+01 - - 1 2 573 1.1500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 4.7500000000000000e+01 - - -2.0607861876487732e-01 3.6932748556137085e-01 - 9.0319371223449707e-01 -7.2204840183258057e-01 - <_> - 2.0658784866333008e+01 - - 1 2 576 7.5000000000000000e+00 0 -1 577 3433. -2 -3 578 - 6.2500000000000000e+01 - - 1.9685469567775726e-01 -4.9899685382843018e-01 - -7.9635071754455566e-01 5.0583815574645996e-01 - <_> - 2.0441154479980469e+01 - - 1 2 579 5.0000000000000000e-01 0 -1 580 - 3.5000000000000000e+00 -2 -3 581 1.8500000000000000e+01 - - -5.8347612619400024e-01 4.0611305832862854e-01 - -5.7296335697174072e-01 2.9519164562225342e-01 - <_> - 2.0645282745361328e+01 - - 1 2 582 143. 0 -1 583 6.8650000000000000e+02 -2 -3 584 649. - - -6.6834068298339844e-01 2.0412844419479370e-01 - -9.8975163698196411e-01 1. - <_> - 2.0787359237670898e+01 - - 1 2 585 5.0000000000000000e-01 0 -1 586 - 1.1050000000000000e+02 -2 -3 587 2.1595000000000000e+03 - - -9.9584645032882690e-01 1. 1.4207656681537628e-01 - -7.9576474428176880e-01 - <_> - 2.0707267761230469e+01 - - 1 2 588 4.0500000000000000e+01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 4.0500000000000000e+01 - - 1.6863887012004852e-01 -7.4707168340682983e-01 - 2.8594267368316650e-01 -6.7254680395126343e-01 - <_> - 2.0992578506469727e+01 - - 1 2 591 1.5000000000000000e+00 0 -1 592 - 3.5775000000000000e+03 -2 -3 593 2.7500000000000000e+01 - - -5.0894987583160400e-01 3.7313565611839294e-01 - -6.0100066661834717e-01 6.3888049125671387e-01 - <_> - 2.0971927642822266e+01 - - 1 2 594 9.7950000000000000e+02 0 -1 595 - 2.5000000000000000e+00 -2 -3 596 1.2500000000000000e+01 - - -9.5684701204299927e-01 3.9113646745681763e-01 - -7.6442521810531616e-01 3.0187612865120173e-03 - <_> - 2.1057394027709961e+01 - - 1 2 597 1.4905000000000000e+03 0 -1 598 - 9.5000000000000000e+00 -2 -3 599 240. - - -6.4642834663391113e-01 2.3087054491043091e-01 - -7.9448556900024414e-01 7.0878070592880249e-01 - <_> - 2.1131835937500000e+01 - - 1 2 600 5.0000000000000000e-01 0 -1 601 - 1.1500000000000000e+01 -2 -3 602 1.2500000000000000e+01 - - 6.5756827592849731e-01 -4.2822453379631042e-01 - -5.9723109006881714e-01 7.4441045522689819e-02 - <_> - 2.1433628082275391e+01 - - 1 2 603 1.5000000000000000e+00 0 -1 604 - 7.5000000000000000e+00 -2 -3 605 3.5000000000000000e+00 - - -8.7854373455047607e-01 7.6638579368591309e-01 - 3.0179315805435181e-01 -3.0907711386680603e-01 - <_> - 2.1259273529052734e+01 - - 1 2 606 1.2500000000000000e+01 0 -1 607 - 1.1125000000000000e+03 -2 -3 608 1.1500000000000000e+01 - - 4.3398761749267578e-01 -1.8727415800094604e-01 - -8.8575565814971924e-01 1.4398224651813507e-01 - <_> - 2.1612953186035156e+01 - - 1 2 609 1.3315000000000000e+03 0 -1 610 - 4.0350000000000000e+02 -2 -3 611 6.3550000000000000e+02 - - 8.9413803815841675e-01 -6.8928855657577515e-01 - -6.9387888908386230e-01 3.5367938876152039e-01 - <_> - 2.1826734542846680e+01 - - 1 2 612 1.1500000000000000e+01 0 -1 613 738. -2 -3 614 - 1.4500000000000000e+01 - - 8.1296756863594055e-02 -5.6762868165969849e-01 - 6.0727953910827637e-01 -3.7829330563545227e-01 - <_> - 2.1813869476318359e+01 - - 1 2 615 6.5000000000000000e+00 0 -1 616 - 7.7500000000000000e+01 -2 -3 617 1.5000000000000000e+00 - - 2.1756103634834290e-01 -7.3381489515304565e-01 - -6.3975960016250610e-01 3.6597716808319092e-01 - <_> - 2.1798274993896484e+01 - - 1 2 618 9.8500000000000000e+01 0 -1 619 - 8.5000000000000000e+00 -2 -3 620 28. - - -8.9957195520401001e-01 -1.5594468452036381e-02 - 9.6554172039031982e-01 -1. - <_> - 2.2045146942138672e+01 - - 1 2 621 1.0500000000000000e+01 0 -1 622 - 1.2150000000000000e+02 -2 -3 623 7.5000000000000000e+00 - - 2.4687227606773376e-01 -6.0773706436157227e-01 - 6.2245130538940430e-01 -8.7604373693466187e-01 - <_> - 2.2289304733276367e+01 - - 1 2 624 2.1500000000000000e+01 0 -1 625 2144. -2 -3 626 - 5056. - - 7.7314263582229614e-01 -6.9932037591934204e-01 - 2.4415786564350128e-01 -8.8758051395416260e-01 - <_> - 2.2602016448974609e+01 - - 1 2 627 1.5000000000000000e+00 0 -1 628 - 5.0000000000000000e-01 -2 -3 629 8.1195000000000000e+03 - - -7.8916621208190918e-01 2.9944726824760437e-01 - -6.2123262882232666e-01 4.2162239551544189e-01 - <_> - 2.2234420776367188e+01 - - 1 2 630 1.3750000000000000e+02 0 -1 631 - 1.4500000000000000e+01 -2 -3 632 2.7050000000000000e+02 - - -7.3317313194274902e-01 4.4363144040107727e-01 - 7.8055197000503540e-01 -1.7540968954563141e-02 - <_> - 2.2243850708007812e+01 - - 1 2 633 2.2500000000000000e+01 0 -1 634 - 2.3085000000000000e+03 -2 -3 635 42. - - -3.4062522649765015e-01 3.7752479314804077e-01 - -7.3773044347763062e-01 9.6723818778991699e-01 - <_> - 2.2620014190673828e+01 - - 1 2 636 2.5450000000000000e+02 0 -1 637 1638. -2 -3 638 - 7.9500000000000000e+01 - - -1. 5.5116891860961914e-01 5.1822501420974731e-01 - -4.3004354834556580e-01 - <_> - 2.2705764770507812e+01 - - 1 2 639 8.0500000000000000e+01 0 -1 640 - 6.2500000000000000e+01 -2 -3 641 5.5000000000000000e+00 - - 4.8537842929363251e-02 -7.3003268241882324e-01 - -4.5735052227973938e-01 4.5716404914855957e-01 - <_> - 2.3073215484619141e+01 - - 1 2 642 5.0000000000000000e-01 0 -1 643 67. -2 -3 644 - 1.2500000000000000e+01 - - 4.7742471098899841e-01 -4.7727224230766296e-01 - -7.2737669944763184e-01 -3.9639626629650593e-03 - <_> - 2.2770978927612305e+01 - - 1 2 645 5.0000000000000000e-01 0 -1 646 - 3.4500000000000000e+01 -2 -3 647 2.5500000000000000e+01 - - -4.7273349761962891e-01 4.8523208498954773e-01 - -4.1221085190773010e-01 7.4450951814651489e-01 - <_> - 2.3053560256958008e+01 - - 1 2 648 5.8500000000000000e+01 0 -1 649 - 3.5000000000000000e+00 -2 -3 650 4091. - - -6.9219940900802612e-01 2.8258267045021057e-01 - -7.4919438362121582e-01 6.5003573894500732e-01 - <_> - 2.3276559829711914e+01 - - 1 2 651 5.6950000000000000e+02 0 -1 652 - 8.5000000000000000e+00 -2 -3 653 3477. - - -6.9101506471633911e-01 3.5786962509155273e-01 - 2.2299802303314209e-01 -9.4931131601333618e-01 - <_> - 2.3533079147338867e+01 - - 1 2 654 5.5000000000000000e+00 0 -1 655 332. -2 -3 656 - 8.5000000000000000e+00 - - -7.7509003877639771e-01 2.4864099919795990e-01 - -8.9089441299438477e-01 2.5652095675468445e-01 - <_> - 2.3692926406860352e+01 - - 1 2 657 179. 0 -1 658 6.5000000000000000e+00 -2 -3 659 - 2.8500000000000000e+01 - - -6.2848848104476929e-01 1.5984721481800079e-01 - -9.5576328039169312e-01 1. - <_> - 2.3690643310546875e+01 - - 1 2 660 6.5000000000000000e+00 0 -1 661 - 7.7150000000000000e+02 -2 -3 662 1.0650000000000000e+02 - - 5.1587861776351929e-01 -4.7098684310913086e-01 - -7.3770999908447266e-01 -2.2840783931314945e-03 - <_> - 2.3260368347167969e+01 - - 1 2 663 8.2500000000000000e+01 0 -1 664 495. -2 -3 665 - 7.5000000000000000e+00 - - 2.7576848864555359e-01 -4.3027460575103760e-01 - -8.6191612482070923e-01 8.7688070535659790e-01 - <_> - 2.3660942077636719e+01 - - 1 2 666 1.7500000000000000e+01 0 -1 667 - 1.0865000000000000e+03 -2 -3 668 2.0250000000000000e+02 - - 4.7176504135131836e-01 -5.2642983198165894e-01 - 4.0057408809661865e-01 -8.7875026464462280e-01 - <_> - 2.4066463470458984e+01 - - 1 2 669 5.0000000000000000e-01 0 -1 670 - 1.5000000000000000e+00 -2 -3 671 4.7075000000000000e+03 - - -6.6087967157363892e-01 4.0552178025245667e-01 - -6.2758755683898926e-01 1.0652454942464828e-01 - <_> - 2.4266839981079102e+01 - - 1 2 672 2.0350000000000000e+02 0 -1 673 - 2.5000000000000000e+00 -2 -3 674 39. - - 2.8337255120277405e-01 -3.3040466904640198e-01 - -9.6718847751617432e-01 1. - <_> - 2.4499465942382812e+01 - - 1 2 675 4.5000000000000000e+00 0 -1 676 - 8.5500000000000000e+01 -2 -3 677 2.9500000000000000e+01 - - 2.5911253690719604e-01 -9.6787214279174805e-01 - -6.9402277469635010e-01 5.6080824136734009e-01 - <_> - 2.4309822082519531e+01 - - 1 2 678 1971. 0 -1 679 1.9250000000000000e+02 -2 -3 680 - 6.5000000000000000e+00 - - -2.1612957119941711e-01 4.7077748179435730e-01 -1. 1. - <_> - 2.4519950866699219e+01 - - 1 2 681 2.5000000000000000e+00 0 -1 682 - 6.4500000000000000e+01 -2 -3 683 5182. - - -8.2460224628448486e-01 8.7737298011779785e-01 - 2.1012841165065765e-01 -8.8150328397750854e-01 - <_> - 2.4720569610595703e+01 - - 1 2 684 1.3650000000000000e+02 0 -1 685 25. -2 -3 686 - 1.3500000000000000e+01 - - -8.2181477546691895e-01 9.6672326326370239e-01 - -5.3705835342407227e-01 2.0061893761157990e-01 - <_> - 2.4895112991333008e+01 - - 1 2 687 5.6150000000000000e+02 0 -1 688 - 2.2500000000000000e+01 -2 -3 689 5.3500000000000000e+01 - - 3.6230182647705078e-01 -4.9504366517066956e-01 - -7.3248720169067383e-01 2.2656767070293427e-01 - <_> - 2.5140346527099609e+01 - - 1 2 690 8.2750000000000000e+02 0 -1 691 - 2.0500000000000000e+01 -2 -3 692 1.4500000000000000e+01 - - 1. -7.5348693132400513e-01 2.4523276090621948e-01 - -7.0938748121261597e-01 - <_> - 2.5441709518432617e+01 - - 1 2 693 5.5500000000000000e+01 0 -1 694 107. -2 -3 695 1485. - - -9.0809267759323120e-01 3.3544850349426270e-01 - 3.0136233568191528e-01 -5.6638139486312866e-01 - <_> - 2.5376996994018555e+01 - - 1 2 696 8.6950000000000000e+02 0 -1 697 - 7.9550000000000000e+02 -2 -3 698 2.1500000000000000e+01 - - 7.4912220239639282e-01 -3.0485934019088745e-01 - -7.2537702322006226e-01 7.1400356292724609e-01 - <_> - 2.5612064361572266e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 138. -2 -3 701 116. - - -7.7075809240341187e-01 3.9907371997833252e-01 - 2.3506735265254974e-01 -8.8968700170516968e-01 - <_> - 2.5189540863037109e+01 - - 1 2 702 5.0000000000000000e-01 0 -1 703 - 6.5000000000000000e+00 -2 -3 704 3.8450000000000000e+02 - - -8.5147231817245483e-01 5.4190635681152344e-01 - -4.4539606571197510e-01 2.2795633971691132e-01 - <_> - 2.5407213211059570e+01 - - 1 2 705 3.3500000000000000e+01 0 -1 706 - 1.1500000000000000e+01 -2 -3 707 1901. - - -7.7322483062744141e-01 2.1767215430736542e-01 - 9.4849103689193726e-01 -8.7567967176437378e-01 - <_> - 2.5786802291870117e+01 - - 1 2 708 8.5000000000000000e+00 0 -1 709 - 2.5000000000000000e+00 -2 -3 710 8.5000000000000000e+00 - - -7.5751757621765137e-01 3.7958872318267822e-01 - -4.7660508751869202e-01 4.8092725872993469e-01 - <_> - 2.5473979949951172e+01 - - 1 2 711 1.5000000000000000e+00 0 -1 712 - 7.4500000000000000e+01 -2 -3 713 5.7500000000000000e+01 - - 2.9737165570259094e-01 -8.2402235269546509e-01 - -6.5980869531631470e-01 6.1398154497146606e-01 - <_> - 2.5540870666503906e+01 - - 1 2 714 3.7350000000000000e+02 0 -1 715 - 2.9505000000000000e+03 -2 -3 716 9.5000000000000000e+00 - - -6.5127277374267578e-01 6.5197062492370605e-01 - -6.7328959703445435e-01 1.1752647906541824e-01 - <_> - 2.5936344146728516e+01 - - 1 2 717 2.8050000000000000e+02 0 -1 718 - 8.2650000000000000e+02 -2 -3 719 1.5500000000000000e+01 - - -5.2938359975814819e-01 3.9547443389892578e-01 - -5.2698332071304321e-01 4.4910645484924316e-01 - <_> - 2.6225696563720703e+01 - - 1 2 720 1.9500000000000000e+01 0 -1 721 - 2.5000000000000000e+00 -2 -3 722 1.4500000000000000e+01 - - 1.6689567267894745e-01 -7.3722118139266968e-01 - -9.5677989721298218e-01 2.8935295343399048e-01 - <_> - 2.6555488586425781e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.2500000000000000e+01 -2 -3 725 1631. - - 4.2182460427284241e-01 -3.9694768190383911e-01 - 4.5795905590057373e-01 -6.3281345367431641e-01 - <_> - 2.6691946029663086e+01 - - 1 2 726 3.5000000000000000e+00 0 -1 727 21. -2 -3 728 - 4.6085000000000000e+03 - - -9.2932611703872681e-01 7.4499356746673584e-01 - -7.0849519968032837e-01 1.8352256715297699e-01 - <_> - 2.6950445175170898e+01 - - 1 2 729 1.4500000000000000e+01 0 -1 730 4. -2 -3 731 - 1.0350000000000000e+02 - - -7.1716350317001343e-01 9.3681764602661133e-01 - 2.5849872827529907e-01 -4.7314143180847168e-01 - <_> - 2.6939081192016602e+01 - - 1 2 732 1.5000000000000000e+00 0 -1 733 - 2.0795000000000000e+03 -2 -3 734 7.5000000000000000e+00 - - 2.1902434527873993e-01 -4.7005906701087952e-01 - -8.4192562103271484e-01 4.5465546846389771e-01 - <_> - 2.7115922927856445e+01 - - 1 2 735 1.6195000000000000e+03 0 -1 736 - 4.0500000000000000e+01 -2 -3 737 1.4615000000000000e+03 - - -8.8821536302566528e-01 9.0963160991668701e-01 - 1.7684206366539001e-01 -9.4462066888809204e-01 - <_> - 2.6933712005615234e+01 - - 1 2 738 7.6500000000000000e+01 0 -1 739 - 2.5000000000000000e+00 -2 -3 740 5.8500000000000000e+01 - - -6.7025911808013916e-01 5.9105753898620605e-01 - -6.4823073148727417e-01 6.9816927425563335e-03 - <_> - 2.7318225860595703e+01 - - 1 2 741 1.0500000000000000e+01 0 -1 742 - 6.5000000000000000e+00 -2 -3 743 5.0000000000000000e-01 - - -9.2393940687179565e-01 4.3340095877647400e-01 - 2.4541635811328888e-01 -5.6279599666595459e-01 - <_> - 2.7502586364746094e+01 - - 1 2 744 1.3500000000000000e+01 0 -1 745 - 1.2225000000000000e+03 -2 -3 746 5.4150000000000000e+02 - - 5.5172622203826904e-01 -7.2232311964035034e-01 - 4.6869617700576782e-01 -1.8173764646053314e-01 - <_> - 2.7214946746826172e+01 - - 1 2 747 1.4150000000000000e+02 0 -1 748 - 3.7950000000000000e+02 -2 -3 749 61. - - -4.1489991545677185e-01 2.9794070124626160e-01 - -8.2065957784652710e-01 8.2294362783432007e-01 - <_> - 2.7621316909790039e+01 - - 1 2 750 1.1500000000000000e+01 0 -1 751 - 4.5000000000000000e+00 -2 -3 752 1.5500000000000000e+01 - - -7.9229009151458740e-01 6.2740081548690796e-01 - -1.7920996248722076e-01 4.1656208038330078e-01 - <_> - 2.7612428665161133e+01 - - 1 2 753 5.0000000000000000e-01 0 -1 754 - 2.8500000000000000e+01 -2 -3 755 4.5000000000000000e+00 - - 3.2633483409881592e-01 -8.3926248550415039e-01 - -5.7256150245666504e-01 4.7886747121810913e-01 - <_> - 2.7621551513671875e+01 - - 1 2 756 3.9500000000000000e+01 0 -1 757 - 4.5000000000000000e+00 -2 -3 758 4.6500000000000000e+01 - - -7.9190528392791748e-01 7.2100400924682617e-01 - -6.1043661832809448e-01 2.2514465451240540e-01 - <_> - 2.7723453521728516e+01 - - 1 2 759 1.6500000000000000e+01 0 -1 760 - 4.4500000000000000e+01 -2 -3 761 2.6500000000000000e+01 - - 2.8901249170303345e-01 -6.9448781013488770e-01 - -6.7865383625030518e-01 2.3160243034362793e-01 - <_> - 2.7726175308227539e+01 - - 1 2 762 1.7575000000000000e+03 0 -1 763 - 4.8150000000000000e+02 -2 -3 764 1.5000000000000000e+00 - - -1.7173323035240173e-01 5.9590691328048706e-01 1. - -9.7047579288482666e-01 - <_> - 2.7928655624389648e+01 - - 1 2 765 4.5000000000000000e+00 0 -1 766 - 1.0065000000000000e+03 -2 -3 767 5.5000000000000000e+00 - - 2.0247912406921387e-01 -7.2847056388854980e-01 - -7.9157161712646484e-01 8.0997580289840698e-01 - <_> - 2.7728637695312500e+01 - - 1 2 768 1.0500000000000000e+01 0 -1 769 - 4.5115000000000000e+03 -2 -3 770 1.7500000000000000e+01 - - 4.2019289731979370e-01 -5.3036731481552124e-01 - 1.8375186249613762e-02 7.1707320213317871e-01 - <_> - 2.7544672012329102e+01 - - 1 2 771 5.0000000000000000e-01 0 -1 772 - 6.5000000000000000e+00 -2 -3 773 141. - - -7.9169616103172302e-02 7.2869366407394409e-01 - -4.0235754847526550e-01 7.5083994865417480e-01 - <_> - 2.7790304183959961e+01 - - 1 2 774 4.9500000000000000e+01 0 -1 775 - 5.5500000000000000e+01 -2 -3 776 2.6500000000000000e+01 - - 2.4563054740428925e-01 -7.8368049860000610e-01 - -8.9967381954193115e-01 5.1768815517425537e-01 - <_> - 2.8035869598388672e+01 - - 1 2 777 2.5000000000000000e+00 0 -1 778 - 6.5000000000000000e+00 -2 -3 779 2.7450000000000000e+02 - - -7.9386472702026367e-01 8.1500089168548584e-01 - 2.4556700885295868e-01 -4.2904964089393616e-01 - <_> - 2.8410558700561523e+01 - - 1 2 780 8.0500000000000000e+01 0 -1 781 - 1.6500000000000000e+01 -2 -3 782 5.4050000000000000e+02 - - 1.7172537744045258e-01 -6.2181609869003296e-01 - -8.8481485843658447e-01 3.7468841671943665e-01 - <_> - 2.8699789047241211e+01 - - 1 2 783 2.9785000000000000e+03 0 -1 784 - 2.5000000000000000e+00 -2 -3 785 1.5435000000000000e+03 - - -4.2753055691719055e-01 2.8923121094703674e-01 - -6.7698192596435547e-01 6.4550709724426270e-01 - <_> - 2.8761243820190430e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 5.0000000000000000e-01 -2 -3 788 737. - - -6.4694476127624512e-01 6.8557661771774292e-01 - -3.9006941020488739e-02 -8.6166292428970337e-01 - <_> - 2.8647882461547852e+01 - - 1 2 789 6.7500000000000000e+01 0 -1 790 - 5.5000000000000000e+00 -2 -3 791 7. - - 1.9915813207626343e-01 -3.6753433942794800e-01 - 9.2020016908645630e-01 -9.4368237257003784e-01 - <_> - 2.8875740051269531e+01 - - 1 2 792 1.9135000000000000e+03 0 -1 793 - 1.1050000000000000e+02 -2 -3 794 4.5000000000000000e+00 - - 7.2780048847198486e-01 -8.9423495531082153e-01 - -8.4068304300308228e-01 2.2785744071006775e-01 - <_> - 2.9072935104370117e+01 - - 1 2 795 2.5000000000000000e+00 0 -1 796 - 5.5000000000000000e+00 -2 -3 797 1.2500000000000000e+01 - - -8.2929813861846924e-01 7.2042435407638550e-01 - 1.9719591736793518e-01 -5.5431854724884033e-01 - <_> - 2.9138673782348633e+01 - - 1 2 798 1.0050000000000000e+02 0 -1 799 - 1.5000000000000000e+00 -2 -3 800 1.4500000000000000e+01 - - -2.4678048491477966e-01 3.4682708978652954e-01 - -9.5431810617446899e-01 4.5664411783218384e-01 - <_> - 2.9052175521850586e+01 - - 1 2 801 5.0000000000000000e-01 0 -1 802 - 1.5000000000000000e+00 -2 -3 803 6.0500000000000000e+01 - - -9.4168990850448608e-02 7.1325784921646118e-01 - -5.5271577835083008e-01 1.8420556187629700e-01 - <_> - 2.9330022811889648e+01 - - 1 2 804 3.8150000000000000e+02 0 -1 805 - 2.2500000000000000e+01 -2 -3 806 1.4250000000000000e+02 - - -5.2190852165222168e-01 5.3806591033935547e-01 - 4.2104244232177734e-01 -7.3786729574203491e-01 - <_> - 2.9613933563232422e+01 - - 1 2 807 3400. 0 -1 808 6.5000000000000000e+00 -2 -3 809 65. - - -7.2601109743118286e-01 2.8390964865684509e-01 - -7.5218343734741211e-01 8.2199627161026001e-01 - <_> - 2.9662286758422852e+01 - - 1 2 810 3.5500000000000000e+01 0 -1 811 - 4.5000000000000000e+00 -2 -3 812 1.9895000000000000e+03 - - 4.8528853058815002e-01 -4.5970219373703003e-01 - 5.2159059047698975e-01 -3.5259509086608887e-01 - <_> - 3.0010950088500977e+01 - - 1 2 813 3.7500000000000000e+01 0 -1 814 - 1.5000000000000000e+00 -2 -3 815 1.5000000000000000e+00 - - -3.6858716607093811e-01 3.4866285324096680e-01 - 5.0721812248229980e-01 -7.1738111972808838e-01 - <_> - 3.0259206771850586e+01 - - 1 2 816 5.0000000000000000e-01 0 -1 817 - 1.5000000000000000e+00 -2 -3 818 9.5000000000000000e+00 - - -8.2673883438110352e-01 2.4825666844844818e-01 - -6.8298560380935669e-01 5.7589280605316162e-01 - <_> - 3.0020807266235352e+01 - - 1 2 819 83. 0 -1 820 1.0535000000000000e+03 -2 -3 821 - 8.5000000000000000e+00 - - 8.0070614814758301e-01 -2.3839974403381348e-01 - -9.7618216276168823e-01 8.3897125720977783e-01 - <_> - 2.9989406585693359e+01 - - 1 2 822 1.8950000000000000e+02 0 -1 823 - 1.1500000000000000e+01 -2 -3 824 9.4350000000000000e+02 - - -7.3252147436141968e-01 8.0616372823715210e-01 - 6.4727967977523804e-01 -3.1400017440319061e-02 - <_> - 3.0537582397460938e+01 - - 1 2 825 137. 0 -1 826 1.2500000000000000e+01 -2 -3 827 - 1.0500000000000000e+01 - - 2.7069351077079773e-01 -5.2906340360641479e-01 - -6.5592831373214722e-01 6.3111066818237305e-01 - <_> - 3.0424352645874023e+01 - - 1 2 828 3.5000000000000000e+00 0 -1 829 - 5.2500000000000000e+01 -2 -3 830 4.6925000000000000e+03 - - -5.9484475851058960e-01 9.3662506341934204e-01 - -1.9616512954235077e-01 5.3609508275985718e-01 - <_> - 3.0629121780395508e+01 - - 1 2 831 5.6500000000000000e+01 0 -1 832 - 1.4500000000000000e+01 -2 -3 833 1.3250000000000000e+02 - - -5.8516901731491089e-01 2.3027215898036957e-01 1. - -9.8997932672500610e-01 - <_> - 3.0788936614990234e+01 - - 1 2 834 3.5000000000000000e+00 0 -1 835 - 6.5350000000000000e+02 -2 -3 836 11093. - - -9.8764348030090332e-01 4.6165758371353149e-01 - 1.5981569886207581e-01 -6.9765907526016235e-01 - <_> - 3.1141653060913086e+01 - - 1 2 837 4.5000000000000000e+00 0 -1 838 - 4.1450000000000000e+02 -2 -3 839 4.6500000000000000e+01 - - -4.2362187057733536e-02 -7.4213159084320068e-01 - 4.0540441870689392e-01 -7.6012396812438965e-01 - <_> - 3.0861505508422852e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.6050000000000000e+02 -2 -3 842 2.1500000000000000e+01 - - -3.3283695578575134e-01 4.4167187809944153e-01 - -6.5066546201705933e-01 1.7719769477844238e-01 - <_> - 3.1108386993408203e+01 - - 1 2 843 6.5000000000000000e+00 0 -1 844 - 1.6500000000000000e+01 -2 -3 845 1.7550000000000000e+02 - - -5.6530058383941650e-01 3.4583663940429688e-01 - 4.2246490716934204e-01 -4.7493830323219299e-01 - <_> - 3.0905292510986328e+01 - - 1 2 846 5.0000000000000000e-01 0 -1 847 - 5.0000000000000000e-01 -2 -3 848 7.9500000000000000e+01 - - -9.8497194051742554e-01 6.4031112194061279e-01 - 2.4801021814346313e-01 -3.7024465203285217e-01 - <_> - 3.1213197708129883e+01 - - 1 2 849 5.5000000000000000e+00 0 -1 850 - 4.7500000000000000e+01 -2 -3 851 1.5000000000000000e+00 - - 7.6301777362823486e-01 -6.2367314100265503e-01 - -6.4380615949630737e-01 3.0790489912033081e-01 - <_> - 3.1416584014892578e+01 - - 1 2 852 4.3500000000000000e+01 0 -1 853 - 1.0075000000000000e+03 -2 -3 854 5.2500000000000000e+01 - - 2.0338761806488037e-01 -6.1455827951431274e-01 - -7.8569060564041138e-01 9.5953434705734253e-01 - <_> - 3.1777565002441406e+01 - - 1 2 855 6.0500000000000000e+01 0 -1 856 - 8.5000000000000000e+00 -2 -3 857 36. - - -8.4394145011901855e-01 -3.6948818713426590e-02 -1. - 7.5613290071487427e-01 - <_> - 3.1868429183959961e+01 - - 1 2 858 1.0995000000000000e+03 0 -1 859 - 1.5000000000000000e+00 -2 -3 860 5.0000000000000000e-01 - - 6.7010629177093506e-01 -8.0424994230270386e-01 - 3.4220331907272339e-01 -2.0251852273941040e-01 - <_> - 3.2119094848632812e+01 - - 1 2 861 1.2500000000000000e+01 0 -1 862 - 3.1500000000000000e+01 -2 -3 863 3.9500000000000000e+01 - - -8.0597108602523804e-01 8.6892396211624146e-01 - 2.5066429376602173e-01 -6.2346094846725464e-01 - <_> - 3.2155685424804688e+01 - - 1 2 864 1.8950000000000000e+02 0 -1 865 57. -2 -3 866 - 2.5500000000000000e+01 - - -5.4910677671432495e-01 1. 3.7413713335990906e-01 - -2.5834947824478149e-01 - <_> - 3.2015361785888672e+01 - - 1 2 867 1.3550000000000000e+02 0 -1 868 - 5.2750000000000000e+02 -2 -3 869 1.7500000000000000e+01 - - -7.7796685695648193e-01 6.6702580451965332e-01 - -4.7787085175514221e-01 1.4796376228332520e-01 - <_> - 3.1791172027587891e+01 - - 1 2 870 1.0500000000000000e+01 0 -1 871 - 1.5000000000000000e+00 -2 -3 872 1.5000000000000000e+00 - - -2.8536421060562134e-01 4.9085628986358643e-01 - -6.3147133588790894e-01 1.6832475364208221e-01 - <_> - 3.1905895233154297e+01 - - 1 2 873 1.5000000000000000e+00 0 -1 874 42. -2 -3 875 - 9.5000000000000000e+00 - - 3.4199193120002747e-01 -8.8441103696823120e-01 - -1.7228755354881287e-01 4.5159018039703369e-01 - <_> - 3.1859363555908203e+01 - - 1 2 876 5.0000000000000000e-01 0 -1 877 - 2.5500000000000000e+01 -2 -3 878 9.4550000000000000e+02 - - 5.9279948472976685e-01 -2.5542417168617249e-01 - 4.9418550729751587e-01 -4.7456571459770203e-01 - <_> - 3.2239162445068359e+01 - - 1 2 879 5.3500000000000000e+01 0 -1 880 - 4.5000000000000000e+00 -2 -3 881 4.5000000000000000e+00 - - 7.3520237207412720e-01 -6.6513210535049438e-01 - -3.7311753630638123e-01 3.7980049848556519e-01 - <_> - 3.2603000640869141e+01 - - 1 2 882 8.3850000000000000e+02 0 -1 883 - 8.6500000000000000e+01 -2 -3 884 9.5000000000000000e+00 - - -1.6610033810138702e-01 5.5568897724151611e-01 - 2.8593140840530396e-01 -8.1610012054443359e-01 - <_> - 3.2873931884765625e+01 - - 1 2 885 9.5000000000000000e+00 0 -1 886 - 1.4150000000000000e+02 -2 -3 887 4.8500000000000000e+01 - - 2.7093270421028137e-01 -5.1437872648239136e-01 - 8.1497925519943237e-01 -7.3167830705642700e-01 - <_> - 3.2916114807128906e+01 - - 1 2 888 6.7250000000000000e+02 0 -1 889 - 2.5500000000000000e+01 -2 -3 890 9.5000000000000000e+00 - - 2.9060255736112595e-02 -6.9740939140319824e-01 - -6.7421448230743408e-01 4.8431751132011414e-01 - <_> - 3.3245323181152344e+01 - - 1 2 891 1.0500000000000000e+01 0 -1 892 - 8.6500000000000000e+01 -2 -3 893 6.5000000000000000e+00 - - -6.1663192510604858e-01 4.0390256047248840e-01 - -6.7292958498001099e-01 3.2920929789543152e-01 - <_> - 3.3257518768310547e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 9.5500000000000000e+01 -2 -3 896 5.0000000000000000e-01 - - 3.6125457286834717e-01 -7.1330851316452026e-01 - 5.2750295400619507e-01 -5.3229171037673950e-01 - <_> - 3.3523788452148438e+01 - - 1 2 897 9.5000000000000000e+00 0 -1 898 - 1.5500000000000000e+01 -2 -3 899 4.3650000000000000e+02 - - 7.4386167526245117e-01 -9.6170389652252197e-01 - 3.7622943520545959e-01 -2.1613618731498718e-01 - <_> - 3.3737613677978516e+01 - - 1 2 900 3.5000000000000000e+00 0 -1 901 - 8.5000000000000000e+00 -2 -3 902 2199. - - -6.8732953071594238e-01 4.9332359433174133e-01 - 2.2702258825302124e-01 -9.8770850896835327e-01 - <_> - 3.3653835296630859e+01 - - 1 2 903 1.1500000000000000e+01 0 -1 904 - 7.5000000000000000e+00 -2 -3 905 2.7050000000000000e+02 - - -4.7830480337142944e-01 4.9322032928466797e-01 - -5.1515823602676392e-01 3.1019908189773560e-01 - <_> - 3.3810070037841797e+01 - - 1 2 906 6.5000000000000000e+00 0 -1 907 - 1.0500000000000000e+01 -2 -3 908 867. - - 3.3138540387153625e-01 -2.6744303107261658e-01 - -9.2749148607254028e-01 1. - <_> - 3.4129577636718750e+01 - - 1 2 909 1.6500000000000000e+01 0 -1 910 - 5.3050000000000000e+02 -2 -3 911 1781. - - 6.7194348573684692e-01 -6.2229406833648682e-01 - -7.0593923330307007e-01 3.7362939119338989e-01 - <_> - 3.3717624664306641e+01 - - 1 2 912 5.5000000000000000e+00 0 -1 913 - 5.6550000000000000e+02 -2 -3 914 3.7550000000000000e+02 - - -6.5654790401458740e-01 3.5677254199981689e-01 - 4.5081639289855957e-01 -6.4122611284255981e-01 - <_> - 3.3252494812011719e+01 - - 1 2 915 2.8150000000000000e+02 0 -1 916 - 1.9775000000000000e+03 -2 -3 917 4.4500000000000000e+01 - - 6.7867177724838257e-01 -6.4670372009277344e-01 - -4.6513071656227112e-01 2.1713301539421082e-01 - <_> - 3.3488639831542969e+01 - - 1 2 918 6.2500000000000000e+01 0 -1 919 - 3.5000000000000000e+00 -2 -3 920 1.7500000000000000e+01 - - -7.6731938123703003e-01 2.3614448308944702e-01 - -9.4595444202423096e-01 5.4001647233963013e-01 - <_> - 3.3984142303466797e+01 - - 1 2 921 3.5000000000000000e+00 0 -1 922 - 1.2050000000000000e+02 -2 -3 923 7.5000000000000000e+00 - - -3.0896291136741638e-01 5.7216274738311768e-01 - -6.0472279787063599e-01 4.7352880239486694e-02 - <_> - 3.4265426635742188e+01 - - 1 2 924 1.5000000000000000e+00 0 -1 925 - 2.6150000000000000e+02 -2 -3 926 9.0500000000000000e+01 - - 9.4074803590774536e-01 -6.7150580883026123e-01 - 2.8128537535667419e-01 -4.7385811805725098e-01 - <_> - 3.4247104644775391e+01 - - 1 2 927 5.1875000000000000e+03 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 113. - - -7.9879760742187500e-01 1.5954677760601044e-01 - -9.7634953260421753e-01 6.6887116432189941e-01 - <_> - 3.4600574493408203e+01 - - 1 2 930 2.2945000000000000e+03 0 -1 931 - 3.4500000000000000e+01 -2 -3 932 1.1745000000000000e+03 - - 5.7989984750747681e-01 -4.9893951416015625e-01 - 3.5346877574920654e-01 -8.6138629913330078e-01 - <_> - 3.4355884552001953e+01 - - 1 2 933 2.3500000000000000e+01 0 -1 934 - 2.4500000000000000e+01 -2 -3 935 12. - - -2.4468979239463806e-01 6.1856859922409058e-01 - -9.5042270421981812e-01 8.5911560058593750e-01 - <_> - 3.4614818572998047e+01 - - 1 2 936 1.5000000000000000e+00 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 1.1500000000000000e+01 - - -1.4536230266094208e-01 5.7274234294891357e-01 - -5.6978869438171387e-01 2.8933158516883850e-01 - <_> - 3.5054538726806641e+01 - - 1 2 939 7.5000000000000000e+00 0 -1 940 - 1.6500000000000000e+01 -2 -3 941 1.1500000000000000e+01 - - -9.2453199625015259e-01 4.3971973657608032e-01 - -5.6862127780914307e-01 2.2281785309314728e-01 - <_> - 3.5190509796142578e+01 - - 1 2 942 4.1500000000000000e+01 0 -1 943 - 8.5000000000000000e+00 -2 -3 944 1.1500000000000000e+01 - - -3.6428368091583252e-01 2.7655857801437378e-01 - 6.2536644935607910e-01 -1. - <_> - 3.5339462280273438e+01 - - 1 2 945 6.5000000000000000e+00 0 -1 946 - 1.9750000000000000e+02 -2 -3 947 3.5125000000000000e+03 - - 5.1457303762435913e-01 -5.4887962341308594e-01 - 2.5784909725189209e-01 -9.8039388656616211e-01 - <_> - 3.5533813476562500e+01 - - 1 2 948 2.7350000000000000e+02 0 -1 949 - 2.5000000000000000e+00 -2 -3 950 8.3950000000000000e+02 - - 4.3505680561065674e-01 -8.3620321750640869e-01 - 4.0167236328125000e-01 -2.1417175233364105e-01 - <_> - 3.5286861419677734e+01 - - 1 2 951 1.9050000000000000e+02 0 -1 952 - 1.8500000000000000e+01 -2 -3 953 5.8500000000000000e+01 - - -5.6316858530044556e-01 8.5937762260437012e-01 - 2.4829907715320587e-01 -9.5569574832916260e-01 - <_> - 3.5315326690673828e+01 - - 1 2 954 7.5000000000000000e+00 0 -1 955 - 6.8050000000000000e+02 -2 -3 956 2.7500000000000000e+01 - - -4.6678465604782104e-01 2.5904402136802673e-01 - -9.3793350458145142e-01 5.7032090425491333e-01 - <_> - 3.5714458465576172e+01 - - 1 2 957 4.3085000000000000e+03 0 -1 958 - 2.5000000000000000e+00 -2 -3 959 1.4750000000000000e+02 - - -4.9067273736000061e-01 3.9913412928581238e-01 - -5.7273352146148682e-01 4.2018249630928040e-01 - <_> - 3.5729091644287109e+01 - - 1 2 960 6.5500000000000000e+01 0 -1 961 - 1.0500000000000000e+01 -2 -3 962 5.0000000000000000e-01 - - 2.8838535770773888e-02 -7.4135571718215942e-01 - -8.2152175903320312e-01 5.0204771757125854e-01 - <_> - 3.5779636383056641e+01 - - 1 2 963 2.5000000000000000e+00 0 -1 964 - 5.3500000000000000e+01 -2 -3 965 5.2500000000000000e+01 - - 2.3911122977733612e-01 -9.5493316650390625e-01 - -7.1501338481903076e-01 6.6445010900497437e-01 - <_> - 3.5980289459228516e+01 - - 1 2 966 1.5000000000000000e+00 0 -1 967 - 4.2500000000000000e+01 -2 -3 968 9.9950000000000000e+02 - - 6.1156451702117920e-01 -8.5420590639114380e-01 - 2.0065380632877350e-01 -5.1614391803741455e-01 - <_> - 3.6252574920654297e+01 - - 1 2 969 2.5000000000000000e+00 0 -1 970 - 1.9465000000000000e+03 -2 -3 971 2.0500000000000000e+01 - - -3.4459114074707031e-02 -7.7200150489807129e-01 - 2.9512012004852295e-01 -8.9226943254470825e-01 - <_> - 3.6439735412597656e+01 - - 1 2 972 1.5000000000000000e+00 0 -1 973 41. -2 -3 974 - 5.0500000000000000e+01 - - -9.8086458444595337e-01 8.0683439970016479e-01 - 1.8715959787368774e-01 -5.6646823883056641e-01 - <_> - 3.6728237152099609e+01 - - 1 2 975 3.3500000000000000e+01 0 -1 976 - 9.7885000000000000e+03 -2 -3 977 1.2500000000000000e+01 - - -4.9251038581132889e-02 -9.2625564336776733e-01 - 2.8850206732749939e-01 -5.4534864425659180e-01 - <_> - 3.6843887329101562e+01 - - 1 2 978 2.6500000000000000e+01 0 -1 979 - 1.4500000000000000e+01 -2 -3 980 7.5000000000000000e+00 - - 2.1858909726142883e-01 -3.4160664677619934e-01 - -9.6077054738998413e-01 7.7676713466644287e-01 - <_> - 3.7005241394042969e+01 - - 1 2 981 2.1500000000000000e+01 0 -1 982 - 3.3450000000000000e+02 -2 -3 983 1.1500000000000000e+01 - - 2.9156139120459557e-02 -8.7990653514862061e-01 - -7.2488045692443848e-01 2.2520579397678375e-01 - <_> - 3.6797657012939453e+01 - - 1 2 984 2.6475000000000000e+03 0 -1 985 - 4.2500000000000000e+01 -2 -3 986 8.1550000000000000e+02 - - 2.2682635486125946e-01 -8.1636387109756470e-01 - 6.6246122121810913e-01 -3.4295175224542618e-02 - <_> - 3.6713920593261719e+01 - - 1 2 987 9.6500000000000000e+01 0 -1 988 548. -2 -3 989 - 2.8955000000000000e+03 - - -8.1589114665985107e-01 1. -4.9650618433952332e-01 - 2.2634685039520264e-01 - <_> - 3.6771007537841797e+01 - - 1 2 990 5.0000000000000000e-01 0 -1 991 249. -2 -3 992 - 1.0500000000000000e+01 - - -7.4486887454986572e-01 5.6141883134841919e-01 - 5.7086039334535599e-02 -6.7521327733993530e-01 - <_> - 3.6969486236572266e+01 - - 1 2 993 5.0000000000000000e-01 0 -1 994 - 1.6500000000000000e+01 -2 -3 995 4.8500000000000000e+01 - - -7.2038865089416504e-01 3.5195854306221008e-01 - -4.7452071309089661e-01 7.8814119100570679e-01 - <_> - 3.6943496704101562e+01 - - 1 2 996 3.9950000000000000e+02 0 -1 997 - 1.5405000000000000e+03 -2 -3 998 6.3500000000000000e+01 - - -8.0016517639160156e-01 5.9141719341278076e-01 - -3.4474676847457886e-01 6.8918299674987793e-01 - <_> - 3.7024951934814453e+01 - - 1 2 999 7.5000000000000000e+00 0 -1 1000 738. -2 -3 1001 - 1765. - - 3.1489616632461548e-01 -4.8600602149963379e-01 - 5.3129523992538452e-01 -9.4068831205368042e-01 - <_> - 3.7521724700927734e+01 - - 1 2 1002 9.5000000000000000e+00 0 -1 1003 - 5.0000000000000000e-01 -2 -3 1004 3.8500000000000000e+01 - - 9.6219047904014587e-02 -4.7555413842201233e-01 - -4.6840333938598633e-01 7.9850405454635620e-01 - <_> - 3.7506668090820312e+01 - - 1 2 1005 1.2500000000000000e+01 0 -1 1006 - 1.1350000000000000e+02 -2 -3 1007 1.5000000000000000e+00 - - 2.4384462833404541e-01 -7.9862087965011597e-01 - -6.7412167787551880e-01 3.3874267339706421e-01 - <_> - 3.7641517639160156e+01 - - 1 2 1008 2.7850000000000000e+02 0 -1 1009 - 3.5000000000000000e+00 -2 -3 1010 3.1500000000000000e+01 - - -1.3609230518341064e-01 5.3063559532165527e-01 - -8.7772625684738159e-01 7.2040528059005737e-01 - <_> - 3.7946544647216797e+01 - - 1 2 1011 5.6250000000000000e+02 0 -1 1012 - 5.2650000000000000e+02 -2 -3 1013 1.5000000000000000e+00 - - -9.3572378158569336e-01 3.0502891540527344e-01 - 2.3100011050701141e-01 -6.1786937713623047e-01 - <_> - 3.7772045135498047e+01 - - 1 2 1014 7.6500000000000000e+01 0 -1 1015 1948. -2 -3 1016 - 1.2550000000000000e+02 - - -2.9692053794860840e-01 2.9227754473686218e-01 - -9.4186556339263916e-01 5.1589274406433105e-01 - <_> - 3.8073352813720703e+01 - - 1 2 1017 5.0000000000000000e-01 0 -1 1018 - 2.5000000000000000e+00 -2 -3 1019 5.5000000000000000e+00 - - -9.8587775230407715e-01 3.0130937695503235e-01 - -6.3859581947326660e-01 1.3170623779296875e-01 - <_> - 3.8058353424072266e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 1.5000000000000000e+00 -2 -3 1022 7.2500000000000000e+01 - - -3.0776679515838623e-01 6.3595312833786011e-01 - 3.3159428834915161e-01 -4.0336602926254272e-01 - <_> - 3.8315082550048828e+01 - - 1 2 1023 2.6950000000000000e+02 0 -1 1024 1298. -2 -3 1025 - 1.5225000000000000e+03 - - -1. 7.2444880008697510e-01 -7.8231662511825562e-01 - 9.5456495881080627e-02 - <_> - 3.8383270263671875e+01 - - 1 2 1026 1.0500000000000000e+01 0 -1 1027 - 1.5000000000000000e+00 -2 -3 1028 4.0500000000000000e+01 - - 1.3500446081161499e-01 -6.9345575571060181e-01 - 3.7562793493270874e-01 -4.0624493360519409e-01 - <_> - 3.8140323638916016e+01 - - 1 2 1029 6.5000000000000000e+00 0 -1 1030 - 6.5000000000000000e+00 -2 -3 1031 2.1965000000000000e+03 - - -6.0527449846267700e-01 3.4614467620849609e-01 - -6.4750307798385620e-01 4.4139349460601807e-01 - <_> - 3.8629760742187500e+01 - - 1 2 1032 1.4500000000000000e+01 0 -1 1033 - 1.0500000000000000e+01 -2 -3 1034 5.5000000000000000e+00 - - 3.3208198146894574e-05 -6.7700278759002686e-01 - -4.2626798152923584e-01 4.8943847417831421e-01 - <_> - 3.8434696197509766e+01 - - 1 2 1035 5.0000000000000000e-01 0 -1 1036 - 4.5000000000000000e+00 -2 -3 1037 5.0000000000000000e-01 - - -7.7417689561843872e-01 4.2846640944480896e-01 - 1.6088682413101196e-01 -5.3463542461395264e-01 - <_> - 3.8620567321777344e+01 - - 1 2 1038 8.6450000000000000e+02 0 -1 1039 - 6.8500000000000000e+01 -2 -3 1040 3.0500000000000000e+01 - - 1.8587091565132141e-01 -8.0341529846191406e-01 - -9.0581631660461426e-01 6.2018626928329468e-01 - <_> - 3.8751430511474609e+01 - - 1 2 1041 5.0000000000000000e-01 0 -1 1042 40. -2 -3 1043 - 1.5500000000000000e+01 - - -9.9494683742523193e-01 1. -7.1019542217254639e-01 - 1.3086341321468353e-01 - <_> - 3.8754238128662109e+01 - - 1 2 1044 6.1500000000000000e+01 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 2.6500000000000000e+01 - - 3.2929298281669617e-01 -2.4671530723571777e-01 - -8.9316487312316895e-01 1. - <_> - 3.8761310577392578e+01 - - 1 2 1047 1.3750000000000000e+02 0 -1 1048 - 2.8450000000000000e+02 -2 -3 1049 5.0000000000000000e-01 - - -6.3021671772003174e-01 6.5008687973022461e-01 - 5.3065407276153564e-01 -7.9354740679264069e-02 - <_> - 3.8665718078613281e+01 - - 1 2 1050 4.5000000000000000e+00 0 -1 1051 - 3.5500000000000000e+01 -2 -3 1052 9.5000000000000000e+00 - - 5.4490387439727783e-01 -7.6202434301376343e-01 - -9.5591522753238678e-02 4.8457166552543640e-01 - <_> - 3.8905593872070312e+01 - - 1 2 1053 1.7595000000000000e+03 0 -1 1054 - 8.0650000000000000e+02 -2 -3 1055 1001. - - 8.4819895029067993e-01 1.0978246107697487e-02 - -5.8034777641296387e-01 9.6708601713180542e-01 - <_> - 3.9178741455078125e+01 - - 1 2 1056 3.3500000000000000e+01 0 -1 1057 43. -2 -3 1058 - 1.1255000000000000e+03 - - 6.2076139450073242e-01 -7.7601081132888794e-01 - -6.3608288764953613e-01 2.7314889430999756e-01 - <_> - 3.9557754516601562e+01 - - 1 2 1059 2861. 0 -1 1060 1.1500000000000000e+01 -2 -3 1061 - 1059. - - -2.0063874125480652e-01 3.7901291251182556e-01 - -8.7469154596328735e-01 9.3417149782180786e-01 - <_> - 3.9383140563964844e+01 - - 1 2 1062 7.5000000000000000e+00 0 -1 1063 - 3.3500000000000000e+01 -2 -3 1064 6.8250000000000000e+02 - - -3.3701553940773010e-01 6.6878622770309448e-01 - -9.3165141344070435e-01 5.6623113155364990e-01 - <_> - 3.9584621429443359e+01 - - 1 2 1065 4.5500000000000000e+01 0 -1 1066 - 2.5000000000000000e+00 -2 -3 1067 39. - - -8.5348236560821533e-01 2.0148001611232758e-01 - -8.4665966033935547e-01 8.2120579481124878e-01 - <_> - 3.9753597259521484e+01 - - 1 2 1068 2.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 3.5000000000000000e+00 - - -7.8533732891082764e-01 1.9851887226104736e-01 - 4.4824355840682983e-01 -8.0207723379135132e-01 - <_> - 3.9658565521240234e+01 - - 1 2 1071 5.0000000000000000e-01 0 -1 1072 - 1.3915000000000000e+03 -2 -3 1073 1.0500000000000000e+01 - - -4.5468831062316895e-01 3.6562988162040710e-01 - -6.3887000083923340e-01 2.2883546352386475e-01 - <_> - 4.0061527252197266e+01 - - 1 2 1074 5.4650000000000000e+02 0 -1 1075 - 1.3805000000000000e+03 -2 -3 1076 1.0500000000000000e+01 - - -3.7776118516921997e-01 7.9691213369369507e-01 - -6.4302068948745728e-01 4.0739435702562332e-02 - <_> - 4.0449691772460938e+01 - - 1 2 1077 1.3450000000000000e+02 0 -1 1078 3817. -2 -3 1079 - 4.5000000000000000e+00 - - -1. 7.2753727436065674e-01 -8.8736426830291748e-01 - -3.0436256900429726e-02 - <_> - 4.0686050415039062e+01 - - 1 2 1080 3.1500000000000000e+01 0 -1 1081 - 1.6815000000000000e+03 -2 -3 1082 2.5050000000000000e+02 - - 2.3635797202587128e-01 -7.1006488800048828e-01 - -7.7740561962127686e-01 9.4275683164596558e-01 - <_> - 4.0749511718750000e+01 - - 1 2 1083 2.7500000000000000e+01 0 -1 1084 - 2.3500000000000000e+01 -2 -3 1085 1.2500000000000000e+01 - - 6.0146540403366089e-01 -8.0582934617996216e-01 - 3.4961447119712830e-01 -3.5682681202888489e-01 - <_> - 4.0645175933837891e+01 - - 1 2 1086 1.2850000000000000e+02 0 -1 1087 - 1.1500000000000000e+01 -2 -3 1088 2.6500000000000000e+01 - - -4.3760350346565247e-01 3.2760843634605408e-01 - -7.3312211036682129e-01 4.6505972743034363e-01 - <_> - 4.0557418823242188e+01 - - 1 2 1089 668. 0 -1 1090 1.2850000000000000e+02 -2 -3 1091 - 8.7500000000000000e+01 - - 1.1236543208360672e-01 -5.2818536758422852e-01 - -6.8129932880401611e-01 7.0479619503021240e-01 - <_> - 4.0783546447753906e+01 - - 1 2 1092 5.1805000000000000e+03 0 -1 1093 - 4.9500000000000000e+01 -2 -3 1094 2.9500000000000000e+01 - - -4.0594160556793213e-01 3.0208334326744080e-01 - -9.6733921766281128e-01 6.8550550937652588e-01 - <_> - 4.1171627044677734e+01 - - 1 2 1095 7.7500000000000000e+01 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1128. - - 3.8808169960975647e-01 -2.2138407826423645e-01 - -9.7971081733703613e-01 6.8063849210739136e-01 - <_> - 4.1380584716796875e+01 - - 1 2 1098 3.5000000000000000e+00 0 -1 1099 - 4.5000000000000000e+00 -2 -3 1100 1.6550000000000000e+02 - - -8.3179295063018799e-01 8.2458907365798950e-01 - 2.0895628631114960e-01 -6.7757499217987061e-01 - <_> - 4.0977642059326172e+01 - - 1 2 1101 2.6500000000000000e+01 0 -1 1102 - 7.5000000000000000e+00 -2 -3 1103 2.8500000000000000e+01 - - -6.7902231216430664e-01 9.0440295636653900e-02 - 4.5262795686721802e-01 -7.6736658811569214e-01 - <_> - 4.1636299133300781e+01 - - 1 2 1104 8.7150000000000000e+02 0 -1 1105 - 4.8485000000000000e+03 -2 -3 1106 3.3500000000000000e+01 - - 6.8487727642059326e-01 -2.6508599519729614e-01 - -5.6632518768310547e-01 3.0040073394775391e-01 - <_> - 4.1346435546875000e+01 - - 1 2 1107 1.9350000000000000e+02 0 -1 1108 - 5.0500000000000000e+01 -2 -3 1109 1.1775000000000000e+03 - - -3.1608226895332336e-01 6.0885083675384521e-01 - 6.4473861455917358e-01 -8.5411310195922852e-01 - <_> - 4.1030853271484375e+01 - - 1 2 1110 1.5000000000000000e+00 0 -1 1111 - 1.3445000000000000e+03 -2 -3 1112 5.8550000000000000e+02 - - -6.3746362924575806e-01 3.1320965290069580e-01 - -7.2444945573806763e-01 7.5097692012786865e-01 - <_> - 4.1470043182373047e+01 - - 1 2 1113 9.5000000000000000e+00 0 -1 1114 - 2.5000000000000000e+00 -2 -3 1115 2.5000000000000000e+00 - - 4.0508642792701721e-01 -5.0676339864730835e-01 - -8.5707956552505493e-01 4.3919247388839722e-01 - <_> - 4.1580162048339844e+01 - - 1 2 1116 5.7350000000000000e+02 0 -1 1117 - 5.5000000000000000e+00 -2 -3 1118 21. - - -5.1867526769638062e-01 2.3890317976474762e-01 - -8.0498754978179932e-01 1. - <_> - 4.1684749603271484e+01 - - 1 2 1119 9.5000000000000000e+00 0 -1 1120 - 4.7850000000000000e+02 -2 -3 1121 2.1500000000000000e+01 - - 1.0458730161190033e-01 -6.2516999244689941e-01 - -5.9976857900619507e-01 5.1749521493911743e-01 - <_> - 4.1494934082031250e+01 - - 1 2 1122 2.0050000000000000e+02 0 -1 1123 - 2.0500000000000000e+01 -2 -3 1124 6.4500000000000000e+01 - - -3.9138877391815186e-01 2.6315033435821533e-01 - -9.6982121467590332e-01 6.5220332145690918e-01 - <_> - 4.1932003021240234e+01 - - 1 2 1125 1.5000000000000000e+00 0 -1 1126 - 3.5000000000000000e+00 -2 -3 1127 5.0000000000000000e-01 - - -4.0265578031539917e-01 7.8519123792648315e-01 - 2.0901374518871307e-01 -4.3665331602096558e-01 - <_> - 4.1868026733398438e+01 - - 1 2 1128 1.6455000000000000e+03 0 -1 1129 - 1.5000000000000000e+00 -2 -3 1130 1.2425000000000000e+03 - - 7.5446349382400513e-01 -8.0549776554107666e-01 - 6.0434514284133911e-01 -6.3975110650062561e-02 - <_> - 4.2400360107421875e+01 - - 1 2 1131 7.5000000000000000e+00 0 -1 1132 - 6.3500000000000000e+01 -2 -3 1133 5.7650000000000000e+02 - - 5.2017074823379517e-01 -6.9113534688949585e-01 - -1.6708745062351227e-01 5.3233259916305542e-01 - <_> - 4.2345855712890625e+01 - - 1 2 1134 8.5000000000000000e+00 0 -1 1135 - 3.5000000000000000e+00 -2 -3 1136 1.8650000000000000e+02 - - -5.4506361484527588e-02 -7.8135180473327637e-01 - -6.1452972888946533e-01 5.3269100189208984e-01 - <_> - 4.2633274078369141e+01 - - 1 2 1137 2.0500000000000000e+01 0 -1 1138 - 5.6750000000000000e+02 -2 -3 1139 2.9915000000000000e+03 - - 6.6543561220169067e-01 -8.5652673244476318e-01 - 2.8741911053657532e-01 -4.7586393356323242e-01 - <_> - 4.2798049926757812e+01 - - 1 2 1140 9.5000000000000000e+00 0 -1 1141 - 4.9500000000000000e+01 -2 -3 1142 4.5000000000000000e+00 - - 1.6477760672569275e-01 -8.1512105464935303e-01 - -9.8834317922592163e-01 3.6259099841117859e-01 - <_> - 4.2601398468017578e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 - 1.4500000000000000e+01 -2 -3 1145 2.6500000000000000e+01 - - 4.9031403660774231e-01 -6.7174017429351807e-01 - -6.2569665908813477e-01 3.0628502368927002e-01 - <_> - 4.3207866668701172e+01 - - 1 2 1146 5.0000000000000000e-01 0 -1 1147 338. -2 -3 1148 - 4.7500000000000000e+01 - - 6.0646677017211914e-01 -1.1136221885681152e-01 - -4.9581399559974670e-01 9.1770052909851074e-01 - <_> - 4.3436904907226562e+01 - - 1 2 1149 6.2500000000000000e+01 0 -1 1150 - 1.1500000000000000e+01 -2 -3 1151 6.5000000000000000e+00 - - -6.3020032644271851e-01 2.2903984785079956e-01 - 6.9111466407775879e-01 -9.2438864707946777e-01 - <_> - 4.3182262420654297e+01 - - 1 2 1152 2.4825000000000000e+03 0 -1 1153 - 1.8500000000000000e+01 -2 -3 1154 6.5000000000000000e+00 - - 8.8887816667556763e-01 -7.8725290298461914e-01 - -2.5464150309562683e-01 3.7431335449218750e-01 - <_> - 4.3620674133300781e+01 - - 1 2 1155 2.0895000000000000e+03 0 -1 1156 - 1.0500000000000000e+01 -2 -3 1157 7.1150000000000000e+02 - - 4.3995714187622070e-01 -5.2159392833709717e-01 - -6.2963652610778809e-01 1.1316129565238953e-01 - <_> - 4.3773460388183594e+01 - - 1 2 1158 5.0000000000000000e-01 0 -1 1159 21. -2 -3 1160 - 2647. - - -9.9163711071014404e-01 1. 1.5278881788253784e-01 - -8.0924803018569946e-01 - <_> - 4.3756889343261719e+01 - - 1 2 1161 9.5000000000000000e+00 0 -1 1162 - 1.5285000000000000e+03 -2 -3 1163 2.0500000000000000e+01 - - -7.3516172170639038e-01 -3.3198025077581406e-02 - 4.5004144310951233e-01 -4.9410822987556458e-01 - <_> - 4.3972312927246094e+01 - - 1 2 1164 1.5000000000000000e+00 0 -1 1165 - 1.2500000000000000e+01 -2 -3 1166 4.6250000000000000e+02 - - -8.7030416727066040e-01 1. 6.6300249099731445e-01 - -5.0532888621091843e-02 - <_> - 4.3980846405029297e+01 - - 1 2 1167 1.1500000000000000e+01 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 9.5000000000000000e+00 - - 8.9238695800304413e-02 -6.6063672304153442e-01 - -2.1645425260066986e-01 5.4061800241470337e-01 - <_> - 4.4120399475097656e+01 - - 1 2 1170 1.4550000000000000e+02 0 -1 1171 515. -2 -3 1172 - 66. - - -8.7580627202987671e-01 1.3955466449260712e-01 1. -1. - <_> - 4.4321346282958984e+01 - - 1 2 1173 1.2500000000000000e+01 0 -1 1174 - 1.5500000000000000e+01 -2 -3 1175 6.5000000000000000e+00 - - -9.3138593435287476e-01 2.0094390213489532e-01 - -7.9345691204071045e-01 1.3270631432533264e-01 - <_> - 4.4408035278320312e+01 - - 1 2 1176 9.4500000000000000e+01 0 -1 1177 29. -2 -3 1178 - 1.5500000000000000e+01 - - 6.2725901603698730e-01 -5.2600252628326416e-01 - -6.2553745508193970e-01 1.1460914462804794e-01 - <_> - 4.3909595489501953e+01 - - 1 2 1179 6.5000000000000000e+00 0 -1 1180 - 9.7500000000000000e+01 -2 -3 1181 1.5000000000000000e+00 - - -8.3142787218093872e-01 6.9267946481704712e-01 - 4.8009446263313293e-01 -1.2805593013763428e-01 - <_> - 4.4367984771728516e+01 - - 1 2 1182 1.3500000000000000e+01 0 -1 1183 - 7.5000000000000000e+00 -2 -3 1184 5.1500000000000000e+01 - - -7.8150177001953125e-01 6.1593282222747803e-01 - 2.3517456650733948e-01 -8.9078408479690552e-01 - <_> - 4.4526245117187500e+01 - - 1 2 1185 8.1450000000000000e+02 0 -1 1186 27. -2 -3 1187 - 4.3250000000000000e+02 - - -9.6226990222930908e-01 1. 1.5826153755187988e-01 - -6.0127079486846924e-01 - <_> - 4.4509689331054688e+01 - - 1 2 1188 1.7050000000000000e+02 0 -1 1189 - 1.0350000000000000e+02 -2 -3 1190 17. - - -1.7409811913967133e-01 4.0153789520263672e-01 - -9.9094009399414062e-01 1. - <_> - 4.4416912078857422e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 8.5000000000000000e+00 -2 -3 1193 1.9985000000000000e+03 - - -1. 5.3445392847061157e-01 -9.2778779566287994e-02 - -9.9271869659423828e-01 - <_> - 4.4893375396728516e+01 - - 1 2 1194 1.5755000000000000e+03 0 -1 1195 21. -2 -3 1196 - 2.2815000000000000e+03 - - 9.8664927482604980e-01 -1. -6.5728956460952759e-01 - 5.1687292754650116e-02 - <_> - 4.4958042144775391e+01 - - 1 2 1197 979. 0 -1 1198 3.5000000000000000e+00 -2 -3 1199 - 3.3450000000000000e+02 - - 6.4667396247386932e-02 -6.2298679351806641e-01 - 8.3257365226745605e-01 -3.2351174950599670e-01 - <_> - 4.5219623565673828e+01 - - 1 2 1200 2.5000000000000000e+00 0 -1 1201 - 4.5000000000000000e+00 -2 -3 1202 1.1250000000000000e+02 - - -8.0651080608367920e-01 7.8795516490936279e-01 - 2.6158225536346436e-01 -5.9016484022140503e-01 - <_> - 4.4823062896728516e+01 - - 1 2 1203 7.4850000000000000e+02 0 -1 1204 - 3.2500000000000000e+01 -2 -3 1205 697. - - 2.2503770887851715e-01 -3.9656233787536621e-01 - 9.5161718130111694e-01 -2.1432246267795563e-01 - <_> - 4.5530910491943359e+01 - - 1 2 1206 5.4750000000000000e+02 0 -1 1207 - 9.5000000000000000e+00 -2 -3 1208 4752. - - -7.8124099969863892e-01 7.0784658193588257e-01 - -9.6436911821365356e-01 3.5836692899465561e-02 - <_> - 4.5428401947021484e+01 - - 1 2 1209 1.5000000000000000e+00 0 -1 1210 - 1.5500000000000000e+01 -2 -3 1211 1.9455000000000000e+03 - - -1.0250826925039291e-01 5.4916018247604370e-01 - -2.6177955791354179e-02 -9.2129987478256226e-01 - <_> - 4.5787826538085938e+01 - - 1 2 1212 4.5850000000000000e+02 0 -1 1213 - 5.0000000000000000e-01 -2 -3 1214 1.5000000000000000e+00 - - -9.0581798553466797e-01 4.0218245983123779e-01 - -7.4334120750427246e-01 1.0166406631469727e-01 - <_> - 4.5805335998535156e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 2.8965000000000000e+03 -2 -3 1217 1.4500000000000000e+01 - - 3.4860813617706299e-01 -9.2187440395355225e-01 - -5.3543245792388916e-01 5.3708320856094360e-01 - <_> - 4.5891948699951172e+01 - - 1 2 1218 4.2750000000000000e+02 0 -1 1219 - 1.1500000000000000e+01 -2 -3 1220 60. - - 5.4364776611328125e-01 -2.4448615312576294e-01 -1. - 9.3761330842971802e-01 - <_> - 4.6113231658935547e+01 - - 1 2 1221 2.9650000000000000e+02 0 -1 1222 - 3.5500000000000000e+01 -2 -3 1223 2.5000000000000000e+00 - - -8.3336704969406128e-01 -4.9441725015640259e-02 - -7.4142539501190186e-01 5.5442851781845093e-01 - <_> - 4.6227504730224609e+01 - - 1 2 1224 4.1500000000000000e+01 0 -1 1225 - 3.3065000000000000e+03 -2 -3 1226 3870. - - -6.0971248149871826e-01 2.4518391489982605e-01 - -9.2852658033370972e-01 6.7098820209503174e-01 - <_> - 4.6052734375000000e+01 - - 1 2 1227 7.3150000000000000e+02 0 -1 1228 - 6.8500000000000000e+01 -2 -3 1229 7.5000000000000000e+00 - - -3.0568072199821472e-01 2.9724195599555969e-01 - 6.0229831933975220e-01 -9.3976968526840210e-01 - <_> - 4.6391059875488281e+01 - - 1 2 1230 3941. 0 -1 1231 5.4500000000000000e+01 -2 -3 1232 - 1.7855000000000000e+03 - - 3.3832329511642456e-01 -7.9758453369140625e-01 - -6.3498198986053467e-01 6.3038891553878784e-01 - <_> - 4.6504837036132812e+01 - - 1 2 1233 5.0000000000000000e-01 0 -1 1234 - 7.5000000000000000e+00 -2 -3 1235 1501. - - -7.7365416288375854e-01 4.6874764561653137e-01 - -3.5823148488998413e-01 7.9656225442886353e-01 - <_> - 4.6372001647949219e+01 - - 1 2 1236 2.5500000000000000e+01 0 -1 1237 - 1.6500000000000000e+01 -2 -3 1238 5.0000000000000000e-01 - - 4.6493071317672729e-01 -7.0740276575088501e-01 - -4.8780402541160583e-01 3.7291622161865234e-01 - <_> - 4.6678596496582031e+01 - - 1 2 1239 7.9415000000000000e+03 0 -1 1240 - 5.0000000000000000e-01 -2 -3 1241 1.1500000000000000e+01 - - -8.2436817884445190e-01 3.0659627914428711e-01 - -6.5948170423507690e-01 4.5055055618286133e-01 - <_> - 4.6238845825195312e+01 - - 1 2 1242 1.9500000000000000e+01 0 -1 1243 - 8.5000000000000000e+00 -2 -3 1244 6.5500000000000000e+01 - - -6.7113763093948364e-01 2.0902428030967712e-01 - -7.2488105297088623e-01 1. - <_> - 4.6537197113037109e+01 - - 1 2 1245 2.8450000000000000e+02 0 -1 1246 - 4.5000000000000000e+00 -2 -3 1247 1.7550000000000000e+02 - - -6.7054611444473267e-01 8.2255226373672485e-01 - 2.9835110902786255e-01 -5.9376603364944458e-01 - <_> - 4.6529403686523438e+01 - - 1 2 1248 4.2500000000000000e+01 0 -1 1249 - 2.0500000000000000e+01 -2 -3 1250 1.8500000000000000e+01 - - -7.7904900535941124e-03 -8.1963479518890381e-01 - -5.0779378414154053e-01 4.3727734684944153e-01 - <_> - 4.6744403839111328e+01 - - 1 2 1251 4.5000000000000000e+00 0 -1 1252 - 2.8650000000000000e+02 -2 -3 1253 4.5000000000000000e+00 - - -1.9674304127693176e-01 4.5696255564689636e-01 - 7.9865179955959320e-02 -8.0503857135772705e-01 - <_> - 4.6963691711425781e+01 - - 1 2 1254 4.0250000000000000e+02 0 -1 1255 - 1.7045000000000000e+03 -2 -3 1256 5.0000000000000000e-01 - - -5.5684739351272583e-01 7.6402020454406738e-01 - -7.6276898384094238e-01 -2.2674866020679474e-02 - <_> - 4.6687553405761719e+01 - - 1 2 1257 5.0000000000000000e-01 0 -1 1258 - 1.1455000000000000e+03 -2 -3 1259 1.4500000000000000e+01 - - -3.6084955930709839e-01 8.0332660675048828e-01 - -2.7614063024520874e-01 4.3000274896621704e-01 - <_> - 4.6964260101318359e+01 - - 1 2 1260 3.5500000000000000e+01 0 -1 1261 - 6.5000000000000000e+00 -2 -3 1262 1.9950000000000000e+02 - - -5.5664390325546265e-01 2.7670648694038391e-01 - -8.6526918411254883e-01 1. - <_> - 4.7102539062500000e+01 - - 1 2 1263 5.3500000000000000e+01 0 -1 1264 - 1.0075000000000000e+03 -2 -3 1265 4.5000000000000000e+00 - - -9.8485064506530762e-01 7.1059340238571167e-01 - -4.6985602378845215e-01 1.3827921450138092e-01 - <_> - 4.6816654205322266e+01 - - 1 2 1266 2.3500000000000000e+01 0 -1 1267 - 9.5000000000000000e+00 -2 -3 1268 2.5000000000000000e+00 - - 2.5332915782928467e-01 -7.9585695266723633e-01 - -2.8588473796844482e-01 3.4832224249839783e-01 - <_> - 4.7195682525634766e+01 - - 1 2 1269 5.0000000000000000e-01 0 -1 1270 - 4.6605000000000000e+03 -2 -3 1271 3.5250000000000000e+02 - - 3.7902894616127014e-01 -8.4313845634460449e-01 - 1.3045331835746765e-01 -5.6578201055526733e-01 - <_> - 4.7464088439941406e+01 - - 1 2 1272 2.1500000000000000e+01 0 -1 1273 - 5.0000000000000000e-01 -2 -3 1274 242. - - 1.3412712514400482e-01 -7.8316122293472290e-01 - 2.6840490102767944e-01 -7.1992039680480957e-01 - <_> - 4.7629711151123047e+01 - - 1 2 1275 2.5000000000000000e+00 0 -1 1276 - 7.4500000000000000e+01 -2 -3 1277 1.0750000000000000e+02 - - -8.3254098892211914e-01 9.2741733789443970e-01 - 1.6562341153621674e-01 -9.0677899122238159e-01 - <_> - 4.7230899810791016e+01 - - 1 2 1278 5.0000000000000000e-01 0 -1 1279 - 1.5000000000000000e+00 -2 -3 1280 789. - - -4.9992504715919495e-01 4.5887079834938049e-01 - 7.6845002174377441e-01 -3.9880952239036560e-01 - <_> - 4.7315582275390625e+01 - - 1 2 1281 7.7050000000000000e+02 0 -1 1282 - 2.5000000000000000e+00 -2 -3 1283 1.8500000000000000e+01 - - 8.4682360291481018e-02 -6.0419434309005737e-01 - -8.2248067855834961e-01 5.7301843166351318e-01 - <_> - 4.7552246093750000e+01 - - 1 2 1284 6.8500000000000000e+01 0 -1 1285 - 3.4435000000000000e+03 -2 -3 1286 5.0000000000000000e-01 - - 2.3666270077228546e-01 -8.8462197780609131e-01 - 7.7540457248687744e-01 -7.6702028512954712e-01 - <_> - 4.7279457092285156e+01 - - 1 2 1287 5.4650000000000000e+02 0 -1 1288 - 2.7500000000000000e+01 -2 -3 1289 1.2500000000000000e+01 - - -8.9818286895751953e-01 9.3574041128158569e-01 - -2.7278780937194824e-01 3.4087333083152771e-01 - <_> - 4.7695171356201172e+01 - - 1 2 1290 5.5000000000000000e+00 0 -1 1291 - 6.8500000000000000e+01 -2 -3 1292 4.2250000000000000e+02 - - -5.1797193288803101e-01 9.6406042575836182e-01 - 4.1571247577667236e-01 -3.3489051461219788e-01 - <_> - 4.8403869628906250e+01 - - 1 2 1293 1883. 0 -1 1294 8.7550000000000000e+02 -2 -3 1295 - 558. - - -1. 1. 7.0869779586791992e-01 -4.0250223129987717e-02 - <_> - 4.8536903381347656e+01 - - 1 2 1296 2.3500000000000000e+01 0 -1 1297 - 2.5000000000000000e+00 -2 -3 1298 3.5000000000000000e+00 - - 7.9751479625701904e-01 -8.0273920297622681e-01 - -7.9289126396179199e-01 2.0057959854602814e-01 - <_> - 4.8952194213867188e+01 - - 1 2 1299 5.0500000000000000e+01 0 -1 1300 - 5.0000000000000000e-01 -2 -3 1301 15. - - 4.1529166698455811e-01 -1.6719508171081543e-01 - -9.8823583126068115e-01 8.9194875955581665e-01 - <_> - 4.9016838073730469e+01 - - 1 2 1302 3.0500000000000000e+01 0 -1 1303 - 9.4500000000000000e+01 -2 -3 1304 1.4500000000000000e+01 - - -5.3713786602020264e-01 7.3640905320644379e-02 - -9.4347292184829712e-01 9.7819411754608154e-01 - <_> - 4.8526271820068359e+01 - - 1 2 1305 4.5000000000000000e+00 0 -1 1306 - 2.5000000000000000e+00 -2 -3 1307 6.8500000000000000e+01 - - -4.9056568741798401e-01 1.6012768447399139e-01 - 5.9082514047622681e-01 -7.3458278179168701e-01 - <_> - 4.8976272583007812e+01 - - 1 2 1308 4.5000000000000000e+00 0 -1 1309 - 1.5500000000000000e+01 -2 -3 1310 5.9500000000000000e+01 - - -1.9833615422248840e-01 4.4999912381172180e-01 - -5.6295996904373169e-01 8.5850125551223755e-01 - <_> - 4.8976329803466797e+01 - - 1 2 1311 4.5000000000000000e+00 0 -1 1312 - 6.8500000000000000e+01 -2 -3 1313 4.6500000000000000e+01 - - 5.6983328249771148e-05 7.7724099159240723e-01 - -6.1698484420776367e-01 2.9591542482376099e-01 - <_> - 4.9282245635986328e+01 - - 1 2 1314 1.1500000000000000e+01 0 -1 1315 - 1.5000000000000000e+00 -2 -3 1316 103. - - -8.6629253625869751e-01 2.9691928625106812e-01 - -6.9187688827514648e-01 7.6389712095260620e-01 - <_> - 4.9114860534667969e+01 - - 1 2 1317 1.8555000000000000e+03 0 -1 1318 - 6.4500000000000000e+01 -2 -3 1319 2.7350000000000000e+02 - - -1.6738428175449371e-01 5.7460331916809082e-01 - 5.3947240114212036e-01 -7.7280753850936890e-01 - <_> - 4.9352123260498047e+01 - - 1 2 1320 8.5350000000000000e+02 0 -1 1321 - 1.5000000000000000e+00 -2 -3 1322 9.9500000000000000e+01 - - 8.4088134765625000e-01 -7.2172147035598755e-01 - 2.3726405203342438e-01 -9.3316709995269775e-01 - <_> - 4.9501861572265625e+01 - - 1 2 1323 4.5000000000000000e+00 0 -1 1324 - 1.1500000000000000e+01 -2 -3 1325 8.5500000000000000e+01 - - -9.9253803491592407e-01 1. 4.6414378285408020e-01 - -2.0848950743675232e-01 - <_> - 4.9837139129638672e+01 - - 1 2 1326 7.9550000000000000e+02 0 -1 1327 - 2.8050000000000000e+02 -2 -3 1328 1835. - - -8.2946020364761353e-01 9.6943551301956177e-01 - -8.1424975395202637e-01 2.0871644839644432e-02 - <_> - 5.0246009826660156e+01 - - 1 2 1329 8.5000000000000000e+00 0 -1 1330 - 9.1050000000000000e+02 -2 -3 1331 1.5000000000000000e+00 - - 4.0886759757995605e-01 -7.4836260080337524e-01 - -5.7454568147659302e-01 3.2781472802162170e-01 - <_> - 4.9796627044677734e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 - 6.5000000000000000e+00 -2 -3 1334 2.3500000000000000e+01 - - -9.3218848109245300e-02 8.3576363325119019e-01 - 1.9991603493690491e-01 -4.6900144219398499e-01 - <_> - 5.0063694000244141e+01 - - 1 2 1335 1.5000000000000000e+00 0 -1 1336 - 6.3500000000000000e+01 -2 -3 1337 1.8725000000000000e+03 - - -7.0560324192047119e-01 4.1954356431961060e-01 - -9.6739757061004639e-01 2.6706603169441223e-01 - <_> - 5.0260620117187500e+01 - - 1 2 1338 1.0500000000000000e+01 0 -1 1339 - 2.9500000000000000e+01 -2 -3 1340 342. - - -9.0658597648143768e-02 -7.9617536067962646e-01 - 6.7347729206085205e-01 -2.3987580835819244e-01 - <_> - 5.0467788696289062e+01 - - 1 2 1341 1.0650000000000000e+02 0 -1 1342 - 8.6750000000000000e+02 -2 -3 1343 2.5000000000000000e+00 - - 2.0716853439807892e-01 -7.6313602924346924e-01 - -9.5789188146591187e-01 2.3767970502376556e-01 - <_> - 5.0828540802001953e+01 - - 1 2 1344 5.4500000000000000e+01 0 -1 1345 - 9.8150000000000000e+02 -2 -3 1346 9.5000000000000000e+00 - - -3.1050950288772583e-02 -7.7375942468643188e-01 - -8.2174503803253174e-01 3.6075502634048462e-01 - <_> - 5.0360866546630859e+01 - - 1 2 1347 1.3500000000000000e+01 0 -1 1348 - 5.0000000000000000e-01 -2 -3 1349 1236. - - 1.3057044148445129e-01 -4.6767637133598328e-01 - -6.9840586185455322e-01 7.9119002819061279e-01 - <_> - 5.0256309509277344e+01 - - 1 2 1350 2.5000000000000000e+00 0 -1 1351 - 9.4500000000000000e+01 -2 -3 1352 3.2500000000000000e+01 - - 3.8615158200263977e-01 -9.4876563549041748e-01 - 6.4024305343627930e-01 -1.0455664992332458e-01 - <_> - 5.0560165405273438e+01 - - 1 2 1353 2.5000000000000000e+00 0 -1 1354 - 4.0500000000000000e+01 -2 -3 1355 4.0500000000000000e+01 - - -7.0561832189559937e-01 3.3378389477729797e-01 - 3.0385577678680420e-01 -6.0897898674011230e-01 - <_> - 5.0804115295410156e+01 - - 1 2 1356 1.5500000000000000e+01 0 -1 1357 45. -2 -3 1358 - 7.5000000000000000e+00 - - -8.0861389636993408e-01 1. -4.3904241919517517e-01 - 2.7291506528854370e-01 - <_> - 5.0514347076416016e+01 - - 1 2 1359 1.1050000000000000e+02 0 -1 1360 - 6.3500000000000000e+01 -2 -3 1361 2.3500000000000000e+01 - - -2.8976878523826599e-01 3.2039192318916321e-01 - -8.0150151252746582e-01 6.8203634023666382e-01 - <_> - 5.0776355743408203e+01 - - 1 2 1362 1.0550000000000000e+02 0 -1 1363 - 1.3550000000000000e+02 -2 -3 1364 10068. - - -6.4488768577575684e-01 2.6200938224792480e-01 - -8.9675015211105347e-01 -3.1381275504827499e-02 - <_> - 5.0533866882324219e+01 - - 1 2 1365 6.8500000000000000e+01 0 -1 1366 - 5.0000000000000000e-01 -2 -3 1367 1.6050000000000000e+02 - - 3.1839752197265625e-01 -2.4249233305454254e-01 1. -1. - <_> - 5.0829113006591797e+01 - - 1 2 1368 1.5000000000000000e+00 0 -1 1369 - 6.6350000000000000e+02 -2 -3 1370 5.5000000000000000e+00 - - 6.8838620185852051e-01 -9.3250781297683716e-01 - 2.9524663090705872e-01 -3.2141539454460144e-01 - <_> - 5.0797142028808594e+01 - - 1 2 1371 8.5000000000000000e+00 0 -1 1372 - 2.5000000000000000e+00 -2 -3 1373 5.0000000000000000e-01 - - 4.2804262042045593e-01 -7.1058040857315063e-01 - 7.0905983448028564e-01 -3.1971532851457596e-02 - <_> - 5.1115089416503906e+01 - - 1 2 1374 861. 0 -1 1375 3.5000000000000000e+00 -2 -3 1376 - 1.4500000000000000e+01 - - -4.3287408351898193e-01 3.1794783473014832e-01 - -8.9377957582473755e-01 8.8807784020900726e-02 - <_> - 5.1886703491210938e+01 - - 1 2 1377 1.0955000000000000e+03 0 -1 1378 - 1.1500000000000000e+01 -2 -3 1379 8.7950000000000000e+02 - - 7.7161508798599243e-01 -5.0686275959014893e-01 - -4.5395648479461670e-01 3.3118793368339539e-01 - <_> - 5.1772079467773438e+01 - - 1 2 1380 4.6650000000000000e+02 0 -1 1381 33. -2 -3 1382 - 1.0950000000000000e+02 - - -9.5125919580459595e-01 1. -1.1462553590536118e-01 - 4.7979238629341125e-01 - <_> - 5.2198509216308594e+01 - - 1 2 1383 1.5500000000000000e+01 0 -1 1384 - 2.8250000000000000e+02 -2 -3 1385 2.1500000000000000e+01 - - -5.1369702816009521e-01 4.8207268118858337e-01 - -4.2361307144165039e-01 6.4388936758041382e-01 - <_> - 5.2392532348632812e+01 - - 1 2 1386 2.5000000000000000e+00 0 -1 1387 - 1.2535000000000000e+03 -2 -3 1388 4515. - - 3.2906323671340942e-01 -7.7641272544860840e-01 - 5.5688279867172241e-01 -6.7741048336029053e-01 - <_> - 5.1989242553710938e+01 - - 1 2 1389 5.5000000000000000e+00 0 -1 1390 - 2.2750000000000000e+02 -2 -3 1391 4.3500000000000000e+01 - - 1.5418881177902222e-01 -5.9396916627883911e-01 - -4.6043199300765991e-01 6.2906885147094727e-01 - <_> - 5.2259319305419922e+01 - - 1 2 1392 3.2745000000000000e+03 0 -1 1393 - 1.8650000000000000e+02 -2 -3 1394 277. - - 1. -9.5819205045700073e-01 2.7007547020912170e-01 - -6.1733877658843994e-01 - <_> - 5.2470146179199219e+01 - - 1 2 1395 2.5000000000000000e+00 0 -1 1396 105. -2 -3 1397 - 1.1305000000000000e+03 - - -8.1608760356903076e-01 6.3372832536697388e-01 - -5.9831696748733521e-01 2.1082499623298645e-01 - <_> - 5.2619174957275391e+01 - - 1 2 1398 1.5000000000000000e+00 0 -1 1399 - 3.5500000000000000e+01 -2 -3 1400 6.9565000000000000e+03 - - 8.7191337347030640e-01 -9.5075809955596924e-01 - 1.4903016388416290e-01 -9.4546204805374146e-01 - <_> - 5.2935699462890625e+01 - - 1 2 1401 5.0000000000000000e-01 0 -1 1402 - 8.5000000000000000e+00 -2 -3 1403 5.0000000000000000e-01 - - -8.3433282375335693e-01 2.5846391916275024e-01 - 3.1652534008026123e-01 -2.6149821281433105e-01 - <_> - 5.3098587036132812e+01 - - 1 2 1404 2.6500000000000000e+01 0 -1 1405 - 3.0500000000000000e+01 -2 -3 1406 7.5000000000000000e+00 - - 1.6288678348064423e-01 -6.0522311925888062e-01 - -8.4450155496597290e-01 1. - <_> - 5.3166687011718750e+01 - - 1 2 1407 5.0000000000000000e-01 0 -1 1408 - 5.0000000000000000e-01 -2 -3 1409 2.2500000000000000e+01 - - 4.6929541230201721e-01 -2.5119864940643311e-01 - -6.6509801149368286e-01 1.3742294907569885e-01 - <_> - 5.3216953277587891e+01 - - 1 2 1410 1.0315000000000000e+03 0 -1 1411 - 5.5450000000000000e+02 -2 -3 1412 1.2050000000000000e+02 - - -5.9429639577865601e-01 5.0267767161130905e-02 - -7.4524205923080444e-01 9.9237120151519775e-01 - <_> - 5.2621330261230469e+01 - - 1 2 1413 5.0500000000000000e+01 0 -1 1414 - 9.5000000000000000e+00 -2 -3 1415 197. - - -5.9562218189239502e-01 2.1804636716842651e-01 - -9.5759987831115723e-01 1. - <_> - 5.2961544036865234e+01 - - 1 2 1416 1.5000000000000000e+00 0 -1 1417 - 2.3075000000000000e+03 -2 -3 1418 3.9850000000000000e+02 - - 3.4021046757698059e-01 -8.9926844835281372e-01 - -5.2498364448547363e-01 6.2959104776382446e-01 - <_> - 5.3093982696533203e+01 - - 1 2 1419 8.5000000000000000e+00 0 -1 1420 - 8.5000000000000000e+00 -2 -3 1421 1.0500000000000000e+01 - - -2.6875725388526917e-01 4.4103288650512695e-01 - -7.8084117174148560e-01 2.4891872704029083e-01 - <_> - 5.3610618591308594e+01 - - 1 2 1422 1.1500000000000000e+01 0 -1 1423 - 5.1500000000000000e+01 -2 -3 1424 3.2850000000000000e+02 - - 6.1537820100784302e-01 -7.0333778858184814e-01 - 5.1663792133331299e-01 -1.1682698130607605e-01 - <_> - 5.3337509155273438e+01 - - 1 2 1425 6.5000000000000000e+00 0 -1 1426 - 2.0150000000000000e+02 -2 -3 1427 1.3750000000000000e+02 - - -7.9510349035263062e-01 6.7965596914291382e-01 - -5.7587045431137085e-01 2.8806659579277039e-01 - <_> - 5.3759262084960938e+01 - - 1 2 1428 1.3500000000000000e+01 0 -1 1429 - 5.0000000000000000e-01 -2 -3 1430 2.5500000000000000e+01 - - -8.0888146162033081e-01 -1.0459310561418533e-01 - 4.2175045609474182e-01 -2.2673429548740387e-01 - <_> - 5.4000991821289062e+01 - - 1 2 1431 1.6500000000000000e+01 0 -1 1432 - 4.9500000000000000e+01 -2 -3 1433 3.2500000000000000e+01 - - 2.4172973632812500e-01 -6.6279673576354980e-01 - -7.4276286363601685e-01 3.0321115255355835e-01 - <_> - 5.3984508514404297e+01 - - 1 2 1434 1.1565000000000000e+03 0 -1 1435 - 2.6250000000000000e+02 -2 -3 1436 3893. - - 7.3637932538986206e-01 -3.4883835911750793e-01 - 6.0121822357177734e-01 -8.0439829826354980e-01 - <_> - 5.4098236083984375e+01 - - 1 2 1437 1.3500000000000000e+01 0 -1 1438 - 3.8350000000000000e+02 -2 -3 1439 1.0500000000000000e+01 - - -6.2982290983200073e-01 1.1372609436511993e-01 - -5.9008258581161499e-01 4.2848214507102966e-01 - <_> - 5.4405338287353516e+01 - - 1 2 1440 1.9805000000000000e+03 0 -1 1441 - 1.1275000000000000e+03 -2 -3 1442 2.6500000000000000e+01 - - -5.8803045749664307e-01 3.0710294842720032e-01 - -6.5108889341354370e-01 7.1022272109985352e-01 - <_> - 5.4511505126953125e+01 - - 1 2 1443 4.5000000000000000e+00 0 -1 1444 - 2.5000000000000000e+00 -2 -3 1445 1.8500000000000000e+01 - - -9.6930414438247681e-01 5.6903254985809326e-01 - 3.2619524002075195e-01 -2.4657142162322998e-01 - <_> - 5.3997844696044922e+01 - - 1 2 1446 7.5000000000000000e+00 0 -1 1447 - 3.8850000000000000e+02 -2 -3 1448 2.5000000000000000e+00 - - -5.1365816593170166e-01 7.6742160320281982e-01 - -1.1964958161115646e-01 5.4031091928482056e-01 - <_> - 5.4253089904785156e+01 - - 1 2 1449 1626. 0 -1 1450 1.3550000000000000e+02 -2 -3 1451 - 3.6500000000000000e+01 - - 2.5524312257766724e-01 -9.8179906606674194e-01 - -7.1048241853713989e-01 4.6551769971847534e-01 - <_> - 5.4500720977783203e+01 - - 1 2 1452 1.0500000000000000e+01 0 -1 1453 - 1.6500000000000000e+01 -2 -3 1454 3.5000000000000000e+00 - - -8.2665824890136719e-01 8.4684377908706665e-01 - 2.4763117730617523e-01 -5.0248169898986816e-01 - <_> - 5.4737117767333984e+01 - - 1 2 1455 2.9500000000000000e+01 0 -1 1456 - 2.0445000000000000e+03 -2 -3 1457 2.0750000000000000e+02 - - 3.2250665128231049e-02 -8.2253599166870117e-01 - 2.3639632761478424e-01 -8.4098196029663086e-01 - <_> - 5.4620071411132812e+01 - - 1 2 1458 5.5000000000000000e+00 0 -1 1459 - 3.5500000000000000e+01 -2 -3 1460 1.1350000000000000e+02 - - -3.3707693219184875e-01 2.8938186168670654e-01 - -6.7547446489334106e-01 6.6382431983947754e-01 - <_> - 5.4814952850341797e+01 - - 1 2 1461 1.7065000000000000e+03 0 -1 1462 - 2.5000000000000000e+00 -2 -3 1463 3.0500000000000000e+01 - - -9.4278389215469360e-01 1.9488368928432465e-01 - -7.2809278964996338e-01 9.4887137413024902e-01 - <_> - 5.5078216552734375e+01 - - 1 2 1464 4.9500000000000000e+01 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.3484109640121460e-01 2.6326316595077515e-01 - 4.3786400556564331e-01 -8.4547907114028931e-01 - <_> - 5.5371429443359375e+01 - - 1 2 1467 5.0000000000000000e-01 0 -1 1468 - 9.5000000000000000e+00 -2 -3 1469 1.8500000000000000e+01 - - 3.0153682827949524e-01 -1. -6.4001828432083130e-01 - 1.5916951000690460e-01 - <_> - 5.5277488708496094e+01 - - 1 2 1470 1.5000000000000000e+00 0 -1 1471 - 4.7500000000000000e+01 -2 -3 1472 1.5350000000000000e+02 - - -8.3075433969497681e-01 8.5157310962677002e-01 - 5.2560466527938843e-01 -1.0226363688707352e-01 - <_> - 5.5544731140136719e+01 - - 1 2 1473 5.5000000000000000e+00 0 -1 1474 - 4.7500000000000000e+01 -2 -3 1475 3.5000000000000000e+00 - - -6.9490593671798706e-01 8.3865737915039062e-01 - -5.5749320983886719e-01 2.6724293828010559e-01 - <_> - 5.5245399475097656e+01 - - 1 2 1476 1.9950000000000000e+02 0 -1 1477 2289. -2 -3 1478 - 8.5000000000000000e+00 - - -8.5769319534301758e-01 9.1711401939392090e-01 - -7.0576089620590210e-01 3.7203203886747360e-02 - <_> - 5.5488651275634766e+01 - - 1 2 1479 5.2500000000000000e+01 0 -1 1480 - 1.2950000000000000e+02 -2 -3 1481 9.9500000000000000e+01 - - -8.7117952108383179e-01 2.4325069785118103e-01 1. - -6.1816340684890747e-01 - <_> - 5.6088603973388672e+01 - - 1 2 1482 3.0395000000000000e+03 0 -1 1483 - 8.5000000000000000e+00 -2 -3 1484 3.8500000000000000e+01 - - -6.3812756538391113e-01 5.9995239973068237e-01 - -3.6428934335708618e-01 4.7413027286529541e-01 - <_> - 5.6244201660156250e+01 - - 1 2 1485 5.0000000000000000e-01 0 -1 1486 - 1.5215000000000000e+03 -2 -3 1487 6.7050000000000000e+02 - - 3.1605017185211182e-01 -8.9320194721221924e-01 - -8.2980042695999146e-01 9.8803900182247162e-03 - <_> - 5.6439548492431641e+01 - - 1 2 1488 3.0050000000000000e+02 0 -1 1489 - 2.8550000000000000e+02 -2 -3 1490 5.5000000000000000e+00 - - -6.1809647083282471e-01 3.4896131604909897e-02 - 6.8301624059677124e-01 -6.8873125314712524e-01 - <_> - 5.6426887512207031e+01 - - 1 2 1491 5.8500000000000000e+01 0 -1 1492 - 3.4345000000000000e+03 -2 -3 1493 1.5500000000000000e+01 - - -1.2663759291172028e-02 -8.3325493335723877e-01 - -4.5447880029678345e-01 8.2523274421691895e-01 - <_> - 5.6583915710449219e+01 - - 1 2 1494 1.5000000000000000e+00 0 -1 1495 17. -2 -3 1496 - 4.5000000000000000e+00 - - -9.2977488040924072e-01 1. 4.6097502112388611e-01 - -9.5174610614776611e-02 - <_> - 5.6213527679443359e+01 - - 1 2 1497 2.5000000000000000e+00 0 -1 1498 - 3.1500000000000000e+01 -2 -3 1499 1.7500000000000000e+01 - - -9.0150320529937744e-01 1. -3.7925186753273010e-01 - 2.4965119361877441e-01 - <_> - 5.6820350646972656e+01 - - 1 2 1500 3.2500000000000000e+01 0 -1 1501 - 4.1950000000000000e+02 -2 -3 1502 3.2500000000000000e+01 - - 7.4725711345672607e-01 -2.9326796531677246e-01 - 5.0832718610763550e-01 -3.6488053202629089e-01 - <_> - 5.6534500122070312e+01 - - 1 2 1503 6.5000000000000000e+00 0 -1 1504 - 9.5000000000000000e+00 -2 -3 1505 7.5000000000000000e+00 - - -4.2628404498100281e-01 1.9397723674774170e-01 - 7.4938726425170898e-01 -2.1961294114589691e-01 - <_> - 5.6932621002197266e+01 - - 1 2 1506 2.5000000000000000e+00 0 -1 1507 - 5.7050000000000000e+02 -2 -3 1508 7.7500000000000000e+01 - - 3.9812234044075012e-01 -4.7504433989524841e-01 - -6.2128961086273193e-01 2.6114046573638916e-01 - <_> - 5.6733325958251953e+01 - - 1 2 1509 4.3500000000000000e+01 0 -1 1510 - 1.1500000000000000e+01 -2 -3 1511 5.5000000000000000e+00 - - 8.2605105638504028e-01 -8.1933623552322388e-01 - -7.0437282323837280e-01 2.4815419316291809e-01 - <_> - 5.7121013641357422e+01 - - 1 2 1512 5.0000000000000000e-01 0 -1 1513 - 2.5000000000000000e+00 -2 -3 1514 5.0000000000000000e-01 - - -9.4875234365463257e-01 4.0717402100563049e-01 - 3.7182134389877319e-01 -5.7021689414978027e-01 - <_> - 5.7052574157714844e+01 - - 1 2 1515 3.5000000000000000e+00 0 -1 1516 - 8.2350000000000000e+02 -2 -3 1517 3.5000000000000000e+00 - - -7.7814382314682007e-01 3.1433707475662231e-01 - 1.5364609658718109e-01 -6.9893133640289307e-01 - <_> - 5.7430255889892578e+01 - - 1 2 1518 7.5000000000000000e+00 0 -1 1519 - 2.7150000000000000e+02 -2 -3 1520 5.0000000000000000e-01 - - 3.7767973542213440e-01 -5.5577713251113892e-01 - 5.0659346580505371e-01 -2.3998673260211945e-01 - <_> - 5.7607677459716797e+01 - - 1 2 1521 8.5000000000000000e+00 0 -1 1522 - 3.7500000000000000e+01 -2 -3 1523 3.1500000000000000e+01 - - -9.3116837739944458e-01 1. 1.7742125689983368e-01 - -9.6981590986251831e-01 - <_> - 5.7209033966064453e+01 - - 1 2 1524 1.7500000000000000e+01 0 -1 1525 3333. -2 -3 1526 - 2.9500000000000000e+01 - - 3.5140603780746460e-01 -5.5955231189727783e-01 - 3.5482010245323181e-01 -6.4368051290512085e-01 - <_> - 5.7508213043212891e+01 - - 1 2 1527 1.3295000000000000e+03 0 -1 1528 - 3.5000000000000000e+00 -2 -3 1529 2.9905000000000000e+03 - - 8.6157292127609253e-01 -6.5889972448348999e-01 - 2.9918015003204346e-01 -5.1698189973831177e-01 - <_> - 5.7847724914550781e+01 - - 1 2 1530 5.8500000000000000e+01 0 -1 1531 4269. -2 -3 1532 - 3.5000000000000000e+00 - - -7.0496505498886108e-01 9.6496659517288208e-01 - 3.3951207995414734e-01 -2.9617905616760254e-01 - <_> - 5.8073795318603516e+01 - - 1 2 1533 1.4795000000000000e+03 0 -1 1534 1436. -2 -3 1535 - 3.4500000000000000e+01 - - 5.1324147731065750e-02 -7.3305028676986694e-01 - -9.5588427782058716e-01 8.9802700281143188e-01 - <_> - 5.8258213043212891e+01 - - 1 2 1536 8.5000000000000000e+00 0 -1 1537 - 2.3500000000000000e+01 -2 -3 1538 4.5000000000000000e+00 - - 1.1342080309987068e-02 -7.0464617013931274e-01 - 4.9904069304466248e-01 -2.1743535995483398e-01 - <_> - 5.7891689300537109e+01 - - 1 2 1539 5.0000000000000000e-01 0 -1 1540 - 1.5000000000000000e+00 -2 -3 1541 3.0595000000000000e+03 - - -5.2796399593353271e-01 3.7497097253799438e-01 - -4.9453270435333252e-01 5.0762557983398438e-01 - <_> - 5.8188655853271484e+01 - - 1 2 1542 5.0000000000000000e-01 0 -1 1543 - 1.5000000000000000e+00 -2 -3 1544 3.9500000000000000e+01 - - -8.9199644327163696e-01 2.9696619510650635e-01 - -5.4498016834259033e-01 9.7139292955398560e-01 - <_> - 5.8280239105224609e+01 - - 1 2 1545 3.3500000000000000e+01 0 -1 1546 - 5.0000000000000000e-01 -2 -3 1547 2.3500000000000000e+01 - - 4.4268378615379333e-01 -1.9920051097869873e-01 - 9.4228142499923706e-01 -7.5990098714828491e-01 - <_> - 5.7867527008056641e+01 - - 1 2 1548 7.5000000000000000e+00 0 -1 1549 339. -2 -3 1550 - 2.0555000000000000e+03 - - -8.4151726961135864e-01 3.1999579071998596e-01 - 2.5331634283065796e-01 -9.0427207946777344e-01 - <_> - 5.8132240295410156e+01 - - 1 2 1551 1.5000000000000000e+00 0 -1 1552 - 7.8650000000000000e+02 -2 -3 1553 1.8550000000000000e+02 - - 9.1284018754959106e-01 -7.6456803083419800e-01 - 2.6471161842346191e-01 -5.1480412483215332e-01 - <_> - 5.8396484375000000e+01 - - 1 2 1554 7.2500000000000000e+01 0 -1 1555 - 2.0845000000000000e+03 -2 -3 1556 682. - - 2.6424339413642883e-01 -5.3545671701431274e-01 - 5.8558118343353271e-01 -6.5226233005523682e-01 - <_> - 5.8931407928466797e+01 - - 1 2 1557 4.8500000000000000e+01 0 -1 1558 - 2.0650000000000000e+02 -2 -3 1559 1.5000000000000000e+00 - - -3.9781129360198975e-01 8.4498012065887451e-01 - 5.9064257144927979e-01 -2.2476838529109955e-01 - <_> - 5.9235450744628906e+01 - - 1 2 1560 5.6850000000000000e+02 0 -1 1561 92. -2 -3 1562 - 6.5000000000000000e+00 - - -7.1817409992218018e-01 6.5666520595550537e-01 - -3.9366659522056580e-01 3.7859344482421875e-01 - <_> - 5.8954090118408203e+01 - - 1 2 1563 3.5500000000000000e+01 0 -1 1564 - 4.1500000000000000e+01 -2 -3 1565 1.5000000000000000e+00 - - -3.5591202974319458e-01 2.9819571971893311e-01 - 6.6078835725784302e-01 -7.5122755765914917e-01 - <_> - 5.8992759704589844e+01 - - 1 2 1566 2.5000000000000000e+00 0 -1 1567 - 7.2450000000000000e+02 -2 -3 1568 7.1500000000000000e+01 - - 2.6733225584030151e-01 -8.6994355916976929e-01 - -6.7115420103073120e-01 2.8546950221061707e-01 - <_> - 5.9206840515136719e+01 - - 1 2 1569 125. 0 -1 1570 1.1500000000000000e+01 -2 -3 1571 - 1.7500000000000000e+01 - - -6.3097745180130005e-01 2.1407873928546906e-01 - -8.3158969879150391e-01 4.2057126760482788e-01 - <_> - 5.8675384521484375e+01 - - 1 2 1572 8.2500000000000000e+01 0 -1 1573 - 9.5000000000000000e+00 -2 -3 1574 1.3500000000000000e+01 - - -3.0376458168029785e-01 6.8508493900299072e-01 - -7.6011431217193604e-01 -4.0676746517419815e-02 - <_> - 5.8824657440185547e+01 - - 1 2 1575 5.3500000000000000e+01 0 -1 1576 3877. -2 -3 1577 - 1.9500000000000000e+01 - - -1. 7.3939621448516846e-01 -4.9733954668045044e-01 - 1.4926970005035400e-01 - <_> - 5.8581497192382812e+01 - - 1 2 1578 1.6165000000000000e+03 0 -1 1579 267. -2 -3 1580 - 2.3500000000000000e+01 - - -9.4517678022384644e-01 8.4405893087387085e-01 - -2.4316047132015228e-01 7.9341024160385132e-01 - <_> - 5.8863464355468750e+01 - - 1 2 1581 1.6500000000000000e+01 0 -1 1582 - 5.5000000000000000e+00 -2 -3 1583 4.0500000000000000e+01 - - -3.9863419532775879e-01 2.8196731209754944e-01 - -8.9268469810485840e-01 1. - <_> - 5.9290416717529297e+01 - - 1 2 1584 3.5000000000000000e+00 0 -1 1585 - 5.0000000000000000e-01 -2 -3 1586 3.9500000000000000e+01 - - -7.3463970422744751e-01 4.2695468664169312e-01 - -5.4126203060150146e-01 1.1317404359579086e-01 - <_> - 5.9067043304443359e+01 - - 1 2 1587 5.0000000000000000e-01 0 -1 1588 - 4.0950000000000000e+02 -2 -3 1589 7.2500000000000000e+01 - - -5.0176566839218140e-01 5.1602709293365479e-01 - 3.0980804562568665e-01 -4.6058577299118042e-01 - <_> - 5.9415367126464844e+01 - - 1 2 1590 1.5000000000000000e+00 0 -1 1591 12. -2 -3 1592 - 1.1500000000000000e+01 - - -6.9384574890136719e-01 6.5746247768402100e-01 - 3.4832605719566345e-01 -3.8974580168724060e-01 - <_> - 5.9919109344482422e+01 - - 1 2 1593 1.0845000000000000e+03 0 -1 1594 5947. -2 -3 1595 - 2.5500000000000000e+01 - - 5.0374138355255127e-01 -5.3129601478576660e-01 - -5.8001512289047241e-01 2.0108926296234131e-01 - <_> - 6.0114849090576172e+01 - - 1 2 1596 5.0000000000000000e-01 0 -1 1597 - 3.8650000000000000e+02 -2 -3 1598 8.6750000000000000e+02 - - -8.9583384990692139e-01 5.1855945587158203e-01 - 1.9573992490768433e-01 -9.6577078104019165e-01 - <_> - 5.9724266052246094e+01 - - 1 2 1599 7.0500000000000000e+01 0 -1 1600 - 7.6500000000000000e+01 -2 -3 1601 184. - - -3.9058533310890198e-01 6.3270717859268188e-01 - 7.7843767404556274e-01 -4.2521533370018005e-01 - <_> - 6.0343318939208984e+01 - - 1 2 1602 1.5000000000000000e+00 0 -1 1603 - 2.9250000000000000e+02 -2 -3 1604 1.8500000000000000e+01 - - 6.1905455589294434e-01 -8.7556785345077515e-01 - 9.3074835836887360e-02 -6.4517015218734741e-01 - <_> - 6.0081771850585938e+01 - - 1 2 1605 5.0000000000000000e-01 0 -1 1606 - 6.9450000000000000e+02 -2 -3 1607 4.3500000000000000e+01 - - -2.6154583692550659e-01 4.7799167037010193e-01 - -5.8910161256790161e-01 6.0072517395019531e-01 - <_> - 6.0815013885498047e+01 - - 1 2 1608 2.5000000000000000e+00 0 -1 1609 - 9.5000000000000000e+00 -2 -3 1610 1.5000000000000000e+00 - - -5.3109228610992432e-01 7.3323935270309448e-01 - 2.7432879805564880e-01 -4.7720876336097717e-01 - <_> - 6.1090702056884766e+01 - - 1 2 1611 4.5000000000000000e+00 0 -1 1612 3598. -2 -3 1613 - 2.6500000000000000e+01 - - 3.3982020616531372e-01 -8.5344749689102173e-01 - -7.6124453544616699e-01 2.7569055557250977e-01 - <_> - 6.1016242980957031e+01 - - 1 2 1614 2039. 0 -1 1615 1.3715000000000000e+03 -2 -3 1616 - 6.8500000000000000e+01 - - -7.4461504817008972e-02 7.2212553024291992e-01 - -9.3716764450073242e-01 7.9280626773834229e-01 - <_> - 6.1511177062988281e+01 - - 1 2 1617 1.5500000000000000e+01 0 -1 1618 - 2.7850000000000000e+02 -2 -3 1619 3.6500000000000000e+01 - - 4.9493625760078430e-01 -1.4364461600780487e-01 - -7.4662274122238159e-01 1.7349389195442200e-01 - <_> - 6.1308986663818359e+01 - - 1 2 1620 509. 0 -1 1621 7.8850000000000000e+02 -2 -3 1622 - 1.3385000000000000e+03 - - 1. -8.4440898895263672e-01 -2.0219227671623230e-01 - 3.7608841061592102e-01 - <_> - 6.1725578308105469e+01 - - 1 2 1623 5.0000000000000000e-01 0 -1 1624 - 3.5000000000000000e+00 -2 -3 1625 9.6850000000000000e+02 - - -8.8042527437210083e-01 4.1659390926361084e-01 - -3.2863637804985046e-01 9.1594344377517700e-01 - <_> - 6.1604068756103516e+01 - - 1 2 1626 1.1500000000000000e+01 0 -1 1627 - 1.0950000000000000e+02 -2 -3 1628 5.0000000000000000e-01 - - 3.1871238350868225e-01 -5.2247148752212524e-01 - 4.1599029302597046e-01 -7.9632645845413208e-01 - <_> - 6.1932075500488281e+01 - - 1 2 1629 9.5000000000000000e+00 0 -1 1630 219. -2 -3 1631 - 4.5000000000000000e+00 - - -5.8585010468959808e-02 -7.9883521795272827e-01 - -8.0256676673889160e-01 3.2800525426864624e-01 - <_> - 6.2076450347900391e+01 - - 1 2 1632 1.3850000000000000e+02 0 -1 1633 - 3.5000000000000000e+00 -2 -3 1634 5.6350000000000000e+02 - - -6.1192250251770020e-01 3.7852096557617188e-01 - 4.3628749251365662e-01 -4.0311765670776367e-01 - <_> - 6.2020500183105469e+01 - - 1 2 1635 5.6500000000000000e+01 0 -1 1636 - 9.5000000000000000e+00 -2 -3 1637 1.4245000000000000e+03 - - -5.1858995109796524e-02 -8.9690828323364258e-01 - -2.6840057969093323e-01 4.4323852658271790e-01 - <_> - 6.1941585540771484e+01 - - 1 2 1638 5.0000000000000000e-01 0 -1 1639 9. -2 -3 1640 - 7.5000000000000000e+00 - - 1. -1. 6.7882001399993896e-01 -7.8914739191532135e-02 - <_> - 6.2187667846679688e+01 - - 1 2 1641 1.5000000000000000e+00 0 -1 1642 62. -2 -3 1643 - 2.8500000000000000e+01 - - 2.4608352780342102e-01 -8.4340018033981323e-01 - -6.7122465372085571e-01 3.1627139449119568e-01 - <_> - 6.2444705963134766e+01 - - 1 2 1644 2.5000000000000000e+00 0 -1 1645 - 2.8395000000000000e+03 -2 -3 1646 3.7950000000000000e+02 - - 4.3465691804885864e-01 -8.7070471048355103e-01 - -4.0003356337547302e-01 2.5703859329223633e-01 - <_> - 6.2706104278564453e+01 - - 1 2 1647 1.5000000000000000e+00 0 -1 1648 - 2.6550000000000000e+02 -2 -3 1649 2.1605000000000000e+03 - - 7.4084126949310303e-01 -5.8476543426513672e-01 - 3.2751929759979248e-01 -6.7271316051483154e-01 - <_> - 6.2585681915283203e+01 - - 1 2 1650 5.6500000000000000e+01 0 -1 1651 - 2.7500000000000000e+01 -2 -3 1652 3.4500000000000000e+01 - - -5.1114237308502197e-01 4.1461613774299622e-01 - 5.1251345872879028e-01 -4.7370293736457825e-01 - <_> - 6.2783508300781250e+01 - - 1 2 1653 5.3500000000000000e+01 0 -1 1654 2387. -2 -3 1655 - 1.0785000000000000e+03 - - 1.9782398641109467e-01 -4.3944674730300903e-01 - -8.3261007070541382e-01 6.3095438480377197e-01 - <_> - 6.2716720581054688e+01 - - 1 2 1656 5.5000000000000000e+00 0 -1 1657 - 4.5000000000000000e+00 -2 -3 1658 9.6500000000000000e+01 - - -6.7844653129577637e-01 4.0278115868568420e-01 - 3.6051991581916809e-01 -4.8275879025459290e-01 - <_> - 6.2472888946533203e+01 - - 1 2 1659 3.0500000000000000e+01 0 -1 1660 8368. -2 -3 1661 - 1.3500000000000000e+01 - - -5.5116344243288040e-02 -9.4818419218063354e-01 - 4.0040487051010132e-01 -3.5688531398773193e-01 - <_> - 6.2881244659423828e+01 - - 1 2 1662 1.5000000000000000e+00 0 -1 1663 - 3.5500000000000000e+01 -2 -3 1664 2.3500000000000000e+01 - - 1. -9.0177541971206665e-01 4.0835642814636230e-01 - -1.8136456608772278e-01 - <_> - 6.3022640228271484e+01 - - 1 2 1665 8.5000000000000000e+00 0 -1 1666 - 1.9500000000000000e+01 -2 -3 1667 2.0500000000000000e+01 - - -7.6577585935592651e-01 7.7897077798843384e-01 - -5.0283867120742798e-01 2.9658859968185425e-01 - <_> - 6.3449874877929688e+01 - - 1 2 1668 8.3950000000000000e+02 0 -1 1669 - 1.1335000000000000e+03 -2 -3 1670 2.5000000000000000e+00 - - -6.2557518482208252e-01 4.2723217606544495e-01 - -8.2576507329940796e-01 -1.0434284806251526e-01 - <_> - 6.3252624511718750e+01 - - 1 2 1671 139. 0 -1 1672 5.0000000000000000e-01 -2 -3 1673 - 2.0500000000000000e+01 - - 4.1489660739898682e-01 -1.9724959135055542e-01 - -8.4620368480682373e-01 3.6422318220138550e-01 - <_> - 6.3265483856201172e+01 - - 1 2 1674 6.2150000000000000e+02 0 -1 1675 2672. -2 -3 1676 - 1.5000000000000000e+00 - - 1.2861014343798161e-02 -9.1588306427001953e-01 - -8.4077650308609009e-01 9.4888907670974731e-01 - <_> - 6.3836368560791016e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 2.8950000000000000e+02 -2 -3 1679 7.5000000000000000e+00 - - -5.7555305957794189e-01 2.2934845089912415e-01 - 5.7088255882263184e-01 -1.5547750890254974e-01 - <_> - 6.3863594055175781e+01 - - 1 2 1680 2.5000000000000000e+00 0 -1 1681 - 5.5000000000000000e+00 -2 -3 1682 3.5000000000000000e+00 - - -9.2342543601989746e-01 1. 2.6264595985412598e-01 - -4.0114754438400269e-01 - <_> - 6.3550628662109375e+01 - - 1 2 1683 2.7850000000000000e+02 0 -1 1684 - 4.8250000000000000e+02 -2 -3 1685 3.4155000000000000e+03 - - -6.6107988357543945e-01 5.0213998556137085e-01 - 2.4799732863903046e-01 -9.5342993736267090e-01 - <_> - 6.3861141204833984e+01 - - 1 2 1686 1.2135000000000000e+03 0 -1 1687 - 1.3565000000000000e+03 -2 -3 1688 2.6500000000000000e+01 - - -4.3651562929153442e-01 9.3487417697906494e-01 - -2.5045010447502136e-01 6.4042550325393677e-01 - <_> - 6.3451419830322266e+01 - - 1 2 1689 3.0550000000000000e+02 0 -1 1690 - 2.0865000000000000e+03 -2 -3 1691 1.1500000000000000e+01 - - -5.3299653530120850e-01 6.8890345096588135e-01 - -7.7928084135055542e-01 3.3616758882999420e-02 - <_> - 6.3891139984130859e+01 - - 1 2 1692 1.4500000000000000e+01 0 -1 1693 1392. -2 -3 1694 - 2.1500000000000000e+01 - - -6.9326841831207275e-01 4.3972003459930420e-01 - -5.9055811166763306e-01 1.4402525126934052e-01 - <_> - 6.4478630065917969e+01 - - 1 2 1695 5.0000000000000000e-01 0 -1 1696 - 1.5000000000000000e+00 -2 -3 1697 819. - - -6.1571627855300903e-01 5.8748626708984375e-01 - -4.1089773178100586e-01 5.4873436689376831e-01 - <_> - 6.4206130981445312e+01 - - 1 2 1698 8.6650000000000000e+02 0 -1 1699 - 3.4500000000000000e+01 -2 -3 1700 1.0185000000000000e+03 - - -2.7249464392662048e-01 3.9035290479660034e-01 - 3.8879543542861938e-01 -8.3664953708648682e-01 - <_> - 6.4592948913574219e+01 - - 1 2 1701 9.7500000000000000e+01 0 -1 1702 - 9.5500000000000000e+01 -2 -3 1703 5.3500000000000000e+01 - - -2.3947530984878540e-01 8.5832071304321289e-01 - -3.9922302961349487e-01 3.0327111482620239e-01 - <_> - 6.4378982543945312e+01 - - 1 2 1704 5.0000000000000000e-01 0 -1 1705 - 2.5000000000000000e+00 -2 -3 1706 1.5755000000000000e+03 - - -2.9975247383117676e-01 5.9291505813598633e-01 - 9.0688472986221313e-01 -3.4945115447044373e-01 - <_> - 6.4591911315917969e+01 - - 1 2 1707 4.4050000000000000e+02 0 -1 1708 - 5.0500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - 2.1292972564697266e-01 -9.1971194744110107e-01 - 5.7173824310302734e-01 -9.4372731447219849e-01 - <_> - 6.4826133728027344e+01 - - 1 2 1710 1.5000000000000000e+00 0 -1 1711 442. -2 -3 1712 - 5.5250000000000000e+02 - - 2.2733847796916962e-01 -7.3592525720596313e-01 - -5.2650618553161621e-01 2.3422205448150635e-01 - <_> - 6.5069717407226562e+01 - - 1 2 1713 8.5000000000000000e+00 0 -1 1714 - 8.5000000000000000e+00 -2 -3 1715 3.1500000000000000e+01 - - 4.5332247018814087e-01 -8.6987191438674927e-01 - 2.3650217056274414e-01 -5.0223588943481445e-01 - <_> - 6.5310997009277344e+01 - - 1 2 1716 9.5000000000000000e+00 0 -1 1717 - 1.1500000000000000e+01 -2 -3 1718 203. - - -9.7941344976425171e-01 3.6707261204719543e-01 - 3.1545862555503845e-02 -8.0945146083831787e-01 - <_> - 6.5503784179687500e+01 - - 1 2 1719 7.2350000000000000e+02 0 -1 1720 - 6.7950000000000000e+02 -2 -3 1721 4.1850000000000000e+02 - - -7.2629940509796143e-01 1.9278171658515930e-01 - 5.3028446435928345e-01 -9.3524670600891113e-01 - <_> - 6.5250198364257812e+01 - - 1 2 1722 1.2500000000000000e+01 0 -1 1723 - 8.0650000000000000e+02 -2 -3 1724 2.5000000000000000e+00 - - 7.5862687826156616e-01 -4.6297156810760498e-01 - -7.5136619806289673e-01 3.6253631114959717e-01 - <_> - 6.5528388977050781e+01 - - 1 2 1725 9.4500000000000000e+01 0 -1 1726 - 4.8500000000000000e+01 -2 -3 1727 19. - - -6.7188930511474609e-01 6.1620616912841797e-01 - 2.7818998694419861e-01 -8.1198740005493164e-01 - <_> - 6.5322471618652344e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 2.2500000000000000e+01 -2 -3 1730 8.3350000000000000e+02 - - 4.7361961007118225e-01 -9.5221102237701416e-01 - 1.1696549504995346e-01 -5.4392391443252563e-01 - <_> - 6.5620056152343750e+01 - - 1 2 1731 4.9500000000000000e+01 0 -1 1732 946. -2 -3 1733 - 4.8150000000000000e+02 - - 6.7783489823341370e-02 -7.3351651430130005e-01 - -9.0184271335601807e-02 5.8411657810211182e-01 - <_> - 6.5868316650390625e+01 - - 1 2 1734 1.2950000000000000e+02 0 -1 1735 - 2.5000000000000000e+00 -2 -3 1736 4.0650000000000000e+02 - - -5.2412188053131104e-01 2.4825538694858551e-01 - -9.9130809307098389e-01 8.9735072851181030e-01 - <_> - 6.5986862182617188e+01 - - 1 2 1737 4.5000000000000000e+00 0 -1 1738 - 5.0000000000000000e-01 -2 -3 1739 2.0500000000000000e+01 - - -8.2515478134155273e-01 1.1854794621467590e-01 - -6.7809820175170898e-01 2.4897077679634094e-01 - <_> - 6.5959693908691406e+01 - - 1 2 1740 3.8500000000000000e+01 0 -1 1741 - 5.0000000000000000e-01 -2 -3 1742 1.0050000000000000e+02 - - 6.0215097665786743e-01 -2.5286811590194702e-01 - -6.4079183340072632e-01 8.4301076829433441e-02 - <_> - 6.6134086608886719e+01 - - 1 2 1743 8.2500000000000000e+01 0 -1 1744 - 3.5000000000000000e+00 -2 -3 1745 1.9500000000000000e+01 - - -6.8188738822937012e-01 1.7439460754394531e-01 - -9.2948049306869507e-01 1. - <_> - 6.6361648559570312e+01 - - 1 2 1746 814. 0 -1 1747 1.9500000000000000e+01 -2 -3 1748 - 1.0500000000000000e+01 - - -9.7682356834411621e-01 7.5955659151077271e-01 - 2.2756047546863556e-01 -3.8351824879646301e-01 - <_> - 6.6531791687011719e+01 - - 1 2 1749 1308. 0 -1 1750 6.5000000000000000e+00 -2 -3 1751 - 5.0000000000000000e-01 - - 1.7014220356941223e-01 -5.7149434089660645e-01 - 7.9037719964981079e-01 -9.5655971765518188e-01 - <_> - 6.6605209350585938e+01 - - 1 2 1752 3.6500000000000000e+01 0 -1 1753 - 5.0000000000000000e-01 -2 -3 1754 2.5150000000000000e+02 - - 6.6666525602340698e-01 -8.1346422433853149e-01 - 1.6785284876823425e-01 -6.6657412052154541e-01 - <_> - 6.6571502685546875e+01 - - 1 2 1755 1.9500000000000000e+01 0 -1 1756 - 8.0500000000000000e+01 -2 -3 1757 1.5000000000000000e+00 - - -3.3701382577419281e-02 -7.4847251176834106e-01 - -7.7443891763687134e-01 6.1074006557464600e-01 - <_> - 6.6785156250000000e+01 - - 1 2 1758 2.5000000000000000e+00 0 -1 1759 43. -2 -3 1760 - 1.0015000000000000e+03 - - -8.5154837369918823e-01 8.3069330453872681e-01 - 2.1365079283714294e-01 -5.7956165075302124e-01 - <_> - 6.6786399841308594e+01 - - 1 2 1761 1.9050000000000000e+02 0 -1 1762 - 1.0535000000000000e+03 -2 -3 1763 2.4500000000000000e+01 - - 4.5784974098205566e-01 -5.2838063240051270e-01 - 3.2312652468681335e-01 -6.2864887714385986e-01 - <_> - 6.7081779479980469e+01 - - 1 2 1764 1.7500000000000000e+01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 2.1500000000000000e+01 - - -6.3773536682128906e-01 8.6540682241320610e-03 - -7.6469355821609497e-01 5.3673422336578369e-01 - <_> - 6.7328659057617188e+01 - - 1 2 1767 2.7450000000000000e+02 0 -1 1768 - 2.5000000000000000e+00 -2 -3 1769 1.2350000000000000e+02 - - 1.8835125863552094e-01 -8.5055798292160034e-01 - 2.4687612056732178e-01 -7.6298141479492188e-01 - <_> - 6.7479103088378906e+01 - - 1 2 1770 3.2325000000000000e+03 0 -1 1771 - 4.3250000000000000e+02 -2 -3 1772 2.2500000000000000e+01 - - 1.5044631063938141e-01 -5.9252446889877319e-01 - 7.3350501060485840e-01 -3.6927312612533569e-01 - <_> - 6.7486915588378906e+01 - - 1 2 1773 4.3500000000000000e+01 0 -1 1774 - 2.5265000000000000e+03 -2 -3 1775 1.0500000000000000e+01 - - 7.8096417710185051e-03 -8.9472562074661255e-01 - -5.6938666105270386e-01 4.1206309199333191e-01 - <_> - 6.7184608459472656e+01 - - 1 2 1776 1.2500000000000000e+01 0 -1 1777 - 3.5500000000000000e+01 -2 -3 1778 1.7500000000000000e+01 - - -4.4249776005744934e-01 2.9335400462150574e-01 - -6.3165670633316040e-01 7.5325357913970947e-01 - <_> - 6.7494506835937500e+01 - - 1 2 1779 3.7650000000000000e+02 0 -1 1780 - 5.0000000000000000e-01 -2 -3 1781 3.9500000000000000e+01 - - 5.2761709690093994e-01 -7.7626377344131470e-01 - -3.4604665637016296e-01 3.2856348156929016e-01 - <_> - 6.7218788146972656e+01 - - 1 2 1782 5.0000000000000000e-01 0 -1 1783 3854. -2 -3 1784 - 9.9650000000000000e+02 - - -7.3792868852615356e-01 7.5467681884765625e-01 - -2.9438218474388123e-01 5.6371760368347168e-01 - <_> - 6.7561782836914062e+01 - - 1 2 1785 1.6365000000000000e+03 0 -1 1786 - 5.5000000000000000e+00 -2 -3 1787 2.7500000000000000e+01 - - -6.1908555030822754e-01 3.4299522638320923e-01 - -8.5923063755035400e-01 2.6721331477165222e-01 - <_> - 6.7637489318847656e+01 - - 1 2 1788 5.5500000000000000e+01 0 -1 1789 - 2.5000000000000000e+00 -2 -3 1790 5.8500000000000000e+01 - - -9.7663235664367676e-01 7.0542359352111816e-01 - -6.2124180793762207e-01 1.0107668116688728e-02 - <_> - 6.7872940063476562e+01 - - 1 2 1791 1.1435000000000000e+03 0 -1 1792 - 8.4500000000000000e+01 -2 -3 1793 1.5000000000000000e+00 - - 2.3545160889625549e-01 -7.6414716243743896e-01 - 4.4412618875503540e-01 -9.5045959949493408e-01 - <_> - 6.8379867553710938e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 3.5000000000000000e+00 -2 -3 1796 7.5000000000000000e+00 - - 5.0692296028137207e-01 -5.1141291856765747e-01 - -7.6778936386108398e-01 -6.7547991871833801e-02 - <_> - 6.8707763671875000e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 4.5000000000000000e+00 -2 -3 1799 6.5500000000000000e+01 - - -7.2192513942718506e-01 4.4987043738365173e-01 - 3.2790130376815796e-01 -4.7422546148300171e-01 - <_> - 6.8286819458007812e+01 - - 1 2 1800 3.1500000000000000e+01 0 -1 1801 - 1.1415000000000000e+03 -2 -3 1802 1.5500000000000000e+01 - - -4.2094790935516357e-01 2.4803330004215240e-01 -1. 1. - <_> - 6.8052871704101562e+01 - - 1 2 1803 3.8850000000000000e+02 0 -1 1804 - 5.5945000000000000e+03 -2 -3 1805 8.5000000000000000e+00 - - -1. 9.7139048576354980e-01 -3.3056256175041199e-01 - 2.6478901505470276e-01 - <_> - 6.8410385131835938e+01 - - 1 2 1806 5.0000000000000000e-01 0 -1 1807 - 1.5000000000000000e+00 -2 -3 1808 75. - - -5.0366848707199097e-01 4.0760627388954163e-01 - 4.9484097957611084e-01 -6.4907956123352051e-01 - <_> - 6.8928771972656250e+01 - - 1 2 1809 1.2250000000000000e+02 0 -1 1810 - 7.5000000000000000e+00 -2 -3 1811 6.6500000000000000e+01 - - -7.0449191331863403e-01 9.7664463520050049e-01 - -3.6998346447944641e-01 2.0591719448566437e-01 - <_> - 6.9253982543945312e+01 - - 1 2 1812 1.0250000000000000e+02 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 3.1250000000000000e+02 - - -8.1731587648391724e-01 3.2521212100982666e-01 - 3.7988114356994629e-01 -6.4639246463775635e-01 - <_> - 6.9205451965332031e+01 - - 1 2 1815 1.2050000000000000e+02 0 -1 1816 - 6.0500000000000000e+01 -2 -3 1817 8.5000000000000000e+00 - - -4.8533525317907333e-02 8.4871995449066162e-01 1. -1. - <_> - 6.9166992187500000e+01 - - 1 2 1818 5.0000000000000000e-01 0 -1 1819 - 4.2550000000000000e+02 -2 -3 1820 1.1500000000000000e+01 - - 4.8487004637718201e-01 -5.4979419708251953e-01 - -4.2108422517776489e-01 4.5939767360687256e-01 - <_> - 6.9126815795898438e+01 - - 1 2 1821 5.8150000000000000e+02 0 -1 1822 - 3.5500000000000000e+01 -2 -3 1823 9.7500000000000000e+01 - - 4.9901461601257324e-01 -8.1184327602386475e-01 - 5.8108931779861450e-01 -6.8361051380634308e-02 - <_> - 6.9228797912597656e+01 - - 1 2 1824 8.5000000000000000e+00 0 -1 1825 - 1.2500000000000000e+01 -2 -3 1826 8.3500000000000000e+01 - - -6.4501130580902100e-01 2.3137541115283966e-01 - 3.7868604063987732e-01 -4.4107386469841003e-01 - <_> - 6.9378318786621094e+01 - - 1 2 1827 5.0000000000000000e-01 0 -1 1828 - 4.9500000000000000e+01 -2 -3 1829 2.2500000000000000e+01 - - 4.1642808914184570e-01 -7.8047537803649902e-01 - -7.4845105409622192e-01 1.1628971993923187e-01 - <_> - 6.9186073303222656e+01 - - 1 2 1830 2.7050000000000000e+02 0 -1 1831 45. -2 -3 1832 - 1.0500000000000000e+01 - - 1. -9.4139373302459717e-01 -1.9224344193935394e-01 - 4.3496173620223999e-01 - <_> - 6.9486175537109375e+01 - - 1 2 1833 1.4050000000000000e+02 0 -1 1834 - 1.5000000000000000e+00 -2 -3 1835 5.5500000000000000e+01 - - -7.3685461282730103e-01 3.0009758472442627e-01 - -6.2791568040847778e-01 2.8461813926696777e-01 - <_> - 6.9622322082519531e+01 - - 1 2 1836 1.0500000000000000e+01 0 -1 1837 - 9.6550000000000000e+02 -2 -3 1838 1.5000000000000000e+00 - - -7.7085101604461670e-01 4.4815340638160706e-01 - 6.2162548303604126e-01 -4.0746492147445679e-01 - <_> - 6.9615928649902344e+01 - - 1 2 1839 1.4500000000000000e+01 0 -1 1840 - 4.0150000000000000e+02 -2 -3 1841 53. - - 6.2382644414901733e-01 -3.1839877367019653e-01 - 5.9402352571487427e-01 -7.7672713994979858e-01 - <_> - 6.9581390380859375e+01 - - 1 2 1842 1.9050000000000000e+02 0 -1 1843 - 1.9350000000000000e+02 -2 -3 1844 6.5000000000000000e+00 - - -6.6475450992584229e-01 3.9425066113471985e-01 - -2.0569822192192078e-01 4.3429613113403320e-01 - <_> - 6.9716117858886719e+01 - - 1 2 1845 1.1500000000000000e+01 0 -1 1846 - 2.5000000000000000e+00 -2 -3 1847 1.5000000000000000e+00 - - -3.3410567045211792e-01 3.6131811141967773e-01 - 3.8923510909080505e-01 -7.3655128479003906e-01 - <_> - 6.9997550964355469e+01 - - 1 2 1848 2.8500000000000000e+01 0 -1 1849 - 1.5000000000000000e+00 -2 -3 1850 2.6500000000000000e+01 - - -4.0613466501235962e-01 2.8143337368965149e-01 - -9.6434587240219116e-01 5.6036943197250366e-01 - <_> - 6.9693450927734375e+01 - - 1 2 1851 2.0350000000000000e+02 0 -1 1852 - 9.9350000000000000e+02 -2 -3 1853 2.2500000000000000e+01 - - 6.5412253141403198e-01 -6.5566647052764893e-01 - -5.3069335222244263e-01 1.0198003053665161e-01 - <_> - 6.9937568664550781e+01 - - 1 2 1854 2.5785000000000000e+03 0 -1 1855 - 2.5000000000000000e+00 -2 -3 1856 5.0000000000000000e-01 - - -5.7543450593948364e-01 2.4412074685096741e-01 1. - -9.1257572174072266e-01 - <_> - 7.0639808654785156e+01 - - 1 2 1857 5.7750000000000000e+02 0 -1 1858 - 4.6500000000000000e+01 -2 -3 1859 1.3150000000000000e+02 - - 7.8946912288665771e-01 -3.5598552227020264e-01 - 6.2578904628753662e-01 -5.0993841886520386e-01 - <_> - 7.0555007934570312e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 16. -2 -3 1862 - 5.0000000000000000e-01 - - -9.4747436046600342e-01 1. 4.5841571688652039e-01 - -1.7203371226787567e-01 - <_> - 7.0579658508300781e+01 - - 1 2 1863 1.0250000000000000e+02 0 -1 1864 - 1.0500000000000000e+01 -2 -3 1865 1.3550000000000000e+02 - - -7.5043040513992310e-01 -1.3392960652709007e-02 - -5.0063830614089966e-01 4.7692352533340454e-01 - <_> - 7.0888481140136719e+01 - - 1 2 1866 5.0000000000000000e-01 0 -1 1867 - 2.9500000000000000e+01 -2 -3 1868 8.0550000000000000e+02 - - 3.0881932377815247e-01 -8.9407527446746826e-01 - 7.8238004446029663e-01 -5.9828531742095947e-01 - <_> - 7.0740913391113281e+01 - - 1 2 1869 1.2150000000000000e+02 0 -1 1870 - 2.4500000000000000e+01 -2 -3 1871 3.0500000000000000e+01 - - -2.3594596982002258e-01 6.2877231836318970e-01 - -4.9541813135147095e-01 3.6229962110519409e-01 - <_> - 7.1206985473632812e+01 - - 1 2 1872 3.5000000000000000e+00 0 -1 1873 - 1.4275000000000000e+03 -2 -3 1874 2.2500000000000000e+01 - - -9.9479568004608154e-01 3.8346680998802185e-01 - 4.6607276797294617e-01 -1.8312121927738190e-01 - <_> - 7.1451019287109375e+01 - - 1 2 1875 1.8500000000000000e+01 0 -1 1876 65. -2 -3 1877 - 2.5000000000000000e+00 - - -7.7731359004974365e-01 9.2451179027557373e-01 - -5.7414340972900391e-01 2.4403360486030579e-01 - <_> - 7.0688819885253906e+01 - - 1 2 1878 1.5000000000000000e+00 0 -1 1879 - 1.5250000000000000e+02 -2 -3 1880 5.5000000000000000e+00 - - 3.6112758517265320e-01 -5.4053640365600586e-01 - -4.3820820748806000e-02 -7.6219600439071655e-01 - <_> - 7.1147773742675781e+01 - - 1 2 1881 4.1500000000000000e+01 0 -1 1882 - 1.7500000000000000e+01 -2 -3 1883 4.1250000000000000e+02 - - -4.4425949454307556e-01 6.3956463336944580e-01 - -4.9368324875831604e-01 4.5895308256149292e-01 - <_> - 7.1452705383300781e+01 - - 1 2 1884 1.4325000000000000e+03 0 -1 1885 - 1.7500000000000000e+01 -2 -3 1886 23. - - -9.5096543431282043e-02 5.0955659151077271e-01 - -8.3886599540710449e-01 8.5678941011428833e-01 - <_> - 7.1636161804199219e+01 - - 1 2 1887 1.2050000000000000e+02 0 -1 1888 - 8.0050000000000000e+02 -2 -3 1889 1716. - - -6.7043030261993408e-01 1.8345704674720764e-01 - -9.0125375986099243e-01 1. - <_> - 7.1818664550781250e+01 - - 1 2 1890 1.5000000000000000e+00 0 -1 1891 - 5.0000000000000000e-01 -2 -3 1892 808. - - 1.8249766528606415e-01 -5.5717653036117554e-01 -1. - 4.4042342901229858e-01 - <_> - 7.2026985168457031e+01 - - 1 2 1893 3.5000000000000000e+00 0 -1 1894 8. -2 -3 1895 - 2.5000000000000000e+00 - - -9.3179380893707275e-01 1. 2.0832556486129761e-01 - -5.2329808473587036e-01 - <_> - 7.1846588134765625e+01 - - 1 2 1896 1.1950000000000000e+02 0 -1 1897 - 1.9500000000000000e+01 -2 -3 1898 2.8450000000000000e+02 - - -1.8040254712104797e-01 6.0258209705352783e-01 - 5.5354207754135132e-01 -7.1650350093841553e-01 - <_> - 7.1900581359863281e+01 - - 1 2 1899 9.0450000000000000e+02 0 -1 1900 266. -2 -3 1901 - 2.5000000000000000e+00 - - 7.8607088327407837e-01 -7.7522158622741699e-01 - -2.7132809162139893e-01 3.9066424965858459e-01 - <_> - 7.2254920959472656e+01 - - 1 2 1902 1.4500000000000000e+01 0 -1 1903 - 7.5850000000000000e+02 -2 -3 1904 1.3500000000000000e+01 - - -4.3261140584945679e-01 3.5433784127235413e-01 - 2.6537308096885681e-01 -7.9342633485794067e-01 - <_> - 7.2434974670410156e+01 - - 1 2 1905 3.4445000000000000e+03 0 -1 1906 - 2.5000000000000000e+00 -2 -3 1907 5.9500000000000000e+01 - - -6.8569511175155640e-01 1.8006032705307007e-01 - -9.2150622606277466e-01 1. - <_> - 7.2396644592285156e+01 - - 1 2 1908 1.5000000000000000e+00 0 -1 1909 - 2.1500000000000000e+01 -2 -3 1910 1.1500000000000000e+01 - - -3.7500020861625671e-01 4.5450302958488464e-01 - -5.1121622323989868e-01 7.1714913845062256e-01 - <_> - 7.1966697692871094e+01 - - 1 2 1911 3.5500000000000000e+01 0 -1 1912 - 1.6975000000000000e+03 -2 -3 1913 9.5000000000000000e+00 - - 6.2354284524917603e-01 -5.5644631385803223e-01 - -6.0473889112472534e-01 1.6627989709377289e-01 - <_> - 7.2265373229980469e+01 - - 1 2 1914 1.5000000000000000e+00 0 -1 1915 2029. -2 -3 1916 - 165. - - -7.3123896121978760e-01 7.1832627058029175e-01 - 2.9867425560951233e-01 -6.3333243131637573e-01 - <_> - 7.2611221313476562e+01 - - 1 2 1917 7.5000000000000000e+00 0 -1 1918 - 4.9500000000000000e+01 -2 -3 1919 2.3500000000000000e+01 - - -8.9519095420837402e-01 8.1671148538589478e-01 - 4.5284107327461243e-01 -1.4600232243537903e-01 - <_> - 7.3058769226074219e+01 - - 1 2 1920 7.5000000000000000e+00 0 -1 1921 - 6.5000000000000000e+00 -2 -3 1922 4.0500000000000000e+01 - - 8.6240917444229126e-02 -6.9517636299133301e-01 - 4.4754931330680847e-01 -4.5200899243354797e-01 - <_> - 7.3110542297363281e+01 - - 1 2 1923 1.7815000000000000e+03 0 -1 1924 - 1.0005000000000000e+03 -2 -3 1925 3.2945000000000000e+03 - - -8.3461540937423706e-01 9.6288299560546875e-01 - 8.1745308637619019e-01 -5.5225487798452377e-02 - <_> - 7.2996879577636719e+01 - - 1 2 1926 7.5000000000000000e+00 0 -1 1927 - 6.5000000000000000e+00 -2 -3 1928 3.8050000000000000e+02 - - -6.8741214275360107e-01 8.4089756011962891e-01 - -3.3457726240158081e-01 3.7242683768272400e-01 - <_> - 7.3333457946777344e+01 - - 1 2 1929 1.4500000000000000e+01 0 -1 1930 - 2.7500000000000000e+01 -2 -3 1931 2.5500000000000000e+01 - - 3.3657467365264893e-01 -5.5885529518127441e-01 - -7.7352440357208252e-01 7.2826080024242401e-02 - <_> - 7.2824409484863281e+01 - - 1 2 1932 5.5000000000000000e+00 0 -1 1933 - 4.8550000000000000e+02 -2 -3 1934 9.5000000000000000e+00 - - -5.0904840230941772e-01 5.5190944671630859e-01 - -4.8847538232803345e-01 3.6895498633384705e-01 - <_> - 7.3038925170898438e+01 - - 1 2 1935 1.5595000000000000e+03 0 -1 1936 - 2.0500000000000000e+01 -2 -3 1937 2.9500000000000000e+01 - - -3.6917760968208313e-01 3.1854984164237976e-01 - -8.7062478065490723e-01 4.9816086888313293e-01 - <_> - 7.3263801574707031e+01 - - 1 2 1938 1.0015000000000000e+03 0 -1 1939 - 1.5000000000000000e+00 -2 -3 1940 2974. - - -7.0936071872711182e-01 2.2487121820449829e-01 - -8.8643109798431396e-01 7.1286094188690186e-01 - <_> - 7.3553604125976562e+01 - - 1 2 1941 2.5000000000000000e+00 0 -1 1942 - 3.4150000000000000e+02 -2 -3 1943 1173. - - 2.8980860114097595e-01 -6.4726233482360840e-01 - -6.5974622964859009e-01 5.0034427642822266e-01 - <_> - 7.4105926513671875e+01 - - 1 2 1944 1.6585000000000000e+03 0 -1 1945 - 6.7550000000000000e+02 -2 -3 1946 2.2500000000000000e+01 - - -6.1926132440567017e-01 5.5879336595535278e-01 - -6.7974144220352173e-01 1.0105973482131958e-01 - <_> - 7.4186531066894531e+01 - - 1 2 1947 1.1505000000000000e+03 0 -1 1948 - 4.5000000000000000e+00 -2 -3 1949 1.2500000000000000e+01 - - -6.8859964609146118e-01 7.4128083884716034e-02 - -8.4579437971115112e-01 4.9757060408592224e-01 - <_> - 7.4735351562500000e+01 - - 1 2 1950 3.2750000000000000e+02 0 -1 1951 440. -2 -3 1952 - 1255. - - -8.4635180234909058e-01 5.4881960153579712e-01 - -7.5777089595794678e-01 5.4926741868257523e-02 - <_> - 7.4681823730468750e+01 - - 1 2 1953 1.5000000000000000e+00 0 -1 1954 - 5.0500000000000000e+01 -2 -3 1955 5.6500000000000000e+01 - - -7.0232021808624268e-01 8.5282677412033081e-01 - 2.3205398023128510e-01 -8.8023269176483154e-01 - <_> - 7.4392105102539062e+01 - - 1 2 1956 7.5000000000000000e+00 0 -1 1957 - 3.9350000000000000e+02 -2 -3 1958 5.0000000000000000e-01 - - 1.9772809743881226e-01 -7.5726938247680664e-01 - 6.1714029312133789e-01 -8.7271124124526978e-02 - <_> - 7.4673728942871094e+01 - - 1 2 1959 1.5000000000000000e+00 0 -1 1960 - 1.1500000000000000e+01 -2 -3 1961 2.0555000000000000e+03 - - -4.9139803647994995e-01 3.7206640839576721e-01 - 4.2800930142402649e-01 -5.5887550115585327e-01 - <_> - 7.5367835998535156e+01 - - 1 2 1962 1.3650000000000000e+02 0 -1 1963 401. -2 -3 1964 - 7.1500000000000000e+01 - - -9.1597896814346313e-01 6.9410192966461182e-01 - -5.2255064249038696e-01 1.0558886826038361e-01 - <_> - 7.5788253784179688e+01 - - 1 2 1965 8.5000000000000000e+00 0 -1 1966 - 5.0000000000000000e-01 -2 -3 1967 6.0500000000000000e+01 - - -4.4586208462715149e-01 4.2041677236557007e-01 - -7.7125865221023560e-01 1.2018596753478050e-02 - <_> - 7.6069732666015625e+01 - - 1 2 1968 5.6850000000000000e+02 0 -1 1969 - 1.3500000000000000e+01 -2 -3 1970 5.7750000000000000e+02 - - -7.2104036808013916e-01 4.5175212621688843e-01 - 2.8147873282432556e-01 -5.9510231018066406e-01 - <_> - 7.6112258911132812e+01 - - 1 2 1971 5.5000000000000000e+00 0 -1 1972 - 5.5750000000000000e+02 -2 -3 1973 1147. - - -6.9539779424667358e-01 -4.7915484756231308e-02 - 4.5538648962974548e-01 -7.5604480504989624e-01 - <_> - 7.5756111145019531e+01 - - 1 2 1974 5.0000000000000000e-01 0 -1 1975 - 8.5000000000000000e+00 -2 -3 1976 2.5000000000000000e+00 - - -7.6900506019592285e-01 3.4268808364868164e-01 - 1.4950591325759888e-01 -7.2585535049438477e-01 - <_> - 7.6101287841796875e+01 - - 1 2 1977 2.1500000000000000e+01 0 -1 1978 - 3.7500000000000000e+01 -2 -3 1979 3.9500000000000000e+01 - - -3.3152681589126587e-01 3.4517920017242432e-01 - -7.0503693819046021e-01 9.6268767118453979e-01 - <_> - 7.6609313964843750e+01 - - 1 2 1980 1.0500000000000000e+01 0 -1 1981 - 1.2500000000000000e+01 -2 -3 1982 1.4500000000000000e+01 - - -3.1232813000679016e-01 5.2801662683486938e-01 - -6.8980258703231812e-01 4.3460644781589508e-02 - <_> - 7.6257461547851562e+01 - - 1 2 1983 1001. 0 -1 1984 3.5000000000000000e+00 -2 -3 1985 - 8.5000000000000000e+00 - - -1. 5.1140683889389038e-01 -6.1894029378890991e-01 - 9.8859548568725586e-02 - <_> - 7.6508773803710938e+01 - - 1 2 1986 1.3500000000000000e+01 0 -1 1987 - 5.5000000000000000e+00 -2 -3 1988 1.5000000000000000e+00 - - -7.8223472833633423e-01 9.0430533885955811e-01 - -7.6901417970657349e-01 2.5131115317344666e-01 - <_> - 7.6511230468750000e+01 - - 1 2 1989 2.3500000000000000e+01 0 -1 1990 - 7.7500000000000000e+01 -2 -3 1991 5.3500000000000000e+01 - - 2.4585875216871500e-03 -8.1063097715377808e-01 - 9.4792199134826660e-01 -8.4266769886016846e-01 - <_> - 7.7112556457519531e+01 - - 1 2 1992 9.5000000000000000e+00 0 -1 1993 - 1.5000000000000000e+00 -2 -3 1994 1.0500000000000000e+01 - - 7.8646227717399597e-02 -5.8706396818161011e-01 - 7.7305620908737183e-01 -8.0239242315292358e-01 - <_> - 7.6619277954101562e+01 - - 1 2 1995 3.9500000000000000e+01 0 -1 1996 - 1.2350000000000000e+02 -2 -3 1997 1.4750000000000000e+02 - - 3.2390201091766357e-01 -6.6501069068908691e-01 - 3.5864245891571045e-01 -8.1123942136764526e-01 - <_> - 7.7220901489257812e+01 - - 1 2 1998 5.4750000000000000e+02 0 -1 1999 - 5.5350000000000000e+02 -2 -3 2000 7.7450000000000000e+02 - - 6.3919067382812500e-01 -4.2759561538696289e-01 - -4.5995783805847168e-01 3.5977739095687866e-01 - <_> - 7.7378273010253906e+01 - - 1 2 2001 1.9615000000000000e+03 0 -1 2002 - 5.7550000000000000e+02 -2 -3 2003 16. - - -1.8090914189815521e-01 4.4383099675178528e-01 1. -1. - <_> - 7.6999313354492188e+01 - - 1 2 2004 4.5000000000000000e+00 0 -1 2005 - 2.5000000000000000e+00 -2 -3 2006 4.7500000000000000e+01 - - 6.8634140491485596e-01 -8.3962488174438477e-01 - -3.7895882129669189e-01 3.1631174683570862e-01 - <_> - 7.7379386901855469e+01 - - 1 2 2007 2.3500000000000000e+01 0 -1 2008 - 2.5000000000000000e+00 -2 -3 2009 635. - - -5.6043285131454468e-01 3.8007143139839172e-01 - 2.3420706391334534e-02 -8.1111401319503784e-01 - <_> - 7.7814773559570312e+01 - - 1 2 2010 5.0000000000000000e-01 0 -1 2011 - 2.9015000000000000e+03 -2 -3 2012 2.1500000000000000e+01 - - -4.2206180095672607e-01 4.5896497368812561e-01 - -8.3090221881866455e-01 -1.1289356648921967e-01 - <_> - 7.7731140136718750e+01 - - 1 2 2013 3.0050000000000000e+02 0 -1 2014 91. -2 -3 2015 - 1.3750000000000000e+02 - - -8.3637647330760956e-02 4.7793844342231750e-01 - 4.2891168594360352e-01 -9.1970837116241455e-01 - <_> - 7.7703033447265625e+01 - - 1 2 2016 6.5500000000000000e+01 0 -1 2017 - 4.6500000000000000e+01 -2 -3 2018 1.2500000000000000e+01 - - 8.9802670478820801e-01 -7.9725235700607300e-01 - 3.0849361419677734e-01 -3.1823581457138062e-01 - <_> - 7.7592445373535156e+01 - - 1 2 2019 1304. 0 -1 2020 5.0000000000000000e-01 -2 -3 2021 - 1.3550000000000000e+02 - - 1.2925930321216583e-01 -4.4718819856643677e-01 -1. - 9.2844516038894653e-01 - <_> - 7.7784370422363281e+01 - - 1 2 2022 5.2500000000000000e+01 0 -1 2023 669. -2 -3 2024 - 5.8050000000000000e+02 - - 1.9192789494991302e-01 -9.7164040803909302e-01 - -9.6615767478942871e-01 1. - <_> - 7.7990150451660156e+01 - - 1 2 2025 2.5000000000000000e+00 0 -1 2026 - 4.0650000000000000e+02 -2 -3 2027 4.5000000000000000e+00 - - 1.7283387482166290e-01 -9.0685445070266724e-01 - -8.3814066648483276e-01 2.0578315854072571e-01 - <_> - 7.8123832702636719e+01 - - 1 2 2028 5.1965000000000000e+03 0 -1 2029 - 3.5000000000000000e+00 -2 -3 2030 1.2500000000000000e+01 - - -7.2157174348831177e-01 1.3367784023284912e-01 - -9.8569130897521973e-01 1. - <_> - 7.7883827209472656e+01 - - 1 2 2031 5.5000000000000000e+00 0 -1 2032 - 6.5000000000000000e+00 -2 -3 2033 3718. - - -2.4000172317028046e-01 3.8893476128578186e-01 - -9.0298855304718018e-01 -3.4131843596696854e-02 - <_> - 7.8381683349609375e+01 - - 1 2 2034 5.5000000000000000e+00 0 -1 2035 329. -2 -3 2036 - 4.0575000000000000e+03 - - 4.9785295128822327e-01 -1.1255059391260147e-01 - -9.2938506603240967e-01 9.1427725553512573e-01 - <_> - 7.8554908752441406e+01 - - 1 2 2037 4.2500000000000000e+01 0 -1 2038 - 1.0875000000000000e+03 -2 -3 2039 8.3500000000000000e+01 - - 5.7865291833877563e-01 -9.1586309671401978e-01 - 1.7322470247745514e-01 -7.1539419889450073e-01 - <_> - 7.8587066650390625e+01 - - 1 2 2040 77. 0 -1 2041 5.6850000000000000e+02 -2 -3 2042 - 3.7500000000000000e+01 - - -5.7372999191284180e-01 3.2160468399524689e-02 - 9.6851015090942383e-01 -1. - <_> - 7.8467521667480469e+01 - - 1 2 2043 7.5000000000000000e+00 0 -1 2044 - 1.3500000000000000e+01 -2 -3 2045 3.0500000000000000e+01 - - -7.3381966352462769e-01 7.9535079002380371e-01 - -5.9684050083160400e-01 2.6625540852546692e-01 - <_> - 7.8986984252929688e+01 - - 1 2 2046 2.7950000000000000e+02 0 -1 2047 - 5.6050000000000000e+02 -2 -3 2048 3.2500000000000000e+01 - - 5.1946407556533813e-01 -1.8982487916946411e-01 - 7.1982949972152710e-01 -4.8263704776763916e-01 - <_> - 7.8686080932617188e+01 - - 1 2 2049 7.5000000000000000e+00 0 -1 2050 944. -2 -3 2051 - 1.0500000000000000e+01 - - 6.5592408180236816e-01 -5.5339312553405762e-01 - -2.9819217324256897e-01 4.1327166557312012e-01 - <_> - 7.8943367004394531e+01 - - 1 2 2052 1.1500000000000000e+01 0 -1 2053 - 4.0650000000000000e+02 -2 -3 2054 2.5000000000000000e+00 - - -8.3834916353225708e-01 2.5729319453239441e-01 - -7.6927721500396729e-01 3.0943137407302856e-01 - <_> - 7.8510215759277344e+01 - - 1 2 2055 3.3500000000000000e+01 0 -1 2056 - 5.0000000000000000e-01 -2 -3 2057 8.5000000000000000e+00 - - 1.6588112711906433e-01 -4.3315169215202332e-01 - 7.9588627815246582e-01 -4.4464468955993652e-01 - <_> - 7.8833564758300781e+01 - - 1 2 2058 6.5000000000000000e+00 0 -1 2059 - 1.1650000000000000e+02 -2 -3 2060 7.6500000000000000e+01 - - -6.0747748613357544e-01 5.7677578926086426e-01 - 3.2334649562835693e-01 -7.1281516551971436e-01 - <_> - 7.9065544128417969e+01 - - 1 2 2061 114. 0 -1 2062 5.0000000000000000e-01 -2 -3 2063 - 1.1250000000000000e+02 - - 2.3197774589061737e-01 -5.4661935567855835e-01 - 6.7165571451187134e-01 -7.9622262716293335e-01 - <_> - 7.9402275085449219e+01 - - 1 2 2064 2.8050000000000000e+02 0 -1 2065 - 3.9650000000000000e+02 -2 -3 2066 2.9850000000000000e+02 - - -7.8204798698425293e-01 3.3673200011253357e-01 - -6.8767505884170532e-01 2.4135014414787292e-01 - <_> - 7.9591125488281250e+01 - - 1 2 2067 1.5000000000000000e+00 0 -1 2068 - 5.5000000000000000e+00 -2 -3 2069 140. - - -8.4002065658569336e-01 7.2916489839553833e-01 - 1.8884760141372681e-01 -8.0235344171524048e-01 - <_> - 7.9927177429199219e+01 - - 1 2 2070 4.0500000000000000e+01 0 -1 2071 - 8.2850000000000000e+02 -2 -3 2072 1.0500000000000000e+01 - - 3.3605861663818359e-01 -8.6610472202301025e-01 - 2.4379670619964600e-01 -5.3128516674041748e-01 - <_> - 7.9570045471191406e+01 - - 1 2 2073 1182. 0 -1 2074 3.2500000000000000e+01 -2 -3 2075 - 502. - - -3.5713455080986023e-01 2.8106349706649780e-01 - -8.3191645145416260e-01 9.3351656198501587e-01 - <_> - 7.9753128051757812e+01 - - 1 2 2076 2.5000000000000000e+00 0 -1 2077 - 4.7500000000000000e+01 -2 -3 2078 1.2045000000000000e+03 - - 1.8308171629905701e-01 -8.9866495132446289e-01 - 9.4026386737823486e-01 -8.5731178522109985e-01 - <_> - 7.9954711914062500e+01 - - 1 2 2079 9.5000000000000000e+00 0 -1 2080 - 1.0500000000000000e+01 -2 -3 2081 3.4615000000000000e+03 - - 3.0233853030949831e-03 -9.8875284194946289e-01 - 2.0158641040325165e-01 -8.2852333784103394e-01 - <_> - 8.0429855346679688e+01 - - 1 2 2082 4.8050000000000000e+02 0 -1 2083 - 5.2250000000000000e+02 -2 -3 2084 1.2500000000000000e+01 - - 7.6044726371765137e-01 -4.1115388274192810e-01 - -6.2775129079818726e-01 4.9296686053276062e-01 - <_> - 8.0253639221191406e+01 - - 1 2 2085 3.2850000000000000e+02 0 -1 2086 - 2.8500000000000000e+01 -2 -3 2087 2.2500000000000000e+01 - - 6.4995265007019043e-01 -8.1818318367004395e-01 - -4.3594300746917725e-01 2.5837844610214233e-01 - <_> - 8.0712348937988281e+01 - - 1 2 2088 5.5000000000000000e+00 0 -1 2089 - 1.4500000000000000e+01 -2 -3 2090 2.4500000000000000e+01 - - 4.5871067047119141e-01 -1.8673202395439148e-01 - -8.0201834440231323e-01 2.7421653270721436e-01 - <_> - 8.0954566955566406e+01 - - 1 2 2091 1.5000000000000000e+00 0 -1 2092 - 2.5000000000000000e+00 -2 -3 2093 3.5000000000000000e+00 - - 7.1520602703094482e-01 -8.5710084438323975e-01 - -5.3771287202835083e-01 2.4222078919410706e-01 - <_> - 8.0664779663085938e+01 - - 1 2 2094 5.0000000000000000e-01 0 -1 2095 852. -2 -3 2096 - 5.0500000000000000e+01 - - -9.4811320304870605e-01 7.3575115203857422e-01 - -2.8979244828224182e-01 6.3096255064010620e-01 - <_> - 8.0927169799804688e+01 - - 1 2 2097 3407. 0 -1 2098 800. -2 -3 2099 100. - - 2.6239001750946045e-01 -6.4345407485961914e-01 - -9.7739773988723755e-01 1. - <_> - 8.1038581848144531e+01 - - 1 2 2100 2.5000000000000000e+00 0 -1 2101 - 5.5000000000000000e+00 -2 -3 2102 5.0000000000000000e-01 - - 5.0993680953979492e-01 -6.5139651298522949e-01 - 3.4365540742874146e-01 -3.2318025827407837e-01 - <_> - 8.0995506286621094e+01 - - 1 2 2103 1.9500000000000000e+01 0 -1 2104 - 6.3500000000000000e+01 -2 -3 2105 2.7500000000000000e+01 - - -4.3078806251287460e-02 -8.3054763078689575e-01 - 4.1605877876281738e-01 -1. - <_> - 8.1449020385742188e+01 - - 1 2 2106 1.1525000000000000e+03 0 -1 2107 - 2.3500000000000000e+01 -2 -3 2108 5.5000000000000000e+00 - - -3.8596618920564651e-02 -7.3833715915679932e-01 - -8.4264433383941650e-01 4.7351169586181641e-01 - <_> - 8.1674888610839844e+01 - - 1 2 2109 6.5000000000000000e+00 0 -1 2110 - 6.8500000000000000e+01 -2 -3 2111 56. - - 2.2587312757968903e-01 -7.7641236782073975e-01 - -6.7178988456726074e-01 1. - <_> - 8.1059928894042969e+01 - - 1 2 2112 7.5000000000000000e+00 0 -1 2113 - 1.5850000000000000e+02 -2 -3 2114 2.5000000000000000e+00 - - -7.8622096776962280e-01 7.0347315073013306e-01 - 5.0727140903472900e-01 -1.2201854586601257e-01 - <_> - 8.1407531738281250e+01 - - 1 2 2115 1.2500000000000000e+01 0 -1 2116 - 5.5000000000000000e+00 -2 -3 2117 1.3750000000000000e+02 - - -6.2096095085144043e-01 7.2421133518218994e-01 - 3.4760445356369019e-01 -5.3716862201690674e-01 - <_> - 8.1844848632812500e+01 - - 1 2 2118 5.5050000000000000e+02 0 -1 2119 - 3.3500000000000000e+01 -2 -3 2120 9.7950000000000000e+02 - - -7.1007186174392700e-01 6.1295044422149658e-01 - 4.3731164932250977e-01 -1.8890057504177094e-01 - <_> - 8.1697082519531250e+01 - - 1 2 2121 3.7500000000000000e+01 0 -1 2122 - 5.0000000000000000e-01 -2 -3 2123 2.5000000000000000e+00 - - 3.3392754197120667e-01 -8.6948662996292114e-01 - -7.2286629676818848e-01 2.5838151574134827e-01 - <_> - 8.1909507751464844e+01 - - 1 2 2124 4.0500000000000000e+01 0 -1 2125 - 7.5500000000000000e+01 -2 -3 2126 1.0805000000000000e+03 - - -1.9372178614139557e-01 4.5466288924217224e-01 1. - -9.0210074186325073e-01 - <_> - 8.1375953674316406e+01 - - 1 2 2127 5.0000000000000000e-01 0 -1 2128 - 1.5000000000000000e+00 -2 -3 2129 2.1845000000000000e+03 - - -7.8440749645233154e-01 4.0864413976669312e-01 - -5.3355014324188232e-01 3.9062729477882385e-01 - <_> - 8.1887313842773438e+01 - - 1 2 2130 1.2450000000000000e+02 0 -1 2131 - 4.1665000000000000e+03 -2 -3 2132 1.0250000000000000e+02 - - -6.2995404005050659e-01 6.4907240867614746e-01 - 5.1135843992233276e-01 -3.9525008201599121e-01 - <_> - 8.2117805480957031e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 534. -2 -3 2135 - 2.8500000000000000e+01 - - 8.9746987819671631e-01 -9.2895346879959106e-01 - 2.3048999905586243e-01 -6.7827922105789185e-01 - <_> - 8.1636238098144531e+01 - - 1 2 2136 1.0500000000000000e+01 0 -1 2137 - 6.7500000000000000e+01 -2 -3 2138 4.1500000000000000e+01 - - 4.9451547861099243e-01 -4.8156398534774780e-01 - -3.7169450521469116e-01 5.3676486015319824e-01 - <_> - 8.1995071411132812e+01 - - 1 2 2139 5.0465000000000000e+03 0 -1 2140 - 9.5500000000000000e+01 -2 -3 2141 5.0000000000000000e-01 - - -2.1792615950107574e-01 3.5883331298828125e-01 - 8.3887630701065063e-01 -9.6526902914047241e-01 - <_> - 8.2212608337402344e+01 - - 1 2 2142 1.5500000000000000e+01 0 -1 2143 - 5.5000000000000000e+00 -2 -3 2144 7.5000000000000000e+00 - - -7.6026850938796997e-01 2.1753302216529846e-01 - -7.7944552898406982e-01 2.8800919651985168e-01 - <_> - 8.2952514648437500e+01 - - 1 2 2145 1.0500000000000000e+01 0 -1 2146 - 1.7500000000000000e+01 -2 -3 2147 3.5000000000000000e+00 - - 7.3990541696548462e-01 -3.4350591897964478e-01 - -7.8702974319458008e-01 -3.6859430372714996e-02 - <_> - 8.2764221191406250e+01 - - 1 2 2148 3.8915000000000000e+03 0 -1 2149 - 9.5000000000000000e+00 -2 -3 2150 160. - - -2.7847471833229065e-01 2.9747706651687622e-01 -1. 1. - <_> - 8.3073318481445312e+01 - - 1 2 2151 8.5000000000000000e+00 0 -1 2152 - 7.5000000000000000e+00 -2 -3 2153 3.4500000000000000e+01 - - -3.0019268393516541e-01 4.2716455459594727e-01 - 3.0783307552337646e-01 -7.1251338720321655e-01 - <_> - 8.3382904052734375e+01 - - 1 2 2154 146. 0 -1 2155 6.5000000000000000e+00 -2 -3 2156 - 253. - - -3.7641048431396484e-01 3.0958160758018494e-01 - -9.3819731473922729e-01 1. - <_> - 8.3006187438964844e+01 - - 1 2 2157 3.8500000000000000e+01 0 -1 2158 - 5.4500000000000000e+01 -2 -3 2159 1.9500000000000000e+01 - - -4.9478387832641602e-01 3.9714443683624268e-01 - -1.6719745099544525e-01 6.8846195936203003e-01 - <_> - 8.3494125366210938e+01 - - 1 2 2160 3.9345000000000000e+03 0 -1 2161 1. -2 -3 2162 - 8.0550000000000000e+02 - - 1. -1. 7.6673603057861328e-01 -1.6208630055189133e-02 - <_> - 8.3684944152832031e+01 - - 1 2 2163 4.7150000000000000e+02 0 -1 2164 31. -2 -3 2165 - 8.5000000000000000e+00 - - -7.7217268943786621e-01 4.8103070259094238e-01 - -7.8892275691032410e-02 5.8338689804077148e-01 - <_> - 8.3892440795898438e+01 - - 1 2 2166 308. 0 -1 2167 5.7650000000000000e+02 -2 -3 2168 - 4.1500000000000000e+01 - - 2.0749828219413757e-01 -6.5656942129135132e-01 - -9.0315932035446167e-01 1. - <_> - 8.3916496276855469e+01 - - 1 2 2169 3.0500000000000000e+01 0 -1 2170 - 2.8950000000000000e+02 -2 -3 2171 4773. - - 2.4049011990427971e-02 -5.8593571186065674e-01 - -7.0577090978622437e-01 9.1756677627563477e-01 - <_> - 8.3863990783691406e+01 - - 1 2 2172 444. 0 -1 2173 136. -2 -3 2174 - 1.5000000000000000e+00 - - -7.2386598587036133e-01 7.6625251770019531e-01 - -4.1046851873397827e-01 3.1866103410720825e-01 - <_> - 8.4162803649902344e+01 - - 1 2 2175 4.2450000000000000e+02 0 -1 2176 - 2.5000000000000000e+00 -2 -3 2177 5.4500000000000000e+01 - - -4.9317064881324768e-01 2.9881379008293152e-01 - -6.5457558631896973e-01 6.6832679510116577e-01 - <_> - 8.4366767883300781e+01 - - 1 2 2178 1.7650000000000000e+02 0 -1 2179 - 2.9500000000000000e+01 -2 -3 2180 9.1500000000000000e+01 - - 2.0396536588668823e-01 -5.5911725759506226e-01 1. - -9.1281843185424805e-01 - <_> - 8.4119194030761719e+01 - - 1 2 2181 2.5000000000000000e+00 0 -1 2182 - 1.6500000000000000e+01 -2 -3 2183 1.5000000000000000e+00 - - 3.0720415711402893e-01 -6.1874228715896606e-01 - 4.2462083697319031e-01 -3.2996997237205505e-01 - <_> - 8.4430221557617188e+01 - - 1 2 2184 7.6850000000000000e+02 0 -1 2185 - 1.5000000000000000e+00 -2 -3 2186 1.5500000000000000e+01 - - 2.5913137197494507e-01 -4.6971523761749268e-01 - -4.3263432383537292e-01 5.7092773914337158e-01 - <_> - 8.4639114379882812e+01 - - 1 2 2187 2.8500000000000000e+01 0 -1 2188 - 1.5000000000000000e+00 -2 -3 2189 2.0500000000000000e+01 - - -8.7549871206283569e-01 2.0889294147491455e-01 - -7.7527189254760742e-01 9.5611155033111572e-01 - <_> - 8.4146507263183594e+01 - - 1 2 2190 2.9500000000000000e+01 0 -1 2191 - 1.3500000000000000e+01 -2 -3 2192 1.3500000000000000e+01 - - -4.9260720610618591e-01 1.9271886348724365e-01 - 6.6219002008438110e-01 -8.9827889204025269e-01 - <_> - 8.4403144836425781e+01 - - 1 2 2193 1.9500000000000000e+01 0 -1 2194 - 6.8750000000000000e+02 -2 -3 2195 6.5500000000000000e+01 - - -5.4722160100936890e-01 2.5663515925407410e-01 - -6.7314952611923218e-01 5.6016397476196289e-01 - <_> - 8.4512977600097656e+01 - - 1 2 2196 1.7500000000000000e+01 0 -1 2197 - 8.5000000000000000e+00 -2 -3 2198 4.9500000000000000e+01 - - 5.1628947257995605e-02 -8.8596558570861816e-01 - 2.2394882142543793e-01 -8.4310758113861084e-01 - <_> - 8.4825332641601562e+01 - - 1 2 2199 1.5000000000000000e+00 0 -1 2200 - 8.5000000000000000e+00 -2 -3 2201 4.8500000000000000e+01 - - -9.5332622528076172e-01 3.3586847782135010e-01 - -5.5753439664840698e-01 3.1235861778259277e-01 - <_> - 8.4921630859375000e+01 - - 1 2 2202 3.0035000000000000e+03 0 -1 2203 - 2.5000000000000000e+00 -2 -3 2204 1.3850000000000000e+02 - - -2.7263507246971130e-01 3.0273589491844177e-01 1. - -8.9314818382263184e-01 - <_> - 8.4953636169433594e+01 - - 1 2 2205 1.3650000000000000e+02 0 -1 2206 21. -2 -3 2207 - 1.0450000000000000e+02 - - 9.7071325778961182e-01 -8.3434158563613892e-01 - -1.7443342506885529e-01 4.1703993082046509e-01 - <_> - 8.5531066894531250e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 2.8450000000000000e+02 -2 -3 2210 5.0000000000000000e-01 - - -5.4008752107620239e-01 5.7742959260940552e-01 - 6.5463826060295105e-02 -6.4212870597839355e-01 - <_> - 8.5679679870605469e+01 - - 1 2 2211 6.5000000000000000e+00 0 -1 2212 - 4.2500000000000000e+01 -2 -3 2213 5.5000000000000000e+00 - - -7.2564774751663208e-01 7.0831966400146484e-01 - -6.6582089662551880e-01 2.6227703690528870e-01 - <_> - 8.5235992431640625e+01 - - 1 2 2214 4.5500000000000000e+01 0 -1 2215 - 2.5000000000000000e+00 -2 -3 2216 1.5000000000000000e+00 - - -4.4622960686683655e-01 5.0379693508148193e-01 - 2.8327786922454834e-01 -6.1233770847320557e-01 - <_> - 8.5567344665527344e+01 - - 1 2 2217 5.0000000000000000e-01 0 -1 2218 - 6.0500000000000000e+01 -2 -3 2219 5.0000000000000000e-01 - - 3.3135503530502319e-01 -7.7173143625259399e-01 - 5.3300887346267700e-01 -5.7684963941574097e-01 - <_> - 8.5617721557617188e+01 - - 1 2 2220 1.1500000000000000e+01 0 -1 2221 - 6.7350000000000000e+02 -2 -3 2222 2.1885000000000000e+03 - - 4.9268788099288940e-01 -3.9361280202865601e-01 - 5.4581469297409058e-01 -1. - <_> - 8.5892776489257812e+01 - - 1 2 2223 1.0885000000000000e+03 0 -1 2224 - 1.0950000000000000e+02 -2 -3 2225 1.2500000000000000e+01 - - 8.7355607748031616e-01 -8.9644581079483032e-01 - -3.6866596341133118e-01 2.7505651116371155e-01 - <_> - 8.6008476257324219e+01 - - 1 2 2226 2.5150000000000000e+02 0 -1 2227 - 1.0500000000000000e+01 -2 -3 2228 2.2500000000000000e+01 - - 7.3005491495132446e-01 -8.4803074598312378e-01 - -6.7341393232345581e-01 6.4791239798069000e-02 - <_> - 8.5301307678222656e+01 - - 1 2 2229 9.5000000000000000e+00 0 -1 2230 - 1.0500000000000000e+01 -2 -3 2231 5.5000000000000000e+00 - - -7.0716243982315063e-01 3.0324958264827728e-02 - -3.6973038315773010e-01 5.3505402803421021e-01 - <_> - 8.5578842163085938e+01 - - 1 2 2232 9.9950000000000000e+02 0 -1 2233 - 5.0000000000000000e-01 -2 -3 2234 57. - - -5.4884088039398193e-01 2.7752920985221863e-01 - -7.9685103893280029e-01 5.8429610729217529e-01 - <_> - 8.5900283813476562e+01 - - 1 2 2235 1.4005000000000000e+03 0 -1 2236 - 1.1500000000000000e+01 -2 -3 2237 407. - - -4.8077926039695740e-01 3.2144653797149658e-01 - 8.7326759099960327e-01 -7.6497209072113037e-01 - <_> - 8.6183494567871094e+01 - - 1 2 2238 5.0000000000000000e-01 0 -1 2239 - 1.8500000000000000e+01 -2 -3 2240 2018. - - 5.9915566444396973e-01 -3.6263227462768555e-01 - -4.3329817056655884e-01 7.2292387485504150e-01 - <_> - 8.6417350769042969e+01 - - 1 2 2241 116. 0 -1 2242 7.9500000000000000e+01 -2 -3 2243 - 1.1500000000000000e+01 - - 2.3385088145732880e-01 -7.2572106122970581e-01 - -8.2059645652770996e-01 1. - <_> - 8.6353157043457031e+01 - - 1 2 2244 5.4750000000000000e+02 0 -1 2245 - 4.1650000000000000e+02 -2 -3 2246 7.4835000000000000e+03 - - -3.8013687729835510e-01 7.1552526950836182e-01 - -6.0602325201034546e-01 1.3700281083583832e-01 - <_> - 8.6689994812011719e+01 - - 1 2 2247 2.5000000000000000e+00 0 -1 2248 - 4.9500000000000000e+01 -2 -3 2249 3.1500000000000000e+01 - - -8.8249641656875610e-01 6.3650465011596680e-01 - -2.8715553879737854e-01 3.3683738112449646e-01 - <_> - 8.6457923889160156e+01 - - 1 2 2250 2.0500000000000000e+01 0 -1 2251 - 5.0000000000000000e-01 -2 -3 2252 1.5550000000000000e+02 - - 7.5483375787734985e-01 -5.7755672931671143e-01 - 3.1271988153457642e-01 -9.3355900049209595e-01 - <_> - 8.6848548889160156e+01 - - 1 2 2253 5.0000000000000000e-01 0 -1 2254 - 8.5000000000000000e+00 -2 -3 2255 1.4500000000000000e+01 - - -8.8290500640869141e-01 3.9062538743019104e-01 - 3.0572377145290375e-02 -6.9165939092636108e-01 - <_> - 8.7283264160156250e+01 - - 1 2 2256 5.6500000000000000e+01 0 -1 2257 - 2.5850000000000000e+02 -2 -3 2258 5.6500000000000000e+01 - - 7.9447448253631592e-01 -2.4108846485614777e-01 - -9.5247858762741089e-01 7.4498760700225830e-01 - <_> - 8.7402679443359375e+01 - - 1 2 2259 1.9050000000000000e+02 0 -1 2260 - 8.5000000000000000e+00 -2 -3 2261 1.6050000000000000e+02 - - 7.9782551527023315e-01 -4.8126858472824097e-01 - 3.2817113399505615e-01 -9.2351150512695312e-01 - <_> - 8.7450622558593750e+01 - - 1 2 2262 2.5000000000000000e+00 0 -1 2263 - 1.0750000000000000e+02 -2 -3 2264 1.2500000000000000e+01 - - -9.5446103811264038e-01 3.0746808648109436e-01 - 2.6287922263145447e-01 -5.2057027816772461e-01 - <_> - 8.7063316345214844e+01 - - 1 2 2265 1.6500000000000000e+01 0 -1 2266 - 6.4500000000000000e+01 -2 -3 2267 1.2895000000000000e+03 - - 9.6434988081455231e-02 -8.1099587678909302e-01 - 3.5276085138320923e-01 -6.3035190105438232e-01 - <_> - 8.7586761474609375e+01 - - 1 2 2268 5.5000000000000000e+00 0 -1 2269 - 3.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5307574272155762e-01 -5.4498150944709778e-02 - 5.2659434080123901e-01 -2.1662306785583496e-01 - <_> - 8.7653213500976562e+01 - - 1 2 2271 2.5000000000000000e+00 0 -1 2272 - 1.5000000000000000e+00 -2 -3 2273 239. - - 4.1265711188316345e-01 -2.8464233875274658e-01 - 6.7191797494888306e-01 -6.5316730737686157e-01 - <_> - 8.7628303527832031e+01 - - 1 2 2274 1.5000000000000000e+00 0 -1 2275 - 3.5000000000000000e+00 -2 -3 2276 5.0000000000000000e-01 - - -7.2243005037307739e-01 8.7789368629455566e-01 - 7.9855352640151978e-01 -2.4909071624279022e-02 - <_> - 8.7940948486328125e+01 - - 1 2 2277 8.5000000000000000e+00 0 -1 2278 - 4.4500000000000000e+01 -2 -3 2279 3.5000000000000000e+00 - - 8.1174898147583008e-01 -6.3333249092102051e-01 - -7.8106856346130371e-01 3.1264203786849976e-01 - <_> - 8.8444465637207031e+01 - - 1 2 2280 3.1500000000000000e+01 0 -1 2281 - 3.5000000000000000e+00 -2 -3 2282 5.8500000000000000e+01 - - -8.7983781099319458e-01 6.6502499580383301e-01 - 5.9884071350097656e-01 -3.4494200348854065e-01 - <_> - 8.8562141418457031e+01 - - 1 2 2283 8.8500000000000000e+01 0 -1 2284 - 3.0850000000000000e+02 -2 -3 2285 1.8685000000000000e+03 - - 1.1767382174730301e-01 -7.1909028291702271e-01 - -8.0886626243591309e-01 3.6782959103584290e-01 - <_> - 8.8689140319824219e+01 - - 1 2 2286 2.5000000000000000e+00 0 -1 2287 - 1.5000000000000000e+00 -2 -3 2288 2.9500000000000000e+01 - - -6.8951946496963501e-01 3.7994578480720520e-01 - -4.4435909390449524e-01 7.3357677459716797e-01 - <_> - 8.8993270874023438e+01 - - 1 2 2289 8.5450000000000000e+02 0 -1 2290 - 9.3500000000000000e+01 -2 -3 2291 1.0850000000000000e+02 - - 3.0412796139717102e-01 -5.4215848445892334e-01 - -7.8242719173431396e-01 5.9332287311553955e-01 - <_> - 8.8982391357421875e+01 - - 1 2 2292 1.9350000000000000e+02 0 -1 2293 - 5.0500000000000000e+01 -2 -3 2294 3.3500000000000000e+01 - - -1.0881225578486919e-02 -7.1214753389358521e-01 - -5.7588249444961548e-01 7.9207491874694824e-01 - <_> - 8.8675567626953125e+01 - - 1 2 2295 1.2500000000000000e+01 0 -1 2296 - 2.5000000000000000e+00 -2 -3 2297 1.5000000000000000e+00 - - -8.9892637729644775e-01 1. 3.4347891807556152e-01 - -3.1791657209396362e-01 - <_> - 8.8704269409179688e+01 - - 1 2 2298 1.1500000000000000e+01 0 -1 2299 - 4.7500000000000000e+01 -2 -3 2300 1.1500000000000000e+01 - - -2.4499019980430603e-01 5.0305950641632080e-01 - -7.4506103992462158e-01 1.1293403059244156e-01 - <_> - 8.8582321166992188e+01 - - 1 2 2301 5.0000000000000000e-01 0 -1 2302 - 1.2500000000000000e+01 -2 -3 2303 5.0000000000000000e-01 - - -3.6801630258560181e-01 4.8782908916473389e-01 - 7.5426805019378662e-01 -4.7202652692794800e-01 - <_> - 8.8955085754394531e+01 - - 1 2 2304 5.0000000000000000e-01 0 -1 2305 - 7.9500000000000000e+01 -2 -3 2306 1.0755000000000000e+03 - - 3.7275862693786621e-01 -4.8154482245445251e-01 - 6.9586211442947388e-01 -5.6343889236450195e-01 - <_> - 8.8874618530273438e+01 - - 1 2 2307 8.5500000000000000e+01 0 -1 2308 - 5.3650000000000000e+02 -2 -3 2309 694. - - 6.7843574285507202e-01 -4.6394348144531250e-01 - 6.8638551235198975e-01 -8.8641919195652008e-02 - <_> - 8.9109901428222656e+01 - - 1 2 2310 2.8500000000000000e+01 0 -1 2311 - 2.5000000000000000e+00 -2 -3 2312 6.1150000000000000e+02 - - -8.3614200353622437e-01 2.3528522253036499e-01 - -9.5000904798507690e-01 1. - <_> - 8.8907135009765625e+01 - - 1 2 2313 1.1525000000000000e+03 0 -1 2314 - 7.6850000000000000e+02 -2 -3 2315 3.7500000000000000e+01 - - -2.0276506245136261e-01 4.0722262859344482e-01 - -8.5420507192611694e-01 8.8535934686660767e-01 - <_> - 8.9519294738769531e+01 - - 1 2 2316 5.5000000000000000e+00 0 -1 2317 - 8.3650000000000000e+02 -2 -3 2318 2.5000000000000000e+00 - - 6.1215674877166748e-01 -2.8454613685607910e-01 - -6.7182534933090210e-01 1.3038201630115509e-01 - <_> - 8.9072807312011719e+01 - - 1 2 2319 5.0000000000000000e-01 0 -1 2320 - 1.2500000000000000e+01 -2 -3 2321 5.3500000000000000e+01 - - -3.0968821048736572e-01 6.4217364788055420e-01 - -4.4648653268814087e-01 3.5627630352973938e-01 - <_> - 8.9592712402343750e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 - 2.6500000000000000e+01 -2 -3 2324 4.5000000000000000e+00 - - -4.7493380308151245e-01 8.2513862848281860e-01 - -2.1184358000755310e-01 5.1990169286727905e-01 - <_> - 8.9800750732421875e+01 - - 1 2 2325 2.6850000000000000e+02 0 -1 2326 - 1.4250000000000000e+02 -2 -3 2327 2.8950000000000000e+02 - - 1. -9.8386675119400024e-01 2.0803783833980560e-01 - -7.4743682146072388e-01 - <_> - 8.9978019714355469e+01 - - 1 2 2328 9.6500000000000000e+01 0 -1 2329 - 5.0000000000000000e-01 -2 -3 2330 1.0500000000000000e+01 - - 3.9577171206474304e-01 -1.8832282721996307e-01 1. - -9.4037795066833496e-01 - <_> - 9.0186340332031250e+01 - - 1 2 2331 9.5000000000000000e+00 0 -1 2332 - 3.9500000000000000e+01 -2 -3 2333 4.1150000000000000e+02 - - 5.1927842199802399e-02 -5.1345849037170410e-01 - -6.9976913928985596e-01 7.2176700830459595e-01 - <_> - 9.0408126831054688e+01 - - 1 2 2334 1.4500000000000000e+01 0 -1 2335 - 5.6950000000000000e+02 -2 -3 2336 2.5000000000000000e+00 - - 5.3421056270599365e-01 -8.4200710058212280e-01 - -7.9201179742813110e-01 2.2178900241851807e-01 - <_> - 9.0207931518554688e+01 - - 1 2 2337 7.5000000000000000e+00 0 -1 2338 - 3.0150000000000000e+02 -2 -3 2339 8.1500000000000000e+01 - - 2.6031082868576050e-01 -5.6561201810836792e-01 - -6.8547034263610840e-01 6.9407206773757935e-01 - <_> - 9.0302421569824219e+01 - - 1 2 2340 3.1555000000000000e+03 0 -1 2341 - 2.5500000000000000e+01 -2 -3 2342 2.0500000000000000e+01 - - -4.6551218628883362e-01 6.1541539430618286e-01 - -5.8543795347213745e-01 4.2197912931442261e-01 - <_> - 9.0720130920410156e+01 - - 1 2 2343 2.2250000000000000e+02 0 -1 2344 - 2.6765000000000000e+03 -2 -3 2345 6.5000000000000000e+00 - - -1. 4.2247042059898376e-01 -5.9496659040451050e-01 - 7.3635950684547424e-02 - <_> - 9.0678649902343750e+01 - - 1 2 2346 2.4985000000000000e+03 0 -1 2347 - 5.5050000000000000e+02 -2 -3 2348 1.7500000000000000e+01 - - -2.6645794510841370e-01 5.7650017738342285e-01 - -6.3965815305709839e-01 1.3717547059059143e-01 - <_> - 9.1026916503906250e+01 - - 1 2 2349 8.5000000000000000e+00 0 -1 2350 - 9.5000000000000000e+00 -2 -3 2351 399. - - 3.4826722741127014e-01 -2.6130944490432739e-01 - -8.7031137943267822e-01 5.0992918014526367e-01 - <_> - 9.0745491027832031e+01 - - 1 2 2352 2.0500000000000000e+01 0 -1 2353 - 2.8415000000000000e+03 -2 -3 2354 1.3195000000000000e+03 - - 3.8361868262290955e-01 -6.5678369998931885e-01 - -7.2137272357940674e-01 2.9168155789375305e-01 - <_> - 9.0282897949218750e+01 - - 1 2 2355 5.0000000000000000e-01 0 -1 2356 - 1.8500000000000000e+01 -2 -3 2357 5.5000000000000000e+00 - - -5.5979007482528687e-01 4.2797699570655823e-01 - -7.2097688913345337e-01 -2.2096272557973862e-02 - <_> - 9.0329040527343750e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 5.0000000000000000e-01 -2 -3 2360 1.3850000000000000e+02 - - -8.6151492595672607e-01 6.3388091325759888e-01 - 4.6142544597387314e-02 -7.7132421731948853e-01 - <_> - 9.0726905822753906e+01 - - 1 2 2361 5.0000000000000000e-01 0 -1 2362 - 1.3605000000000000e+03 -2 -3 2363 4.4500000000000000e+01 - - -4.9816811084747314e-01 3.9786130189895630e-01 - -4.7495251893997192e-01 4.1306164860725403e-01 - <_> - 9.0184005737304688e+01 - - 1 2 2364 1.1225000000000000e+03 0 -1 2365 - 1.6455000000000000e+03 -2 -3 2366 6.5000000000000000e+00 - - -5.4290074110031128e-01 3.3631756901741028e-01 - -6.0382646322250366e-01 2.5190624594688416e-01 - <_> - 9.1035018920898438e+01 - - 1 2 2367 1.2185000000000000e+03 0 -1 2368 - 1.4635000000000000e+03 -2 -3 2369 7.5000000000000000e+00 - - -9.1523426771163940e-01 8.5101437568664551e-01 - -5.3849363327026367e-01 7.0430345833301544e-02 - <_> - 9.1617080688476562e+01 - - 1 2 2370 5.7450000000000000e+02 0 -1 2371 - 7.5000000000000000e+00 -2 -3 2372 1.2500000000000000e+01 - - -5.5275338888168335e-01 5.8206313848495483e-01 - 7.8669518232345581e-02 -6.4758539199829102e-01 - <_> - 9.1865600585937500e+01 - - 1 2 2373 1.5000000000000000e+00 0 -1 2374 31. -2 -3 2375 - 2.5000000000000000e+00 - - 7.1970331668853760e-01 -6.8706613779067993e-01 - -8.0606603622436523e-01 2.4852037429809570e-01 - <_> - 9.1933456420898438e+01 - - 1 2 2376 1.6500000000000000e+01 0 -1 2377 - 2.5350000000000000e+02 -2 -3 2378 2.7500000000000000e+01 - - 6.7855246365070343e-02 -7.4723839759826660e-01 - 3.3876419067382812e-01 -6.6246157884597778e-01 - <_> - 9.2073440551757812e+01 - - 1 2 2379 1.6150000000000000e+02 0 -1 2380 - 3.4905000000000000e+03 -2 -3 2381 29. - - 1.3998487591743469e-01 -9.7840291261672974e-01 - -9.9056637287139893e-01 1. - <_> - 9.2266113281250000e+01 - - 1 2 2382 1.5000000000000000e+00 0 -1 2383 - 3.0500000000000000e+01 -2 -3 2384 1.6500000000000000e+01 - - 4.2297352105379105e-02 -7.5529569387435913e-01 - 3.4410062432289124e-01 -7.4833053350448608e-01 - <_> - 9.2566078186035156e+01 - - 1 2 2385 2352. 0 -1 2386 7.5000000000000000e+00 -2 -3 2387 - 3.6150000000000000e+02 - - -7.9286593198776245e-01 2.6059108972549438e-01 - 7.3781818151473999e-01 -8.2013517618179321e-02 - <_> - 9.2297134399414062e+01 - - 1 2 2388 5.5000000000000000e+00 0 -1 2389 - 1.2500000000000000e+01 -2 -3 2390 4.4500000000000000e+01 - - -7.0269703865051270e-01 4.9800133705139160e-01 - 3.9258196949958801e-01 -2.6894846558570862e-01 - <_> - 9.2234367370605469e+01 - - 1 2 2391 8.8500000000000000e+01 0 -1 2392 - 5.1500000000000000e+01 -2 -3 2393 4.1500000000000000e+01 - - -6.2763020396232605e-02 6.3001161813735962e-01 - -8.5735118389129639e-01 6.4268112182617188e-01 - <_> - 9.2365852355957031e+01 - - 1 2 2394 1.0015000000000000e+03 0 -1 2395 - 7.6050000000000000e+02 -2 -3 2396 5.5000000000000000e+00 - - -3.7476244568824768e-01 2.9709032177925110e-01 - 5.4132920503616333e-01 -8.3887267112731934e-01 - <_> - 9.2131614685058594e+01 - - 1 2 2397 1.5000000000000000e+00 0 -1 2398 - 8.3500000000000000e+01 -2 -3 2399 5.5000000000000000e+00 - - -6.0538351535797119e-01 5.1848065853118896e-01 - -8.3529579639434814e-01 3.1571540236473083e-01 - <_> - 9.2501167297363281e+01 - - 1 2 2400 4.1500000000000000e+01 0 -1 2401 - 5.5000000000000000e+00 -2 -3 2402 5.5000000000000000e+00 - - -8.4844219684600830e-01 3.7978658080101013e-01 - -7.1654027700424194e-01 4.2168378829956055e-02 - <_> - 9.2843521118164062e+01 - - 1 2 2403 2.5000000000000000e+00 0 -1 2404 - 6.4500000000000000e+01 -2 -3 2405 5.4350000000000000e+02 - - 3.3212310075759888e-01 -8.3203417062759399e-01 - 4.9931150674819946e-01 -6.3223975896835327e-01 - <_> - 9.2861694335937500e+01 - - 1 2 2406 8.0500000000000000e+01 0 -1 2407 108. -2 -3 2408 - 1.6755000000000000e+03 - - 1.3975634239614010e-02 -7.8626310825347900e-01 - 5.7174843549728394e-01 -1.2674526870250702e-01 - <_> - 9.2968948364257812e+01 - - 1 2 2409 9.1500000000000000e+01 0 -1 2410 1289. -2 -3 2411 - 3.9500000000000000e+01 - - 1.2590126693248749e-01 -6.0328000783920288e-01 - -4.6332037448883057e-01 6.0493034124374390e-01 - <_> - 9.2898025512695312e+01 - - 1 2 2412 1.1450000000000000e+02 0 -1 2413 - 1.2050000000000000e+02 -2 -3 2414 1.4500000000000000e+01 - - -2.3465740680694580e-01 3.8865172863006592e-01 - -8.5783010721206665e-01 6.1523634195327759e-01 - <_> - 9.3257911682128906e+01 - - 1 2 2415 5.0000000000000000e-01 0 -1 2416 4262. -2 -3 2417 - 4.2050000000000000e+02 - - -9.0746092796325684e-01 6.8183261156082153e-01 - 3.5988852381706238e-01 -2.8322571516036987e-01 - <_> - 9.3038124084472656e+01 - - 1 2 2418 172. 0 -1 2419 5.5000000000000000e+00 -2 -3 2420 - 20. - - -2.1979008615016937e-01 3.5657486319541931e-01 -1. 1. - <_> - 9.3356796264648438e+01 - - 1 2 2421 1.3350000000000000e+02 0 -1 2422 - 1.4055000000000000e+03 -2 -3 2423 5.8950000000000000e+02 - - -9.2216557264328003e-01 3.1866943836212158e-01 - -5.3239977359771729e-01 5.1732164621353149e-01 - <_> - 9.3672409057617188e+01 - - 1 2 2424 5.0000000000000000e-01 0 -1 2425 - 5.0000000000000000e-01 -2 -3 2426 5.0000000000000000e-01 - - -8.1506562232971191e-01 3.1561306118965149e-01 - 5.0408166646957397e-01 -6.1532169580459595e-01 - <_> - 9.3130691528320312e+01 - - 1 2 2427 3.5500000000000000e+01 0 -1 2428 - 3.4305000000000000e+03 -2 -3 2429 505. - - -5.4171895980834961e-01 9.3477241694927216e-02 - 7.5641244649887085e-01 -8.8457739353179932e-01 - <_> - 9.3192596435546875e+01 - - 1 2 2430 6.4150000000000000e+02 0 -1 2431 2249. -2 -3 2432 - 662. - - 6.1905395239591599e-02 -7.2703468799591064e-01 - -9.1928023099899292e-01 9.8033905029296875e-01 - <_> - 9.3644752502441406e+01 - - 1 2 2433 1.5500000000000000e+01 0 -1 2434 - 1.7500000000000000e+01 -2 -3 2435 6.5000000000000000e+00 - - 4.3795633316040039e-01 -4.9344247579574585e-01 - 4.5216166973114014e-01 -3.1545853614807129e-01 - <_> - 9.3540618896484375e+01 - - 1 2 2436 5.0000000000000000e-01 0 -1 2437 - 1.3500000000000000e+01 -2 -3 2438 4.5500000000000000e+01 - - -1.0413412004709244e-01 6.4089792966842651e-01 - -3.8926449418067932e-01 8.7481313943862915e-01 - <_> - 9.3962448120117188e+01 - - 1 2 2439 242. 0 -1 2440 1.1500000000000000e+01 -2 -3 2441 - 2.9500000000000000e+01 - - -1.6308744251728058e-01 4.2182672023773193e-01 - -9.0694606304168701e-01 1. - <_> - 9.4556045532226562e+01 - - 1 2 2442 3.2500000000000000e+01 0 -1 2443 - 2.5000000000000000e+00 -2 -3 2444 1.4500000000000000e+01 - - -6.9347047805786133e-01 6.4435130357742310e-01 - -5.9788930416107178e-01 7.7255569398403168e-02 - <_> - 9.4721496582031250e+01 - - 1 2 2445 1.5500000000000000e+01 0 -1 2446 - 9.5000000000000000e+00 -2 -3 2447 2.9500000000000000e+01 - - -4.3441089987754822e-01 1.6544458270072937e-01 - -6.3126134872436523e-01 7.8642731904983521e-01 - <_> - 9.4984420776367188e+01 - - 1 2 2448 3.8645000000000000e+03 0 -1 2449 - 1.7925000000000000e+03 -2 -3 2450 60. - - -4.4316318631172180e-01 3.3754405379295349e-01 - -7.9294669628143311e-01 8.5425835847854614e-01 - <_> - 9.4582656860351562e+01 - - 1 2 2451 2.5000000000000000e+00 0 -1 2452 165. -2 -3 2453 - 5.2500000000000000e+01 - - 2.6933476328849792e-01 -6.8854063749313354e-01 - -8.7762522697448730e-01 1.4154928922653198e-01 - <_> - 9.4399383544921875e+01 - - 1 2 2454 68. 0 -1 2455 7.6850000000000000e+02 -2 -3 2456 - 4.3500000000000000e+01 - - -1.8327303230762482e-01 4.6131238341331482e-01 - -9.6990627050399780e-01 8.6611026525497437e-01 - <_> - 9.5118980407714844e+01 - - 1 2 2457 1.2225000000000000e+03 0 -1 2458 - 8.0050000000000000e+02 -2 -3 2459 8.2850000000000000e+02 - - -5.3803724050521851e-01 7.1959483623504639e-01 - -8.1214201450347900e-01 -5.1834270358085632e-02 - <_> - 9.4748359680175781e+01 - - 1 2 2460 2.4500000000000000e+01 0 -1 2461 - 5.0500000000000000e+01 -2 -3 2462 5.5000000000000000e+00 - - 7.3085886240005493e-01 -6.9121128320693970e-01 - 3.2903286814689636e-01 -3.7062501907348633e-01 - <_> - 9.4972839355468750e+01 - - 1 2 2463 5.5000000000000000e+00 0 -1 2464 - 2.8450000000000000e+02 -2 -3 2465 3.8915000000000000e+03 - - 4.3351098895072937e-01 -7.3641782999038696e-01 - 2.2448168694972992e-01 -7.1434223651885986e-01 - <_> - 9.5275985717773438e+01 - - 1 2 2466 1.0500000000000000e+01 0 -1 2467 - 5.0000000000000000e-01 -2 -3 2468 4.7250000000000000e+02 - - 9.6811644732952118e-02 -7.6387089490890503e-01 - -3.6428251862525940e-01 3.0314624309539795e-01 - <_> - 9.4958412170410156e+01 - - 1 2 2469 4.8050000000000000e+02 0 -1 2470 68. -2 -3 2471 - 8.5000000000000000e+00 - - -3.1757611036300659e-01 8.6130934953689575e-01 - 4.5709180831909180e-01 -6.0632956027984619e-01 - <_> - 9.5323020935058594e+01 - - 1 2 2472 2.8050000000000000e+02 0 -1 2473 - 8.5000000000000000e+00 -2 -3 2474 3.1500000000000000e+01 - - -5.9738260507583618e-01 3.6461219191551208e-01 - -4.8098289966583252e-01 4.0610322356224060e-01 - <_> - 9.5531364440917969e+01 - - 1 2 2475 9.6500000000000000e+01 0 -1 2476 - 2.5000000000000000e+00 -2 -3 2477 6.5000000000000000e+00 - - -6.9760245084762573e-01 2.0834487676620483e-01 - -9.1544830799102783e-01 1. - <_> - 9.5781745910644531e+01 - - 1 2 2478 8.8500000000000000e+01 0 -1 2479 - 1.2500000000000000e+01 -2 -3 2480 4.6500000000000000e+01 - - -4.0220642089843750e-01 2.5037932395935059e-01 - -7.7450615167617798e-01 1. - <_> - 9.5803649902343750e+01 - - 1 2 2481 5.0000000000000000e-01 0 -1 2482 - 4.3250000000000000e+02 -2 -3 2483 1.4500000000000000e+01 - - 4.0768721699714661e-01 -7.2477263212203979e-01 - 4.5463231205940247e-01 -4.9192586541175842e-01 - <_> - 9.5542800903320312e+01 - - 1 2 2484 8.5000000000000000e+00 0 -1 2485 - 4.5000000000000000e+00 -2 -3 2486 2.7450000000000000e+02 - - -7.1822851896286011e-01 2.5916630029678345e-01 - -5.6648039817810059e-01 3.5922342538833618e-01 - <_> - 9.5895820617675781e+01 - - 1 2 2487 5.2500000000000000e+01 0 -1 2488 - 5.0000000000000000e-01 -2 -3 2489 7.5000000000000000e+00 - - 3.5301324725151062e-01 -3.0667924880981445e-01 - 3.2827284932136536e-01 -8.0632358789443970e-01 - <_> - 9.6157928466796875e+01 - - 1 2 2490 2.5000000000000000e+00 0 -1 2491 - 2.5500000000000000e+01 -2 -3 2492 2.1500000000000000e+01 - - 4.8798337578773499e-01 -9.5308113098144531e-01 - -5.1750040054321289e-01 2.6211360096931458e-01 - <_> - 9.6371978759765625e+01 - - 1 2 2493 4.0500000000000000e+01 0 -1 2494 - 2.5000000000000000e+00 -2 -3 2495 4.1500000000000000e+01 - - -5.9743094444274902e-01 2.1404948830604553e-01 - -8.5050314664840698e-01 5.0623071193695068e-01 - <_> - 9.6368263244628906e+01 - - 1 2 2496 4.3500000000000000e+01 0 -1 2497 - 5.0000000000000000e-01 -2 -3 2498 2.5000000000000000e+00 - - -1. 1. -5.6743723154067993e-01 7.6639793813228607e-02 - <_> - 9.6516090393066406e+01 - - 1 2 2499 5.0000000000000000e-01 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 2.7500000000000000e+01 - - -9.6376502513885498e-01 6.0896998643875122e-01 - 1.4782741665840149e-01 -4.4592922925949097e-01 - <_> - 9.5890869140625000e+01 - - 1 2 2502 8.0500000000000000e+01 0 -1 2503 - 1.1025000000000000e+03 -2 -3 2504 5.4150000000000000e+02 - - 1.4774493873119354e-01 -6.2522071599960327e-01 - 6.8708664178848267e-01 -1.1048506200313568e-01 - <_> - 9.6234390258789062e+01 - - 1 2 2505 1.4500000000000000e+01 0 -1 2506 - 2.5000000000000000e+00 -2 -3 2507 5.0000000000000000e-01 - - 1.8957711756229401e-01 -6.4709383249282837e-01 - -4.1520085930824280e-01 3.4351608157157898e-01 - <_> - 9.6572166442871094e+01 - - 1 2 2508 5.0000000000000000e-01 0 -1 2509 - 2.5735000000000000e+03 -2 -3 2510 1173. - - 3.3778050541877747e-01 -6.3639199733734131e-01 - -5.0381755828857422e-01 6.3735854625701904e-01 - <_> - 9.7091682434082031e+01 - - 1 2 2511 1.1450000000000000e+02 0 -1 2512 - 4.0250000000000000e+02 -2 -3 2513 1.3450000000000000e+02 - - 6.2810701131820679e-01 -4.0756353735923767e-01 -1. - 5.1951670646667480e-01 - <_> - 9.7211601257324219e+01 - - 1 2 2514 8.0500000000000000e+01 0 -1 2515 - 6.5000000000000000e+00 -2 -3 2516 4.0500000000000000e+01 - - -7.7606672048568726e-01 6.6768264770507812e-01 - -3.8118714094161987e-01 3.6804616451263428e-01 - <_> - 9.7420547485351562e+01 - - 1 2 2517 1.5000000000000000e+00 0 -1 2518 - 1.6155000000000000e+03 -2 -3 2519 5.7500000000000000e+01 - - 1. -1. 2.0894423127174377e-01 -6.3742393255233765e-01 - <_> - 9.7607200622558594e+01 - - 1 2 2520 1.5000000000000000e+00 0 -1 2521 - 2.9050000000000000e+02 -2 -3 2522 5.0000000000000000e-01 - - -9.8843830823898315e-01 1. 2.6681044697761536e-01 - -3.6110731959342957e-01 - <_> - 9.7423561096191406e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 9.5000000000000000e+00 -2 -3 2525 9.5000000000000000e+00 - - -5.4543578624725342e-01 9.5868372917175293e-01 - -7.5861543416976929e-01 2.6955580711364746e-01 - <_> - 9.7825759887695312e+01 - - 1 2 2526 1.1550000000000000e+02 0 -1 2527 3751. -2 -3 2528 - 280. - - -8.3923083543777466e-01 6.2113016843795776e-01 - -3.8828554749488831e-01 5.3129935264587402e-01 - <_> - 9.8072143554687500e+01 - - 1 2 2529 1.0750000000000000e+02 0 -1 2530 - 5.7750000000000000e+02 -2 -3 2531 2.1500000000000000e+01 - - 2.4638542532920837e-01 -6.5665483474731445e-01 - -8.9632099866867065e-01 6.8391984701156616e-01 - <_> - 9.8402824401855469e+01 - - 1 2 2532 3.5000000000000000e+00 0 -1 2533 - 5.5000000000000000e+00 -2 -3 2534 5.0000000000000000e-01 - - -9.1934508085250854e-01 1. 3.3068060874938965e-01 - -2.1170829236507416e-01 - <_> - 9.8699340820312500e+01 - - 1 2 2535 1.1450000000000000e+02 0 -1 2536 - 5.5000000000000000e+00 -2 -3 2537 36. - - 3.0874010920524597e-01 -2.8325837850570679e-01 - -8.8745921850204468e-01 1. - <_> - 9.8877410888671875e+01 - - 1 2 2538 8.5000000000000000e+00 0 -1 2539 - 9.8500000000000000e+01 -2 -3 2540 1.4500000000000000e+01 - - 6.9435214996337891e-01 -9.1196221113204956e-01 - 2.4511045217514038e-01 -5.1517933607101440e-01 - <_> - 9.8995216369628906e+01 - - 1 2 2541 2.5500000000000000e+01 0 -1 2542 - 1.5500000000000000e+01 -2 -3 2543 3.6050000000000000e+02 - - 1.1780845373868942e-01 -5.3240364789962769e-01 -1. - 7.7188563346862793e-01 - <_> - 9.9240852355957031e+01 - - 1 2 2544 3.5000000000000000e+00 0 -1 2545 - 8.0500000000000000e+01 -2 -3 2546 5.6450000000000000e+02 - - -9.0737903118133545e-01 1. -5.8833694458007812e-01 - 2.4563524127006531e-01 - <_> - 9.8749168395996094e+01 - - 1 2 2547 2.1500000000000000e+01 0 -1 2548 - 2.0500000000000000e+01 -2 -3 2549 3.4500000000000000e+01 - - 4.9037560820579529e-01 -6.0056501626968384e-01 - 2.7949792146682739e-01 -6.7935609817504883e-01 - <_> - 9.9123207092285156e+01 - - 1 2 2550 1.5000000000000000e+00 0 -1 2551 - 8.6750000000000000e+02 -2 -3 2552 7.5000000000000000e+00 - - -7.2623419761657715e-01 5.3740710020065308e-01 - 3.7403845787048340e-01 -2.7497768402099609e-01 - <_> - 9.8746543884277344e+01 - - 1 2 2553 3.1500000000000000e+01 0 -1 2554 - 5.3500000000000000e+01 -2 -3 2555 1.3500000000000000e+01 - - 4.1538569331169128e-01 -4.7679051756858826e-01 - -6.1080145835876465e-01 4.9855870008468628e-01 - <_> - 9.9137901306152344e+01 - - 1 2 2556 4.5000000000000000e+00 0 -1 2557 - 3.5000000000000000e+00 -2 -3 2558 1.3905000000000000e+03 - - -8.8297528028488159e-01 3.9136049151420593e-01 - 4.8427349328994751e-01 -1.3551473617553711e-01 - <_> - 9.9093750000000000e+01 - - 1 2 2559 1.2500000000000000e+01 0 -1 2560 109. -2 -3 2561 - 1.8500000000000000e+01 - - -2.1636287868022919e-01 4.4644072651863098e-01 - -4.5347277075052261e-02 -8.3115756511688232e-01 - <_> - 9.9295211791992188e+01 - - 1 2 2562 2.7550000000000000e+02 0 -1 2563 21. -2 -3 2564 - 400. - - 8.4553992748260498e-01 -7.8862386941909790e-01 - 2.0146845281124115e-01 -9.3354743719100952e-01 - <_> - 9.9591613769531250e+01 - - 1 2 2565 7.1500000000000000e+01 0 -1 2566 - 2.0500000000000000e+01 -2 -3 2567 1.4450000000000000e+02 - - 2.6693066954612732e-01 -6.6290807723999023e-01 - 4.1993066668510437e-01 -4.1178131103515625e-01 - <_> - 9.9774261474609375e+01 - - 1 2 2568 2.7455000000000000e+03 0 -1 2569 - 2.5000000000000000e+00 -2 -3 2570 1.3500000000000000e+01 - - -4.0591225028038025e-01 2.1991367638111115e-01 -1. 1. - <_> - 9.9528968811035156e+01 - - 1 2 2571 1.1500000000000000e+01 0 -1 2572 - 6.5000000000000000e+00 -2 -3 2573 187. - - -2.4529571831226349e-01 4.4422072172164917e-01 - -7.1468102931976318e-01 6.1321121454238892e-01 - <_> - 9.9765602111816406e+01 - - 1 2 2574 1.0015000000000000e+03 0 -1 2575 - 3.5000000000000000e+00 -2 -3 2576 103. - - 3.6130765080451965e-01 -3.1130629777908325e-01 - -8.0834662914276123e-01 6.8982625007629395e-01 - <_> - 9.9243118286132812e+01 - - 1 2 2577 5.7150000000000000e+02 0 -1 2578 36. -2 -3 2579 - 1.5500000000000000e+01 - - -5.2247774600982666e-01 1. -1.2719422578811646e-01 - 4.9271491169929504e-01 - <_> - 9.9417327880859375e+01 - - 1 2 2580 5.0000000000000000e-01 0 -1 2581 - 2.5000000000000000e+00 -2 -3 2582 2.5000000000000000e+00 - - -5.6974679231643677e-01 6.0422992706298828e-01 - -6.1786216497421265e-01 4.9528244882822037e-02 - <_> - 9.9721191406250000e+01 - - 1 2 2583 2.5000000000000000e+00 0 -1 2584 - 2.4500000000000000e+01 -2 -3 2585 1.4250000000000000e+02 - - -6.2716758251190186e-01 7.0882409811019897e-01 - 3.0386608839035034e-01 -8.0423253774642944e-01 - <_> - 9.9943511962890625e+01 - - 1 2 2586 1.8500000000000000e+01 0 -1 2587 - 3.9500000000000000e+01 -2 -3 2588 1.3750000000000000e+02 - - 3.2850837707519531e-01 -8.2033318281173706e-01 - 2.2231689095497131e-01 -6.0138916969299316e-01 - <_> - 9.9831451416015625e+01 - - 1 2 2589 1.3500000000000000e+01 0 -1 2590 - 4.5500000000000000e+01 -2 -3 2591 4.4500000000000000e+01 - - -4.2661905288696289e-01 5.1914167404174805e-01 - 3.8148659467697144e-01 -8.5451364517211914e-01 - <_> - 9.9631042480468750e+01 - - 1 2 2592 1.5000000000000000e+00 0 -1 2593 - 1.0500000000000000e+01 -2 -3 2594 5.0000000000000000e-01 - - -8.8435149192810059e-01 1. 4.5112967491149902e-01 - -2.0040939748287201e-01 - <_> - 9.9837104797363281e+01 - - 1 2 2595 2.5000000000000000e+00 0 -1 2596 - 2.8050000000000000e+02 -2 -3 2597 3.1500000000000000e+01 - - 2.1158181130886078e-01 -8.0644214153289795e-01 - 2.0606023073196411e-01 -9.3066710233688354e-01 - <_> - 1.0016289520263672e+02 - - 1 2 2598 5.0000000000000000e-01 0 -1 2599 - 5.5850000000000000e+02 -2 -3 2600 7.5000000000000000e+00 - - -8.6102581024169922e-01 3.2579025626182556e-01 - -6.1346149444580078e-01 3.3240249752998352e-01 - <_> - 1.0033647155761719e+02 - - 1 2 2601 3.5000000000000000e+00 0 -1 2602 8. -2 -3 2603 - 5.4500000000000000e+01 - - -7.9454857110977173e-01 9.5821666717529297e-01 - 1.7357560992240906e-01 -8.3915024995803833e-01 - <_> - 1.0047587585449219e+02 - - 0 1 2604 2.5000000000000000e+00 0 1 2604 2.5000000000000000e+00 -1 -2 2605 - 8.2050000000000000e+02 - - -1. -1. -5.9203457832336426e-01 1.3940984010696411e-01 - <_> - 1.0109948730468750e+02 - - 1 2 2606 2.0795000000000000e+03 0 -1 2607 - 1.8550000000000000e+02 -2 -3 2608 1.2500000000000000e+01 - - 6.2360501289367676e-01 -1.7042215168476105e-01 - -7.0164740085601807e-01 9.1911442577838898e-02 - <_> - 1.0105032348632812e+02 - - 1 2 2609 4.6500000000000000e+01 0 -1 2610 - 3.9500000000000000e+01 -2 -3 2611 2.5000000000000000e+00 - - 4.8169857263565063e-01 -5.7907623052597046e-01 - 4.6473887562751770e-01 -3.2131230831146240e-01 - <_> - 1.0105367279052734e+02 - - 1 2 2612 6.7350000000000000e+02 0 -1 2613 - 5.0000000000000000e-01 -2 -3 2614 3740. - - 2.7208894491195679e-01 -4.3277686834335327e-01 - 6.5942746400833130e-01 -5.1724559068679810e-01 - <_> - 1.0141363525390625e+02 - - 1 2 2615 5.0000000000000000e-01 0 -1 2616 - 1.5500000000000000e+01 -2 -3 2617 5.0000000000000000e-01 - - -8.2222098112106323e-01 7.9113721847534180e-01 - 6.9188493490219116e-01 -4.8952169716358185e-02 - <_> - 1.0130570983886719e+02 - - 1 2 2618 2.0500000000000000e+01 0 -1 2619 - 8.5000000000000000e+00 -2 -3 2620 2.0050000000000000e+02 - - -1.0792832076549530e-01 5.1927500963211060e-01 - -7.9460966587066650e-01 8.2356446981430054e-01 - <_> - 1.0164145660400391e+02 - - 1 2 2621 2.1500000000000000e+01 0 -1 2622 - 1.5000000000000000e+00 -2 -3 2623 6.0500000000000000e+01 - - 3.3574688434600830e-01 -4.5670211315155029e-01 - -6.3089555501937866e-01 4.8581323027610779e-01 - <_> - 1.0131285095214844e+02 - - 1 2 2624 9.5000000000000000e+00 0 -1 2625 - 7.3500000000000000e+01 -2 -3 2626 9.5000000000000000e+00 - - 3.0599847435951233e-01 -6.1251938343048096e-01 - -2.9742473363876343e-01 4.9433988332748413e-01 - <_> - 1.0162899780273438e+02 - - 1 2 2627 5.5000000000000000e+00 0 -1 2628 - 2.5000000000000000e+00 -2 -3 2629 8.8850000000000000e+02 - - -3.9324402809143066e-01 3.1614956259727478e-01 - -6.8262726068496704e-01 7.5144731998443604e-01 - <_> - 1.0186949920654297e+02 - - 1 2 2630 1.4805000000000000e+03 0 -1 2631 - 1.0500000000000000e+01 -2 -3 2632 15. - - 2.4050149321556091e-01 -3.6888840794563293e-01 -1. 1. - <_> - 1.0191372680664062e+02 - - 1 2 2633 2.2500000000000000e+01 0 -1 2634 - 4.5000000000000000e+00 -2 -3 2635 4.1950000000000000e+02 - - 2.9375064373016357e-01 -3.5744154453277588e-01 - -3.5613030195236206e-01 8.1968200206756592e-01 - <_> - 1.0208142852783203e+02 - - 1 2 2636 3.5000000000000000e+00 0 -1 2637 21. -2 -3 2638 - 3.5000000000000000e+00 - - -8.8189947605133057e-01 9.3166828155517578e-01 - 4.8177376389503479e-01 -1.2354224920272827e-01 - <_> - 1.0226190948486328e+02 - - 1 2 2639 9.5000000000000000e+00 0 -1 2640 - 5.5000000000000000e+00 -2 -3 2641 1.7285000000000000e+03 - - -9.7239077091217041e-01 8.0751657485961914e-02 - 1.8048079311847687e-01 -7.8952634334564209e-01 - <_> - 1.0249628448486328e+02 - - 1 2 2642 5.0000000000000000e-01 0 -1 2643 - 1.5000000000000000e+00 -2 -3 2644 2.4500000000000000e+01 - - 3.4624457359313965e-01 -4.0281239151954651e-01 - -5.5928331613540649e-01 7.1457552909851074e-01 - <_> - 1.0274293518066406e+02 - - 1 2 2645 3.8500000000000000e+01 0 -1 2646 - 1.7500000000000000e+01 -2 -3 2647 1.4450000000000000e+02 - - 1.3477689027786255e-01 -6.1821442842483521e-01 - 5.9605765342712402e-01 -1.6502375900745392e-01 - <_> - 1.0253598785400391e+02 - - 1 2 2648 1.3500000000000000e+01 0 -1 2649 - 5.2550000000000000e+02 -2 -3 2650 2.2735000000000000e+03 - - -7.9840284585952759e-01 2.3721742630004883e-01 - -5.5634832382202148e-01 3.1294867396354675e-01 - <_> - 1.0290502929687500e+02 - - 1 2 2651 5.4750000000000000e+02 0 -1 2652 - 8.3050000000000000e+02 -2 -3 2653 1.1150000000000000e+02 - - -1.4335750043392181e-01 7.7484899759292603e-01 - -6.7993903160095215e-01 1.6464550048112869e-02 - <_> - 1.0276994323730469e+02 - - 1 2 2654 1.3650000000000000e+02 0 -1 2655 - 1.5000000000000000e+00 -2 -3 2656 5.1500000000000000e+01 - - 4.3065854907035828e-01 -2.5181022286415100e-01 - -7.0685976743698120e-01 5.8210808038711548e-01 - <_> - 1.0282818603515625e+02 - - 1 2 2657 3.6500000000000000e+01 0 -1 2658 - 3.5000000000000000e+00 -2 -3 2659 4.5000000000000000e+00 - - -8.7250131368637085e-01 3.3097213506698608e-01 - 4.2310500144958496e-01 -1.7739102244377136e-01 - <_> - 1.0300099945068359e+02 - - 1 2 2660 1.9050000000000000e+02 0 -1 2661 - 1.6500000000000000e+01 -2 -3 2662 6.3500000000000000e+01 - - -6.1183965206146240e-01 7.1433728933334351e-01 - -9.4837844371795654e-02 5.6334847211837769e-01 - <_> - 1.0327600860595703e+02 - - 1 2 2663 1.1345000000000000e+03 0 -1 2664 - 7.5000000000000000e+00 -2 -3 2665 4.5500000000000000e+01 - - -9.7449356317520142e-01 2.7501192688941956e-01 - -6.7455238103866577e-01 5.9240275621414185e-01 - <_> - 1.0331129455566406e+02 - - 1 2 2666 2.2500000000000000e+01 0 -1 2667 - 7.8350000000000000e+02 -2 -3 2668 87. - - 2.1151831746101379e-01 -9.4473469257354736e-01 - 6.7612463235855103e-01 -8.3754408359527588e-01 - <_> - 1.0303090667724609e+02 - - 1 2 2669 1.3500000000000000e+01 0 -1 2670 - 4.7500000000000000e+01 -2 -3 2671 7.6500000000000000e+01 - - -4.5662239193916321e-01 6.4888173341751099e-01 - 5.7376283407211304e-01 -2.1476963162422180e-01 - <_> - 1.0311815643310547e+02 - - 1 2 2672 1.5000000000000000e+00 0 -1 2673 - 3.5000000000000000e+00 -2 -3 2674 5.7500000000000000e+01 - - -2.0579831302165985e-01 4.5064237713813782e-01 - -5.4586839675903320e-01 8.1367361545562744e-01 - <_> - 1.0337432098388672e+02 - - 1 2 2675 3.7850000000000000e+02 0 -1 2676 59. -2 -3 2677 - 2945. - - -6.2283027172088623e-01 7.8782963752746582e-01 - 2.5616112351417542e-01 -1. - <_> - 1.0362288665771484e+02 - - 1 2 2678 1.1500000000000000e+01 0 -1 2679 - 1.7150000000000000e+02 -2 -3 2680 7.5500000000000000e+01 - - 6.3007098436355591e-01 -4.1216814517974854e-01 - 4.8822152614593506e-01 -3.9382278919219971e-01 - <_> - 1.0388551330566406e+02 - - 1 2 2681 1.5000000000000000e+00 0 -1 2682 - 1.6385000000000000e+03 -2 -3 2683 110. - - 3.0745586752891541e-01 -7.9586678743362427e-01 - 2.6261982321739197e-01 -7.6895767450332642e-01 - <_> - 1.0405072021484375e+02 - - 1 2 2684 1.5000000000000000e+00 0 -1 2685 - 5.6850000000000000e+02 -2 -3 2686 4.5000000000000000e+00 - - 9.3116897344589233e-01 -9.6380370855331421e-01 - -7.6854610443115234e-01 1.6521225869655609e-01 - <_> - 1.0400543975830078e+02 - - 1 2 2687 6.2950000000000000e+02 0 -1 2688 - 5.1450000000000000e+02 -2 -3 2689 236. - - -4.5279026031494141e-02 8.4354996681213379e-01 - -6.6148412227630615e-01 6.9928210973739624e-01 - <_> - 1.0376971435546875e+02 - - 1 2 2690 9.4500000000000000e+01 0 -1 2691 - 1.5050000000000000e+02 -2 -3 2692 1.6750000000000000e+02 - - -2.3573163151741028e-01 4.4335815310478210e-01 - 6.1139583587646484e-01 -6.4605855941772461e-01 - <_> - 1.0405144500732422e+02 - - 1 2 2693 4.4500000000000000e+01 0 -1 2694 - 5.6250000000000000e+02 -2 -3 2695 3.8500000000000000e+01 - - 3.8796469569206238e-02 -6.5249174833297729e-01 - -6.0536789894104004e-01 5.4190611839294434e-01 - <_> - 1.0398574066162109e+02 - - 1 2 2696 4.4500000000000000e+01 0 -1 2697 - 5.0000000000000000e-01 -2 -3 2698 5.2500000000000000e+01 - - 4.2008396983146667e-01 -1.4273323118686676e-01 - -7.3499578237533569e-01 1. - <_> - 1.0385164642333984e+02 - - 1 2 2699 3.8500000000000000e+01 0 -1 2700 - 7.5000000000000000e+00 -2 -3 2701 3.5000000000000000e+00 - - 3.1169781088829041e-01 -7.7311396598815918e-01 - -1.3409157097339630e-01 4.9537870287895203e-01 - <_> - 1.0448446655273438e+02 - - 1 2 2702 2.6050000000000000e+02 0 -1 2703 - 1.8350000000000000e+02 -2 -3 2704 7.6350000000000000e+02 - - -1. 9.7587960958480835e-01 -5.2969473600387573e-01 - 1.2663070857524872e-01 - <_> - 1.0484059906005859e+02 - - 1 2 2705 1.1500000000000000e+01 0 -1 2706 - 4.1850000000000000e+02 -2 -3 2707 2.3500000000000000e+01 - - 7.9048752784729004e-02 -8.0509215593338013e-01 - 3.5613477230072021e-01 -5.6644356250762939e-01 - <_> - 1.0512301635742188e+02 - - 1 2 2708 1485. 0 -1 2709 5.5000000000000000e+00 -2 -3 2710 - 5.0000000000000000e-01 - - -7.0782458782196045e-01 2.8242054581642151e-01 - 3.9573973417282104e-01 -9.0347629785537720e-01 - <_> - 1.0531546020507812e+02 - - 1 2 2711 1353. 0 -1 2712 1.7500000000000000e+01 -2 -3 2713 - 1.0750000000000000e+02 - - 2.7195869013667107e-02 -7.5462043285369873e-01 - 3.2506725192070007e-01 -8.6369091272354126e-01 - <_> - 1.0547406768798828e+02 - - 1 2 2714 2.5000000000000000e+00 0 -1 2715 16. -2 -3 2716 - 4.2955000000000000e+03 - - -1. 7.2179090976715088e-01 1.5860775113105774e-01 - -6.5142124891281128e-01 - <_> - 1.0487975311279297e+02 - - 1 2 2717 1.5500000000000000e+01 0 -1 2718 10700. -2 -3 2719 - 1.7875000000000000e+03 - - 2.6182049885392189e-02 -8.4672302007675171e-01 - -7.7213704586029053e-01 3.4896582365036011e-01 - <_> - 1.0509091186523438e+02 - - 1 2 2720 1.5000000000000000e+00 0 -1 2721 - 1.5000000000000000e+00 -2 -3 2722 2.9500000000000000e+01 - - -8.2644587755203247e-01 2.1116006374359131e-01 - -7.3146438598632812e-01 9.5215821266174316e-01 - <_> - 1.0519564056396484e+02 - - 1 2 2723 3.0500000000000000e+01 0 -1 2724 - 3.4935000000000000e+03 -2 -3 2725 5.7500000000000000e+01 - - -1. 6.9735002517700195e-01 -5.7586830854415894e-01 - 1.0472767800092697e-01 - <_> - 1.0569725799560547e+02 - - 1 2 2726 2.4450000000000000e+02 0 -1 2727 644. -2 -3 2728 - 2.3500000000000000e+01 - - -8.5404765605926514e-01 5.0162208080291748e-01 - -5.6405150890350342e-01 3.5492885112762451e-01 - <_> - 1.0524179077148438e+02 - - 1 2 2729 4.7500000000000000e+01 0 -1 2730 - 2.7650000000000000e+02 -2 -3 2731 2818. - - -4.5547124743461609e-01 3.0731198191642761e-01 - -7.2488194704055786e-01 7.7106243371963501e-01 - <_> - 1.0491101074218750e+02 - - 1 2 2732 3.5000000000000000e+00 0 -1 2733 1511. -2 -3 2734 - 1.7155000000000000e+03 - - 4.6164187788963318e-01 -6.6047859191894531e-01 - -3.3077949285507202e-01 3.7580975890159607e-01 - <_> - 1.0527840423583984e+02 - - 1 2 2735 5.0000000000000000e-01 0 -1 2736 - 1.5000000000000000e+00 -2 -3 2737 9.7750000000000000e+02 - - -5.6398648023605347e-01 3.6739850044250488e-01 - 1.4843972027301788e-01 -7.5591593980789185e-01 - <_> - 1.0569275665283203e+02 - - 1 2 2738 1.3500000000000000e+01 0 -1 2739 - 1.5000000000000000e+00 -2 -3 2740 2.5000000000000000e+00 - - 4.4956609606742859e-01 -5.2449923753738403e-01 - -9.4341361522674561e-01 4.1434991359710693e-01 - <_> - 1.0587648010253906e+02 - - 1 2 2741 2.1515000000000000e+03 0 -1 2742 - 2.6500000000000000e+01 -2 -3 2743 3.0500000000000000e+01 - - 1.8371918797492981e-01 -9.8738479614257812e-01 - -9.1896229982376099e-01 4.3715295195579529e-01 - <_> - 1.0598551177978516e+02 - - 1 2 2744 1.6500000000000000e+01 0 -1 2745 - 4.5000000000000000e+00 -2 -3 2746 1.5175000000000000e+03 - - 1.0903272777795792e-01 -7.6156085729598999e-01 - 3.4190380573272705e-01 -5.6521832942962646e-01 - <_> - 1.0585959625244141e+02 - - 1 2 2747 3.5000000000000000e+00 0 -1 2748 - 1.8650000000000000e+02 -2 -3 2749 1.7500000000000000e+01 - - -8.6969417333602905e-01 8.7447375059127808e-01 - -1.2591452896595001e-01 4.7273957729339600e-01 - <_> - 1.0568214416503906e+02 - - 1 2 2750 245. 0 -1 2751 5.5000000000000000e+00 -2 -3 2752 - 3.5000000000000000e+00 - - 5.2921187877655029e-01 -4.8938277363777161e-01 - 3.0937749147415161e-01 -5.0696980953216553e-01 - <_> - 1.0601576232910156e+02 - - 1 2 2753 1.7500000000000000e+01 0 -1 2754 - 1.1395000000000000e+03 -2 -3 2755 1.0950000000000000e+02 - - 2.8152284026145935e-01 -7.8550308942794800e-01 - 3.3361354470252991e-01 -5.6299263238906860e-01 - <_> - 1.0640065765380859e+02 - - 1 2 2756 5.0000000000000000e-01 0 -1 2757 - 1.5000000000000000e+00 -2 -3 2758 4.5000000000000000e+00 - - -3.8055318593978882e-01 3.8489964604377747e-01 - -5.7636463642120361e-01 4.3075269460678101e-01 - <_> - 1.0641130828857422e+02 - - 1 2 2759 5.7050000000000000e+02 0 -1 2760 - 1.4500000000000000e+01 -2 -3 2761 1.1835000000000000e+03 - - -6.4392197132110596e-01 3.5690125823020935e-01 - 2.9891923069953918e-01 -9.5714271068572998e-01 - <_> - 1.0660404968261719e+02 - - 1 2 2762 1.5000000000000000e+00 0 -1 2763 - 5.9150000000000000e+02 -2 -3 2764 1.1535000000000000e+03 - - -8.0829763412475586e-01 8.4891957044601440e-01 - 1.9274589419364929e-01 -7.3956298828125000e-01 - <_> - 1.0652481079101562e+02 - - 1 2 2765 5.3500000000000000e+01 0 -1 2766 - 3.0950000000000000e+02 -2 -3 2767 8.2500000000000000e+01 - - 2.0712941884994507e-01 -3.6751377582550049e-01 - 7.9296332597732544e-01 -1. - <_> - 1.0692726898193359e+02 - - 1 2 2768 6.6500000000000000e+01 0 -1 2769 1074. -2 -3 2770 - 1.1500000000000000e+01 - - 1.1640611104667187e-02 -8.8242655992507935e-01 - 4.0245753526687622e-01 -6.6962105035781860e-01 - <_> - 1.0722780609130859e+02 - - 1 2 2771 400. 0 -1 2772 258. -2 -3 2773 242. - - 9.5710533857345581e-01 -6.8693101406097412e-01 - 5.1057505607604980e-01 -1.5650358796119690e-01 - <_> - 1.0750185394287109e+02 - - 1 2 2774 3.5000000000000000e+00 0 -1 2775 - 2.0500000000000000e+01 -2 -3 2776 51. - - -6.6889345645904541e-01 9.8602853715419769e-02 - 5.0510036945343018e-01 -7.3887240886688232e-01 - <_> - 1.0781588745117188e+02 - - 1 2 2777 4.5000000000000000e+00 0 -1 2778 - 1.1525000000000000e+03 -2 -3 2779 2.7500000000000000e+01 - - -8.5173243284225464e-01 5.9037590026855469e-01 - 8.2559481263160706e-02 -5.7935595512390137e-01 - <_> - 1.0813179016113281e+02 - - 1 2 2780 1.3500000000000000e+01 0 -1 2781 - 7.6750000000000000e+02 -2 -3 2782 9.5000000000000000e+00 - - -8.5958725214004517e-01 7.9117491841316223e-02 - -8.4548884630203247e-01 3.1590864062309265e-01 - <_> - 1.0812385559082031e+02 - - 1 2 2783 2.5500000000000000e+01 0 -1 2784 - 4.5000000000000000e+00 -2 -3 2785 4.1500000000000000e+01 - - -5.3340083360671997e-01 2.1516241133213043e-01 - -8.2421797513961792e-01 5.7744872570037842e-01 - <_> - 1.0778499603271484e+02 - - 1 2 2786 4.5000000000000000e+00 0 -1 2787 - 1.8050000000000000e+02 -2 -3 2788 5.7500000000000000e+01 - - 3.2442337274551392e-01 -6.3051867485046387e-01 - -5.6196290254592896e-01 1. - <_> - 1.0795186614990234e+02 - - 1 2 2789 9.5000000000000000e+00 0 -1 2790 - 2.9500000000000000e+01 -2 -3 2791 2.4845000000000000e+03 - - -9.0732103586196899e-01 1. -4.3962568044662476e-01 - 2.4967047572135925e-01 - <_> - 1.0834626007080078e+02 - - 1 2 2792 7642. 0 -1 2793 2.9500000000000000e+01 -2 -3 2794 - 1.5500000000000000e+01 - - 4.5714893937110901e-01 -1. -7.8440755605697632e-01 - -2.9551941901445389e-02 - <_> - 1.0802055358886719e+02 - - 1 2 2795 1.3445000000000000e+03 0 -1 2796 - 5.0000000000000000e-01 -2 -3 2797 2.5000000000000000e+00 - - 1.8776105344295502e-01 -5.1964151859283447e-01 - -3.2570576667785645e-01 5.8407723903656006e-01 - <_> - 1.0869297790527344e+02 - - 1 2 2798 3.5000000000000000e+00 0 -1 2799 - 2.6650000000000000e+02 -2 -3 2800 6.8550000000000000e+02 - - 7.9688948392868042e-01 -5.5319869518280029e-01 - 6.7242574691772461e-01 -5.3342822939157486e-03 - <_> - 1.0871336364746094e+02 - - 1 2 2801 1.3550000000000000e+02 0 -1 2802 - 7.8850000000000000e+02 -2 -3 2803 5.3500000000000000e+01 - - -4.0466487407684326e-01 8.8463294506072998e-01 - 4.2380827665328979e-01 -8.9209264516830444e-01 - <_> - 1.0827619934082031e+02 - - 1 2 2804 6.5500000000000000e+01 0 -1 2805 - 1.7500000000000000e+01 -2 -3 2806 2.8950000000000000e+02 - - 1.1377986520528793e-01 -6.0579437017440796e-01 - 5.5230200290679932e-01 -5.3584653139114380e-01 - <_> - 1.0870999145507812e+02 - - 1 2 2807 1.5500000000000000e+01 0 -1 2808 - 3.7850000000000000e+02 -2 -3 2809 2.7750000000000000e+02 - - 3.2576033473014832e-01 -8.8590908050537109e-01 - 4.3379050493240356e-01 -1.6937582194805145e-01 - <_> - 1.0839844512939453e+02 - - 1 2 2810 2.8500000000000000e+01 0 -1 2811 - 3.8500000000000000e+01 -2 -3 2812 2.5500000000000000e+01 - - -3.1154349446296692e-01 6.3721460103988647e-01 - -7.1922361850738525e-01 6.2959849834442139e-01 - <_> - 1.0877592468261719e+02 - - 1 2 2813 1.2500000000000000e+01 0 -1 2814 - 1.3695000000000000e+03 -2 -3 2815 6.5000000000000000e+00 - - -5.5014491081237793e-01 3.7747702002525330e-01 - -6.9611859321594238e-01 1.2586995959281921e-01 - <_> - 1.0896472930908203e+02 - - 1 2 2816 3.1050000000000000e+02 0 -1 2817 - 2.8850000000000000e+02 -2 -3 2818 146. - - 1.8880467116832733e-01 -6.9542157649993896e-01 - -9.3111920356750488e-01 5.6534785032272339e-01 - <_> - 1.0875339508056641e+02 - - 1 2 2819 2.1500000000000000e+01 0 -1 2820 - 2.5000000000000000e+00 -2 -3 2821 1.1850000000000000e+02 - - 7.7443844079971313e-01 -8.0098474025726318e-01 - 3.5482531785964966e-01 -2.7317541837692261e-01 - <_> - 1.0921239471435547e+02 - - 1 2 2822 4.5000000000000000e+00 0 -1 2823 - 8.5000000000000000e+00 -2 -3 2824 8.3500000000000000e+01 - - 4.5899707078933716e-01 -6.2516170740127563e-01 - -4.3385741114616394e-01 5.6751209497451782e-01 - <_> - 1.0947447967529297e+02 - - 1 2 2825 7.5000000000000000e+00 0 -1 2826 - 5.5000000000000000e+00 -2 -3 2827 7.3950000000000000e+02 - - -7.4130195379257202e-01 7.1468836069107056e-01 - -9.7212868928909302e-01 2.6208582520484924e-01 - <_> - 1.0889431762695312e+02 - - 1 2 2828 9.5000000000000000e+00 0 -1 2829 - 8.8350000000000000e+02 -2 -3 2830 1.4285000000000000e+03 - - -5.8016383647918701e-01 4.6283417940139771e-01 - 4.0902158617973328e-01 -3.3674991130828857e-01 - <_> - 1.0909661865234375e+02 - - 1 2 2831 2.3500000000000000e+01 0 -1 2832 - 6.5000000000000000e+00 -2 -3 2833 1.6500000000000000e+01 - - -1. 1. 2.0230437815189362e-01 -6.2151867151260376e-01 - <_> - 1.0936666107177734e+02 - - 1 2 2834 2.7500000000000000e+01 0 -1 2835 - 2.8500000000000000e+01 -2 -3 2836 1.5000000000000000e+00 - - -3.1645810604095459e-01 2.7004209160804749e-01 - 7.3447245359420776e-01 -9.4543099403381348e-01 - <_> - 1.0990542602539062e+02 - - 1 2 2837 6.5000000000000000e+00 0 -1 2838 - 3.3500000000000000e+01 -2 -3 2839 1.7175000000000000e+03 - - 7.3429244756698608e-01 -5.4267537593841553e-01 - -5.2236169576644897e-02 -8.0465143918991089e-01 - <_> - 1.0978697204589844e+02 - - 1 2 2840 2.6850000000000000e+02 0 -1 2841 22. -2 -3 2842 - 8.0500000000000000e+01 - - 1. -9.7474074363708496e-01 -1.1845187842845917e-01 - 5.4515546560287476e-01 - <_> - 1.1009104156494141e+02 - - 1 2 2843 2.5000000000000000e+00 0 -1 2844 736. -2 -3 2845 - 1.9500000000000000e+01 - - -8.2810074090957642e-01 8.5732799768447876e-01 - 3.0406644940376282e-01 -4.0139013528823853e-01 - <_> - 1.1043927764892578e+02 - - 1 2 2846 1.8500000000000000e+01 0 -1 2847 - 1.3500000000000000e+01 -2 -3 2848 3.0500000000000000e+01 - - 2.1801793575286865e-01 -6.8923234939575195e-01 - 3.4824138879776001e-01 -3.9184293150901794e-01 - <_> - 1.1031699371337891e+02 - - 1 2 2849 1.5000000000000000e+00 0 -1 2850 - 6.5000000000000000e+00 -2 -3 2851 1.3150000000000000e+02 - - -8.8171523809432983e-01 4.3543782830238342e-01 - 2.0244181156158447e-01 -5.7358783483505249e-01 - <_> - 1.1005198669433594e+02 - - 1 2 2852 5.0000000000000000e-01 0 -1 2853 - 1.5000000000000000e+00 -2 -3 2854 3.5000000000000000e+00 - - -5.9932529926300049e-01 3.0936628580093384e-01 - 4.5090380311012268e-01 -5.8973568677902222e-01 - <_> - 1.1043847656250000e+02 - - 1 2 2855 1.1535000000000000e+03 0 -1 2856 - 2.5000000000000000e+00 -2 -3 2857 3.3500000000000000e+01 - - 7.6080255210399628e-02 -5.6420469284057617e-01 - -9.0285736322402954e-01 5.2813625335693359e-01 - <_> - 1.1080448150634766e+02 - - 1 2 2858 4.2250000000000000e+02 0 -1 2859 - 1.2500000000000000e+01 -2 -3 2860 6.1500000000000000e+01 - - 3.6600381135940552e-01 -4.2345437407493591e-01 - -6.1723202466964722e-01 3.4586450457572937e-01 - <_> - 1.1106856536865234e+02 - - 1 2 2861 9.5000000000000000e+00 0 -1 2862 - 2.9500000000000000e+01 -2 -3 2863 37. - - -7.5375384092330933e-01 1.6478213667869568e-01 - 2.6408138871192932e-01 -9.8490983247756958e-01 - <_> - 1.1055361175537109e+02 - - 1 2 2864 7.5000000000000000e+00 0 -1 2865 - 4.9500000000000000e+01 -2 -3 2866 5.5000000000000000e+00 - - -5.1494854688644409e-01 5.8261644840240479e-01 - -6.6320908069610596e-01 3.6188036203384399e-01 - <_> - 1.1039524841308594e+02 - - 1 2 2867 2.3500000000000000e+01 0 -1 2868 - 9.3500000000000000e+01 -2 -3 2869 1.9350000000000000e+02 - - 6.8907684087753296e-01 -1.5836885571479797e-01 - -4.8703750967979431e-01 1.7068152129650116e-01 - <_> - 1.1064450073242188e+02 - - 1 2 2870 8.6450000000000000e+02 0 -1 2871 - 4.6500000000000000e+01 -2 -3 2872 2.5500000000000000e+01 - - -5.4546362161636353e-01 2.4925331771373749e-01 - -8.3844619989395142e-01 8.3821475505828857e-01 - <_> - 1.1088278198242188e+02 - - 1 2 2873 1.5000000000000000e+00 0 -1 2874 - 1.3350000000000000e+02 -2 -3 2875 5.0000000000000000e-01 - - -7.7887850999832153e-01 2.3828317224979401e-01 - 4.8272988200187683e-01 -7.2873306274414062e-01 - <_> - 1.1105001068115234e+02 - - 1 2 2876 71. 0 -1 2877 7.5000000000000000e+00 -2 -3 2878 - 8.5000000000000000e+00 - - -8.5053944587707520e-01 1.6722814738750458e-01 - -9.4403290748596191e-01 6.4887309074401855e-01 - <_> - 1.1167649841308594e+02 - - 1 2 2879 3.7850000000000000e+02 0 -1 2880 60. -2 -3 2881 - 9.5750000000000000e+02 - - -8.7580990791320801e-01 1.5962736308574677e-01 - 6.2649267911911011e-01 -9.5386557281017303e-02 - <_> - 1.1183348846435547e+02 - - 1 2 2882 3.8500000000000000e+01 0 -1 2883 - 3.5000000000000000e+00 -2 -3 2884 12. - - 2.6490542292594910e-01 -3.1465035676956177e-01 - 9.2486298084259033e-01 -9.5018434524536133e-01 - <_> - 1.1203981018066406e+02 - - 1 2 2885 7.5000000000000000e+00 0 -1 2886 - 9.8500000000000000e+01 -2 -3 2887 74. - - -9.7645151615142822e-01 1. 2.0632074773311615e-01 - -9.1167140007019043e-01 - <_> - 1.1171997833251953e+02 - - 1 2 2888 5.0000000000000000e-01 0 -1 2889 - 5.5000000000000000e+00 -2 -3 2890 1.1500000000000000e+01 - - -3.1983077526092529e-01 3.1867963075637817e-01 - -7.6559156179428101e-01 4.0382763836532831e-04 - <_> - 1.1211449432373047e+02 - - 1 2 2891 2.1305000000000000e+03 0 -1 2892 - 9.5000000000000000e+00 -2 -3 2893 240. - - -3.2820355892181396e-01 3.9451143145561218e-01 - -6.1393386125564575e-01 8.8679784536361694e-01 - <_> - 1.1231577301025391e+02 - - 1 2 2894 1.0015000000000000e+03 0 -1 2895 - 1.1445000000000000e+03 -2 -3 2896 4.5000000000000000e+00 - - -2.2687128186225891e-01 3.6754199862480164e-01 - 6.3371849060058594e-01 -7.9295963048934937e-01 - <_> - 1.1249615478515625e+02 - - 1 2 2897 2.7500000000000000e+01 0 -1 2898 - 8.5000000000000000e+00 -2 -3 2899 37. - - -7.1115958690643311e-01 1.8038435280323029e-01 - -9.7455215454101562e-01 6.9934636354446411e-01 - <_> - 1.1233912658691406e+02 - - 1 2 2900 2.6050000000000000e+02 0 -1 2901 - 1.0865000000000000e+03 -2 -3 2902 9.5000000000000000e+00 - - -1. 9.7971618175506592e-01 -3.2329601049423218e-01 - 2.7071443200111389e-01 - <_> - 1.1283988952636719e+02 - - 1 2 2903 5.5500000000000000e+01 0 -1 2904 - 4.3535000000000000e+03 -2 -3 2905 2.5450000000000000e+02 - - -7.9977166652679443e-01 7.4463641643524170e-01 - 7.4907875061035156e-01 -2.6945650577545166e-01 - <_> - 1.1258075714111328e+02 - - 1 2 2906 2.5000000000000000e+00 0 -1 2907 - 5.0000000000000000e-01 -2 -3 2908 8.4500000000000000e+01 - - 1. -8.3365887403488159e-01 -2.3259581625461578e-01 - 3.6352834105491638e-01 - <_> - 1.1218470764160156e+02 - - 1 2 2909 5.8500000000000000e+01 0 -1 2910 - 1.5000000000000000e+00 -2 -3 2911 1.4500000000000000e+01 - - 2.9657179117202759e-01 -3.9605233073234558e-01 - -8.2379591464996338e-01 8.8194245100021362e-01 - <_> - 1.1259869384765625e+02 - - 1 2 2912 1.6500000000000000e+01 0 -1 2913 336. -2 -3 2914 - 5.5500000000000000e+01 - - 4.8623585700988770e-01 -5.5348306894302368e-01 - 4.7885289788246155e-01 -7.1009427309036255e-01 - <_> - 1.1295644378662109e+02 - - 1 2 2915 8.5000000000000000e+00 0 -1 2916 531. -2 -3 2917 - 4.5000000000000000e+00 - - 9.0240961313247681e-01 -5.4123049974441528e-01 - -7.9777017235755920e-03 7.5631076097488403e-01 - <_> - 1.1320769500732422e+02 - - 1 2 2918 2.7550000000000000e+02 0 -1 2919 - 2.5500000000000000e+01 -2 -3 2920 4.7575000000000000e+03 - - -7.4220085144042969e-01 6.7942351102828979e-01 - 2.5125479698181152e-01 -8.1848102807998657e-01 - <_> - 1.1344058227539062e+02 - - 1 2 2921 2.5000000000000000e+00 0 -1 2922 1986. -2 -3 2923 - 95. - - -6.4574551582336426e-01 2.3289002478122711e-01 - -7.1047574281692505e-01 4.2588540911674500e-01 - <_> - 1.1300727844238281e+02 - - 1 2 2924 5.0000000000000000e-01 0 -1 2925 - 2.5000000000000000e+00 -2 -3 2926 1062. - - -5.7494455575942993e-01 4.5384889841079712e-01 - 7.2286838293075562e-01 -4.3494719266891479e-01 - <_> - 1.1288256072998047e+02 - - 1 2 2927 3.1500000000000000e+01 0 -1 2928 - 3.5000000000000000e+00 -2 -3 2929 16. - - -7.3260617256164551e-01 1.8130634725093842e-01 -1. 1. - <_> - 1.1306512451171875e+02 - - 1 2 2930 1.2150000000000000e+02 0 -1 2931 - 8.5000000000000000e+00 -2 -3 2932 4.3500000000000000e+01 - - -7.4935305118560791e-01 1.8256729841232300e-01 - -8.5249531269073486e-01 6.5636491775512695e-01 - <_> - 1.1327575683593750e+02 - - 1 2 2933 1.5000000000000000e+00 0 -1 2934 - 2.1500000000000000e+01 -2 -3 2935 1.5000000000000000e+00 - - -4.9801164865493774e-01 2.1062798798084259e-01 - 9.2823314666748047e-01 -8.5738253593444824e-01 - <_> - 1.1357308197021484e+02 - - 1 2 2936 6.4500000000000000e+01 0 -1 2937 - 4.8065000000000000e+03 -2 -3 2938 2.5000000000000000e+00 - - -1. 6.2009447813034058e-01 -5.3834468126296997e-01 - 1.5692129731178284e-01 - <_> - 1.1360353851318359e+02 - - 1 2 2939 1.3500000000000000e+01 0 -1 2940 - 3.3045000000000000e+03 -2 -3 2941 3.7500000000000000e+01 - - -7.1004110574722290e-01 3.1958633661270142e-01 - -5.8265125751495361e-01 6.3131624460220337e-01 - <_> - 1.1372930908203125e+02 - - 1 2 2942 1.4650000000000000e+02 0 -1 2943 - 1.6500000000000000e+01 -2 -3 2944 1.1500000000000000e+01 - - 3.4133225679397583e-01 -5.4960429668426514e-01 - 5.1201045513153076e-01 -6.1359316110610962e-01 - <_> - 1.1392496490478516e+02 - - 1 2 2945 4.4500000000000000e+01 0 -1 2946 - 5.0000000000000000e-01 -2 -3 2947 9.7750000000000000e+02 - - 6.2203013896942139e-01 -6.3180530071258545e-01 - 5.6117540597915649e-01 -1.3368546962738037e-01 - <_> - 1.1346260070800781e+02 - - 1 2 2948 5.5500000000000000e+01 0 -1 2949 - 5.0000000000000000e-01 -2 -3 2950 80. - - 2.3815618455410004e-01 -4.6236431598663330e-01 - 9.0325075387954712e-01 -9.0121394395828247e-01 - <_> - 1.1379386901855469e+02 - - 1 2 2951 9.4500000000000000e+01 0 -1 2952 - 7.5000000000000000e+00 -2 -3 2953 1.1550000000000000e+02 - - -4.6673280000686646e-01 3.3126986026763916e-01 - 9.0798473358154297e-01 -7.4096632003784180e-01 - <_> - 1.1406409454345703e+02 - - 1 2 2954 7.5000000000000000e+00 0 -1 2955 - 8.6500000000000000e+01 -2 -3 2956 1.4500000000000000e+01 - - -9.2672061920166016e-01 7.3485738039016724e-01 - -4.7021928429603577e-01 2.7022856473922729e-01 - <_> - 1.1425277709960938e+02 - - 1 2 2957 8.5350000000000000e+02 0 -1 2958 - 5.0000000000000000e-01 -2 -3 2959 6.8850000000000000e+02 - - 6.2956070899963379e-01 -7.4446845054626465e-01 - 1.8867783248424530e-01 -9.8959106206893921e-01 - <_> - 1.1466915893554688e+02 - - 1 2 2960 1.5000000000000000e+00 0 -1 2961 - 3.5000000000000000e+00 -2 -3 2962 8.5850000000000000e+02 - - 3.6259412765502930e-02 -6.7085331678390503e-01 - 4.1638222336769104e-01 -4.7934916615486145e-01 - <_> - 1.1474370574951172e+02 - - 1 2 2963 9.5000000000000000e+00 0 -1 2964 - 8.5000000000000000e+00 -2 -3 2965 1.7500000000000000e+01 - - -6.9327950477600098e-01 8.3167332410812378e-01 - 2.6488289237022400e-01 -5.8886319398880005e-01 - <_> - 1.1511044311523438e+02 - - 1 2 2966 5.4650000000000000e+02 0 -1 2967 14. -2 -3 2968 - 8.5000000000000000e+00 - - -9.2996919155120850e-01 5.8129179477691650e-01 - 3.6674419045448303e-01 -2.4709728360176086e-01 - <_> - 1.1493881225585938e+02 - - 1 2 2969 5.5000000000000000e+00 0 -1 2970 - 8.5500000000000000e+01 -2 -3 2971 1.3950000000000000e+02 - - -1.7163147032260895e-01 4.9650168418884277e-01 - 5.4086452722549438e-01 -7.1398860216140747e-01 - <_> - 1.1525379943847656e+02 - - 1 2 2972 7.5000000000000000e+00 0 -1 2973 - 9.7500000000000000e+01 -2 -3 2974 7.5000000000000000e+00 - - -9.4871836900711060e-01 8.4198021888732910e-01 - 7.7815693616867065e-01 -4.4086512178182602e-02 - <_> - 1.1525665283203125e+02 - - 1 2 2975 2.5000000000000000e+00 0 -1 2976 - 4.1500000000000000e+01 -2 -3 2977 3.2350000000000000e+02 - - 4.9186840653419495e-01 -7.5632154941558838e-01 - 2.8518673498183489e-03 -8.1358987092971802e-01 - <_> - 1.1538195037841797e+02 - - 1 2 2978 1.7500000000000000e+01 0 -1 2979 - 9.2105000000000000e+03 -2 -3 2980 5.5250000000000000e+02 - - 1.2530399858951569e-01 -7.3197114467620850e-01 - -6.1813545227050781e-01 4.5981425046920776e-01 - <_> - 1.1562681579589844e+02 - - 1 2 2981 5.0000000000000000e-01 0 -1 2982 - 1.5000000000000000e+00 -2 -3 2983 1.1850000000000000e+02 - - -6.4110070466995239e-01 3.4923154115676880e-01 - -6.6522723436355591e-01 4.2554613947868347e-01 - <_> - 1.1559072113037109e+02 - - 1 2 2984 5.0000000000000000e-01 0 -1 2985 - 5.0000000000000000e-01 -2 -3 2986 1.1500000000000000e+01 - - -5.1298755407333374e-01 4.5155742764472961e-01 - -4.8606547713279724e-01 6.4945244789123535e-01 - <_> - 1.1585576629638672e+02 - - 1 2 2987 7.7500000000000000e+01 0 -1 2988 - 2.5000000000000000e+00 -2 -3 2989 2.8500000000000000e+01 - - 2.6504445075988770e-01 -5.9735137224197388e-01 - 5.0929725170135498e-01 -8.4812289476394653e-01 - <_> - 1.1602140808105469e+02 - - 1 2 2990 1315. 0 -1 2991 2.6950000000000000e+02 -2 -3 2992 - 3292. - - 1. -9.5098608732223511e-01 1.6564650833606720e-01 - -9.7165077924728394e-01 - <_> - 1.1634813690185547e+02 - - 1 2 2993 2.8550000000000000e+02 0 -1 2994 - 1.8950000000000000e+02 -2 -3 2995 4.2450000000000000e+02 - - 1.7797231674194336e-01 -7.0725780725479126e-01 - 3.2672277092933655e-01 -4.6791586279869080e-01 - <_> - 1.1600035858154297e+02 - - 1 2 2996 1.2500000000000000e+01 0 -1 2997 - 2.7500000000000000e+01 -2 -3 2998 1.9500000000000000e+01 - - -8.3542865514755249e-01 8.1487077474594116e-01 - -1.1515256017446518e-01 5.5976140499114990e-01 - <_> - 1.1629707336425781e+02 - - 1 2 2999 3.4500000000000000e+01 0 -1 3000 - 5.4500000000000000e+01 -2 -3 3001 3.5000000000000000e+00 - - 2.9671633243560791e-01 -8.1005460023880005e-01 - 4.5441552996635437e-01 -6.3396769762039185e-01 - <_> - 1.1664207458496094e+02 - - 1 2 3002 1.5000000000000000e+00 0 -1 3003 - 6.5000000000000000e+00 -2 -3 3004 1.9500000000000000e+01 - - -7.5282824039459229e-01 8.6983382701873779e-01 - -3.2741194963455200e-01 3.4500163793563843e-01 - <_> - 1.1623783111572266e+02 - - 1 2 3005 5.0000000000000000e-01 0 -1 3006 - 3.8475000000000000e+03 -2 -3 3007 4.7500000000000000e+01 - - -4.6906247735023499e-01 4.3219438195228577e-01 - -5.9196656942367554e-01 3.5415863990783691e-01 - <_> - 1.1682369232177734e+02 - - 1 2 3008 3.5450000000000000e+02 0 -1 3009 2759. -2 -3 3010 - 2.6500000000000000e+01 - - -6.3874697685241699e-01 5.8586502075195312e-01 - -7.2635281085968018e-01 2.0415544509887695e-02 - <_> - 1.1681407165527344e+02 - - 1 2 3011 5.7750000000000000e+02 0 -1 3012 - 1.0500000000000000e+01 -2 -3 3013 3.8965000000000000e+03 - - -9.6233375370502472e-03 -8.1473666429519653e-01 - 6.1106562614440918e-01 -7.2611153125762939e-01 - <_> - 1.1703710937500000e+02 - - 1 2 3014 2.5000000000000000e+00 0 -1 3015 - 6.0515000000000000e+03 -2 -3 3016 9.5000000000000000e+00 - - 2.2303590178489685e-01 -7.8184336423873901e-01 - -7.8855013847351074e-01 5.3229647874832153e-01 - <_> - 1.1659355926513672e+02 - - 1 2 3017 1.5500000000000000e+01 0 -1 3018 - 5.6500000000000000e+01 -2 -3 3019 5.5000000000000000e+00 - - -4.4354486465454102e-01 2.7184101939201355e-01 - -9.1781646013259888e-01 4.9616247415542603e-01 - <_> - 1.1686206054687500e+02 - - 1 2 3020 2.3500000000000000e+01 0 -1 3021 - 1.5000000000000000e+00 -2 -3 3022 1039. - - -6.9499677419662476e-01 2.6850062608718872e-01 - 5.3405404090881348e-01 -8.1517779827117920e-01 - <_> - 1.1712821960449219e+02 - - 1 2 3023 1.1500000000000000e+01 0 -1 3024 - 9.3650000000000000e+02 -2 -3 3025 1.2500000000000000e+01 - - -8.8214719295501709e-01 4.2026668787002563e-01 - -6.5273833274841309e-01 3.7967935204505920e-02 - <_> - 1.1673587799072266e+02 - - 1 2 3026 5.0000000000000000e-01 0 -1 3027 - 3.5000000000000000e+00 -2 -3 3028 3.8500000000000000e+01 - - -5.4606467485427856e-01 4.1681709885597229e-01 - -5.9122633934020996e-01 2.8970411419868469e-01 - <_> - 1.1750084686279297e+02 - - 1 2 3029 1.6500000000000000e+01 0 -1 3030 15. -2 -3 3031 - 1.9855000000000000e+03 - - 9.6899873018264771e-01 -1. -8.1302636861801147e-01 - 3.7165968678891659e-03 - <_> - 1.1750557708740234e+02 - - 1 2 3032 8.2150000000000000e+02 0 -1 3033 - 3.5000000000000000e+00 -2 -3 3034 5.0000000000000000e-01 - - -8.6601996421813965e-01 5.9305047988891602e-01 - -8.5805094242095947e-01 4.7341291792690754e-03 - <_> - 1.1816818237304688e+02 - - 1 2 3035 1.6850000000000000e+02 0 -1 3036 - 1.5000000000000000e+00 -2 -3 3037 1.7500000000000000e+01 - - -1. 6.6260558366775513e-01 -6.9309425354003906e-01 - 5.9965264052152634e-02 - <_> - 1.1821002197265625e+02 - - 1 2 3038 620. 0 -1 3039 1182. -2 -3 3040 - 1.5115000000000000e+03 - - 4.1837029159069061e-02 -7.9592239856719971e-01 -1. - 9.2407900094985962e-01 - <_> - 1.1791598510742188e+02 - - 1 2 3041 1.5000000000000000e+00 0 -1 3042 - 5.0000000000000000e-01 -2 -3 3043 6.5000000000000000e+00 - - -7.0829302072525024e-01 4.5243009924888611e-01 - -6.9395291805267334e-01 7.5258597731590271e-02 - <_> - 1.1805176544189453e+02 - - 1 2 3044 229. 0 -1 3045 1.9835000000000000e+03 -2 -3 3046 - 6.5500000000000000e+01 - - 1.3577787578105927e-01 -9.8038744926452637e-01 1. - -9.8189878463745117e-01 - <_> - 1.1815481567382812e+02 - - 1 2 3047 4.5000000000000000e+00 0 -1 3048 3. -2 -3 3049 - 5.0555000000000000e+03 - - -1. 6.8868088722229004e-01 1.0305030643939972e-01 - -9.2723184823989868e-01 - <_> - 1.1790955352783203e+02 - - 1 2 3050 2.4500000000000000e+01 0 -1 3051 - 8.1500000000000000e+01 -2 -3 3052 1.1500000000000000e+01 - - -2.4526403844356537e-01 7.3126202821731567e-01 - 8.8459062576293945e-01 -1. - <_> - 1.1719922637939453e+02 - - 1 2 3053 3.5000000000000000e+00 0 -1 3054 161. -2 -3 3055 - 2.3055000000000000e+03 - - 3.4097507596015930e-01 -7.3160159587860107e-01 - -7.1032357215881348e-01 2.1932438015937805e-01 - <_> - 1.1802425384521484e+02 - - 1 2 3056 1.0775000000000000e+03 0 -1 3057 1069. -2 -3 3058 - 3.4500000000000000e+01 - - -1. 8.2502609491348267e-01 -3.4417897462844849e-01 - 3.8862380385398865e-01 - <_> - 1.1822765350341797e+02 - - 1 2 3059 5.6500000000000000e+01 0 -1 3060 - 3.5000000000000000e+00 -2 -3 3061 1.5500000000000000e+01 - - -9.4351071119308472e-01 2.0340043306350708e-01 - -9.6025758981704712e-01 9.0146809816360474e-01 - <_> - 1.1837182617187500e+02 - - 1 2 3062 1.9150000000000000e+02 0 -1 3063 - 6.0500000000000000e+01 -2 -3 3064 80. - - 1.4417025446891785e-01 -6.5984970331192017e-01 - -9.8928850889205933e-01 9.0138816833496094e-01 - <_> - 1.1857872009277344e+02 - - 1 2 3065 2.1500000000000000e+01 0 -1 3066 - 5.0000000000000000e-01 -2 -3 3067 2330. - - 5.4495859146118164e-01 -7.0084166526794434e-01 - 2.0690013468265533e-01 -9.6294975280761719e-01 - <_> - 1.1802633666992188e+02 - - 1 2 3068 5.7550000000000000e+02 0 -1 3069 - 1.4750000000000000e+02 -2 -3 3070 3.4500000000000000e+01 - - -5.5238926410675049e-01 1.9023463129997253e-01 - -5.1289671659469604e-01 4.9855348467826843e-01 - - <_> - 2 - - 2 3 4 10 - <_> - 1 - - 2 13 3 2 - <_> - 9 - - 2 6 4 3 - <_> - 7 - - 3 7 2 5 - <_> - 0 - - 2 7 4 4 - <_> - 5 - - 4 0 2 11 - <_> - 1 - - 3 13 2 1 - <_> - 3 - - 0 4 7 2 - <_> - 4 - - 2 8 4 5 - <_> - 0 - - 2 2 5 11 - <_> - 7 - - 3 3 2 11 - <_> - 5 - - 0 14 6 1 - <_> - 8 - - 1 0 6 1 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 1 3 4 7 - <_> - 4 - - 3 5 2 9 - <_> - 1 - - 1 12 6 2 - <_> - 1 - - 0 5 7 3 - <_> - 3 - - 4 14 3 1 - <_> - 5 - - 2 11 5 2 - <_> - 9 - - 3 4 2 10 - <_> - 8 - - 0 3 5 1 - <_> - 2 - - 5 3 2 4 - <_> - 5 - - 3 1 2 5 - <_> - 9 - - 3 8 2 4 - <_> - 9 - - 1 0 1 13 - <_> - 0 - - 3 10 2 3 - <_> - 2 - - 0 14 6 1 - <_> - 1 - - 3 1 2 9 - <_> - 3 - - 0 2 4 6 - <_> - 4 - - 3 2 2 1 - <_> - 7 - - 1 9 6 1 - <_> - 2 - - 1 7 3 5 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 5 1 2 12 - <_> - 0 - - 1 1 3 6 - <_> - 3 - - 2 4 2 8 - <_> - 1 - - 0 0 6 15 - <_> - 1 - - 2 12 3 2 - <_> - 5 - - 4 3 3 3 - <_> - 1 - - 3 1 2 8 - <_> - 7 - - 3 6 3 4 - <_> - 5 - - 2 5 5 7 - <_> - 7 - - 3 0 2 2 - <_> - 9 - - 4 5 1 1 - <_> - 9 - - 0 0 7 4 - <_> - 8 - - 1 6 6 1 - <_> - 4 - - 3 9 3 4 - <_> - 5 - - 1 14 3 1 - <_> - 7 - - 2 1 1 3 - <_> - 2 - - 2 7 4 4 - <_> - 5 - - 2 8 2 3 - <_> - 1 - - 3 4 2 8 - <_> - 9 - - 3 5 1 2 - <_> - 8 - - 0 6 7 5 - <_> - 7 - - 0 13 7 2 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 3 0 4 15 - <_> - 3 - - 1 5 5 1 - <_> - 4 - - 4 14 2 1 - <_> - 5 - - 3 13 4 2 - <_> - 3 - - 2 9 3 4 - <_> - 9 - - 0 6 1 2 - <_> - 9 - - 6 1 1 1 - <_> - 0 - - 2 2 3 10 - <_> - 5 - - 4 6 2 7 - <_> - 7 - - 2 2 4 3 - <_> - 4 - - 3 1 2 7 - <_> - 8 - - 2 3 4 1 - <_> - 4 - - 0 0 3 1 - <_> - 3 - - 0 14 5 1 - <_> - 1 - - 2 4 4 9 - <_> - 3 - - 2 4 1 3 - <_> - 1 - - 0 9 7 2 - <_> - 9 - - 0 4 7 5 - <_> - 2 - - 4 2 3 4 - <_> - 3 - - 2 10 1 1 - <_> - 2 - - 4 14 3 1 - <_> - 2 - - 1 11 4 2 - <_> - 4 - - 0 0 4 2 - <_> - 9 - - 3 4 2 6 - <_> - 9 - - 6 0 1 12 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 4 9 2 4 - <_> - 2 - - 4 7 1 2 - <_> - 4 - - 3 9 2 5 - <_> - 1 - - 4 12 1 2 - <_> - 5 - - 2 3 5 3 - <_> - 9 - - 4 5 3 10 - <_> - 5 - - 0 5 3 2 - <_> - 1 - - 0 3 2 4 - <_> - 4 - - 5 0 2 3 - <_> - 5 - - 4 4 3 2 - <_> - 7 - - 2 0 5 5 - <_> - 9 - - 0 0 3 1 - <_> - 4 - - 3 1 1 5 - <_> - 9 - - 3 6 1 7 - <_> - 1 - - 1 0 6 14 - <_> - 3 - - 0 14 7 1 - <_> - 4 - - 2 8 4 5 - <_> - 4 - - 0 1 1 10 - <_> - 3 - - 1 4 6 6 - <_> - 7 - - 1 5 6 5 - <_> - 0 - - 3 10 2 3 - <_> - 8 - - 4 2 1 2 - <_> - 9 - - 3 5 2 1 - <_> - 9 - - 0 6 1 6 - <_> - 4 - - 4 1 1 8 - <_> - 1 - - 4 7 1 1 - <_> - 2 - - 2 6 5 9 - <_> - 5 - - 1 14 6 1 - <_> - 7 - - 3 6 1 5 - <_> - 3 - - 2 2 3 4 - <_> - 0 - - 0 2 6 11 - <_> - 1 - - 3 13 1 2 - <_> - 7 - - 6 1 1 6 - <_> - 5 - - 5 3 1 7 - <_> - 4 - - 2 5 3 10 - <_> - 1 - - 1 13 4 1 - <_> - 1 - - 0 13 6 2 - <_> - 2 - - 1 13 5 2 - <_> - 2 - - 5 7 2 1 - <_> - 2 - - 1 12 5 1 - <_> - 1 - - 3 0 1 13 - <_> - 8 - - 0 5 3 9 - <_> - 5 - - 2 1 3 7 - <_> - 7 - - 0 14 6 1 - <_> - 2 - - 2 0 3 2 - <_> - 3 - - 3 1 1 5 - <_> - 9 - - 3 8 2 2 - <_> - 7 - - 4 5 1 3 - <_> - 0 - - 0 13 2 1 - <_> - 9 - - 1 2 2 2 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 2 9 2 4 - <_> - 8 - - 1 4 5 2 - <_> - 7 - - 3 6 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 5 - - 3 4 4 2 - <_> - 0 - - 4 2 1 7 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 3 2 1 7 - <_> - 8 - - 1 1 6 4 - <_> - 8 - - 4 0 3 1 - <_> - 2 - - 4 1 3 13 - <_> - 9 - - 4 7 1 4 - <_> - 1 - - 3 12 2 3 - <_> - 3 - - 0 4 4 3 - <_> - 4 - - 3 11 1 4 - <_> - 1 - - 1 0 4 2 - <_> - 4 - - 3 0 4 5 - <_> - 7 - - 3 7 2 3 - <_> - 0 - - 3 7 4 6 - <_> - 9 - - 0 0 5 11 - <_> - 9 - - 0 1 6 3 - <_> - 3 - - 0 0 3 6 - <_> - 3 - - 1 14 6 1 - <_> - 8 - - 6 2 1 9 - <_> - 2 - - 2 11 4 2 - <_> - 4 - - 3 9 1 5 - <_> - 9 - - 0 5 1 4 - <_> - 1 - - 3 5 4 8 - <_> - 2 - - 2 13 4 2 - <_> - 1 - - 5 10 2 1 - <_> - 0 - - 2 5 1 7 - <_> - 2 - - 1 8 3 4 - <_> - 4 - - 2 8 4 6 - <_> - 1 - - 0 7 5 7 - <_> - 5 - - 1 4 6 2 - <_> - 1 - - 6 12 1 2 - <_> - 1 - - 2 1 3 11 - <_> - 3 - - 1 10 1 2 - <_> - 1 - - 3 4 2 6 - <_> - 9 - - 4 5 1 2 - <_> - 7 - - 4 1 3 7 - <_> - 8 - - 3 0 3 10 - <_> - 5 - - 3 3 3 3 - <_> - 7 - - 6 6 1 8 - <_> - 4 - - 3 2 2 2 - <_> - 0 - - 2 14 5 1 - <_> - 5 - - 2 11 4 2 - <_> - 3 - - 0 7 3 4 - <_> - 9 - - 6 4 1 3 - <_> - 1 - - 1 12 6 2 - <_> - 9 - - 3 1 3 1 - <_> - 1 - - 0 0 7 2 - <_> - 2 - - 4 6 2 7 - <_> - 4 - - 4 1 3 7 - <_> - 4 - - 3 2 2 12 - <_> - 1 - - 2 0 2 4 - <_> - 7 - - 3 3 2 3 - <_> - 9 - - 6 0 1 3 - <_> - 7 - - 1 1 4 1 - <_> - 9 - - 1 3 5 9 - <_> - 8 - - 2 3 5 1 - <_> - 5 - - 3 13 4 2 - <_> - 8 - - 2 2 4 9 - <_> - 3 - - 1 3 1 7 - <_> - 1 - - 1 3 1 4 - <_> - 4 - - 3 5 2 10 - <_> - 5 - - 5 5 1 6 - <_> - 7 - - 0 8 4 2 - <_> - 2 - - 5 14 2 1 - <_> - 1 - - 1 13 6 2 - <_> - 3 - - 2 2 2 6 - <_> - 8 - - 0 6 7 1 - <_> - 9 - - 4 9 1 1 - <_> - 9 - - 0 6 2 6 - <_> - 0 - - 2 2 2 12 - <_> - 9 - - 0 5 3 1 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 4 8 1 5 - <_> - 4 - - 0 3 5 3 - <_> - 1 - - 2 13 5 1 - <_> - 4 - - 0 1 7 6 - <_> - 4 - - 0 12 7 3 - <_> - 5 - - 0 5 3 2 - <_> - 2 - - 4 10 2 2 - <_> - 2 - - 3 14 3 1 - <_> - 2 - - 2 6 1 8 - <_> - 7 - - 2 0 4 2 - <_> - 1 - - 3 4 3 9 - <_> - 9 - - 0 1 1 1 - <_> - 3 - - 3 4 2 1 - <_> - 0 - - 0 13 2 2 - <_> - 3 - - 2 4 1 3 - <_> - 9 - - 3 4 1 3 - <_> - 7 - - 1 6 4 4 - <_> - 3 - - 3 11 3 2 - <_> - 7 - - 0 1 1 1 - <_> - 1 - - 4 8 1 7 - <_> - 8 - - 3 3 2 2 - <_> - 0 - - 3 4 1 11 - <_> - 2 - - 5 2 1 5 - <_> - 5 - - 5 1 1 11 - <_> - 7 - - 3 8 4 2 - <_> - 9 - - 3 9 2 4 - <_> - 5 - - 2 6 3 7 - <_> - 3 - - 2 3 5 3 - <_> - 7 - - 3 14 1 1 - <_> - 5 - - 0 0 5 1 - <_> - 7 - - 4 5 1 3 - <_> - 9 - - 4 4 1 3 - <_> - 8 - - 6 4 1 4 - <_> - 7 - - 0 3 7 12 - <_> - 7 - - 3 10 4 1 - <_> - 9 - - 3 0 2 11 - <_> - 3 - - 2 2 1 4 - <_> - 0 - - 2 10 4 2 - <_> - 1 - - 2 0 5 2 - <_> - 0 - - 1 13 6 2 - <_> - 1 - - 3 0 2 9 - <_> - 7 - - 6 1 1 1 - <_> - 4 - - 2 8 4 5 - <_> - 5 - - 4 1 1 2 - <_> - 7 - - 1 2 1 5 - <_> - 0 - - 0 11 7 2 - <_> - 3 - - 2 3 4 3 - <_> - 4 - - 0 12 5 3 - <_> - 2 - - 1 4 3 2 - <_> - 3 - - 4 14 3 1 - <_> - 0 - - 3 12 4 1 - <_> - 5 - - 1 13 4 2 - <_> - 9 - - 2 0 1 2 - <_> - 7 - - 6 1 1 2 - <_> - 3 - - 2 0 2 14 - <_> - 9 - - 1 4 6 4 - <_> - 5 - - 4 5 3 1 - <_> - 1 - - 0 0 6 2 - <_> - 8 - - 0 2 6 9 - <_> - 7 - - 0 11 2 1 - <_> - 1 - - 6 6 1 8 - <_> - 1 - - 3 5 2 5 - <_> - 9 - - 4 0 3 3 - <_> - 3 - - 3 3 1 1 - <_> - 4 - - 4 11 1 4 - <_> - 1 - - 4 12 2 2 - <_> - 0 - - 3 9 3 4 - <_> - 2 - - 3 4 2 8 - <_> - 1 - - 3 7 4 1 - <_> - 0 - - 1 13 6 1 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 2 6 1 9 - <_> - 4 - - 3 1 4 14 - <_> - 5 - - 1 14 6 1 - <_> - 5 - - 2 9 3 4 - <_> - 3 - - 0 3 5 3 - <_> - 1 - - 0 0 7 2 - <_> - 5 - - 0 2 7 1 - <_> - 7 - - 3 7 2 1 - <_> - 0 - - 0 2 7 11 - <_> - 4 - - 0 6 2 4 - <_> - 1 - - 2 12 3 1 - <_> - 7 - - 3 7 4 1 - <_> - 5 - - 4 1 2 12 - <_> - 2 - - 1 8 1 1 - <_> - 4 - - 3 2 1 4 - <_> - 7 - - 2 14 3 1 - <_> - 8 - - 2 0 5 2 - <_> - 9 - - 4 5 1 7 - <_> - 9 - - 6 2 1 2 - <_> - 3 - - 0 7 4 7 - <_> - 4 - - 3 8 2 5 - <_> - 2 - - 5 13 2 2 - <_> - 7 - - 4 8 1 5 - <_> - 5 - - 3 11 3 2 - <_> - 3 - - 2 11 4 2 - <_> - 8 - - 5 4 2 6 - <_> - 1 - - 4 5 1 10 - <_> - 9 - - 3 9 2 3 - <_> - 0 - - 1 3 4 1 - <_> - 3 - - 2 2 1 7 - <_> - 7 - - 1 2 1 7 - <_> - 5 - - 4 4 2 9 - <_> - 5 - - 0 14 4 1 - <_> - 5 - - 0 2 5 5 - <_> - 1 - - 5 3 1 4 - <_> - 1 - - 1 12 4 2 - <_> - 3 - - 0 1 4 6 - <_> - 9 - - 4 5 3 1 - <_> - 3 - - 0 0 2 4 - <_> - 3 - - 1 0 5 1 - <_> - 5 - - 1 12 3 3 - <_> - 2 - - 2 3 4 10 - <_> - 1 - - 1 13 1 1 - <_> - 4 - - 0 8 2 7 - <_> - 7 - - 0 13 2 2 - <_> - 1 - - 6 13 1 2 - <_> - 5 - - 4 2 2 10 - <_> - 1 - - 2 3 5 10 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 0 2 1 - <_> - 5 - - 5 4 2 8 - <_> - 7 - - 1 1 3 13 - <_> - 3 - - 0 4 3 6 - <_> - 1 - - 4 0 2 14 - <_> - 7 - - 2 1 1 1 - <_> - 3 - - 3 3 2 9 - <_> - 7 - - 1 7 1 1 - <_> - 7 - - 0 4 7 8 - <_> - 7 - - 1 2 1 1 - <_> - 9 - - 2 5 4 7 - <_> - 4 - - 0 7 1 3 - <_> - 5 - - 4 5 2 1 - <_> - 3 - - 2 12 3 1 - <_> - 1 - - 2 8 2 4 - <_> - 2 - - 2 14 1 1 - <_> - 7 - - 3 13 2 1 - <_> - 5 - - 1 11 6 4 - <_> - 8 - - 0 6 7 2 - <_> - 4 - - 4 1 1 5 - <_> - 1 - - 3 3 2 2 - <_> - 5 - - 3 3 2 2 - <_> - 1 - - 0 5 5 2 - <_> - 8 - - 0 0 7 1 - <_> - 1 - - 1 7 6 1 - <_> - 5 - - 4 12 2 1 - <_> - 7 - - 6 11 1 2 - <_> - 1 - - 1 0 5 14 - <_> - 0 - - 0 11 1 3 - <_> - 1 - - 2 4 3 8 - <_> - 2 - - 1 5 2 3 - <_> - 3 - - 2 14 5 1 - <_> - 5 - - 3 11 4 3 - <_> - 5 - - 4 3 2 7 - <_> - 9 - - 3 7 1 7 - <_> - 1 - - 2 9 4 3 - <_> - 3 - - 3 3 2 3 - <_> - 9 - - 5 1 2 1 - <_> - 7 - - 6 12 1 2 - <_> - 8 - - 1 5 6 4 - <_> - 9 - - 2 4 2 2 - <_> - 8 - - 0 5 2 3 - <_> - 1 - - 0 10 7 4 - <_> - 4 - - 3 9 3 4 - <_> - 3 - - 2 5 2 9 - <_> - 3 - - 2 3 2 7 - <_> - 9 - - 1 4 6 4 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 1 3 4 3 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 2 0 5 15 - <_> - 2 - - 5 4 2 2 - <_> - 1 - - 0 8 5 7 - <_> - 5 - - 2 14 5 1 - <_> - 7 - - 5 5 1 4 - <_> - 5 - - 1 5 6 7 - <_> - 7 - - 1 0 6 9 - <_> - 4 - - 1 5 6 2 - <_> - 9 - - 4 6 2 6 - <_> - 1 - - 0 5 5 2 - <_> - 8 - - 2 6 5 1 - <_> - 0 - - 4 8 2 5 - <_> - 9 - - 0 4 6 5 - <_> - 2 - - 3 13 4 2 - <_> - 3 - - 2 9 1 2 - <_> - 7 - - 1 9 6 2 - <_> - 2 - - 1 1 4 1 - <_> - 5 - - 2 3 5 3 - <_> - 4 - - 6 2 1 12 - <_> - 4 - - 2 8 3 5 - <_> - 2 - - 1 11 5 2 - <_> - 4 - - 1 7 1 8 - <_> - 3 - - 2 13 4 2 - <_> - 1 - - 3 5 2 1 - <_> - 4 - - 4 1 1 8 - <_> - 3 - - 2 0 4 10 - <_> - 1 - - 3 12 1 2 - <_> - 3 - - 0 4 7 1 - <_> - 4 - - 2 1 5 14 - <_> - 4 - - 0 6 2 5 - <_> - 8 - - 2 0 4 1 - <_> - 5 - - 3 10 3 3 - <_> - 9 - - 4 4 3 7 - <_> - 4 - - 2 5 5 1 - <_> - 3 - - 2 3 5 3 - <_> - 2 - - 2 14 3 1 - <_> - 0 - - 2 1 3 4 - <_> - 5 - - 5 1 1 10 - <_> - 0 - - 2 0 5 2 - <_> - 1 - - 0 3 7 4 - <_> - 4 - - 6 4 1 3 - <_> - 1 - - 3 7 2 6 - <_> - 2 - - 2 7 4 5 - <_> - 5 - - 5 11 1 1 - <_> - 7 - - 0 7 4 3 - <_> - 9 - - 3 5 2 3 - <_> - 7 - - 3 6 2 1 - <_> - 0 - - 1 10 3 2 - <_> - 3 - - 0 13 2 1 - <_> - 7 - - 4 14 1 1 - <_> - 0 - - 2 6 2 6 - <_> - 0 - - 3 10 4 3 - <_> - 7 - - 4 14 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 0 7 2 1 - <_> - 0 - - 3 13 3 2 - <_> - 8 - - 1 1 5 7 - <_> - 4 - - 2 2 2 6 - <_> - 0 - - 0 4 7 3 - <_> - 9 - - 0 1 1 3 - <_> - 2 - - 2 3 4 5 - <_> - 9 - - 3 1 2 11 - <_> - 8 - - 3 3 2 10 - <_> - 2 - - 5 13 2 2 - <_> - 1 - - 1 1 4 11 - <_> - 3 - - 1 4 5 9 - <_> - 7 - - 1 6 3 2 - <_> - 8 - - 1 9 4 3 - <_> - 3 - - 1 11 4 2 - <_> - 0 - - 3 7 1 7 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 0 0 7 1 - <_> - 1 - - 3 3 2 11 - <_> - 5 - - 5 3 2 3 - <_> - 7 - - 3 11 1 2 - <_> - 4 - - 3 6 2 7 - <_> - 3 - - 1 4 1 2 - <_> - 1 - - 3 12 3 3 - <_> - 4 - - 0 4 7 1 - <_> - 4 - - 0 13 5 2 - <_> - 0 - - 1 13 5 2 - <_> - 9 - - 1 0 2 2 - <_> - 4 - - 6 9 1 2 - <_> - 2 - - 4 2 2 4 - <_> - 5 - - 4 4 2 8 - <_> - 1 - - 3 1 4 14 - <_> - 7 - - 2 13 4 2 - <_> - 9 - - 4 8 1 3 - <_> - 7 - - 3 6 2 4 - <_> - 9 - - 6 0 1 15 - <_> - 9 - - 5 4 2 1 - <_> - 9 - - 2 4 3 11 - <_> - 2 - - 1 11 5 2 - <_> - 8 - - 0 4 5 9 - <_> - 7 - - 3 7 2 4 - <_> - 0 - - 0 13 3 2 - <_> - 0 - - 1 8 6 4 - <_> - 7 - - 3 10 2 2 - <_> - 8 - - 2 2 4 2 - <_> - 8 - - 4 3 1 2 - <_> - 1 - - 3 7 2 7 - <_> - 2 - - 5 2 1 4 - <_> - 5 - - 4 4 1 3 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 1 11 6 1 - <_> - 5 - - 1 0 3 3 - <_> - 7 - - 3 8 2 3 - <_> - 3 - - 0 0 3 4 - <_> - 1 - - 0 0 7 2 - <_> - 5 - - 0 8 6 4 - <_> - 3 - - 3 1 2 5 - <_> - 4 - - 3 5 1 10 - <_> - 4 - - 2 4 4 1 - <_> - 1 - - 0 2 7 4 - <_> - 8 - - 6 5 1 5 - <_> - 1 - - 0 8 6 3 - <_> - 9 - - 3 4 2 2 - <_> - 7 - - 1 4 1 1 - <_> - 7 - - 0 4 7 11 - <_> - 2 - - 0 14 6 1 - <_> - 9 - - 2 5 5 4 - <_> - 3 - - 3 14 4 1 - <_> - 5 - - 4 2 2 11 - <_> - 1 - - 3 9 2 3 - <_> - 8 - - 0 6 7 6 - <_> - 3 - - 1 5 4 1 - <_> - 7 - - 1 2 3 4 - <_> - 0 - - 2 12 5 1 - <_> - 9 - - 1 2 1 2 - <_> - 7 - - 1 1 1 2 - <_> - 4 - - 3 1 2 8 - <_> - 9 - - 0 4 7 2 - <_> - 1 - - 1 12 3 2 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 2 4 4 9 - <_> - 2 - - 3 2 2 2 - <_> - 1 - - 0 10 7 1 - <_> - 2 - - 5 13 2 2 - <_> - 9 - - 2 3 4 1 - <_> - 3 - - 1 6 6 3 - <_> - 2 - - 4 8 2 5 - <_> - 7 - - 3 8 1 2 - <_> - 2 - - 2 14 3 1 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 4 - - 3 5 1 5 - <_> - 9 - - 0 6 1 4 - <_> - 3 - - 2 4 2 3 - <_> - 4 - - 0 12 6 3 - <_> - 1 - - 1 13 6 2 - <_> - 3 - - 2 4 5 4 - <_> - 4 - - 1 12 5 3 - <_> - 0 - - 3 10 3 3 - <_> - 7 - - 0 11 7 1 - <_> - 0 - - 3 13 3 2 - <_> - 5 - - 4 4 3 2 - <_> - 9 - - 4 6 1 6 - <_> - 2 - - 2 7 3 5 - <_> - 8 - - 2 5 5 2 - <_> - 3 - - 1 1 1 3 - <_> - 8 - - 3 2 4 11 - <_> - 1 - - 3 1 1 10 - <_> - 4 - - 1 5 6 1 - <_> - 4 - - 0 1 7 14 - <_> - 1 - - 1 10 6 4 - <_> - 4 - - 0 9 1 2 - <_> - 1 - - 5 13 2 2 - <_> - 8 - - 2 0 5 1 - <_> - 9 - - 1 4 5 2 - <_> - 9 - - 2 14 4 1 - <_> - 7 - - 5 0 2 3 - <_> - 4 - - 0 8 7 7 - <_> - 5 - - 4 2 2 12 - <_> - 3 - - 2 11 5 2 - <_> - 5 - - 1 11 2 1 - <_> - 3 - - 6 11 1 3 - <_> - 5 - - 1 5 6 1 - <_> - 4 - - 2 1 5 14 - <_> - 2 - - 0 14 6 1 - <_> - 7 - - 3 5 4 5 - <_> - 0 - - 0 0 3 8 - <_> - 7 - - 1 0 1 3 - <_> - 1 - - 3 4 2 8 - <_> - 1 - - 4 11 3 3 - <_> - 1 - - 0 1 3 6 - <_> - 9 - - 0 6 1 5 - <_> - 8 - - 5 4 1 4 - <_> - 9 - - 0 5 6 3 - <_> - 5 - - 4 10 2 3 - <_> - 5 - - 5 7 1 2 - <_> - 5 - - 4 13 3 2 - <_> - 4 - - 2 11 5 1 - <_> - 4 - - 3 2 3 2 - <_> - 4 - - 0 8 6 6 - <_> - 3 - - 3 2 1 3 - <_> - 7 - - 1 0 6 11 - <_> - 0 - - 2 2 5 12 - <_> - 5 - - 0 14 4 1 - <_> - 3 - - 3 7 3 4 - <_> - 0 - - 4 8 2 3 - <_> - 4 - - 2 8 5 7 - <_> - 9 - - 6 0 1 5 - <_> - 7 - - 2 0 3 1 - <_> - 1 - - 3 12 2 2 - <_> - 3 - - 0 3 4 4 - <_> - 9 - - 3 7 3 5 - <_> - 3 - - 2 3 4 8 - <_> - 4 - - 0 6 1 3 - <_> - 4 - - 2 10 3 4 - <_> - 3 - - 2 14 5 1 - <_> - 9 - - 0 2 2 13 - <_> - 4 - - 0 9 2 2 - <_> - 9 - - 0 5 7 1 - <_> - 1 - - 3 1 2 7 - <_> - 0 - - 3 10 3 3 - <_> - 7 - - 2 6 4 4 - <_> - 2 - - 3 3 2 9 - <_> - 7 - - 1 2 1 1 - <_> - 4 - - 3 9 1 3 - <_> - 2 - - 3 7 2 3 - <_> - 5 - - 0 5 7 1 - <_> - 3 - - 0 11 5 2 - <_> - 5 - - 3 11 2 2 - <_> - 2 - - 0 14 6 1 - <_> - 4 - - 2 11 2 2 - <_> - 9 - - 2 8 4 2 - <_> - 2 - - 2 11 3 2 - <_> - 8 - - 0 6 7 2 - <_> - 7 - - 1 3 1 10 - <_> - 7 - - 0 2 1 13 - <_> - 2 - - 4 10 2 3 - <_> - 7 - - 1 11 6 2 - <_> - 1 - - 0 0 7 2 - <_> - 2 - - 2 7 2 4 - <_> - 7 - - 0 0 1 2 - <_> - 4 - - 3 2 2 3 - <_> - 5 - - 3 3 4 4 - <_> - 1 - - 1 12 6 2 - <_> - 5 - - 3 5 1 5 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 3 4 4 9 - <_> - 3 - - 0 13 6 2 - <_> - 5 - - 4 2 2 11 - <_> - 9 - - 3 5 2 8 - <_> - 9 - - 2 5 5 7 - <_> - 5 - - 0 14 5 1 - <_> - 5 - - 3 11 3 3 - <_> - 8 - - 0 2 7 12 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 0 3 1 8 - <_> - 9 - - 3 4 2 1 - <_> - 4 - - 3 8 2 5 - <_> - 7 - - 0 8 5 7 - <_> - 0 - - 0 10 4 2 - <_> - 7 - - 1 9 5 1 - <_> - 7 - - 2 3 4 11 - <_> - 7 - - 3 6 2 1 - <_> - 3 - - 1 4 6 8 - <_> - 7 - - 2 6 2 1 - <_> - 0 - - 2 11 4 2 - <_> - 2 - - 5 13 2 2 - <_> - 4 - - 1 2 6 4 - <_> - 4 - - 2 7 5 3 - <_> - 4 - - 0 1 1 1 - <_> - 3 - - 3 0 4 9 - <_> - 4 - - 4 0 2 2 - <_> - 3 - - 1 10 6 5 - <_> - 0 - - 2 2 2 6 - <_> - 9 - - 0 0 7 4 - <_> - 8 - - 3 2 3 2 - <_> - 3 - - 3 4 1 1 - <_> - 9 - - 2 3 4 6 - <_> - 4 - - 4 1 1 7 - <_> - 7 - - 3 14 2 1 - <_> - 5 - - 4 6 3 9 - <_> - 1 - - 3 0 4 13 - <_> - 1 - - 2 12 4 2 - <_> - 3 - - 2 0 4 1 - <_> - 4 - - 1 14 6 1 - <_> - 8 - - 1 8 4 2 - <_> - 1 - - 1 6 6 8 - <_> - 3 - - 2 4 2 8 - <_> - 7 - - 1 0 1 8 - <_> - 4 - - 0 3 5 3 - <_> - 2 - - 2 9 3 4 - <_> - 9 - - 2 4 4 2 - <_> - 1 - - 1 1 4 13 - <_> - 0 - - 0 13 2 2 - <_> - 3 - - 1 4 2 3 - <_> - 8 - - 0 0 7 7 - <_> - 7 - - 1 14 1 1 - <_> - 2 - - 3 13 2 2 - <_> - 3 - - 1 4 4 2 - <_> - 1 - - 4 9 1 3 - <_> - 1 - - 2 13 3 2 - <_> - 0 - - 2 10 4 2 - <_> - 8 - - 2 1 5 4 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 2 4 1 1 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 4 6 2 - <_> - 9 - - 3 4 4 9 - <_> - 9 - - 6 1 1 1 - <_> - 0 - - 0 9 3 2 - <_> - 2 - - 3 6 3 7 - <_> - 9 - - 0 5 2 2 - <_> - 2 - - 2 0 3 3 - <_> - 3 - - 0 3 7 3 - <_> - 9 - - 0 1 2 3 - <_> - 1 - - 0 7 6 7 - <_> - 0 - - 1 13 4 2 - <_> - 0 - - 1 2 5 12 - <_> - 1 - - 0 13 5 2 - <_> - 7 - - 3 5 3 5 - <_> - 8 - - 2 2 1 9 - <_> - 9 - - 2 4 2 3 - <_> - 2 - - 2 3 2 11 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 0 0 5 7 - <_> - 1 - - 0 11 7 2 - <_> - 5 - - 1 13 4 2 - <_> - 5 - - 4 6 3 8 - <_> - 8 - - 5 6 1 4 - <_> - 1 - - 0 0 1 6 - <_> - 3 - - 0 3 6 4 - <_> - 9 - - 3 0 1 14 - <_> - 4 - - 3 9 1 6 - <_> - 1 - - 3 2 1 10 - <_> - 5 - - 5 9 1 2 - <_> - 0 - - 2 14 3 1 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 3 3 4 3 - <_> - 7 - - 1 0 1 8 - <_> - 7 - - 3 0 4 15 - <_> - 3 - - 1 3 3 2 - <_> - 9 - - 2 5 2 1 - <_> - 9 - - 6 0 1 6 - <_> - 5 - - 4 9 1 5 - <_> - 5 - - 0 5 7 2 - <_> - 4 - - 4 6 3 3 - <_> - 1 - - 0 4 7 5 - <_> - 3 - - 0 14 7 1 - <_> - 1 - - 4 5 1 7 - <_> - 9 - - 3 3 1 12 - <_> - 1 - - 4 0 1 11 - <_> - 4 - - 2 2 3 4 - <_> - 8 - - 0 5 7 7 - <_> - 3 - - 1 7 3 7 - <_> - 3 - - 6 6 1 1 - <_> - 2 - - 3 1 4 9 - <_> - 5 - - 4 2 1 1 - <_> - 9 - - 1 7 5 3 - <_> - 0 - - 1 10 6 3 - <_> - 9 - - 0 6 2 6 - <_> - 3 - - 5 6 2 8 - <_> - 9 - - 0 7 5 2 - <_> - 7 - - 4 6 1 2 - <_> - 5 - - 5 1 1 8 - <_> - 0 - - 2 3 5 6 - <_> - 0 - - 2 0 5 2 - <_> - 1 - - 2 12 4 2 - <_> - 5 - - 0 11 2 3 - <_> - 3 - - 1 5 6 2 - <_> - 9 - - 3 4 1 9 - <_> - 7 - - 1 8 4 2 - <_> - 1 - - 2 1 4 12 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 0 10 5 1 - <_> - 4 - - 3 1 2 8 - <_> - 1 - - 3 7 2 1 - <_> - 5 - - 3 8 2 5 - <_> - 2 - - 4 14 2 1 - <_> - 4 - - 3 8 2 5 - <_> - 3 - - 6 1 1 1 - <_> - 2 - - 2 3 4 10 - <_> - 2 - - 4 4 2 1 - <_> - 7 - - 3 14 1 1 - <_> - 1 - - 0 5 5 2 - <_> - 2 - - 0 12 7 3 - <_> - 2 - - 5 4 1 11 - <_> - 8 - - 1 2 6 3 - <_> - 8 - - 0 3 5 1 - <_> - 1 - - 6 1 1 7 - <_> - 5 - - 2 4 1 1 - <_> - 9 - - 3 6 1 7 - <_> - 4 - - 6 9 1 1 - <_> - 5 - - 5 4 1 6 - <_> - 9 - - 3 2 3 11 - <_> - 4 - - 0 9 2 3 - <_> - 5 - - 3 14 4 1 - <_> - 3 - - 1 12 5 1 - <_> - 3 - - 0 3 4 8 - <_> - 1 - - 3 2 2 10 - <_> - 1 - - 1 13 2 2 - <_> - 2 - - 5 1 1 6 - <_> - 1 - - 4 10 3 3 - <_> - 4 - - 6 10 1 2 - <_> - 7 - - 4 7 3 1 - <_> - 0 - - 2 2 4 10 - <_> - 1 - - 3 5 2 8 - <_> - 9 - - 1 0 2 2 - <_> - 9 - - 0 5 7 3 - <_> - 2 - - 4 2 3 2 - <_> - 7 - - 1 10 6 2 - <_> - 1 - - 3 0 4 2 - <_> - 5 - - 3 2 4 1 - <_> - 7 - - 3 7 2 4 - <_> - 5 - - 1 4 6 2 - <_> - 0 - - 1 1 6 1 - <_> - 1 - - 2 10 1 1 - <_> - 9 - - 6 0 1 14 - <_> - 7 - - 6 11 1 3 - <_> - 1 - - 5 8 2 6 - <_> - 3 - - 2 9 2 4 - <_> - 3 - - 0 12 3 1 - <_> - 2 - - 3 13 4 2 - <_> - 4 - - 2 8 5 6 - <_> - 2 - - 2 7 1 2 - <_> - 2 - - 1 6 5 1 - <_> - 3 - - 1 14 6 1 - <_> - 5 - - 3 12 2 1 - <_> - 3 - - 0 1 4 6 - <_> - 8 - - 2 0 4 1 - <_> - 4 - - 0 6 3 2 - <_> - 9 - - 4 9 1 1 - <_> - 7 - - 0 5 7 5 - <_> - 1 - - 3 1 2 8 - <_> - 1 - - 0 5 3 3 - <_> - 2 - - 4 3 2 10 - <_> - 4 - - 3 4 1 10 - <_> - 9 - - 0 4 7 2 - <_> - 1 - - 2 0 2 9 - <_> - 4 - - 3 2 1 4 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 1 13 1 1 - <_> - 3 - - 2 11 4 2 - <_> - 2 - - 0 12 2 1 - <_> - 3 - - 2 3 2 8 - <_> - 9 - - 1 5 4 2 - <_> - 0 - - 4 6 2 6 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 0 0 4 1 - <_> - 7 - - 1 8 6 3 - <_> - 7 - - 4 14 1 1 - <_> - 4 - - 1 12 6 3 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 0 12 5 1 - <_> - 3 - - 0 3 3 3 - <_> - 8 - - 0 0 7 7 - <_> - 1 - - 3 7 2 6 - <_> - 0 - - 0 2 6 4 - <_> - 1 - - 2 4 4 10 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 2 3 4 1 - <_> - 9 - - 0 4 7 11 - <_> - 0 - - 2 10 3 1 - <_> - 7 - - 1 11 6 1 - <_> - 1 - - 4 4 1 11 - <_> - 0 - - 2 14 3 1 - <_> - 9 - - 2 14 4 1 - <_> - 5 - - 4 5 3 2 - <_> - 1 - - 1 3 4 2 - <_> - 2 - - 2 10 3 2 - <_> - 4 - - 1 1 4 14 - <_> - 1 - - 1 0 4 2 - <_> - 3 - - 2 2 3 2 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 0 0 6 15 - <_> - 5 - - 3 3 2 2 - <_> - 4 - - 4 3 3 4 - <_> - 9 - - 0 5 7 1 - <_> - 3 - - 1 4 3 2 - <_> - 3 - - 0 4 7 2 - <_> - 1 - - 3 12 3 3 - <_> - 2 - - 0 5 4 9 - <_> - 9 - - 0 0 2 4 - <_> - 2 - - 2 10 3 2 - <_> - 2 - - 0 14 3 1 - <_> - 5 - - 2 5 3 7 - <_> - 2 - - 2 9 3 4 - <_> - 4 - - 1 11 6 2 - <_> - 8 - - 4 0 2 1 - <_> - 0 - - 2 9 3 3 - <_> - 1 - - 3 4 3 6 - <_> - 9 - - 4 6 1 1 - <_> - 9 - - 0 11 4 1 - <_> - 3 - - 2 3 1 10 - <_> - 2 - - 2 0 4 2 - <_> - 1 - - 2 13 1 1 - <_> - 2 - - 4 0 1 1 - <_> - 5 - - 2 11 4 2 - <_> - 4 - - 2 1 5 14 - <_> - 3 - - 3 1 1 5 - <_> - 5 - - 1 14 6 1 - <_> - 4 - - 3 4 1 11 - <_> - 9 - - 3 7 1 7 - <_> - 3 - - 1 4 5 9 - <_> - 1 - - 0 3 7 4 - <_> - 4 - - 3 2 2 3 - <_> - 7 - - 3 6 2 5 - <_> - 2 - - 3 1 4 12 - <_> - 1 - - 0 0 6 3 - <_> - 2 - - 1 13 4 2 - <_> - 1 - - 2 0 4 13 - <_> - 7 - - 3 7 2 1 - <_> - 8 - - 0 6 7 1 - <_> - 4 - - 2 12 4 3 - <_> - 2 - - 0 11 7 4 - <_> - 4 - - 4 7 3 4 - <_> - 1 - - 0 10 4 4 - <_> - 5 - - 5 2 1 11 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 4 12 3 3 - <_> - 4 - - 1 14 5 1 - <_> - 2 - - 2 7 4 4 - <_> - 7 - - 1 8 1 1 - <_> - 7 - - 1 7 2 3 - <_> - 3 - - 0 4 3 2 - <_> - 4 - - 2 7 3 1 - <_> - 9 - - 4 5 3 5 - <_> - 4 - - 3 6 2 6 - <_> - 1 - - 0 7 5 3 - <_> - 7 - - 3 4 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 2 9 2 3 - <_> - 7 - - 1 0 4 1 - <_> - 0 - - 2 10 5 3 - <_> - 9 - - 4 5 2 2 - <_> - 9 - - 6 0 1 13 - <_> - 0 - - 3 13 4 2 - <_> - 8 - - 3 1 2 3 - <_> - 8 - - 1 13 4 1 - <_> - 7 - - 0 9 6 1 - <_> - 9 - - 3 3 2 7 - <_> - 5 - - 4 0 3 6 - <_> - 4 - - 2 8 4 5 - <_> - 2 - - 4 2 3 4 - <_> - 4 - - 3 7 3 1 - <_> - 0 - - 0 1 5 1 - <_> - 1 - - 0 7 7 7 - <_> - 4 - - 4 3 3 2 - <_> - 4 - - 3 3 2 3 - <_> - 9 - - 4 4 1 2 - <_> - 4 - - 2 0 5 6 - <_> - 9 - - 1 3 6 6 - <_> - 3 - - 2 11 5 2 - <_> - 3 - - 0 0 3 9 - <_> - 8 - - 3 2 4 6 - <_> - 4 - - 0 8 7 7 - <_> - 8 - - 5 0 2 6 - <_> - 3 - - 0 0 2 3 - <_> - 0 - - 2 3 2 2 - <_> - 1 - - 0 13 7 2 - <_> - 2 - - 0 14 5 1 - <_> - 5 - - 3 12 4 2 - <_> - 0 - - 5 7 2 2 - <_> - 3 - - 1 0 6 1 - <_> - 2 - - 2 2 4 9 - <_> - 3 - - 0 4 2 3 - <_> - 1 - - 1 11 1 4 - <_> - 1 - - 0 13 5 1 - <_> - 0 - - 4 6 2 9 - <_> - 5 - - 4 0 1 7 - <_> - 7 - - 5 11 2 3 - <_> - 9 - - 1 8 6 4 - <_> - 9 - - 1 3 1 2 - <_> - 4 - - 0 12 2 3 - <_> - 9 - - 1 5 6 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 1 10 2 1 - <_> - 1 - - 3 5 2 8 - <_> - 5 - - 5 5 2 1 - <_> - 7 - - 3 12 2 3 - <_> - 3 - - 0 7 6 7 - <_> - 7 - - 0 6 7 8 - <_> - 1 - - 6 10 1 4 - <_> - 9 - - 3 1 1 1 - <_> - 3 - - 1 3 3 10 - <_> - 1 - - 0 5 6 2 - <_> - 2 - - 2 12 4 1 - <_> - 5 - - 2 14 4 1 - <_> - 4 - - 2 8 3 5 - <_> - 3 - - 2 4 3 3 - <_> - 3 - - 1 5 3 2 - <_> - 7 - - 3 8 2 1 - <_> - 9 - - 0 5 7 1 - <_> - 0 - - 2 11 4 1 - <_> - 9 - - 0 8 7 2 - <_> - 2 - - 2 13 4 2 - <_> - 1 - - 4 0 1 9 - <_> - 3 - - 2 6 2 4 - <_> - 4 - - 3 8 3 6 - <_> - 2 - - 2 5 4 8 - <_> - 9 - - 0 0 7 10 - <_> - 3 - - 2 13 5 2 - <_> - 4 - - 2 5 5 1 - <_> - 0 - - 0 8 4 2 - <_> - 2 - - 2 4 1 2 - <_> - 5 - - 4 2 2 11 - <_> - 7 - - 6 1 1 9 - <_> - 4 - - 2 3 3 8 - <_> - 8 - - 0 3 4 7 - <_> - 7 - - 5 3 1 1 - <_> - 9 - - 3 5 1 6 - <_> - 7 - - 2 14 2 1 - <_> - 7 - - 6 2 1 3 - <_> - 9 - - 0 0 7 3 - <_> - 1 - - 0 0 6 1 - <_> - 7 - - 0 6 1 7 - <_> - 1 - - 4 5 1 7 - <_> - 3 - - 4 14 3 1 - <_> - 3 - - 3 0 4 8 - <_> - 0 - - 0 9 6 2 - <_> - 7 - - 1 3 2 4 - <_> - 7 - - 2 3 4 10 - <_> - 3 - - 0 2 4 3 - <_> - 0 - - 3 9 1 4 - <_> - 7 - - 1 11 6 2 - <_> - 8 - - 1 1 6 3 - <_> - 1 - - 0 10 2 1 - <_> - 3 - - 5 12 1 2 - <_> - 4 - - 4 6 3 9 - <_> - 3 - - 1 5 5 2 - <_> - 7 - - 0 6 4 1 - <_> - 1 - - 3 12 2 2 - <_> - 1 - - 1 4 6 11 - <_> - 1 - - 3 3 2 1 - <_> - 3 - - 1 0 5 1 - <_> - 9 - - 0 5 4 1 - <_> - 9 - - 0 11 2 2 - <_> - 0 - - 0 10 2 4 - <_> - 1 - - 2 4 3 8 - <_> - 7 - - 1 8 4 7 - <_> - 1 - - 0 9 7 2 - <_> - 3 - - 0 14 4 1 - <_> - 5 - - 4 6 2 7 - <_> - 4 - - 3 1 1 3 - <_> - 4 - - 6 1 1 3 - <_> - 4 - - 3 2 2 3 - <_> - 7 - - 4 5 1 2 - <_> - 9 - - 4 5 1 2 - <_> - 8 - - 0 7 7 2 - <_> - 8 - - 3 5 4 4 - <_> - 2 - - 1 4 2 5 - <_> - 4 - - 0 1 2 2 - <_> - 4 - - 2 9 4 4 - <_> - 5 - - 1 0 6 1 - <_> - 1 - - 4 11 3 3 - <_> - 9 - - 0 0 5 3 - <_> - 5 - - 0 5 7 1 - <_> - 1 - - 1 5 6 2 - <_> - 2 - - 2 11 4 2 - <_> - 2 - - 5 13 2 2 - <_> - 0 - - 2 1 2 7 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 9 2 3 - <_> - 1 - - 5 12 2 3 - <_> - 1 - - 2 6 5 2 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 4 3 3 2 - <_> - 0 - - 0 8 7 4 - <_> - 1 - - 2 7 3 5 - <_> - 0 - - 0 13 3 1 - <_> - 0 - - 1 10 3 2 - <_> - 9 - - 6 3 1 1 - <_> - 9 - - 3 7 2 1 - <_> - 0 - - 4 0 1 2 - <_> - 4 - - 4 0 1 9 - <_> - 4 - - 1 7 6 8 - <_> - 3 - - 3 1 1 4 - <_> - 7 - - 1 5 4 5 - <_> - 9 - - 3 5 2 3 - <_> - 7 - - 3 1 4 1 - <_> - 5 - - 3 1 3 13 - <_> - 4 - - 2 0 5 15 - <_> - 8 - - 0 0 4 3 - <_> - 9 - - 1 5 5 4 - <_> - 3 - - 1 5 5 1 - <_> - 7 - - 0 3 3 2 - <_> - 1 - - 5 13 1 1 - <_> - 5 - - 5 4 2 2 - <_> - 9 - - 2 7 5 1 - <_> - 4 - - 4 2 1 13 - <_> - 1 - - 2 10 4 3 - <_> - 0 - - 1 4 3 2 - <_> - 0 - - 3 14 2 1 - <_> - 5 - - 2 11 4 2 - <_> - 2 - - 1 13 6 2 - <_> - 4 - - 4 11 1 1 - <_> - 9 - - 0 1 5 2 - <_> - 4 - - 1 7 5 1 - <_> - 9 - - 3 4 2 2 - <_> - 9 - - 0 2 2 5 - <_> - 3 - - 2 3 3 3 - <_> - 7 - - 3 5 2 2 - <_> - 7 - - 1 2 6 13 - <_> - 4 - - 2 7 4 3 - <_> - 4 - - 2 9 3 4 - <_> - 7 - - 3 5 2 8 - <_> - 7 - - 2 1 1 1 - <_> - 2 - - 2 5 4 7 - <_> - 7 - - 3 12 1 1 - <_> - 2 - - 0 13 7 2 - <_> - 1 - - 3 0 4 13 - <_> - 1 - - 1 12 5 2 - <_> - 1 - - 4 10 3 1 - <_> - 7 - - 0 0 1 5 - <_> - 7 - - 0 6 1 2 - <_> - 3 - - 0 3 4 9 - <_> - 9 - - 2 4 4 9 - <_> - 3 - - 2 3 4 10 - <_> - 4 - - 2 6 4 2 - <_> - 2 - - 2 4 5 4 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 2 3 4 2 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 3 2 1 2 - <_> - 4 - - 2 2 4 13 - <_> - 5 - - 5 4 2 6 - <_> - 1 - - 2 13 1 2 - <_> - 4 - - 3 8 2 5 - <_> - 7 - - 0 11 7 2 - <_> - 9 - - 0 5 7 5 - <_> - 0 - - 1 10 5 3 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 10 7 1 - <_> - 8 - - 1 3 6 2 - <_> - 2 - - 3 14 2 1 - <_> - 9 - - 0 7 2 5 - <_> - 8 - - 0 5 3 2 - <_> - 3 - - 1 5 4 1 - <_> - 1 - - 0 5 5 2 - <_> - 0 - - 1 11 6 2 - <_> - 9 - - 3 10 2 2 - <_> - 1 - - 3 12 3 2 - <_> - 3 - - 0 0 1 3 - <_> - 5 - - 4 0 1 5 - <_> - 7 - - 3 9 4 2 - <_> - 4 - - 2 3 5 5 - <_> - 1 - - 3 1 4 13 - <_> - 2 - - 1 8 5 5 - <_> - 2 - - 2 2 4 5 - <_> - 4 - - 1 14 6 1 - <_> - 2 - - 5 1 1 5 - <_> - 3 - - 4 13 3 2 - <_> - 9 - - 6 0 1 12 - <_> - 4 - - 0 11 3 4 - <_> - 9 - - 3 7 3 3 - <_> - 0 - - 2 11 5 2 - <_> - 4 - - 1 0 5 15 - <_> - 8 - - 1 6 6 1 - <_> - 2 - - 2 7 1 4 - <_> - 3 - - 2 14 4 1 - <_> - 8 - - 0 0 1 2 - <_> - 5 - - 4 2 2 13 - <_> - 8 - - 3 8 1 6 - <_> - 9 - - 0 5 7 3 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 3 3 2 9 - <_> - 4 - - 2 6 1 2 - <_> - 4 - - 3 2 2 3 - <_> - 4 - - 2 10 5 5 - <_> - 3 - - 2 2 3 10 - <_> - 5 - - 0 14 4 1 - <_> - 7 - - 1 2 3 2 - <_> - 0 - - 1 9 5 2 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 1 4 4 7 - <_> - 4 - - 0 0 7 4 - <_> - 9 - - 0 0 3 6 - <_> - 7 - - 6 1 1 1 - <_> - 5 - - 5 6 1 5 - <_> - 9 - - 3 5 3 5 - <_> - 1 - - 5 6 1 4 - <_> - 9 - - 2 13 5 1 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 6 4 1 - <_> - 9 - - 4 9 3 6 - <_> - 5 - - 3 5 4 1 - <_> - 8 - - 3 0 4 4 - <_> - 5 - - 2 12 4 3 - <_> - 3 - - 3 3 2 3 - <_> - 2 - - 3 3 2 4 - <_> - 7 - - 5 2 2 6 - <_> - 5 - - 4 9 2 4 - <_> - 2 - - 0 10 2 3 - <_> - 3 - - 2 4 1 6 - <_> - 1 - - 0 12 4 3 - <_> - 7 - - 3 0 1 14 - <_> - 7 - - 3 5 2 2 - <_> - 1 - - 1 5 2 3 - <_> - 0 - - 2 3 3 10 - <_> - 4 - - 6 9 1 2 - <_> - 7 - - 3 7 2 1 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 3 3 2 5 - <_> - 1 - - 1 12 4 2 - <_> - 3 - - 0 1 4 6 - <_> - 1 - - 0 0 6 1 - <_> - 4 - - 0 3 6 3 - <_> - 1 - - 4 0 1 5 - <_> - 1 - - 3 2 2 8 - <_> - 9 - - 0 1 3 2 - <_> - 1 - - 4 5 1 8 - <_> - 9 - - 6 6 1 3 - <_> - 4 - - 0 1 7 5 - <_> - 3 - - 0 0 4 10 - <_> - 4 - - 1 10 1 2 - <_> - 2 - - 1 1 3 1 - <_> - 2 - - 3 4 3 9 - <_> - 7 - - 3 2 2 9 - <_> - 9 - - 2 4 3 4 - <_> - 2 - - 1 2 2 3 - <_> - 8 - - 1 5 6 4 - <_> - 7 - - 0 11 4 2 - <_> - 1 - - 3 9 1 3 - <_> - 7 - - 3 8 2 2 - <_> - 1 - - 6 9 1 5 - <_> - 4 - - 6 9 1 3 - <_> - 1 - - 2 4 4 9 - <_> - 7 - - 3 3 2 3 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 2 8 5 2 - <_> - 9 - - 3 5 2 2 - <_> - 1 - - 1 13 6 2 - <_> - 7 - - 0 2 7 13 - <_> - 0 - - 2 14 2 1 - <_> - 0 - - 1 11 4 2 - <_> - 9 - - 0 5 7 2 - <_> - 7 - - 0 10 7 1 - <_> - 3 - - 2 10 2 3 - <_> - 4 - - 3 2 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 2 2 10 - <_> - 5 - - 5 9 1 3 - <_> - 7 - - 6 1 1 2 - <_> - 4 - - 0 12 6 3 - <_> - 5 - - 4 3 2 11 - <_> - 7 - - 5 14 2 1 - <_> - 0 - - 2 2 4 8 - <_> - 1 - - 1 7 6 2 - <_> - 1 - - 4 8 1 7 - <_> - 9 - - 1 0 6 4 - <_> - 8 - - 2 2 4 10 - <_> - 9 - - 0 5 1 5 - <_> - 3 - - 2 3 4 10 - <_> - 1 - - 0 0 1 9 - <_> - 7 - - 0 6 7 7 - <_> - 1 - - 1 2 2 9 - <_> - 9 - - 3 1 4 3 - <_> - 3 - - 4 13 3 2 - <_> - 1 - - 1 12 5 2 - <_> - 7 - - 5 1 2 4 - <_> - 2 - - 2 8 5 6 - <_> - 7 - - 1 7 1 1 - <_> - 5 - - 5 4 2 1 - <_> - 9 - - 0 0 7 8 - <_> - 5 - - 3 11 4 2 - <_> - 4 - - 1 5 1 3 - <_> - 2 - - 1 4 3 2 - <_> - 1 - - 3 0 2 10 - <_> - 3 - - 0 3 4 2 - <_> - 8 - - 2 3 3 1 - <_> - 4 - - 3 0 1 1 - <_> - 1 - - 2 1 5 12 - <_> - 3 - - 2 3 2 10 - <_> - 1 - - 2 5 3 5 - <_> - 5 - - 4 1 2 8 - <_> - 0 - - 4 13 3 2 - <_> - 8 - - 6 7 1 3 - <_> - 2 - - 2 13 3 2 - <_> - 9 - - 4 4 1 3 - <_> - 8 - - 0 3 3 6 - <_> - 4 - - 3 3 2 2 - <_> - 1 - - 1 0 6 2 - <_> - 8 - - 2 3 3 4 - <_> - 1 - - 6 8 1 3 - <_> - 1 - - 2 4 4 3 - <_> - 5 - - 0 3 4 4 - <_> - 3 - - 0 0 6 8 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 2 4 4 8 - <_> - 1 - - 0 4 5 1 - <_> - 2 - - 1 7 5 5 - <_> - 1 - - 2 2 1 10 - <_> - 4 - - 3 2 2 2 - <_> - 5 - - 2 13 2 2 - <_> - 8 - - 0 1 6 8 - <_> - 7 - - 1 11 6 1 - <_> - 3 - - 2 4 2 9 - <_> - 1 - - 1 4 1 3 - <_> - 4 - - 2 1 5 14 - <_> - 1 - - 3 12 2 2 - <_> - 5 - - 1 4 6 2 - <_> - 1 - - 1 11 6 2 - <_> - 2 - - 5 13 2 2 - <_> - 5 - - 4 11 3 2 - <_> - 9 - - 3 4 3 2 - <_> - 8 - - 1 3 2 4 - <_> - 3 - - 0 13 3 2 - <_> - 2 - - 2 3 2 11 - <_> - 4 - - 2 8 5 5 - <_> - 9 - - 1 6 6 4 - <_> - 2 - - 0 4 3 1 - <_> - 9 - - 5 1 2 2 - <_> - 5 - - 2 4 4 1 - <_> - 5 - - 3 5 4 2 - <_> - 1 - - 6 12 1 3 - <_> - 5 - - 4 2 3 3 - <_> - 9 - - 4 5 3 1 - <_> - 7 - - 2 2 4 12 - <_> - 8 - - 2 12 3 3 - <_> - 7 - - 0 11 7 2 - <_> - 2 - - 1 7 6 5 - <_> - 4 - - 0 6 1 8 - <_> - 1 - - 3 2 1 11 - <_> - 1 - - 3 4 2 8 - <_> - 5 - - 0 11 2 3 - <_> - 1 - - 0 10 1 1 - <_> - 0 - - 1 10 3 2 - <_> - 8 - - 0 1 1 1 - <_> - 1 - - 0 7 2 6 - <_> - 1 - - 3 7 4 1 - <_> - 2 - - 4 10 1 3 - <_> - 4 - - 3 2 2 13 - <_> - 5 - - 4 13 3 2 - <_> - 2 - - 0 8 3 5 - <_> - 3 - - 0 4 5 2 - <_> - 4 - - 3 11 2 2 - <_> - 1 - - 2 12 4 2 - <_> - 2 - - 0 10 6 3 - <_> - 2 - - 0 13 5 2 - <_> - 3 - - 3 3 4 2 - <_> - 3 - - 0 3 7 3 - <_> - 7 - - 0 6 5 4 - <_> - 0 - - 1 3 6 6 - <_> - 9 - - 3 11 2 1 - <_> - 8 - - 3 1 3 3 - <_> - 4 - - 4 13 3 2 - <_> - 8 - - 2 0 1 1 - <_> - 3 - - 3 8 4 6 - <_> - 1 - - 4 0 1 5 - <_> - 7 - - 3 7 2 1 - <_> - 9 - - 2 4 2 3 - <_> - 8 - - 5 1 1 3 - <_> - 7 - - 0 3 3 12 - <_> - 4 - - 4 1 1 10 - <_> - 7 - - 1 8 6 3 - <_> - 5 - - 3 3 2 2 - <_> - 1 - - 0 0 6 1 - <_> - 3 - - 3 4 2 2 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 4 12 1 2 - <_> - 3 - - 0 4 3 5 - <_> - 8 - - 2 7 4 5 - <_> - 4 - - 2 7 5 1 - <_> - 1 - - 1 2 6 2 - <_> - 7 - - 0 9 4 1 - <_> - 1 - - 2 7 3 7 - <_> - 9 - - 3 9 2 3 - <_> - 3 - - 3 12 1 3 - <_> - 2 - - 3 3 3 10 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 4 6 3 5 - <_> - 5 - - 5 5 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 1 0 3 3 - <_> - 0 - - 0 2 5 2 - <_> - 8 - - 3 10 1 1 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 3 13 1 2 - <_> - 3 - - 0 3 5 2 - <_> - 1 - - 4 8 1 7 - <_> - 4 - - 1 3 4 7 - <_> - 1 - - 1 13 2 1 - <_> - 0 - - 2 11 5 2 - <_> - 0 - - 4 2 3 12 - <_> - 5 - - 1 5 6 7 - <_> - 5 - - 4 4 2 1 - <_> - 5 - - 1 0 3 15 - <_> - 9 - - 0 2 1 1 - <_> - 8 - - 0 0 7 15 - <_> - 1 - - 3 4 2 9 - <_> - 2 - - 1 12 1 2 - <_> - 1 - - 1 3 5 11 - <_> - 5 - - 2 11 4 3 - <_> - 8 - - 0 9 7 1 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 2 3 3 3 - <_> - 1 - - 2 2 1 8 - <_> - 1 - - 1 0 4 2 - <_> - 7 - - 3 6 2 5 - <_> - 4 - - 3 1 1 5 - <_> - 3 - - 2 9 4 1 - <_> - 9 - - 2 6 4 2 - <_> - 4 - - 2 12 2 3 - <_> - 7 - - 4 11 2 4 - <_> - 8 - - 2 3 5 1 - <_> - 4 - - 2 0 4 1 - <_> - 0 - - 2 0 4 13 - <_> - 1 - - 0 9 7 2 - <_> - 8 - - 0 0 1 3 - <_> - 1 - - 0 10 2 1 - <_> - 3 - - 0 14 6 1 - <_> - 7 - - 4 6 3 4 - <_> - 9 - - 2 3 3 11 - <_> - 3 - - 2 4 2 1 - <_> - 7 - - 1 2 1 5 - <_> - 5 - - 4 4 3 9 - <_> - 7 - - 0 1 5 14 - <_> - 8 - - 4 6 1 2 - <_> - 1 - - 1 0 6 14 - <_> - 1 - - 2 12 2 2 - <_> - 3 - - 0 3 6 3 - <_> - 8 - - 1 10 6 2 - <_> - 5 - - 2 11 5 2 - <_> - 1 - - 1 0 6 13 - <_> - 9 - - 1 3 4 12 - <_> - 3 - - 2 4 1 3 - <_> - 5 - - 1 5 4 1 - <_> - 0 - - 0 13 2 1 - <_> - 1 - - 6 13 1 2 - <_> - 4 - - 3 9 2 5 - <_> - 3 - - 6 7 1 2 - <_> - 4 - - 6 2 1 1 - <_> - 3 - - 4 14 3 1 - <_> - 4 - - 0 9 7 2 - <_> - 7 - - 6 0 1 5 - <_> - 9 - - 5 0 2 2 - <_> - 5 - - 1 2 6 8 - <_> - 1 - - 3 4 2 8 - <_> - 0 - - 2 7 4 4 - <_> - 8 - - 3 7 2 1 - <_> - 5 - - 0 14 7 1 - <_> - 9 - - 2 5 4 4 - <_> - 7 - - 3 11 3 1 - <_> - 4 - - 3 11 2 2 - <_> - 2 - - 4 6 2 5 - <_> - 5 - - 3 11 2 2 - <_> - 4 - - 3 1 2 7 - <_> - 4 - - 1 0 6 15 - <_> - 7 - - 1 11 6 1 - <_> - 1 - - 1 12 4 2 - <_> - 7 - - 0 3 1 1 - <_> - 9 - - 1 2 1 1 - <_> - 3 - - 2 9 3 4 - <_> - 5 - - 4 10 1 2 - <_> - 4 - - 3 6 3 6 - <_> - 2 - - 0 13 7 2 - <_> - 1 - - 3 0 2 10 - <_> - 4 - - 0 3 2 5 - <_> - 8 - - 1 5 6 2 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 2 1 5 8 - <_> - 5 - - 0 5 7 1 - <_> - 8 - - 3 0 1 4 - <_> - 1 - - 3 3 4 5 - <_> - 9 - - 0 4 7 2 - <_> - 8 - - 1 0 3 4 - <_> - 3 - - 0 0 2 4 - <_> - 2 - - 3 2 4 4 - <_> - 2 - - 4 2 1 6 - <_> - 5 - - 0 0 7 2 - <_> - 3 - - 0 4 2 5 - <_> - 8 - - 1 9 2 2 - <_> - 5 - - 4 1 1 2 - <_> - 7 - - 1 6 6 3 - <_> - 4 - - 1 7 6 7 - <_> - 4 - - 0 7 7 1 - <_> - 1 - - 1 13 6 2 - <_> - 2 - - 3 3 2 1 - <_> - 0 - - 2 14 3 1 - <_> - 0 - - 1 7 6 5 - <_> - 7 - - 1 6 6 7 - <_> - 1 - - 1 8 6 6 - <_> - 5 - - 0 14 7 1 - <_> - 2 - - 2 6 5 8 - <_> - 3 - - 1 4 4 6 - <_> - 9 - - 3 7 2 6 - <_> - 1 - - 2 10 5 3 - <_> - 2 - - 1 10 4 1 - <_> - 4 - - 2 8 3 6 - <_> - 0 - - 2 4 1 8 - <_> - 1 - - 0 8 7 1 - <_> - 0 - - 0 11 1 3 - <_> - 2 - - 3 13 2 1 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 2 10 2 3 - <_> - 3 - - 2 0 1 10 - <_> - 7 - - 3 4 1 4 - <_> - 2 - - 5 0 2 6 - <_> - 5 - - 2 8 5 3 - <_> - 1 - - 6 8 1 6 - <_> - 7 - - 3 7 2 4 - <_> - 8 - - 1 1 6 4 - <_> - 3 - - 0 2 3 5 - <_> - 1 - - 1 0 1 15 - <_> - 9 - - 6 14 1 1 - <_> - 7 - - 3 6 4 1 - <_> - 9 - - 3 1 2 11 - <_> - 1 - - 3 0 2 8 - <_> - 0 - - 2 10 4 3 - <_> - 2 - - 3 14 2 1 - <_> - 7 - - 3 12 3 3 - <_> - 8 - - 0 6 7 1 - <_> - 7 - - 2 13 2 1 - <_> - 8 - - 0 0 1 3 - <_> - 1 - - 1 0 6 1 - <_> - 3 - - 0 4 7 2 - <_> - 9 - - 1 4 6 4 - <_> - 5 - - 5 1 1 10 - <_> - 5 - - 2 11 4 4 - <_> - 3 - - 4 9 2 4 - <_> - 4 - - 0 14 7 1 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 0 4 4 1 - <_> - 0 - - 0 2 4 6 - <_> - 7 - - 0 6 1 1 - <_> - 9 - - 3 9 3 1 - <_> - 7 - - 4 5 1 1 - <_> - 4 - - 6 9 1 2 - <_> - 3 - - 1 5 4 1 - <_> - 2 - - 3 1 1 4 - <_> - 3 - - 0 14 7 1 - <_> - 7 - - 4 7 3 2 - <_> - 5 - - 4 1 3 8 - <_> - 2 - - 2 3 4 11 - <_> - 4 - - 2 4 3 10 - <_> - 4 - - 3 2 2 7 - <_> - 1 - - 4 5 1 2 - <_> - 1 - - 3 2 2 7 - <_> - 1 - - 0 0 7 1 - <_> - 4 - - 4 9 1 3 - <_> - 9 - - 1 1 6 1 - <_> - 4 - - 3 8 1 4 - <_> - 5 - - 4 4 2 2 - <_> - 9 - - 3 4 2 1 - <_> - 5 - - 0 14 4 1 - <_> - 1 - - 1 12 6 2 - <_> - 3 - - 0 4 4 1 - <_> - 1 - - 6 13 1 2 - <_> - 2 - - 2 10 4 3 - <_> - 7 - - 1 1 6 12 - <_> - 0 - - 0 13 7 2 - <_> - 8 - - 0 6 7 2 - <_> - 4 - - 4 11 3 4 - <_> - 9 - - 0 6 7 3 - <_> - 0 - - 0 2 6 10 - <_> - 8 - - 1 1 4 11 - <_> - 0 - - 2 8 1 2 - <_> - 7 - - 1 1 2 4 - <_> - 7 - - 2 6 4 4 - <_> - 0 - - 4 3 2 9 - <_> - 0 - - 2 3 1 9 - <_> - 4 - - 3 5 2 10 - <_> - 2 - - 3 8 1 2 - <_> - 2 - - 5 13 2 1 - <_> - 5 - - 3 11 3 4 - <_> - 9 - - 0 1 7 3 - <_> - 5 - - 0 11 1 1 - <_> - 3 - - 0 11 6 2 - <_> - 0 - - 1 4 2 3 - <_> - 4 - - 3 1 1 12 - <_> - 0 - - 2 14 4 1 - <_> - 1 - - 0 3 5 5 - <_> - 4 - - 3 1 2 5 - <_> - 7 - - 3 14 2 1 - <_> - 8 - - 0 1 7 3 - <_> - 2 - - 4 4 3 2 - <_> - 9 - - 3 10 2 3 - <_> - 1 - - 1 2 6 11 - <_> - 1 - - 1 7 6 5 - <_> - 9 - - 3 5 3 5 - <_> - 7 - - 3 6 2 4 - <_> - 2 - - 4 1 2 13 - <_> - 7 - - 6 2 1 1 - <_> - 3 - - 2 14 5 1 - <_> - 8 - - 3 2 3 2 - <_> - 3 - - 1 3 3 5 - <_> - 1 - - 3 12 3 2 - <_> - 4 - - 2 10 4 3 - <_> - 0 - - 2 6 5 7 - <_> - 4 - - 2 13 5 1 - <_> - 5 - - 2 14 5 1 - <_> - 9 - - 2 7 5 1 - <_> - 4 - - 0 7 7 4 - <_> - 1 - - 3 2 4 11 - <_> - 3 - - 1 3 5 4 - <_> - 1 - - 5 10 2 1 - <_> - 7 - - 6 3 1 2 - <_> - 3 - - 2 9 3 4 - <_> - 5 - - 4 2 2 5 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 1 2 6 13 - <_> - 4 - - 2 4 4 4 - <_> - 9 - - 3 7 2 6 - <_> - 9 - - 6 2 1 2 - <_> - 2 - - 1 10 4 1 - <_> - 2 - - 1 4 3 1 - <_> - 0 - - 1 2 3 3 - <_> - 5 - - 0 3 1 10 - <_> - 0 - - 0 1 5 1 - <_> - 2 - - 3 3 2 2 - <_> - 5 - - 5 0 2 9 - <_> - 3 - - 4 13 3 2 - <_> - 9 - - 0 8 3 1 - <_> - 7 - - 3 5 1 2 - <_> - 3 - - 2 9 2 2 - <_> - 1 - - 6 10 1 2 - <_> - 4 - - 1 11 6 1 - <_> - 7 - - 1 10 6 3 - <_> - 9 - - 0 0 7 6 - <_> - 2 - - 3 10 4 3 - <_> - 4 - - 3 2 2 2 - <_> - 8 - - 2 3 4 1 - <_> - 9 - - 1 8 6 1 - <_> - 0 - - 2 0 2 13 - <_> - 3 - - 2 4 2 9 - <_> - 3 - - 1 3 5 11 - <_> - 1 - - 1 0 5 2 - <_> - 8 - - 6 7 1 3 - <_> - 1 - - 3 4 2 6 - <_> - 2 - - 3 14 2 1 - <_> - 9 - - 2 0 1 5 - <_> - 0 - - 0 7 7 2 - <_> - 4 - - 1 14 6 1 - <_> - 1 - - 2 13 4 2 - <_> - 3 - - 1 10 1 5 - <_> - 0 - - 1 11 5 2 - <_> - 7 - - 0 2 7 11 - <_> - 5 - - 0 1 6 6 - <_> - 7 - - 3 7 2 8 - <_> - 7 - - 0 11 6 2 - <_> - 5 - - 1 10 6 3 - <_> - 1 - - 0 5 3 2 - <_> - 7 - - 2 11 5 1 - <_> - 4 - - 0 5 3 3 - <_> - 7 - - 0 4 1 11 - <_> - 9 - - 2 5 2 3 - <_> - 8 - - 0 5 7 2 - <_> - 0 - - 0 6 1 3 - <_> - 3 - - 3 2 1 10 - <_> - 7 - - 1 0 5 1 - <_> - 5 - - 1 13 6 2 - <_> - 1 - - 1 4 5 8 - <_> - 3 - - 4 14 3 1 - <_> - 5 - - 5 5 1 8 - <_> - 7 - - 1 4 1 3 - <_> - 1 - - 3 1 1 10 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 0 2 1 3 - <_> - 9 - - 0 6 4 1 - <_> - 3 - - 2 4 4 9 - <_> - 1 - - 1 5 6 2 - <_> - 8 - - 0 0 1 15 - <_> - 1 - - 3 12 2 2 - <_> - 7 - - 4 9 1 1 - <_> - 4 - - 0 12 5 3 - <_> - 0 - - 2 14 3 1 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 2 3 3 2 - <_> - 5 - - 3 3 3 2 - <_> - 9 - - 2 7 3 7 - <_> - 8 - - 2 3 4 1 - <_> - 0 - - 2 11 3 1 - <_> - 9 - - 4 6 2 1 - <_> - 9 - - 2 4 5 3 - <_> - 1 - - 3 10 4 4 - <_> - 4 - - 0 5 1 6 - <_> - 4 - - 2 11 3 3 - <_> - 3 - - 0 4 7 2 - <_> - 7 - - 1 1 3 12 - <_> - 9 - - 0 5 4 2 - <_> - 4 - - 4 1 1 8 - <_> - 1 - - 3 7 3 1 - <_> - 1 - - 1 1 6 6 - <_> - 2 - - 2 6 4 8 - <_> - 9 - - 1 0 6 10 - <_> - 2 - - 0 13 7 2 - <_> - 3 - - 1 5 3 2 - <_> - 7 - - 3 8 2 1 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 1 12 4 2 - <_> - 2 - - 5 1 2 2 - <_> - 5 - - 4 2 2 13 - <_> - 9 - - 3 4 2 3 - <_> - 8 - - 3 1 4 3 - <_> - 1 - - 1 4 6 1 - <_> - 1 - - 1 4 5 9 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 0 6 3 2 - <_> - 7 - - 1 1 3 1 - <_> - 7 - - 2 4 4 6 - <_> - 5 - - 1 2 5 1 - <_> - 0 - - 2 3 1 4 - <_> - 8 - - 2 3 3 1 - <_> - 0 - - 2 8 2 2 - <_> - 2 - - 2 8 3 3 - <_> - 5 - - 2 9 2 2 - <_> - 3 - - 2 13 3 1 - <_> - 9 - - 3 1 1 2 - <_> - 8 - - 2 6 5 1 - <_> - 8 - - 2 0 5 7 - <_> - 9 - - 3 4 1 9 - <_> - 9 - - 6 5 1 10 - <_> - 0 - - 3 10 3 2 - <_> - 7 - - 1 9 6 1 - <_> - 7 - - 1 1 3 14 - <_> - 1 - - 2 6 4 4 - <_> - 1 - - 2 9 4 3 - <_> - 7 - - 4 0 2 15 - <_> - 2 - - 0 11 6 2 - <_> - 5 - - 3 13 3 2 - <_> - 5 - - 2 11 4 2 - <_> - 7 - - 6 0 1 5 - <_> - 7 - - 3 6 2 5 - <_> - 3 - - 2 4 4 7 - <_> - 7 - - 2 12 4 3 - <_> - 7 - - 1 6 3 1 - <_> - 8 - - 4 2 1 1 - <_> - 3 - - 2 6 5 4 - <_> - 3 - - 0 14 6 1 - <_> - 5 - - 2 12 5 3 - <_> - 9 - - 2 4 3 4 - <_> - 9 - - 0 6 1 3 - <_> - 1 - - 3 2 2 8 - <_> - 4 - - 0 1 2 5 - <_> - 4 - - 3 2 1 4 - <_> - 7 - - 3 2 3 5 - <_> - 9 - - 6 1 1 4 - <_> - 5 - - 5 2 2 8 - <_> - 4 - - 5 0 2 11 - <_> - 4 - - 3 9 3 4 - <_> - 1 - - 0 0 7 2 - <_> - 1 - - 2 2 4 7 - <_> - 7 - - 3 7 1 3 - <_> - 9 - - 2 5 5 1 - <_> - 9 - - 0 6 1 5 - <_> - 9 - - 3 9 3 1 - <_> - 3 - - 0 5 6 1 - <_> - 9 - - 2 4 3 2 - <_> - 0 - - 2 11 5 2 - <_> - 8 - - 0 1 1 1 - <_> - 1 - - 4 6 3 5 - <_> - 1 - - 2 2 2 1 - <_> - 0 - - 0 13 3 2 - <_> - 1 - - 3 6 2 4 - <_> - 9 - - 0 5 6 1 - <_> - 2 - - 2 4 4 9 - <_> - 7 - - 3 2 2 10 - <_> - 8 - - 1 3 5 1 - <_> - 4 - - 0 8 4 7 - <_> - 1 - - 3 12 1 3 - <_> - 7 - - 3 0 2 1 - <_> - 5 - - 3 2 3 2 - <_> - 2 - - 5 4 1 1 - <_> - 3 - - 2 1 2 12 - <_> - 4 - - 2 5 3 10 - <_> - 5 - - 1 12 1 2 - <_> - 1 - - 0 10 6 4 - <_> - 1 - - 0 12 7 1 - <_> - 1 - - 3 10 2 4 - <_> - 2 - - 0 4 1 10 - <_> - 7 - - 3 2 2 11 - <_> - 0 - - 3 11 3 2 - <_> - 4 - - 1 11 6 1 - <_> - 9 - - 3 9 3 3 - <_> - 5 - - 0 14 4 1 - <_> - 2 - - 5 11 2 4 - <_> - 0 - - 2 3 4 10 - <_> - 1 - - 3 3 2 4 - <_> - 7 - - 4 7 1 2 - <_> - 0 - - 0 1 1 11 - <_> - 1 - - 2 1 3 11 - <_> - 3 - - 3 11 3 2 - <_> - 1 - - 3 1 1 8 - <_> - 0 - - 1 10 4 3 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 4 2 1 2 - <_> - 9 - - 1 5 4 2 - <_> - 0 - - 1 13 6 2 - <_> - 0 - - 1 3 6 1 - <_> - 1 - - 6 12 1 3 - <_> - 4 - - 4 1 2 11 - <_> - 9 - - 1 2 1 2 - <_> - 4 - - 2 14 4 1 - <_> - 1 - - 3 4 3 10 - <_> - 7 - - 0 10 7 4 - <_> - 7 - - 0 11 7 1 - <_> - 1 - - 3 4 2 6 - <_> - 5 - - 4 4 3 9 - <_> - 9 - - 0 4 6 3 - <_> - 3 - - 2 1 1 11 - <_> - 4 - - 0 8 7 1 - <_> - 1 - - 3 1 2 14 - <_> - 5 - - 0 4 1 3 - <_> - 8 - - 1 0 4 1 - <_> - 0 - - 6 9 1 5 - <_> - 2 - - 2 4 4 9 - <_> - 5 - - 1 13 6 2 - <_> - 9 - - 0 1 2 14 - <_> - 7 - - 1 2 2 3 - <_> - 7 - - 1 6 6 3 - <_> - 0 - - 0 2 4 3 - <_> - 3 - - 1 3 3 2 - <_> - 7 - - 2 5 1 2 - <_> - 5 - - 3 3 2 3 - <_> - 3 - - 2 4 4 9 - <_> - 9 - - 3 8 2 4 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 1 11 2 3 - <_> - 1 - - 1 4 1 3 - <_> - 2 - - 4 13 2 2 - <_> - 1 - - 1 12 4 2 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 3 7 2 2 - <_> - 1 - - 2 4 3 8 - <_> - 1 - - 6 13 1 2 - <_> - 8 - - 1 6 6 2 - <_> - 3 - - 6 6 1 3 - <_> - 9 - - 2 5 3 1 - <_> - 8 - - 1 1 6 10 - <_> - 5 - - 5 4 1 3 - <_> - 0 - - 5 14 2 1 - <_> - 5 - - 4 10 2 3 - <_> - 7 - - 3 5 2 1 - <_> - 7 - - 4 8 1 5 - <_> - 3 - - 3 5 4 2 - <_> - 0 - - 0 2 4 10 - <_> - 5 - - 0 1 4 14 - <_> - 1 - - 2 12 4 2 - <_> - 7 - - 1 6 1 5 - <_> - 1 - - 0 11 7 2 - <_> - 5 - - 4 3 3 3 - <_> - 5 - - 1 4 3 10 - <_> - 3 - - 1 10 1 2 - <_> - 9 - - 4 8 3 1 - <_> - 4 - - 6 9 1 3 - <_> - 7 - - 0 3 1 12 - <_> - 7 - - 1 7 1 2 - <_> - 7 - - 6 2 1 2 - <_> - 2 - - 4 6 2 5 - <_> - 4 - - 1 9 1 4 - <_> - 1 - - 1 1 2 13 - <_> - 3 - - 3 14 4 1 - <_> - 1 - - 3 11 3 2 - <_> - 4 - - 3 1 2 7 - <_> - 9 - - 0 1 2 1 - <_> - 7 - - 5 1 2 1 - <_> - 5 - - 5 6 1 5 - <_> - 9 - - 0 7 1 1 - <_> - 3 - - 0 4 3 3 - <_> - 3 - - 0 0 4 5 - <_> - 4 - - 3 6 2 6 - <_> - 9 - - 0 1 7 1 - <_> - 2 - - 0 0 2 6 - <_> - 4 - - 1 7 6 1 - <_> - 9 - - 4 4 1 3 - <_> - 1 - - 3 0 2 10 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 1 5 13 - <_> - 2 - - 1 11 4 2 - <_> - 2 - - 0 13 5 2 - <_> - 5 - - 2 5 1 7 - <_> - 0 - - 3 13 4 1 - <_> - 4 - - 3 8 2 5 - <_> - 4 - - 3 2 1 3 - <_> - 4 - - 2 7 4 1 - <_> - 7 - - 1 2 1 5 - <_> - 9 - - 5 1 1 7 - <_> - 5 - - 3 0 2 6 - <_> - 9 - - 1 6 6 3 - <_> - 3 - - 2 4 2 3 - <_> - 1 - - 0 0 2 6 - <_> - 8 - - 0 6 6 1 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 0 1 7 8 - <_> - 5 - - 4 11 3 2 - <_> - 3 - - 4 9 2 6 - <_> - 0 - - 0 12 2 2 - <_> - 3 - - 0 4 6 9 - <_> - 1 - - 2 13 2 2 - <_> - 9 - - 2 3 1 1 - <_> - 2 - - 5 14 2 1 - <_> - 1 - - 6 13 1 2 - <_> - 9 - - 2 4 3 2 - <_> - 7 - - 2 8 2 1 - <_> - 0 - - 2 2 2 10 - <_> - 3 - - 2 8 2 3 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 2 2 5 2 - <_> - 4 - - 3 7 2 8 - <_> - 4 - - 3 3 4 7 - <_> - 1 - - 3 13 3 1 - <_> - 5 - - 0 11 5 2 - <_> - 5 - - 0 14 5 1 - <_> - 1 - - 2 3 5 10 - <_> - 0 - - 4 13 3 2 - <_> - 2 - - 4 4 3 9 - <_> - 0 - - 4 11 2 2 - <_> - 9 - - 4 1 3 1 - <_> - 9 - - 0 6 5 2 - <_> - 4 - - 0 9 4 2 - <_> - 5 - - 0 3 1 6 - <_> - 4 - - 0 8 5 6 - <_> - 9 - - 3 13 3 2 - <_> - 7 - - 5 1 1 9 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 4 1 2 1 - <_> - 9 - - 2 0 2 3 - <_> - 0 - - 1 2 3 4 - <_> - 5 - - 5 4 1 2 - <_> - 2 - - 3 14 3 1 - <_> - 7 - - 3 6 2 1 - <_> - 0 - - 5 0 1 14 - <_> - 7 - - 1 9 5 1 - <_> - 7 - - 0 7 2 8 - <_> - 9 - - 2 5 1 2 - <_> - 1 - - 0 7 5 1 - <_> - 1 - - 3 5 2 5 - <_> - 8 - - 1 0 1 8 - <_> - 1 - - 2 9 4 3 - <_> - 9 - - 3 5 4 6 - <_> - 3 - - 2 9 2 4 - <_> - 2 - - 1 9 5 2 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 4 2 2 11 - <_> - 0 - - 5 7 2 1 - <_> - 7 - - 0 6 1 1 - <_> - 9 - - 2 3 2 6 - <_> - 3 - - 1 5 4 1 - <_> - 1 - - 4 12 1 2 - <_> - 9 - - 0 8 2 7 - <_> - 1 - - 2 11 5 4 - <_> - 2 - - 3 3 2 8 - <_> - 1 - - 0 5 2 7 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 4 1 1 8 - <_> - 0 - - 0 1 7 1 - <_> - 4 - - 0 2 7 2 - <_> - 9 - - 6 0 1 13 - <_> - 7 - - 3 1 4 1 - <_> - 9 - - 3 3 3 8 - <_> - 4 - - 2 2 3 4 - <_> - 5 - - 6 0 1 2 - <_> - 8 - - 2 7 4 1 - <_> - 1 - - 3 5 2 5 - <_> - 3 - - 1 12 5 3 - <_> - 5 - - 4 1 3 4 - <_> - 1 - - 0 0 6 2 - <_> - 7 - - 0 13 7 1 - <_> - 5 - - 5 5 2 1 - <_> - 7 - - 2 6 4 4 - <_> - 0 - - 0 2 4 6 - <_> - 3 - - 0 9 7 1 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 2 11 4 2 - <_> - 7 - - 1 2 6 4 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 0 0 7 14 - <_> - 9 - - 2 2 4 2 - <_> - 9 - - 2 7 4 3 - <_> - 9 - - 0 7 1 5 - <_> - 0 - - 3 8 3 5 - <_> - 8 - - 5 4 2 6 - <_> - 1 - - 1 4 6 1 - <_> - 2 - - 2 7 5 4 - <_> - 7 - - 1 11 6 1 - <_> - 7 - - 4 0 1 11 - <_> - 7 - - 2 12 4 3 - <_> - 1 - - 3 12 1 2 - <_> - 3 - - 0 3 4 2 - <_> - 1 - - 3 7 2 6 - <_> - 3 - - 0 3 2 6 - <_> - 7 - - 1 3 4 2 - <_> - 5 - - 2 0 1 3 - <_> - 2 - - 5 13 2 2 - <_> - 2 - - 3 0 4 6 - <_> - 9 - - 2 4 5 3 - <_> - 7 - - 3 5 2 2 - <_> - 7 - - 2 2 4 4 - <_> - 5 - - 2 5 5 7 - <_> - 2 - - 2 1 3 2 - <_> - 5 - - 3 3 3 1 - <_> - 3 - - 2 1 2 12 - <_> - 8 - - 3 1 2 3 - <_> - 5 - - 5 0 1 4 - <_> - 9 - - 2 4 4 1 - <_> - 2 - - 5 3 1 4 - <_> - 9 - - 2 1 1 4 - <_> - 9 - - 3 9 2 4 - <_> - 2 - - 0 14 3 1 - <_> - 2 - - 3 3 2 8 - <_> - 3 - - 0 14 6 1 - <_> - 4 - - 3 8 2 5 - <_> - 0 - - 2 6 5 7 - <_> - 0 - - 0 10 7 1 - <_> - 0 - - 2 0 5 2 - <_> - 3 - - 0 5 7 2 - <_> - 5 - - 4 4 3 2 - <_> - 7 - - 1 7 6 3 - <_> - 1 - - 3 0 2 8 - <_> - 2 - - 4 9 2 4 - <_> - 4 - - 3 1 2 8 - <_> - 1 - - 3 7 2 1 - <_> - 3 - - 0 11 5 2 - <_> - 1 - - 4 10 3 1 - <_> - 1 - - 2 4 4 8 - <_> - 4 - - 4 11 3 3 - <_> - 4 - - 1 9 1 2 - <_> - 0 - - 1 14 4 1 - <_> - 2 - - 2 1 3 1 - <_> - 3 - - 2 3 2 10 - <_> - 7 - - 6 2 1 3 - <_> - 4 - - 1 1 6 6 - <_> - 9 - - 3 5 2 2 - <_> - 7 - - 0 7 6 1 - <_> - 8 - - 3 3 2 4 - <_> - 8 - - 2 1 5 4 - <_> - 8 - - 0 3 6 1 - <_> - 1 - - 4 0 3 9 - <_> - 4 - - 4 1 1 8 - <_> - 4 - - 0 6 2 4 - <_> - 5 - - 1 5 6 6 - <_> - 4 - - 3 4 1 11 - <_> - 1 - - 2 12 2 2 - <_> - 7 - - 0 8 4 2 - <_> - 0 - - 0 13 3 1 - <_> - 9 - - 0 0 7 3 - <_> - 5 - - 0 5 6 3 - <_> - 1 - - 0 0 6 14 - <_> - 1 - - 0 10 5 4 - <_> - 9 - - 0 13 1 1 - <_> - 0 - - 1 1 6 12 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 4 5 1 7 - <_> - 7 - - 1 0 2 3 - <_> - 3 - - 4 14 3 1 - <_> - 9 - - 4 1 1 1 - <_> - 1 - - 0 13 2 2 - <_> - 7 - - 2 12 4 1 - <_> - 9 - - 1 8 2 2 - <_> - 3 - - 0 4 4 1 - <_> - 7 - - 1 2 2 5 - <_> - 0 - - 1 10 5 3 - <_> - 9 - - 1 4 6 6 - <_> - 1 - - 3 0 1 10 - <_> - 4 - - 0 8 1 1 - <_> - 5 - - 0 10 1 5 - <_> - 2 - - 1 11 4 2 - <_> - 8 - - 0 0 3 13 - <_> - 5 - - 4 14 3 1 - <_> - 7 - - 0 11 7 1 - <_> - 7 - - 0 0 3 9 - <_> - 7 - - 4 14 1 1 - <_> - 9 - - 1 7 4 2 - <_> - 4 - - 0 3 6 3 - <_> - 3 - - 0 3 4 3 - <_> - 8 - - 3 2 3 2 - <_> - 5 - - 0 9 3 6 - <_> - 4 - - 2 2 3 4 - <_> - 1 - - 3 2 2 4 - <_> - 2 - - 1 3 4 9 - <_> - 7 - - 0 6 2 2 - <_> - 9 - - 3 5 4 1 - <_> - 7 - - 3 5 1 1 - <_> - 5 - - 5 3 1 7 - <_> - 9 - - 3 7 1 7 - <_> - 4 - - 1 5 6 2 - <_> - 2 - - 0 13 7 1 - <_> - 9 - - 6 0 1 3 - <_> - 1 - - 6 8 1 1 - <_> - 2 - - 0 11 6 2 - <_> - 3 - - 1 10 1 2 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 0 13 5 1 - <_> - 3 - - 2 4 3 10 - <_> - 4 - - 2 8 4 6 - <_> - 5 - - 3 2 4 8 - <_> - 3 - - 0 14 6 1 - <_> - 1 - - 0 10 3 5 - <_> - 9 - - 4 8 1 2 - <_> - 9 - - 0 11 3 1 - <_> - 7 - - 3 13 1 2 - <_> - 3 - - 2 9 2 3 - <_> - 5 - - 3 9 1 1 - <_> - 1 - - 2 4 4 9 - <_> - 0 - - 2 2 4 11 - <_> - 7 - - 5 2 2 11 - <_> - 0 - - 1 13 6 1 - <_> - 7 - - 3 6 3 4 - <_> - 2 - - 2 7 5 8 - <_> - 7 - - 3 0 2 1 - <_> - 2 - - 3 14 2 1 - <_> - 1 - - 3 4 2 8 - <_> - 9 - - 3 3 1 9 - <_> - 5 - - 3 2 4 4 - <_> - 4 - - 4 4 1 11 - <_> - 9 - - 2 6 4 6 - <_> - 8 - - 2 3 5 1 - <_> - 9 - - 2 5 2 2 - <_> - 2 - - 1 6 3 7 - <_> - 7 - - 1 1 1 7 - <_> - 1 - - 0 5 7 3 - <_> - 1 - - 3 7 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 2 9 4 3 - <_> - 3 - - 0 6 4 2 - <_> - 5 - - 4 10 3 3 - <_> - 4 - - 2 8 2 6 - <_> - 4 - - 3 1 1 7 - <_> - 1 - - 2 0 5 2 - <_> - 7 - - 3 6 2 8 - <_> - 1 - - 0 10 7 1 - <_> - 8 - - 1 1 5 7 - <_> - 7 - - 3 3 1 7 - <_> - 0 - - 0 4 7 3 - <_> - 3 - - 1 5 3 1 - <_> - 4 - - 1 4 4 7 - <_> - 2 - - 5 14 2 1 - <_> - 2 - - 5 0 2 7 - <_> - 1 - - 1 2 5 6 - <_> - 4 - - 3 9 2 4 - <_> - 8 - - 0 5 6 2 - <_> - 4 - - 0 13 4 2 - <_> - 2 - - 0 11 6 2 - <_> - 2 - - 2 13 3 2 - <_> - 1 - - 5 12 2 3 - <_> - 5 - - 4 3 2 3 - <_> - 1 - - 3 12 4 2 - <_> - 5 - - 0 0 7 5 - <_> - 4 - - 3 14 3 1 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 3 7 3 1 - <_> - 1 - - 2 1 4 12 - <_> - 9 - - 0 2 2 2 - <_> - 1 - - 4 7 1 7 - <_> - 9 - - 0 5 7 1 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 0 6 2 3 - <_> - 1 - - 2 12 3 2 - <_> - 1 - - 4 4 1 10 - <_> - 3 - - 0 4 5 6 - <_> - 9 - - 1 1 2 4 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 2 11 4 3 - <_> - 9 - - 1 1 5 3 - <_> - 7 - - 2 7 3 1 - <_> - 7 - - 1 1 6 14 - <_> - 7 - - 2 2 3 1 - <_> - 5 - - 2 2 3 5 - <_> - 9 - - 3 8 1 4 - <_> - 4 - - 3 8 2 5 - <_> - 5 - - 5 7 1 5 - <_> - 7 - - 3 11 1 2 - <_> - 3 - - 1 4 3 8 - <_> - 9 - - 0 4 7 5 - <_> - 8 - - 2 3 1 1 - <_> - 0 - - 0 3 1 8 - <_> - 2 - - 2 4 2 2 - <_> - 0 - - 0 1 4 4 - <_> - 5 - - 6 0 1 5 - <_> - 1 - - 5 0 2 9 - <_> - 5 - - 1 0 5 2 - <_> - 4 - - 3 0 1 6 - <_> - 8 - - 2 1 5 8 - <_> - 3 - - 2 9 2 4 - <_> - 3 - - 1 1 6 6 - <_> - 2 - - 1 13 5 2 - <_> - 5 - - 3 10 3 3 - <_> - 7 - - 4 5 1 1 - <_> - 1 - - 2 10 4 5 - <_> - 1 - - 3 13 2 2 - <_> - 7 - - 3 6 2 1 - <_> - 5 - - 5 0 2 10 - <_> - 1 - - 2 12 3 2 - <_> - 3 - - 3 0 1 7 - <_> - 8 - - 0 6 7 6 - <_> - 4 - - 3 4 2 5 - <_> - 9 - - 3 4 3 2 - <_> - 8 - - 1 0 5 1 - <_> - 1 - - 2 10 5 1 - <_> - 4 - - 2 7 5 1 - <_> - 1 - - 0 0 6 14 - <_> - 9 - - 3 9 2 2 - <_> - 1 - - 5 3 1 5 - <_> - 0 - - 1 10 4 2 - <_> - 7 - - 3 10 2 2 - <_> - 8 - - 1 4 5 10 - <_> - 7 - - 0 14 7 1 - <_> - 7 - - 1 2 1 1 - <_> - 5 - - 3 3 2 2 - <_> - 9 - - 0 5 3 1 - <_> - 1 - - 4 1 1 7 - <_> - 3 - - 1 4 5 2 - <_> - 4 - - 0 1 7 6 - <_> - 3 - - 0 12 6 3 - <_> - 7 - - 6 11 1 3 - <_> - 2 - - 2 12 4 1 - <_> - 4 - - 2 9 4 5 - <_> - 0 - - 0 13 2 1 - <_> - 8 - - 2 6 4 2 - <_> - 4 - - 0 11 1 3 - <_> - 4 - - 1 11 5 3 - <_> - 1 - - 6 12 1 3 - <_> - 1 - - 2 12 3 2 - <_> - 5 - - 4 4 3 1 - <_> - 5 - - 1 1 3 2 - <_> - 3 - - 3 5 3 7 - <_> - 4 - - 2 11 5 4 - <_> - 2 - - 0 4 4 2 - <_> - 9 - - 1 1 1 5 - <_> - 3 - - 1 1 2 6 - <_> - 3 - - 0 2 3 7 - <_> - 1 - - 1 5 3 4 - <_> - 1 - - 3 4 2 8 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 3 4 3 9 - <_> - 1 - - 0 7 5 3 - <_> - 9 - - 0 5 7 3 - <_> - 4 - - 4 2 1 3 - <_> - 9 - - 6 4 1 1 - <_> - 9 - - 6 1 1 1 - <_> - 7 - - 2 1 1 1 - <_> - 2 - - 0 3 6 10 - <_> - 4 - - 2 5 3 10 - <_> - 8 - - 4 1 1 3 - <_> - 1 - - 3 8 2 1 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 3 4 4 2 - <_> - 0 - - 2 4 2 8 - <_> - 7 - - 4 7 1 1 - <_> - 0 - - 5 2 1 7 - <_> - 1 - - 0 0 7 1 - <_> - 5 - - 1 14 3 1 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 2 11 3 2 - <_> - 9 - - 4 6 1 5 - <_> - 9 - - 2 9 3 5 - <_> - 9 - - 6 1 1 8 - <_> - 7 - - 6 11 1 3 - <_> - 4 - - 3 1 2 7 - <_> - 7 - - 6 1 1 7 - <_> - 1 - - 1 5 5 2 - <_> - 0 - - 5 3 2 10 - <_> - 3 - - 3 1 1 5 - <_> - 1 - - 2 13 2 2 - <_> - 0 - - 4 8 2 4 - <_> - 9 - - 0 5 7 1 - <_> - 3 - - 2 4 1 4 - <_> - 4 - - 2 4 4 4 - <_> - 7 - - 2 5 3 5 - <_> - 0 - - 2 6 3 6 - <_> - 7 - - 0 9 6 1 - <_> - 0 - - 1 14 6 1 - <_> - 2 - - 2 0 3 3 - <_> - 7 - - 5 0 2 6 - <_> - 1 - - 3 5 4 8 - <_> - 1 - - 0 3 7 3 - <_> - 3 - - 4 3 1 2 - <_> - 9 - - 3 5 2 2 - <_> - 9 - - 0 2 1 3 - <_> - 8 - - 1 2 6 13 - <_> - 1 - - 3 1 1 9 - <_> - 0 - - 0 10 7 3 - <_> - 5 - - 0 6 6 4 - <_> - 1 - - 6 5 1 10 - <_> - 0 - - 0 1 1 14 - <_> - 4 - - 0 8 5 7 - <_> - 3 - - 6 11 1 3 - <_> - 1 - - 0 12 7 2 - <_> - 1 - - 2 3 1 9 - <_> - 3 - - 0 4 7 2 - <_> - 9 - - 4 5 2 1 - <_> - 2 - - 2 0 3 11 - <_> - 8 - - 4 2 1 2 - <_> - 4 - - 3 6 2 9 - <_> - 1 - - 0 13 6 2 - <_> - 1 - - 2 12 2 2 - <_> - 3 - - 0 1 4 8 - <_> - 2 - - 0 4 4 1 - <_> - 3 - - 0 5 6 2 - <_> - 7 - - 0 7 2 1 - <_> - 7 - - 3 6 3 4 - <_> - 5 - - 4 7 1 6 - <_> - 3 - - 3 8 3 2 - <_> - 5 - - 1 13 3 1 - <_> - 4 - - 3 11 2 1 - <_> - 2 - - 0 14 5 1 - <_> - 7 - - 3 10 2 3 - <_> - 4 - - 3 2 1 4 - <_> - 1 - - 3 2 1 2 - <_> - 1 - - 0 1 5 1 - <_> - 2 - - 4 6 2 7 - <_> - 7 - - 3 11 1 2 - <_> - 1 - - 3 12 2 3 - <_> - 7 - - 4 5 1 1 - <_> - 1 - - 4 1 2 7 - <_> - 7 - - 2 5 1 2 - <_> - 3 - - 1 3 5 10 - <_> - 7 - - 0 7 7 1 - <_> - 8 - - 0 0 4 5 - <_> - 3 - - 1 10 1 4 - <_> - 3 - - 2 11 4 2 - <_> - 0 - - 2 10 3 2 - <_> - 9 - - 3 10 2 3 - <_> - 5 - - 1 0 3 10 - <_> - 3 - - 2 3 3 9 - <_> - 8 - - 6 5 1 2 - <_> - 4 - - 2 9 3 6 - <_> - 0 - - 2 8 5 6 - <_> - 2 - - 2 3 3 8 - <_> - 3 - - 6 5 1 2 - <_> - 3 - - 3 14 4 1 - <_> - 0 - - 2 8 3 2 - <_> - 2 - - 0 7 6 6 - <_> - 5 - - 5 4 1 7 - <_> - 1 - - 3 5 1 2 - <_> - 1 - - 3 0 2 9 - <_> - 0 - - 5 0 1 5 - <_> - 0 - - 2 14 2 1 - <_> - 4 - - 3 2 4 7 - <_> - 9 - - 3 2 1 8 - <_> - 0 - - 0 3 6 8 - <_> - 9 - - 4 8 1 4 - <_> - 7 - - 0 8 5 2 - <_> - 4 - - 3 8 2 5 - <_> - 1 - - 2 10 4 3 - <_> - 8 - - 0 12 6 1 - <_> - 9 - - 5 6 2 4 - <_> - 8 - - 2 6 4 2 - <_> - 5 - - 3 0 3 3 - <_> - 1 - - 0 11 5 1 - <_> - 9 - - 0 5 6 1 - <_> - 0 - - 4 12 3 1 - <_> - 2 - - 4 13 3 2 - <_> - 5 - - 3 2 3 4 - <_> - 3 - - 0 0 3 6 - <_> - 1 - - 3 13 1 1 - <_> - 0 - - 3 10 3 2 - <_> - 2 - - 5 3 2 3 - <_> - 9 - - 1 0 1 2 - <_> - 7 - - 3 1 4 1 - <_> - 9 - - 3 8 2 1 - <_> - 1 - - 0 11 6 2 - <_> - 0 - - 0 12 2 3 - <_> - 5 - - 0 4 5 5 - <_> - 5 - - 5 5 2 1 - <_> - 1 - - 1 2 3 7 - <_> - 9 - - 0 0 1 3 - <_> - 0 - - 1 8 6 4 - <_> - 8 - - 0 6 1 6 - <_> - 1 - - 4 2 1 9 - <_> - 5 - - 3 13 4 2 - <_> - 1 - - 1 0 6 15 - <_> - 3 - - 2 4 2 8 - <_> - 8 - - 4 0 3 11 - <_> - 4 - - 0 7 1 4 - <_> - 2 - - 1 4 3 10 - <_> - 7 - - 0 8 2 2 - <_> - 9 - - 3 10 4 5 - <_> - 4 - - 1 4 3 2 - <_> - 9 - - 3 1 2 9 - <_> - 9 - - 0 3 2 2 - <_> - 2 - - 2 10 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 4 5 1 7 - <_> - 7 - - 3 11 3 1 - <_> - 5 - - 4 5 2 9 - <_> - 9 - - 3 6 3 7 - <_> - 8 - - 0 6 7 2 - <_> - 5 - - 3 14 4 1 - <_> - 3 - - 2 2 2 11 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 0 0 7 1 - <_> - 5 - - 2 11 3 3 - <_> - 4 - - 2 1 4 14 - <_> - 0 - - 0 14 4 1 - <_> - 9 - - 1 7 2 5 - <_> - 3 - - 0 3 4 3 - <_> - 9 - - 1 8 4 2 - <_> - 9 - - 6 0 1 12 - <_> - 1 - - 0 10 1 1 - <_> - 9 - - 3 6 1 9 - <_> - 9 - - 0 4 1 11 - <_> - 0 - - 3 11 4 2 - <_> - 7 - - 1 10 5 2 - <_> - 4 - - 1 7 6 3 - <_> - 1 - - 0 0 7 2 - <_> - 4 - - 3 2 1 4 - <_> - 5 - - 0 5 7 7 - <_> - 1 - - 3 12 3 2 - <_> - 5 - - 5 1 1 12 - <_> - 7 - - 1 9 5 1 - <_> - 4 - - 3 8 2 5 - <_> - 1 - - 0 13 6 2 - <_> - 9 - - 3 1 2 12 - <_> - 2 - - 2 5 4 2 - <_> - 0 - - 2 11 3 1 - <_> - 1 - - 0 9 7 3 - <_> - 2 - - 2 13 5 2 - <_> - 7 - - 0 8 5 7 - <_> - 3 - - 3 6 4 1 - <_> - 7 - - 3 4 2 4 - <_> - 4 - - 4 1 1 7 - <_> - 1 - - 3 3 2 3 - <_> - 4 - - 2 2 4 4 - <_> - 1 - - 1 2 6 4 - <_> - 5 - - 1 4 6 2 - <_> - 0 - - 2 3 2 3 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 2 2 4 2 - <_> - 5 - - 0 8 4 3 - <_> - 1 - - 4 13 1 1 - <_> - 3 - - 2 4 2 9 - <_> - 5 - - 2 3 4 4 - <_> - 4 - - 2 6 3 9 - <_> - 2 - - 3 4 2 9 - <_> - 2 - - 0 11 5 1 - <_> - 3 - - 0 14 7 1 - <_> - 4 - - 2 8 4 5 - <_> - 9 - - 2 12 2 2 - <_> - 3 - - 1 4 6 8 - <_> - 7 - - 0 8 3 1 - <_> - 7 - - 0 6 5 4 - <_> - 5 - - 4 0 3 12 - <_> - 7 - - 1 0 5 4 - <_> - 4 - - 4 1 3 9 - <_> - 1 - - 3 5 4 8 - <_> - 1 - - 0 7 7 7 - <_> - 5 - - 0 0 4 1 - <_> - 3 - - 2 9 4 1 - <_> - 8 - - 2 4 4 11 - <_> - 9 - - 4 8 1 3 - <_> - 2 - - 3 4 4 9 - <_> - 2 - - 2 10 3 1 - <_> - 4 - - 3 12 2 1 - <_> - 7 - - 3 11 2 1 - <_> - 7 - - 1 4 6 7 - <_> - 9 - - 3 1 2 2 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 3 11 3 2 - <_> - 4 - - 0 0 3 2 - <_> - 3 - - 0 0 1 14 - <_> - 8 - - 4 0 3 12 - <_> - 7 - - 6 8 1 4 - <_> - 7 - - 6 0 1 3 - <_> - 7 - - 1 6 6 4 - <_> - 8 - - 0 6 7 1 - <_> - 5 - - 4 2 1 11 - <_> - 4 - - 2 8 3 7 - <_> - 3 - - 4 6 1 3 - <_> - 0 - - 2 14 5 1 - <_> - 3 - - 1 11 5 3 - <_> - 4 - - 2 0 3 2 - <_> - 4 - - 2 1 5 14 - <_> - 3 - - 1 5 5 1 - <_> - 0 - - 2 0 4 1 - <_> - 7 - - 1 7 1 1 - <_> - 0 - - 1 2 3 3 - <_> - 4 - - 1 7 3 4 - <_> - 0 - - 3 9 1 4 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 2 1 5 6 - <_> - 9 - - 4 2 3 9 - <_> - 9 - - 0 1 1 13 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 2 14 4 1 - <_> - 1 - - 2 11 5 4 - <_> - 5 - - 4 0 3 7 - <_> - 1 - - 2 6 3 6 - <_> - 8 - - 5 3 2 4 - <_> - 0 - - 0 1 3 3 - <_> - 9 - - 4 4 1 9 - <_> - 9 - - 6 6 1 6 - <_> - 9 - - 0 14 6 1 - <_> - 0 - - 1 8 5 6 - <_> - 1 - - 0 2 6 11 - <_> - 5 - - 1 14 6 1 - <_> - 4 - - 4 1 1 9 - <_> - 8 - - 6 11 1 3 - <_> - 8 - - 2 1 5 8 - <_> - 3 - - 0 3 3 5 - <_> - 4 - - 0 7 2 2 - <_> - 8 - - 2 0 5 1 - <_> - 8 - - 1 6 5 1 - <_> - 5 - - 4 4 3 3 - <_> - 0 - - 3 1 3 1 - <_> - 9 - - 1 5 1 2 - <_> - 1 - - 2 12 5 2 - <_> - 3 - - 0 5 7 1 - <_> - 1 - - 0 11 6 2 - <_> - 2 - - 4 2 2 4 - <_> - 5 - - 5 11 1 3 - <_> - 5 - - 1 1 3 8 - <_> - 5 - - 0 3 5 3 - <_> - 5 - - 1 5 6 1 - <_> - 2 - - 2 14 4 1 - <_> - 9 - - 6 6 1 3 - <_> - 4 - - 0 12 7 3 - <_> - 2 - - 2 10 4 3 - <_> - 1 - - 3 7 4 1 - <_> - 9 - - 0 2 2 1 - <_> - 1 - - 3 0 2 12 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 3 4 3 4 - <_> - 1 - - 2 12 3 2 - <_> - 0 - - 0 4 5 7 - <_> - 3 - - 3 2 3 8 - <_> - 4 - - 2 10 3 4 - <_> - 3 - - 2 9 2 4 - <_> - 0 - - 2 10 4 3 - <_> - 4 - - 2 0 5 15 - <_> - 1 - - 0 12 4 1 - <_> - 4 - - 3 2 1 4 - <_> - 1 - - 0 0 7 1 - <_> - 1 - - 1 9 1 6 - <_> - 4 - - 3 5 2 10 - <_> - 0 - - 2 2 4 10 - <_> - 7 - - 1 5 6 4 - <_> - 7 - - 1 8 4 2 - <_> - 4 - - 2 7 5 4 - <_> - 4 - - 0 1 6 1 - <_> - 3 - - 3 3 1 2 - <_> - 5 - - 1 14 3 1 - <_> - 9 - - 0 5 6 3 - <_> - 8 - - 0 3 1 12 - <_> - 3 - - 0 0 4 11 - <_> - 9 - - 3 4 1 3 - <_> - 9 - - 6 0 1 1 - <_> - 7 - - 1 3 1 2 - <_> - 0 - - 3 8 4 4 - <_> - 5 - - 5 3 1 9 - <_> - 1 - - 3 11 2 3 - <_> - 9 - - 3 7 2 6 - <_> - 4 - - 2 8 4 5 - <_> - 1 - - 4 0 1 10 - <_> - 8 - - 6 5 1 3 - <_> - 0 - - 2 14 2 1 - <_> - 3 - - 2 2 1 5 - <_> - 0 - - 3 4 1 1 - <_> - 1 - - 2 4 3 7 - <_> - 7 - - 3 4 1 3 - <_> - 7 - - 2 0 5 15 - <_> - 7 - - 3 4 2 1 - <_> - 1 - - 2 5 4 8 - <_> - 9 - - 3 9 1 4 - <_> - 0 - - 1 3 4 1 - <_> - 3 - - 2 7 2 6 - <_> - 3 - - 0 12 3 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 0 2 7 5 - <_> - 4 - - 3 14 3 1 - <_> - 5 - - 3 4 1 3 - <_> - 2 - - 3 4 2 8 - <_> - 7 - - 0 11 4 1 - <_> - 0 - - 1 13 5 2 - <_> - 0 - - 3 10 2 3 - <_> - 1 - - 2 8 4 3 - <_> - 7 - - 1 8 1 6 - <_> - 1 - - 6 6 1 8 - <_> - 5 - - 0 2 6 3 - <_> - 8 - - 3 1 2 3 - <_> - 2 - - 4 5 3 8 - <_> - 7 - - 3 8 1 1 - <_> - 1 - - 1 11 1 4 - <_> - 1 - - 2 13 2 1 - <_> - 9 - - 3 1 2 3 - <_> - 2 - - 2 0 3 2 - <_> - 3 - - 2 1 2 6 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 0 3 5 3 - <_> - 5 - - 2 7 3 4 - <_> - 3 - - 3 12 1 1 - <_> - 9 - - 3 1 2 5 - <_> - 4 - - 0 8 7 1 - <_> - 1 - - 1 6 6 8 - <_> - 4 - - 3 11 2 4 - <_> - 9 - - 5 1 2 1 - <_> - 7 - - 2 1 1 1 - <_> - 7 - - 1 14 2 1 - <_> - 5 - - 1 5 6 7 - <_> - 4 - - 2 9 4 6 - <_> - 5 - - 0 6 7 9 - <_> - 8 - - 0 1 7 4 - <_> - 3 - - 3 3 1 4 - <_> - 4 - - 3 12 2 1 - <_> - 2 - - 0 13 5 2 - <_> - 2 - - 1 11 4 2 - <_> - 3 - - 0 3 6 7 - <_> - 9 - - 0 5 7 1 - <_> - 1 - - 3 9 1 3 - <_> - 4 - - 2 0 4 8 - <_> - 8 - - 3 2 3 2 - <_> - 4 - - 1 0 4 1 - <_> - 5 - - 5 3 1 10 - <_> - 0 - - 0 11 2 4 - <_> - 1 - - 4 10 1 4 - <_> - 2 - - 3 3 3 1 - <_> - 1 - - 3 13 1 2 - <_> - 2 - - 1 10 5 1 - <_> - 4 - - 0 8 5 7 - <_> - 4 - - 1 5 4 8 - <_> - 4 - - 1 1 5 14 - <_> - 1 - - 2 1 4 12 - <_> - 4 - - 4 2 3 3 - <_> - 1 - - 3 12 2 2 - <_> - 4 - - 4 8 2 6 - <_> - 5 - - 3 11 4 2 - <_> - 2 - - 0 6 1 6 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 2 9 2 3 - <_> - 7 - - 1 2 1 7 - <_> - 1 - - 6 13 1 2 - <_> - 1 - - 3 5 2 1 - <_> - 8 - - 0 0 6 1 - <_> - 5 - - 4 4 1 2 - <_> - 4 - - 3 1 1 8 - <_> - 1 - - 3 7 2 1 - <_> - 4 - - 3 3 2 8 - <_> - 1 - - 2 10 5 3 - <_> - 9 - - 4 2 3 2 - <_> - 9 - - 2 7 5 3 - <_> - 7 - - 1 11 3 1 - <_> - 2 - - 2 10 3 3 - <_> - 5 - - 4 4 3 9 - <_> - 7 - - 6 5 1 2 - <_> - 3 - - 2 13 3 1 - <_> - 8 - - 0 6 7 1 - <_> - 2 - - 3 13 4 2 - <_> - 9 - - 3 0 2 13 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 3 2 2 2 - <_> - 4 - - 1 2 2 2 - <_> - 4 - - 3 8 2 4 - <_> - 3 - - 6 5 1 5 - <_> - 8 - - 3 6 2 1 - <_> - 1 - - 0 5 6 2 - <_> - 0 - - 2 14 2 1 - <_> - 1 - - 0 5 3 3 - <_> - 3 - - 2 4 1 6 - <_> - 7 - - 6 3 1 2 - <_> - 5 - - 2 11 4 3 - <_> - 5 - - 0 14 7 1 - <_> - 3 - - 2 12 5 2 - <_> - 8 - - 0 4 1 9 - <_> - 9 - - 0 5 2 5 - <_> - 4 - - 1 11 6 1 - <_> - 4 - - 3 12 2 1 - <_> - 4 - - 6 6 1 5 - <_> - 1 - - 0 0 7 2 - <_> - 9 - - 1 0 1 3 - <_> - 1 - - 3 10 2 4 - <_> - 5 - - 4 4 3 1 - <_> - 4 - - 2 14 4 1 - <_> - 2 - - 3 2 2 9 - <_> - 5 - - 2 7 2 4 - <_> - 9 - - 1 7 6 2 - <_> - 2 - - 3 14 2 1 - <_> - 1 - - 3 11 1 1 - <_> - 0 - - 5 7 1 4 - <_> - 2 - - 4 1 2 12 - <_> - 4 - - 3 4 2 9 - <_> - 7 - - 1 8 1 2 - <_> - 4 - - 3 1 2 8 - <_> - 7 - - 3 14 3 1 - <_> - 8 - - 1 5 6 4 - <_> - 9 - - 3 5 2 2 - <_> - 9 - - 0 3 2 3 - <_> - 7 - - 0 12 1 2 - <_> - 1 - - 3 0 4 13 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 2 6 2 6 - <_> - 0 - - 2 3 4 10 - <_> - 3 - - 4 9 2 2 - <_> - 0 - - 3 5 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 6 8 1 3 - <_> - 3 - - 1 4 3 8 - <_> - 9 - - 0 5 2 4 - <_> - 1 - - 0 12 7 2 - <_> - 3 - - 0 0 3 4 - <_> - 1 - - 3 4 2 6 - <_> - 8 - - 3 10 2 4 - <_> - 1 - - 2 0 5 12 - <_> - 5 - - 4 4 3 2 - <_> - 1 - - 0 10 7 1 - <_> - 2 - - 1 1 6 5 - <_> - 0 - - 2 14 3 1 - <_> - 0 - - 2 5 1 7 - <_> - 1 - - 2 0 3 3 - <_> - 8 - - 2 0 4 1 - <_> - 0 - - 1 9 4 3 - <_> - 8 - - 1 0 6 5 - <_> - 3 - - 0 4 3 2 - <_> - 7 - - 3 8 3 2 - <_> - 1 - - 0 0 3 8 - <_> - 5 - - 3 3 2 2 - <_> - 9 - - 4 1 1 12 - <_> - 4 - - 2 8 5 6 - <_> - 5 - - 2 11 4 3 - <_> - 8 - - 0 7 1 6 - <_> - 1 - - 3 2 2 7 - <_> - 7 - - 3 7 2 4 - <_> - 7 - - 3 4 2 2 - <_> - 7 - - 1 1 1 1 - <_> - 4 - - 2 2 4 11 - <_> - 1 - - 1 0 6 14 - <_> - 7 - - 1 11 5 1 - <_> - 5 - - 4 0 3 6 - <_> - 9 - - 4 8 1 4 - <_> - 4 - - 2 1 5 7 - <_> - 4 - - 4 2 3 5 - <_> - 3 - - 1 14 6 1 - <_> - 3 - - 0 4 3 2 - <_> - 0 - - 2 6 5 7 - <_> - 1 - - 1 5 2 7 - <_> - 3 - - 3 1 1 3 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 0 12 2 1 - <_> - 8 - - 2 0 2 4 - <_> - 3 - - 2 9 3 4 - <_> - 9 - - 5 6 1 3 - <_> - 2 - - 0 13 7 2 - <_> - 7 - - 3 5 3 5 - <_> - 0 - - 2 1 3 4 - <_> - 1 - - 0 1 5 1 - <_> - 7 - - 0 13 7 2 - <_> - 4 - - 1 12 6 3 - <_> - 1 - - 1 11 6 2 - <_> - 1 - - 2 12 4 2 - <_> - 5 - - 5 5 2 1 - <_> - 9 - - 2 5 5 6 - <_> - 0 - - 2 10 5 3 - <_> - 9 - - 0 3 7 11 - <_> - 9 - - 6 0 1 13 - <_> - 2 - - 1 14 2 1 - <_> - 5 - - 3 3 2 4 - <_> - 0 - - 0 2 1 7 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 1 1 5 14 - <_> - 0 - - 2 3 5 6 - <_> - 7 - - 1 11 4 1 - <_> - 7 - - 3 3 2 9 - <_> - 5 - - 5 6 1 7 - <_> - 4 - - 2 8 3 6 - <_> - 9 - - 3 2 2 1 - <_> - 7 - - 1 1 2 8 - <_> - 1 - - 0 12 6 1 - <_> - 7 - - 2 5 4 9 - <_> - 8 - - 1 5 6 3 - <_> - 2 - - 5 14 2 1 - <_> - 2 - - 2 11 4 2 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 1 5 6 1 - <_> - 2 - - 1 1 3 2 - <_> - 4 - - 0 3 6 2 - <_> - 9 - - 0 5 5 3 - <_> - 4 - - 1 5 5 1 - <_> - 3 - - 2 5 5 1 - <_> - 3 - - 2 1 1 12 - <_> - 1 - - 2 2 1 7 - <_> - 7 - - 2 6 4 4 - <_> - 1 - - 3 1 1 10 - <_> - 7 - - 3 2 1 1 - <_> - 5 - - 4 9 2 4 - <_> - 7 - - 0 6 2 2 - <_> - 0 - - 3 13 4 2 - <_> - 3 - - 0 9 2 5 - <_> - 2 - - 1 6 3 7 - <_> - 8 - - 5 8 2 6 - <_> - 1 - - 2 4 4 9 - <_> - 5 - - 1 14 3 1 - <_> - 4 - - 3 2 1 4 - <_> - 4 - - 6 9 1 1 - <_> - 8 - - 4 1 2 3 - <_> - 2 - - 0 2 1 8 - <_> - 8 - - 3 1 4 3 - <_> - 1 - - 3 13 3 1 - <_> - 9 - - 5 10 2 2 - <_> - 9 - - 3 9 2 4 - <_> - 5 - - 4 4 3 3 - <_> - 7 - - 1 9 6 1 - <_> - 4 - - 1 8 5 3 - <_> - 3 - - 1 4 5 9 - <_> - 7 - - 0 6 7 3 - <_> - 2 - - 0 13 4 1 - <_> - 7 - - 0 6 1 8 - <_> - 9 - - 3 6 2 1 - <_> - 7 - - 3 4 1 5 - <_> - 1 - - 3 7 4 1 - <_> - 4 - - 3 3 4 5 - <_> - 4 - - 4 8 2 7 - <_> - 1 - - 0 0 7 2 - <_> - 7 - - 3 5 2 10 - <_> - 4 - - 3 5 2 10 - <_> - 1 - - 2 2 5 3 - <_> - 8 - - 3 0 2 4 - <_> - 2 - - 2 2 5 3 - <_> - 1 - - 0 5 5 2 - <_> - 5 - - 4 8 2 5 - <_> - 0 - - 3 3 1 11 - <_> - 0 - - 4 13 3 2 - <_> - 1 - - 1 10 5 5 - <_> - 4 - - 1 0 5 2 - <_> - 1 - - 1 12 6 2 - <_> - 3 - - 1 4 3 1 - <_> - 9 - - 1 0 6 3 - <_> - 9 - - 2 3 5 11 - <_> - 2 - - 3 0 2 3 - <_> - 0 - - 2 10 5 3 - <_> - 8 - - 3 6 2 7 - <_> - 5 - - 1 13 3 2 - <_> - 2 - - 1 12 4 1 - <_> - 5 - - 4 2 1 4 - <_> - 9 - - 3 7 2 1 - <_> - 7 - - 1 11 6 2 - <_> - 7 - - 4 14 1 1 - <_> - 7 - - 5 2 2 2 - <_> - 1 - - 3 7 2 6 - <_> - 2 - - 4 1 3 12 - <_> - 4 - - 3 4 2 9 - <_> - 7 - - 3 9 3 1 - <_> - 4 - - 1 3 4 7 - <_> - 8 - - 3 8 2 2 - <_> - 7 - - 3 3 2 2 - <_> - 3 - - 0 4 4 2 - <_> - 0 - - 2 1 2 5 - <_> - 5 - - 3 6 4 6 - <_> - 2 - - 0 13 7 2 - <_> - 9 - - 2 0 5 2 - <_> - 0 - - 1 12 3 1 - <_> - 1 - - 0 0 6 14 - <_> - 9 - - 3 10 2 1 - <_> - 1 - - 0 3 7 4 - <_> - 3 - - 2 1 2 13 - <_> - 4 - - 0 6 1 8 - <_> - 7 - - 3 6 2 1 - <_> - 1 - - 0 4 2 3 - <_> - 0 - - 1 13 6 1 - <_> - 3 - - 2 3 2 10 - <_> - 4 - - 4 0 1 11 - <_> - 1 - - 4 3 1 5 - <_> - 8 - - 3 1 2 4 - <_> - 1 - - 1 13 2 2 - <_> - 9 - - 1 1 6 1 - <_> - 9 - - 3 0 2 5 - <_> - 2 - - 2 0 4 12 - <_> - 3 - - 6 6 1 4 - <_> - 2 - - 1 2 4 1 - <_> - 4 - - 3 8 2 5 - <_> - 5 - - 4 1 2 12 - <_> - 1 - - 5 0 2 7 - <_> - 1 - - 5 1 2 8 - <_> - 3 - - 1 11 6 4 - <_> - 9 - - 1 5 6 2 - <_> - 9 - - 6 0 1 2 - <_> - 7 - - 2 11 1 1 - <_> - 3 - - 0 0 5 6 - <_> - 1 - - 6 10 1 4 - <_> - 7 - - 3 0 4 1 - <_> - 3 - - 2 0 4 2 - <_> - 4 - - 3 3 4 5 - <_> - 4 - - 1 13 4 2 - <_> - 5 - - 2 10 3 5 - <_> - 5 - - 2 11 4 2 - <_> - 4 - - 1 12 1 2 - <_> - 4 - - 1 7 6 7 - <_> - 0 - - 0 13 2 1 - <_> - 3 - - 1 4 2 3 - <_> - 4 - - 0 0 7 2 - <_> - 8 - - 5 4 2 6 - <_> - 5 - - 3 13 4 2 - <_> - 2 - - 2 6 5 9 - <_> - 9 - - 4 5 3 1 - <_> - 4 - - 0 8 7 1 - <_> - 3 - - 1 0 3 6 - <_> - 2 - - 5 0 1 15 - <_> - 0 - - 4 6 3 7 - <_> - 1 - - 1 12 1 3 - <_> - 1 - - 2 13 3 1 - <_> - 5 - - 3 2 2 4 - <_> - 0 - - 2 4 2 8 - <_> - 4 - - 3 5 2 10 - <_> - 7 - - 3 7 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 9 2 3 - <_> - 0 - - 1 3 5 10 - <_> - 2 - - 3 1 2 2 - <_> - 5 - - 3 14 3 1 - <_> - 9 - - 6 7 1 1 - <_> - 3 - - 0 14 5 1 - <_> - 1 - - 2 4 3 8 - <_> - 1 - - 3 0 1 14 - <_> - 4 - - 2 4 1 2 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 1 5 6 6 - <_> - 9 - - 4 4 1 7 - <_> - 0 - - 2 10 3 3 - <_> - 4 - - 0 14 6 1 - <_> - 1 - - 3 4 2 3 - <_> - 1 - - 1 12 6 2 - <_> - 5 - - 2 3 5 3 - <_> - 1 - - 3 9 2 5 - <_> - 2 - - 4 14 2 1 - <_> - 2 - - 2 11 4 2 - <_> - 3 - - 1 6 5 1 - <_> - 7 - - 0 6 5 5 - <_> - 5 - - 0 3 4 3 - <_> - 7 - - 1 2 1 1 - <_> - 9 - - 0 5 7 1 - <_> - 8 - - 2 0 4 3 - <_> - 0 - - 1 7 3 3 - <_> - 4 - - 3 9 2 4 - <_> - 2 - - 2 7 4 4 - <_> - 2 - - 3 10 4 2 - <_> - 9 - - 2 5 2 1 - <_> - 8 - - 1 4 6 2 - <_> - 5 - - 4 5 3 1 - <_> - 7 - - 3 5 1 2 - <_> - 7 - - 0 3 7 12 - <_> - 7 - - 3 9 2 4 - <_> - 1 - - 3 12 2 2 - <_> - 3 - - 0 1 7 1 - <_> - 3 - - 1 3 5 10 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 1 13 2 1 - <_> - 4 - - 4 0 2 2 - <_> - 1 - - 1 7 6 2 - <_> - 7 - - 1 1 1 8 - <_> - 4 - - 2 3 4 4 - <_> - 5 - - 5 4 1 10 - <_> - 9 - - 2 5 2 2 - <_> - 3 - - 3 4 1 1 - <_> - 9 - - 1 2 2 1 - <_> - 1 - - 4 10 1 4 - <_> - 9 - - 2 3 3 11 - <_> - 4 - - 3 11 2 1 - <_> - 8 - - 0 5 7 3 - <_> - 5 - - 3 4 3 8 - <_> - 2 - - 5 13 2 2 - <_> - 3 - - 2 3 3 2 - <_> - 9 - - 4 3 2 4 - <_> - 1 - - 6 13 1 2 - <_> - 1 - - 4 10 2 4 - <_> - 3 - - 6 6 1 4 - <_> - 1 - - 3 4 4 9 - <_> - 2 - - 3 3 2 9 - <_> - 1 - - 6 6 1 5 - <_> - 0 - - 3 14 1 1 - <_> - 0 - - 2 6 4 6 - <_> - 2 - - 0 13 7 1 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 0 1 7 14 - <_> - 1 - - 2 4 3 1 - <_> - 1 - - 3 5 2 5 - <_> - 9 - - 1 0 6 4 - <_> - 3 - - 2 2 1 8 - <_> - 7 - - 4 14 1 1 - <_> - 4 - - 0 12 6 3 - <_> - 1 - - 0 0 1 3 - <_> - 2 - - 2 3 5 6 - <_> - 4 - - 2 7 5 2 - <_> - 9 - - 0 5 7 1 - <_> - 5 - - 4 3 3 3 - <_> - 0 - - 2 14 5 1 - <_> - 1 - - 2 5 5 6 - <_> - 1 - - 0 2 7 4 - <_> - 4 - - 2 2 3 4 - <_> - 7 - - 3 9 1 4 - <_> - 1 - - 2 12 3 3 - <_> - 3 - - 0 3 5 3 - <_> - 4 - - 1 7 6 4 - <_> - 8 - - 2 1 3 3 - <_> - 4 - - 2 14 5 1 - <_> - 8 - - 0 3 7 1 - <_> - 3 - - 1 4 1 2 - <_> - 5 - - 0 10 3 4 - <_> - 9 - - 0 6 2 3 - <_> - 0 - - 2 5 2 8 - <_> - 2 - - 3 11 1 3 - <_> - 4 - - 0 11 1 3 - <_> - 9 - - 5 1 2 2 - <_> - 0 - - 2 3 2 1 - <_> - 4 - - 3 8 2 4 - <_> - 2 - - 0 14 6 1 - <_> - 5 - - 2 5 5 10 - <_> - 7 - - 5 11 1 3 - <_> - 1 - - 1 12 5 2 - <_> - 3 - - 0 1 4 6 - <_> - 4 - - 2 12 5 3 - <_> - 1 - - 0 0 4 2 - <_> - 1 - - 4 10 1 5 - <_> - 7 - - 3 8 2 2 - <_> - 2 - - 2 10 4 3 - <_> - 9 - - 0 0 6 11 - <_> - 9 - - 1 2 2 2 - <_> - 0 - - 0 13 2 1 - <_> - 5 - - 2 11 4 2 - <_> - 3 - - 0 4 6 6 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 4 1 2 - <_> - 0 - - 5 8 1 2 - <_> - 1 - - 3 6 3 7 - <_> - 0 - - 3 14 2 1 - <_> - 1 - - 0 5 7 4 - <_> - 7 - - 0 1 2 14 - <_> - 9 - - 3 4 2 1 - <_> - 7 - - 1 10 4 5 - <_> - 8 - - 4 0 3 1 - <_> - 8 - - 2 4 1 2 - <_> - 9 - - 4 9 3 1 - <_> - 1 - - 5 7 2 7 - <_> - 5 - - 0 2 1 8 - <_> - 2 - - 4 10 3 3 - <_> - 4 - - 2 9 3 5 - <_> - 4 - - 0 1 2 5 - <_> - 1 - - 5 1 2 7 - <_> - 4 - - 4 1 1 5 - <_> - 1 - - 3 7 2 1 - <_> - 5 - - 0 5 7 2 - <_> - 3 - - 4 14 3 1 - <_> - 9 - - 1 0 2 14 - <_> - 4 - - 0 0 1 11 - <_> - 7 - - 0 9 7 1 - <_> - 7 - - 1 3 5 12 - <_> - 3 - - 0 9 5 4 - <_> - 8 - - 0 6 6 1 - <_> - 2 - - 0 13 5 2 - <_> - 8 - - 2 2 5 8 - <_> - 1 - - 3 11 1 1 - <_> - 9 - - 1 5 6 7 - <_> - 2 - - 1 12 3 1 - <_> - 2 - - 5 2 1 8 - <_> - 5 - - 4 4 2 10 - <_> - 1 - - 4 3 3 6 - <_> - 4 - - 3 8 2 5 - <_> - 3 - - 2 9 2 3 - <_> - 7 - - 1 8 6 3 - <_> - 1 - - 0 5 7 2 - <_> - 8 - - 0 0 5 2 - <_> - 5 - - 4 2 2 3 - <_> - 4 - - 6 2 1 1 - <_> - 1 - - 3 0 1 9 - <_> - 0 - - 3 8 4 4 - <_> - 7 - - 6 11 1 1 - <_> - 2 - - 2 1 2 3 - <_> - 8 - - 0 5 7 3 - <_> - 9 - - 3 4 2 3 - <_> - 1 - - 0 13 7 1 - <_> - 3 - - 2 4 1 3 - <_> - 7 - - 1 2 1 4 - <_> - 2 - - 4 2 3 3 - <_> - 3 - - 2 1 2 5 - <_> - 7 - - 6 0 1 3 - <_> - 7 - - 3 6 3 4 - <_> - 8 - - 4 0 2 8 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 3 11 3 2 - <_> - 4 - - 3 2 2 2 - <_> - 1 - - 1 10 6 5 - <_> - 8 - - 0 1 5 4 - <_> - 7 - - 5 5 1 3 - <_> - 1 - - 4 10 3 4 - <_> - 0 - - 6 7 1 1 - <_> - 9 - - 0 4 7 5 - <_> - 0 - - 2 3 2 2 - <_> - 3 - - 0 3 5 3 - <_> - 0 - - 0 14 7 1 - <_> - 3 - - 0 13 5 1 - <_> - 4 - - 0 0 6 7 - <_> - 8 - - 4 1 2 12 - <_> - 9 - - 3 7 1 8 - <_> - 9 - - 6 6 1 8 - <_> - 2 - - 0 10 6 2 - <_> - 1 - - 3 7 2 6 - <_> - 5 - - 3 3 2 8 - <_> - 1 - - 3 10 1 1 - <_> - 2 - - 2 1 4 14 - <_> - 4 - - 2 8 4 5 - <_> - 3 - - 1 3 3 4 - <_> - 3 - - 2 5 2 9 - <_> - 1 - - 3 1 3 2 - <_> - 9 - - 2 8 4 4 - <_> - 8 - - 0 3 6 1 - <_> - 7 - - 4 14 1 1 - <_> - 0 - - 3 2 3 11 - <_> - 0 - 1024 - - <_> - -8.4679585695266724e-01 - - 1 2 0 7.7750000000000000e+02 0 -1 1 5.8850000000000000e+02 - -2 -3 2 2.5500000000000000e+01 - - -8.4679585695266724e-01 7.5506496429443359e-01 - -6.9044047594070435e-01 6.3049119710922241e-01 - <_> - -1.6734303236007690e+00 - - 1 2 3 1.9500000000000000e+01 0 -1 4 1.5500000000000000e+01 - -2 -3 5 1.4500000000000000e+01 - - -7.5389009714126587e-01 6.4812886714935303e-01 - -2.1629486978054047e-01 -8.2663446664810181e-01 - <_> - -1.8291370868682861e+00 - - 1 2 6 1.3500000000000000e+01 0 -1 7 2.0350000000000000e+02 - -2 -3 8 3.0050000000000000e+02 - - -1.5570680797100067e-01 -8.0992084741592407e-01 - 6.8644106388092041e-01 -5.6922149658203125e-01 - <_> - -1.7377158403396606e+00 - - 1 2 9 3.6500000000000000e+01 0 -1 10 2.4500000000000000e+01 - -2 -3 11 2.8150000000000000e+02 - - -8.2347095012664795e-01 3.0225446820259094e-01 - 6.9995605945587158e-01 -1.7914050817489624e-01 - <_> - -2.2347910404205322e+00 - - 1 2 12 2.0550000000000000e+02 0 -1 13 6.7500000000000000e+01 - -2 -3 14 8.6350000000000000e+02 - - -4.9707528948783875e-01 1.7866376042366028e-01 - 7.4965566396713257e-01 5.7663144543766975e-03 - <_> - -1.8678615093231201e+00 - - 1 2 15 1.5150000000000000e+02 0 -1 16 1.0500000000000000e+01 - -2 -3 17 4.3255000000000000e+03 - - -2.6820951700210571e-01 6.4194840192794800e-01 - -6.7160737514495850e-01 6.3368387520313263e-02 - <_> - -2.0991549491882324e+00 - - 1 2 18 1.5000000000000000e+00 0 -1 19 2.9500000000000000e+01 - -2 -3 20 5.0000000000000000e-01 - - -5.0631237030029297e-01 5.5947405099868774e-01 - 7.0312672853469849e-01 -4.0578368306159973e-01 - <_> - -2.0249555110931396e+00 - - 1 2 21 5.2500000000000000e+01 0 -1 22 7.5000000000000000e+00 - -2 -3 23 4.3500000000000000e+01 - - -7.6095990836620331e-02 -7.4784129858016968e-01 - 5.0073879957199097e-01 -3.8508036732673645e-01 - <_> - -2.0100402832031250e+00 - - 1 2 24 3.7650000000000000e+02 0 -1 25 4.1500000000000000e+01 - -2 -3 26 2.5250000000000000e+02 - - -5.6506282091140747e-01 2.3158341646194458e-01 - -8.8750278949737549e-01 8.2055127620697021e-01 - <_> - -1.6451328992843628e+00 - - 1 2 27 7.5000000000000000e+00 0 -1 28 1.8500000000000000e+01 - -2 -3 29 2.2500000000000000e+01 - - -6.0027003288269043e-01 3.8312932848930359e-01 - 2.1947205066680908e-01 -5.9093552827835083e-01 - <_> - -2.0925648212432861e+00 - - 1 2 30 1.1500000000000000e+01 0 -1 31 9.5000000000000000e+00 - -2 -3 32 2.6350000000000000e+02 - - -4.6565398573875427e-01 5.0306195020675659e-01 - 4.4449210166931152e-01 -6.1473309993743896e-01 - <_> - -1.5271776914596558e+00 - - 1 2 33 5.0000000000000000e-01 0 -1 34 1.2500000000000000e+01 - -2 -3 35 3.6500000000000000e+01 - - -7.7037209272384644e-01 5.6538718938827515e-01 - -5.0570178031921387e-01 1.6205248236656189e-01 - <_> - -1.1876722574234009e+00 - - 1 2 36 3.5000000000000000e+00 0 -1 37 1.5000000000000000e+00 - -2 -3 38 2.5150000000000000e+02 - - -7.4505090713500977e-01 3.8910430669784546e-01 - -5.9720128774642944e-01 7.2264879941940308e-02 - <_> - -1.1631057262420654e+00 - - 1 2 39 2.7950000000000000e+02 0 -1 40 1.7065000000000000e+03 - -2 -3 41 1.2495000000000000e+03 - - 2.4566594511270523e-02 7.9330480098724365e-01 - 5.6873923540115356e-01 -4.0141937136650085e-01 - <_> - -8.4218001365661621e-01 - - 1 2 42 4.2525000000000000e+03 0 -1 43 4.5000000000000000e+00 - -2 -3 44 1.5175000000000000e+03 - - 3.2092568278312683e-01 -4.5945590734481812e-01 - -8.0667120218276978e-01 4.0151047706604004e-01 - <_> - -1.3475534915924072e+00 - - 1 2 45 2.3500000000000000e+01 0 -1 46 8.8500000000000000e+01 - -2 -3 47 9.2150000000000000e+02 - - 3.0066493153572083e-01 -5.0537353754043579e-01 - 3.6820709705352783e-01 -9.1408914327621460e-01 - <_> - -9.5874893665313721e-01 - - 1 2 48 5.7550000000000000e+02 0 -1 49 6.7550000000000000e+02 - -2 -3 50 5.0000000000000000e-01 - - -8.4770929813385010e-01 3.3511099219322205e-01 - 3.8880458474159241e-01 -1.9090360403060913e-01 - <_> - -8.5856813192367554e-01 - - 1 2 51 6.1500000000000000e+01 0 -1 52 1.5000000000000000e+00 - -2 -3 53 1158. - - 5.0987577438354492e-01 -3.8584578037261963e-01 - -5.0875252485275269e-01 5.5896055698394775e-01 - <_> - -6.4911109209060669e-01 - - 1 2 54 2.2050000000000000e+02 0 -1 55 2.5750000000000000e+02 - -2 -3 56 2.1450000000000000e+02 - - -6.3486647605895996e-01 2.0945706963539124e-01 - -8.4773159027099609e-01 4.1636252403259277e-01 - <_> - -4.9586555361747742e-01 - - 1 2 57 3.5000000000000000e+00 0 -1 58 2.5000000000000000e+00 - -2 -3 59 3.2500000000000000e+01 - - -7.5921803712844849e-01 4.6488901972770691e-01 - -6.8810594081878662e-01 -2.7040589600801468e-02 - <_> - -4.7253912687301636e-01 - - 1 2 60 2.5000000000000000e+00 0 -1 61 4.5000000000000000e+00 - -2 -3 62 3.2500000000000000e+01 - - -7.9894185066223145e-01 6.2211072444915771e-01 - -5.4600864648818970e-01 2.3326411843299866e-02 - <_> - -5.5614802986383438e-02 - - 1 2 63 2.4500000000000000e+01 0 -1 64 2.2500000000000000e+01 - -2 -3 65 1.5000000000000000e+00 - - -1.4692783355712891e-01 4.1692432761192322e-01 - 3.2402262091636658e-01 -8.1831818819046021e-01 - <_> - 2.4737248197197914e-02 - - 1 2 66 3.4500000000000000e+01 0 -1 67 5.0000000000000000e-01 - -2 -3 68 8.1750000000000000e+02 - - 4.9493959546089172e-01 -4.3111301958560944e-02 - 4.1624513268470764e-01 -6.5285211801528931e-01 - <_> - -3.8909688591957092e-01 - - 1 2 69 4.6500000000000000e+01 0 -1 70 1.1950000000000000e+02 - -2 -3 71 5.0000000000000000e-01 - - 3.9863130450248718e-01 -6.7247897386550903e-01 - 5.4888677597045898e-01 -1.2822744250297546e-01 - <_> - -7.9226568341255188e-02 - - 1 2 72 1.1500000000000000e+01 0 -1 73 2.3550000000000000e+02 - -2 -3 74 1.2550000000000000e+02 - - 9.7892753779888153e-02 -7.6417064666748047e-01 - -5.4467469453811646e-01 3.0987030267715454e-01 - <_> - -1.9954596646130085e-03 - - 1 2 75 1.5000000000000000e+00 0 -1 76 1.5000000000000000e+00 - -2 -3 77 1.0500000000000000e+01 - - -4.4582867622375488e-01 4.6034806966781616e-01 - 9.2526301741600037e-02 -5.5669903755187988e-01 - <_> - -1.2115581892430782e-02 - - 1 2 78 1.4500000000000000e+01 0 -1 79 2.5000000000000000e+00 - -2 -3 80 1284. - - -1.0120121762156487e-02 -5.9989041090011597e-01 - -1.7805591225624084e-01 6.3028931617736816e-01 - <_> - 3.5972565412521362e-01 - - 1 2 81 1.9650000000000000e+02 0 -1 82 9.5000000000000000e+00 - -2 -3 83 1.0625000000000000e+03 - - -2.0688037574291229e-01 3.7184122204780579e-01 - 7.2959977388381958e-01 -6.4402073621749878e-01 - <_> - 3.0813610553741455e-01 - - 1 2 84 1.1050000000000000e+02 0 -1 85 4.5000000000000000e+00 - -2 -3 86 6.6500000000000000e+01 - - -8.8497090339660645e-01 3.9636072516441345e-01 - 6.6349333524703979e-01 -5.1589541137218475e-02 - <_> - 2.5005090236663818e-01 - - 1 2 87 2.0550000000000000e+02 0 -1 88 3.5000000000000000e+00 - -2 -3 89 8.5000000000000000e+00 - - 3.3133915066719055e-01 -3.9812210202217102e-01 - -6.8591558933258057e-01 4.8487389087677002e-01 - <_> - 5.8778470754623413e-01 - - 1 2 90 1.3950000000000000e+02 0 -1 91 1.9500000000000000e+01 - -2 -3 92 3.5000000000000000e+00 - - -6.3595020771026611e-01 5.8211249113082886e-01 - 4.3087210506200790e-02 -5.4251241683959961e-01 - <_> - 8.2915985584259033e-01 - - 1 2 93 4.5000000000000000e+00 0 -1 94 2929. -2 -3 95 - 3.9500000000000000e+01 - - 3.6084750294685364e-01 -5.3846013545989990e-01 - 3.9264413714408875e-01 -2.5116056203842163e-01 - <_> - 9.1550654172897339e-01 - - 1 2 96 1.2500000000000000e+01 0 -1 97 4.4500000000000000e+01 - -2 -3 98 7.5500000000000000e+01 - - -3.1323480606079102e-01 3.6048817634582520e-01 - 6.6347086429595947e-01 -6.9799762964248657e-01 - <_> - 1.0855576992034912e+00 - - 1 2 99 2.7500000000000000e+01 0 -1 100 - 8.5000000000000000e+00 -2 -3 101 5.5000000000000000e+00 - - -3.5093611478805542e-01 3.0252355337142944e-01 - 1.6355676949024200e-01 -8.4324830770492554e-01 - <_> - 1.0639545917510986e+00 - - 1 2 102 1.5000000000000000e+00 0 -1 103 - 3.7500000000000000e+01 -2 -3 104 5.1500000000000000e+01 - - -3.3908194303512573e-01 4.2347168922424316e-01 - -4.4102880358695984e-01 4.3833139538764954e-01 - <_> - 9.0562820434570312e-01 - - 1 2 105 4.5000000000000000e+00 0 -1 106 - 9.5000000000000000e+00 -2 -3 107 5.5000000000000000e+00 - - -5.8544105291366577e-01 3.8719829916954041e-01 - 1.4575521647930145e-01 -4.6634963154792786e-01 - <_> - 1.0761597156524658e+00 - - 1 2 108 1.4500000000000000e+01 0 -1 109 - 1.2545000000000000e+03 -2 -3 110 1.0850000000000000e+02 - - 2.5986677408218384e-01 -4.0740066766738892e-01 - 4.9753630161285400e-01 -6.2639516592025757e-01 - <_> - 1.5152643918991089e+00 - - 1 2 111 7.8250000000000000e+02 0 -1 112 - 1.2265000000000000e+03 -2 -3 113 2.1500000000000000e+01 - - -5.9889906644821167e-01 5.2061015367507935e-01 - 4.3910467624664307e-01 -2.6094654202461243e-01 - <_> - 1.4136078357696533e+00 - - 1 2 114 1.0500000000000000e+01 0 -1 115 1696. -2 -3 116 - 5.0000000000000000e-01 - - 1. -9.7255414724349976e-01 3.5954985022544861e-01 - -1.7254945635795593e-01 - <_> - 1.4225575923919678e+00 - - 1 2 117 3.8500000000000000e+01 0 -1 118 - 1.0250000000000000e+02 -2 -3 119 8.5000000000000000e+00 - - -2.4716213345527649e-01 3.7233117222785950e-01 - 4.1007906198501587e-01 -7.6787543296813965e-01 - <_> - 1.7332764863967896e+00 - - 1 2 120 6.5000000000000000e+00 0 -1 121 - 6.5000000000000000e+00 -2 -3 122 5.1500000000000000e+01 - - -8.0807107686996460e-01 3.1071880459785461e-01 - -7.6486444473266602e-01 -4.4724285602569580e-02 - <_> - 1.8922506570816040e+00 - - 1 2 123 5.0000000000000000e-01 0 -1 124 - 6.5000000000000000e+00 -2 -3 125 2.5175000000000000e+03 - - -4.5441693067550659e-01 5.4230731725692749e-01 - -3.1970790028572083e-01 7.5582736730575562e-01 - <_> - 1.6188565492630005e+00 - - 1 2 126 8.2450000000000000e+02 0 -1 127 - 1.5500000000000000e+01 -2 -3 128 1.2500000000000000e+01 - - -2.7339416742324829e-01 3.4306022524833679e-01 - 1.7286354303359985e-01 -6.8018329143524170e-01 - <_> - 1.6078552007675171e+00 - - 1 2 129 4.2050000000000000e+02 0 -1 130 263. -2 -3 131 - 8.4450000000000000e+02 - - 5.0138735771179199e-01 -4.4576519727706909e-01 - 2.3392482101917267e-01 -3.9459699392318726e-01 - <_> - 1.8623019456863403e+00 - - 1 2 132 2.0850000000000000e+02 0 -1 133 - 5.5000000000000000e+00 -2 -3 134 4.5000000000000000e+00 - - 4.0980271995067596e-02 -6.1965447664260864e-01 - -7.8912788629531860e-01 5.9828245639801025e-01 - <_> - 1.7021096944808960e+00 - - 1 2 135 4.2500000000000000e+01 0 -1 136 - 6.5000000000000000e+00 -2 -3 137 2.2500000000000000e+01 - - 4.1077250242233276e-01 -5.9424054622650146e-01 - 4.9294531345367432e-01 -1.6019217669963837e-01 - <_> - 1.9233746528625488e+00 - - 1 2 138 1.5000000000000000e+00 0 -1 139 - 1.6500000000000000e+01 -2 -3 140 8.7500000000000000e+01 - - -6.7251849174499512e-01 9.7932207584381104e-01 - 2.2126492857933044e-01 -6.2606680393218994e-01 - <_> - 2.1816830635070801e+00 - - 1 2 141 6.8500000000000000e+01 0 -1 142 - 9.6500000000000000e+01 -2 -3 143 4.3350000000000000e+02 - - -3.1670400500297546e-01 2.5830829143524170e-01 - -8.8838213682174683e-01 4.1476368904113770e-01 - <_> - 2.2655973434448242e+00 - - 1 2 144 1.6500000000000000e+01 0 -1 145 - 5.5000000000000000e+00 -2 -3 146 3.0500000000000000e+01 - - 5.9501928091049194e-01 -3.1914636492729187e-01 - -3.8668751716613770e-01 3.1921181082725525e-01 - <_> - 2.6427345275878906e+00 - - 1 2 147 6.5000000000000000e+00 0 -1 148 - 2.4500000000000000e+01 -2 -3 149 1.1500000000000000e+01 - - -4.5482164621353149e-01 4.6515238285064697e-01 - -5.1726001501083374e-01 2.0654375851154327e-01 - <_> - 1.9806412458419800e+00 - - 1 2 150 2.8850000000000000e+02 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 1.1515000000000000e+03 - - -6.6209328174591064e-01 1.8325349688529968e-01 - 4.9089592695236206e-01 -8.4841215610504150e-01 - <_> - 2.4156589508056641e+00 - - 1 2 153 5.0000000000000000e-01 0 -1 154 2811. -2 -3 155 - 5.0000000000000000e-01 - - 4.3501755595207214e-01 -6.5484809875488281e-01 - 4.1686266660690308e-01 -4.1646206378936768e-01 - <_> - 2.7843391895294189e+00 - - 1 2 156 1.1350000000000000e+02 0 -1 157 - 3.3450000000000000e+02 -2 -3 158 3.5000000000000000e+00 - - 3.6868026852607727e-01 -6.1238104104995728e-01 - 6.8396532535552979e-01 -1.2954165227711201e-02 - <_> - 2.8158543109893799e+00 - - 1 2 159 4.2550000000000000e+02 0 -1 160 - 5.6050000000000000e+02 -2 -3 161 3.8500000000000000e+01 - - -5.9484893083572388e-01 3.1515140086412430e-02 - -7.0635133981704712e-01 6.2144660949707031e-01 - <_> - 3.0259079933166504e+00 - - 1 2 162 7.5000000000000000e+00 0 -1 163 - 4.5000000000000000e+00 -2 -3 164 1.6375000000000000e+03 - - -7.1446412801742554e-01 3.4102836251258850e-01 - 3.5541319847106934e-01 -4.5499989390373230e-01 - <_> - 3.3236474990844727e+00 - - 1 2 165 1.5000000000000000e+00 0 -1 166 - 1.0500000000000000e+01 -2 -3 167 5.0000000000000000e-01 - - -7.0691192150115967e-01 5.4418134689331055e-01 - 3.7381768226623535e-01 -3.6192026734352112e-01 - <_> - 3.2000217437744141e+00 - - 1 2 168 1.0500000000000000e+01 0 -1 169 - 6.5000000000000000e+00 -2 -3 170 3.5000000000000000e+00 - - -1.1653541773557663e-01 -8.1098204851150513e-01 - 3.6642596125602722e-01 -2.8248944878578186e-01 - <_> - 3.2462809085845947e+00 - - 1 2 171 1.9850000000000000e+02 0 -1 172 - 2.9500000000000000e+01 -2 -3 173 8.1500000000000000e+01 - - -3.9297759532928467e-01 5.5565875768661499e-01 - 5.2605623006820679e-01 -3.3815068006515503e-01 - <_> - 3.4681446552276611e+00 - - 1 2 174 5.7550000000000000e+02 0 -1 175 338. -2 -3 176 - 1.1515000000000000e+03 - - -7.6464962959289551e-01 9.0472358465194702e-01 - 6.2902992963790894e-01 -3.9204329252243042e-02 - <_> - 3.6334233283996582e+00 - - 1 2 177 4167. 0 -1 178 6.5000000000000000e+00 -2 -3 179 - 3.5000000000000000e+00 - - -9.1638332605361938e-01 1.6527870297431946e-01 - 4.8254090547561646e-01 -8.9626789093017578e-01 - <_> - 3.9205143451690674e+00 - - 1 2 180 6.5000000000000000e+00 0 -1 181 - 1.2500000000000000e+01 -2 -3 182 8.5000000000000000e+00 - - 6.7690986394882202e-01 -2.3904214799404144e-01 - -4.0556749701499939e-01 2.2106994688510895e-01 - <_> - 3.8434190750122070e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.3500000000000000e+01 -2 -3 185 2.6500000000000000e+01 - - -3.2586407661437988e-01 4.4005537033081055e-01 - -6.4374852180480957e-01 1.0862501710653305e-01 - <_> - 3.7773578166961670e+00 - - 1 2 186 1.6500000000000000e+01 0 -1 187 - 9.5000000000000000e+00 -2 -3 188 8.5000000000000000e+00 - - -9.3096941709518433e-01 2.3926372826099396e-01 - 5.1413863897323608e-01 -5.5257624387741089e-01 - <_> - 4.1896114349365234e+00 - - 1 2 189 1.2500000000000000e+01 0 -1 190 - 7.5000000000000000e+00 -2 -3 191 36. - - -6.8173252046108246e-02 5.3156542778015137e-01 - -6.3870549201965332e-01 5.8901703357696533e-01 - <_> - 4.1023836135864258e+00 - - 1 2 192 6.7500000000000000e+01 0 -1 193 - 8.0500000000000000e+01 -2 -3 194 3.9500000000000000e+01 - - 1.7302609980106354e-01 -5.5641782283782959e-01 - -8.8721150159835815e-01 1. - <_> - 4.1807246208190918e+00 - - 1 2 195 1.5235000000000000e+03 0 -1 196 - 2.6952500000000000e+04 -2 -3 197 1.8235000000000000e+03 - - -3.0445727705955505e-01 7.7833265066146851e-01 - 8.7232065200805664e-01 -2.4321475625038147e-01 - <_> - 4.2723703384399414e+00 - - 1 2 198 6.5000000000000000e+00 0 -1 199 - 7.5000000000000000e+00 -2 -3 200 3.4175000000000000e+03 - - 1.3138349354267120e-01 -5.8236575126647949e-01 - 2.2224109619855881e-02 6.9834595918655396e-01 - <_> - 4.6446409225463867e+00 - - 1 2 201 2.1500000000000000e+01 0 -1 202 - 4.5000000000000000e+00 -2 -3 203 7.5000000000000000e+00 - - 1.9490295648574829e-01 -7.6766520738601685e-01 - 3.7227055430412292e-01 -2.2965273261070251e-01 - <_> - 4.2965531349182129e+00 - - 1 2 204 3.5000000000000000e+00 0 -1 205 - 1.1500000000000000e+01 -2 -3 206 1.5000000000000000e+00 - - -2.8419467806816101e-01 4.3421781063079834e-01 - -5.4377484321594238e-01 1.9981886446475983e-01 - <_> - 4.6640934944152832e+00 - - 1 2 207 705. 0 -1 208 1.7500000000000000e+01 -2 -3 209 - 5.0000000000000000e-01 - - 2.7177429199218750e-01 -8.8838618993759155e-01 - 3.6754038929939270e-01 -1.2962521612644196e-01 - <_> - 4.5903968811035156e+00 - - 1 2 210 3.4500000000000000e+01 0 -1 211 - 2.2850000000000000e+02 -2 -3 212 4.5000000000000000e+00 - - 7.0602458715438843e-01 -7.7238667011260986e-01 - 4.3168050050735474e-01 -1.4236643910408020e-01 - <_> - 4.4601187705993652e+00 - - 1 2 213 1.8500000000000000e+01 0 -1 214 - 5.0000000000000000e-01 -2 -3 215 1.6450000000000000e+02 - - 7.2294287383556366e-02 -4.4637727737426758e-01 - 5.0045186281204224e-01 -8.8895571231842041e-01 - <_> - 4.6810216903686523e+00 - - 1 2 216 1.5000000000000000e+00 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 2.2500000000000000e+01 - - 7.5774848461151123e-01 -8.5371148586273193e-01 - -3.8080200552940369e-01 2.2090284526348114e-01 - <_> - 4.5454678535461426e+00 - - 1 2 219 5.0000000000000000e-01 0 -1 220 - 2.4500000000000000e+01 -2 -3 221 1.3950000000000000e+02 - - -1.9623221457004547e-01 9.1209959983825684e-01 - 2.2579464316368103e-01 -3.2021987438201904e-01 - <_> - 4.7205095291137695e+00 - - 1 2 222 6.8250000000000000e+02 0 -1 223 - 5.8750000000000000e+02 -2 -3 224 4.9250000000000000e+02 - - -6.1928713321685791e-01 4.4073671102523804e-01 - 5.2129870653152466e-01 -9.0712592005729675e-02 - <_> - 5.0539321899414062e+00 - - 1 2 225 1.5500000000000000e+01 0 -1 226 - 6.3500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 3.9318233728408813e-01 -3.8358560204505920e-01 - 4.2106309533119202e-01 -5.5091488361358643e-01 - <_> - 5.2054772377014160e+00 - - 1 2 228 3.1500000000000000e+01 0 -1 229 - 2.3500000000000000e+01 -2 -3 230 3.3750000000000000e+02 - - -6.1581993103027344e-01 7.1099334955215454e-01 - 2.9412022233009338e-01 -7.1934843063354492e-01 - <_> - 5.1629271507263184e+00 - - 1 2 231 3.2950000000000000e+02 0 -1 232 - 5.0000000000000000e-01 -2 -3 233 1864. - - 2.0024216175079346e-01 -3.3125820755958557e-01 - 9.7632443904876709e-01 -8.2965487241744995e-01 - <_> - 5.4650130271911621e+00 - - 1 2 234 4.0550000000000000e+02 0 -1 235 - 2.7750000000000000e+02 -2 -3 236 5.7155000000000000e+03 - - 2.2284466028213501e-01 -4.8526307940483093e-01 - 8.1116855144500732e-01 -1.5218812972307205e-02 - <_> - 5.4984669685363770e+00 - - 1 2 237 4.5000000000000000e+00 0 -1 238 - 1.7500000000000000e+01 -2 -3 239 2.9500000000000000e+01 - - -6.3221347332000732e-01 3.8014096021652222e-01 - -6.2983202934265137e-01 1.1483613401651382e-01 - <_> - 5.4328503608703613e+00 - - 1 2 240 2.2500000000000000e+01 0 -1 241 - 3.2750000000000000e+02 -2 -3 242 5.5250000000000000e+02 - - 2.7665451169013977e-01 -4.1230320930480957e-01 - 5.8497339487075806e-01 -9.2561680078506470e-01 - <_> - 5.2271656990051270e+00 - - 1 2 243 2.5000000000000000e+00 0 -1 244 - 1.5000000000000000e+00 -2 -3 245 4.1500000000000000e+01 - - -6.2440222501754761e-01 3.4950828552246094e-01 - -4.4587394595146179e-01 3.7627801299095154e-01 - <_> - 5.7503991127014160e+00 - - 1 2 246 2.5500000000000000e+01 0 -1 247 - 1.7500000000000000e+01 -2 -3 248 1742. - - 1.7403741180896759e-01 -4.8115825653076172e-01 - -8.1405687332153320e-01 5.2323335409164429e-01 - <_> - 5.9725828170776367e+00 - - 1 2 249 2.5000000000000000e+00 0 -1 250 - 1.8750000000000000e+02 -2 -3 251 3.0750000000000000e+02 - - 5.0755202770233154e-01 -9.1562610864639282e-01 - 2.2218362987041473e-01 -5.9081828594207764e-01 - <_> - 5.9053583145141602e+00 - - 1 2 252 4.4500000000000000e+01 0 -1 253 - 7.5000000000000000e+00 -2 -3 254 2.3500000000000000e+01 - - 2.7661845088005066e-01 -7.2863763570785522e-01 - 2.9604527354240417e-01 -3.9353659749031067e-01 - <_> - 6.2247257232666016e+00 - - 1 2 255 2.7915000000000000e+03 0 -1 256 - 5.0000000000000000e-01 -2 -3 257 2.7750000000000000e+02 - - 5.7657641172409058e-01 -5.8752876520156860e-01 - 7.3920065164566040e-01 -5.6199613958597183e-02 - <_> - 6.3211832046508789e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5950000000000000e+02 -2 -3 260 9.5000000000000000e+00 - - 3.8729599118232727e-01 -8.2186138629913330e-01 - -7.5912064313888550e-01 -9.1310448944568634e-02 - <_> - 6.1939978599548340e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 1.1500000000000000e+01 -2 -3 263 2.5000000000000000e+00 - - -6.8085348606109619e-01 3.7691861391067505e-01 - 3.6999684572219849e-01 -4.1802382469177246e-01 - <_> - 6.5674057006835938e+00 - - 1 2 264 4.6500000000000000e+01 0 -1 265 - 1.6500000000000000e+01 -2 -3 266 2.5500000000000000e+01 - - -2.4361716583371162e-02 -7.4328392744064331e-01 - 3.7340793013572693e-01 -3.1576988101005554e-01 - <_> - 6.4908089637756348e+00 - - 1 2 267 6.5000000000000000e+00 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 5.0000000000000000e-01 - - -9.5202457904815674e-01 7.6004970073699951e-01 - 4.0044522285461426e-01 -1.8293106555938721e-01 - <_> - 6.7305116653442383e+00 - - 1 2 270 1.3450000000000000e+02 0 -1 271 69. -2 -3 272 - 2.5500000000000000e+01 - - -3.7816595286130905e-02 -9.0281504392623901e-01 - -5.4295367002487183e-01 2.3970291018486023e-01 - <_> - 6.8999171257019043e+00 - - 1 2 273 2.5000000000000000e+00 0 -1 274 - 2.5000000000000000e+00 -2 -3 275 1.5000000000000000e+00 - - -5.0667393207550049e-01 3.6585667729377747e-01 - 3.1221818923950195e-01 -4.8534518480300903e-01 - <_> - 7.0018959045410156e+00 - - 1 2 276 3.5000000000000000e+00 0 -1 277 - 3.5000000000000000e+00 -2 -3 278 266. - - -3.6587709188461304e-01 6.2320345640182495e-01 - -3.9827787876129150e-01 2.4151444435119629e-01 - <_> - 7.1498341560363770e+00 - - 1 2 279 6.5000000000000000e+00 0 -1 280 - 3.7500000000000000e+01 -2 -3 281 3.3550000000000000e+02 - - 5.1520365476608276e-01 -6.4510118961334229e-01 - -4.8505461215972900e-01 1.4793802797794342e-01 - <_> - 7.0538568496704102e+00 - - 1 2 282 1540. 0 -1 283 2.2500000000000000e+01 -2 -3 284 - 5.0500000000000000e+01 - - -2.7819830179214478e-01 3.7289941310882568e-01 - -5.9334021806716919e-01 5.5907440185546875e-01 - <_> - 7.3145952224731445e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 5.0500000000000000e+01 -2 -3 287 5.0000000000000000e-01 - - -6.9114875793457031e-01 4.3989965319633484e-01 - 2.9516109824180603e-01 -5.3384852409362793e-01 - <_> - 7.2128500938415527e+00 - - 1 2 288 7.5000000000000000e+00 0 -1 289 - 8.5000000000000000e+00 -2 -3 290 8.7500000000000000e+01 - - -5.5619347095489502e-01 5.4719102382659912e-01 - 3.2581725716590881e-01 -6.7037367820739746e-01 - <_> - 7.0432367324829102e+00 - - 1 2 291 2.5000000000000000e+00 0 -1 292 - 3.5000000000000000e+00 -2 -3 293 1.6805000000000000e+03 - - -1.8180048465728760e-01 4.9322417378425598e-01 - 1.2089827656745911e-01 -5.3679817914962769e-01 - <_> - 7.1085200309753418e+00 - - 1 2 294 8.0250000000000000e+02 0 -1 295 - 3.5000000000000000e+00 -2 -3 296 1.5465000000000000e+03 - - 4.4113153219223022e-01 -4.7889050841331482e-01 - 4.8183086514472961e-01 -2.7461019158363342e-01 - <_> - 7.4934172630310059e+00 - - 1 2 297 5.5000000000000000e+00 0 -1 298 - 9.5000000000000000e+00 -2 -3 299 5.0000000000000000e-01 - - -7.8466171026229858e-01 3.8489729166030884e-01 - 1.2428891658782959e-01 -5.3000146150588989e-01 - <_> - 7.7679367065429688e+00 - - 1 2 300 4.5000000000000000e+00 0 -1 301 - 3.8500000000000000e+01 -2 -3 302 1.0500000000000000e+01 - - -5.8519446849822998e-01 1.3908083736896515e-01 - 3.4237712621688843e-01 -5.5784845352172852e-01 - <_> - 8.2031955718994141e+00 - - 1 2 303 1.0500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 1.1500000000000000e+01 - - -3.8500145077705383e-01 4.3525907397270203e-01 - -7.3580604791641235e-01 -1.5477402135729790e-02 - <_> - 7.8415699005126953e+00 - - 1 2 306 1.1500000000000000e+01 0 -1 307 - 1.9950000000000000e+02 -2 -3 308 2.1050000000000000e+02 - - 3.0834931135177612e-01 -5.2214068174362183e-01 - -6.1229497194290161e-01 1.6261228919029236e-01 - <_> - 8.1340169906616211e+00 - - 1 2 309 4.4500000000000000e+01 0 -1 310 - 5.0000000000000000e-01 -2 -3 311 2.7750000000000000e+02 - - 3.8989096879959106e-01 -4.0270605683326721e-01 - -3.7438669800758362e-01 4.9117839336395264e-01 - <_> - 8.0494565963745117e+00 - - 1 2 312 2.9215000000000000e+03 0 -1 313 5981. -2 -3 314 - 1.4500000000000000e+01 - - -8.4560506045818329e-02 5.6669616699218750e-01 - -6.5312331914901733e-01 1.4199882745742798e-01 - <_> - 8.1713457107543945e+00 - - 1 2 315 8.1500000000000000e+01 0 -1 316 66. -2 -3 317 371. - - 4.5325097441673279e-01 -3.0569469928741455e-01 - 5.9206598997116089e-01 -6.7238986492156982e-01 - <_> - 8.2347335815429688e+00 - - 1 2 318 4.1450000000000000e+02 0 -1 319 - 5.0000000000000000e-01 -2 -3 320 410. - - 3.8724437355995178e-01 -3.1869423389434814e-01 - 8.7538170814514160e-01 -9.7314991056919098e-02 - <_> - 8.5628070831298828e+00 - - 1 2 321 1.0500000000000000e+01 0 -1 322 - 5.0000000000000000e-01 -2 -3 323 2.5000000000000000e+00 - - 7.2377610206604004e-01 -8.4155076742172241e-01 - 3.2807359099388123e-01 -2.0454038679599762e-01 - <_> - 8.5264968872070312e+00 - - 1 2 324 9.9150000000000000e+02 0 -1 325 - 7.0350000000000000e+02 -2 -3 326 6. - - 1.8747280538082123e-01 -3.3632183074951172e-01 - 8.6560744047164917e-01 -9.4016164541244507e-01 - <_> - 8.5532627105712891e+00 - - 1 2 327 1.1500000000000000e+01 0 -1 328 - 2.7450000000000000e+02 -2 -3 329 5.0000000000000000e-01 - - 8.5004931688308716e-01 -8.5131084918975830e-01 - 4.0861058235168457e-01 -1.2481645494699478e-01 - <_> - 8.7125473022460938e+00 - - 1 2 330 4.9350000000000000e+02 0 -1 331 - 1.0500000000000000e+01 -2 -3 332 488. - - 3.3095937967300415e-01 -9.6550559997558594e-01 - 1.5928384661674500e-01 -7.0109528303146362e-01 - <_> - 8.5748119354248047e+00 - - 1 2 333 5.8750000000000000e+02 0 -1 334 - 5.3965000000000000e+03 -2 -3 335 1.9550000000000000e+02 - - -5.2717298269271851e-01 7.5915068387985229e-01 - 6.2651741504669189e-01 -7.6558768749237061e-02 - <_> - 8.5311050415039062e+00 - - 1 2 336 3.5000000000000000e+00 0 -1 337 - 1.8500000000000000e+01 -2 -3 338 1.1500000000000000e+01 - - -5.9637790918350220e-01 6.7646257579326630e-02 - 6.4769101142883301e-01 -3.3726450055837631e-02 - <_> - 9.0640134811401367e+00 - - 1 2 339 1.5000000000000000e+00 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 3.4500000000000000e+01 - - -6.8097436428070068e-01 6.0266649723052979e-01 - -3.0453455448150635e-01 4.0144833922386169e-01 - <_> - 8.9831085205078125e+00 - - 1 2 342 2.5000000000000000e+00 0 -1 343 - 2.1750000000000000e+02 -2 -3 344 3.1850000000000000e+02 - - 9.3521779775619507e-01 -8.8511615991592407e-01 - -8.0904886126518250e-02 4.7593075037002563e-01 - <_> - 9.3769168853759766e+00 - - 1 2 345 1.8345000000000000e+03 0 -1 346 7548. -2 -3 347 - 2.5000000000000000e+00 - - -9.6914649009704590e-01 8.2535630464553833e-01 - 9.6199281513690948e-02 -4.2918723821640015e-01 - <_> - 9.3018980026245117e+00 - - 1 2 348 3.4500000000000000e+01 0 -1 349 - 5.0000000000000000e-01 -2 -3 350 4.5000000000000000e+00 - - 7.7495819330215454e-01 -7.7019518613815308e-01 - -6.7532777786254883e-01 2.1935020387172699e-01 - <_> - 9.5473661422729492e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 3.8150000000000000e+02 -2 -3 353 2.5000000000000000e+00 - - 2.4546769261360168e-01 -9.4206953048706055e-01 - 5.2967166900634766e-01 -5.7282263040542603e-01 - <_> - 9.3910045623779297e+00 - - 1 2 354 4.2500000000000000e+01 0 -1 355 - 2.5000000000000000e+00 -2 -3 356 2.5000000000000000e+00 - - 4.9605733156204224e-01 -8.9919465780258179e-01 - 4.6279174089431763e-01 -1.5636166930198669e-01 - <_> - 9.2007036209106445e+00 - - 1 2 357 3.0750000000000000e+02 0 -1 358 - 5.0000000000000000e-01 -2 -3 359 1.7500000000000000e+01 - - 9.5931455492973328e-02 -5.2677857875823975e-01 - -6.8146902322769165e-01 4.2670670151710510e-01 - <_> - 9.4172534942626953e+00 - - 1 2 360 436. 0 -1 361 1.0500000000000000e+01 -2 -3 362 - 1.4150000000000000e+02 - - -4.8916128277778625e-01 2.1654944121837616e-01 - -9.5991367101669312e-01 2.0731329917907715e-02 - <_> - 9.3878002166748047e+00 - - 1 2 363 2.1500000000000000e+01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 7.5000000000000000e+00 - - 6.1134243011474609e-01 -1.5622694790363312e-01 - -2.9453342780470848e-02 -6.6399675607681274e-01 - <_> - 9.3314304351806641e+00 - - 1 2 366 5.6500000000000000e+01 0 -1 367 - 2.3500000000000000e+01 -2 -3 368 4.5000000000000000e+00 - - -7.5016134977340698e-01 6.0379421710968018e-01 - 5.0015795230865479e-01 -5.6369733065366745e-02 - <_> - 9.8574962615966797e+00 - - 1 2 369 3.5000000000000000e+00 0 -1 370 2013. -2 -3 371 - 1.9500000000000000e+01 - - 8.2091175019741058e-02 -6.4141482114791870e-01 - -1.7478708922863007e-01 5.2606624364852905e-01 - <_> - 1.0064584732055664e+01 - - 1 2 372 2.0650000000000000e+02 0 -1 373 - 1.7500000000000000e+01 -2 -3 374 1.0450000000000000e+02 - - -1.0901508852839470e-02 -6.5456998348236084e-01 - 6.3896632194519043e-01 -1.6473773121833801e-01 - <_> - 1.0252257347106934e+01 - - 1 2 375 5.5000000000000000e+00 0 -1 376 - 3.4500000000000000e+01 -2 -3 377 5.5000000000000000e+00 - - 3.2374709844589233e-01 -5.0062644481658936e-01 - -7.0661611855030060e-02 -7.5508368015289307e-01 - <_> - 1.0398225784301758e+01 - - 1 2 378 2.5000000000000000e+00 0 -1 379 - 5.2500000000000000e+01 -2 -3 380 1.8785000000000000e+03 - - -9.0781456232070923e-01 1. -6.3530296087265015e-01 - 1.4596807956695557e-01 - <_> - 1.0281527519226074e+01 - - 1 2 381 4.8500000000000000e+01 0 -1 382 - 1.2500000000000000e+01 -2 -3 383 2.7950000000000000e+02 - - 1.5367124974727631e-01 -8.4021937847137451e-01 - 4.6640846133232117e-01 -1.1669804900884628e-01 - <_> - 1.0402153968811035e+01 - - 1 2 384 6.5750000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 1.2991500000000000e+04 - - 1.8093550205230713e-01 -3.1117281317710876e-01 - 8.3136463165283203e-01 -9.4209736585617065e-01 - <_> - 1.0749721527099609e+01 - - 1 2 387 1.5500000000000000e+01 0 -1 388 3147. -2 -3 389 - 5.0000000000000000e-01 - - 5.8778691291809082e-01 -8.4557241201400757e-01 - 3.5276123881340027e-01 -1.5734243392944336e-01 - <_> - 1.0613196372985840e+01 - - 1 2 390 2.9405000000000000e+03 0 -1 391 - 5.0000000000000000e-01 -2 -3 392 4.5500000000000000e+01 - - 3.9040172100067139e-01 -1.3652552664279938e-01 - -9.2412209510803223e-01 -8.2783259451389313e-02 - <_> - 1.0694108009338379e+01 - - 1 2 393 5.0500000000000000e+01 0 -1 394 - 5.0000000000000000e-01 -2 -3 395 4.5000000000000000e+00 - - 4.7963955998420715e-01 -7.4252939224243164e-01 - -6.8665945529937744e-01 1.9869653880596161e-01 - <_> - 1.0847300529479980e+01 - - 1 2 396 1.4500000000000000e+01 0 -1 397 - 5.5000000000000000e+00 -2 -3 398 1.5000000000000000e+00 - - -6.5649849176406860e-01 3.1507906317710876e-01 - 5.9824740886688232e-01 -4.3184515833854675e-01 - <_> - 1.0666165351867676e+01 - - 1 2 399 2.5000000000000000e+00 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 5.0000000000000000e-01 - - -3.0361318588256836e-01 4.3227225542068481e-01 - 3.5962799191474915e-01 -4.3973237276077271e-01 - <_> - 1.0870504379272461e+01 - - 1 2 402 2.6500000000000000e+01 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.4500000000000000e+01 - - 1.6933162510395050e-01 -5.0010979175567627e-01 - -3.3642402291297913e-01 4.9337503314018250e-01 - <_> - 1.0975853919982910e+01 - - 1 2 405 2.5000000000000000e+00 0 -1 406 - 1.4795000000000000e+03 -2 -3 407 1.5000000000000000e+00 - - 5.9212744235992432e-02 -6.0414147377014160e-01 - 5.3754031658172607e-01 -1.4943325519561768e-01 - <_> - 1.1088579177856445e+01 - - 1 2 408 1.9500000000000000e+01 0 -1 409 - 8.0500000000000000e+01 -2 -3 410 2.5000000000000000e+00 - - -5.4455469362437725e-03 7.1131867170333862e-01 - 1.2728694081306458e-01 -5.3219115734100342e-01 - <_> - 1.1411317825317383e+01 - - 1 2 411 6.5000000000000000e+00 0 -1 412 - 5.0000000000000000e-01 -2 -3 413 5.0000000000000000e-01 - - -9.8449540138244629e-01 7.5238209962844849e-01 - 3.2273903489112854e-01 -2.0153416693210602e-01 - <_> - 1.1409852027893066e+01 - - 1 2 414 3.2650000000000000e+02 0 -1 415 - 4.5000000000000000e+00 -2 -3 416 1.0500000000000000e+01 - - 1.5437091886997223e-01 -3.4433943033218384e-01 - 8.3089745044708252e-01 -8.7578713893890381e-01 - <_> - 1.1487524032592773e+01 - - 1 2 417 9.4500000000000000e+01 0 -1 418 - 5.3150000000000000e+02 -2 -3 419 1.5000000000000000e+00 - - 7.5558461248874664e-02 -7.0222413539886475e-01 - 4.5731905102729797e-01 -1.0453109443187714e-01 - <_> - 1.1415844917297363e+01 - - 1 2 420 2.0350000000000000e+02 0 -1 421 - 5.1500000000000000e+01 -2 -3 422 1.4350000000000000e+02 - - -8.8595420122146606e-02 -8.2399624586105347e-01 - 7.0543432235717773e-01 8.3339767297729850e-04 - <_> - 1.1137701034545898e+01 - - 1 2 423 1.1500000000000000e+01 0 -1 424 - 2.7850000000000000e+02 -2 -3 425 1231. - - 2.5673583149909973e-01 -2.7814364433288574e-01 - 7.7550095319747925e-01 -6.8776667118072510e-01 - <_> - 1.1352587699890137e+01 - - 1 2 426 1.5000000000000000e+00 0 -1 427 - 4.2500000000000000e+01 -2 -3 428 436. - - -8.6447370052337646e-01 3.8263612985610962e-01 - 2.1488623321056366e-01 -6.5995728969573975e-01 - <_> - 1.1502726554870605e+01 - - 1 2 429 4.5000000000000000e+00 0 -1 430 - 8.9500000000000000e+01 -2 -3 431 1.2500000000000000e+01 - - -5.1148355007171631e-01 4.3896585702896118e-01 - -4.8310482501983643e-01 1.8991161882877350e-01 - <_> - 1.1872124671936035e+01 - - 1 2 432 5.0000000000000000e-01 0 -1 433 - 4.5000000000000000e+00 -2 -3 434 1.1500000000000000e+01 - - -5.1016438007354736e-01 3.6939758062362671e-01 - 1.1107332259416580e-01 -6.3128584623336792e-01 - <_> - 1.1897380828857422e+01 - - 1 2 435 1.5000000000000000e+00 0 -1 436 - 8.5000000000000000e+00 -2 -3 437 1.4500000000000000e+01 - - -7.3261368274688721e-01 5.7636475563049316e-01 - -4.3446037173271179e-01 2.1413095295429230e-01 - <_> - 1.1853853225708008e+01 - - 1 2 438 3706. 0 -1 439 1.5000000000000000e+00 -2 -3 440 - 4410. - - 5.6994712352752686e-01 -4.3527409434318542e-02 - -7.2693550586700439e-01 4.1713526844978333e-01 - <_> - 1.1845816612243652e+01 - - 1 2 441 6.5000000000000000e+00 0 -1 442 - 1.5500000000000000e+01 -2 -3 443 5.3500000000000000e+01 - - -8.0371825024485588e-03 -5.7360154390335083e-01 - 5.8637946844100952e-01 -4.5183259248733521e-01 - <_> - 1.1606418609619141e+01 - - 1 2 444 5.7500000000000000e+01 0 -1 445 - 1.3650000000000000e+02 -2 -3 446 3.3595000000000000e+03 - - 4.9911895394325256e-01 -5.3746724128723145e-01 - -2.3939760029315948e-01 3.7778580188751221e-01 - <_> - 1.1980805397033691e+01 - - 1 2 447 4.5000000000000000e+00 0 -1 448 - 3.5000000000000000e+00 -2 -3 449 1.1500000000000000e+01 - - -7.3552447557449341e-01 3.7438639998435974e-01 - -4.0720772743225098e-01 4.5558989048004150e-01 - <_> - 1.2240980148315430e+01 - - 1 2 450 2.0950000000000000e+02 0 -1 451 - 3.5000000000000000e+00 -2 -3 452 2.0450000000000000e+02 - - 2.6017466187477112e-01 -4.3274480104446411e-01 - 6.6186487674713135e-01 -1.9433960318565369e-01 - <_> - 1.1877487182617188e+01 - - 1 2 453 8.7500000000000000e+01 0 -1 454 - 3.3500000000000000e+01 -2 -3 455 1.9500000000000000e+01 - - -3.6349293589591980e-01 2.8466138243675232e-01 - -8.9488905668258667e-01 2.0050047338008881e-01 - <_> - 1.2315251350402832e+01 - - 1 2 456 6.5000000000000000e+00 0 -1 457 - 2.8500000000000000e+01 -2 -3 458 1.1500000000000000e+01 - - -4.2718878388404846e-01 4.3776413798332214e-01 - -4.0096122026443481e-01 4.4375243782997131e-01 - <_> - 1.2738058090209961e+01 - - 1 2 459 2.5000000000000000e+00 0 -1 460 - 5.5000000000000000e+00 -2 -3 461 4.2050000000000000e+02 - - -1. 4.2698940634727478e-01 1.3992704451084137e-01 - -4.4792297482490540e-01 - <_> - 1.2678054809570312e+01 - - 1 2 462 4.6035000000000000e+03 0 -1 463 - 1.2500000000000000e+01 -2 -3 464 1.6885000000000000e+03 - - -6.3804382085800171e-01 2.8076967597007751e-01 - 7.0788478851318359e-01 -6.0002621263265610e-02 - <_> - 1.2586655616760254e+01 - - 1 2 465 2.1150000000000000e+02 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 3.1365000000000000e+03 - - 3.2408985495567322e-01 -3.3107626438140869e-01 - 8.7245899438858032e-01 -1.1116035282611847e-01 - <_> - 1.2680603027343750e+01 - - 1 2 468 2.2500000000000000e+01 0 -1 469 - 4.5500000000000000e+01 -2 -3 470 4.8500000000000000e+01 - - 9.3947365880012512e-02 -5.0669384002685547e-01 - 6.3860702514648438e-01 -5.6095314025878906e-01 - <_> - 1.2646597862243652e+01 - - 1 2 471 5.7750000000000000e+02 0 -1 472 2607. -2 -3 473 - 8.4850000000000000e+02 - - -8.0222898721694946e-01 4.9571409821510315e-01 - 6.9677603244781494e-01 -3.4005377441644669e-02 - <_> - 1.3080556869506836e+01 - - 1 2 474 3.5000000000000000e+00 0 -1 475 - 2.9025000000000000e+03 -2 -3 476 1.4500000000000000e+01 - - 6.3582272268831730e-03 -7.6159459352493286e-01 - 4.4750732183456421e-01 -1.8545417487621307e-01 - <_> - 1.3341848373413086e+01 - - 1 2 477 2.5000000000000000e+00 0 -1 478 - 1.3500000000000000e+01 -2 -3 479 5.0000000000000000e-01 - - -4.0977507829666138e-01 3.4295764565467834e-01 - 9.3431934714317322e-02 -7.1162647008895874e-01 - <_> - 1.2996747970581055e+01 - - 1 2 480 5.5000000000000000e+00 0 -1 481 - 6.5000000000000000e+00 -2 -3 482 3.1450000000000000e+02 - - -5.9179306030273438e-01 5.3183627128601074e-01 - 2.9362958669662476e-01 -5.2066570520401001e-01 - <_> - 1.3275168418884277e+01 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 5.8550000000000000e+02 -2 -3 485 1.2025000000000000e+03 - - -4.2056784033775330e-01 5.3556817770004272e-01 - 5.9011709690093994e-01 -3.4758779406547546e-01 - <_> - 1.3466418266296387e+01 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 5.0000000000000000e-01 -2 -3 488 14734. - - 4.4770663976669312e-01 -8.6989867687225342e-01 - 1.9124945998191833e-01 -7.6927727460861206e-01 - <_> - 1.3708694458007812e+01 - - 1 2 489 3.5150000000000000e+02 0 -1 490 - 2.4500000000000000e+01 -2 -3 491 1.2500000000000000e+01 - - 5.4361712932586670e-01 -9.3802767992019653e-01 - 2.4227620661258698e-01 -3.2380709052085876e-01 - <_> - 1.3621360778808594e+01 - - 1 2 492 1.5750000000000000e+02 0 -1 493 45. -2 -3 494 - 6.5000000000000000e+00 - - 4.8756289482116699e-01 -6.2756335735321045e-01 - 5.6488978862762451e-01 -8.7333582341670990e-02 - <_> - 1.3719803810119629e+01 - - 1 2 495 1.4500000000000000e+01 0 -1 496 - 3.2785000000000000e+03 -2 -3 497 1.2500000000000000e+01 - - -8.3579055964946747e-02 -9.0902733802795410e-01 - 4.0620484948158264e-01 -2.2033128142356873e-01 - <_> - 1.3743362426757812e+01 - - 1 2 498 1.7500000000000000e+01 0 -1 499 - 2.5500000000000000e+01 -2 -3 500 446. - - 5.8430969715118408e-02 -5.6837719678878784e-01 - -1.8840381503105164e-01 6.9564127922058105e-01 - <_> - 1.3924007415771484e+01 - - 1 2 501 8.0450000000000000e+02 0 -1 502 - 4.0500000000000000e+01 -2 -3 503 2.5000000000000000e+00 - - -4.7573506832122803e-01 2.6540222764015198e-01 - -3.4159180521965027e-01 5.4993849992752075e-01 - <_> - 1.4126693725585938e+01 - - 1 2 504 2.5000000000000000e+00 0 -1 505 3876. -2 -3 506 - 7.5000000000000000e+00 - - 4.1770899295806885e-01 -3.8963168859481812e-01 - 1.9346395134925842e-01 -5.6205403804779053e-01 - <_> - 1.4377063751220703e+01 - - 1 2 507 1.0630500000000000e+04 0 -1 508 - 1.7500000000000000e+01 -2 -3 509 5.0000000000000000e-01 - - 4.2469942569732666e-01 -6.3991433382034302e-01 - 7.5341060757637024e-02 -5.3553485870361328e-01 - <_> - 1.4237608909606934e+01 - - 1 2 510 5.7500000000000000e+01 0 -1 511 - 6.5000000000000000e+00 -2 -3 512 2.8500000000000000e+01 - - 5.4694686084985733e-02 -5.2880686521530151e-01 - -3.4901857376098633e-01 4.7299972176551819e-01 - <_> - 1.4564194679260254e+01 - - 1 2 513 7.5000000000000000e+00 0 -1 514 - 8.5000000000000000e+00 -2 -3 515 4.5000000000000000e+00 - - -5.7572060823440552e-01 4.0378063917160034e-01 - 1.7233282327651978e-01 -5.5302166938781738e-01 - <_> - 1.4479125976562500e+01 - - 1 2 516 4.1500000000000000e+01 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 3.5000000000000000e+00 - - 6.9208496809005737e-01 -9.3342530727386475e-01 - 4.8711183667182922e-01 -8.5068866610527039e-02 - <_> - 1.4771840095520020e+01 - - 1 2 519 3.2350000000000000e+02 0 -1 520 - 6.8500000000000000e+01 -2 -3 521 2.9050000000000000e+02 - - -5.6921553611755371e-01 7.5075703859329224e-01 - 3.0680647492408752e-01 -5.3018033504486084e-01 - <_> - 1.4921194076538086e+01 - - 1 2 522 9.5000000000000000e+00 0 -1 523 178. -2 -3 524 - 1.5000000000000000e+00 - - 2.7555197477340698e-01 -8.4987080097198486e-01 - 7.1478825807571411e-01 -4.7535741329193115e-01 - <_> - 1.5011672019958496e+01 - - 1 2 525 3.5500000000000000e+01 0 -1 526 - 4.9450000000000000e+02 -2 -3 527 151. - - -4.1447910666465759e-01 9.0478152036666870e-02 - 7.2348231077194214e-01 -8.4134203195571899e-01 - <_> - 1.5009381294250488e+01 - - 1 2 528 1.0075000000000000e+03 0 -1 529 - 4.6135000000000000e+03 -2 -3 530 5.0000000000000000e-01 - - -1.3591668009757996e-01 5.0908648967742920e-01 - 4.3699756264686584e-02 -6.3745105266571045e-01 - <_> - 1.4872577667236328e+01 - - 1 2 531 4.9500000000000000e+01 0 -1 532 - 7.5000000000000000e+00 -2 -3 533 2.6500000000000000e+01 - - 5.5888742208480835e-02 -5.8190774917602539e-01 - -7.9333829879760742e-01 5.4325503110885620e-01 - <_> - 1.5080644607543945e+01 - - 1 2 534 4.7500000000000000e+01 0 -1 535 - 1.4500000000000000e+01 -2 -3 536 2.7500000000000000e+01 - - -8.9569383859634399e-01 2.0806635916233063e-01 - -7.5062823295593262e-01 2.4852557480335236e-01 - <_> - 1.5080853462219238e+01 - - 1 2 537 6.5000000000000000e+00 0 -1 538 - 8.5000000000000000e+00 -2 -3 539 3.8050000000000000e+02 - - -6.1480957269668579e-01 3.2939058542251587e-01 - 4.0805706381797791e-01 -4.6099272370338440e-01 - <_> - 1.4875501632690430e+01 - - 1 2 540 1.0500000000000000e+01 0 -1 541 - 1.5000000000000000e+00 -2 -3 542 478. - - -9.0150666236877441e-01 3.4228125214576721e-01 - -5.9740513563156128e-01 8.7162934243679047e-02 - <_> - 1.5382561683654785e+01 - - 1 2 543 5.5000000000000000e+00 0 -1 544 - 5.0000000000000000e-01 -2 -3 545 2.5500000000000000e+01 - - -3.2944935560226440e-01 5.0705975294113159e-01 - -3.9558005332946777e-01 3.1945833563804626e-01 - <_> - 1.5631669998168945e+01 - - 1 2 546 1.5000000000000000e+00 0 -1 547 - 1.1500000000000000e+01 -2 -3 548 3.5000000000000000e+00 - - -5.0148051977157593e-01 3.6997869610786438e-01 - 7.7569979429244995e-01 -3.7318921089172363e-01 - <_> - 1.5227413177490234e+01 - - 1 2 549 5.5000000000000000e+00 0 -1 550 - 2.5000000000000000e+00 -2 -3 551 8.2500000000000000e+01 - - 9.7206316888332367e-02 -5.2512657642364502e-01 - 5.3593277931213379e-01 -5.2903693914413452e-01 - <_> - 1.5712855339050293e+01 - - 1 2 552 1.5000000000000000e+00 0 -1 553 - 1.1500000000000000e+01 -2 -3 554 1.5000000000000000e+00 - - -5.5320370197296143e-01 5.5974000692367554e-01 - -4.7809949517250061e-01 1.2362124770879745e-01 - <_> - 1.5475475311279297e+01 - - 1 2 555 1.1150000000000000e+02 0 -1 556 107. -2 -3 557 - 5.4500000000000000e+01 - - 2.2000953555107117e-01 -5.7901185750961304e-01 - 5.5795150995254517e-01 -2.0629312098026276e-01 - <_> - 1.5877110481262207e+01 - - 1 2 558 5.0000000000000000e-01 0 -1 559 - 4.7500000000000000e+01 -2 -3 560 4.0850000000000000e+02 - - 4.0163558721542358e-01 -6.5443444252014160e-01 - 3.9427250623703003e-01 -4.3203008174896240e-01 - <_> - 1.5799601554870605e+01 - - 1 2 561 2.0250000000000000e+02 0 -1 562 - 5.0000000000000000e-01 -2 -3 563 2399. - - 1.2356969714164734e-01 -5.3489917516708374e-01 - 4.6495470404624939e-01 -5.8487701416015625e-01 - <_> - 1.6042089462280273e+01 - - 1 2 564 7.0450000000000000e+02 0 -1 565 - 4.4500000000000000e+01 -2 -3 566 288. - - 4.8793616890907288e-01 -8.4778493642807007e-01 - -4.3374565243721008e-01 2.4248743057250977e-01 - <_> - 1.6111749649047852e+01 - - 1 2 567 1.8500000000000000e+01 0 -1 568 - 1.2500000000000000e+01 -2 -3 569 5.0000000000000000e-01 - - -4.8669865727424622e-01 2.7788683772087097e-01 - 3.6192622780799866e-01 -5.7420414686203003e-01 - <_> - 1.6021078109741211e+01 - - 1 2 570 8.3450000000000000e+02 0 -1 571 4451. -2 -3 572 - 3.2950000000000000e+02 - - 5.3921067714691162e-01 -4.8135292530059814e-01 - -2.9889726638793945e-01 6.0160857439041138e-01 - <_> - 1.6436674118041992e+01 - - 1 2 573 1.2500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 2.9500000000000000e+01 - - 4.3214797973632812e-01 -2.8101849555969238e-01 - 6.6012543439865112e-01 -7.0270007848739624e-01 - <_> - 1.6612668991088867e+01 - - 1 2 576 4.4500000000000000e+01 0 -1 577 3724. -2 -3 578 - 7.5000000000000000e+00 - - 6.2758970260620117e-01 -5.7332456111907959e-01 - -7.3119300603866577e-01 2.5508829951286316e-01 - <_> - 1.6793443679809570e+01 - - 1 2 579 1.5000000000000000e+00 0 -1 580 - 2.5500000000000000e+01 -2 -3 581 2.3500000000000000e+01 - - -6.3251662254333496e-01 4.4916898012161255e-01 - 4.5003961771726608e-02 -5.9809100627899170e-01 - <_> - 1.6161096572875977e+01 - - 1 2 582 1.5000000000000000e+00 0 -1 583 - 1.5000000000000000e+00 -2 -3 584 2.0500000000000000e+01 - - -7.4945521354675293e-01 6.5612715482711792e-01 - -6.3234704732894897e-01 7.2132863104343414e-02 - <_> - 1.6042703628540039e+01 - - 1 2 585 2.7500000000000000e+01 0 -1 586 - 1.3500000000000000e+01 -2 -3 587 2.5000000000000000e+00 - - -1.1839324980974197e-01 3.9118841290473938e-01 - 2.9518869519233704e-01 -8.5212147235870361e-01 - <_> - 1.6447755813598633e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 5.0000000000000000e-01 - - -8.3366543054580688e-01 4.0505367517471313e-01 - 4.8622503876686096e-02 -5.6565636396408081e-01 - <_> - 1.7133924484252930e+01 - - 1 2 591 2.0350000000000000e+02 0 -1 592 334. -2 -3 593 - 3.0050000000000000e+02 - - -3.5271939635276794e-01 8.6447751522064209e-01 - 7.1061849594116211e-01 -1.1952371150255203e-01 - <_> - 1.6702384948730469e+01 - - 1 2 594 4.5000000000000000e+00 0 -1 595 - 2.8500000000000000e+01 -2 -3 596 1.2500000000000000e+01 - - -3.9405979216098785e-02 6.6947597265243530e-01 - -4.9912232160568237e-01 1.0251764953136444e-01 - <_> - 1.7397886276245117e+01 - - 1 2 597 2.2450000000000000e+02 0 -1 598 42. -2 -3 599 - 4.2500000000000000e+01 - - 7.0597994327545166e-01 -9.4353288412094116e-01 - -6.9157105684280396e-01 2.2714031860232353e-02 - <_> - 1.7262920379638672e+01 - - 1 2 600 3.1500000000000000e+01 0 -1 601 - 1.0450000000000000e+02 -2 -3 602 5.0000000000000000e-01 - - -1.3496619462966919e-01 4.4948977231979370e-01 - 1.4885289967060089e-01 -8.6381590366363525e-01 - <_> - 1.7465213775634766e+01 - - 1 2 603 1.4500000000000000e+01 0 -1 604 - 2.5000000000000000e+00 -2 -3 605 2.5000000000000000e+00 - - -7.1829992532730103e-01 3.5132697224617004e-01 - 4.2205992341041565e-01 -4.3211916089057922e-01 - <_> - 1.7307765960693359e+01 - - 1 2 606 5.5000000000000000e+00 0 -1 607 - 1.6500000000000000e+01 -2 -3 608 1.5000000000000000e+00 - - -4.3471553921699524e-01 5.3184741735458374e-01 - 1.5001934766769409e-01 -5.0502711534500122e-01 - <_> - 1.7614244461059570e+01 - - 1 2 609 2.1950000000000000e+02 0 -1 610 - 3.5000000000000000e+00 -2 -3 611 3.5000000000000000e+00 - - 9.3997812271118164e-01 -9.3997251987457275e-01 - 3.0647855997085571e-01 -2.0921668410301208e-01 - <_> - 1.7706068038940430e+01 - - 1 2 612 5.7500000000000000e+01 0 -1 613 - 5.5450000000000000e+02 -2 -3 614 6271. - - 2.8178128600120544e-01 -6.5705215930938721e-01 - 2.1660777926445007e-01 -8.9905387163162231e-01 - <_> - 1.7754480361938477e+01 - - 1 2 615 5.0000000000000000e-01 0 -1 616 - 1.6500000000000000e+01 -2 -3 617 5.0000000000000000e-01 - - -6.6525924205780029e-01 5.8488470315933228e-01 - 2.6185688376426697e-01 -3.7666809558868408e-01 - <_> - 1.7758506774902344e+01 - - 1 2 618 5.8750000000000000e+02 0 -1 619 - 5.0000000000000000e-01 -2 -3 620 7.9050000000000000e+02 - - 6.1497175693511963e-01 -5.2589684724807739e-01 - 5.6739014387130737e-01 -1.2997034192085266e-01 - <_> - 1.8137268066406250e+01 - - 1 2 621 1.2500000000000000e+01 0 -1 622 - 2.7500000000000000e+01 -2 -3 623 9.5000000000000000e+00 - - 2.7133096009492874e-02 -7.4169838428497314e-01 - -5.5511766672134399e-01 3.7876096367835999e-01 - <_> - 1.8127597808837891e+01 - - 1 2 624 1.3500000000000000e+01 0 -1 625 - 1.6500000000000000e+01 -2 -3 626 7.0050000000000000e+02 - - -9.9238857626914978e-02 5.2959042787551880e-01 - 1.2502020597457886e-01 -6.9074809551239014e-01 - <_> - 1.8081335067749023e+01 - - 1 2 627 1.2500000000000000e+01 0 -1 628 2. -2 -3 629 - 5.0000000000000000e-01 - - -9.4234240055084229e-01 1. 3.8502028584480286e-01 - -1.8359494209289551e-01 - <_> - 1.8053295135498047e+01 - - 1 2 630 2.7500000000000000e+01 0 -1 631 - 5.9500000000000000e+01 -2 -3 632 4.1500000000000000e+01 - - -4.9844527244567871e-01 2.2154885530471802e-01 - 1.6719245910644531e-01 -8.5411649942398071e-01 - <_> - 1.8328479766845703e+01 - - 1 2 633 1.2564500000000000e+04 0 -1 634 - 4.5000000000000000e+00 -2 -3 635 1.4450000000000000e+02 - - -5.1779359579086304e-01 3.0374595522880554e-01 - -7.3483371734619141e-01 7.6394975185394287e-02 - <_> - 1.8571502685546875e+01 - - 1 2 636 2.5000000000000000e+00 0 -1 637 - 2.6750000000000000e+02 -2 -3 638 6.4350000000000000e+02 - - -8.5374289751052856e-01 4.6067333221435547e-01 - -4.1071122884750366e-01 3.6673283576965332e-01 - <_> - 1.8682445526123047e+01 - - 1 2 639 2.0650000000000000e+02 0 -1 640 - 4.2500000000000000e+01 -2 -3 641 1.1500000000000000e+01 - - -5.0848436355590820e-01 2.4837252497673035e-01 - -6.5386766195297241e-01 4.2162042856216431e-01 - <_> - 1.8954551696777344e+01 - - 1 2 642 6.5000000000000000e+00 0 -1 643 - 3.0500000000000000e+01 -2 -3 644 2.2500000000000000e+01 - - -5.9916085004806519e-01 2.7210691571235657e-01 - -1.1765263974666595e-01 -8.1677961349487305e-01 - <_> - 1.8866088867187500e+01 - - 1 2 645 1.5000000000000000e+00 0 -1 646 - 6.5000000000000000e+00 -2 -3 647 1.1150000000000000e+02 - - 5.0670212507247925e-01 -2.6341021060943604e-01 - -4.3560948967933655e-01 3.6474627256393433e-01 - <_> - 1.8741416931152344e+01 - - 1 2 648 4.1500000000000000e+01 0 -1 649 - 6.5000000000000000e+00 -2 -3 650 1.5000000000000000e+00 - - 5.2751459181308746e-02 -6.6522449254989624e-01 - 3.3934053778648376e-01 -4.9355345964431763e-01 - <_> - 1.8643299102783203e+01 - - 1 2 651 5.9775000000000000e+03 0 -1 652 - 1.8165000000000000e+03 -2 -3 653 1.4355000000000000e+03 - - 5.5302268266677856e-01 -4.7563236951828003e-01 - 6.5803569555282593e-01 -9.8118394613265991e-02 - <_> - 1.8880964279174805e+01 - - 1 2 654 1.2650000000000000e+02 0 -1 655 - 2.5000000000000000e+00 -2 -3 656 1.3500000000000000e+01 - - -7.5744998455047607e-01 2.8973925113677979e-01 - -5.4551291465759277e-01 8.2080578804016113e-01 - <_> - 1.8557128906250000e+01 - - 1 2 657 4.6500000000000000e+01 0 -1 658 1647. -2 -3 659 - 1.0500000000000000e+01 - - 1.0912799835205078e-01 -8.0168753862380981e-01 - 3.0439880490303040e-01 -3.2383540272712708e-01 - <_> - 1.9214336395263672e+01 - - 1 2 660 1.6085000000000000e+03 0 -1 661 - 2.0950000000000000e+02 -2 -3 662 2.9750000000000000e+02 - - -3.6497074365615845e-01 7.4361735582351685e-01 - 7.8719192743301392e-01 -1.0578166693449020e-02 - <_> - 1.9558198928833008e+01 - - 1 2 663 5.5000000000000000e+00 0 -1 664 141. -2 -3 665 - 1.2500000000000000e+01 - - 4.0406695008277893e-01 -7.0202612876892090e-01 - -4.2011860013008118e-01 6.0265243053436279e-01 - <_> - 1.9143066406250000e+01 - - 1 2 666 1.1500000000000000e+01 0 -1 667 - 8.5000000000000000e+00 -2 -3 668 2.1150000000000000e+02 - - -4.1513276100158691e-01 4.5337858796119690e-01 - 3.6399593949317932e-01 -7.8625452518463135e-01 - <_> - 1.9362360000610352e+01 - - 1 2 669 3.1500000000000000e+01 0 -1 670 - 3.5000000000000000e+00 -2 -3 671 1.5500000000000000e+01 - - -5.3197765350341797e-01 2.7408641576766968e-01 - -6.3501793146133423e-01 4.3600288033485413e-01 - <_> - 1.9299673080444336e+01 - - 1 2 672 3.5000000000000000e+00 0 -1 673 - 1.3500000000000000e+01 -2 -3 674 6918. - - -4.8876148462295532e-01 4.8771849274635315e-01 - -3.5163021087646484e-01 5.7008403539657593e-01 - <_> - 1.9273160934448242e+01 - - 1 2 675 4.2150000000000000e+02 0 -1 676 - 2.2035000000000000e+03 -2 -3 677 4125. - - -1. 4.3742546439170837e-01 -6.3171046972274780e-01 - -1.2324055656790733e-02 - <_> - 1.9674695968627930e+01 - - 1 2 678 5.0000000000000000e-01 0 -1 679 - 1.0500000000000000e+01 -2 -3 680 6.7150000000000000e+02 - - -2.4401791393756866e-01 5.4219561815261841e-01 - 4.5299509167671204e-01 -4.0972766280174255e-01 - <_> - 1.9536827087402344e+01 - - 1 2 681 80. 0 -1 682 9.5000000000000000e+00 -2 -3 683 - 1.1950000000000000e+02 - - 9.7771358489990234e-01 -1. -2.7852934598922729e-01 - 3.1141099333763123e-01 - <_> - 1.9679944992065430e+01 - - 1 2 684 5.5000000000000000e+00 0 -1 685 - 5.5000000000000000e+00 -2 -3 686 4.5000000000000000e+00 - - -3.4437903761863708e-01 4.5901042222976685e-01 - 1.4311666786670685e-01 -5.8588796854019165e-01 - <_> - 1.9943355560302734e+01 - - 1 2 687 2.9500000000000000e+01 0 -1 688 - 6.5000000000000000e+00 -2 -3 689 2.4500000000000000e+01 - - -5.8437657356262207e-01 2.6341116428375244e-01 - -6.2989181280136108e-01 2.0000371336936951e-01 - <_> - 1.9625724792480469e+01 - - 1 2 690 2.0850000000000000e+02 0 -1 691 - 2.3305000000000000e+03 -2 -3 692 866. - - -3.1762993335723877e-01 5.5581647157669067e-01 - 5.3226226568222046e-01 -4.7602936625480652e-01 - <_> - 1.9914857864379883e+01 - - 1 2 693 8.7850000000000000e+02 0 -1 694 - 6.5050000000000000e+02 -2 -3 695 1.2605000000000000e+03 - - 2.8913190960884094e-01 -8.0038177967071533e-01 - -7.6349312067031860e-01 1.2914163060486317e-02 - <_> - 2.0337768554687500e+01 - - 1 2 696 1.8500000000000000e+01 0 -1 697 51. -2 -3 698 - 5.0000000000000000e-01 - - 2.0884056389331818e-01 -6.6362190246582031e-01 - 4.8303022980690002e-01 -1.5653999149799347e-01 - <_> - 2.0547544479370117e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 - 4.4500000000000000e+01 -2 -3 701 52. - - -5.9065473079681396e-01 2.0977459847927094e-01 - -7.6793259382247925e-01 5.2228933572769165e-01 - <_> - 2.0560253143310547e+01 - - 1 2 702 4.5000000000000000e+00 0 -1 703 - 2.4650000000000000e+02 -2 -3 704 4.8500000000000000e+01 - - 4.7756865620613098e-01 -6.9306534528732300e-01 - -4.7408469021320343e-02 -7.5790488719940186e-01 - <_> - 2.0091964721679688e+01 - - 1 2 705 3.8500000000000000e+01 0 -1 706 - 5.0000000000000000e-01 -2 -3 707 458. - - 4.1837117075920105e-01 -5.6005704402923584e-01 - -4.6829015016555786e-01 3.3648452162742615e-01 - <_> - 2.0445671081542969e+01 - - 1 2 708 4.5000000000000000e+00 0 -1 709 - 2.7895000000000000e+03 -2 -3 710 1.1500000000000000e+01 - - -3.6157336831092834e-01 3.5370638966560364e-01 - -5.6435430049896240e-01 6.2603580951690674e-01 - <_> - 2.0708145141601562e+01 - - 1 2 711 1.1245000000000000e+03 0 -1 712 - 4.5000000000000000e+00 -2 -3 713 1.4500000000000000e+01 - - -6.9924837350845337e-01 4.3067482113838196e-01 - -4.2009061574935913e-01 2.6247435808181763e-01 - <_> - 2.1024463653564453e+01 - - 1 2 714 5.5000000000000000e+00 0 -1 715 - 1.1500000000000000e+01 -2 -3 716 7.5000000000000000e+00 - - -8.0043709278106689e-01 3.1631988286972046e-01 - -5.1429873704910278e-01 2.7576768398284912e-01 - <_> - 2.0803630828857422e+01 - - 1 2 717 5.8750000000000000e+02 0 -1 718 3981. -2 -3 719 - 1.9550000000000000e+02 - - -5.4785442352294922e-01 7.9078370332717896e-01 - 6.8359661102294922e-01 -2.8464736416935921e-02 - <_> - 2.1062959671020508e+01 - - 1 2 720 2.5000000000000000e+00 0 -1 721 - 1.5000000000000000e+00 -2 -3 722 3.4050000000000000e+02 - - -6.4614498615264893e-01 7.4008464813232422e-01 - -2.5458994507789612e-01 4.7160488367080688e-01 - <_> - 2.1148992538452148e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.9500000000000000e+01 -2 -3 725 1.1365000000000000e+03 - - -7.9459643363952637e-01 4.0373617410659790e-01 - 1.7909039556980133e-01 -4.8390582203865051e-01 - <_> - 2.1316343307495117e+01 - - 1 2 726 596. 0 -1 727 2.9500000000000000e+01 -2 -3 728 - 9.7500000000000000e+01 - - -3.1621825695037842e-01 2.6443120837211609e-01 - -7.2724926471710205e-01 3.8569703698158264e-01 - <_> - 2.1407173156738281e+01 - - 1 2 729 3.5000000000000000e+00 0 -1 730 - 1.2500000000000000e+01 -2 -3 731 1.6250000000000000e+02 - - -5.2135920524597168e-01 3.0805602669715881e-01 - -5.1675158739089966e-01 8.4476417303085327e-01 - <_> - 2.1468662261962891e+01 - - 1 2 732 2.5000000000000000e+00 0 -1 733 - 9.5000000000000000e+00 -2 -3 734 1.5000000000000000e+00 - - 4.6017938852310181e-01 -8.2636475563049316e-02 - 5.0263375043869019e-01 -6.4655619859695435e-01 - <_> - 2.1531848907470703e+01 - - 1 2 735 1.6500000000000000e+01 0 -1 736 - 1.5000000000000000e+00 -2 -3 737 132. - - 6.3187964260578156e-02 -4.6502736210823059e-01 - -5.3921943902969360e-01 6.6515022516250610e-01 - <_> - 2.1421955108642578e+01 - - 1 2 738 1.4500000000000000e+01 0 -1 739 - 5.5000000000000000e+00 -2 -3 740 4.5000000000000000e+00 - - 7.3170220851898193e-01 -7.9929661750793457e-01 - 4.2181393504142761e-01 -1.0989431291818619e-01 - <_> - 2.1327116012573242e+01 - - 1 2 741 3.5000000000000000e+00 0 -1 742 35. -2 -3 743 - 2.5000000000000000e+00 - - -8.3855998516082764e-01 4.6628227829933167e-01 - 4.7352400422096252e-01 -9.4839885830879211e-02 - <_> - 2.1836402893066406e+01 - - 1 2 744 1.7500000000000000e+01 0 -1 745 555. -2 -3 746 - 1.0500000000000000e+01 - - 9.3723833560943604e-01 -9.0897613763809204e-01 - -7.3575176298618317e-02 5.0928729772567749e-01 - <_> - 2.2053348541259766e+01 - - 1 2 747 5.0000000000000000e-01 0 -1 748 - 1.6500000000000000e+01 -2 -3 749 6.5850000000000000e+02 - - 3.9292082190513611e-01 -5.4508280754089355e-01 - -3.8765028119087219e-01 7.9302084445953369e-01 - <_> - 2.2000936508178711e+01 - - 1 2 750 1.2495000000000000e+03 0 -1 751 - 7.5650000000000000e+02 -2 -3 752 8.5000000000000000e+00 - - -8.3031547069549561e-01 6.1485505104064941e-01 - -7.2577434778213501e-01 -3.1862542033195496e-02 - <_> - 2.2258289337158203e+01 - - 1 2 753 1.7050000000000000e+02 0 -1 754 - 2.7500000000000000e+01 -2 -3 755 171. - - 2.5735321640968323e-01 -4.8002240061759949e-01 - -8.0062097311019897e-01 3.0654129385948181e-01 - <_> - 2.2328397750854492e+01 - - 1 2 756 1.2550000000000000e+02 0 -1 757 - 4.9850000000000000e+02 -2 -3 758 4.4150000000000000e+02 - - -5.5743676424026489e-01 7.0109486579895020e-02 - 4.4649991393089294e-01 -7.7318650484085083e-01 - <_> - 2.2216890335083008e+01 - - 1 2 759 6.5000000000000000e+00 0 -1 760 - 1.5000000000000000e+00 -2 -3 761 1.4500000000000000e+01 - - -5.4395025968551636e-01 3.0336576700210571e-01 - -7.8275823593139648e-01 1.5390900894999504e-02 - <_> - 2.2302726745605469e+01 - - 1 2 762 1.5000000000000000e+00 0 -1 763 - 5.7500000000000000e+01 -2 -3 764 2.0645000000000000e+03 - - 4.8738116025924683e-01 -3.1202495098114014e-01 - -4.3800228834152222e-01 2.9288199543952942e-01 - <_> - 2.2548938751220703e+01 - - 1 2 765 4.9500000000000000e+01 0 -1 766 - 3.8500000000000000e+01 -2 -3 767 5.1500000000000000e+01 - - 4.8418575525283813e-01 -6.1569869518280029e-01 - 2.4621097743511200e-01 -7.1180444955825806e-01 - <_> - 2.2475860595703125e+01 - - 1 2 768 4.5000000000000000e+00 0 -1 769 - 1.7850000000000000e+02 -2 -3 770 2.4500000000000000e+01 - - -6.3133555650711060e-01 3.8137707114219666e-01 - -3.6368274688720703e-01 6.6181749105453491e-01 - <_> - 2.2855289459228516e+01 - - 1 2 771 4284. 0 -1 772 1.0550000000000000e+02 -2 -3 773 - 2.6500000000000000e+01 - - -1.8270370364189148e-01 5.1926845312118530e-01 - -4.9393907189369202e-01 3.6390557885169983e-01 - <_> - 2.2716596603393555e+01 - - 1 2 774 4.5000000000000000e+00 0 -1 775 - 2.5500000000000000e+01 -2 -3 776 6.0350000000000000e+02 - - -5.2201086282730103e-01 4.4320568442344666e-01 - -4.9849912524223328e-01 2.6197108626365662e-01 - <_> - 2.2941522598266602e+01 - - 1 2 777 5.7850000000000000e+02 0 -1 778 - 6.8250000000000000e+02 -2 -3 779 2.6500000000000000e+01 - - -7.4641335010528564e-01 9.6406400203704834e-01 - 2.2492493689060211e-01 -7.7606719732284546e-01 - <_> - 2.3111333847045898e+01 - - 1 2 780 2.9650000000000000e+02 0 -1 781 - 9.5000000000000000e+00 -2 -3 782 4.2500000000000000e+01 - - -6.2134265899658203e-01 1.6981208324432373e-01 - -8.7735611200332642e-01 6.5406101942062378e-01 - <_> - 2.3225652694702148e+01 - - 1 2 783 5.0000000000000000e-01 0 -1 784 - 3.5000000000000000e+00 -2 -3 785 1.1050000000000000e+02 - - 4.8261573910713196e-01 -1.2186601758003235e-01 - -6.2313985824584961e-01 1.7973627150058746e-01 - <_> - 2.3488880157470703e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 2.5000000000000000e+00 -2 -3 788 4.1500000000000000e+01 - - -8.2940989732742310e-01 4.9927219748497009e-01 - -5.5514144897460938e-01 4.2520754039287567e-02 - <_> - 2.3246582031250000e+01 - - 1 2 789 1.7500000000000000e+01 0 -1 790 - 3.5000000000000000e+00 -2 -3 791 3.7500000000000000e+01 - - 2.3804731667041779e-01 -3.6675044894218445e-01 - -7.8130763769149780e-01 4.6650439500808716e-01 - <_> - 2.3027326583862305e+01 - - 1 2 792 2.0450000000000000e+02 0 -1 793 - 6.4350000000000000e+02 -2 -3 794 1.0050000000000000e+02 - - 6.1607003211975098e-01 -3.5964947938919067e-01 - 6.6453498601913452e-01 -1.7912100255489349e-01 - <_> - 2.3406442642211914e+01 - - 1 2 795 5.0000000000000000e-01 0 -1 796 - 6.5000000000000000e+00 -2 -3 797 5.0000000000000000e-01 - - -8.2512348890304565e-01 3.7911432981491089e-01 - 3.5871699452400208e-01 -4.4794848561286926e-01 - <_> - 2.3616649627685547e+01 - - 1 2 798 2.8500000000000000e+01 0 -1 799 - 4.7450000000000000e+02 -2 -3 800 2.9250000000000000e+02 - - 6.9855457544326782e-01 -7.0031523704528809e-01 - 2.1020780503749847e-01 -7.6559376716613770e-01 - <_> - 2.4126110076904297e+01 - - 1 2 801 2.7500000000000000e+01 0 -1 802 - 6.5000000000000000e+00 -2 -3 803 4.0500000000000000e+01 - - -2.3670162260532379e-01 5.7600808143615723e-01 - 7.9060065746307373e-01 -6.8735271692276001e-01 - <_> - 2.4140369415283203e+01 - - 1 2 804 5.0000000000000000e-01 0 -1 805 - 5.0000000000000000e-01 -2 -3 806 4.5000000000000000e+00 - - -9.1332882642745972e-01 5.2299410104751587e-01 - -7.9110765457153320e-01 -2.8204634785652161e-02 - <_> - 2.4360799789428711e+01 - - 1 2 807 4.5000000000000000e+00 0 -1 808 - 1.3185000000000000e+03 -2 -3 809 5.3500000000000000e+01 - - -8.1156605482101440e-01 2.2043134272098541e-01 - 2.7905371785163879e-01 -7.4440413713455200e-01 - <_> - 2.4109243392944336e+01 - - 1 2 810 1.3500000000000000e+01 0 -1 811 - 5.0000000000000000e-01 -2 -3 812 4.4500000000000000e+01 - - 2.3124285042285919e-01 -6.3171100616455078e-01 - -8.5163635015487671e-01 3.0160894989967346e-01 - <_> - 2.4255434036254883e+01 - - 1 2 813 1.5650000000000000e+02 0 -1 814 - 3.5000000000000000e+00 -2 -3 815 4.3500000000000000e+01 - - -7.0664036273956299e-01 1.4619015157222748e-01 - -7.6265025138854980e-01 9.5157426595687866e-01 - <_> - 2.4288377761840820e+01 - - 1 2 816 8.3850000000000000e+02 0 -1 817 - 1.6815000000000000e+03 -2 -3 818 3.7500000000000000e+01 - - -1.9312603771686554e-01 7.6522910594940186e-01 - -5.9187997132539749e-02 -8.7799388170242310e-01 - <_> - 2.4200824737548828e+01 - - 1 2 819 2.3685000000000000e+03 0 -1 820 - 6.4500000000000000e+01 -2 -3 821 2218. - - -2.3894232511520386e-01 3.3463284373283386e-01 - 9.7570341825485229e-01 -1. - <_> - 2.4393486022949219e+01 - - 1 2 822 1.5000000000000000e+00 0 -1 823 - 6.2500000000000000e+01 -2 -3 824 5.0000000000000000e-01 - - 3.8941594958305359e-01 -6.3870257139205933e-01 - 2.9708841443061829e-01 -4.5916315913200378e-01 - <_> - 2.3864915847778320e+01 - - 1 2 825 5.8500000000000000e+01 0 -1 826 - 5.0000000000000000e-01 -2 -3 827 5.0550000000000000e+02 - - 1.0665965825319290e-01 -5.2857077121734619e-01 - 4.3078324198722839e-01 -6.8552410602569580e-01 - <_> - 2.4371673583984375e+01 - - 1 2 828 4.6500000000000000e+01 0 -1 829 - 2.8500000000000000e+01 -2 -3 830 2.5000000000000000e+00 - - -4.6691280603408813e-01 9.4536936283111572e-01 - 5.0675743818283081e-01 -7.4976824223995209e-02 - <_> - 2.4283998489379883e+01 - - 1 2 831 8.5000000000000000e+00 0 -1 832 - 4.5000000000000000e+00 -2 -3 833 5.0000000000000000e-01 - - 1.1491531878709793e-01 -5.4051393270492554e-01 - 5.9726655483245850e-01 -8.7674349546432495e-02 - <_> - 2.4178682327270508e+01 - - 1 2 834 2.4500000000000000e+01 0 -1 835 31. -2 -3 836 - 2.5000000000000000e+00 - - -1.4163693785667419e-01 -8.9226043224334717e-01 - 4.4437414407730103e-01 -1.0531529039144516e-01 - <_> - 2.4790372848510742e+01 - - 1 2 837 2.5500000000000000e+01 0 -1 838 - 3.3050000000000000e+02 -2 -3 839 5.0000000000000000e-01 - - -6.6818559169769287e-01 9.3957829475402832e-01 - 6.1168950796127319e-01 -2.6481609791517258e-02 - <_> - 2.4897542953491211e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.0000000000000000e-01 -2 -3 842 2407. - - -3.7540107965469360e-01 5.3918349742889404e-01 - 4.6452194452285767e-01 -4.5957338809967041e-01 - <_> - 2.5076763153076172e+01 - - 1 2 843 228. 0 -1 844 182. -2 -3 845 3.3500000000000000e+01 - - 1.7922003567218781e-01 -6.3466674089431763e-01 - -9.4654053449630737e-01 1. - <_> - 2.5344453811645508e+01 - - 1 2 846 2.1050000000000000e+02 0 -1 847 950. -2 -3 848 - 6.5000000000000000e+00 - - 3.8418850302696228e-01 -3.3828052878379822e-01 - -9.4338703155517578e-01 5.6358563899993896e-01 - <_> - 2.5327934265136719e+01 - - 1 2 849 5.7850000000000000e+02 0 -1 850 2721. -2 -3 851 - 5.7950000000000000e+02 - - -7.7749001979827881e-01 7.9369461536407471e-01 - 6.1001539230346680e-01 -3.9780076593160629e-02 - <_> - 2.5586107254028320e+01 - - 1 2 852 1.5500000000000000e+01 0 -1 853 - 5.0000000000000000e-01 -2 -3 854 7.5000000000000000e+00 - - 6.5170124173164368e-02 -8.7068217992782593e-01 - 3.4386867284774780e-01 -3.1679311394691467e-01 - <_> - 2.5956110000610352e+01 - - 1 2 855 4.1250000000000000e+02 0 -1 856 - 9.5000000000000000e+00 -2 -3 857 1.2500000000000000e+01 - - -9.4299390912055969e-02 4.5086464285850525e-01 - 2.8941693902015686e-01 -7.5506448745727539e-01 - <_> - 2.5679136276245117e+01 - - 1 2 858 1.5500000000000000e+01 0 -1 859 - 3.5500000000000000e+01 -2 -3 860 1.5500000000000000e+01 - - 5.7768863439559937e-01 -9.8376011848449707e-01 - 2.2712181508541107e-01 -3.7263166904449463e-01 - <_> - 2.5702135086059570e+01 - - 1 2 861 5.2500000000000000e+01 0 -1 862 - 1.1305000000000000e+03 -2 -3 863 213. - - 2.2998491302132607e-02 -5.8967226743698120e-01 - 6.5218383073806763e-01 -8.2674098014831543e-01 - <_> - 2.5561569213867188e+01 - - 1 2 864 5.5500000000000000e+01 0 -1 865 - 9.5000000000000000e+00 -2 -3 866 3.1350000000000000e+02 - - 2.0403856039047241e-01 -5.6006175279617310e-01 - -1.6610753536224365e-01 5.0708794593811035e-01 - <_> - 2.5522092819213867e+01 - - 1 2 867 5.0000000000000000e-01 0 -1 868 5. -2 -3 869 - 3.8500000000000000e+01 - - -5.3519564867019653e-01 5.9799957275390625e-01 - -6.4083904027938843e-01 8.0231800675392151e-03 - <_> - 2.5928745269775391e+01 - - 1 2 870 2.7500000000000000e+01 0 -1 871 - 6.5000000000000000e+00 -2 -3 872 3.4500000000000000e+01 - - 6.7719250917434692e-01 1.6834596171975136e-02 - -4.1419923305511475e-01 4.9665707349777222e-01 - <_> - 2.5877567291259766e+01 - - 1 2 873 4.2500000000000000e+01 0 -1 874 - 1.5000000000000000e+00 -2 -3 875 1.2500000000000000e+01 - - 7.5778728723526001e-01 -6.9553768634796143e-01 - 5.8824920654296875e-01 -5.1177542656660080e-02 - <_> - 2.6253459930419922e+01 - - 1 2 876 2.0450000000000000e+02 0 -1 877 - 5.5000000000000000e+00 -2 -3 878 2.0750000000000000e+02 - - 1.4472042024135590e-01 -5.3407484292984009e-01 - 5.5299741029739380e-01 -2.1952067315578461e-01 - <_> - 2.5972379684448242e+01 - - 1 2 879 5.0000000000000000e-01 0 -1 880 - 9.2500000000000000e+01 -2 -3 881 2.8150000000000000e+02 - - -4.9287506937980652e-01 4.8725369572639465e-01 - 2.1028327941894531e-01 -4.5818585157394409e-01 - <_> - 2.6239015579223633e+01 - - 1 2 882 3.3450000000000000e+02 0 -1 883 - 2.9500000000000000e+01 -2 -3 884 1.9500000000000000e+01 - - -2.7773824334144592e-01 2.6663535833358765e-01 - 9.2568081617355347e-01 -1. - <_> - 2.6405815124511719e+01 - - 1 2 885 7.5000000000000000e+00 0 -1 886 - 1.5500000000000000e+01 -2 -3 887 2.9500000000000000e+01 - - -1.3278310000896454e-01 5.4445451498031616e-01 - -4.4695791602134705e-01 5.7305967807769775e-01 - <_> - 2.6828212738037109e+01 - - 1 2 888 3.1750000000000000e+02 0 -1 889 - 8.5000000000000000e+00 -2 -3 890 1.9950000000000000e+02 - - 5.8375543355941772e-01 -1.7268431186676025e-01 - -6.6015034914016724e-01 4.4744126498699188e-02 - <_> - 2.7001083374023438e+01 - - 1 2 891 7.4500000000000000e+01 0 -1 892 - 9.5000000000000000e+00 -2 -3 893 1.0500000000000000e+01 - - -7.7140247821807861e-01 1.7287059128284454e-01 - -9.5679062604904175e-01 2.9170122742652893e-01 - <_> - 2.6600372314453125e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 1.5000000000000000e+00 -2 -3 896 1.5000000000000000e+00 - - -6.1320728063583374e-01 3.7253630161285400e-01 - 5.1001715660095215e-01 -4.2740473151206970e-01 - <_> - 2.6939287185668945e+01 - - 1 2 897 742. 0 -1 898 1.5000000000000000e+00 -2 -3 899 - 4.6500000000000000e+01 - - 6.4842426776885986e-01 -6.8702745437622070e-01 - 5.3773084655404091e-03 7.0070070028305054e-01 - <_> - 2.7120637893676758e+01 - - 1 2 900 4.7500000000000000e+01 0 -1 901 - 2.1500000000000000e+01 -2 -3 902 155. - - -2.1175275743007660e-01 3.5446098446846008e-01 - 3.6745795607566833e-01 -7.7352613210678101e-01 - <_> - 2.6940479278564453e+01 - - 1 2 903 5.5000000000000000e+00 0 -1 904 - 5.0000000000000000e-01 -2 -3 905 5.0000000000000000e-01 - - -4.2342516779899597e-01 4.6100237965583801e-01 - 7.2207629680633545e-02 -5.1426035165786743e-01 - <_> - 2.6880437850952148e+01 - - 1 2 906 4.1050000000000000e+02 0 -1 907 - 3.5000000000000000e+00 -2 -3 908 1.0185000000000000e+03 - - 7.6362460851669312e-01 -2.9716432094573975e-01 - 6.9237434864044189e-01 -6.0041967779397964e-02 - <_> - 2.6966255187988281e+01 - - 1 2 909 5.0000000000000000e-01 0 -1 910 28. -2 -3 911 - 2.5000000000000000e+00 - - -7.3636984825134277e-01 8.9863502979278564e-01 - 5.1865053176879883e-01 -1.0253517329692841e-01 - <_> - 2.7442039489746094e+01 - - 1 2 912 2.3500000000000000e+01 0 -1 913 - 2.5000000000000000e+00 -2 -3 914 550. - - 1.5000563859939575e-01 -4.6704238653182983e-01 - -6.6705381870269775e-01 4.7578340768814087e-01 - <_> - 2.7651542663574219e+01 - - 1 2 915 2.0050000000000000e+02 0 -1 916 - 2.5000000000000000e+00 -2 -3 917 3.5000000000000000e+00 - - -6.6723048686981201e-01 2.0950356125831604e-01 - 3.3526617288589478e-01 -7.9762780666351318e-01 - <_> - 2.7623653411865234e+01 - - 1 2 918 8.5000000000000000e+00 0 -1 919 - 5.5000000000000000e+00 -2 -3 920 5.5000000000000000e+00 - - -8.1512671709060669e-01 1.2574225664138794e-01 - 4.8598203063011169e-01 -1.5266139805316925e-01 - <_> - 2.7450769424438477e+01 - - 1 2 921 5.5000000000000000e+00 0 -1 922 - 6.5000000000000000e+00 -2 -3 923 5.0000000000000000e-01 - - -2.1216700971126556e-01 5.0396865606307983e-01 - 5.1462185382843018e-01 -4.5113617181777954e-01 - <_> - 2.7734930038452148e+01 - - 1 2 924 644. 0 -1 925 1.1500000000000000e+01 -2 -3 926 - 1.2050000000000000e+02 - - 2.5870633125305176e-01 -8.3483195304870605e-01 - -6.0892283916473389e-01 2.8416162729263306e-01 - <_> - 2.7435287475585938e+01 - - 1 2 927 2.5000000000000000e+00 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 658. - - -9.0528321266174316e-01 5.4103326797485352e-01 - -2.9964354634284973e-01 4.7055888175964355e-01 - <_> - 2.7890865325927734e+01 - - 1 2 930 2.6065000000000000e+03 0 -1 931 - 3.0950000000000000e+02 -2 -3 932 3.6500000000000000e+01 - - -1.2102564424276352e-01 4.5557883381843567e-01 - -9.6796959638595581e-01 4.1553020477294922e-01 - <_> - 2.7985542297363281e+01 - - 1 2 933 1.2535000000000000e+03 0 -1 934 - 6.4950000000000000e+02 -2 -3 935 4.1650000000000000e+02 - - 6.4220869541168213e-01 -4.2341175675392151e-01 - 5.5095940828323364e-01 -3.7539717555046082e-01 - <_> - 2.8142776489257812e+01 - - 1 2 936 5.0000000000000000e-01 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 3.7500000000000000e+01 - - -3.2875818014144897e-01 4.3458873033523560e-01 - -5.8713775873184204e-01 1.6683255136013031e-01 - <_> - 2.8195165634155273e+01 - - 1 2 939 7.7450000000000000e+02 0 -1 940 - 2.5000000000000000e+00 -2 -3 941 7.9250000000000000e+02 - - 3.3088469505310059e-01 -7.3728382587432861e-01 - 4.7910848259925842e-01 -1.5558865666389465e-01 - <_> - 2.8348829269409180e+01 - - 1 2 942 2.2850000000000000e+02 0 -1 943 - 2.7500000000000000e+01 -2 -3 944 5.2500000000000000e+01 - - -9.7540810704231262e-02 4.9717679619789124e-01 - -8.4607970714569092e-01 3.1448280811309814e-01 - <_> - 2.8368389129638672e+01 - - 1 2 945 5.5000000000000000e+00 0 -1 946 - 5.5000000000000000e+00 -2 -3 947 5.0000000000000000e-01 - - -7.9352790117263794e-01 4.7426006197929382e-01 - 3.1184694170951843e-01 -3.9333003759384155e-01 - <_> - 2.8678846359252930e+01 - - 1 2 948 9.5500000000000000e+01 0 -1 949 - 1.3250000000000000e+02 -2 -3 950 85. - - 8.9399956166744232e-02 -7.3296272754669189e-01 - -7.4362647533416748e-01 3.2927182316780090e-01 - <_> - 2.8603195190429688e+01 - - 1 2 951 2.3500000000000000e+01 0 -1 952 - 5.5000000000000000e+00 -2 -3 953 1.5500000000000000e+01 - - 2.9263785481452942e-01 -2.7861267328262329e-01 - 2.4879254400730133e-02 -8.7280374765396118e-01 - <_> - 2.8429206848144531e+01 - - 1 2 954 5.0000000000000000e-01 0 -1 955 - 7.5000000000000000e+00 -2 -3 956 1.1050000000000000e+02 - - -4.9112609028816223e-01 4.5099055767059326e-01 - -6.6482228040695190e-01 3.8441817741841078e-03 - <_> - 2.8728115081787109e+01 - - 1 2 957 4.5000000000000000e+00 0 -1 958 - 3.0500000000000000e+01 -2 -3 959 9.5000000000000000e+00 - - 3.4782031178474426e-01 -4.3692314624786377e-01 - -5.0424945354461670e-01 4.8909524083137512e-01 - <_> - 2.9034227371215820e+01 - - 1 2 960 8.5000000000000000e+00 0 -1 961 1313. -2 -3 962 - 7.5000000000000000e+00 - - 4.1847491264343262e-01 -7.2316378355026245e-01 - 5.3542798757553101e-01 -6.9837749004364014e-02 - <_> - 2.9042299270629883e+01 - - 1 2 963 8.2350000000000000e+02 0 -1 964 - 6.1500000000000000e+01 -2 -3 965 1.0848500000000000e+04 - - -2.7015477418899536e-01 2.4192942678928375e-01 - 9.2728316783905029e-01 -1. - <_> - 2.9266605377197266e+01 - - 1 2 966 3.5500000000000000e+01 0 -1 967 - 1.1500000000000000e+01 -2 -3 968 474. - - 3.2317626476287842e-01 -2.3886755108833313e-01 - -9.2069733142852783e-01 9.9993713200092316e-02 - <_> - 2.9196119308471680e+01 - - 1 2 969 1.5000000000000000e+00 0 -1 970 50. -2 -3 971 - 4.5000000000000000e+00 - - -8.8119459152221680e-01 1.5396067500114441e-01 - 3.5588577389717102e-01 -1.8907056748867035e-01 - <_> - 2.8916269302368164e+01 - - 1 2 972 2.7500000000000000e+01 0 -1 973 78. -2 -3 974 - 1.4750000000000000e+02 - - 9.6468514204025269e-01 -2.7984911203384399e-01 - 5.2942144870758057e-01 -5.4215109348297119e-01 - <_> - 2.9137155532836914e+01 - - 1 2 975 2.3500000000000000e+01 0 -1 976 - 5.7850000000000000e+02 -2 -3 977 2.9250000000000000e+02 - - 2.3396319150924683e-01 -8.4364879131317139e-01 - -3.0435711145401001e-01 3.2314890623092651e-01 - <_> - 2.9115297317504883e+01 - - 1 2 978 5.0000000000000000e-01 0 -1 979 - 3.9550000000000000e+02 -2 -3 980 5.5000000000000000e+00 - - 3.9777445793151855e-01 -7.7888238430023193e-01 - -4.1580772399902344e-01 3.4073171019554138e-01 - <_> - 2.9551794052124023e+01 - - 1 2 981 1.8785000000000000e+03 0 -1 982 - 5.9715000000000000e+03 -2 -3 983 6.4250000000000000e+02 - - -1.2244975566864014e-01 6.9085955619812012e-01 - -5.9161955118179321e-01 2.9289481043815613e-01 - <_> - 2.9916490554809570e+01 - - 1 2 984 3.6500000000000000e+01 0 -1 985 - 5.5000000000000000e+00 -2 -3 986 6.5000000000000000e+00 - - -8.7442290782928467e-01 9.8645307123661041e-02 - 4.4346800446510315e-01 -1.5005703270435333e-01 - <_> - 2.9763261795043945e+01 - - 1 2 987 3.2500000000000000e+01 0 -1 988 - 1.0500000000000000e+01 -2 -3 989 4.6500000000000000e+01 - - -3.8456574082374573e-01 3.4571200609207153e-01 - 5.5213904380798340e-01 -5.1309728622436523e-01 - <_> - 3.0075271606445312e+01 - - 1 2 990 5.5000000000000000e+00 0 -1 991 3216. -2 -3 992 57. - - 3.7469649314880371e-01 -7.7058547735214233e-01 - -6.3845652341842651e-01 4.0090378373861313e-02 - <_> - 3.0020376205444336e+01 - - 1 2 993 6.6650000000000000e+02 0 -1 994 - 1.5000000000000000e+00 -2 -3 995 1.6650000000000000e+02 - - 6.1095565557479858e-01 -6.7465776205062866e-01 - 2.2271032631397247e-01 -8.2703709602355957e-01 - <_> - 2.9878087997436523e+01 - - 1 2 996 5.5000000000000000e+00 0 -1 997 - 1.1500000000000000e+01 -2 -3 998 6.2500000000000000e+01 - - -4.6279782056808472e-01 1.8749718368053436e-01 - 6.7090582847595215e-01 -1.3304303586483002e-01 - <_> - 2.9944360733032227e+01 - - 1 2 999 1.5000000000000000e+00 0 -1 1000 - 2.5000000000000000e+00 -2 -3 1001 2.5000000000000000e+00 - - -1. 4.3671074509620667e-01 6.6273018717765808e-02 - -5.3205168247222900e-01 - <_> - 2.9942871093750000e+01 - - 1 2 1002 5.5000000000000000e+00 0 -1 1003 - 3.7450000000000000e+02 -2 -3 1004 4.5000000000000000e+00 - - 6.1623644828796387e-01 -4.8089489340782166e-01 - 5.9936344623565674e-01 -3.1623546034097672e-02 - <_> - 3.0450216293334961e+01 - - 1 2 1005 7.8750000000000000e+02 0 -1 1006 - 6.7550000000000000e+02 -2 -3 1007 7.0250000000000000e+02 - - -4.9125915765762329e-01 5.5245697498321533e-01 - 5.0734555721282959e-01 -1.7348597943782806e-01 - <_> - 3.0483926773071289e+01 - - 1 2 1008 2.2350000000000000e+02 0 -1 1009 - 5.5000000000000000e+00 -2 -3 1010 2.4500000000000000e+01 - - 5.1597571372985840e-01 -3.2840871810913086e-01 - -4.1519615054130554e-01 3.1820172071456909e-01 - <_> - 3.0558099746704102e+01 - - 1 2 1011 4.8500000000000000e+01 0 -1 1012 - 5.5000000000000000e+00 -2 -3 1013 2.0500000000000000e+01 - - 7.4174232780933380e-02 -6.8477684259414673e-01 - -9.2985051870346069e-01 3.0161842703819275e-01 - <_> - 3.0625425338745117e+01 - - 1 2 1014 1.8500000000000000e+01 0 -1 1015 - 9.3500000000000000e+01 -2 -3 1016 1.4050000000000000e+02 - - -8.1940811872482300e-01 2.9973128437995911e-01 - 7.6479032635688782e-02 -6.5602862834930420e-01 - <_> - 3.0697441101074219e+01 - - 1 2 1017 3.7500000000000000e+01 0 -1 1018 - 2.1500000000000000e+01 -2 -3 1019 5804. - - -4.4756698608398438e-01 2.7423384785652161e-01 - -6.8169790506362915e-01 2.0900464057922363e-01 - <_> - 3.0949892044067383e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 5.5000000000000000e+00 -2 -3 1022 4.5000000000000000e+00 - - -6.4901775121688843e-01 2.5245016813278198e-01 - 2.4039171636104584e-01 -6.1729639768600464e-01 - <_> - 3.0929098129272461e+01 - - 1 2 1023 5.0000000000000000e-01 0 -1 1024 - 6.5000000000000000e+00 -2 -3 1025 1.4500000000000000e+01 - - -3.9928469061851501e-01 5.0110679864883423e-01 - -7.4043375253677368e-01 -4.4123314321041107e-02 - <_> - 3.1333951950073242e+01 - - 1 2 1026 6.5000000000000000e+00 0 -1 1027 - 2.1500000000000000e+01 -2 -3 1028 3.9500000000000000e+01 - - -5.8101430535316467e-02 6.1747199296951294e-01 - 2.6098625734448433e-02 -6.9707942008972168e-01 - <_> - 3.1116010665893555e+01 - - 1 2 1029 2.0150000000000000e+02 0 -1 1030 - 5.0000000000000000e-01 -2 -3 1031 2.8750000000000000e+02 - - 2.9852050542831421e-01 -4.3055999279022217e-01 - 6.7561793327331543e-01 -8.7017469108104706e-02 - <_> - 3.1032897949218750e+01 - - 1 2 1032 8.5000000000000000e+00 0 -1 1033 - 3.5000000000000000e+00 -2 -3 1034 2.3500000000000000e+01 - - -8.2436734437942505e-01 7.9362380504608154e-01 - 3.3129659295082092e-01 -2.2134104371070862e-01 - <_> - 3.0731082916259766e+01 - - 1 2 1035 1.5500000000000000e+01 0 -1 1036 - 1.5000000000000000e+00 -2 -3 1037 2.0500000000000000e+01 - - 5.2363544702529907e-01 -8.2277619838714600e-01 - 3.4363475441932678e-01 -3.0181473493576050e-01 - <_> - 3.1582773208618164e+01 - - 1 2 1038 2.3500000000000000e+01 0 -1 1039 256. -2 -3 1040 - 1245. - - 4.0018074214458466e-02 -5.4246288537979126e-01 - -7.1379941701889038e-01 8.5168963670730591e-01 - <_> - 3.0922315597534180e+01 - - 1 2 1041 1.1500000000000000e+01 0 -1 1042 - 9.7500000000000000e+01 -2 -3 1043 4.2050000000000000e+02 - - 3.3170649409294128e-01 -6.6045612096786499e-01 - -1.4949633181095123e-01 5.1487708091735840e-01 - <_> - 3.0648450851440430e+01 - - 1 2 1044 5.7750000000000000e+02 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 3.8250000000000000e+02 - - 4.8874342441558838e-01 -8.4576064348220825e-01 - 6.7698836326599121e-01 -6.0642462223768234e-02 - <_> - 3.0702632904052734e+01 - - 1 2 1047 2.2500000000000000e+01 0 -1 1048 - 1.2950000000000000e+02 -2 -3 1049 3.5650000000000000e+02 - - 5.4180499166250229e-02 -5.0506794452667236e-01 - 7.7279126644134521e-01 -4.4330042600631714e-01 - <_> - 3.1123544692993164e+01 - - 1 2 1050 2.1500000000000000e+01 0 -1 1051 - 1.8500000000000000e+01 -2 -3 1052 5.9500000000000000e+01 - - -3.4420540928840637e-01 5.7321655750274658e-01 - 4.2091187834739685e-01 -6.6199111938476562e-01 - <_> - 3.0851852416992188e+01 - - 1 2 1053 1.5000000000000000e+00 0 -1 1054 - 4.5000000000000000e+00 -2 -3 1055 5.0000000000000000e-01 - - -8.3376497030258179e-01 5.1961439847946167e-01 - 1.9672468304634094e-01 -3.8548988103866577e-01 - <_> - 3.1271551132202148e+01 - - 1 2 1056 5.5000000000000000e+00 0 -1 1057 - 1.5000000000000000e+00 -2 -3 1058 3.2500000000000000e+01 - - 1.9125646352767944e-01 -4.8435854911804199e-01 - 6.1247032880783081e-01 -2.2513453662395477e-01 - <_> - 3.1481870651245117e+01 - - 1 2 1059 2.6500000000000000e+01 0 -1 1060 160. -2 -3 1061 - 1.5000000000000000e+00 - - 5.5120378732681274e-01 -7.5941944122314453e-01 - 4.1089880466461182e-01 -1.3137997686862946e-01 - <_> - 3.1036325454711914e+01 - - 1 2 1062 1.5500000000000000e+01 0 -1 1063 - 1.4500000000000000e+01 -2 -3 1064 2.1500000000000000e+01 - - 3.4304007887840271e-02 -6.1823207139968872e-01 - -2.7733555436134338e-01 6.1952215433120728e-01 - <_> - 3.1423891067504883e+01 - - 1 2 1065 2.5450000000000000e+02 0 -1 1066 - 1.2500000000000000e+01 -2 -3 1067 1.4500000000000000e+01 - - 4.7979310154914856e-01 -9.3194240331649780e-01 - -1.1963248252868652e-01 4.4283005595207214e-01 - <_> - 3.0981994628906250e+01 - - 1 2 1068 4.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 5.0000000000000000e-01 - - -7.1386426687240601e-01 3.3223813772201538e-01 - 5.5634075403213501e-01 -4.5681276917457581e-01 - <_> - 3.1151826858520508e+01 - - 1 2 1071 8.3500000000000000e+01 0 -1 1072 - 6.5000000000000000e+00 -2 -3 1073 32. - - -6.9022941589355469e-01 1.6983160376548767e-01 - -7.8779727220535278e-01 1. - <_> - 3.1287761688232422e+01 - - 1 2 1074 4.2250000000000000e+02 0 -1 1075 - 1.6785000000000000e+03 -2 -3 1076 3.4085000000000000e+03 - - -2.1672263741493225e-01 7.0122992992401123e-01 - -5.5317509174346924e-01 1.3593602180480957e-01 - <_> - 3.1590259552001953e+01 - - 1 2 1077 3.1150000000000000e+02 0 -1 1078 - 1.1500000000000000e+01 -2 -3 1079 1.5000000000000000e+00 - - -4.2860367894172668e-01 3.0249705910682678e-01 - 8.6132842302322388e-01 -5.9583419561386108e-01 - <_> - 3.1790189743041992e+01 - - 1 2 1080 9.3500000000000000e+01 0 -1 1081 - 8.5000000000000000e+00 -2 -3 1082 2.5000000000000000e+00 - - -8.5307538509368896e-01 1.9993139803409576e-01 - 5.2050822973251343e-01 -7.1924048662185669e-01 - <_> - 3.1949237823486328e+01 - - 1 2 1083 1.5000000000000000e+00 0 -1 1084 - 1.8500000000000000e+01 -2 -3 1085 4.7500000000000000e+01 - - -8.7075895071029663e-01 4.1160404682159424e-01 - -4.2329508066177368e-01 3.9578995108604431e-01 - <_> - 3.1551105499267578e+01 - - 1 2 1086 5.0000000000000000e-01 0 -1 1087 - 7.1500000000000000e+01 -2 -3 1088 5.0000000000000000e-01 - - 4.7251659631729126e-01 -6.8467688560485840e-01 - 3.0512693524360657e-01 -3.9813303947448730e-01 - <_> - 3.1931394577026367e+01 - - 1 2 1089 1.9150000000000000e+02 0 -1 1090 - 4.5000000000000000e+00 -2 -3 1091 7.6950000000000000e+02 - - 1.9683115184307098e-01 -5.8899974822998047e-01 - -6.5470945835113525e-01 3.8028964400291443e-01 - <_> - 3.2017967224121094e+01 - - 1 2 1092 7.5000000000000000e+00 0 -1 1093 - 2.8500000000000000e+01 -2 -3 1094 3.7500000000000000e+01 - - 2.7054101228713989e-01 -5.6520724296569824e-01 - -6.2938737869262695e-01 8.6574614048004150e-02 - <_> - 3.2285461425781250e+01 - - 1 2 1095 5.8750000000000000e+02 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1.5500000000000000e+01 - - 1.0511577874422073e-01 -6.9365251064300537e-01 - -6.4478015899658203e-01 2.6749077439308167e-01 - <_> - 3.2811119079589844e+01 - - 1 2 1098 2.1500000000000000e+01 0 -1 1099 - 4.1500000000000000e+01 -2 -3 1100 559. - - -2.0592536032199860e-01 3.7386643886566162e-01 - 7.8755700588226318e-01 -6.8481349945068359e-01 - <_> - 3.2689319610595703e+01 - - 1 2 1101 5.7550000000000000e+02 0 -1 1102 - 3.5000000000000000e+00 -2 -3 1103 9.6500000000000000e+01 - - 3.9178147912025452e-01 -1.2180019915103912e-01 - -9.6077018976211548e-01 -1.4056563377380371e-01 - <_> - 3.2619079589843750e+01 - - 1 2 1104 2.5000000000000000e+00 0 -1 1105 43. -2 -3 1106 - 2.5000000000000000e+00 - - -8.9122837781906128e-01 4.5819079875946045e-01 - 5.5948436260223389e-01 -7.0240341126918793e-02 - <_> - 3.3039958953857422e+01 - - 1 2 1107 2.3955000000000000e+03 0 -1 1108 - 1.2535000000000000e+03 -2 -3 1109 4.0405000000000000e+03 - - 2.9499965906143188e-01 -2.6054748892784119e-01 - 9.8911577463150024e-01 -1. - <_> - 3.3041172027587891e+01 - - 1 2 1110 2.0850000000000000e+02 0 -1 1111 - 2.7500000000000000e+01 -2 -3 1112 4.5000000000000000e+00 - - -6.7137396335601807e-01 1.2141949264332652e-03 - 6.0118967294692993e-01 -2.0657041668891907e-01 - <_> - 3.2776119232177734e+01 - - 1 2 1113 3.5000000000000000e+00 0 -1 1114 - 6.5000000000000000e+00 -2 -3 1115 3.0500000000000000e+01 - - -2.2868818044662476e-01 5.7510751485824585e-01 - -3.6484047770500183e-01 5.1262056827545166e-01 - <_> - 3.2935546875000000e+01 - - 1 2 1116 5.0000000000000000e-01 0 -1 1117 - 2.5000000000000000e+00 -2 -3 1118 5.0000000000000000e-01 - - -7.3760849237442017e-01 4.5924603939056396e-01 - 1.5942642092704773e-01 -4.6601155400276184e-01 - <_> - 3.2656055450439453e+01 - - 1 2 1119 3.3500000000000000e+01 0 -1 1120 - 3.4500000000000000e+01 -2 -3 1121 3.9150000000000000e+02 - - -2.7949050068855286e-01 3.4181603789329529e-01 - 7.1765547990798950e-01 -7.6309484243392944e-01 - <_> - 3.2747634887695312e+01 - - 1 2 1122 2.5000000000000000e+00 0 -1 1123 - 2.5000000000000000e+00 -2 -3 1124 3.5250000000000000e+02 - - -7.4318218231201172e-01 5.3260874748229980e-01 - -5.0913441181182861e-01 9.1580078005790710e-02 - <_> - 3.3188011169433594e+01 - - 1 2 1125 5.6500000000000000e+01 0 -1 1126 - 3.2500000000000000e+01 -2 -3 1127 3.9500000000000000e+01 - - -6.4126682281494141e-01 4.9496468901634216e-01 - -3.9145907759666443e-01 4.4037669897079468e-01 - <_> - 3.3416931152343750e+01 - - 1 2 1128 7.0500000000000000e+01 0 -1 1129 - 1.1500000000000000e+01 -2 -3 1130 9.5000000000000000e+00 - - -3.8201475143432617e-01 2.2891646623611450e-01 - -8.5659736394882202e-01 6.1013686656951904e-01 - <_> - 3.3275886535644531e+01 - - 1 2 1131 4.0500000000000000e+01 0 -1 1132 - 1.9500000000000000e+01 -2 -3 1133 1.3500000000000000e+01 - - 2.6871705055236816e-01 -6.3255614042282104e-01 - 2.3965831100940704e-01 -6.3516211509704590e-01 - <_> - 3.3399391174316406e+01 - - 1 2 1134 5.5000000000000000e+00 0 -1 1135 - 8.5000000000000000e+00 -2 -3 1136 3.0500000000000000e+01 - - -6.6200548410415649e-01 1.5101595222949982e-01 - -7.6606094837188721e-01 2.5947886705398560e-01 - <_> - 3.3559207916259766e+01 - - 1 2 1137 6.5000000000000000e+00 0 -1 1138 - 8.2500000000000000e+01 -2 -3 1139 1.6500000000000000e+01 - - 7.6681274175643921e-01 -6.3294899463653564e-01 - -5.5192285776138306e-01 2.3842744529247284e-02 - <_> - 3.3856239318847656e+01 - - 1 2 1140 1.0500000000000000e+01 0 -1 1141 - 1.7350000000000000e+02 -2 -3 1142 2.7550000000000000e+02 - - 2.9703170061111450e-01 -5.5057585239410400e-01 - -6.4888852834701538e-01 1.1229314655065536e-01 - <_> - 3.3721168518066406e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 126. -2 -3 1145 - 2.5000000000000000e+00 - - 9.2471975088119507e-01 -7.2330892086029053e-01 - 3.9742922782897949e-01 -1.3506934046745300e-01 - <_> - 3.4096935272216797e+01 - - 1 2 1146 2.3500000000000000e+01 0 -1 1147 - 1.9500000000000000e+01 -2 -3 1148 6.6500000000000000e+01 - - -5.5066823959350586e-01 3.2355815172195435e-01 - 3.7576669454574585e-01 -2.6415929198265076e-01 - <_> - 3.4108264923095703e+01 - - 1 2 1149 1.5000000000000000e+00 0 -1 1150 - 6.5000000000000000e+00 -2 -3 1151 5.0500000000000000e+01 - - -9.7412526607513428e-01 5.2388346195220947e-01 - -4.9519532918930054e-01 1.9004400074481964e-01 - <_> - 3.3904502868652344e+01 - - 1 2 1152 7.7250000000000000e+02 0 -1 1153 77. -2 -3 1154 - 4.8350000000000000e+02 - - -6.9026130437850952e-01 8.2613104581832886e-01 - 6.4011102914810181e-01 -8.1689134240150452e-02 - <_> - 3.4277988433837891e+01 - - 1 2 1155 5.0000000000000000e-01 0 -1 1156 - 7.3150000000000000e+02 -2 -3 1157 5.0000000000000000e-01 - - 4.5011767745018005e-01 -2.4998305737972260e-01 - 8.2632339000701904e-01 -4.2073485255241394e-01 - <_> - 3.4078739166259766e+01 - - 1 2 1158 2.0950000000000000e+02 0 -1 1159 - 1.6755000000000000e+03 -2 -3 1160 6.1815000000000000e+03 - - -2.7588048577308655e-01 9.5124208927154541e-01 - 6.4596521854400635e-01 -3.6611458659172058e-01 - <_> - 3.4438789367675781e+01 - - 1 2 1161 1.5500000000000000e+01 0 -1 1162 - 2.1500000000000000e+01 -2 -3 1163 4.4500000000000000e+01 - - -3.0783519148826599e-01 3.6005032062530518e-01 - 4.5609518885612488e-01 -6.2639898061752319e-01 - <_> - 3.4638523101806641e+01 - - 1 2 1164 3.1500000000000000e+01 0 -1 1165 - 7.5000000000000000e+00 -2 -3 1166 3.2350000000000000e+02 - - -9.4682770967483521e-01 1.9973398745059967e-01 - -6.2348783016204834e-01 6.9902861118316650e-01 - <_> - 3.4201782226562500e+01 - - 1 2 1167 7.5000000000000000e+00 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 1.2500000000000000e+01 - - 3.3168455958366394e-01 -4.3674397468566895e-01 - -6.4757126569747925e-01 2.0459994673728943e-01 - <_> - 3.4516929626464844e+01 - - 1 2 1170 1.6500000000000000e+01 0 -1 1171 - 5.0000000000000000e-01 -2 -3 1172 675. - - 2.3890937864780426e-01 -5.7110768556594849e-01 - 3.1514799594879150e-01 -1. - <_> - 3.4619071960449219e+01 - - 1 2 1173 8.6500000000000000e+01 0 -1 1174 - 4.5000000000000000e+00 -2 -3 1175 1.7500000000000000e+01 - - 7.6261973381042480e-01 -8.6133646965026855e-01 -1. - 1.0214501619338989e-01 - <_> - 3.4869640350341797e+01 - - 1 2 1176 5.0000000000000000e-01 0 -1 1177 - 1.2315000000000000e+03 -2 -3 1178 5.0000000000000000e-01 - - 3.7597665190696716e-01 -6.9864195585250854e-01 - 2.0625047385692596e-01 -4.8068267107009888e-01 - <_> - 3.5086204528808594e+01 - - 1 2 1179 1.6500000000000000e+01 0 -1 1180 - 8.3500000000000000e+01 -2 -3 1181 7.5000000000000000e+00 - - 1.4784654974937439e-01 -8.3145272731781006e-01 - -6.7620545625686646e-01 2.1656262874603271e-01 - <_> - 3.4877140045166016e+01 - - 1 2 1182 5.0000000000000000e-01 0 -1 1183 - 3.5000000000000000e+00 -2 -3 1184 969. - - -6.4537084102630615e-01 2.7460998296737671e-01 - -5.3607624769210815e-01 2.8266566991806030e-01 - <_> - 3.5179489135742188e+01 - - 1 2 1185 1.5000000000000000e+00 0 -1 1186 - 7.2500000000000000e+01 -2 -3 1187 3.1500000000000000e+01 - - 9.7988271713256836e-01 -5.9574514627456665e-01 - -1.8132425844669342e-01 5.5573570728302002e-01 - <_> - 3.5144893646240234e+01 - - 1 2 1188 5.0000000000000000e-01 0 -1 1189 - 2.6500000000000000e+01 -2 -3 1190 8.1650000000000000e+02 - - -4.2640584707260132e-01 5.2214205265045166e-01 - 8.3740442991256714e-01 -2.8797909617424011e-01 - <_> - 3.5558689117431641e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 2.6500000000000000e+01 -2 -3 1193 1.2500000000000000e+01 - - -4.3793568015098572e-01 4.1379487514495850e-01 - 1.8940502405166626e-01 -5.4046261310577393e-01 - <_> - 3.5233970642089844e+01 - - 1 2 1194 4.7500000000000000e+01 0 -1 1195 - 8.5000000000000000e+00 -2 -3 1196 338. - - 1.5260761976242065e-01 -4.2628118395805359e-01 - 5.9790462255477905e-01 -5.5013555288314819e-01 - <_> - 3.5332725524902344e+01 - - 1 2 1197 5.0000000000000000e-01 0 -1 1198 - 3.6500000000000000e+01 -2 -3 1199 1.7500000000000000e+01 - - -6.2585823237895966e-02 6.3506704568862915e-01 - -3.5257333517074585e-01 5.9659516811370850e-01 - <_> - 3.5257114410400391e+01 - - 1 2 1200 3.5000000000000000e+00 0 -1 1201 - 7.5000000000000000e+00 -2 -3 1202 1.8500000000000000e+01 - - -9.3612766265869141e-01 3.4692686796188354e-01 - 5.0016778707504272e-01 -7.5611986219882965e-02 - <_> - 3.5595767974853516e+01 - - 1 2 1203 1.0500000000000000e+01 0 -1 1204 - 1.8500000000000000e+01 -2 -3 1205 1.5000000000000000e+00 - - -9.5243799686431885e-01 7.0761454105377197e-01 - 3.3865371346473694e-01 -1.8447074294090271e-01 - <_> - 3.5873832702636719e+01 - - 1 2 1206 1.6350000000000000e+02 0 -1 1207 - 9.1500000000000000e+01 -2 -3 1208 19. - - -1.3119605183601379e-01 4.0907257795333862e-01 - -8.4312802553176880e-01 9.1352003812789917e-01 - <_> - 3.6231769561767578e+01 - - 1 2 1209 4.5000000000000000e+00 0 -1 1210 - 1.5000000000000000e+00 -2 -3 1211 2.0500000000000000e+01 - - -4.6025198698043823e-01 3.4153524041175842e-01 - -5.0537836551666260e-01 3.5793614387512207e-01 - <_> - 3.6177539825439453e+01 - - 1 2 1212 1.5500000000000000e+01 0 -1 1213 - 4.5000000000000000e+00 -2 -3 1214 5.8650000000000000e+02 - - -3.4014788269996643e-01 3.7431231141090393e-01 - -8.9153337478637695e-01 -8.3685964345932007e-02 - <_> - 3.5921119689941406e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 8.5500000000000000e+01 -2 -3 1217 3.3350000000000000e+02 - - 7.2648537158966064e-01 -8.4184181690216064e-01 - -2.5641769170761108e-01 5.9225118160247803e-01 - <_> - 3.5762935638427734e+01 - - 1 2 1218 5.0695000000000000e+03 0 -1 1219 - 4.1865000000000000e+03 -2 -3 1220 1.8500000000000000e+01 - - -1.5818408131599426e-01 7.5127458572387695e-01 - -4.1771730780601501e-01 1.6759181022644043e-01 - <_> - 3.6343830108642578e+01 - - 1 2 1221 5.5000000000000000e+00 0 -1 1222 161. -2 -3 1223 - 5.5000000000000000e+00 - - -7.1770183742046356e-02 -8.2580149173736572e-01 - 6.3310110569000244e-01 -1.1210992932319641e-02 - <_> - 3.6239753723144531e+01 - - 1 2 1224 2.9500000000000000e+01 0 -1 1225 - 2.2500000000000000e+01 -2 -3 1226 2.5000000000000000e+00 - - -5.7685142755508423e-01 5.9265869855880737e-01 - 5.8708161115646362e-01 -1.0407686233520508e-01 - <_> - 3.6570693969726562e+01 - - 1 2 1227 2.6050000000000000e+02 0 -1 1228 - 5.1500000000000000e+01 -2 -3 1229 194. - - -1.3848701119422913e-01 3.8530793786048889e-01 - -9.9199587106704712e-01 7.3519229888916016e-01 - <_> - 3.6172859191894531e+01 - - 1 2 1230 4.5000000000000000e+00 0 -1 1231 2985. -2 -3 1232 - 4.1050000000000000e+02 - - 7.0713436603546143e-01 -7.4149054288864136e-01 - -3.9783236384391785e-01 1.8219061195850372e-01 - <_> - 3.6474601745605469e+01 - - 1 2 1233 7.2850000000000000e+02 0 -1 1234 - 1.0500000000000000e+01 -2 -3 1235 9.5000000000000000e+00 - - -8.5275667905807495e-01 3.0174070596694946e-01 - 5.2034640312194824e-01 -4.9349766969680786e-01 - <_> - 3.6498180389404297e+01 - - 1 2 1236 4.8500000000000000e+01 0 -1 1237 - 9.5000000000000000e+00 -2 -3 1238 4.5000000000000000e+00 - - 7.8738486766815186e-01 -7.6111316680908203e-01 - 5.0128465890884399e-01 -1.1157950758934021e-01 - <_> - 3.6698276519775391e+01 - - 1 2 1239 2.8850000000000000e+02 0 -1 1240 - 2.0500000000000000e+01 -2 -3 1241 1.2805000000000000e+03 - - -4.7094190120697021e-01 2.0009694993495941e-01 1. - -9.3752562999725342e-01 - <_> - 3.6857143402099609e+01 - - 1 2 1242 3.5000000000000000e+00 0 -1 1243 2854. -2 -3 1244 - 5.0000000000000000e-01 - - 4.4445955753326416e-01 -6.2877982854843140e-01 - 2.8415599465370178e-01 -4.0654498338699341e-01 - <_> - 3.6661224365234375e+01 - - 1 2 1245 6.3850000000000000e+02 0 -1 1246 - 1.3500000000000000e+01 -2 -3 1247 2.5000000000000000e+00 - - -2.8753396868705750e-01 4.5057922601699829e-01 - -9.3399870395660400e-01 6.8900948762893677e-01 - <_> - 3.7027565002441406e+01 - - 1 2 1248 1.1500000000000000e+01 0 -1 1249 - 3.5000000000000000e+00 -2 -3 1250 482. - - -8.2890731096267700e-01 3.8032263517379761e-01 - -6.3736891746520996e-01 2.2181304171681404e-02 - <_> - 3.7302738189697266e+01 - - 1 2 1251 1.5000000000000000e+00 0 -1 1252 - 6.5000000000000000e+00 -2 -3 1253 2.1500000000000000e+01 - - -8.7263113260269165e-01 2.7517196536064148e-01 - -6.8864667415618896e-01 -1.0606539435684681e-02 - <_> - 3.7514694213867188e+01 - - 1 2 1254 5.0000000000000000e-01 0 -1 1255 - 1.6555000000000000e+03 -2 -3 1256 2.5500000000000000e+01 - - 5.4653161764144897e-01 -3.8731038570404053e-01 - -2.6684281229972839e-01 5.9316390752792358e-01 - <_> - 3.7565513610839844e+01 - - 1 2 1257 5.7450000000000000e+02 0 -1 1258 - 2.9450000000000000e+02 -2 -3 1259 3.4500000000000000e+01 - - -7.9943376779556274e-01 1. 3.4340542554855347e-01 - -2.2570419311523438e-01 - <_> - 3.7413349151611328e+01 - - 1 2 1260 189. 0 -1 1261 5.0000000000000000e-01 -2 -3 1262 - 2.0500000000000000e+01 - - 7.8168439865112305e-01 -8.3374607563018799e-01 - -1.9817931950092316e-01 3.6079603433609009e-01 - <_> - 3.7554840087890625e+01 - - 1 2 1263 298. 0 -1 1264 3022. -2 -3 1265 - 1.9350000000000000e+02 - - -1.1193416081368923e-02 8.7101829051971436e-01 - 2.1728983521461487e-01 -4.2951995134353638e-01 - <_> - 3.7603076934814453e+01 - - 1 2 1266 1.1500000000000000e+01 0 -1 1267 - 2.5000000000000000e+00 -2 -3 1268 1.0050000000000000e+02 - - 1.7867322266101837e-01 -4.2928701639175415e-01 - 5.2659392356872559e-01 -6.2002837657928467e-01 - <_> - 3.7885494232177734e+01 - - 1 2 1269 1.4500000000000000e+01 0 -1 1270 - 2.5000000000000000e+00 -2 -3 1271 8.0500000000000000e+01 - - 1.8106105923652649e-01 -7.7528846263885498e-01 - -5.8309614658355713e-01 2.8241708874702454e-01 - <_> - 3.7499431610107422e+01 - - 1 2 1272 3.5500000000000000e+01 0 -1 1273 - 2.5000000000000000e+00 -2 -3 1274 7.5000000000000000e+00 - - -9.1437792778015137e-01 5.1539105176925659e-01 - -3.8606551289558411e-01 3.3163914084434509e-01 - <_> - 3.7937980651855469e+01 - - 1 2 1275 1.3500000000000000e+01 0 -1 1276 - 1.4500000000000000e+01 -2 -3 1277 7.9500000000000000e+01 - - -7.2145909070968628e-02 6.0647141933441162e-01 - -6.2856364250183105e-01 8.6137987673282623e-02 - <_> - 3.8185783386230469e+01 - - 1 2 1278 1.4500000000000000e+01 0 -1 1279 73. -2 -3 1280 - 1.0500000000000000e+01 - - -9.4152975082397461e-01 1. 2.4780233204364777e-01 - -4.0907081961631775e-01 - <_> - 3.7849395751953125e+01 - - 1 2 1281 5.0000000000000000e-01 0 -1 1282 - 4.5000000000000000e+00 -2 -3 1283 5.0000000000000000e-01 - - -5.0824928283691406e-01 5.6237548589706421e-01 - 5.4402673244476318e-01 -3.3638605475425720e-01 - <_> - 3.8386943817138672e+01 - - 1 2 1284 2.0450000000000000e+02 0 -1 1285 - 6.7250000000000000e+02 -2 -3 1286 1.2385000000000000e+03 - - 3.9266860485076904e-01 -3.8152101635932922e-01 - 5.9661215543746948e-01 -3.8554838299751282e-01 - <_> - 3.8467891693115234e+01 - - 1 2 1287 5.5000000000000000e+00 0 -1 1288 - 9.0500000000000000e+01 -2 -3 1289 1.5000000000000000e+00 - - 2.1883549168705940e-02 -6.2764549255371094e-01 - 7.0444834232330322e-01 -4.4701110571622849e-02 - <_> - 3.8550418853759766e+01 - - 1 2 1290 2.8350000000000000e+02 0 -1 1291 - 1.4500000000000000e+01 -2 -3 1292 58. - - -8.5395231842994690e-02 5.9592086076736450e-01 - 9.0824156999588013e-01 -8.9943450689315796e-01 - <_> - 3.8631130218505859e+01 - - 1 2 1293 2.5000000000000000e+00 0 -1 1294 - 9.5000000000000000e+00 -2 -3 1295 5.5000000000000000e+00 - - -3.6073815822601318e-01 5.3091663122177124e-01 - 1.6989825665950775e-01 -4.6344351768493652e-01 - <_> - 3.8474849700927734e+01 - - 1 2 1296 5.7750000000000000e+02 0 -1 1297 - 1.9250000000000000e+02 -2 -3 1298 2.6195000000000000e+03 - - -8.1247472763061523e-01 2.9322347044944763e-01 - 3.5261180996894836e-01 -2.4546836316585541e-01 - <_> - 3.8279983520507812e+01 - - 1 2 1299 4.4500000000000000e+01 0 -1 1300 1096. -2 -3 1301 - 5.0000000000000000e-01 - - 6.6110774874687195e-02 -7.6391810178756714e-01 - 5.6174814701080322e-01 -7.3350854218006134e-02 - <_> - 3.8626735687255859e+01 - - 1 2 1302 3.4350000000000000e+02 0 -1 1303 - 5.0000000000000000e-01 -2 -3 1304 7.1750000000000000e+02 - - 3.5977458953857422e-01 -2.1690338850021362e-01 - 9.9256932735443115e-01 -1. - <_> - 3.8572544097900391e+01 - - 1 2 1305 1.1500000000000000e+01 0 -1 1306 - 1.2500000000000000e+01 -2 -3 1307 5.0000000000000000e-01 - - -9.2809075117111206e-01 8.5182946920394897e-01 - 4.9062111973762512e-01 -5.4192960262298584e-02 - <_> - 3.8948635101318359e+01 - - 1 2 1308 4.2550000000000000e+02 0 -1 1309 - 7.6500000000000000e+01 -2 -3 1310 8986. - - -4.5830437541007996e-01 1.6672098636627197e-01 - 7.7317571640014648e-01 -2.2485339641571045e-01 - <_> - 3.9342456817626953e+01 - - 1 2 1311 6.9500000000000000e+01 0 -1 1312 - 3.5500000000000000e+01 -2 -3 1313 1.0545000000000000e+03 - - -1.2714000418782234e-02 6.2372517585754395e-01 - -5.7864826917648315e-01 5.6230723857879639e-01 - <_> - 3.9216064453125000e+01 - - 1 2 1314 5.2750000000000000e+02 0 -1 1315 - 1.9048500000000000e+04 -2 -3 1316 4.5000000000000000e+00 - - -1. 7.7397161722183228e-01 1.6222594678401947e-01 - -3.9657172560691833e-01 - <_> - 3.9446334838867188e+01 - - 1 2 1317 3.5000000000000000e+00 0 -1 1318 - 6.3500000000000000e+01 -2 -3 1319 288. - - 3.8338693976402283e-01 -9.0452802181243896e-01 - -5.4537796974182129e-01 2.3026967048645020e-01 - <_> - 3.9339183807373047e+01 - - 1 2 1320 1.1500000000000000e+01 0 -1 1321 - 5.0000000000000000e-01 -2 -3 1322 3472. - - 3.7719848752021790e-01 -2.7750793099403381e-01 - -7.6843172311782837e-01 3.3132901880890131e-03 - <_> - 3.9513347625732422e+01 - - 1 2 1323 2.1500000000000000e+01 0 -1 1324 - 4.5000000000000000e+00 -2 -3 1325 1.1500000000000000e+01 - - 1.7416687309741974e-01 -4.6917149424552917e-01 - 5.5244189500808716e-01 -4.0332382917404175e-01 - <_> - 3.9441356658935547e+01 - - 1 2 1326 2.5500000000000000e+01 0 -1 1327 - 5.0000000000000000e-01 -2 -3 1328 4.5000000000000000e+00 - - 1.5569829940795898e-01 -8.3738613128662109e-01 - 5.1308917999267578e-01 -9.2380218207836151e-02 - <_> - 3.9830265045166016e+01 - - 1 2 1329 6.8500000000000000e+01 0 -1 1330 - 1.2500000000000000e+01 -2 -3 1331 2043. - - -1.6650912165641785e-01 3.8890799880027771e-01 - -8.0130118131637573e-01 8.2459330558776855e-01 - <_> - 3.9304054260253906e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 3671. -2 -3 1334 - 3.8850000000000000e+02 - - 4.6532985568046570e-01 -4.4042190909385681e-01 - -5.5587589740753174e-01 1.3195018470287323e-01 - <_> - 3.9642890930175781e+01 - - 1 2 1335 8.5000000000000000e+00 0 -1 1336 - 2.1500000000000000e+01 -2 -3 1337 4.7350000000000000e+02 - - -5.9328550100326538e-01 3.3883699774742126e-01 - -6.9553929567337036e-01 1.5794724225997925e-01 - <_> - 3.9908969879150391e+01 - - 1 2 1338 5.5000000000000000e+00 0 -1 1339 - 1.3500000000000000e+01 -2 -3 1340 1.7500000000000000e+01 - - -6.7269146442413330e-01 2.6607844233512878e-01 - 6.0325987637042999e-02 -6.9073736667633057e-01 - <_> - 3.9898288726806641e+01 - - 1 2 1341 2.5950000000000000e+02 0 -1 1342 - 1.5500000000000000e+01 -2 -3 1343 1467. - - -7.4252463877201080e-02 6.0873824357986450e-01 - 8.6466276645660400e-01 -9.0673094987869263e-01 - <_> - 4.0200969696044922e+01 - - 1 2 1344 2.2500000000000000e+01 0 -1 1345 - 2.5000000000000000e+00 -2 -3 1346 9.5000000000000000e+00 - - -6.9203126430511475e-01 3.0267745256423950e-01 - 5.9105551242828369e-01 -5.3770178556442261e-01 - <_> - 4.0379238128662109e+01 - - 1 2 1347 2.9500000000000000e+01 0 -1 1348 - 8.3450000000000000e+02 -2 -3 1349 2.5000000000000000e+00 - - 3.7345203757286072e-01 -8.9355528354644775e-01 - 5.5846959352493286e-01 -5.8389563113451004e-02 - <_> - 4.0466419219970703e+01 - - 1 2 1350 3.1150000000000000e+02 0 -1 1351 - 5.0000000000000000e-01 -2 -3 1352 43. - - 3.1653991341590881e-01 -4.0619984269142151e-01 - -9.6266198158264160e-01 5.1727998256683350e-01 - <_> - 4.0718650817871094e+01 - - 1 2 1353 2.6150000000000000e+02 0 -1 1354 98. -2 -3 1355 - 8.5000000000000000e+00 - - -5.2089494466781616e-01 2.5222977995872498e-01 - -6.5091305971145630e-01 5.5701977014541626e-01 - <_> - 4.0246669769287109e+01 - - 1 2 1356 5.0000000000000000e-01 0 -1 1357 - 7.5000000000000000e+00 -2 -3 1358 2.0850000000000000e+02 - - -7.2299337387084961e-01 5.0567185878753662e-01 - -4.7197958827018738e-01 2.6619127392768860e-01 - <_> - 4.0419990539550781e+01 - - 1 2 1359 5.4705000000000000e+03 0 -1 1360 - 5.4750000000000000e+02 -2 -3 1361 1.5750000000000000e+02 - - 1.7332153022289276e-01 -6.0361874103546143e-01 - -9.6441686153411865e-01 1. - <_> - 4.1056423187255859e+01 - - 1 2 1362 5.0000000000000000e-01 0 -1 1363 - 3.5000000000000000e+00 -2 -3 1364 7.8350000000000000e+02 - - 6.3643354177474976e-01 -8.3072267472743988e-02 - -3.8505536317825317e-01 5.1825720071792603e-01 - <_> - 4.0787433624267578e+01 - - 1 2 1365 8.5000000000000000e+00 0 -1 1366 - 4.1250000000000000e+02 -2 -3 1367 3.0850000000000000e+02 - - -2.2618213668465614e-02 -7.3404783010482788e-01 - 5.4074966907501221e-01 -6.5069526433944702e-01 - <_> - 4.0980438232421875e+01 - - 1 2 1368 1.0750000000000000e+02 0 -1 1369 - 4.5500000000000000e+01 -2 -3 1370 1.5500000000000000e+01 - - 2.9288902878761292e-01 -7.8175473213195801e-01 - 4.1299736499786377e-01 -2.0014704763889313e-01 - <_> - 4.0946659088134766e+01 - - 1 2 1371 2.2500000000000000e+01 0 -1 1372 - 1.6500000000000000e+01 -2 -3 1373 2.5000000000000000e+00 - - -6.0043293237686157e-01 2.2489283978939056e-01 - 5.3942525386810303e-01 -1.2392763793468475e-01 - <_> - 4.0625984191894531e+01 - - 1 2 1374 5.8450000000000000e+02 0 -1 1375 3981. -2 -3 1376 - 3.8850000000000000e+02 - - -6.5919399261474609e-01 7.3984676599502563e-01 - 6.0902094841003418e-01 -5.9394266456365585e-02 - <_> - 4.1078342437744141e+01 - - 1 2 1377 1.5000000000000000e+00 0 -1 1378 - 9.5000000000000000e+00 -2 -3 1379 2.5000000000000000e+00 - - -9.4205194711685181e-01 5.8499878644943237e-01 - 4.5235899090766907e-01 -1.7015253007411957e-01 - <_> - 4.1278953552246094e+01 - - 1 2 1380 2.7950000000000000e+02 0 -1 1381 - 2.7950000000000000e+02 -2 -3 1382 7572. - - -1.0575494915246964e-01 7.5965499877929688e-01 - -5.6243377923965454e-01 1.3653093576431274e-01 - <_> - 4.1171962738037109e+01 - - 1 2 1383 5.5000000000000000e+00 0 -1 1384 - 8.6950000000000000e+02 -2 -3 1385 3.5000000000000000e+00 - - 3.1256729364395142e-01 -4.9650138616561890e-01 - 5.3703850507736206e-01 -1.0799391567707062e-01 - <_> - 4.1153244018554688e+01 - - 1 2 1386 1.5000000000000000e+00 0 -1 1387 - 8.5000000000000000e+00 -2 -3 1388 1.4500000000000000e+01 - - -1.8950442969799042e-01 5.2447348833084106e-01 - -4.3827834725379944e-01 3.5529047250747681e-01 - <_> - 4.1464454650878906e+01 - - 1 2 1389 2.7500000000000000e+01 0 -1 1390 - 3.1500000000000000e+01 -2 -3 1391 4.5000000000000000e+00 - - -3.4287273883819580e-01 3.1121128797531128e-01 - 2.0723707973957062e-01 -7.9717916250228882e-01 - <_> - 4.1779788970947266e+01 - - 1 2 1392 1.5000000000000000e+00 0 -1 1393 - 1.8265000000000000e+03 -2 -3 1394 2.8650000000000000e+02 - - 8.0022591352462769e-01 -2.8835564851760864e-01 - 3.1533339619636536e-01 -3.5018000006675720e-01 - <_> - 4.2194210052490234e+01 - - 1 2 1395 2.2500000000000000e+01 0 -1 1396 - 2.2500000000000000e+01 -2 -3 1397 7.5000000000000000e+00 - - 7.3232901096343994e-01 -7.3244142532348633e-01 - 3.6955040693283081e-01 -2.0323853194713593e-01 - <_> - 4.1935131072998047e+01 - - 1 2 1398 9.4500000000000000e+01 0 -1 1399 - 4.0500000000000000e+01 -2 -3 1400 2.2500000000000000e+01 - - 1.9609075784683228e-01 -4.6288254857063293e-01 - 6.2146210670471191e-01 -3.8049280643463135e-01 - <_> - 4.2215938568115234e+01 - - 1 2 1401 2.9500000000000000e+01 0 -1 1402 - 5.0000000000000000e-01 -2 -3 1403 1.0500000000000000e+01 - - 3.9385579526424408e-02 -7.3405563831329346e-01 - -5.1055783033370972e-01 2.8080457448959351e-01 - <_> - 4.2273452758789062e+01 - - 1 2 1404 4.5450000000000000e+02 0 -1 1405 - 5.8750000000000000e+02 -2 -3 1406 9.5000000000000000e+00 - - -3.3196282386779785e-01 2.5219461321830750e-01 - 7.2692161798477173e-01 -8.5374397039413452e-01 - <_> - 4.2540458679199219e+01 - - 1 2 1407 1.5000000000000000e+00 0 -1 1408 - 1.0500000000000000e+01 -2 -3 1409 3.7950000000000000e+02 - - -5.1572650671005249e-01 2.6700666546821594e-01 - 5.4633575677871704e-01 -6.4842927455902100e-01 - <_> - 4.2285171508789062e+01 - - 1 2 1410 4.5000000000000000e+00 0 -1 1411 - 4.8500000000000000e+01 -2 -3 1412 1.1500000000000000e+01 - - -4.3229374289512634e-01 5.2580875158309937e-01 - -3.8174706697463989e-01 6.1482822895050049e-01 - <_> - 4.2519309997558594e+01 - - 1 2 1413 1.2500000000000000e+01 0 -1 1414 - 7.5000000000000000e+00 -2 -3 1415 3.7500000000000000e+01 - - -6.5897458791732788e-01 2.3413842916488647e-01 - -6.6297173500061035e-01 9.3680036067962646e-01 - <_> - 4.2602912902832031e+01 - - 1 2 1416 2.7850000000000000e+02 0 -1 1417 - 6.7750000000000000e+02 -2 -3 1418 6.5750000000000000e+02 - - -5.7975625991821289e-01 6.0615879297256470e-01 - -4.7606697678565979e-01 1.9234745204448700e-01 - <_> - 4.2477813720703125e+01 - - 1 2 1419 3.5000000000000000e+00 0 -1 1420 - 5.0000000000000000e-01 -2 -3 1421 9.6750000000000000e+02 - - -1. 5.3890687227249146e-01 -2.7986538410186768e-01 - 5.5624389648437500e-01 - <_> - 4.2815971374511719e+01 - - 1 2 1422 2.5000000000000000e+00 0 -1 1423 3470. -2 -3 1424 - 1.3150000000000000e+02 - - 3.3815622329711914e-01 -6.8323451280593872e-01 - -5.7661479711532593e-01 1.8929332494735718e-01 - <_> - 4.2939407348632812e+01 - - 1 2 1425 1835. 0 -1 1426 1485. -2 -3 1427 - 5.0000000000000000e-01 - - -9.3249452114105225e-01 8.5018444061279297e-01 - 1.2343621253967285e-01 -4.1629931330680847e-01 - <_> - 4.2931537628173828e+01 - - 1 2 1428 6.5000000000000000e+00 0 -1 1429 - 9.5000000000000000e+00 -2 -3 1430 8.3500000000000000e+01 - - -5.8253604173660278e-01 2.3116320371627808e-01 - 4.4566446542739868e-01 -2.5381112098693848e-01 - <_> - 4.2532341003417969e+01 - - 1 2 1431 801. 0 -1 1432 1.4500000000000000e+01 -2 -3 1433 - 2.2500000000000000e+01 - - 2.3233406245708466e-01 -8.8682103157043457e-01 - 2.7638220787048340e-01 -3.9919924736022949e-01 - <_> - 4.2818271636962891e+01 - - 1 2 1434 3.3500000000000000e+01 0 -1 1435 - 5.0000000000000000e-01 -2 -3 1436 5.5000000000000000e+00 - - 2.6199400424957275e-01 -7.7381122112274170e-01 - 3.9374157786369324e-01 -1.9156071543693542e-01 - <_> - 4.3225166320800781e+01 - - 1 2 1437 3.0650000000000000e+02 0 -1 1438 - 3.5000000000000000e+00 -2 -3 1439 2.2750000000000000e+02 - - 1.6485489904880524e-01 -5.3608208894729614e-01 - 4.0689289569854736e-01 -6.9017094373703003e-01 - <_> - 4.3414455413818359e+01 - - 1 2 1440 4.9500000000000000e+01 0 -1 1441 - 3.2550000000000000e+02 -2 -3 1442 7.5500000000000000e+01 - - -7.2704082727432251e-01 9.2259776592254639e-01 - 1.8928927183151245e-01 -7.1190369129180908e-01 - <_> - 4.3530220031738281e+01 - - 1 2 1443 8.5000000000000000e+00 0 -1 1444 - 5.5000000000000000e+00 -2 -3 1445 33. - - -2.6097178459167480e-01 3.5981386899948120e-01 - 5.5373930931091309e-01 -5.9446001052856445e-01 - <_> - 4.3589599609375000e+01 - - 1 2 1446 1.7500000000000000e+01 0 -1 1447 - 1.5000000000000000e+00 -2 -3 1448 7.1500000000000000e+01 - - -8.9150971174240112e-01 4.0421536564826965e-01 - -5.9817147254943848e-01 1.3356564939022064e-01 - <_> - 4.3756496429443359e+01 - - 1 2 1449 2.7150000000000000e+02 0 -1 1450 - 3.1500000000000000e+01 -2 -3 1451 7.5000000000000000e+00 - - -7.5597035884857178e-01 7.5368809700012207e-01 - 2.0741133391857147e-01 -3.4641715884208679e-01 - <_> - 4.4184627532958984e+01 - - 1 2 1452 3.4445000000000000e+03 0 -1 1453 - 1.3500000000000000e+01 -2 -3 1454 7.5000000000000000e+00 - - -3.4672267735004425e-02 6.4763146638870239e-01 - -5.8406358957290649e-01 9.5271444320678711e-01 - <_> - 4.4115615844726562e+01 - - 1 2 1455 351. 0 -1 1456 5.5000000000000000e+00 -2 -3 1457 - 1.3150000000000000e+02 - - 1. -9.0385907888412476e-01 5.6236469745635986e-01 - -6.9008864462375641e-02 - <_> - 4.3778049468994141e+01 - - 1 2 1458 2.1950000000000000e+02 0 -1 1459 - 1.7500000000000000e+01 -2 -3 1460 1446. - - 1.1805868148803711e-01 -4.6155539155006409e-01 - 8.1571227312088013e-01 -4.5998147130012512e-01 - <_> - 4.3705924987792969e+01 - - 1 2 1461 5.4500000000000000e+01 0 -1 1462 - 5.0000000000000000e-01 -2 -3 1463 2.0500000000000000e+01 - - 1.5270361304283142e-01 -7.6259005069732666e-01 - -4.3407937884330750e-01 3.2683727145195007e-01 - <_> - 4.3761566162109375e+01 - - 1 2 1464 1.5000000000000000e+00 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.2883574962615967e-01 4.9130806326866150e-01 - 7.2157061100006104e-01 -3.4332326054573059e-01 - <_> - 4.4159553527832031e+01 - - 1 2 1467 1.8850000000000000e+02 0 -1 1468 - 4.4500000000000000e+01 -2 -3 1469 1.6865000000000000e+03 - - -1.2656107544898987e-01 3.9798957109451294e-01 - -8.5940158367156982e-01 7.5859928131103516e-01 - <_> - 4.4086994171142578e+01 - - 1 2 1470 3.5000000000000000e+00 0 -1 1471 - 1.6500000000000000e+01 -2 -3 1472 2.0500000000000000e+01 - - -7.1025812625885010e-01 3.1149634718894958e-01 - 4.1715073585510254e-01 -5.0822889804840088e-01 - <_> - 4.4548297882080078e+01 - - 1 2 1473 5.0000000000000000e-01 0 -1 1474 - 6.3500000000000000e+01 -2 -3 1475 1.4450000000000000e+02 - - -1.9292996823787689e-01 5.2084052562713623e-01 - -1.8266052007675171e-02 -7.4490708112716675e-01 - <_> - 4.4444839477539062e+01 - - 1 2 1476 5.5000000000000000e+00 0 -1 1477 - 1.8500000000000000e+01 -2 -3 1478 2.1500000000000000e+01 - - -5.8617092669010162e-02 5.7820588350296021e-01 - -4.1243070363998413e-01 6.0866367816925049e-01 - <_> - 4.4468860626220703e+01 - - 1 2 1479 4.5000000000000000e+00 0 -1 1480 - 2.3450000000000000e+02 -2 -3 1481 1.4500000000000000e+01 - - 2.8463301062583923e-01 -8.2563692331314087e-01 - -5.8707511425018311e-01 2.5017964839935303e-01 - <_> - 4.4571441650390625e+01 - - 1 2 1482 3.3450000000000000e+02 0 -1 1483 - 2.1500000000000000e+01 -2 -3 1484 946. - - -4.3612629175186157e-01 1.0257755219936371e-01 - 9.7813111543655396e-01 -8.0724465847015381e-01 - <_> - 4.4642127990722656e+01 - - 1 2 1485 1.5000000000000000e+00 0 -1 1486 - 8.5000000000000000e+00 -2 -3 1487 2.0500000000000000e+01 - - -9.3800437450408936e-01 6.0421532392501831e-01 - -6.4370167255401611e-01 2.7616502717137337e-02 - <_> - 4.4928077697753906e+01 - - 1 2 1488 5.0000000000000000e-01 0 -1 1489 - 2.6500000000000000e+01 -2 -3 1490 7.9250000000000000e+02 - - -6.6210180521011353e-02 6.4315652847290039e-01 - 6.9847983121871948e-01 -3.6571246385574341e-01 - <_> - 4.4592266082763672e+01 - - 1 2 1491 5.0000000000000000e-01 0 -1 1492 - 5.5350000000000000e+02 -2 -3 1493 1.5000000000000000e+00 - - -3.8149592280387878e-01 6.3860899209976196e-01 - 3.4885448217391968e-01 -3.3581241965293884e-01 - <_> - 4.4829784393310547e+01 - - 1 2 1494 1.5500000000000000e+01 0 -1 1495 - 2.7850000000000000e+02 -2 -3 1496 3.5000000000000000e+00 - - 6.8045026063919067e-01 -8.0610173940658569e-01 - -5.2162581682205200e-01 2.3751950263977051e-01 - <_> - 4.5090461730957031e+01 - - 1 2 1497 2.3500000000000000e+01 0 -1 1498 - 5.5000000000000000e+00 -2 -3 1499 1.3500000000000000e+01 - - -1.3596580922603607e-01 4.8954018950462341e-01 - -5.6967926025390625e-01 3.6096325516700745e-01 - <_> - 4.5232925415039062e+01 - - 1 2 1500 2154. 0 -1 1501 2.7550000000000000e+02 -2 -3 1502 - 128. - - 1.4246465265750885e-01 -8.8002961874008179e-01 1. - -9.7181195020675659e-01 - <_> - 4.5529132843017578e+01 - - 1 2 1503 5.8750000000000000e+02 0 -1 1504 3981. -2 -3 1505 - 5.0000000000000000e-01 - - -5.8577227592468262e-01 5.8029693365097046e-01 - 4.0880706906318665e-01 -2.0956511795520782e-01 - <_> - 4.5304393768310547e+01 - - 1 2 1506 1.6785000000000000e+03 0 -1 1507 - 4.2005000000000000e+03 -2 -3 1508 359. - - 2.9394268989562988e-02 8.0651479959487915e-01 - -3.3733904361724854e-01 6.9124865531921387e-01 - <_> - 4.5737625122070312e+01 - - 1 2 1509 2.7500000000000000e+01 0 -1 1510 - 5.0000000000000000e-01 -2 -3 1511 2.5000000000000000e+00 - - 2.7190417051315308e-01 -6.8398970365524292e-01 - 5.1673895120620728e-01 -5.9552457183599472e-02 - <_> - 4.5805149078369141e+01 - - 1 2 1512 5.6550000000000000e+02 0 -1 1513 - 1.1500000000000000e+01 -2 -3 1514 1.3500000000000000e+01 - - -5.3953158855438232e-01 4.1888201236724854e-01 - -7.7625131607055664e-01 -1.5986794605851173e-02 - <_> - 4.5724216461181641e+01 - - 1 2 1515 1.0500000000000000e+01 0 -1 1516 - 5.5000000000000000e+00 -2 -3 1517 25. - - 4.2757162451744080e-01 -2.2005110979080200e-01 - -5.4273819923400879e-01 8.9083051681518555e-01 - <_> - 4.5885368347167969e+01 - - 1 2 1518 238. 0 -1 1519 9.5000000000000000e+00 -2 -3 1520 - 2.0850000000000000e+02 - - -9.5597231388092041e-01 5.2587646245956421e-01 - 1.6115142405033112e-01 -7.6278209686279297e-01 - <_> - 4.5789482116699219e+01 - - 1 2 1521 2.9500000000000000e+01 0 -1 1522 - 2.6500000000000000e+01 -2 -3 1523 1.5450000000000000e+02 - - 1.6601219773292542e-01 -7.7067446708679199e-01 - -6.6907399892807007e-01 2.2051426768302917e-01 - <_> - 4.5806617736816406e+01 - - 1 2 1524 4.5000000000000000e+00 0 -1 1525 - 1.1500000000000000e+01 -2 -3 1526 3.5000000000000000e+00 - - -5.7005125284194946e-01 2.7322229743003845e-01 - 7.9801094532012939e-01 -5.2006053924560547e-01 - <_> - 4.6323131561279297e+01 - - 1 2 1527 1.3500000000000000e+01 0 -1 1528 - 3.4500000000000000e+01 -2 -3 1529 3.5000000000000000e+00 - - -5.5972643196582794e-02 5.1800715923309326e-01 - 3.3099360764026642e-02 -9.6488022804260254e-01 - <_> - 4.6282222747802734e+01 - - 1 2 1530 7.7250000000000000e+02 0 -1 1531 - 1.3500000000000000e+01 -2 -3 1532 1.1545000000000000e+03 - - -1.0771922767162323e-02 -8.7211072444915771e-01 - 7.0063769817352295e-01 -4.2402658611536026e-02 - <_> - 4.6205421447753906e+01 - - 1 2 1533 1.5000000000000000e+00 0 -1 1534 - 1.1500000000000000e+01 -2 -3 1535 1.5500000000000000e+01 - - -7.8480374813079834e-01 4.9849182367324829e-01 - 2.8026169538497925e-01 -3.8838988542556763e-01 - <_> - 4.6704681396484375e+01 - - 1 2 1536 2.5650000000000000e+02 0 -1 1537 - 9.5000000000000000e+00 -2 -3 1538 3.6145000000000000e+03 - - 8.8258177042007446e-01 -1. -6.1924713850021362e-01 - 6.9299057126045227e-02 - <_> - 4.6858192443847656e+01 - - 1 2 1539 1.6500000000000000e+01 0 -1 1540 - 2.1950000000000000e+02 -2 -3 1541 5.0000000000000000e-01 - - 3.5154920816421509e-01 -7.6912820339202881e-01 - 4.3404066562652588e-01 -1.0876829922199249e-01 - <_> - 4.6701599121093750e+01 - - 1 2 1542 3.5000000000000000e+00 0 -1 1543 - 4.1500000000000000e+01 -2 -3 1544 4.5000000000000000e+00 - - -8.0593466758728027e-01 6.3903629779815674e-01 - 4.0837219357490540e-01 -1.5659359097480774e-01 - <_> - 4.6904064178466797e+01 - - 1 2 1545 2.9500000000000000e+01 0 -1 1546 - 1.5000000000000000e+00 -2 -3 1547 219. - - -4.2634201049804688e-01 2.0246233046054840e-01 - -8.5641664266586304e-01 1. - <_> - 4.6656322479248047e+01 - - 1 2 1548 6.5000000000000000e+00 0 -1 1549 - 3.2500000000000000e+01 -2 -3 1550 4.1650000000000000e+02 - - -2.4700936675071716e-01 6.6941606998443604e-01 - 3.2602754235267639e-01 -3.6878246068954468e-01 - <_> - 4.6564968109130859e+01 - - 1 2 1551 1.2450000000000000e+02 0 -1 1552 - 5.5000000000000000e+00 -2 -3 1553 2.4150000000000000e+02 - - 4.5446833968162537e-01 -3.7261262536048889e-01 - 4.6772354841232300e-01 -7.1237772703170776e-01 - <_> - 4.6805198669433594e+01 - - 1 2 1554 4.5000000000000000e+00 0 -1 1555 - 7.3500000000000000e+01 -2 -3 1556 1.9500000000000000e+01 - - 2.4023169279098511e-01 -4.3494370579719543e-01 - -8.5679495334625244e-01 5.3150933980941772e-01 - <_> - 4.6938976287841797e+01 - - 1 2 1557 2.0850000000000000e+02 0 -1 1558 - 1.5000000000000000e+00 -2 -3 1559 4.5000000000000000e+00 - - 1.3377590477466583e-01 -4.7894757986068726e-01 - -7.4763888120651245e-01 4.7673630714416504e-01 - <_> - 4.7246456146240234e+01 - - 1 2 1560 2.5000000000000000e+00 0 -1 1561 6. -2 -3 1562 - 1.5000000000000000e+00 - - -9.0447050333023071e-01 8.6583727598190308e-01 - 3.0747944116592407e-01 -2.1712197363376617e-01 - <_> - 4.7012886047363281e+01 - - 1 2 1563 1.0500000000000000e+01 0 -1 1564 - 2.5000000000000000e+00 -2 -3 1565 2.4500000000000000e+01 - - -8.6812806129455566e-01 7.4207389354705811e-01 - -4.6920669078826904e-01 2.0873917639255524e-01 - <_> - 4.7398384094238281e+01 - - 1 2 1566 5.0000000000000000e-01 0 -1 1567 - 4.1500000000000000e+01 -2 -3 1568 1.2365000000000000e+03 - - -2.2475609183311462e-01 5.0746756792068481e-01 - -5.6809660047292709e-02 -7.4659413099288940e-01 - <_> - 4.7630195617675781e+01 - - 1 2 1569 7.5000000000000000e+00 0 -1 1570 - 4.5500000000000000e+01 -2 -3 1571 27. - - 2.3181208968162537e-01 -6.4988273382186890e-01 - -6.4328664541244507e-01 6.1851358413696289e-01 - <_> - 4.7380603790283203e+01 - - 1 2 1572 5.5000000000000000e+00 0 -1 1573 - 2.5000000000000000e+00 -2 -3 1574 1.8650000000000000e+02 - - 6.1403033323585987e-03 -5.5332463979721069e-01 - 4.5167797803878784e-01 -7.4148744344711304e-01 - <_> - 4.7716838836669922e+01 - - 1 2 1575 5.0500000000000000e+01 0 -1 1576 340. -2 -3 1577 - 1.5000000000000000e+00 - - 4.3912079930305481e-01 -7.3454135656356812e-01 - 6.4382767677307129e-01 -1.5953628346323967e-02 - <_> - 4.7556518554687500e+01 - - 1 2 1578 8.4500000000000000e+01 0 -1 1579 311. -2 -3 1580 - 5.0000000000000000e-01 - - 8.0123282968997955e-02 -7.0855069160461426e-01 - 4.7582688927650452e-01 -1.6031953692436218e-01 - <_> - 4.7572052001953125e+01 - - 1 2 1581 4.1250000000000000e+02 0 -1 1582 - 2.5000000000000000e+00 -2 -3 1583 1.0405000000000000e+03 - - 5.3272254765033722e-02 -6.1080712080001831e-01 - 5.7476472854614258e-01 -3.3661961555480957e-01 - <_> - 4.7565738677978516e+01 - - 1 2 1584 8.1450000000000000e+02 0 -1 1585 - 5.7750000000000000e+02 -2 -3 1586 8.5000000000000000e+00 - - 8.0671536922454834e-01 -4.1966786980628967e-01 - 1.6598591208457947e-01 -3.8562926650047302e-01 - <_> - 4.7773296356201172e+01 - - 1 2 1587 1.5000000000000000e+00 0 -1 1588 1174. -2 -3 1589 - 3.9500000000000000e+01 - - 1. -9.7881591320037842e-01 2.0755772292613983e-01 - -5.1666331291198730e-01 - <_> - 4.8310127258300781e+01 - - 1 2 1590 1.9500000000000000e+01 0 -1 1591 - 5.0000000000000000e-01 -2 -3 1592 3.5000000000000000e+00 - - 7.0349156856536865e-01 -7.1407133340835571e-01 - 5.4187601804733276e-01 -9.5178633928298950e-02 - <_> - 4.8071701049804688e+01 - - 1 2 1593 801. 0 -1 1594 8.5000000000000000e+00 -2 -3 1595 - 8.5000000000000000e+00 - - -2.3842808604240417e-01 4.0528839826583862e-01 - 8.4955078363418579e-01 -9.1280186176300049e-01 - <_> - 4.8208892822265625e+01 - - 1 2 1596 6.5000000000000000e+00 0 -1 1597 - 4.1500000000000000e+01 -2 -3 1598 1.8500000000000000e+01 - - -9.3895512819290161e-01 3.3225542306900024e-01 - -5.6959801912307739e-01 1.9758279621601105e-01 - <_> - 4.8468334197998047e+01 - - 1 2 1599 644. 0 -1 1600 3.1500000000000000e+01 -2 -3 1601 - 2.5500000000000000e+01 - - 4.6466782689094543e-01 -7.2437942028045654e-01 - 2.5944426655769348e-01 -5.1669490337371826e-01 - <_> - 4.8280807495117188e+01 - - 1 2 1602 5.8750000000000000e+02 0 -1 1603 998. -2 -3 1604 - 1.9450000000000000e+02 - - -5.6361049413681030e-01 8.2740515470504761e-01 - 7.3864108324050903e-01 -3.1339693814516068e-02 - <_> - 4.8574962615966797e+01 - - 1 2 1605 2.3450000000000000e+02 0 -1 1606 - 1.5000000000000000e+00 -2 -3 1607 1.4050000000000000e+02 - - 3.6085158586502075e-01 -1.9539615511894226e-01 - -9.4802927970886230e-01 2.6839014887809753e-01 - <_> - 4.8454341888427734e+01 - - 1 2 1608 3.9500000000000000e+01 0 -1 1609 - 5.0000000000000000e-01 -2 -3 1610 1.6650000000000000e+02 - - 1.0862217843532562e-01 -5.7014846801757812e-01 - 3.1803789734840393e-01 -8.6990028619766235e-01 - <_> - 4.8686836242675781e+01 - - 1 2 1611 7.5000000000000000e+00 0 -1 1612 - 4.4500000000000000e+01 -2 -3 1613 5.0000000000000000e-01 - - 4.4552764296531677e-01 -9.6768623590469360e-01 - 3.7845483422279358e-01 -2.0616437494754791e-01 - <_> - 4.8645317077636719e+01 - - 1 2 1614 2.1500000000000000e+01 0 -1 1615 - 5.7500000000000000e+01 -2 -3 1616 9.2500000000000000e+01 - - 2.0209166407585144e-01 -3.7205338478088379e-01 - 6.6951900720596313e-01 -9.7072052955627441e-01 - <_> - 4.8846817016601562e+01 - - 1 2 1617 1.8500000000000000e+01 0 -1 1618 - 1.9500000000000000e+01 -2 -3 1619 2.7500000000000000e+01 - - -9.0423774719238281e-01 4.2085230350494385e-01 - 2.0150278508663177e-01 -6.7301428318023682e-01 - <_> - 4.8628437042236328e+01 - - 1 2 1620 291. 0 -1 1621 6.5000000000000000e+00 -2 -3 1622 - 1.1500000000000000e+01 - - 2.5333371758460999e-01 -9.6325629949569702e-01 - -6.0980123281478882e-01 1.4127761125564575e-01 - <_> - 4.8402679443359375e+01 - - 1 2 1623 2.1050000000000000e+02 0 -1 1624 - 6.5000000000000000e+00 -2 -3 1625 3.2500000000000000e+01 - - 3.4403830766677856e-02 -5.8541810512542725e-01 - -6.9637399911880493e-01 4.9845540523529053e-01 - <_> - 4.8841716766357422e+01 - - 1 2 1626 7.5000000000000000e+00 0 -1 1627 - 4.9500000000000000e+01 -2 -3 1628 1.1500000000000000e+01 - - 4.3903854489326477e-01 -6.2086170911788940e-01 - -6.5002232789993286e-01 -1.5730377286672592e-02 - <_> - 4.9389339447021484e+01 - - 1 2 1629 80. 0 -1 1630 3.5000000000000000e+00 -2 -3 1631 - 1.0255000000000000e+03 - - 3.1859183311462402e-01 -4.2584937810897827e-01 - -8.9118802547454834e-01 5.4762154817581177e-01 - <_> - 4.8809658050537109e+01 - - 1 2 1632 5.0000000000000000e-01 0 -1 1633 - 9.1500000000000000e+01 -2 -3 1634 1.5500000000000000e+01 - - -2.0882329344749451e-01 5.9099739789962769e-01 - 3.5995401442050934e-02 -5.7967907190322876e-01 - <_> - 4.9262874603271484e+01 - - 1 2 1635 2.3500000000000000e+01 0 -1 1636 2138. -2 -3 1637 - 7.4500000000000000e+01 - - 2.5881242752075195e-01 -6.5358424186706543e-01 - -4.4690254330635071e-01 4.5321631431579590e-01 - <_> - 4.9810745239257812e+01 - - 1 2 1638 2.8905000000000000e+03 0 -1 1639 - 1.4034500000000000e+04 -2 -3 1640 5.0000000000000000e-01 - - 5.9278053045272827e-01 -9.4314843416213989e-01 - 3.9468899369239807e-01 -2.7942237257957458e-01 - <_> - 4.9740810394287109e+01 - - 1 2 1641 5.0000000000000000e-01 0 -1 1642 13. -2 -3 1643 - 6.4500000000000000e+01 - - -9.7298115491867065e-01 7.5200670957565308e-01 - 1.9612585008144379e-01 -5.2234607934951782e-01 - <_> - 4.9890090942382812e+01 - - 1 2 1644 7.5000000000000000e+00 0 -1 1645 - 8.5000000000000000e+00 -2 -3 1646 381. - - -5.6059420108795166e-01 5.0415074825286865e-01 - 4.8369589447975159e-01 -3.1803038716316223e-01 - <_> - 4.9964401245117188e+01 - - 1 2 1647 5.0000000000000000e-01 0 -1 1648 - 6.5000000000000000e+00 -2 -3 1649 1.5500000000000000e+01 - - -9.7737157344818115e-01 5.3311198949813843e-01 - -4.1340222954750061e-01 2.4446828663349152e-01 - <_> - 5.0132915496826172e+01 - - 1 2 1650 1.0500000000000000e+01 0 -1 1651 - 9.5000000000000000e+00 -2 -3 1652 182. - - -2.6112908124923706e-01 4.9358665943145752e-01 - 6.2064582109451294e-01 -4.5646050572395325e-01 - <_> - 5.0014610290527344e+01 - - 1 2 1653 6.5000000000000000e+00 0 -1 1654 2329. -2 -3 1655 - 6.6350000000000000e+02 - - 4.0677326917648315e-01 -7.2954016923904419e-01 - -5.2711308002471924e-01 2.2369565069675446e-01 - <_> - 5.0282009124755859e+01 - - 1 2 1656 1513. 0 -1 1657 6.6500000000000000e+01 -2 -3 1658 - 2.0125000000000000e+03 - - -9.2653149366378784e-01 5.6927061080932617e-01 - 6.3748288154602051e-01 -6.0769841074943542e-02 - <_> - 5.0116958618164062e+01 - - 1 2 1659 1.4500000000000000e+01 0 -1 1660 - 3.5000000000000000e+00 -2 -3 1661 1.6500000000000000e+01 - - -8.6243766546249390e-01 8.8660824298858643e-01 - 4.5358371734619141e-01 -1.6504985094070435e-01 - <_> - 5.0264678955078125e+01 - - 1 2 1662 1.1500000000000000e+01 0 -1 1663 - 4.5000000000000000e+00 -2 -3 1664 4.3500000000000000e+01 - - -8.9545702934265137e-01 1. 2.3749004304409027e-01 - -4.1009184718132019e-01 - <_> - 5.0537300109863281e+01 - - 1 2 1665 6.5000000000000000e+00 0 -1 1666 - 1.1500000000000000e+01 -2 -3 1667 4.8500000000000000e+01 - - 1.8909458816051483e-01 -6.9768869876861572e-01 - -3.7118515372276306e-01 2.7262043952941895e-01 - <_> - 5.0127769470214844e+01 - - 1 2 1668 2.5000000000000000e+00 0 -1 1669 49. -2 -3 1670 - 1.5000000000000000e+00 - - -7.0132219791412354e-01 4.8064956068992615e-01 - 2.1170513331890106e-01 -4.0953138470649719e-01 - <_> - 5.0477714538574219e+01 - - 1 2 1671 2.5000000000000000e+00 0 -1 1672 - 1.5650000000000000e+02 -2 -3 1673 1.1995000000000000e+03 - - 3.4994655847549438e-01 -7.3900407552719116e-01 - -6.3774943351745605e-01 -4.0900995954871178e-03 - <_> - 5.0603004455566406e+01 - - 1 2 1674 2.7950000000000000e+02 0 -1 1675 8514. -2 -3 1676 - 4.0500000000000000e+01 - - 9.1369850561022758e-03 8.2339012622833252e-01 - -5.2016735076904297e-01 1.2528854608535767e-01 - <_> - 5.0545921325683594e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 3.9500000000000000e+01 -2 -3 1679 1.6500000000000000e+01 - - -1.4933063089847565e-01 4.4103890657424927e-01 - -5.4845666885375977e-01 3.5070386528968811e-01 - <_> - 5.0866680145263672e+01 - - 1 2 1680 5.1950000000000000e+02 0 -1 1681 - 1.2150000000000000e+02 -2 -3 1682 1.5000000000000000e+00 - - -1.7503215372562408e-01 3.2076016068458557e-01 - 5.0803476572036743e-01 -9.5718288421630859e-01 - <_> - 5.0898628234863281e+01 - - 1 2 1683 5.0000000000000000e-01 0 -1 1684 - 6.5000000000000000e+00 -2 -3 1685 1.5500000000000000e+01 - - -8.3207756280899048e-01 7.2688364982604980e-01 - 8.6272723972797394e-02 -4.6617463231086731e-01 - <_> - 5.0805313110351562e+01 - - 1 2 1686 5.7750000000000000e+02 0 -1 1687 - 6.5000000000000000e+00 -2 -3 1688 1.3950000000000000e+02 - - -8.3755981922149658e-01 5.7054156064987183e-01 - 4.9337804317474365e-01 -9.3315914273262024e-02 - <_> - 5.0919166564941406e+01 - - 1 2 1689 1.5095000000000000e+03 0 -1 1690 - 7.5000000000000000e+00 -2 -3 1691 6720. - - 2.1196880936622620e-01 -3.8356184959411621e-01 - 5.3207170963287354e-01 -7.4764668941497803e-01 - <_> - 5.0936717987060547e+01 - - 1 2 1692 4.0500000000000000e+01 0 -1 1693 - 1.5000000000000000e+00 -2 -3 1694 5.0000000000000000e-01 - - -3.7224005907773972e-02 -8.9793884754180908e-01 - 7.6496970653533936e-01 1.7551671713590622e-02 - <_> - 5.1368896484375000e+01 - - 1 2 1695 2.5550000000000000e+02 0 -1 1696 1484. -2 -3 1697 - 7.5000000000000000e+00 - - -1. 9.0734022855758667e-01 -2.2103266417980194e-01 - 4.3218004703521729e-01 - <_> - 5.1568653106689453e+01 - - 1 2 1698 8.1615000000000000e+03 0 -1 1699 - 5.0000000000000000e-01 -2 -3 1700 28. - - -9.8341357707977295e-01 1.9975320994853973e-01 - -1.2860924005508423e-01 -9.3606525659561157e-01 - <_> - 5.1350795745849609e+01 - - 1 2 1701 5.0000000000000000e-01 0 -1 1702 - 1.8500000000000000e+01 -2 -3 1703 3.5000000000000000e+00 - - -7.4128049612045288e-01 3.7650343775749207e-01 - 3.4844925999641418e-01 -4.2916879057884216e-01 - <_> - 5.1636371612548828e+01 - - 1 2 1704 3.5000000000000000e+00 0 -1 1705 32. -2 -3 1706 - 1.5000000000000000e+00 - - 1. -9.1778641939163208e-01 -3.0592209100723267e-01 - 2.8557664155960083e-01 - <_> - 5.2074638366699219e+01 - - 1 2 1707 4.5000000000000000e+00 0 -1 1708 - 2.5500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - -1.7822149395942688e-01 4.3826532363891602e-01 - -5.1980108022689819e-01 4.8558112978935242e-01 - <_> - 5.1970214843750000e+01 - - 1 2 1710 5.9500000000000000e+01 0 -1 1711 - 1.0500000000000000e+01 -2 -3 1712 544. - - 3.5063171386718750e-01 -3.3192864060401917e-01 - -6.3897025585174561e-01 2.3550751805305481e-01 - <_> - 5.2024555206298828e+01 - - 1 2 1713 4.5000000000000000e+00 0 -1 1714 - 1.3950000000000000e+02 -2 -3 1715 1.5000000000000000e+00 - - 2.8414461016654968e-01 -5.8255207538604736e-01 - -6.8949204683303833e-01 3.0280160903930664e-01 - <_> - 5.1652011871337891e+01 - - 1 2 1716 1.5000000000000000e+00 0 -1 1717 - 1.0500000000000000e+01 -2 -3 1718 2.5000000000000000e+00 - - -6.4423668384552002e-01 7.1819794178009033e-01 - 1.2163987010717392e-01 -4.3241024017333984e-01 - <_> - 5.2231746673583984e+01 - - 1 2 1719 2.1550000000000000e+02 0 -1 1720 - 5.0000000000000000e-01 -2 -3 1721 1966. - - 1.3263493776321411e-01 -4.2725384235382080e-01 - 8.6758172512054443e-01 -2.6626121997833252e-01 - <_> - 5.2511852264404297e+01 - - 1 2 1722 5.3450000000000000e+02 0 -1 1723 - 1.1500000000000000e+01 -2 -3 1724 4.5000000000000000e+00 - - 2.5023856759071350e-01 -8.6206442117691040e-01 - -4.7992885112762451e-01 2.8010553121566772e-01 - <_> - 5.2546646118164062e+01 - - 1 2 1725 1.2500000000000000e+01 0 -1 1726 - 3.2500000000000000e+01 -2 -3 1727 5.8895000000000000e+03 - - -1.0283301770687103e-01 5.0622606277465820e-01 - 3.4796718508005142e-02 -7.5529223680496216e-01 - <_> - 5.2223571777343750e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 5.8550000000000000e+02 -2 -3 1730 2.0500000000000000e+01 - - -3.2307562232017517e-01 4.2715775966644287e-01 - 5.5647647380828857e-01 -4.0453824400901794e-01 - <_> - 5.2863487243652344e+01 - - 1 2 1731 3.3595000000000000e+03 0 -1 1732 - 1.6685000000000000e+03 -2 -3 1733 7.5000000000000000e+00 - - -1.1682216823101044e-01 7.5274443626403809e-01 - -3.0044618248939514e-01 7.6707494258880615e-01 - <_> - 5.3050804138183594e+01 - - 1 2 1734 1.5000000000000000e+00 0 -1 1735 - 1.5500000000000000e+01 -2 -3 1736 1.5000000000000000e+00 - - 6.9346052408218384e-01 -9.0690630674362183e-01 - -9.2264664173126221e-01 1.8731895089149475e-01 - <_> - 5.3262607574462891e+01 - - 1 2 1737 5.0000000000000000e-01 0 -1 1738 - 3.5000000000000000e+00 -2 -3 1739 3.3550000000000000e+02 - - -3.2821202278137207e-01 5.9129446744918823e-01 - -5.1578968763351440e-01 9.9953614175319672e-02 - <_> - 5.3258419036865234e+01 - - 1 2 1740 1.9500000000000000e+01 0 -1 1741 - 1.2500000000000000e+01 -2 -3 1742 1.5000000000000000e+00 - - 3.8119539618492126e-01 -1.9959560036659241e-01 - 6.4132863283157349e-01 -7.4302184581756592e-01 - <_> - 5.3413326263427734e+01 - - 1 2 1743 7.6500000000000000e+01 0 -1 1744 - 5.8750000000000000e+02 -2 -3 1745 5.5000000000000000e+00 - - -7.1226209402084351e-01 1.5490560233592987e-01 - -9.5072907209396362e-01 1. - <_> - 5.3368370056152344e+01 - - 1 2 1746 1.4355000000000000e+03 0 -1 1747 - 2.5293500000000000e+04 -2 -3 1748 3.5000000000000000e+00 - - -4.4957466423511505e-02 7.0797920227050781e-01 - 2.4098557233810425e-01 -5.3875494003295898e-01 - <_> - 5.3336959838867188e+01 - - 1 2 1749 2.5500000000000000e+01 0 -1 1750 - 2.0500000000000000e+01 -2 -3 1751 2.7375000000000000e+03 - - -7.6909404993057251e-01 -4.0910251438617706e-02 - -8.7062567472457886e-02 6.8476140499114990e-01 - <_> - 5.3268756866455078e+01 - - 1 2 1752 3.7500000000000000e+01 0 -1 1753 2449. -2 -3 1754 - 3.4085000000000000e+03 - - 2.9082170128822327e-01 -3.9411529898643494e-01 - 6.2446767091751099e-01 -7.7681422233581543e-01 - <_> - 5.3295890808105469e+01 - - 1 2 1755 1.5500000000000000e+01 0 -1 1756 - 1.5000000000000000e+00 -2 -3 1757 6.3500000000000000e+01 - - 2.3223483562469482e-01 -3.3189105987548828e-01 - 8.2484543323516846e-01 -1. - <_> - 5.3821460723876953e+01 - - 1 2 1758 7.5000000000000000e+00 0 -1 1759 32. -2 -3 1760 - 3.5000000000000000e+00 - - 7.7407427132129669e-02 -9.0338480472564697e-01 - 5.2557128667831421e-01 -8.5458166897296906e-02 - <_> - 5.3644256591796875e+01 - - 1 2 1761 2.3500000000000000e+01 0 -1 1762 - 1.7500000000000000e+01 -2 -3 1763 5.5500000000000000e+01 - - 1.9049738347530365e-01 -6.4127218723297119e-01 - -5.8284378051757812e-01 3.6358082294464111e-01 - <_> - 5.3565219879150391e+01 - - 1 2 1764 5.0000000000000000e-01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 6.2650000000000000e+02 - - -9.1313230991363525e-01 3.1892377138137817e-01 - -5.0848573446273804e-01 4.0014332532882690e-01 - <_> - 5.3612766265869141e+01 - - 1 2 1767 2.7500000000000000e+01 0 -1 1768 - 1.1850000000000000e+02 -2 -3 1769 6.5000000000000000e+00 - - -1.1785164475440979e-01 4.6228489279747009e-01 - 8.3617496490478516e-01 -7.2740668058395386e-01 - <_> - 5.3733577728271484e+01 - - 1 2 1770 1.3500000000000000e+01 0 -1 1771 - 6.5000000000000000e+00 -2 -3 1772 1.3500000000000000e+01 - - -4.3037781119346619e-01 4.0931895375251770e-01 - -8.7283575534820557e-01 -1.1174897849559784e-01 - <_> - 5.3474098205566406e+01 - - 1 2 1773 2.2500000000000000e+01 0 -1 1774 - 1.5000000000000000e+00 -2 -3 1775 6.8500000000000000e+01 - - -4.9783071875572205e-01 3.2450476288795471e-01 - -5.4798841476440430e-01 4.3143227696418762e-01 - <_> - 5.3782051086425781e+01 - - 1 2 1776 7.5000000000000000e+00 0 -1 1777 - 7.5000000000000000e+00 -2 -3 1778 5.8850000000000000e+02 - - 3.0795454978942871e-01 -4.3086576461791992e-01 - 2.5671597104519606e-03 -7.0709168910980225e-01 - <_> - 5.4081798553466797e+01 - - 1 2 1779 4.1250000000000000e+02 0 -1 1780 2532. -2 -3 1781 - 4.2500000000000000e+01 - - 1.1845014244318008e-01 -4.8000225424766541e-01 - -7.1575754880905151e-01 4.8367628455162048e-01 - <_> - 5.3729518890380859e+01 - - 1 2 1782 4.5000000000000000e+00 0 -1 1783 - 4.0500000000000000e+01 -2 -3 1784 5.0000000000000000e-01 - - -6.5016943216323853e-01 4.5923739671707153e-01 - 7.4234819412231445e-01 -3.5227757692337036e-01 - <_> - 5.3706134796142578e+01 - - 1 2 1785 1.7500000000000000e+01 0 -1 1786 - 2.0500000000000000e+01 -2 -3 1787 35. - - -2.3385923355817795e-02 5.5982124805450439e-01 - -7.7798545360565186e-01 5.9317058324813843e-01 - <_> - 5.4069709777832031e+01 - - 1 2 1788 3.0650000000000000e+02 0 -1 1789 - 6.7500000000000000e+01 -2 -3 1790 1.5000000000000000e+00 - - -2.0442806184291840e-01 3.6357563734054565e-01 - 4.3344959616661072e-01 -7.8407233953475952e-01 - <_> - 5.4122543334960938e+01 - - 1 2 1791 6.9550000000000000e+02 0 -1 1792 - 2.0150000000000000e+02 -2 -3 1793 1.5500000000000000e+01 - - -2.8922367095947266e-01 4.2674824595451355e-01 - -6.8660050630569458e-01 5.2831500768661499e-02 - <_> - 5.4034683227539062e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 5.9715000000000000e+03 -2 -3 1796 4.5000000000000000e+00 - - -5.2834486961364746e-01 4.5531541109085083e-01 - 1.1746359616518021e-01 -4.9576222896575928e-01 - <_> - 5.4980464935302734e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 2.9450000000000000e+02 -2 -3 1799 7.5000000000000000e+00 - - -3.2881252467632294e-02 -9.8305457830429077e-01 - 9.4577944278717041e-01 -1. - <_> - 5.5089954376220703e+01 - - 1 2 1800 2.5000000000000000e+00 0 -1 1801 39. -2 -3 1802 - 9.4950000000000000e+02 - - -1. 1. 1.6094356775283813e-01 -5.4309475421905518e-01 - <_> - 5.5099483489990234e+01 - - 1 2 1803 5.7850000000000000e+02 0 -1 1804 - 4.2500000000000000e+01 -2 -3 1805 5.7750000000000000e+02 - - -7.0962339639663696e-01 1. 7.6542943716049194e-01 - -4.1924782097339630e-02 - <_> - 5.4866825103759766e+01 - - 1 2 1806 1328. 0 -1 1807 1.5000000000000000e+00 -2 -3 1808 - 5.5285000000000000e+03 - - 3.6924600601196289e-01 -2.3265689611434937e-01 - 9.9105215072631836e-01 -8.4446805715560913e-01 - <_> - 5.5432411193847656e+01 - - 1 2 1809 2.5500000000000000e+01 0 -1 1810 - 1.1500000000000000e+01 -2 -3 1811 7.4350000000000000e+02 - - -3.2548126578330994e-01 2.2827453911304474e-01 - 7.1661698818206787e-01 -1. - <_> - 5.5408927917480469e+01 - - 1 2 1812 5.0000000000000000e-01 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 2.4500000000000000e+01 - - -7.4099457263946533e-01 3.7504613399505615e-01 - -6.2640714645385742e-01 8.4968566894531250e-02 - <_> - 5.5198207855224609e+01 - - 1 2 1815 1.5000000000000000e+00 0 -1 1816 - 6.5000000000000000e+00 -2 -3 1817 2.2500000000000000e+01 - - -1. 6.4012116193771362e-01 -2.1071846783161163e-01 - 6.4778321981430054e-01 - <_> - 5.5283359527587891e+01 - - 1 2 1818 2.5000000000000000e+00 0 -1 1819 - 5.0000000000000000e-01 -2 -3 1820 2.4550000000000000e+02 - - 4.5631405711174011e-01 -1.3484077155590057e-01 - -5.9344494342803955e-01 1.6467481851577759e-01 - <_> - 5.5470157623291016e+01 - - 1 2 1821 3.5000000000000000e+00 0 -1 1822 - 9.5000000000000000e+00 -2 -3 1823 9.5000000000000000e+00 - - 1. -1. -4.3856528401374817e-01 1.8679495155811310e-01 - <_> - 5.5202453613281250e+01 - - 1 2 1824 5.6150000000000000e+02 0 -1 1825 4192. -2 -3 1826 - 1.2425000000000000e+03 - - -1.4592270553112030e-01 5.8146274089813232e-01 - -5.5671817064285278e-01 1.2355826795101166e-01 - <_> - 5.5569751739501953e+01 - - 1 2 1827 2.1500000000000000e+01 0 -1 1828 - 5.5000000000000000e+00 -2 -3 1829 1.6500000000000000e+01 - - -6.8071776628494263e-01 3.6730051040649414e-01 - -1.3501003384590149e-01 -9.1282844543457031e-01 - <_> - 5.5779064178466797e+01 - - 1 2 1830 3.3500000000000000e+01 0 -1 1831 - 9.5000000000000000e+00 -2 -3 1832 1.5500000000000000e+01 - - 3.2467505335807800e-01 -7.8718549013137817e-01 - 5.1464933156967163e-01 -1.6156230866909027e-01 - <_> - 5.5348117828369141e+01 - - 1 2 1833 3.7650000000000000e+02 0 -1 1834 - 5.5750000000000000e+02 -2 -3 1835 1.5000000000000000e+00 - - -8.1101077795028687e-01 6.3146162033081055e-01 - 1.3779489696025848e-01 -4.3094816803932190e-01 - <_> - 5.5919422149658203e+01 - - 1 2 1836 3.7500000000000000e+01 0 -1 1837 - 5.0000000000000000e-01 -2 -3 1838 8.8500000000000000e+01 - - 3.4091222286224365e-01 -3.4007987380027771e-01 - 5.7130312919616699e-01 -6.3140660524368286e-01 - <_> - 5.5871620178222656e+01 - - 1 2 1839 7.5000000000000000e+00 0 -1 1840 - 1.6500000000000000e+01 -2 -3 1841 6.4500000000000000e+01 - - -2.2035612165927887e-01 -9.4882357120513916e-01 - 5.1813077926635742e-01 -4.7800488770008087e-02 - <_> - 5.6252223968505859e+01 - - 1 2 1842 1.1950000000000000e+02 0 -1 1843 - 9.5500000000000000e+01 -2 -3 1844 3.6850000000000000e+02 - - 3.8002592325210571e-01 -3.4263178706169128e-01 - 5.1846081018447876e-01 -7.4162709712982178e-01 - <_> - 5.6455226898193359e+01 - - 1 2 1845 5.0000000000000000e-01 0 -1 1846 12. -2 -3 1847 - 3.2995000000000000e+03 - - -9.0239804983139038e-01 3.5835075378417969e-01 - -3.9121779799461365e-01 8.4680241346359253e-01 - <_> - 5.6692668914794922e+01 - - 1 2 1848 2.5000000000000000e+00 0 -1 1849 - 5.0000000000000000e-01 -2 -3 1850 3.0500000000000000e+01 - - -8.6832201480865479e-01 3.5786366462707520e-01 - -6.5906804800033569e-01 3.1783048063516617e-02 - <_> - 5.6752792358398438e+01 - - 1 2 1851 1.0500000000000000e+01 0 -1 1852 - 6.5500000000000000e+01 -2 -3 1853 1.4500000000000000e+01 - - -4.6706490218639374e-02 -8.7982815504074097e-01 - 5.6353557109832764e-01 -6.0297027230262756e-02 - <_> - 5.6775104522705078e+01 - - 1 2 1854 2.0150000000000000e+02 0 -1 1855 - 1.0500000000000000e+01 -2 -3 1856 2.8650000000000000e+02 - - 7.4959583580493927e-02 -5.7888466119766235e-01 - 6.6168105602264404e-01 -9.9754244089126587e-02 - <_> - 5.6972690582275391e+01 - - 1 2 1857 1.6150000000000000e+02 0 -1 1858 - 1.5500000000000000e+01 -2 -3 1859 24. - - -7.3095875978469849e-01 1.9758741557598114e-01 - -8.8720643520355225e-01 1. - <_> - 5.7200763702392578e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 - 8.8500000000000000e+01 -2 -3 1862 1.8500000000000000e+01 - - 3.3610743284225464e-01 -8.8137799501419067e-01 - -6.0375785827636719e-01 1.2033233046531677e-01 - <_> - 5.7070457458496094e+01 - - 1 2 1863 2.1500000000000000e+01 0 -1 1864 - 1.4500000000000000e+01 -2 -3 1865 5.6500000000000000e+01 - - -9.7666543722152710e-01 7.4382346868515015e-01 - 4.3915370106697083e-01 -1.3030719757080078e-01 - <_> - 5.6970527648925781e+01 - - 1 2 1866 1.0500000000000000e+01 0 -1 1867 - 8.5000000000000000e+00 -2 -3 1868 142. - - -3.9075690507888794e-01 2.1810866892337799e-01 - 7.3304098844528198e-01 -1.5522833168506622e-01 - <_> - 5.7172351837158203e+01 - - 1 2 1869 8.3500000000000000e+01 0 -1 1870 - 5.0000000000000000e-01 -2 -3 1871 4.5000000000000000e+00 - - 4.7355487942695618e-01 -8.4495109319686890e-01 - -8.0800145864486694e-01 2.0182393491268158e-01 - <_> - 5.7369266510009766e+01 - - 1 2 1872 1.3500000000000000e+01 0 -1 1873 - 2.2050000000000000e+02 -2 -3 1874 1.5000000000000000e+00 - - 3.0745425820350647e-01 -5.7873797416687012e-01 - 7.1144923567771912e-02 -7.0968645811080933e-01 - <_> - 5.7163673400878906e+01 - - 1 2 1875 3.0500000000000000e+01 0 -1 1876 - 1.7955000000000000e+03 -2 -3 1877 1.9500000000000000e+01 - - 4.0770485997200012e-01 -6.0543429851531982e-01 - 3.7602424621582031e-01 -2.8918644785881042e-01 - <_> - 5.6786552429199219e+01 - - 1 2 1878 6.8500000000000000e+01 0 -1 1879 - 5.5000000000000000e+00 -2 -3 1880 2.8500000000000000e+01 - - 1.1757279932498932e-01 -5.8252972364425659e-01 - -3.8951548933982849e-01 5.1052653789520264e-01 - <_> - 5.6868556976318359e+01 - - 1 2 1881 6.5000000000000000e+00 0 -1 1882 - 2.5000000000000000e+00 -2 -3 1883 2.6950000000000000e+02 - - 8.2006074488162994e-02 -5.1789224147796631e-01 - 5.3505361080169678e-01 -9.4605493545532227e-01 - <_> - 5.7130115509033203e+01 - - 1 2 1884 8.5000000000000000e+00 0 -1 1885 - 1.9150000000000000e+02 -2 -3 1886 2.9450000000000000e+02 - - 4.5292165875434875e-01 -4.3888345360755920e-01 - 4.7173380851745605e-01 -5.1566743850708008e-01 - <_> - 5.7406742095947266e+01 - - 1 2 1887 5.5000000000000000e+00 0 -1 1888 - 4.5000000000000000e+00 -2 -3 1889 7.9850000000000000e+02 - - -3.7859401106834412e-01 5.5919343233108521e-01 - -5.8277565240859985e-01 6.6450834274291992e-02 - <_> - 5.7422473907470703e+01 - - 1 2 1890 5.6150000000000000e+02 0 -1 1891 4961. -2 -3 1892 - 4.8705000000000000e+03 - - -4.5244730426929891e-04 8.3497661352157593e-01 - -6.8882519006729126e-01 1.5732206404209137e-02 - <_> - 5.7687702178955078e+01 - - 1 2 1893 1.4500000000000000e+01 0 -1 1894 - 4.1335000000000000e+03 -2 -3 1895 7.1500000000000000e+01 - - 2.6522731781005859e-01 -8.9758622646331787e-01 - -6.0936498641967773e-01 4.6634823083877563e-01 - <_> - 5.7540111541748047e+01 - - 1 2 1896 2.9500000000000000e+01 0 -1 1897 - 5.5000000000000000e+00 -2 -3 1898 1.5000000000000000e+00 - - -9.3110167980194092e-01 1. 3.9634063839912415e-01 - -1.9126465916633606e-01 - <_> - 5.7616504669189453e+01 - - 1 2 1899 7.5000000000000000e+00 0 -1 1900 397. -2 -3 1901 - 1.5000000000000000e+00 - - 7.1867322921752930e-01 -5.4185843467712402e-01 - 5.2771824598312378e-01 -1.5528239309787750e-01 - <_> - 5.7763866424560547e+01 - - 1 2 1902 2.1500000000000000e+01 0 -1 1903 - 1.7050000000000000e+02 -2 -3 1904 1.6500000000000000e+01 - - 2.9671201109886169e-01 -8.4789550304412842e-01 - -5.6201756000518799e-01 2.5604116916656494e-01 - <_> - 5.7565292358398438e+01 - - 1 2 1905 5.0000000000000000e-01 0 -1 1906 - 2.1350000000000000e+02 -2 -3 1907 3.6950000000000000e+02 - - 5.7148373126983643e-01 -8.4696042537689209e-01 - -3.0725291371345520e-01 5.5036330223083496e-01 - <_> - 5.7710926055908203e+01 - - 1 2 1908 1.2500000000000000e+01 0 -1 1909 - 4.5000000000000000e+00 -2 -3 1910 2.4500000000000000e+01 - - -6.8967974185943604e-01 3.9181429147720337e-01 - -6.0330241918563843e-01 2.1838249266147614e-01 - <_> - 5.8008132934570312e+01 - - 1 2 1911 9.5000000000000000e+00 0 -1 1912 270. -2 -3 1913 - 3.0500000000000000e+01 - - 2.9720637202262878e-01 -7.7370458841323853e-01 - -7.1012228727340698e-01 1.2770961225032806e-01 - <_> - 5.8256633758544922e+01 - - 1 2 1914 6.3500000000000000e+01 0 -1 1915 - 3.7500000000000000e+01 -2 -3 1916 3.0500000000000000e+01 - - -4.4066715240478516e-01 8.2518380880355835e-01 - 2.9887351393699646e-01 -4.9117338657379150e-01 - <_> - 5.8460075378417969e+01 - - 1 2 1917 1.2500000000000000e+01 0 -1 1918 - 3.1500000000000000e+01 -2 -3 1919 5.0000000000000000e-01 - - -3.4090422093868256e-02 5.7412135601043701e-01 - 7.2392117977142334e-01 -6.3018786907196045e-01 - <_> - 5.8618007659912109e+01 - - 1 2 1920 5.0000000000000000e-01 0 -1 1921 - 1.5500000000000000e+01 -2 -3 1922 5.0000000000000000e-01 - - -9.6668690443038940e-01 3.7771463394165039e-01 - 2.2855560481548309e-01 -4.7967869043350220e-01 - <_> - 5.8478435516357422e+01 - - 1 2 1923 7.5000000000000000e+00 0 -1 1924 - 1.5000000000000000e+00 -2 -3 1925 5.0000000000000000e-01 - - 4.2515745759010315e-01 -5.5478894710540771e-01 - 4.5419645309448242e-01 -1.3957175612449646e-01 - <_> - 5.8872611999511719e+01 - - 1 2 1926 1.8350000000000000e+02 0 -1 1927 - 4.0500000000000000e+01 -2 -3 1928 6.6500000000000000e+01 - - -2.0008619129657745e-01 3.9417695999145508e-01 - -9.6238315105438232e-01 1. - <_> - 5.8883186340332031e+01 - - 1 2 1929 1.2500000000000000e+01 0 -1 1930 - 3.5000000000000000e+00 -2 -3 1931 2.1050000000000000e+02 - - 6.1217731237411499e-01 -1.9048878923058510e-02 - -7.2783750295639038e-01 8.3897627890110016e-02 - <_> - 5.8808357238769531e+01 - - 1 2 1932 4.6500000000000000e+01 0 -1 1933 - 3.5000000000000000e+00 -2 -3 1934 2.8650000000000000e+02 - - 1.3248841464519501e-01 -6.7872178554534912e-01 - 4.7229564189910889e-01 -1.4815118908882141e-01 - <_> - 5.9144462585449219e+01 - - 1 2 1935 1.4500000000000000e+01 0 -1 1936 - 1.6500000000000000e+01 -2 -3 1937 9.5000000000000000e+00 - - -6.5575122833251953e-01 6.0179513692855835e-01 - 3.3610317111015320e-01 -2.4818602204322815e-01 - <_> - 5.9101814270019531e+01 - - 1 2 1938 5.0000000000000000e-01 0 -1 1939 - 2.5000000000000000e+00 -2 -3 1940 2.3500000000000000e+01 - - 6.1000245809555054e-01 -4.2646210640668869e-02 - -5.3324443101882935e-01 3.5818785429000854e-01 - <_> - 5.8948040008544922e+01 - - 1 2 1941 7.5000000000000000e+00 0 -1 1942 - 4.5000000000000000e+00 -2 -3 1943 5.0000000000000000e-01 - - -8.8669669628143311e-01 7.7529543638229370e-01 - 3.8582339882850647e-01 -1.5377666056156158e-01 - <_> - 5.9593772888183594e+01 - - 1 2 1944 3.5525000000000000e+03 0 -1 1945 - 3.4500000000000000e+01 -2 -3 1946 167. - - -2.2072853147983551e-01 3.3567503094673157e-01 1. -1. - <_> - 5.9370800018310547e+01 - - 1 2 1947 7.5000000000000000e+00 0 -1 1948 3474. -2 -3 1949 - 9.5000000000000000e+00 - - 3.4637100994586945e-02 -5.9609389305114746e-01 - 5.9798693656921387e-01 -1.3024185597896576e-01 - <_> - 5.9757068634033203e+01 - - 1 2 1950 1.1500000000000000e+01 0 -1 1951 - 4.4500000000000000e+01 -2 -3 1952 2.5000000000000000e+00 - - -9.1445469856262207e-01 8.4411728382110596e-01 - 3.8626831769943237e-01 -1.6962867975234985e-01 - <_> - 5.9796058654785156e+01 - - 1 2 1953 5.8750000000000000e+02 0 -1 1954 - 3.5000000000000000e+00 -2 -3 1955 3.9150000000000000e+02 - - 2.4987047910690308e-01 -6.1070859432220459e-01 - 7.2914922237396240e-01 -7.8055180609226227e-02 - <_> - 5.9801254272460938e+01 - - 1 2 1956 5.5850000000000000e+02 0 -1 1957 - 4.7500000000000000e+01 -2 -3 1958 1.8500000000000000e+01 - - -1.1270057410001755e-01 6.9968527555465698e-01 - 5.1938942633569241e-03 -7.4568808078765869e-01 - <_> - 6.0010192871093750e+01 - - 1 2 1959 4.8500000000000000e+01 0 -1 1960 - 6.5000000000000000e+00 -2 -3 1961 7.5000000000000000e+00 - - -7.4147862195968628e-01 2.0893752574920654e-01 - -7.3173969984054565e-01 3.0364623665809631e-01 - <_> - 5.9708690643310547e+01 - - 1 2 1962 5.0000000000000000e-01 0 -1 1963 - 3.5000000000000000e+00 -2 -3 1964 2.2500000000000000e+01 - - -9.1378659009933472e-01 5.2321916818618774e-01 - -3.0149966478347778e-01 6.9747513532638550e-01 - <_> - 6.0059795379638672e+01 - - 1 2 1965 4.1500000000000000e+01 0 -1 1966 - 1.5000000000000000e+00 -2 -3 1967 4.5500000000000000e+01 - - 7.6339656114578247e-01 -6.3636028766632080e-01 - 3.5110288858413696e-01 -2.9607880115509033e-01 - <_> - 6.0240623474121094e+01 - - 1 2 1968 4.5000000000000000e+00 0 -1 1969 - 1.5000000000000000e+00 -2 -3 1970 3.0850000000000000e+02 - - -6.1838161945343018e-01 1.8083088099956512e-01 - -1.4869785308837891e-01 5.0236159563064575e-01 - <_> - 6.0387596130371094e+01 - - 1 2 1971 1.6250000000000000e+02 0 -1 1972 - 4.5000000000000000e+00 -2 -3 1973 4.4650000000000000e+02 - - 6.7135459184646606e-01 1.1329505359753966e-03 - -6.6079312562942505e-01 1.4697253704071045e-01 - <_> - 6.0387634277343750e+01 - - 1 2 1974 3.5000000000000000e+00 0 -1 1975 - 1.8500000000000000e+01 -2 -3 1976 3.5500000000000000e+01 - - 3.3784970641136169e-01 -4.8918390274047852e-01 - -5.6978744268417358e-01 1.3324360549449921e-01 - <_> - 6.0022872924804688e+01 - - 1 2 1977 2.0850000000000000e+02 0 -1 1978 - 3.5000000000000000e+00 -2 -3 1979 2.2500000000000000e+01 - - 2.4730446934700012e-01 -3.6476173996925354e-01 - -6.7308956384658813e-01 5.9900748729705811e-01 - <_> - 6.0411987304687500e+01 - - 1 2 1980 4.6500000000000000e+01 0 -1 1981 - 7.5000000000000000e+00 -2 -3 1982 1.6500000000000000e+01 - - -7.1475833654403687e-01 3.5484632849693298e-01 - 3.8911363482475281e-01 -1.7250961065292358e-01 - <_> - 6.0604080200195312e+01 - - 1 2 1983 5.0000000000000000e-01 0 -1 1984 - 6.5000000000000000e+00 -2 -3 1985 4.5000000000000000e+00 - - -5.3925055265426636e-01 4.7325718402862549e-01 - 1.9209517538547516e-01 -4.6254682540893555e-01 - <_> - 6.0539005279541016e+01 - - 1 2 1986 3.5500000000000000e+01 0 -1 1987 97. -2 -3 1988 - 5.5000000000000000e+00 - - 6.5639108419418335e-01 -8.1671226024627686e-01 - 5.2336204051971436e-01 -6.5074905753135681e-02 - <_> - 6.0846366882324219e+01 - - 1 2 1989 3.1350000000000000e+02 0 -1 1990 - 1.6190500000000000e+04 -2 -3 1991 1.1005000000000000e+03 - - 4.3834140896797180e-01 -3.6532020568847656e-01 - 6.3986539840698242e-01 -4.1561451554298401e-01 - <_> - 6.0749099731445312e+01 - - 1 2 1992 3.5000000000000000e+00 0 -1 1993 - 1.6050000000000000e+02 -2 -3 1994 4.5000000000000000e+00 - - 3.9444553852081299e-01 -5.1368337869644165e-01 - -6.9115257263183594e-01 1.9162381067872047e-02 - <_> - 6.0911582946777344e+01 - - 1 2 1995 3.1500000000000000e+01 0 -1 1996 39. -2 -3 1997 - 1.5000000000000000e+00 - - -9.1950684785842896e-01 1. -7.2641021013259888e-01 - 1.6248121857643127e-01 - <_> - 6.0922454833984375e+01 - - 1 2 1998 5.5000000000000000e+00 0 -1 1999 - 1.0500000000000000e+01 -2 -3 2000 1.5805000000000000e+03 - - -7.5020366907119751e-01 3.5568973422050476e-01 - -4.8083752393722534e-01 3.0702778697013855e-01 - <_> - 6.1254642486572266e+01 - - 1 2 2001 3.3650000000000000e+02 0 -1 2002 - 5.0000000000000000e-01 -2 -3 2003 7.5000000000000000e+00 - - 7.5214070081710815e-01 -5.6389236450195312e-01 - 3.4662494063377380e-01 -2.9536944627761841e-01 - <_> - 6.1591125488281250e+01 - - 1 2 2004 2.5500000000000000e+01 0 -1 2005 - 1.4500000000000000e+01 -2 -3 2006 1.5000000000000000e+00 - - 1.3703818619251251e-01 -4.9739819765090942e-01 - -6.2935429811477661e-01 5.6868934631347656e-01 - <_> - 6.1522079467773438e+01 - - 1 2 2007 2.0500000000000000e+01 0 -1 2008 - 8.5500000000000000e+01 -2 -3 2009 4.5500000000000000e+01 - - 7.8972160816192627e-01 -6.7304050922393799e-01 - 2.6793375611305237e-01 -6.3064610958099365e-01 - <_> - 6.1685386657714844e+01 - - 1 2 2010 4.7055000000000000e+03 0 -1 2011 - 7.5000000000000000e+00 -2 -3 2012 34. - - -6.3200688362121582e-01 1.6331009566783905e-01 - -9.4863635301589966e-01 8.0065780878067017e-01 - <_> - 6.1566181182861328e+01 - - 1 2 2013 7.2950000000000000e+02 0 -1 2014 - 2.0350000000000000e+02 -2 -3 2015 2.1500000000000000e+01 - - -1.1920681595802307e-01 6.4878600835800171e-01 - -5.8408319950103760e-01 3.3495616912841797e-01 - <_> - 6.2094886779785156e+01 - - 1 2 2016 9.5000000000000000e+00 0 -1 2017 - 3.5000000000000000e+00 -2 -3 2018 2.3500000000000000e+01 - - 5.2870643138885498e-01 -5.9091903269290924e-02 - 1.4992588758468628e-01 -7.4673342704772949e-01 - <_> - 6.1996501922607422e+01 - - 1 2 2019 3.4500000000000000e+01 0 -1 2020 - 9.6500000000000000e+01 -2 -3 2021 7.5000000000000000e+00 - - -9.8386786878108978e-02 5.0483143329620361e-01 - 1.5602034330368042e-01 -6.9411128759384155e-01 - <_> - 6.2363922119140625e+01 - - 1 2 2022 1.4965000000000000e+03 0 -1 2023 61. -2 -3 2024 - 8.5250000000000000e+02 - - -9.3483263254165649e-01 1. 5.6837409734725952e-01 - -8.3574697375297546e-02 - <_> - 6.2407440185546875e+01 - - 1 2 2025 5977. 0 -1 2026 2.5000000000000000e+00 -2 -3 2027 - 2.1421500000000000e+04 - - 2.2136372327804565e-01 -6.3119232654571533e-01 - 9.1829413175582886e-01 4.3518073856830597e-02 - <_> - 6.2328540802001953e+01 - - 1 2 2028 9.5000000000000000e+00 0 -1 2029 - 3.8550000000000000e+02 -2 -3 2030 6.5000000000000000e+00 - - 7.9880517721176147e-01 -3.3323591947555542e-01 - -9.3455439805984497e-01 3.5605767369270325e-01 - <_> - 6.2549594879150391e+01 - - 1 2 2031 1.2500000000000000e+01 0 -1 2032 - 2.5000000000000000e+00 -2 -3 2033 1.4500000000000000e+01 - - 4.2225402593612671e-01 -2.8828126192092896e-01 - -4.3309009075164795e-01 6.5534549951553345e-01 - <_> - 6.2636714935302734e+01 - - 1 2 2034 417. 0 -1 2035 1.1500000000000000e+01 -2 -3 2036 7. - - -2.1113002672791481e-02 8.4205090999603271e-01 - -9.7738903760910034e-01 5.3100347518920898e-01 - <_> - 6.2861415863037109e+01 - - 1 2 2037 2.5000000000000000e+00 0 -1 2038 - 5.5000000000000000e+00 -2 -3 2039 3.6500000000000000e+01 - - -7.6132452487945557e-01 3.6051002144813538e-01 - -5.7641249895095825e-01 1.5012158453464508e-01 - <_> - 6.2900104522705078e+01 - - 1 2 2040 5.0000000000000000e-01 0 -1 2041 - 3.5000000000000000e+00 -2 -3 2042 6.5000000000000000e+00 - - -9.3149966001510620e-01 2.9147976636886597e-01 - -6.3701289892196655e-01 5.4918531328439713e-02 - <_> - 6.2879768371582031e+01 - - 1 2 2043 1.5000000000000000e+00 0 -1 2044 - 2.5000000000000000e+00 -2 -3 2045 1.5000000000000000e+00 - - 6.6399359703063965e-01 -1.0929831862449646e-01 - 7.8133702278137207e-02 -4.7019696235656738e-01 - <_> - 6.2129520416259766e+01 - - 1 2 2046 1.3650000000000000e+02 0 -1 2047 - 2.1215000000000000e+03 -2 -3 2048 1.9500000000000000e+01 - - 1.4869627356529236e-01 -7.8195393085479736e-01 - -5.4876875877380371e-01 2.9066467285156250e-01 - <_> - 6.2598121643066406e+01 - - 1 2 2049 5.5000000000000000e+00 0 -1 2050 - 2.0500000000000000e+01 -2 -3 2051 3.3450000000000000e+02 - - -2.8021445870399475e-01 4.6860334277153015e-01 - -4.1921630501747131e-01 9.1871756315231323e-01 - <_> - 6.2898983001708984e+01 - - 1 2 2052 5.8750000000000000e+02 0 -1 2053 - 3.3150000000000000e+02 -2 -3 2054 258. - - -5.8121073246002197e-01 7.2862756252288818e-01 - 3.0086198449134827e-01 -6.1838138103485107e-01 - <_> - 6.3007404327392578e+01 - - 1 2 2055 2.7950000000000000e+02 0 -1 2056 - 5.0500000000000000e+01 -2 -3 2057 3.5000000000000000e+00 - - -7.9203374683856964e-02 6.8916302919387817e-01 - 2.2891193628311157e-01 -4.4382786750793457e-01 - <_> - 6.3243953704833984e+01 - - 1 2 2058 8.5000000000000000e+00 0 -1 2059 - 3.2650000000000000e+02 -2 -3 2060 2.1500000000000000e+01 - - -1. 2.3655229806900024e-01 -5.4432135820388794e-01 - 8.4973216056823730e-01 - <_> - 6.3190502166748047e+01 - - 1 2 2061 3.1500000000000000e+01 0 -1 2062 - 6.4500000000000000e+01 -2 -3 2063 1.5500000000000000e+01 - - -1.7394508421421051e-01 3.4196874499320984e-01 - -7.9306966066360474e-01 7.7552306652069092e-01 - <_> - 6.3256435394287109e+01 - - 1 2 2064 5.0000000000000000e-01 0 -1 2065 - 4.5000000000000000e+00 -2 -3 2066 1.6500000000000000e+01 - - -6.4375263452529907e-01 4.6298280358314514e-01 - 6.5930701792240143e-02 -6.0258072614669800e-01 - <_> - 6.3547569274902344e+01 - - 1 2 2067 3.5000000000000000e+00 0 -1 2068 - 2.9665000000000000e+03 -2 -3 2069 2.5000000000000000e+00 - - 2.6696309447288513e-01 -6.1605608463287354e-01 - 5.8771264553070068e-01 -7.7434383332729340e-02 - <_> - 6.3455562591552734e+01 - - 1 2 2070 2.6500000000000000e+01 0 -1 2071 - 1.0435000000000000e+03 -2 -3 2072 2.2500000000000000e+01 - - -3.0468648672103882e-01 2.7090394496917725e-01 -1. - 7.8004688024520874e-01 - <_> - 6.3757442474365234e+01 - - 1 2 2073 1.0350000000000000e+02 0 -1 2074 - 1.0500000000000000e+01 -2 -3 2075 2.5000000000000000e+00 - - -3.8403138518333435e-01 3.0187815427780151e-01 - 3.1422126293182373e-01 -7.1062839031219482e-01 - <_> - 6.3906417846679688e+01 - - 1 2 2076 4.5000000000000000e+00 0 -1 2077 - 1.5000000000000000e+00 -2 -3 2078 4.8150000000000000e+02 - - -7.3861616849899292e-01 4.0836670994758606e-01 - -5.5579960346221924e-01 1.4897711575031281e-01 - <_> - 6.4099327087402344e+01 - - 1 2 2079 2.5500000000000000e+01 0 -1 2080 - 5.7650000000000000e+02 -2 -3 2081 1.8500000000000000e+01 - - -5.5475443601608276e-01 1.9290663301944733e-01 - -7.1113204956054688e-01 5.3957355022430420e-01 - <_> - 6.3918937683105469e+01 - - 1 2 2082 3.5000000000000000e+00 0 -1 2083 - 9.7500000000000000e+01 -2 -3 2084 3.5000000000000000e+00 - - -3.3335947990417480e-01 2.7078640460968018e-01 - 3.7570750713348389e-01 -7.7115553617477417e-01 - <_> - 6.3970809936523438e+01 - - 1 2 2085 3.5000000000000000e+00 0 -1 2086 - 1.9850000000000000e+02 -2 -3 2087 2.3500000000000000e+01 - - 6.5109664201736450e-01 -1.3773214817047119e-01 - -5.4258519411087036e-01 5.1870465278625488e-02 - <_> - 6.4214424133300781e+01 - - 1 2 2088 1.2500000000000000e+01 0 -1 2089 - 3.2450000000000000e+02 -2 -3 2090 6.5000000000000000e+00 - - 4.3517467379570007e-01 -9.6950376033782959e-01 - 2.5978988409042358e-01 -2.7689433097839355e-01 - <_> - 6.4605529785156250e+01 - - 1 2 2091 327. 0 -1 2092 5.0000000000000000e-01 -2 -3 2093 - 1.5500000000000000e+01 - - 2.3849301040172577e-01 -5.6138235330581665e-01 - -6.2119048833847046e-01 3.9110702276229858e-01 - <_> - 6.4053535461425781e+01 - - 1 2 2094 1.8500000000000000e+01 0 -1 2095 - 1.4500000000000000e+01 -2 -3 2096 1.7225000000000000e+03 - - -7.9772460460662842e-01 2.5171506404876709e-01 - 4.5911735296249390e-01 -5.6817436218261719e-01 - <_> - 6.4624084472656250e+01 - - 1 2 2097 1.3500000000000000e+01 0 -1 2098 - 3.8450000000000000e+02 -2 -3 2099 2.5000000000000000e+00 - - 6.7918819189071655e-01 -6.8560796976089478e-01 - 5.7055342197418213e-01 -1.1227272450923920e-01 - <_> - 6.4599174499511719e+01 - - 1 2 2100 3.9950000000000000e+02 0 -1 2101 - 6.5000000000000000e+00 -2 -3 2102 2.6500000000000000e+01 - - 2.6946315169334412e-01 -6.8496251106262207e-01 - -1.4580105245113373e-01 4.0004068613052368e-01 - <_> - 6.4730812072753906e+01 - - 1 2 2103 5.0000000000000000e-01 0 -1 2104 - 1.0500000000000000e+01 -2 -3 2105 2.5000000000000000e+00 - - -4.1157549619674683e-01 3.9449948072433472e-01 - 1.3164354860782623e-01 -5.7457894086837769e-01 - <_> - 6.4550361633300781e+01 - - 1 2 2106 6.1500000000000000e+01 0 -1 2107 - 4.2500000000000000e+01 -2 -3 2108 5.0000000000000000e-01 - - -6.7661024630069733e-02 4.9807086586952209e-01 - 2.6868519186973572e-01 -5.6513643264770508e-01 - <_> - 6.4741752624511719e+01 - - 1 2 2109 1.5000000000000000e+00 0 -1 2110 - 1.4500000000000000e+01 -2 -3 2111 5.0000000000000000e-01 - - -5.7091879844665527e-01 4.6459051966667175e-01 - 2.1071271598339081e-01 -4.8713284730911255e-01 - <_> - 6.4659866333007812e+01 - - 1 2 2112 2.5000000000000000e+00 0 -1 2113 - 1.0500000000000000e+01 -2 -3 2114 2.5000000000000000e+00 - - 8.9292472600936890e-01 -9.4043314456939697e-01 - 5.3616881370544434e-01 -8.1886835396289825e-02 - <_> - 6.4854621887207031e+01 - - 1 2 2115 5.7500000000000000e+01 0 -1 2116 - 6.5000000000000000e+00 -2 -3 2117 1399. - - 1.7543983459472656e-01 -5.9518599510192871e-01 - -6.6982376575469971e-01 3.6574700474739075e-01 - <_> - 6.4909034729003906e+01 - - 1 2 2118 2.7650000000000000e+02 0 -1 2119 2618. -2 -3 2120 - 4.3500000000000000e+01 - - 5.1149606704711914e-01 -7.5715744495391846e-01 - 5.4412230849266052e-02 -5.4240036010742188e-01 - <_> - 6.5523689270019531e+01 - - 1 2 2121 2.0850000000000000e+02 0 -1 2122 - 1.5000000000000000e+00 -2 -3 2123 2.1500000000000000e+01 - - 2.8490218520164490e-01 -4.3338671326637268e-01 - -4.2747175693511963e-01 6.1465066671371460e-01 - <_> - 6.5561706542968750e+01 - - 1 2 2124 212. 0 -1 2125 4.5500000000000000e+01 -2 -3 2126 - 2.5150000000000000e+02 - - -5.5702477693557739e-01 3.5860374569892883e-01 - -6.7760747671127319e-01 3.8017414510250092e-02 - <_> - 6.5649497985839844e+01 - - 1 2 2127 5.9500000000000000e+01 0 -1 2128 - 3.5000000000000000e+00 -2 -3 2129 6.5000000000000000e+00 - - -7.9711538553237915e-01 2.5381851196289062e-01 - 4.2455443739891052e-01 -1.7120632529258728e-01 - <_> - 6.5992294311523438e+01 - - 1 2 2130 3.5000000000000000e+00 0 -1 2131 - 1.6250000000000000e+02 -2 -3 2132 2.2500000000000000e+01 - - -3.3420738577842712e-01 6.4248228073120117e-01 - 6.8257737159729004e-01 -1.6899804770946503e-01 - <_> - 6.6213569641113281e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 - 7.3500000000000000e+01 -2 -3 2135 9.4500000000000000e+01 - - 2.2127301990985870e-01 -7.9195356369018555e-01 - -6.8413102626800537e-01 8.0674022436141968e-01 - <_> - 6.5891929626464844e+01 - - 1 2 2136 5.1500000000000000e+01 0 -1 2137 - 3.5000000000000000e+00 -2 -3 2138 3.6750000000000000e+02 - - 3.1779468059539795e-01 -3.8076880574226379e-01 - 6.2580502033233643e-01 -3.2678863406181335e-01 - <_> - 6.5933746337890625e+01 - - 1 2 2139 1.1500000000000000e+01 0 -1 2140 - 2.5000000000000000e+00 -2 -3 2141 4.5000000000000000e+00 - - 1.1745031177997589e-01 -4.3131595849990845e-01 - 6.6705638170242310e-01 -2.3260143399238586e-01 - <_> - 6.5980415344238281e+01 - - 1 2 2142 3.5000000000000000e+00 0 -1 2143 - 2.5000000000000000e+00 -2 -3 2144 5.0000000000000000e-01 - - 7.7854001522064209e-01 -8.4415936470031738e-01 - 5.8085924386978149e-01 -2.8965638950467110e-02 - <_> - 6.5784027099609375e+01 - - 1 2 2145 4.7500000000000000e+01 0 -1 2146 - 2.5000000000000000e+00 -2 -3 2147 3.5000000000000000e+00 - - 3.7243506312370300e-01 -6.9404041767120361e-01 - 3.7178915739059448e-01 -1.9639030098915100e-01 - <_> - 6.6053306579589844e+01 - - 1 2 2148 4.7350000000000000e+02 0 -1 2149 - 4.7500000000000000e+01 -2 -3 2150 2.2500000000000000e+01 - - -3.7930485606193542e-01 2.6928251981735229e-01 - -6.6765409708023071e-01 4.6291077136993408e-01 - <_> - 6.6251876831054688e+01 - - 1 2 2151 1.7500000000000000e+01 0 -1 2152 - 3.2650000000000000e+02 -2 -3 2153 1.5500000000000000e+01 - - -1. 1.9857025146484375e-01 -6.2745827436447144e-01 - 4.3167012929916382e-01 - <_> - 6.6497039794921875e+01 - - 1 2 2154 2.8500000000000000e+01 0 -1 2155 - 2.6500000000000000e+01 -2 -3 2156 4.1500000000000000e+01 - - -8.1000304222106934e-01 6.9051915407180786e-01 - -2.8902414441108704e-01 4.2377713322639465e-01 - <_> - 6.6451217651367188e+01 - - 1 2 2157 4.1250000000000000e+02 0 -1 2158 - 1.6500000000000000e+01 -2 -3 2159 3.0650000000000000e+02 - - 2.3259440436959267e-02 -6.3648867607116699e-01 - 7.6639103889465332e-01 -1.8078628182411194e-01 - <_> - 6.6132827758789062e+01 - - 1 2 2160 2.1500000000000000e+01 0 -1 2161 - 8.7550000000000000e+02 -2 -3 2162 1.6500000000000000e+01 - - -3.3872911334037781e-01 2.7060332894325256e-01 - -6.3514488935470581e-01 9.0211552381515503e-01 - <_> - 6.6081367492675781e+01 - - 1 2 2163 5.7650000000000000e+02 0 -1 2164 681. -2 -3 2165 - 1.7175000000000000e+03 - - -7.8227895498275757e-01 8.6135381460189819e-01 - 8.2487636804580688e-01 -5.1461022347211838e-02 - <_> - 6.5997879028320312e+01 - - 1 2 2166 1.8500000000000000e+01 0 -1 2167 - 4.5000000000000000e+00 -2 -3 2168 3.5500000000000000e+01 - - -8.3486534655094147e-02 6.0638916492462158e-01 - -4.8585453629493713e-01 2.9007250070571899e-01 - <_> - 6.6484413146972656e+01 - - 1 2 2169 1.2995000000000000e+03 0 -1 2170 - 4.6065000000000000e+03 -2 -3 2171 2.5000000000000000e+00 - - -2.7341315150260925e-01 5.3913331031799316e-01 - 4.8653602600097656e-01 -4.5589551329612732e-01 - <_> - 6.6919540405273438e+01 - - 1 2 2172 2.8500000000000000e+01 0 -1 2173 143. -2 -3 2174 - 1.3500000000000000e+01 - - 4.0857741236686707e-01 -7.9653608798980713e-01 - 4.3512815237045288e-01 -1.2409269809722900e-01 - <_> - 6.6548828125000000e+01 - - 1 2 2175 3.6500000000000000e+01 0 -1 2176 - 3.8500000000000000e+01 -2 -3 2177 3.0015000000000000e+03 - - -3.7071618437767029e-01 3.0769228935241699e-01 - -5.6432120501995087e-02 7.5577193498611450e-01 - <_> - 6.6935661315917969e+01 - - 1 2 2178 221. 0 -1 2179 5.0000000000000000e-01 -2 -3 2180 - 6.5000000000000000e+00 - - 3.8683256506919861e-01 -1.6335722804069519e-01 - 3.1397402286529541e-01 -8.9784342050552368e-01 - <_> - 6.6811462402343750e+01 - - 1 2 2181 1.6500000000000000e+01 0 -1 2182 - 9.7500000000000000e+01 -2 -3 2183 4.5000000000000000e+00 - - 1.9564503431320190e-01 -6.8224984407424927e-01 - 3.6420011520385742e-01 -2.7474680542945862e-01 - <_> - 6.7206642150878906e+01 - - 1 2 2184 2.8150000000000000e+02 0 -1 2185 - 5.3500000000000000e+01 -2 -3 2186 2.1950000000000000e+02 - - 3.9518028497695923e-01 -7.5029599666595459e-01 - -4.5047336816787720e-01 4.4910728931427002e-01 - <_> - 6.6829307556152344e+01 - - 1 2 2187 6.2550000000000000e+02 0 -1 2188 - 2.7045000000000000e+03 -2 -3 2189 7.5250000000000000e+02 - - -1.0180658102035522e-01 4.7846919298171997e-01 - -9.1966360807418823e-01 -3.8947533816099167e-02 - <_> - 6.6750717163085938e+01 - - 1 2 2190 4.7350000000000000e+02 0 -1 2191 - 5.7500000000000000e+01 -2 -3 2192 5.0000000000000000e-01 - - -7.8587010502815247e-02 6.3941407203674316e-01 - 7.1196836233139038e-01 -7.2520041465759277e-01 - <_> - 6.7127670288085938e+01 - - 1 2 2193 2.5000000000000000e+00 0 -1 2194 - 1.5500000000000000e+01 -2 -3 2195 2.5000000000000000e+00 - - -4.7885441780090332e-01 3.2798525691032410e-01 - 8.6548590660095215e-01 5.7965524494647980e-02 - <_> - 6.7040710449218750e+01 - - 1 2 2196 2.5000000000000000e+00 0 -1 2197 - 1.9500000000000000e+01 -2 -3 2198 1.2500000000000000e+01 - - -5.5627369880676270e-01 5.8527511358261108e-01 - -5.7549017667770386e-01 6.9125495851039886e-02 - <_> - 6.7134475708007812e+01 - - 1 2 2199 2.5000000000000000e+00 0 -1 2200 - 1.4215000000000000e+03 -2 -3 2201 5.0000000000000000e-01 - - 3.7880736589431763e-01 -4.5164510607719421e-01 - 5.3598467260599136e-02 -5.7012593746185303e-01 - <_> - 6.7369125366210938e+01 - - 1 2 2202 5.5000000000000000e+00 0 -1 2203 - 5.5000000000000000e+00 -2 -3 2204 1.5000000000000000e+00 - - -9.4780540466308594e-01 7.3004895448684692e-01 - 6.4780569076538086e-01 -5.0393346697092056e-02 - <_> - 6.7813079833984375e+01 - - 1 2 2205 1.2500000000000000e+01 0 -1 2206 9948. -2 -3 2207 - 2.0450000000000000e+02 - - -4.2956997640430927e-03 -9.1839849948883057e-01 - -1.5275211632251740e-01 4.4395634531974792e-01 - <_> - 6.8058036804199219e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 5.0000000000000000e-01 -2 -3 2210 4.7500000000000000e+01 - - 2.4495334923267365e-01 -9.5012718439102173e-01 - 1.7766039073467255e-01 -4.3439298868179321e-01 - <_> - 6.7814498901367188e+01 - - 1 2 2211 1.5500000000000000e+01 0 -1 2212 - 7.5000000000000000e+00 -2 -3 2213 1.4500000000000000e+01 - - 3.4375911951065063e-01 -6.9197601079940796e-01 - -7.6082307100296021e-01 2.3456893861293793e-01 - <_> - 6.7533103942871094e+01 - - 1 2 2214 8.1500000000000000e+01 0 -1 2215 - 1.1500000000000000e+01 -2 -3 2216 1.9500000000000000e+01 - - 2.6256918907165527e-01 -2.8139856457710266e-01 - -8.1822723150253296e-01 2.4620606005191803e-01 - <_> - 6.7985069274902344e+01 - - 1 2 2217 2.6500000000000000e+01 0 -1 2218 - 9.5000000000000000e+00 -2 -3 2219 4.5000000000000000e+00 - - -1.2688148021697998e-01 -9.2650556564331055e-01 - 4.5196792483329773e-01 -1.2886488437652588e-01 - <_> - 6.8211486816406250e+01 - - 1 2 2220 1.9500000000000000e+01 0 -1 2221 - 9.4500000000000000e+01 -2 -3 2222 1.8500000000000000e+01 - - -4.5716031454503536e-03 -9.2506814002990723e-01 - 2.2641468048095703e-01 -5.4319751262664795e-01 - <_> - 6.8062339782714844e+01 - - 1 2 2223 1.5000000000000000e+00 0 -1 2224 - 1.1350000000000000e+02 -2 -3 2225 3.5000000000000000e+00 - - -1.4914712309837341e-01 6.2766093015670776e-01 - 5.2602481842041016e-01 -3.3082970976829529e-01 - <_> - 6.8320228576660156e+01 - - 1 2 2226 6.7500000000000000e+01 0 -1 2227 - 4.5000000000000000e+00 -2 -3 2228 8.3350000000000000e+02 - - -7.0059794187545776e-01 2.5789487361907959e-01 - 2.8099337220191956e-01 -6.9175392389297485e-01 - <_> - 6.8181999206542969e+01 - - 1 2 2229 1.2500000000000000e+01 0 -1 2230 - 3.1350000000000000e+02 -2 -3 2231 9.4565000000000000e+03 - - 1.9189414381980896e-01 -3.9976862072944641e-01 - 5.6042033433914185e-01 -9.6583509445190430e-01 - <_> - 6.8313468933105469e+01 - - 1 2 2232 9.5000000000000000e+00 0 -1 2233 1313. -2 -3 2234 - 7.9450000000000000e+02 - - 6.0552877187728882e-01 -7.1993356943130493e-01 - -1.9865931570529938e-01 3.5071191191673279e-01 - <_> - 6.8655784606933594e+01 - - 1 2 2235 5.5000000000000000e+00 0 -1 2236 - 1.5500000000000000e+01 -2 -3 2237 4.2500000000000000e+01 - - -8.3366417884826660e-01 3.4231638908386230e-01 - -5.7617366313934326e-01 1.2723289430141449e-01 - <_> - 6.8312980651855469e+01 - - 1 2 2238 1.5000000000000000e+00 0 -1 2239 - 1.0500000000000000e+01 -2 -3 2240 3.2950000000000000e+02 - - -6.2311822175979614e-01 5.3832811117172241e-01 - -3.4280434250831604e-01 6.2301361560821533e-01 - <_> - 6.8748611450195312e+01 - - 1 2 2241 5.5000000000000000e+00 0 -1 2242 - 6.3500000000000000e+01 -2 -3 2243 1.4355000000000000e+03 - - 4.3563413619995117e-01 -7.9157996177673340e-01 - 6.3327491283416748e-02 -5.8212018013000488e-01 - <_> - 6.8442298889160156e+01 - - 1 2 2244 2.0500000000000000e+01 0 -1 2245 - 8.5000000000000000e+00 -2 -3 2246 1.3350000000000000e+02 - - -3.0631437897682190e-01 2.6373180747032166e-01 - 7.2269374132156372e-01 -8.2843840122222900e-01 - <_> - 6.8691452026367188e+01 - - 1 2 2247 5.8450000000000000e+02 0 -1 2248 1991. -2 -3 2249 - 1.9550000000000000e+02 - - -5.8844625949859619e-01 7.2171705961227417e-01 - 5.9379982948303223e-01 -8.8590703904628754e-02 - <_> - 6.8854362487792969e+01 - - 1 2 2250 2.2450000000000000e+02 0 -1 2251 - 3.5000000000000000e+00 -2 -3 2252 4.4500000000000000e+01 - - 4.1746988892555237e-01 -1.5201584994792938e-01 - -7.8322100639343262e-01 4.8759365081787109e-01 - <_> - 6.8978080749511719e+01 - - 1 2 2253 1.1350000000000000e+02 0 -1 2254 - 4.5000000000000000e+00 -2 -3 2255 4.5500000000000000e+01 - - 1.2371577322483063e-01 -6.8989777565002441e-01 - 3.5007947683334351e-01 -7.2059243917465210e-01 - <_> - 6.9356269836425781e+01 - - 1 2 2256 1.9500000000000000e+01 0 -1 2257 - 1.0500000000000000e+01 -2 -3 2258 1.3500000000000000e+01 - - 2.8434163331985474e-01 -4.2419987916946411e-01 - 5.7273209095001221e-01 -1.0273739695549011e-01 - <_> - 6.9808845520019531e+01 - - 1 2 2259 5.5000000000000000e+00 0 -1 2260 - 1.8500000000000000e+01 -2 -3 2261 1.5000000000000000e+00 - - -8.0742955207824707e-01 8.1550550460815430e-01 - 4.5257565379142761e-01 -1.1754118651151657e-01 - <_> - 6.9490539550781250e+01 - - 1 2 2262 5.3500000000000000e+01 0 -1 2263 80. -2 -3 2264 - 2.9500000000000000e+01 - - -5.4256713390350342e-01 5.4104971885681152e-01 - 3.5188353061676025e-01 -3.0036619305610657e-01 - <_> - 6.9366668701171875e+01 - - 1 2 2265 2.6065000000000000e+03 0 -1 2266 - 3.1350000000000000e+02 -2 -3 2267 5.5000000000000000e+00 - - -1.2386845052242279e-01 4.6345305442810059e-01 - 6.0491842031478882e-01 -9.4304585456848145e-01 - <_> - 6.9713836669921875e+01 - - 1 2 2268 1.7500000000000000e+01 0 -1 2269 - 2.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5482913255691528e-01 3.4717017412185669e-01 - 1.7867124080657959e-01 -6.1432170867919922e-01 - <_> - 7.0036468505859375e+01 - - 1 2 2271 7.5000000000000000e+00 0 -1 2272 - 2.3500000000000000e+01 -2 -3 2273 1.5500000000000000e+01 - - -9.8486787080764771e-01 3.2262811064720154e-01 - -5.6460940837860107e-01 1.9223406910896301e-01 - <_> - 6.9981750488281250e+01 - - 1 2 2274 1.7250000000000000e+02 0 -1 2275 - 5.0000000000000000e-01 -2 -3 2276 5.6500000000000000e+01 - - 2.4282279610633850e-01 -3.6108613014221191e-01 - 5.9585607051849365e-01 -6.8952751159667969e-01 - <_> - 6.9557426452636719e+01 - - 1 2 2277 1.5000000000000000e+00 0 -1 2278 7. -2 -3 2279 - 4.2050000000000000e+02 - - 1. -7.2186136245727539e-01 2.3051606118679047e-01 - -4.9865522980690002e-01 - <_> - 6.9593688964843750e+01 - - 1 2 2280 3.5000000000000000e+00 0 -1 2281 - 5.5000000000000000e+00 -2 -3 2282 1.5000000000000000e+00 - - 3.6256898194551468e-02 -5.9310066699981689e-01 - 6.1099308729171753e-01 -5.2162308245897293e-02 - <_> - 6.9190055847167969e+01 - - 1 2 2283 5.0000000000000000e-01 0 -1 2284 - 1.5000000000000000e+00 -2 -3 2285 3.1950000000000000e+02 - - -5.6549012660980225e-01 4.1545909643173218e-01 - -4.0363189578056335e-01 6.4397597312927246e-01 - <_> - 6.9152801513671875e+01 - - 1 2 2286 1.2500000000000000e+01 0 -1 2287 - 1.3500000000000000e+01 -2 -3 2288 1.5000000000000000e+00 - - 8.4121584892272949e-02 -8.1945008039474487e-01 - 5.4119038581848145e-01 -3.7251871079206467e-02 - <_> - 6.9844085693359375e+01 - - 1 2 2289 4.1950000000000000e+02 0 -1 2290 3338. -2 -3 2291 - 1.7450000000000000e+02 - - -1.0648692399263382e-01 6.9128334522247314e-01 - -4.1935205459594727e-01 2.4380990862846375e-01 - <_> - 7.0174018859863281e+01 - - 1 2 2292 1.5500000000000000e+01 0 -1 2293 - 2.6500000000000000e+01 -2 -3 2294 1.5000000000000000e+00 - - -5.6438052654266357e-01 3.2993179559707642e-01 - 1.9468745589256287e-01 -5.9477233886718750e-01 - <_> - 7.0660224914550781e+01 - - 1 2 2295 1.0150000000000000e+02 0 -1 2296 - 5.0000000000000000e-01 -2 -3 2297 2.6500000000000000e+01 - - 4.8620355129241943e-01 -1.8835483491420746e-01 - -5.4727905988693237e-01 5.2561342716217041e-01 - <_> - 7.0732994079589844e+01 - - 1 2 2298 1.4450000000000000e+02 0 -1 2299 - 2.5000000000000000e+00 -2 -3 2300 1.5000000000000000e+00 - - 7.2770319879055023e-02 -6.6459918022155762e-01 - 4.1657650470733643e-01 -3.1872367858886719e-01 - <_> - 7.0376434326171875e+01 - - 1 2 2301 2.7750000000000000e+02 0 -1 2302 - 2.8500000000000000e+01 -2 -3 2303 2.2500000000000000e+01 - - -4.7953361272811890e-01 5.4570424556732178e-01 - 3.0004525184631348e-01 -3.5655823349952698e-01 - <_> - 7.0656318664550781e+01 - - 1 2 2304 5.8750000000000000e+02 0 -1 2305 - 1.0500000000000000e+01 -2 -3 2306 7.1500000000000000e+01 - - -1.0104954242706299e-01 -8.7880355119705200e-01 - -8.3692330121994019e-01 2.7988719940185547e-01 - <_> - 7.0784782409667969e+01 - - 1 2 2307 1.4500000000000000e+01 0 -1 2308 - 1.0450000000000000e+02 -2 -3 2309 67. - - 6.7218846082687378e-01 -3.5151880979537964e-01 - -6.5867102146148682e-01 4.6130353212356567e-01 - <_> - 7.0990669250488281e+01 - - 1 2 2310 334. 0 -1 2311 3.3500000000000000e+01 -2 -3 2312 - 8.1750000000000000e+02 - - -3.3783861994743347e-01 3.0199536681175232e-01 - -9.2741793394088745e-01 2.6250743865966797e-01 - <_> - 7.1334205627441406e+01 - - 1 2 2313 1.4500000000000000e+01 0 -1 2314 - 1.4500000000000000e+01 -2 -3 2315 3.6500000000000000e+01 - - -2.9965308308601379e-01 4.6802315115928650e-01 - -4.5157477259635925e-01 6.7555361986160278e-01 - <_> - 7.1500701904296875e+01 - - 1 2 2316 5.0000000000000000e-01 0 -1 2317 87. -2 -3 2318 - 5.5000000000000000e+00 - - 3.0542531609535217e-01 -5.7673245668411255e-01 - 2.7094784379005432e-01 -5.7631582021713257e-01 - <_> - 7.1793479919433594e+01 - - 1 2 2319 4.5000000000000000e+00 0 -1 2320 - 3.0500000000000000e+01 -2 -3 2321 1.8005000000000000e+03 - - -9.6369409561157227e-01 1. 2.9277887940406799e-01 - -2.4375233054161072e-01 - <_> - 7.1967315673828125e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 4880. -2 -3 2324 - 3.2500000000000000e+01 - - 3.0087158083915710e-01 -5.3540611267089844e-01 - -6.9770932197570801e-01 -8.8338237255811691e-03 - <_> - 7.1673614501953125e+01 - - 1 2 2325 1.1500000000000000e+01 0 -1 2326 - 5.0000000000000000e-01 -2 -3 2327 2.5000000000000000e+00 - - 3.5899358987808228e-01 -5.2653604745864868e-01 - 5.8578026294708252e-01 -3.2805901020765305e-02 - <_> - 7.1711250305175781e+01 - - 1 2 2328 1.8500000000000000e+01 0 -1 2329 - 1.8050000000000000e+02 -2 -3 2330 35. - - 3.5447284579277039e-01 -5.9741777181625366e-01 - -7.3350757360458374e-01 2.8574359416961670e-01 - <_> - 7.1695281982421875e+01 - - 1 2 2331 2.0850000000000000e+02 0 -1 2332 1048. -2 -3 2333 - 5.5000000000000000e+00 - - -3.0666926503181458e-01 9.4038575887680054e-01 - -7.0172363519668579e-01 4.9131000041961670e-01 - <_> - 7.1706031799316406e+01 - - 1 2 2334 2.8850000000000000e+02 0 -1 2335 1736. -2 -3 2336 - 1.5000000000000000e+00 - - 1.0753270238637924e-02 7.3304736614227295e-01 - 5.3744524717330933e-01 -5.2062910795211792e-01 - <_> - 7.1823760986328125e+01 - - 1 2 2337 1.6500000000000000e+01 0 -1 2338 - 7.5000000000000000e+00 -2 -3 2339 1.5000000000000000e+00 - - -7.8876292705535889e-01 3.3360600471496582e-01 - 1.1772559583187103e-01 -5.7080477476119995e-01 - <_> - 7.2228584289550781e+01 - - 1 2 2340 2.5000000000000000e+00 0 -1 2341 - 4.6500000000000000e+01 -2 -3 2342 1.5250000000000000e+02 - - -2.1400362253189087e-01 4.0482848882675171e-01 - -6.2977635860443115e-01 3.5589864850044250e-01 - <_> - 7.2438087463378906e+01 - - 1 2 2343 1.6500000000000000e+01 0 -1 2344 3901. -2 -3 2345 - 2.7500000000000000e+01 - - 2.0950204133987427e-01 -5.5380266904830933e-01 - -7.4909400939941406e-01 5.2945792675018311e-01 - <_> - 7.2360771179199219e+01 - - 1 2 2346 2.4500000000000000e+01 0 -1 2347 - 7.5000000000000000e+00 -2 -3 2348 1.8500000000000000e+01 - - 3.7871867418289185e-01 -7.5313919782638550e-01 - 5.1331257820129395e-01 -9.7519315779209137e-02 - <_> - 7.1928703308105469e+01 - - 1 2 2349 8.0500000000000000e+01 0 -1 2350 - 8.6500000000000000e+01 -2 -3 2351 139. - - 5.2605316042900085e-02 -6.2711888551712036e-01 - -3.3864989876747131e-01 4.3293687701225281e-01 - <_> - 7.2465637207031250e+01 - - 1 2 2352 3.5000000000000000e+00 0 -1 2353 - 3.5000000000000000e+00 -2 -3 2354 458. - - -8.2156580686569214e-01 5.3693503141403198e-01 - -7.5703012943267822e-01 7.3093846440315247e-03 - <_> - 7.2306266784667969e+01 - - 1 2 2355 1.5000000000000000e+00 0 -1 2356 - 2.2500000000000000e+01 -2 -3 2357 5.0000000000000000e-01 - - -8.8483113050460815e-01 2.5380238890647888e-01 - 1.9247277081012726e-01 -5.5495434999465942e-01 - <_> - 7.2351318359375000e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 1.1500000000000000e+01 -2 -3 2360 2.0550000000000000e+02 - - -6.4710837602615356e-01 3.3967879414558411e-01 - 4.5056350529193878e-02 -6.6342002153396606e-01 - <_> - 7.2549964904785156e+01 - - 1 2 2361 3.1500000000000000e+01 0 -1 2362 - 5.5000000000000000e+00 -2 -3 2363 1.1150000000000000e+02 - - -9.2634866014122963e-03 -5.6539881229400635e-01 - 5.9193736314773560e-01 -6.0422807931900024e-01 - <_> - 7.2340164184570312e+01 - - 1 2 2364 1.4550000000000000e+02 0 -1 2365 87. -2 -3 2366 - 2.0500000000000000e+01 - - 7.1558344364166260e-01 -6.7444592714309692e-01 - 2.4655258655548096e-01 -4.4633221626281738e-01 - <_> - 7.2298965454101562e+01 - - 1 2 2367 5.0000000000000000e-01 0 -1 2368 - 1.6500000000000000e+01 -2 -3 2369 1.1650000000000000e+02 - - -6.4155972003936768e-01 5.6763589382171631e-01 - 4.5910947024822235e-02 -5.7516378164291382e-01 - <_> - 7.2460647583007812e+01 - - 1 2 2370 1.0500000000000000e+01 0 -1 2371 776. -2 -3 2372 - 3.0350000000000000e+02 - - 1. -7.5311285257339478e-01 1.6168554127216339e-01 - -9.7889220714569092e-01 - <_> - 7.2329025268554688e+01 - - 1 2 2373 6.8250000000000000e+02 0 -1 2374 - 9.8350000000000000e+02 -2 -3 2375 8.4550000000000000e+02 - - -5.8907532691955566e-01 6.2361657619476318e-01 - 6.0256063938140869e-01 -1.3162477314472198e-01 - <_> - 7.2692337036132812e+01 - - 1 2 2376 9.5000000000000000e+00 0 -1 2377 587. -2 -3 2378 - 6.2850000000000000e+02 - - 1.8354943394660950e-01 -6.3397884368896484e-01 - 3.6331036686897278e-01 -4.3740653991699219e-01 - <_> - 7.3099296569824219e+01 - - 1 2 2379 5.0000000000000000e-01 0 -1 2380 - 5.5000000000000000e+00 -2 -3 2381 1.5000000000000000e+00 - - 4.0695956349372864e-01 -2.3705665767192841e-01 - 5.4972708225250244e-01 -5.1312422752380371e-01 - <_> - 7.3302726745605469e+01 - - 1 2 2382 8.7050000000000000e+02 0 -1 2383 - 1.5000000000000000e+00 -2 -3 2384 2.9500000000000000e+01 - - 3.9779379963874817e-01 -6.3519412279129028e-01 - -8.4823501110076904e-01 3.2447892427444458e-01 - <_> - 7.3023147583007812e+01 - - 1 2 2385 5.0000000000000000e-01 0 -1 2386 - 3.8500000000000000e+01 -2 -3 2387 1.5775000000000000e+03 - - -2.5971448421478271e-01 5.4386669397354126e-01 - -4.0062361955642700e-01 4.5868498086929321e-01 - <_> - 7.3163795471191406e+01 - - 1 2 2388 2.7500000000000000e+01 0 -1 2389 - 5.0000000000000000e-01 -2 -3 2390 4.6500000000000000e+01 - - 1.4064319431781769e-01 -4.5721408724784851e-01 - 8.3929353952407837e-01 -5.6752306222915649e-01 - <_> - 7.3411483764648438e+01 - - 1 2 2391 3.5000000000000000e+00 0 -1 2392 21. -2 -3 2393 - 1.0850000000000000e+02 - - -7.8916430473327637e-01 1. 2.4769315123558044e-01 - -4.8368823528289795e-01 - <_> - 7.3806152343750000e+01 - - 1 2 2394 6.5000000000000000e+00 0 -1 2395 - 2.2500000000000000e+01 -2 -3 2396 1.9500000000000000e+01 - - -4.2384034395217896e-01 3.9466390013694763e-01 - 1.2428787350654602e-01 -5.8119755983352661e-01 - <_> - 7.3893051147460938e+01 - - 1 2 2397 6.2500000000000000e+01 0 -1 2398 - 2.5000000000000000e+00 -2 -3 2399 8.5000000000000000e+00 - - 8.6900889873504639e-02 -5.0835818052291870e-01 - 6.4387518167495728e-01 -3.4420084953308105e-01 - <_> - 7.4370101928710938e+01 - - 1 2 2400 2.0250000000000000e+02 0 -1 2401 - 2.6500000000000000e+01 -2 -3 2402 1.0250000000000000e+02 - - -3.3534547686576843e-01 7.1747875213623047e-01 - 5.8294051885604858e-01 -2.0199438929557800e-01 - <_> - 7.3817878723144531e+01 - - 1 2 2403 2.2250000000000000e+02 0 -1 2404 495. -2 -3 2405 - 1.1150000000000000e+02 - - -9.2125439643859863e-01 4.6380558609962463e-01 - -8.2408124208450317e-01 -5.1385825499892235e-03 - <_> - 7.4274734497070312e+01 - - 1 2 2406 5.0000000000000000e-01 0 -1 2407 - 6.5000000000000000e+00 -2 -3 2408 4.5000000000000000e+00 - - -5.4510724544525146e-01 4.5685729384422302e-01 - -4.1785773634910583e-01 3.7173369526863098e-01 - <_> - 7.4214447021484375e+01 - - 1 2 2409 4.3515000000000000e+03 0 -1 2410 - 7.1850000000000000e+02 -2 -3 2411 6.1445000000000000e+03 - - -5.5608157068490982e-02 6.8498140573501587e-01 - -8.1597936153411865e-01 -6.0283310711383820e-02 - <_> - 7.4526939392089844e+01 - - 1 2 2412 1.5000000000000000e+00 0 -1 2413 - 4.5000000000000000e+00 -2 -3 2414 1.7500000000000000e+01 - - -2.5446805357933044e-01 8.0654889345169067e-01 - 4.4617369771003723e-02 -4.9571081995964050e-01 - <_> - 7.4664260864257812e+01 - - 1 2 2415 2.1500000000000000e+01 0 -1 2416 - 9.5000000000000000e+00 -2 -3 2417 5.0000000000000000e-01 - - 2.5834673643112183e-01 -6.3097542524337769e-01 - 5.6628465652465820e-01 -1.0652445256710052e-01 - <_> - 7.4835792541503906e+01 - - 1 2 2418 1.9500000000000000e+01 0 -1 2419 - 2.1650000000000000e+02 -2 -3 2420 3.5000000000000000e+00 - - -3.4473347663879395e-01 3.5953617095947266e-01 - -7.8647011518478394e-01 4.7845369577407837e-01 - <_> - 7.5001464843750000e+01 - - 1 2 2421 4.3350000000000000e+02 0 -1 2422 - 9.5000000000000000e+00 -2 -3 2423 5.0000000000000000e-01 - - -7.6833075284957886e-01 1.6567093133926392e-01 1. - -9.3112909793853760e-01 - <_> - 7.5096672058105469e+01 - - 1 2 2424 1.9500000000000000e+01 0 -1 2425 - 2.5500000000000000e+01 -2 -3 2426 2.5165000000000000e+03 - - -7.1183577179908752e-02 5.7713252305984497e-01 - -7.3037630319595337e-01 9.5210477709770203e-02 - <_> - 7.4955039978027344e+01 - - 1 2 2427 5.5000000000000000e+00 0 -1 2428 - 8.0500000000000000e+01 -2 -3 2429 4.0500000000000000e+01 - - 3.1543654203414917e-01 -5.0912439823150635e-01 - -6.9998091459274292e-01 1.5216259658336639e-01 - <_> - 7.4920089721679688e+01 - - 1 2 2430 1.1215000000000000e+03 0 -1 2431 - 3.8850000000000000e+02 -2 -3 2432 4.1195000000000000e+03 - - 4.6712434291839600e-01 -4.7107401490211487e-01 - -8.0701512098312378e-01 -4.6098276972770691e-02 - <_> - 7.4982124328613281e+01 - - 1 2 2433 1.8500000000000000e+01 0 -1 2434 - 3.5500000000000000e+01 -2 -3 2435 3.5000000000000000e+00 - - -3.7868845462799072e-01 5.3733342885971069e-01 - 5.9916520118713379e-01 -1.3988719880580902e-01 - <_> - 7.5354972839355469e+01 - - 1 2 2436 2.5000000000000000e+00 0 -1 2437 - 4.5000000000000000e+00 -2 -3 2438 2.3500000000000000e+01 - - 3.7731003016233444e-02 -8.0526626110076904e-01 - 4.1983363032341003e-01 -1.6427561640739441e-01 - <_> - 7.5353942871093750e+01 - - 1 2 2439 3.8500000000000000e+01 0 -1 2440 - 5.0000000000000000e-01 -2 -3 2441 1.5250000000000000e+02 - - 4.1628280282020569e-01 -5.9752076864242554e-01 - 2.2085283696651459e-01 -7.8762036561965942e-01 - <_> - 7.4907821655273438e+01 - - 1 2 2442 9.5000000000000000e+00 0 -1 2443 - 5.5000000000000000e+00 -2 -3 2444 1.3500000000000000e+01 - - -6.2543123960494995e-01 2.9037654399871826e-01 - -6.6800427436828613e-01 2.3413531482219696e-01 - <_> - 7.5347267150878906e+01 - - 1 2 2445 5.0000000000000000e-01 0 -1 2446 - 7.5000000000000000e+00 -2 -3 2447 1.5000000000000000e+00 - - -7.7953171730041504e-01 4.3944290280342102e-01 - 2.1482174098491669e-01 -4.5657783746719360e-01 - <_> - 7.5632286071777344e+01 - - 1 2 2448 1.8500000000000000e+01 0 -1 2449 - 1.0500000000000000e+01 -2 -3 2450 3.7500000000000000e+01 - - -3.2795214653015137e-01 2.8501552343368530e-01 - -7.3039668798446655e-01 3.0266335606575012e-01 - <_> - 7.5784385681152344e+01 - - 1 2 2451 5.0000000000000000e-01 0 -1 2452 - 4.5000000000000000e+00 -2 -3 2453 9.5500000000000000e+01 - - -7.9435759782791138e-01 2.8812354803085327e-01 - 3.0145803093910217e-01 -5.5056422948837280e-01 - <_> - 7.5934288024902344e+01 - - 1 2 2454 1.2500000000000000e+01 0 -1 2455 - 1.1500000000000000e+01 -2 -3 2456 9.5000000000000000e+00 - - -5.4109108448028564e-01 3.4966334700584412e-01 - 2.2563920915126801e-01 -6.0146200656890869e-01 - <_> - 7.5664039611816406e+01 - - 1 2 2457 1.5000000000000000e+00 0 -1 2458 - 2.0500000000000000e+01 -2 -3 2459 1.7500000000000000e+01 - - -6.3995569944381714e-02 5.8523094654083252e-01 - -6.0602784156799316e-01 9.1935232281684875e-02 - <_> - 7.5729660034179688e+01 - - 1 2 2460 5.0000000000000000e-01 0 -1 2461 - 1.5000000000000000e+00 -2 -3 2462 5.7500000000000000e+01 - - -3.9503663778305054e-01 6.0793364048004150e-01 - -5.8376723527908325e-01 2.0124232396483421e-02 - <_> - 7.6041374206542969e+01 - - 1 2 2463 2.5000000000000000e+00 0 -1 2464 - 4.5850000000000000e+02 -2 -3 2465 2.8500000000000000e+01 - - 3.1171244382858276e-01 -1. -6.6108351945877075e-01 - 2.7302114292979240e-02 - <_> - 7.5795768737792969e+01 - - 1 2 2466 1.9650000000000000e+02 0 -1 2467 - 6.2950000000000000e+02 -2 -3 2468 8.3500000000000000e+01 - - -2.5152391195297241e-01 6.5583813190460205e-01 - -7.8791797161102295e-01 9.4210775569081306e-04 - <_> - 7.5857429504394531e+01 - - 1 2 2469 4.5000000000000000e+00 0 -1 2470 - 8.0500000000000000e+01 -2 -3 2471 1.1845000000000000e+03 - - 4.5618292689323425e-01 -2.6651117205619812e-01 - 6.1658360064029694e-02 -5.8446490764617920e-01 - <_> - 7.6416542053222656e+01 - - 1 2 2472 4.0950000000000000e+02 0 -1 2473 - 1.5950000000000000e+02 -2 -3 2474 3.6500000000000000e+01 - - -3.3679732680320740e-01 6.7494618892669678e-01 - -5.3805744647979736e-01 5.5911004543304443e-01 - <_> - 7.5964401245117188e+01 - - 1 2 2475 2159. 0 -1 2476 9.5000000000000000e+00 -2 -3 2477 - 2.7550000000000000e+02 - - -9.7294098138809204e-01 3.4394034743309021e-01 - 7.5755751132965088e-01 -4.5213976502418518e-01 - <_> - 7.6349334716796875e+01 - - 1 2 2478 5.0000000000000000e-01 0 -1 2479 109. -2 -3 2480 - 7.5000000000000000e+00 - - -8.3041268587112427e-01 3.8493672013282776e-01 - 1.9105611741542816e-01 -5.4174506664276123e-01 - <_> - 7.6266555786132812e+01 - - 1 2 2481 5.7850000000000000e+02 0 -1 2482 - 1.5000000000000000e+00 -2 -3 2483 2.8750000000000000e+02 - - 5.4517310857772827e-01 -8.3548069000244141e-01 - 5.4728341102600098e-01 -8.2781173288822174e-02 - <_> - 7.6401138305664062e+01 - - 1 2 2484 3.9500000000000000e+01 0 -1 2485 - 4.8500000000000000e+01 -2 -3 2486 1.5450000000000000e+02 - - -3.2842093706130981e-01 4.5771333575248718e-01 - 5.4719090461730957e-01 -5.5783140659332275e-01 - <_> - 7.6629852294921875e+01 - - 1 2 2487 5.0000000000000000e-01 0 -1 2488 - 9.8695000000000000e+03 -2 -3 2489 6.5000000000000000e+00 - - 3.5277694463729858e-01 -8.9051485061645508e-01 - 1.5630321204662323e-01 -5.0492966175079346e-01 - <_> - 7.7012748718261719e+01 - - 1 2 2490 3.4250000000000000e+02 0 -1 2491 - 5.0000000000000000e-01 -2 -3 2492 1.0500000000000000e+01 - - 6.1497741937637329e-01 -4.2811819911003113e-01 - -6.7799770832061768e-01 3.8289925456047058e-01 - <_> - 7.7173255920410156e+01 - - 1 2 2493 6.3500000000000000e+01 0 -1 2494 - 4.2500000000000000e+01 -2 -3 2495 1.0450000000000000e+02 - - -7.6624304056167603e-01 1.6050516068935394e-01 - -9.2148023843765259e-01 7.9243576526641846e-01 - <_> - 7.7233604431152344e+01 - - 1 2 2496 3.5000000000000000e+00 0 -1 2497 - 2.9500000000000000e+01 -2 -3 2498 9.5000000000000000e+00 - - 4.3042707443237305e-01 -7.0397478342056274e-01 - -5.7992899417877197e-01 6.0347892343997955e-02 - <_> - 7.7677680969238281e+01 - - 1 2 2499 7.7750000000000000e+02 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 3.9050000000000000e+02 - - 2.6784166693687439e-01 -7.3122310638427734e-01 - 6.9813531637191772e-01 -5.0064746290445328e-02 - <_> - 7.7810462951660156e+01 - - 1 2 2502 1.2500000000000000e+01 0 -1 2503 46. -2 -3 2504 - 4.7550000000000000e+02 - - 7.4502938985824585e-01 -9.3451422452926636e-01 - 1.7553819715976715e-01 -6.0448014736175537e-01 - <_> - 7.8011604309082031e+01 - - 1 2 2505 5.0000000000000000e-01 0 -1 2506 - 1.5000000000000000e+00 -2 -3 2507 2.1500000000000000e+01 - - 5.5112600326538086e-01 -7.1465468406677246e-01 - -6.2684929370880127e-01 2.0114150643348694e-01 - <_> - 7.7726852416992188e+01 - - 1 2 2508 2.5000000000000000e+00 0 -1 2509 - 1.5000000000000000e+00 -2 -3 2510 2.2275000000000000e+03 - - -6.1417835950851440e-01 6.4539062976837158e-01 - 2.3531807959079742e-01 -3.7372583150863647e-01 - <_> - 7.7838409423828125e+01 - - 1 2 2511 4.0435000000000000e+03 0 -1 2512 - 1.6050000000000000e+02 -2 -3 2513 12334. - - -3.2763364911079407e-01 7.1799826622009277e-01 - 4.0013375878334045e-01 -8.6134457588195801e-01 - <_> - 7.7509208679199219e+01 - - 1 2 2514 5.0000000000000000e-01 0 -1 2515 - 3.5000000000000000e+00 -2 -3 2516 4.1050000000000000e+02 - - -5.3890359401702881e-01 3.9034625887870789e-01 - 3.8619524240493774e-01 -5.2792149782180786e-01 - <_> - 7.7868835449218750e+01 - - 1 2 2517 5.0000000000000000e-01 0 -1 2518 - 4.5000000000000000e+00 -2 -3 2519 5.0000000000000000e-01 - - -4.3116971850395203e-01 3.5963350534439087e-01 - 3.4538099169731140e-01 -4.9176117777824402e-01 - <_> - 7.8107124328613281e+01 - - 1 2 2520 8.5000000000000000e+00 0 -1 2521 303. -2 -3 2522 - 1.3550000000000000e+02 - - 3.4497961401939392e-01 -3.9331153035163879e-01 - 6.7525440454483032e-01 -6.4588183164596558e-01 - <_> - 7.7949096679687500e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 4.4500000000000000e+01 -2 -3 2525 9.5000000000000000e+00 - - -8.7561493273824453e-04 6.5230095386505127e-01 - -5.9499686956405640e-01 2.8807112574577332e-01 - <_> - 7.7715606689453125e+01 - - 1 2 2526 5.7500000000000000e+01 0 -1 2527 - 1.9500000000000000e+01 -2 -3 2528 4.5000000000000000e+00 - - -2.3348997533321381e-01 3.4078663587570190e-01 - 8.8998430967330933e-01 -8.2743632793426514e-01 - <_> - 7.7412117004394531e+01 - - 1 2 2529 1.5500000000000000e+01 0 -1 2530 - 7.5000000000000000e+00 -2 -3 2531 1.2500000000000000e+01 - - -8.8361167907714844e-01 4.6851965785026550e-01 - 7.6548218727111816e-01 -3.4992104768753052e-01 - <_> - 7.7919708251953125e+01 - - 1 2 2532 1.4500000000000000e+01 0 -1 2533 - 4.3250000000000000e+02 -2 -3 2534 1.5000000000000000e+00 - - 1.6036920249462128e-01 -4.6338194608688354e-01 - -7.4071860313415527e-01 5.0758624076843262e-01 - <_> - 7.7726272583007812e+01 - - 1 2 2535 8.0500000000000000e+01 0 -1 2536 - 3.7500000000000000e+01 -2 -3 2537 2.5000000000000000e+00 - - -1.9343656301498413e-01 3.6727836728096008e-01 1. - -8.6589008569717407e-01 - <_> - 7.8272102355957031e+01 - - 1 2 2538 5.0000000000000000e-01 0 -1 2539 - 4.5000000000000000e+00 -2 -3 2540 658. - - -5.3998571634292603e-01 5.4582929611206055e-01 - -3.1522071361541748e-01 7.1490818262100220e-01 - <_> - 7.8563529968261719e+01 - - 1 2 2541 4.5000000000000000e+00 0 -1 2542 - 1.4500000000000000e+01 -2 -3 2543 1.6500000000000000e+01 - - 5.0465071201324463e-01 -4.6871420741081238e-01 - 5.3199578076601028e-02 -5.5464112758636475e-01 - <_> - 7.8416564941406250e+01 - - 1 2 2544 1.3450000000000000e+02 0 -1 2545 - 1.9500000000000000e+01 -2 -3 2546 3.5000000000000000e+00 - - -8.7330028414726257e-02 -7.5999724864959717e-01 - 5.3803235292434692e-01 -1.4696989953517914e-01 - <_> - 7.8487602233886719e+01 - - 1 2 2547 6.5000000000000000e+00 0 -1 2548 - 5.0000000000000000e-01 -2 -3 2549 1.7500000000000000e+01 - - 7.1036763489246368e-02 -7.1582734584808350e-01 - 5.4787242412567139e-01 -1.1151381582021713e-01 - <_> - 7.8819152832031250e+01 - - 1 2 2550 2.0750000000000000e+02 0 -1 2551 - 2.0735000000000000e+03 -2 -3 2552 4304. - - 2.2555717825889587e-01 -4.1814169287681580e-01 - 6.8767857551574707e-01 -2.6335984468460083e-01 - <_> - 7.9293106079101562e+01 - - 1 2 2553 1.8500000000000000e+01 0 -1 2554 - 4.1500000000000000e+01 -2 -3 2555 1.8500000000000000e+01 - - -8.1884217262268066e-01 1. 4.7395563125610352e-01 - -1.8633662164211273e-01 - <_> - 7.9529563903808594e+01 - - 1 2 2556 3.3500000000000000e+01 0 -1 2557 - 1.9850000000000000e+02 -2 -3 2558 1.3050000000000000e+02 - - 5.9216380119323730e-01 -7.9069614410400391e-01 - 2.3645764589309692e-01 -5.4375654458999634e-01 - <_> - 7.9264884948730469e+01 - - 1 2 2559 5.2500000000000000e+01 0 -1 2560 - 6.0500000000000000e+01 -2 -3 2561 3.1500000000000000e+01 - - 9.8454810678958893e-02 -6.2080347537994385e-01 - 3.8626289367675781e-01 -4.1950720548629761e-01 - <_> - 7.9011604309082031e+01 - - 1 2 2562 2.9550000000000000e+02 0 -1 2563 - 3.9500000000000000e+01 -2 -3 2564 2.5000000000000000e+00 - - -6.1641591787338257e-01 2.5828385353088379e-01 - 6.0895466804504395e-01 -5.8573886752128601e-02 - <_> - 7.9083618164062500e+01 - - 1 2 2565 2.8500000000000000e+01 0 -1 2566 - 5.0000000000000000e-01 -2 -3 2567 5.5000000000000000e+00 - - -3.0742061138153076e-01 2.8055912256240845e-01 - -7.9475212097167969e-01 8.2691472768783569e-01 - <_> - 7.9463661193847656e+01 - - 1 2 2568 5.0000000000000000e-01 0 -1 2569 - 1.5000000000000000e+00 -2 -3 2570 6.3050000000000000e+02 - - -1.2270902097225189e-01 7.1463072299957275e-01 - -4.2850509285926819e-01 2.2205479443073273e-01 - <_> - 7.9607894897460938e+01 - - 1 2 2571 3.5000000000000000e+00 0 -1 2572 - 3.5000000000000000e+00 -2 -3 2573 5.0000000000000000e-01 - - -9.3542063236236572e-01 5.4489326477050781e-01 - 2.0372124016284943e-01 -3.9889475703239441e-01 - <_> - 7.9263900756835938e+01 - - 1 2 2574 2.7950000000000000e+02 0 -1 2575 13730. -2 -3 2576 - 7.5000000000000000e+00 - - -7.3570191860198975e-02 7.3383468389511108e-01 - 4.3032327294349670e-01 -3.4399634599685669e-01 - <_> - 7.9479598999023438e+01 - - 1 2 2577 3.5000000000000000e+00 0 -1 2578 - 1.6500000000000000e+01 -2 -3 2579 168. - - 5.7104247808456421e-01 -8.0473148822784424e-01 - 2.1569329500198364e-01 -8.4493541717529297e-01 - <_> - 7.9719924926757812e+01 - - 1 2 2580 1.8500000000000000e+01 0 -1 2581 - 2.5500000000000000e+01 -2 -3 2582 5.8750000000000000e+02 - - -7.7445679903030396e-01 8.1580907106399536e-01 - -3.5785317420959473e-01 2.4033224582672119e-01 - <_> - 7.9651489257812500e+01 - - 1 2 2583 1.9750000000000000e+02 0 -1 2584 - 2.9845000000000000e+03 -2 -3 2585 8.7950000000000000e+02 - - -6.2534831464290619e-02 6.7511278390884399e-01 - 5.5172812938690186e-01 -4.6909588575363159e-01 - <_> - 7.9875663757324219e+01 - - 1 2 2586 4.3500000000000000e+01 0 -1 2587 - 3.0350000000000000e+02 -2 -3 2588 1.5000000000000000e+00 - - -9.0566140413284302e-01 2.2416961193084717e-01 - 6.5261769294738770e-01 -7.8972738981246948e-01 - <_> - 7.9825202941894531e+01 - - 1 2 2589 1.8500000000000000e+01 0 -1 2590 - 7.8500000000000000e+01 -2 -3 2591 5.5000000000000000e+00 - - -5.0458520650863647e-02 6.2098169326782227e-01 - -6.2433195114135742e-01 7.0211088657379150e-01 - <_> - 7.9897819519042969e+01 - - 1 2 2592 5.0000000000000000e-01 0 -1 2593 - 7.5000000000000000e+00 -2 -3 2594 3.6500000000000000e+01 - - -4.5179387927055359e-01 4.7666555643081665e-01 - -5.4754704236984253e-01 7.9487584531307220e-02 - <_> - 8.0220909118652344e+01 - - 1 2 2595 1.5000000000000000e+00 0 -1 2596 - 3.5000000000000000e+00 -2 -3 2597 2.3025000000000000e+03 - - 5.9295910596847534e-01 -4.7368842363357544e-01 - 3.2309135794639587e-01 -3.6595731973648071e-01 - <_> - 8.0416793823242188e+01 - - 1 2 2598 5.7650000000000000e+02 0 -1 2599 - 6.8250000000000000e+02 -2 -3 2600 423. - - -8.3457779884338379e-01 9.4248223304748535e-01 - 1.9588518142700195e-01 -8.9797055721282959e-01 - <_> - 8.0621925354003906e+01 - - 1 2 2601 4.3500000000000000e+01 0 -1 2602 - 4.5000000000000000e+00 -2 -3 2603 1.6500000000000000e+01 - - 5.7445579767227173e-01 -7.1823668479919434e-01 - -8.5307145118713379e-01 2.0513093471527100e-01 - <_> - 8.0483642578125000e+01 - - 1 2 2604 1.5000000000000000e+00 0 -1 2605 - 1.3500000000000000e+01 -2 -3 2606 1.5000000000000000e+00 - - -8.1219720840454102e-01 2.1613596379756927e-01 - 8.3621460199356079e-01 -6.8892109394073486e-01 - <_> - 8.0708099365234375e+01 - - 1 2 2607 1.5000000000000000e+00 0 -1 2608 - 1.5000000000000000e+00 -2 -3 2609 1.5000000000000000e+00 - - -4.5658573508262634e-01 4.5419740676879883e-01 - 3.7913042306900024e-01 -4.2572236061096191e-01 - <_> - 8.0967964172363281e+01 - - 1 2 2610 1.7225000000000000e+03 0 -1 2611 904. -2 -3 2612 - 48. - - -4.9103862047195435e-01 2.5986543297767639e-01 - -6.5187561511993408e-01 7.3263108730316162e-01 - <_> - 8.1015785217285156e+01 - - 1 2 2613 8.5500000000000000e+01 0 -1 2614 - 3.2500000000000000e+01 -2 -3 2615 1.6500000000000000e+01 - - 3.0590304732322693e-01 -6.0726463794708252e-01 - 4.5478045940399170e-01 -2.1701261401176453e-01 - <_> - 8.1222023010253906e+01 - - 1 2 2616 1.1500000000000000e+01 0 -1 2617 - 3.5000000000000000e+00 -2 -3 2618 570. - - 4.0577322244644165e-01 -2.8158581256866455e-01 - -7.0219916105270386e-01 7.8437590599060059e-01 - <_> - 8.1114990234375000e+01 - - 1 2 2619 1.5000000000000000e+00 0 -1 2620 - 5.0000000000000000e-01 -2 -3 2621 5.0000000000000000e-01 - - 4.7717106342315674e-01 -8.8117665052413940e-01 - 3.8160988688468933e-01 -1.6836205124855042e-01 - <_> - 8.0563499450683594e+01 - - 1 2 2622 2.5500000000000000e+01 0 -1 2623 - 1.2500000000000000e+01 -2 -3 2624 5.9500000000000000e+01 - - -5.5149054527282715e-01 3.2653099298477173e-01 - 3.5567849874496460e-01 -6.7506045103073120e-01 - <_> - 8.1009407043457031e+01 - - 1 2 2625 3.5000000000000000e+00 0 -1 2626 - 2.2985000000000000e+03 -2 -3 2627 5.5000000000000000e+00 - - 4.4590899348258972e-01 -2.8159150481224060e-01 - -5.6732189655303955e-01 2.0876012742519379e-01 - <_> - 8.1270759582519531e+01 - - 1 2 2628 1.3500000000000000e+01 0 -1 2629 - 4.4500000000000000e+01 -2 -3 2630 3.9500000000000000e+01 - - 1.7286604642868042e-01 -7.5421804189682007e-01 - 2.6134765148162842e-01 -5.9037572145462036e-01 - <_> - 8.1395576477050781e+01 - - 1 2 2631 4.4750000000000000e+02 0 -1 2632 - 1.9500000000000000e+01 -2 -3 2633 2.7965000000000000e+03 - - 1.2481955438852310e-01 -4.5122003555297852e-01 - 7.7366709709167480e-01 -3.6004805564880371e-01 - <_> - 8.1301132202148438e+01 - - 1 2 2634 2.5000000000000000e+00 0 -1 2635 6. -2 -3 2636 - 1.3995000000000000e+03 - - 1. -1. 4.4335600733757019e-01 -9.4446659088134766e-02 - <_> - 8.1370132446289062e+01 - - 1 2 2637 4.1250000000000000e+02 0 -1 2638 - 1.5000000000000000e+00 -2 -3 2639 7.5000000000000000e+00 - - 6.9000430405139923e-02 -4.9422886967658997e-01 - -9.1928571462631226e-01 4.6428659558296204e-01 - <_> - 8.1621879577636719e+01 - - 1 2 2640 2.8500000000000000e+01 0 -1 2641 - 2.6500000000000000e+01 -2 -3 2642 1.5500000000000000e+01 - - -4.7164541482925415e-01 2.5174945592880249e-01 - 1.3210830092430115e-01 -8.8470876216888428e-01 - <_> - 8.2271644592285156e+01 - - 1 2 2643 2.5000000000000000e+00 0 -1 2644 - 1.0500000000000000e+01 -2 -3 2645 86. - - -6.9350771605968475e-02 6.4976197481155396e-01 - -7.7881592512130737e-01 -6.0378432273864746e-02 - <_> - 8.2486991882324219e+01 - - 1 2 2646 2.7500000000000000e+01 0 -1 2647 - 4.5000000000000000e+00 -2 -3 2648 6.5000000000000000e+00 - - -8.2361882925033569e-01 3.2168322801589966e-01 - 2.4581556022167206e-01 -5.5088657140731812e-01 - <_> - 8.2648330688476562e+01 - - 1 2 2649 1.1500000000000000e+01 0 -1 2650 - 2.5000000000000000e+00 -2 -3 2651 552. - - 5.5005900561809540e-02 -6.6145080327987671e-01 - -9.3321514129638672e-01 2.9643073678016663e-01 - <_> - 8.2730377197265625e+01 - - 1 2 2652 1835. 0 -1 2653 9026. -2 -3 2654 - 5.0000000000000000e-01 - - -8.2883286476135254e-01 9.0321773290634155e-01 - 8.2042239606380463e-02 -4.4094491004943848e-01 - <_> - 8.2976600646972656e+01 - - 1 2 2655 7.5000000000000000e+00 0 -1 2656 27. -2 -3 2657 - 7.7500000000000000e+01 - - -6.6883772611618042e-01 8.2824200391769409e-01 - 2.4622967839241028e-01 -7.1693640947341919e-01 - <_> - 8.2621650695800781e+01 - - 1 2 2658 8.5000000000000000e+00 0 -1 2659 - 5.0000000000000000e-01 -2 -3 2660 55. - - 2.1821559965610504e-01 -3.5495325922966003e-01 - -5.7552605867385864e-01 6.4010292291641235e-01 - <_> - 8.2944847106933594e+01 - - 1 2 2661 5.5000000000000000e+00 0 -1 2662 9109. -2 -3 2663 - 3.0500000000000000e+01 - - 3.6217045038938522e-02 -6.7411881685256958e-01 - 4.6031165122985840e-01 -1.3432784378528595e-01 - <_> - 8.2844596862792969e+01 - - 1 2 2664 4.5000000000000000e+00 0 -1 2665 - 1.9500000000000000e+01 -2 -3 2666 5.0000000000000000e-01 - - -6.6067945957183838e-01 6.5172028541564941e-01 - 5.3896325826644897e-01 -1.0024529695510864e-01 - <_> - 8.2988021850585938e+01 - - 1 2 2667 2.3500000000000000e+01 0 -1 2668 - 3.5000000000000000e+00 -2 -3 2669 5.5500000000000000e+01 - - 3.6205202341079712e-01 -4.8302540183067322e-01 - -3.1453946232795715e-01 4.5836016535758972e-01 - <_> - 8.3242561340332031e+01 - - 1 2 2670 9.0500000000000000e+01 0 -1 2671 - 4.1500000000000000e+01 -2 -3 2672 3.9500000000000000e+01 - - 2.5454065203666687e-01 -3.1304958462715149e-01 - -9.7736436128616333e-01 6.2847685813903809e-01 - <_> - 8.3276382446289062e+01 - - 1 2 2673 1.7500000000000000e+01 0 -1 2674 - 8.3500000000000000e+01 -2 -3 2675 5.5000000000000000e+00 - - 5.6938213109970093e-01 -9.2754542827606201e-01 - 3.0042541027069092e-01 -2.8111898899078369e-01 - <_> - 8.2934799194335938e+01 - - 1 2 2676 3.3500000000000000e+01 0 -1 2677 - 3.6050000000000000e+02 -2 -3 2678 94. - - -3.8239040970802307e-01 1.4262221753597260e-01 - 7.1967273950576782e-01 -7.4638730287551880e-01 - <_> - 8.3355155944824219e+01 - - 1 2 2679 6.5000000000000000e+00 0 -1 2680 25. -2 -3 2681 - 1.5000000000000000e+00 - - -9.2031919956207275e-01 1. 4.2035222053527832e-01 - -1.8400678038597107e-01 - <_> - 8.3341117858886719e+01 - - 1 2 2682 2.7550000000000000e+02 0 -1 2683 - 3.9500000000000000e+01 -2 -3 2684 1.7500000000000000e+01 - - -3.1554982066154480e-01 2.4787786602973938e-01 - -9.8996192216873169e-01 1. - <_> - 8.3088867187500000e+01 - - 1 2 2685 5.0000000000000000e-01 0 -1 2686 - 3.4500000000000000e+01 -2 -3 2687 3.3250000000000000e+02 - - 7.6295363903045654e-01 -3.0974990129470825e-01 - -2.5224679708480835e-01 6.2690478563308716e-01 - <_> - 8.3444519042968750e+01 - - 1 2 2688 1.5000000000000000e+00 0 -1 2689 - 6.6500000000000000e+01 -2 -3 2690 5.0000000000000000e-01 - - -4.7374388575553894e-01 3.5564544796943665e-01 - 2.2661061584949493e-01 -5.4821664094924927e-01 - <_> - 8.3531219482421875e+01 - - 1 2 2691 1.5450000000000000e+02 0 -1 2692 - 3.2500000000000000e+01 -2 -3 2693 1.9500000000000000e+01 - - -2.1394637227058411e-01 8.1045120954513550e-01 - -4.8737204074859619e-01 8.6701557040214539e-02 - <_> - 8.3356086730957031e+01 - - 1 2 2694 3.5000000000000000e+00 0 -1 2695 - 9.5000000000000000e+00 -2 -3 2696 2.1500000000000000e+01 - - -3.3526990562677383e-02 5.4166865348815918e-01 - -6.0305202007293701e-01 7.6919454336166382e-01 - <_> - 8.3536964416503906e+01 - - 1 2 2697 2.7950000000000000e+02 0 -1 2698 - 2.1500000000000000e+01 -2 -3 2699 3.5045000000000000e+03 - - -4.9123385548591614e-01 5.2362555265426636e-01 - -7.9040545225143433e-01 -3.3013910055160522e-02 - <_> - 8.3796424865722656e+01 - - 1 2 2700 9.5000000000000000e+00 0 -1 2701 - 4.5000000000000000e+00 -2 -3 2702 1.7500000000000000e+01 - - 4.8670431971549988e-01 -2.3416480422019958e-01 - -4.7568261623382568e-01 2.2792084515094757e-01 - <_> - 8.4059371948242188e+01 - - 1 2 2703 5.5500000000000000e+01 0 -1 2704 - 5.0000000000000000e-01 -2 -3 2705 3.9185000000000000e+03 - - 2.2618722915649414e-01 -9.2116522789001465e-01 - -3.2166120409965515e-01 2.6295122504234314e-01 - <_> - 8.4028038024902344e+01 - - 1 2 2706 1.1500000000000000e+01 0 -1 2707 15. -2 -3 2708 - 4.5000000000000000e+00 - - 8.7838518619537354e-01 -8.4853267669677734e-01 - 3.6655527353286743e-01 -1.8356652557849884e-01 - <_> - 8.3846260070800781e+01 - - 1 2 2709 5.5000000000000000e+00 0 -1 2710 325. -2 -3 2711 - 9.5000000000000000e+00 - - -8.7982141971588135e-01 1. 3.4321373701095581e-01 - -1.8177768588066101e-01 - <_> - 8.4174667358398438e+01 - - 1 2 2712 9.5000000000000000e+00 0 -1 2713 - 1.9050000000000000e+02 -2 -3 2714 4.5000000000000000e+00 - - 6.9107550382614136e-01 -7.7517443895339966e-01 - 5.7090425491333008e-01 -1.1606752872467041e-01 - <_> - 8.4324356079101562e+01 - - 1 2 2715 2.7500000000000000e+01 0 -1 2716 - 4.0885000000000000e+03 -2 -3 2717 8.5000000000000000e+00 - - 8.7019419670104980e-01 -8.7088418006896973e-01 - 2.1278975903987885e-01 -4.6584972739219666e-01 - <_> - 8.4102806091308594e+01 - - 1 2 2718 2.1250000000000000e+02 0 -1 2719 - 5.6500000000000000e+01 -2 -3 2720 5.0000000000000000e-01 - - 2.1476839482784271e-01 -4.4505792856216431e-01 1. - -7.7488011121749878e-01 - <_> - 8.4038200378417969e+01 - - 1 2 2721 9.4500000000000000e+01 0 -1 2722 - 1.5000000000000000e+00 -2 -3 2723 98. - - 1.9173437356948853e-01 -5.0092142820358276e-01 - -4.4755691289901733e-01 4.7253641486167908e-01 - <_> - 8.4137344360351562e+01 - - 1 2 2724 1.1515000000000000e+03 0 -1 2725 - 2.0050000000000000e+02 -2 -3 2726 4.8500000000000000e+01 - - -8.2353651523590088e-02 5.8139425516128540e-01 - 3.6044213920831680e-02 -6.4356809854507446e-01 - <_> - 8.4309326171875000e+01 - - 1 2 2727 1.0500000000000000e+01 0 -1 2728 2663. -2 -3 2729 - 2.4250000000000000e+02 - - 4.7916080802679062e-02 -5.9066039323806763e-01 - 7.3575264215469360e-01 -8.9028924703598022e-01 - <_> - 8.4420402526855469e+01 - - 1 2 2730 5.4665000000000000e+03 0 -1 2731 - 1.5000000000000000e+00 -2 -3 2732 4.6500000000000000e+01 - - 2.7950283885002136e-01 -2.4711169302463531e-01 - -9.4440460205078125e-01 1. - <_> - 8.4394798278808594e+01 - - 1 2 2733 1.1050000000000000e+02 0 -1 2734 63. -2 -3 2735 - 6.4650000000000000e+02 - - 4.1327634453773499e-01 -8.2762449979782104e-01 - -2.5601835921406746e-02 7.5820297002792358e-01 - <_> - 8.4607276916503906e+01 - - 1 2 2736 2.5000000000000000e+00 0 -1 2737 - 2.5500000000000000e+01 -2 -3 2738 1.0500000000000000e+01 - - -3.7000726908445358e-02 6.8266022205352783e-01 - 1.4960629865527153e-02 -6.4148795604705811e-01 - <_> - 8.5164596557617188e+01 - - 1 2 2739 5.3500000000000000e+01 0 -1 2740 - 2.9500000000000000e+01 -2 -3 2741 1.0850000000000000e+02 - - -1.2329825013875961e-01 5.5731654167175293e-01 - -8.3035022020339966e-01 7.4285131692886353e-01 - <_> - 8.5318458557128906e+01 - - 1 2 2742 6.0500000000000000e+01 0 -1 2743 - 5.5750000000000000e+02 -2 -3 2744 2.4455000000000000e+03 - - -9.1876357793807983e-01 1.5386807918548584e-01 1. - -8.4595882892608643e-01 - <_> - 8.5138092041015625e+01 - - 1 2 2745 1.4500000000000000e+01 0 -1 2746 133. -2 -3 2747 - 1.5000000000000000e+00 - - 9.3546825647354126e-01 -7.7808952331542969e-01 - 4.2497289180755615e-01 -1.8036651611328125e-01 - <_> - 8.5170181274414062e+01 - - 1 2 2748 2.6500000000000000e+01 0 -1 2749 - 1.6500000000000000e+01 -2 -3 2750 3.0550000000000000e+02 - - 9.9500669166445732e-03 -6.0836273431777954e-01 - 5.2151191234588623e-01 -3.4265536069869995e-01 - <_> - 8.5376792907714844e+01 - - 1 2 2751 3.5000000000000000e+00 0 -1 2752 - 1.6500000000000000e+01 -2 -3 2753 4.2500000000000000e+01 - - 4.3600571155548096e-01 -8.0105257034301758e-01 - -5.1988095045089722e-01 2.0660850405693054e-01 - <_> - 8.5609893798828125e+01 - - 1 2 2754 1.0500000000000000e+01 0 -1 2755 - 1.5000000000000000e+00 -2 -3 2756 2.5000000000000000e+00 - - -6.2382709980010986e-01 4.6645849943161011e-01 - 3.5961329936981201e-02 -5.3663784265518188e-01 - <_> - 8.5939903259277344e+01 - - 1 2 2757 9.5500000000000000e+01 0 -1 2758 11828. -2 -3 2759 - 3.8450000000000000e+02 - - -7.1205846965312958e-02 -9.5047873258590698e-01 - 3.3001002669334412e-01 -5.8486175537109375e-01 - <_> - 8.5633140563964844e+01 - - 1 2 2760 1.5000000000000000e+00 0 -1 2761 - 7.5000000000000000e+00 -2 -3 2762 1.5605000000000000e+03 - - -1.8193472921848297e-01 5.5474883317947388e-01 - 6.6240763664245605e-01 -3.6709865927696228e-01 - <_> - 8.5665580749511719e+01 - - 1 2 2763 5.0000000000000000e-01 0 -1 2764 - 3.5000000000000000e+00 -2 -3 2765 1.6500000000000000e+01 - - -6.3473922014236450e-01 4.5258450508117676e-01 - -6.2842214107513428e-01 3.2442636787891388e-02 - <_> - 8.5813781738281250e+01 - - 1 2 2766 1.8050000000000000e+02 0 -1 2767 - 1.5000000000000000e+00 -2 -3 2768 6.5000000000000000e+00 - - -8.1317859888076782e-01 1.4819937944412231e-01 - 7.9641395807266235e-01 -9.0252667665481567e-01 - <_> - 8.6130287170410156e+01 - - 1 2 2769 2.5000000000000000e+00 0 -1 2770 - 1.5000000000000000e+00 -2 -3 2771 1.0850000000000000e+02 - - -8.2908695936203003e-01 6.0830992460250854e-01 - -3.5930514335632324e-01 2.5600242614746094e-01 - <_> - 8.5960426330566406e+01 - - 1 2 2772 3.5000000000000000e+00 0 -1 2773 - 2.5000000000000000e+00 -2 -3 2774 3.5000000000000000e+00 - - 4.0980219841003418e-01 -8.7654078006744385e-01 - 3.7149679660797119e-01 -1.6985960304737091e-01 - <_> - 8.5911773681640625e+01 - - 1 2 2775 2.0750000000000000e+02 0 -1 2776 - 2.5000000000000000e+00 -2 -3 2777 4.0550000000000000e+02 - - 6.4895875751972198e-02 -5.2602392435073853e-01 - 8.3245736360549927e-01 -4.8650942742824554e-02 - <_> - 8.6134010314941406e+01 - - 1 2 2778 6.2500000000000000e+01 0 -1 2779 - 3.6650000000000000e+02 -2 -3 2780 4.5500000000000000e+01 - - -7.8410977125167847e-01 2.2223210334777832e-01 - -8.4461647272109985e-01 7.4402904510498047e-01 - <_> - 8.6428909301757812e+01 - - 1 2 2781 2.5000000000000000e+00 0 -1 2782 - 6.5000000000000000e+00 -2 -3 2783 4.1750000000000000e+02 - - 5.1555430889129639e-01 -1.5588639676570892e-01 - 1.7773015797138214e-01 -5.0610744953155518e-01 - <_> - 8.6826782226562500e+01 - - 1 2 2784 1.5505000000000000e+03 0 -1 2785 - 5.0000000000000000e-01 -2 -3 2786 1.4500000000000000e+01 - - 3.5983416438102722e-01 -5.7004302740097046e-01 - -5.4764652252197266e-01 3.9787346124649048e-01 - <_> - 8.7037475585937500e+01 - - 1 2 2787 5.0000000000000000e-01 0 -1 2788 - 8.5000000000000000e+00 -2 -3 2789 5.0000000000000000e-01 - - -7.9977160692214966e-01 3.6234867572784424e-01 - 2.8641289472579956e-01 -4.9720412492752075e-01 - <_> - 8.6423477172851562e+01 - - 1 2 2790 1.4500000000000000e+01 0 -1 2791 47. -2 -3 2792 - 3.2500000000000000e+01 - - 4.9334439635276794e-01 -7.6565510034561157e-01 - 2.7979478240013123e-01 -3.8790243864059448e-01 - <_> - 8.6541648864746094e+01 - - 1 2 2793 3.8500000000000000e+01 0 -1 2794 - 1.5000000000000000e+00 -2 -3 2795 2.0850000000000000e+02 - - 1.1817480623722076e-01 -4.9608191847801208e-01 - 4.3412643671035767e-01 -8.0814820528030396e-01 - <_> - 8.6554786682128906e+01 - - 1 2 2796 5.0000000000000000e-01 0 -1 2797 - 5.0000000000000000e-01 -2 -3 2798 1.5500000000000000e+01 - - -7.7674239873886108e-01 4.3930459022521973e-01 - 1.3139089569449425e-02 -6.7160016298294067e-01 - <_> - 8.6836524963378906e+01 - - 1 2 2799 2.1500000000000000e+01 0 -1 2800 - 3.2750000000000000e+02 -2 -3 2801 1.2500000000000000e+01 - - -3.1266799569129944e-01 6.9435644149780273e-01 - -5.9980082511901855e-01 6.5070140361785889e-01 - <_> - 8.6815773010253906e+01 - - 1 2 2802 9.8850000000000000e+02 0 -1 2803 - 4.5000000000000000e+00 -2 -3 2804 3.1500000000000000e+01 - - 7.5975960493087769e-01 -1.4526490122079849e-02 - -4.3337148427963257e-01 3.4662330150604248e-01 - <_> - 8.6753486633300781e+01 - - 1 2 2805 5.8750000000000000e+02 0 -1 2806 - 4.0050000000000000e+02 -2 -3 2807 5.8550000000000000e+02 - - -5.1701253652572632e-01 8.5829895734786987e-01 - 6.8487954139709473e-01 -6.2283929437398911e-02 - <_> - 8.7153579711914062e+01 - - 1 2 2808 5.0000000000000000e-01 0 -1 2809 - 2.5000000000000000e+00 -2 -3 2810 9.3050000000000000e+02 - - -7.2558873891830444e-01 4.3454471230506897e-01 - -8.1130824983119965e-02 -8.3618861436843872e-01 - <_> - 8.7351936340332031e+01 - - 1 2 2811 3.5000000000000000e+00 0 -1 2812 - 7.5000000000000000e+00 -2 -3 2813 1.5000000000000000e+00 - - -9.6148520708084106e-01 4.0121293067932129e-01 - 1.6389970481395721e-01 -5.4697543382644653e-01 - <_> - 8.7288108825683594e+01 - - 1 2 2814 9.8500000000000000e+01 0 -1 2815 - 1.5000000000000000e+00 -2 -3 2816 5.0000000000000000e-01 - - 3.0000725388526917e-01 -5.5716449022293091e-01 - 6.8792611360549927e-01 -6.3822388648986816e-02 - <_> - 8.7567855834960938e+01 - - 1 2 2817 1.2500000000000000e+01 0 -1 2818 - 5.5000000000000000e+00 -2 -3 2819 3.2500000000000000e+01 - - -6.0839080810546875e-01 2.7974289655685425e-01 - -9.0464597940444946e-01 -9.1534465551376343e-02 - <_> - 8.7742805480957031e+01 - - 1 2 2820 2.9050000000000000e+02 0 -1 2821 - 4.0350000000000000e+02 -2 -3 2822 1.5000000000000000e+00 - - -1.1221635341644287e-01 6.0925048589706421e-01 - 3.3704385161399841e-01 -5.3282082080841064e-01 - <_> - 8.7797904968261719e+01 - - 1 2 2823 1.4500000000000000e+01 0 -1 2824 1690. -2 -3 2825 - 7.4500000000000000e+01 - - 5.5097710341215134e-02 -8.7218642234802246e-01 - -7.2020220756530762e-01 3.5318741202354431e-01 - <_> - 8.8284759521484375e+01 - - 1 2 2826 2.2450000000000000e+02 0 -1 2827 - 1.9500000000000000e+01 -2 -3 2828 1.9535000000000000e+03 - - -1.3064707815647125e-01 4.8685196042060852e-01 - -8.4640699625015259e-01 1.8381766974925995e-01 - <_> - 8.8222618103027344e+01 - - 1 2 2829 5.0000000000000000e-01 0 -1 2830 - 1.2500000000000000e+01 -2 -3 2831 4.5000000000000000e+00 - - -5.3857803344726562e-01 5.4414546489715576e-01 - 1.8226167559623718e-01 -5.0997644662857056e-01 - <_> - 8.8490211486816406e+01 - - 1 2 2832 8.5000000000000000e+00 0 -1 2833 1990. -2 -3 2834 - 3.5000000000000000e+00 - - -3.3869510889053345e-01 8.5612648725509644e-01 - 6.6255128383636475e-01 -1.8713159859180450e-01 - <_> - 8.8309280395507812e+01 - - 1 2 2835 5.0000000000000000e-01 0 -1 2836 - 1.5350000000000000e+02 -2 -3 2837 3.0500000000000000e+01 - - 3.7325781583786011e-01 -9.1693335771560669e-01 - -3.7281343340873718e-01 4.3598929047584534e-01 - <_> - 8.8545036315917969e+01 - - 1 2 2838 2.5000000000000000e+00 0 -1 2839 - 3.5000000000000000e+00 -2 -3 2840 9.5000000000000000e+00 - - -8.1305176019668579e-01 2.3575115203857422e-01 - 8.2359343767166138e-01 -5.0804460048675537e-01 - <_> - 8.8620689392089844e+01 - - 1 2 2841 4.7950000000000000e+02 0 -1 2842 - 7.4550000000000000e+02 -2 -3 2843 3.5000000000000000e+00 - - -1. 5.5236303806304932e-01 -4.9426826834678650e-01 - 7.5652711093425751e-02 - <_> - 8.8498481750488281e+01 - - 1 2 2844 5.0000000000000000e-01 0 -1 2845 - 5.0000000000000000e-01 -2 -3 2846 9.6500000000000000e+01 - - -8.3736324310302734e-01 3.9632564783096313e-01 - -7.2766882181167603e-01 4.8122378066182137e-03 - <_> - 8.8912002563476562e+01 - - 1 2 2847 3.5000000000000000e+00 0 -1 2848 - 5.0000000000000000e-01 -2 -3 2849 1.5000000000000000e+00 - - 7.1133011579513550e-01 -1.0473229736089706e-01 - 3.0710890889167786e-01 -4.0350064635276794e-01 - <_> - 8.9316238403320312e+01 - - 1 2 2850 1.6500000000000000e+01 0 -1 2851 - 1.5000000000000000e+00 -2 -3 2852 7.5000000000000000e+00 - - 8.4607600001618266e-04 -7.6641041040420532e-01 - -3.1311124563217163e-01 4.4425663352012634e-01 - <_> - 8.9348419189453125e+01 - - 1 2 2853 1.1500000000000000e+01 0 -1 2854 - 1.7500000000000000e+01 -2 -3 2855 2.0500000000000000e+01 - - -9.8593395948410034e-01 1. 2.4410592019557953e-01 - -3.1496018171310425e-01 - <_> - 8.9189270019531250e+01 - - 1 2 2856 1.6500000000000000e+01 0 -1 2857 - 6.5000000000000000e+00 -2 -3 2858 74. - - 8.4461316466331482e-02 -4.1109508275985718e-01 - 9.0820807218551636e-01 -3.5371799021959305e-02 - <_> - 8.9124603271484375e+01 - - 1 2 2859 5.8750000000000000e+02 0 -1 2860 9863. -2 -3 2861 - 1.2500000000000000e+01 - - -6.3491946458816528e-01 4.8731520771980286e-01 - -5.2020323276519775e-01 3.2958313822746277e-01 - <_> - 8.9286071777343750e+01 - - 1 2 2862 9.7500000000000000e+01 0 -1 2863 - 2.1950000000000000e+02 -2 -3 2864 5.0000000000000000e-01 - - 4.2516252398490906e-01 -1. 2.8237330913543701e-01 - -5.0328004360198975e-01 - <_> - 8.9424316406250000e+01 - - 1 2 2865 5.2500000000000000e+01 0 -1 2866 61. -2 -3 2867 - 1.7500000000000000e+01 - - 5.0655448436737061e-01 -5.1969325542449951e-01 - 3.5390514135360718e-01 -4.7365185618400574e-01 - <_> - 8.9726875305175781e+01 - - 1 2 2868 5.8500000000000000e+01 0 -1 2869 - 1.4500000000000000e+01 -2 -3 2870 42. - - 3.0255803465843201e-01 -2.0427562296390533e-01 - -8.5021793842315674e-01 7.0594644546508789e-01 - <_> - 8.9578895568847656e+01 - - 1 2 2871 1.0500000000000000e+01 0 -1 2872 - 1.1950000000000000e+02 -2 -3 2873 24. - - -2.4734574556350708e-01 3.1361401081085205e-01 - 8.7930864095687866e-01 -1. - <_> - 8.9768898010253906e+01 - - 1 2 2874 7.5000000000000000e+00 0 -1 2875 - 7.4500000000000000e+01 -2 -3 2876 2.8500000000000000e+01 - - 3.1221041083335876e-01 -7.0097410678863525e-01 - 2.4191275238990784e-01 -5.3588688373565674e-01 - <_> - 8.9684265136718750e+01 - - 1 2 2877 3.5000000000000000e+00 0 -1 2878 - 2.7950000000000000e+02 -2 -3 2879 4.1500000000000000e+01 - - 1.2314370274543762e-01 -6.7686629295349121e-01 - -3.6168605089187622e-01 3.5209780931472778e-01 - <_> - 8.9795585632324219e+01 - - 1 2 2880 2.1050000000000000e+02 0 -1 2881 - 3.5000000000000000e+00 -2 -3 2882 1.0500000000000000e+01 - - 5.2586346864700317e-01 -3.2540410757064819e-01 - -8.8829517364501953e-01 4.9435129761695862e-01 - <_> - 8.9792076110839844e+01 - - 1 2 2883 2.5000000000000000e+00 0 -1 2884 - 2.9500000000000000e+01 -2 -3 2885 3.9250000000000000e+02 - - -6.1523008346557617e-01 3.7085807323455811e-01 - 9.0023398399353027e-02 -6.0440886020660400e-01 - <_> - 8.9958946228027344e+01 - - 1 2 2886 1.0500000000000000e+01 0 -1 2887 - 1.2500000000000000e+01 -2 -3 2888 1.8500000000000000e+01 - - -5.9052956104278564e-01 2.1934990584850311e-01 - -5.8395588397979736e-01 5.4426544904708862e-01 - <_> - 8.9670410156250000e+01 - - 1 2 2889 1.5000000000000000e+00 0 -1 2890 - 2.5000000000000000e+00 -2 -3 2891 8.5000000000000000e+00 - - -8.5811334848403931e-01 5.2128863334655762e-01 - -3.4101697802543640e-01 2.6454553008079529e-01 - <_> - 8.9847396850585938e+01 - - 1 2 2892 1.4500000000000000e+01 0 -1 2893 - 1.1500000000000000e+01 -2 -3 2894 6.6500000000000000e+01 - - -3.8977336883544922e-01 4.3855726718902588e-01 - -5.0296223163604736e-01 1.7698343098163605e-01 - <_> - 9.0157752990722656e+01 - - 1 2 2895 5.0000000000000000e-01 0 -1 2896 - 8.5000000000000000e+00 -2 -3 2897 4.5000000000000000e+00 - - -4.1999164223670959e-01 3.1035554409027100e-01 - 2.2039012610912323e-01 -5.3406608104705811e-01 - <_> - 9.0098411560058594e+01 - - 1 2 2898 5.0000000000000000e-01 0 -1 2899 - 2.1750000000000000e+02 -2 -3 2900 1.9500000000000000e+01 - - -5.9334795922040939e-02 6.7584723234176636e-01 - -5.2655130624771118e-01 2.6948010921478271e-01 - <_> - 9.0537551879882812e+01 - - 1 2 2901 5.0000000000000000e-01 0 -1 2902 - 7.5000000000000000e+00 -2 -3 2903 2.2500000000000000e+01 - - -6.9564437866210938e-01 4.3913722038269043e-01 - -3.6194628477096558e-01 3.8801836967468262e-01 - <_> - 9.0335647583007812e+01 - - 1 2 2904 1.5000000000000000e+00 0 -1 2905 - 5.4550000000000000e+02 -2 -3 2906 2.5000000000000000e+00 - - 1. -9.8192542791366577e-01 3.3667489886283875e-01 - -2.0190110802650452e-01 - <_> - 9.0692535400390625e+01 - - 1 2 2907 1.5000000000000000e+00 0 -1 2908 - 8.5000000000000000e+00 -2 -3 2909 344. - - -4.5181885361671448e-01 3.5688367486000061e-01 - -5.9278815984725952e-01 6.4385175704956055e-02 - <_> - 9.0584419250488281e+01 - - 1 2 2910 4.6500000000000000e+01 0 -1 2911 - 2.5000000000000000e+00 -2 -3 2912 6.5000000000000000e+00 - - 4.3527498841285706e-01 -1.0811836272478104e-01 - -6.3831877708435059e-01 1. - <_> - 9.0788459777832031e+01 - - 1 2 2913 294. 0 -1 2914 14. -2 -3 2915 - 4.4500000000000000e+01 - - -8.4630513191223145e-01 1. 2.0404133200645447e-01 - -4.8527365922927856e-01 - <_> - 9.0862548828125000e+01 - - 1 2 2916 3.3500000000000000e+01 0 -1 2917 52. -2 -3 2918 - 5.2705000000000000e+03 - - 7.2816586494445801e-01 -5.4465806484222412e-01 - -1.1197114735841751e-01 5.4565620422363281e-01 - <_> - 9.0902687072753906e+01 - - 1 2 2919 4.1050000000000000e+02 0 -1 2920 139. -2 -3 2921 - 1.5000000000000000e+00 - - -9.1185075044631958e-01 6.4714074134826660e-01 - 1.9417783617973328e-01 -3.6837339401245117e-01 - <_> - 9.0985298156738281e+01 - - 1 2 2922 5.7650000000000000e+02 0 -1 2923 - 2.9450000000000000e+02 -2 -3 2924 3.9150000000000000e+02 - - -8.4534245729446411e-01 1. 4.4867873191833496e-01 - -1.7172452807426453e-01 - <_> - 9.1107513427734375e+01 - - 1 2 2925 3.5000000000000000e+00 0 -1 2926 - 1.5500000000000000e+01 -2 -3 2927 4.2500000000000000e+01 - - -8.3989793062210083e-01 8.9864379167556763e-01 - 2.8704452514648438e-01 -2.8833448886871338e-01 - <_> - 9.1266738891601562e+01 - - 1 2 2928 4.9775000000000000e+03 0 -1 2929 - 4.5000000000000000e+00 -2 -3 2930 1.9865000000000000e+03 - - -7.4095195531845093e-01 1.5922544896602631e-01 - -9.0941101312637329e-01 1.8585844337940216e-01 - <_> - 9.1225799560546875e+01 - - 1 2 2931 5.0000000000000000e-01 0 -1 2932 - 4.5000000000000000e+00 -2 -3 2933 1.4500000000000000e+01 - - -7.6407551765441895e-01 5.0083768367767334e-01 - -7.2587943077087402e-01 -5.0088282674551010e-02 - <_> - 9.0573638916015625e+01 - - 1 2 2934 8.5000000000000000e+00 0 -1 2935 - 2.7500000000000000e+01 -2 -3 2936 9.5000000000000000e+00 - - -7.4017934501171112e-02 5.9898555278778076e-01 - 1.7782434821128845e-01 -6.5216350555419922e-01 - <_> - 9.0737045288085938e+01 - - 1 2 2937 5.0000000000000000e-01 0 -1 2938 - 1.0450000000000000e+02 -2 -3 2939 1.6950000000000000e+02 - - 6.0130667686462402e-01 -9.1431754827499390e-01 - -4.1352280974388123e-01 1.6340811550617218e-01 - <_> - 9.1356544494628906e+01 - - 1 2 2940 1.5000000000000000e+00 0 -1 2941 - 7.5000000000000000e+00 -2 -3 2942 1.6805000000000000e+03 - - -2.0215752720832825e-01 6.1950212717056274e-01 - -5.5768364667892456e-01 3.5280909389257431e-02 - <_> - 9.0944335937500000e+01 - - 1 2 2943 1.1155000000000000e+03 0 -1 2944 - 1.3500000000000000e+01 -2 -3 2945 4.1950000000000000e+02 - - 6.8771177530288696e-01 -9.7811706364154816e-02 - -4.1221308708190918e-01 1.9626976549625397e-01 - <_> - 9.1227783203125000e+01 - - 1 2 2946 1.7535000000000000e+03 0 -1 2947 - 6.5000000000000000e+00 -2 -3 2948 8.3500000000000000e+01 - - 2.8345218300819397e-01 -2.8811171650886536e-01 - -9.1736477613449097e-01 1. - <_> - 9.1561256408691406e+01 - - 1 2 2949 3.9500000000000000e+01 0 -1 2950 169. -2 -3 2951 - 3.5000000000000000e+00 - - -7.5076478719711304e-01 8.8347315788269043e-01 - 3.4602180123329163e-01 -2.1803687512874603e-01 - <_> - 9.0775177001953125e+01 - - 1 2 2952 1.2550000000000000e+02 0 -1 2953 - 8.5000000000000000e+00 -2 -3 2954 156. - - -3.8729524612426758e-01 2.9583999514579773e-01 - -7.9863160848617554e-01 3.9145687222480774e-01 - <_> - 9.1042625427246094e+01 - - 1 2 2955 2.5000000000000000e+00 0 -1 2956 - 2.5750000000000000e+02 -2 -3 2957 4685. - - 2.6745319366455078e-01 -6.6209262609481812e-01 - -7.7674686908721924e-01 7.1668751537799835e-02 - <_> - 9.1575469970703125e+01 - - 1 2 2958 1.0500000000000000e+01 0 -1 2959 - 1.0550000000000000e+02 -2 -3 2960 4.5500000000000000e+01 - - 5.3284192085266113e-01 -3.2092022895812988e-01 - -9.5425200462341309e-01 5.0468903779983521e-01 - <_> - 9.1930732727050781e+01 - - 1 2 2961 1.2500000000000000e+01 0 -1 2962 - 1.8950000000000000e+02 -2 -3 2963 2.5000000000000000e+00 - - -2.8867003321647644e-01 3.5526236891746521e-01 - 2.9676264524459839e-01 -6.0322642326354980e-01 - <_> - 9.2231742858886719e+01 - - 1 2 2964 7.5000000000000000e+00 0 -1 2965 - 1.9500000000000000e+01 -2 -3 2966 4.1500000000000000e+01 - - -7.3552119731903076e-01 3.0101212859153748e-01 - -5.0962239503860474e-01 5.0894033908843994e-01 - <_> - 9.2388069152832031e+01 - - 1 2 2967 1.1500000000000000e+01 0 -1 2968 - 1.5000000000000000e+00 -2 -3 2969 2.6500000000000000e+01 - - 1.5632244944572449e-01 -4.4891685247421265e-01 - 6.4296531677246094e-01 -5.9720402956008911e-01 - <_> - 9.2552001953125000e+01 - - 1 2 2970 1.0675000000000000e+03 0 -1 2971 - 4.3756500000000000e+04 -2 -3 2972 4.9450000000000000e+02 - - -1. 8.0944263935089111e-01 -3.8900658488273621e-01 - 1.6393135488033295e-01 - <_> - 9.2899009704589844e+01 - - 1 2 2973 2.5000000000000000e+00 0 -1 2974 - 1.4055000000000000e+03 -2 -3 2975 1.8500000000000000e+01 - - 1.6320782899856567e-01 -5.9554386138916016e-01 - -7.9579621553421021e-01 3.4700983762741089e-01 - <_> - 9.2847854614257812e+01 - - 1 2 2976 8.5500000000000000e+01 0 -1 2977 - 1.2550000000000000e+02 -2 -3 2978 5.5000000000000000e+00 - - -1. 9.6116375923156738e-01 2.2865201532840729e-01 - -2.7930772304534912e-01 - <_> - 9.2859100341796875e+01 - - 1 2 2979 1.1350000000000000e+02 0 -1 2980 - 2.0500000000000000e+01 -2 -3 2981 1.6150000000000000e+02 - - 1.7545458674430847e-01 -7.0411294698715210e-01 - 3.2774302363395691e-01 -6.4024138450622559e-01 - <_> - 9.2426673889160156e+01 - - 1 2 2982 2.5000000000000000e+00 0 -1 2983 - 2.7500000000000000e+01 -2 -3 2984 1.0350000000000000e+02 - - 6.4859634637832642e-01 -6.6807705163955688e-01 - 2.5129410624504089e-01 -4.3242052197456360e-01 - <_> - 9.2854904174804688e+01 - - 1 2 2985 3.0050000000000000e+02 0 -1 2986 333. -2 -3 2987 - 3.2045000000000000e+03 - - -3.9532727003097534e-01 8.3435887098312378e-01 - 4.2823007702827454e-01 -3.9525333046913147e-01 - <_> - 9.3196861267089844e+01 - - 1 2 2988 2.5000000000000000e+00 0 -1 2989 - 6.5000000000000000e+00 -2 -3 2990 4.8895000000000000e+03 - - -8.9721941947937012e-01 3.4195712208747864e-01 - 6.4947992563247681e-01 -4.5169207453727722e-01 - <_> - 9.3306480407714844e+01 - - 1 2 2991 2.7500000000000000e+01 0 -1 2992 - 1.5000000000000000e+00 -2 -3 2993 4.5000000000000000e+00 - - 1.0962056368589401e-01 -4.2897370457649231e-01 - 9.1374301910400391e-01 -6.3376551866531372e-01 - <_> - 9.3460906982421875e+01 - - 1 2 2994 1.0500000000000000e+01 0 -1 2995 - 3.5000000000000000e+00 -2 -3 2996 3.5000000000000000e+00 - - 2.2791311144828796e-01 -5.2986472845077515e-01 - 4.5877307653427124e-01 -1.7966294288635254e-01 - <_> - 9.3358589172363281e+01 - - 1 2 2997 3.4500000000000000e+01 0 -1 2998 222. -2 -3 2999 - 2.0750000000000000e+02 - - 7.5331348180770874e-01 -9.4210654497146606e-01 - -1.0231721401214600e-01 4.7118717432022095e-01 - <_> - 9.3666183471679688e+01 - - 1 2 3000 2.2500000000000000e+01 0 -1 3001 - 1.8450000000000000e+02 -2 -3 3002 2.5000000000000000e+00 - - -3.5824659466743469e-01 3.0759900808334351e-01 - 6.4143782854080200e-01 -6.5782296657562256e-01 - <_> - 9.3088340759277344e+01 - - 1 2 3003 1.3350000000000000e+02 0 -1 3004 830. -2 -3 3005 - 2.4500000000000000e+01 - - -6.9563269615173340e-01 6.3497310876846313e-01 - -5.7784938812255859e-01 6.1700064688920975e-02 - <_> - 9.2995674133300781e+01 - - 1 2 3006 4.5500000000000000e+01 0 -1 3007 - 1.5000000000000000e+00 -2 -3 3008 6.6500000000000000e+01 - - 4.5369678735733032e-01 -9.2660412192344666e-02 - -7.4712693691253662e-01 6.0710644721984863e-01 - <_> - 9.2739532470703125e+01 - - 1 2 3009 1.2950000000000000e+02 0 -1 3010 1144. -2 -3 3011 - 4.2850000000000000e+02 - - -7.0763772726058960e-01 9.4605678319931030e-01 - -2.5614449381828308e-01 4.1044127941131592e-01 - <_> - 9.2615875244140625e+01 - - 1 2 3012 2.3500000000000000e+01 0 -1 3013 36. -2 -3 3014 - 5.0000000000000000e-01 - - 8.3025622367858887e-01 -8.2933390140533447e-01 - 4.6695771813392639e-01 -1.2365625053644180e-01 - <_> - 9.3196029663085938e+01 - - 1 2 3015 2.0450000000000000e+02 0 -1 3016 - 1.0500000000000000e+01 -2 -3 3017 524. - - -1.5761210024356842e-01 5.8015257120132446e-01 - -8.8289064168930054e-01 2.2438578307628632e-01 - <_> - 9.3732429504394531e+01 - - 1 2 3018 3.3500000000000000e+01 0 -1 3019 - 1.8500000000000000e+01 -2 -3 3020 6.6500000000000000e+01 - - 4.8793593049049377e-01 -5.8576709032058716e-01 - 5.3640323877334595e-01 -8.2473360002040863e-02 - <_> - 9.3099838256835938e+01 - - 1 2 3021 1.3500000000000000e+01 0 -1 3022 - 5.0000000000000000e-01 -2 -3 3023 1.4500000000000000e+01 - - 3.0108803510665894e-01 -6.3259094953536987e-01 - -7.1200174093246460e-01 2.7906426787376404e-01 - <_> - 9.3105216979980469e+01 - - 1 2 3024 3.9050000000000000e+02 0 -1 3025 1243. -2 -3 3026 - 4.2050000000000000e+02 - - -8.8503718376159668e-01 9.7225552797317505e-01 - 5.3784158080816269e-03 -7.7111572027206421e-01 - <_> - 9.3588562011718750e+01 - - 1 2 3027 1.2850000000000000e+02 0 -1 3028 - 9.5000000000000000e+00 -2 -3 3029 3.5000000000000000e+00 - - 3.3606645464897156e-01 -5.4860621690750122e-01 - 4.8334029316902161e-01 -1.3527640700340271e-01 - <_> - 9.3835968017578125e+01 - - 1 2 3030 4.5000000000000000e+00 0 -1 3031 - 4.5000000000000000e+00 -2 -3 3032 1.3415000000000000e+03 - - -7.8450918197631836e-01 1.6970160603523254e-01 - -5.8498537540435791e-01 2.4740667641162872e-01 - <_> - 9.4142906188964844e+01 - - 1 2 3033 4.3500000000000000e+01 0 -1 3034 - 4.5000000000000000e+00 -2 -3 3035 3.2500000000000000e+01 - - 3.0693769454956055e-01 -2.6115962862968445e-01 - -8.9926475286483765e-01 7.7170163393020630e-01 - <_> - 9.4121742248535156e+01 - - 1 2 3036 3.3500000000000000e+01 0 -1 3037 5772. -2 -3 3038 - 8.2650000000000000e+02 - - 6.0314506292343140e-01 -8.1919574737548828e-01 - -2.1161338314414024e-02 7.4580943584442139e-01 - <_> - 9.3867355346679688e+01 - - 1 2 3039 1.5000000000000000e+00 0 -1 3040 - 2.5000000000000000e+00 -2 -3 3041 7.6500000000000000e+01 - - -1. 6.5151697397232056e-01 -2.5439009070396423e-01 - 4.9923765659332275e-01 - <_> - 9.4093467712402344e+01 - - 1 2 3042 7584. 0 -1 3043 5.1250000000000000e+02 -2 -3 3044 - 1.1500000000000000e+01 - - -4.7158271074295044e-01 2.2611454129219055e-01 - -8.3964759111404419e-01 4.5222747325897217e-01 - <_> - 9.4337669372558594e+01 - - 1 2 3045 1.5625000000000000e+03 0 -1 3046 - 1.0615000000000000e+03 -2 -3 3047 2.5000000000000000e+00 - - -1. 9.3781590461730957e-01 2.4420407414436340e-01 - -2.9586532711982727e-01 - <_> - 9.4508171081542969e+01 - - 1 2 3048 1.3500000000000000e+01 0 -1 3049 23. -2 -3 3050 - 1.5245000000000000e+03 - - -8.5904693603515625e-01 1.7050011456012726e-01 - 9.2488127946853638e-01 -9.8964858055114746e-01 - <_> - 9.4239341735839844e+01 - - 1 2 3051 5.0000000000000000e-01 0 -1 3052 - 5.5000000000000000e+00 -2 -3 3053 1.8500000000000000e+01 - - -8.7914295494556427e-02 5.4742050170898438e-01 - -4.5447856187820435e-01 4.4385817646980286e-01 - <_> - 9.4594245910644531e+01 - - 1 2 3054 1.5000000000000000e+00 0 -1 3055 - 1.5500000000000000e+01 -2 -3 3056 1.1500000000000000e+01 - - 3.5490357875823975e-01 -4.3068945407867432e-01 - -6.6280466318130493e-01 3.0311322771012783e-03 - <_> - 9.4814491271972656e+01 - - 1 2 3057 3.5000000000000000e+00 0 -1 3058 - 5.0000000000000000e-01 -2 -3 3059 4.0550000000000000e+02 - - 7.0450115203857422e-01 -7.8278595209121704e-01 - 2.2024388611316681e-01 -4.0765863656997681e-01 - <_> - 9.4579345703125000e+01 - - 1 2 3060 1.5500000000000000e+01 0 -1 3061 - 1.5000000000000000e+00 -2 -3 3062 1934. - - 1.5189912915229797e-01 -4.7490403056144714e-01 - -2.3514933884143829e-01 6.0529416799545288e-01 - <_> - 9.4922325134277344e+01 - - 1 2 3063 5.0000000000000000e-01 0 -1 3064 - 3.0500000000000000e+01 -2 -3 3065 1.1500000000000000e+01 - - -3.8056674599647522e-01 5.7760846614837646e-01 - -4.7326391935348511e-01 1.4074583351612091e-01 - <_> - 9.5195831298828125e+01 - - 1 2 3066 2.7500000000000000e+01 0 -1 3067 - 1.5500000000000000e+01 -2 -3 3068 1.3500000000000000e+01 - - -3.2090973854064941e-01 2.7350622415542603e-01 - 1.3395747169852257e-02 -8.1775778532028198e-01 - <_> - 9.5786506652832031e+01 - - 1 2 3069 4.5000000000000000e+00 0 -1 3070 - 4.3500000000000000e+01 -2 -3 3071 1.0235000000000000e+03 - - -2.7497810125350952e-01 5.9067696332931519e-01 - -5.4431802034378052e-01 7.7079035341739655e-02 - - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 4 18 5 10 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 6 22 6 6 - <_> - 4 - - 6 19 4 5 - <_> - 1 - - 6 27 5 2 - <_> - 7 - - 7 5 2 1 - <_> - 4 - - 4 9 8 22 - <_> - 5 - - 8 4 5 9 - <_> - 2 - - 8 6 4 4 - <_> - 9 - - 7 19 2 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 6 18 5 7 - <_> - 9 - - 7 14 2 3 - <_> - 4 - - 0 18 12 13 - <_> - 1 - - 4 26 7 3 - <_> - 7 - - 0 28 13 3 - <_> - 1 - - 5 10 6 1 - <_> - 1 - - 1 3 10 7 - <_> - 4 - - 0 30 15 1 - <_> - 2 - - 4 12 3 16 - <_> - 0 - - 4 28 8 2 - <_> - 5 - - 3 28 11 3 - <_> - 4 - - 3 10 9 19 - <_> - 3 - - 1 3 7 10 - <_> - 7 - - 8 12 1 1 - <_> - 0 - - 7 10 2 4 - <_> - 0 - - 8 14 4 11 - <_> - 3 - - 0 11 2 20 - <_> - 1 - - 7 4 2 4 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 2 2 11 8 - <_> - 4 - - 6 18 1 4 - <_> - 1 - - 1 16 5 12 - <_> - 2 - - 7 21 3 7 - <_> - 2 - - 8 30 7 1 - <_> - 5 - - 6 26 7 2 - <_> - 7 - - 14 28 1 2 - <_> - 9 - - 7 12 2 1 - <_> - 9 - - 3 1 12 1 - <_> - 9 - - 7 19 3 3 - <_> - 7 - - 6 5 9 3 - <_> - 3 - - 3 28 2 2 - <_> - 9 - - 5 1 3 3 - <_> - 3 - - 5 8 1 18 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 1 12 25 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 9 2 15 - <_> - 3 - - 13 21 2 9 - <_> - 7 - - 4 29 8 2 - <_> - 1 - - 5 11 6 17 - <_> - 7 - - 12 24 1 6 - <_> - 8 - - 7 12 2 1 - <_> - 0 - - 8 9 4 2 - <_> - 5 - - 7 10 6 3 - <_> - 0 - - 1 4 9 4 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 9 10 3 - <_> - 0 - - 2 28 13 1 - <_> - 0 - - 6 24 4 4 - <_> - 2 - - 6 16 4 1 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 5 29 5 1 - <_> - 9 - - 7 15 3 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 7 22 2 2 - <_> - 0 - - 13 21 2 1 - <_> - 4 - - 6 4 5 3 - <_> - 4 - - 0 9 15 17 - <_> - 3 - - 4 1 5 30 - <_> - 3 - - 6 15 3 1 - <_> - 5 - - 8 5 3 2 - <_> - 5 - - 0 0 15 1 - <_> - 1 - - 6 27 3 2 - <_> - 5 - - 1 29 2 2 - <_> - 7 - - 0 27 3 4 - <_> - 4 - - 9 13 6 18 - <_> - 1 - - 3 7 12 1 - <_> - 9 - - 5 23 8 1 - <_> - 7 - - 12 30 3 1 - <_> - 3 - - 12 27 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 14 13 1 16 - <_> - 0 - - 5 5 8 2 - <_> - 9 - - 9 14 1 1 - <_> - 5 - - 9 13 3 12 - <_> - 5 - - 9 30 6 1 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 3 12 9 7 - <_> - 4 - - 9 7 1 24 - <_> - 2 - - 8 8 4 1 - <_> - 2 - - 8 19 2 10 - <_> - 3 - - 2 13 2 15 - <_> - 2 - - 0 28 15 1 - <_> - 2 - - 3 26 8 2 - <_> - 3 - - 4 28 7 1 - <_> - 3 - - 11 23 1 3 - <_> - 0 - - 9 15 4 16 - <_> - 1 - - 2 7 9 2 - <_> - 4 - - 6 22 3 3 - <_> - 3 - - 5 5 1 25 - <_> - 1 - - 2 20 12 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 1 30 13 1 - <_> - 4 - - 3 16 12 4 - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 2 23 12 1 - <_> - 4 - - 1 29 9 2 - <_> - 4 - - 9 6 4 14 - <_> - 7 - - 0 4 3 16 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 1 0 13 1 - <_> - 5 - - 3 5 10 8 - <_> - 5 - - 7 7 2 7 - <_> - 5 - - 6 28 5 2 - <_> - 3 - - 2 24 7 4 - <_> - 4 - - 6 1 3 17 - <_> - 0 - - 1 21 1 5 - <_> - 0 - - 1 11 6 5 - <_> - 9 - - 0 30 15 1 - <_> - 8 - - 2 30 8 1 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 2 24 12 2 - <_> - 9 - - 1 13 1 3 - <_> - 7 - - 7 5 2 1 - <_> - 9 - - 6 10 2 3 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 6 17 2 3 - <_> - 1 - - 6 27 4 4 - <_> - 2 - - 5 18 5 10 - <_> - 2 - - 14 0 1 29 - <_> - 5 - - 2 20 3 9 - <_> - 1 - - 5 27 6 1 - <_> - 4 - - 7 30 2 1 - <_> - 4 - - 5 24 5 6 - <_> - 4 - - 3 9 12 2 - <_> - 5 - - 9 7 4 20 - <_> - 7 - - 10 10 3 1 - <_> - 3 - - 2 28 13 3 - <_> - 5 - - 14 22 1 7 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 8 15 2 4 - <_> - 0 - - 7 19 4 9 - <_> - 4 - - 7 11 1 8 - <_> - 4 - - 2 11 13 11 - <_> - 4 - - 6 4 4 6 - <_> - 8 - - 4 22 2 6 - <_> - 4 - - 7 19 2 2 - <_> - 9 - - 6 4 3 6 - <_> - 4 - - 2 29 8 1 - <_> - 3 - - 1 9 6 16 - <_> - 7 - - 8 3 3 2 - <_> - 5 - - 6 12 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 7 - - 1 25 2 4 - <_> - 4 - - 6 1 3 17 - <_> - 1 - - 5 11 4 3 - <_> - 5 - - 9 9 5 4 - <_> - 9 - - 6 14 3 4 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 2 5 6 8 - <_> - 2 - - 6 10 3 1 - <_> - 1 - - 9 26 5 3 - <_> - 0 - - 1 30 8 1 - <_> - 1 - - 9 22 1 3 - <_> - 2 - - 5 6 7 18 - <_> - 2 - - 11 6 1 14 - <_> - 3 - - 1 4 2 21 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 13 17 2 1 - <_> - 8 - - 8 24 6 2 - <_> - 7 - - 4 5 5 5 - <_> - 2 - - 4 25 9 3 - <_> - 4 - - 0 29 12 1 - <_> - 5 - - 1 28 9 3 - <_> - 1 - - 6 20 4 3 - <_> - 0 - - 5 25 4 1 - <_> - 1 - - 9 9 2 1 - <_> - 1 - - 3 6 9 4 - <_> - 3 - - 5 8 1 18 - <_> - 5 - - 0 19 2 7 - <_> - 3 - - 3 18 11 4 - <_> - 5 - - 5 12 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 3 - - 6 5 3 1 - <_> - 1 - - 6 7 6 2 - <_> - 3 - - 0 27 13 2 - <_> - 4 - - 2 9 12 3 - <_> - 4 - - 10 24 4 2 - <_> - 9 - - 0 22 11 1 - <_> - 9 - - 1 0 14 14 - <_> - 9 - - 7 9 2 7 - <_> - 1 - - 4 27 4 1 - <_> - 2 - - 9 28 4 3 - <_> - 8 - - 6 6 2 17 - <_> - 2 - - 5 23 9 4 - <_> - 0 - - 10 9 4 3 - <_> - 2 - - 6 13 3 2 - <_> - 4 - - 13 29 2 2 - <_> - 5 - - 8 5 3 4 - <_> - 4 - - 13 8 1 1 - <_> - 7 - - 4 30 11 1 - <_> - 3 - - 8 15 3 15 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 1 5 8 6 - <_> - 7 - - 13 0 2 3 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 10 9 1 2 - <_> - 3 - - 7 10 3 13 - <_> - 5 - - 3 26 9 1 - <_> - 4 - - 2 0 13 4 - <_> - 4 - - 5 0 4 8 - <_> - 2 - - 11 23 4 3 - <_> - 5 - - 10 9 3 13 - <_> - 9 - - 9 10 1 1 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 0 17 1 5 - <_> - 5 - - 5 28 8 2 - <_> - 4 - - 2 10 5 8 - <_> - 0 - - 2 29 6 2 - <_> - 0 - - 6 21 5 7 - <_> - 0 - - 3 22 2 5 - <_> - 3 - - 0 6 5 25 - <_> - 9 - - 5 1 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 5 10 1 2 - <_> - 8 - - 3 5 7 8 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 4 12 3 16 - <_> - 5 - - 11 5 1 21 - <_> - 0 - - 4 7 2 4 - <_> - 7 - - 7 12 2 3 - <_> - 0 - - 6 6 8 25 - <_> - 2 - - 8 30 6 1 - <_> - 5 - - 9 25 5 2 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 13 3 1 19 - <_> - 7 - - 0 27 15 2 - <_> - 1 - - 7 3 2 6 - <_> - 7 - - 10 13 1 7 - <_> - 4 - - 3 12 8 19 - <_> - 5 - - 8 5 5 10 - <_> - 4 - - 6 0 2 8 - <_> - 5 - - 8 0 4 3 - <_> - 9 - - 3 3 10 2 - <_> - 3 - - 12 20 2 5 - <_> - 9 - - 7 17 2 1 - <_> - 5 - - 1 30 5 1 - <_> - 3 - - 3 0 8 6 - <_> - 0 - - 6 24 4 4 - <_> - 3 - - 7 14 1 2 - <_> - 4 - - 5 6 9 5 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 4 18 5 10 - <_> - 1 - - 4 18 11 3 - <_> - 0 - - 4 28 10 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 11 15 1 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 9 30 2 1 - <_> - 1 - - 4 17 6 12 - <_> - 2 - - 0 6 10 4 - <_> - 2 - - 5 1 1 4 - <_> - 0 - - 6 0 2 8 - <_> - 2 - - 3 10 4 1 - <_> - 4 - - 1 30 12 1 - <_> - 1 - - 4 27 9 1 - <_> - 7 - - 11 25 2 1 - <_> - 1 - - 7 19 2 7 - <_> - 4 - - 12 26 3 5 - <_> - 5 - - 2 5 10 22 - <_> - 7 - - 7 5 4 3 - <_> - 4 - - 2 25 13 3 - <_> - 2 - - 6 18 3 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 17 7 12 - <_> - 0 - - 12 21 2 1 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 0 2 17 - <_> - 5 - - 9 29 6 1 - <_> - 2 - - 6 26 7 1 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 5 4 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 0 30 15 1 - <_> - 0 - - 7 13 2 4 - <_> - 3 - - 3 10 8 4 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 6 28 5 1 - <_> - 5 - - 10 7 3 7 - <_> - 1 - - 3 29 3 1 - <_> - 3 - - 1 22 2 8 - <_> - 3 - - 4 25 2 5 - <_> - 3 - - 4 5 3 4 - <_> - 2 - - 6 1 2 4 - <_> - 4 - - 3 14 7 14 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 3 9 2 14 - <_> - 4 - - 2 29 9 1 - <_> - 7 - - 12 30 3 1 - <_> - 9 - - 6 12 4 5 - <_> - 9 - - 1 0 14 3 - <_> - 1 - - 7 4 2 4 - <_> - 2 - - 6 18 4 9 - <_> - 7 - - 3 13 1 2 - <_> - 2 - - 4 13 11 12 - <_> - 8 - - 6 13 4 1 - <_> - 1 - - 6 11 5 2 - <_> - 8 - - 11 16 2 2 - <_> - 1 - - 4 20 3 11 - <_> - 5 - - 2 28 7 2 - <_> - 1 - - 10 29 2 1 - <_> - 9 - - 13 25 2 3 - <_> - 9 - - 6 19 1 5 - <_> - 5 - - 9 29 2 2 - <_> - 2 - - 5 5 10 3 - <_> - 7 - - 0 10 2 8 - <_> - 2 - - 0 30 4 1 - <_> - 7 - - 9 29 6 2 - <_> - 3 - - 8 2 1 29 - <_> - 4 - - 1 0 10 23 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 6 9 - <_> - 8 - - 7 9 2 1 - <_> - 1 - - 7 28 4 1 - <_> - 3 - - 1 10 12 1 - <_> - 5 - - 7 8 1 19 - <_> - 4 - - 3 30 10 1 - <_> - 3 - - 4 4 1 11 - <_> - 0 - - 7 18 3 4 - <_> - 4 - - 7 7 4 5 - <_> - 7 - - 11 1 1 12 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 10 11 5 12 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 4 19 7 9 - <_> - 1 - - 0 0 15 1 - <_> - 3 - - 4 5 6 2 - <_> - 3 - - 11 20 1 3 - <_> - 3 - - 5 0 8 15 - <_> - 4 - - 10 11 1 12 - <_> - 0 - - 6 16 7 11 - <_> - 5 - - 6 6 1 25 - <_> - 5 - - 3 22 2 4 - <_> - 5 - - 0 7 13 16 - <_> - 4 - - 6 21 4 1 - <_> - 4 - - 5 1 6 5 - <_> - 4 - - 5 0 8 27 - <_> - 1 - - 4 26 6 3 - <_> - 7 - - 8 9 1 1 - <_> - 0 - - 1 28 11 3 - <_> - 3 - - 2 22 1 2 - <_> - 0 - - 7 9 1 6 - <_> - 3 - - 4 9 4 20 - <_> - 5 - - 3 8 1 21 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 4 7 4 1 - <_> - 9 - - 10 9 2 7 - <_> - 2 - - 11 6 1 18 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 5 29 6 2 - <_> - 8 - - 8 3 1 1 - <_> - 3 - - 8 17 1 5 - <_> - 3 - - 2 28 12 2 - <_> - 0 - - 0 8 1 5 - <_> - 3 - - 3 23 4 4 - <_> - 1 - - 13 2 2 7 - <_> - 8 - - 5 6 10 2 - <_> - 0 - - 7 18 6 10 - <_> - 3 - - 12 17 3 14 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 0 4 1 - <_> - 0 - - 9 9 4 1 - <_> - 9 - - 4 5 6 13 - <_> - 0 - - 5 3 6 6 - <_> - 9 - - 5 22 6 4 - <_> - 0 - - 11 4 1 1 - <_> - 7 - - 14 1 1 19 - <_> - 4 - - 8 17 3 1 - <_> - 5 - - 9 13 4 6 - <_> - 5 - - 9 2 3 22 - <_> - 0 - - 0 28 8 1 - <_> - 4 - - 6 4 5 3 - <_> - 5 - - 14 10 1 14 - <_> - 5 - - 7 24 5 4 - <_> - 3 - - 10 18 1 8 - <_> - 5 - - 8 30 6 1 - <_> - 2 - - 6 26 6 2 - <_> - 1 - - 4 10 4 2 - <_> - 3 - - 5 8 1 18 - <_> - 4 - - 8 29 7 1 - <_> - 7 - - 13 28 1 1 - <_> - 1 - - 7 28 3 1 - <_> - 7 - - 2 25 4 4 - <_> - 4 - - 12 30 3 1 - <_> - 4 - - 7 19 3 7 - <_> - 5 - - 9 8 5 7 - <_> - 5 - - 2 19 1 5 - <_> - 1 - - 2 22 5 8 - <_> - 1 - - 3 24 2 2 - <_> - 0 - - 6 29 1 2 - <_> - 9 - - 5 28 2 1 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 4 28 6 1 - <_> - 0 - - 3 7 5 22 - <_> - 7 - - 2 8 9 1 - <_> - 3 - - 6 17 1 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 3 0 6 4 - <_> - 9 - - 7 13 1 1 - <_> - 2 - - 4 22 3 1 - <_> - 9 - - 8 19 1 2 - <_> - 8 - - 10 15 4 3 - <_> - 5 - - 9 10 3 3 - <_> - 3 - - 9 3 6 4 - <_> - 4 - - 1 12 11 18 - <_> - 5 - - 1 28 4 3 - <_> - 3 - - 1 3 8 14 - <_> - 4 - - 7 11 1 8 - <_> - 0 - - 7 9 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 5 1 4 3 - <_> - 4 - - 5 18 5 2 - <_> - 5 - - 2 18 11 3 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 13 4 1 25 - <_> - 2 - - 13 19 2 4 - <_> - 9 - - 4 0 7 4 - <_> - 1 - - 8 27 1 2 - <_> - 4 - - 3 29 11 1 - <_> - 4 - - 6 26 4 4 - <_> - 0 - - 7 17 5 10 - <_> - 9 - - 2 30 1 1 - <_> - 7 - - 12 18 3 13 - <_> - 4 - - 6 22 3 3 - <_> - 1 - - 5 25 3 6 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 4 9 4 2 - <_> - 8 - - 4 25 1 2 - <_> - 4 - - 4 9 8 5 - <_> - 5 - - 8 5 5 8 - <_> - 4 - - 3 28 9 1 - <_> - 2 - - 7 29 7 2 - <_> - 2 - - 6 19 5 12 - <_> - 4 - - 14 23 1 4 - <_> - 5 - - 6 17 2 3 - <_> - 2 - - 3 17 5 7 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 2 3 11 3 - <_> - 1 - - 4 28 4 1 - <_> - 9 - - 6 7 2 6 - <_> - 8 - - 6 6 1 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 3 0 6 5 - <_> - 2 - - 7 24 3 3 - <_> - 4 - - 1 28 11 3 - <_> - 2 - - 6 27 5 4 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 4 4 3 9 - <_> - 8 - - 6 0 3 3 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 6 14 5 4 - <_> - 3 - - 0 9 1 18 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 7 12 8 6 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 3 9 3 1 - <_> - 4 - - 3 15 11 14 - <_> - 1 - - 6 11 6 1 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 7 14 3 3 - <_> - 4 - - 3 11 4 9 - <_> - 2 - - 8 7 1 11 - <_> - 7 - - 0 12 9 10 - <_> - 7 - - 0 27 10 1 - <_> - 0 - - 6 5 3 18 - <_> - 5 - - 4 28 5 3 - <_> - 2 - - 4 9 8 22 - <_> - 7 - - 7 17 1 2 - <_> - 2 - - 6 13 4 2 - <_> - 0 - - 5 5 6 3 - <_> - 7 - - 8 13 3 14 - <_> - 0 - - 10 0 2 5 - <_> - 1 - - 3 28 8 1 - <_> - 4 - - 12 7 1 24 - <_> - 7 - - 1 28 2 2 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 6 18 5 4 - <_> - 4 - - 11 6 4 2 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 14 0 1 28 - <_> - 5 - - 9 27 6 3 - <_> - 8 - - 0 4 4 27 - <_> - 0 - - 5 28 8 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 10 4 9 - <_> - 5 - - 5 0 2 5 - <_> - 4 - - 4 4 6 5 - <_> - 4 - - 2 29 9 1 - <_> - 1 - - 5 26 7 3 - <_> - 2 - - 2 20 2 4 - <_> - 0 - - 6 17 7 12 - <_> - 3 - - 10 25 5 6 - <_> - 3 - - 10 17 1 10 - <_> - 2 - - 0 0 12 28 - <_> - 5 - - 9 8 5 7 - <_> - 4 - - 3 12 9 16 - <_> - 0 - - 13 22 2 4 - <_> - 3 - - 6 0 5 11 - <_> - 1 - - 0 2 8 2 - <_> - 1 - - 6 7 6 2 - <_> - 8 - - 8 3 1 5 - <_> - 4 - - 8 2 4 13 - <_> - 9 - - 8 10 1 7 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 11 28 2 1 - <_> - 0 - - 9 4 1 24 - <_> - 0 - - 5 28 4 2 - <_> - 4 - - 7 0 2 18 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 7 7 6 14 - <_> - 4 - - 6 25 3 5 - <_> - 4 - - 5 13 2 5 - <_> - 3 - - 3 24 8 3 - <_> - 8 - - 5 20 2 2 - <_> - 3 - - 1 22 2 8 - <_> - 1 - - 2 27 8 2 - <_> - 7 - - 10 28 5 1 - <_> - 4 - - 7 20 3 5 - <_> - 4 - - 8 26 2 2 - <_> - 0 - - 5 24 4 3 - <_> - 4 - - 12 30 3 1 - <_> - 2 - - 4 24 6 4 - <_> - 2 - - 12 10 3 7 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 1 - - 11 23 3 8 - <_> - 2 - - 8 10 1 5 - <_> - 2 - - 11 0 2 15 - <_> - 1 - - 11 20 1 3 - <_> - 3 - - 3 8 5 16 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 19 4 10 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 4 27 11 2 - <_> - 9 - - 10 10 3 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 8 8 2 1 - <_> - 8 - - 1 26 11 2 - <_> - 7 - - 4 30 11 1 - <_> - 1 - - 3 18 11 12 - <_> - 2 - - 0 0 12 28 - <_> - 0 - - 13 8 2 6 - <_> - 1 - - 3 22 4 7 - <_> - 2 - - 2 30 8 1 - <_> - 9 - - 9 19 1 6 - <_> - 7 - - 3 16 9 4 - <_> - 9 - - 5 1 2 1 - <_> - 2 - - 7 9 5 1 - <_> - 4 - - 3 28 9 3 - <_> - 5 - - 5 0 6 2 - <_> - 5 - - 8 5 5 10 - <_> - 9 - - 5 17 7 4 - <_> - 2 - - 4 25 9 3 - <_> - 2 - - 9 16 2 2 - <_> - 5 - - 10 9 3 19 - <_> - 1 - - 4 10 7 4 - <_> - 0 - - 13 24 2 7 - <_> - 0 - - 7 24 3 5 - <_> - 4 - - 4 3 6 4 - <_> - 4 - - 11 15 2 5 - <_> - 0 - - 11 13 1 10 - <_> - 1 - - 1 25 1 5 - <_> - 5 - - 11 22 1 2 - <_> - 1 - - 8 26 1 4 - <_> - 3 - - 8 18 1 1 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 14 24 1 2 - <_> - 8 - - 11 6 1 3 - <_> - 2 - - 5 4 5 1 - <_> - 2 - - 6 3 4 7 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 7 1 5 - <_> - 0 - - 0 10 9 3 - <_> - 0 - - 4 4 7 7 - <_> - 5 - - 4 28 9 2 - <_> - 2 - - 6 17 6 12 - <_> - 0 - - 13 25 1 3 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 5 6 7 2 - <_> - 0 - - 5 10 4 2 - <_> - 1 - - 7 19 2 6 - <_> - 4 - - 5 13 6 9 - <_> - 1 - - 6 17 4 1 - <_> - 7 - - 2 28 6 1 - <_> - 0 - - 11 21 3 6 - <_> - 4 - - 13 29 2 2 - <_> - 3 - - 4 3 3 18 - <_> - 7 - - 7 5 4 3 - <_> - 7 - - 1 0 3 10 - <_> - 2 - - 6 12 3 1 - <_> - 5 - - 1 11 14 3 - <_> - 0 - - 6 15 3 1 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 0 11 3 - <_> - 8 - - 11 18 4 2 - <_> - 4 - - 4 26 7 2 - <_> - 2 - - 5 28 10 3 - <_> - 2 - - 4 5 7 2 - <_> - 4 - - 6 29 5 2 - <_> - 1 - - 5 28 6 2 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 3 17 6 7 - <_> - 3 - - 8 25 1 1 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 3 0 6 13 - <_> - 3 - - 7 6 3 11 - <_> - 7 - - 8 1 7 14 - <_> - 5 - - 3 26 8 2 - <_> - 2 - - 7 12 6 15 - <_> - 0 - - 7 8 1 7 - <_> - 8 - - 14 0 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 1 30 2 1 - <_> - 7 - - 3 28 1 1 - <_> - 0 - - 5 25 4 1 - <_> - 3 - - 5 28 3 2 - <_> - 0 - - 9 12 3 19 - <_> - 3 - - 1 16 2 9 - <_> - 3 - - 11 24 3 1 - <_> - 1 - - 4 22 7 1 - <_> - 5 - - 10 7 2 20 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 4 28 9 2 - <_> - 5 - - 11 29 1 1 - <_> - 9 - - 1 0 14 3 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 8 13 2 5 - <_> - 4 - - 9 17 5 14 - <_> - 1 - - 7 27 8 2 - <_> - 4 - - 5 24 1 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 9 3 1 26 - <_> - 2 - - 8 16 2 3 - <_> - 8 - - 8 4 2 8 - <_> - 8 - - 6 6 1 2 - <_> - 8 - - 11 5 1 3 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 4 9 3 22 - <_> - 5 - - 10 19 3 1 - <_> - 1 - - 8 4 2 5 - <_> - 4 - - 7 4 3 1 - <_> - 4 - - 5 0 7 10 - <_> - 1 - - 5 9 6 4 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 4 8 2 2 - <_> - 5 - - 1 25 2 6 - <_> - 3 - - 3 9 4 6 - <_> - 7 - - 7 24 6 7 - <_> - 9 - - 6 20 1 3 - <_> - 8 - - 7 5 6 4 - <_> - 8 - - 1 10 14 3 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 5 3 4 - <_> - 8 - - 5 19 7 1 - <_> - 7 - - 6 3 4 1 - <_> - 5 - - 12 25 2 2 - <_> - 2 - - 7 14 6 12 - <_> - 2 - - 5 30 8 1 - <_> - 2 - - 3 26 8 2 - <_> - 2 - - 9 19 5 1 - <_> - 4 - - 9 13 2 11 - <_> - 1 - - 6 27 4 4 - <_> - 1 - - 6 4 2 6 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 0 5 3 - <_> - 8 - - 5 28 8 1 - <_> - 9 - - 6 12 3 2 - <_> - 1 - - 0 2 12 24 - <_> - 8 - - 6 11 3 4 - <_> - 4 - - 4 3 4 6 - <_> - 7 - - 4 3 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 0 - - 7 28 1 3 - <_> - 0 - - 6 16 7 11 - <_> - 4 - - 1 22 5 4 - <_> - 0 - - 1 28 12 1 - <_> - 4 - - 5 12 8 15 - <_> - 4 - - 1 27 5 4 - <_> - 2 - - 6 18 4 11 - <_> - 3 - - 13 20 1 10 - <_> - 7 - - 5 29 6 1 - <_> - 1 - - 7 24 2 2 - <_> - 9 - - 3 3 10 2 - <_> - 0 - - 6 8 1 2 - <_> - 9 - - 4 9 4 2 - <_> - 5 - - 10 12 1 15 - <_> - 5 - - 10 7 1 7 - <_> - 5 - - 6 17 2 3 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 6 3 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 7 9 2 1 - <_> - 5 - - 13 22 2 9 - <_> - 2 - - 6 25 4 2 - <_> - 7 - - 10 29 1 2 - <_> - 5 - - 5 29 8 1 - <_> - 5 - - 9 12 3 16 - <_> - 9 - - 6 16 4 2 - <_> - 7 - - 7 6 2 2 - <_> - 4 - - 7 0 2 18 - <_> - 2 - - 1 10 7 5 - <_> - 1 - - 4 10 5 1 - <_> - 0 - - 4 2 3 11 - <_> - 9 - - 11 17 1 1 - <_> - 3 - - 0 26 1 3 - <_> - 5 - - 4 1 3 5 - <_> - 0 - - 13 11 2 4 - <_> - 2 - - 8 23 2 3 - <_> - 4 - - 1 30 3 1 - <_> - 7 - - 5 30 2 1 - <_> - 3 - - 5 0 1 27 - <_> - 2 - - 9 24 4 6 - <_> - 5 - - 6 15 1 8 - <_> - 1 - - 5 26 6 2 - <_> - 0 - - 9 15 1 13 - <_> - 4 - - 3 20 10 1 - <_> - 4 - - 4 6 9 6 - <_> - 7 - - 2 1 5 5 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 6 12 3 1 - <_> - 0 - - 2 7 6 1 - <_> - 9 - - 12 2 1 4 - <_> - 8 - - 10 18 1 13 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 5 5 8 2 - <_> - 0 - - 7 0 5 14 - <_> - 4 - - 1 9 11 1 - <_> - 1 - - 0 4 14 6 - <_> - 0 - - 6 14 6 12 - <_> - 8 - - 7 3 1 5 - <_> - 0 - - 6 12 8 17 - <_> - 5 - - 5 28 6 1 - <_> - 5 - - 3 26 9 1 - <_> - 3 - - 6 5 4 2 - <_> - 3 - - 6 15 3 1 - <_> - 1 - - 9 8 3 14 - <_> - 7 - - 0 30 14 1 - <_> - 3 - - 4 6 11 5 - <_> - 7 - - 13 0 1 1 - <_> - 1 - - 11 25 2 6 - <_> - 3 - - 1 30 9 1 - <_> - 7 - - 4 27 5 1 - <_> - 5 - - 2 14 7 1 - <_> - 9 - - 3 13 5 6 - <_> - 5 - - 9 7 4 21 - <_> - 1 - - 6 4 2 6 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 3 12 4 14 - <_> - 9 - - 13 29 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 2 - - 4 28 11 1 - <_> - 4 - - 3 10 11 13 - <_> - 1 - - 5 27 6 4 - <_> - 5 - - 0 6 1 14 - <_> - 4 - - 6 29 1 1 - <_> - 2 - - 7 30 8 1 - <_> - 3 - - 3 9 3 18 - <_> - 4 - - 7 20 2 3 - <_> - 1 - - 4 15 8 4 - <_> - 2 - - 4 22 6 9 - <_> - 2 - - 3 28 5 2 - <_> - 0 - - 13 22 1 2 - <_> - 0 - - 9 17 5 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 9 5 1 - <_> - 8 - - 8 3 1 1 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 6 11 6 1 - <_> - 5 - - 9 3 4 10 - <_> - 8 - - 12 20 1 5 - <_> - 5 - - 4 0 9 11 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 12 25 2 1 - <_> - 3 - - 1 6 3 5 - <_> - 2 - - 12 24 2 2 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 6 26 7 2 - <_> - 2 - - 6 10 3 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 0 10 4 13 - <_> - 4 - - 6 4 5 3 - <_> - 0 - - 2 30 5 1 - <_> - 3 - - 3 0 5 13 - <_> - 4 - - 5 0 3 24 - <_> - 1 - - 11 20 3 8 - <_> - 2 - - 3 12 1 7 - <_> - 9 - - 7 17 2 3 - <_> - 9 - - 7 3 3 4 - <_> - 5 - - 2 29 13 2 - <_> - 9 - - 0 29 7 2 - <_> - 0 - - 5 21 5 6 - <_> - 9 - - 7 7 2 7 - <_> - 0 - - 14 14 1 3 - <_> - 2 - - 8 26 6 5 - <_> - 5 - - 2 24 1 7 - <_> - 5 - - 10 10 4 9 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 1 11 13 14 - <_> - 2 - - 4 18 5 10 - <_> - 0 - - 4 8 2 2 - <_> - 2 - - 6 16 4 1 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 0 9 1 15 - <_> - 1 - - 9 22 1 2 - <_> - 0 - - 3 4 3 13 - <_> - 3 - - 6 25 6 4 - <_> - 4 - - 4 20 8 1 - <_> - 0 - - 7 19 4 9 - <_> - 9 - - 7 1 1 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 9 7 1 4 - <_> - 8 - - 9 25 5 5 - <_> - 3 - - 0 18 7 11 - <_> - 1 - - 2 12 12 7 - <_> - 5 - - 5 7 7 1 - <_> - 8 - - 6 6 1 2 - <_> - 9 - - 7 13 1 7 - <_> - 4 - - 5 0 2 13 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 1 2 14 - <_> - 8 - - 6 8 3 2 - <_> - 1 - - 2 26 11 2 - <_> - 2 - - 11 28 2 1 - <_> - 1 - - 5 8 1 6 - <_> - 8 - - 9 26 1 4 - <_> - 1 - - 8 6 2 3 - <_> - 4 - - 2 24 12 2 - <_> - 2 - - 5 16 4 11 - <_> - 4 - - 8 14 5 17 - <_> - 0 - - 5 28 6 2 - <_> - 0 - - 9 16 2 10 - <_> - 7 - - 7 4 8 1 - <_> - 0 - - 7 10 3 17 - <_> - 3 - - 3 12 4 12 - <_> - 0 - - 7 7 3 5 - <_> - 7 - - 7 30 3 1 - <_> - 5 - - 0 21 3 2 - <_> - 5 - - 1 9 3 17 - <_> - 5 - - 1 8 14 3 - <_> - 4 - - 12 8 1 23 - <_> - 0 - - 4 28 10 2 - <_> - 5 - - 5 15 1 10 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 0 29 15 2 - <_> - 0 - - 10 19 4 4 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 13 23 2 5 - <_> - 8 - - 11 5 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 2 0 8 14 - <_> - 9 - - 5 22 2 1 - <_> - 9 - - 14 24 1 2 - <_> - 5 - - 11 13 1 18 - <_> - 5 - - 10 28 5 3 - <_> - 4 - - 5 29 7 1 - <_> - 1 - - 6 27 6 2 - <_> - 1 - - 13 5 1 9 - <_> - 7 - - 7 6 2 2 - <_> - 0 - - 3 3 2 3 - <_> - 2 - - 5 6 8 18 - <_> - 4 - - 6 23 4 6 - <_> - 0 - - 3 2 3 14 - <_> - 4 - - 6 19 2 2 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 10 12 4 3 - <_> - 0 - - 7 10 2 4 - <_> - 7 - - 3 19 1 12 - <_> - 2 - - 14 17 1 9 - <_> - 2 - - 7 8 5 3 - <_> - 5 - - 3 28 11 3 - <_> - 5 - - 10 9 3 6 - <_> - 7 - - 6 15 3 1 - <_> - 0 - - 12 8 2 4 - <_> - 5 - - 10 8 1 4 - <_> - 0 - - 10 9 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 3 1 12 3 - <_> - 9 - - 8 10 1 7 - <_> - 1 - - 4 27 5 1 - <_> - 2 - - 7 18 2 3 - <_> - 4 - - 0 30 8 1 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 7 16 4 1 - <_> - 7 - - 12 22 3 4 - <_> - 4 - - 3 14 7 14 - <_> - 1 - - 7 3 2 6 - <_> - 1 - - 2 30 10 1 - <_> - 0 - - 8 26 6 5 - <_> - 2 - - 9 9 4 1 - <_> - 5 - - 9 28 5 3 - <_> - 1 - - 3 10 10 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 1 10 2 3 - <_> - 7 - - 5 29 9 1 - <_> - 2 - - 7 8 3 9 - <_> - 3 - - 2 8 7 20 - <_> - 3 - - 13 23 2 6 - <_> - 3 - - 5 25 6 2 - <_> - 9 - - 0 0 4 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 1 - - 1 0 10 2 - <_> - 9 - - 7 14 3 3 - <_> - 7 - - 5 16 6 1 - <_> - 9 - - 6 19 3 1 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 6 5 3 4 - <_> - 1 - - 1 7 9 3 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 5 28 10 1 - <_> - 8 - - 10 7 2 4 - <_> - 4 - - 3 8 9 13 - <_> - 4 - - 8 3 1 17 - <_> - 1 - - 8 4 1 12 - <_> - 3 - - 2 19 1 11 - <_> - 3 - - 4 23 6 4 - <_> - 0 - - 6 15 3 1 - <_> - 0 - - 5 12 5 17 - <_> - 4 - - 4 6 8 19 - <_> - 2 - - 6 1 4 27 - <_> - 0 - - 5 11 9 1 - <_> - 1 - - 8 10 2 4 - <_> - 5 - - 12 25 3 6 - <_> - 5 - - 2 27 1 3 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 0 4 30 - <_> - 0 - - 4 25 1 5 - <_> - 4 - - 9 8 1 17 - <_> - 5 - - 3 18 1 4 - <_> - 1 - - 5 26 5 3 - <_> - 9 - - 5 9 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 8 28 5 1 - <_> - 5 - - 10 9 2 15 - <_> - 9 - - 6 3 3 22 - <_> - 4 - - 11 27 3 4 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 5 29 2 2 - <_> - 5 - - 8 3 2 4 - <_> - 2 - - 9 3 3 13 - <_> - 0 - - 6 10 3 2 - <_> - 0 - - 5 22 3 5 - <_> - 7 - - 6 3 4 1 - <_> - 0 - - 0 14 4 17 - <_> - 3 - - 3 5 4 9 - <_> - 7 - - 0 11 3 5 - <_> - 8 - - 7 7 3 1 - <_> - 2 - - 0 30 4 1 - <_> - 4 - - 0 18 12 13 - <_> - 0 - - 9 18 2 1 - <_> - 9 - - 7 8 1 13 - <_> - 9 - - 1 0 14 3 - <_> - 8 - - 4 12 3 2 - <_> - 2 - - 4 19 7 9 - <_> - 2 - - 4 15 1 8 - <_> - 3 - - 8 20 2 4 - <_> - 2 - - 8 6 4 4 - <_> - 5 - - 9 7 2 2 - <_> - 2 - - 0 28 14 2 - <_> - 5 - - 7 15 1 7 - <_> - 7 - - 0 15 7 3 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 5 30 9 1 - <_> - 2 - - 13 23 2 8 - <_> - 1 - - 8 24 6 6 - <_> - 4 - - 7 4 3 1 - <_> - 1 - - 7 4 2 4 - <_> - 1 - - 0 17 9 7 - <_> - 5 - - 2 30 6 1 - <_> - 2 - - 0 24 9 3 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 2 17 1 4 - <_> - 0 - - 1 3 9 1 - <_> - 8 - - 6 5 4 2 - <_> - 7 - - 11 24 2 2 - <_> - 8 - - 14 18 1 7 - <_> - 7 - - 7 5 1 3 - <_> - 1 - - 5 25 4 1 - <_> - 2 - - 8 23 2 6 - <_> - 3 - - 5 11 3 17 - <_> - 3 - - 6 14 1 15 - <_> - 4 - - 4 6 9 6 - <_> - 4 - - 6 29 9 2 - <_> - 7 - - 11 27 3 1 - <_> - 9 - - 7 15 1 1 - <_> - 0 - - 1 28 14 2 - <_> - 0 - - 7 19 4 8 - <_> - 8 - - 5 6 7 8 - <_> - 1 - - 10 9 1 1 - <_> - 3 - - 4 19 9 2 - <_> - 1 - - 10 19 4 3 - <_> - 4 - - 7 20 4 1 - <_> - 3 - - 5 15 1 14 - <_> - 0 - - 5 5 6 3 - <_> - 2 - - 8 11 1 7 - <_> - 5 - - 10 10 3 4 - <_> - 0 - - 7 1 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 9 16 2 2 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 3 27 7 4 - <_> - 1 - - 11 24 1 1 - <_> - 4 - - 0 29 10 2 - <_> - 2 - - 3 24 8 4 - <_> - 0 - - 0 21 3 10 - <_> - 2 - - 4 28 9 2 - <_> - 0 - - 7 18 1 5 - <_> - 7 - - 8 7 2 1 - <_> - 7 - - 1 24 2 7 - <_> - 1 - - 7 6 5 3 - <_> - 7 - - 6 14 2 1 - <_> - 7 - - 4 27 1 4 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 13 14 1 6 - <_> - 8 - - 4 3 1 4 - <_> - 2 - - 11 10 1 8 - <_> - 1 - - 8 7 6 16 - <_> - 3 - - 0 8 11 13 - <_> - 3 - - 5 7 1 15 - <_> - 0 - - 5 20 3 2 - <_> - 3 - - 1 6 8 2 - <_> - 2 - - 4 9 4 1 - <_> - 0 - - 3 4 4 6 - <_> - 3 - - 8 2 1 3 - <_> - 1 - - 8 27 1 2 - <_> - 3 - - 14 21 1 4 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 9 12 3 15 - <_> - 7 - - 3 12 1 6 - <_> - 2 - - 9 30 5 1 - <_> - 3 - - 6 5 4 2 - <_> - 4 - - 9 20 1 11 - <_> - 4 - - 2 6 8 3 - <_> - 7 - - 4 24 1 7 - <_> - 0 - - 6 7 3 12 - <_> - 5 - - 6 26 5 2 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 3 20 7 2 - <_> - 4 - - 0 30 8 1 - <_> - 3 - - 1 27 10 4 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 12 22 3 3 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 7 1 2 6 - <_> - 8 - - 7 6 3 11 - <_> - 8 - - 8 29 3 1 - <_> - 1 - - 7 3 3 7 - <_> - 0 - - 9 19 1 12 - <_> - 4 - - 9 5 2 26 - <_> - 4 - - 9 9 4 13 - <_> - 4 - - 1 23 12 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 10 12 3 19 - <_> - 4 - - 7 11 2 14 - <_> - 0 - - 14 19 1 3 - <_> - 4 - - 5 9 10 3 - <_> - 4 - - 8 22 1 4 - <_> - 2 - - 4 3 6 23 - <_> - 2 - - 14 16 1 13 - <_> - 7 - - 3 19 1 12 - <_> - 5 - - 8 28 3 3 - <_> - 3 - - 5 0 9 1 - <_> - 0 - - 11 10 1 19 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 5 20 5 1 - <_> - 0 - - 6 21 5 7 - <_> - 3 - - 13 21 2 5 - <_> - 3 - - 1 7 4 8 - <_> - 8 - - 6 18 3 2 - <_> - 7 - - 7 6 2 2 - <_> - 1 - - 7 19 2 5 - <_> - 5 - - 11 8 3 22 - <_> - 1 - - 11 20 2 8 - <_> - 5 - - 11 1 1 20 - <_> - 4 - - 0 30 13 1 - <_> - 9 - - 1 29 7 2 - <_> - 9 - - 5 19 3 3 - <_> - 9 - - 5 6 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 5 19 4 11 - <_> - 4 - - 2 29 2 2 - <_> - 0 - - 7 10 3 2 - <_> - 1 - - 8 27 4 2 - <_> - 2 - - 7 8 4 2 - <_> - 0 - - 2 28 2 2 - <_> - 3 - - 2 12 5 3 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 6 18 3 4 - <_> - 0 - - 5 22 3 5 - <_> - 2 - - 5 1 5 27 - <_> - 0 - - 5 28 7 1 - <_> - 3 - - 5 26 8 2 - <_> - 7 - - 13 21 1 4 - <_> - 7 - - 9 17 1 1 - <_> - 7 - - 13 30 1 1 - <_> - 2 - - 11 4 1 16 - <_> - 5 - - 12 18 2 12 - <_> - 5 - - 8 9 5 4 - <_> - 5 - - 3 23 1 2 - <_> - 4 - - 0 9 4 7 - <_> - 2 - - 3 28 5 2 - <_> - 4 - - 9 8 1 17 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 0 - - 2 2 11 2 - <_> - 4 - - 9 1 3 16 - <_> - 4 - - 7 4 5 4 - <_> - 4 - - 4 29 8 1 - <_> - 0 - - 6 7 6 10 - <_> - 7 - - 7 28 1 2 - <_> - 5 - - 3 26 7 2 - <_> - 7 - - 7 13 1 8 - <_> - 4 - - 5 20 8 1 - <_> - 1 - - 3 27 10 2 - <_> - 0 - - 0 8 9 1 - <_> - 4 - - 8 26 6 5 - <_> - 5 - - 4 24 1 7 - <_> - 2 - - 2 11 4 11 - <_> - 2 - - 6 21 5 7 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 3 7 2 11 - <_> - 8 - - 2 21 1 5 - <_> - 2 - - 5 8 1 1 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 6 9 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 12 24 2 5 - <_> - 8 - - 11 0 3 19 - <_> - 3 - - 0 26 4 3 - <_> - 3 - - 4 13 2 15 - <_> - 7 - - 8 19 1 1 - <_> - 2 - - 9 0 2 8 - <_> - 4 - - 7 3 2 18 - <_> - 9 - - 14 2 1 2 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 30 2 1 - <_> - 5 - - 10 20 1 6 - <_> - 2 - - 3 6 7 2 - <_> - 1 - - 6 11 5 2 - <_> - 3 - - 0 6 10 19 - <_> - 7 - - 6 29 1 2 - <_> - 3 - - 6 9 3 8 - <_> - 0 - - 2 12 10 7 - <_> - 2 - - 1 16 2 1 - <_> - 7 - - 1 15 8 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 5 9 3 - <_> - 5 - - 0 19 15 8 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 13 14 1 1 - <_> - 1 - - 13 3 2 12 - <_> - 7 - - 0 24 7 1 - <_> - 3 - - 0 28 15 2 - <_> - 1 - - 4 21 7 5 - <_> - 5 - - 5 14 1 10 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 1 7 14 5 - <_> - 8 - - 0 16 3 3 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 8 9 3 19 - <_> - 5 - - 3 21 2 9 - <_> - 0 - - 6 19 2 12 - <_> - 1 - - 5 17 6 3 - <_> - 3 - - 2 19 13 11 - <_> - 0 - - 9 9 1 2 - <_> - 5 - - 9 8 6 4 - <_> - 0 - - 3 8 4 1 - <_> - 1 - - 3 22 3 8 - <_> - 1 - - 2 19 3 4 - <_> - 5 - - 13 1 1 30 - <_> - 5 - - 5 19 7 6 - <_> - 2 - - 0 23 9 1 - <_> - 5 - - 6 17 3 1 - <_> - 4 - - 11 0 3 21 - <_> - 1 - - 2 4 12 5 - <_> - 5 - - 1 13 1 7 - <_> - 1 - - 4 3 5 1 - <_> - 5 - - 9 5 1 7 - <_> - 0 - - 7 18 4 2 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 3 26 7 2 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 4 - - 2 6 5 7 - <_> - 9 - - 7 1 1 2 - <_> - 9 - - 7 13 4 9 - <_> - 9 - - 3 3 10 3 - <_> - 1 - - 3 4 6 2 - <_> - 1 - - 5 28 6 1 - <_> - 4 - - 4 5 11 9 - <_> - 3 - - 2 16 1 11 - <_> - 0 - - 6 20 5 7 - <_> - 4 - - 10 1 1 8 - <_> - 3 - - 11 22 1 6 - <_> - 4 - - 5 12 6 17 - <_> - 5 - - 10 10 4 8 - <_> - 5 - - 2 1 5 13 - <_> - 5 - - 4 2 8 2 - <_> - 7 - - 2 21 12 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 7 12 1 5 - <_> - 0 - - 2 4 4 12 - <_> - 3 - - 2 15 2 12 - <_> - 2 - - 4 1 3 26 - <_> - 4 - - 0 4 13 4 - <_> - 5 - - 13 15 1 11 - <_> - 5 - - 4 0 9 11 - <_> - 5 - - 7 0 5 7 - <_> - 9 - - 6 19 2 5 - <_> - 1 - - 7 19 2 5 - <_> - 7 - - 2 11 11 2 - <_> - 1 - - 5 9 6 1 - <_> - 7 - - 7 29 2 2 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 4 27 8 1 - <_> - 4 - - 0 29 14 1 - <_> - 4 - - 8 7 4 8 - <_> - 7 - - 10 28 5 1 - <_> - 2 - - 8 16 1 2 - <_> - 3 - - 2 24 7 4 - <_> - 1 - - 11 15 3 8 - <_> - 5 - - 1 26 1 5 - <_> - 8 - - 3 27 8 2 - <_> - 2 - - 10 9 3 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 4 - - 3 10 12 3 - <_> - 7 - - 2 27 2 2 - <_> - 4 - - 3 24 8 2 - <_> - 3 - - 5 5 1 14 - <_> - 7 - - 6 12 3 2 - <_> - 8 - - 0 4 15 2 - <_> - 8 - - 10 3 2 1 - <_> - 4 - - 6 26 4 2 - <_> - 2 - - 7 11 2 3 - <_> - 4 - - 5 21 5 8 - <_> - 0 - - 5 5 6 3 - <_> - 5 - - 2 13 1 10 - <_> - 4 - - 4 0 6 22 - <_> - 1 - - 5 15 5 11 - <_> - 4 - - 8 3 1 17 - <_> - 2 - - 7 25 3 1 - <_> - 5 - - 6 28 7 2 - <_> - 5 - - 11 13 1 9 - <_> - 0 - - 9 14 3 11 - <_> - 2 - - 5 16 4 11 - <_> - 5 - - 3 15 7 12 - <_> - 5 - - 12 17 3 2 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 7 27 3 3 - <_> - 4 - - 7 12 3 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 16 1 5 - <_> - 8 - - 6 25 4 3 - <_> - 3 - - 6 20 1 5 - <_> - 4 - - 3 26 10 5 - <_> - 4 - - 7 21 3 2 - <_> - 3 - - 3 0 9 10 - <_> - 0 - - 3 9 5 1 - <_> - 3 - - 7 7 6 5 - <_> - 5 - - 3 30 11 1 - <_> - 2 - - 4 26 9 4 - <_> - 0 - - 0 29 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 9 5 2 1 - <_> - 9 - - 7 10 3 6 - <_> - 5 - - 8 5 5 10 - <_> - 7 - - 3 5 10 2 - <_> - 2 - - 14 22 1 4 - <_> - 9 - - 8 1 2 1 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 8 1 1 6 - <_> - 3 - - 2 9 7 5 - <_> - 4 - - 1 21 2 4 - <_> - 0 - - 8 9 2 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 6 18 5 10 - <_> - 8 - - 1 4 14 6 - <_> - 3 - - 6 9 3 12 - <_> - 3 - - 5 4 2 9 - <_> - 8 - - 6 12 5 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 1 5 14 11 - <_> - 5 - - 6 8 4 1 - <_> - 5 - - 6 4 4 3 - <_> - 0 - - 0 20 15 10 - <_> - 7 - - 0 27 6 1 - <_> - 2 - - 5 1 2 4 - <_> - 4 - - 8 23 1 1 - <_> - 9 - - 2 2 8 3 - <_> - 1 - - 3 28 8 1 - <_> - 2 - - 4 30 11 1 - <_> - 1 - - 4 3 5 1 - <_> - 0 - - 7 19 4 9 - <_> - 0 - - 13 24 1 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 1 9 14 2 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 27 3 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 14 0 1 26 - <_> - 5 - - 2 9 13 20 - <_> - 0 - - 7 11 2 3 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 3 16 1 4 - <_> - 5 - - 5 29 4 2 - <_> - 0 - - 3 25 9 5 - <_> - 3 - - 7 29 8 2 - <_> - 4 - - 3 11 9 14 - <_> - 4 - - 8 11 1 8 - <_> - 8 - - 6 21 4 4 - <_> - 3 - - 0 23 3 7 - <_> - 3 - - 3 23 4 4 - <_> - 5 - - 5 18 3 6 - <_> - 5 - - 8 2 5 10 - <_> - 7 - - 2 4 3 5 - <_> - 2 - - 4 10 7 1 - <_> - 3 - - 3 9 9 18 - <_> - 3 - - 5 28 6 1 - <_> - 4 - - 1 6 10 8 - <_> - 3 - - 0 0 5 26 - <_> - 2 - - 5 0 5 31 - <_> - 5 - - 10 25 2 1 - <_> - 2 - - 8 9 1 3 - <_> - 2 - - 3 24 6 4 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 2 5 8 4 - <_> - 8 - - 10 2 1 5 - <_> - 5 - - 2 7 2 16 - <_> - 0 - - 2 27 1 3 - <_> - 1 - - 1 17 4 2 - <_> - 9 - - 13 25 1 5 - <_> - 4 - - 7 3 2 2 - <_> - 8 - - 6 28 4 1 - <_> - 1 - - 1 10 14 12 - <_> - 3 - - 4 4 5 23 - <_> - 5 - - 1 16 10 8 - <_> - 2 - - 6 10 3 4 - <_> - 5 - - 7 21 5 5 - <_> - 5 - - 9 16 3 5 - <_> - 3 - - 14 24 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 8 16 2 2 - <_> - 1 - - 4 27 10 1 - <_> - 1 - - 5 26 7 2 - <_> - 4 - - 5 20 8 1 - <_> - 9 - - 9 11 1 2 - <_> - 9 - - 8 1 2 1 - <_> - 8 - - 8 4 3 25 - <_> - 1 - - 6 28 5 1 - <_> - 8 - - 8 28 3 3 - <_> - 4 - - 6 29 4 1 - <_> - 4 - - 7 21 3 2 - <_> - 5 - - 10 18 1 11 - <_> - 2 - - 7 9 5 1 - <_> - 5 - - 0 21 3 6 - <_> - 2 - - 3 22 7 6 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 11 24 2 6 - <_> - 7 - - 14 17 1 13 - <_> - 8 - - 4 3 3 1 - <_> - 4 - - 5 3 6 6 - <_> - 5 - - 1 16 6 15 - <_> - 3 - - 3 29 5 2 - <_> - 0 - - 6 18 4 12 - <_> - 4 - - 10 0 3 13 - <_> - 0 - - 7 11 2 6 - <_> - 5 - - 3 10 12 3 - <_> - 1 - - 7 1 3 2 - <_> - 1 - - 4 26 6 3 - <_> - 4 - - 1 11 11 19 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 12 11 1 20 - <_> - 5 - - 12 30 2 1 - <_> - 0 - - 5 26 8 4 - <_> - 8 - - 11 21 4 1 - <_> - 1 - - 3 10 10 1 - <_> - 4 - - 7 1 4 18 - <_> - 2 - - 7 20 3 1 - <_> - 5 - - 5 28 4 2 - <_> - 0 - - 2 4 6 5 - <_> - 3 - - 5 7 2 3 - <_> - 9 - - 8 19 1 2 - <_> - 9 - - 5 6 5 1 - <_> - 7 - - 1 22 2 3 - <_> - 2 - - 14 14 1 13 - <_> - 1 - - 2 21 3 6 - <_> - 9 - - 14 1 1 6 - <_> - 1 - - 5 11 3 2 - <_> - 7 - - 14 4 1 22 - <_> - 0 - - 6 4 3 24 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 9 17 6 2 - <_> - 0 - - 7 10 1 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 5 6 1 6 - <_> - 3 - - 5 0 10 4 - <_> - 7 - - 2 30 11 1 - <_> - 1 - - 7 16 3 11 - <_> - 1 - - 9 10 2 7 - <_> - 2 - - 5 20 6 8 - <_> - 0 - - 10 8 2 2 - <_> - 3 - - 8 13 1 7 - <_> - 8 - - 7 7 3 1 - <_> - 0 - - 5 28 8 1 - <_> - 8 - - 8 3 1 2 - <_> - 0 - - 5 17 7 11 - <_> - 9 - - 11 6 2 1 - <_> - 4 - - 2 27 5 4 - <_> - 5 - - 8 28 3 3 - <_> - 1 - - 7 28 6 1 - <_> - 7 - - 7 20 1 1 - <_> - 4 - - 7 18 3 8 - <_> - 1 - - 11 21 2 8 - <_> - 2 - - 6 18 5 10 - <_> - 9 - - 6 18 1 2 - <_> - 4 - - 9 6 4 18 - <_> - 1 - - 12 23 1 7 - <_> - 7 - - 14 1 1 24 - <_> - 0 - - 4 8 2 2 - <_> - 1 - - 13 12 2 1 - <_> - 7 - - 0 27 10 1 - <_> - 3 - - 8 23 7 8 - <_> - 7 - - 7 13 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 9 9 6 3 - <_> - 8 - - 2 6 13 1 - <_> - 5 - - 8 3 5 12 - <_> - 2 - - 2 25 1 3 - <_> - 4 - - 6 2 5 6 - <_> - 3 - - 10 23 1 4 - <_> - 4 - - 5 26 5 2 - <_> - 3 - - 11 17 1 14 - <_> - 4 - - 3 12 10 9 - <_> - 4 - - 4 14 7 7 - <_> - 7 - - 11 11 2 5 - <_> - 4 - - 8 20 2 3 - <_> - 5 - - 7 19 5 9 - <_> - 4 - - 4 16 9 4 - <_> - 5 - - 2 28 1 2 - <_> - 3 - - 4 8 8 7 - <_> - 9 - - 8 13 1 1 - <_> - 0 - - 6 9 2 3 - <_> - 0 - - 5 5 5 3 - <_> - 5 - - 9 20 3 2 - <_> - 2 - - 8 30 6 1 - <_> - 3 - - 2 0 4 16 - <_> - 1 - - 11 19 2 5 - <_> - 9 - - 14 24 1 2 - <_> - 1 - - 4 27 6 3 - <_> - 9 - - 7 9 2 3 - <_> - 4 - - 6 22 4 3 - <_> - 3 - - 3 19 12 4 - <_> - 3 - - 4 12 2 15 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 4 10 2 13 - <_> - 9 - - 7 14 2 3 - <_> - 2 - - 6 10 3 1 - <_> - 9 - - 12 2 2 2 - <_> - 5 - - 4 3 6 1 - <_> - 3 - - 2 5 7 4 - <_> - 7 - - 12 14 1 9 - <_> - 1 - - 4 4 4 4 - <_> - 4 - - 9 28 5 3 - <_> - 1 - - 8 27 6 1 - <_> - 1 - - 11 23 2 2 - <_> - 7 - - 2 5 12 1 - <_> - 3 - - 1 12 7 11 - <_> - 9 - - 8 24 1 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 1 - - 10 9 1 2 - <_> - 9 - - 6 7 2 6 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 9 1 3 - <_> - 0 - - 6 21 5 7 - <_> - 5 - - 10 29 5 2 - <_> - 0 - - 13 27 2 4 - <_> - 9 - - 7 18 1 4 - <_> - 3 - - 3 21 6 4 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 5 10 4 3 - <_> - 0 - - 5 28 6 1 - <_> - 0 - - 11 15 2 2 - <_> - 7 - - 1 27 7 1 - <_> - 5 - - 10 11 2 1 - <_> - 1 - - 5 12 8 12 - <_> - 4 - - 7 0 2 18 - <_> - 3 - - 1 22 10 3 - <_> - 2 - - 3 5 8 25 - <_> - 5 - - 7 16 1 4 - <_> - 5 - - 9 5 2 12 - <_> - 4 - - 4 29 11 2 - <_> - 2 - - 9 1 2 2 - <_> - 2 - - 8 21 2 7 - <_> - 4 - - 7 27 1 4 - <_> - 8 - - 6 5 4 2 - <_> - 5 - - 1 12 3 6 - <_> - 8 - - 1 20 6 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 6 27 9 3 - <_> - 5 - - 13 1 1 23 - <_> - 9 - - 8 9 1 2 - <_> - 5 - - 11 30 4 1 - <_> - 9 - - 7 0 2 13 - <_> - 3 - - 5 2 1 29 - <_> - 7 - - 10 8 2 3 - <_> - 2 - - 4 29 2 2 - <_> - 3 - - 4 12 11 1 - <_> - 3 - - 1 13 12 4 - <_> - 0 - - 6 10 3 2 - <_> - 4 - - 2 9 5 2 - <_> - 1 - - 5 27 5 1 - <_> - 8 - - 6 22 2 1 - <_> - 3 - - 12 19 2 7 - <_> - 5 - - 8 16 4 12 - <_> - 9 - - 6 17 3 1 - <_> - 2 - - 6 14 8 10 - <_> - 4 - - 4 28 8 3 - <_> - 4 - - 4 16 9 12 - <_> - 0 - - 7 29 1 2 - <_> - 4 - - 3 28 11 3 - <_> - 4 - - 4 16 5 2 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 7 8 1 4 - <_> - 1 - - 12 24 2 7 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 7 4 3 1 - <_> - 2 - - 1 29 2 2 - <_> - 2 - - 2 24 6 7 - <_> - 5 - - 7 27 2 1 - <_> - 0 - - 5 4 10 4 - <_> - 1 - - 8 11 2 2 - <_> - 2 - - 4 20 6 7 - <_> - 8 - - 6 28 4 3 - <_> - 5 - - 8 28 3 2 - <_> - 3 - - 1 0 13 1 - <_> - 2 - - 3 15 3 2 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 22 1 4 - <_> - 4 - - 1 26 11 4 - <_> - 5 - - 9 0 3 20 - <_> - 7 - - 7 21 2 4 - <_> - 0 - - 7 14 2 3 - <_> - 0 - - 6 4 3 24 - <_> - 7 - - 7 6 2 2 - <_> - 2 - - 7 13 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 0 - - 7 10 3 1 - <_> - 8 - - 12 15 1 10 - <_> - 9 - - 7 15 3 2 - <_> - 7 - - 6 16 5 1 - <_> - 1 - - 7 18 2 7 - <_> - 1 - - 7 23 2 6 - <_> - 9 - - 2 5 9 1 - <_> - 0 - - 8 3 4 3 - <_> - 3 - - 4 2 4 9 - <_> - 4 - - 6 21 5 3 - <_> - 2 - - 4 9 4 2 - <_> - 9 - - 13 17 1 5 - <_> - 2 - - 9 25 1 4 - <_> - 0 - - 10 28 2 3 - <_> - 1 - - 4 10 10 1 - <_> - 0 - - 7 9 6 17 - <_> - 0 - - 10 10 1 10 - <_> - 7 - - 5 29 9 1 - <_> - 3 - - 0 17 5 14 - <_> - 3 - - 3 1 11 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 7 6 2 5 - <_> - 8 - - 7 8 2 1 - <_> - 4 - - 2 12 11 11 - <_> - 2 - - 9 30 4 1 - <_> - 3 - - 9 0 6 14 - <_> - 3 - - 4 12 2 15 - <_> - 4 - - 1 30 4 1 - <_> - 0 - - 1 16 6 8 - <_> - 2 - - 4 25 9 3 - <_> - 3 - - 10 4 5 25 - <_> - 2 - - 8 16 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 7 - - 9 12 1 1 - <_> - 4 - - 3 5 8 3 - <_> - 5 - - 8 5 5 7 - <_> - 1 - - 5 8 8 1 - <_> - 2 - - 3 27 4 3 - <_> - 7 - - 2 27 8 1 - <_> - 4 - - 0 27 13 2 - <_> - 2 - - 6 17 3 11 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 11 0 2 3 - <_> - 4 - - 1 3 11 5 - <_> - 0 - - 3 28 5 3 - <_> - 1 - - 7 15 4 7 - <_> - 1 - - 2 27 10 1 - <_> - 0 - - 6 18 4 9 - <_> - 1 - - 4 24 9 1 - <_> - 9 - - 14 8 1 8 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 8 1 4 29 - <_> - 2 - - 4 2 3 4 - <_> - 2 - - 5 5 6 3 - <_> - 7 - - 2 14 8 5 - <_> - 7 - - 9 30 1 1 - <_> - 9 - - 5 16 3 7 - <_> - 7 - - 3 13 7 13 - <_> - 2 - - 14 22 1 7 - <_> - 4 - - 8 26 7 2 - <_> - 0 - - 3 8 4 1 - <_> - 3 - - 7 25 6 5 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 3 8 10 23 - <_> - 1 - - 7 9 5 1 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 10 11 4 1 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 9 4 6 9 - <_> - 1 - - 5 11 4 3 - <_> - 7 - - 7 6 5 3 - <_> - 7 - - 11 26 1 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 4 12 2 10 - <_> - 8 - - 1 16 3 7 - <_> - 5 - - 9 14 3 13 - <_> - 1 - - 13 22 2 1 - <_> - 4 - - 1 29 14 2 - <_> - 1 - - 3 27 10 4 - <_> - 3 - - 3 30 1 1 - <_> - 2 - - 0 23 4 8 - <_> - 0 - - 6 25 5 2 - <_> - 5 - - 13 7 1 24 - <_> - 3 - - 2 5 6 9 - <_> - 0 - - 7 15 3 2 - <_> - 0 - - 9 0 3 31 - <_> - 0 - - 7 10 3 1 - <_> - 3 - - 13 19 1 3 - <_> - 4 - - 12 9 3 19 - <_> - 8 - - 7 6 3 4 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 1 15 4 - <_> - 1 - - 6 4 7 4 - <_> - 5 - - 6 28 4 1 - <_> - 0 - - 6 19 4 10 - <_> - 2 - - 4 18 5 1 - <_> - 4 - - 3 1 10 24 - <_> - 3 - - 1 9 6 16 - <_> - 1 - - 9 16 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 1 - - 4 24 5 5 - <_> - 3 - - 0 10 1 21 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 19 1 2 - <_> - 9 - - 7 20 1 1 - <_> - 9 - - 10 28 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 7 5 2 21 - <_> - 2 - - 5 19 6 10 - <_> - 4 - - 3 29 5 1 - <_> - 0 - - 4 22 1 7 - <_> - 9 - - 8 9 1 2 - <_> - 9 - - 7 3 2 6 - <_> - 0 - - 10 16 1 2 - <_> - 7 - - 1 0 2 28 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 10 23 4 6 - <_> - 2 - - 1 29 2 2 - <_> - 0 - - 3 3 3 19 - <_> - 0 - - 2 11 7 1 - <_> - 5 - - 9 2 1 14 - <_> - 7 - - 13 19 2 1 - <_> - 3 - - 5 26 3 1 - <_> - 2 - - 12 26 1 5 - <_> - 5 - - 11 7 1 24 - <_> - 4 - - 5 24 1 2 - <_> - 4 - - 5 11 2 19 - <_> - 5 - - 5 0 1 6 - <_> - 7 - - 8 13 2 2 - <_> - 3 - - 6 5 1 6 - <_> - 9 - - 10 30 1 1 - <_> - 1 - - 8 25 2 4 - <_> - 2 - - 6 9 4 2 - <_> - 5 - - 12 10 3 13 - <_> - 5 - - 9 30 6 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 13 12 2 1 - <_> - 8 - - 5 4 6 3 - <_> - 7 - - 4 30 8 1 - <_> - 1 - - 7 16 3 10 - <_> - 0 - - 9 14 3 4 - <_> - 1 - - 5 10 7 2 - <_> - 4 - - 7 2 1 27 - <_> - 8 - - 0 9 3 20 - <_> - 1 - - 6 22 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 0 12 3 19 - <_> - 9 - - 4 8 8 3 - <_> - 9 - - 5 4 4 3 - <_> - 0 - - 4 10 1 1 - <_> - 1 - - 14 2 1 14 - <_> - 0 - - 2 18 11 3 - <_> - 5 - - 7 26 8 2 - <_> - 1 - - 10 15 1 3 - <_> - 1 - - 4 22 1 6 - <_> - 5 - - 2 5 10 22 - <_> - 4 - - 12 27 2 4 - <_> - 0 - - 1 29 14 1 - <_> - 5 - - 3 4 2 5 - <_> - 4 - - 4 9 3 9 - <_> - 7 - - 11 25 2 6 - <_> - 0 - - 4 0 1 1 - <_> - 9 - - 8 13 2 5 - <_> - 9 - - 4 15 11 16 - <_> - 5 - - 11 16 1 7 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 1 27 13 2 - <_> - 1 - - 6 23 4 4 - <_> - 7 - - 14 4 1 17 - <_> - 9 - - 7 22 5 5 - <_> - 4 - - 6 15 5 1 - <_> - 5 - - 0 24 5 1 - <_> - 3 - - 5 11 8 2 - <_> - 2 - - 1 25 9 2 - <_> - 3 - - 12 3 2 20 - <_> - 5 - - 5 22 1 8 - <_> - 4 - - 6 4 4 5 - <_> - 3 - - 1 15 2 16 - <_> - 0 - - 2 19 8 12 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 3 5 8 - <_> - 8 - - 8 10 1 6 - <_> - 5 - - 2 0 7 2 - <_> - 2 - - 4 16 6 12 - <_> - 5 - - 7 11 1 18 - <_> - 2 - - 5 3 6 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 0 0 4 7 - <_> - 1 - - 4 10 6 4 - <_> - 1 - - 8 27 2 3 - <_> - 0 - - 9 15 2 12 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 28 2 3 - <_> - 8 - - 0 20 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 12 12 3 6 - <_> - 3 - - 4 1 5 12 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 4 15 5 16 - <_> - 0 - - 2 1 8 2 - <_> - 5 - - 3 29 10 1 - <_> - 2 - - 9 9 4 2 - <_> - 1 - - 13 4 2 5 - <_> - 4 - - 3 15 10 15 - <_> - 5 - - 2 8 11 5 - <_> - 5 - - 8 22 1 5 - <_> - 7 - - 4 5 6 1 - <_> - 7 - - 2 27 1 3 - <_> - 4 - - 7 12 1 12 - <_> - 2 - - 0 30 4 1 - <_> - 8 - - 8 4 7 9 - <_> - 2 - - 8 14 2 4 - <_> - 3 - - 3 10 2 1 - <_> - 3 - - 3 0 9 10 - <_> - 3 - - 14 0 1 1 - <_> - 2 - - 0 25 10 2 - <_> - 2 - - 8 7 2 4 - <_> - 8 - - 4 30 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 10 11 4 2 - <_> - 8 - - 6 8 3 2 - <_> - 9 - - 5 1 4 2 - <_> - 0 - - 7 8 1 9 - <_> - 9 - - 6 0 3 11 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 6 6 8 1 - <_> - 3 - - 1 7 12 20 - <_> - 4 - - 6 21 3 1 - <_> - 1 - - 11 19 2 10 - <_> - 3 - - 4 7 1 21 - <_> - 3 - - 13 21 2 9 - <_> - 3 - - 0 8 7 4 - <_> - 2 - - 7 24 2 3 - <_> - 5 - - 6 28 3 1 - <_> - 4 - - 8 18 1 2 - <_> - 0 - - 2 9 8 17 - <_> - 4 - - 9 8 3 12 - <_> - 1 - - 2 25 9 6 - <_> - 2 - - 6 24 5 4 - <_> - 9 - - 7 18 2 2 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 6 3 4 - <_> - 4 - - 1 29 9 2 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 28 6 2 - <_> - 0 - - 7 17 5 10 - <_> - 2 - - 13 2 1 28 - <_> - 3 - - 10 16 2 10 - <_> - 8 - - 7 1 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 9 30 4 1 - <_> - 0 - - 9 17 3 6 - <_> - 0 - - 0 20 1 10 - <_> - 0 - - 6 12 5 6 - <_> - 1 - - 8 27 6 2 - <_> - 5 - - 0 29 9 2 - <_> - 4 - - 9 20 5 11 - <_> - 2 - - 7 14 6 12 - <_> - 8 - - 10 24 1 1 - <_> - 2 - - 1 17 14 9 - <_> - 1 - - 10 9 1 2 - <_> - 4 - - 8 7 5 13 - <_> - 9 - - 1 28 10 2 - <_> - 4 - - 4 20 7 1 - <_> - 4 - - 8 4 1 8 - <_> - 2 - - 6 23 4 8 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 2 11 12 5 - <_> - 0 - - 7 10 3 7 - <_> - 8 - - 7 6 1 2 - <_> - 0 - - 4 28 11 2 - <_> - 9 - - 8 15 1 2 - <_> - 0 - - 0 13 4 16 - <_> - 3 - - 3 21 6 8 - <_> - 5 - - 12 15 1 4 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 3 4 6 - <_> - 2 - - 9 9 2 6 - <_> - 0 - - 0 3 8 10 - <_> - 1 - - 8 27 5 1 - <_> - 7 - - 5 11 1 1 - <_> - 0 - - 4 8 2 2 - <_> - 4 - - 7 3 2 2 - <_> - 3 - - 2 0 4 16 - <_> - 7 - - 3 28 2 1 - <_> - 5 - - 1 20 1 6 - <_> - 5 - - 9 9 5 4 - <_> - 5 - - 2 0 11 1 - <_> - 4 - - 3 13 7 17 - <_> - 4 - - 6 29 2 2 - <_> - 2 - - 6 0 4 9 - <_> - 7 - - 6 5 3 18 - <_> - 2 - - 6 10 5 2 - <_> - 3 - - 3 11 4 12 - <_> - 4 - - 8 29 5 2 - <_> - 4 - - 4 4 6 5 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 4 - - 8 1 6 18 - <_> - 5 - - 3 26 7 1 - <_> - 8 - - 13 27 1 2 - <_> - 3 - - 0 6 5 25 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 23 2 6 - <_> - 8 - - 6 5 4 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 4 2 7 5 - <_> - 8 - - 4 10 7 7 - <_> - 5 - - 2 30 13 1 - <_> - 7 - - 6 5 4 6 - <_> - 0 - - 5 24 6 4 - <_> - 2 - - 4 14 6 12 - <_> - 3 - - 14 22 1 3 - <_> - 5 - - 6 15 1 5 - <_> - 0 - - 5 26 6 2 - <_> - 9 - - 4 20 3 1 - <_> - 3 - - 11 24 3 1 - <_> - 5 - - 9 4 4 9 - <_> - 7 - - 6 3 4 1 - <_> - 4 - - 5 4 6 5 - <_> - 2 - - 3 8 3 1 - <_> - 8 - - 5 24 2 1 - <_> - 7 - - 10 9 1 2 - <_> - 4 - - 11 28 4 3 - <_> - 0 - - 2 5 5 4 - <_> - 2 - - 11 10 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 4 - - 1 5 7 18 - <_> - 4 - - 5 25 6 3 - <_> - 3 - - 10 0 4 15 - <_> - 2 - - 9 9 2 6 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 9 21 6 1 - <_> - 0 - - 5 19 8 2 - <_> - 2 - - 11 21 3 1 - <_> - 3 - - 7 14 1 2 - <_> - 5 - - 8 11 5 11 - <_> - 2 - - 9 17 1 2 - <_> - 1 - - 4 28 8 1 - <_> - 5 - - 4 8 3 2 - <_> - 0 - - 12 26 1 1 - <_> - 1 - - 5 13 6 13 - <_> - 3 - - 4 10 2 13 - <_> - 1 - - 7 5 2 4 - <_> - 2 - - 4 29 10 1 - <_> - 4 - - 5 21 5 4 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 18 5 10 - <_> - 2 - - 14 17 1 14 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 4 4 7 4 - <_> - 4 - - 7 3 2 4 - <_> - 4 - - 11 29 4 2 - <_> - 1 - - 8 11 2 1 - <_> - 2 - - 1 30 12 1 - <_> - 2 - - 6 7 5 2 - <_> - 1 - - 1 27 9 4 - <_> - 5 - - 14 2 1 2 - <_> - 0 - - 2 27 1 3 - <_> - 9 - - 1 1 7 3 - <_> - 1 - - 4 4 4 4 - <_> - 9 - - 8 8 1 1 - <_> - 5 - - 10 7 1 7 - <_> - 7 - - 11 0 4 9 - <_> - 2 - - 7 11 4 2 - <_> - 2 - - 3 24 9 4 - <_> - 5 - - 9 19 4 8 - <_> - 5 - - 5 21 1 5 - <_> - 8 - - 7 5 2 3 - <_> - 0 - - 7 12 3 5 - <_> - 8 - - 10 4 1 4 - <_> - 9 - - 6 15 2 2 - <_> - 5 - - 9 17 4 10 - <_> - 4 - - 1 9 8 1 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 7 0 3 8 - <_> - 5 - - 10 25 1 2 - <_> - 2 - - 6 10 3 1 - <_> - 3 - - 2 10 6 3 - <_> - 4 - - 12 22 3 2 - <_> - 2 - - 5 18 5 10 - <_> - 3 - - 14 2 1 22 - <_> - 4 - - 13 7 2 13 - <_> - 1 - - 7 28 5 1 - <_> - 1 - - 5 27 2 1 - <_> - 8 - - 7 7 3 1 - <_> - 4 - - 6 17 8 14 - <_> - 3 - - 3 2 9 1 - <_> - 7 - - 1 22 2 2 - <_> - 2 - - 7 30 7 1 - <_> - 3 - - 7 8 3 2 - <_> - 5 - - 8 10 6 3 - <_> - 8 - - 1 30 2 1 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 8 20 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 9 13 4 1 - <_> - 3 - - 11 20 4 4 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 9 9 4 4 - <_> - 2 - - 7 14 6 1 - <_> - 2 - - 1 10 12 6 - <_> - 7 - - 8 17 1 5 - <_> - 5 - - 0 21 5 3 - <_> - 8 - - 5 6 3 1 - <_> - 9 - - 4 8 7 17 - <_> - 8 - - 2 3 2 5 - <_> - 5 - - 0 30 8 1 - <_> - 4 - - 2 12 8 10 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 7 30 1 1 - <_> - 5 - - 11 9 1 6 - <_> - 5 - - 3 26 9 1 - <_> - 1 - - 3 10 10 1 - <_> - 0 - - 2 3 3 14 - <_> - 8 - - 7 11 5 3 - <_> - 7 - - 1 30 4 1 - <_> - 3 - - 11 19 2 6 - <_> - 3 - - 4 29 4 2 - <_> - 0 - - 5 24 4 3 - <_> - 2 - - 2 10 1 14 - <_> - 2 - - 14 1 1 11 - <_> - 5 - - 7 2 4 6 - <_> - 7 - - 6 3 4 1 - <_> - 3 - - 1 0 13 1 - <_> - 7 - - 6 5 9 3 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 9 23 1 8 - <_> - 9 - - 7 12 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 1 - - 3 29 4 1 - <_> - 0 - - 14 19 1 10 - <_> - 4 - - 14 1 1 26 - <_> - 2 - - 0 28 14 2 - <_> - 2 - - 4 20 9 7 - <_> - 5 - - 7 16 2 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 5 7 10 2 - <_> - 8 - - 6 0 3 3 - <_> - 9 - - 1 0 14 3 - <_> - 5 - - 4 3 6 1 - <_> - 9 - - 1 7 8 19 - <_> - 1 - - 4 28 7 1 - <_> - 9 - - 7 8 1 3 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 1 29 7 2 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 4 11 3 1 - <_> - 3 - - 0 7 9 15 - <_> - 0 - - 4 8 2 1 - <_> - 3 - - 12 25 2 1 - <_> - 2 - - 9 30 6 1 - <_> - 3 - - 1 25 12 2 - <_> - 3 - - 6 22 4 6 - <_> - 3 - - 11 24 1 1 - <_> - 0 - - 5 17 7 3 - <_> - 1 - - 2 27 5 1 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 3 28 5 1 - <_> - 1 - - 4 20 3 1 - <_> - 2 - - 3 5 6 24 - <_> - 7 - - 8 0 1 31 - <_> - 4 - - 7 2 2 15 - <_> - 2 - - 6 13 3 2 - <_> - 3 - - 4 19 4 6 - <_> - 9 - - 14 13 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 0 27 1 2 - <_> - 4 - - 3 12 9 15 - <_> - 9 - - 7 15 1 2 - <_> - 5 - - 9 7 4 10 - <_> - 5 - - 11 16 1 7 - <_> - 0 - - 3 28 6 1 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 13 17 1 5 - <_> - 4 - - 1 9 11 1 - <_> - 4 - - 6 4 9 5 - <_> - 2 - - 2 1 5 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 5 14 7 6 - <_> - 4 - - 6 29 8 2 - <_> - 1 - - 7 28 4 1 - <_> - 9 - - 6 23 3 7 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 20 1 7 - <_> - 8 - - 7 5 1 10 - <_> - 0 - - 5 3 6 6 - <_> - 8 - - 13 18 1 1 - <_> - 2 - - 4 23 5 4 - <_> - 5 - - 1 29 12 1 - <_> - 4 - - 6 22 2 4 - <_> - 1 - - 9 21 5 5 - <_> - 7 - - 10 28 2 2 - <_> - 1 - - 12 22 1 9 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 1 13 1 7 - <_> - 3 - - 0 27 1 3 - <_> - 3 - - 3 4 6 16 - <_> - 4 - - 2 28 9 1 - <_> - 0 - - 7 10 3 2 - <_> - 7 - - 12 6 2 1 - <_> - 1 - - 8 4 3 6 - <_> - 5 - - 7 20 8 5 - <_> - 7 - - 2 21 4 2 - <_> - 5 - - 11 29 4 2 - <_> - 5 - - 2 5 11 20 - <_> - 3 - - 10 18 1 3 - <_> - 4 - - 4 4 5 4 - <_> - 1 - - 6 10 6 3 - <_> - 3 - - 4 16 8 6 - <_> - 8 - - 11 20 2 9 - <_> - 1 - - 3 27 8 3 - <_> - 7 - - 7 19 3 5 - <_> - 2 - - 0 23 6 1 - <_> - 7 - - 14 23 1 6 - <_> - 1 - - 5 20 6 4 - <_> - 3 - - 5 8 1 18 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 8 8 4 - <_> - 1 - - 1 20 7 1 - <_> - 2 - - 13 2 2 22 - <_> - 2 - - 9 5 5 8 - <_> - 5 - - 7 17 2 1 - <_> - 3 - - 10 23 1 4 - <_> - 5 - - 7 23 7 5 - <_> - 5 - - 14 24 1 2 - <_> - 0 - - 5 6 7 2 - <_> - 3 - - 9 20 6 10 - <_> - 4 - - 0 30 13 1 - <_> - 2 - - 2 23 10 5 - <_> - 2 - - 4 8 4 3 - <_> - 7 - - 4 29 10 2 - <_> - 9 - - 7 17 2 1 - <_> - 7 - - 2 16 9 2 - <_> - 3 - - 0 20 4 10 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 2 3 2 - <_> - 4 - - 6 2 5 6 - <_> - 7 - - 7 5 2 1 - <_> - 0 - - 7 12 5 16 - <_> - 5 - - 5 2 7 21 - <_> - 3 - - 3 0 6 13 - <_> - 0 - - 4 7 2 2 - <_> - 0 - - 7 10 2 4 - <_> - 1 - - 4 27 2 1 - <_> - 9 - - 4 24 1 1 - <_> - 4 - - 1 3 1 16 - <_> - 2 - - 8 28 1 3 - <_> - 1 - - 8 12 2 14 - <_> - 0 - - 8 3 1 25 - <_> - 3 - - 3 9 2 14 - <_> - 0 - - 7 7 1 12 - <_> - 0 - - 0 2 7 25 - <_> - 4 - - 7 11 1 8 - <_> - 5 - - 7 29 8 1 - <_> - 4 - - 13 16 1 3 - <_> - 4 - - 7 7 4 5 - <_> - 3 - - 2 1 10 3 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 5 18 6 10 - <_> - 2 - - 13 13 2 13 - <_> - 2 - - 6 16 3 1 - <_> - 4 - - 1 9 12 22 - <_> - 5 - - 1 10 11 6 - <_> - 1 - - 2 23 3 2 - <_> - 5 - - 4 28 5 3 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 7 28 4 1 - <_> - 7 - - 5 11 1 1 - <_> - 3 - - 2 5 6 9 - <_> - 2 - - 7 23 3 6 - <_> - 8 - - 6 6 2 2 - <_> - 5 - - 6 6 2 4 - <_> - 8 - - 4 3 3 1 - <_> - 0 - - 2 28 13 1 - <_> - 7 - - 9 25 5 3 - <_> - 1 - - 11 23 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 5 19 6 3 - <_> - 1 - - 1 10 14 2 - <_> - 1 - - 5 7 6 1 - <_> - 3 - - 1 24 9 2 - <_> - 9 - - 8 11 1 9 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 8 23 7 1 - <_> - 2 - - 2 5 9 4 - <_> - 7 - - 8 21 3 1 - <_> - 2 - - 5 3 6 2 - <_> - 5 - - 9 11 5 4 - <_> - 2 - - 10 5 2 10 - <_> - 7 - - 4 27 6 4 - <_> - 1 - - 5 11 6 17 - <_> - 0 - - 9 29 2 1 - <_> - 4 - - 0 28 6 3 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 6 14 2 1 - <_> - 4 - - 10 15 4 1 - <_> - 9 - - 5 9 1 2 - <_> - 4 - - 5 2 3 5 - <_> - 8 - - 7 6 1 2 - <_> - 8 - - 9 30 6 1 - <_> - 8 - - 9 10 3 9 - <_> - 9 - - 10 29 5 1 - <_> - 3 - - 0 1 9 23 - <_> - 3 - - 3 9 3 8 - <_> - 5 - - 4 20 2 2 - <_> - 1 - - 7 28 3 1 - <_> - 2 - - 6 5 3 2 - <_> - 1 - - 6 21 3 5 - <_> - 3 - - 10 18 1 8 - <_> - 3 - - 4 19 6 8 - <_> - 1 - - 8 1 1 18 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 1 11 3 3 - <_> - 1 - - 6 2 2 1 - <_> - 0 - - 5 25 7 3 - <_> - 4 - - 12 5 2 1 - <_> - 3 - - 13 23 2 8 - <_> - 0 - - 5 5 6 3 - <_> - 9 - - 3 15 10 7 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 10 30 1 1 - <_> - 2 - - 10 29 3 2 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 5 4 7 3 - <_> - 3 - - 6 22 7 2 - <_> - 3 - - 5 3 1 28 - <_> - 5 - - 1 26 10 5 - <_> - 4 - - 7 20 3 4 - <_> - 2 - - 6 19 4 2 - <_> - 2 - - 5 19 4 11 - <_> - 3 - - 1 28 11 2 - <_> - 2 - - 2 20 2 4 - <_> - 3 - - 6 5 9 3 - <_> - 4 - - 9 7 4 24 - <_> - 3 - - 6 0 5 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 2 3 4 28 - <_> - 3 - - 2 0 9 2 - <_> - 4 - - 2 28 12 3 - <_> - 1 - - 11 22 3 8 - <_> - 9 - - 5 8 1 6 - <_> - 0 - - 4 8 2 2 - <_> - 7 - - 7 12 2 3 - <_> - 9 - - 7 14 4 15 - <_> - 1 - - 4 26 6 3 - <_> - 9 - - 5 9 5 2 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 0 28 9 1 - <_> - 2 - - 5 17 4 14 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 4 20 7 1 - <_> - 0 - - 10 14 3 9 - <_> - 9 - - 7 1 1 2 - <_> - 0 - - 13 15 1 8 - <_> - 0 - - 5 2 3 6 - <_> - 9 - - 8 13 2 5 - <_> - 1 - - 1 7 8 1 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 3 3 15 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 8 4 5 - <_> - 8 - - 7 9 2 1 - <_> - 4 - - 3 8 9 13 - <_> - 2 - - 7 30 8 1 - <_> - 2 - - 10 9 4 3 - <_> - 2 - - 4 18 10 10 - <_> - 4 - - 0 29 15 1 - <_> - 5 - - 13 16 1 14 - <_> - 1 - - 6 27 5 2 - <_> - 5 - - 0 15 3 16 - <_> - 4 - - 9 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 5 - - 2 13 1 9 - <_> - 3 - - 7 14 2 2 - <_> - 3 - - 1 10 14 4 - <_> - 0 - - 11 9 4 11 - <_> - 3 - - 0 21 15 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 3 - - 1 29 13 2 - <_> - 4 - - 9 9 6 3 - <_> - 1 - - 4 15 8 4 - <_> - 4 - - 7 18 2 2 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 1 11 6 15 - <_> - 1 - - 7 7 4 3 - <_> - 5 - - 8 4 4 20 - <_> - 1 - - 7 9 5 1 - <_> - 5 - - 13 8 1 22 - <_> - 1 - - 14 5 1 9 - <_> - 2 - - 9 21 4 10 - <_> - 8 - - 11 2 1 4 - <_> - 0 - - 7 20 1 4 - <_> - 5 - - 1 29 7 2 - <_> - 5 - - 7 16 1 3 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 7 10 7 1 - <_> - 9 - - 13 5 1 2 - <_> - 1 - - 6 26 5 4 - <_> - 2 - - 14 6 1 24 - <_> - 1 - - 13 29 2 2 - <_> - 9 - - 5 21 3 1 - <_> - 9 - - 5 4 6 4 - <_> - 2 - - 8 4 4 23 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 10 5 2 25 - <_> - 5 - - 14 24 1 6 - <_> - 4 - - 8 9 4 18 - <_> - 0 - - 8 9 1 1 - <_> - 2 - - 11 9 1 6 - <_> - 0 - - 3 15 9 15 - <_> - 0 - - 0 13 1 14 - <_> - 3 - - 5 30 2 1 - <_> - 9 - - 7 17 2 1 - <_> - 2 - - 5 4 6 6 - <_> - 5 - - 10 17 4 9 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 4 30 2 1 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 10 10 1 4 - <_> - 2 - - 7 0 7 10 - <_> - 4 - - 3 6 10 17 - <_> - 3 - - 3 7 5 7 - <_> - 7 - - 11 27 3 2 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 7 0 3 8 - <_> - 1 - - 0 8 13 1 - <_> - 1 - - 9 23 1 1 - <_> - 3 - - 7 5 2 13 - <_> - 5 - - 2 10 2 6 - <_> - 5 - - 5 23 9 2 - <_> - 0 - - 7 9 1 19 - <_> - 8 - - 3 29 9 2 - <_> - 2 - - 8 30 5 1 - <_> - 7 - - 4 3 4 8 - <_> - 1 - - 3 27 8 3 - <_> - 2 - - 5 26 8 2 - <_> - 0 - - 0 15 1 13 - <_> - 4 - - 7 30 8 1 - <_> - 4 - - 5 4 7 3 - <_> - 7 - - 2 4 4 1 - <_> - 5 - - 8 4 5 9 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 3 28 3 2 - <_> - 5 - - 0 10 7 2 - <_> - 9 - - 10 9 1 2 - <_> - 9 - - 4 0 3 4 - <_> - 5 - - 13 21 2 5 - <_> - 0 - - 11 2 1 12 - <_> - 1 - - 11 21 3 10 - <_> - 4 - - 9 17 1 4 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 6 4 2 24 - <_> - 9 - - 12 28 1 1 - <_> - 3 - - 14 21 1 9 - <_> - 7 - - 13 0 1 26 - <_> - 0 - - 9 24 3 2 - <_> - 0 - - 7 19 4 9 - <_> - 2 - - 13 1 1 30 - <_> - 3 - - 9 16 2 15 - <_> - 5 - - 10 11 4 15 - <_> - 1 - - 9 15 6 13 - <_> - 3 - - 1 5 6 19 - <_> - 5 - - 4 19 1 10 - <_> - 5 - - 3 25 11 2 - <_> - 7 - - 5 29 6 1 - <_> - 3 - - 11 23 1 2 - <_> - 0 - - 0 3 8 10 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 8 11 2 1 - <_> - 1 - - 9 4 6 10 - <_> - 4 - - 1 2 14 10 - <_> - 4 - - 5 25 6 3 - <_> - 1 - - 5 18 4 2 - <_> - 4 - - 3 24 6 6 - <_> - 2 - - 3 1 7 27 - <_> - 1 - - 1 8 11 22 - <_> - 3 - - 9 0 4 2 - <_> - 2 - - 3 29 6 1 - <_> - 3 - - 2 24 12 4 - <_> - 4 - - 1 10 5 16 - <_> - 1 - - 5 27 6 4 - <_> - 9 - - 7 9 2 3 - <_> - 5 - - 3 7 7 13 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 6 2 5 - <_> - 9 - - 6 10 2 3 - <_> - 1 - - 8 4 2 5 - <_> - 7 - - 7 13 2 6 - <_> - 8 - - 10 26 3 2 - <_> - 4 - - 8 23 1 1 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 6 18 2 5 - <_> - 7 - - 3 19 1 12 - <_> - 4 - - 0 29 9 2 - <_> - 4 - - 2 15 6 13 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 0 6 7 - <_> - 8 - - 7 11 5 3 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 6 10 2 1 - <_> - 5 - - 10 4 4 4 - <_> - 4 - - 7 7 4 5 - <_> - 1 - - 2 24 3 1 - <_> - 4 - - 10 9 5 10 - <_> - 5 - - 2 21 1 10 - <_> - 3 - - 4 9 2 19 - <_> - 0 - - 0 2 1 28 - <_> - 2 - - 7 20 4 8 - <_> - 0 - - 7 10 3 1 - <_> - 5 - - 8 28 5 1 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 10 8 1 5 - <_> - 8 - - 8 3 1 1 - <_> - 7 - - 7 5 1 3 - <_> - 7 - - 0 27 15 1 - <_> - 3 - - 3 5 11 9 - <_> - 0 - - 13 15 2 1 - <_> - 0 - - 8 13 6 4 - <_> - 1 - - 9 28 1 1 - <_> - 9 - - 7 12 5 6 - <_> - 9 - - 6 2 1 5 - <_> - 7 - - 2 7 11 7 - <_> - 0 - - 1 17 1 14 - <_> - 0 - - 5 4 1 15 - <_> - 4 - - 1 29 12 1 - <_> - 2 - - 4 23 6 5 - <_> - 4 - - 3 8 1 17 - <_> - 2 - - 7 15 2 1 - <_> - 1 - - 3 28 7 1 - <_> - 8 - - 7 6 1 2 - <_> - 5 - - 9 1 1 12 - <_> - 1 - - 5 1 6 30 - <_> - 3 - - 5 1 1 30 - <_> - 3 - - 11 24 4 3 - <_> - 1 - - 4 10 7 4 - <_> - 4 - - 7 0 1 22 - <_> - 7 - - 4 27 11 2 - <_> - 2 - - 8 30 6 1 - <_> - 4 - - 3 20 10 5 - <_> - 0 - - 10 13 5 5 - <_> - 9 - - 7 7 1 8 - <_> - 7 - - 7 15 3 1 - <_> - 8 - - 1 10 14 3 - <_> - 1 - - 4 6 4 4 - <_> - 4 - - 1 6 6 3 - <_> - 0 - - 3 28 4 1 - <_> - 1 - - 5 27 4 2 - <_> - 5 - - 13 19 1 9 - <_> - 4 - - 1 9 14 2 - <_> - 2 - - 5 18 5 10 - <_> - 5 - - 14 0 1 7 - <_> - 4 - - 3 3 4 14 - <_> - 3 - - 4 29 5 2 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 3 8 9 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 7 16 5 1 - <_> - 4 - - 12 27 2 4 - <_> - 2 - - 1 26 10 2 - <_> - 4 - - 7 12 2 11 - <_> - 0 - - 7 10 1 1 - <_> - 5 - - 9 9 5 4 - <_> - 8 - - 14 20 1 1 - <_> - 3 - - 1 22 2 7 - <_> - 3 - - 3 9 4 6 - <_> - 4 - - 6 22 4 4 - <_> - 5 - - 11 30 3 1 - <_> - 3 - - 4 22 3 4 - <_> - 5 - - 2 26 11 1 - <_> - 3 - - 6 15 3 1 - <_> - 0 - - 5 5 5 1 - <_> - 0 - - 6 12 4 15 - <_> - 2 - - 3 3 3 1 - <_> - 4 - - 2 9 10 20 - <_> - 4 - - 2 4 9 3 - <_> - 7 - - 8 20 1 4 - <_> - 7 - - 13 22 2 6 - <_> - 2 - - 6 1 4 27 - <_> - 3 - - 1 28 9 1 - <_> - 1 - - 3 11 9 7 - <_> - 8 - - 0 18 4 3 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 13 7 1 1 - <_> - 4 - - 6 2 3 17 - <_> - 9 - - 7 7 1 15 - <_> - 0 - - 6 22 6 6 - <_> - 9 - - 12 17 1 2 - <_> - 5 - - 14 24 1 2 - <_> - 7 - - 1 30 3 1 - <_> - 5 - - 8 10 2 5 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 9 14 2 5 - <_> - 8 - - 7 0 1 3 - <_> - 2 - - 10 5 2 10 - <_> - 5 - - 10 10 4 5 - <_> - 0 - - 6 0 7 8 - <_> - 1 - - 6 12 3 1 - <_> - 7 - - 2 11 6 10 - <_> - 4 - - 9 10 6 2 - <_> - 7 - - 1 30 3 1 - <_> - 3 - - 14 22 1 8 - <_> - 2 - - 6 2 3 7 - <_> - 2 - - 0 28 15 2 - <_> - 0 - - 6 16 7 11 - <_> - 1 - - 8 20 7 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 0 12 3 3 - <_> - 1 - - 7 4 2 4 - <_> - 8 - - 8 5 4 2 - <_> - 2 - - 5 1 2 4 - <_> - 8 - - 10 7 4 1 - <_> - 1 - - 3 26 8 5 - <_> - 7 - - 8 20 1 2 - <_> - 4 - - 1 0 10 23 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 0 23 4 6 - <_> - 5 - - 7 21 6 7 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 4 27 10 1 - <_> - 9 - - 6 9 4 4 - <_> - 8 - - 6 1 4 10 - <_> - 9 - - 14 19 1 1 - <_> - 9 - - 6 3 4 19 - <_> - 0 - - 8 9 1 1 - <_> - 3 - - 5 6 4 4 - <_> - 9 - - 8 15 1 3 - <_> - 0 - - 4 27 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 1 - - 8 10 2 4 - <_> - 0 - - 3 9 3 1 - <_> - 7 - - 6 12 3 2 - <_> - 0 - - 0 15 4 13 - <_> - 2 - - 8 30 6 1 - <_> - 2 - - 8 20 3 11 - <_> - 0 - - 7 20 4 1 - <_> - 3 - - 2 0 9 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 6 10 4 4 - <_> - 4 - - 6 17 4 7 - <_> - 4 - - 8 6 3 17 - <_> - 1 - - 6 18 5 7 - <_> - 1 - - 5 28 6 1 - <_> - 7 - - 10 0 5 1 - <_> - 1 - - 13 6 2 8 - <_> - 4 - - 11 23 4 6 - <_> - 3 - - 5 12 2 15 - <_> - 3 - - 12 23 3 7 - <_> - 0 - - 7 10 3 1 - <_> - 0 - - 2 13 5 5 - <_> - 9 - - 0 0 4 1 - <_> - 2 - - 5 1 2 4 - <_> - 3 - - 9 20 3 2 - <_> - 4 - - 1 29 7 2 - <_> - 5 - - 2 3 9 11 - <_> - 3 - - 0 26 4 5 - <_> - 2 - - 0 11 1 5 - <_> - 0 - - 5 26 5 2 - <_> - 1 - - 8 12 1 3 - <_> - 0 - - 1 28 8 3 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 6 14 3 5 - <_> - 8 - - 13 7 2 21 - <_> - 2 - - 5 15 4 11 - <_> - 0 - - 9 26 6 2 - <_> - 5 - - 5 17 4 5 - <_> - 2 - - 10 0 3 22 - <_> - 7 - - 3 22 7 1 - <_> - 2 - - 8 2 7 7 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 8 5 1 1 - <_> - 3 - - 3 2 2 6 - <_> - 8 - - 5 6 3 1 - <_> - 0 - - 6 18 5 4 - <_> - 5 - - 9 29 6 2 - <_> - 4 - - 11 15 2 5 - <_> - 1 - - 8 27 2 1 - <_> - 4 - - 5 19 1 1 - <_> - 1 - - 7 9 5 1 - <_> - 4 - - 7 8 4 1 - <_> - 7 - - 4 28 5 1 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 15 2 14 - <_> - 5 - - 2 27 1 3 - <_> - 9 - - 7 15 1 2 - <_> - 9 - - 1 1 14 7 - <_> - 3 - - 12 19 3 9 - <_> - 5 - - 3 26 7 2 - <_> - 2 - - 1 0 4 11 - <_> - 1 - - 5 12 7 10 - <_> - 3 - - 1 6 8 4 - <_> - 2 - - 11 9 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 2 9 2 1 - <_> - 8 - - 5 10 5 6 - <_> - 8 - - 5 9 3 3 - <_> - 3 - - 2 28 8 3 - <_> - 7 - - 3 27 10 1 - <_> - 2 - - 4 29 6 1 - <_> - 5 - - 0 19 2 7 - <_> - 5 - - 10 8 2 17 - <_> - 2 - - 13 25 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 8 5 3 8 - <_> - 3 - - 5 21 4 7 - <_> - 4 - - 7 17 4 2 - <_> - 5 - - 7 30 4 1 - <_> - 8 - - 3 24 8 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 0 13 8 18 - <_> - 5 - - 8 5 5 10 - <_> - 1 - - 6 9 7 6 - <_> - 4 - - 7 0 2 20 - <_> - 2 - - 8 16 1 1 - <_> - 2 - - 5 16 4 11 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 8 28 4 1 - <_> - 3 - - 7 26 7 1 - <_> - 2 - - 6 9 4 2 - <_> - 7 - - 8 5 4 3 - <_> - 7 - - 13 19 2 9 - <_> - 0 - - 1 9 3 5 - <_> - 3 - - 3 11 5 14 - <_> - 1 - - 3 17 7 9 - <_> - 3 - - 0 21 2 8 - <_> - 2 - - 8 26 4 1 - <_> - 0 - - 13 15 1 14 - <_> - 7 - - 7 27 7 1 - <_> - 4 - - 3 26 6 2 - <_> - 2 - - 3 29 6 1 - <_> - 4 - - 8 18 1 2 - <_> - 1 - - 7 3 5 5 - <_> - 4 - - 6 3 3 2 - <_> - 4 - - 0 27 5 4 - <_> - 5 - - 6 28 4 1 - <_> - 7 - - 5 7 10 2 - <_> - 1 - - 9 27 1 2 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 11 11 1 1 - <_> - 4 - - 6 7 1 16 - <_> - 7 - - 6 9 3 1 - <_> - 5 - - 4 28 11 3 - <_> - 7 - - 7 5 6 3 - <_> - 2 - - 0 25 10 2 - <_> - 4 - - 12 4 2 17 - <_> - 9 - - 6 19 5 2 - <_> - 8 - - 6 6 2 2 - <_> - 4 - - 6 21 3 2 - <_> - 2 - - 5 5 10 2 - <_> - 5 - - 2 0 7 2 - <_> - 5 - - 9 4 4 9 - <_> - 2 - - 6 10 4 4 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 6 4 3 - <_> - 2 - - 2 18 9 11 - <_> - 4 - - 3 9 12 2 - <_> - 4 - - 3 11 4 9 - <_> - 0 - - 6 13 3 4 - <_> - 1 - - 5 27 10 1 - <_> - 2 - - 8 28 5 1 - <_> - 8 - - 1 11 6 1 - <_> - 9 - - 7 9 2 7 - <_> - 8 - - 0 17 14 7 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 5 3 1 20 - <_> - 0 - - 4 6 1 19 - <_> - 4 - - 6 23 4 6 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 3 29 3 2 - <_> - 1 - - 8 4 5 20 - <_> - 1 - - 5 28 7 1 - <_> - 8 - - 0 3 4 23 - <_> - 4 - - 5 28 7 3 - <_> - 2 - - 5 25 5 2 - <_> - 5 - - 2 3 1 6 - <_> - 3 - - 9 8 2 1 - <_> - 3 - - 4 12 2 8 - <_> - 2 - - 14 12 1 15 - <_> - 5 - - 10 10 5 9 - <_> - 5 - - 10 3 4 6 - <_> - 4 - - 3 9 3 9 - <_> - 1 - - 7 6 2 10 - <_> - 4 - - 4 6 9 6 - <_> - 3 - - 4 18 11 11 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 10 8 3 4 - <_> - 7 - - 1 30 3 1 - <_> - 2 - - 12 12 2 19 - <_> - 5 - - 3 19 9 3 - <_> - 0 - - 4 9 1 6 - <_> - 5 - - 5 21 1 4 - <_> - 3 - - 2 12 9 9 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 10 26 1 3 - <_> - 0 - - 6 15 2 3 - <_> - 1 - - 11 22 2 8 - <_> - 9 - - 2 22 1 2 - <_> - 5 - - 12 30 3 1 - <_> - 2 - - 6 0 7 16 - <_> - 3 - - 8 21 2 1 - <_> - 7 - - 5 10 1 4 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 4 6 7 3 - <_> - 5 - - 5 1 1 2 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 7 18 4 2 - <_> - 9 - - 8 15 1 2 - <_> - 2 - - 4 20 9 4 - <_> - 8 - - 5 5 6 6 - <_> - 3 - - 4 28 7 2 - <_> - 5 - - 1 20 1 6 - <_> - 2 - - 2 26 7 1 - <_> - 0 - - 5 15 7 13 - <_> - 2 - - 9 3 4 1 - <_> - 9 - - 5 3 7 4 - <_> - 2 - - 1 23 7 6 - <_> - 4 - - 5 2 7 8 - <_> - 4 - - 10 14 4 2 - <_> - 3 - - 6 3 5 4 - <_> - 9 - - 13 30 2 1 - <_> - 3 - - 7 12 2 5 - <_> - 1 - - 6 26 5 4 - <_> - 7 - - 7 19 2 4 - <_> - 1 - - 6 29 5 2 - <_> - 5 - - 3 10 11 5 - <_> - 9 - - 9 21 3 10 - <_> - 2 - - 12 28 3 2 - <_> - 4 - - 3 0 5 18 - <_> - 5 - - 6 0 7 4 - <_> - 5 - - 0 29 14 2 - <_> - 5 - - 1 4 6 10 - <_> - 4 - - 8 22 1 4 - <_> - 3 - - 8 9 7 12 - <_> - 9 - - 6 16 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 0 14 3 15 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 1 29 13 2 - <_> - 3 - - 0 3 4 23 - <_> - 7 - - 2 5 8 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 22 2 5 - <_> - 3 - - 1 3 11 12 - <_> - 5 - - 0 15 15 9 - <_> - 9 - - 14 1 1 4 - <_> - 0 - - 7 10 3 1 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 0 29 10 1 - <_> - 0 - - 8 26 7 3 - <_> - 0 - - 6 24 4 4 - <_> - 1 - - 0 23 15 2 - <_> - 3 - - 2 0 9 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 6 20 9 2 - <_> - 5 - - 7 23 7 5 - <_> - 7 - - 6 0 5 1 - <_> - 5 - - 2 30 6 1 - <_> - 3 - - 5 5 1 14 - <_> - 4 - - 2 8 1 11 - <_> - 0 - - 1 2 7 20 - <_> - 4 - - 3 6 2 8 - <_> - 5 - - 4 16 5 7 - <_> - 0 - - 6 18 6 10 - <_> - 3 - - 9 20 2 9 - <_> - 0 - - 8 27 7 2 - <_> - 4 - - 9 20 4 1 - <_> - 2 - - 5 14 6 15 - <_> - 7 - - 3 4 10 10 - <_> - 5 - - 1 18 14 13 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 7 14 6 3 - <_> - 9 - - 6 11 3 4 - <_> - 0 - - 2 27 1 3 - <_> - 5 - - 9 4 1 11 - <_> - 2 - - 3 25 8 2 - <_> - 4 - - 4 12 6 13 - <_> - 1 - - 7 23 2 6 - <_> - 1 - - 5 15 6 2 - <_> - 2 - - 10 19 1 10 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 9 5 4 13 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 4 28 8 2 - <_> - 0 - - 7 11 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 7 1 3 2 - <_> - 8 - - 10 4 1 4 - <_> - 3 - - 5 27 10 3 - <_> - 7 - - 2 28 9 1 - <_> - 2 - - 7 17 3 5 - <_> - 4 - - 0 30 5 1 - <_> - 2 - - 8 11 1 7 - <_> - 9 - - 6 16 1 3 - <_> - 9 - - 2 0 11 1 - <_> - 0 - - 6 3 5 1 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 7 29 1 2 - <_> - 5 - - 2 18 11 3 - <_> - 2 - - 3 8 3 1 - <_> - 3 - - 5 0 1 27 - <_> - 7 - - 12 11 2 1 - <_> - 5 - - 1 28 9 3 - <_> - 0 - - 6 19 2 12 - <_> - 2 - - 8 28 5 1 - <_> - 3 - - 0 5 3 23 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 17 8 2 - <_> - 4 - - 6 29 5 2 - <_> - 0 - - 4 7 2 4 - <_> - 9 - - 7 1 1 2 - <_> - 2 - - 10 0 1 19 - <_> - 9 - - 8 15 1 7 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 3 2 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 1 4 - <_> - 8 - - 1 10 1 6 - <_> - 1 - - 6 12 3 1 - <_> - 1 - - 3 3 7 3 - <_> - 8 - - 7 28 3 3 - <_> - 4 - - 9 18 2 4 - <_> - 1 - - 9 18 4 11 - <_> - 4 - - 6 21 4 1 - <_> - 5 - - 9 9 4 20 - <_> - 2 - - 13 21 2 5 - <_> - 0 - - 13 21 2 1 - <_> - 5 - - 6 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 1 - - 4 3 2 19 - <_> - 9 - - 9 12 1 2 - <_> - 8 - - 6 6 2 2 - <_> - 3 - - 11 20 1 10 - <_> - 4 - - 6 4 5 3 - <_> - 7 - - 6 3 9 2 - <_> - 3 - - 3 1 6 14 - <_> - 4 - - 2 9 12 12 - <_> - 4 - - 7 10 2 10 - <_> - 7 - - 6 27 8 2 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 7 10 7 7 - <_> - 2 - - 5 30 10 1 - <_> - 5 - - 9 25 2 3 - <_> - 9 - - 3 28 12 1 - <_> - 2 - - 10 25 1 4 - <_> - 1 - - 5 20 2 1 - <_> - 5 - - 9 6 6 7 - <_> - 0 - - 11 10 1 12 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 3 10 5 4 - <_> - 3 - - 0 0 9 4 - <_> - 8 - - 2 21 5 1 - <_> - 8 - - 6 5 4 2 - <_> - 1 - - 7 28 4 1 - <_> - 4 - - 7 23 1 2 - <_> - 1 - - 7 24 2 4 - <_> - 2 - - 6 13 6 18 - <_> - 0 - - 5 28 8 1 - <_> - 0 - - 11 20 1 2 - <_> - 0 - - 7 8 2 3 - <_> - 2 - - 6 6 4 3 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 8 4 2 5 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 0 24 11 3 - <_> - 4 - - 3 28 7 2 - <_> - 2 - - 11 11 2 3 - <_> - 0 - - 9 3 3 2 - <_> - 5 - - 6 10 4 10 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 4 5 20 - <_> - 0 - - 6 24 7 3 - <_> - 8 - - 8 18 1 1 - <_> - 1 - - 2 2 5 14 - <_> - 0 - - 4 25 1 3 - <_> - 5 - - 8 3 4 11 - <_> - 7 - - 11 13 1 3 - <_> - 5 - - 3 0 12 1 - <_> - 4 - - 11 13 3 7 - <_> - 5 - - 4 28 10 2 - <_> - 2 - - 11 19 1 12 - <_> - 0 - - 5 20 1 3 - <_> - 5 - - 10 8 3 19 - <_> - 3 - - 0 26 6 1 - <_> - 2 - - 0 12 2 4 - <_> - 4 - - 7 8 5 6 - <_> - 5 - - 6 8 4 6 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 8 9 1 2 - <_> - 3 - - 4 11 11 5 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 0 14 2 15 - <_> - 0 - - 4 5 10 2 - <_> - 5 - - 7 12 1 3 - <_> - 3 - - 4 1 2 25 - <_> - 8 - - 12 18 2 2 - <_> - 3 - - 0 27 3 3 - <_> - 2 - - 6 17 3 11 - <_> - 1 - - 7 28 3 1 - <_> - 4 - - 5 18 5 2 - <_> - 0 - - 8 16 3 6 - <_> - 2 - - 7 23 2 2 - <_> - 0 - - 9 8 3 5 - <_> - 0 - - 7 19 6 4 - <_> - 0 - - 3 12 12 3 - <_> - 3 - - 8 18 1 1 - <_> - 1 - - 2 6 9 3 - <_> - 2 - - 7 2 5 2 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 0 11 14 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 27 5 1 - <_> - 0 - - 5 2 3 6 - <_> - 7 - - 0 19 7 2 - <_> - 2 - - 5 1 1 4 - <_> - 2 - - 3 22 1 2 - <_> - 5 - - 8 9 4 4 - <_> - 7 - - 4 30 3 1 - <_> - 4 - - 4 9 9 3 - <_> - 2 - - 7 11 2 3 - <_> - 0 - - 10 24 1 1 - <_> - 7 - - 1 27 4 2 - <_> - 1 - - 14 8 1 5 - <_> - 0 - - 12 22 3 7 - <_> - 4 - - 7 0 2 18 - <_> - 7 - - 8 20 1 2 - <_> - 8 - - 8 4 2 26 - <_> - 9 - - 8 15 1 3 - <_> - 1 - - 0 5 15 19 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 8 - - 14 12 1 4 - <_> - 2 - - 1 6 10 1 - <_> - 0 - - 11 25 1 3 - <_> - 1 - - 6 19 4 8 - <_> - 7 - - 1 14 8 4 - <_> - 3 - - 0 25 11 2 - <_> - 9 - - 2 29 13 1 - <_> - 0 - - 3 27 1 4 - <_> - 1 - - 7 27 4 4 - <_> - 4 - - 5 4 7 3 - <_> - 0 - - 7 11 2 3 - <_> - 0 - - 8 17 4 4 - <_> - 2 - - 13 8 1 14 - <_> - 3 - - 13 26 2 4 - <_> - 0 - - 3 2 6 6 - <_> - 2 - - 5 5 7 16 - <_> - 2 - - 2 8 4 1 - <_> - 3 - - 4 0 1 14 - <_> - 9 - - 6 0 6 2 - <_> - 9 - - 5 14 2 4 - <_> - 1 - - 1 3 13 1 - <_> - 8 - - 6 6 2 2 - <_> - 8 - - 4 26 8 2 - <_> - 3 - - 8 17 4 1 - <_> - 4 - - 2 2 11 2 - <_> - 0 - - 6 16 6 10 - <_> - 9 - - 0 22 1 1 - <_> - 0 - - 4 29 3 2 - <_> - 4 - - 9 22 6 8 - <_> - 1 - - 8 26 4 3 - <_> - 3 - - 5 1 7 11 - <_> - 4 - - 7 29 3 1 - <_> - 4 - - 3 12 9 15 - <_> - 7 - - 0 28 14 3 - <_> - 2 - - 8 8 4 1 - <_> - 7 - - 6 9 3 1 - <_> - 7 - - 8 30 1 1 - <_> - 5 - - 4 30 11 1 - <_> - 5 - - 3 5 12 16 - <_> - 5 - - 12 13 1 6 - <_> - 0 - - 7 10 3 2 - <_> - 0 - - 3 0 4 14 - <_> - 2 - - 4 5 3 4 - <_> - 2 - - 5 19 4 1 - <_> - 1 - - 6 10 3 2 - <_> - 5 - - 1 1 12 1 - <_> - 9 - - 10 19 2 4 - <_> - 9 - - 1 0 13 27 - <_> - 8 - - 8 3 1 5 - <_> - 1 - - 7 28 3 1 - <_> - 9 - - 8 9 2 5 - <_> - 1 - - 5 4 6 9 - <_> - 7 - - 6 3 4 1 - <_> - 7 - - 14 24 1 5 - <_> - 3 - - 2 17 1 12 - <_> - 0 - - 4 14 7 16 - <_> - 1 - - 6 2 1 25 - <_> - 0 - - 0 13 4 16 - <_> - 4 - - 12 8 3 4 - <_> - 0 - - 0 18 13 4 - <_> - 8 - - 2 30 1 1 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 10 28 1 2 - <_> - 8 - - 11 1 3 10 - <_> - 4 - - 1 30 4 1 - <_> - 1 - - 2 22 5 8 - <_> - 9 - - 4 25 6 6 - <_> - 0 - - 4 6 1 6 - <_> - 5 - - 12 30 3 1 - <_> - 3 - - 7 10 1 1 - <_> - 2 - - 4 26 7 2 - <_> - 1 - - 5 1 4 3 - <_> - 4 - - 9 20 1 4 - <_> - 3 - - 2 2 7 9 - <_> - 7 - - 13 0 2 3 - <_> - 8 - - 6 6 1 2 - <_> - 3 - - 3 28 8 2 - <_> - 7 - - 13 24 1 3 - <_> - 2 - - 3 29 9 1 - <_> - 7 - - 7 13 3 1 - <_> - 7 - - 1 0 4 5 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 4 3 9 2 - <_> - 3 - - 2 17 2 2 - <_> - 0 - - 12 5 1 18 - <_> - 9 - - 7 10 1 1 - <_> - 9 - - 3 5 9 1 - <_> - 8 - - 8 12 4 1 - <_> - 3 - - 3 9 3 18 - <_> - 7 - - 8 26 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 5 10 5 21 - <_> - 1 - - 9 27 2 2 - <_> - 7 - - 6 9 3 1 - <_> - 2 - - 4 21 6 7 - <_> - 4 - - 2 18 9 8 - <_> - 5 - - 4 24 10 7 - <_> - 4 - - 6 4 5 3 - <_> - 2 - - 11 23 4 1 - <_> - 3 - - 5 3 1 28 - <_> - 9 - - 6 20 1 3 - <_> - 9 - - 4 25 5 2 - <_> - 4 - - 3 0 10 21 - <_> - 5 - - 9 11 6 17 - <_> - 0 - - 1 28 14 2 - <_> - 2 - - 6 10 3 1 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 6 27 7 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 12 15 3 5 - <_> - 3 - - 8 13 1 5 - <_> - 0 - - 6 22 2 5 - <_> - 4 - - 2 3 6 11 - <_> - 8 - - 1 17 6 10 - <_> - 9 - - 3 28 5 1 - <_> - 4 - - 0 30 10 1 - <_> - 1 - - 6 25 3 4 - <_> - 5 - - 10 8 3 8 - <_> - 7 - - 13 0 2 25 - <_> - 7 - - 5 30 8 1 - <_> - 3 - - 6 21 1 3 - <_> - 9 - - 6 8 3 4 - <_> - 9 - - 6 5 3 3 - <_> - 5 - - 4 29 10 1 - <_> - 1 - - 9 23 1 3 - <_> - 5 - - 9 11 4 20 - <_> - 9 - - 0 22 11 1 - <_> - 1 - - 5 9 1 2 - <_> - 5 - - 7 26 4 1 - <_> - 0 - - 6 23 1 7 - <_> - 3 - - 10 25 2 1 - <_> - 2 - - 3 29 6 2 - <_> - 1 - - 13 2 1 14 - <_> - 3 - - 6 26 8 2 - <_> - 1 - - 11 3 1 5 - <_> - 4 - - 3 12 12 19 - <_> - 1 - - 5 28 6 1 - <_> - 3 - - 10 30 5 1 - <_> - 7 - - 0 26 5 4 - <_> - 1 - - 5 11 3 2 - <_> - 0 - - 3 1 4 14 - <_> - 1 - - 7 4 2 4 - <_> - 3 - - 3 28 8 2 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 1 29 9 2 - <_> - 0 - - 6 10 3 2 - <_> - 5 - - 8 3 5 8 - <_> - 8 - - 7 4 1 10 - <_> - 1 - 1024 - - <_> - -9.1824179887771606e-01 - - 1 2 0 2.3365000000000000e+03 0 -1 1 8.3500000000000000e+01 - -2 -3 2 2.9050000000000000e+02 - - -1.9275911152362823e-01 -9.1824179887771606e-01 - 7.1353024244308472e-01 -4.2490604519844055e-01 - <_> - -1.3566842079162598e+00 - - 1 2 3 4.5500000000000000e+01 0 -1 4 5.6350000000000000e+02 - -2 -3 5 1.5150000000000000e+02 - - -5.7629632949829102e-01 -9.8518949747085571e-01 - 5.2551275491714478e-01 -4.3844240903854370e-01 - <_> - -1.6601251363754272e+00 - - 1 2 6 1.6500000000000000e+01 0 -1 7 1.3417500000000000e+04 - -2 -3 8 3.2850000000000000e+02 - - -1.4283974468708038e-01 -7.6407837867736816e-01 - 6.7369973659515381e-01 -3.0344095826148987e-01 - <_> - -1.7210527658462524e+00 - - 1 2 9 8.3500000000000000e+01 0 -1 10 5.7950000000000000e+02 - -2 -3 11 5.2165000000000000e+03 - - 2.7889367938041687e-01 -7.9177212715148926e-01 - -5.5426341295242310e-01 4.3222227692604065e-01 - <_> - -1.8265457153320312e+00 - - 1 2 12 1.0500000000000000e+01 0 -1 13 2.2500000000000000e+01 - -2 -3 14 2.4415000000000000e+03 - - -4.9315950274467468e-01 5.7787740230560303e-01 - -5.9864276647567749e-01 1.2489826977252960e-01 - <_> - -1.6793980598449707e+00 - - 1 2 15 1.8205000000000000e+03 0 -1 16 2.2445000000000000e+03 - -2 -3 17 2.5000000000000000e+00 - - 3.1089431140571833e-03 8.0035644769668579e-01 - 9.4315350055694580e-02 -5.7833504676818848e-01 - <_> - -1.5442515611648560e+00 - - 1 2 18 3.4500000000000000e+01 0 -1 19 4293. -2 -3 20 - 1.5545000000000000e+03 - - -6.1589881777763367e-02 -9.2765086889266968e-01 - 2.9719692468643188e-01 -6.1971640586853027e-01 - <_> - -1.8196758031845093e+00 - - 1 2 21 1.1500000000000000e+01 0 -1 22 2.1500000000000000e+01 - -2 -3 23 6.5500000000000000e+01 - - -4.4309207797050476e-01 4.5466747879981995e-01 - -6.7477458715438843e-01 -2.8885286301374435e-02 - <_> - -1.6610682010650635e+00 - - 1 2 24 5.0950000000000000e+02 0 -1 25 27777. -2 -3 26 - 2.4715000000000000e+03 - - 5.2616196870803833e-01 -4.0959128737449646e-01 - 5.7547372579574585e-01 -3.0137240886688232e-01 - <_> - -1.5959914922714233e+00 - - 1 2 27 5.0000000000000000e-01 0 -1 28 2.5000000000000000e+00 - -2 -3 29 1.7450000000000000e+02 - - -7.2784364223480225e-01 4.9311363697052002e-01 - -6.9787085056304932e-01 -1.9121825695037842e-02 - <_> - -1.1109679937362671e+00 - - 1 2 30 1.7500000000000000e+01 0 -1 31 1.0500000000000000e+01 - -2 -3 32 1.6835000000000000e+03 - - -6.9948041439056396e-01 4.8122453689575195e-01 - -3.8041490316390991e-01 7.8814607858657837e-01 - <_> - -1.3001022338867188e+00 - - 1 2 33 5.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 4.3500000000000000e+01 - - -6.2981390953063965e-01 4.1833153367042542e-01 - -5.5634695291519165e-01 2.0092706382274628e-01 - <_> - -1.2552416324615479e+00 - - 1 2 36 1.5000000000000000e+00 0 -1 37 6.0500000000000000e+01 - -2 -3 38 3.5000000000000000e+00 - - -2.3229536414146423e-01 4.8632022738456726e-01 - 1.0821102559566498e-01 -5.4847836494445801e-01 - <_> - -9.5746147632598877e-01 - - 1 2 39 5.0000000000000000e-01 0 -1 40 5.5000000000000000e+00 - -2 -3 41 1.5500000000000000e+01 - - -9.0162736177444458e-01 3.7442612648010254e-01 - -1.9469287246465683e-02 -6.7447566986083984e-01 - <_> - -8.0001801252365112e-01 - - 1 2 42 3.7500000000000000e+01 0 -1 43 3.1595000000000000e+03 - -2 -3 44 1.2465000000000000e+03 - - 1.6209787130355835e-01 -9.0783798694610596e-01 - 2.1256938576698303e-01 -7.1468418836593628e-01 - <_> - -1.2121976613998413e+00 - - 1 2 45 5.2500000000000000e+01 0 -1 46 5.0000000000000000e-01 - -2 -3 47 7606. - - 3.2595899701118469e-01 -4.1217961907386780e-01 - -1.9886784255504608e-01 7.2802597284317017e-01 - <_> - -1.0095448493957520e+00 - - 1 2 48 1.2645000000000000e+03 0 -1 49 1.3995000000000000e+03 - -2 -3 50 17217. - - 1.4752689003944397e-01 -4.5374435186386108e-01 - 7.4328523874282837e-01 -3.0514815449714661e-01 - <_> - -8.2125085592269897e-01 - - 1 2 51 1.2450000000000000e+02 0 -1 52 4.5000000000000000e+00 - -2 -3 53 6.5500000000000000e+01 - - -9.2579865455627441e-01 1.8829397857189178e-01 - 6.2581911683082581e-02 -9.3276327848434448e-01 - <_> - -8.5726839303970337e-01 - - 1 2 54 1.2500000000000000e+01 0 -1 55 3.5000000000000000e+00 - -2 -3 56 2.4500000000000000e+01 - - -9.3079727888107300e-01 5.4834127426147461e-01 - -7.4245822429656982e-01 -3.6017529666423798e-02 - <_> - -3.7141740322113037e-01 - - 1 2 57 2.5000000000000000e+00 0 -1 58 9.0500000000000000e+01 - -2 -3 59 1.1450000000000000e+02 - - -2.6328250765800476e-01 4.8585096001625061e-01 - -4.2119786143302917e-01 3.4775453805923462e-01 - <_> - -2.9893672466278076e-01 - - 1 2 60 1.8150000000000000e+02 0 -1 61 1.6500000000000000e+01 - -2 -3 62 4.3500000000000000e+01 - - 3.9467984437942505e-01 -2.8166392445564270e-01 - -6.6281062364578247e-01 1.6430251300334930e-02 - <_> - -5.2570968866348267e-01 - - 1 2 63 2.8935000000000000e+03 0 -1 64 7.5000000000000000e+00 - -2 -3 65 10970. - - 2.7466580271720886e-01 -8.6028146743774414e-01 - 3.1712412834167480e-01 -2.8514662384986877e-01 - <_> - -3.3981230854988098e-01 - - 1 2 66 4.3500000000000000e+01 0 -1 67 5.0500000000000000e+01 - -2 -3 68 1.2950000000000000e+02 - - 1.5071904659271240e-01 -6.7942529916763306e-01 - 3.4536096453666687e-01 -5.4448747634887695e-01 - <_> - -3.2909783720970154e-01 - - 1 2 69 4.0500000000000000e+01 0 -1 70 9.8750000000000000e+02 - -2 -3 71 4.5000000000000000e+00 - - -2.0841991528868675e-02 -6.2886476516723633e-01 - 7.4424326419830322e-01 9.9408831447362900e-03 - <_> - -6.2298193573951721e-02 - - 1 2 72 4.6085000000000000e+03 0 -1 73 3.8500000000000000e+01 - -2 -3 74 5.7850000000000000e+02 - - -7.5020188093185425e-01 5.4516482353210449e-01 - 5.7250261306762695e-01 -9.2801190912723541e-02 - <_> - -1.5894679725170135e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.5000000000000000e+00 - -2 -3 77 2.5750000000000000e+02 - - -7.4547845125198364e-01 4.9561309814453125e-01 - 5.8993577957153320e-01 -3.1674036383628845e-01 - <_> - 4.0653568506240845e-01 - - 1 2 78 2.5335000000000000e+03 0 -1 79 2.4500000000000000e+01 - -2 -3 80 8.9905000000000000e+03 - - 2.6614660024642944e-01 -3.2352310419082642e-01 - 6.4184278249740601e-01 -3.7356415390968323e-01 - <_> - -1.8076049163937569e-03 - - 1 2 81 5.0000000000000000e-01 0 -1 82 1.2500000000000000e+01 - -2 -3 83 2.4500000000000000e+01 - - -4.9844339489936829e-01 4.9451184272766113e-01 - -5.1162499189376831e-01 1.4680899679660797e-01 - <_> - 2.9161420464515686e-01 - - 1 2 84 1.3500000000000000e+01 0 -1 85 1.2500000000000000e+01 - -2 -3 86 1.5115000000000000e+03 - - -7.0512425899505615e-01 4.7449973225593567e-01 - -4.5257037878036499e-01 1.9849643111228943e-01 - <_> - 2.6676848530769348e-01 - - 1 2 87 5.0500000000000000e+01 0 -1 88 6.5500000000000000e+01 - -2 -3 89 1.4650000000000000e+02 - - -2.0592364668846130e-01 3.0830872058868408e-01 - -8.7131351232528687e-01 8.3726328611373901e-01 - <_> - 1.9189073145389557e-01 - - 1 2 90 3.6050000000000000e+02 0 -1 91 1.0350000000000000e+02 - -2 -3 92 7.4500000000000000e+01 - - -8.2260921597480774e-02 5.0565969944000244e-01 - -9.1390937566757202e-01 -1.8902081251144409e-01 - <_> - 5.3643327951431274e-01 - - 1 2 93 2.0500000000000000e+01 0 -1 94 4.4500000000000000e+01 - -2 -3 95 7.3785000000000000e+03 - - -8.0922812223434448e-01 3.4454253315925598e-01 - -1.5407036058604717e-02 -7.4269419908523560e-01 - <_> - 4.3825522065162659e-01 - - 1 2 96 1.0224500000000000e+04 0 -1 97 4.5000000000000000e+00 - -2 -3 98 4.0035000000000000e+03 - - 2.9326722025871277e-01 -3.9492443203926086e-01 - 6.2416630983352661e-01 -1.4834968745708466e-01 - <_> - 9.0073168277740479e-01 - - 1 2 99 2.5000000000000000e+00 0 -1 100 - 3.8395000000000000e+03 -2 -3 101 5.5000000000000000e+00 - - 6.1362767219543457e-01 -5.9424567967653275e-02 - -6.8450838327407837e-01 2.6574308052659035e-02 - <_> - 1.0332926511764526e+00 - - 1 2 102 5.4500000000000000e+01 0 -1 103 - 5.0000000000000000e-01 -2 -3 104 4.5000000000000000e+00 - - 1.4594553411006927e-01 -8.0310869216918945e-01 - 4.9081337451934814e-01 -1.0566046833992004e-01 - <_> - 1.2107890844345093e+00 - - 1 2 105 2.5000000000000000e+00 0 -1 106 608. -2 -3 107 - 1.0250000000000000e+02 - - -6.9540244340896606e-01 8.6690729856491089e-01 - 1.7749644815921783e-01 -8.1727051734924316e-01 - <_> - 1.1315129995346069e+00 - - 1 2 108 1.0450000000000000e+02 0 -1 109 106. -2 -3 110 - 4.7350000000000000e+02 - - -4.4595441222190857e-01 4.8524639010429382e-01 - 3.8998365402221680e-01 -4.3752849102020264e-01 - <_> - 1.3212180137634277e+00 - - 1 2 111 5.0000000000000000e-01 0 -1 112 - 3.1500000000000000e+01 -2 -3 113 8.5000000000000000e+00 - - -7.6347488164901733e-01 6.1377680301666260e-01 - 3.2435289025306702e-01 -3.2852920889854431e-01 - <_> - 1.5280661582946777e+00 - - 1 2 114 31599. 0 -1 115 8.7950000000000000e+02 -2 -3 116 - 1.4950000000000000e+02 - - -4.4413706660270691e-01 2.0684811472892761e-01 - -9.2896610498428345e-01 7.2677606344223022e-01 - <_> - 1.3401062488555908e+00 - - 1 2 117 4.5000000000000000e+00 0 -1 118 - 5.0000000000000000e-01 -2 -3 119 1.7500000000000000e+01 - - -8.9902228116989136e-01 7.3140519857406616e-01 - 2.5528132915496826e-01 -3.2260772585868835e-01 - <_> - 1.5880639553070068e+00 - - 1 2 120 2.3500000000000000e+01 0 -1 121 - 2.3415000000000000e+03 -2 -3 122 1.8500000000000000e+01 - - -7.2909480333328247e-01 -6.7116706632077694e-03 - -8.0022460222244263e-01 3.6795264482498169e-01 - <_> - 1.7455346584320068e+00 - - 1 2 123 1.9715000000000000e+03 0 -1 124 - 4.5635000000000000e+03 -2 -3 125 4.4850000000000000e+02 - - -6.1536699533462524e-01 3.9649611711502075e-01 - -5.3931379318237305e-01 1.9903500378131866e-01 - <_> - 1.4469091892242432e+00 - - 1 2 126 9.5000000000000000e+00 0 -1 127 - 1.0219500000000000e+04 -2 -3 128 4.0500000000000000e+01 - - 6.1238449811935425e-01 -1.6160279512405396e-01 - -5.3765082359313965e-01 2.1599884331226349e-01 - <_> - 1.6631983518600464e+00 - - 1 2 129 1.3050000000000000e+02 0 -1 130 - 1.2500000000000000e+01 -2 -3 131 48. - - -6.8314427137374878e-01 2.1628913283348083e-01 - 7.3021888732910156e-01 -8.3048707246780396e-01 - <_> - 1.3611874580383301e+00 - - 1 2 132 5691. 0 -1 133 1.4550000000000000e+02 -2 -3 134 - 6621. - - 6.3320666551589966e-02 -5.2526509761810303e-01 - 9.5597380399703979e-01 -8.6907690763473511e-01 - <_> - 1.6279634237289429e+00 - - 1 2 135 2.3500000000000000e+01 0 -1 136 - 2.5000000000000000e+00 -2 -3 137 5.0500000000000000e+01 - - 3.9147856831550598e-01 -8.5339552164077759e-01 - 2.6677599549293518e-01 -3.8106775283813477e-01 - <_> - 2.0351922512054443e+00 - - 1 2 138 4.9500000000000000e+01 0 -1 139 - 1.8500000000000000e+01 -2 -3 140 7.5000000000000000e+00 - - 4.8707169294357300e-01 -5.0664901733398438e-01 - 5.0869596004486084e-01 -1.1930328607559204e-01 - <_> - 2.1048190593719482e+00 - - 1 2 141 6.5000000000000000e+00 0 -1 142 - 2.0500000000000000e+01 -2 -3 143 2.8945000000000000e+03 - - 2.2332985699176788e-01 -6.0333216190338135e-01 - 3.1961753964424133e-01 -4.8080846667289734e-01 - <_> - 2.5272200107574463e+00 - - 1 2 144 1.2755000000000000e+03 0 -1 145 - 1.6450000000000000e+02 -2 -3 146 33. - - 8.7598457932472229e-02 -4.3963542580604553e-01 - -8.7583345174789429e-01 6.2399446964263916e-01 - <_> - 2.3983705043792725e+00 - - 1 2 147 5.5000000000000000e+00 0 -1 148 - 1.2500000000000000e+01 -2 -3 149 3.2715000000000000e+03 - - -6.9637626409530640e-01 3.5001280903816223e-01 - -6.8439531326293945e-01 5.0571694970130920e-02 - <_> - 2.1697113513946533e+00 - - 1 2 150 666. 0 -1 151 1.0675000000000000e+03 -2 -3 152 - 1.0650000000000000e+02 - - -2.1497508883476257e-01 7.4145573377609253e-01 - -4.1339716315269470e-01 1.7802318930625916e-01 - <_> - 2.3894040584564209e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 4.2500000000000000e+01 -2 -3 155 1.0950000000000000e+02 - - -8.8204550743103027e-01 3.3967906236648560e-01 - -9.1087028384208679e-02 -8.9394873380661011e-01 - <_> - 2.2878415584564209e+00 - - 1 2 156 6.4500000000000000e+01 0 -1 157 11. -2 -3 158 - 4.4500000000000000e+01 - - 7.8926539421081543e-01 -8.1914222240447998e-01 - 5.7366627454757690e-01 -1.0156247764825821e-01 - <_> - 2.4907975196838379e+00 - - 1 2 159 5.8650000000000000e+02 0 -1 160 - 1.7625000000000000e+03 -2 -3 161 5.0000000000000000e-01 - - -5.2814042568206787e-01 2.0295590162277222e-01 - 4.9193066358566284e-01 -8.6553698778152466e-01 - <_> - 2.8328115940093994e+00 - - 1 2 162 1.1500000000000000e+01 0 -1 163 - 1.5045000000000000e+03 -2 -3 164 3.1500000000000000e+01 - - 5.6902194023132324e-01 -3.8489398360252380e-01 - 5.4847592115402222e-01 -9.3145422637462616e-02 - <_> - 2.9363400936126709e+00 - - 1 2 165 1.5500000000000000e+01 0 -1 166 - 1.2500000000000000e+01 -2 -3 167 1.5500000000000000e+01 - - 9.5472264289855957e-01 -9.1838270425796509e-01 - -1.0293316841125488e-01 4.3570974469184875e-01 - <_> - 2.8884809017181396e+00 - - 1 2 168 5.5000000000000000e+00 0 -1 169 - 3.2250000000000000e+02 -2 -3 170 3.3305000000000000e+03 - - 5.2823734283447266e-01 -6.2273854017257690e-01 - 2.4218171834945679e-01 -3.8004037737846375e-01 - <_> - 3.2581679821014404e+00 - - 1 2 171 1.1585000000000000e+03 0 -1 172 - 2.0525000000000000e+03 -2 -3 173 6.6950000000000000e+02 - - -7.3419857025146484e-01 5.7153469324111938e-01 - 7.6942658424377441e-01 -4.6774842776358128e-03 - <_> - 3.2552568912506104e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 5.0000000000000000e-01 -2 -3 176 1.5550000000000000e+02 - - 1.8964821100234985e-01 -5.6353724002838135e-01 - -6.1556345224380493e-01 3.0847749114036560e-01 - <_> - 3.1983842849731445e+00 - - 1 2 177 4.3150000000000000e+02 0 -1 178 - 5.8500000000000000e+01 -2 -3 179 5.0000000000000000e-01 - - -5.6872483342885971e-02 5.8359992504119873e-01 - 4.7400984168052673e-01 -7.4053239822387695e-01 - <_> - 3.4817969799041748e+00 - - 1 2 180 9.5000000000000000e+00 0 -1 181 25. -2 -3 182 - 6.2500000000000000e+01 - - -6.4430248737335205e-01 3.9208996295928955e-01 - -4.2771559953689575e-01 3.0624631047248840e-01 - <_> - 3.0476233959197998e+00 - - 1 2 183 2.5000000000000000e+00 0 -1 184 - 1.3250000000000000e+02 -2 -3 185 3.4150000000000000e+02 - - 5.3614073991775513e-01 -5.6767416000366211e-01 - -3.0754956603050232e-01 8.0505007505416870e-01 - <_> - 3.4105541706085205e+00 - - 1 2 186 5.8500000000000000e+01 0 -1 187 - 5.2250000000000000e+02 -2 -3 188 8.4500000000000000e+01 - - -3.9508250355720520e-01 2.8085133433341980e-01 - 6.1845648288726807e-01 -2.1672628819942474e-01 - <_> - 3.4716253280639648e+00 - - 1 2 189 3238. 0 -1 190 7.6925000000000000e+03 -2 -3 191 - 1.4250000000000000e+02 - - 5.7400876283645630e-01 -6.7538954317569733e-02 - -8.3562213182449341e-01 6.1071071773767471e-02 - <_> - 3.3441829681396484e+00 - - 1 2 192 1.3500000000000000e+01 0 -1 193 - 1.3500000000000000e+01 -2 -3 194 5.5000000000000000e+00 - - -6.8424683809280396e-01 5.4655539989471436e-01 - 4.5958670973777771e-01 -1.2744228541851044e-01 - <_> - 3.2567305564880371e+00 - - 1 2 195 4.5050000000000000e+02 0 -1 196 - 7.5000000000000000e+00 -2 -3 197 102. - - 2.0710256695747375e-01 -4.7517296671867371e-01 - -2.6671493053436279e-01 5.8150058984756470e-01 - <_> - 3.5595970153808594e+00 - - 1 2 198 1.5500000000000000e+01 0 -1 199 - 1.6405000000000000e+03 -2 -3 200 3.2500000000000000e+01 - - -6.0164546966552734e-01 3.0286654829978943e-01 - 2.1122010052204132e-01 -5.7218044996261597e-01 - <_> - 3.7392544746398926e+00 - - 1 2 201 6.5000000000000000e+00 0 -1 202 - 3.5000000000000000e+00 -2 -3 203 1.6450000000000000e+02 - - 2.2506394982337952e-01 -8.6310726404190063e-01 - 1.7965751886367798e-01 -6.9324779510498047e-01 - <_> - 3.7078585624694824e+00 - - 1 2 204 8.1450000000000000e+02 0 -1 205 1890. -2 -3 206 - 8.1750000000000000e+02 - - -3.2595106959342957e-01 8.0182307958602905e-01 - 6.8428695201873779e-01 -2.1671128273010254e-01 - <_> - 4.0834798812866211e+00 - - 1 2 207 7524. 0 -1 208 29059. -2 -3 209 - 5.0000000000000000e-01 - - -9.4072461128234863e-02 6.2213033437728882e-01 - 4.1094872355461121e-01 -3.1383806467056274e-01 - <_> - 3.9115695953369141e+00 - - 1 2 210 1.8500000000000000e+01 0 -1 211 387. -2 -3 212 - 2.3750000000000000e+02 - - 4.2355090379714966e-01 -8.8622373342514038e-01 - 2.1309094130992889e-01 -5.3503811359405518e-01 - <_> - 4.2166790962219238e+00 - - 1 2 213 5.3500000000000000e+01 0 -1 214 1081. -2 -3 215 - 2.5000000000000000e+00 - - 8.1005847454071045e-01 -9.5809775590896606e-01 - 3.0510938167572021e-01 -2.3649103939533234e-01 - <_> - 4.2742543220520020e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 1.9500000000000000e+01 - - -6.7842203378677368e-01 6.1577528715133667e-01 - -6.2877601385116577e-01 5.7575210928916931e-02 - <_> - 4.5262427330017090e+00 - - 1 2 219 2.3500000000000000e+01 0 -1 220 - 6.5500000000000000e+01 -2 -3 221 7200. - - -1.2643574178218842e-01 4.4764062762260437e-01 - 8.0391228199005127e-01 -5.6298023462295532e-01 - <_> - 4.3622655868530273e+00 - - 1 2 222 5.0000000000000000e-01 0 -1 223 - 5.0000000000000000e-01 -2 -3 224 8.5000000000000000e+00 - - -6.9282239675521851e-01 5.0668609142303467e-01 - 2.8447443246841431e-01 -3.2788425683975220e-01 - <_> - 4.3866205215454102e+00 - - 1 2 225 1.8500000000000000e+01 0 -1 226 - 3.0500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 1.6534422338008881e-01 -6.7988771200180054e-01 - 5.8741343021392822e-01 -7.3899636045098305e-03 - <_> - 4.6229195594787598e+00 - - 1 2 228 3.5500000000000000e+01 0 -1 229 - 2.4250000000000000e+02 -2 -3 230 1.4995000000000000e+03 - - -2.7123320102691650e-01 4.3727341294288635e-01 - 6.2667381763458252e-01 -8.1948131322860718e-01 - <_> - 4.4684619903564453e+00 - - 1 2 231 1.3050000000000000e+02 0 -1 232 - 7.4500000000000000e+01 -2 -3 233 3.4250000000000000e+02 - - 4.2552286386489868e-01 -6.8802464008331299e-01 - -3.5543212294578552e-01 8.2571202516555786e-01 - <_> - 4.7353043556213379e+00 - - 1 2 234 2.4500000000000000e+01 0 -1 235 - 5.2500000000000000e+01 -2 -3 236 2.1500000000000000e+01 - - 1.4997267723083496e-01 -9.4012928009033203e-01 - -3.1085640192031860e-01 2.6684227585792542e-01 - <_> - 5.1284918785095215e+00 - - 1 2 237 1.5000000000000000e+00 0 -1 238 246. -2 -3 239 - 5.1500000000000000e+01 - - -1.4119525253772736e-01 8.4309184551239014e-01 - 8.1866653636097908e-03 -5.9627658128738403e-01 - <_> - 5.2100868225097656e+00 - - 1 2 240 1.2225000000000000e+03 0 -1 241 8510. -2 -3 242 - 4.1076500000000000e+04 - - -3.3349204063415527e-01 4.1161355376243591e-01 - 4.6106973290443420e-01 -8.5954028367996216e-01 - <_> - 5.1655635833740234e+00 - - 1 2 243 1.4225500000000000e+04 0 -1 244 - 5.6765000000000000e+03 -2 -3 245 3.5000000000000000e+00 - - -4.4523153454065323e-02 6.2628918886184692e-01 - 2.0545418560504913e-01 -5.4939305782318115e-01 - <_> - 5.3291592597961426e+00 - - 1 2 246 4.5000000000000000e+00 0 -1 247 5. -2 -3 248 - 4.5035000000000000e+03 - - -8.5104453563690186e-01 7.7873927354812622e-01 - -8.5507243871688843e-01 -6.3659679144620895e-03 - <_> - 5.4979724884033203e+00 - - 1 2 249 7.7350000000000000e+02 0 -1 250 - 5.0745000000000000e+03 -2 -3 251 6.5000000000000000e+00 - - 4.5453670620918274e-01 -6.6669577360153198e-01 - 1.7272062599658966e-01 -4.8215919733047485e-01 - <_> - 5.1418399810791016e+00 - - 1 2 252 3.3500000000000000e+01 0 -1 253 - 4.8500000000000000e+01 -2 -3 254 1.1625000000000000e+03 - - 5.2197024226188660e-02 -8.2986247539520264e-01 - -4.2942497134208679e-01 2.6862683892250061e-01 - <_> - 5.3069186210632324e+00 - - 1 2 255 7.3500000000000000e+01 0 -1 256 - 6.5000000000000000e+00 -2 -3 257 293. - - -8.3037430047988892e-01 1.6507858037948608e-01 - -8.6482697725296021e-01 5.6237572431564331e-01 - <_> - 5.8320169448852539e+00 - - 1 2 258 5.2500000000000000e+01 0 -1 259 - 5.0000000000000000e-01 -2 -3 260 483. - - 4.2582702636718750e-01 -3.5350418090820312e-01 - 5.2509862184524536e-01 -8.3165860176086426e-01 - <_> - 5.4062981605529785e+00 - - 1 2 261 7.2850000000000000e+02 0 -1 262 27703. -2 -3 263 - 1.1950000000000000e+02 - - 6.5644961595535278e-01 -9.5847475528717041e-01 - 2.1147368848323822e-01 -4.5759904384613037e-01 - <_> - 5.3856034278869629e+00 - - 1 2 264 2.1500000000000000e+01 0 -1 265 - 1.6105000000000000e+03 -2 -3 266 1.5000000000000000e+00 - - -2.0694794133305550e-02 -7.2058790922164917e-01 - 7.0882946252822876e-01 -9.4017720222473145e-01 - <_> - 5.3594450950622559e+00 - - 1 2 267 1.9500000000000000e+01 0 -1 268 - 1.5500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - 4.6942609548568726e-01 -4.7919079661369324e-01 - 5.4369747638702393e-01 -2.6158468797802925e-02 - <_> - 5.5568313598632812e+00 - - 1 2 270 3.8500000000000000e+01 0 -1 271 5311. -2 -3 272 - 1.0750000000000000e+02 - - 2.8408360481262207e-01 -9.0222167968750000e-01 - 1.9738645851612091e-01 -5.9748172760009766e-01 - <_> - 6.0750946998596191e+00 - - 1 2 273 3654. 0 -1 274 5.0000000000000000e-01 -2 -3 275 180. - - 1.3075743615627289e-01 -4.2956027388572693e-01 - -7.0136785507202148e-01 6.2402111291885376e-01 - <_> - 6.0776939392089844e+00 - - 1 2 276 2.5000000000000000e+00 0 -1 277 - 1.3500000000000000e+01 -2 -3 278 1.1750000000000000e+02 - - -9.0228682756423950e-01 1. 1.6657561063766479e-01 - -6.4917582273483276e-01 - <_> - 6.0489621162414551e+00 - - 1 2 279 1.2455000000000000e+03 0 -1 280 - 3.2550000000000000e+02 -2 -3 281 9.3250000000000000e+02 - - -2.8672853112220764e-01 6.7820680141448975e-01 - 6.3100266456604004e-01 -2.2533583641052246e-01 - <_> - 6.3533391952514648e+00 - - 1 2 282 1.8769500000000000e+04 0 -1 283 - 7.5450000000000000e+02 -2 -3 284 1.4500000000000000e+01 - - -7.3246711492538452e-01 4.0920761227607727e-01 - 9.1864340007305145e-02 -5.1933372020721436e-01 - <_> - 6.3807511329650879e+00 - - 1 2 285 4.9950000000000000e+02 0 -1 286 - 7.5000000000000000e+00 -2 -3 287 4.9500000000000000e+01 - - 2.5379750132560730e-01 -9.2118155956268311e-01 - -5.7641644030809402e-02 5.3151047229766846e-01 - <_> - 6.4591631889343262e+00 - - 1 2 288 2.5500000000000000e+01 0 -1 289 - 1.1500000000000000e+01 -2 -3 290 1.7405000000000000e+03 - - -9.0133595466613770e-01 2.3147261142730713e-01 - -5.1077365875244141e-01 7.7433860301971436e-01 - <_> - 6.7583456039428711e+00 - - 1 2 291 5.0000000000000000e-01 0 -1 292 - 3.6500000000000000e+01 -2 -3 293 6.5000000000000000e+00 - - -1.6842520236968994e-01 7.2404229640960693e-01 - 4.3139779567718506e-01 -3.6949115991592407e-01 - <_> - 6.6043167114257812e+00 - - 1 2 294 1.0500000000000000e+01 0 -1 295 - 2.5500000000000000e+01 -2 -3 296 1.0750000000000000e+02 - - 6.2449771165847778e-01 -6.7510235309600830e-01 - 3.5289931297302246e-01 -1.5402862429618835e-01 - <_> - 6.4769744873046875e+00 - - 1 2 297 1.6750000000000000e+02 0 -1 298 - 3.4500000000000000e+01 -2 -3 299 2.1500000000000000e+01 - - 1.1882825195789337e-01 -6.5167319774627686e-01 - -7.6285523176193237e-01 3.4674841165542603e-01 - <_> - 6.6450757980346680e+00 - - 1 2 300 8.5000000000000000e+00 0 -1 301 - 1.3500000000000000e+01 -2 -3 302 116. - - -5.9631282091140747e-01 2.7127423882484436e-01 - -5.6467700004577637e-01 3.7385278940200806e-01 - <_> - 6.8429255485534668e+00 - - 1 2 303 5.5500000000000000e+01 0 -1 304 - 3.5000000000000000e+00 -2 -3 305 3.3250000000000000e+02 - - -8.3910179138183594e-01 4.3193608522415161e-01 - -3.7392577528953552e-01 6.6540867090225220e-01 - <_> - 7.0322842597961426e+00 - - 1 2 306 6.3500000000000000e+01 0 -1 307 - 2.0845000000000000e+03 -2 -3 308 1.2500000000000000e+01 - - -5.9658832848072052e-02 -8.6379587650299072e-01 - 4.7707024216651917e-01 -1.4790077507495880e-01 - <_> - 6.9630532264709473e+00 - - 1 2 309 1.6150000000000000e+02 0 -1 310 29256. -2 -3 311 - 2.5000000000000000e+00 - - -8.2682120800018311e-01 4.9407878518104553e-01 - 5.2456849813461304e-01 -6.9230861961841583e-02 - <_> - 6.9075293540954590e+00 - - 1 2 312 5.0000000000000000e-01 0 -1 313 - 8.5000000000000000e+00 -2 -3 314 8.4975000000000000e+03 - - -7.3926454782485962e-01 4.6552142500877380e-01 - 5.8614385128021240e-01 -3.0694326758384705e-01 - <_> - 7.0862822532653809e+00 - - 1 2 315 8.2550000000000000e+02 0 -1 316 - 4.6500000000000000e+01 -2 -3 317 5.0695000000000000e+03 - - -2.9908904433250427e-01 5.3665381669998169e-01 - 6.0632449388504028e-01 -4.8383909463882446e-01 - <_> - 7.3064808845520020e+00 - - 1 2 318 1.2500000000000000e+01 0 -1 319 - 4.7350000000000000e+02 -2 -3 320 1.3500000000000000e+01 - - -1.4890976250171661e-01 5.1700884103775024e-01 - 2.2019901871681213e-01 -5.0205707550048828e-01 - <_> - 7.5856218338012695e+00 - - 1 2 321 4.5000000000000000e+00 0 -1 322 - 2.5000000000000000e+00 -2 -3 323 1.7875000000000000e+03 - - -6.5830785036087036e-01 5.2842289209365845e-01 - -4.4524073600769043e-01 1.5747387707233429e-01 - <_> - 7.5183806419372559e+00 - - 1 2 324 7.8500000000000000e+01 0 -1 325 - 2.1500000000000000e+01 -2 -3 326 283. - - 4.9533292651176453e-01 -3.2849147915840149e-01 - -8.8443028926849365e-01 -4.6591479331254959e-02 - <_> - 7.2458000183105469e+00 - - 1 2 327 2.9500000000000000e+01 0 -1 328 - 4.5000000000000000e+00 -2 -3 329 1.2500000000000000e+01 - - 3.8163262605667114e-01 -5.6158578395843506e-01 - -5.1157724857330322e-01 3.5844418406486511e-01 - <_> - 7.7198004722595215e+00 - - 1 2 330 1.7500000000000000e+01 0 -1 331 - 8.5000000000000000e+00 -2 -3 332 94. - - -1.6375185549259186e-01 4.7400090098381042e-01 - -8.1118392944335938e-01 -3.4891348332166672e-02 - <_> - 7.6042866706848145e+00 - - 1 2 333 1.5500000000000000e+01 0 -1 334 - 2.8500000000000000e+01 -2 -3 335 1.1255000000000000e+03 - - -2.7163597941398621e-01 4.8851761221885681e-01 - -4.1841214895248413e-01 5.2421635389328003e-01 - <_> - 7.8545336723327637e+00 - - 1 2 336 5.0000000000000000e-01 0 -1 337 - 6.5000000000000000e+00 -2 -3 338 1.5755000000000000e+03 - - -5.1451754570007324e-01 5.8292496204376221e-01 - 5.4736447334289551e-01 -2.9082155227661133e-01 - <_> - 8.2435092926025391e+00 - - 1 2 339 2.5000000000000000e+00 0 -1 340 298. -2 -3 341 - 3.4500000000000000e+01 - - 5.5548179149627686e-01 -4.2350277304649353e-01 - -4.2017799615859985e-01 3.3250615000724792e-01 - <_> - 8.1081476211547852e+00 - - 1 2 342 2306. 0 -1 343 4.8350000000000000e+02 -2 -3 344 - 2.0550000000000000e+02 - - -7.4824672937393188e-01 8.6650526523590088e-01 - 2.9151761531829834e-01 -3.6584287881851196e-01 - <_> - 7.9108762741088867e+00 - - 0 1 345 2758. 0 1 345 2758. -1 -2 346 2.1500000000000000e+01 - - -1. -1. 2.9584947228431702e-01 -1.9727160036563873e-01 - <_> - 8.1822175979614258e+00 - - 1 2 347 2.3500000000000000e+01 0 -1 348 282. -2 -3 349 - 4.5000000000000000e+00 - - 4.1519537568092346e-01 -7.7347069978713989e-01 - 2.7134174108505249e-01 -2.6304042339324951e-01 - <_> - 8.1136093139648438e+00 - - 1 2 350 6.6500000000000000e+01 0 -1 351 - 1.4500000000000000e+01 -2 -3 352 3.4500000000000000e+01 - - -8.0191783607006073e-02 -7.9695141315460205e-01 - 4.5921468734741211e-01 -4.6219456195831299e-01 - <_> - 8.4452056884765625e+00 - - 1 2 353 5.0000000000000000e-01 0 -1 354 - 1.1750000000000000e+02 -2 -3 355 1.4615000000000000e+03 - - 6.2617254257202148e-01 -6.0764908790588379e-01 - -2.9064002633094788e-01 7.1891576051712036e-01 - <_> - 8.4361963272094727e+00 - - 1 2 356 7.3500000000000000e+01 0 -1 357 825. -2 -3 358 - 6.5000000000000000e+00 - - 6.0967606306076050e-01 -7.7204084396362305e-01 - 6.0940122604370117e-01 -9.0096443891525269e-03 - <_> - 8.7065010070800781e+00 - - 1 2 359 3.1500000000000000e+01 0 -1 360 - 1.1475500000000000e+04 -2 -3 361 262. - - 4.0798941254615784e-01 -6.3121789693832397e-01 - -4.9538758397102356e-01 2.7030462026596069e-01 - <_> - 8.5846290588378906e+00 - - 1 2 362 1.4500000000000000e+01 0 -1 363 - 1.3524500000000000e+04 -2 -3 364 1.5650000000000000e+02 - - 6.1740058660507202e-01 -1.2187176942825317e-01 - -4.5620942115783691e-01 2.4483670294284821e-01 - <_> - 8.5813455581665039e+00 - - 1 2 365 1.9500000000000000e+01 0 -1 366 - 2.4550000000000000e+02 -2 -3 367 1.5150000000000000e+02 - - -3.2830052077770233e-03 -7.3917645215988159e-01 - 8.6923849582672119e-01 -3.4717652201652527e-01 - <_> - 8.3619909286499023e+00 - - 1 2 368 8.5000000000000000e+00 0 -1 369 915. -2 -3 370 - 5.0000000000000000e-01 - - -4.7836102545261383e-02 -8.9932316541671753e-01 - 3.6531907320022583e-01 -2.1935538947582245e-01 - <_> - 8.8194007873535156e+00 - - 1 2 371 5.3500000000000000e+01 0 -1 372 - 4.5000000000000000e+00 -2 -3 373 3.5000000000000000e+00 - - 1.0001569986343384e-01 -6.3893711566925049e-01 - 4.5741054415702820e-01 -1.3190703094005585e-01 - <_> - 8.5848417282104492e+00 - - 1 2 374 1.2185000000000000e+03 0 -1 375 - 5.6500000000000000e+01 -2 -3 376 7.8650000000000000e+02 - - -3.6798512935638428e-01 6.3582497835159302e-01 - 8.7271928787231445e-01 4.6488631516695023e-02 - <_> - 8.7026214599609375e+00 - - 1 2 377 3.7500000000000000e+01 0 -1 378 - 8.1500000000000000e+01 -2 -3 379 2.2350000000000000e+02 - - -1.1387371271848679e-01 4.8333024978637695e-01 - 5.4781770706176758e-01 -6.5416949987411499e-01 - <_> - 8.9529705047607422e+00 - - 1 2 380 2.0500000000000000e+01 0 -1 381 - 7.5000000000000000e+00 -2 -3 382 1.3235000000000000e+03 - - -7.0283526182174683e-01 2.5034907460212708e-01 - -7.6881372928619385e-01 1.7487525939941406e-01 - <_> - 9.0659570693969727e+00 - - 1 2 383 3.5000000000000000e+00 0 -1 384 - 6.5000000000000000e+00 -2 -3 385 7.0250000000000000e+02 - - -9.7807765007019043e-01 4.7183737158775330e-01 - 1.1298649013042450e-01 -4.7387996315956116e-01 - <_> - 9.2564897537231445e+00 - - 1 2 386 7.0650000000000000e+02 0 -1 387 - 2.7500000000000000e+01 -2 -3 388 3.8150000000000000e+02 - - -4.3204694986343384e-01 4.6149665117263794e-01 - -4.5656362175941467e-01 4.0426468849182129e-01 - <_> - 9.5633430480957031e+00 - - 1 2 389 1.7250000000000000e+02 0 -1 390 - 1.4350000000000000e+02 -2 -3 391 2168. - - 3.0685371160507202e-01 -6.7446005344390869e-01 - -5.6666123867034912e-01 5.7540327310562134e-01 - <_> - 9.4047651290893555e+00 - - 1 2 392 5.0000000000000000e-01 0 -1 393 36. -2 -3 394 - 6.5000000000000000e+00 - - -8.9199495315551758e-01 6.9151669740676880e-01 - 3.1148543953895569e-01 -3.2515323162078857e-01 - <_> - 9.8578929901123047e+00 - - 1 2 395 1.6500000000000000e+01 0 -1 396 - 8.5000000000000000e+00 -2 -3 397 6655. - - -6.3973349332809448e-01 -2.6324391365051270e-02 - 4.5312842726707458e-01 -7.6435673236846924e-01 - <_> - 1.0109946250915527e+01 - - 1 2 398 8.1850000000000000e+02 0 -1 399 5. -2 -3 400 - 1.5000000000000000e+00 - - 1. -9.7892904281616211e-01 2.5205332040786743e-01 - -2.3775234818458557e-01 - <_> - 1.0110588073730469e+01 - - 1 2 401 8.9500000000000000e+01 0 -1 402 - 1.9500000000000000e+01 -2 -3 403 3.3150000000000000e+02 - - 6.0288328677415848e-02 -5.5889946222305298e-01 - -6.6790217161178589e-01 4.9099177122116089e-01 - <_> - 1.0178493499755859e+01 - - 1 2 404 8.3500000000000000e+01 0 -1 405 - 5.0000000000000000e-01 -2 -3 406 4.5500000000000000e+01 - - 6.6644616425037384e-02 -4.7016331553459167e-01 - 6.9829040765762329e-01 -7.4734330177307129e-01 - <_> - 1.0367170333862305e+01 - - 1 2 407 3.1968500000000000e+04 0 -1 408 - 1.4500000000000000e+01 -2 -3 409 1.9650000000000000e+02 - - -8.8887441158294678e-01 1.8867671489715576e-01 - -6.9990497827529907e-01 7.3294508457183838e-01 - <_> - 1.0330060958862305e+01 - - 1 2 410 3.0500000000000000e+01 0 -1 411 - 4.5000000000000000e+00 -2 -3 412 2.2500000000000000e+01 - - 4.1319993138313293e-01 -1.7337587475776672e-01 - -6.1255306005477905e-01 5.2832174301147461e-01 - <_> - 1.0422311782836914e+01 - - 1 2 413 1.5750000000000000e+02 0 -1 414 2858. -2 -3 415 267. - - 9.2250838875770569e-02 -6.7853665351867676e-01 - -5.2487850189208984e-01 3.7964582443237305e-01 - <_> - 1.0936569213867188e+01 - - 1 2 416 5.5000000000000000e+00 0 -1 417 - 1.5000000000000000e+00 -2 -3 418 4.1500000000000000e+01 - - -7.1109032630920410e-01 5.2976405620574951e-01 - -7.1571081876754761e-01 -3.8149278610944748e-02 - <_> - 1.0785615921020508e+01 - - 1 2 419 5.5000000000000000e+00 0 -1 420 - 2.5000000000000000e+00 -2 -3 421 5.1050000000000000e+02 - - -7.9414331912994385e-01 5.1595968008041382e-01 - -5.1001089811325073e-01 2.4380905926227570e-01 - <_> - 1.1078557014465332e+01 - - 1 2 422 6.2045000000000000e+03 0 -1 423 - 2.1500000000000000e+01 -2 -3 424 7.3450000000000000e+02 - - -5.1469475030899048e-01 2.9294142127037048e-01 - 8.0896812677383423e-01 -6.5453553199768066e-01 - <_> - 1.1050524711608887e+01 - - 1 2 425 1.2500000000000000e+01 0 -1 426 - 3.1250000000000000e+02 -2 -3 427 2.7950000000000000e+02 - - 7.0064479112625122e-01 -3.8257476687431335e-01 - 1.9552476704120636e-01 -4.3830174207687378e-01 - <_> - 1.1334832191467285e+01 - - 1 2 428 1.8675000000000000e+03 0 -1 429 - 6.5000000000000000e+00 -2 -3 430 1.1475000000000000e+03 - - 3.7387716770172119e-01 -7.6267945766448975e-01 - -5.4317325353622437e-01 2.8430745005607605e-01 - <_> - 1.1113101959228516e+01 - - 1 2 431 1.4850000000000000e+02 0 -1 432 - 8.3500000000000000e+01 -2 -3 433 3.7500000000000000e+01 - - -3.8298897445201874e-02 -6.6938400268554688e-01 - 4.6958562731742859e-01 -2.8687629103660583e-01 - <_> - 1.0955561637878418e+01 - - 1 2 434 4.3500000000000000e+01 0 -1 435 - 5.5000000000000000e+00 -2 -3 436 1.9500000000000000e+01 - - 1.3246925175189972e-01 -5.9307396411895752e-01 - 4.5207285881042480e-01 -1.5754084289073944e-01 - <_> - 1.1154244422912598e+01 - - 1 2 437 3.5500000000000000e+01 0 -1 438 149. -2 -3 439 - 1.0764500000000000e+04 - - 1.6496022045612335e-01 -8.5004007816314697e-01 - 1.9868306815624237e-01 -7.6483601331710815e-01 - <_> - 1.1040904045104980e+01 - - 1 2 440 1.7500000000000000e+01 0 -1 441 - 2.7650000000000000e+02 -2 -3 442 6.0650000000000000e+02 - - 3.8257870078086853e-01 -8.7649303674697876e-01 - 5.6843882799148560e-01 -1.1334086209535599e-01 - <_> - 1.0785296440124512e+01 - - 1 2 443 2.0850000000000000e+02 0 -1 444 - 5.0000000000000000e-01 -2 -3 445 153. - - 2.4452392756938934e-01 -4.5549276471138000e-01 - 5.3557026386260986e-01 -2.5560736656188965e-01 - <_> - 1.1557132720947266e+01 - - 1 2 446 3.1695000000000000e+03 0 -1 447 17097. -2 -3 448 - 1.6791500000000000e+04 - - -8.1668007373809814e-01 8.2250398397445679e-01 - -3.6227312684059143e-01 1.6900251805782318e-01 - <_> - 1.1418401718139648e+01 - - 1 2 449 1.7705000000000000e+03 0 -1 450 - 4.6565000000000000e+03 -2 -3 451 4.5550000000000000e+02 - - -1.8939907848834991e-01 5.5706465244293213e-01 - 2.2822033613920212e-02 -6.7216074466705322e-01 - <_> - 1.1332237243652344e+01 - - 1 2 452 1.9500000000000000e+01 0 -1 453 - 5.0000000000000000e-01 -2 -3 454 168. - - 9.8821230232715607e-02 -9.9127775430679321e-01 - 2.8800103068351746e-01 -3.2348513603210449e-01 - <_> - 1.1800554275512695e+01 - - 1 2 455 9.6500000000000000e+01 0 -1 456 - 3.5000000000000000e+00 -2 -3 457 1.2085000000000000e+03 - - 1.2269663810729980e-01 -4.6963310241699219e-01 - 4.6831732988357544e-01 -7.5347024202346802e-01 - <_> - 1.1746677398681641e+01 - - 1 2 458 2.6500000000000000e+01 0 -1 459 - 1.2500000000000000e+01 -2 -3 460 6.2500000000000000e+01 - - 2.9853442311286926e-01 -6.0757899284362793e-01 - 4.3772074580192566e-01 -1.3283115625381470e-01 - <_> - 1.1710562705993652e+01 - - 1 2 461 3.4500000000000000e+01 0 -1 462 - 5.0000000000000000e-01 -2 -3 463 2.0950000000000000e+02 - - 3.1521999835968018e-01 -5.5736678838729858e-01 - 6.7748945951461792e-01 -3.6115031689405441e-02 - <_> - 1.1582207679748535e+01 - - 1 2 464 1.5000000000000000e+00 0 -1 465 - 1.4750000000000000e+02 -2 -3 466 5.0000000000000000e-01 - - -9.5662528276443481e-01 8.8448798656463623e-01 - 5.0583779811859131e-01 -1.2840148806571960e-01 - <_> - 1.1577805519104004e+01 - - 1 2 467 2.6250000000000000e+02 0 -1 468 - 8.5000000000000000e+00 -2 -3 469 2.7050000000000000e+02 - - 5.8746252208948135e-02 -5.1417016983032227e-01 - -4.4025536626577377e-03 7.2468632459640503e-01 - <_> - 1.1909842491149902e+01 - - 1 2 470 3.0500000000000000e+01 0 -1 471 - 9.1500000000000000e+01 -2 -3 472 3.2500000000000000e+01 - - 2.6228722929954529e-01 -8.3183318376541138e-01 - 3.3203727006912231e-01 -2.0215129852294922e-01 - <_> - 1.1820110321044922e+01 - - 1 2 473 3.6150000000000000e+02 0 -1 474 - 7.5500000000000000e+01 -2 -3 475 1.6500000000000000e+01 - - 3.4021586179733276e-02 -7.3799329996109009e-01 - 5.9181433916091919e-01 -8.9732393622398376e-02 - <_> - 1.2058867454528809e+01 - - 1 2 476 2.1850000000000000e+02 0 -1 477 - 1.3970500000000000e+04 -2 -3 478 3.5405000000000000e+03 - - 2.3875749111175537e-01 -3.4735745191574097e-01 - 8.4880095720291138e-01 -3.6369037628173828e-01 - <_> - 1.2003521919250488e+01 - - 1 2 479 1.2045000000000000e+03 0 -1 480 - 5.0000000000000000e-01 -2 -3 481 6.6500000000000000e+01 - - 1.9498512148857117e-01 -4.0264678001403809e-01 - 6.4470326900482178e-01 -4.2276349663734436e-01 - <_> - 1.2398437500000000e+01 - - 1 2 482 1.7500000000000000e+01 0 -1 483 13266. -2 -3 484 - 2.3500000000000000e+01 - - 1.0403804481029510e-01 -7.6852244138717651e-01 - 3.9491611719131470e-01 -1.4494727551937103e-01 - <_> - 1.2834873199462891e+01 - - 1 2 485 8.5000000000000000e+00 0 -1 486 - 1.9500000000000000e+01 -2 -3 487 2.5000000000000000e+00 - - 2.4885479360818863e-02 -6.1086690425872803e-01 - -3.8872721791267395e-01 4.3643516302108765e-01 - <_> - 1.2477423667907715e+01 - - 1 2 488 6.6500000000000000e+01 0 -1 489 - 2.9500000000000000e+01 -2 -3 490 4.4500000000000000e+01 - - -8.9354419708251953e-01 3.1559488177299500e-01 - -5.1763534545898438e-01 2.7538600564002991e-01 - <_> - 1.3054378509521484e+01 - - 1 2 491 8.2350000000000000e+02 0 -1 492 - 9.1500000000000000e+01 -2 -3 493 3.0550000000000000e+02 - - -5.0999827682971954e-02 5.7695519924163818e-01 - -8.2453000545501709e-01 2.1885833144187927e-01 - <_> - 1.3001498222351074e+01 - - 1 2 494 3.5000000000000000e+00 0 -1 495 - 4.5000000000000000e+00 -2 -3 496 1.2545000000000000e+03 - - -3.3553498983383179e-01 4.7332924604415894e-01 - -4.0103676915168762e-01 2.5861555337905884e-01 - <_> - 1.2748070716857910e+01 - - 1 2 497 7.2500000000000000e+01 0 -1 498 - 1.2078500000000000e+04 -2 -3 499 6.1500000000000000e+01 - - -5.6012886762619019e-01 5.0949209928512573e-01 - -3.8095393776893616e-01 3.5849356651306152e-01 - <_> - 1.3219707489013672e+01 - - 1 2 500 5.0000000000000000e-01 0 -1 501 - 4.5000000000000000e+00 -2 -3 502 2.5000000000000000e+00 - - -8.3156263828277588e-01 4.7163730859756470e-01 - 1.4885266125202179e-01 -4.8097932338714600e-01 - <_> - 1.3100829124450684e+01 - - 1 2 503 1.5500000000000000e+01 0 -1 504 - 6.5000000000000000e+00 -2 -3 505 1.6745000000000000e+03 - - 4.8601552844047546e-02 -8.4098070859909058e-01 - 4.4885209202766418e-01 -1.1887902766466141e-01 - <_> - 1.3153789520263672e+01 - - 1 2 506 1.9750000000000000e+02 0 -1 507 - 5.0000000000000000e-01 -2 -3 508 1.3850000000000000e+02 - - 3.5855168104171753e-01 -1.6984774172306061e-01 - -8.2890641689300537e-01 8.5591834783554077e-01 - <_> - 1.3473151206970215e+01 - - 1 2 509 2.0500000000000000e+01 0 -1 510 - 2.3500000000000000e+01 -2 -3 511 8.1050000000000000e+02 - - 3.1073799729347229e-01 -9.3193674087524414e-01 - -1.7174348235130310e-01 4.0613415837287903e-01 - <_> - 1.3465453147888184e+01 - - 1 2 512 2.1265000000000000e+03 0 -1 513 - 9.2950000000000000e+02 -2 -3 514 3.5000000000000000e+00 - - -7.6984455808997154e-03 7.1764069795608521e-01 - 2.0267011225223541e-01 -6.4554244279861450e-01 - <_> - 1.3577540397644043e+01 - - 1 2 515 2.7500000000000000e+01 0 -1 516 36. -2 -3 517 - 4.1350000000000000e+02 - - 1.5204006433486938e-01 -8.1754583120346069e-01 - -9.6264392137527466e-02 4.6634069085121155e-01 - <_> - 1.3565153121948242e+01 - - 1 2 518 8.2500000000000000e+01 0 -1 519 - 8.4500000000000000e+01 -2 -3 520 9545. - - 3.0989632010459900e-01 -6.6030853986740112e-01 - -6.4033728837966919e-01 -2.4311884772032499e-03 - <_> - 1.3631966590881348e+01 - - 1 2 521 2.3500000000000000e+01 0 -1 522 - 5.2500000000000000e+01 -2 -3 523 3.1500000000000000e+01 - - -3.1883838772773743e-01 2.8375336527824402e-01 - 6.9719344377517700e-01 -6.3891428709030151e-01 - <_> - 1.3900455474853516e+01 - - 1 2 524 5.1500000000000000e+01 0 -1 525 - 4.5000000000000000e+00 -2 -3 526 22871. - - -6.8288409709930420e-01 3.8537871837615967e-01 - 2.3610968887805939e-01 -4.6725943684577942e-01 - <_> - 1.3885604858398438e+01 - - 1 2 527 6.3917500000000000e+04 0 -1 528 - 6.5000000000000000e+00 -2 -3 529 9.7500000000000000e+01 - - 1.8357095122337341e-01 -8.4825068712234497e-01 - 4.4022575020790100e-01 -1.7257900536060333e-01 - <_> - 1.4077846527099609e+01 - - 1 2 530 1.9305000000000000e+03 0 -1 531 - 4.5000000000000000e+00 -2 -3 532 5275. - - 3.3539947867393494e-01 -2.5358977913856506e-01 - 8.1407654285430908e-01 -8.9784932136535645e-01 - <_> - 1.4307449340820312e+01 - - 1 2 533 4.2500000000000000e+01 0 -1 534 - 3.2250000000000000e+02 -2 -3 535 1.5000000000000000e+00 - - 8.7229333817958832e-02 -9.4649451971054077e-01 - -5.4333996772766113e-01 2.2960273921489716e-01 - <_> - 1.4230868339538574e+01 - - 1 2 536 4.7500000000000000e+01 0 -1 537 - 5.0000000000000000e-01 -2 -3 538 7.5500000000000000e+01 - - 5.4770493507385254e-01 -7.6581157743930817e-02 - -8.0993747711181641e-01 1. - <_> - 1.4503654479980469e+01 - - 1 2 539 2.1500000000000000e+01 0 -1 540 - 6.7525000000000000e+03 -2 -3 541 3.1500000000000000e+01 - - -1.3048166036605835e-01 -8.7906163930892944e-01 - 2.7278691530227661e-01 -4.8766756057739258e-01 - <_> - 1.4462507247924805e+01 - - 1 2 542 5.0950000000000000e+02 0 -1 543 - 4.8500000000000000e+01 -2 -3 544 2334. - - -4.5064944028854370e-01 1.7299294471740723e-01 - 7.4772566556930542e-01 -4.1147492825984955e-02 - <_> - 1.4535001754760742e+01 - - 1 2 545 3.5000000000000000e+00 0 -1 546 - 4.5000000000000000e+00 -2 -3 547 3.1500000000000000e+01 - - -9.2824006080627441e-01 5.8265477418899536e-01 - -3.6995452642440796e-01 2.3856091499328613e-01 - <_> - 1.4815734863281250e+01 - - 1 2 548 2.0500000000000000e+01 0 -1 549 - 4.5000000000000000e+00 -2 -3 550 5.2500000000000000e+01 - - -8.9162200689315796e-01 2.8073275089263916e-01 - 9.8183512687683105e-02 -7.3680752515792847e-01 - <_> - 1.4583820343017578e+01 - - 1 2 551 1.0500000000000000e+01 0 -1 552 10. -2 -3 553 - 9.0500000000000000e+01 - - -8.9265322685241699e-01 2.6653656363487244e-01 - -4.8498126864433289e-01 4.9194815754890442e-01 - <_> - 1.4590086936950684e+01 - - 1 2 554 1.4075000000000000e+03 0 -1 555 - 8.5000000000000000e+00 -2 -3 556 2.2350000000000000e+02 - - 7.2318482398986816e-01 -6.5714889764785767e-01 - 1.9554860889911652e-02 7.8212785720825195e-01 - <_> - 1.4370420455932617e+01 - - 1 2 557 1.3055000000000000e+03 0 -1 558 - 6.3615000000000000e+03 -2 -3 559 5.5050000000000000e+02 - - 6.6717378795146942e-02 7.7986842393875122e-01 - 4.8897069692611694e-01 -4.9088051915168762e-01 - <_> - 1.4557469367980957e+01 - - 1 2 560 2.0500000000000000e+01 0 -1 561 - 1.9500000000000000e+01 -2 -3 562 7.5000000000000000e+00 - - -6.0846841335296631e-01 7.7918326854705811e-01 - 4.8263064026832581e-01 -1.0205705463886261e-01 - <_> - 1.4732933044433594e+01 - - 1 2 563 9.5000000000000000e+00 0 -1 564 - 5.0000000000000000e-01 -2 -3 565 4.5000000000000000e+00 - - -8.2908272743225098e-01 4.2271518707275391e-01 - 3.5304966568946838e-01 -3.6941051483154297e-01 - <_> - 1.4693087577819824e+01 - - 1 2 566 1.7250000000000000e+02 0 -1 567 59. -2 -3 568 - 1.1475000000000000e+03 - - 1.8885573744773865e-01 -5.3026914596557617e-01 - 3.7803548574447632e-01 -4.6766680479049683e-01 - <_> - 1.4745432853698730e+01 - - 1 2 569 1.3495000000000000e+03 0 -1 570 - 1.8257500000000000e+04 -2 -3 571 2.3425000000000000e+03 - - 6.3086611032485962e-01 -8.6466968059539795e-01 - -5.3896957635879517e-01 5.2345264703035355e-02 - <_> - 1.4932119369506836e+01 - - 1 2 572 2.2500000000000000e+01 0 -1 573 - 1.5000000000000000e+00 -2 -3 574 201. - - 3.3922508358955383e-01 -2.9905751347541809e-01 - 6.2781113386154175e-01 -6.2289994955062866e-01 - <_> - 1.4913761138916016e+01 - - 1 2 575 5.5000000000000000e+00 0 -1 576 - 2.3500000000000000e+01 -2 -3 577 3.1500000000000000e+01 - - -1.2805154547095299e-02 -8.7636989355087280e-01 - 5.5972194671630859e-01 -1.8357984721660614e-02 - <_> - 1.5149147987365723e+01 - - 1 2 578 9.5500000000000000e+01 0 -1 579 - 1.7500000000000000e+01 -2 -3 580 2.3500000000000000e+01 - - 3.1609076261520386e-01 -7.7603405714035034e-01 - -5.4710090160369873e-01 2.3538668453693390e-01 - <_> - 1.5329943656921387e+01 - - 1 2 581 6.5000000000000000e+00 0 -1 582 - 1.2500000000000000e+01 -2 -3 583 1.1050000000000000e+02 - - -6.9671869277954102e-01 4.9136134982109070e-01 - -4.6433421969413757e-01 2.6395168900489807e-01 - <_> - 1.5564647674560547e+01 - - 1 2 584 5.6215000000000000e+03 0 -1 585 - 1.2250000000000000e+02 -2 -3 586 2.3500000000000000e+01 - - 2.3470385372638702e-01 -3.8976871967315674e-01 - -7.1197110414505005e-01 8.2057034969329834e-01 - <_> - 1.5355414390563965e+01 - - 1 2 587 38. 0 -1 588 5.0000000000000000e-01 -2 -3 589 538. - - 1.3751998543739319e-01 -5.2037465572357178e-01 - -5.0987344980239868e-01 4.1290232539176941e-01 - <_> - 1.5045125007629395e+01 - - 1 2 590 1.5645000000000000e+03 0 -1 591 - 5.4325000000000000e+03 -2 -3 592 1.2175000000000000e+03 - - -5.2137178182601929e-01 8.4993147850036621e-01 - -3.6553221940994263e-01 1.5015892684459686e-01 - <_> - 1.5401144027709961e+01 - - 1 2 593 4.9850000000000000e+02 0 -1 594 - 7.4750000000000000e+02 -2 -3 595 1.1765000000000000e+03 - - -6.4674472808837891e-01 3.5601863265037537e-01 - 4.2863798141479492e-01 -5.4054826498031616e-01 - <_> - 1.5869146347045898e+01 - - 1 2 596 1.7500000000000000e+01 0 -1 597 - 1.4500000000000000e+01 -2 -3 598 1.5500000000000000e+01 - - -6.3737052679061890e-01 4.6800240874290466e-01 - 2.9216369986534119e-01 -4.2118266224861145e-01 - <_> - 1.5621976852416992e+01 - - 1 2 599 1.2028050000000000e+05 0 -1 600 - 5.0000000000000000e-01 -2 -3 601 1.6150000000000000e+02 - - 5.1389163732528687e-01 -9.5765459537506104e-01 - -2.4716944992542267e-01 3.0435198545455933e-01 - <_> - 1.5864768028259277e+01 - - 1 2 602 805. 0 -1 603 9.9500000000000000e+01 -2 -3 604 142. - - 2.4279133975505829e-01 -5.3714054822921753e-01 - -7.2764933109283447e-01 9.6386188268661499e-01 - <_> - 1.6094741821289062e+01 - - 1 2 605 1.3500000000000000e+01 0 -1 606 - 3.8500000000000000e+01 -2 -3 607 6.3500000000000000e+01 - - -6.6710120439529419e-01 6.3659375905990601e-01 - 5.6683868169784546e-01 -7.7470704913139343e-02 - <_> - 1.6352821350097656e+01 - - 1 2 608 2.4500000000000000e+01 0 -1 609 321. -2 -3 610 - 2.1500000000000000e+01 - - 3.7493336200714111e-01 -4.8655620217323303e-01 - -3.4665739536285400e-01 4.6393311023712158e-01 - <_> - 1.6565885543823242e+01 - - 1 2 611 99. 0 -1 612 2.7500000000000000e+01 -2 -3 613 18. - - -4.0105590224266052e-01 2.1306316554546356e-01 - 9.1738814115524292e-01 -9.6910119056701660e-01 - <_> - 1.6171833038330078e+01 - - 1 2 614 6.2500000000000000e+01 0 -1 615 850. -2 -3 616 - 6.4350000000000000e+02 - - 3.9383631944656372e-01 -3.4801158308982849e-01 - -5.9990471601486206e-01 2.6293095946311951e-01 - <_> - 1.6745443344116211e+01 - - 1 2 617 1.2715000000000000e+03 0 -1 618 - 4.5000000000000000e+00 -2 -3 619 1.0584500000000000e+04 - - 3.5729202628135681e-01 -3.7123405933380127e-01 - 5.7361000776290894e-01 -7.0969957113265991e-01 - <_> - 1.6956495285034180e+01 - - 1 2 620 3.6500000000000000e+01 0 -1 621 - 1.5000000000000000e+00 -2 -3 622 3.2500000000000000e+01 - - 4.9200624227523804e-01 -8.8115519285202026e-01 - -6.2640070915222168e-01 2.1105219423770905e-01 - <_> - 1.6578645706176758e+01 - - 1 2 623 5.5850000000000000e+02 0 -1 624 - 1.2405000000000000e+03 -2 -3 625 6.2065000000000000e+03 - - -3.0536270141601562e-01 5.6700426340103149e-01 - 5.8548355102539062e-01 -3.8756856322288513e-01 - <_> - 1.6797395706176758e+01 - - 1 2 626 6.3500000000000000e+01 0 -1 627 - 2.6050000000000000e+02 -2 -3 628 3.4035000000000000e+03 - - 2.1875059604644775e-01 -8.0542641878128052e-01 - 7.2240287065505981e-01 -7.4785083532333374e-01 - <_> - 1.7109027862548828e+01 - - 1 2 629 3.8500000000000000e+01 0 -1 630 - 8.5000000000000000e+00 -2 -3 631 6.5000000000000000e+00 - - 6.9990634918212891e-01 -6.7117756605148315e-01 - 5.0323921442031860e-01 -9.7235314548015594e-02 - <_> - 1.7138694763183594e+01 - - 1 2 632 2.2500000000000000e+01 0 -1 633 - 3.5000000000000000e+00 -2 -3 634 2.5850000000000000e+02 - - 2.9667703434824944e-02 -6.7911773920059204e-01 - -3.2311308383941650e-01 3.8892340660095215e-01 - <_> - 1.7337394714355469e+01 - - 1 2 635 1.5450000000000000e+02 0 -1 636 - 2.5000000000000000e+00 -2 -3 637 3.1450000000000000e+02 - - -7.9533338546752930e-01 1.9869966804981232e-01 - -6.8889272212982178e-01 6.1526125669479370e-01 - <_> - 1.7321151733398438e+01 - - 1 2 638 1.0500000000000000e+01 0 -1 639 36. -2 -3 640 - 2.1500000000000000e+01 - - -8.3758604526519775e-01 3.5460218787193298e-01 - 2.2363138198852539e-01 -5.2678769826889038e-01 - <_> - 1.7182849884033203e+01 - - 1 2 641 4.6085000000000000e+03 0 -1 642 - 5.8500000000000000e+01 -2 -3 643 1.9495000000000000e+03 - - -7.5954502820968628e-01 4.3844437599182129e-01 - 5.2219676971435547e-01 -1.3830167055130005e-01 - <_> - 1.6850194931030273e+01 - - 1 2 644 1.5000000000000000e+00 0 -1 645 - 5.3500000000000000e+01 -2 -3 646 5.0000000000000000e-01 - - -3.6336588859558105e-01 3.9829358458518982e-01 - 1.3566142320632935e-01 -5.0935441255569458e-01 - <_> - 1.7548809051513672e+01 - - 1 2 647 5.0000000000000000e-01 0 -1 648 - 4.5000000000000000e+00 -2 -3 649 4.8150000000000000e+02 - - -6.3685965538024902e-01 6.9861376285552979e-01 - -2.4660472571849823e-01 5.1089668273925781e-01 - <_> - 1.7800493240356445e+01 - - 1 2 650 8.4115000000000000e+03 0 -1 651 - 3.5000000000000000e+00 -2 -3 652 1.0500000000000000e+01 - - -4.2067098617553711e-01 2.5168481469154358e-01 - 3.3256745338439941e-01 -8.4237796068191528e-01 - <_> - 1.7848138809204102e+01 - - 1 2 653 1.0500000000000000e+01 0 -1 654 69. -2 -3 655 - 9.5500000000000000e+01 - - -6.9294911623001099e-01 4.2984691262245178e-01 - -6.0193759202957153e-01 4.7644726932048798e-02 - <_> - 1.7507314682006836e+01 - - 1 2 656 8.5000000000000000e+00 0 -1 657 - 8.5000000000000000e+00 -2 -3 658 6.4500000000000000e+01 - - -1. 5.8663016557693481e-01 -3.4082308411598206e-01 - 3.3277565240859985e-01 - <_> - 1.7846509933471680e+01 - - 1 2 659 6.9500000000000000e+01 0 -1 660 - 1.5500000000000000e+01 -2 -3 661 1.5000000000000000e+00 - - 3.3919540047645569e-01 -2.3123474419116974e-01 - -6.8450891971588135e-01 1.9382451474666595e-01 - <_> - 1.7992757797241211e+01 - - 1 2 662 1.2135000000000000e+03 0 -1 663 - 5.5000000000000000e+00 -2 -3 664 9912. - - 1.4624653756618500e-01 -5.0702661275863647e-01 - 5.2294051647186279e-01 -3.3612698316574097e-01 - <_> - 1.8306097030639648e+01 - - 1 2 665 1.1150000000000000e+02 0 -1 666 - 2.9500000000000000e+01 -2 -3 667 131. - - 2.2407530248165131e-01 -4.9484744668006897e-01 - 4.4897791743278503e-01 -5.9033888578414917e-01 - <_> - 1.8481115341186523e+01 - - 1 2 668 5.4500000000000000e+01 0 -1 669 - 4.5000000000000000e+00 -2 -3 670 1.0450000000000000e+02 - - 9.0135312080383301e-01 -8.8288795948028564e-01 - 1.7501948773860931e-01 -5.7581090927124023e-01 - <_> - 1.8067760467529297e+01 - - 1 2 671 3.3500000000000000e+01 0 -1 672 - 5.0000000000000000e-01 -2 -3 673 9.3500000000000000e+01 - - 3.3020740747451782e-01 -5.1798826456069946e-01 - -4.4331407546997070e-01 3.4977889060974121e-01 - <_> - 1.8271715164184570e+01 - - 1 2 674 1.6950000000000000e+02 0 -1 675 - 5.5000000000000000e+00 -2 -3 676 1.5850000000000000e+02 - - -7.4128860235214233e-01 2.0395421981811523e-01 - -6.4517414569854736e-01 1. - <_> - 1.8107772827148438e+01 - - 1 2 677 3.4335000000000000e+03 0 -1 678 - 6.8955000000000000e+03 -2 -3 679 8.2335000000000000e+03 - - -1.0244774073362350e-01 7.3749846220016479e-01 - -4.6216171979904175e-01 7.2175997495651245e-01 - <_> - 1.8459823608398438e+01 - - 1 2 680 4.5000000000000000e+00 0 -1 681 149. -2 -3 682 - 3.5000000000000000e+00 - - -8.7881535291671753e-01 3.5205116868019104e-01 - 2.8036254644393921e-01 -4.4955471158027649e-01 - <_> - 1.8034639358520508e+01 - - 1 2 683 9.2500000000000000e+01 0 -1 684 - 6.0500000000000000e+01 -2 -3 685 1.0795000000000000e+03 - - 3.0652499198913574e-01 -4.2518511414527893e-01 - 4.2748662829399109e-01 -7.5712633132934570e-01 - <_> - 1.8265748977661133e+01 - - 1 2 686 4137. 0 -1 687 4.5000000000000000e+00 -2 -3 688 - 2.2500000000000000e+01 - - 2.6524448394775391e-01 -8.7384039163589478e-01 - 2.3110976815223694e-01 -4.6121290326118469e-01 - <_> - 1.8894989013671875e+01 - - 1 2 689 8.2650000000000000e+02 0 -1 690 - 3.0650000000000000e+02 -2 -3 691 5.6025000000000000e+03 - - -3.5010933876037598e-01 4.3205916881561279e-01 - 6.2924057245254517e-01 -4.4751787185668945e-01 - <_> - 1.9186059951782227e+01 - - 1 2 692 1.1500000000000000e+01 0 -1 693 10537. -2 -3 694 - 2.8500000000000000e+01 - - 7.5397258996963501e-01 -8.4067875146865845e-01 - 2.9107019305229187e-01 -2.9084861278533936e-01 - <_> - 1.9097457885742188e+01 - - 1 2 695 5.0000000000000000e-01 0 -1 696 - 2.3365000000000000e+03 -2 -3 697 53. - - -2.0022928714752197e-01 5.5956262350082397e-01 - -3.5728842020034790e-01 6.0947358608245850e-01 - <_> - 1.9231519699096680e+01 - - 1 2 698 2.9250000000000000e+02 0 -1 699 7389. -2 -3 700 - 7.1615000000000000e+03 - - 4.6205502748489380e-01 -3.7696495652198792e-01 - -5.6401371955871582e-01 1.2572592496871948e-01 - <_> - 1.9182878494262695e+01 - - 1 2 701 1.5000000000000000e+00 0 -1 702 2558. -2 -3 703 - 2.5000000000000000e+00 - - 5.7061773538589478e-01 -8.8573408126831055e-01 - 5.6795483827590942e-01 -4.8640340566635132e-02 - <_> - 1.9205448150634766e+01 - - 1 2 704 6.7250000000000000e+02 0 -1 705 - 4.5185000000000000e+03 -2 -3 706 1.6950000000000000e+02 - - 2.2569710388779640e-02 -5.9597754478454590e-01 -1. - 9.1055244207382202e-01 - <_> - 1.9722917556762695e+01 - - 1 2 707 5.2150000000000000e+02 0 -1 708 - 2.2500000000000000e+01 -2 -3 709 22. - - -3.8346976041793823e-01 1.7193076014518738e-01 - -7.7268058061599731e-01 5.1746833324432373e-01 - <_> - 1.9223962783813477e+01 - - 1 2 710 1.6450000000000000e+02 0 -1 711 - 6.0500000000000000e+01 -2 -3 712 4.4500000000000000e+01 - - 2.2410076856613159e-01 -6.7257648706436157e-01 - -6.6855657100677490e-01 8.4185588359832764e-01 - <_> - 1.9324115753173828e+01 - - 1 2 713 3.1500000000000000e+01 0 -1 714 885. -2 -3 715 458. - - 3.4352478384971619e-01 -6.2290155887603760e-01 - -1.5769523382186890e-01 4.6984970569610596e-01 - <_> - 1.9645074844360352e+01 - - 1 2 716 1.5000000000000000e+00 0 -1 717 - 2.7500000000000000e+01 -2 -3 718 5.0000000000000000e-01 - - -1.5117371082305908e-01 5.1611447334289551e-01 - 3.8312494754791260e-01 -4.8121353983879089e-01 - <_> - 1.9339143753051758e+01 - - 1 2 719 355. 0 -1 720 5.5000000000000000e+00 -2 -3 721 - 4.1500000000000000e+01 - - -3.9813804626464844e-01 2.2346007823944092e-01 1. - -8.0484783649444580e-01 - <_> - 1.9826204299926758e+01 - - 1 2 722 5.0000000000000000e-01 0 -1 723 - 1.4145000000000000e+03 -2 -3 724 2.2500000000000000e+01 - - 4.8705908656120300e-01 -4.7939151525497437e-01 - -4.1103795170783997e-01 3.4255331754684448e-01 - <_> - 2.0040077209472656e+01 - - 1 2 725 1.5585000000000000e+03 0 -1 726 - 7.5450000000000000e+02 -2 -3 727 7.0250000000000000e+02 - - -6.1711019277572632e-01 2.1387414634227753e-01 - 8.2314563915133476e-03 -8.8682103157043457e-01 - <_> - 1.9832237243652344e+01 - - 1 2 728 3.7250000000000000e+02 0 -1 729 - 1.2500000000000000e+01 -2 -3 730 5.0000000000000000e-01 - - 6.4650267362594604e-01 -6.3438403606414795e-01 - 8.2046084105968475e-02 -4.0398535132408142e-01 - <_> - 2.0015359878540039e+01 - - 1 2 731 616. 0 -1 732 5.3950000000000000e+02 -2 -3 733 - 1.6500000000000000e+01 - - 8.7944704294204712e-01 -8.7063318490982056e-01 - -7.1043938398361206e-01 1.8312272429466248e-01 - <_> - 1.9969459533691406e+01 - - 1 2 734 5.5500000000000000e+01 0 -1 735 - 1.8500000000000000e+01 -2 -3 736 463. - - -4.5961013436317444e-01 5.2103579044342041e-01 - -6.5900236368179321e-01 -4.5900702476501465e-02 - <_> - 1.9850994110107422e+01 - - 1 2 737 1.5000000000000000e+00 0 -1 738 - 3.5500000000000000e+01 -2 -3 739 1.3995000000000000e+03 - - -4.4971930980682373e-01 5.4433470964431763e-01 - 1.3450010120868683e-01 -4.4755488634109497e-01 - <_> - 1.9611703872680664e+01 - - 1 2 740 1.2185000000000000e+03 0 -1 741 - 2.5000000000000000e+00 -2 -3 742 2.0500000000000000e+01 - - -1.1004138737916946e-02 -6.4876526594161987e-01 - 5.7901018857955933e-01 -2.3929107189178467e-01 - <_> - 1.9846769332885742e+01 - - 1 2 743 9.5000000000000000e+00 0 -1 744 26. -2 -3 745 - 7.5000000000000000e+00 - - 2.8899505734443665e-01 -7.0432722568511963e-01 - 2.3506632447242737e-01 -6.7175412178039551e-01 - <_> - 1.9991693496704102e+01 - - 1 2 746 5.5000000000000000e+00 0 -1 747 119. -2 -3 748 - 1.2950000000000000e+02 - - 1. -9.5935773849487305e-01 1.4492283761501312e-01 - -6.2346059083938599e-01 - <_> - 2.0697137832641602e+01 - - 1 2 749 108. 0 -1 750 5.5000000000000000e+00 -2 -3 751 - 6.0050000000000000e+02 - - 2.0598402619361877e-01 -3.1419786810874939e-01 - 7.0544409751892090e-01 -9.1675537824630737e-01 - <_> - 2.0869754791259766e+01 - - 1 2 752 2.1500000000000000e+01 0 -1 753 - 8.5000000000000000e+00 -2 -3 754 5.2500000000000000e+01 - - -9.2930352687835693e-01 1. 1.7261737585067749e-01 - -7.1494102478027344e-01 - <_> - 2.0861036300659180e+01 - - 1 2 755 5.0000000000000000e-01 0 -1 756 - 6.5000000000000000e+00 -2 -3 757 36104. - - -9.8012816905975342e-01 3.0874124169349670e-01 - -4.9350947141647339e-01 1.4333745837211609e-01 - <_> - 2.0605552673339844e+01 - - 1 2 758 5.4500000000000000e+01 0 -1 759 - 5.6350000000000000e+02 -2 -3 760 1.5625000000000000e+03 - - 2.8180310130119324e-01 -3.0899211764335632e-01 - 6.7988240718841553e-01 -8.8957315683364868e-01 - <_> - 2.0792449951171875e+01 - - 1 2 761 7.4500000000000000e+01 0 -1 762 - 2.1350000000000000e+02 -2 -3 763 4.5000000000000000e+00 - - 7.5075513124465942e-01 -8.8623046875000000e-01 - 4.6418187022209167e-01 -9.8970189690589905e-02 - <_> - 2.0991796493530273e+01 - - 1 2 764 3985. 0 -1 765 5.5000000000000000e+00 -2 -3 766 - 5.5000000000000000e+00 - - 3.1011736392974854e-01 -2.7613282203674316e-01 -1. - 8.9613044261932373e-01 - <_> - 2.1320064544677734e+01 - - 1 2 767 2.8500000000000000e+01 0 -1 768 - 2.6250000000000000e+02 -2 -3 769 2.6500000000000000e+01 - - 7.0724177360534668e-01 -4.7540894150733948e-01 - 3.2826820015907288e-01 -6.3711547851562500e-01 - <_> - 2.1143175125122070e+01 - - 1 2 770 1.7500000000000000e+01 0 -1 771 - 5.8500000000000000e+01 -2 -3 772 7704. - - -6.2765136361122131e-02 4.9819609522819519e-01 - 1.8703785538673401e-01 -9.2927688360214233e-01 - <_> - 2.1136123657226562e+01 - - 1 2 773 4.5000000000000000e+00 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 6.3500000000000000e+01 - - -8.5042881965637207e-01 3.7720718979835510e-01 - -6.6263186931610107e-01 -7.0531466044485569e-03 - <_> - 2.0957967758178711e+01 - - 1 2 776 2.3355000000000000e+03 0 -1 777 - 1.6655000000000000e+03 -2 -3 778 7.7950000000000000e+02 - - -5.8912044763565063e-01 7.2663074731826782e-01 - 7.1329838037490845e-01 -9.2555418610572815e-02 - <_> - 2.1328319549560547e+01 - - 1 2 779 4.5000000000000000e+00 0 -1 780 - 1.7500000000000000e+01 -2 -3 781 116. - - 5.8393400907516479e-01 -5.6582391262054443e-01 - -7.0427477359771729e-01 -3.2516807317733765e-02 - <_> - 2.1190340042114258e+01 - - 1 2 782 5.0000000000000000e-01 0 -1 783 - 5.5000000000000000e+00 -2 -3 784 2.2500000000000000e+01 - - -7.9387390613555908e-01 4.3818581104278564e-01 - -4.3716219067573547e-01 2.7609312534332275e-01 - <_> - 2.1414947509765625e+01 - - 1 2 785 1.7500000000000000e+01 0 -1 786 - 2.0500000000000000e+01 -2 -3 787 3.4500000000000000e+01 - - -3.2550397515296936e-01 2.9646944999694824e-01 - 3.9801727980375290e-02 -8.1744748353958130e-01 - <_> - 2.1027912139892578e+01 - - 1 2 788 3.5000000000000000e+00 0 -1 789 - 1.0500000000000000e+01 -2 -3 790 3.0015000000000000e+03 - - -5.8203905820846558e-01 3.9097124338150024e-01 - 4.4877341389656067e-01 -4.5889684557914734e-01 - <_> - 2.1614578247070312e+01 - - 1 2 791 1.2545000000000000e+03 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 21. - - 3.3954218029975891e-01 -3.9357089996337891e-01 - -7.9993861913681030e-01 5.8666568994522095e-01 - <_> - 2.2001014709472656e+01 - - 1 2 794 1.5495000000000000e+03 0 -1 795 751. -2 -3 796 - 1.4500000000000000e+01 - - -6.1558878421783447e-01 4.7567668557167053e-01 - 3.8643726706504822e-01 -4.9177539348602295e-01 - <_> - 2.2125329971313477e+01 - - 1 2 797 3.5500000000000000e+01 0 -1 798 - 1.0450000000000000e+02 -2 -3 799 1.2500000000000000e+01 - - 1.7887133359909058e-01 -8.5177820920944214e-01 - 4.1519433259963989e-01 -1.6076141595840454e-01 - <_> - 2.2388074874877930e+01 - - 1 2 800 550. 0 -1 801 3445. -2 -3 802 2.1850000000000000e+02 - - 1. -8.8448894023895264e-01 -2.4786205589771271e-01 - 2.6274520158767700e-01 - <_> - 2.2539171218872070e+01 - - 1 2 803 116554. 0 -1 804 1.7350000000000000e+02 -2 -3 805 - 8.9500000000000000e+01 - - 2.4936345219612122e-01 -6.2610012292861938e-01 - -6.6242986917495728e-01 4.0655055642127991e-01 - <_> - 2.2177883148193359e+01 - - 1 2 806 4.5000000000000000e+00 0 -1 807 - 5.0000000000000000e-01 -2 -3 808 3.5065000000000000e+03 - - -7.4715948104858398e-01 3.9860600233078003e-01 - -5.3111910820007324e-01 1.2362924218177795e-01 - <_> - 2.2504861831665039e+01 - - 1 2 809 1.4865000000000000e+03 0 -1 810 - 5.0000000000000000e-01 -2 -3 811 29. - - 1.3726322352886200e-01 -6.5520441532135010e-01 - -7.5685930252075195e-01 3.2698005437850952e-01 - <_> - 2.2686376571655273e+01 - - 1 2 812 5.2500000000000000e+01 0 -1 813 - 2.6500000000000000e+01 -2 -3 814 3.0500000000000000e+01 - - -1.5744365751743317e-01 5.0805997848510742e-01 - -7.4109727144241333e-01 3.1853440403938293e-01 - <_> - 2.2791370391845703e+01 - - 1 2 815 2.3450000000000000e+02 0 -1 816 - 2.5000000000000000e+00 -2 -3 817 147638. - - -8.8153153657913208e-02 5.4080992937088013e-01 - 4.0426537394523621e-01 -6.1521077156066895e-01 - <_> - 2.2746583938598633e+01 - - 1 2 818 2.2500000000000000e+01 0 -1 819 - 3.7650000000000000e+02 -2 -3 820 3.5000000000000000e+00 - - 8.3446598052978516e-01 -8.2142156362533569e-01 - 6.4422589540481567e-01 -4.4787917286157608e-02 - <_> - 2.2948705673217773e+01 - - 1 2 821 1.0500000000000000e+01 0 -1 822 201. -2 -3 823 - 6.7500000000000000e+01 - - -2.8939151763916016e-01 3.3829051256179810e-01 - -5.8153116703033447e-01 3.8105338811874390e-01 - <_> - 2.2919631958007812e+01 - - 1 2 824 4.5000000000000000e+00 0 -1 825 - 5.2075000000000000e+03 -2 -3 826 3.8500000000000000e+01 - - 6.2978500127792358e-01 -1.7962990701198578e-01 - -6.0869598388671875e-01 -2.9075229540467262e-02 - <_> - 2.3112272262573242e+01 - - 1 2 827 456. 0 -1 828 2.1500000000000000e+01 -2 -3 829 271. - - -6.7311352491378784e-01 1.9264096021652222e-01 - -7.6656156778335571e-01 7.5126051902770996e-01 - <_> - 2.3314619064331055e+01 - - 1 2 830 9.5000000000000000e+00 0 -1 831 62. -2 -3 832 - 1.0250000000000000e+02 - - 5.3542816638946533e-01 -7.8225767612457275e-01 - -4.1664305329322815e-01 2.2309158742427826e-01 - <_> - 2.3092792510986328e+01 - - 1 2 833 1.6245000000000000e+03 0 -1 834 - 2.1405000000000000e+03 -2 -3 835 2.3500000000000000e+01 - - 7.6887971162796021e-01 -7.8312724828720093e-01 - 3.3704435825347900e-01 -2.2182606160640717e-01 - <_> - 2.3098850250244141e+01 - - 1 2 836 5.7500000000000000e+01 0 -1 837 30. -2 -3 838 - 1.1750000000000000e+02 - - -3.9047434926033020e-01 7.0053535699844360e-01 - 6.3777458667755127e-01 -1.5085510909557343e-01 - <_> - 2.3334737777709961e+01 - - 1 2 839 1.9350000000000000e+02 0 -1 840 20715. -2 -3 841 - 3.5000000000000000e+00 - - -1.6165058314800262e-01 5.8560174703598022e-01 - 6.2762081623077393e-02 -5.0060212612152100e-01 - <_> - 2.3548194885253906e+01 - - 1 2 842 1.5500000000000000e+01 0 -1 843 - 4.5000000000000000e+00 -2 -3 844 318. - - 6.7111068964004517e-01 -8.1105804443359375e-01 - 2.1345792710781097e-01 -6.4082610607147217e-01 - <_> - 2.3465780258178711e+01 - - 1 2 845 1.5000000000000000e+00 0 -1 846 - 9.6250000000000000e+02 -2 -3 847 1.0500000000000000e+01 - - 3.3311456441879272e-01 -7.9367685317993164e-01 - 5.8400928974151611e-01 -8.2414992153644562e-02 - <_> - 2.3698833465576172e+01 - - 1 2 848 2.5750000000000000e+02 0 -1 849 - 2.0622500000000000e+04 -2 -3 850 133. - - -2.1840496361255646e-01 6.1215102672576904e-01 - 7.2797334194183350e-01 -7.8106528520584106e-01 - <_> - 2.4240703582763672e+01 - - 1 2 851 62616. 0 -1 852 5.1750000000000000e+02 -2 -3 853 - 2.0985000000000000e+03 - - -7.3088161647319794e-02 5.4187005758285522e-01 - -9.7861820459365845e-01 8.4708303213119507e-01 - <_> - 2.4200925827026367e+01 - - 1 2 854 13008. 0 -1 855 1571. -2 -3 856 45. - - 6.6456145048141479e-01 -3.9776403456926346e-02 - -8.6307746171951294e-01 1. - <_> - 2.4082960128784180e+01 - - 1 2 857 3.5000000000000000e+00 0 -1 858 - 9.5000000000000000e+00 -2 -3 859 3.5000000000000000e+00 - - -1. 1. 2.9574161767959595e-01 -2.3182141780853271e-01 - <_> - 2.4084737777709961e+01 - - 1 2 860 3.7500000000000000e+01 0 -1 861 245. -2 -3 862 - 7.5000000000000000e+00 - - 4.1369399428367615e-01 -4.1193068027496338e-01 - 5.4411876201629639e-01 -1.9174022972583771e-01 - <_> - 2.3971153259277344e+01 - - 1 2 863 7.2500000000000000e+01 0 -1 864 - 2.5500000000000000e+01 -2 -3 865 5620. - - 4.0953439474105835e-01 -7.1287387609481812e-01 - 2.9135236144065857e-01 -4.4266882538795471e-01 - <_> - 2.4037570953369141e+01 - - 1 2 866 2.4500000000000000e+01 0 -1 867 - 2.1500000000000000e+01 -2 -3 868 1.3850000000000000e+02 - - -6.6728180646896362e-01 8.0503904819488525e-01 - 2.9000800848007202e-01 -3.3851844072341919e-01 - <_> - 2.4266254425048828e+01 - - 1 2 869 5.0000000000000000e-01 0 -1 870 - 1.7250000000000000e+02 -2 -3 871 2.2350000000000000e+02 - - 4.8248341679573059e-01 -3.8941776752471924e-01 - -3.1365787982940674e-01 5.1915067434310913e-01 - <_> - 2.4528257369995117e+01 - - 1 2 872 4.3500000000000000e+01 0 -1 873 38. -2 -3 874 - 1.8500000000000000e+01 - - 8.9310199022293091e-02 -7.2979074716567993e-01 - -8.7608027458190918e-01 2.6200246810913086e-01 - <_> - 2.4948534011840820e+01 - - 1 2 875 1.7500000000000000e+01 0 -1 876 - 5.0000000000000000e-01 -2 -3 877 1.9050000000000000e+02 - - 1.2763984501361847e-01 -6.1743724346160889e-01 - 4.2027613520622253e-01 -3.6524018645286560e-01 - <_> - 2.4699710845947266e+01 - - 1 2 878 1.5500000000000000e+01 0 -1 879 - 9.5000000000000000e+00 -2 -3 880 1.1950000000000000e+02 - - -7.6706290245056152e-01 4.8537570238113403e-01 - -5.4855662584304810e-01 8.2174651324748993e-02 - <_> - 2.4984062194824219e+01 - - 1 2 881 1.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 7.4500000000000000e+01 - - -9.5929491519927979e-01 2.8435263037681580e-01 - -5.6600302457809448e-01 1.5080869197845459e-01 - <_> - 2.5305467605590820e+01 - - 1 2 884 1.5000000000000000e+00 0 -1 885 - 1.4500000000000000e+01 -2 -3 886 5.2150000000000000e+02 - - 3.2140514254570007e-01 -7.5512856245040894e-01 - -5.6036186218261719e-01 1.1670445650815964e-01 - <_> - 2.5274513244628906e+01 - - 1 2 887 1.9500000000000000e+01 0 -1 888 - 1.0650000000000000e+02 -2 -3 889 8.4050000000000000e+02 - - -8.7158387899398804e-01 4.3117862939834595e-01 - 1.4426548779010773e-01 -4.6586552262306213e-01 - <_> - 2.4883895874023438e+01 - - 1 2 890 3.0650000000000000e+02 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 4.5500000000000000e+01 - - 1.8699711561203003e-01 -3.9061647653579712e-01 - -7.0082974433898926e-01 6.7297667264938354e-01 - <_> - 2.5504806518554688e+01 - - 1 2 893 5.0000000000000000e-01 0 -1 894 - 3.1151500000000000e+04 -2 -3 895 500. - - 6.5120726823806763e-01 -4.1004878282546997e-01 - -4.7606337070465088e-01 9.5995731651782990e-02 - <_> - 2.5152439117431641e+01 - - 1 2 896 5.5000000000000000e+00 0 -1 897 - 1.9500000000000000e+01 -2 -3 898 5.9500000000000000e+01 - - -1.2321064621210098e-01 6.1841166019439697e-01 - -3.6375361680984497e-01 5.2369672060012817e-01 - <_> - 2.5155344009399414e+01 - - 1 2 899 1.8674500000000000e+04 0 -1 900 - 2.1850000000000000e+02 -2 -3 901 8562. - - -1.6005823388695717e-02 6.5699905157089233e-01 - -9.5848602056503296e-01 5.1249152421951294e-01 - <_> - 2.5483896255493164e+01 - - 1 2 902 9.1500000000000000e+01 0 -1 903 - 5.4500000000000000e+01 -2 -3 904 1673. - - -1.8930622935295105e-01 3.2855287194252014e-01 - 3.8335686922073364e-01 -9.2048138380050659e-01 - <_> - 2.5274023056030273e+01 - - 1 2 905 9.0500000000000000e+01 0 -1 906 - 2.9500000000000000e+01 -2 -3 907 161. - - 1.9278690218925476e-01 -4.3163070082664490e-01 - -8.2271754741668701e-01 6.6138559579849243e-01 - <_> - 2.5197338104248047e+01 - - 1 2 908 6.0500000000000000e+01 0 -1 909 - 3.5000000000000000e+00 -2 -3 910 2.1500000000000000e+01 - - 1.6147840023040771e-01 -7.2664386034011841e-01 - 6.0210800170898438e-01 -7.6684340834617615e-02 - <_> - 2.5375751495361328e+01 - - 1 2 911 1.2500000000000000e+01 0 -1 912 - 1.0500000000000000e+01 -2 -3 913 3.5000000000000000e+00 - - 3.1757584214210510e-01 -9.6368086338043213e-01 - 3.0798566341400146e-01 -2.2424852848052979e-01 - <_> - 2.5239341735839844e+01 - - 1 2 914 2.0500000000000000e+01 0 -1 915 - 5.0000000000000000e-01 -2 -3 916 5.2500000000000000e+01 - - 5.4820358753204346e-01 -2.6598191261291504e-01 - 6.2160044908523560e-01 -6.1119222640991211e-01 - <_> - 2.5769451141357422e+01 - - 1 2 917 8.5000000000000000e+00 0 -1 918 - 3.5000000000000000e+00 -2 -3 919 785. - - -5.2361053228378296e-01 1.3663402758538723e-02 - 5.3010904788970947e-01 -5.6690508127212524e-01 - <_> - 2.6132120132446289e+01 - - 1 2 920 3.5000000000000000e+00 0 -1 921 - 5.5000000000000000e+00 -2 -3 922 2.7500000000000000e+01 - - -3.4756454825401306e-01 6.6776388883590698e-01 - -3.2966667413711548e-01 3.6266979575157166e-01 - <_> - 2.5398084640502930e+01 - - 1 2 923 3.7500000000000000e+01 0 -1 924 - 4.5450000000000000e+02 -2 -3 925 76. - - -5.9789156913757324e-01 2.5262823700904846e-01 - -7.3403567075729370e-01 2.0674343407154083e-01 - <_> - 2.5510837554931641e+01 - - 1 2 926 11321. 0 -1 927 2.5000000000000000e+00 -2 -3 928 - 1.1450000000000000e+02 - - -8.3973264694213867e-01 1.1275193840265274e-01 - -9.1843432188034058e-01 8.7821447849273682e-01 - <_> - 2.6130455017089844e+01 - - 1 2 929 6.5000000000000000e+00 0 -1 930 3083. -2 -3 931 - 3.0875000000000000e+03 - - 4.2603471875190735e-01 -3.6732077598571777e-01 - -4.1711282730102539e-01 6.1961770057678223e-01 - <_> - 2.6262090682983398e+01 - - 1 2 932 17935. 0 -1 933 425. -2 -3 934 - 2.7176500000000000e+04 - - 4.5509326457977295e-01 -6.6757386922836304e-01 - -5.3166776895523071e-01 1.3163578510284424e-01 - <_> - 2.6658596038818359e+01 - - 1 2 935 1.7500000000000000e+01 0 -1 936 - 1.1745000000000000e+03 -2 -3 937 5.0000000000000000e-01 - - 2.5388157367706299e-01 -7.9901087284088135e-01 - 4.5095619559288025e-01 -1.0241491347551346e-01 - <_> - 2.6969305038452148e+01 - - 1 2 938 3.0500000000000000e+01 0 -1 939 - 2.4500000000000000e+01 -2 -3 940 2.2500000000000000e+01 - - 5.1047235727310181e-02 -8.9242154359817505e-01 - 3.1070950627326965e-01 -2.6842564344406128e-01 - <_> - 2.6705583572387695e+01 - - 1 2 941 1.3050000000000000e+02 0 -1 942 - 3.4500000000000000e+01 -2 -3 943 2.2150000000000000e+02 - - -1.1592853814363480e-01 -7.7454018592834473e-01 - 4.5384824275970459e-01 -3.1817260384559631e-01 - <_> - 2.6782285690307617e+01 - - 1 2 944 1.7735000000000000e+03 0 -1 945 - 9.5000000000000000e+00 -2 -3 946 4.5705000000000000e+03 - - -3.9006590843200684e-02 -9.5107847452163696e-01 - -6.5736269950866699e-01 1.7125985026359558e-01 - <_> - 2.7105680465698242e+01 - - 1 2 947 1.7625000000000000e+03 0 -1 948 - 1.3850000000000000e+02 -2 -3 949 1.9750000000000000e+02 - - 3.6351567506790161e-01 -5.5703014135360718e-01 - 1.4079628884792328e-01 -5.2406501770019531e-01 - <_> - 2.7263711929321289e+01 - - 1 2 950 2.5000000000000000e+00 0 -1 951 - 5.1850000000000000e+02 -2 -3 952 1.0500000000000000e+01 - - 6.5141850709915161e-01 -9.1679638624191284e-01 - 2.9593178629875183e-01 -2.6542136073112488e-01 - <_> - 2.6919979095458984e+01 - - 1 2 953 1286. 0 -1 954 5.0500000000000000e+01 -2 -3 955 - 9549. - - 2.3069593310356140e-01 -3.4373316168785095e-01 - 7.6501649618148804e-01 -1.6475467383861542e-01 - <_> - 2.7302589416503906e+01 - - 1 2 956 3.0500000000000000e+01 0 -1 957 - 3.5000000000000000e+00 -2 -3 958 20. - - 4.2295122146606445e-01 -5.0685709714889526e-01 - -6.1503076553344727e-01 3.8261166214942932e-01 - <_> - 2.7030504226684570e+01 - - 1 2 959 1.5000000000000000e+00 0 -1 960 - 4.2500000000000000e+01 -2 -3 961 7879. - - -8.3279174566268921e-01 3.1151020526885986e-01 - 5.7181537151336670e-01 -4.0998581051826477e-01 - <_> - 2.7195131301879883e+01 - - 1 2 962 1.9550000000000000e+02 0 -1 963 - 9.7500000000000000e+01 -2 -3 964 1.7450000000000000e+02 - - 1.7131289839744568e-01 -7.6953160762786865e-01 - -8.5992205142974854e-01 9.4537514448165894e-01 - <_> - 2.7257419586181641e+01 - - 1 2 965 5.1150000000000000e+02 0 -1 966 - 2.3335000000000000e+03 -2 -3 967 37646. - - -5.3452479839324951e-01 5.5600736290216446e-02 - 9.5302796363830566e-01 -8.5994201898574829e-01 - <_> - 2.7456840515136719e+01 - - 1 2 968 2.7500000000000000e+01 0 -1 969 - 4.5000000000000000e+00 -2 -3 970 3.2250000000000000e+02 - - 2.6460289955139160e-01 -3.8417342305183411e-01 - 4.4693005084991455e-01 -8.1004393100738525e-01 - <_> - 2.7806034088134766e+01 - - 1 2 971 2.3500000000000000e+01 0 -1 972 - 7.6500000000000000e+01 -2 -3 973 1.2500000000000000e+01 - - -5.5745208263397217e-01 3.4919399023056030e-01 - 3.5557851195335388e-01 -5.3877633810043335e-01 - <_> - 2.7538705825805664e+01 - - 1 2 974 7.9500000000000000e+01 0 -1 975 - 1.4500000000000000e+01 -2 -3 976 87. - - 2.8678986430168152e-01 -2.9876446723937988e-01 - 8.6640423536300659e-01 -1. - <_> - 2.7824981689453125e+01 - - 1 2 977 2.5550000000000000e+02 0 -1 978 - 4.5000000000000000e+00 -2 -3 979 4.8500000000000000e+01 - - 2.7033209800720215e-01 -5.0700926780700684e-01 - -6.5432757139205933e-01 3.9897635579109192e-01 - <_> - 2.8039585113525391e+01 - - 1 2 980 8.5500000000000000e+01 0 -1 981 - 1.2500000000000000e+01 -2 -3 982 2.1150000000000000e+02 - - -9.3840378522872925e-01 2.1460363268852234e-01 - -7.5958758592605591e-01 3.2656311988830566e-01 - <_> - 2.8358228683471680e+01 - - 1 2 983 2.5000000000000000e+00 0 -1 984 154. -2 -3 985 - 5.5000000000000000e+00 - - 1.8448559939861298e-01 -8.2974767684936523e-01 - 3.1864368915557861e-01 -2.1115814149379730e-01 - <_> - 2.7895002365112305e+01 - - 1 2 986 1.5500000000000000e+01 0 -1 987 3760. -2 -3 988 - 7.4650000000000000e+02 - - 5.6718933582305908e-01 -4.6322652697563171e-01 - -1.5654714405536652e-01 4.8763912916183472e-01 - <_> - 2.8411203384399414e+01 - - 1 2 989 3.6500000000000000e+01 0 -1 990 - 5.5000000000000000e+00 -2 -3 991 177. - - 1.9065493345260620e-01 -4.4433963298797607e-01 - 5.1620143651962280e-01 -6.8428224325180054e-01 - <_> - 2.8243703842163086e+01 - - 1 2 992 2.2550000000000000e+02 0 -1 993 - 1.0702500000000000e+04 -2 -3 994 2.1500000000000000e+01 - - 9.7185559570789337e-02 -8.7033015489578247e-01 - 2.9659673571586609e-01 -4.0642136335372925e-01 - <_> - 2.8063882827758789e+01 - - 1 2 995 1.1500000000000000e+01 0 -1 996 29. -2 -3 997 - 6.5000000000000000e+00 - - -1. 1. 3.6489042639732361e-01 -1.7982187867164612e-01 - <_> - 2.8595172882080078e+01 - - 1 2 998 3.4500000000000000e+01 0 -1 999 - 3.2500000000000000e+01 -2 -3 1000 1.1750000000000000e+02 - - 7.5150117278099060e-02 -5.3011858463287354e-01 - -3.1684866547584534e-01 5.3129112720489502e-01 - <_> - 2.8468202590942383e+01 - - 1 2 1001 1.6628500000000000e+04 0 -1 1002 - 1.0500000000000000e+01 -2 -3 1003 3.3545000000000000e+03 - - 6.4890080690383911e-01 -6.3209486007690430e-01 - 6.6508811712265015e-01 -1.2697088718414307e-01 - <_> - 2.8374160766601562e+01 - - 1 2 1004 8.5000000000000000e+00 0 -1 1005 - 8.5000000000000000e+00 -2 -3 1006 1.5000000000000000e+00 - - 5.2094990015029907e-01 -9.4638687372207642e-01 - 4.4523945450782776e-01 -9.4041898846626282e-02 - <_> - 2.8551000595092773e+01 - - 1 2 1007 3.1950000000000000e+02 0 -1 1008 - 6.6500000000000000e+01 -2 -3 1009 9.5000000000000000e+00 - - 6.6274866461753845e-02 -9.6256363391876221e-01 - -4.5958206057548523e-01 1.7684090137481689e-01 - <_> - 2.8745084762573242e+01 - - 1 2 1010 1.2350000000000000e+02 0 -1 1011 - 5.5000000000000000e+00 -2 -3 1012 2.3500000000000000e+01 - - -8.1710654497146606e-01 1.9408319890499115e-01 - -6.5851712226867676e-01 6.5294885635375977e-01 - <_> - 2.8799137115478516e+01 - - 1 2 1013 1.5000000000000000e+00 0 -1 1014 6367. -2 -3 1015 - 4.7500000000000000e+01 - - -5.7579481601715088e-01 6.5927535295486450e-01 - 3.2614521682262421e-02 -5.5185180902481079e-01 - <_> - 2.9203039169311523e+01 - - 1 2 1016 4.8500000000000000e+01 0 -1 1017 1563. -2 -3 1018 - 174. - - -1.8832503259181976e-01 8.4307962656021118e-01 - 6.7039912939071655e-01 -9.4139146804809570e-01 - <_> - 2.8794641494750977e+01 - - 1 2 1019 3.3355000000000000e+03 0 -1 1020 - 6.6555000000000000e+03 -2 -3 1021 8.7150000000000000e+02 - - -9.0944504737854004e-01 4.4833663105964661e-01 - -4.0839809179306030e-01 1.7850229144096375e-01 - <_> - 2.8677459716796875e+01 - - 1 2 1022 1.2185000000000000e+03 0 -1 1023 - 8.2550000000000000e+02 -2 -3 1024 3.0550000000000000e+02 - - -3.4955474734306335e-01 6.4450144767761230e-01 - 6.0581982135772705e-01 -1.1718237400054932e-01 - <_> - 2.8913532257080078e+01 - - 1 2 1025 2.7500000000000000e+01 0 -1 1026 - 2.7500000000000000e+01 -2 -3 1027 4.3500000000000000e+01 - - -8.5049676895141602e-01 2.3607361316680908e-01 - 7.3098081350326538e-01 -6.9291877746582031e-01 - <_> - 2.9108362197875977e+01 - - 1 2 1028 7.5000000000000000e+00 0 -1 1029 - 9.5000000000000000e+00 -2 -3 1030 4.5000000000000000e+00 - - -8.3998674154281616e-01 3.6129420995712280e-01 - 9.7287259995937347e-02 -5.4456633329391479e-01 - <_> - 2.8601478576660156e+01 - - 1 2 1031 6.9500000000000000e+01 0 -1 1032 3194. -2 -3 1033 - 1194. - - 1.1185812205076218e-01 -5.0688385963439941e-01 - -5.2819758653640747e-01 4.6284502744674683e-01 - <_> - 2.8964368820190430e+01 - - 1 2 1034 2.5000000000000000e+00 0 -1 1035 - 3.5000000000000000e+00 -2 -3 1036 5.5000000000000000e+00 - - -6.3642036914825439e-01 3.6289060115814209e-01 - 7.4139624834060669e-01 -4.1967025399208069e-01 - <_> - 2.9433172225952148e+01 - - 1 2 1037 3.0500000000000000e+01 0 -1 1038 - 5.0000000000000000e-01 -2 -3 1039 7.9500000000000000e+01 - - 3.6465510725975037e-01 -3.9573243260383606e-01 - -6.1006444692611694e-01 4.6880471706390381e-01 - <_> - 2.9406284332275391e+01 - - 1 2 1040 850. 0 -1 1041 8.3500000000000000e+01 -2 -3 1042 - 503. - - -1.3215389847755432e-01 5.3341400623321533e-01 - -6.0456317663192749e-01 1.4337512850761414e-01 - <_> - 2.9681335449218750e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 2.2500000000000000e+01 -2 -3 1045 7.1050000000000000e+02 - - -8.8528215885162354e-02 6.7735338211059570e-01 - -4.3227946758270264e-01 2.7505078911781311e-01 - <_> - 2.9964553833007812e+01 - - 1 2 1046 9.8500000000000000e+01 0 -1 1047 - 3.1500000000000000e+01 -2 -3 1048 2.7650000000000000e+02 - - 2.8321748971939087e-01 -3.9361628890037537e-01 - -8.2609468698501587e-01 2.6064848899841309e-01 - <_> - 2.9945455551147461e+01 - - 1 2 1049 8.7500000000000000e+01 0 -1 1050 - 2.2385000000000000e+03 -2 -3 1051 6.4500000000000000e+01 - - 6.9241017103195190e-01 -1.5301111340522766e-01 - -6.6095316410064697e-01 -1.9096992909908295e-02 - <_> - 3.0012765884399414e+01 - - 1 2 1052 1.2500000000000000e+01 0 -1 1053 - 9.5000000000000000e+00 -2 -3 1054 5.0750000000000000e+02 - - -8.3019262552261353e-01 6.7893797159194946e-01 - -1.2832325696945190e-01 4.3415006995201111e-01 - <_> - 2.9930473327636719e+01 - - 1 2 1055 1.8500000000000000e+01 0 -1 1056 - 1.2500000000000000e+01 -2 -3 1057 8.5000000000000000e+00 - - -3.6613929271697998e-01 4.8394933342933655e-01 - 1.7974837124347687e-01 -4.4913277029991150e-01 - <_> - 3.0477281570434570e+01 - - 1 2 1058 5.1950000000000000e+02 0 -1 1059 - 4.4500000000000000e+01 -2 -3 1060 114. - - -7.6940767467021942e-02 5.4680854082107544e-01 - -8.7260067462921143e-01 6.8811720609664917e-01 - <_> - 3.0773675918579102e+01 - - 1 2 1061 1.0450000000000000e+02 0 -1 1062 - 2.8150000000000000e+02 -2 -3 1063 1125. - - 5.4583191871643066e-01 -5.2532721310853958e-02 - -7.8279995918273926e-01 3.1823691725730896e-01 - <_> - 3.0351808547973633e+01 - - 1 2 1064 3.5000000000000000e+00 0 -1 1065 - 1.5500000000000000e+01 -2 -3 1066 55. - - -7.3623555898666382e-01 3.5894340276718140e-01 - -4.2186784744262695e-01 4.3861863017082214e-01 - <_> - 3.0537498474121094e+01 - - 1 2 1067 4307. 0 -1 1068 1160. -2 -3 1069 - 2.1660500000000000e+04 - - -7.8279590606689453e-01 4.5567861199378967e-01 - 1.8568974733352661e-01 -8.9434182643890381e-01 - <_> - 3.0696584701538086e+01 - - 1 2 1070 4.4285000000000000e+03 0 -1 1071 - 5.0000000000000000e-01 -2 -3 1072 3.1735000000000000e+03 - - 2.0552167296409607e-01 -4.5957171916961670e-01 - 7.2746735811233521e-01 -9.0351656079292297e-02 - <_> - 3.0743759155273438e+01 - - 1 2 1073 3.7500000000000000e+01 0 -1 1074 - 9.5000000000000000e+00 -2 -3 1075 1.6750000000000000e+02 - - -1.5780667960643768e-01 4.7251480817794800e-01 - -6.7792648077011108e-01 4.7175608575344086e-02 - <_> - 3.0970186233520508e+01 - - 1 2 1076 3.3550000000000000e+02 0 -1 1077 - 1.5850000000000000e+02 -2 -3 1078 6.7500000000000000e+01 - - 2.2642576694488525e-01 -7.5154268741607666e-01 - -7.6098370552062988e-01 -2.8098121285438538e-02 - <_> - 3.0785564422607422e+01 - - 1 2 1079 3.5000000000000000e+00 0 -1 1080 - 1.0750000000000000e+02 -2 -3 1081 5.5000000000000000e+00 - - -1. 1. 3.4101343154907227e-01 -1.8462051451206207e-01 - <_> - 3.0677804946899414e+01 - - 1 2 1082 1.8745000000000000e+03 0 -1 1083 8. -2 -3 1084 - 2.7950000000000000e+02 - - 3.8025709986686707e-01 -9.3898135423660278e-01 - 4.3168732523918152e-01 -1.0776055604219437e-01 - <_> - 3.1114505767822266e+01 - - 1 2 1085 1.2235000000000000e+03 0 -1 1086 502. -2 -3 1087 - 1.4500000000000000e+01 - - -3.4203383326530457e-01 8.8017475605010986e-01 - -6.2440735101699829e-01 4.3670186400413513e-01 - <_> - 3.0781503677368164e+01 - - 1 2 1088 1.0765000000000000e+03 0 -1 1089 - 1.4445000000000000e+03 -2 -3 1090 6.5000000000000000e+00 - - -1.0597463697195053e-01 5.4891431331634521e-01 - 2.9310002923011780e-01 -3.9375761151313782e-01 - <_> - 3.1352016448974609e+01 - - 1 2 1091 5.2500000000000000e+01 0 -1 1092 - 1.5000000000000000e+00 -2 -3 1093 272. - - 6.0849022865295410e-01 -2.5873470306396484e-01 - 5.7051157951354980e-01 -1. - <_> - 3.1657224655151367e+01 - - 1 2 1094 5.5000000000000000e+00 0 -1 1095 - 1.6500000000000000e+01 -2 -3 1096 30152. - - -9.6481657028198242e-01 8.0561167001724243e-01 - 4.4867545366287231e-01 -1.1930578947067261e-01 - <_> - 3.1797657012939453e+01 - - 1 2 1097 4.5000000000000000e+00 0 -1 1098 - 1.4500000000000000e+01 -2 -3 1099 3.4500000000000000e+01 - - -3.8230931758880615e-01 6.5411078929901123e-01 - 4.3631002306938171e-02 -7.3598957061767578e-01 - <_> - 3.1739580154418945e+01 - - 1 2 1100 6.5000000000000000e+00 0 -1 1101 - 3.5000000000000000e+00 -2 -3 1102 2.5500000000000000e+01 - - 2.6922503113746643e-01 -9.2841345071792603e-01 - -5.8075804263353348e-02 5.9674555063247681e-01 - <_> - 3.2161308288574219e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 1.5500000000000000e+01 -2 -3 1105 1.5000000000000000e+00 - - -7.3271411657333374e-01 4.2172768712043762e-01 - 1.8879570066928864e-01 -4.8092129826545715e-01 - <_> - 3.1522403717041016e+01 - - 1 2 1106 1.7500000000000000e+01 0 -1 1107 - 3.5000000000000000e+00 -2 -3 1108 5.1500000000000000e+01 - - 4.1741237044334412e-01 -6.3890427350997925e-01 - -2.4483518302440643e-01 3.4861907362937927e-01 - <_> - 3.1028701782226562e+01 - - 1 2 1109 1.6500000000000000e+01 0 -1 1110 - 7.5500000000000000e+01 -2 -3 1111 1.5595000000000000e+03 - - 2.1001176536083221e-01 -5.4036855697631836e-01 - 8.2853209972381592e-01 -6.6984134912490845e-01 - <_> - 3.0648044586181641e+01 - - 1 2 1112 1.3500000000000000e+01 0 -1 1113 - 5.0000000000000000e-01 -2 -3 1114 5.5000000000000000e+00 - - 2.0337771624326706e-02 -6.9217932224273682e-01 - 3.1262809038162231e-01 -3.8065665960311890e-01 - <_> - 3.0457332611083984e+01 - - 1 2 1115 1.0425000000000000e+03 0 -1 1116 - 2.1105000000000000e+03 -2 -3 1117 5.0000000000000000e-01 - - 8.5383254289627075e-01 -9.4994091987609863e-01 - 3.6234918236732483e-01 -1.9071219861507416e-01 - <_> - 3.0355703353881836e+01 - - 1 2 1118 417. 0 -1 1119 47393. -2 -3 1120 - 1.3500000000000000e+01 - - 1.4608249068260193e-01 -7.7895587682723999e-01 - 5.4214590787887573e-01 -1.0162991285324097e-01 - <_> - 3.0591539382934570e+01 - - 1 2 1121 1.0505000000000000e+03 0 -1 1122 - 3.5000000000000000e+00 -2 -3 1123 1.2500000000000000e+01 - - 2.6039215922355652e-01 -8.2724225521087646e-01 - 2.3583582043647766e-01 -4.2682540416717529e-01 - <_> - 3.1194660186767578e+01 - - 1 2 1124 4.6185000000000000e+03 0 -1 1125 - 1.0500000000000000e+01 -2 -3 1126 1.9150000000000000e+02 - - -8.0647492408752441e-01 1.1079805344343185e-01 - 6.0312074422836304e-01 -8.1773541867733002e-02 - <_> - 3.0726728439331055e+01 - - 1 2 1127 1.3500000000000000e+01 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 4.1550000000000000e+02 - - -6.2268900871276855e-01 3.8671565055847168e-01 - 2.8028538823127747e-01 -4.6793088316917419e-01 - <_> - 3.1088666915893555e+01 - - 1 2 1130 8.5000000000000000e+00 0 -1 1131 - 5.8445000000000000e+03 -2 -3 1132 2.8500000000000000e+01 - - -3.3040379639714956e-04 -9.1474950313568115e-01 - 3.6193940043449402e-01 -1.4911226928234100e-01 - <_> - 3.1474407196044922e+01 - - 1 2 1133 1.5500000000000000e+01 0 -1 1134 - 3.5000000000000000e+00 -2 -3 1135 1.2525000000000000e+03 - - 6.4907115697860718e-01 -5.0786149501800537e-01 - -2.0913411676883698e-01 3.8573962450027466e-01 - <_> - 3.1632471084594727e+01 - - 1 2 1136 6.5000000000000000e+00 0 -1 1137 - 3.7500000000000000e+01 -2 -3 1138 3.5500000000000000e+01 - - 6.3346821069717407e-01 -5.2402967214584351e-01 - -4.6075040102005005e-01 1.5806287527084351e-01 - <_> - 3.1587083816528320e+01 - - 1 2 1139 2.8950000000000000e+02 0 -1 1140 - 1.2865000000000000e+03 -2 -3 1141 8.0500000000000000e+01 - - -4.5387003570795059e-02 6.0369354486465454e-01 - -8.8128578662872314e-01 1.6069179773330688e-01 - <_> - 3.1416742324829102e+01 - - 1 2 1142 6.0500000000000000e+01 0 -1 1143 2554. -2 -3 1144 - 2.5000000000000000e+00 - - 5.8986186981201172e-01 -7.9697668552398682e-01 - 4.0921381115913391e-01 -1.7034149169921875e-01 - <_> - 3.1597267150878906e+01 - - 1 2 1145 7.5000000000000000e+00 0 -1 1146 - 1.2500000000000000e+01 -2 -3 1147 3.3500000000000000e+01 - - -7.0123994350433350e-01 9.0972447395324707e-01 - 1.8052530288696289e-01 -7.1117341518402100e-01 - <_> - 3.1853481292724609e+01 - - 1 2 1148 2.5000000000000000e+00 0 -1 1149 - 1.6500000000000000e+01 -2 -3 1150 50. - - -4.6300759911537170e-01 2.5621402263641357e-01 - -5.8134639263153076e-01 6.4391428232192993e-01 - <_> - 3.2041400909423828e+01 - - 1 2 1151 1.5000000000000000e+00 0 -1 1152 - 5.5000000000000000e+00 -2 -3 1153 6.6500000000000000e+01 - - 4.4350862503051758e-01 -6.5627163648605347e-01 - -4.0067231655120850e-01 3.3987161517143250e-01 - <_> - 3.2274913787841797e+01 - - 1 2 1154 2.2500000000000000e+01 0 -1 1155 121. -2 -3 1156 - 4.0750000000000000e+02 - - -5.6885540485382080e-01 2.3351371288299561e-01 - 6.7405563592910767e-01 -5.4761618375778198e-01 - <_> - 3.2459445953369141e+01 - - 1 2 1157 2.1500000000000000e+01 0 -1 1158 - 1.2500000000000000e+01 -2 -3 1159 1.9500000000000000e+01 - - -8.8360142707824707e-01 2.5230798125267029e-01 - 1.1890246719121933e-01 -5.4317802190780640e-01 - <_> - 3.2713863372802734e+01 - - 1 2 1160 3.9500000000000000e+01 0 -1 1161 - 4.5000000000000000e+00 -2 -3 1162 2.2635000000000000e+03 - - 4.9993959069252014e-01 -4.6222266554832458e-01 - -8.2206004858016968e-01 2.5441682338714600e-01 - <_> - 3.2391437530517578e+01 - - 1 2 1163 1.8500000000000000e+01 0 -1 1164 - 2.2500000000000000e+01 -2 -3 1165 1.1500000000000000e+01 - - -8.3650416135787964e-01 2.8401935100555420e-01 - 2.4446329474449158e-01 -5.4215461015701294e-01 - <_> - 3.2313743591308594e+01 - - 1 2 1166 2.1500000000000000e+01 0 -1 1167 - 4.4750000000000000e+02 -2 -3 1168 7.5000000000000000e+00 - - 2.8188237547874451e-01 -7.0770967006683350e-01 - 5.1904022693634033e-01 -7.7693074941635132e-02 - <_> - 3.2547096252441406e+01 - - 1 2 1169 3.8500000000000000e+01 0 -1 1170 - 1.0500000000000000e+01 -2 -3 1171 5.4500000000000000e+01 - - -5.1064568758010864e-01 2.3335392773151398e-01 - -7.8815060853958130e-01 1.9936113059520721e-01 - <_> - 3.2640663146972656e+01 - - 1 2 1172 2.5000000000000000e+00 0 -1 1173 - 5.5000000000000000e+00 -2 -3 1174 1330. - - -4.3339151144027710e-01 4.2221209406852722e-01 - -3.6630377173423767e-01 7.0252496004104614e-01 - <_> - 3.2781063079833984e+01 - - 1 2 1175 1.5000000000000000e+00 0 -1 1176 - 3.5000000000000000e+00 -2 -3 1177 5.0000000000000000e-01 - - 4.3612757325172424e-01 -8.5796296596527100e-01 - 2.6683306694030762e-01 -2.6626828312873840e-01 - <_> - 3.3000972747802734e+01 - - 1 2 1178 2.8150000000000000e+02 0 -1 1179 - 1.5500000000000000e+01 -2 -3 1180 4.6500000000000000e+01 - - 3.4552884101867676e-01 -5.2619069814682007e-01 - -3.2900866866111755e-01 4.3776753544807434e-01 - <_> - 3.3018821716308594e+01 - - 1 2 1181 5.0000000000000000e-01 0 -1 1182 - 1.0500000000000000e+01 -2 -3 1183 2.6450000000000000e+02 - - -4.9559688568115234e-01 7.7334856986999512e-01 - 5.2793127298355103e-01 -2.3107841610908508e-01 - <_> - 3.3071189880371094e+01 - - 1 2 1184 4.6025000000000000e+03 0 -1 1185 - 1.8500000000000000e+01 -2 -3 1186 6.8250000000000000e+02 - - -7.4181526899337769e-01 5.9372335672378540e-01 - 4.7619059681892395e-01 -1.1885309964418411e-01 - <_> - 3.3085533142089844e+01 - - 1 2 1187 1.6350000000000000e+02 0 -1 1188 - 2.7500000000000000e+01 -2 -3 1189 142. - - -4.1260236501693726e-01 2.7891275286674500e-01 - -7.0465636253356934e-01 7.5747251510620117e-01 - <_> - 3.3357414245605469e+01 - - 1 2 1190 5.0000000000000000e-01 0 -1 1191 - 5.6500000000000000e+01 -2 -3 1192 5.2150000000000000e+02 - - 6.4778029918670654e-01 -1.1932287365198135e-01 - -4.1650903224945068e-01 2.5428086519241333e-01 - <_> - 3.3322494506835938e+01 - - 1 2 1193 8.2350000000000000e+02 0 -1 1194 - 8.2650000000000000e+02 -2 -3 1195 1.3500000000000000e+01 - - 2.8512652497738600e-03 6.5731632709503174e-01 - 4.5999297499656677e-01 -6.2862813472747803e-01 - <_> - 3.3176986694335938e+01 - - 1 2 1196 1.3500000000000000e+01 0 -1 1197 70. -2 -3 1198 - 5.0000000000000000e-01 - - -6.6250026226043701e-01 7.0421558618545532e-01 - 3.7571212649345398e-01 -2.3801752924919128e-01 - <_> - 3.3435741424560547e+01 - - 1 2 1199 58282. 0 -1 1200 913. -2 -3 1201 - 1.0850000000000000e+02 - - -5.6440210342407227e-01 2.8217953443527222e-01 - -8.7045669555664062e-01 -8.5198663175106049e-02 - <_> - 3.3617641448974609e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 1.5000000000000000e+00 -2 -3 1204 1.7675000000000000e+03 - - -7.3653697967529297e-01 7.6336652040481567e-01 - -2.4504181742668152e-01 5.5397576093673706e-01 - <_> - 3.3626171112060547e+01 - - 1 2 1205 3.5000000000000000e+00 0 -1 1206 - 1.5500000000000000e+01 -2 -3 1207 153. - - -2.8129413723945618e-01 5.9369409084320068e-01 - 8.5296230390667915e-03 -6.9582235813140869e-01 - <_> - 3.3975147247314453e+01 - - 1 2 1208 5.0000000000000000e-01 0 -1 1209 - 1.0500000000000000e+01 -2 -3 1210 2.0500000000000000e+01 - - -8.0083674192428589e-01 3.4897685050964355e-01 - -3.5385957360267639e-01 7.3448055982589722e-01 - <_> - 3.3426464080810547e+01 - - 1 2 1211 2.7950000000000000e+02 0 -1 1212 - 5.4975000000000000e+03 -2 -3 1213 7.5000000000000000e+00 - - -1.4607962965965271e-01 7.2142803668975830e-01 - 1.4154955744743347e-01 -5.4868251085281372e-01 - <_> - 3.3620513916015625e+01 - - 1 2 1214 1.1500000000000000e+01 0 -1 1215 - 2.5550000000000000e+02 -2 -3 1216 72. - - 5.8608335256576538e-01 -9.2741596698760986e-01 - 1.9404979050159454e-01 -6.2724816799163818e-01 - <_> - 3.3949718475341797e+01 - - 1 2 1217 1.9500000000000000e+01 0 -1 1218 - 2.6950000000000000e+02 -2 -3 1219 5.2500000000000000e+01 - - -8.2725256681442261e-02 -8.0563539266586304e-01 - -4.9098122119903564e-01 3.2920604944229126e-01 - <_> - 3.3907009124755859e+01 - - 1 2 1220 2.5500000000000000e+01 0 -1 1221 - 5.0000000000000000e-01 -2 -3 1222 5.0500000000000000e+01 - - 5.3421282768249512e-01 -4.2710851877927780e-02 - -8.4883642196655273e-01 -6.9108068943023682e-02 - <_> - 3.4569347381591797e+01 - - 1 2 1223 3.4500000000000000e+01 0 -1 1224 - 4.5000000000000000e+00 -2 -3 1225 4.2500000000000000e+01 - - 2.8448584675788879e-01 -3.0913567543029785e-01 - 6.9974571466445923e-01 -7.2145628929138184e-01 - <_> - 3.4406383514404297e+01 - - 1 2 1226 4.7500000000000000e+01 0 -1 1227 82. -2 -3 1228 - 476. - - -5.3745925426483154e-01 5.8132463693618774e-01 - 3.7321224808692932e-01 -6.0607558488845825e-01 - <_> - 3.4350345611572266e+01 - - 1 2 1229 4.5000000000000000e+00 0 -1 1230 161. -2 -3 1231 - 9.5000000000000000e+00 - - 5.7543116807937622e-01 -9.4070035219192505e-01 - 7.6428997516632080e-01 -5.6036282330751419e-02 - <_> - 3.4673534393310547e+01 - - 1 2 1232 1.2645000000000000e+03 0 -1 1233 1086. -2 -3 1234 - 9549. - - -2.5683671236038208e-01 8.2724517583847046e-01 - 7.0296716690063477e-01 -3.6435613036155701e-01 - <_> - 3.5003284454345703e+01 - - 1 2 1235 1.2850000000000000e+02 0 -1 1236 - 8.6235000000000000e+03 -2 -3 1237 2.6500000000000000e+01 - - 5.9038841724395752e-01 3.4432813990861177e-03 - -6.4016550779342651e-02 -9.3743759393692017e-01 - <_> - 3.5226799011230469e+01 - - 1 2 1238 9.3500000000000000e+01 0 -1 1239 13. -2 -3 1240 - 4.4500000000000000e+01 - - -6.7835944890975952e-01 3.3737751841545105e-01 - -7.8561329841613770e-01 -3.7122413516044617e-02 - <_> - 3.5086704254150391e+01 - - 1 2 1241 6.5000000000000000e+00 0 -1 1242 786. -2 -3 1243 - 4.6850000000000000e+02 - - -8.7093526124954224e-01 4.2933362722396851e-01 - -5.2467578649520874e-01 1.0233493894338608e-01 - <_> - 3.5434925079345703e+01 - - 1 2 1244 5.0650000000000000e+02 0 -1 1245 - 6.3500000000000000e+01 -2 -3 1246 2.5000000000000000e+00 - - -3.4057748317718506e-01 5.2575647830963135e-01 - -5.7031583786010742e-01 4.1367042064666748e-01 - <_> - 3.5402851104736328e+01 - - 1 2 1247 5.0000000000000000e-01 0 -1 1248 857. -2 -3 1249 - 1.3850000000000000e+02 - - 6.1650615930557251e-01 -2.0817196369171143e-01 - -2.5478323921561241e-02 -7.6659142971038818e-01 - <_> - 3.4968181610107422e+01 - - 1 2 1250 5.8500000000000000e+01 0 -1 1251 - 1.1500000000000000e+01 -2 -3 1252 5.5500000000000000e+01 - - 1.2099618464708328e-01 -4.4126412272453308e-01 - 6.0897779464721680e-01 -7.8737002611160278e-01 - <_> - 3.5193428039550781e+01 - - 1 2 1253 4.7500000000000000e+01 0 -1 1254 1423. -2 -3 1255 - 3.4500000000000000e+01 - - 4.8643037676811218e-02 -8.9261955022811890e-01 - 2.2524681687355042e-01 -6.2001824378967285e-01 - <_> - 3.5623695373535156e+01 - - 1 2 1256 2.0500000000000000e+01 0 -1 1257 - 5.5000000000000000e+00 -2 -3 1258 6.5000000000000000e+00 - - -8.9247786998748779e-01 7.9152870178222656e-01 - 4.3026548624038696e-01 -1.4470897614955902e-01 - <_> - 3.5538761138916016e+01 - - 1 2 1259 18647. 0 -1 1260 8.7850000000000000e+02 -2 -3 1261 - 50. - - 1.3848523795604706e-01 -6.2565112113952637e-01 - -3.0781137943267822e-01 5.9695762395858765e-01 - <_> - 3.5170146942138672e+01 - - 1 2 1262 2.0500000000000000e+01 0 -1 1263 - 9.5500000000000000e+01 -2 -3 1264 3.2450000000000000e+02 - - -1.9358770549297333e-01 5.9224104881286621e-01 - -3.6861309409141541e-01 7.9692333936691284e-01 - <_> - 3.5719684600830078e+01 - - 1 2 1265 1.5000000000000000e+00 0 -1 1266 - 3.4500000000000000e+01 -2 -3 1267 1.7725000000000000e+03 - - 5.4953765869140625e-01 -4.1827628016471863e-01 - 3.4924019128084183e-02 -6.3267588615417480e-01 - <_> - 3.6021175384521484e+01 - - 1 2 1268 1.3500000000000000e+01 0 -1 1269 - 5.0000000000000000e-01 -2 -3 1270 3476. - - 3.0730965733528137e-01 -7.1827191114425659e-01 - -3.3407485485076904e-01 3.0149033665657043e-01 - <_> - 3.6000087738037109e+01 - - 1 2 1271 2.1105000000000000e+03 0 -1 1272 - 1.2865000000000000e+03 -2 -3 1273 31. - - -6.6124044358730316e-02 6.6440200805664062e-01 - -7.0062541961669922e-01 8.8496291637420654e-01 - <_> - 3.6138973236083984e+01 - - 1 2 1274 6.5000000000000000e+00 0 -1 1275 - 4.0500000000000000e+01 -2 -3 1276 2.5000000000000000e+00 - - -1.8909309804439545e-01 4.3955674767494202e-01 - 8.3517062664031982e-01 -5.2926576137542725e-01 - <_> - 3.6462543487548828e+01 - - 1 2 1277 1.5000000000000000e+00 0 -1 1278 - 1.9500000000000000e+01 -2 -3 1279 2.9500000000000000e+01 - - 5.2272623777389526e-01 -5.3356873989105225e-01 - -4.3614375591278076e-01 1.6707921028137207e-01 - <_> - 3.6346103668212891e+01 - - 1 2 1280 5.4500000000000000e+01 0 -1 1281 3. -2 -3 1282 - 2.5000000000000000e+00 - - 9.2645227909088135e-01 -9.1626834869384766e-01 - 4.3882593512535095e-01 -1.1643892526626587e-01 - <_> - 3.6447643280029297e+01 - - 1 2 1283 4.3500000000000000e+01 0 -1 1284 - 4.5000000000000000e+00 -2 -3 1285 1.4250000000000000e+02 - - 2.8414136171340942e-01 -5.2052396535873413e-01 - 3.3975440263748169e-01 -4.2113724350929260e-01 - <_> - 3.6367126464843750e+01 - - 1 2 1286 2.2500000000000000e+01 0 -1 1287 - 1.0535000000000000e+03 -2 -3 1288 1.9500000000000000e+01 - - 4.4179165363311768e-01 -7.4734365940093994e-01 - 5.4282104969024658e-01 -8.0516710877418518e-02 - <_> - 3.6575954437255859e+01 - - 1 2 1289 2.5000000000000000e+00 0 -1 1290 - 1.5000000000000000e+00 -2 -3 1291 2.4500000000000000e+01 - - -3.8550149649381638e-02 -9.4949018955230713e-01 - 2.0882803201675415e-01 -4.6319213509559631e-01 - <_> - 3.6657161712646484e+01 - - 1 2 1292 1.6115000000000000e+03 0 -1 1293 3672. -2 -3 1294 - 545. - - 8.2763051986694336e-01 -4.8815292119979858e-01 - -5.2512788772583008e-01 8.1207208335399628e-02 - <_> - 3.6598300933837891e+01 - - 1 2 1295 6.0500000000000000e+01 0 -1 1296 - 1.1250000000000000e+02 -2 -3 1297 1.5350000000000000e+02 - - -5.8857690542936325e-02 4.7229456901550293e-01 - -8.1495660543441772e-01 7.3461961746215820e-01 - <_> - 3.6517520904541016e+01 - - 1 2 1298 9.4500000000000000e+01 0 -1 1299 - 4.8500000000000000e+01 -2 -3 1300 235. - - 4.8253452777862549e-01 -8.0779984593391418e-02 - -9.4696474075317383e-01 9.1954904794692993e-01 - <_> - 3.6136314392089844e+01 - - 1 2 1301 7.6150000000000000e+02 0 -1 1302 - 1.3500000000000000e+01 -2 -3 1303 3.7500000000000000e+01 - - 4.7050821781158447e-01 -6.8645346164703369e-01 - 1.8845686316490173e-01 -6.1942416429519653e-01 - <_> - 3.6255367279052734e+01 - - 1 2 1304 2.5500000000000000e+01 0 -1 1305 - 9.5000000000000000e+00 -2 -3 1306 2.4243500000000000e+04 - - -8.6751174926757812e-01 1. 1.1905297636985779e-01 - -7.7261626720428467e-01 - <_> - 3.6847282409667969e+01 - - 1 2 1307 2.5245000000000000e+03 0 -1 1308 - 1.2500000000000000e+01 -2 -3 1309 19. - - 1.8480798602104187e-01 -4.1162934899330139e-01 - -7.0126670598983765e-01 5.9191262722015381e-01 - <_> - 3.6736129760742188e+01 - - 1 2 1310 1.9500000000000000e+01 0 -1 1311 - 3.5000000000000000e+00 -2 -3 1312 9.9500000000000000e+01 - - -4.2743122577667236e-01 3.4077543020248413e-01 - -5.2904611825942993e-01 6.4898627996444702e-01 - <_> - 3.7165416717529297e+01 - - 1 2 1313 57. 0 -1 1314 7.5000000000000000e+00 -2 -3 1315 - 1.4750000000000000e+02 - - -2.9288327693939209e-01 4.2928928136825562e-01 - -5.1645982265472412e-01 3.7259963154792786e-01 - <_> - 3.6963829040527344e+01 - - 1 2 1316 1.5000000000000000e+00 0 -1 1317 - 1.5000000000000000e+00 -2 -3 1318 2.5550000000000000e+02 - - -4.8823645710945129e-01 6.1563092470169067e-01 - 6.7905879020690918e-01 -2.7743032574653625e-01 - <_> - 3.6947120666503906e+01 - - 1 2 1319 1.1545000000000000e+03 0 -1 1320 2066. -2 -3 1321 - 7.7350000000000000e+02 - - -7.2975975275039673e-01 6.6057509183883667e-01 - 6.6289925575256348e-01 -1.6708238050341606e-02 - <_> - 3.6795619964599609e+01 - - 1 2 1322 63. 0 -1 1323 5.7500000000000000e+01 -2 -3 1324 - 2.8500000000000000e+01 - - -1.5150213241577148e-01 3.7273296713829041e-01 - -8.2537877559661865e-01 8.6949664354324341e-01 - <_> - 3.7259391784667969e+01 - - 1 2 1325 1.0500000000000000e+01 0 -1 1326 - 1.6500000000000000e+01 -2 -3 1327 346. - - 4.6377313137054443e-01 -7.5801903009414673e-01 - -3.5662418603897095e-01 9.6071028709411621e-01 - <_> - 3.7495296478271484e+01 - - 1 2 1328 6.0500000000000000e+01 0 -1 1329 - 1.5500000000000000e+01 -2 -3 1330 2.6850000000000000e+02 - - 5.3055459260940552e-01 -6.3604164123535156e-01 - -6.7990607023239136e-01 2.4123270809650421e-01 - <_> - 3.7374149322509766e+01 - - 1 2 1331 2.5000000000000000e+00 0 -1 1332 - 1.3500000000000000e+01 -2 -3 1333 2.5000000000000000e+00 - - -9.0581423044204712e-01 5.8284395933151245e-01 - 3.0152860283851624e-01 -3.4942194819450378e-01 - <_> - 3.7766971588134766e+01 - - 1 2 1334 5.5000000000000000e+00 0 -1 1335 23. -2 -3 1336 - 3.0250000000000000e+02 - - -9.5462155342102051e-01 1. 3.9282312989234924e-01 - -1.1600174754858017e-01 - <_> - 3.8006900787353516e+01 - - 1 2 1337 3955. 0 -1 1338 1.6500000000000000e+01 -2 -3 1339 - 3.8500000000000000e+01 - - 3.4476998448371887e-01 -5.3807318210601807e-01 - -6.4139670133590698e-01 3.3075565099716187e-01 - <_> - 3.7836151123046875e+01 - - 1 2 1340 1.4500000000000000e+01 0 -1 1341 - 4.2050000000000000e+02 -2 -3 1342 4.5000000000000000e+00 - - 6.6126942634582520e-02 -8.9179468154907227e-01 - 2.5128620862960815e-01 -4.3012529611587524e-01 - <_> - 3.7504901885986328e+01 - - 1 2 1343 3.5000000000000000e+00 0 -1 1344 - 2.1500000000000000e+01 -2 -3 1345 3.6500000000000000e+01 - - -6.9118273258209229e-01 5.3941005468368530e-01 - 4.0820264816284180e-01 -3.3124980330467224e-01 - <_> - 3.7869743347167969e+01 - - 1 2 1346 8.5000000000000000e+00 0 -1 1347 8240. -2 -3 1348 - 1.8500000000000000e+01 - - -1.8303586402907968e-03 -7.9149729013442993e-01 - 3.6484044790267944e-01 -2.6800584793090820e-01 - <_> - 3.7688228607177734e+01 - - 1 2 1349 1.2135000000000000e+03 0 -1 1350 75. -2 -3 1351 - 5.6750000000000000e+02 - - -3.7686902284622192e-01 5.8311319351196289e-01 - 7.0945566892623901e-01 -1.8151518702507019e-01 - <_> - 3.7513351440429688e+01 - - 1 2 1352 3.5000000000000000e+00 0 -1 1353 35. -2 -3 1354 - 1.1500000000000000e+01 - - -9.6617668867111206e-01 1. 4.0123063325881958e-01 - -1.7487519979476929e-01 - <_> - 3.7691390991210938e+01 - - 1 2 1355 2.3050000000000000e+02 0 -1 1356 - 1.1500000000000000e+01 -2 -3 1357 2.8500000000000000e+01 - - -5.4078394174575806e-01 1.7803618311882019e-01 - 6.0750162601470947e-01 -9.6443849802017212e-01 - <_> - 3.8156455993652344e+01 - - 1 2 1358 6.5000000000000000e+00 0 -1 1359 - 1.0500000000000000e+01 -2 -3 1360 354. - - 4.6506500244140625e-01 -3.7838381528854370e-01 - -3.8703271746635437e-01 5.6163036823272705e-01 - <_> - 3.8427524566650391e+01 - - 1 2 1361 1.2500000000000000e+01 0 -1 1362 - 4.5000000000000000e+00 -2 -3 1363 449. - - 5.1386022567749023e-01 -6.1507451534271240e-01 - 3.0157905817031860e-01 -6.5344727039337158e-01 - <_> - 3.8548820495605469e+01 - - 1 2 1364 5.0000000000000000e-01 0 -1 1365 - 1.5000000000000000e+00 -2 -3 1366 3.8950000000000000e+02 - - -3.3223056793212891e-01 5.4063457250595093e-01 - 9.0788081288337708e-02 -5.4981482028961182e-01 - <_> - 3.8257041931152344e+01 - - 1 2 1367 1.6650000000000000e+02 0 -1 1368 - 5.0000000000000000e-01 -2 -3 1369 7.6500000000000000e+01 - - 2.8060472011566162e-01 -2.9178059101104736e-01 - -7.8990536928176880e-01 9.2143142223358154e-01 - <_> - 3.8675960540771484e+01 - - 1 2 1370 1.8500000000000000e+01 0 -1 1371 - 2.3500000000000000e+01 -2 -3 1372 4.5000000000000000e+00 - - -5.0728912465274334e-03 -8.4625685214996338e-01 - 4.8941537737846375e-01 -1.3043193519115448e-01 - <_> - 3.9024429321289062e+01 - - 1 2 1373 8.5000000000000000e+00 0 -1 1374 - 8.1295000000000000e+03 -2 -3 1375 1.1250000000000000e+02 - - 1.5426757931709290e-01 -7.5539046525955200e-01 - -3.0081889033317566e-01 3.4846922755241394e-01 - <_> - 3.8698005676269531e+01 - - 1 2 1376 9.5000000000000000e+00 0 -1 1377 - 5.5000000000000000e+00 -2 -3 1378 3.4500000000000000e+01 - - -7.7566885948181152e-01 5.3590404987335205e-01 - -3.2642310857772827e-01 3.3310726284980774e-01 - <_> - 3.8178993225097656e+01 - - 1 2 1379 2.6450000000000000e+02 0 -1 1380 - 4.6255000000000000e+03 -2 -3 1381 1.5000000000000000e+00 - - -3.2790592312812805e-01 3.8349342346191406e-01 - 3.5417640209197998e-01 -5.1901257038116455e-01 - <_> - 3.8603790283203125e+01 - - 1 2 1382 7.7450000000000000e+02 0 -1 1383 - 5.4450000000000000e+02 -2 -3 1384 4.9500000000000000e+01 - - 4.2479729652404785e-01 -6.4129936695098877e-01 - -3.8530099391937256e-01 4.2106175422668457e-01 - <_> - 3.9316322326660156e+01 - - 1 2 1385 1.2285000000000000e+03 0 -1 1386 19974. -2 -3 1387 - 2.0675000000000000e+03 - - -3.2134270668029785e-01 6.0310727357864380e-01 - 7.1253037452697754e-01 -1.8411901593208313e-01 - <_> - 3.8982051849365234e+01 - - 1 2 1388 2254. 0 -1 1389 23971. -2 -3 1390 - 2.5000000000000000e+00 - - 1.3044491410255432e-02 8.1400823593139648e-01 - 3.9543354511260986e-01 -4.9717214703559875e-01 - <_> - 3.9231285095214844e+01 - - 1 2 1391 7888. 0 -1 1392 1.2500000000000000e+01 -2 -3 1393 - 6.5000000000000000e+00 - - -9.9114888906478882e-01 1. 2.4923273921012878e-01 - -3.9778175950050354e-01 - <_> - 3.9200939178466797e+01 - - 1 2 1394 8.2500000000000000e+01 0 -1 1395 - 2.5000000000000000e+00 -2 -3 1396 2.7500000000000000e+01 - - 5.9092748165130615e-01 -6.6723209619522095e-01 - 4.0493550896644592e-01 -2.8249517083168030e-01 - <_> - 3.9109848022460938e+01 - - 1 2 1397 1.0500000000000000e+01 0 -1 1398 - 3.4150000000000000e+02 -2 -3 1399 1.5000000000000000e+00 - - 1.1704797297716141e-01 -7.8680926561355591e-01 - 5.4690092802047729e-01 -9.1091230511665344e-02 - <_> - 3.9430786132812500e+01 - - 1 2 1400 7.5000000000000000e+00 0 -1 1401 - 5.6350000000000000e+02 -2 -3 1402 9.5000000000000000e+00 - - 1. -1. 5.3584295511245728e-01 -1.1434395611286163e-01 - <_> - 3.9888351440429688e+01 - - 1 2 1403 576. 0 -1 1404 2.3765000000000000e+03 -2 -3 1405 - 1.8500000000000000e+01 - - 9.3801420927047729e-01 -7.2940248250961304e-01 - -9.7766503691673279e-02 4.5756503939628601e-01 - <_> - 3.9605831146240234e+01 - - 1 2 1406 5.5000000000000000e+00 0 -1 1407 - 6.5000000000000000e+00 -2 -3 1408 1.7500000000000000e+01 - - -9.3598860502243042e-01 6.3315272331237793e-01 - 1.0997077822685242e-01 -4.5688989758491516e-01 - <_> - 4.0259593963623047e+01 - - 1 2 1409 1.2785000000000000e+03 0 -1 1410 - 5.0000000000000000e-01 -2 -3 1411 1.0150000000000000e+02 - - 2.8614109754562378e-01 -3.0422577261924744e-01 - -5.3765338659286499e-01 7.5021845102310181e-01 - <_> - 4.0646686553955078e+01 - - 1 2 1412 9.3750000000000000e+02 0 -1 1413 - 2.5500000000000000e+01 -2 -3 1414 6.4650000000000000e+02 - - -1.8467088043689728e-01 3.8709565997123718e-01 -1. 1. - <_> - 4.0781440734863281e+01 - - 1 2 1415 5.0000000000000000e-01 0 -1 1416 62. -2 -3 1417 - 5.3500000000000000e+01 - - 6.4194250106811523e-01 -6.9881826639175415e-01 - -3.3652466535568237e-01 2.9932817816734314e-01 - <_> - 4.0840915679931641e+01 - - 1 2 1418 2.5000000000000000e+00 0 -1 1419 13192. -2 -3 1420 - 2.4950000000000000e+02 - - -9.9075198173522949e-01 8.7482362985610962e-01 - 2.9631823301315308e-01 -2.0155780017375946e-01 - <_> - 4.1011356353759766e+01 - - 1 2 1421 4.8150000000000000e+02 0 -1 1422 - 1.0450000000000000e+02 -2 -3 1423 8.5000000000000000e+00 - - -2.5319704785943031e-02 -7.4390411376953125e-01 - -8.1089955568313599e-01 7.6437503099441528e-01 - <_> - 4.0876789093017578e+01 - - 1 2 1424 5.5000000000000000e+00 0 -1 1425 - 2.5000000000000000e+00 -2 -3 1426 1.5000000000000000e+00 - - 1. -9.8024749755859375e-01 3.7663710117340088e-01 - -1.3456873595714569e-01 - <_> - 4.0677371978759766e+01 - - 1 2 1427 2.1500000000000000e+01 0 -1 1428 - 1.1125000000000000e+03 -2 -3 1429 2.3500000000000000e+01 - - 4.5568805187940598e-02 -8.6155319213867188e-01 - 3.0837088823318481e-01 -1.9941620528697968e-01 - <_> - 4.0941162109375000e+01 - - 1 2 1430 9.4500000000000000e+01 0 -1 1431 447. -2 -3 1432 - 8.9500000000000000e+01 - - 2.0531620085239410e-01 -6.4759564399719238e-01 - 2.6378956437110901e-01 -6.0503029823303223e-01 - <_> - 4.0695613861083984e+01 - - 1 2 1433 8.1450000000000000e+02 0 -1 1434 - 9.9250000000000000e+02 -2 -3 1435 2.1450000000000000e+02 - - -6.1355805397033691e-01 3.9234723895788193e-02 - 4.3808567523956299e-01 -7.3097014427185059e-01 - <_> - 4.1197418212890625e+01 - - 1 2 1436 1.8769500000000000e+04 0 -1 1437 1329. -2 -3 1438 - 5.4500000000000000e+01 - - 5.0180602073669434e-01 -3.4298053383827209e-01 - 6.9242316484451294e-01 -3.7215092778205872e-01 - <_> - 4.1157611846923828e+01 - - 1 2 1439 3.1500000000000000e+01 0 -1 1440 - 1.8500000000000000e+01 -2 -3 1441 1.5000000000000000e+00 - - 6.7518281936645508e-01 -7.6596146821975708e-01 - 5.7309043407440186e-01 -3.9805334061384201e-02 - <_> - 4.0718166351318359e+01 - - 1 2 1442 9.3500000000000000e+01 0 -1 1443 - 8.5000000000000000e+00 -2 -3 1444 1.6950000000000000e+02 - - 7.0507103204727173e-01 -4.3868264555931091e-01 - 4.2583593726158142e-01 -4.3944749236106873e-01 - <_> - 4.1168849945068359e+01 - - 1 2 1445 1.5000000000000000e+00 0 -1 1446 - 1.5500000000000000e+01 -2 -3 1447 5.0000000000000000e-01 - - -5.8355963230133057e-01 8.2266020774841309e-01 - 4.5068329572677612e-01 -1.3382685184478760e-01 - <_> - 4.1473163604736328e+01 - - 1 2 1448 5.6500000000000000e+01 0 -1 1449 - 3.3500000000000000e+01 -2 -3 1450 2.1550000000000000e+02 - - 2.5085982680320740e-01 -3.7931889295578003e-01 - 6.7997491359710693e-01 -1. - <_> - 4.1634220123291016e+01 - - 1 2 1451 5.4500000000000000e+01 0 -1 1452 - 9.5000000000000000e+00 -2 -3 1453 1.7250000000000000e+02 - - -7.9712128639221191e-01 8.5313194990158081e-01 - 1.6105654835700989e-01 -9.5611929893493652e-01 - <_> - 4.1978507995605469e+01 - - 1 2 1454 1.1615000000000000e+03 0 -1 1455 - 2.0525000000000000e+03 -2 -3 1456 5.8650000000000000e+02 - - -7.1788591146469116e-01 4.8950648307800293e-01 - 4.8551353812217712e-01 -1.9422738254070282e-01 - <_> - 4.2004768371582031e+01 - - 1 2 1457 4.6500000000000000e+01 0 -1 1458 - 3.5000000000000000e+00 -2 -3 1459 7.0350000000000000e+02 - - 3.9823031425476074e-01 -6.6477078199386597e-01 - -1.1496587097644806e-01 4.9930962920188904e-01 - <_> - 4.1885951995849609e+01 - - 1 2 1460 4.4500000000000000e+01 0 -1 1461 - 3.5000000000000000e+00 -2 -3 1462 4. - - 4.4042432308197021e-01 -1.1881566792726517e-01 - 8.4207451343536377e-01 -8.6268407106399536e-01 - <_> - 4.2072120666503906e+01 - - 1 2 1463 2.0500000000000000e+01 0 -1 1464 10. -2 -3 1465 - 5.5000000000000000e+00 - - -9.8040562868118286e-01 1. 3.3258756995201111e-01 - -1.7096966505050659e-01 - <_> - 4.2217323303222656e+01 - - 1 2 1466 1.3500000000000000e+01 0 -1 1467 47. -2 -3 1468 - 1.3325000000000000e+03 - - -6.6619759798049927e-01 5.1798510551452637e-01 - -1.2162621133029461e-03 7.3543995618820190e-01 - <_> - 4.2318325042724609e+01 - - 1 2 1469 4.5000000000000000e+00 0 -1 1470 - 1.9500000000000000e+01 -2 -3 1471 1.5585000000000000e+03 - - -9.6737003326416016e-01 6.0924607515335083e-01 - 5.8938968181610107e-01 -2.8636392951011658e-01 - <_> - 4.2444244384765625e+01 - - 1 2 1472 2.7500000000000000e+01 0 -1 1473 - 1.8247500000000000e+04 -2 -3 1474 6.5605000000000000e+03 - - -1.1921727657318115e-01 4.3995112180709839e-01 - -7.6667350530624390e-01 4.6777427196502686e-01 - <_> - 4.2317867279052734e+01 - - 1 2 1475 4.5000000000000000e+00 0 -1 1476 15. -2 -3 1477 - 3.2500000000000000e+01 - - -9.6039277315139771e-01 1. 3.9408209919929504e-01 - -1.2637579441070557e-01 - <_> - 4.2575748443603516e+01 - - 1 2 1478 367. 0 -1 1479 2578. -2 -3 1480 - 2.0050000000000000e+02 - - 5.2356463670730591e-01 -6.4678192138671875e-01 - 3.1403809785842896e-01 -3.7955451011657715e-01 - <_> - 4.2238155364990234e+01 - - 1 2 1481 5.4500000000000000e+01 0 -1 1482 - 1.8450000000000000e+02 -2 -3 1483 5.6550000000000000e+02 - - -7.5117689371109009e-01 3.9905190467834473e-01 - 1.0141634941101074e-01 -6.3857173919677734e-01 - <_> - 4.2032226562500000e+01 - - 1 2 1484 3.5500000000000000e+01 0 -1 1485 - 1.1500000000000000e+01 -2 -3 1486 4.2500000000000000e+01 - - -6.1570602655410767e-01 3.6179527640342712e-01 - 4.0053242444992065e-01 -2.0592956244945526e-01 - <_> - 4.2406646728515625e+01 - - 1 2 1487 3.6150000000000000e+02 0 -1 1488 - 7.6500000000000000e+01 -2 -3 1489 2.5000000000000000e+00 - - 2.1660387516021729e-01 -3.7647891044616699e-01 - 6.7929941415786743e-01 -8.0690664052963257e-01 - <_> - 4.2598564147949219e+01 - - 1 2 1490 3.2350000000000000e+02 0 -1 1491 - 9.5000000000000000e+00 -2 -3 1492 1.0350000000000000e+02 - - 2.8338834643363953e-01 -2.8749933838844299e-01 - -4.2244365811347961e-01 8.4098398685455322e-01 - <_> - 4.2448162078857422e+01 - - 1 2 1493 6.8500000000000000e+01 0 -1 1494 - 1.9500000000000000e+01 -2 -3 1495 2.8500000000000000e+01 - - 4.4642934203147888e-01 -8.8521170616149902e-01 - 3.8606628775596619e-01 -1.5039834380149841e-01 - <_> - 4.2684196472167969e+01 - - 1 2 1496 1.1350000000000000e+02 0 -1 1497 - 1.2195000000000000e+03 -2 -3 1498 465. - - -3.4444883465766907e-01 2.3603120446205139e-01 - 7.6531344652175903e-01 -3.9807590842247009e-01 - <_> - 4.2983776092529297e+01 - - 1 2 1499 1.5725000000000000e+03 0 -1 1500 - 7.6500000000000000e+01 -2 -3 1501 5.5000000000000000e+00 - - -3.2652869820594788e-01 2.9957908391952515e-01 - 3.3552268147468567e-01 -7.9458123445510864e-01 - <_> - 4.3334823608398438e+01 - - 1 2 1502 2.2500000000000000e+01 0 -1 1503 - 1.5000000000000000e+00 -2 -3 1504 9.5000000000000000e+00 - - -5.7209235429763794e-01 3.5104992985725403e-01 - 3.1476601958274841e-02 -5.8574450016021729e-01 - <_> - 4.3509834289550781e+01 - - 1 2 1505 51199. 0 -1 1506 5.5950000000000000e+02 -2 -3 1507 - 9.3125000000000000e+03 - - 3.0665323138237000e-01 -1.8138632178306580e-01 - -9.8618561029434204e-01 1. - <_> - 4.3432380676269531e+01 - - 1 2 1508 2.3365000000000000e+03 0 -1 1509 1614. -2 -3 1510 - 2.9285000000000000e+03 - - -6.6426819562911987e-01 5.2347922325134277e-01 - 6.3229858875274658e-01 -7.7455088496208191e-02 - <_> - 4.3682022094726562e+01 - - 1 2 1511 1.4850000000000000e+02 0 -1 1512 - 3.4500000000000000e+01 -2 -3 1513 4351. - - -4.1966313123703003e-01 2.4964161217212677e-01 - -9.2960160970687866e-01 -1.1052240431308746e-01 - <_> - 4.3838462829589844e+01 - - 1 2 1514 1.5000000000000000e+00 0 -1 1515 - 5.6150000000000000e+02 -2 -3 1516 2.5215000000000000e+03 - - -7.1278488636016846e-01 4.3191543221473694e-01 - -4.5729264616966248e-01 2.2259603440761566e-01 - <_> - 4.3913276672363281e+01 - - 1 2 1517 452. 0 -1 1518 1.5850000000000000e+02 -2 -3 1519 - 3.6500000000000000e+01 - - 2.7823349833488464e-01 -4.4655042886734009e-01 - -7.6742780208587646e-01 1.3798709213733673e-01 - <_> - 4.3755275726318359e+01 - - 1 2 1520 1.2150000000000000e+02 0 -1 1521 - 6.1500000000000000e+01 -2 -3 1522 2.4150000000000000e+02 - - 5.8016028255224228e-02 -5.8355945348739624e-01 - -6.6341340541839600e-01 4.4974878430366516e-01 - <_> - 4.3783382415771484e+01 - - 1 2 1523 1.0750000000000000e+02 0 -1 1524 - 4.5000000000000000e+00 -2 -3 1525 1080. - - 1.8615058064460754e-01 -4.8687478899955750e-01 - 4.3972969055175781e-01 -9.3779921531677246e-01 - <_> - 4.3861518859863281e+01 - - 1 2 1526 8.6500000000000000e+01 0 -1 1527 - 1.5000000000000000e+00 -2 -3 1528 1.1050000000000000e+02 - - 4.7667163610458374e-01 -4.0568494796752930e-01 - -6.4215010404586792e-01 2.9706746339797974e-02 - <_> - 4.4278926849365234e+01 - - 1 2 1529 1.7500000000000000e+01 0 -1 1530 - 1.4500000000000000e+01 -2 -3 1531 7.5500000000000000e+01 - - -6.9139021635055542e-01 6.4281481504440308e-01 - 1.8875285983085632e-02 8.0112278461456299e-01 - <_> - 4.4180038452148438e+01 - - 1 2 1532 1.3500000000000000e+01 0 -1 1533 - 3.7500000000000000e+01 -2 -3 1534 5.5000000000000000e+00 - - -5.8149468898773193e-01 3.6302325129508972e-01 - 2.1482136845588684e-01 -4.8260265588760376e-01 - <_> - 4.4126861572265625e+01 - - 1 2 1535 1.1500000000000000e+01 0 -1 1536 - 4.1450000000000000e+02 -2 -3 1537 448. - - 6.4174473285675049e-01 -5.1509088277816772e-01 - 3.2752755284309387e-01 -4.6536535024642944e-01 - <_> - 4.4402042388916016e+01 - - 1 2 1538 2.3500000000000000e+01 0 -1 1539 - 1.5000000000000000e+00 -2 -3 1540 1.2750000000000000e+02 - - 4.6208882704377174e-03 -7.9509699344635010e-01 - 2.7518290281295776e-01 -5.4167103767395020e-01 - <_> - 4.4075366973876953e+01 - - 1 2 1541 5.0000000000000000e-01 0 -1 1542 - 1.1500000000000000e+01 -2 -3 1543 1.1150000000000000e+02 - - -6.2465864419937134e-01 6.2209093570709229e-01 - -4.6270170807838440e-01 1.2467093765735626e-01 - <_> - 4.4579692840576172e+01 - - 1 2 1544 1.8500000000000000e+01 0 -1 1545 - 6.9500000000000000e+01 -2 -3 1546 4.0500000000000000e+01 - - 5.0432658195495605e-01 -1.5816394984722137e-01 - -6.3987523317337036e-01 1.9685916602611542e-01 - <_> - 4.4788379669189453e+01 - - 1 2 1547 1.2850000000000000e+02 0 -1 1548 - 1.3644850000000000e+05 -2 -3 1549 4.5000000000000000e+00 - - -1.3887935876846313e-01 -8.6476135253906250e-01 - 5.3407603502273560e-01 -1.0505830496549606e-01 - <_> - 4.4465953826904297e+01 - - 1 2 1550 1.0077500000000000e+04 0 -1 1551 - 1.9500000000000000e+01 -2 -3 1552 2.8365000000000000e+03 - - 1.8253329396247864e-01 -5.4899621009826660e-01 - 7.3290371894836426e-01 -1.2869638204574585e-01 - <_> - 4.4705356597900391e+01 - - 1 2 1553 7.0500000000000000e+01 0 -1 1554 - 2.6950000000000000e+02 -2 -3 1555 1.0050000000000000e+02 - - 1.6822533309459686e-01 -6.7410588264465332e-01 - 2.3940414190292358e-01 -7.4502784013748169e-01 - <_> - 4.4884269714355469e+01 - - 1 2 1556 1680. 0 -1 1557 7.5000000000000000e+00 -2 -3 1558 - 3.5850000000000000e+02 - - 2.8662183880805969e-01 -9.1832697391510010e-01 - 1.7891472578048706e-01 -5.9693121910095215e-01 - <_> - 4.4728557586669922e+01 - - 1 2 1559 1.7555000000000000e+03 0 -1 1560 19. -2 -3 1561 - 2332. - - -5.2603626251220703e-01 7.1634864807128906e-01 - -6.1052620410919189e-01 -4.9342345446348190e-03 - <_> - 4.4819171905517578e+01 - - 1 2 1562 1.3750000000000000e+02 0 -1 1563 - 1.5750000000000000e+02 -2 -3 1564 1.3050000000000000e+02 - - -6.0166075825691223e-02 5.8633291721343994e-01 - -8.1866687536239624e-01 1. - <_> - 4.4643035888671875e+01 - - 1 2 1565 6.3500000000000000e+01 0 -1 1566 - 1.9500000000000000e+01 -2 -3 1567 552. - - -7.2267347574234009e-01 2.3417486250400543e-01 - 4.9026021361351013e-01 -6.2466406822204590e-01 - <_> - 4.4639259338378906e+01 - - 1 2 1568 3.5000000000000000e+00 0 -1 1569 - 2.4500000000000000e+01 -2 -3 1570 8.2150000000000000e+02 - - -3.5061278939247131e-01 4.3918311595916748e-01 - 4.6116840094327927e-02 -6.6601943969726562e-01 - <_> - 4.4594688415527344e+01 - - 1 2 1571 1.3500000000000000e+01 0 -1 1572 - 8.5000000000000000e+00 -2 -3 1573 2.1500000000000000e+01 - - -2.5554552674293518e-02 -8.3599025011062622e-01 - 6.3880258798599243e-01 -4.4572211802005768e-02 - <_> - 4.4976432800292969e+01 - - 1 2 1574 9.0350000000000000e+02 0 -1 1575 - 2.0500000000000000e+01 -2 -3 1576 1.2615000000000000e+03 - - 3.8174423575401306e-01 -2.4711053073406219e-01 - -7.3085212707519531e-01 1.3097274303436279e-01 - <_> - 4.5154560089111328e+01 - - 1 2 1577 3.2500000000000000e+01 0 -1 1578 41. -2 -3 1579 - 1153. - - 1.3735578954219818e-01 -9.0119731426239014e-01 - -8.0212074518203735e-01 1.7812842130661011e-01 - <_> - 4.5438049316406250e+01 - - 1 2 1580 3.4500000000000000e+01 0 -1 1581 - 1.4500000000000000e+01 -2 -3 1582 1.8650000000000000e+02 - - 7.1418809890747070e-01 -4.1756910085678101e-01 - 3.2309561967849731e-01 -6.6359835863113403e-01 - <_> - 4.5376655578613281e+01 - - 1 2 1583 5.7500000000000000e+01 0 -1 1584 - 3.4835000000000000e+03 -2 -3 1585 1.6677500000000000e+04 - - 9.3545570969581604e-02 -6.6382712125778198e-01 - -6.0366630554199219e-01 3.5915172100067139e-01 - <_> - 4.5476417541503906e+01 - - 1 2 1586 1.2235000000000000e+03 0 -1 1587 - 5.0000000000000000e-01 -2 -3 1588 2.0550000000000000e+02 - - 9.9763244390487671e-02 -5.6198817491531372e-01 - 5.3732144832611084e-01 -2.9778870940208435e-01 - <_> - 4.5174198150634766e+01 - - 1 2 1589 2.5750000000000000e+02 0 -1 1590 - 3.4500000000000000e+01 -2 -3 1591 4.5000000000000000e+00 - - -5.3968584537506104e-01 9.1056388616561890e-01 - 2.8303310275077820e-01 -3.0222162604331970e-01 - <_> - 4.5571937561035156e+01 - - 1 2 1592 3.5500000000000000e+01 0 -1 1593 - 2.5000000000000000e+00 -2 -3 1594 9.5000000000000000e+00 - - 8.1757766008377075e-01 -9.3560528755187988e-01 - 4.8287272453308105e-01 -1.0781970620155334e-01 - <_> - 4.5820465087890625e+01 - - 1 2 1595 2.6500000000000000e+01 0 -1 1596 - 9.5000000000000000e+00 -2 -3 1597 64. - - 1.6339369118213654e-01 -4.8592147231101990e-01 - -8.0971640348434448e-01 4.2723599076271057e-01 - <_> - 4.5875530242919922e+01 - - 1 2 1598 4.8150000000000000e+02 0 -1 1599 - 1.9285000000000000e+03 -2 -3 1600 1.1625000000000000e+03 - - -7.9999005794525146e-01 1.8668703734874725e-01 - 6.2736529111862183e-01 -1.2364284694194794e-01 - <_> - 4.6327709197998047e+01 - - 1 2 1601 8.9450000000000000e+02 0 -1 1602 - 1.5000000000000000e+00 -2 -3 1603 6634. - - 1.7092481255531311e-02 -6.5232801437377930e-01 - 5.6317013502120972e-01 -4.4582167267799377e-01 - <_> - 4.6148258209228516e+01 - - 1 2 1604 43039. 0 -1 1605 1.5500000000000000e+01 -2 -3 1606 - 3.8225000000000000e+03 - - -1. 4.9083131551742554e-01 -3.1666326522827148e-01 - 6.4053624868392944e-01 - <_> - 4.6105995178222656e+01 - - 1 2 1607 3.5000000000000000e+00 0 -1 1608 21. -2 -3 1609 - 2.6500000000000000e+01 - - -9.7276186943054199e-01 1. 3.7125155329704285e-01 - -1.5020866692066193e-01 - <_> - 4.6445560455322266e+01 - - 1 2 1610 1.4450000000000000e+02 0 -1 1611 - 1.0500000000000000e+01 -2 -3 1612 6.4500000000000000e+01 - - 5.7516593486070633e-02 -5.1498800516128540e-01 - 8.0552762746810913e-01 -1. - <_> - 4.6819828033447266e+01 - - 1 2 1613 8.8500000000000000e+01 0 -1 1614 - 5.0000000000000000e-01 -2 -3 1615 3.1500000000000000e+01 - - 2.4280284345149994e-01 -5.9024065732955933e-01 - 4.4487208127975464e-01 -1.7842440307140350e-01 - <_> - 4.6427459716796875e+01 - - 1 2 1616 3.1500000000000000e+01 0 -1 1617 - 3.6500000000000000e+01 -2 -3 1618 1.1135000000000000e+03 - - -3.8508945703506470e-01 5.4531073570251465e-01 - -3.9237090945243835e-01 5.3639191389083862e-01 - <_> - 4.6388378143310547e+01 - - 1 2 1619 1.3495000000000000e+03 0 -1 1620 - 1.2865000000000000e+03 -2 -3 1621 1.5000000000000000e+00 - - -3.9079591631889343e-02 7.2226065397262573e-01 - 1.6772003471851349e-01 -8.0866611003875732e-01 - <_> - 4.6664485931396484e+01 - - 1 2 1622 5.7650000000000000e+02 0 -1 1623 38772. -2 -3 1624 - 3.5000000000000000e+00 - - -6.7578887939453125e-01 4.5766559243202209e-01 - 3.2720005512237549e-01 -3.8240414857864380e-01 - <_> - 4.6878482818603516e+01 - - 1 2 1625 1.6500000000000000e+01 0 -1 1626 - 3.1050000000000000e+02 -2 -3 1627 1.9500000000000000e+01 - - 3.3941693603992462e-02 -8.9211910963058472e-01 - -7.0304632186889648e-01 2.1399846673011780e-01 - <_> - 4.6925651550292969e+01 - - 1 2 1628 1.0285000000000000e+03 0 -1 1629 - 2.7950000000000000e+02 -2 -3 1630 9.5000000000000000e+00 - - 4.1127714514732361e-01 -1.3439148664474487e-01 - -7.5179332494735718e-01 3.4586694836616516e-01 - <_> - 4.7010379791259766e+01 - - 1 2 1631 2.4500000000000000e+01 0 -1 1632 - 1.1265000000000000e+03 -2 -3 1633 5.5000000000000000e+00 - - -5.5471497774124146e-01 8.4728397428989410e-02 - -6.6250604391098022e-01 5.0282490253448486e-01 - <_> - 4.7003398895263672e+01 - - 1 2 1634 5.5000000000000000e+00 0 -1 1635 - 1.3500000000000000e+01 -2 -3 1636 5.3500000000000000e+01 - - -6.1465358734130859e-01 5.2310514450073242e-01 - -6.9816145114600658e-03 -6.2556844949722290e-01 - <_> - 4.7450687408447266e+01 - - 1 2 1637 8.5000000000000000e+00 0 -1 1638 - 1.9500000000000000e+01 -2 -3 1639 7.3500000000000000e+01 - - 1.8994300067424774e-01 -5.1936614513397217e-01 - -5.1978632807731628e-02 5.4172980785369873e-01 - <_> - 4.7289505004882812e+01 - - 1 2 1640 4.5000000000000000e+00 0 -1 1641 - 5.0000000000000000e-01 -2 -3 1642 7.9500000000000000e+01 - - -9.3673211336135864e-01 4.2628908157348633e-01 - -6.1518812179565430e-01 3.8786195218563080e-02 - <_> - 4.7609291076660156e+01 - - 1 2 1643 9.0500000000000000e+01 0 -1 1644 - 1.7500000000000000e+01 -2 -3 1645 5.5500000000000000e+01 - - 2.5377960875630379e-02 8.4010601043701172e-01 - -5.5201697349548340e-01 9.3266852200031281e-02 - <_> - 4.6873203277587891e+01 - - 1 2 1646 181. 0 -1 1647 3.2500000000000000e+01 -2 -3 1648 - 1.5500000000000000e+01 - - -2.4539522826671600e-01 3.0167981982231140e-01 - -7.8757899999618530e-01 1. - <_> - 4.7333202362060547e+01 - - 1 2 1649 3.5000000000000000e+00 0 -1 1650 - 3.6450000000000000e+02 -2 -3 1651 131. - - 4.5999684929847717e-01 -8.5532951354980469e-01 - -7.6767379045486450e-01 -4.0166407823562622e-02 - <_> - 4.7809810638427734e+01 - - 1 2 1652 2.3415000000000000e+03 0 -1 1653 - 5.5550000000000000e+02 -2 -3 1654 7.8650000000000000e+02 - - 1.0606591403484344e-01 -7.2960245609283447e-01 - 4.7661080956459045e-01 -1.5633082389831543e-01 - <_> - 4.8187953948974609e+01 - - 1 2 1655 5.0500000000000000e+01 0 -1 1656 - 2.7500000000000000e+01 -2 -3 1657 4.6500000000000000e+01 - - -3.6588409543037415e-01 2.0847728848457336e-01 - 5.3038245439529419e-01 -9.1906154155731201e-01 - <_> - 4.8385017395019531e+01 - - 1 2 1658 2.5000000000000000e+00 0 -1 1659 - 5.0000000000000000e-01 -2 -3 1660 5.0000000000000000e-01 - - -8.3917874097824097e-01 3.5120227932929993e-01 - 4.4822514057159424e-02 -5.4643929004669189e-01 - <_> - 4.7983116149902344e+01 - - 1 2 1661 1.7500000000000000e+01 0 -1 1662 46. -2 -3 1663 - 4.8500000000000000e+01 - - -8.7424659729003906e-01 4.0549939870834351e-01 - -4.3008446693420410e-01 3.0111113190650940e-01 - <_> - 4.7767936706542969e+01 - - 1 2 1664 3.7250000000000000e+02 0 -1 1665 - 1.9500000000000000e+01 -2 -3 1666 1.7500000000000000e+01 - - -2.1517898142337799e-01 3.3102101087570190e-01 - -7.5989711284637451e-01 2.0524039864540100e-01 - <_> - 4.7636989593505859e+01 - - 1 2 1667 5.0000000000000000e-01 0 -1 1668 - 3.5000000000000000e+00 -2 -3 1669 2.2050000000000000e+02 - - -5.5064278841018677e-01 4.6156671643257141e-01 - -3.4933045506477356e-01 3.1964045763015747e-01 - <_> - 4.8035350799560547e+01 - - 1 2 1670 5.5000000000000000e+00 0 -1 1671 - 1.6500000000000000e+01 -2 -3 1672 1.5000000000000000e+00 - - 5.4588496685028076e-01 -5.2224334329366684e-02 1. - -9.5129132270812988e-01 - <_> - 4.8075088500976562e+01 - - 1 2 1673 5.8500000000000000e+01 0 -1 1674 - 1.7500000000000000e+01 -2 -3 1675 60. - - 3.9737168699502945e-02 -4.9285057187080383e-01 - 5.5449837446212769e-01 -5.8396834135055542e-01 - <_> - 4.8273761749267578e+01 - - 1 2 1676 5.5000000000000000e+00 0 -1 1677 - 2.4500000000000000e+01 -2 -3 1678 5.5450000000000000e+02 - - 1.7725417017936707e-01 -8.1391674280166626e-01 - -5.4412531852722168e-01 2.6674869656562805e-01 - <_> - 4.8013420104980469e+01 - - 1 2 1679 8.5000000000000000e+00 0 -1 1680 1955. -2 -3 1681 - 96. - - 1.7242313921451569e-01 -9.2252993583679199e-01 - 1.7602242529392242e-01 -6.7200791835784912e-01 - <_> - 4.8326412200927734e+01 - - 1 2 1682 3.0104500000000000e+04 0 -1 1683 - 2.8050000000000000e+02 -2 -3 1684 2.7154500000000000e+04 - - 3.1299278140068054e-01 -1.8952211737632751e-01 - -9.5317900180816650e-01 1. - <_> - 4.8304637908935547e+01 - - 1 2 1685 5.4500000000000000e+01 0 -1 1686 - 4.4650000000000000e+02 -2 -3 1687 3.5000000000000000e+00 - - 2.1255780756473541e-01 -8.1515192985534668e-01 - 6.9879400730133057e-01 -2.3700682446360588e-02 - <_> - 4.8183525085449219e+01 - - 1 2 1688 2.5000000000000000e+00 0 -1 1689 128. -2 -3 1690 - 3.5450000000000000e+02 - - -8.0286073684692383e-01 8.9803677797317505e-01 - 3.0971682071685791e-01 -2.6458665728569031e-01 - <_> - 4.8420330047607422e+01 - - 1 2 1691 4.5000000000000000e+00 0 -1 1692 1348. -2 -3 1693 - 1.6500000000000000e+01 - - 2.1627983450889587e-01 -9.3673717975616455e-01 - 2.7623519301414490e-01 -2.4342669546604156e-01 - <_> - 4.8284450531005859e+01 - - 1 2 1694 5.0350000000000000e+02 0 -1 1695 - 5.1950000000000000e+02 -2 -3 1696 7.8350000000000000e+02 - - -3.7904888391494751e-01 9.6044069528579712e-01 - 7.1280044317245483e-01 -2.8820293024182320e-02 - <_> - 4.8518047332763672e+01 - - 1 2 1697 7.3500000000000000e+01 0 -1 1698 - 1.0750000000000000e+02 -2 -3 1699 1.0508500000000000e+04 - - 2.3359699547290802e-01 -3.2509902119636536e-01 - -5.7240724563598633e-01 6.9403934478759766e-01 - <_> - 4.8881092071533203e+01 - - 1 2 1700 1.9500000000000000e+01 0 -1 1701 - 2.5000000000000000e+00 -2 -3 1702 5.7450000000000000e+02 - - 7.0620238780975342e-02 -6.4059627056121826e-01 - -5.6051510572433472e-01 3.6304420232772827e-01 - <_> - 4.8674976348876953e+01 - - 1 2 1703 1.6500000000000000e+01 0 -1 1704 2698. -2 -3 1705 - 1.8500000000000000e+01 - - -9.4122928380966187e-01 1. 3.0906781554222107e-01 - -2.2473946213722229e-01 - <_> - 4.8650527954101562e+01 - - 1 2 1706 285. 0 -1 1707 2.5000000000000000e+00 -2 -3 1708 - 2.9500000000000000e+01 - - -6.1351448297500610e-01 6.1334443092346191e-01 - -5.3962910175323486e-01 9.5953509211540222e-02 - <_> - 4.8581436157226562e+01 - - 1 2 1709 1.5000000000000000e+00 0 -1 1710 - 7.2500000000000000e+01 -2 -3 1711 2.5000000000000000e+00 - - -1.5018194913864136e-01 5.4274356365203857e-01 - 3.2649326324462891e-01 -4.6085461974143982e-01 - <_> - 4.8824050903320312e+01 - - 1 2 1712 7.5000000000000000e+00 0 -1 1713 - 1.3500000000000000e+01 -2 -3 1714 1.4750000000000000e+02 - - -9.4072926044464111e-01 4.9135723710060120e-01 - -3.6922344565391541e-01 2.8209823369979858e-01 - <_> - 4.9051761627197266e+01 - - 1 2 1715 1.2945000000000000e+03 0 -1 1716 - 2.5000000000000000e+00 -2 -3 1717 12557. - - 2.2771342098712921e-01 -3.0103012919425964e-01 - 8.6664509773254395e-01 -6.4184981584548950e-01 - <_> - 4.9400878906250000e+01 - - 1 2 1718 3.7500000000000000e+01 0 -1 1719 - 1.5000000000000000e+00 -2 -3 1720 1.7395000000000000e+03 - - 5.5372547358274460e-02 -6.4846998453140259e-01 - -5.1582384109497070e-01 3.7294328212738037e-01 - <_> - 4.9400951385498047e+01 - - 1 2 1721 1.9500000000000000e+01 0 -1 1722 - 2.7500000000000000e+01 -2 -3 1723 1.5500000000000000e+01 - - -1.0849715210497379e-02 -6.8436485528945923e-01 - -2.9969093203544617e-01 8.8249796628952026e-01 - <_> - 4.9150127410888672e+01 - - 1 2 1724 6695. 0 -1 1725 4.1995000000000000e+03 -2 -3 1726 - 3060. - - 6.0968101024627686e-01 -1.8973879516124725e-01 - 6.7397463321685791e-01 -2.9114890098571777e-01 - <_> - 4.9635650634765625e+01 - - 1 2 1727 1.2185000000000000e+03 0 -1 1728 - 6.7250000000000000e+02 -2 -3 1729 4.4500000000000000e+01 - - -3.2244133949279785e-01 8.5333442687988281e-01 - -6.7660027742385864e-01 4.8552277684211731e-01 - <_> - 4.9185047149658203e+01 - - 1 2 1730 4.6500000000000000e+01 0 -1 1731 - 1.7535000000000000e+03 -2 -3 1732 8.8500000000000000e+01 - - 1.1635149270296097e-01 -4.5060265064239502e-01 - -8.2891207933425903e-01 8.0917561054229736e-01 - <_> - 4.9572048187255859e+01 - - 1 2 1733 3.5000000000000000e+00 0 -1 1734 - 1.2500000000000000e+01 -2 -3 1735 4.4115000000000000e+03 - - -7.0214819908142090e-01 3.8700041174888611e-01 - -4.7868278622627258e-01 1.9085995852947235e-01 - <_> - 4.9520980834960938e+01 - - 1 2 1736 6.4500000000000000e+01 0 -1 1737 - 1.0850000000000000e+02 -2 -3 1738 9.5775000000000000e+03 - - -5.1066368818283081e-02 6.1802017688751221e-01 - -8.5373187065124512e-01 7.1274143457412720e-01 - <_> - 4.9744472503662109e+01 - - 1 2 1739 2.5000000000000000e+00 0 -1 1740 - 1.8500000000000000e+01 -2 -3 1741 8.5000000000000000e+00 - - -8.1709325313568115e-01 4.6844825148582458e-01 - 2.2349253296852112e-01 -4.7425210475921631e-01 - <_> - 5.0045192718505859e+01 - - 1 2 1742 1.2500000000000000e+01 0 -1 1743 - 7.5000000000000000e+00 -2 -3 1744 4.5000000000000000e+00 - - 4.9264114350080490e-02 -5.9978258609771729e-01 - 3.0072054266929626e-01 -7.8326350450515747e-01 - <_> - 5.0417678833007812e+01 - - 1 2 1745 4.1500000000000000e+01 0 -1 1746 - 3.5000000000000000e+00 -2 -3 1747 614. - - 4.2858477681875229e-02 -6.5439593791961670e-01 - 3.7248274683952332e-01 -6.0121566057205200e-01 - <_> - 5.0184413909912109e+01 - - 1 2 1748 1.8500000000000000e+01 0 -1 1749 - 1.9500000000000000e+01 -2 -3 1750 4.2335000000000000e+03 - - -3.9789116382598877e-01 3.3808970451354980e-01 - -6.7741900682449341e-01 -6.1766817234456539e-03 - <_> - 5.0395923614501953e+01 - - 1 2 1751 7.8500000000000000e+01 0 -1 1752 621. -2 -3 1753 - 1.1150000000000000e+02 - - -5.8525377511978149e-01 4.6244528889656067e-01 - -6.4186108112335205e-01 -1.5577160753309727e-02 - <_> - 5.0368152618408203e+01 - - 1 2 1754 7.4500000000000000e+01 0 -1 1755 - 8.0500000000000000e+01 -2 -3 1756 5.5000000000000000e+00 - - 2.7840653061866760e-01 -5.0665259361267090e-01 - 2.8003776073455811e-01 -6.6763132810592651e-01 - <_> - 5.0609447479248047e+01 - - 1 2 1757 4.5000000000000000e+00 0 -1 1758 - 5.0000000000000000e-01 -2 -3 1759 1.0050000000000000e+02 - - 1.4921510219573975e-01 -6.7458331584930420e-01 - 2.4129594862461090e-01 -7.1370732784271240e-01 - <_> - 5.0734519958496094e+01 - - 1 2 1760 8.1450000000000000e+02 0 -1 1761 - 3.1750000000000000e+02 -2 -3 1762 4.1450000000000000e+02 - - -3.4531843662261963e-01 5.5791461467742920e-01 - 5.3364270925521851e-01 -3.7804716825485229e-01 - <_> - 5.0482379913330078e+01 - - 1 2 1763 1.5500000000000000e+01 0 -1 1764 - 6.5000000000000000e+00 -2 -3 1765 2.7500000000000000e+01 - - -7.7612209320068359e-01 2.8200766444206238e-01 - -6.6070902347564697e-01 5.4497551918029785e-01 - <_> - 5.0946456909179688e+01 - - 1 2 1766 1.3055000000000000e+03 0 -1 1767 13080. -2 -3 1768 - 1.5000000000000000e+00 - - -1.6180552542209625e-02 6.9708949327468872e-01 - 1.5789812803268433e-01 -6.3250225782394409e-01 - <_> - 5.0942211151123047e+01 - - 1 2 1769 5.5000000000000000e+00 0 -1 1770 - 1.6500000000000000e+01 -2 -3 1771 1.1500000000000000e+01 - - -6.9032448530197144e-01 4.8323771357536316e-01 - -5.8806318044662476e-01 -4.2477925308048725e-03 - <_> - 5.0879100799560547e+01 - - 1 2 1772 3.2500000000000000e+01 0 -1 1773 - 1.5000000000000000e+00 -2 -3 1774 203. - - 7.2742664813995361e-01 -9.5186221599578857e-01 - 2.9152801632881165e-01 -2.9612061381340027e-01 - <_> - 5.1405494689941406e+01 - - 1 2 1775 5.9500000000000000e+01 0 -1 1776 - 5.0000000000000000e-01 -2 -3 1777 5.1500000000000000e+01 - - 2.0475186407566071e-01 -4.3729728460311890e-01 - 5.2639096975326538e-01 -5.4126620292663574e-01 - <_> - 5.1545295715332031e+01 - - 1 2 1778 5.1500000000000000e+01 0 -1 1779 113. -2 -3 1780 - 14. - - -8.7603360414505005e-01 1.3980150222778320e-01 1. - -9.8559749126434326e-01 - <_> - 5.1772174835205078e+01 - - 1 2 1781 5.0000000000000000e-01 0 -1 1782 - 5.0000000000000000e-01 -2 -3 1783 6.9500000000000000e+01 - - -8.5320812463760376e-01 5.4211145639419556e-01 - -4.2864811420440674e-01 1.9388379156589508e-01 - <_> - 5.1395809173583984e+01 - - 1 2 1784 4.1500000000000000e+01 0 -1 1785 - 2.4500000000000000e+01 -2 -3 1786 1.0350000000000000e+02 - - -3.6399099230766296e-01 2.9955938458442688e-01 - -6.9159519672393799e-01 4.9095645546913147e-01 - <_> - 5.1332057952880859e+01 - - 1 2 1787 1.1545000000000000e+03 0 -1 1788 - 1.0500000000000000e+01 -2 -3 1789 7.7350000000000000e+02 - - -8.4412866830825806e-01 2.4716804921627045e-01 - 6.3626372814178467e-01 -6.3753142952919006e-02 - <_> - 5.1058708190917969e+01 - - 1 2 1790 2.5000000000000000e+00 0 -1 1791 156. -2 -3 1792 - 667. - - 5.6390190124511719e-01 -7.4146884679794312e-01 - -2.7334854006767273e-01 6.9182580709457397e-01 - <_> - 5.1457290649414062e+01 - - 1 2 1793 1.8500000000000000e+01 0 -1 1794 125. -2 -3 1795 - 6.5000000000000000e+00 - - -5.9387379884719849e-01 8.3531779050827026e-01 - 6.5114057064056396e-01 -2.6395700871944427e-02 - <_> - 5.1741825103759766e+01 - - 1 2 1796 5.5000000000000000e+00 0 -1 1797 - 8.0500000000000000e+01 -2 -3 1798 6.5500000000000000e+01 - - 5.2819365262985229e-01 -3.8713422417640686e-01 - -6.3428682088851929e-01 3.1973972916603088e-02 - <_> - 5.1987751007080078e+01 - - 1 2 1799 9.2950000000000000e+02 0 -1 1800 - 1.7500000000000000e+01 -2 -3 1801 3.3500000000000000e+01 - - 2.9681459069252014e-01 -6.8903458118438721e-01 - -5.5376708507537842e-01 2.4592779576778412e-01 - <_> - 5.1639968872070312e+01 - - 1 2 1802 5.0000000000000000e-01 0 -1 1803 727. -2 -3 1804 - 1195. - - 4.7003021836280823e-01 -8.6940318346023560e-01 - -3.4778383374214172e-01 9.5309317111968994e-01 - <_> - 5.1864089965820312e+01 - - 1 2 1805 1.6500000000000000e+01 0 -1 1806 - 1.5500000000000000e+01 -2 -3 1807 1.4500000000000000e+01 - - -8.4845769405364990e-01 2.4072749912738800e-01 - 2.2412241995334625e-01 -5.8960992097854614e-01 - <_> - 5.1842327117919922e+01 - - 1 2 1808 1.3500000000000000e+01 0 -1 1809 - 1.1693500000000000e+04 -2 -3 1810 108. - - -2.1761292591691017e-02 -7.1312093734741211e-01 -1. - 7.1802109479904175e-01 - <_> - 5.2474052429199219e+01 - - 1 2 1811 5.6500000000000000e+01 0 -1 1812 - 2.7150000000000000e+02 -2 -3 1813 4.7050000000000000e+02 - - 4.8798479139804840e-02 -6.1629486083984375e-01 - 6.3172489404678345e-01 -7.8125256299972534e-01 - <_> - 5.2882488250732422e+01 - - 1 2 1814 2.7500000000000000e+01 0 -1 1815 - 2.7950000000000000e+02 -2 -3 1816 1.2500000000000000e+01 - - 1.4727012813091278e-01 -4.5306998491287231e-01 - -9.6783083677291870e-01 4.0843614935874939e-01 - <_> - 5.2590320587158203e+01 - - 1 2 1817 1.2500000000000000e+01 0 -1 1818 2332. -2 -3 1819 - 2.0500000000000000e+01 - - -4.0328302979469299e-01 3.9351496100425720e-01 - -4.5640042424201965e-01 7.0570003986358643e-01 - <_> - 5.2686405181884766e+01 - - 1 2 1820 2.8450000000000000e+02 0 -1 1821 - 5.1375000000000000e+03 -2 -3 1822 5524. - - -6.9284421205520630e-01 5.7867264747619629e-01 - -5.0904291868209839e-01 4.2930658906698227e-02 - <_> - 5.2665336608886719e+01 - - 1 2 1823 5.0000000000000000e-01 0 -1 1824 - 1.0500000000000000e+01 -2 -3 1825 3.1050000000000000e+02 - - -6.9999736547470093e-01 5.0521236658096313e-01 - -2.1066894754767418e-02 -6.7034846544265747e-01 - <_> - 5.2668560028076172e+01 - - 1 2 1826 1.5000000000000000e+00 0 -1 1827 - 4.5000000000000000e+00 -2 -3 1828 3.9500000000000000e+01 - - -8.5607993602752686e-01 2.3388290405273438e-01 - -4.7936838865280151e-01 6.4502292871475220e-01 - <_> - 5.2418178558349609e+01 - - 1 2 1829 2.5000000000000000e+00 0 -1 1830 - 1.2500000000000000e+01 -2 -3 1831 3.7450000000000000e+02 - - -2.5030246376991272e-01 4.1110610961914062e-01 - -4.8104089498519897e-01 2.8128054738044739e-01 - <_> - 5.2447761535644531e+01 - - 1 2 1832 1.4500000000000000e+01 0 -1 1833 - 1.6038500000000000e+04 -2 -3 1834 6.5000000000000000e+00 - - 6.2847787141799927e-01 -3.8954043388366699e-01 - 2.9580958187580109e-02 -6.1391896009445190e-01 - <_> - 5.2839599609375000e+01 - - 1 2 1835 8.0500000000000000e+01 0 -1 1836 - 1.4845000000000000e+03 -2 -3 1837 1.1500000000000000e+01 - - -4.2797079682350159e-01 7.2983002662658691e-01 - -4.2472079396247864e-01 3.9183807373046875e-01 - <_> - 5.3161972045898438e+01 - - 1 2 1838 169. 0 -1 1839 2.3500000000000000e+01 -2 -3 1840 - 3.0500000000000000e+01 - - 3.2237488031387329e-01 -2.9692310094833374e-01 - 5.2028205245733261e-02 -8.3673799037933350e-01 - <_> - 5.3484062194824219e+01 - - 1 2 1841 9.5000000000000000e+00 0 -1 1842 - 4.1565000000000000e+03 -2 -3 1843 924. - - 1.3346555642783642e-02 -7.3501825332641602e-01 - -5.0849604606628418e-01 3.2209011912345886e-01 - <_> - 5.3532875061035156e+01 - - 1 2 1844 5.0550000000000000e+02 0 -1 1845 - 5.5000000000000000e+00 -2 -3 1846 8.2500000000000000e+01 - - 3.6607748270034790e-01 -4.2199668288230896e-01 - -7.4034929275512695e-01 3.8815331459045410e-01 - <_> - 5.3596260070800781e+01 - - 1 2 1847 1.9550000000000000e+02 0 -1 1848 - 7.6850000000000000e+02 -2 -3 1849 7.7350000000000000e+02 - - -3.7186509370803833e-01 4.2454031109809875e-01 - 4.2895314097404480e-01 -4.3257468938827515e-01 - <_> - 5.3252147674560547e+01 - - 1 2 1850 4.2500000000000000e+01 0 -1 1851 - 4.5500000000000000e+01 -2 -3 1852 2.9500000000000000e+01 - - 3.5978814959526062e-01 -7.1406579017639160e-01 - -4.4595164060592651e-01 5.2671235799789429e-01 - <_> - 5.3540912628173828e+01 - - 1 2 1853 2.0500000000000000e+01 0 -1 1854 276. -2 -3 1855 - 1.2850000000000000e+02 - - 3.2382410764694214e-01 -6.7686492204666138e-01 - 2.8876608610153198e-01 -5.3703272342681885e-01 - <_> - 5.4058471679687500e+01 - - 1 2 1856 1.1065000000000000e+03 0 -1 1857 - 4.5000000000000000e+00 -2 -3 1858 1570. - - -4.9808049201965332e-01 5.8341735601425171e-01 - -4.8129281401634216e-01 1.1452827602624893e-01 - <_> - 5.3559310913085938e+01 - - 1 2 1859 5.0000000000000000e-01 0 -1 1860 - 9.0500000000000000e+01 -2 -3 1861 1.4250000000000000e+02 - - 4.2286753654479980e-01 -7.5187528133392334e-01 - -5.5336773395538330e-01 1.0487236082553864e-01 - <_> - 5.3792110443115234e+01 - - 1 2 1862 5.5000000000000000e+00 0 -1 1863 - 5.2850000000000000e+02 -2 -3 1864 6.5000000000000000e+00 - - -9.8098456859588623e-01 2.5169646739959717e-01 - 3.1981575489044189e-01 -2.3502953350543976e-01 - <_> - 5.4220581054687500e+01 - - 1 2 1865 1.4500000000000000e+01 0 -1 1866 - 2.4025000000000000e+03 -2 -3 1867 4.5000000000000000e+00 - - 2.7904801070690155e-02 -8.8576656579971313e-01 - 4.2847126722335815e-01 -1.1248188465833664e-01 - <_> - 5.4116458892822266e+01 - - 1 2 1868 3.0500000000000000e+01 0 -1 1869 - 1.0500000000000000e+01 -2 -3 1870 1.5000000000000000e+00 - - 2.2367130219936371e-01 -9.1485178470611572e-01 - 5.5012780427932739e-01 -1.0412286967039108e-01 - <_> - 5.4431377410888672e+01 - - 1 2 1871 1110. 0 -1 1872 2.4500000000000000e+01 -2 -3 1873 - 8.7500000000000000e+01 - - 6.6319614648818970e-02 -9.0293776988983154e-01 - -2.7686271071434021e-01 3.1491985917091370e-01 - <_> - 5.3841773986816406e+01 - - 1 2 1874 3.1500000000000000e+01 0 -1 1875 - 5.2950000000000000e+02 -2 -3 1876 2.8335000000000000e+03 - - 4.3545942753553391e-03 7.3121100664138794e-01 - 3.2255075871944427e-02 -6.5287035703659058e-01 - <_> - 5.3977920532226562e+01 - - 1 2 1877 4.4635000000000000e+03 0 -1 1878 - 3.5000000000000000e+00 -2 -3 1879 1.2150000000000000e+02 - - -8.3098447322845459e-01 1.3614629209041595e-01 -1. 1. - <_> - 5.4538074493408203e+01 - - 1 2 1880 2.0500000000000000e+01 0 -1 1881 - 7.8500000000000000e+01 -2 -3 1882 5.0500000000000000e+01 - - -7.4102438986301422e-02 6.1979264020919800e-01 - 8.4239649772644043e-01 -8.3167529106140137e-01 - <_> - 5.4199844360351562e+01 - - 0 1 1883 5.5000000000000000e+00 0 1 1883 5.5000000000000000e+00 -1 -2 1884 - 2.3500000000000000e+01 - - -1. -1. 1.8631875514984131e-01 -3.9786672592163086e-01 - <_> - 5.4321243286132812e+01 - - 1 2 1885 100108. 0 -1 1886 2.4450000000000000e+02 -2 -3 1887 - 9.5000000000000000e+00 - - -6.4501583576202393e-01 1.2139873951673508e-01 - -9.8769044876098633e-01 1. - <_> - 5.4476604461669922e+01 - - 1 2 1888 3.0500000000000000e+01 0 -1 1889 832. -2 -3 1890 - 3.8650000000000000e+02 - - 4.7927451133728027e-01 -3.6918625235557556e-01 - 4.3850061297416687e-01 -4.2658120393753052e-01 - <_> - 5.4880313873291016e+01 - - 1 2 1891 4.5000000000000000e+00 0 -1 1892 - 1.8500000000000000e+01 -2 -3 1893 9.5000000000000000e+00 - - -8.9552253484725952e-01 1. 4.0370723605155945e-01 - -1.3244532048702240e-01 - <_> - 5.4826488494873047e+01 - - 1 2 1894 3.3500000000000000e+01 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.5000000000000000e+00 - - 5.2266705036163330e-01 -4.9189320206642151e-01 - 4.7518423199653625e-01 -1.8694840371608734e-01 - <_> - 5.4719253540039062e+01 - - 1 2 1897 1.3250000000000000e+02 0 -1 1898 197. -2 -3 1899 - 5.5000000000000000e+00 - - -2.5596961379051208e-02 -8.0278450250625610e-01 - 5.8479261398315430e-01 -1.0723467171192169e-01 - <_> - 5.4927463531494141e+01 - - 1 2 1900 3.5000000000000000e+00 0 -1 1901 - 2.7500000000000000e+01 -2 -3 1902 4.5000000000000000e+00 - - -9.8025721311569214e-01 1. 5.0813627243041992e-01 - -9.1872639954090118e-02 - <_> - 5.5091140747070312e+01 - - 1 2 1903 3.5500000000000000e+01 0 -1 1904 590. -2 -3 1905 - 9.5000000000000000e+00 - - 3.2067620754241943e-01 -8.1219708919525146e-01 - 3.9956301450729370e-01 -1.7662063241004944e-01 - <_> - 5.5048011779785156e+01 - - 1 2 1906 1.5500000000000000e+01 0 -1 1907 - 2.5000000000000000e+00 -2 -3 1908 1.1500000000000000e+01 - - 4.5108359307050705e-02 -5.7894098758697510e-01 - 5.1151078939437866e-01 -6.0667592287063599e-01 - <_> - 5.4623245239257812e+01 - - 1 2 1909 2.6500000000000000e+01 0 -1 1910 - 1.1500000000000000e+01 -2 -3 1911 2.0250000000000000e+02 - - 4.0922752022743225e-01 -6.0327196121215820e-01 - 3.5508340597152710e-01 -4.1403025388717651e-01 - <_> - 5.4938964843750000e+01 - - 1 2 1912 4.4450000000000000e+02 0 -1 1913 - 4.8075000000000000e+03 -2 -3 1914 5.0000000000000000e-01 - - 3.7132555246353149e-01 -9.4460356235504150e-01 - 3.1572005152702332e-01 -2.5736778974533081e-01 - <_> - 5.5008499145507812e+01 - - 1 2 1915 2.4350000000000000e+02 0 -1 1916 - 1.6500000000000000e+01 -2 -3 1917 98. - - 6.9533005356788635e-02 -5.5879753828048706e-01 - 5.2043431997299194e-01 -5.5762660503387451e-01 - <_> - 5.5581649780273438e+01 - - 1 2 1918 1.2755000000000000e+03 0 -1 1919 - 1.5000000000000000e+00 -2 -3 1920 1.4500000000000000e+01 - - 2.7316585183143616e-01 -3.9282438158988953e-01 - -8.5869687795639038e-01 5.7315075397491455e-01 - <_> - 5.5420215606689453e+01 - - 1 2 1921 3.7635000000000000e+03 0 -1 1922 - 1.0904500000000000e+04 -2 -3 1923 6.9750000000000000e+02 - - -8.7749630212783813e-02 7.8290265798568726e-01 - 3.7081098556518555e-01 -3.9786884188652039e-01 - <_> - 5.5134284973144531e+01 - - 1 2 1924 3.5000000000000000e+00 0 -1 1925 - 1.5000000000000000e+00 -2 -3 1926 1.3535000000000000e+03 - - -8.4669679403305054e-01 5.6518930196762085e-01 - -2.8593066334724426e-01 7.8882968425750732e-01 - <_> - 5.5399112701416016e+01 - - 1 2 1927 1.4500000000000000e+01 0 -1 1928 - 9.5000000000000000e+00 -2 -3 1929 2.1950000000000000e+02 - - 3.6673456430435181e-01 -8.0567514896392822e-01 - 2.6483070850372314e-01 -5.4888963699340820e-01 - <_> - 5.5665115356445312e+01 - - 1 2 1930 1.0500000000000000e+01 0 -1 1931 - 4.3500000000000000e+01 -2 -3 1932 2.2500000000000000e+01 - - -8.0224722623825073e-01 7.3296892642974854e-01 - 3.1390979886054993e-01 -2.7697941660881042e-01 - <_> - 5.5662361145019531e+01 - - 1 2 1933 5.0000000000000000e-01 0 -1 1934 - 1.0500000000000000e+01 -2 -3 1935 609. - - -4.6577224135398865e-01 3.6372005939483643e-01 - -6.7203342914581299e-02 -8.5283303260803223e-01 - <_> - 5.5597713470458984e+01 - - 1 2 1936 4.8150000000000000e+02 0 -1 1937 897. -2 -3 1938 - 6.0015000000000000e+03 - - -7.0950525999069214e-01 3.6562061309814453e-01 - 7.1085697412490845e-01 -6.4645722508430481e-02 - <_> - 5.5976200103759766e+01 - - 1 2 1939 1.7500000000000000e+01 0 -1 1940 - 2.6500000000000000e+01 -2 -3 1941 2.7195000000000000e+03 - - -6.9570225477218628e-01 3.7848454713821411e-01 - 3.8467934727668762e-01 -3.8020190596580505e-01 - <_> - 5.6158012390136719e+01 - - 1 2 1942 2.6002500000000000e+04 0 -1 1943 - 5.5000000000000000e+00 -2 -3 1944 933. - - 5.2110773324966431e-01 -7.8237217664718628e-01 - -8.0685955286026001e-01 1.8181376159191132e-01 - <_> - 5.6510974884033203e+01 - - 1 2 1945 6.5000000000000000e+00 0 -1 1946 - 7.7950000000000000e+02 -2 -3 1947 1.1350000000000000e+02 - - 8.0221951007843018e-01 -5.5787330865859985e-01 - -2.5150266289710999e-01 3.5296073555946350e-01 - <_> - 5.6669940948486328e+01 - - 1 2 1948 1.2500000000000000e+01 0 -1 1949 - 2.1500000000000000e+01 -2 -3 1950 3.7500000000000000e+01 - - -8.1347912549972534e-01 3.3844006061553955e-01 - -5.6976383924484253e-01 1.5896809101104736e-01 - <_> - 5.6639522552490234e+01 - - 1 2 1951 5.0000000000000000e-01 0 -1 1952 - 1.0350000000000000e+02 -2 -3 1953 979. - - 5.6548482179641724e-01 -7.8466528654098511e-01 - -4.1022753715515137e-01 1.7647762596607208e-01 - <_> - 5.6746051788330078e+01 - - 1 2 1954 4.7655500000000000e+04 0 -1 1955 1217. -2 -3 1956 - 2.6650000000000000e+02 - - -6.9296687841415405e-01 2.6075837016105652e-01 - -7.9774957895278931e-01 1.7970228567719460e-02 - <_> - 5.6479259490966797e+01 - - 1 2 1957 1.2650000000000000e+02 0 -1 1958 - 1.9500000000000000e+01 -2 -3 1959 491. - - -2.6678943634033203e-01 3.8788908720016479e-01 - 9.1776609420776367e-01 -4.6553900837898254e-01 - <_> - 5.6557636260986328e+01 - - 1 2 1960 4.7500000000000000e+01 0 -1 1961 - 9.6450000000000000e+02 -2 -3 1962 5.0000000000000000e-01 - - 3.0366006493568420e-01 -8.8815379142761230e-01 - 4.8105791211128235e-01 -8.4002502262592316e-02 - <_> - 5.6977615356445312e+01 - - 1 2 1963 1.9350000000000000e+02 0 -1 1964 - 1.0500000000000000e+01 -2 -3 1965 316. - - 1.2478869408369064e-01 -5.4758942127227783e-01 - 4.1997796297073364e-01 -2.8715902566909790e-01 - <_> - 5.6940200805664062e+01 - - 1 2 1966 1.3500000000000000e+01 0 -1 1967 - 9.5000000000000000e+00 -2 -3 1968 4.5000000000000000e+00 - - 5.6444692611694336e-01 -5.1318335533142090e-01 - 4.1364780068397522e-01 -2.3452880978584290e-01 - <_> - 5.7376541137695312e+01 - - 1 2 1969 6.5000000000000000e+00 0 -1 1970 - 5.2500000000000000e+01 -2 -3 1971 2.6500000000000000e+01 - - -3.1519573926925659e-01 4.3634009361267090e-01 - -5.3644794225692749e-01 3.0770981311798096e-01 - <_> - 5.7745677947998047e+01 - - 1 2 1972 9.5000000000000000e+00 0 -1 1973 - 1.7125000000000000e+03 -2 -3 1974 2095. - - -5.8112341910600662e-02 5.0887292623519897e-01 - 2.3396022617816925e-01 -5.9023892879486084e-01 - <_> - 5.7668346405029297e+01 - - 1 2 1975 1.3835000000000000e+03 0 -1 1976 - 2.3365000000000000e+03 -2 -3 1977 5.0000000000000000e-01 - - -2.2391898930072784e-01 4.7256642580032349e-01 - 4.1642077267169952e-03 -6.2670201063156128e-01 - <_> - 5.7691123962402344e+01 - - 1 2 1978 2.7250000000000000e+02 0 -1 1979 - 8.0950000000000000e+02 -2 -3 1980 1.4500000000000000e+01 - - -2.9949793219566345e-01 7.5373744964599609e-01 - 2.2777365520596504e-02 -5.4332214593887329e-01 - <_> - 5.7523948669433594e+01 - - 1 2 1981 2.5500000000000000e+01 0 -1 1982 - 3.5000000000000000e+00 -2 -3 1983 9.5000000000000000e+00 - - 2.7234396338462830e-01 -7.7871346473693848e-01 - 4.1143327951431274e-01 -1.6717562079429626e-01 - <_> - 5.7792133331298828e+01 - - 1 2 1984 3.0500000000000000e+01 0 -1 1985 - 6.5000000000000000e+00 -2 -3 1986 4.7850000000000000e+02 - - 4.2716450989246368e-02 -6.7291486263275146e-01 - 3.2022616267204285e-01 -6.1982798576354980e-01 - <_> - 5.8013004302978516e+01 - - 1 2 1987 3.4500000000000000e+01 0 -1 1988 - 9.5000000000000000e+00 -2 -3 1989 3.9350000000000000e+02 - - -5.1402336359024048e-01 2.2087192535400391e-01 - -7.2181683778762817e-01 1.9793330132961273e-01 - <_> - 5.8191169738769531e+01 - - 1 2 1990 9.7500000000000000e+01 0 -1 1991 - 6.2250000000000000e+02 -2 -3 1992 9.5500000000000000e+01 - - 1.7816618084907532e-01 -4.8832407593727112e-01 - -9.5159941911697388e-01 6.5016353130340576e-01 - <_> - 5.8067699432373047e+01 - - 1 2 1993 2.5000000000000000e+00 0 -1 1994 - 2.2500000000000000e+01 -2 -3 1995 1.4500000000000000e+01 - - 5.9863173961639404e-01 -1.2370918691158295e-01 - -5.3876280784606934e-01 2.5208535790443420e-01 - <_> - 5.8372417449951172e+01 - - 1 2 1996 1.8075000000000000e+03 0 -1 1997 - 4.5000000000000000e+00 -2 -3 1998 7.4500000000000000e+01 - - 3.9194607734680176e-01 -3.2276815176010132e-01 - 5.3963506221771240e-01 -6.4209002256393433e-01 - <_> - 5.8342327117919922e+01 - - 1 2 1999 7.5000000000000000e+00 0 -1 2000 - 1.3500000000000000e+01 -2 -3 2001 3.5000000000000000e+00 - - -9.3360573053359985e-01 1. 3.0816203355789185e-01 - -1.9820201396942139e-01 - <_> - 5.8525230407714844e+01 - - 1 2 2002 5.4500000000000000e+01 0 -1 2003 - 3.1500000000000000e+01 -2 -3 2004 5.5000000000000000e+00 - - -6.9942277669906616e-01 1. 2.0665432512760162e-01 - -4.8230728507041931e-01 - <_> - 5.8137825012207031e+01 - - 1 2 2005 5.0000000000000000e-01 0 -1 2006 - 6.5000000000000000e+00 -2 -3 2007 1.6255000000000000e+03 - - -9.1363656520843506e-01 3.4000685811042786e-01 - 3.6237233877182007e-01 -3.8740426301956177e-01 - <_> - 5.7477180480957031e+01 - - 1 2 2008 1.6500000000000000e+01 0 -1 2009 - 3.3050000000000000e+02 -2 -3 2010 1.8250000000000000e+02 - - 4.0280374884605408e-01 -6.6064602136611938e-01 - 2.3912283778190613e-01 -6.5312945842742920e-01 - <_> - 5.7596790313720703e+01 - - 1 2 2011 3.5000000000000000e+00 0 -1 2012 - 2.2850000000000000e+02 -2 -3 2013 6.7050000000000000e+02 - - -5.6311067193746567e-02 7.3480677604675293e-01 - -7.8913259506225586e-01 -5.2745390683412552e-02 - <_> - 5.7969238281250000e+01 - - 1 2 2014 1.2195000000000000e+03 0 -1 2015 - 1.5000000000000000e+00 -2 -3 2016 44231. - - 3.7240502238273621e-01 -3.7414985895156860e-01 - 5.3368985652923584e-01 -3.4466567635536194e-01 - <_> - 5.7981628417968750e+01 - - 1 2 2017 1.6650000000000000e+02 0 -1 2018 - 2.0500000000000000e+01 -2 -3 2019 1.3500000000000000e+01 - - -2.3047098517417908e-01 4.0283700823783875e-01 - -8.8833373785018921e-01 9.4913655519485474e-01 - <_> - 5.8304691314697266e+01 - - 1 2 2020 1.7500000000000000e+01 0 -1 2021 - 2.2500000000000000e+01 -2 -3 2022 1.3950000000000000e+02 - - -9.7246366739273071e-01 4.5725116133689880e-01 - -3.3056676387786865e-01 3.2306280732154846e-01 - <_> - 5.8687774658203125e+01 - - 1 2 2023 3.6050000000000000e+02 0 -1 2024 - 2.1500000000000000e+01 -2 -3 2025 5.7150000000000000e+02 - - -1.9407491385936737e-01 4.0379062294960022e-01 - -7.1832591295242310e-01 1.6718479990959167e-01 - <_> - 5.8403263092041016e+01 - - 1 2 2026 3.5000000000000000e+00 0 -1 2027 - 1.5000000000000000e+00 -2 -3 2028 1.1125000000000000e+03 - - -7.1120482683181763e-01 5.4733234643936157e-01 - -3.0521857738494873e-01 5.3309994935989380e-01 - <_> - 5.8206588745117188e+01 - - 1 2 2029 9.8550000000000000e+02 0 -1 2030 - 8.5000000000000000e+00 -2 -3 2031 6.5000000000000000e+00 - - -6.1662030220031738e-01 4.3150734901428223e-01 - 1.1408390849828720e-01 -5.7918250560760498e-01 - <_> - 5.8434097290039062e+01 - - 1 2 2032 1.2500000000000000e+01 0 -1 2033 - 9.7500000000000000e+01 -2 -3 2034 8574. - - 4.1095575690269470e-01 -6.6425901651382446e-01 - 2.2750854492187500e-01 -6.5870326757431030e-01 - <_> - 5.8159267425537109e+01 - - 1 2 2035 790. 0 -1 2036 26812. -2 -3 2037 - 5.2150000000000000e+02 - - -8.0263590812683105e-01 8.7009161710739136e-01 - -2.7483054995536804e-01 3.0290663242340088e-01 - <_> - 5.8559719085693359e+01 - - 1 2 2038 1.5550000000000000e+02 0 -1 2039 - 3.6500000000000000e+01 -2 -3 2040 1752. - - -1.1953184753656387e-01 4.0045145153999329e-01 - 8.7820923328399658e-01 -9.3850684165954590e-01 - <_> - 5.8625492095947266e+01 - - 1 2 2041 5.0000000000000000e-01 0 -1 2042 - 2.5000000000000000e+00 -2 -3 2043 6.5000000000000000e+00 - - -7.3991537094116211e-01 7.3110866546630859e-01 - 2.8890112042427063e-01 -2.9580232501029968e-01 - <_> - 5.8505027770996094e+01 - - 1 2 2044 6.7500000000000000e+01 0 -1 2045 - 5.6500000000000000e+01 -2 -3 2046 9.8500000000000000e+01 - - -4.7034713625907898e-01 6.4461517333984375e-01 - 3.4142866730690002e-01 -8.6112099885940552e-01 - <_> - 5.8600910186767578e+01 - - 1 2 2047 8.0500000000000000e+01 0 -1 2048 - 1.8650000000000000e+02 -2 -3 2049 590. - - -7.2916746139526367e-01 3.1004229187965393e-01 - -6.6359126567840576e-01 9.5881775021553040e-02 - <_> - 5.8711597442626953e+01 - - 1 2 2050 5.0000000000000000e-01 0 -1 2051 - 7.5450000000000000e+02 -2 -3 2052 3.2650000000000000e+02 - - -9.2816257476806641e-01 4.2444109916687012e-01 - -4.2585963010787964e-01 3.1073370575904846e-01 - <_> - 5.8032016754150391e+01 - - 1 2 2053 60937. 0 -1 2054 416. -2 -3 2055 - 4.5000000000000000e+00 - - 1.7063696682453156e-01 -6.7958027124404907e-01 - 8.7877064943313599e-01 -9.5674747228622437e-01 - <_> - 5.8740566253662109e+01 - - 1 2 2056 1.5000000000000000e+00 0 -1 2057 - 3.5000000000000000e+00 -2 -3 2058 4.6500000000000000e+01 - - -7.4752992391586304e-01 7.0855057239532471e-01 - -6.8028306961059570e-01 2.6557485107332468e-03 - <_> - 5.9213050842285156e+01 - - 1 2 2059 7.5000000000000000e+00 0 -1 2060 - 4.5000000000000000e+00 -2 -3 2061 2.9750000000000000e+02 - - -1.6750365495681763e-01 4.7248429059982300e-01 - 1.6587665677070618e-01 -5.7748597860336304e-01 - <_> - 5.9422805786132812e+01 - - 1 2 2062 9.5000000000000000e+00 0 -1 2063 - 2.4500000000000000e+01 -2 -3 2064 7.5000000000000000e+00 - - 2.3164252936840057e-01 -8.6614209413528442e-01 - -8.4939008951187134e-01 2.0975443720817566e-01 - <_> - 5.8884654998779297e+01 - - 1 2 2065 6.2500000000000000e+01 0 -1 2066 - 1.0500000000000000e+01 -2 -3 2067 252. - - 1.0844799689948559e-02 -5.3815227746963501e-01 - 7.5545585155487061e-01 -4.2718842625617981e-01 - <_> - 5.9134284973144531e+01 - - 1 2 2068 2.3365000000000000e+03 0 -1 2069 - 1.2850000000000000e+02 -2 -3 2070 3.4845000000000000e+03 - - 8.5452580451965332e-01 -5.0535249710083008e-01 - 7.7388888597488403e-01 -6.3630655407905579e-02 - <_> - 5.9335205078125000e+01 - - 1 2 2071 7.5000000000000000e+00 0 -1 2072 - 6.5000000000000000e+00 -2 -3 2073 2.1450000000000000e+02 - - -8.2057535648345947e-01 2.0091684162616730e-01 - -6.9147127866744995e-01 6.4241760969161987e-01 - <_> - 5.9819751739501953e+01 - - 1 2 2074 1.4500000000000000e+01 0 -1 2075 - 1.3500000000000000e+01 -2 -3 2076 4.9500000000000000e+01 - - -9.3421977758407593e-01 4.8454797267913818e-01 - -3.7337201833724976e-01 3.2126367092132568e-01 - <_> - 5.9756664276123047e+01 - - 1 2 2077 3.7550000000000000e+02 0 -1 2078 - 8.1500000000000000e+01 -2 -3 2079 14. - - -6.3086077570915222e-02 5.7233673334121704e-01 1. - -9.5777195692062378e-01 - <_> - 6.0291542053222656e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 2.5000000000000000e+00 -2 -3 2082 1.7500000000000000e+01 - - -7.0069408416748047e-01 6.3710403442382812e-01 - -4.9769634008407593e-01 1.1464314162731171e-01 - <_> - 6.0335617065429688e+01 - - 1 2 2083 6.0500000000000000e+01 0 -1 2084 235. -2 -3 2085 - 6.5500000000000000e+01 - - 6.0332548618316650e-01 -4.5363491773605347e-01 - -7.2721785306930542e-01 2.7224572841078043e-03 - <_> - 5.9978572845458984e+01 - - 1 2 2086 2145. 0 -1 2087 5.0000000000000000e-01 -2 -3 2088 - 1.1500000000000000e+01 - - 6.9418591260910034e-01 -7.1563631296157837e-01 - -5.4690980911254883e-01 2.3341998457908630e-01 - <_> - 6.0145259857177734e+01 - - 1 2 2089 4.8350000000000000e+02 0 -1 2090 - 5.3500000000000000e+01 -2 -3 2091 5.0550000000000000e+02 - - 5.3724527359008789e-01 -1.2441903352737427e-01 - -6.5049791336059570e-01 2.5399866700172424e-01 - <_> - 6.0507656097412109e+01 - - 1 2 2092 2.7500000000000000e+01 0 -1 2093 - 5.5000000000000000e+00 -2 -3 2094 5.0500000000000000e+01 - - 1.4425510168075562e-01 -7.4231290817260742e-01 - -2.6776736974716187e-01 3.6239382624626160e-01 - <_> - 6.0473968505859375e+01 - - 1 2 2095 5.0000000000000000e-01 0 -1 2096 - 2.5500000000000000e+01 -2 -3 2097 1587. - - -7.2751653194427490e-01 4.5861607789993286e-01 - 5.5637544393539429e-01 -3.6810955405235291e-01 - <_> - 6.0842075347900391e+01 - - 1 2 2098 5.1150000000000000e+02 0 -1 2099 1169. -2 -3 2100 - 2.0150000000000000e+02 - - -3.0562120676040649e-01 8.1614106893539429e-01 - 7.2896146774291992e-01 -1.8503957986831665e-01 - <_> - 6.0462539672851562e+01 - - 1 2 2101 8.3500000000000000e+01 0 -1 2102 - 3.0500000000000000e+01 -2 -3 2103 2.9850000000000000e+02 - - -8.2488976418972015e-02 4.4352260231971741e-01 - 5.2298051118850708e-01 -8.3577710390090942e-01 - <_> - 6.1029483795166016e+01 - - 1 2 2104 5.0000000000000000e-01 0 -1 2105 - 1.6500000000000000e+01 -2 -3 2106 2.8650000000000000e+02 - - -6.2287323176860809e-02 5.6694161891937256e-01 - -5.0430041551589966e-01 2.6749575138092041e-01 - <_> - 6.0533782958984375e+01 - - 1 2 2107 1.5000000000000000e+00 0 -1 2108 86. -2 -3 2109 - 1.5000000000000000e+00 - - 4.6476197242736816e-01 -3.5366341471672058e-01 - 1.1941082775592804e-01 -4.9569913744926453e-01 - <_> - 6.1014225006103516e+01 - - 1 2 2110 8.5500000000000000e+01 0 -1 2111 - 7.1500000000000000e+01 -2 -3 2112 3.0050000000000000e+02 - - -3.2236501574516296e-01 5.3735041618347168e-01 - 4.8043999075889587e-01 -8.1549012660980225e-01 - <_> - 6.1214355468750000e+01 - - 1 2 2113 5.0000000000000000e-01 0 -1 2114 5423. -2 -3 2115 - 3.2500000000000000e+01 - - 6.3166511058807373e-01 -1.0317980498075485e-01 - -8.1713062524795532e-01 -4.8018395900726318e-02 - <_> - 6.1207153320312500e+01 - - 1 2 2116 6.9750000000000000e+02 0 -1 2117 - 2.3500000000000000e+01 -2 -3 2118 1299. - - -5.5850952863693237e-01 4.5436400175094604e-01 - -4.2946615815162659e-01 4.6700772643089294e-01 - <_> - 6.1372627258300781e+01 - - 1 2 2119 9.7500000000000000e+01 0 -1 2120 - 1.2500000000000000e+01 -2 -3 2121 8.8500000000000000e+01 - - -9.3579089641571045e-01 1.6547182202339172e-01 - -8.7968140840530396e-01 5.9617185592651367e-01 - <_> - 6.1535186767578125e+01 - - 1 2 2122 4.0550000000000000e+02 0 -1 2123 - 8.5000000000000000e+00 -2 -3 2124 5.5500000000000000e+01 - - -5.4796415567398071e-01 2.2591431438922882e-01 - -6.4731520414352417e-01 6.6429591178894043e-01 - <_> - 6.1438594818115234e+01 - - 1 2 2125 7.5000000000000000e+00 0 -1 2126 - 1.6500000000000000e+01 -2 -3 2127 2.0464500000000000e+04 - - -7.6974302530288696e-01 5.8108645677566528e-01 - 1.4914943277835846e-01 -4.0168645977973938e-01 - <_> - 6.1837162017822266e+01 - - 1 2 2128 1.9150000000000000e+02 0 -1 2129 - 2.5000000000000000e+00 -2 -3 2130 2.3500000000000000e+01 - - 3.0682370066642761e-01 -6.2734222412109375e-01 - -3.0841422080993652e-01 3.9856877923011780e-01 - <_> - 6.1491020202636719e+01 - - 1 2 2131 9.5000000000000000e+00 0 -1 2132 - 1.0286500000000000e+04 -2 -3 2133 1.5750000000000000e+02 - - 4.2527648806571960e-01 -3.4614086151123047e-01 - -6.1684650182723999e-01 1.9758818671107292e-02 - <_> - 6.1886714935302734e+01 - - 1 2 2134 1.7500000000000000e+01 0 -1 2135 - 9.2500000000000000e+01 -2 -3 2136 18. - - -1.2079064548015594e-01 3.9569309353828430e-01 - 3.3188980817794800e-01 -8.7485474348068237e-01 - <_> - 6.1790431976318359e+01 - - 1 2 2137 2.1500000000000000e+01 0 -1 2138 - 2.2500000000000000e+01 -2 -3 2139 4.5000000000000000e+00 - - -5.2500929683446884e-02 6.8664622306823730e-01 - 1.5717932581901550e-01 -6.7684161663055420e-01 - <_> - 6.2245330810546875e+01 - - 1 2 2140 1.2135000000000000e+03 0 -1 2141 - 4.5000000000000000e+00 -2 -3 2142 5.2865000000000000e+03 - - 3.3859279751777649e-01 -4.2644050717353821e-01 - 5.0935482978820801e-01 -4.1733506321907043e-01 - <_> - 6.2387325286865234e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 1.0500000000000000e+01 -2 -3 2145 209. - - 1.3510234653949738e-01 -9.6185976266860962e-01 - 1.4199161529541016e-01 -8.5389542579650879e-01 - <_> - 6.2084945678710938e+01 - - 1 2 2146 11208. 0 -1 2147 5.0000000000000000e-01 -2 -3 2148 - 20248. - - 1.5907059609889984e-01 -3.8836613297462463e-01 - 8.0494099855422974e-01 -7.7658468484878540e-01 - <_> - 6.1984123229980469e+01 - - 1 2 2149 2.3500000000000000e+01 0 -1 2150 - 2.3650000000000000e+02 -2 -3 2151 5.0000000000000000e-01 - - 1. -1. 4.0856447815895081e-01 -1.0082300007343292e-01 - <_> - 6.2277572631835938e+01 - - 1 2 2152 1.2115000000000000e+03 0 -1 2153 - 1.5000000000000000e+00 -2 -3 2154 4.2995000000000000e+03 - - 4.2784088850021362e-01 -8.9822685718536377e-01 - 2.9345232248306274e-01 -2.5083908438682556e-01 - <_> - 6.2472473144531250e+01 - - 1 2 2155 9.4500000000000000e+01 0 -1 2156 - 1.0500000000000000e+01 -2 -3 2157 68. - - 6.5589077770709991e-02 -7.7099108695983887e-01 - -7.4427002668380737e-01 1.9490025937557220e-01 - <_> - 6.2016971588134766e+01 - - 1 2 2158 2.5000000000000000e+00 0 -1 2159 - 1.2500000000000000e+01 -2 -3 2160 5.5500000000000000e+01 - - 4.2139071226119995e-01 -5.5164831876754761e-01 - -4.5550110936164856e-01 3.6315539479255676e-01 - <_> - 6.2252468109130859e+01 - - 1 2 2161 1.5685000000000000e+03 0 -1 2162 - 4.5000000000000000e+00 -2 -3 2163 7.7500000000000000e+01 - - 4.6763184666633606e-01 -7.2583413124084473e-01 - -4.7358104586601257e-01 2.3549596965312958e-01 - <_> - 6.1926944732666016e+01 - - 1 2 2164 5.0000000000000000e-01 0 -1 2165 - 2.9500000000000000e+01 -2 -3 2166 1.5000000000000000e+00 - - -8.4635341167449951e-01 4.7176876664161682e-01 - 1.2360874563455582e-01 -4.4846296310424805e-01 - <_> - 6.2441539764404297e+01 - - 1 2 2167 1.3650000000000000e+02 0 -1 2168 - 7.5000000000000000e+00 -2 -3 2169 1.6500000000000000e+01 - - 3.0158129334449768e-01 -3.6455678939819336e-01 - -9.0578240156173706e-01 5.1459383964538574e-01 - <_> - 6.1964569091796875e+01 - - 1 2 2170 8.5000000000000000e+00 0 -1 2171 - 1.3226500000000000e+04 -2 -3 2172 6.4500000000000000e+01 - - -8.5410606861114502e-01 2.6482892036437988e-01 - -4.7696748375892639e-01 6.1308634281158447e-01 - <_> - 6.1803714752197266e+01 - - 1 2 2173 2.6500000000000000e+01 0 -1 2174 - 4.5000000000000000e+00 -2 -3 2175 5.0000000000000000e-01 - - 5.8156448602676392e-01 -8.6257112026214600e-01 - 4.0267577767372131e-01 -1.6085536777973175e-01 - <_> - 6.2505237579345703e+01 - - 1 2 2176 4.2500000000000000e+01 0 -1 2177 - 7.9662500000000000e+04 -2 -3 2178 2.2050000000000000e+02 - - 4.3292667716741562e-02 -8.7512964010238647e-01 - -2.3395214229822159e-02 7.0152431726455688e-01 - <_> - 6.2662498474121094e+01 - - 1 2 2179 2.2535000000000000e+03 0 -1 2180 5489. -2 -3 2181 - 6.5000000000000000e+00 - - -1.3394173979759216e-01 6.8779164552688599e-01 - 4.8814722895622253e-01 -3.9524573087692261e-01 - <_> - 6.2619869232177734e+01 - - 1 2 2182 3.0135000000000000e+03 0 -1 2183 4966. -2 -3 2184 - 5.5000000000000000e+00 - - -3.0220034718513489e-01 8.1261235475540161e-01 - 1.7436875402927399e-01 -3.7351670861244202e-01 - <_> - 6.2884567260742188e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 286. -2 -3 2187 - 2.9500000000000000e+01 - - 8.4548860788345337e-01 -9.6311759948730469e-01 - -3.5037949681282043e-01 2.6469662785530090e-01 - <_> - 6.2971755981445312e+01 - - 1 2 2188 4.5000000000000000e+00 0 -1 2189 - 5.6350000000000000e+02 -2 -3 2190 1.7500000000000000e+01 - - 3.5842654109001160e-01 -7.6083594560623169e-01 - -6.3569843769073486e-01 1.1528482288122177e-01 - <_> - 6.2904327392578125e+01 - - 1 2 2191 19751. 0 -1 2192 5709. -2 -3 2193 - 5.0000000000000000e-01 - - 5.8615106344223022e-01 -6.7431032657623291e-02 - 8.1077980995178223e-01 -7.9040503501892090e-01 - <_> - 6.3428482055664062e+01 - - 1 2 2194 5.2150000000000000e+02 0 -1 2195 112. -2 -3 2196 - 4.8500000000000000e+01 - - -2.9560300707817078e-01 6.3393580913543701e-01 - -7.4229598045349121e-01 5.2415388822555542e-01 - <_> - 6.3408718109130859e+01 - - 1 2 2197 2.2850000000000000e+02 0 -1 2198 - 9.5000000000000000e+00 -2 -3 2199 8.5000000000000000e+00 - - -6.5528714656829834e-01 3.2386130094528198e-01 - -5.1321542263031006e-01 3.7662333250045776e-01 - <_> - 6.3479297637939453e+01 - - 1 2 2200 1.0500000000000000e+01 0 -1 2201 - 1.2875000000000000e+03 -2 -3 2202 1.1550000000000000e+02 - - -6.5136082470417023e-02 5.4068171977996826e-01 - -5.4428064823150635e-01 3.5270053148269653e-01 - <_> - 6.3459232330322266e+01 - - 1 2 2203 5.6350000000000000e+02 0 -1 2204 - 3.6500000000000000e+01 -2 -3 2205 2.7500000000000000e+01 - - -2.6665899157524109e-01 2.9732996225357056e-01 - 8.9094859361648560e-01 -7.8570848703384399e-01 - <_> - 6.3715244293212891e+01 - - 1 2 2206 1.3750000000000000e+02 0 -1 2207 - 5.5950000000000000e+02 -2 -3 2208 1.7350000000000000e+02 - - 8.2382661104202271e-01 -9.3905463814735413e-02 - -7.7598297595977783e-01 -6.1380777508020401e-02 - <_> - 6.4063674926757812e+01 - - 1 2 2209 1.5000000000000000e+00 0 -1 2210 - 1.1500000000000000e+01 -2 -3 2211 3.1850000000000000e+02 - - -8.9411342144012451e-01 3.4842905402183533e-01 - -4.4360893964767456e-01 4.8869660496711731e-01 - <_> - 6.4111953735351562e+01 - - 1 2 2212 2.5000000000000000e+00 0 -1 2213 - 4.1500000000000000e+01 -2 -3 2214 5.0000000000000000e-01 - - -2.3706158995628357e-01 4.4370284676551819e-01 - 5.4362642765045166e-01 -5.1952922344207764e-01 - <_> - 6.4159660339355469e+01 - - 1 2 2215 1.5000000000000000e+00 0 -1 2216 - 5.7500000000000000e+01 -2 -3 2217 1.0775000000000000e+03 - - -2.5581914931535721e-02 6.6174793243408203e-01 - 4.0115654468536377e-01 -3.5893636941909790e-01 - <_> - 6.4437599182128906e+01 - - 1 2 2218 921. 0 -1 2219 4.5000000000000000e+00 -2 -3 2220 - 2.9045000000000000e+03 - - 3.1526345014572144e-01 -7.0185899734497070e-01 - 2.7793204784393311e-01 -4.8113667964935303e-01 - <_> - 6.4332015991210938e+01 - - 1 2 2221 1.8985000000000000e+03 0 -1 2222 - 7.8250000000000000e+02 -2 -3 2223 2.1500000000000000e+01 - - -2.8789478540420532e-01 6.2446802854537964e-01 - -7.3467957973480225e-01 7.2612441144883633e-03 - <_> - 6.4401939392089844e+01 - - 1 2 2224 2.5000000000000000e+00 0 -1 2225 - 3.7500000000000000e+01 -2 -3 2226 5.4850000000000000e+02 - - -6.1204963922500610e-01 6.2827998399734497e-01 - -5.4985451698303223e-01 6.9924682378768921e-02 - <_> - 6.4601165771484375e+01 - - 1 2 2227 3.5000000000000000e+00 0 -1 2228 - 4.4500000000000000e+01 -2 -3 2229 6.5000000000000000e+00 - - -3.2580995559692383e-01 5.1435238122940063e-01 - 5.3874686360359192e-02 -5.6130063533782959e-01 - <_> - 6.4761596679687500e+01 - - 1 2 2230 7.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 5.5500000000000000e+01 - - -7.5083559751510620e-01 3.6957365274429321e-01 - -4.0680039674043655e-02 -7.7190446853637695e-01 - <_> - 6.4306961059570312e+01 - - 1 2 2233 160. 0 -1 2234 127. -2 -3 2235 - 9.1500000000000000e+01 - - 2.1852338314056396e-01 -6.8148994445800781e-01 - -4.8492997884750366e-01 3.1643366813659668e-01 - <_> - 6.4767280578613281e+01 - - 1 2 2236 2.5000000000000000e+00 0 -1 2237 - 7.5250000000000000e+02 -2 -3 2238 4.5000000000000000e+00 - - 4.6031954884529114e-01 -6.2284696102142334e-01 - 4.7282892465591431e-01 -4.0902397036552429e-01 - <_> - 6.4466903686523438e+01 - - 1 2 2239 1.4250000000000000e+02 0 -1 2240 - 4.5000000000000000e+00 -2 -3 2241 1.5000000000000000e+00 - - 1.0185246169567108e-01 -5.8319956064224243e-01 - -6.2095612287521362e-01 4.2880809307098389e-01 - <_> - 6.4761924743652344e+01 - - 1 2 2242 1.1605000000000000e+03 0 -1 2243 2073. -2 -3 2244 - 4.6555000000000000e+03 - - -7.2359293699264526e-01 7.9880434274673462e-01 - 6.1722189188003540e-01 -1.1455553770065308e-01 - <_> - 6.5016494750976562e+01 - - 1 2 2245 1.0350000000000000e+02 0 -1 2246 - 4.4850000000000000e+02 -2 -3 2247 6.2550000000000000e+02 - - -6.7635171115398407e-02 4.6874949336051941e-01 - -8.0271768569946289e-01 3.7331908941268921e-01 - <_> - 6.5212265014648438e+01 - - 1 2 2248 6.2150000000000000e+02 0 -1 2249 326. -2 -3 2250 - 1.5000000000000000e+00 - - 1.9577379524707794e-01 -7.0703411102294922e-01 - 5.1214373111724854e-01 -7.2338587045669556e-01 - <_> - 6.5121826171875000e+01 - - 1 2 2251 9.7500000000000000e+01 0 -1 2252 - 2.3550000000000000e+02 -2 -3 2253 1.9500000000000000e+01 - - 4.6985685825347900e-01 -8.9037990570068359e-01 - 4.9876618385314941e-01 -9.0437032282352448e-02 - <_> - 6.5343742370605469e+01 - - 1 2 2254 1.9500000000000000e+01 0 -1 2255 1133. -2 -3 2256 - 1.0050000000000000e+02 - - 4.8251938819885254e-01 -6.2672054767608643e-01 - 2.2191496193408966e-01 -7.7584463357925415e-01 - <_> - 6.5446708679199219e+01 - - 1 2 2257 1.2555000000000000e+03 0 -1 2258 1315. -2 -3 2259 - 1.4525000000000000e+03 - - 5.0016152858734131e-01 -3.4823906421661377e-01 - 8.1143665313720703e-01 -3.6510743200778961e-02 - <_> - 6.5472305297851562e+01 - - 1 2 2260 5.8500000000000000e+01 0 -1 2261 - 9.2250000000000000e+02 -2 -3 2262 9.2500000000000000e+01 - - 2.5597516447305679e-02 -7.3596054315567017e-01 - 7.7482932806015015e-01 -2.4384480714797974e-01 - <_> - 6.5680641174316406e+01 - - 1 2 2263 2.8500000000000000e+01 0 -1 2264 - 1.9500000000000000e+01 -2 -3 2265 5.0000000000000000e-01 - - -5.1095438003540039e-01 2.7406066656112671e-01 - 4.7238901257514954e-02 -7.9554700851440430e-01 - <_> - 6.5828727722167969e+01 - - 1 2 2266 6.5000000000000000e+00 0 -1 2267 46. -2 -3 2268 - 2.3350000000000000e+02 - - 4.0098896622657776e-01 -3.0355367064476013e-01 - -5.7611280679702759e-01 2.4870538711547852e-01 - <_> - 6.6055801391601562e+01 - - 1 2 2269 1.1235000000000000e+03 0 -1 2270 1791. -2 -3 2271 - 2.2500000000000000e+01 - - 4.2222037911415100e-01 -5.7381504774093628e-01 - -5.7501715421676636e-01 2.7313375473022461e-01 - <_> - 6.5979278564453125e+01 - - 1 2 2272 1.6500000000000000e+01 0 -1 2273 - 1.1500000000000000e+01 -2 -3 2274 3.6500000000000000e+01 - - -1. 7.4951916933059692e-01 -2.2320111095905304e-01 - 6.2808310985565186e-01 - <_> - 6.5982803344726562e+01 - - 1 2 2275 8.8500000000000000e+01 0 -1 2276 - 5.0000000000000000e-01 -2 -3 2277 303. - - -4.2098733782768250e-01 4.7041663527488708e-01 - -8.3091259002685547e-01 3.5231374204158783e-03 - <_> - 6.5862815856933594e+01 - - 1 2 2278 5.0000000000000000e-01 0 -1 2279 - 7.5000000000000000e+00 -2 -3 2280 1.8500000000000000e+01 - - -3.1455779075622559e-01 6.9095128774642944e-01 - -3.3799609541893005e-01 3.8651108741760254e-01 - <_> - 6.5698982238769531e+01 - - 1 2 2281 2.5000000000000000e+00 0 -1 2282 - 6.5000000000000000e+00 -2 -3 2283 1.6500000000000000e+01 - - 1.1540318280458450e-01 -8.0706399679183960e-01 - 4.5586335659027100e-01 -1.6382929682731628e-01 - <_> - 6.5865753173828125e+01 - - 1 2 2284 4.1500000000000000e+01 0 -1 2285 322. -2 -3 2286 - 5.0000000000000000e-01 - - -7.6401643455028534e-02 7.0236140489578247e-01 - 8.3611255884170532e-01 -3.3973169326782227e-01 - <_> - 6.6324913024902344e+01 - - 1 2 2287 1180. 0 -1 2288 5.0000000000000000e-01 -2 -3 2289 - 4.9850000000000000e+02 - - 5.4826909303665161e-01 -6.1790186166763306e-01 - 4.9796470999717712e-01 -7.6435178518295288e-02 - <_> - 6.6116767883300781e+01 - - 1 2 2290 1.0086500000000000e+04 0 -1 2291 - 5.0000000000000000e-01 -2 -3 2292 1.4915000000000000e+03 - - 2.2847035527229309e-01 -5.0997734069824219e-01 - 5.6548178195953369e-01 -2.0814302563667297e-01 - <_> - 6.6620307922363281e+01 - - 1 2 2293 1.2195000000000000e+03 0 -1 2294 - 1.9055000000000000e+03 -2 -3 2295 2.0550000000000000e+02 - - -3.3149933815002441e-01 6.4176028966903687e-01 - 6.0821473598480225e-01 -3.0888804793357849e-01 - <_> - 6.6746444702148438e+01 - - 1 2 2296 2.5000000000000000e+00 0 -1 2297 - 1.0150000000000000e+02 -2 -3 2298 7.2585000000000000e+03 - - 5.9253281354904175e-01 -3.7904369831085205e-01 - 2.6760953664779663e-01 -4.0275105834007263e-01 - <_> - 6.6943595886230469e+01 - - 1 2 2299 1.1500000000000000e+01 0 -1 2300 - 2.4500000000000000e+01 -2 -3 2301 4.5000000000000000e+00 - - -9.8942744731903076e-01 1. -5.9422683715820312e-01 - 1.9715292751789093e-01 - <_> - 6.6331527709960938e+01 - - 1 2 2302 2.4500000000000000e+01 0 -1 2303 - 8.7500000000000000e+01 -2 -3 2304 3.4500000000000000e+01 - - -2.3940645158290863e-01 3.9157524704933167e-01 - 1.0247871279716492e-01 -7.5354349613189697e-01 - <_> - 6.6475265502929688e+01 - - 1 2 2305 6.5000000000000000e+00 0 -1 2306 - 2.3500000000000000e+01 -2 -3 2307 3.3500000000000000e+01 - - -7.6529741287231445e-01 4.5638066530227661e-01 - -5.1855069398880005e-01 1.4373423159122467e-01 - <_> - 6.6999214172363281e+01 - - 1 2 2308 9.4500000000000000e+01 0 -1 2309 - 2.0500000000000000e+01 -2 -3 2310 195. - - -7.4185177683830261e-02 5.2394580841064453e-01 - 3.7441125512123108e-01 -9.3662869930267334e-01 - <_> - 6.7006050109863281e+01 - - 1 2 2311 3026. 0 -1 2312 2.2500000000000000e+01 -2 -3 2313 - 2.8500000000000000e+01 - - -8.7473273277282715e-01 5.1518291234970093e-01 - -6.7311668395996094e-01 6.8403608165681362e-03 - <_> - 6.7129646301269531e+01 - - 1 2 2314 1.7500000000000000e+01 0 -1 2315 - 4.4500000000000000e+01 -2 -3 2316 2961. - - -2.2424821555614471e-01 3.6378455162048340e-01 - -7.0937103033065796e-01 1.6935887932777405e-01 - <_> - 6.7392829895019531e+01 - - 1 2 2317 5.5000000000000000e+00 0 -1 2318 - 1.0500000000000000e+01 -2 -3 2319 46. - - 6.3752532005310059e-01 -1.6769923269748688e-01 - -3.9633530378341675e-01 2.1741947531700134e-01 - <_> - 6.7652908325195312e+01 - - 1 2 2320 4.0500000000000000e+01 0 -1 2321 - 3.7750000000000000e+02 -2 -3 2322 288. - - 7.8108507394790649e-01 -8.9046698808670044e-01 - 2.6008096337318420e-01 -3.1209379434585571e-01 - <_> - 6.7522987365722656e+01 - - 1 2 2323 2.8450000000000000e+02 0 -1 2324 - 2.1500000000000000e+01 -2 -3 2325 3.1615000000000000e+03 - - -2.6827138662338257e-01 4.4363465905189514e-01 - -5.0426739454269409e-01 3.2839775085449219e-01 - <_> - 6.7682723999023438e+01 - - 1 2 2326 1.4550000000000000e+02 0 -1 2327 - 5.0000000000000000e-01 -2 -3 2328 187. - - 3.3854234218597412e-01 -1.9424141943454742e-01 - -7.8695666790008545e-01 1.0578002780675888e-01 - <_> - 6.7990608215332031e+01 - - 1 2 2329 1.4500000000000000e+01 0 -1 2330 55. -2 -3 2331 - 4.1500000000000000e+01 - - 9.3669831752777100e-01 -7.9035413265228271e-01 - 4.7996759414672852e-01 -1.4678025245666504e-01 - <_> - 6.7773666381835938e+01 - - 1 2 2332 4.4450000000000000e+02 0 -1 2333 - 6.5000000000000000e+00 -2 -3 2334 87. - - 3.0000856518745422e-01 -5.1463776826858521e-01 - -4.2596080899238586e-01 5.2854359149932861e-01 - <_> - 6.8242584228515625e+01 - - 1 2 2335 2.3325000000000000e+03 0 -1 2336 10142. -2 -3 2337 - 1.9550000000000000e+02 - - -6.1795878410339355e-01 7.2833043336868286e-01 - 5.5236649513244629e-01 -7.2167828679084778e-02 - <_> - 6.7640380859375000e+01 - - 1 2 2338 1.9500000000000000e+01 0 -1 2339 - 5.5000000000000000e+00 -2 -3 2340 3.7500000000000000e+01 - - -9.1623830795288086e-01 2.8547397255897522e-01 - 2.7238869667053223e-01 -6.8565303087234497e-01 - <_> - 6.8166297912597656e+01 - - 1 2 2341 887. 0 -1 2342 1.8950000000000000e+02 -2 -3 2343 - 1.6500000000000000e+01 - - 5.8323717117309570e-01 -8.4304898977279663e-01 - 5.2591782808303833e-01 -1.1249145865440369e-01 - <_> - 6.7966316223144531e+01 - - 1 2 2344 1.3500000000000000e+01 0 -1 2345 - 5.0500000000000000e+01 -2 -3 2346 5.5000000000000000e+00 - - -5.7582974433898926e-01 8.8582295179367065e-01 - 4.5189410448074341e-01 -1.9998365640640259e-01 - <_> - 6.8363616943359375e+01 - - 1 2 2347 9519. 0 -1 2348 9.9355000000000000e+03 -2 -3 2349 - 1.5000000000000000e+00 - - -5.6369476020336151e-02 5.6953996419906616e-01 - 6.4817821979522705e-01 -6.5638613700866699e-01 - <_> - 6.8680084228515625e+01 - - 1 2 2350 1.4500000000000000e+01 0 -1 2351 - 2.2500000000000000e+01 -2 -3 2352 4.9500000000000000e+01 - - -1.3236002624034882e-01 6.2589818239212036e-01 - -4.6971350908279419e-01 3.0481177568435669e-01 - <_> - 6.8636512756347656e+01 - - 1 2 2353 2.3491500000000000e+04 0 -1 2354 - 1.5000000000000000e+00 -2 -3 2355 31. - - 2.9175955057144165e-01 -2.0415711402893066e-01 -1. 1. - <_> - 6.8339431762695312e+01 - - 1 2 2356 2.1500000000000000e+01 0 -1 2357 - 5.0000000000000000e-01 -2 -3 2358 2.5000000000000000e+00 - - 4.2874211072921753e-01 -4.4592785835266113e-01 - -9.4336575269699097e-01 3.3847200870513916e-01 - <_> - 6.8127563476562500e+01 - - 1 2 2359 2.7500000000000000e+01 0 -1 2360 - 4.5000000000000000e+00 -2 -3 2361 1.2500000000000000e+01 - - 1.4308325946331024e-01 -5.4449397325515747e-01 - 5.8717787265777588e-01 -2.1186867356300354e-01 - <_> - 6.8410385131835938e+01 - - 1 2 2362 9.5000000000000000e+00 0 -1 2363 - 5.5000000000000000e+00 -2 -3 2364 1.2850000000000000e+02 - - -1.1505768448114395e-01 -9.6275746822357178e-01 - 2.8282612562179565e-01 -3.5639968514442444e-01 - <_> - 6.8815826416015625e+01 - - 1 2 2365 1.9125000000000000e+03 0 -1 2366 - 6.5000000000000000e+00 -2 -3 2367 1.2925000000000000e+03 - - 7.6003736257553101e-01 -1.8823170661926270e-01 - -3.1990632414817810e-01 3.2092514634132385e-01 - <_> - 6.8693199157714844e+01 - - 1 2 2368 1.5500000000000000e+01 0 -1 2369 - 4.0445000000000000e+03 -2 -3 2370 1.3500000000000000e+01 - - 2.2088183462619781e-01 -8.6471045017242432e-01 - 4.9937435984611511e-01 -1.2262738496065140e-01 - <_> - 6.9212486267089844e+01 - - 1 2 2371 1.1500000000000000e+01 0 -1 2372 - 1.2500000000000000e+01 -2 -3 2373 1.3250000000000000e+02 - - -5.8216619491577148e-01 7.6504099369049072e-01 - -4.9605194479227066e-02 5.4096341133117676e-01 - <_> - 6.9281822204589844e+01 - - 1 2 2374 3.4500000000000000e+01 0 -1 2375 - 6.5000000000000000e+00 -2 -3 2376 1.5000000000000000e+00 - - -7.0201843976974487e-01 3.5367730259895325e-01 1. - -3.9128544926643372e-01 - <_> - 6.9379959106445312e+01 - - 1 2 2377 8.7500000000000000e+01 0 -1 2378 - 7.5000000000000000e+00 -2 -3 2379 273. - - -5.3956866264343262e-01 3.2018893957138062e-01 - -5.9921985864639282e-01 2.5184553861618042e-01 - <_> - 6.9302131652832031e+01 - - 1 2 2380 5.0000000000000000e-01 0 -1 2381 - 4.4500000000000000e+01 -2 -3 2382 1.9204500000000000e+04 - - -5.0899110734462738e-02 6.8976759910583496e-01 - -7.7828548848628998e-02 -9.1394501924514771e-01 - <_> - 6.9691947937011719e+01 - - 1 2 2383 6.7500000000000000e+01 0 -1 2384 - 3.2850000000000000e+02 -2 -3 2385 1224. - - 1.1171031743288040e-02 7.3188757896423340e-01 - -8.6419099569320679e-01 2.1196028217673302e-02 - <_> - 6.9572067260742188e+01 - - 1 2 2386 1.1235000000000000e+03 0 -1 2387 - 8.4050000000000000e+02 -2 -3 2388 1.5500000000000000e+01 - - -1.5439936518669128e-01 6.1207121610641479e-01 - 1.9708819687366486e-01 -4.6194908022880554e-01 - <_> - 6.9861968994140625e+01 - - 1 2 2389 9.1500000000000000e+01 0 -1 2390 - 1.0500000000000000e+01 -2 -3 2391 4.1495000000000000e+03 - - 1.0701948404312134e-01 -5.6979161500930786e-01 - -9.6821188926696777e-02 7.0975506305694580e-01 - <_> - 7.0039260864257812e+01 - - 1 2 2392 1.1500000000000000e+01 0 -1 2393 2897. -2 -3 2394 - 2.4350000000000000e+02 - - -9.1259753704071045e-01 1. 1.7728993296623230e-01 - -7.3356288671493530e-01 - <_> - 6.9705703735351562e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 2.0500000000000000e+01 -2 -3 2397 4.6500000000000000e+01 - - -5.2813202142715454e-01 4.4198977947235107e-01 - -4.8570594191551208e-01 1.9584445655345917e-01 - <_> - 6.9970062255859375e+01 - - 1 2 2398 5.0000000000000000e-01 0 -1 2399 - 3.1500000000000000e+01 -2 -3 2400 3831. - - -6.4685755968093872e-01 7.3702591657638550e-01 - -2.6504144072532654e-01 5.5941796302795410e-01 - <_> - 6.9949569702148438e+01 - - 1 2 2401 5.0000000000000000e-01 0 -1 2402 5. -2 -3 2403 - 4.5000000000000000e+00 - - -8.8435417413711548e-01 5.8749139308929443e-01 - 2.7166697382926941e-01 -3.1555649638175964e-01 - <_> - 7.0117141723632812e+01 - - 1 2 2404 2596. 0 -1 2405 9.1496500000000000e+04 -2 -3 2406 - 1.5000000000000000e+00 - - -7.8573900461196899e-01 1.6757574677467346e-01 - 8.5581427812576294e-01 -9.4101238250732422e-01 - <_> - 7.0224205017089844e+01 - - 1 2 2407 5749. 0 -1 2408 79. -2 -3 2409 208. - - 1. -1. 1.0706392675638199e-01 -7.7825403213500977e-01 - <_> - 7.0221618652343750e+01 - - 1 2 2410 5.1855000000000000e+03 0 -1 2411 - 4.6500000000000000e+01 -2 -3 2412 8.5000000000000000e+00 - - -3.6203452944755554e-01 3.4422519803047180e-01 - -2.5855610147118568e-03 -7.1835225820541382e-01 - <_> - 7.0728790283203125e+01 - - 1 2 2413 1.3500000000000000e+01 0 -1 2414 - 1.0950000000000000e+02 -2 -3 2415 5.3500000000000000e+01 - - 1.9084104895591736e-01 -8.0712783336639404e-01 - 5.5798757076263428e-01 -1.0734169185161591e-01 - <_> - 7.0351577758789062e+01 - - 1 2 2416 1.3405000000000000e+03 0 -1 2417 - 3.5000000000000000e+00 -2 -3 2418 342. - - 4.1194143891334534e-01 -3.7721332907676697e-01 - -5.5014234781265259e-01 5.2194917201995850e-01 - <_> - 7.0136901855468750e+01 - - 1 2 2419 3.7345000000000000e+03 0 -1 2420 - 3.2500000000000000e+01 -2 -3 2421 9.8500000000000000e+01 - - 3.2743006944656372e-01 -2.1467541158199310e-01 - -8.1029343605041504e-01 7.0203500986099243e-01 - <_> - 6.9686508178710938e+01 - - 1 2 2422 1.2185000000000000e+03 0 -1 2423 - 1.5000000000000000e+00 -2 -3 2424 4.8755000000000000e+03 - - 2.0333147048950195e-01 -4.5039632916450500e-01 - 4.4757398962974548e-01 -5.9627413749694824e-01 - <_> - 7.0005889892578125e+01 - - 1 2 2425 6.4500000000000000e+01 0 -1 2426 - 3.7150000000000000e+02 -2 -3 2427 6.7750000000000000e+02 - - 2.6681974530220032e-01 -5.9953171014785767e-01 - 3.1938493251800537e-01 -6.9817471504211426e-01 - <_> - 7.0428718566894531e+01 - - 1 2 2428 2.6500000000000000e+01 0 -1 2429 - 1.7650000000000000e+02 -2 -3 2430 1.0500000000000000e+01 - - -7.5495415367186069e-03 -6.1552453041076660e-01 - -5.8272439241409302e-01 7.1704763174057007e-01 - <_> - 7.0936927795410156e+01 - - 1 2 2431 1.0950000000000000e+02 0 -1 2432 - 1.2500000000000000e+01 -2 -3 2433 3.4500000000000000e+01 - - 6.7761175334453583e-02 -6.1159509420394897e-01 - 5.0820809602737427e-01 -1.4290602505207062e-01 - <_> - 7.1328254699707031e+01 - - 1 2 2434 37. 0 -1 2435 108. -2 -3 2436 - 7.5000000000000000e+00 - - 5.2559959888458252e-01 -9.0183192491531372e-01 - 3.9132472872734070e-01 -1.6153934597969055e-01 - <_> - 7.1377151489257812e+01 - - 1 2 2437 1.5000000000000000e+00 0 -1 2438 - 4.1500000000000000e+01 -2 -3 2439 136. - - -1.6022360324859619e-01 4.5697069168090820e-01 - -5.8138531446456909e-01 5.7625991106033325e-01 - <_> - 7.1590606689453125e+01 - - 1 2 2440 2.2950000000000000e+02 0 -1 2441 986. -2 -3 2442 - 2.5000000000000000e+00 - - -5.5947124958038330e-01 2.1345110237598419e-01 - 5.1724910736083984e-01 -7.9673564434051514e-01 - <_> - 7.1604888916015625e+01 - - 1 2 2443 9.5000000000000000e+00 0 -1 2444 - 2.3500000000000000e+01 -2 -3 2445 1.0550000000000000e+02 - - -4.6063753962516785e-01 3.1602507829666138e-01 - -5.2265387773513794e-01 6.4050400257110596e-01 - <_> - 7.1843421936035156e+01 - - 1 2 2446 2.3365000000000000e+03 0 -1 2447 - 1.3333500000000000e+04 -2 -3 2448 7.8250000000000000e+02 - - -5.7870197296142578e-01 9.2290049791336060e-01 - 6.9137138128280640e-01 -1.5123842656612396e-01 - <_> - 7.1939323425292969e+01 - - 1 2 2449 3.5000000000000000e+00 0 -1 2450 - 1.8500000000000000e+01 -2 -3 2451 6.1500000000000000e+01 - - -5.3932064771652222e-01 4.5498287677764893e-01 - -6.5867853164672852e-01 9.6776336431503296e-02 - <_> - 7.1796112060546875e+01 - - 1 2 2452 1.0050000000000000e+02 0 -1 2453 - 6.5000000000000000e+00 -2 -3 2454 9.9500000000000000e+01 - - 2.1488319337368011e-01 -3.8114818930625916e-01 - -9.3055361509323120e-01 9.2053020000457764e-01 - <_> - 7.1826210021972656e+01 - - 1 2 2455 5.3875000000000000e+03 0 -1 2456 - 4.0150000000000000e+02 -2 -3 2457 203. - - 3.6667090654373169e-01 -3.2799699902534485e-01 - -2.9070058465003967e-01 6.2547647953033447e-01 - <_> - 7.1566932678222656e+01 - - 1 2 2458 1164. 0 -1 2459 12122. -2 -3 2460 - 1.2565000000000000e+03 - - -8.4399074316024780e-01 8.6422222852706909e-01 - -2.5927615165710449e-01 3.1698527932167053e-01 - <_> - 7.2048255920410156e+01 - - 1 2 2461 7.0500000000000000e+01 0 -1 2462 - 5.0000000000000000e-01 -2 -3 2463 113. - - 4.2299839854240417e-01 -3.7696704268455505e-01 - 4.8132598400115967e-01 -8.4420484304428101e-01 - <_> - 7.2493713378906250e+01 - - 1 2 2464 1.5000000000000000e+00 0 -1 2465 24. -2 -3 2466 - 1.1650000000000000e+02 - - -7.3568606376647949e-01 4.4545513391494751e-01 - 4.5487869530916214e-02 -6.0882014036178589e-01 - <_> - 7.2295455932617188e+01 - - 1 2 2467 2.6500000000000000e+01 0 -1 2468 - 2.5000000000000000e+00 -2 -3 2469 1.9500000000000000e+01 - - 1.9328838586807251e-01 -9.2098551988601685e-01 - 2.8382617235183716e-01 -3.1953519582748413e-01 - <_> - 7.2064254760742188e+01 - - 1 2 2470 5.6500000000000000e+01 0 -1 2471 - 3.5000000000000000e+00 -2 -3 2472 2.2450000000000000e+02 - - 2.8244340419769287e-01 -2.9833537340164185e-01 -1. - 8.5370278358459473e-01 - <_> - 7.2284309387207031e+01 - - 1 2 2473 4.9500000000000000e+01 0 -1 2474 4038. -2 -3 2475 - 1.0500000000000000e+01 - - 3.4302046895027161e-01 -8.1761771440505981e-01 - -7.4983465671539307e-01 2.2005748748779297e-01 - <_> - 7.2424072265625000e+01 - - 1 2 2476 5.0000000000000000e-01 0 -1 2477 - 4.9525000000000000e+03 -2 -3 2478 1.2500000000000000e+01 - - 3.8115087151527405e-01 -6.6690814495086670e-01 - 1.3976120948791504e-01 -5.6789624691009521e-01 - <_> - 7.2313995361328125e+01 - - 1 2 2479 3.2500000000000000e+01 0 -1 2480 - 1.1926500000000000e+04 -2 -3 2481 6.0500000000000000e+01 - - -6.5613843500614166e-02 -7.5880628824234009e-01 - 2.2690546512603760e-01 -6.3682055473327637e-01 - <_> - 7.2143783569335938e+01 - - 1 2 2482 5.0000000000000000e-01 0 -1 2483 - 5.7535000000000000e+03 -2 -3 2484 5.5000000000000000e+00 - - -9.2257243394851685e-01 8.5957908630371094e-01 - 3.2697901129722595e-01 -1.7020969092845917e-01 - <_> - 7.2681999206542969e+01 - - 1 2 2485 7.1500000000000000e+01 0 -1 2486 188. -2 -3 2487 - 177. - - -2.7773711085319519e-01 6.7274010181427002e-01 - -3.3517399430274963e-01 7.5859177112579346e-01 - <_> - 7.2897277832031250e+01 - - 1 2 2488 6.7500000000000000e+01 0 -1 2489 - 2.1500000000000000e+01 -2 -3 2490 7.0500000000000000e+01 - - -7.9514396190643311e-01 2.1528589725494385e-01 1. - -7.2838509082794189e-01 - <_> - 7.2998519897460938e+01 - - 1 2 2491 6.5000000000000000e+00 0 -1 2492 161. -2 -3 2493 - 9578. - - 6.2451672554016113e-01 -1.9713717699050903e-01 - 1.0124062746763229e-01 -5.1373565196990967e-01 - <_> - 7.3003601074218750e+01 - - 1 2 2494 2.3415000000000000e+03 0 -1 2495 - 7.6500000000000000e+01 -2 -3 2496 1.4555000000000000e+03 - - -6.9544225931167603e-01 3.1051948666572571e-01 - 7.0642524957656860e-01 1.7271263524889946e-02 - <_> - 7.3047424316406250e+01 - - 1 2 2497 1.5500000000000000e+01 0 -1 2498 - 1.1500000000000000e+01 -2 -3 2499 5.7500000000000000e+01 - - 3.4771478176116943e-01 -8.5552608966827393e-01 - 3.6829981207847595e-01 -1.8874453008174896e-01 - <_> - 7.3427375793457031e+01 - - 1 2 2500 6.2500000000000000e+01 0 -1 2501 34698. -2 -3 2502 - 8.5000000000000000e+00 - - 1.6296713054180145e-01 -6.3167887926101685e-01 - 3.7994962930679321e-01 -4.6771416068077087e-01 - <_> - 7.3244293212890625e+01 - - 1 2 2503 2.3500000000000000e+01 0 -1 2504 - 3.8500000000000000e+01 -2 -3 2505 427. - - -2.9058054089546204e-01 5.2562189102172852e-01 - 6.4414465427398682e-01 -8.3316773176193237e-01 - <_> - 7.3628913879394531e+01 - - 1 2 2506 4.5000000000000000e+00 0 -1 2507 - 8.5000000000000000e+00 -2 -3 2508 1.6925000000000000e+03 - - -2.7814975380897522e-01 4.8170346021652222e-01 - -6.5349429845809937e-01 5.4887872189283371e-02 - <_> - 7.3769676208496094e+01 - - 1 2 2509 15430. 0 -1 2510 1.5950000000000000e+02 -2 -3 2511 - 1.2615000000000000e+03 - - 4.3867623805999756e-01 -7.6247996091842651e-01 - -4.5795723795890808e-01 2.0065939426422119e-01 - <_> - 7.3981689453125000e+01 - - 1 2 2512 7.3500000000000000e+01 0 -1 2513 - 2.6500000000000000e+01 -2 -3 2514 4.1500000000000000e+01 - - -6.2215524911880493e-01 2.1201618015766144e-01 - -7.7795881032943726e-01 7.5186353921890259e-01 - <_> - 7.3843399047851562e+01 - - 1 2 2515 3.5000000000000000e+00 0 -1 2516 9. -2 -3 2517 - 1.7500000000000000e+01 - - -1. 6.5247339010238647e-01 -5.3328835964202881e-01 - 6.5298572182655334e-02 - <_> - 7.3923049926757812e+01 - - 1 2 2518 5.2950000000000000e+02 0 -1 2519 - 1.8500000000000000e+01 -2 -3 2520 6.4500000000000000e+01 - - 2.7425521612167358e-01 -7.6726049184799194e-01 - 2.3897975683212280e-01 -5.1008826494216919e-01 - <_> - 7.3826148986816406e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 - 2.8500000000000000e+01 -2 -3 2523 3.5000000000000000e+00 - - 1.1504331231117249e-01 -6.4958560466766357e-01 - 6.4581304788589478e-01 -9.6902929246425629e-02 - <_> - 7.4119972229003906e+01 - - 1 2 2524 163. 0 -1 2525 2.0450000000000000e+02 -2 -3 2526 - 1486. - - 7.2227291762828827e-02 -4.8131951689720154e-01 - 6.7641806602478027e-01 -1. - <_> - 7.4284828186035156e+01 - - 1 2 2527 9.5000000000000000e+00 0 -1 2528 - 5.4500000000000000e+01 -2 -3 2529 3.5000000000000000e+00 - - 2.1673867106437683e-01 -9.8935294151306152e-01 - -8.0995440483093262e-01 1.6485558450222015e-01 - <_> - 7.3767173767089844e+01 - - 1 2 2530 3.3500000000000000e+01 0 -1 2531 - 2.0500000000000000e+01 -2 -3 2532 326. - - 8.5764698684215546e-02 -5.1765644550323486e-01 - -3.3359569311141968e-01 5.3560173511505127e-01 - <_> - 7.4017349243164062e+01 - - 1 2 2533 1144. 0 -1 2534 1038. -2 -3 2535 227. - - -8.5851883888244629e-01 8.0733579397201538e-01 - 2.5017657876014709e-01 -4.6748492121696472e-01 - <_> - 7.4431625366210938e+01 - - 1 2 2536 8.6500000000000000e+01 0 -1 2537 7. -2 -3 2538 - 4.7500000000000000e+01 - - 5.0281429290771484e-01 -6.8806976079940796e-01 - 4.1427880525588989e-01 -1.3120372593402863e-01 - <_> - 7.4155914306640625e+01 - - 1 2 2539 2.8500000000000000e+01 0 -1 2540 - 1.2500000000000000e+01 -2 -3 2541 352. - - 4.0651530027389526e-01 -2.7571403980255127e-01 - 6.4302980899810791e-01 -6.1632806062698364e-01 - <_> - 7.4377723693847656e+01 - - 1 2 2542 4.5500000000000000e+01 0 -1 2543 - 4.5000000000000000e+00 -2 -3 2544 1.5000000000000000e+00 - - 2.1374966204166412e-01 -8.0584329366683960e-01 - -6.8813514709472656e-01 2.2180862724781036e-01 - <_> - 7.4892883300781250e+01 - - 1 2 2545 7.2450000000000000e+02 0 -1 2546 - 8.2650000000000000e+02 -2 -3 2547 2.5000000000000000e+00 - - -1.0470861941576004e-01 5.1516324281692505e-01 - 1.2213422358036041e-01 -7.9457265138626099e-01 - <_> - 7.4932922363281250e+01 - - 1 2 2548 1.4925000000000000e+03 0 -1 2549 - 2.5625000000000000e+03 -2 -3 2550 4.0125000000000000e+03 - - -1.9472637213766575e-03 8.4926861524581909e-01 - 4.0032647550106049e-02 -7.9371875524520874e-01 - <_> - 7.5366584777832031e+01 - - 1 2 2551 5.0000000000000000e-01 0 -1 2552 - 3.5150000000000000e+02 -2 -3 2553 7.6500000000000000e+01 - - -6.7581409215927124e-01 4.3366453051567078e-01 - -6.9250804185867310e-01 1.4782861806452274e-02 - <_> - 7.5361564636230469e+01 - - 1 2 2554 1.4550000000000000e+02 0 -1 2555 - 1.3500000000000000e+01 -2 -3 2556 3.7950000000000000e+02 - - -9.2167288064956665e-01 2.2473543882369995e-01 - -6.1316716670989990e-01 5.3515338897705078e-01 - <_> - 7.5602142333984375e+01 - - 1 2 2557 1.7500000000000000e+01 0 -1 2558 - 3.0150000000000000e+02 -2 -3 2559 5.9500000000000000e+01 - - -2.0176244899630547e-02 7.6716834306716919e-01 - -6.2594699859619141e-01 2.9301643371582031e-02 - <_> - 7.5772842407226562e+01 - - 1 2 2560 7.0205000000000000e+03 0 -1 2561 - 7.5000000000000000e+00 -2 -3 2562 182. - - -7.9505175352096558e-01 1.7069797217845917e-01 - -8.2258385419845581e-01 7.3946392536163330e-01 - <_> - 7.5877098083496094e+01 - - 1 2 2563 4.5500000000000000e+01 0 -1 2564 - 6.8445000000000000e+03 -2 -3 2565 7.9500000000000000e+01 - - 3.9029154181480408e-01 -1.7648826539516449e-01 - -5.5182862281799316e-01 4.6366956830024719e-01 - <_> - 7.5638267517089844e+01 - - 1 2 2566 5.1850000000000000e+02 0 -1 2567 - 4.5000000000000000e+00 -2 -3 2568 5.0500000000000000e+01 - - 2.6328665018081665e-01 -3.8584133982658386e-01 - -6.9626593589782715e-01 5.0637173652648926e-01 - <_> - 7.5725959777832031e+01 - - 1 2 2569 1.9950000000000000e+02 0 -1 2570 - 1.8500000000000000e+01 -2 -3 2571 3.6500000000000000e+01 - - -4.1137224435806274e-01 2.0416383445262909e-01 - -9.0335428714752197e-01 8.9813232421875000e-01 - <_> - 7.5224937438964844e+01 - - 1 2 2572 7.5000000000000000e+00 0 -1 2573 - 2.5500000000000000e+01 -2 -3 2574 2.8450000000000000e+02 - - -7.3831039667129517e-01 3.6077511310577393e-01 - 3.1331515312194824e-01 -5.0101745128631592e-01 - <_> - 7.5449661254882812e+01 - - 1 2 2575 5.0000000000000000e-01 0 -1 2576 - 3.7665000000000000e+03 -2 -3 2577 8.2500000000000000e+01 - - 7.5498217344284058e-01 -1.5097464621067047e-01 - -3.8953059911727905e-01 2.2472013533115387e-01 - <_> - 7.5411880493164062e+01 - - 1 2 2578 4493. 0 -1 2579 2.5500000000000000e+01 -2 -3 2580 - 2.4500000000000000e+01 - - 2.1087837219238281e-01 -2.8623789548873901e-01 -1. - 9.5196199417114258e-01 - <_> - 7.5614067077636719e+01 - - 1 2 2581 1.0500000000000000e+01 0 -1 2582 17. -2 -3 2583 - 103. - - -7.5117886066436768e-01 9.0265202522277832e-01 - 2.0218542218208313e-01 -7.3936897516250610e-01 - <_> - 7.5999168395996094e+01 - - 1 2 2584 3.8500000000000000e+01 0 -1 2585 5086. -2 -3 2586 - 5.4500000000000000e+01 - - 5.9127920866012573e-01 -5.5186152458190918e-01 - 6.0463196039199829e-01 -9.3399420380592346e-02 - <_> - 7.6240371704101562e+01 - - 1 2 2587 2.7500000000000000e+01 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 91. - - -6.9810129702091217e-02 -8.4188365936279297e-01 - 2.4120073020458221e-01 -6.5708816051483154e-01 - <_> - 7.6235023498535156e+01 - - 1 2 2590 1.9500000000000000e+01 0 -1 2591 - 1.6500000000000000e+01 -2 -3 2592 4.5000000000000000e+00 - - 3.0514994263648987e-01 -3.2603117823600769e-01 - -4.3177062273025513e-01 8.1372964382171631e-01 - <_> - 7.6073257446289062e+01 - - 1 2 2593 1.2135000000000000e+03 0 -1 2594 - 1.5725000000000000e+03 -2 -3 2595 5.0650000000000000e+02 - - 4.9728196859359741e-01 -4.1840994358062744e-01 - 6.4058172702789307e-01 -1.6176456212997437e-01 - <_> - 7.6243354797363281e+01 - - 1 2 2596 2.5000000000000000e+00 0 -1 2597 - 4.2500000000000000e+01 -2 -3 2598 1.0500000000000000e+01 - - 2.2679857909679413e-01 -6.9367134571075439e-01 - 5.3237688541412354e-01 -5.3971223533153534e-02 - <_> - 7.6326980590820312e+01 - - 1 2 2599 5.0500000000000000e+01 0 -1 2600 - 3.5000000000000000e+00 -2 -3 2601 6.9315000000000000e+03 - - 2.1303455531597137e-01 -6.3557696342468262e-01 - -1.9230200350284576e-01 4.7144305706024170e-01 - <_> - 7.6166137695312500e+01 - - 1 2 2602 6905. 0 -1 2603 5.9785000000000000e+03 -2 -3 2604 - 2.5000000000000000e+00 - - -4.6545404940843582e-02 6.8220782279968262e-01 - 1.9928511977195740e-01 -5.4866182804107666e-01 - <_> - 7.6497024536132812e+01 - - 1 2 2605 3.5000000000000000e+00 0 -1 2606 - 1.5000000000000000e+00 -2 -3 2607 1.5500000000000000e+01 - - 1. -9.3044626712799072e-01 3.3089175820350647e-01 - -2.4615941941738129e-01 - <_> - 7.6440460205078125e+01 - - 1 2 2608 9.8500000000000000e+01 0 -1 2609 - 2.1950000000000000e+02 -2 -3 2610 1.5000000000000000e+00 - - -5.9206131845712662e-02 -7.2229409217834473e-01 - -7.6280659437179565e-01 4.8397278785705566e-01 - <_> - 7.6623970031738281e+01 - - 1 2 2611 6.5500000000000000e+01 0 -1 2612 - 5.0000000000000000e-01 -2 -3 2613 1.0050000000000000e+02 - - 3.7457340955734253e-01 -9.0597450733184814e-01 - 1.8351505696773529e-01 -5.7986891269683838e-01 - <_> - 7.6471252441406250e+01 - - 1 2 2614 1.1615000000000000e+03 0 -1 2615 - 2.0525000000000000e+03 -2 -3 2616 7.8150000000000000e+02 - - -7.5747263431549072e-01 8.2365345954895020e-01 - 4.9958717823028564e-01 -1.5272425115108490e-01 - <_> - 7.6615051269531250e+01 - - 1 2 2617 1.2950000000000000e+02 0 -1 2618 - 4.0500000000000000e+01 -2 -3 2619 2.5000000000000000e+00 - - -8.1159070134162903e-02 5.3420531749725342e-01 - 3.5195964574813843e-01 -8.9636689424514771e-01 - <_> - 7.6877807617187500e+01 - - 1 2 2620 2.2050000000000000e+02 0 -1 2621 - 9.5000000000000000e+00 -2 -3 2622 1.5500000000000000e+01 - - 1.3451068103313446e-01 -4.0673348307609558e-01 - -8.1775653362274170e-01 7.4299770593643188e-01 - <_> - 7.6823638916015625e+01 - - 1 2 2623 2.4500000000000000e+01 0 -1 2624 - 5.9500000000000000e+01 -2 -3 2625 5.1515000000000000e+03 - - -7.1872109174728394e-01 7.7110481262207031e-01 - 3.9283660054206848e-01 -1.6952608525753021e-01 - <_> - 7.6773773193359375e+01 - - 1 2 2626 8.5000000000000000e+00 0 -1 2627 - 3.5000000000000000e+00 -2 -3 2628 1.8450000000000000e+02 - - -6.7384725809097290e-01 6.7822283506393433e-01 - -3.4205380082130432e-01 2.1638515591621399e-01 - <_> - 7.6982254028320312e+01 - - 1 2 2629 2.8500000000000000e+01 0 -1 2630 245. -2 -3 2631 - 61. - - 2.0848464965820312e-01 -6.2569552659988403e-01 - -8.1863158941268921e-01 8.4820270538330078e-01 - <_> - 7.6841300964355469e+01 - - 1 2 2632 2.1500000000000000e+01 0 -1 2633 - 3.5000000000000000e+00 -2 -3 2634 5.0000000000000000e-01 - - -8.5113090276718140e-01 7.8649562597274780e-01 - 4.1131305694580078e-01 -1.4095856249332428e-01 - <_> - 7.7013679504394531e+01 - - 1 2 2635 7.4950000000000000e+02 0 -1 2636 - 9.5000000000000000e+00 -2 -3 2637 7.9500000000000000e+01 - - 1.7237815260887146e-01 -4.3325147032737732e-01 - -1.0799569636583328e-01 6.9663918018341064e-01 - <_> - 7.7435089111328125e+01 - - 1 2 2638 1.7500000000000000e+01 0 -1 2639 174. -2 -3 2640 - 12650. - - 2.8112256526947021e-01 -5.1195782423019409e-01 - 4.2141020298004150e-01 -5.3448003530502319e-01 - <_> - 7.7268295288085938e+01 - - 1 2 2641 503. 0 -1 2642 1.3950000000000000e+02 -2 -3 2643 - 5.5000000000000000e+00 - - 5.8834999799728394e-01 -8.3229357004165649e-01 - 3.7692824006080627e-01 -1.6679267585277557e-01 - <_> - 7.7178421020507812e+01 - - 1 2 2644 1.3500000000000000e+01 0 -1 2645 - 2.5000000000000000e+00 -2 -3 2646 4.5000000000000000e+00 - - -6.5913814306259155e-01 5.2206271886825562e-01 - 4.7852468490600586e-01 -8.9874200522899628e-02 - <_> - 7.7000297546386719e+01 - - 1 2 2647 2.6500000000000000e+01 0 -1 2648 - 9.5000000000000000e+00 -2 -3 2649 4.5000000000000000e+00 - - -8.1166177988052368e-01 4.6178385615348816e-01 - 3.5849693417549133e-01 -1.7812377214431763e-01 - <_> - 7.7597846984863281e+01 - - 1 2 2650 5.0000000000000000e-01 0 -1 2651 - 5.5000000000000000e+00 -2 -3 2652 6.2500000000000000e+01 - - -7.4793010950088501e-01 4.5227390527725220e-01 - -2.8616324067115784e-01 7.2525143623352051e-01 - <_> - 7.7900642395019531e+01 - - 1 2 2653 3.9500000000000000e+01 0 -1 2654 26. -2 -3 2655 - 5218. - - 5.8358985185623169e-01 -4.8778259754180908e-01 - 3.0279731750488281e-01 -8.5277533531188965e-01 - <_> - 7.7819618225097656e+01 - - 1 2 2656 9.5000000000000000e+00 0 -1 2657 6301. -2 -3 2658 - 6.5000000000000000e+00 - - 9.1035622358322144e-01 -9.4324058294296265e-01 - 4.2837977409362793e-01 -1.6642063856124878e-01 - <_> - 7.7973083496093750e+01 - - 1 2 2659 1.0500000000000000e+01 0 -1 2660 - 2.5595000000000000e+03 -2 -3 2661 3.0950000000000000e+02 - - -4.6133957803249359e-02 5.8160132169723511e-01 - -5.6929016113281250e-01 4.2342483997344971e-01 - <_> - 7.7966255187988281e+01 - - 1 2 2662 6.5000000000000000e+00 0 -1 2663 - 2.9250000000000000e+02 -2 -3 2664 4.7550000000000000e+02 - - -1.8533475697040558e-02 8.2740765810012817e-01 - -7.0250022411346436e-01 -6.8264966830611229e-03 - <_> - 7.7632484436035156e+01 - - 1 2 2665 2.5750000000000000e+02 0 -1 2666 - 3.7515000000000000e+03 -2 -3 2667 3.5000000000000000e+00 - - -9.5757788419723511e-01 8.6831378936767578e-01 - 2.1071645617485046e-01 -3.3376976847648621e-01 - <_> - 7.7842147827148438e+01 - - 1 2 2668 1.6650000000000000e+02 0 -1 2669 196. -2 -3 2670 - 2.5150000000000000e+02 - - 1.5279424190521240e-01 -6.0143697261810303e-01 - 5.7514303922653198e-01 -2.5379255414009094e-01 - <_> - 7.7947998046875000e+01 - - 1 2 2671 1.9500000000000000e+01 0 -1 2672 - 1.8850000000000000e+02 -2 -3 2673 3.5000000000000000e+00 - - -9.4067907333374023e-01 1. 4.1685935854911804e-01 - -1.3797542452812195e-01 - <_> - 7.8399063110351562e+01 - - 1 2 2674 2.5500000000000000e+01 0 -1 2675 - 2.5000000000000000e+00 -2 -3 2676 7.0765000000000000e+03 - - 2.0323142409324646e-01 -4.4056713581085205e-01 - -7.2788339853286743e-01 4.5106858015060425e-01 - <_> - 7.8570816040039062e+01 - - 1 2 2677 42. 0 -1 2678 1.8550000000000000e+02 -2 -3 2679 - 2.6500000000000000e+01 - - 8.6221927404403687e-01 -8.9485520124435425e-01 - -6.2209093570709229e-01 1.7175154387950897e-01 - <_> - 7.8441680908203125e+01 - - 1 2 2680 6.1500000000000000e+01 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.9650000000000000e+02 - - 4.3466070294380188e-01 -1.2913754582405090e-01 - 3.0203801393508911e-01 -7.8498184680938721e-01 - <_> - 7.8473335266113281e+01 - - 1 2 2683 2.4500000000000000e+01 0 -1 2684 - 1.3505000000000000e+03 -2 -3 2685 1.1150000000000000e+02 - - 1.2745502591133118e-01 -5.3675878047943115e-01 - 7.7312016487121582e-01 3.1652595847845078e-02 - <_> - 7.8451828002929688e+01 - - 1 2 2686 2.3145000000000000e+03 0 -1 2687 267. -2 -3 2688 - 13841. - - -6.8013966083526611e-01 6.3926976919174194e-01 - 5.1043254137039185e-01 -5.8976538479328156e-02 - <_> - 7.8873893737792969e+01 - - 1 2 2689 2.3050000000000000e+02 0 -1 2690 - 8.5500000000000000e+01 -2 -3 2691 1.8500000000000000e+01 - - 1.5697926282882690e-01 -4.9062812328338623e-01 - -2.8371900320053101e-01 5.3703123331069946e-01 - <_> - 7.8867477416992188e+01 - - 1 2 2692 1.7500000000000000e+01 0 -1 2693 - 2.3500000000000000e+01 -2 -3 2694 2.9850000000000000e+02 - - -8.6949959397315979e-02 4.9665886163711548e-01 - 4.2928251624107361e-01 -7.4992567300796509e-01 - <_> - 7.9131950378417969e+01 - - 1 2 2695 8.7500000000000000e+01 0 -1 2696 - 1.9850000000000000e+02 -2 -3 2697 84. - - 2.6447936892509460e-01 -4.0403616428375244e-01 - -7.4564838409423828e-01 7.5660055875778198e-01 - <_> - 7.8859619140625000e+01 - - 1 2 2698 1.8500000000000000e+01 0 -1 2699 193. -2 -3 2700 - 3.5000000000000000e+00 - - 6.6051805019378662e-01 -6.8317562341690063e-01 - 4.0860527753829956e-01 -1.5469188988208771e-01 - <_> - 7.9192871093750000e+01 - - 1 2 2701 1.0450000000000000e+02 0 -1 2702 - 2.1250000000000000e+02 -2 -3 2703 368. - - 2.8573963046073914e-01 -5.1572942733764648e-01 - 3.3325448632240295e-01 -7.9736381769180298e-01 - <_> - 7.9073951721191406e+01 - - 1 2 2704 5.0000000000000000e-01 0 -1 2705 - 1.3350000000000000e+02 -2 -3 2706 8.5000000000000000e+00 - - -7.5674408674240112e-01 4.2235055565834045e-01 - -6.1476016044616699e-01 3.5760600119829178e-02 - <_> - 7.9772453308105469e+01 - - 1 2 2707 1622. 0 -1 2708 5.6850000000000000e+02 -2 -3 2709 - 2.3500000000000000e+01 - - 3.7303709983825684e-01 -2.6838380098342896e-01 - 8.5874927043914795e-01 -6.8010163307189941e-01 - <_> - 7.9616546630859375e+01 - - 1 2 2710 5.1150000000000000e+02 0 -1 2711 - 2.0500000000000000e+01 -2 -3 2712 6.2385000000000000e+03 - - -2.7740508317947388e-01 6.4964014291763306e-01 - 6.8416231870651245e-01 -1.4068825542926788e-01 - <_> - 7.9560432434082031e+01 - - 1 2 2713 2.0500000000000000e+01 0 -1 2714 152. -2 -3 2715 - 118. - - 3.3152368664741516e-01 -7.2081387042999268e-01 - -7.7464383840560913e-01 -7.1336306631565094e-02 - <_> - 7.9178382873535156e+01 - - 1 2 2716 5.0000000000000000e-01 0 -1 2717 - 5.0000000000000000e-01 -2 -3 2718 2.8550000000000000e+02 - - -8.7511628866195679e-01 4.4366469979286194e-01 - 2.7641782164573669e-01 -3.8205233216285706e-01 - <_> - 7.9044113159179688e+01 - - 1 2 2719 3.6758500000000000e+04 0 -1 2720 119. -2 -3 2721 - 9.8250000000000000e+02 - - -8.9374190568923950e-01 1. 4.1436728835105896e-01 - -1.3426418602466583e-01 - <_> - 7.8986122131347656e+01 - - 1 2 2722 5.0000000000000000e-01 0 -1 2723 - 2.2500000000000000e+01 -2 -3 2724 4.5000000000000000e+00 - - -8.2067567110061646e-01 3.4801307320594788e-01 - -6.9476479291915894e-01 -5.7994190603494644e-02 - <_> - 7.9108413696289062e+01 - - 1 2 2725 4.2500000000000000e+01 0 -1 2726 - 1.8500000000000000e+01 -2 -3 2727 3.0500000000000000e+01 - - -4.1990894079208374e-01 5.0099647045135498e-01 - -5.2207231521606445e-01 1.2229448556900024e-01 - <_> - 7.9801383972167969e+01 - - 1 2 2728 8.2550000000000000e+02 0 -1 2729 - 5.0000000000000000e-01 -2 -3 2730 6.1765000000000000e+03 - - 3.1118586659431458e-01 -3.7582796812057495e-01 - 6.9296795129776001e-01 -9.2976748943328857e-02 - <_> - 8.0057861328125000e+01 - - 1 2 2731 7.5350000000000000e+02 0 -1 2732 - 5.8500000000000000e+01 -2 -3 2733 1.5000000000000000e+00 - - -2.4525830149650574e-01 2.5647372007369995e-01 - 8.4999513626098633e-01 -9.9117010831832886e-01 - <_> - 7.9780632019042969e+01 - - 1 2 2734 5.0000000000000000e-01 0 -1 2735 108. -2 -3 2736 - 7.1500000000000000e+01 - - 6.9359833002090454e-01 -6.9194906949996948e-01 - -2.7722206711769104e-01 4.1715595126152039e-01 - <_> - 8.0145835876464844e+01 - - 1 2 2737 2.0500000000000000e+01 0 -1 2738 - 4.5000000000000000e+00 -2 -3 2739 7.6500000000000000e+01 - - -9.7951823472976685e-01 3.6520305275917053e-01 - -3.8517192006111145e-01 4.9779340624809265e-01 - <_> - 7.9998329162597656e+01 - - 1 2 2740 1.1165000000000000e+03 0 -1 2741 - 4.5500000000000000e+01 -2 -3 2742 7.7500000000000000e+01 - - -9.2406588792800903e-01 1. 3.6648508906364441e-01 - -1.4751173555850983e-01 - <_> - 8.0417495727539062e+01 - - 1 2 2743 7905. 0 -1 2744 1.4950000000000000e+02 -2 -3 2745 - 98. - - 3.2732751220464706e-02 -7.6812428236007690e-01 - -7.5380378961563110e-01 4.7367131710052490e-01 - <_> - 7.9864738464355469e+01 - - 1 2 2746 6.5000000000000000e+00 0 -1 2747 - 1.2235000000000000e+03 -2 -3 2748 27. - - 5.5213552713394165e-01 -6.3920162618160248e-02 - -9.2558085918426514e-01 -1.1656486988067627e-01 - <_> - 7.9995124816894531e+01 - - 1 2 2749 2.1150000000000000e+02 0 -1 2750 - 1.6500000000000000e+01 -2 -3 2751 34. - - 2.0876583456993103e-01 -3.5845145583152771e-01 - -7.5983208417892456e-01 6.1741626262664795e-01 - <_> - 8.0029579162597656e+01 - - 1 2 2752 1.0500000000000000e+01 0 -1 2753 - 3.0150000000000000e+02 -2 -3 2754 3.5000000000000000e+00 - - 1.8833340704441071e-01 -4.5257857441902161e-01 - -8.7599718570709229e-01 3.9588588476181030e-01 - <_> - 8.0429824829101562e+01 - - 1 2 2755 1.7500000000000000e+01 0 -1 2756 - 5.5950000000000000e+02 -2 -3 2757 3.8500000000000000e+01 - - 9.0497744083404541e-01 -3.4649524092674255e-01 - 4.0024894475936890e-01 -4.3823891878128052e-01 - <_> - 8.0367797851562500e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 1.0032500000000000e+04 -2 -3 2760 1.4500000000000000e+01 - - -7.4333506822586060e-01 4.4759553670883179e-01 - -6.5220975875854492e-01 5.3118625655770302e-03 - <_> - 8.0484443664550781e+01 - - 1 2 2761 7.5500000000000000e+01 0 -1 2762 - 8.4500000000000000e+01 -2 -3 2763 51. - - -4.7128376364707947e-01 3.0099546909332275e-01 - -5.9575259685516357e-01 4.5461925864219666e-01 - <_> - 8.0230026245117188e+01 - - 1 2 2764 6.6250000000000000e+02 0 -1 2765 4812. -2 -3 2766 - 9.5000000000000000e+00 - - -8.2453155517578125e-01 8.0837249755859375e-01 - 3.8529312610626221e-01 -2.5441926717758179e-01 - <_> - 8.0529327392578125e+01 - - 1 2 2767 5.9500000000000000e+01 0 -1 2768 - 1.6050000000000000e+02 -2 -3 2769 1.5000000000000000e+00 - - 3.9788705110549927e-01 -9.0285009145736694e-01 - 2.9930576682090759e-01 -2.6814186573028564e-01 - <_> - 8.0221504211425781e+01 - - 1 2 2770 3.0500000000000000e+01 0 -1 2771 - 4.5000000000000000e+00 -2 -3 2772 1.4475000000000000e+03 - - -9.4630533456802368e-01 8.2679504156112671e-01 - 2.5290638208389282e-01 -3.0782324075698853e-01 - <_> - 8.0379684448242188e+01 - - 1 2 2773 5.0645000000000000e+03 0 -1 2774 - 3.2500000000000000e+01 -2 -3 2775 3.5325000000000000e+03 - - -6.8182122707366943e-01 2.9198646545410156e-01 - 5.7170498371124268e-01 -9.3514062464237213e-02 - <_> - 8.0165153503417969e+01 - - 1 2 2776 1.5500000000000000e+01 0 -1 2777 - 1.2765000000000000e+03 -2 -3 2778 2.5000000000000000e+00 - - -1.2029168428853154e-03 6.6435748338699341e-01 - 5.4809719324111938e-01 -6.2805855274200439e-01 - <_> - 8.0611167907714844e+01 - - 1 2 2779 2.5000000000000000e+00 0 -1 2780 - 2.1500000000000000e+01 -2 -3 2781 1.2050000000000000e+02 - - -2.4764390289783478e-01 4.4601744413375854e-01 - 1.6960276663303375e-01 -5.8656966686248779e-01 - <_> - 8.0892166137695312e+01 - - 1 2 2782 5.4500000000000000e+01 0 -1 2783 - 9.7350000000000000e+02 -2 -3 2784 1.0500000000000000e+01 - - 2.7698031067848206e-01 -8.4596508741378784e-01 - 2.8099426627159119e-01 -3.0595216155052185e-01 - <_> - 8.1190002441406250e+01 - - 1 2 2785 3.5000000000000000e+00 0 -1 2786 - 9.4500000000000000e+01 -2 -3 2787 15. - - -2.3588234186172485e-01 2.9783576726913452e-01 1. - -9.3145948648452759e-01 - <_> - 8.0872680664062500e+01 - - 1 2 2788 5.0000000000000000e-01 0 -1 2789 34. -2 -3 2790 - 404. - - -9.7627913951873779e-01 4.5835772156715393e-01 - 3.3686440438032150e-02 -6.0926121473312378e-01 - <_> - 8.1137512207031250e+01 - - 1 2 2791 4.2500000000000000e+01 0 -1 2792 - 7.5000000000000000e+00 -2 -3 2793 1.0500000000000000e+01 - - 4.3087863922119141e-01 -5.4735422134399414e-01 - -7.4202680587768555e-01 2.6482933759689331e-01 - <_> - 8.1074195861816406e+01 - - 1 2 2794 6045. 0 -1 2795 3582. -2 -3 2796 - 1.4355000000000000e+03 - - 5.6150436401367188e-01 -6.3314586877822876e-02 - -9.8905169963836670e-01 1. - <_> - 8.1611145019531250e+01 - - 1 2 2797 1.7500000000000000e+01 0 -1 2798 - 6.3500000000000000e+01 -2 -3 2799 2.5000000000000000e+00 - - -9.5531716942787170e-02 5.3694951534271240e-01 - 4.7020646929740906e-01 -5.0288665294647217e-01 - <_> - 8.1308403015136719e+01 - - 1 2 2800 5.5000000000000000e+00 0 -1 2801 110. -2 -3 2802 - 2.5000000000000000e+00 - - -9.1038602590560913e-01 7.3705679178237915e-01 - 2.4539317190647125e-01 -3.0274006724357605e-01 - <_> - 8.0943153381347656e+01 - - 1 2 2803 4.9550000000000000e+02 0 -1 2804 - 1.0500000000000000e+01 -2 -3 2805 1.7500000000000000e+01 - - 1.8987993896007538e-01 -3.6525547504425049e-01 -1. - 8.1189829111099243e-01 - <_> - 8.1049530029296875e+01 - - 1 2 2806 1.7050000000000000e+02 0 -1 2807 - 5.5000000000000000e+00 -2 -3 2808 6.3500000000000000e+01 - - 5.0011897087097168e-01 -2.4462732672691345e-01 - 6.2346208095550537e-01 -5.9039413928985596e-01 - <_> - 8.1308738708496094e+01 - - 1 2 2809 3.8500000000000000e+01 0 -1 2810 - 8.6500000000000000e+01 -2 -3 2811 8.8500000000000000e+01 - - -3.8746827840805054e-01 2.5921225547790527e-01 - 6.4567667245864868e-01 -3.9673528075218201e-01 - <_> - 8.1096168518066406e+01 - - 1 2 2812 4.5000000000000000e+00 0 -1 2813 - 3.6500000000000000e+01 -2 -3 2814 1.2500000000000000e+01 - - 8.4782302379608154e-01 -9.7110116481781006e-01 - 3.3998885750770569e-01 -2.1257449686527252e-01 - <_> - 8.1410560607910156e+01 - - 1 2 2815 4.5000000000000000e+00 0 -1 2816 - 7.5500000000000000e+01 -2 -3 2817 1.4500000000000000e+01 - - -1. 1. 3.1439647078514099e-01 -1.7778587341308594e-01 - <_> - 8.1814201354980469e+01 - - 1 2 2818 3.9500000000000000e+01 0 -1 2819 - 6.4750000000000000e+02 -2 -3 2820 9.5000000000000000e+00 - - 2.4708394706249237e-01 -9.2105174064636230e-01 - 4.0363448858261108e-01 -1.2905533611774445e-01 - <_> - 8.1573196411132812e+01 - - 1 2 2821 3.0500000000000000e+01 0 -1 2822 - 5.0000000000000000e-01 -2 -3 2823 5.0500000000000000e+01 - - 4.9701321125030518e-01 -5.6365805864334106e-01 - 2.8191345930099487e-01 -5.3536522388458252e-01 - <_> - 8.1956001281738281e+01 - - 1 2 2824 4.6085000000000000e+03 0 -1 2825 - 1.3250000000000000e+02 -2 -3 2826 1.9750000000000000e+02 - - -7.4937385320663452e-01 9.3439608812332153e-01 - 3.8280078768730164e-01 -2.6699417829513550e-01 - <_> - 8.1513214111328125e+01 - - 1 2 2827 3.0500000000000000e+01 0 -1 2828 - 5.5000000000000000e+00 -2 -3 2829 9.9235000000000000e+03 - - 2.1246223151683807e-01 -4.4278442859649658e-01 - -8.1646180152893066e-01 5.1293396949768066e-01 - <_> - 8.1699577331542969e+01 - - 1 2 2830 1.1650000000000000e+02 0 -1 2831 - 8.2500000000000000e+01 -2 -3 2832 3.5000000000000000e+00 - - 1.8636158108711243e-01 -4.9596223235130310e-01 - -8.9908498525619507e-01 1. - <_> - 8.2445182800292969e+01 - - 1 2 2833 1903. 0 -1 2834 2.5000000000000000e+00 -2 -3 2835 - 6.0445000000000000e+03 - - 1.8896391987800598e-01 -3.2746449112892151e-01 - 7.4561136960983276e-01 -7.9816836118698120e-01 - <_> - 8.2831352233886719e+01 - - 1 2 2836 2.7500000000000000e+01 0 -1 2837 469. -2 -3 2838 - 1.2175000000000000e+03 - - 7.7044230699539185e-01 -9.5174908638000488e-01 - -1.4690612256526947e-01 3.8616815209388733e-01 - <_> - 8.2686500549316406e+01 - - 1 2 2839 2895. 0 -1 2840 4.3500000000000000e+01 -2 -3 2841 - 34. - - -1.4485244452953339e-01 4.4888463616371155e-01 - 3.6486008763313293e-01 -8.1205248832702637e-01 - <_> - 8.2188568115234375e+01 - - 1 2 2842 3.5000000000000000e+00 0 -1 2843 2070. -2 -3 2844 - 4.7500000000000000e+01 - - -6.9201928377151489e-01 3.1747218966484070e-01 - -4.9793621897697449e-01 5.4417175054550171e-01 - <_> - 8.2745765686035156e+01 - - 1 2 2845 2.5000000000000000e+00 0 -1 2846 - 7.5000000000000000e+00 -2 -3 2847 1.8500000000000000e+01 - - -8.4509557485580444e-01 5.5719637870788574e-01 - 1.7902635037899017e-01 -4.2469331622123718e-01 - <_> - 8.2670654296875000e+01 - - 1 2 2848 1.3500000000000000e+01 0 -1 2849 - 9.4650000000000000e+02 -2 -3 2850 7.8500000000000000e+01 - - -3.3974867314100266e-02 -8.2525712251663208e-01 - -4.6273630857467651e-01 6.6797983646392822e-01 - <_> - 8.2877090454101562e+01 - - 1 2 2851 1.4500000000000000e+01 0 -1 2852 - 1.1915000000000000e+03 -2 -3 2853 3.9500000000000000e+01 - - 6.6358172893524170e-01 -7.2160053253173828e-01 - -6.6055583953857422e-01 2.0643877983093262e-01 - <_> - 8.2504707336425781e+01 - - 1 2 2854 4.5000000000000000e+00 0 -1 2855 - 1.6250000000000000e+02 -2 -3 2856 6.5000000000000000e+00 - - 1.9229575991630554e-02 6.7639851570129395e-01 - 7.7679026126861572e-01 -3.7238210439682007e-01 - <_> - 8.1991981506347656e+01 - - 1 2 2857 1.8500000000000000e+01 0 -1 2858 - 1.5500000000000000e+01 -2 -3 2859 7.5000000000000000e+00 - - -6.6943126916885376e-01 2.8580504655838013e-01 - 5.7573765516281128e-01 -5.1273131370544434e-01 - <_> - 8.2700317382812500e+01 - - 1 2 2860 2.5335000000000000e+03 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 9017. - - 4.5291054248809814e-01 -3.1770652532577515e-01 - 7.0833772420883179e-01 -5.8668452501296997e-01 - <_> - 8.3036483764648438e+01 - - 1 2 2863 1.2665000000000000e+03 0 -1 2864 - 2.7950000000000000e+02 -2 -3 2865 1.6050000000000000e+02 - - 5.6190413236618042e-01 -9.4979606568813324e-02 - -5.6120347976684570e-01 6.9735217094421387e-01 - <_> - 8.3268234252929688e+01 - - 1 2 2866 3.1500000000000000e+01 0 -1 2867 - 2.2850000000000000e+02 -2 -3 2868 338. - - 2.9099774360656738e-01 -8.5712206363677979e-01 - -7.3761904239654541e-01 2.3174422979354858e-01 - <_> - 8.3142601013183594e+01 - - 1 2 2869 1.3500000000000000e+01 0 -1 2870 - 7.5500000000000000e+01 -2 -3 2871 7.5000000000000000e+00 - - -6.1628973484039307e-01 8.9499497413635254e-01 - 5.3249603509902954e-01 -1.2562887370586395e-01 - <_> - 8.3346061706542969e+01 - - 1 2 2872 5.8500000000000000e+01 0 -1 2873 - 1.4500000000000000e+01 -2 -3 2874 2.3655000000000000e+03 - - -5.8924037218093872e-01 2.0346269011497498e-01 - 6.8413233757019043e-01 -7.3724877834320068e-01 - <_> - 8.3734870910644531e+01 - - 1 2 2875 1.5500000000000000e+01 0 -1 2876 - 2.4500000000000000e+01 -2 -3 2877 842. - - -9.6514111757278442e-01 4.5274001359939575e-01 - -4.4388589262962341e-01 1.6307270526885986e-01 - <_> - 8.3378517150878906e+01 - - 1 2 2878 2.3415000000000000e+03 0 -1 2879 - 1.1135000000000000e+03 -2 -3 2880 1.4450000000000000e+02 - - -6.0065728425979614e-01 4.9152576923370361e-01 - 3.9019897580146790e-01 -3.5635352134704590e-01 - <_> - 8.3842796325683594e+01 - - 1 2 2881 7.7500000000000000e+01 0 -1 2882 - 1.5000000000000000e+00 -2 -3 2883 34. - - 3.0433416366577148e-01 -3.4621056914329529e-01 - -2.3730756342411041e-01 7.2603577375411987e-01 - <_> - 8.4082458496093750e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 1.5000000000000000e+00 -2 -3 2886 2.4500000000000000e+01 - - -8.4981471300125122e-01 4.6478056907653809e-01 - -4.4265326857566833e-01 2.3966242372989655e-01 - <_> - 8.4403526306152344e+01 - - 1 2 2887 1.9735000000000000e+03 0 -1 2888 61716. -2 -3 2889 - 7.1250000000000000e+02 - - 3.2107087969779968e-01 -7.3176121711730957e-01 - -4.2035382986068726e-01 6.5387272834777832e-01 - <_> - 8.3859382629394531e+01 - - 1 2 2890 5.1500000000000000e+01 0 -1 2891 - 5.4500000000000000e+01 -2 -3 2892 9.4500000000000000e+01 - - -8.5267591476440430e-01 3.3089217543601990e-01 - -5.4414278268814087e-01 1.4185604453086853e-01 - <_> - 8.4165733337402344e+01 - - 1 2 2893 2.5000000000000000e+00 0 -1 2894 170. -2 -3 2895 - 5.0000000000000000e-01 - - -7.4921059608459473e-01 1. 3.0634912848472595e-01 - -2.8711661696434021e-01 - <_> - 8.4014938354492188e+01 - - 1 2 2896 5.0000000000000000e-01 0 -1 2897 - 4.5000000000000000e+00 -2 -3 2898 1.5000000000000000e+00 - - -4.4929865002632141e-01 7.1007603406906128e-01 - 5.1218295097351074e-01 -2.8127226233482361e-01 - <_> - 8.3658638000488281e+01 - - 1 2 2899 6.2500000000000000e+01 0 -1 2900 - 7.7500000000000000e+01 -2 -3 2901 5.4650000000000000e+02 - - 1.7899210751056671e-01 -3.5629883408546448e-01 - 6.6323882341384888e-01 -6.2932920455932617e-01 - <_> - 8.4031822204589844e+01 - - 1 2 2902 4.3500000000000000e+01 0 -1 2903 - 2.5000000000000000e+00 -2 -3 2904 1.4450000000000000e+02 - - 2.9303130507469177e-01 -7.2133332490921021e-01 - 3.7318074703216553e-01 -2.9929837584495544e-01 - <_> - 8.4148094177246094e+01 - - 1 2 2905 4.4500000000000000e+01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 1218. - - 1.1627596616744995e-01 -6.5344148874282837e-01 - -6.1276328563690186e-01 3.0713844299316406e-01 - <_> - 8.3736122131347656e+01 - - 1 2 2908 2.2500000000000000e+01 0 -1 2909 - 7.5000000000000000e+00 -2 -3 2910 4945. - - 2.0239315927028656e-01 -4.1197755932807922e-01 - -6.5554910898208618e-01 5.7477289438247681e-01 - <_> - 8.3684288024902344e+01 - - 1 2 2911 6.1500000000000000e+01 0 -1 2912 - 3.5000000000000000e+00 -2 -3 2913 3.6500000000000000e+01 - - 2.9327356815338135e-01 -5.5817484855651855e-01 - 7.1029824018478394e-01 -5.1831677556037903e-02 - <_> - 8.3512733459472656e+01 - - 1 2 2914 5.4500000000000000e+01 0 -1 2915 - 1.5000000000000000e+00 -2 -3 2916 6.5000000000000000e+00 - - -9.4946056604385376e-01 4.1890572756528854e-02 - 3.9327812194824219e-01 -1.7155566811561584e-01 - <_> - 8.4089424133300781e+01 - - 1 2 2917 9.3500000000000000e+01 0 -1 2918 2760. -2 -3 2919 - 1.1250000000000000e+02 - - -2.4497070908546448e-01 9.6521437168121338e-01 - 5.7669252157211304e-01 -7.6096898317337036e-01 - <_> - 8.4561004638671875e+01 - - 1 2 2920 5.0000000000000000e-01 0 -1 2921 - 6.5000000000000000e+00 -2 -3 2922 6.9750000000000000e+02 - - -5.3141713142395020e-01 4.7158041596412659e-01 - 2.2022259235382080e-01 -4.3360495567321777e-01 - <_> - 8.4944801330566406e+01 - - 1 2 2923 1.4050000000000000e+02 0 -1 2924 - 5.0000000000000000e-01 -2 -3 2925 7.4850000000000000e+02 - - 1.5521393716335297e-01 -5.1790440082550049e-01 - 3.8379338383674622e-01 -4.4605687260627747e-01 - <_> - 8.5207305908203125e+01 - - 1 2 2926 1.5500000000000000e+01 0 -1 2927 - 3.3500000000000000e+01 -2 -3 2928 255. - - -2.9250434041023254e-01 6.5829980373382568e-01 - -6.5028876066207886e-01 5.1617544889450073e-01 - <_> - 8.5524932861328125e+01 - - 1 2 2929 2.4500000000000000e+01 0 -1 2930 - 2.8500000000000000e+01 -2 -3 2931 4.2500000000000000e+01 - - -1. 3.1762468814849854e-01 3.0006918311119080e-01 - -5.6320971250534058e-01 - <_> - 8.5334136962890625e+01 - - 1 2 2932 3.5000000000000000e+00 0 -1 2933 - 1.5500000000000000e+01 -2 -3 2934 2457. - - -4.4446155428886414e-01 4.3577027320861816e-01 - 4.5368546247482300e-01 -4.4899699091911316e-01 - <_> - 8.5264480590820312e+01 - - 1 2 2935 5.0000000000000000e-01 0 -1 2936 115. -2 -3 2937 - 2.5000000000000000e+00 - - -9.1964131593704224e-01 4.9966832995414734e-01 - 5.8283418416976929e-01 -6.9656021893024445e-02 - <_> - 8.5903366088867188e+01 - - 1 2 2938 7.1500000000000000e+01 0 -1 2939 - 5.4500000000000000e+01 -2 -3 2940 143. - - 1.6550585627555847e-01 -4.3812391161918640e-01 - 6.3888710737228394e-01 -5.4803293943405151e-01 - <_> - 8.6248062133789062e+01 - - 1 2 2941 2.5000000000000000e+00 0 -1 2942 - 9.0500000000000000e+01 -2 -3 2943 1.0500000000000000e+01 - - 1.0908889025449753e-01 -8.8574463129043579e-01 - 3.4469136595726013e-01 -2.0632795989513397e-01 - <_> - 8.6533218383789062e+01 - - 1 2 2944 2.1500000000000000e+01 0 -1 2945 - 4.5000000000000000e+00 -2 -3 2946 4.4500000000000000e+01 - - -4.4494426250457764e-01 8.8365721702575684e-01 - 2.8515672683715820e-01 -8.1787091493606567e-01 - <_> - 8.7068389892578125e+01 - - 1 2 2947 8.2650000000000000e+02 0 -1 2948 - 4.5000000000000000e+00 -2 -3 2949 1.9675500000000000e+04 - - 3.3902516961097717e-01 -3.3688139915466309e-01 - 5.3517556190490723e-01 -6.7757689952850342e-01 - <_> - 8.6810844421386719e+01 - - 1 2 2950 2.5500000000000000e+01 0 -1 2951 - 2.5000000000000000e+00 -2 -3 2952 1.3035000000000000e+03 - - 9.1093343496322632e-01 -8.2202631235122681e-01 - 3.2981109619140625e-01 -2.5754809379577637e-01 - <_> - 8.6275955200195312e+01 - - 1 2 2953 2.2369500000000000e+04 0 -1 2954 - 1.5000000000000000e+00 -2 -3 2955 9.5285000000000000e+03 - - 1.4417627826333046e-02 -6.9124591350555420e-01 - 3.7811917066574097e-01 -5.3488659858703613e-01 - <_> - 8.6942420959472656e+01 - - 1 2 2956 1.0645000000000000e+03 0 -1 2957 - 3.5000000000000000e+00 -2 -3 2958 7.5000000000000000e+00 - - 1.4049446582794189e-01 -3.5957664251327515e-01 - 9.1249042749404907e-01 -1.7921762168407440e-01 - <_> - 8.7227539062500000e+01 - - 1 2 2959 9.5000000000000000e+00 0 -1 2960 199. -2 -3 2961 - 6.6465000000000000e+03 - - 8.8686686754226685e-01 -6.7846179008483887e-01 - -3.4822642803192139e-01 2.8511366248130798e-01 - <_> - 8.7103866577148438e+01 - - 1 2 2962 6.5000000000000000e+00 0 -1 2963 - 1.5000000000000000e+00 -2 -3 2964 4.3450000000000000e+02 - - 1.8375012278556824e-01 -5.8300310373306274e-01 - -7.8263854980468750e-01 5.0758910179138184e-01 - <_> - 8.7249404907226562e+01 - - 1 2 2965 1.8500000000000000e+01 0 -1 2966 - 8.5000000000000000e+00 -2 -3 2967 9.5000000000000000e+00 - - -9.1379207372665405e-01 1. -6.0623198747634888e-01 - 1.4554040133953094e-01 - <_> - 8.6942718505859375e+01 - - 1 2 2968 3.5000000000000000e+00 0 -1 2969 - 2.3355000000000000e+03 -2 -3 2970 2.5850000000000000e+02 - - 6.3676542043685913e-01 -4.5731505751609802e-01 - 4.5318025350570679e-01 -3.0669227242469788e-01 - <_> - 8.6748542785644531e+01 - - 1 2 2971 2.1500000000000000e+01 0 -1 2972 - 1.6500000000000000e+01 -2 -3 2973 4.3450000000000000e+02 - - -1.9417463243007660e-01 4.5977392792701721e-01 - 7.4417084455490112e-01 -9.2871183156967163e-01 - <_> - 8.6213851928710938e+01 - - 1 2 2974 4.6500000000000000e+01 0 -1 2975 6986. -2 -3 2976 - 1.0655000000000000e+03 - - -3.5974133014678955e-01 3.9904057979583740e-01 - -5.3468620777130127e-01 4.4506999850273132e-01 - <_> - 8.6651367187500000e+01 - - 1 2 2977 7.7450000000000000e+02 0 -1 2978 39564. -2 -3 2979 - 3.5000000000000000e+00 - - 4.3751135468482971e-01 -8.3221775293350220e-01 - 9.5911510288715363e-02 -5.8185952901840210e-01 - <_> - 8.7053947448730469e+01 - - 1 2 2980 1.3150000000000000e+02 0 -1 2981 - 1.8650000000000000e+02 -2 -3 2982 4.2550000000000000e+02 - - 4.1247457265853882e-01 -4.4629332423210144e-01 - 4.0258339047431946e-01 -6.6914594173431396e-01 - <_> - 8.7472679138183594e+01 - - 1 2 2983 6.9750000000000000e+02 0 -1 2984 - 1.0500000000000000e+01 -2 -3 2985 1.8735000000000000e+03 - - -7.6271665096282959e-01 4.1873174905776978e-01 - -6.8841624259948730e-01 -2.3577280342578888e-02 - <_> - 8.7495330810546875e+01 - - 1 2 2986 5.0000000000000000e-01 0 -1 2987 - 2.9500000000000000e+01 -2 -3 2988 1.4750000000000000e+02 - - -7.6370656490325928e-01 6.4419740438461304e-01 - -2.4485288560390472e-01 6.6281813383102417e-01 - <_> - 8.6983520507812500e+01 - - 1 2 2989 1.2135000000000000e+03 0 -1 2990 - 8.0250000000000000e+02 -2 -3 2991 1.0500000000000000e+01 - - -4.0576335787773132e-01 5.1596242189407349e-01 - 4.4931706786155701e-01 -5.1181161403656006e-01 - <_> - 8.7748497009277344e+01 - - 1 2 2992 1.4555000000000000e+03 0 -1 2993 - 2.3355000000000000e+03 -2 -3 2994 4.5000000000000000e+00 - - -8.6321972310543060e-02 7.6497226953506470e-01 - 3.1687757372856140e-01 -4.1308388113975525e-01 - <_> - 8.7668098449707031e+01 - - 1 2 2995 7.3500000000000000e+01 0 -1 2996 - 7.5000000000000000e+00 -2 -3 2997 1.8415000000000000e+03 - - -8.0395199358463287e-02 4.9477747082710266e-01 - 5.0139939785003662e-01 -9.4019854068756104e-01 - <_> - 8.7603317260742188e+01 - - 1 2 2998 1.0350000000000000e+02 0 -1 2999 - 5.0000000000000000e-01 -2 -3 3000 6.6500000000000000e+01 - - 5.5032008886337280e-01 -6.4781084656715393e-02 - -6.9391334056854248e-01 2.6454237103462219e-01 - <_> - 8.7899932861328125e+01 - - 1 2 3001 4.1850000000000000e+02 0 -1 3002 - 2.5000000000000000e+00 -2 -3 3003 4.4350000000000000e+02 - - 8.3208960294723511e-01 -9.7579640150070190e-01 - 4.5810779929161072e-01 -9.8539277911186218e-02 - <_> - 8.7558662414550781e+01 - - 1 2 3004 1.4500000000000000e+01 0 -1 3005 - 4.5000000000000000e+00 -2 -3 3006 4093. - - 1.3818612694740295e-01 -5.0276112556457520e-01 - 3.9290004968643188e-01 -9.0650981664657593e-01 - <_> - 8.7562660217285156e+01 - - 1 2 3007 3.0500000000000000e+01 0 -1 3008 15. -2 -3 3009 - 6.8500000000000000e+01 - - 5.8721613883972168e-01 -9.5952403545379639e-01 - 1.5953540802001953e-01 -7.3017132282257080e-01 - <_> - 8.7263595581054688e+01 - - 1 2 3010 4.6550000000000000e+02 0 -1 3011 - 8.5000000000000000e+00 -2 -3 3012 3.0500000000000000e+01 - - 2.5965842604637146e-01 -4.5460721850395203e-01 - -6.6170775890350342e-01 4.6810474991798401e-01 - <_> - 8.7385635375976562e+01 - - 1 2 3013 3.7500000000000000e+01 0 -1 3014 - 6.7500000000000000e+01 -2 -3 3015 9.0500000000000000e+01 - - -4.7775322198867798e-01 3.0159825086593628e-01 - -7.1135115623474121e-01 1.2204105406999588e-01 - <_> - 8.7448921203613281e+01 - - 1 2 3016 3.4500000000000000e+01 0 -1 3017 - 1.3500000000000000e+01 -2 -3 3018 2.9500000000000000e+01 - - -4.3366974592208862e-01 4.3953391909599304e-01 - -6.8973690271377563e-01 6.3285768032073975e-02 - <_> - 8.7470863342285156e+01 - - 1 2 3019 9.5000000000000000e+00 0 -1 3020 - 3.5750000000000000e+02 -2 -3 3021 2.1500000000000000e+01 - - 5.9902238845825195e-01 -4.9095529317855835e-01 - -6.0496187210083008e-01 2.1941423416137695e-02 - <_> - 8.8030609130859375e+01 - - 1 2 3022 7.5000000000000000e+00 0 -1 3023 - 1.4250000000000000e+02 -2 -3 3024 4.8500000000000000e+01 - - -1.1742883920669556e-01 5.5974942445755005e-01 - -6.6814047098159790e-01 1.0357101261615753e-01 - <_> - 8.8298561096191406e+01 - - 1 2 3025 5.0000000000000000e-01 0 -1 3026 - 2.5000000000000000e+00 -2 -3 3027 6.5000000000000000e+00 - - -7.9518532752990723e-01 3.9527121186256409e-01 - 2.6795190572738647e-01 -4.4711253046989441e-01 - <_> - 8.8873558044433594e+01 - - 1 2 3028 5.0650000000000000e+02 0 -1 3029 - 2.7150000000000000e+02 -2 -3 3030 5.1550000000000000e+02 - - 4.9458679556846619e-01 -3.8078719377517700e-01 - 5.7499361038208008e-01 -2.4514666199684143e-01 - <_> - 8.8112663269042969e+01 - - 1 2 3031 1.5500000000000000e+01 0 -1 3032 - 3.1500000000000000e+01 -2 -3 3033 511. - - -2.6782530546188354e-01 3.8774058222770691e-01 - 3.4897887706756592e-01 -7.6089125871658325e-01 - <_> - 8.8039482116699219e+01 - - 1 2 3034 230. 0 -1 3035 6.6500000000000000e+01 -2 -3 3036 - 4.0500000000000000e+01 - - -7.3185198009014130e-02 5.7667195796966553e-01 - 3.2658204436302185e-01 -8.0915856361389160e-01 - <_> - 8.8365722656250000e+01 - - 1 2 3037 5.0000000000000000e-01 0 -1 3038 - 2.9500000000000000e+01 -2 -3 3039 4.5000000000000000e+00 - - 3.2624712586402893e-01 -5.5316114425659180e-01 - -2.4152111727744341e-03 -6.9509941339492798e-01 - <_> - 8.8882514953613281e+01 - - 1 2 3040 3.0500000000000000e+01 0 -1 3041 - 1.1150000000000000e+02 -2 -3 3042 5.0000000000000000e-01 - - 5.2429902553558350e-01 -8.9993971586227417e-01 - 5.1678961515426636e-01 -8.6023628711700439e-02 - <_> - 8.8496650695800781e+01 - - 1 2 3043 2.8500000000000000e+01 0 -1 3044 - 1.1385000000000000e+03 -2 -3 3045 1.0500000000000000e+01 - - 5.3370710462331772e-02 -7.7716881036758423e-01 - 4.8879763484001160e-01 -1.4188981056213379e-01 - <_> - 8.8710388183593750e+01 - - 1 2 3046 3286. 0 -1 3047 1.8500000000000000e+01 -2 -3 3048 - 14770. - - 5.7567560672760010e-01 -7.7623206377029419e-01 - -8.3764082193374634e-01 2.1373493969440460e-01 - <_> - 8.8465957641601562e+01 - - 1 2 3049 4.5000000000000000e+00 0 -1 3050 - 6.8500000000000000e+01 -2 -3 3051 7.2550000000000000e+02 - - -9.8398631811141968e-01 1. 1.4620523154735565e-01 - -4.8840534687042236e-01 - <_> - 8.8379966735839844e+01 - - 1 2 3052 4.6350000000000000e+02 0 -1 3053 - 1.0005000000000000e+03 -2 -3 3054 12544. - - 1.2718398869037628e-01 -4.7662603855133057e-01 - 6.7666745185852051e-01 -9.6875000000000000e-01 - <_> - 8.8453712463378906e+01 - - 1 2 3055 6.2500000000000000e+01 0 -1 3056 - 2.5000000000000000e+00 -2 -3 3057 2.7450000000000000e+02 - - 7.3742903769016266e-02 -4.8088160157203674e-01 - 7.9391783475875854e-01 -9.5094847679138184e-01 - <_> - 8.8360649108886719e+01 - - 1 2 3058 5.1085000000000000e+03 0 -1 3059 - 1.5000000000000000e+00 -2 -3 3060 59. - - 4.7250562906265259e-01 -9.3059159815311432e-02 - -9.8921388387680054e-01 1. - <_> - 8.8759475708007812e+01 - - 1 2 3061 4.3500000000000000e+01 0 -1 3062 - 2.5000000000000000e+00 -2 -3 3063 9.5000000000000000e+00 - - 1.8726401031017303e-01 -9.5795679092407227e-01 - 3.9882484078407288e-01 -1.5403895080089569e-01 - <_> - 8.8777908325195312e+01 - - 1 2 3064 1.8150000000000000e+02 0 -1 3065 - 1.1500000000000000e+01 -2 -3 3066 4.0500000000000000e+01 - - 2.5865679979324341e-01 -5.4600328207015991e-01 - 6.9991689920425415e-01 1.8433349207043648e-02 - <_> - 8.9012145996093750e+01 - - 1 2 3067 2.6500000000000000e+01 0 -1 3068 - 2.0500000000000000e+01 -2 -3 3069 1.1550000000000000e+02 - - 7.8764355182647705e-01 -8.8436836004257202e-01 - 2.3423436284065247e-01 -3.8715034723281860e-01 - - <_> - 8 - - 12 12 8 3 - <_> - 7 - - 16 11 1 1 - <_> - 1 - - 14 19 7 32 - <_> - 5 - - 9 8 13 9 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 7 55 24 8 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 11 40 8 12 - <_> - 4 - - 11 32 9 31 - <_> - 2 - - 9 41 12 14 - <_> - 7 - - 14 33 5 5 - <_> - 7 - - 8 60 22 3 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 12 8 6 10 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 18 19 1 13 - <_> - 9 - - 14 3 16 1 - <_> - 1 - - 13 21 6 2 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 15 0 1 49 - <_> - 5 - - 1 1 18 48 - <_> - 2 - - 14 58 10 2 - <_> - 2 - - 7 51 11 5 - <_> - 1 - - 11 53 10 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 10 35 10 21 - <_> - 8 - - 11 54 12 2 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 11 50 5 6 - <_> - 3 - - 7 9 6 36 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 9 - - 29 48 1 10 - <_> - 2 - - 6 62 18 1 - <_> - 2 - - 9 49 11 7 - <_> - 5 - - 21 20 1 32 - <_> - 1 - - 11 19 1 4 - <_> - 1 - - 14 10 12 9 - <_> - 1 - - 12 24 6 2 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 4 - - 8 41 17 1 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 15 6 2 23 - <_> - 3 - - 16 3 13 48 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 11 19 11 1 - <_> - 7 - - 0 49 9 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 3 1 9 18 - <_> - 5 - - 8 56 19 4 - <_> - 1 - - 14 54 6 8 - <_> - 2 - - 19 52 10 6 - <_> - 4 - - 8 59 20 3 - <_> - 0 - - 18 51 12 9 - <_> - 4 - - 13 8 10 5 - <_> - 5 - - 26 35 3 2 - <_> - 0 - - 11 36 11 12 - <_> - 2 - - 19 18 4 13 - <_> - 4 - - 15 40 14 10 - <_> - 0 - - 10 57 7 3 - <_> - 2 - - 7 30 6 5 - <_> - 7 - - 2 61 22 2 - <_> - 0 - - 26 42 3 15 - <_> - 7 - - 12 5 7 12 - <_> - 5 - - 19 17 10 6 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 10 18 16 5 - <_> - 3 - - 10 8 1 50 - <_> - 9 - - 18 40 1 7 - <_> - 2 - - 14 25 3 9 - <_> - 8 - - 14 9 6 8 - <_> - 5 - - 22 39 2 10 - <_> - 8 - - 16 1 1 6 - <_> - 0 - - 17 19 2 2 - <_> - 2 - - 17 9 3 11 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 10 53 12 7 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 11 49 11 2 - <_> - 0 - - 29 43 2 17 - <_> - 0 - - 11 51 16 4 - <_> - 7 - - 25 51 2 6 - <_> - 2 - - 18 56 9 3 - <_> - 2 - - 8 49 16 5 - <_> - 4 - - 0 42 26 1 - <_> - 4 - - 2 16 11 24 - <_> - 1 - - 3 11 17 6 - <_> - 3 - - 11 6 8 10 - <_> - 0 - - 6 44 2 18 - <_> - 0 - - 1 7 12 21 - <_> - 9 - - 14 20 3 17 - <_> - 9 - - 14 0 10 7 - <_> - 1 - - 2 1 27 2 - <_> - 9 - - 14 18 3 9 - <_> - 4 - - 13 42 8 1 - <_> - 7 - - 28 3 2 22 - <_> - 3 - - 9 52 6 2 - <_> - 3 - - 6 11 9 11 - <_> - 1 - - 15 36 2 5 - <_> - 0 - - 18 21 2 5 - <_> - 1 - - 15 52 2 5 - <_> - 7 - - 15 62 3 1 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 20 12 4 28 - <_> - 2 - - 21 7 3 27 - <_> - 5 - - 25 10 6 50 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 4 26 10 17 - <_> - 2 - - 10 18 7 4 - <_> - 7 - - 11 9 17 11 - <_> - 7 - - 24 46 1 15 - <_> - 0 - - 13 35 3 16 - <_> - 4 - - 0 61 26 2 - <_> - 0 - - 10 58 16 4 - <_> - 3 - - 0 56 27 2 - <_> - 0 - - 11 42 11 2 - <_> - 8 - - 12 12 8 3 - <_> - 4 - - 18 8 3 19 - <_> - 8 - - 29 36 1 20 - <_> - 8 - - 14 9 6 8 - <_> - 9 - - 14 60 3 1 - <_> - 1 - - 18 17 2 9 - <_> - 9 - - 10 37 8 9 - <_> - 1 - - 8 56 21 1 - <_> - 3 - - 1 56 22 4 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 2 60 29 3 - <_> - 9 - - 11 57 11 3 - <_> - 1 - - 15 33 5 21 - <_> - 9 - - 13 16 6 7 - <_> - 1 - - 13 5 6 12 - <_> - 2 - - 13 26 8 4 - <_> - 4 - - 29 4 2 13 - <_> - 5 - - 17 9 5 10 - <_> - 0 - - 0 39 6 19 - <_> - 5 - - 14 24 3 4 - <_> - 2 - - 7 39 14 1 - <_> - 5 - - 27 14 2 35 - <_> - 8 - - 3 62 28 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 4 0 26 8 - <_> - 5 - - 9 8 13 9 - <_> - 2 - - 4 45 5 2 - <_> - 2 - - 9 28 5 14 - <_> - 7 - - 8 60 16 2 - <_> - 7 - - 17 30 3 4 - <_> - 7 - - 21 32 5 5 - <_> - 2 - - 16 17 8 9 - <_> - 2 - - 17 34 2 2 - <_> - 5 - - 19 16 10 22 - <_> - 4 - - 24 54 6 9 - <_> - 1 - - 10 53 20 9 - <_> - 5 - - 0 34 7 26 - <_> - 4 - - 0 58 22 5 - <_> - 1 - - 7 17 16 22 - <_> - 7 - - 0 51 9 4 - <_> - 3 - - 21 50 2 4 - <_> - 3 - - 10 21 1 13 - <_> - 7 - - 15 7 6 6 - <_> - 3 - - 13 26 4 9 - <_> - 0 - - 7 45 20 4 - <_> - 1 - - 22 5 1 54 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 8 57 15 2 - <_> - 4 - - 16 40 11 14 - <_> - 9 - - 15 18 6 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 9 1 7 - <_> - 1 - - 3 55 22 2 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 6 0 11 27 - <_> - 4 - - 12 4 11 22 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 10 62 14 1 - <_> - 0 - - 14 19 3 6 - <_> - 2 - - 11 4 8 13 - <_> - 2 - - 17 37 2 17 - <_> - 4 - - 12 47 11 1 - <_> - 2 - - 6 55 15 7 - <_> - 9 - - 28 22 1 2 - <_> - 2 - - 9 32 2 23 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 4 38 3 21 - <_> - 7 - - 14 12 1 28 - <_> - 9 - - 13 36 5 11 - <_> - 2 - - 5 11 17 8 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 16 45 5 1 - <_> - 1 - - 12 46 8 2 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 16 16 14 9 - <_> - 1 - - 18 20 3 7 - <_> - 7 - - 6 53 18 2 - <_> - 1 - - 7 19 18 3 - <_> - 1 - - 16 10 6 6 - <_> - 5 - - 10 29 1 33 - <_> - 5 - - 9 56 22 5 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 10 2 9 - <_> - 8 - - 8 7 1 8 - <_> - 9 - - 12 21 2 27 - <_> - 9 - - 9 2 19 11 - <_> - 1 - - 7 38 11 1 - <_> - 3 - - 4 14 6 18 - <_> - 7 - - 24 7 1 8 - <_> - 1 - - 20 46 11 8 - <_> - 2 - - 5 39 14 16 - <_> - 7 - - 9 3 7 9 - <_> - 0 - - 5 47 1 7 - <_> - 1 - - 13 21 6 2 - <_> - 5 - - 16 10 6 3 - <_> - 2 - - 11 12 12 2 - <_> - 5 - - 6 0 24 1 - <_> - 5 - - 2 18 22 3 - <_> - 9 - - 17 16 3 18 - <_> - 0 - - 14 32 2 3 - <_> - 2 - - 10 34 5 3 - <_> - 2 - - 14 25 3 9 - <_> - 1 - - 6 54 8 4 - <_> - 5 - - 4 31 15 5 - <_> - 0 - - 29 44 1 17 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 21 13 3 42 - <_> - 2 - - 1 24 30 23 - <_> - 4 - - 6 39 14 11 - <_> - 2 - - 11 59 20 3 - <_> - 9 - - 30 47 1 2 - <_> - 3 - - 5 48 13 6 - <_> - 1 - - 5 41 21 7 - <_> - 1 - - 26 8 2 22 - <_> - 5 - - 9 61 18 2 - <_> - 2 - - 9 22 16 24 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 23 9 7 8 - <_> - 9 - - 12 10 6 43 - <_> - 9 - - 11 14 11 9 - <_> - 9 - - 6 9 20 2 - <_> - 3 - - 24 44 1 17 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 17 3 4 15 - <_> - 9 - - 11 1 18 2 - <_> - 8 - - 16 2 2 4 - <_> - 7 - - 5 10 10 3 - <_> - 0 - - 0 48 3 7 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 16 11 1 1 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 19 20 3 15 - <_> - 5 - - 15 20 15 4 - <_> - 5 - - 19 19 4 43 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 6 44 20 9 - <_> - 7 - - 5 49 4 6 - <_> - 8 - - 17 41 13 22 - <_> - 5 - - 12 56 14 7 - <_> - 4 - - 14 8 5 1 - <_> - 7 - - 12 0 9 1 - <_> - 2 - - 19 61 1 1 - <_> - 0 - - 12 51 10 3 - <_> - 0 - - 4 4 23 4 - <_> - 5 - - 13 30 4 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 15 8 16 6 - <_> - 0 - - 2 53 9 7 - <_> - 7 - - 4 62 23 1 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 11 26 13 22 - <_> - 4 - - 8 14 3 16 - <_> - 0 - - 21 28 1 3 - <_> - 1 - - 17 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 30 22 1 2 - <_> - 8 - - 3 13 3 3 - <_> - 9 - - 12 29 7 19 - <_> - 8 - - 12 11 8 1 - <_> - 3 - - 2 56 24 1 - <_> - 7 - - 19 60 11 1 - <_> - 0 - - 26 42 3 15 - <_> - 5 - - 21 18 2 12 - <_> - 4 - - 4 43 26 1 - <_> - 0 - - 12 50 14 5 - <_> - 8 - - 13 17 5 3 - <_> - 0 - - 17 18 3 1 - <_> - 5 - - 19 8 4 10 - <_> - 4 - - 0 61 26 2 - <_> - 1 - - 14 53 3 9 - <_> - 7 - - 8 36 1 1 - <_> - 4 - - 26 30 3 30 - <_> - 2 - - 9 37 14 13 - <_> - 3 - - 0 20 2 43 - <_> - 4 - - 10 8 14 4 - <_> - 2 - - 19 61 7 2 - <_> - 2 - - 9 47 8 9 - <_> - 3 - - 10 4 1 53 - <_> - 5 - - 13 3 2 38 - <_> - 0 - - 11 7 4 10 - <_> - 9 - - 30 17 1 2 - <_> - 2 - - 17 13 6 14 - <_> - 7 - - 14 25 4 5 - <_> - 1 - - 11 22 11 2 - <_> - 7 - - 23 53 4 1 - <_> - 8 - - 2 4 19 15 - <_> - 5 - - 2 59 24 1 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 8 21 5 11 - <_> - 9 - - 12 28 8 8 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 16 45 3 6 - <_> - 8 - - 17 50 6 8 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 11 2 17 33 - <_> - 2 - - 30 27 1 34 - <_> - 5 - - 12 29 1 16 - <_> - 5 - - 19 42 5 5 - <_> - 7 - - 0 51 4 4 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 6 58 23 1 - <_> - 3 - - 7 8 15 28 - <_> - 1 - - 15 8 4 8 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 7 27 8 3 - <_> - 2 - - 11 39 19 6 - <_> - 5 - - 26 30 2 12 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 29 2 1 7 - <_> - 2 - - 19 39 2 3 - <_> - 0 - - 15 40 15 2 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 12 57 6 3 - <_> - 1 - - 11 39 7 24 - <_> - 1 - - 9 56 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 27 61 2 1 - <_> - 7 - - 2 55 28 3 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 8 45 5 12 - <_> - 7 - - 16 34 2 4 - <_> - 2 - - 2 50 5 1 - <_> - 5 - - 13 47 8 8 - <_> - 5 - - 21 56 5 5 - <_> - 5 - - 19 56 3 7 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 10 20 11 6 - <_> - 9 - - 23 23 1 9 - <_> - 5 - - 17 25 10 18 - <_> - 7 - - 7 23 3 8 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 10 8 1 50 - <_> - 8 - - 1 32 8 15 - <_> - 7 - - 14 59 4 1 - <_> - 3 - - 20 38 2 11 - <_> - 7 - - 0 4 22 6 - <_> - 0 - - 6 20 7 11 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 0 42 11 13 - <_> - 4 - - 10 9 3 28 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 18 2 4 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 14 8 6 11 - <_> - 5 - - 13 40 2 8 - <_> - 1 - - 13 21 6 2 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 17 39 3 7 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 12 58 15 2 - <_> - 2 - - 9 43 7 12 - <_> - 7 - - 17 25 1 5 - <_> - 4 - - 12 41 9 2 - <_> - 2 - - 17 3 4 15 - <_> - 7 - - 28 28 3 3 - <_> - 0 - - 25 44 5 3 - <_> - 0 - - 17 35 8 8 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 29 1 1 5 - <_> - 1 - - 13 55 3 2 - <_> - 5 - - 10 5 18 31 - <_> - 4 - - 3 18 3 44 - <_> - 2 - - 3 56 15 7 - <_> - 7 - - 30 44 1 13 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 11 0 8 24 - <_> - 5 - - 13 15 2 10 - <_> - 1 - - 10 15 13 1 - <_> - 4 - - 11 12 7 4 - <_> - 7 - - 10 10 20 2 - <_> - 7 - - 22 51 7 4 - <_> - 5 - - 14 17 6 8 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 18 21 6 5 - <_> - 7 - - 6 57 4 1 - <_> - 2 - - 17 17 4 10 - <_> - 2 - - 13 18 1 1 - <_> - 0 - - 10 54 5 4 - <_> - 7 - - 0 29 17 13 - <_> - 2 - - 8 46 12 8 - <_> - 2 - - 7 10 3 26 - <_> - 1 - - 30 38 1 18 - <_> - 2 - - 16 60 14 1 - <_> - 1 - - 2 43 1 8 - <_> - 2 - - 9 36 21 9 - <_> - 7 - - 4 47 18 2 - <_> - 7 - - 6 46 1 5 - <_> - 2 - - 5 37 2 11 - <_> - 1 - - 11 46 1 14 - <_> - 1 - - 26 8 5 20 - <_> - 2 - - 16 14 2 8 - <_> - 2 - - 11 12 12 2 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 6 54 15 4 - <_> - 2 - - 8 52 16 4 - <_> - 7 - - 18 40 4 7 - <_> - 3 - - 0 56 27 2 - <_> - 1 - - 5 31 15 18 - <_> - 9 - - 16 18 2 1 - <_> - 7 - - 4 59 24 1 - <_> - 5 - - 1 57 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 0 4 6 27 - <_> - 5 - - 29 19 2 43 - <_> - 2 - - 15 22 5 6 - <_> - 5 - - 18 48 11 7 - <_> - 0 - - 27 48 4 13 - <_> - 3 - - 6 4 20 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 41 23 14 - <_> - 7 - - 27 4 4 14 - <_> - 1 - - 10 52 10 5 - <_> - 9 - - 29 61 2 1 - <_> - 7 - - 14 25 4 3 - <_> - 1 - - 1 5 15 13 - <_> - 2 - - 19 35 2 3 - <_> - 4 - - 5 18 23 5 - <_> - 9 - - 15 18 6 4 - <_> - 9 - - 23 14 8 17 - <_> - 8 - - 12 8 6 28 - <_> - 8 - - 25 13 3 6 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 20 3 6 52 - <_> - 3 - - 5 49 21 4 - <_> - 1 - - 12 40 6 6 - <_> - 2 - - 11 54 20 9 - <_> - 0 - - 13 36 9 8 - <_> - 1 - - 10 62 13 1 - <_> - 0 - - 12 24 15 39 - <_> - 5 - - 14 9 9 4 - <_> - 0 - - 1 21 2 33 - <_> - 2 - - 28 7 3 23 - <_> - 1 - - 14 53 10 4 - <_> - 3 - - 29 42 2 9 - <_> - 4 - - 13 35 9 27 - <_> - 5 - - 18 19 6 5 - <_> - 0 - - 17 22 12 12 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 42 19 11 - <_> - 5 - - 19 56 6 4 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 5 6 12 - <_> - 5 - - 3 22 18 15 - <_> - 1 - - 15 21 6 7 - <_> - 2 - - 3 16 19 29 - <_> - 5 - - 13 15 5 40 - <_> - 3 - - 16 32 3 10 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 10 29 5 20 - <_> - 8 - - 18 34 3 11 - <_> - 9 - - 26 47 2 4 - <_> - 1 - - 8 18 1 4 - <_> - 3 - - 21 43 4 11 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 9 37 13 16 - <_> - 3 - - 5 56 17 2 - <_> - 3 - - 11 53 9 1 - <_> - 4 - - 10 39 2 12 - <_> - 1 - - 8 52 2 4 - <_> - 3 - - 0 20 2 43 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 22 6 3 - <_> - 5 - - 15 0 15 30 - <_> - 0 - - 21 30 7 8 - <_> - 5 - - 19 19 4 32 - <_> - 3 - - 21 45 1 10 - <_> - 0 - - 15 51 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 1 44 17 16 - <_> - 2 - - 18 13 2 12 - <_> - 0 - - 17 18 3 1 - <_> - 1 - - 11 55 7 5 - <_> - 2 - - 13 58 2 5 - <_> - 3 - - 10 15 1 42 - <_> - 5 - - 0 25 5 15 - <_> - 9 - - 16 17 2 6 - <_> - 2 - - 8 54 23 5 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 7 48 24 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 2 44 14 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 43 3 7 - <_> - 8 - - 13 12 1 9 - <_> - 3 - - 2 46 4 5 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 11 5 17 4 - <_> - 7 - - 22 57 3 1 - <_> - 4 - - 10 20 21 4 - <_> - 5 - - 12 57 18 3 - <_> - 9 - - 10 4 6 11 - <_> - 0 - - 13 45 3 4 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 8 45 18 1 - <_> - 4 - - 12 42 8 8 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 14 16 5 33 - <_> - 8 - - 15 10 13 52 - <_> - 3 - - 15 9 15 1 - <_> - 8 - - 27 61 1 1 - <_> - 9 - - 27 0 1 12 - <_> - 2 - - 14 16 4 5 - <_> - 9 - - 14 10 2 16 - <_> - 3 - - 8 11 6 20 - <_> - 7 - - 24 19 1 9 - <_> - 0 - - 14 43 6 2 - <_> - 1 - - 12 15 1 26 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 2 60 27 1 - <_> - 1 - - 2 14 21 2 - <_> - 7 - - 7 23 13 5 - <_> - 4 - - 24 56 2 7 - <_> - 8 - - 11 13 5 1 - <_> - 0 - - 10 42 12 3 - <_> - 8 - - 19 0 1 23 - <_> - 5 - - 9 61 20 2 - <_> - 0 - - 19 50 8 10 - <_> - 1 - - 16 55 9 2 - <_> - 0 - - 13 33 5 4 - <_> - 3 - - 18 27 8 9 - <_> - 3 - - 28 32 3 21 - <_> - 4 - - 15 42 4 4 - <_> - 2 - - 16 2 8 16 - <_> - 2 - - 7 2 1 47 - <_> - 7 - - 21 61 10 2 - <_> - 2 - - 29 31 2 32 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 30 15 1 43 - <_> - 9 - - 24 34 1 4 - <_> - 2 - - 7 51 11 5 - <_> - 0 - - 22 42 1 11 - <_> - 5 - - 3 62 20 1 - <_> - 1 - - 7 20 11 3 - <_> - 3 - - 2 21 9 2 - <_> - 2 - - 25 34 1 18 - <_> - 5 - - 19 14 5 33 - <_> - 7 - - 28 13 1 1 - <_> - 5 - - 1 0 15 44 - <_> - 9 - - 12 32 1 10 - <_> - 7 - - 1 40 14 8 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 11 8 13 1 - <_> - 0 - - 27 47 1 15 - <_> - 4 - - 8 16 14 7 - <_> - 1 - - 8 55 8 3 - <_> - 0 - - 0 55 28 4 - <_> - 4 - - 7 56 17 4 - <_> - 3 - - 5 13 20 8 - <_> - 1 - - 3 19 4 19 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 16 18 7 3 - <_> - 4 - - 1 17 26 3 - <_> - 1 - - 11 53 10 4 - <_> - 7 - - 29 2 2 16 - <_> - 2 - - 6 55 21 5 - <_> - 1 - - 29 25 2 3 - <_> - 2 - - 10 50 10 4 - <_> - 4 - - 13 38 2 4 - <_> - 7 - - 24 46 1 9 - <_> - 9 - - 12 17 4 3 - <_> - 9 - - 4 9 6 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 9 7 5 1 - <_> - 7 - - 27 41 2 10 - <_> - 8 - - 11 16 3 4 - <_> - 5 - - 14 29 5 7 - <_> - 3 - - 9 24 2 33 - <_> - 5 - - 23 27 4 10 - <_> - 8 - - 3 10 28 46 - <_> - 0 - - 23 46 2 5 - <_> - 5 - - 15 8 9 19 - <_> - 4 - - 10 13 14 37 - <_> - 0 - - 4 57 23 3 - <_> - 1 - - 4 42 26 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 5 61 24 1 - <_> - 4 - - 14 49 7 12 - <_> - 0 - - 11 49 11 2 - <_> - 7 - - 14 10 3 2 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 11 41 4 9 - <_> - 5 - - 21 2 1 52 - <_> - 1 - - 14 32 9 6 - <_> - 2 - - 10 55 15 5 - <_> - 1 - - 11 28 20 29 - <_> - 1 - - 7 22 20 24 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 15 16 2 10 - <_> - 9 - - 13 8 5 13 - <_> - 3 - - 1 49 18 7 - <_> - 1 - - 11 21 14 3 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 16 39 4 1 - <_> - 9 - - 16 11 3 3 - <_> - 9 - - 16 13 3 15 - <_> - 5 - - 10 0 13 3 - <_> - 3 - - 12 52 19 7 - <_> - 8 - - 8 45 12 3 - <_> - 0 - - 12 10 11 6 - <_> - 3 - - 19 42 9 13 - <_> - 5 - - 15 57 10 3 - <_> - 0 - - 17 51 7 5 - <_> - 1 - - 12 24 6 2 - <_> - 7 - - 11 61 3 1 - <_> - 1 - - 8 18 15 8 - <_> - 4 - - 15 13 6 5 - <_> - 3 - - 17 16 6 25 - <_> - 4 - - 15 42 4 5 - <_> - 4 - - 16 25 12 21 - <_> - 4 - - 11 37 3 11 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 27 49 4 6 - <_> - 8 - - 30 12 1 20 - <_> - 2 - - 0 21 1 6 - <_> - 3 - - 7 15 10 11 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 21 2 3 7 - <_> - 1 - - 15 8 4 8 - <_> - 9 - - 28 2 3 1 - <_> - 7 - - 15 10 13 4 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 8 34 11 3 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 14 30 9 27 - <_> - 1 - - 16 7 4 26 - <_> - 3 - - 28 45 3 16 - <_> - 0 - - 14 49 16 5 - <_> - 0 - - 11 15 1 41 - <_> - 0 - - 6 50 6 10 - <_> - 1 - - 11 22 11 2 - <_> - 3 - - 30 60 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 16 5 2 - <_> - 9 - - 7 35 11 6 - <_> - 2 - - 11 39 19 6 - <_> - 3 - - 18 40 5 17 - <_> - 5 - - 12 52 7 10 - <_> - 3 - - 3 47 24 8 - <_> - 3 - - 0 22 5 24 - <_> - 3 - - 22 43 5 10 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 8 1 - <_> - 4 - - 12 5 9 15 - <_> - 4 - - 18 14 3 38 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 6 4 23 2 - <_> - 9 - - 9 19 12 2 - <_> - 9 - - 5 10 24 2 - <_> - 8 - - 15 17 2 35 - <_> - 0 - - 3 43 1 9 - <_> - 7 - - 7 50 3 3 - <_> - 5 - - 15 29 5 3 - <_> - 0 - - 20 25 7 10 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 0 23 28 17 - <_> - 7 - - 6 60 21 3 - <_> - 1 - - 10 30 15 2 - <_> - 5 - - 21 57 3 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 5 54 18 3 - <_> - 2 - - 7 51 11 5 - <_> - 8 - - 1 0 19 6 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 13 44 1 4 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 18 41 2 10 - <_> - 8 - - 2 61 3 1 - <_> - 9 - - 18 2 1 50 - <_> - 9 - - 0 60 16 3 - <_> - 2 - - 19 25 10 2 - <_> - 7 - - 3 23 5 13 - <_> - 2 - - 14 23 3 6 - <_> - 9 - - 28 46 2 2 - <_> - 9 - - 8 50 5 6 - <_> - 2 - - 10 2 10 28 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 20 0 2 32 - <_> - 5 - - 4 55 17 8 - <_> - 0 - - 21 0 8 3 - <_> - 3 - - 8 22 5 2 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 14 0 12 1 - <_> - 7 - - 20 58 4 1 - <_> - 2 - - 26 47 1 4 - <_> - 1 - - 2 55 27 1 - <_> - 2 - - 19 35 2 3 - <_> - 1 - - 9 13 7 27 - <_> - 3 - - 12 5 1 19 - <_> - 1 - - 12 15 1 26 - <_> - 2 - - 11 16 2 2 - <_> - 7 - - 13 12 10 1 - <_> - 0 - - 21 20 1 12 - <_> - 8 - - 0 62 15 1 - <_> - 8 - - 12 11 8 1 - <_> - 7 - - 11 60 6 1 - <_> - 8 - - 20 4 1 4 - <_> - 3 - - 11 62 9 1 - <_> - 0 - - 16 18 2 1 - <_> - 7 - - 2 62 13 1 - <_> - 9 - - 27 61 4 1 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 11 40 8 11 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 0 13 15 37 - <_> - 0 - - 8 50 2 5 - <_> - 3 - - 9 42 10 10 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 8 18 1 4 - <_> - 2 - - 21 56 3 6 - <_> - 1 - - 5 56 21 1 - <_> - 5 - - 1 25 5 24 - <_> - 5 - - 10 56 3 1 - <_> - 4 - - 0 17 15 7 - <_> - 7 - - 26 33 1 6 - <_> - 4 - - 10 18 16 5 - <_> - 2 - - 20 15 4 11 - <_> - 0 - - 19 17 3 7 - <_> - 5 - - 18 1 10 22 - <_> - 5 - - 18 16 8 12 - <_> - 5 - - 22 19 1 13 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 8 51 17 4 - <_> - 7 - - 0 52 28 10 - <_> - 2 - - 14 16 8 3 - <_> - 7 - - 14 25 4 3 - <_> - 7 - - 27 12 1 8 - <_> - 0 - - 11 36 14 16 - <_> - 7 - - 30 21 1 11 - <_> - 0 - - 25 39 2 8 - <_> - 9 - - 0 1 24 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 9 5 2 13 - <_> - 2 - - 6 52 15 3 - <_> - 9 - - 24 44 2 1 - <_> - 4 - - 2 61 4 2 - <_> - 5 - - 19 54 3 3 - <_> - 5 - - 19 48 6 8 - <_> - 9 - - 15 37 5 11 - <_> - 0 - - 4 46 2 7 - <_> - 3 - - 4 23 7 6 - <_> - 4 - - 13 8 8 9 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 8 1 17 - <_> - 8 - - 14 17 4 2 - <_> - 1 - - 14 46 4 4 - <_> - 5 - - 7 60 20 1 - <_> - 2 - - 7 39 16 11 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 17 9 5 12 - <_> - 1 - - 9 56 8 1 - <_> - 5 - - 30 46 1 14 - <_> - 0 - - 10 37 20 2 - <_> - 0 - - 12 26 3 14 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 14 53 3 9 - <_> - 9 - - 16 15 1 22 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 11 19 11 1 - <_> - 5 - - 17 9 5 10 - <_> - 8 - - 9 3 8 2 - <_> - 8 - - 12 11 8 1 - <_> - 5 - - 26 42 3 19 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 14 41 12 19 - <_> - 4 - - 13 40 4 6 - <_> - 7 - - 6 55 7 2 - <_> - 8 - - 18 54 12 3 - <_> - 2 - - 1 38 25 11 - <_> - 7 - - 4 0 21 42 - <_> - 0 - - 12 0 8 11 - <_> - 4 - - 14 23 4 11 - <_> - 0 - - 18 21 2 5 - <_> - 5 - - 19 21 10 1 - <_> - 9 - - 12 0 2 12 - <_> - 7 - - 12 60 7 2 - <_> - 2 - - 26 45 3 1 - <_> - 3 - - 4 30 21 5 - <_> - 2 - - 6 57 23 2 - <_> - 5 - - 15 50 6 5 - <_> - 1 - - 23 44 2 7 - <_> - 1 - - 21 27 5 30 - <_> - 1 - - 15 55 2 1 - <_> - 9 - - 0 16 24 45 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 4 30 2 10 - <_> - 2 - - 23 8 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 1 - - 6 0 14 28 - <_> - 3 - - 6 38 3 12 - <_> - 0 - - 0 48 3 7 - <_> - 9 - - 12 14 3 12 - <_> - 0 - - 13 8 7 8 - <_> - 3 - - 11 41 14 17 - <_> - 0 - - 12 50 16 6 - <_> - 3 - - 15 47 7 11 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 11 46 10 4 - <_> - 0 - - 13 36 9 8 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 15 18 3 6 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 6 23 7 8 - <_> - 3 - - 11 26 6 3 - <_> - 0 - - 12 19 9 11 - <_> - 8 - - 19 41 2 1 - <_> - 8 - - 18 11 9 24 - <_> - 3 - - 15 28 2 3 - <_> - 3 - - 7 50 11 6 - <_> - 4 - - 20 6 5 10 - <_> - 4 - - 14 1 7 21 - <_> - 1 - - 16 54 2 4 - <_> - 9 - - 28 48 1 7 - <_> - 4 - - 14 56 7 4 - <_> - 5 - - 19 9 3 41 - <_> - 9 - - 0 52 14 9 - <_> - 2 - - 18 54 10 7 - <_> - 9 - - 11 8 8 49 - <_> - 8 - - 11 13 5 1 - <_> - 8 - - 29 12 2 9 - <_> - 7 - - 28 4 3 24 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 14 43 6 2 - <_> - 0 - - 11 7 4 10 - <_> - 0 - - 12 1 2 5 - <_> - 1 - - 12 24 6 2 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 2 - - 19 30 1 8 - <_> - 7 - - 20 61 1 1 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 16 51 6 9 - <_> - 2 - - 7 51 13 5 - <_> - 4 - - 16 19 4 2 - <_> - 1 - - 15 33 5 21 - <_> - 1 - - 20 19 3 2 - <_> - 5 - - 8 31 4 27 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 26 8 5 20 - <_> - 0 - - 6 3 21 5 - <_> - 0 - - 9 33 15 6 - <_> - 1 - - 14 56 14 1 - <_> - 2 - - 7 59 2 2 - <_> - 4 - - 2 54 12 8 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 2 - - 10 42 13 9 - <_> - 1 - - 29 36 1 3 - <_> - 3 - - 22 2 4 31 - <_> - 0 - - 19 32 4 15 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 0 47 1 7 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 8 56 9 7 - <_> - 2 - - 0 38 24 20 - <_> - 9 - - 17 31 1 6 - <_> - 9 - - 14 59 1 2 - <_> - 4 - - 17 38 1 4 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 3 10 26 10 - <_> - 0 - - 7 12 14 35 - <_> - 3 - - 20 42 2 6 - <_> - 0 - - 10 43 6 5 - <_> - 1 - - 10 55 14 1 - <_> - 8 - - 9 48 13 13 - <_> - 8 - - 17 11 1 2 - <_> - 8 - - 9 57 12 5 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 17 9 5 10 - <_> - 9 - - 9 43 12 1 - <_> - 3 - - 24 46 7 7 - <_> - 4 - - 29 29 2 8 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 10 53 15 5 - <_> - 5 - - 4 62 16 1 - <_> - 4 - - 25 52 4 8 - <_> - 0 - - 11 52 17 4 - <_> - 4 - - 9 0 1 43 - <_> - 5 - - 11 34 2 3 - <_> - 2 - - 9 41 11 1 - <_> - 4 - - 9 61 13 2 - <_> - 3 - - 28 25 1 34 - <_> - 2 - - 19 26 7 1 - <_> - 3 - - 8 18 8 1 - <_> - 5 - - 2 35 19 26 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 25 23 3 9 - <_> - 0 - - 14 41 1 18 - <_> - 2 - - 12 58 15 2 - <_> - 7 - - 26 60 3 3 - <_> - 0 - - 24 31 3 15 - <_> - 7 - - 5 7 6 10 - <_> - 1 - - 12 8 8 4 - <_> - 5 - - 20 42 4 11 - <_> - 1 - - 16 5 8 2 - <_> - 7 - - 15 6 2 12 - <_> - 9 - - 12 1 19 1 - <_> - 9 - - 10 16 4 32 - <_> - 3 - - 11 41 14 17 - <_> - 8 - - 9 12 10 27 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 7 2 3 8 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 13 5 6 12 - <_> - 0 - - 28 19 2 43 - <_> - 4 - - 3 23 1 16 - <_> - 5 - - 18 29 5 25 - <_> - 2 - - 25 55 5 8 - <_> - 4 - - 11 34 11 14 - <_> - 7 - - 6 59 9 4 - <_> - 5 - - 25 45 3 15 - <_> - 8 - - 14 9 6 8 - <_> - 8 - - 29 28 1 18 - <_> - 5 - - 21 1 5 13 - <_> - 8 - - 19 41 2 1 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 29 31 1 4 - <_> - 0 - - 5 61 9 2 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 19 32 1 1 - <_> - 8 - - 5 5 6 15 - <_> - 0 - - 13 49 9 4 - <_> - 4 - - 13 46 4 7 - <_> - 4 - - 14 13 9 7 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 8 36 16 11 - <_> - 9 - - 14 24 6 10 - <_> - 3 - - 0 54 31 4 - <_> - 1 - - 17 43 4 9 - <_> - 5 - - 20 16 3 22 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 14 17 6 39 - <_> - 0 - - 11 42 11 2 - <_> - 2 - - 17 17 1 20 - <_> - 2 - - 0 32 10 15 - <_> - 2 - - 16 57 7 6 - <_> - 5 - - 14 9 13 13 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 20 17 2 14 - <_> - 3 - - 23 35 3 14 - <_> - 2 - - 16 8 1 24 - <_> - 3 - - 3 19 10 27 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 6 13 6 23 - <_> - 1 - - 17 16 2 31 - <_> - 2 - - 13 10 13 7 - <_> - 5 - - 10 20 3 33 - <_> - 1 - - 15 52 2 5 - <_> - 2 - - 9 6 17 18 - <_> - 2 - - 30 20 1 11 - <_> - 3 - - 29 7 1 28 - <_> - 7 - - 6 5 20 4 - <_> - 7 - - 6 49 4 2 - <_> - 4 - - 13 7 5 4 - <_> - 3 - - 20 42 2 6 - <_> - 1 - - 12 5 2 49 - <_> - 3 - - 7 9 11 33 - <_> - 7 - - 0 5 22 6 - <_> - 3 - - 3 36 12 1 - <_> - 0 - - 17 33 9 11 - <_> - 0 - - 17 27 5 9 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 16 55 9 2 - <_> - 4 - - 10 41 8 7 - <_> - 4 - - 11 1 8 16 - <_> - 9 - - 10 6 15 8 - <_> - 2 - - 6 4 24 4 - <_> - 9 - - 9 19 12 2 - <_> - 5 - - 13 8 11 4 - <_> - 0 - - 1 19 2 38 - <_> - 5 - - 14 36 1 8 - <_> - 7 - - 22 53 9 1 - <_> - 5 - - 11 5 4 35 - <_> - 5 - - 18 19 6 5 - <_> - 1 - - 17 33 3 24 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 8 42 2 4 - <_> - 5 - - 16 57 4 6 - <_> - 8 - - 11 8 11 6 - <_> - 4 - - 9 18 5 8 - <_> - 2 - - 17 40 5 5 - <_> - 9 - - 29 19 1 9 - <_> - 0 - - 24 5 5 16 - <_> - 9 - - 18 35 2 12 - <_> - 9 - - 2 9 5 11 - <_> - 7 - - 24 49 2 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 14 5 1 3 - <_> - 5 - - 10 55 5 4 - <_> - 1 - - 9 52 11 10 - <_> - 0 - - 7 56 19 4 - <_> - 4 - - 9 37 17 1 - <_> - 0 - - 9 33 15 6 - <_> - 5 - - 13 31 1 10 - <_> - 5 - - 20 3 2 24 - <_> - 7 - - 9 43 18 2 - <_> - 7 - - 2 12 18 1 - <_> - 0 - - 14 26 2 3 - <_> - 3 - - 4 26 9 4 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 5 62 11 1 - <_> - 3 - - 2 9 18 8 - <_> - 4 - - 11 28 20 35 - <_> - 5 - - 15 43 10 10 - <_> - 7 - - 24 49 2 2 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 16 9 1 27 - <_> - 3 - - 11 20 19 26 - <_> - 2 - - 22 55 9 8 - <_> - 3 - - 0 40 2 15 - <_> - 3 - - 8 8 5 27 - <_> - 7 - - 18 11 1 1 - <_> - 9 - - 12 20 2 8 - <_> - 4 - - 12 9 13 5 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 22 45 1 10 - <_> - 8 - - 11 13 5 1 - <_> - 3 - - 20 38 2 17 - <_> - 5 - - 17 8 6 6 - <_> - 3 - - 15 25 3 7 - <_> - 4 - - 10 1 13 19 - <_> - 1 - - 13 14 17 2 - <_> - 1 - - 12 3 6 3 - <_> - 8 - - 5 61 1 1 - <_> - 8 - - 14 5 1 3 - <_> - 9 - - 21 62 7 1 - <_> - 4 - - 18 41 1 8 - <_> - 1 - - 12 54 11 7 - <_> - 2 - - 9 27 1 28 - <_> - 8 - - 8 12 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 14 11 3 45 - <_> - 9 - - 13 4 10 3 - <_> - 0 - - 22 3 1 7 - <_> - 9 - - 16 15 1 22 - <_> - 2 - - 12 60 19 3 - <_> - 2 - - 8 41 15 1 - <_> - 3 - - 3 50 25 6 - <_> - 4 - - 15 9 14 15 - <_> - 2 - - 12 5 5 14 - <_> - 2 - - 15 46 5 12 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 10 47 18 3 - <_> - 5 - - 6 35 1 17 - <_> - 9 - - 24 4 5 3 - <_> - 5 - - 14 1 15 5 - <_> - 9 - - 19 20 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 0 53 3 1 - <_> - 3 - - 10 8 5 8 - <_> - 8 - - 29 30 1 11 - <_> - 8 - - 13 26 15 1 - <_> - 3 - - 29 42 2 15 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 14 35 8 5 - <_> - 5 - - 10 47 11 11 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 6 49 4 5 - <_> - 9 - - 10 29 12 18 - <_> - 5 - - 9 60 18 3 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 28 16 3 18 - <_> - 3 - - 19 41 1 21 - <_> - 0 - - 18 35 3 4 - <_> - 0 - - 13 18 3 1 - <_> - 0 - - 1 23 14 6 - <_> - 0 - - 28 49 3 2 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 11 27 8 3 - <_> - 0 - - 11 48 14 5 - <_> - 5 - - 14 62 12 1 - <_> - 4 - - 20 6 1 43 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 11 13 17 1 - <_> - 3 - - 30 43 1 3 - <_> - 0 - - 4 53 2 2 - <_> - 7 - - 2 55 14 2 - <_> - 8 - - 22 32 1 22 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 8 12 15 35 - <_> - 7 - - 8 1 13 46 - <_> - 5 - - 12 33 4 5 - <_> - 7 - - 9 62 16 1 - <_> - 5 - - 7 58 14 3 - <_> - 2 - - 15 0 10 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 2 55 6 1 - <_> - 8 - - 17 6 2 1 - <_> - 1 - - 15 36 1 17 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 13 15 1 3 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 0 14 2 41 - <_> - 5 - - 7 37 2 24 - <_> - 3 - - 10 1 1 27 - <_> - 4 - - 13 44 7 9 - <_> - 9 - - 30 3 1 9 - <_> - 1 - - 4 34 25 1 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 11 49 16 2 - <_> - 2 - - 8 52 17 11 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 1 2 2 32 - <_> - 5 - - 20 15 3 46 - <_> - 7 - - 7 14 3 26 - <_> - 3 - - 15 28 2 3 - <_> - 2 - - 6 51 8 6 - <_> - 3 - - 2 50 5 2 - <_> - 5 - - 3 47 14 1 - <_> - 1 - - 29 61 2 1 - <_> - 1 - - 20 47 3 14 - <_> - 2 - - 16 45 3 6 - <_> - 4 - - 0 61 3 2 - <_> - 1 - - 18 46 3 1 - <_> - 2 - - 13 38 2 18 - <_> - 3 - - 4 0 12 1 - <_> - 3 - - 5 10 9 31 - <_> - 9 - - 25 51 3 1 - <_> - 5 - - 26 33 2 13 - <_> - 5 - - 18 18 9 10 - <_> - 3 - - 13 23 2 16 - <_> - 1 - - 8 53 7 6 - <_> - 3 - - 27 38 3 21 - <_> - 7 - - 5 59 17 2 - <_> - 4 - - 0 23 2 8 - <_> - 7 - - 23 54 1 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 13 8 3 11 - <_> - 7 - - 14 20 3 3 - <_> - 1 - - 18 17 2 9 - <_> - 5 - - 19 56 4 7 - <_> - 5 - - 14 49 9 5 - <_> - 3 - - 8 22 3 10 - <_> - 4 - - 12 39 3 3 - <_> - 1 - - 16 49 11 3 - <_> - 9 - - 6 52 1 8 - <_> - 4 - - 27 23 2 13 - <_> - 4 - - 4 58 19 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 7 30 17 17 - <_> - 0 - - 2 38 3 21 - <_> - 4 - - 16 7 3 17 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 18 29 5 13 - <_> - 9 - - 15 27 2 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 3 53 5 1 - <_> - 8 - - 26 27 1 7 - <_> - 4 - - 11 5 2 48 - <_> - 3 - - 10 4 1 53 - <_> - 1 - - 4 42 26 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 12 39 8 10 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 9 62 8 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 23 36 3 22 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 3 59 18 2 - <_> - 4 - - 18 39 1 2 - <_> - 7 - - 8 8 22 20 - <_> - 7 - - 2 53 10 2 - <_> - 5 - - 16 26 7 15 - <_> - 4 - - 0 62 24 1 - <_> - 1 - - 4 56 7 7 - <_> - 9 - - 29 0 1 11 - <_> - 0 - - 12 33 5 2 - <_> - 5 - - 7 32 8 7 - <_> - 4 - - 5 18 23 5 - <_> - 3 - - 23 49 2 1 - <_> - 0 - - 11 49 11 6 - <_> - 5 - - 21 20 1 6 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 14 1 3 13 - <_> - 3 - - 19 48 1 15 - <_> - 4 - - 1 17 26 3 - <_> - 5 - - 0 24 30 26 - <_> - 5 - - 15 58 12 4 - <_> - 0 - - 11 49 11 2 - <_> - 1 - - 6 21 13 20 - <_> - 3 - - 11 9 15 7 - <_> - 2 - - 11 56 7 4 - <_> - 1 - - 16 23 2 5 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 2 15 17 1 - <_> - 2 - - 11 17 6 3 - <_> - 1 - - 20 13 1 22 - <_> - 5 - - 17 9 5 10 - <_> - 2 - - 16 13 8 8 - <_> - 5 - - 14 0 12 17 - <_> - 5 - - 10 38 14 3 - <_> - 7 - - 21 40 1 7 - <_> - 5 - - 12 34 7 6 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 22 5 2 - <_> - 8 - - 5 5 6 15 - <_> - 1 - - 10 15 4 20 - <_> - 9 - - 13 13 3 21 - <_> - 4 - - 28 20 1 16 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 8 52 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 16 18 7 3 - <_> - 7 - - 1 51 12 2 - <_> - 7 - - 12 60 2 2 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 10 56 10 1 - <_> - 2 - - 29 1 2 21 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 19 41 1 6 - <_> - 4 - - 1 51 7 12 - <_> - 0 - - 22 19 1 33 - <_> - 5 - - 16 57 5 6 - <_> - 2 - - 5 37 2 11 - <_> - 2 - - 10 42 9 16 - <_> - 7 - - 2 53 10 2 - <_> - 4 - - 8 45 18 1 - <_> - 5 - - 17 15 9 10 - <_> - 3 - - 25 60 3 1 - <_> - 3 - - 29 22 2 11 - <_> - 9 - - 9 56 18 7 - <_> - 8 - - 27 60 3 3 - <_> - 0 - - 7 15 9 7 - <_> - 3 - - 13 21 3 10 - <_> - 3 - - 8 11 6 20 - <_> - 9 - - 30 17 1 2 - <_> - 5 - - 12 56 2 5 - <_> - 1 - - 30 41 1 20 - <_> - 9 - - 12 17 4 3 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 12 11 18 2 - <_> - 8 - - 10 55 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 19 40 1 12 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 7 11 22 1 - <_> - 4 - - 18 41 1 8 - <_> - 3 - - 7 62 13 1 - <_> - 1 - - 9 56 16 1 - <_> - 0 - - 14 30 9 21 - <_> - 1 - - 19 2 10 11 - <_> - 3 - - 21 47 1 8 - <_> - 2 - - 9 48 9 6 - <_> - 1 - - 21 35 1 15 - <_> - 3 - - 4 26 3 29 - <_> - 0 - - 14 11 15 3 - <_> - 7 - - 2 46 21 1 - <_> - 2 - - 25 10 2 18 - <_> - 4 - - 12 14 4 5 - <_> - 3 - - 25 46 4 2 - <_> - 4 - - 9 12 1 11 - <_> - 9 - - 19 39 1 12 - <_> - 7 - - 14 11 9 3 - <_> - 7 - - 6 41 1 7 - <_> - 2 - - 5 58 21 2 - <_> - 5 - - 20 14 9 8 - <_> - 4 - - 3 31 27 3 - <_> - 5 - - 6 1 21 2 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 13 24 5 27 - <_> - 7 - - 22 60 6 2 - <_> - 4 - - 1 34 20 4 - <_> - 1 - - 15 33 2 8 - <_> - 5 - - 14 40 12 10 - <_> - 2 - - 15 48 2 3 - <_> - 9 - - 15 7 3 51 - <_> - 8 - - 12 12 8 3 - <_> - 3 - - 14 34 5 5 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 18 20 3 7 - <_> - 4 - - 15 6 3 4 - <_> - 5 - - 2 22 14 3 - <_> - 4 - - 10 29 3 19 - <_> - 1 - - 11 44 1 14 - <_> - 3 - - 6 39 5 16 - <_> - 0 - - 9 51 2 5 - <_> - 2 - - 9 50 4 5 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 26 53 5 7 - <_> - 5 - - 16 47 8 7 - <_> - 3 - - 7 50 8 1 - <_> - 4 - - 8 47 23 1 - <_> - 2 - - 5 59 14 1 - <_> - 9 - - 20 57 1 2 - <_> - 1 - - 23 8 8 22 - <_> - 3 - - 17 50 8 11 - <_> - 0 - - 8 19 21 25 - <_> - 2 - - 14 23 3 6 - <_> - 5 - - 8 22 20 6 - <_> - 4 - - 8 60 7 3 - <_> - 1 - - 12 51 3 12 - <_> - 5 - - 11 57 2 6 - <_> - 7 - - 26 0 3 1 - <_> - 7 - - 12 59 12 3 - <_> - 0 - - 25 50 6 11 - <_> - 0 - - 6 52 25 5 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 24 56 1 4 - <_> - 0 - - 18 18 2 7 - <_> - 3 - - 6 22 14 7 - <_> - 0 - - 3 0 17 9 - <_> - 3 - - 11 12 2 9 - <_> - 7 - - 17 8 14 7 - <_> - 4 - - 8 41 17 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 22 38 3 10 - <_> - 9 - - 15 32 2 2 - <_> - 2 - - 21 27 9 10 - <_> - 3 - - 16 53 14 2 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 14 43 10 9 - <_> - 1 - - 14 53 3 9 - <_> - 1 - - 12 31 10 8 - <_> - 2 - - 10 57 19 1 - <_> - 1 - - 9 32 5 2 - <_> - 1 - - 0 34 13 14 - <_> - 5 - - 14 52 9 3 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 2 49 23 11 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 12 19 12 1 - <_> - 8 - - 10 39 2 2 - <_> - 9 - - 30 38 1 1 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 18 28 8 15 - <_> - 1 - - 28 5 2 23 - <_> - 5 - - 16 55 8 4 - <_> - 4 - - 20 18 2 4 - <_> - 2 - - 8 41 15 1 - <_> - 7 - - 15 2 2 56 - <_> - 4 - - 12 4 9 12 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 5 51 13 5 - <_> - 5 - - 21 25 1 18 - <_> - 4 - - 21 18 7 32 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 11 19 11 1 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 6 8 1 3 - <_> - 5 - - 13 46 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 6 10 11 18 - <_> - 8 - - 5 14 4 5 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 10 1 13 13 - <_> - 0 - - 5 47 1 16 - <_> - 7 - - 1 48 29 7 - <_> - 0 - - 0 4 1 5 - <_> - 2 - - 18 61 7 1 - <_> - 2 - - 18 15 8 18 - <_> - 1 - - 14 17 5 10 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 19 29 5 7 - <_> - 7 - - 12 15 5 1 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 13 5 6 12 - <_> - 8 - - 29 56 2 3 - <_> - 1 - - 11 45 8 5 - <_> - 7 - - 11 59 3 3 - <_> - 8 - - 21 55 5 5 - <_> - 3 - - 10 21 1 13 - <_> - 5 - - 15 24 4 7 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 7 2 10 2 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 13 21 6 2 - <_> - 2 - - 10 8 20 7 - <_> - 5 - - 0 33 27 15 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 9 17 11 9 - <_> - 5 - - 6 59 13 1 - <_> - 4 - - 11 46 10 4 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 10 15 3 30 - <_> - 1 - - 4 30 22 11 - <_> - 9 - - 28 2 3 1 - <_> - 8 - - 28 62 1 1 - <_> - 1 - - 19 28 7 6 - <_> - 4 - - 28 9 3 26 - <_> - 1 - - 3 44 16 2 - <_> - 2 - - 30 36 1 8 - <_> - 2 - - 7 51 13 5 - <_> - 9 - - 17 19 2 4 - <_> - 2 - - 10 56 10 3 - <_> - 5 - - 16 16 14 9 - <_> - 7 - - 16 38 2 4 - <_> - 2 - - 15 0 7 6 - <_> - 8 - - 17 13 2 4 - <_> - 7 - - 23 49 4 3 - <_> - 1 - - 7 25 10 10 - <_> - 9 - - 12 29 7 19 - <_> - 7 - - 17 28 1 12 - <_> - 7 - - 18 6 1 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 0 2 3 60 - <_> - 5 - - 13 14 3 2 - <_> - 1 - - 16 7 4 26 - <_> - 0 - - 25 47 6 16 - <_> - 1 - - 8 18 15 8 - <_> - 1 - - 13 55 3 2 - <_> - 0 - - 14 54 1 5 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 8 24 3 9 - <_> - 1 - - 20 10 1 42 - <_> - 5 - - 4 31 15 5 - <_> - 3 - - 10 5 7 17 - <_> - 2 - - 9 52 3 1 - <_> - 4 - - 3 59 10 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 11 37 1 6 - <_> - 1 - - 11 53 14 4 - <_> - 5 - - 5 57 24 1 - <_> - 7 - - 24 50 2 3 - <_> - 5 - - 13 58 6 4 - <_> - 4 - - 13 43 2 6 - <_> - 3 - - 25 42 6 6 - <_> - 5 - - 14 40 12 10 - <_> - 4 - - 11 53 3 1 - <_> - 3 - - 20 42 2 6 - <_> - 2 - - 11 12 12 2 - <_> - 3 - - 12 42 2 9 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 11 17 6 3 - <_> - 2 - - 12 6 14 12 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 20 56 3 7 - <_> - 8 - - 9 20 14 13 - <_> - 7 - - 24 16 1 42 - <_> - 0 - - 18 52 8 6 - <_> - 5 - - 21 50 7 2 - <_> - 2 - - 12 20 7 8 - <_> - 2 - - 10 22 15 36 - <_> - 7 - - 13 6 9 7 - <_> - 4 - - 28 2 3 38 - <_> - 5 - - 10 56 20 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 15 32 2 2 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 16 7 2 2 - <_> - 1 - - 2 19 25 2 - <_> - 2 - - 18 14 5 44 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 28 32 1 1 - <_> - 9 - - 30 1 1 2 - <_> - 3 - - 24 45 6 4 - <_> - 3 - - 3 2 10 15 - <_> - 3 - - 1 43 18 12 - <_> - 0 - - 2 19 4 42 - <_> - 2 - - 4 42 5 8 - <_> - 0 - - 19 25 3 18 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 13 13 6 38 - <_> - 8 - - 22 52 3 5 - <_> - 7 - - 10 61 1 1 - <_> - 2 - - 16 23 3 13 - <_> - 1 - - 11 35 8 4 - <_> - 1 - - 10 55 12 1 - <_> - 1 - - 13 40 12 1 - <_> - 7 - - 6 29 19 16 - <_> - 9 - - 13 27 2 2 - <_> - 9 - - 30 3 1 55 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 43 2 8 - <_> - 8 - - 7 8 5 6 - <_> - 3 - - 11 53 20 5 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 30 4 1 31 - <_> - 0 - - 17 17 3 2 - <_> - 7 - - 22 56 4 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 17 34 13 21 - <_> - 4 - - 7 15 5 22 - <_> - 4 - - 25 13 1 21 - <_> - 5 - - 22 18 3 32 - <_> - 0 - - 15 17 10 7 - <_> - 3 - - 5 10 14 23 - <_> - 1 - - 11 53 14 4 - <_> - 2 - - 14 62 15 1 - <_> - 5 - - 0 28 18 28 - <_> - 7 - - 18 11 1 1 - <_> - 2 - - 13 32 2 1 - <_> - 4 - - 9 6 8 12 - <_> - 3 - - 3 49 10 6 - <_> - 2 - - 11 40 7 1 - <_> - 5 - - 7 18 2 15 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 9 8 13 9 - <_> - 4 - - 4 60 12 2 - <_> - 3 - - 8 18 9 2 - <_> - 5 - - 5 1 18 48 - <_> - 3 - - 0 13 18 13 - <_> - 2 - - 0 52 22 2 - <_> - 0 - - 5 47 1 7 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 12 24 6 2 - <_> - 2 - - 6 35 6 10 - <_> - 0 - - 7 12 13 7 - <_> - 3 - - 8 56 9 3 - <_> - 4 - - 13 38 8 11 - <_> - 4 - - 16 22 2 17 - <_> - 0 - - 15 33 8 24 - <_> - 7 - - 1 2 30 40 - <_> - 3 - - 20 37 2 5 - <_> - 9 - - 14 0 10 7 - <_> - 5 - - 14 29 5 7 - <_> - 9 - - 15 15 2 10 - <_> - 5 - - 13 14 12 10 - <_> - 7 - - 14 10 3 2 - <_> - 5 - - 20 1 7 5 - <_> - 7 - - 0 62 28 1 - <_> - 0 - - 26 42 3 15 - <_> - 1 - - 13 44 14 11 - <_> - 9 - - 20 29 1 13 - <_> - 4 - - 11 38 13 7 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 0 50 7 12 - <_> - 2 - - 15 37 4 25 - <_> - 5 - - 18 7 1 40 - <_> - 2 - - 21 55 9 7 - <_> - 5 - - 15 47 14 8 - <_> - 7 - - 14 25 4 3 - <_> - 4 - - 12 39 3 3 - <_> - 3 - - 10 8 1 50 - <_> - 4 - - 5 16 23 30 - <_> - 1 - - 15 53 7 4 - <_> - 5 - - 1 57 18 2 - <_> - 4 - - 14 58 12 5 - <_> - 8 - - 30 54 1 9 - <_> - 4 - - 0 26 3 5 - <_> - 7 - - 24 36 3 4 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 39 26 5 - <_> - 7 - - 5 50 5 7 - <_> - 5 - - 15 49 10 4 - <_> - 0 - - 0 38 9 15 - <_> - 3 - - 16 41 14 6 - <_> - 1 - - 11 55 10 5 - <_> - 7 - - 14 0 1 31 - <_> - 9 - - 28 0 2 62 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 16 18 2 1 - <_> - 8 - - 16 53 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 1 - - 13 18 18 6 - <_> - 5 - - 15 60 15 2 - <_> - 3 - - 5 38 19 9 - <_> - 0 - - 1 24 3 26 - <_> - 2 - - 30 25 1 26 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 11 35 8 4 - <_> - 4 - - 6 9 11 16 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 24 23 4 5 - <_> - 8 - - 28 12 1 12 - <_> - 9 - - 26 2 3 2 - <_> - 1 - - 18 23 3 1 - <_> - 9 - - 15 14 3 14 - <_> - 9 - - 0 31 22 14 - <_> - 2 - - 8 48 11 9 - <_> - 8 - - 6 20 5 7 - <_> - 1 - - 13 52 3 10 - <_> - 1 - - 24 36 4 1 - <_> - 4 - - 13 44 7 7 - <_> - 2 - - 18 16 4 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 1 40 29 1 - <_> - 2 - - 12 38 11 10 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 17 34 2 13 - <_> - 2 - - 12 20 7 7 - <_> - 2 - - 11 11 12 6 - <_> - 9 - - 21 62 7 1 - <_> - 8 - - 1 62 13 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 39 1 8 - <_> - 8 - - 17 3 3 2 - <_> - 8 - - 13 2 8 52 - <_> - 5 - - 30 37 1 22 - <_> - 0 - - 9 31 18 3 - <_> - 7 - - 20 11 4 1 - <_> - 1 - - 5 12 14 6 - <_> - 4 - - 8 3 14 46 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 20 33 2 2 - <_> - 4 - - 15 6 3 4 - <_> - 9 - - 30 1 1 8 - <_> - 2 - - 6 51 8 6 - <_> - 5 - - 9 58 17 2 - <_> - 5 - - 17 28 14 5 - <_> - 1 - - 19 20 3 15 - <_> - 3 - - 10 21 1 13 - <_> - 1 - - 8 17 6 13 - <_> - 0 - - 10 46 8 7 - <_> - 0 - - 13 25 2 6 - <_> - 2 - - 22 30 3 11 - <_> - 1 - - 16 7 4 26 - <_> - 1 - - 14 33 5 21 - <_> - 1 - - 16 53 2 4 - <_> - 0 - - 22 29 5 8 - <_> - 3 - - 4 53 21 5 - <_> - 0 - - 10 50 16 3 - <_> - 0 - - 20 49 2 1 - <_> - 0 - - 25 44 5 3 - <_> - 7 - - 28 41 2 1 - <_> - 7 - - 14 59 1 2 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 13 27 2 2 - <_> - 8 - - 20 39 2 4 - <_> - 1 - - 12 15 1 26 - <_> - 5 - - 21 2 1 52 - <_> - 4 - - 6 7 8 7 - <_> - 1 - - 13 21 6 2 - <_> - 1 - - 4 54 4 9 - <_> - 4 - - 18 39 1 2 - <_> - 0 - - 4 39 5 7 - <_> - 3 - - 7 23 7 30 - <_> - 1 - - 16 26 9 4 - <_> - 4 - - 18 5 6 41 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 3 43 11 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 11 12 7 4 - <_> - 8 - - 17 11 1 2 - <_> - 5 - - 30 0 1 2 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 27 49 4 9 - <_> - 5 - - 20 10 2 18 - <_> - 3 - - 1 7 16 1 - <_> - 5 - - 27 15 2 12 - <_> - 1 - - 20 52 1 11 - <_> - 5 - - 9 57 14 6 - <_> - 7 - - 26 51 3 4 - <_> - 2 - - 6 50 11 4 - <_> - 7 - - 11 24 16 2 - <_> - 5 - - 10 58 13 5 - <_> - 7 - - 10 9 17 10 - <_> - 9 - - 19 19 2 1 - <_> - 7 - - 11 18 13 9 - <_> - 3 - - 6 11 9 11 - <_> - 4 - - 1 8 26 39 - <_> - 5 - - 15 24 4 7 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 12 31 10 5 - <_> - 4 - - 23 32 8 31 - <_> - 4 - - 28 16 3 18 - <_> - 7 - - 10 47 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 10 29 1 8 - <_> - 1 - - 5 56 21 1 - <_> - 1 - - 13 46 8 15 - <_> - 7 - - 2 36 10 16 - <_> - 0 - - 11 49 11 2 - <_> - 5 - - 26 56 2 6 - <_> - 7 - - 11 59 3 3 - <_> - 0 - - 12 50 16 6 - <_> - 9 - - 2 61 17 1 - <_> - 0 - - 7 55 7 4 - <_> - 7 - - 15 29 2 3 - <_> - 0 - - 22 58 9 5 - <_> - 1 - - 15 8 4 8 - <_> - 5 - - 4 28 2 2 - <_> - 0 - - 5 27 8 13 - <_> - 1 - - 13 20 5 4 - <_> - 0 - - 26 48 5 6 - <_> - 0 - - 16 34 10 11 - <_> - 7 - - 30 57 1 1 - <_> - 9 - - 30 19 1 8 - <_> - 4 - - 18 41 1 8 - <_> - 9 - - 14 17 3 26 - <_> - 1 - - 13 55 12 3 - <_> - 5 - - 4 62 7 1 - <_> - 9 - - 12 7 13 1 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 21 55 10 2 - <_> - 3 - - 8 9 13 1 - <_> - 9 - - 13 34 8 6 - <_> - 7 - - 12 29 4 10 - <_> - 9 - - 24 31 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 29 38 2 2 - <_> - 2 - - 13 10 13 7 - <_> - 2 - - 8 27 3 6 - <_> - 9 - - 12 17 4 3 - <_> - 5 - - 16 10 12 13 - <_> - 0 - - 3 43 1 9 - <_> - 3 - - 6 50 12 7 - <_> - 9 - - 14 1 10 3 - <_> - 5 - - 10 2 10 3 - <_> - 2 - - 19 12 5 12 - <_> - 7 - - 12 15 8 7 - <_> - 5 - - 13 31 1 10 - <_> - 2 - - 9 7 2 47 - <_> - 2 - - 26 44 2 12 - <_> - 1 - - 10 54 7 2 - <_> - 2 - - 9 18 7 2 - <_> - 2 - - 30 58 1 2 - <_> - 2 - - 8 41 15 3 - <_> - 4 - - 14 58 1 5 - <_> - 3 - - 11 0 8 37 - <_> - 4 - - 0 26 3 5 - <_> - 5 - - 13 9 8 6 - <_> - 7 - - 6 36 2 19 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 8 59 7 2 - <_> - 3 - - 10 7 3 41 - <_> - 4 - - 9 20 17 4 - <_> - 1 - - 28 49 3 11 - <_> - 5 - - 12 57 7 5 - <_> - 4 - - 7 54 11 1 - <_> - 0 - - 12 38 1 6 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 22 53 4 1 - <_> - 2 - - 8 61 15 1 - <_> - 2 - - 4 53 19 3 - <_> - 4 - - 4 42 2 6 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 11 9 15 6 - <_> - 4 - - 23 61 7 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 8 50 14 10 - <_> - 1 - - 23 46 1 16 - <_> - 2 - - 19 11 12 14 - <_> - 0 - - 2 41 3 13 - <_> - 4 - - 22 23 6 28 - <_> - 0 - - 19 27 4 10 - <_> - 0 - - 6 42 2 2 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 6 60 4 3 - <_> - 7 - - 22 53 1 4 - <_> - 2 - - 9 16 6 6 - <_> - 2 - - 19 35 2 3 - <_> - 0 - - 15 36 11 1 - <_> - 3 - - 19 24 3 16 - <_> - 5 - - 0 47 13 2 - <_> - 2 - - 3 51 16 4 - <_> - 4 - - 3 26 2 21 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 6 51 7 1 - <_> - 8 - - 14 17 4 2 - <_> - 3 - - 22 45 1 13 - <_> - 4 - - 11 10 20 4 - <_> - 9 - - 29 47 2 2 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 25 16 6 7 - <_> - 3 - - 14 21 4 6 - <_> - 3 - - 5 56 6 4 - <_> - 4 - - 24 36 2 26 - <_> - 2 - - 9 48 19 4 - <_> - 7 - - 12 59 12 1 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 20 1 4 - <_> - 3 - - 15 8 11 32 - <_> - 8 - - 18 25 2 5 - <_> - 1 - - 15 51 5 9 - <_> - 1 - - 6 59 5 4 - <_> - 5 - - 30 51 1 10 - <_> - 4 - - 16 7 2 2 - <_> - 7 - - 4 30 14 6 - <_> - 0 - - 9 28 12 22 - <_> - 2 - - 9 27 1 28 - <_> - 4 - - 17 19 6 35 - <_> - 2 - - 1 30 20 10 - <_> - 1 - - 9 15 11 2 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 6 18 7 10 - <_> - 4 - - 11 36 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 0 - - 21 54 3 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 11 9 7 8 - <_> - 9 - - 14 1 3 13 - <_> - 0 - - 12 38 1 6 - <_> - 3 - - 5 36 21 5 - <_> - 8 - - 8 62 3 1 - <_> - 4 - - 16 51 2 1 - <_> - 1 - - 16 54 4 8 - <_> - 0 - - 9 15 4 3 - <_> - 0 - - 27 47 1 6 - <_> - 0 - - 12 37 14 2 - <_> - 3 - - 10 5 4 54 - <_> - 5 - - 12 29 6 7 - <_> - 7 - - 1 32 10 13 - <_> - 0 - - 6 58 7 1 - <_> - 2 - - 8 38 20 5 - <_> - 9 - - 28 14 1 9 - <_> - 1 - - 12 8 8 4 - <_> - 4 - - 18 14 3 38 - <_> - 3 - - 0 40 2 15 - <_> - 5 - - 16 24 2 15 - <_> - 1 - - 10 55 12 1 - <_> - 9 - - 7 22 1 29 - <_> - 7 - - 12 59 12 1 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 2 1 27 2 - <_> - 0 - - 1 8 13 17 - <_> - 8 - - 30 42 1 2 - <_> - 8 - - 12 11 8 1 - <_> - 8 - - 16 35 8 1 - <_> - 4 - - 10 41 8 7 - <_> - 2 - - 22 57 5 6 - <_> - 3 - - 15 49 3 4 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 4 - - 10 18 16 5 - <_> - 9 - - 19 39 2 4 - <_> - 2 - - 7 11 17 1 - <_> - 7 - - 26 33 1 16 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 7 57 13 4 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 5 21 10 5 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 16 19 2 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 15 0 13 3 - <_> - 3 - - 16 36 3 4 - <_> - 0 - - 13 37 15 7 - <_> - 2 - - 24 38 6 18 - <_> - 5 - - 13 39 1 8 - <_> - 7 - - 3 62 15 1 - <_> - 5 - - 29 28 2 25 - <_> - 2 - - 10 46 12 9 - <_> - 2 - - 12 59 14 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 15 24 2 10 - <_> - 7 - - 27 12 2 11 - <_> - 1 - - 11 55 7 5 - <_> - 0 - - 10 33 3 14 - <_> - 0 - - 25 44 1 9 - <_> - 2 - - 16 39 4 9 - <_> - 7 - - 19 25 1 2 - <_> - 1 - - 13 5 6 12 - <_> - 1 - - 11 19 1 18 - <_> - 7 - - 0 0 17 33 - <_> - 7 - - 25 52 4 2 - <_> - 3 - - 27 62 2 1 - <_> - 5 - - 18 17 6 4 - <_> - 7 - - 23 18 2 12 - <_> - 5 - - 22 12 9 23 - <_> - 2 - - 6 50 11 4 - <_> - 2 - - 18 52 7 2 - <_> - 4 - - 0 59 5 4 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 18 1 - <_> - 4 - - 25 62 2 1 - <_> - 3 - - 3 19 8 16 - <_> - 1 - - 24 29 4 34 - <_> - 2 - - 13 30 2 5 - <_> - 1 - - 13 7 9 6 - <_> - 4 - - 13 7 5 4 - <_> - 0 - - 16 17 4 5 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 12 44 1 11 - <_> - 0 - - 19 6 3 4 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 29 44 1 6 - <_> - 2 - - 24 57 2 4 - <_> - 3 - - 10 50 7 6 - <_> - 5 - - 27 14 2 26 - <_> - 0 - - 1 53 26 5 - <_> - 7 - - 6 62 9 1 - <_> - 8 - - 1 61 25 2 - <_> - 4 - - 18 39 1 2 - <_> - 5 - - 21 18 5 38 - <_> - 0 - - 0 39 3 11 - <_> - 5 - - 4 42 8 6 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 14 3 2 - <_> - 3 - - 8 9 9 4 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 13 4 11 7 - <_> - 9 - - 13 39 5 1 - <_> - 1 - - 8 6 15 1 - <_> - 4 - - 26 19 2 18 - <_> - 9 - - 25 18 4 2 - <_> - 2 - - 17 3 4 15 - <_> - 4 - - 5 44 19 4 - <_> - 1 - - 17 18 5 28 - <_> - 1 - - 14 52 5 6 - <_> - 3 - - 24 45 2 15 - <_> - 0 - - 6 58 16 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 12 42 15 2 - <_> - 8 - - 13 51 1 6 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 14 52 9 1 - <_> - 8 - - 12 0 7 9 - <_> - 4 - - 14 39 4 9 - <_> - 0 - - 3 5 7 24 - <_> - 9 - - 10 33 2 10 - <_> - 9 - - 4 3 16 12 - <_> - 1 - - 12 1 17 7 - <_> - 8 - - 15 55 2 5 - <_> - 2 - - 7 51 14 1 - <_> - 7 - - 15 9 11 2 - <_> - 1 - - 11 0 7 18 - <_> - 1 - - 7 21 21 1 - <_> - 5 - - 18 15 10 12 - <_> - 1 - - 11 56 19 1 - <_> - 3 - - 28 51 1 9 - <_> - 2 - - 12 55 11 7 - <_> - 7 - - 12 57 7 1 - <_> - 7 - - 12 1 7 53 - <_> - 7 - - 24 48 7 5 - <_> - 4 - - 9 22 14 16 - <_> - 1 - - 28 31 3 31 - <_> - 1 - - 20 54 9 5 - <_> - 9 - - 15 32 2 2 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 37 22 9 - <_> - 5 - - 8 57 19 3 - <_> - 3 - - 15 44 16 13 - <_> - 5 - - 17 52 9 3 - <_> - 1 - - 2 1 21 4 - <_> - 2 - - 11 16 2 2 - <_> - 4 - - 12 21 1 10 - <_> - 4 - - 10 9 11 9 - <_> - 5 - - 21 25 1 18 - <_> - 5 - - 18 57 7 2 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 11 49 3 5 - <_> - 8 - - 1 40 1 14 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 28 36 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 16 8 1 6 - <_> - 5 - - 29 38 1 12 - <_> - 2 - - 7 51 13 5 - <_> - 0 - - 6 37 2 20 - <_> - 5 - - 7 52 4 3 - <_> - 5 - - 14 9 9 4 - <_> - 2 - - 1 21 1 16 - <_> - 5 - - 14 0 12 17 - <_> - 1 - - 17 20 6 5 - <_> - 0 - - 21 11 1 41 - <_> - 1 - - 3 54 28 8 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 13 62 6 1 - <_> - 2 - - 22 16 8 4 - <_> - 2 - - 12 62 11 1 - <_> - 4 - - 19 57 8 6 - <_> - 1 - - 16 53 2 4 - <_> - 9 - - 10 59 4 3 - <_> - 0 - - 13 15 5 4 - <_> - 3 - - 2 54 10 5 - <_> - 2 - - 5 49 8 11 - <_> - 4 - - 11 53 3 2 - <_> - 5 - - 11 34 2 3 - <_> - 3 - - 6 13 9 14 - <_> - 0 - - 13 14 2 12 - <_> - 4 - - 7 60 1 3 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 9 - - 12 35 6 2 - <_> - 1 - - 13 14 13 3 - <_> - 7 - - 10 20 3 3 - <_> - 4 - - 14 8 6 11 - <_> - 2 - - 21 52 2 9 - <_> - 5 - - 19 16 7 39 - <_> - 7 - - 11 62 9 1 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 14 17 1 13 - <_> - 9 - - 6 8 6 48 - <_> - 9 - - 28 36 1 1 - <_> - 2 - - 9 41 11 1 - <_> - 1 - - 1 30 19 2 - <_> - 4 - - 13 40 6 7 - <_> - 1 - - 12 43 11 15 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 2 16 11 24 - <_> - 4 - - 5 26 12 4 - <_> - 7 - - 4 24 4 1 - <_> - 2 - - 16 21 3 6 - <_> - 3 - - 2 21 9 2 - <_> - 9 - - 29 2 1 7 - <_> - 9 - - 19 17 1 7 - <_> - 3 - - 6 52 18 2 - <_> - 0 - - 6 57 13 1 - <_> - 2 - - 11 11 8 3 - <_> - 7 - - 17 44 1 3 - <_> - 7 - - 15 10 13 4 - <_> - 9 - - 25 44 2 3 - <_> - 9 - - 23 27 8 27 - <_> - 8 - - 16 12 1 5 - <_> - 3 - - 1 53 25 3 - <_> - 0 - - 14 48 4 9 - <_> - 7 - - 19 23 2 15 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 16 1 3 13 - <_> - 2 - - 14 16 4 5 - <_> - 5 - - 15 18 14 5 - <_> - 2 - - 18 16 5 9 - <_> - 3 - - 3 1 21 2 - <_> - 2 - - 11 57 19 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 21 4 4 1 - <_> - 1 - - 18 19 1 5 - <_> - 8 - - 12 11 8 1 - <_> - 0 - - 10 8 4 49 - <_> - 9 - - 11 5 8 48 - <_> - 0 - - 0 30 10 18 - <_> - 2 - - 3 40 4 13 - <_> - 3 - - 29 34 1 22 - <_> - 2 - - 20 26 10 4 - <_> - 4 - - 12 8 7 12 - <_> - 1 - - 8 33 12 1 - <_> - 1 - - 20 55 2 4 - <_> - 4 - - 6 34 19 16 - <_> - 3 - - 1 52 26 1 - <_> - 1 - - 11 6 1 47 - <_> - 1 - - 5 44 5 11 - <_> - 2 - - 15 37 3 10 - <_> - 4 - - 10 21 2 5 - <_> - 3 - - 15 21 3 42 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 22 62 1 1 - <_> - 8 - - 0 14 12 3 - <_> - 2 - - 0 59 2 4 - <_> - 2 - - 6 35 11 5 - <_> - 2 - - 23 40 6 21 - <_> - 3 - - 23 35 3 14 - <_> - 0 - - 16 34 10 11 - <_> - 5 - - 21 18 2 12 - <_> - 5 - - 23 28 8 19 - <_> - 2 - - 21 17 2 20 - <_> - 0 - - 20 15 4 9 - <_> - 2 - - 14 25 3 9 - <_> - 0 - - 8 24 7 5 - <_> - 1 - - 12 11 3 7 - <_> - 7 - - 16 11 1 1 - <_> - 2 - - 23 14 8 24 - <_> - 3 - - 7 24 11 11 - <_> - 7 - - 1 62 30 1 - <_> - 2 - - 8 40 2 7 - <_> - 1 - - 15 53 7 4 - <_> - 4 - - 19 26 11 36 - <_> - 3 - - 2 56 20 6 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 8 50 7 8 - <_> - 4 - - 8 46 18 1 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 11 13 5 1 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 57 20 3 - <_> - 1 - - 5 56 19 1 - <_> - 7 - - 17 26 2 3 - <_> - 4 - - 12 46 1 2 - <_> - 2 - - 3 25 18 1 - <_> - 7 - - 29 52 1 2 - <_> - 0 - - 13 26 4 1 - <_> - 1 - - 2 29 12 5 - <_> - 2 - - 14 3 5 1 - <_> - 0 - - 19 23 3 21 - <_> - 2 - - 16 39 4 9 - <_> - 5 - - 3 41 25 5 - <_> - 0 - - 28 49 3 1 - <_> - 7 - - 12 38 10 7 - <_> - 3 - - 6 12 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 0 - - 10 42 13 5 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 7 18 16 3 - <_> - 1 - - 28 14 3 42 - <_> - 1 - - 5 54 26 1 - <_> - 4 - - 17 17 8 38 - <_> - 2 - - 2 50 14 3 - <_> - 5 - - 20 24 2 10 - <_> - 3 - - 9 56 20 2 - <_> - 0 - - 11 50 16 10 - <_> - 7 - - 9 0 21 9 - <_> - 4 - - 3 15 22 14 - <_> - 2 - - 11 17 6 3 - <_> - 5 - - 14 50 6 6 - <_> - 0 - - 0 46 3 7 - <_> - 9 - - 14 7 3 23 - <_> - 5 - - 2 11 14 12 - <_> - 5 - - 19 54 3 3 - <_> - 3 - - 12 43 7 10 - <_> - 4 - - 25 54 3 9 - <_> - 1 - - 9 20 4 5 - <_> - 1 - - 10 15 13 1 - <_> - 5 - - 1 60 22 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 15 5 4 - <_> - 8 - - 8 54 10 5 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 23 39 6 12 - <_> - 0 - - 0 54 25 4 - <_> - 9 - - 14 0 10 7 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 12 1 4 31 - <_> - 5 - - 17 19 10 17 - <_> - 7 - - 4 26 1 18 - <_> - 1 - - 20 19 3 2 - <_> - 7 - - 6 53 6 4 - <_> - 2 - - 28 40 2 9 - <_> - 7 - - 11 6 1 35 - <_> - 3 - - 5 13 20 8 - <_> - 2 - - 7 2 1 37 - <_> - 4 - - 6 12 16 13 - <_> - 4 - - 13 22 2 4 - <_> - 2 - - 12 58 10 1 - <_> - 5 - - 14 50 6 6 - <_> - 7 - - 10 59 21 1 - <_> - 0 - - 26 43 3 14 - <_> - 0 - - 20 7 4 39 - <_> - 3 - - 15 48 1 4 - <_> - 3 - - 8 44 17 10 - <_> - 0 - - 26 21 2 2 - <_> - 3 - - 7 40 5 18 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 9 45 3 13 - <_> - 3 - - 20 41 1 8 - <_> - 8 - - 13 9 13 11 - <_> - 2 - - 15 46 2 10 - <_> - 2 - - 11 4 8 13 - <_> - 0 - - 0 28 6 15 - <_> - 0 - - 17 18 3 1 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 5 11 21 46 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 14 1 3 13 - <_> - 2 - - 6 25 1 37 - <_> - 8 - - 15 5 8 4 - <_> - 8 - - 14 9 4 13 - <_> - 1 - - 12 46 8 2 - <_> - 5 - - 16 22 13 2 - <_> - 7 - - 25 22 2 8 - <_> - 2 - - 7 51 13 5 - <_> - 2 - - 20 61 7 2 - <_> - 3 - - 8 19 11 22 - <_> - 1 - - 10 55 12 1 - <_> - 7 - - 14 0 7 17 - <_> - 9 - - 14 12 2 21 - <_> - 4 - - 8 61 16 2 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 19 32 6 7 - <_> - 1 - - 22 27 6 29 - <_> - 4 - - 21 24 7 27 - <_> - 0 - - 15 40 12 4 - <_> - 4 - - 2 49 1 3 - <_> - 3 - - 8 57 14 1 - <_> - 7 - - 2 35 3 4 - <_> - 2 - - 19 18 4 13 - <_> - 5 - - 13 11 18 15 - <_> - 5 - - 12 50 10 6 - <_> - 2 - - 12 20 7 7 - <_> - 7 - - 14 40 3 1 - <_> - 9 - - 14 41 2 2 - <_> - 2 - - 16 10 7 47 - <_> - 5 - - 26 61 3 2 - <_> - 1 - - 12 53 10 7 - <_> - 9 - - 21 62 2 1 - <_> - 1 - - 18 19 1 5 - <_> - 1 - - 26 10 5 19 - <_> - 5 - - 30 36 1 12 - <_> - 4 - - 13 38 2 4 - <_> - 3 - - 12 7 5 9 - <_> - 9 - - 17 36 4 2 - <_> - 7 - - 6 61 6 2 - <_> - 5 - - 17 40 2 9 - <_> - 8 - - 17 61 14 2 - <_> - 7 - - 12 24 6 5 - <_> - 8 - - 12 11 8 1 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 16 1 12 2 - <_> - 2 - - 19 0 4 42 - <_> - 5 - - 16 7 13 45 - <_> - 3 - - 21 45 1 10 - <_> - 3 - - 8 49 19 7 - <_> - 0 - - 12 33 5 2 - <_> - 4 - - 15 42 4 4 - <_> - 1 - - 10 52 7 4 - <_> - 1 - - 7 19 18 3 - <_> - 3 - - 7 7 6 32 - <_> - 4 - - 1 9 9 26 - <_> - 4 - - 12 5 9 15 - <_> - 1 - - 12 24 6 2 - <_> - 3 - - 10 2 11 41 - <_> - 5 - - 7 59 24 3 - <_> - 2 - - 11 36 15 9 - <_> - 0 - - 4 46 2 7 - <_> - 4 - - 28 11 3 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 29 13 2 24 - <_> - 2 - - 7 55 21 3 - <_> - 9 - - 14 60 3 1 - <_> - 9 - - 21 61 4 1 - <_> - 8 - - 13 57 1 6 - <_> - 4 - - 8 43 14 10 - <_> - 5 - - 12 33 4 5 - <_> - 3 - - 3 7 12 22 - <_> - 1 - - 6 20 23 35 - <_> - 5 - - 14 17 6 8 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 21 17 6 6 - <_> - 5 - - 20 1 7 5 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 15 17 2 5 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 9 4 14 43 - <_> - 1 - - 21 51 7 4 - <_> - 4 - - 10 58 20 1 - <_> - 2 - - 5 51 13 5 - <_> - 4 - - 15 36 2 2 - <_> - 5 - - 5 62 14 1 - <_> - 4 - - 1 46 14 3 - <_> - 1 - - 10 55 17 7 - <_> - 7 - - 24 45 4 4 - <_> - 9 - - 30 45 1 13 - <_> - 0 - - 11 52 17 4 - <_> - 3 - - 23 34 7 15 - <_> - 0 - - 17 33 9 11 - <_> - 4 - - 6 31 7 2 - <_> - 7 - - 16 11 1 1 - <_> - 5 - - 17 21 7 1 - <_> - 3 - - 6 8 9 39 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 7 5 4 - <_> - 2 - - 20 16 2 4 - <_> - 1 - - 16 54 2 4 - <_> - 5 - - 2 30 1 28 - <_> - 1 - - 4 62 25 1 - <_> - 5 - - 25 4 1 51 - <_> - 5 - - 19 10 10 38 - <_> - 5 - - 9 61 15 2 - <_> - 7 - - 0 50 9 2 - <_> - 4 - - 19 37 2 8 - <_> - 7 - - 17 32 2 3 - <_> - 9 - - 14 0 10 7 - <_> - 2 - - 29 33 1 8 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 13 14 4 3 - <_> - 9 - - 27 48 2 6 - <_> - 8 - - 16 53 1 2 - <_> - 2 - - 29 42 1 12 - <_> - 0 - - 2 54 16 9 - <_> - 9 - - 15 17 2 26 - <_> - 0 - - 12 50 14 5 - <_> - 3 - - 24 36 1 26 - <_> - 2 - - 2 33 27 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 29 28 2 25 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 10 12 21 7 - <_> - 1 - - 16 55 9 2 - <_> - 2 - - 24 53 7 7 - <_> - 0 - - 21 21 1 14 - <_> - 5 - - 1 44 27 8 - <_> - 7 - - 19 8 5 8 - <_> - 7 - - 23 54 1 1 - <_> - 5 - - 14 9 9 4 - <_> - 5 - - 11 35 11 1 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 25 59 5 4 - <_> - 2 - - 4 59 21 1 - <_> - 1 - - 18 46 3 5 - <_> - 2 - - 8 24 3 9 - <_> - 3 - - 7 43 11 16 - <_> - 8 - - 26 41 1 4 - <_> - 4 - - 0 52 16 11 - <_> - 9 - - 19 20 1 2 - <_> - 2 - - 12 49 15 2 - <_> - 8 - - 11 20 5 6 - <_> - 3 - - 0 56 31 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 10 24 18 8 - <_> - 5 - - 13 9 8 6 - <_> - 1 - - 11 21 14 32 - <_> - 5 - - 11 0 7 10 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 3 - - 8 16 4 29 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 12 14 8 13 - <_> - 8 - - 15 17 2 1 - <_> - 1 - - 18 20 3 7 - <_> - 2 - - 17 3 4 15 - <_> - 1 - - 0 19 21 3 - <_> - 7 - - 0 62 18 1 - <_> - 8 - - 18 30 1 2 - <_> - 4 - - 13 44 7 7 - <_> - 5 - - 16 46 10 3 - <_> - 1 - - 11 8 13 1 - <_> - 2 - - 21 56 3 4 - <_> - 8 - - 2 53 23 4 - <_> - 8 - - 15 10 2 49 - <_> - 2 - - 2 46 7 3 - <_> - 3 - - 20 38 2 11 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 21 18 2 12 - <_> - 7 - - 7 52 16 8 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 27 59 1 4 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 13 37 2 6 - <_> - 4 - - 6 14 5 9 - <_> - 2 - - 11 11 8 3 - <_> - 2 - - 17 21 1 16 - <_> - 2 - - 18 3 1 10 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 22 58 8 3 - <_> - 1 - - 17 33 3 24 - <_> - 9 - - 19 38 1 14 - <_> - 2 - - 14 62 15 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 29 8 7 - <_> - 7 - - 26 4 3 17 - <_> - 3 - - 16 32 4 7 - <_> - 1 - - 14 7 2 11 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 20 17 2 46 - <_> - 0 - - 2 61 29 2 - <_> - 2 - - 6 50 11 4 - <_> - 5 - - 3 60 14 3 - <_> - 4 - - 0 20 13 6 - <_> - 4 - - 10 13 4 13 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 5 0 1 46 - <_> - 7 - - 14 1 7 17 - <_> - 3 - - 28 42 3 15 - <_> - 9 - - 30 36 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 17 19 2 4 - <_> - 9 - - 16 8 1 6 - <_> - 2 - - 22 47 5 7 - <_> - 1 - - 3 55 22 2 - <_> - 1 - - 13 41 1 13 - <_> - 7 - - 0 44 3 13 - <_> - 2 - - 7 35 8 10 - <_> - 8 - - 1 10 26 1 - <_> - 5 - - 9 53 19 8 - <_> - 4 - - 13 44 1 4 - <_> - 4 - - 6 28 7 18 - <_> - 2 - - 13 41 12 3 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 27 1 2 12 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 9 8 8 8 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 8 55 12 2 - <_> - 8 - - 4 7 26 38 - <_> - 3 - - 16 33 4 7 - <_> - 7 - - 3 51 21 8 - <_> - 2 - - 14 9 10 50 - <_> - 3 - - 1 46 22 4 - <_> - 9 - - 16 28 2 18 - <_> - 3 - - 9 28 3 29 - <_> - 4 - - 0 52 1 8 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 6 13 9 25 - <_> - 4 - - 8 56 21 4 - <_> - 7 - - 24 48 3 4 - <_> - 2 - - 16 5 9 3 - <_> - 5 - - 11 6 17 27 - <_> - 7 - - 23 4 7 3 - <_> - 4 - - 13 40 6 7 - <_> - 0 - - 11 40 2 22 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 16 29 3 4 - <_> - 9 - - 12 11 6 5 - <_> - 5 - - 18 14 13 7 - <_> - 7 - - 7 0 1 6 - <_> - 4 - - 7 1 10 36 - <_> - 1 - - 11 8 12 1 - <_> - 5 - - 3 53 22 7 - <_> - 1 - - 9 55 15 1 - <_> - 0 - - 13 35 8 16 - <_> - 2 - - 9 16 6 6 - <_> - 0 - - 25 42 5 7 - <_> - 2 - - 4 6 16 10 - <_> - 5 - - 5 34 26 17 - <_> - 4 - - 9 37 17 1 - <_> - 1 - - 18 23 3 1 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 10 17 4 13 - <_> - 4 - - 6 53 24 4 - <_> - 7 - - 22 51 9 3 - <_> - 0 - - 0 47 1 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 6 51 12 7 - <_> - 1 - - 3 42 6 8 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 13 12 9 15 - <_> - 8 - - 14 17 4 2 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 2 29 11 8 - <_> - 2 - - 12 5 8 9 - <_> - 1 - - 17 43 4 9 - <_> - 0 - - 6 58 7 1 - <_> - 4 - - 26 19 1 36 - <_> - 9 - - 17 3 12 3 - <_> - 7 - - 10 20 3 3 - <_> - 3 - - 5 10 12 17 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 0 27 11 9 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 44 7 8 - <_> - 0 - - 4 39 1 10 - <_> - 5 - - 10 58 13 5 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 8 38 17 7 - <_> - 0 - - 11 1 19 5 - <_> - 1 - - 13 5 6 12 - <_> - 3 - - 17 27 6 3 - <_> - 1 - - 6 6 20 1 - <_> - 5 - - 20 24 2 10 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 8 7 8 47 - <_> - 7 - - 26 62 1 1 - <_> - 8 - - 0 61 21 2 - <_> - 5 - - 16 20 13 5 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 15 34 8 4 - <_> - 0 - - 24 39 3 8 - <_> - 3 - - 10 4 1 53 - <_> - 7 - - 24 8 4 31 - <_> - 1 - - 18 29 4 6 - <_> - 1 - - 19 48 1 11 - <_> - 8 - - 7 36 8 6 - <_> - 2 - - 30 19 1 13 - <_> - 5 - - 21 19 2 20 - <_> - 2 - - 20 16 5 16 - <_> - 4 - - 9 8 18 9 - <_> - 5 - - 5 42 7 5 - <_> - 5 - - 14 40 12 10 - <_> - 5 - - 3 41 7 10 - <_> - 3 - - 7 59 24 1 - <_> - 1 - - 25 31 6 23 - <_> - 8 - - 2 1 14 7 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 15 53 7 4 - <_> - 8 - - 13 17 5 3 - <_> - 3 - - 7 50 11 6 - <_> - 0 - - 1 21 4 37 - <_> - 4 - - 12 39 8 10 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 8 8 22 20 - <_> - 2 - - 15 32 3 2 - <_> - 2 - - 14 42 7 2 - <_> - 2 - - 21 25 1 19 - <_> - 3 - - 0 16 6 38 - <_> - 2 - - 21 51 1 9 - <_> - 1 - - 21 45 1 17 - <_> - 9 - - 29 0 2 6 - <_> - 9 - - 8 34 11 10 - <_> - 3 - - 3 45 25 3 - <_> - 8 - - 13 14 4 3 - <_> - 1 - - 19 20 3 15 - <_> - 1 - - 3 11 17 6 - <_> - 4 - - 25 46 5 2 - <_> - 1 - - 13 18 7 7 - <_> - 0 - - 14 49 16 5 - <_> - 2 - - 11 12 12 2 - <_> - 7 - - 5 54 3 3 - <_> - 4 - - 1 47 18 3 - <_> - 2 - - 9 59 15 3 - <_> - 0 - - 19 29 4 24 - <_> - 3 - - 4 56 27 4 - <_> - 3 - - 20 34 1 11 - <_> - 0 - - 10 30 3 31 - <_> - 4 - - 22 23 6 28 - <_> - 3 - - 4 24 23 25 - <_> - 3 - - 6 22 10 5 - <_> - 4 - - 1 20 15 15 - <_> - 1 - - 28 13 2 24 - <_> - 1 - - 9 56 16 1 - <_> - 3 - - 13 21 3 10 - <_> - 7 - - 7 62 3 1 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 46 2 3 - <_> - 1 - - 2 49 9 12 - <_> - 3 - - 8 7 6 23 - <_> - 1 - - 22 0 2 29 - <_> - 5 - - 0 1 30 2 - <_> - 0 - - 14 41 1 18 - <_> - 5 - - 27 36 3 27 - <_> - 3 - - 15 45 12 18 - <_> - 3 - - 8 49 19 7 - <_> - 1 - - 9 28 5 7 - <_> - 4 - - 27 24 3 10 - <_> - 8 - - 9 62 7 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 22 42 1 13 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 26 9 1 17 - <_> - 9 - - 6 35 3 9 - <_> - 5 - - 4 62 7 1 - <_> - 7 - - 18 53 11 1 - <_> - 7 - - 10 61 1 1 - <_> - 1 - - 15 33 5 21 - <_> - 0 - - 20 23 5 22 - <_> - 2 - - 10 2 4 50 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 11 25 16 21 - <_> - 1 - - 14 11 8 9 - <_> - 7 - - 5 1 3 13 - <_> - 1 - - 6 43 3 18 - <_> - 2 - - 8 44 12 6 - <_> - 4 - - 9 18 5 8 - <_> - 9 - - 10 41 12 4 - <_> - 2 - - 20 17 2 14 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 0 48 3 7 - <_> - 3 - - 11 9 15 7 - <_> - 3 - - 4 53 19 6 - <_> - 5 - - 13 9 8 5 - <_> - 4 - - 28 39 2 3 - <_> - 4 - - 15 42 4 4 - <_> - 3 - - 7 38 11 14 - <_> - 8 - - 14 5 1 3 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 12 24 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 3 32 3 9 - <_> - 4 - - 21 58 9 5 - <_> - 2 - - 8 12 19 2 - <_> - 1 - - 15 53 3 9 - <_> - 3 - - 19 58 3 2 - <_> - 1 - - 17 43 4 9 - <_> - 2 - - 0 42 30 2 - <_> - 7 - - 9 0 8 12 - <_> - 5 - - 1 39 8 11 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 27 37 4 5 - <_> - 2 - - 19 54 8 7 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 26 38 4 12 - <_> - 1 - - 22 45 1 13 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 9 7 5 1 - <_> - 0 - - 13 42 7 1 - <_> - 2 - - 14 18 7 15 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 10 8 14 4 - <_> - 5 - - 11 45 2 7 - <_> - 9 - - 13 2 12 4 - <_> - 9 - - 15 16 8 6 - <_> - 9 - - 11 8 7 6 - <_> - 2 - - 15 60 15 1 - <_> - 2 - - 7 50 13 2 - <_> - 1 - - 1 33 29 2 - <_> - 5 - - 12 33 4 5 - <_> - 1 - - 11 53 10 4 - <_> - 4 - - 18 3 3 50 - <_> - 2 - - 6 59 20 3 - <_> - 2 - - 17 12 9 24 - <_> - 0 - - 3 34 1 14 - <_> - 3 - - 26 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 39 2 4 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 16 11 4 7 - <_> - 5 - - 13 61 15 2 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 18 17 2 9 - <_> - 4 - - 6 53 19 3 - <_> - 3 - - 8 13 8 7 - <_> - 0 - - 7 15 9 7 - <_> - 9 - - 15 26 4 9 - <_> - 3 - - 23 39 2 24 - <_> - 0 - - 13 36 13 2 - <_> - 5 - - 17 40 8 16 - <_> - 5 - - 15 3 11 1 - <_> - 5 - - 5 53 22 8 - <_> - 5 - - 9 25 2 11 - <_> - 2 - - 2 51 17 6 - <_> - 2 - - 13 53 4 3 - <_> - 5 - - 13 30 4 1 - <_> - 9 - - 27 55 1 5 - <_> - 5 - - 1 58 17 2 - <_> - 0 - - 7 44 13 6 - <_> - 5 - - 19 19 7 3 - <_> - 7 - - 26 18 1 4 - <_> - 7 - - 25 1 4 18 - <_> - 7 - - 22 53 6 2 - <_> - 5 - - 6 37 20 18 - <_> - 1 - - 12 62 12 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 26 61 1 2 - <_> - 1 - - 14 46 4 4 - <_> - 3 - - 8 42 6 15 - <_> - 0 - - 12 43 2 6 - <_> - 2 - - 17 19 1 8 - <_> - 0 - - 17 19 2 2 - <_> - 3 - - 5 22 10 4 - <_> - 2 - - 13 36 1 19 - <_> - 2 - - 11 35 14 4 - <_> - 4 - - 3 57 27 6 - <_> - 8 - - 6 52 24 2 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 15 20 3 16 - <_> - 0 - - 21 6 4 4 - <_> - 5 - - 11 56 12 1 - <_> - 8 - - 15 5 1 25 - <_> - 9 - - 30 1 1 2 - <_> - 5 - - 13 15 2 10 - <_> - 5 - - 4 10 19 20 - <_> - 7 - - 11 60 2 3 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 24 28 3 10 - <_> - 1 - - 12 24 6 2 - <_> - 1 - - 14 5 6 28 - <_> - 7 - - 14 36 1 3 - <_> - 1 - - 18 5 4 40 - <_> - 0 - - 12 50 16 6 - <_> - 1 - - 2 0 11 5 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 14 49 10 2 - <_> - 2 - - 4 32 2 8 - <_> - 8 - - 29 25 2 38 - <_> - 4 - - 1 13 19 8 - <_> - 3 - - 0 37 25 24 - <_> - 0 - - 9 11 20 3 - <_> - 4 - - 7 34 14 3 - <_> - 3 - - 28 56 1 5 - <_> - 4 - - 10 20 17 14 - <_> - 1 - - 8 55 18 1 - <_> - 8 - - 16 61 7 2 - <_> - 4 - - 16 48 13 10 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 17 18 9 12 - <_> - 9 - - 12 35 9 11 - <_> - 3 - - 3 19 8 23 - <_> - 4 - - 28 15 3 36 - <_> - 1 - - 26 6 2 18 - <_> - 0 - - 3 54 3 4 - <_> - 0 - - 13 50 3 7 - <_> - 7 - - 17 32 2 3 - <_> - 5 - - 8 56 17 4 - <_> - 4 - - 0 29 13 10 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 10 15 1 42 - <_> - 7 - - 30 13 1 6 - <_> - 2 - - 17 28 1 9 - <_> - 5 - - 20 12 4 28 - <_> - 0 - - 4 45 26 18 - <_> - 5 - - 15 0 11 13 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 16 8 7 54 - <_> - 3 - - 8 53 12 1 - <_> - 9 - - 15 57 2 5 - <_> - 8 - - 29 37 1 6 - <_> - 0 - - 12 0 1 12 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 7 35 3 2 - <_> - 8 - - 4 15 10 6 - <_> - 5 - - 19 56 7 5 - <_> - 1 - - 20 49 9 5 - <_> - 5 - - 16 48 15 8 - <_> - 1 - - 17 45 2 3 - <_> - 1 - - 1 10 15 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 3 23 28 14 - <_> - 4 - - 16 51 10 4 - <_> - 9 - - 18 40 1 7 - <_> - 4 - - 15 36 4 1 - <_> - 5 - - 15 46 13 8 - <_> - 4 - - 7 54 11 1 - <_> - 3 - - 2 55 18 5 - <_> - 2 - - 9 52 10 8 - <_> - 4 - - 13 30 5 7 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 17 16 1 5 - <_> - 8 - - 22 6 5 12 - <_> - 3 - - 15 13 12 27 - <_> - 2 - - 11 11 12 6 - <_> - 1 - - 10 62 16 1 - <_> - 4 - - 12 47 11 1 - <_> - 1 - - 25 12 5 15 - <_> - 0 - - 21 26 4 8 - <_> - 3 - - 13 21 3 10 - <_> - 2 - - 17 3 4 15 - <_> - 2 - - 15 37 3 10 - <_> - 7 - - 2 55 14 2 - <_> - 2 - - 12 37 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 2 56 21 3 - <_> - 1 - - 4 20 20 8 - <_> - 3 - - 8 27 6 28 - <_> - 2 - - 16 58 1 5 - <_> - 9 - - 11 19 9 1 - <_> - 1 - - 28 45 2 9 - <_> - 8 - - 17 11 1 2 - <_> - 0 - - 3 39 4 10 - <_> - 3 - - 15 10 11 7 - <_> - 1 - - 11 8 12 1 - <_> - 4 - - 2 38 18 24 - <_> - 1 - - 12 54 17 1 - <_> - 1 - - 14 56 14 1 - <_> - 7 - - 25 18 2 14 - <_> - 4 - - 25 0 3 6 - <_> - 0 - - 17 18 3 1 - <_> - 9 - - 1 8 25 3 - <_> - 4 - - 8 14 7 4 - <_> - 4 - - 18 32 2 26 - <_> - 2 - - 12 41 13 15 - <_> - 2 - - 5 24 11 2 - <_> - 9 - - 13 39 5 1 - <_> - 9 - - 1 36 13 3 - <_> - 2 - - 21 8 4 8 - <_> - 5 - - 16 5 9 17 - <_> - 5 - - 6 37 22 26 - <_> - 0 - - 27 49 2 1 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 38 1 5 - <_> - 9 - - 13 24 2 5 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 10 38 12 2 - <_> - 8 - - 8 3 3 12 - <_> - 3 - - 2 56 12 1 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 14 23 3 6 - <_> - 1 - - 10 37 5 1 - <_> - 1 - - 6 53 7 4 - <_> - 4 - - 7 39 11 12 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 0 - - 29 31 1 1 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 23 48 7 12 - <_> - 1 - - 18 19 1 5 - <_> - 4 - - 19 24 12 21 - <_> - 4 - - 20 5 8 39 - <_> - 1 - - 7 14 17 4 - <_> - 5 - - 7 44 3 17 - <_> - 1 - - 14 52 5 6 - <_> - 7 - - 15 24 2 18 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 11 61 8 1 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 2 18 22 3 - <_> - 4 - - 8 60 7 3 - <_> - 2 - - 6 50 11 4 - <_> - 1 - - 13 55 18 3 - <_> - 2 - - 20 58 2 2 - <_> - 9 - - 30 39 1 3 - <_> - 5 - - 13 26 5 4 - <_> - 0 - - 19 15 3 20 - <_> - 0 - - 14 6 2 52 - <_> - 4 - - 11 36 10 5 - <_> - 4 - - 22 31 1 27 - <_> - 4 - - 13 7 5 4 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 9 12 3 20 - <_> - 5 - - 10 38 14 3 - <_> - 4 - - 13 41 10 22 - <_> - 4 - - 10 41 11 2 - <_> - 1 - - 14 54 6 8 - <_> - 4 - - 19 3 1 51 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 10 28 18 6 - <_> - 4 - - 0 6 21 52 - <_> - 3 - - 16 33 4 4 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 28 33 2 10 - <_> - 5 - - 0 47 13 2 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 10 52 13 3 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 49 20 1 - <_> - 0 - - 13 57 18 1 - <_> - 7 - - 4 51 20 7 - <_> - 4 - - 22 29 6 7 - <_> - 3 - - 8 59 15 4 - <_> - 2 - - 29 59 1 1 - <_> - 9 - - 27 6 4 3 - <_> - 0 - - 14 18 2 4 - <_> - 9 - - 18 2 1 37 - <_> - 2 - - 11 4 8 13 - <_> - 8 - - 25 62 5 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 3 62 28 1 - <_> - 0 - - 5 48 17 2 - <_> - 4 - - 15 39 6 14 - <_> - 5 - - 5 62 10 1 - <_> - 7 - - 5 52 26 2 - <_> - 3 - - 19 20 3 7 - <_> - 2 - - 15 14 2 6 - <_> - 5 - - 6 24 4 22 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 18 55 2 2 - <_> - 4 - - 9 4 14 43 - <_> - 3 - - 10 8 10 12 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 7 24 2 14 - <_> - 0 - - 13 35 8 16 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 12 33 7 23 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 18 20 3 7 - <_> - 1 - - 2 12 20 4 - <_> - 1 - - 7 20 11 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 11 51 7 12 - <_> - 7 - - 13 12 10 1 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 30 4 1 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 1 40 28 20 - <_> - 7 - - 5 62 8 1 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 7 50 5 7 - <_> - 0 - - 16 17 4 5 - <_> - 2 - - 19 54 8 5 - <_> - 3 - - 6 22 10 5 - <_> - 9 - - 10 38 2 9 - <_> - 0 - - 13 25 5 7 - <_> - 0 - - 16 24 11 19 - <_> - 7 - - 30 43 1 7 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 42 1 11 - <_> - 1 - - 27 37 4 23 - <_> - 3 - - 10 15 1 42 - <_> - 4 - - 11 22 1 10 - <_> - 1 - - 14 6 5 8 - <_> - 0 - - 1 48 3 1 - <_> - 0 - - 16 50 12 2 - <_> - 1 - - 3 45 5 5 - <_> - 8 - - 29 36 1 20 - <_> - 7 - - 3 26 21 19 - <_> - 8 - - 30 22 1 6 - <_> - 4 - - 12 42 8 8 - <_> - 5 - - 19 5 4 46 - <_> - 5 - - 23 36 4 20 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 9 29 11 7 - <_> - 0 - - 27 35 1 1 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 10 38 7 3 - <_> - 3 - - 23 45 4 4 - <_> - 2 - - 17 37 2 17 - <_> - 7 - - 16 11 1 1 - <_> - 3 - - 18 0 8 36 - <_> - 1 - - 26 8 5 20 - <_> - 4 - - 10 59 13 1 - <_> - 4 - - 24 7 6 14 - <_> - 4 - - 13 8 10 5 - <_> - 2 - - 0 42 2 10 - <_> - 7 - - 2 12 18 1 - <_> - 1 - - 9 56 8 1 - <_> - 1 - - 18 17 2 9 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 17 13 6 14 - <_> - 0 - - 10 35 1 23 - <_> - 2 - - 24 10 3 21 - <_> - 3 - - 6 19 5 34 - <_> - 1 - - 7 45 1 4 - <_> - 2 - - 16 19 2 6 - <_> - 3 - - 24 14 2 30 - <_> - 9 - - 12 61 16 1 - <_> - 5 - - 23 27 4 10 - <_> - 5 - - 4 62 7 1 - <_> - 3 - - 3 49 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 27 18 1 4 - <_> - 4 - - 12 1 11 46 - <_> - 1 - - 11 8 13 1 - <_> - 1 - - 0 9 16 1 - <_> - 2 - - 9 22 16 24 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 17 25 8 21 - <_> - 0 - - 3 55 22 6 - <_> - 3 - - 17 1 1 6 - <_> - 5 - - 13 9 8 5 - <_> - 9 - - 19 28 1 18 - <_> - 1 - - 11 55 2 7 - <_> - 1 - - 13 13 12 5 - <_> - 4 - - 8 60 7 3 - <_> - 0 - - 11 38 4 12 - <_> - 4 - - 12 34 6 15 - <_> - 5 - - 8 40 4 22 - <_> - 1 - - 22 45 1 13 - <_> - 5 - - 3 33 10 19 - <_> - 0 - - 29 45 2 7 - <_> - 0 - - 17 51 7 5 - <_> - 3 - - 15 53 2 1 - <_> - 4 - - 5 59 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 10 42 14 13 - <_> - 1 - - 10 4 7 14 - <_> - 4 - - 11 25 11 10 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 12 1 13 12 - <_> - 1 - - 11 19 1 4 - <_> - 9 - - 14 7 5 12 - <_> - 8 - - 10 23 2 5 - <_> - 5 - - 16 23 1 10 - <_> - 2 - - 8 62 20 1 - <_> - 4 - - 9 16 16 3 - <_> - 7 - - 29 27 1 11 - <_> - 7 - - 3 60 28 3 - <_> - 4 - - 15 44 2 2 - <_> - 5 - - 16 62 1 1 - <_> - 8 - - 17 21 1 4 - <_> - 0 - - 18 33 9 11 - <_> - 3 - - 17 35 3 5 - <_> - 2 - - 10 51 8 5 - <_> - 3 - - 28 40 3 7 - <_> - 7 - - 21 42 1 18 - <_> - 9 - - 16 18 2 1 - <_> - 2 - - 20 15 1 8 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 14 0 12 17 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 12 9 6 12 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 4 1 14 16 - <_> - 2 - - 11 62 10 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 29 22 2 2 - <_> - 3 - - 13 15 13 15 - <_> - 9 - - 12 38 5 1 - <_> - 2 - - 8 35 6 11 - <_> - 7 - - 6 36 14 2 - <_> - 4 - - 13 36 3 4 - <_> - 0 - - 7 19 22 6 - <_> - 2 - - 15 41 4 15 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 24 8 1 - <_> - 0 - - 6 55 6 1 - <_> - 8 - - 13 17 5 3 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 24 44 3 7 - <_> - 0 - - 2 39 16 2 - <_> - 1 - - 15 54 1 3 - <_> - 9 - - 17 17 1 14 - <_> - 8 - - 13 56 1 1 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 30 3 1 43 - <_> - 7 - - 15 57 12 1 - <_> - 2 - - 29 32 2 26 - <_> - 7 - - 16 38 2 4 - <_> - 0 - - 21 25 1 16 - <_> - 0 - - 4 46 2 7 - <_> - 7 - - 26 13 5 4 - <_> - 3 - - 0 48 17 9 - <_> - 1 - - 12 32 5 20 - <_> - 2 - - 10 57 10 4 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 4 8 - <_> - 0 - - 11 11 9 6 - <_> - 4 - - 18 18 1 33 - <_> - 3 - - 10 0 5 29 - <_> - 2 - - 18 13 7 9 - <_> - 4 - - 2 59 13 4 - <_> - 1 - - 15 53 7 4 - <_> - 2 - - 11 49 16 2 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 19 21 6 38 - <_> - 1 - - 6 53 7 4 - <_> - 5 - - 14 19 1 9 - <_> - 2 - - 13 22 11 17 - <_> - 1 - - 14 7 3 12 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 5 19 4 14 - <_> - 4 - - 9 35 3 8 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 29 62 2 1 - <_> - 8 - - 18 51 1 5 - <_> - 2 - - 13 58 13 1 - <_> - 2 - - 6 50 16 3 - <_> - 7 - - 15 27 5 2 - <_> - 5 - - 0 43 11 13 - <_> - 2 - - 7 29 3 16 - <_> - 3 - - 11 42 7 6 - <_> - 4 - - 18 39 1 2 - <_> - 2 - - 21 55 10 2 - <_> - 0 - - 27 37 4 2 - <_> - 0 - - 13 37 15 7 - <_> - 1 - - 1 28 26 18 - <_> - 0 - - 12 38 1 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 18 8 7 2 - <_> - 2 - - 18 6 13 1 - <_> - 7 - - 8 59 23 2 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 6 20 23 7 - <_> - 1 - - 12 53 4 10 - <_> - 0 - - 13 14 2 12 - <_> - 8 - - 10 62 7 1 - <_> - 9 - - 30 33 1 3 - <_> - 7 - - 15 12 2 5 - <_> - 9 - - 17 14 2 38 - <_> - 5 - - 20 17 1 25 - <_> - 1 - - 11 0 5 1 - <_> - 0 - - 19 37 5 23 - <_> - 7 - - 2 5 1 27 - <_> - 2 - - 22 48 1 9 - <_> - 5 - - 18 25 2 13 - <_> - 3 - - 8 11 6 20 - <_> - 1 - - 0 29 27 1 - <_> - 3 - - 15 21 2 9 - <_> - 2 - - 16 37 13 18 - <_> - 0 - - 2 38 3 21 - <_> - 5 - - 14 31 3 21 - <_> - 4 - - 10 8 7 16 - <_> - 1 - - 7 29 21 12 - <_> - 1 - - 25 47 4 14 - - diff --git a/data/softcascade/soft-cascade-17.12.2012.xml b/data/softcascade/soft-cascade-17.12.2012.xml deleted file mode 100644 index 53b331771b..0000000000 --- a/data/softcascade/soft-cascade-17.12.2012.xml +++ /dev/null @@ -1,61409 +0,0 @@ - - - - - - - - - BOOST - ICF - 2 - 64 - 128 - 4 - - <_> - -1 - 1024 - - <_> - -9.5012789964675903e-01 - - 1 2 0 1.8500000000000000e+01 0 -1 1 4.3500000000000000e+01 - -2 -3 2 1.9450000000000000e+02 - - -9.5012789964675903e-01 -2.9720270633697510e-01 - -2.9430621862411499e-01 7.3214149475097656e-01 - <_> - -1.8469017744064331e+00 - - 1 2 3 1.8500000000000000e+01 0 -1 4 2.2500000000000000e+01 - -2 -3 5 7.5000000000000000e+00 - - -8.9677393436431885e-01 -1.8941508233547211e-01 - 7.5006955862045288e-01 -3.4874141216278076e-01 - <_> - -1.9278457164764404e+00 - - 1 2 6 2.5000000000000000e+00 0 -1 7 3.5000000000000000e+00 - -2 -3 8 7.6500000000000000e+01 - - -5.5432754755020142e-01 6.0192030668258667e-01 - -8.6220905184745789e-02 -7.8830271959304810e-01 - <_> - -2.0459990501403809e+00 - - 1 2 9 2.8050000000000000e+02 0 -1 10 3.0500000000000000e+01 - -2 -3 11 2.0650000000000000e+02 - - -7.6523125171661377e-01 6.2897056341171265e-01 - -6.1464875936508179e-01 1.4870776236057281e-01 - <_> - -1.9268010854721069e+00 - - 1 2 12 2.5000000000000000e+00 0 -1 13 1.3950000000000000e+02 - -2 -3 14 4.2500000000000000e+01 - - 5.1907974481582642e-01 -6.7812407016754150e-01 - -5.7240998744964600e-01 -3.5707135684788227e-03 - <_> - -2.0900535583496094e+00 - - 1 2 15 6.5000000000000000e+00 0 -1 16 15. -2 -3 17 - 5.5000000000000000e+00 - - -9.2232090234756470e-01 9.2363566160202026e-01 - -4.0120652318000793e-01 2.3156598210334778e-01 - <_> - -1.7761936187744141e+00 - - 1 2 18 5.0000000000000000e-01 0 -1 19 9.5000000000000000e+00 - -2 -3 20 5.3750000000000000e+02 - - -9.7140210866928101e-01 3.4920582175254822e-01 - 3.1386005878448486e-01 -4.9332338571548462e-01 - <_> - -2.0153183937072754e+00 - - 1 2 21 1.7500000000000000e+01 0 -1 22 6.8500000000000000e+01 - -2 -3 23 1.6500000000000000e+01 - - -2.3912493884563446e-01 3.3838593959808350e-01 - -7.1801131963729858e-01 5.3687918186187744e-01 - <_> - -2.1310541629791260e+00 - - 1 2 24 2.3450000000000000e+02 0 -1 25 1.0500000000000000e+01 - -2 -3 26 1.9500000000000000e+01 - - -1.1573559045791626e-01 5.1111555099487305e-01 - -2.8667950630187988e-01 -9.5794141292572021e-01 - <_> - -2.2023301124572754e+00 - - 1 2 27 1.3850000000000000e+02 0 -1 28 452. -2 -3 29 - 7.5000000000000000e+00 - - -1.5731714665889740e-01 6.3469970226287842e-01 - -8.0850583314895630e-01 -7.1276061236858368e-02 - <_> - -1.6770468950271606e+00 - - 1 2 30 6.5000000000000000e+00 0 -1 31 4.5000000000000000e+00 - -2 -3 32 5.0000000000000000e-01 - - 5.2528321743011475e-01 -7.8995868563652039e-02 - 9.5720395445823669e-02 -5.6723904609680176e-01 - <_> - -1.3941235542297363e+00 - - 1 2 33 3.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 2.5000000000000000e+00 - - -5.7468622922897339e-01 2.0731732249259949e-01 - 5.8709150552749634e-01 -2.1824225783348083e-02 - <_> - -1.5158585309982300e+00 - - 1 2 36 3.8750000000000000e+02 0 -1 37 9.7750000000000000e+02 - -2 -3 38 1.9650000000000000e+02 - - -5.8788299560546875e-01 6.3032716512680054e-01 - 4.9424678087234497e-01 -1.3836935162544250e-01 - <_> - -1.0430263280868530e+00 - - 1 2 39 5.5000000000000000e+00 0 -1 40 1.7350000000000000e+02 - -2 -3 41 9.5000000000000000e+00 - - 4.9170929193496704e-01 -7.5231981277465820e-01 - 4.7283220291137695e-01 -1.1902561783790588e-01 - <_> - -1.1032968759536743e+00 - - 1 2 42 2.5000000000000000e+00 0 -1 43 1.3500000000000000e+01 - -2 -3 44 1.1500000000000000e+01 - - -3.6969792842864990e-01 3.7228900194168091e-01 - 5.8657836914062500e-01 -1.9372792541980743e-01 - <_> - -1.5280647277832031e+00 - - 1 2 45 2.8150000000000000e+02 0 -1 46 4.2450000000000000e+02 - -2 -3 47 2.1250000000000000e+02 - - -5.8411449193954468e-02 7.8837996721267700e-01 - -4.7494259476661682e-01 2.8464019298553467e-01 - <_> - -1.0321290493011475e+00 - - 1 2 48 1.5000000000000000e+00 0 -1 49 4.5000000000000000e+00 - -2 -3 50 5.5950000000000000e+02 - - -6.0609322786331177e-01 4.9593561887741089e-01 - 1.8881231546401978e-01 -4.0145736932754517e-01 - <_> - -9.3644380569458008e-01 - - 1 2 51 7.5000000000000000e+00 0 -1 52 1.4500000000000000e+01 - -2 -3 53 6.5000000000000000e+00 - - -4.1585260629653931e-01 2.4648176133632660e-01 - 5.6837874650955200e-01 -1.3694801926612854e-01 - <_> - -1.0617676973342896e+00 - - 1 2 54 4.5000000000000000e+00 0 -1 55 1.2500000000000000e+01 - -2 -3 56 5.0000000000000000e-01 - - -4.3339017033576965e-01 4.7121417522430420e-01 - 1.8128056824207306e-01 -5.1285779476165771e-01 - <_> - -6.2032651901245117e-01 - - 1 2 57 1.5000000000000000e+00 0 -1 58 1.5000000000000000e+00 - -2 -3 59 2.7500000000000000e+01 - - -6.2779033184051514e-01 1.0640925168991089e-01 - 4.6505826711654663e-01 -1.6317188739776611e-01 - <_> - -6.5824747085571289e-01 - - 1 2 60 7.5000000000000000e+00 0 -1 61 167. -2 -3 62 - 1.8250000000000000e+02 - - 2.4175660312175751e-01 -5.8483225107192993e-01 - 2.0644801855087280e-01 -8.0665886402130127e-01 - <_> - -7.1831238269805908e-01 - - 1 2 63 6.9500000000000000e+01 0 -1 64 7.6500000000000000e+01 - -2 -3 65 4.5000000000000000e+00 - - 7.2556771337985992e-02 -6.5026998519897461e-01 - 5.9127175807952881e-01 -6.0064859688282013e-02 - <_> - -3.6641231179237366e-01 - - 1 2 66 2.5000000000000000e+00 0 -1 67 9.5000000000000000e+00 - -2 -3 68 5.0000000000000000e-01 - - 1. -8.7841242551803589e-01 5.2141785621643066e-01 - -7.7443666756153107e-02 - <_> - -5.2976346015930176e-01 - - 1 2 69 5.5000000000000000e+00 0 -1 70 4.5000000000000000e+00 - -2 -3 71 5.5000000000000000e+00 - - -3.3286893367767334e-01 3.1164222955703735e-01 - -6.4843946695327759e-01 -9.4713028520345688e-03 - <_> - -1.0462005436420441e-01 - - 1 2 72 2.5000000000000000e+00 0 -1 73 2.2500000000000000e+01 - -2 -3 74 3.9550000000000000e+02 - - -2.2241120040416718e-01 4.2514342069625854e-01 - -6.2022697925567627e-01 -2.1613531280308962e-03 - <_> - -4.1905093193054199e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.0500000000000000e+01 - -2 -3 77 5.0000000000000000e-01 - - -7.3456168174743652e-01 5.1736986637115479e-01 - 3.2318654656410217e-01 -3.1443089246749878e-01 - <_> - -2.1851119399070740e-01 - - 1 2 78 3.1050000000000000e+02 0 -1 79 3.8150000000000000e+02 - -2 -3 80 8.0850000000000000e+02 - - -5.4317831993103027e-01 2.3649862408638000e-01 - 4.4128182530403137e-01 -7.1100425720214844e-01 - <_> - -1.1222758144140244e-01 - - 1 2 81 1.3650000000000000e+02 0 -1 82 3.7750000000000000e+02 - -2 -3 83 2.6650000000000000e+02 - - 4.9750706553459167e-01 -6.6604055464267731e-02 - 4.3410289287567139e-01 -8.9592015743255615e-01 - <_> - -8.8000379502773285e-02 - - 1 2 84 2.5000000000000000e+00 0 -1 85 1.4500000000000000e+01 - -2 -3 86 2.0850000000000000e+02 - - -9.6911776065826416e-01 1. -1.3952983915805817e-01 - 3.3815029263496399e-01 - <_> - -1.5849213302135468e-01 - - 1 2 87 7.7500000000000000e+01 0 -1 88 5.9500000000000000e+01 - -2 -3 89 1.7500000000000000e+01 - - -8.0255717039108276e-01 6.2929701805114746e-01 - -2.9795819520950317e-01 4.0392214059829712e-01 - <_> - 1.6327178478240967e-01 - - 1 2 90 3.9550000000000000e+02 0 -1 91 1.0489500000000000e+04 - -2 -3 92 5.0000000000000000e-01 - - -9.4078457355499268e-01 7.8851234912872314e-01 - 2.0467810332775116e-01 -3.1230095028877258e-01 - <_> - 4.3822142481803894e-01 - - 1 2 93 5.0000000000000000e-01 0 -1 94 1.2500000000000000e+01 - -2 -3 95 1.5000000000000000e+00 - - -5.5812388658523560e-01 4.5648851990699768e-01 - 4.5675429701805115e-01 -1.3456618785858154e-01 - <_> - 3.4469082951545715e-01 - - 1 2 96 3.5000000000000000e+00 0 -1 97 3.6500000000000000e+01 - -2 -3 98 2.5000000000000000e+00 - - -3.0035567283630371e-01 5.0112813711166382e-01 - -8.6166876554489136e-01 3.7724488973617554e-01 - <_> - 5.6956720352172852e-01 - - 1 2 99 1.0550000000000000e+02 0 -1 100 - 1.2500000000000000e+01 -2 -3 101 2.5000000000000000e+00 - - 2.2487638890743256e-01 -4.5224958658218384e-01 - 3.0894690752029419e-01 -7.5535982847213745e-01 - <_> - 2.1666103601455688e-01 - - 1 2 102 2.8500000000000000e+01 0 -1 103 - 3.5000000000000000e+00 -2 -3 104 1.7500000000000000e+01 - - -3.5290616750717163e-01 1.8281166255474091e-01 - -7.3649674654006958e-01 5.4959553480148315e-01 - <_> - 5.0689119100570679e-01 - - 1 2 105 3.5000000000000000e+00 0 -1 106 5237. -2 -3 107 - 5.0000000000000000e-01 - - 2.9023018479347229e-01 -5.4936188459396362e-01 - 3.6571535468101501e-01 -5.0305444002151489e-01 - <_> - 5.0967818498611450e-01 - - 1 2 108 1.5500000000000000e+01 0 -1 109 - 4.5000000000000000e+00 -2 -3 110 1.0250000000000000e+02 - - -6.5840584039688110e-01 5.8356761932373047e-01 - -3.6643344163894653e-01 2.2655297815799713e-01 - <_> - 9.0086126327514648e-01 - - 1 2 111 1.0500000000000000e+01 0 -1 112 - 5.0000000000000000e-01 -2 -3 113 1.2635000000000000e+03 - - 5.0495159626007080e-01 -4.8832163214683533e-02 - 2.2899670898914337e-01 -4.9697116017341614e-01 - <_> - 8.7307834625244141e-01 - - 1 2 114 2.9150000000000000e+02 0 -1 115 - 5.5000000000000000e+00 -2 -3 116 9.7500000000000000e+01 - - -7.9401218891143799e-01 -8.0010555684566498e-02 - 5.7397758960723877e-01 -2.7782956138253212e-02 - <_> - 1.0845705270767212e+00 - - 1 2 117 5.0000000000000000e-01 0 -1 118 284. -2 -3 119 - 2.5000000000000000e+00 - - 8.4017835557460785e-02 -9.6925717592239380e-01 - 3.7892198562622070e-01 -1.2604229152202606e-01 - <_> - 1.1155402660369873e+00 - - 1 2 120 1.5450000000000000e+02 0 -1 121 - 1.5000000000000000e+00 -2 -3 122 1592. - - 1.7225900292396545e-01 -3.6658996343612671e-01 - 6.2922006845474243e-01 -9.0177220106124878e-01 - <_> - 1.0400385856628418e+00 - - 1 2 123 5.5000000000000000e+00 0 -1 124 - 1.7500000000000000e+01 -2 -3 125 1.0550000000000000e+02 - - -9.7996032238006592e-01 7.8947758674621582e-01 - -7.5501605868339539e-02 4.3294844031333923e-01 - <_> - 1.1339187622070312e+00 - - 1 2 126 9.7500000000000000e+01 0 -1 127 - 2.9250000000000000e+02 -2 -3 128 1.4295000000000000e+03 - - -1.4177480340003967e-01 6.4076822996139526e-01 - 1.1370572447776794e-01 -4.2702060937881470e-01 - <_> - 1.0979689359664917e+00 - - 1 2 129 1.5000000000000000e+00 0 -1 130 - 1.5000000000000000e+00 -2 -3 131 3.2500000000000000e+01 - - -5.7480251789093018e-01 4.6609196066856384e-01 - -7.4496293067932129e-01 -3.5949852317571640e-02 - <_> - 1.0266015529632568e+00 - - 1 2 132 1.6350000000000000e+02 0 -1 133 - 1.1500000000000000e+01 -2 -3 134 1.8850000000000000e+02 - - -7.1367286145687103e-02 4.7941169142723083e-01 - 5.1196765899658203e-01 -9.4453811645507812e-01 - <_> - 9.2505228519439697e-01 - - 1 2 135 2.5000000000000000e+00 0 -1 136 - 2.1500000000000000e+01 -2 -3 137 1.1500000000000000e+01 - - -3.8950824737548828e-01 3.6323049664497375e-01 - 5.6324285268783569e-01 -1.8082305788993835e-01 - <_> - 1.1348617076873779e+00 - - 1 2 138 3.5000000000000000e+00 0 -1 139 - 3.5000000000000000e+00 -2 -3 140 3.6500000000000000e+01 - - -7.0641523599624634e-01 2.0980948209762573e-01 - -5.3471750020980835e-01 7.4605226516723633e-01 - <_> - 1.4714344739913940e+00 - - 1 2 141 1.5000000000000000e+00 0 -1 142 - 3.5000000000000000e+00 -2 -3 143 1.3250000000000000e+02 - - -2.5343874096870422e-01 4.9269351363182068e-01 - 4.8652476072311401e-01 -3.2821950316429138e-01 - <_> - 1.7966657876968384e+00 - - 1 2 144 3.5000000000000000e+00 0 -1 145 1783. -2 -3 146 - 1.2050000000000000e+02 - - 3.2523140311241150e-01 -7.0333176851272583e-01 - -4.5311710238456726e-01 2.2552411258220673e-01 - <_> - 1.7584462165832520e+00 - - 1 2 147 1.0250000000000000e+02 0 -1 148 - 5.0000000000000000e-01 -2 -3 149 2.4500000000000000e+01 - - 8.2317180931568146e-02 -5.6285864114761353e-01 - -6.0523116588592529e-01 4.0714663267135620e-01 - <_> - 1.7976785898208618e+00 - - 1 2 150 3.5000000000000000e+00 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 5.0000000000000000e-01 - - -3.0874970555305481e-01 3.7341198325157166e-01 - 2.7862945199012756e-01 -4.5596393942832947e-01 - <_> - 1.7746678590774536e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 2.5000000000000000e+00 -2 -3 155 8.5000000000000000e+00 - - -6.1464399099349976e-01 5.8418504893779755e-02 - 5.7755649089813232e-01 -2.3010652512311935e-02 - <_> - 2.0253760814666748e+00 - - 1 2 156 5.0000000000000000e-01 0 -1 157 - 4.0850000000000000e+02 -2 -3 158 3.0500000000000000e+01 - - 6.2876778841018677e-01 -1.9982345402240753e-01 - -3.5285717248916626e-01 3.6293578147888184e-01 - <_> - 1.8680905103683472e+00 - - 1 2 159 7.5000000000000000e+00 0 -1 160 - 2.5000000000000000e+00 -2 -3 161 189. - - 2.4808044731616974e-01 -2.6951324939727783e-01 - 7.8451949357986450e-01 -9.3933510780334473e-01 - <_> - 2.0279662609100342e+00 - - 1 2 162 6.5000000000000000e+00 0 -1 163 100. -2 -3 164 - 8.5500000000000000e+01 - - 7.3292237520217896e-01 -8.0948019027709961e-01 - -6.9746565818786621e-01 1.5987591445446014e-01 - <_> - 1.8203108310699463e+00 - - 1 2 165 3.5000000000000000e+00 0 -1 166 - 5.0000000000000000e-01 -2 -3 167 6.1500000000000000e+01 - - -4.1079363226890564e-01 4.8067408800125122e-01 - -6.4559924602508545e-01 -1.4250530861318111e-02 - <_> - 2.2858772277832031e+00 - - 1 2 168 9.5000000000000000e+00 0 -1 169 - 5.5000000000000000e+00 -2 -3 170 1.5000000000000000e+00 - - -6.8022292852401733e-01 4.7293016314506531e-01 - 7.0228189229965210e-01 -2.0867574959993362e-02 - <_> - 2.4012672901153564e+00 - - 1 2 171 1.7650000000000000e+02 0 -1 172 - 5.3385000000000000e+03 -2 -3 173 6.5000000000000000e+00 - - 1.1539006233215332e-01 -7.8521311283111572e-01 - 5.3917598724365234e-01 -9.2911219596862793e-01 - <_> - 2.3799149990081787e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 2.5000000000000000e+00 -2 -3 176 1.5000000000000000e+00 - - -2.1352419629693031e-02 -6.8268537521362305e-01 - 4.3736723065376282e-01 -3.1157660484313965e-01 - <_> - 2.1095426082611084e+00 - - 1 2 177 1.5000000000000000e+00 0 -1 178 - 4.9500000000000000e+01 -2 -3 179 1.0150000000000000e+02 - - -7.1707659959793091e-01 3.5209715366363525e-01 - -5.0708782672882080e-01 7.8934565186500549e-02 - <_> - 2.7217743396759033e+00 - - 1 2 180 2.7350000000000000e+02 0 -1 181 - 1.2495000000000000e+03 -2 -3 182 1.4500000000000000e+01 - - -5.0943363457918167e-02 8.7893438339233398e-01 - -1.0237722657620907e-02 -5.5019938945770264e-01 - <_> - 2.4565997123718262e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.0500000000000000e+01 -2 -3 185 5.5000000000000000e+00 - - -3.5214826464653015e-01 5.9661501646041870e-01 - -2.7218982577323914e-01 4.9512678384780884e-01 - <_> - 2.8743238449096680e+00 - - 1 2 186 4.5000000000000000e+00 0 -1 187 - 5.5000000000000000e+00 -2 -3 188 577. - - 4.3948319554328918e-01 -3.0406862497329712e-01 - -5.0375759601593018e-01 7.1215182542800903e-02 - <_> - 2.7736363410949707e+00 - - 1 2 189 2.1500000000000000e+01 0 -1 190 - 5.5000000000000000e+00 -2 -3 191 1.5000000000000000e+00 - - 4.1727577336132526e-03 -7.4696260690689087e-01 - -5.2629309892654419e-01 2.2158136963844299e-01 - <_> - 2.6128091812133789e+00 - - 1 2 192 5.0000000000000000e-01 0 -1 193 - 2.5000000000000000e+00 -2 -3 194 2.5000000000000000e+00 - - 7.3062634468078613e-01 -9.8423433303833008e-01 - 2.8110432624816895e-01 -1.6082715988159180e-01 - <_> - 2.9834272861480713e+00 - - 1 2 195 1.3500000000000000e+01 0 -1 196 - 7.9150000000000000e+02 -2 -3 197 9.5000000000000000e+00 - - 7.1296024322509766e-01 -7.4958539009094238e-01 - 3.7061801552772522e-01 -1.2306307256221771e-01 - <_> - 3.2170827388763428e+00 - - 1 2 198 1.6065000000000000e+03 0 -1 199 - 5.5000000000000000e+00 -2 -3 200 2.0275000000000000e+03 - - -3.0168825387954712e-01 2.3365539312362671e-01 - 6.6802793741226196e-01 -5.8256161212921143e-01 - <_> - 3.1492726802825928e+00 - - 1 2 201 4.1250000000000000e+02 0 -1 202 - 2.0450000000000000e+02 -2 -3 203 2.7500000000000000e+01 - - -1.3608095049858093e-01 4.6414726972579956e-01 - -5.3371006250381470e-01 6.7616206407546997e-01 - <_> - 3.1982100009918213e+00 - - 1 2 204 8.3500000000000000e+01 0 -1 205 - 5.5000000000000000e+00 -2 -3 206 251. - - 4.8937290906906128e-02 8.2636904716491699e-01 - -8.5127645730972290e-01 8.0275185406208038e-02 - <_> - 3.2608339786529541e+00 - - 1 2 207 1.6905000000000000e+03 0 -1 208 - 3.3250000000000000e+02 -2 -3 209 4.0500000000000000e+01 - - 4.6938320994377136e-01 -3.5710576176643372e-01 - -3.4840288758277893e-01 4.0339687466621399e-01 - <_> - 3.5624730587005615e+00 - - 1 2 210 4.5500000000000000e+01 0 -1 211 - 5.5000000000000000e+00 -2 -3 212 1119. - - -1.0512005537748337e-01 3.5630321502685547e-01 - 3.0504852533340454e-01 -9.0767818689346313e-01 - <_> - 3.4595894813537598e+00 - - 1 2 213 5.0000000000000000e-01 0 -1 214 - 2.5000000000000000e+00 -2 -3 215 1.5000000000000000e+00 - - -6.3885670900344849e-01 3.9579227566719055e-01 - 1.1626762151718140e-01 -4.5416545867919922e-01 - <_> - 3.2765171527862549e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 1.1500000000000000e+01 -2 -3 218 4.5000000000000000e+00 - - -5.9969311952590942e-01 4.1484233736991882e-01 - -3.2088482379913330e-01 4.5076516270637512e-01 - <_> - 3.0572440624237061e+00 - - 1 2 219 5.5000000000000000e+00 0 -1 220 - 1.5000000000000000e+00 -2 -3 221 1.2500000000000000e+01 - - 1.7427183687686920e-01 -2.9311054944992065e-01 - 6.4205944538116455e-01 -9.0328532457351685e-01 - <_> - 3.2041997909545898e+00 - - 1 2 222 4.5000000000000000e+00 0 -1 223 - 7.5000000000000000e+00 -2 -3 224 5.1500000000000000e+01 - - -8.7655025720596313e-01 6.6966646909713745e-01 - 1.4695560932159424e-01 -5.8665174245834351e-01 - <_> - 3.5032150745391846e+00 - - 1 2 225 4.5000000000000000e+00 0 -1 226 979. -2 -3 227 - 5.0000000000000000e-01 - - -2.2506183385848999e-01 6.3425189256668091e-01 - -4.2429834604263306e-01 6.0787576436996460e-01 - <_> - 3.6615941524505615e+00 - - 1 2 228 5.7050000000000000e+02 0 -1 229 - 8.3850000000000000e+02 -2 -3 230 2.7850000000000000e+02 - - -1.0941934585571289e-01 4.8675090074539185e-01 - 5.6111901998519897e-01 -3.3019056916236877e-01 - <_> - 3.4909577369689941e+00 - - 1 2 231 119. 0 -1 232 7.7500000000000000e+01 -2 -3 233 - 9.5000000000000000e+00 - - -4.9900823831558228e-01 1.7894685268402100e-01 - -9.1172474622726440e-01 8.9065861701965332e-01 - <_> - 3.8275330066680908e+00 - - 1 2 234 1.5000000000000000e+00 0 -1 235 - 3.5000000000000000e+00 -2 -3 236 1.3250000000000000e+02 - - -6.7380899190902710e-01 3.3657526969909668e-01 - 4.9761232733726501e-01 -3.7721511721611023e-01 - <_> - 3.9486763477325439e+00 - - 1 2 237 2.9050000000000000e+02 0 -1 238 - 5.8650000000000000e+02 -2 -3 239 1.9550000000000000e+02 - - -6.9971680641174316e-01 4.3016415834426880e-01 - 5.5699282884597778e-01 -8.1054642796516418e-02 - <_> - 4.3176374435424805e+00 - - 1 2 240 1.5000000000000000e+00 0 -1 241 - 9.5000000000000000e+00 -2 -3 242 2.2725000000000000e+03 - - 4.6376305818557739e-01 -2.7650564908981323e-01 - -4.1137817502021790e-01 2.4273988604545593e-01 - <_> - 4.1106867790222168e+00 - - 1 2 243 6.5000000000000000e+00 0 -1 244 - 5.0000000000000000e-01 -2 -3 245 2.6500000000000000e+01 - - 1.7755906283855438e-01 -3.1547075510025024e-01 - 7.1589088439941406e-01 -8.6598944664001465e-01 - <_> - 4.0493078231811523e+00 - - 1 2 246 2.4500000000000000e+01 0 -1 247 - 7.5000000000000000e+00 -2 -3 248 1.5150000000000000e+02 - - -4.5098224282264709e-01 3.3610948920249939e-01 - 3.3537614345550537e-01 -5.4964864253997803e-01 - <_> - 4.3437886238098145e+00 - - 1 2 249 8.5500000000000000e+01 0 -1 250 - 6.7500000000000000e+01 -2 -3 251 2.2500000000000000e+01 - - -8.7396150827407837e-01 6.1177849769592285e-01 - -5.7394933700561523e-01 5.3601197898387909e-02 - <_> - 3.5774736404418945e+00 - - 1 2 252 1.8500000000000000e+01 0 -1 253 - 2.8500000000000000e+01 -2 -3 254 727. - - -1.4022175967693329e-01 3.5069212317466736e-01 - -7.6631480455398560e-01 4.6660822629928589e-01 - <_> - 3.4339537620544434e+00 - - 1 2 255 2.5000000000000000e+00 0 -1 256 - 1.0500000000000000e+01 -2 -3 257 1.1500000000000000e+01 - - -2.6909920573234558e-01 5.9753483533859253e-01 - -2.9939565062522888e-01 5.9079831838607788e-01 - <_> - 3.5545070171356201e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5000000000000000e+00 -2 -3 260 1.1500000000000000e+01 - - -3.5771971940994263e-01 4.3755933642387390e-01 - 1.2055332958698273e-01 -4.8447567224502563e-01 - <_> - 3.6163067817687988e+00 - - 1 2 261 2.5000000000000000e+00 0 -1 262 - 2.5000000000000000e+00 -2 -3 263 3.2500000000000000e+01 - - -3.5749617218971252e-01 4.9238750338554382e-01 - -4.1662833094596863e-01 2.3165223002433777e-01 - <_> - 3.4895346164703369e+00 - - 1 2 264 3.1050000000000000e+02 0 -1 265 - 1.0050000000000000e+02 -2 -3 266 8.5000000000000000e+00 - - -1.2677235901355743e-01 3.9842021465301514e-01 - -5.6282222270965576e-01 5.5186986923217773e-01 - <_> - 3.6868834495544434e+00 - - 1 2 267 2.5500000000000000e+01 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 1268. - - -9.5765352249145508e-01 1.9734899699687958e-01 - -5.6331878900527954e-01 5.9383141994476318e-01 - <_> - 4.0580706596374512e+00 - - 1 2 270 1.1265000000000000e+03 0 -1 271 - 1.7050000000000000e+02 -2 -3 272 8.0750000000000000e+02 - - 5.8629125356674194e-01 -1.2970197200775146e-01 - -3.2385781407356262e-01 6.9086676836013794e-01 - <_> - 4.2803778648376465e+00 - - 1 2 273 4.9500000000000000e+01 0 -1 274 192. -2 -3 275 - 6.5000000000000000e+00 - - 2.3941868543624878e-01 -5.5941039323806763e-01 - 3.9892393350601196e-01 -2.0006304979324341e-01 - <_> - 4.2550206184387207e+00 - - 1 2 276 1.2850000000000000e+02 0 -1 277 - 9.5000000000000000e+00 -2 -3 278 8.5000000000000000e+00 - - -2.0197376608848572e-01 2.9125767946243286e-01 - 2.2862918674945831e-01 -9.8660701513290405e-01 - <_> - 4.2192134857177734e+00 - - 1 2 279 7.5000000000000000e+00 0 -1 280 - 2.5000000000000000e+00 -2 -3 281 7.5000000000000000e+00 - - -5.1448464393615723e-01 3.8536703586578369e-01 - -6.9239240884780884e-01 -3.5807080566883087e-02 - <_> - 4.4406690597534180e+00 - - 1 2 282 2.5000000000000000e+00 0 -1 283 - 5.0000000000000000e-01 -2 -3 284 8.5000000000000000e+00 - - 5.0960946083068848e-01 -4.9593481421470642e-01 - 3.2813104987144470e-01 -3.3382579684257507e-01 - <_> - 4.4840297698974609e+00 - - 1 2 285 1326. 0 -1 286 612. -2 -3 287 1.9450000000000000e+02 - - -1. 7.9890018701553345e-01 -6.5918892621994019e-01 - 4.3361011892557144e-02 - <_> - 4.5319285392761230e+00 - - 1 2 288 2.7500000000000000e+01 0 -1 289 - 1.7500000000000000e+01 -2 -3 290 5.4450000000000000e+02 - - 1.7646867036819458e-01 -4.9880924820899963e-01 - 3.1044688820838928e-01 -7.8504896163940430e-01 - <_> - 4.3263564109802246e+00 - - 1 2 291 1.0500000000000000e+01 0 -1 292 - 1.1500000000000000e+01 -2 -3 293 1.0500000000000000e+01 - - -3.3414199948310852e-01 1.9703163206577301e-01 - 6.7141562700271606e-01 -4.7605592012405396e-01 - <_> - 4.6897392272949219e+00 - - 1 2 294 5.0000000000000000e-01 0 -1 295 - 1.5000000000000000e+00 -2 -3 296 1.1595000000000000e+03 - - -6.9713282585144043e-01 3.6338269710540771e-01 - -5.1299923658370972e-01 1.8765503168106079e-01 - <_> - 4.9953885078430176e+00 - - 1 2 297 5.0000000000000000e-01 0 -1 298 - 7.5000000000000000e+00 -2 -3 299 3.8265000000000000e+03 - - -7.9099249839782715e-01 4.3731418251991272e-01 - -8.8410943746566772e-02 -9.4131457805633545e-01 - <_> - 4.4915475845336914e+00 - - 1 2 300 5.5000000000000000e+00 0 -1 301 - 2.5000000000000000e+00 -2 -3 302 1.5500000000000000e+01 - - -6.8182158470153809e-01 3.5027420520782471e-01 - -5.4620689153671265e-01 6.2989845871925354e-02 - <_> - 4.6564993858337402e+00 - - 1 2 303 1.2450000000000000e+02 0 -1 304 - 4.1500000000000000e+01 -2 -3 305 4.3500000000000000e+01 - - -6.5387880802154541e-01 1.6495206952095032e-01 - -7.3650360107421875e-01 5.6925100088119507e-01 - <_> - 5.1468167304992676e+00 - - 1 2 306 3.5000000000000000e+00 0 -1 307 - 1.4050000000000000e+02 -2 -3 308 2.3075000000000000e+03 - - 4.9031701683998108e-01 -5.3763668984174728e-02 - -5.3901141881942749e-01 1.5980558097362518e-01 - <_> - 4.9970083236694336e+00 - - 1 2 309 5.5000000000000000e+00 0 -1 310 - 3.8250000000000000e+02 -2 -3 311 4.5000000000000000e+00 - - 1.3255308568477631e-01 -6.7066764831542969e-01 - 2.6553070545196533e-01 -3.9240267872810364e-01 - <_> - 5.3259134292602539e+00 - - 1 2 312 3.2500000000000000e+01 0 -1 313 - 1.5000000000000000e+00 -2 -3 314 3.5000000000000000e+00 - - 1.2956449389457703e-01 -3.9639618992805481e-01 - -7.3431020975112915e-01 4.9653601646423340e-01 - <_> - 5.1569843292236328e+00 - - 1 2 315 5.0000000000000000e-01 0 -1 316 - 3.5000000000000000e+00 -2 -3 317 5.0000000000000000e-01 - - -8.3922284841537476e-01 6.8794727325439453e-01 - 3.0406209826469421e-01 -1.6892936825752258e-01 - <_> - 5.3804125785827637e+00 - - 1 2 318 1.0350000000000000e+02 0 -1 319 - 2.8050000000000000e+02 -2 -3 320 5.5000000000000000e+00 - - 5.5797357112169266e-02 -4.8595803976058960e-01 - -1.2136862426996231e-01 5.7313364744186401e-01 - <_> - 5.3404531478881836e+00 - - 1 2 321 2.5500000000000000e+01 0 -1 322 - 1.7575000000000000e+03 -2 -3 323 1.3500000000000000e+01 - - 1.9259653985500336e-02 -6.0744369029998779e-01 - -6.7395132780075073e-01 7.1949076652526855e-01 - <_> - 5.1782426834106445e+00 - - 1 2 324 9.5000000000000000e+00 0 -1 325 - 3.8500000000000000e+01 -2 -3 326 5.0000000000000000e-01 - - -8.8507616519927979e-01 8.9975792169570923e-01 - 3.3316615223884583e-01 -1.6221044957637787e-01 - <_> - 5.3394045829772949e+00 - - 1 2 327 2.4500000000000000e+01 0 -1 328 - 2.0150000000000000e+02 -2 -3 329 1.0500000000000000e+01 - - -9.5301911234855652e-02 -9.8104661703109741e-01 - -5.8636808395385742e-01 1.6720375418663025e-01 - <_> - 5.5081224441528320e+00 - - 1 2 330 5.8500000000000000e+01 0 -1 331 - 1.4500000000000000e+01 -2 -3 332 2.5000000000000000e+00 - - 1.6871802508831024e-01 -5.5092507600784302e-01 - 8.8998925685882568e-01 -6.9766056537628174e-01 - <_> - 5.6306805610656738e+00 - - 1 2 333 3.3500000000000000e+01 0 -1 334 - 6.1500000000000000e+01 -2 -3 335 85. - - -7.0117294788360596e-01 1.2255829572677612e-01 - -8.1785792112350464e-01 6.1549854278564453e-01 - <_> - 5.6915154457092285e+00 - - 1 2 336 3.2500000000000000e+01 0 -1 337 - 5.0000000000000000e-01 -2 -3 338 63. - - 1.2218275666236877e-01 -3.5413163900375366e-01 - 6.3612997531890869e-01 -7.0456862449645996e-01 - <_> - 5.5900840759277344e+00 - - 1 2 339 2.3500000000000000e+01 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 4.5000000000000000e+00 - - 2.0174416899681091e-01 -5.1127249002456665e-01 - 4.2617842555046082e-01 -1.0143126547336578e-01 - <_> - 5.7180328369140625e+00 - - 1 2 342 5.0000000000000000e-01 0 -1 343 - 2.5000000000000000e+00 -2 -3 344 9.5000000000000000e+00 - - -3.8413861393928528e-01 4.6811124682426453e-01 - -4.2584285140037537e-01 1.2794874608516693e-01 - <_> - 5.6654319763183594e+00 - - 1 2 345 8.5000000000000000e+00 0 -1 346 - 5.0000000000000000e-01 -2 -3 347 1.5000000000000000e+00 - - 9.5142386853694916e-02 -7.1302425861358643e-01 - 5.4278182983398438e-01 -5.2601240575313568e-02 - <_> - 5.9350528717041016e+00 - - 1 2 348 9.5000000000000000e+00 0 -1 349 - 4.1500000000000000e+01 -2 -3 350 1.5000000000000000e+00 - - 8.7161600589752197e-01 -7.7127242088317871e-01 - 2.6962128281593323e-01 -2.5871616601943970e-01 - <_> - 6.1475706100463867e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 1.5000000000000000e+00 -2 -3 353 2.3500000000000000e+01 - - -5.0578659772872925e-01 2.1251763403415680e-01 - -7.6094323396682739e-01 2.9446750879287720e-02 - <_> - 6.0555124282836914e+00 - - 1 2 354 3.8350000000000000e+02 0 -1 355 - 4.0750000000000000e+02 -2 -3 356 1.9150000000000000e+02 - - -7.6622998714447021e-01 8.8135695457458496e-01 - 6.9238609075546265e-01 -9.2058457434177399e-02 - <_> - 5.9078083038330078e+00 - - 1 2 357 4.5000000000000000e+00 0 -1 358 - 4.5000000000000000e+00 -2 -3 359 1.4250000000000000e+02 - - -7.2137272357940674e-01 5.1432526111602783e-01 - 1.1733544617891312e-01 -3.9842006564140320e-01 - <_> - 5.8863000869750977e+00 - - 1 2 360 5.5000000000000000e+00 0 -1 361 - 2.5000000000000000e+00 -2 -3 362 5.0000000000000000e-01 - - 2.5861698389053345e-01 -6.5906637907028198e-01 - 5.7050561904907227e-01 -2.1508345380425453e-02 - <_> - 6.2535686492919922e+00 - - 1 2 363 3.4450000000000000e+02 0 -1 364 - 7.1500000000000000e+01 -2 -3 365 3.7500000000000000e+01 - - 2.5537836551666260e-01 -5.6128257513046265e-01 - -2.7890142798423767e-01 3.6726871132850647e-01 - <_> - 6.5200557708740234e+00 - - 1 2 366 3.8500000000000000e+01 0 -1 367 - 2.0050000000000000e+02 -2 -3 368 5.0000000000000000e-01 - - -2.1050746738910675e-01 2.6648724079132080e-01 - 7.2144305706024170e-01 -7.6943892240524292e-01 - <_> - 6.5856919288635254e+00 - - 1 2 369 1.1985000000000000e+03 0 -1 370 - 9.8450000000000000e+02 -2 -3 371 5.0000000000000000e-01 - - -1.8643079325556755e-02 6.2855046987533569e-01 - 2.2027526795864105e-01 -4.5711979269981384e-01 - <_> - 6.7288737297058105e+00 - - 1 2 372 237. 0 -1 373 3.5000000000000000e+00 -2 -3 374 - 1.5000000000000000e+00 - - -8.0923789739608765e-01 1.4318189024925232e-01 1. - -9.4612187147140503e-01 - <_> - 6.6858677864074707e+00 - - 1 2 375 6.5000000000000000e+00 0 -1 376 - 2.5500000000000000e+01 -2 -3 377 5.0000000000000000e-01 - - -5.9098368883132935e-01 3.4622213244438171e-01 - 1.2213265895843506e-01 -4.9110993742942810e-01 - <_> - 6.8649945259094238e+00 - - 1 2 378 6.5000000000000000e+00 0 -1 379 - 1.2500000000000000e+01 -2 -3 380 99. - - -2.1010144054889679e-01 5.2433401346206665e-01 - 7.3402822017669678e-01 -7.3039847612380981e-01 - <_> - 6.8893485069274902e+00 - - 1 2 381 7.2750000000000000e+02 0 -1 382 - 1.5000000000000000e+00 -2 -3 383 9.5000000000000000e+00 - - 3.1361672282218933e-01 -1.7031247913837433e-01 - -7.2145223617553711e-01 3.5980513691902161e-01 - <_> - 7.2283496856689453e+00 - - 1 2 384 5.0000000000000000e-01 0 -1 385 - 1.3500000000000000e+01 -2 -3 386 2.0500000000000000e+01 - - -5.4181987047195435e-01 3.3900079131126404e-01 - -5.1880490779876709e-01 1.1900121718645096e-01 - <_> - 6.9692182540893555e+00 - - 1 2 387 1.6150000000000000e+02 0 -1 388 - 1.5000000000000000e+00 -2 -3 389 3210. - - 1.9477361440658569e-01 -3.0752164125442505e-01 - 7.8654778003692627e-01 -7.6034039258956909e-01 - <_> - 7.2192230224609375e+00 - - 1 2 390 1.3500000000000000e+01 0 -1 391 - 4.3500000000000000e+01 -2 -3 392 2.8500000000000000e+01 - - 2.5000450015068054e-01 -5.3074920177459717e-01 - -5.3798520565032959e-01 4.1968035697937012e-01 - <_> - 7.2540907859802246e+00 - - 1 2 393 2.0500000000000000e+01 0 -1 394 - 2.7500000000000000e+01 -2 -3 395 4.3650000000000000e+02 - - -7.3686313629150391e-01 3.4867912530899048e-02 - 2.9541721940040588e-01 -2.1020221710205078e-01 - <_> - 6.8051357269287109e+00 - - 1 2 396 5.5000000000000000e+00 0 -1 397 - 6.5000000000000000e+00 -2 -3 398 3.5000000000000000e+00 - - 4.2886292934417725e-01 -7.8918439149856567e-01 - 3.7567043304443359e-01 -1.4743655920028687e-01 - <_> - 7.4688086509704590e+00 - - 1 2 399 1.0150000000000000e+02 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 9.9500000000000000e+01 - - -5.1463156938552856e-01 2.9845802113413811e-02 - 6.6367262601852417e-01 -1.1338147521018982e-01 - <_> - 7.1031336784362793e+00 - - 1 2 402 3.5000000000000000e+00 0 -1 403 - 2.5000000000000000e+00 -2 -3 404 1.3500000000000000e+01 - - -3.6626499891281128e-01 3.6989590525627136e-01 - -6.6719317436218262e-01 2.5169936940073967e-02 - <_> - 7.3519058227539062e+00 - - 1 2 405 9.1500000000000000e+01 0 -1 406 - 5.5000000000000000e+00 -2 -3 407 5.5000000000000000e+00 - - 2.4877189099788666e-01 -2.2317972779273987e-01 - -9.1418403387069702e-01 4.2734485864639282e-01 - <_> - 7.6044559478759766e+00 - - 1 2 408 3.2500000000000000e+01 0 -1 409 - 2.5000000000000000e+00 -2 -3 410 4.5000000000000000e+00 - - 2.4795474112033844e-01 -4.5940175652503967e-01 - -3.3580735325813293e-01 3.5987770557403564e-01 - <_> - 7.4985055923461914e+00 - - 1 2 411 1.5000000000000000e+00 0 -1 412 - 2.5000000000000000e+00 -2 -3 413 5.0000000000000000e-01 - - -8.2485938072204590e-01 4.3017619848251343e-01 - 1.4399667084217072e-01 -3.7108924984931946e-01 - <_> - 7.4325051307678223e+00 - - 1 2 414 5.0000000000000000e-01 0 -1 415 - 1.5500000000000000e+01 -2 -3 416 5.0000000000000000e-01 - - -8.7985265254974365e-01 2.5532016158103943e-01 - 4.2890861630439758e-01 -6.6000163555145264e-02 - <_> - 7.5405216217041016e+00 - - 1 2 417 2.5000000000000000e+00 0 -1 418 - 2.7500000000000000e+01 -2 -3 419 2.1500000000000000e+01 - - -6.3683986663818359e-01 5.2743852138519287e-01 - 1.4352023601531982e-01 -6.3558804988861084e-01 - <_> - 7.7823953628540039e+00 - - 1 2 420 1.5000000000000000e+00 0 -1 421 - 1.1500000000000000e+01 -2 -3 422 2.8445000000000000e+03 - - -4.9917691946029663e-01 3.4004133939743042e-01 - -4.3708419799804688e-01 2.8981977701187134e-01 - <_> - 7.7242145538330078e+00 - - 1 2 423 5.0850000000000000e+02 0 -1 424 - 5.0000000000000000e-01 -2 -3 425 3.1500000000000000e+01 - - 5.2104169130325317e-01 -5.8180812746286392e-02 - -7.3210656642913818e-01 2.3212959989905357e-02 - <_> - 7.5139360427856445e+00 - - 1 2 426 1.8500000000000000e+01 0 -1 427 - 1.0500000000000000e+01 -2 -3 428 1.5000000000000000e+00 - - -3.0844607949256897e-01 1.8616256117820740e-01 - -5.5996507406234741e-01 7.4107706546783447e-01 - <_> - 7.9558534622192383e+00 - - 1 2 429 5.0000000000000000e-01 0 -1 430 - 6.5000000000000000e+00 -2 -3 431 1.5500000000000000e+01 - - -7.7995741367340088e-01 8.8524711132049561e-01 - 4.4191744923591614e-01 -7.6589852571487427e-02 - <_> - 7.7786240577697754e+00 - - 1 2 432 8.5000000000000000e+00 0 -1 433 - 3.5000000000000000e+00 -2 -3 434 6.5000000000000000e+00 - - -9.6137225627899170e-01 6.0514140129089355e-01 - 1.9689162075519562e-01 -2.9731762409210205e-01 - <_> - 7.9885544776916504e+00 - - 1 2 435 4.1065000000000000e+03 0 -1 436 - 5.5000000000000000e+00 -2 -3 437 6.5500000000000000e+01 - - -2.1495328843593597e-01 2.0993046462535858e-01 - -9.7390574216842651e-01 1. - <_> - 7.6729865074157715e+00 - - 1 2 438 1.3950000000000000e+02 0 -1 439 - 3.3925000000000000e+03 -2 -3 440 2.1550000000000000e+02 - - 3.6841154098510742e-02 8.2625699043273926e-01 - -3.1556785106658936e-01 4.3009120225906372e-01 - <_> - 7.7963547706604004e+00 - - 1 2 441 4.5000000000000000e+00 0 -1 442 - 5.5000000000000000e+00 -2 -3 443 1.5000000000000000e+00 - - -6.0316175222396851e-01 6.6048818826675415e-01 - 2.5080832839012146e-01 -2.9886415600776672e-01 - <_> - 8.0473546981811523e+00 - - 1 2 444 1.4500000000000000e+01 0 -1 445 - 3.5000000000000000e+00 -2 -3 446 167. - - -7.5895428657531738e-01 -5.0374951213598251e-02 - 2.5099954009056091e-01 -7.8038960695266724e-01 - <_> - 8.2508106231689453e+00 - - 1 2 447 4.7500000000000000e+01 0 -1 448 - 1.5000000000000000e+00 -2 -3 449 203. - - 2.0345664024353027e-01 -3.1519731879234314e-01 - 8.4153503179550171e-01 -9.4352102279663086e-01 - <_> - 8.1843194961547852e+00 - - 1 2 450 3.5000000000000000e+00 0 -1 451 - 6.4850000000000000e+02 -2 -3 452 2.3500000000000000e+01 - - -6.6491708159446716e-02 -7.7391004562377930e-01 - 3.7316158413887024e-01 -4.7069379687309265e-01 - <_> - 8.4241552352905273e+00 - - 1 2 453 1.9550000000000000e+02 0 -1 454 - 1.1500000000000000e+01 -2 -3 455 9.7500000000000000e+01 - - 1.4798521995544434e-02 -7.5356280803680420e-01 - 6.0888707637786865e-01 -3.6627348512411118e-02 - <_> - 8.6226053237915039e+00 - - 1 2 456 8.5000000000000000e+00 0 -1 457 - 4.9500000000000000e+01 -2 -3 458 8.8500000000000000e+01 - - -6.3793772459030151e-01 7.5767761468887329e-01 - 1.9845020771026611e-01 -4.8551425337791443e-01 - <_> - 8.7387495040893555e+00 - - 1 2 459 5.0000000000000000e-01 0 -1 460 - 9.7050000000000000e+02 -2 -3 461 1.3500000000000000e+01 - - -2.5290706753730774e-01 3.9906808733940125e-01 - 7.3734633624553680e-02 -5.0943487882614136e-01 - <_> - 8.9511775970458984e+00 - - 1 2 462 1.5500000000000000e+01 0 -1 463 5042. -2 -3 464 - 2.5500000000000000e+01 - - 4.4684890657663345e-02 -7.5078099966049194e-01 - -6.8602824211120605e-01 2.1242773532867432e-01 - <_> - 8.7704448699951172e+00 - - 1 2 465 1.5000000000000000e+00 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 5.0000000000000000e-01 - - -5.2990430593490601e-01 3.2908669114112854e-01 - 5.0670707225799561e-01 -3.3556681871414185e-01 - <_> - 9.1967802047729492e+00 - - 1 2 468 1.0150000000000000e+02 0 -1 469 - 4.5000000000000000e+00 -2 -3 470 2.0550000000000000e+02 - - 1.6923974454402924e-01 -4.5475739240646362e-01 - 5.2751308679580688e-01 -1.5509577095508575e-01 - <_> - 8.7917280197143555e+00 - - 1 2 471 1.1500000000000000e+01 0 -1 472 - 6.5000000000000000e+00 -2 -3 473 6.5000000000000000e+00 - - -4.4862127304077148e-01 4.2279773950576782e-01 - -3.5587507486343384e-01 3.5129797458648682e-01 - <_> - 8.7312154769897461e+00 - - 1 2 474 4.5000000000000000e+00 0 -1 475 - 6.5000000000000000e+00 -2 -3 476 3.6500000000000000e+01 - - -2.7193367481231689e-01 4.3259933590888977e-01 - 4.7951751947402954e-01 -3.5498926043510437e-01 - <_> - 9.0832386016845703e+00 - - 1 2 477 1.2500000000000000e+01 0 -1 478 - 3.1050000000000000e+02 -2 -3 479 3.5000000000000000e+00 - - 5.9946447610855103e-02 -5.3463864326477051e-01 -1. - 9.2522376775741577e-01 - <_> - 9.1005811691284180e+00 - - 1 2 480 1.9150000000000000e+02 0 -1 481 - 9.8500000000000000e+01 -2 -3 482 9.4500000000000000e+01 - - -7.7142339944839478e-01 8.8559025526046753e-01 - 8.3444190025329590e-01 1.7342502251267433e-02 - <_> - 9.0058355331420898e+00 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 1.1500000000000000e+01 -2 -3 485 2.1350000000000000e+02 - - -3.3807235956192017e-01 6.2658375501632690e-01 - -4.1266942024230957e-01 1.2879027426242828e-01 - <_> - 9.5705127716064453e+00 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 3.5000000000000000e+00 -2 -3 488 1.2500000000000000e+01 - - 5.6467759609222412e-01 -8.9094005525112152e-02 - -5.1642411947250366e-01 2.5749623775482178e-01 - <_> - 9.5358695983886719e+00 - - 1 2 489 3.5000000000000000e+00 0 -1 490 - 8.5000000000000000e+00 -2 -3 491 5.0000000000000000e-01 - - -9.6485316753387451e-01 6.5110367536544800e-01 - 3.9514154195785522e-01 -9.5468178391456604e-02 - <_> - 9.2215585708618164e+00 - - 1 2 492 4.5000000000000000e+00 0 -1 493 - 6.0450000000000000e+02 -2 -3 494 1.7500000000000000e+01 - - 4.6174043416976929e-01 -6.0333174467086792e-01 - 2.1922779083251953e-01 -4.6940636634826660e-01 - <_> - 9.5052928924560547e+00 - - 1 2 495 1.9500000000000000e+01 0 -1 496 - 6.2500000000000000e+01 -2 -3 497 9.9500000000000000e+01 - - -2.4998350441455841e-01 9.3333595991134644e-01 - 4.7144135832786560e-01 -5.3084665536880493e-01 - <_> - 9.6855897903442383e+00 - - 1 2 498 1.0150000000000000e+02 0 -1 499 - 1.9050000000000000e+02 -2 -3 500 4.6500000000000000e+01 - - -6.0934317111968994e-01 1.8029752373695374e-01 - -9.4084495306015015e-01 4.4628155231475830e-01 - <_> - 9.7318124771118164e+00 - - 1 2 501 1.0505000000000000e+03 0 -1 502 - 8.6850000000000000e+02 -2 -3 503 2.2500000000000000e+01 - - 4.6222873032093048e-02 -5.8092010021209717e-01 - 4.7866767644882202e-01 -8.6627846956253052e-01 - <_> - 9.9474916458129883e+00 - - 1 2 504 5.5000000000000000e+00 0 -1 505 - 1.5000000000000000e+00 -2 -3 506 5.0000000000000000e-01 - - 9.3323081731796265e-01 -7.6642012596130371e-01 - 3.1724649667739868e-01 -1.7054216563701630e-01 - <_> - 9.6730003356933594e+00 - - 1 2 507 5.0000000000000000e-01 0 -1 508 - 7.1500000000000000e+01 -2 -3 509 1.6500000000000000e+01 - - 6.1226785182952881e-01 -3.1147494912147522e-01 - -3.7605938315391541e-01 1.1878117173910141e-01 - <_> - 9.9316091537475586e+00 - - 1 2 510 2.5000000000000000e+00 0 -1 511 - 4.3500000000000000e+01 -2 -3 512 5.5000000000000000e+00 - - -9.6135699748992920e-01 1. 2.5860905647277832e-01 - -1.8475803732872009e-01 - <_> - 9.9168720245361328e+00 - - 1 2 513 3.5000000000000000e+00 0 -1 514 - 1.0500000000000000e+01 -2 -3 515 5.0000000000000000e-01 - - -5.7490390539169312e-01 5.8689129352569580e-01 - 6.0520070791244507e-01 -1.8357265740633011e-02 - <_> - 9.9600400924682617e+00 - - 1 2 516 1.5000000000000000e+00 0 -1 517 - 8.5000000000000000e+00 -2 -3 518 3.5000000000000000e+00 - - -4.1653260588645935e-01 4.4715183973312378e-01 - 4.3168023228645325e-02 -5.1480299234390259e-01 - <_> - 1.0061200141906738e+01 - - 1 2 519 1.6500000000000000e+01 0 -1 520 - 1.2500000000000000e+01 -2 -3 521 1.1500000000000000e+01 - - 2.5633049011230469e-01 -7.6656705141067505e-01 - -7.0554155111312866e-01 1.6379806399345398e-01 - <_> - 1.0377194404602051e+01 - - 1 2 522 5.0000000000000000e-01 0 -1 523 - 2.2500000000000000e+01 -2 -3 524 1.0350000000000000e+02 - - 3.4760028123855591e-01 -4.5027711987495422e-01 - -4.2173016071319580e-01 2.3955082893371582e-01 - <_> - 1.0154600143432617e+01 - - 1 2 525 5.0000000000000000e-01 0 -1 526 - 1.0500000000000000e+01 -2 -3 527 2.6500000000000000e+01 - - -4.5142862200737000e-01 5.3901028633117676e-01 - -2.5419974327087402e-01 4.5304277539253235e-01 - <_> - 1.0031300544738770e+01 - - 1 2 528 8.4250000000000000e+02 0 -1 529 - 3.5000000000000000e+00 -2 -3 530 1.9550000000000000e+02 - - -7.8200048208236694e-01 1. 3.5411849617958069e-01 - -1.2329959124326706e-01 - <_> - 1.0340743064880371e+01 - - 1 2 531 8.9500000000000000e+01 0 -1 532 - 4.4500000000000000e+01 -2 -3 533 1.0935000000000000e+03 - - -2.5243437290191650e-01 3.0944204330444336e-01 - -7.0828437805175781e-01 4.1531533002853394e-02 - <_> - 1.0338248252868652e+01 - - 1 2 534 5.8500000000000000e+01 0 -1 535 271. -2 -3 536 - 1.3500000000000000e+01 - - -9.2865273356437683e-02 5.8908087015151978e-01 - -8.2634025812149048e-01 -2.4943957105278969e-03 - <_> - 1.0308409690856934e+01 - - 1 2 537 1.6500000000000000e+01 0 -1 538 - 1.3550000000000000e+02 -2 -3 539 1.4500000000000000e+01 - - 6.6291391849517822e-01 -2.9839292168617249e-02 - -8.4737575054168701e-01 4.0216624736785889e-01 - <_> - 1.0141160964965820e+01 - - 1 2 540 3.8850000000000000e+02 0 -1 541 1880. -2 -3 542 - 5.0000000000000000e-01 - - -5.4690855741500854e-01 9.7327619791030884e-01 - 3.9478069543838501e-01 -1.6724799573421478e-01 - <_> - 1.0552933692932129e+01 - - 1 2 543 9.7500000000000000e+01 0 -1 544 - 2.5675000000000000e+03 -2 -3 545 3.5000000000000000e+00 - - 4.1177234053611755e-01 -7.8731620311737061e-01 - 1.4354823529720306e-01 -4.3162122368812561e-01 - <_> - 1.0565854072570801e+01 - - 1 2 546 6.9500000000000000e+01 0 -1 547 - 5.0000000000000000e-01 -2 -3 548 2.2500000000000000e+01 - - 1.1238955706357956e-01 -5.5135101079940796e-01 - 8.3063828945159912e-01 1.2920306064188480e-02 - <_> - 1.0695440292358398e+01 - - 1 2 549 5.0000000000000000e-01 0 -1 550 - 5.0000000000000000e-01 -2 -3 551 4.1500000000000000e+01 - - 1. -9.2097282409667969e-01 1.2958645820617676e-01 - -7.5983488559722900e-01 - <_> - 1.1004468917846680e+01 - - 1 2 552 6.5000000000000000e+00 0 -1 553 - 4.5000000000000000e+00 -2 -3 554 8.5000000000000000e+00 - - -5.3393048048019409e-01 2.6314625144004822e-01 - -4.1532078385353088e-01 3.2797959446907043e-01 - <_> - 1.0936705589294434e+01 - - 1 2 555 3.8500000000000000e+01 0 -1 556 - 1.2500000000000000e+01 -2 -3 557 2.2500000000000000e+01 - - 6.5491145849227905e-01 -5.2296054363250732e-01 - -2.6422262191772461e-01 4.4152420759201050e-01 - <_> - 1.1200079917907715e+01 - - 1 2 558 5.5000000000000000e+00 0 -1 559 - 1.4350000000000000e+02 -2 -3 560 8.5000000000000000e+00 - - 2.6337426900863647e-01 -6.2398618459701538e-01 - -5.7904040813446045e-01 1.5722821652889252e-01 - <_> - 1.1503147125244141e+01 - - 1 2 561 2.2500000000000000e+01 0 -1 562 - 3.5000000000000000e+00 -2 -3 563 4.4500000000000000e+01 - - 2.0208129286766052e-01 -5.8677726984024048e-01 - 3.0306696891784668e-01 -2.8123357892036438e-01 - <_> - 1.1434396743774414e+01 - - 1 2 564 1.9450000000000000e+02 0 -1 565 - 2.7750000000000000e+02 -2 -3 566 3.9550000000000000e+02 - - 1.2142877280712128e-01 -7.8573030233383179e-01 - 4.3764689564704895e-01 -7.5577810406684875e-02 - <_> - 1.1271259307861328e+01 - - 1 2 567 3.5000000000000000e+00 0 -1 568 - 2.6500000000000000e+01 -2 -3 569 1.5000000000000000e+00 - - -4.7033354640007019e-01 9.5837578177452087e-02 - -6.4152359962463379e-01 3.8179275393486023e-01 - <_> - 1.1176634788513184e+01 - - 1 2 570 1.5000000000000000e+00 0 -1 571 - 5.5000000000000000e+00 -2 -3 572 1.5000000000000000e+00 - - -4.7000327706336975e-01 4.9639451503753662e-01 - 4.9409845471382141e-01 -3.3572679758071899e-01 - <_> - 1.1203256607055664e+01 - - 1 2 573 3.5000000000000000e+00 0 -1 574 - 1.1500000000000000e+01 -2 -3 575 5.5000000000000000e+00 - - -5.0945442914962769e-01 3.5184708237648010e-01 - 2.9157343506813049e-01 -4.5857024192810059e-01 - <_> - 1.1486757278442383e+01 - - 1 2 576 5.0000000000000000e-01 0 -1 577 - 1.5000000000000000e+00 -2 -3 578 4.7500000000000000e+01 - - -4.5967599749565125e-01 3.4802013635635376e-01 - -5.7343167066574097e-01 1.8548563122749329e-02 - <_> - 1.1719410896301270e+01 - - 1 2 579 2.0750000000000000e+02 0 -1 580 - 4.5000000000000000e+00 -2 -3 581 5.0000000000000000e-01 - - -2.9454728960990906e-01 2.3265397548675537e-01 1. - -9.6974384784698486e-01 - <_> - 1.1762585639953613e+01 - - 1 2 582 1.1050000000000000e+02 0 -1 583 - 1.6500000000000000e+01 -2 -3 584 407. - - 1.6962698101997375e-01 -5.3280961513519287e-01 - -8.0282974243164062e-01 1. - <_> - 1.1756085395812988e+01 - - 1 2 585 1.6500000000000000e+01 0 -1 586 - 5.0000000000000000e-01 -2 -3 587 1.7500000000000000e+01 - - 2.7568620443344116e-01 -3.1695076823234558e-01 - 6.0045284032821655e-01 -2.3904968798160553e-01 - <_> - 1.1916310310363770e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 8.6550000000000000e+02 - - -8.1488132476806641e-01 4.9408018589019775e-01 - -4.1927781701087952e-01 8.3734117448329926e-02 - <_> - 1.2203942298889160e+01 - - 1 2 591 5.7050000000000000e+02 0 -1 592 - 1.5500000000000000e+01 -2 -3 593 2.0750000000000000e+02 - - -3.8771522045135498e-01 4.7265237569808960e-01 - -6.2495791912078857e-01 1.0464360564947128e-01 - <_> - 1.2065786361694336e+01 - - 1 2 594 1.5000000000000000e+00 0 -1 595 - 3.5000000000000000e+00 -2 -3 596 2.4550000000000000e+02 - - -1.8811276555061340e-01 5.1335942745208740e-01 - -6.0490119457244873e-01 1.5422473661601543e-02 - <_> - 1.2367770195007324e+01 - - 1 2 597 5.0000000000000000e-01 0 -1 598 - 1.6500000000000000e+01 -2 -3 599 5.3500000000000000e+01 - - 3.0198401212692261e-01 -5.7692825794219971e-01 - -5.6324899196624756e-01 1.9613705575466156e-01 - <_> - 1.2323034286499023e+01 - - 1 2 600 1.2500000000000000e+01 0 -1 601 - 7.5500000000000000e+01 -2 -3 602 3.5000000000000000e+00 - - -3.2731822133064270e-01 3.5927465558052063e-01 - 2.3451724648475647e-01 -5.0880599021911621e-01 - <_> - 1.2484741210937500e+01 - - 1 2 603 1.5000000000000000e+00 0 -1 604 - 1.5000000000000000e+00 -2 -3 605 8.5000000000000000e+00 - - -1.7245341837406158e-01 5.7961738109588623e-01 - -2.6586967706680298e-01 7.2448682785034180e-01 - <_> - 1.2606169700622559e+01 - - 1 2 606 2.5000000000000000e+00 0 -1 607 - 4.5000000000000000e+00 -2 -3 608 230. - - 6.7421162128448486e-01 -9.0937048196792603e-01 - 1.2142854928970337e-01 -8.2504957914352417e-01 - <_> - 1.2318552970886230e+01 - - 1 2 609 5.0000000000000000e-01 0 -1 610 - 7.5000000000000000e+00 -2 -3 611 6.5000000000000000e+00 - - -7.4998068809509277e-01 3.6234694719314575e-01 - -2.8761732578277588e-01 5.9134435653686523e-01 - <_> - 1.2598359107971191e+01 - - 1 2 612 5.3500000000000000e+01 0 -1 613 - 5.5000000000000000e+00 -2 -3 614 10. - - 2.7980631589889526e-01 -1.5065264701843262e-01 - -9.5785999298095703e-01 1. - <_> - 1.2746797561645508e+01 - - 1 2 615 9.3500000000000000e+01 0 -1 616 - 6.5000000000000000e+00 -2 -3 617 8.7500000000000000e+01 - - -6.4821511507034302e-01 -3.9083152078092098e-03 - 6.2614870071411133e-01 -9.2817217111587524e-01 - <_> - 1.2947604179382324e+01 - - 1 2 618 2.7500000000000000e+01 0 -1 619 - 2.5000000000000000e+00 -2 -3 620 1.2500000000000000e+01 - - 6.7048752680420876e-03 -6.5272891521453857e-01 - 4.5032474398612976e-01 -3.6547464132308960e-01 - <_> - 1.2882634162902832e+01 - - 1 2 621 3.1050000000000000e+02 0 -1 622 - 5.6365000000000000e+03 -2 -3 623 1.9500000000000000e+01 - - -6.4969561994075775e-02 5.9627079963684082e-01 - -7.0807337760925293e-01 3.0144539475440979e-01 - <_> - 1.2801805496215820e+01 - - 1 2 624 5.0000000000000000e-01 0 -1 625 - 3.5000000000000000e+00 -2 -3 626 4.5000000000000000e+00 - - -1. 4.1704678535461426e-01 -3.7044116854667664e-01 - 1.8138089776039124e-01 - <_> - 1.2661149978637695e+01 - - 1 2 627 2.0500000000000000e+01 0 -1 628 2163. -2 -3 629 - 4.5000000000000000e+00 - - -1. 1. 3.0944949388504028e-01 -1.4065495133399963e-01 - <_> - 1.2931542396545410e+01 - - 1 2 630 1.0500000000000000e+01 0 -1 631 - 3.2050000000000000e+02 -2 -3 632 5.5350000000000000e+02 - - 2.4613921344280243e-01 -6.1480534076690674e-01 - 5.8146727085113525e-01 -4.4777959585189819e-02 - <_> - 1.2777011871337891e+01 - - 1 2 633 664. 0 -1 634 5.0000000000000000e-01 -2 -3 635 950. - - 4.0263316035270691e-01 -2.1390040218830109e-01 - 9.3719965219497681e-01 -9.1512298583984375e-01 - <_> - 1.3000047683715820e+01 - - 1 2 636 1.0500000000000000e+01 0 -1 637 - 9.5000000000000000e+00 -2 -3 638 3.5000000000000000e+00 - - -5.2459001541137695e-01 9.3095004558563232e-01 - -6.2548005580902100e-01 2.2303572297096252e-01 - <_> - 1.3017802238464355e+01 - - 1 2 639 1455. 0 -1 640 5.5000000000000000e+00 -2 -3 641 - 4.2450000000000000e+02 - - 2.8526142239570618e-01 -2.3395025730133057e-01 - -8.9111810922622681e-01 3.2246455550193787e-01 - <_> - 1.2907553672790527e+01 - - 1 2 642 8.5000000000000000e+00 0 -1 643 152. -2 -3 644 - 4.2500000000000000e+01 - - 1.8225684762001038e-01 -4.7394508123397827e-01 - 6.2302941083908081e-01 -1.1024855077266693e-01 - <_> - 1.3336275100708008e+01 - - 1 2 645 2.0650000000000000e+02 0 -1 646 - 2.2745000000000000e+03 -2 -3 647 1.0150000000000000e+02 - - 4.1937950998544693e-02 -6.0223990678787231e-01 - 7.0876753330230713e-01 -2.9814215376973152e-03 - <_> - 1.3240208625793457e+01 - - 1 2 648 1.8500000000000000e+01 0 -1 649 - 1.5000000000000000e+00 -2 -3 650 2.3150000000000000e+02 - - 1.9967538118362427e-01 -3.7611329555511475e-01 - -4.9610561132431030e-01 5.5267935991287231e-01 - <_> - 1.3167437553405762e+01 - - 1 2 651 5.5000000000000000e+00 0 -1 652 - 1.5500000000000000e+01 -2 -3 653 2.5000000000000000e+00 - - -5.7185417413711548e-01 8.0087751150131226e-01 - 4.4464635848999023e-01 -7.2770901024341583e-02 - <_> - 1.3142944335937500e+01 - - 1 2 654 2.5500000000000000e+01 0 -1 655 - 5.5000000000000000e+00 -2 -3 656 5.5500000000000000e+01 - - -2.4492548778653145e-02 5.5536437034606934e-01 - -7.0375752449035645e-01 5.0477677583694458e-01 - <_> - 1.3294385910034180e+01 - - 1 2 657 2.7500000000000000e+01 0 -1 658 - 3.5000000000000000e+00 -2 -3 659 6.5000000000000000e+00 - - 1.2528835795819759e-02 -6.7173910140991211e-01 - 4.1883945465087891e-01 -2.8822129964828491e-01 - <_> - 1.3392246246337891e+01 - - 1 2 660 7.5000000000000000e+00 0 -1 661 - 2.9500000000000000e+01 -2 -3 662 1.1450000000000000e+02 - - -6.8992421030998230e-02 5.4969501495361328e-01 - -4.4151812791824341e-01 7.0458197593688965e-01 - <_> - 1.3876214027404785e+01 - - 1 2 663 3.5000000000000000e+00 0 -1 664 - 3.1500000000000000e+01 -2 -3 665 9.5000000000000000e+00 - - -2.4815301597118378e-01 6.1503392457962036e-01 - 1.1428022384643555e-01 -4.7265532612800598e-01 - <_> - 1.3927340507507324e+01 - - 1 2 666 6.5000000000000000e+00 0 -1 667 - 5.0000000000000000e-01 -2 -3 668 1.3500000000000000e+01 - - 1.6489420831203461e-01 -4.1367548704147339e-01 - -1.9916613399982452e-01 4.9179160594940186e-01 - <_> - 1.4009963035583496e+01 - - 1 2 669 1.5500000000000000e+01 0 -1 670 - 6.4500000000000000e+01 -2 -3 671 1.4500000000000000e+01 - - -3.2740452885627747e-01 2.9090219736099243e-01 - -3.3407993614673615e-02 -7.3748952150344849e-01 - <_> - 1.4062114715576172e+01 - - 1 2 672 2.9050000000000000e+02 0 -1 673 - 2.9150000000000000e+02 -2 -3 674 9.8500000000000000e+01 - - -6.7245197296142578e-01 5.7694870233535767e-01 - 3.9129734039306641e-01 -1.7993095517158508e-01 - <_> - 1.4075572967529297e+01 - - 1 2 675 5.5000000000000000e+00 0 -1 676 - 9.5000000000000000e+00 -2 -3 677 3.5000000000000000e+00 - - -8.3239459991455078e-01 1. 3.1441810727119446e-01 - -1.7989411950111389e-01 - <_> - 1.4398697853088379e+01 - - 1 2 678 1.7500000000000000e+01 0 -1 679 - 5.0000000000000000e-01 -2 -3 680 214. - - 1.8806569278240204e-01 -3.9947587251663208e-01 - 3.2312503457069397e-01 -8.5158264636993408e-01 - <_> - 1.4362066268920898e+01 - - 1 2 681 3.3500000000000000e+01 0 -1 682 - 8.5000000000000000e+00 -2 -3 683 3.5000000000000000e+00 - - -3.6632146686315536e-02 6.7517954111099243e-01 - 8.0255568027496338e-01 -9.3577671051025391e-01 - <_> - 1.4355202674865723e+01 - - 1 2 684 1.5000000000000000e+00 0 -1 685 19. -2 -3 686 - 2.5000000000000000e+00 - - -8.4508359432220459e-01 9.0682888031005859e-01 - 1.6501218080520630e-01 -3.7748157978057861e-01 - <_> - 1.4331367492675781e+01 - - 1 2 687 3.5500000000000000e+01 0 -1 688 - 1.1500000000000000e+01 -2 -3 689 5.5000000000000000e+00 - - 1.0846425592899323e-01 -3.6513739824295044e-01 - -8.1047779321670532e-01 7.0118898153305054e-01 - <_> - 1.4596327781677246e+01 - - 1 2 690 2.5000000000000000e+00 0 -1 691 498. -2 -3 692 - 2.5000000000000000e+00 - - 9.1571146249771118e-01 -3.8378649950027466e-01 - -6.2768781185150146e-01 2.6496013998985291e-01 - <_> - 1.4494135856628418e+01 - - 1 2 693 5.0000000000000000e-01 0 -1 694 - 6.5000000000000000e+00 -2 -3 695 1.1435000000000000e+03 - - -9.6758538484573364e-01 4.7280657291412354e-01 - 1.4870892465114594e-01 -4.1227847337722778e-01 - <_> - 1.4703800201416016e+01 - - 1 2 696 8.3350000000000000e+02 0 -1 697 - 3.8950000000000000e+02 -2 -3 698 5.6150000000000000e+02 - - -1.4533622562885284e-01 -9.0440070629119873e-01 - 5.5248886346817017e-01 -4.1236154735088348e-02 - <_> - 1.4449706077575684e+01 - - 1 2 699 1.0150000000000000e+02 0 -1 700 - 1.4500000000000000e+01 -2 -3 701 2.5000000000000000e+00 - - 3.7996582686901093e-02 -5.9691846370697021e-01 - 6.3458359241485596e-01 -3.5994444042444229e-02 - <_> - 1.4542603492736816e+01 - - 1 2 702 3.5000000000000000e+00 0 -1 703 - 7.5000000000000000e+00 -2 -3 704 8.4050000000000000e+02 - - 9.2897661030292511e-02 -4.6599259972572327e-01 - 8.1781423091888428e-01 5.6449621915817261e-02 - <_> - 1.4853701591491699e+01 - - 1 2 705 1.5000000000000000e+00 0 -1 706 - 3.5000000000000000e+00 -2 -3 707 5.0000000000000000e-01 - - -5.0090640783309937e-01 3.2296618819236755e-01 - 6.1400991678237915e-01 1.9703503698110580e-02 - <_> - 1.5123150825500488e+01 - - 1 2 708 1.8500000000000000e+01 0 -1 709 - 4.5000000000000000e+00 -2 -3 710 3.5000000000000000e+00 - - -4.9176853895187378e-01 2.8722837567329407e-01 - -9.3597269058227539e-01 2.6944926381111145e-01 - <_> - 1.5157720565795898e+01 - - 1 2 711 5.0000000000000000e-01 0 -1 712 - 6.5000000000000000e+00 -2 -3 713 2.6650000000000000e+02 - - 3.4569710493087769e-02 6.7243850231170654e-01 - 4.1661575436592102e-01 -3.9990743994712830e-01 - <_> - 1.5411670684814453e+01 - - 1 2 714 1.3950000000000000e+02 0 -1 715 - 3.5000000000000000e+00 -2 -3 716 5.5000000000000000e+00 - - -2.3311543464660645e-01 2.9278513789176941e-01 - 4.7947874665260315e-01 -9.8023939132690430e-01 - <_> - 1.5354397773742676e+01 - - 1 2 717 1.9250000000000000e+02 0 -1 718 - 5.0000000000000000e-01 -2 -3 719 26. - - 4.0997236967086792e-01 -9.6107937395572662e-02 - -9.3151968717575073e-01 9.1284751892089844e-01 - <_> - 1.4952895164489746e+01 - - 1 2 720 2.7500000000000000e+01 0 -1 721 297. -2 -3 722 - 5.0000000000000000e-01 - - 5.4114556312561035e-01 -7.0818752050399780e-01 - 2.7803361415863037e-01 -2.0704185962677002e-01 - <_> - 1.5107488632202148e+01 - - 1 2 723 4.5000000000000000e+00 0 -1 724 - 9.2500000000000000e+01 -2 -3 725 5.0000000000000000e-01 - - 1.5459318459033966e-01 -4.8220661282539368e-01 - 2.0991271734237671e-01 -8.7689870595932007e-01 - <_> - 1.5330876350402832e+01 - - 1 2 726 3.5000000000000000e+00 0 -1 727 - 5.0000000000000000e-01 -2 -3 728 5.5000000000000000e+00 - - 1.2667779624462128e-01 -6.8513137102127075e-01 - -5.3112709522247314e-01 2.2338794171810150e-01 - <_> - 1.5734196662902832e+01 - - 1 2 729 1.5000000000000000e+00 0 -1 730 - 2.5000000000000000e+00 -2 -3 731 1.5000000000000000e+00 - - 5.1118248701095581e-01 -8.6829736828804016e-02 - 2.2527997195720673e-01 -4.4369015097618103e-01 - <_> - 1.5614619255065918e+01 - - 1 2 732 5.9500000000000000e+01 0 -1 733 - 2.9500000000000000e+01 -2 -3 734 3.5000000000000000e+00 - - 1.0675737261772156e-01 -6.1698102951049805e-01 - 4.1313454508781433e-01 -1.1957697570323944e-01 - <_> - 1.5535240173339844e+01 - - 1 2 735 5.5750000000000000e+02 0 -1 736 - 9.5450000000000000e+02 -2 -3 737 2.0645000000000000e+03 - - -3.4422600269317627e-01 5.9951692819595337e-01 - -3.8727310299873352e-01 2.4057196080684662e-01 - <_> - 1.5538546562194824e+01 - - 1 2 738 8.0150000000000000e+02 0 -1 739 - 2.6105000000000000e+03 -2 -3 740 3.8450000000000000e+02 - - -8.3982056379318237e-01 8.3161514997482300e-01 - -8.0494666099548340e-01 3.3064079470932484e-03 - <_> - 1.5797479629516602e+01 - - 1 2 741 1.8750000000000000e+02 0 -1 742 2430. -2 -3 743 - 5.0000000000000000e-01 - - -8.2724601030349731e-01 6.6713446378707886e-01 - 2.8536656498908997e-01 -2.8820601105690002e-01 - <_> - 1.5900279045104980e+01 - - 1 2 744 4.5000000000000000e+00 0 -1 745 - 2.5000000000000000e+00 -2 -3 746 5.0000000000000000e-01 - - 7.4607717990875244e-01 -7.1024978160858154e-01 - 5.7188493013381958e-01 -4.2073842138051987e-02 - <_> - 1.5883950233459473e+01 - - 1 2 747 4.0500000000000000e+01 0 -1 748 - 6.5000000000000000e+00 -2 -3 749 5.0000000000000000e-01 - - -1.0276497155427933e-01 4.0130257606506348e-01 1. -1. - <_> - 1.4979964256286621e+01 - - 1 2 750 1.9500000000000000e+01 0 -1 751 - 2.0500000000000000e+01 -2 -3 752 4.6500000000000000e+01 - - -2.2145843505859375e-01 2.5802364945411682e-01 - -9.0398544073104858e-01 4.8689022660255432e-01 - <_> - 1.5194631576538086e+01 - - 1 2 753 1.5000000000000000e+00 0 -1 754 - 3.5000000000000000e+00 -2 -3 755 2.1500000000000000e+01 - - -1.1669741570949554e-01 4.9556133151054382e-01 - 3.7774667143821716e-02 -6.1486494541168213e-01 - <_> - 1.5027575492858887e+01 - - 1 2 756 8.5000000000000000e+00 0 -1 757 - 8.5000000000000000e+00 -2 -3 758 1.3350000000000000e+02 - - -7.2910213470458984e-01 3.1334644556045532e-01 - 2.7376729249954224e-01 -3.3538144826889038e-01 - <_> - 1.5194680213928223e+01 - - 1 0 759 5027. 1 0 759 5027. -1 -2 760 2.5500000000000000e+01 - - -1. -1. -3.6071130633354187e-01 1.6710422933101654e-01 - <_> - 1.5317331314086914e+01 - - 1 2 761 8.5000000000000000e+00 0 -1 762 - 4.5000000000000000e+00 -2 -3 763 4.5000000000000000e+00 - - -3.6038890480995178e-01 4.8649555444717407e-01 - 1.2265116721391678e-01 -4.3468883633613586e-01 - <_> - 1.5516662597656250e+01 - - 1 2 764 5.0000000000000000e-01 0 -1 765 - 2.6500000000000000e+01 -2 -3 766 5.0000000000000000e-01 - - -8.6315697431564331e-01 5.6610745191574097e-01 - 5.4674094915390015e-01 -4.9838803708553314e-02 - <_> - 1.5334324836730957e+01 - - 1 2 767 4.1500000000000000e+01 0 -1 768 - 5.3550000000000000e+02 -2 -3 769 1.0550000000000000e+02 - - 6.0701811313629150e-01 -1.8233808875083923e-01 - 8.4639877080917358e-01 -3.3420971035957336e-01 - <_> - 1.5710937500000000e+01 - - 1 2 770 5.0000000000000000e-01 0 -1 771 - 5.0000000000000000e-01 -2 -3 772 193. - - -3.8640668988227844e-01 4.8309257626533508e-01 - -6.3383340835571289e-01 1.4250018633902073e-02 - <_> - 1.5832213401794434e+01 - - 1 2 773 4.8500000000000000e+01 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 3.1500000000000000e+01 - - -1. 4.6453514695167542e-01 -7.3939657211303711e-01 - 1.4796154573559761e-02 - <_> - 1.5806046485900879e+01 - - 1 2 776 5.0000000000000000e-01 0 -1 777 - 6.5000000000000000e+00 -2 -3 778 1.5500000000000000e+01 - - -1.1508829891681671e-02 5.6221634149551392e-01 - -7.8835546970367432e-01 -8.5773661732673645e-02 - <_> - 1.5770372390747070e+01 - - 1 2 779 2.2500000000000000e+01 0 -1 780 - 1.9500000000000000e+01 -2 -3 781 5.0000000000000000e-01 - - -4.6044223010540009e-02 5.2754670381546021e-01 - 5.3497844934463501e-01 -7.3842519521713257e-01 - <_> - 1.5359473228454590e+01 - - 1 2 782 7.5000000000000000e+00 0 -1 783 - 5.0000000000000000e-01 -2 -3 784 1.5000000000000000e+00 - - 5.4964470863342285e-01 -1.2483406811952591e-01 - 3.7034383416175842e-01 -4.1089901328086853e-01 - <_> - 1.5590619087219238e+01 - - 1 2 785 4.3500000000000000e+01 0 -1 786 - 1.5000000000000000e+00 -2 -3 787 2.2500000000000000e+01 - - 4.0199559926986694e-01 -5.2104234695434570e-01 - -8.3813130855560303e-01 2.3114581406116486e-01 - <_> - 1.5789629936218262e+01 - - 1 2 788 1.6550000000000000e+02 0 -1 789 - 3.5000000000000000e+00 -2 -3 790 1.5550000000000000e+02 - - -2.4781857430934906e-01 1.9901108741760254e-01 - -9.7304773330688477e-01 7.0200401544570923e-01 - <_> - 1.5989371299743652e+01 - - 1 2 791 2.0650000000000000e+02 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 3110. - - 6.3552632927894592e-02 -5.3658276796340942e-01 - 6.2562465667724609e-01 -1.1984360218048096e-01 - <_> - 1.5632120132446289e+01 - - 1 2 794 1.7500000000000000e+01 0 -1 795 - 3.6500000000000000e+01 -2 -3 796 5.5000000000000000e+00 - - -7.1405869722366333e-01 1.5681014955043793e-01 - -7.8313404321670532e-01 1.4654920995235443e-01 - <_> - 1.5941620826721191e+01 - - 1 2 797 616. 0 -1 798 6.5000000000000000e+00 -2 -3 799 - 1.1500000000000000e+01 - - -8.7063086032867432e-01 8.5862129926681519e-01 - -2.3666135966777802e-01 3.0949997901916504e-01 - <_> - 1.6084800720214844e+01 - - 1 2 800 219. 0 -1 801 4.5000000000000000e+00 -2 -3 802 - 3.6500000000000000e+01 - - -6.8690335750579834e-01 1.4317978918552399e-01 - -8.9101696014404297e-01 7.9761099815368652e-01 - <_> - 1.5994973182678223e+01 - - 1 2 803 2.5000000000000000e+00 0 -1 804 - 3.7550000000000000e+02 -2 -3 805 5.0000000000000000e-01 - - 9.4166928529739380e-01 -7.3805016279220581e-01 - 5.3213769197463989e-01 -8.9826993644237518e-02 - <_> - 1.5662853240966797e+01 - - 1 2 806 3.5000000000000000e+00 0 -1 807 - 6.5000000000000000e+00 -2 -3 808 468. - - -2.2272130846977234e-01 3.8207814097404480e-01 - -3.3211985230445862e-01 9.1164916753768921e-01 - <_> - 1.5838563919067383e+01 - - 1 2 809 6.5000000000000000e+00 0 -1 810 646. -2 -3 811 - 7.3500000000000000e+01 - - 5.0928765535354614e-01 -1.2581250071525574e-01 - -4.6567234396934509e-01 1.7571029067039490e-01 - <_> - 1.6171665191650391e+01 - - 1 2 812 2.5000000000000000e+00 0 -1 813 24. -2 -3 814 - 5.0000000000000000e-01 - - -6.1817497014999390e-01 8.6530512571334839e-01 - 3.3310186862945557e-01 -1.2780697643756866e-01 - <_> - 1.5851295471191406e+01 - - 1 2 815 3.9500000000000000e+01 0 -1 816 - 4.8500000000000000e+01 -2 -3 817 851. - - -3.2037055492401123e-01 7.0678859949111938e-01 - -1.3180524110794067e-01 4.8293638229370117e-01 - <_> - 1.6087598800659180e+01 - - 1 2 818 8.8500000000000000e+01 0 -1 819 - 6.4450000000000000e+02 -2 -3 820 4.9500000000000000e+01 - - -8.5365521907806396e-01 2.3630441725254059e-01 - 7.0704340934753418e-01 -4.6923226118087769e-01 - <_> - 1.6363336563110352e+01 - - 1 2 821 2.8150000000000000e+02 0 -1 822 - 2.7895000000000000e+03 -2 -3 823 1.0850000000000000e+02 - - -1.4065095782279968e-01 7.5202518701553345e-01 - -3.9883279800415039e-01 2.7573746442794800e-01 - <_> - 1.6588956832885742e+01 - - 1 2 824 5.0000000000000000e-01 0 -1 825 - 1.1500000000000000e+01 -2 -3 826 5.5000000000000000e+00 - - -8.1318140029907227e-01 4.3003699183464050e-01 - 2.2561977803707123e-01 -3.0686858296394348e-01 - <_> - 1.6775182723999023e+01 - - 1 2 827 4.1250000000000000e+02 0 -1 828 - 1.5000000000000000e+00 -2 -3 829 3.8450000000000000e+02 - - -4.6817734837532043e-01 2.1098636090755463e-01 - 8.0670994520187378e-01 -5.8135390281677246e-01 - <_> - 1.6856193542480469e+01 - - 1 2 830 5.0000000000000000e-01 0 -1 831 - 1.2500000000000000e+01 -2 -3 832 3.5000000000000000e+00 - - -2.8672289848327637e-01 6.1958354711532593e-01 - 8.1012040376663208e-02 -4.5567196607589722e-01 - <_> - 1.7051292419433594e+01 - - 1 2 833 1.8500000000000000e+01 0 -1 834 - 1.2450000000000000e+02 -2 -3 835 4.5000000000000000e+00 - - 4.2621921747922897e-02 -7.6019698381423950e-01 - -5.0678414106369019e-01 1.9509740173816681e-01 - <_> - 1.6998657226562500e+01 - - 1 2 836 8.5000000000000000e+00 0 -1 837 - 4.5000000000000000e+00 -2 -3 838 1.5050000000000000e+02 - - 6.6981112957000732e-01 -7.7394820749759674e-02 - -5.9851008653640747e-01 -2.3549804463982582e-02 - <_> - 1.7141326904296875e+01 - - 1 2 839 5.5000000000000000e+00 0 -1 840 - 2.6500000000000000e+01 -2 -3 841 1737. - - -4.8677769303321838e-01 3.9110738039016724e-01 - 2.7351859211921692e-01 -5.6498247385025024e-01 - <_> - 1.7101375579833984e+01 - - 1 2 842 1.0150000000000000e+02 0 -1 843 - 5.0000000000000000e-01 -2 -3 844 899. - - 3.0308917164802551e-01 -4.4189167022705078e-01 - 9.3633669614791870e-01 8.8033325970172882e-02 - <_> - 1.7200811386108398e+01 - - 1 2 845 5.0000000000000000e-01 0 -1 846 42. -2 -3 847 - 2.1350000000000000e+02 - - 2.7510833740234375e-01 -7.5726032257080078e-01 - -4.3352231383323669e-01 2.1154280006885529e-01 - <_> - 1.7079784393310547e+01 - - 1 2 848 5.5000000000000000e+00 0 -1 849 20. -2 -3 850 - 7.5000000000000000e+00 - - -9.7573763132095337e-01 2.8162035346031189e-01 - 3.6659198999404907e-01 -1.2102800607681274e-01 - <_> - 1.7073648452758789e+01 - - 1 2 851 1.1500000000000000e+01 0 -1 852 17. -2 -3 853 - 1.0500000000000000e+01 - - -8.6597007513046265e-01 7.9339522123336792e-01 - -6.1342595145106316e-03 8.5101735591888428e-01 - <_> - 1.7690402984619141e+01 - - 1 2 854 4.5000000000000000e+00 0 -1 855 - 2.2500000000000000e+01 -2 -3 856 4.9500000000000000e+01 - - 1.3958141207695007e-02 6.5386813879013062e-01 - -1.2044989317655563e-01 -9.2647463083267212e-01 - <_> - 1.7552139282226562e+01 - - 1 2 857 6.7250000000000000e+02 0 -1 858 255. -2 -3 859 - 8.1500000000000000e+01 - - 7.4523144960403442e-01 -7.1219885349273682e-01 - 1.7446618527173996e-02 -6.2030416727066040e-01 - <_> - 1.7826660156250000e+01 - - 1 2 860 2.6500000000000000e+01 0 -1 861 - 5.0000000000000000e-01 -2 -3 862 8.5000000000000000e+00 - - 2.6728147268295288e-01 -4.4572594761848450e-01 - -7.3989224433898926e-01 2.7452003955841064e-01 - <_> - 1.7716260910034180e+01 - - 1 2 863 2.9050000000000000e+02 0 -1 864 - 4.3500000000000000e+01 -2 -3 865 1.5000000000000000e+00 - - -6.7486357688903809e-01 5.5104964971542358e-01 - 3.6211666464805603e-01 -1.1039795726537704e-01 - <_> - 1.7527446746826172e+01 - - 1 2 866 8.5000000000000000e+00 0 -1 867 - 1.1500000000000000e+01 -2 -3 868 4.5000000000000000e+00 - - -4.3785366415977478e-01 1.7071330547332764e-01 - 4.2691925168037415e-01 -3.4452387690544128e-01 - <_> - 1.7498483657836914e+01 - - 1 2 869 1.3850000000000000e+02 0 -1 870 - 4.6500000000000000e+01 -2 -3 871 1.3500000000000000e+01 - - 4.4523417949676514e-01 -4.4731280207633972e-01 - -8.1189721822738647e-01 -2.8963508084416389e-02 - <_> - 1.7594804763793945e+01 - - 1 2 872 9.5000000000000000e+00 0 -1 873 - 4.5000000000000000e+00 -2 -3 874 2.5000000000000000e+00 - - 2.5354215875267982e-02 -6.9031453132629395e-01 - 6.6937547922134399e-01 -1.8369350582361221e-02 - <_> - 1.7741346359252930e+01 - - 1 2 875 5.3500000000000000e+01 0 -1 876 - 2.5000000000000000e+00 -2 -3 877 7. - - -7.9686230421066284e-01 1.4654204249382019e-01 - 6.7961549758911133e-01 -8.0987089872360229e-01 - <_> - 1.7493940353393555e+01 - - 1 2 878 1.5000000000000000e+00 0 -1 879 - 4.5000000000000000e+00 -2 -3 880 2.7850000000000000e+02 - - -4.4610077142715454e-01 6.3808631896972656e-01 - 2.9086035490036011e-01 -3.3009988069534302e-01 - <_> - 1.7796676635742188e+01 - - 1 2 881 3.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 9.9550000000000000e+02 - - -3.7948560714721680e-01 3.0273652076721191e-01 - -2.0024552941322327e-01 4.5401337742805481e-01 - <_> - 1.7816259384155273e+01 - - 1 2 884 5.0000000000000000e-01 0 -1 885 - 2.5000000000000000e+00 -2 -3 886 2.0450000000000000e+02 - - -6.4229112863540649e-01 3.8051229715347290e-01 - 1.9582625478506088e-02 -6.1875140666961670e-01 - <_> - 1.8269836425781250e+01 - - 1 2 887 2.0650000000000000e+02 0 -1 888 - 3.2500000000000000e+01 -2 -3 889 8.5000000000000000e+00 - - -9.3007892370223999e-02 -8.1624692678451538e-01 - -3.7598320841789246e-01 4.5357686281204224e-01 - <_> - 1.8564132690429688e+01 - - 1 2 890 5.0000000000000000e-01 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 5.0000000000000000e-01 - - -2.9174187779426575e-01 6.4155840873718262e-01 - 2.9429650306701660e-01 -2.9134511947631836e-01 - <_> - 1.8538108825683594e+01 - - 1 2 893 4.5000000000000000e+00 0 -1 894 - 3.6500000000000000e+01 -2 -3 895 5.0000000000000000e-01 - - -2.6023799553513527e-02 -7.2857677936553955e-01 - -5.0230020284652710e-01 4.2321056127548218e-01 - <_> - 1.8706319808959961e+01 - - 1 2 896 3.5000000000000000e+00 0 -1 897 - 1.3500000000000000e+01 -2 -3 898 1.0500000000000000e+01 - - -8.4947246313095093e-01 1.8297985196113586e-01 - -6.2586158514022827e-01 1.6820982098579407e-01 - <_> - 1.8353506088256836e+01 - - 1 2 899 5.0000000000000000e-01 0 -1 900 - 1.4500000000000000e+01 -2 -3 901 1.3500000000000000e+01 - - -3.8173475861549377e-01 3.7457469105720520e-01 - -3.5281360149383545e-01 5.2393311262130737e-01 - <_> - 1.7990430831909180e+01 - - 1 2 902 5.0000000000000000e-01 0 -1 903 - 7.6500000000000000e+01 -2 -3 904 2.1350000000000000e+02 - - 3.9235761761665344e-01 -4.3086987733840942e-01 - -3.6307579278945923e-01 2.6121103763580322e-01 - <_> - 1.7641067504882812e+01 - - 1 2 905 5.1950000000000000e+02 0 -1 906 - 7.6450000000000000e+02 -2 -3 907 2.5000000000000000e+00 - - -6.7761904001235962e-01 9.2178511619567871e-01 - 1.1485935747623444e-01 -3.4936183691024780e-01 - <_> - 1.8007766723632812e+01 - - 1 2 908 8.5000000000000000e+00 0 -1 909 - 6.5000000000000000e+00 -2 -3 910 1.4250000000000000e+02 - - 4.2121639847755432e-01 -7.9783517122268677e-01 - 3.6669909954071045e-01 -8.5580341517925262e-02 - <_> - 1.7631553649902344e+01 - - 1 2 911 1.0500000000000000e+01 0 -1 912 - 5.0000000000000000e-01 -2 -3 913 1.4500000000000000e+01 - - 2.6670908927917480e-01 -3.7621408700942993e-01 - -6.2516123056411743e-01 4.7545883059501648e-01 - <_> - 1.7849103927612305e+01 - - 1 2 914 2.1500000000000000e+01 0 -1 915 - 1.9450000000000000e+02 -2 -3 916 6.1715000000000000e+03 - - -3.8722166419029236e-01 2.1755173802375793e-01 - -8.4401416778564453e-01 1.5962296724319458e-01 - <_> - 1.8148504257202148e+01 - - 1 2 917 2.9950000000000000e+02 0 -1 918 - 1.1977500000000000e+04 -2 -3 919 5.0000000000000000e-01 - - 2.7477404475212097e-01 -7.4366313219070435e-01 - 2.9939907789230347e-01 -4.3714806437492371e-01 - <_> - 1.8520885467529297e+01 - - 1 2 920 6.4500000000000000e+01 0 -1 921 - 5.0000000000000000e-01 -2 -3 922 1.2500000000000000e+01 - - 6.9857753813266754e-02 -4.7508594393730164e-01 - 3.7238201498985291e-01 -7.4164247512817383e-01 - <_> - 1.8834211349487305e+01 - - 1 2 923 8.6500000000000000e+01 0 -1 924 - 8.9500000000000000e+01 -2 -3 925 1.7445000000000000e+03 - - -8.0918049812316895e-01 1. -1.6057571768760681e-01 - 3.1332454085350037e-01 - <_> - 1.8351465225219727e+01 - - 1 2 926 5.8350000000000000e+02 0 -1 927 - 7.5000000000000000e+00 -2 -3 928 481. - - 4.6060821413993835e-01 -6.7813009023666382e-02 - -4.8274511098861694e-01 6.9861322641372681e-01 - <_> - 1.8501985549926758e+01 - - 1 2 929 1.5000000000000000e+00 0 -1 930 - 2.5000000000000000e+00 -2 -3 931 1.0050000000000000e+02 - - -8.9331996440887451e-01 4.0598359704017639e-01 - -4.1995242238044739e-01 1.5051996707916260e-01 - <_> - 1.8696071624755859e+01 - - 1 2 932 2.3050000000000000e+02 0 -1 933 - 3.5000000000000000e+00 -2 -3 934 5.0000000000000000e-01 - - -3.3542561531066895e-01 1.9408614933490753e-01 1. - -9.5072054862976074e-01 - <_> - 1.8607995986938477e+01 - - 1 2 935 2.5000000000000000e+00 0 -1 936 - 1.5000000000000000e+00 -2 -3 937 1.2500000000000000e+01 - - 5.4928588867187500e-01 -2.4268487468361855e-02 - -8.3902990818023682e-01 -8.8076196610927582e-02 - <_> - 1.8578538894653320e+01 - - 1 2 938 3549. 0 -1 939 3.2050000000000000e+02 -2 -3 940 - 6461. - - -2.9456844553351402e-02 8.3224558830261230e-01 1. - -9.5387804508209229e-01 - <_> - 1.8958681106567383e+01 - - 1 2 941 7.5000000000000000e+00 0 -1 942 - 3.1550000000000000e+02 -2 -3 943 3.5000000000000000e+00 - - -7.5887119770050049e-01 7.0706927776336670e-01 - 3.8014331459999084e-01 -1.1943070590496063e-01 - <_> - 1.8760652542114258e+01 - - 1 2 944 3.3500000000000000e+01 0 -1 945 - 5.5000000000000000e+00 -2 -3 946 4.5000000000000000e+00 - - -7.5789099931716919e-01 7.9995310306549072e-01 - 2.9564496874809265e-01 -1.9802929461002350e-01 - <_> - 1.8639022827148438e+01 - - 1 2 947 5.0000000000000000e-01 0 -1 948 - 5.5500000000000000e+01 -2 -3 949 2.7950000000000000e+02 - - -8.5202199220657349e-01 6.9410562515258789e-01 - 3.6203834414482117e-01 -1.2163019925355911e-01 - <_> - 1.8766536712646484e+01 - - 1 2 950 3.5000000000000000e+00 0 -1 951 - 1.5000000000000000e+00 -2 -3 952 42. - - -9.3982005119323730e-01 1.2751524150371552e-01 - 6.3139563798904419e-01 -7.6969057321548462e-01 - <_> - 1.9183019638061523e+01 - - 1 2 953 5.0000000000000000e-01 0 -1 954 - 5.1500000000000000e+01 -2 -3 955 1.5000000000000000e+00 - - 4.1648134589195251e-01 -8.8983547687530518e-01 - 9.5907759666442871e-01 -2.4271501600742340e-01 - <_> - 1.9610746383666992e+01 - - 1 2 956 2.0450000000000000e+02 0 -1 957 - 9.5000000000000000e+00 -2 -3 958 4.2850000000000000e+02 - - 1.3211338222026825e-01 -4.8846188187599182e-01 - 4.2772728204727173e-01 -6.5411061048507690e-01 - <_> - 1.9917108535766602e+01 - - 1 2 959 3.9500000000000000e+01 0 -1 960 - 3.4150000000000000e+02 -2 -3 961 1.5000000000000000e+00 - - -1.6529877483844757e-01 -9.6143603324890137e-01 - -2.8269404172897339e-01 3.0636185407638550e-01 - <_> - 1.9404857635498047e+01 - - 1 2 962 1.5000000000000000e+00 0 -1 963 - 5.0000000000000000e-01 -2 -3 964 1.5000000000000000e+00 - - 3.8518258929252625e-01 -1.9976606965065002e-01 - 3.1995189189910889e-01 -5.1225066184997559e-01 - <_> - 2.0154628753662109e+01 - - 1 2 965 2.2500000000000000e+01 0 -1 966 - 1.5000000000000000e+00 -2 -3 967 1.5500000000000000e+01 - - 4.7032272815704346e-01 -3.5649308562278748e-01 - 7.4977207183837891e-01 5.0952531397342682e-02 - <_> - 2.0107938766479492e+01 - - 1 2 968 1.1500000000000000e+01 0 -1 969 - 9.5000000000000000e+00 -2 -3 970 5.0000000000000000e-01 - - -8.9147239923477173e-01 7.6516920328140259e-01 - 4.5234966278076172e-01 -4.6691324561834335e-02 - <_> - 2.0402862548828125e+01 - - 1 2 971 8.5000000000000000e+00 0 -1 972 - 5.5000000000000000e+00 -2 -3 973 3.5000000000000000e+00 - - -4.7490122914314270e-01 2.9843258857727051e-01 - -4.5378142595291138e-01 2.9492387175559998e-01 - <_> - 2.0257144927978516e+01 - - 1 2 974 1.5500000000000000e+01 0 -1 975 - 5.0000000000000000e-01 -2 -3 976 4.3500000000000000e+01 - - 3.1388428807258606e-01 -1.4571745693683624e-01 - -7.5251871347427368e-01 6.9722115993499756e-01 - <_> - 2.0529319763183594e+01 - - 1 2 977 1.5000000000000000e+00 0 -1 978 - 1.5000000000000000e+00 -2 -3 979 2.5000000000000000e+00 - - -5.2027046680450439e-01 2.7217444777488708e-01 - 4.6654894948005676e-01 -4.6129345893859863e-01 - <_> - 2.0874372482299805e+01 - - 1 2 980 9.6500000000000000e+01 0 -1 981 - 1.9165000000000000e+03 -2 -3 982 8.5000000000000000e+00 - - -2.2539170086383820e-01 6.6775095462799072e-01 - -3.7017312645912170e-01 1.4091856777667999e-01 - <_> - 2.0993101119995117e+01 - - 1 2 983 8.9500000000000000e+01 0 -1 984 - 2.2850000000000000e+02 -2 -3 985 811. - - -9.4379550218582153e-01 1.1872769892215729e-01 1. - -9.5742899179458618e-01 - <_> - 2.0633829116821289e+01 - - 1 2 986 4.5000000000000000e+00 0 -1 987 - 2.5000000000000000e+00 -2 -3 988 2.5000000000000000e+00 - - -9.2427527904510498e-01 2.3482735455036163e-01 - 4.5335689187049866e-01 -4.4699901342391968e-01 - <_> - 2.0826599121093750e+01 - - 1 2 989 4.9500000000000000e+01 0 -1 990 - 4.5000000000000000e+00 -2 -3 991 4.8500000000000000e+01 - - 1.9276854395866394e-01 -4.7601845860481262e-01 - -2.1918711066246033e-01 4.9042212963104248e-01 - <_> - 2.1078292846679688e+01 - - 1 2 992 4.5000000000000000e+00 0 -1 993 - 5.5500000000000000e+01 -2 -3 994 4.5000000000000000e+00 - - 2.6589986681938171e-01 -6.8663871288299561e-01 - -4.7653216123580933e-01 3.5789057612419128e-01 - <_> - 2.0846752166748047e+01 - - 1 2 995 2.5500000000000000e+01 0 -1 996 - 2.5000000000000000e+00 -2 -3 997 9.5000000000000000e+00 - - -4.0679597854614258e-01 7.6525181531906128e-02 - -4.4665309786796570e-01 7.5682783126831055e-01 - <_> - 2.1128168106079102e+01 - - 1 2 998 1.9450000000000000e+02 0 -1 999 - 7.9250000000000000e+02 -2 -3 1000 1.9450000000000000e+02 - - 4.8146584630012512e-01 -6.7968618869781494e-01 - 5.6917864084243774e-01 -4.0854610502719879e-02 - <_> - 2.1430679321289062e+01 - - 1 2 1001 1.3250000000000000e+02 0 -1 1002 - 1.5000000000000000e+00 -2 -3 1003 3.8500000000000000e+01 - - 6.9865274429321289e-01 -3.9771077036857605e-01 - -5.0634521245956421e-01 5.4503116756677628e-02 - <_> - 2.1460109710693359e+01 - - 1 2 1004 2.1150000000000000e+02 0 -1 1005 898. -2 -3 1006 - 95. - - -3.4796665422618389e-03 -6.2917459011077881e-01 - 5.9274631738662720e-01 -7.7559250593185425e-01 - <_> - 2.1738679885864258e+01 - - 1 2 1007 9.5000000000000000e+00 0 -1 1008 - 1.2500000000000000e+01 -2 -3 1009 2.8450000000000000e+02 - - 2.7857103943824768e-01 -3.2522264122962952e-01 - -7.0976269245147705e-01 -3.1888559460639954e-02 - <_> - 2.1714611053466797e+01 - - 1 2 1010 2.0500000000000000e+01 0 -1 1011 - 1.7550000000000000e+02 -2 -3 1012 1.3950000000000000e+02 - - 4.7277057170867920e-01 -7.4925351142883301e-01 - 4.6757832169532776e-01 -9.6052125096321106e-02 - <_> - 2.1671428680419922e+01 - - 1 2 1013 1.3015000000000000e+03 0 -1 1014 - 4.5000000000000000e+00 -2 -3 1015 1.4250000000000000e+02 - - 7.6744452118873596e-02 -5.5534267425537109e-01 - 7.4648100137710571e-01 -4.3182671070098877e-02 - <_> - 2.1580698013305664e+01 - - 1 2 1016 1.3500000000000000e+01 0 -1 1017 - 8.5000000000000000e+00 -2 -3 1018 1.1500000000000000e+01 - - -5.0190782546997070e-01 1.9962008297443390e-01 - 4.6641969680786133e-01 -1.8569506704807281e-01 - <_> - 2.1765819549560547e+01 - - 1 2 1019 8.2500000000000000e+01 0 -1 1020 - 4.5000000000000000e+00 -2 -3 1021 2.8050000000000000e+02 - - -4.4983270764350891e-01 1.8512135744094849e-01 - 4.3670821189880371e-01 -7.7668732404708862e-01 - <_> - 2.1940675735473633e+01 - - 1 2 1022 5.0000000000000000e-01 0 -1 1023 - 3.5000000000000000e+00 -2 -3 1024 3.4500000000000000e+01 - - -6.2042754888534546e-01 4.7864294052124023e-01 - -3.8229328393936157e-01 3.0125352740287781e-01 - <_> - 2.2267677307128906e+01 - - 1 2 1025 8.5000000000000000e+00 0 -1 1026 - 2.8500000000000000e+01 -2 -3 1027 1.5000000000000000e+00 - - -3.4308344125747681e-01 3.2700043916702271e-01 - 2.8009243309497833e-02 -6.5551960468292236e-01 - <_> - 2.2207328796386719e+01 - - 1 2 1028 2.5000000000000000e+00 0 -1 1029 - 3.5000000000000000e+00 -2 -3 1030 1.1215000000000000e+03 - - 5.3718221187591553e-01 -1.2088337540626526e-01 - 1.5861311554908752e-01 -3.9377096295356750e-01 - <_> - 2.2471664428710938e+01 - - 1 2 1031 2.9050000000000000e+02 0 -1 1032 - 5.9450000000000000e+02 -2 -3 1033 4.1450000000000000e+02 - - -6.4998543262481689e-01 7.1848845481872559e-01 - 2.6433640718460083e-01 -3.9302077889442444e-01 - <_> - 2.2527078628540039e+01 - - 1 2 1034 7.5000000000000000e+00 0 -1 1035 - 2.5000000000000000e+00 -2 -3 1036 2.2605000000000000e+03 - - -9.3585616350173950e-01 -4.2096305638551712e-02 - -7.0427574217319489e-02 4.3294385075569153e-01 - <_> - 2.2606931686401367e+01 - - 1 2 1037 1.0500000000000000e+01 0 -1 1038 - 2.8750000000000000e+02 -2 -3 1039 1.1500000000000000e+01 - - 1.1093313246965408e-01 -3.9183530211448669e-01 - 6.3532203435897827e-01 -5.7091873884201050e-01 - <_> - 2.2367671966552734e+01 - - 1 2 1040 1.5500000000000000e+01 0 -1 1041 - 1.6500000000000000e+01 -2 -3 1042 1.7500000000000000e+01 - - -1.6724117100238800e-01 4.4530591368675232e-01 - -4.3550294637680054e-01 1.9026978313922882e-01 - <_> - 2.2205213546752930e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 1.1500000000000000e+01 -2 -3 1045 1.1905000000000000e+03 - - -4.4692027568817139e-01 3.8084071874618530e-01 - -4.8567453026771545e-01 2.7033451199531555e-01 - <_> - 2.2693662643432617e+01 - - 1 2 1046 6.5000000000000000e+00 0 -1 1047 - 1.5000000000000000e+00 -2 -3 1048 3.5500000000000000e+01 - - 4.8754628747701645e-02 -4.7193619608879089e-01 - 5.7730108499526978e-01 -3.6538568139076233e-01 - <_> - 2.2709083557128906e+01 - - 1 2 1049 2.7795000000000000e+03 0 -1 1050 - 5.0000000000000000e-01 -2 -3 1051 5.0000000000000000e-01 - - -6.2101531028747559e-01 1.1589990556240082e-01 1. -1. - <_> - 2.2808294296264648e+01 - - 1 2 1052 5.3950000000000000e+02 0 -1 1053 500. -2 -3 1054 - 1.5000000000000000e+00 - - -8.5519909858703613e-01 6.6525626182556152e-01 - 9.6477895975112915e-02 -3.8266643881797791e-01 - <_> - 2.2709251403808594e+01 - - 1 2 1055 2.8500000000000000e+01 0 -1 1056 - 9.5000000000000000e+00 -2 -3 1057 1.7850000000000000e+02 - - -3.0039480328559875e-01 2.3731714487075806e-01 - 5.5204099416732788e-01 -1. - <_> - 2.2883974075317383e+01 - - 1 2 1058 1.5000000000000000e+00 0 -1 1059 - 4.7650000000000000e+02 -2 -3 1060 3.5000000000000000e+00 - - 3.1513065099716187e-01 -6.7278760671615601e-01 - 4.8823799937963486e-02 -5.3364491462707520e-01 - <_> - 2.2645736694335938e+01 - - 1 2 1061 2.1500000000000000e+01 0 -1 1062 - 1.0150000000000000e+02 -2 -3 1063 1.5500000000000000e+01 - - -3.7698954343795776e-01 9.1966107487678528e-02 - -1.9366940855979919e-01 6.3159108161926270e-01 - <_> - 2.2804265975952148e+01 - - 1 2 1064 1.4500000000000000e+01 0 -1 1065 - 6.5000000000000000e+00 -2 -3 1066 31. - - -4.2572322487831116e-01 2.5687438249588013e-01 - -4.0757122635841370e-01 8.0108904838562012e-01 - <_> - 2.2991754531860352e+01 - - 1 2 1067 7.5000000000000000e+00 0 -1 1068 - 3.5000000000000000e+00 -2 -3 1069 2.5000000000000000e+00 - - -2.2490467131137848e-01 3.3885499835014343e-01 - 3.8232448697090149e-01 -4.9994280934333801e-01 - <_> - 2.2915760040283203e+01 - - 1 2 1070 1.0500000000000000e+01 0 -1 1071 - 2.5000000000000000e+00 -2 -3 1072 43. - - -2.2366788983345032e-01 2.6461529731750488e-01 - -6.6056483983993530e-01 6.4644366502761841e-01 - <_> - 2.3167186737060547e+01 - - 1 2 1073 1.5000000000000000e+00 0 -1 1074 - 3.5000000000000000e+00 -2 -3 1075 1.5500000000000000e+01 - - -1. 4.9131840467453003e-01 -4.0733695030212402e-01 - 9.9567189812660217e-02 - <_> - 2.2755411148071289e+01 - - 1 2 1076 1.5000000000000000e+00 0 -1 1077 - 4.5000000000000000e+00 -2 -3 1078 1.5000000000000000e+00 - - -7.5926685333251953e-01 3.4496614336967468e-01 - 1.2074087560176849e-01 -5.2481061220169067e-01 - <_> - 2.2953344345092773e+01 - - 1 2 1079 2.8150000000000000e+02 0 -1 1080 - 4.1650000000000000e+02 -2 -3 1081 6.9350000000000000e+02 - - -3.3359700441360474e-01 5.3399580717086792e-01 - 8.4570676088333130e-01 -3.3458182215690613e-01 - <_> - 2.3368593215942383e+01 - - 1 2 1082 227. 0 -1 1083 1.0550000000000000e+02 -2 -3 1084 - 4.4650000000000000e+02 - - -7.3385640978813171e-02 4.1524896025657654e-01 - -9.4336360692977905e-01 1. - <_> - 2.3024780273437500e+01 - - 1 2 1085 5.2550000000000000e+02 0 -1 1086 - 4.2150000000000000e+02 -2 -3 1087 3.0500000000000000e+01 - - -1.6232274472713470e-02 6.8589657545089722e-01 - -6.7987442016601562e-01 7.3400551080703735e-01 - <_> - 2.3133411407470703e+01 - - 1 2 1088 2.5000000000000000e+00 0 -1 1089 - 1.5000000000000000e+00 -2 -3 1090 5.5000000000000000e+00 - - -3.0522230267524719e-01 5.5176895856857300e-01 - -2.5108471512794495e-01 4.3696498870849609e-01 - <_> - 2.2578367233276367e+01 - - 1 2 1091 3.6500000000000000e+01 0 -1 1092 26. -2 -3 1093 - 3.1500000000000000e+01 - - 8.0150479078292847e-01 -8.8337904214859009e-01 - 1.4003737270832062e-01 -8.9142149686813354e-01 - <_> - 2.2617025375366211e+01 - - 1 2 1094 1.1500000000000000e+01 0 -1 1095 - 6.8500000000000000e+01 -2 -3 1096 4.0500000000000000e+01 - - -4.8602235317230225e-01 3.8658622652292252e-02 - 9.1023242473602295e-01 -3.9350971579551697e-01 - <_> - 2.2626764297485352e+01 - - 1 2 1097 3.7050000000000000e+02 0 -1 1098 - 4.8150000000000000e+02 -2 -3 1099 1.1500000000000000e+01 - - -1. 7.9611843824386597e-01 -7.0780706405639648e-01 - 9.7384164109826088e-03 - <_> - 2.2082014083862305e+01 - - 1 2 1100 2.5000000000000000e+00 0 -1 1101 - 6.5000000000000000e+00 -2 -3 1102 5.0000000000000000e-01 - - -5.9881603717803955e-01 2.6402229070663452e-01 - 5.0668692588806152e-01 -5.4474925994873047e-01 - <_> - 2.2490549087524414e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 5.0000000000000000e-01 -2 -3 1105 4.8500000000000000e+01 - - -4.8074820637702942e-01 4.0853387117385864e-01 - -3.7592467665672302e-01 5.0597894191741943e-01 - <_> - 2.2812757492065430e+01 - - 1 2 1106 4.0500000000000000e+01 0 -1 1107 - 1.0500000000000000e+01 -2 -3 1108 8.0050000000000000e+02 - - -8.0385506153106689e-01 3.2220870256423950e-01 - 6.9755470752716064e-01 -3.9865970611572266e-01 - <_> - 2.2352939605712891e+01 - - 1 2 1109 1.2500000000000000e+01 0 -1 1110 - 1.5000000000000000e+00 -2 -3 1111 1.5000000000000000e+00 - - 2.1285776793956757e-01 -4.5981806516647339e-01 - 4.1973820328712463e-01 -2.2565999627113342e-01 - <_> - 2.2610305786132812e+01 - - 1 2 1112 2.0500000000000000e+01 0 -1 1113 - 1.5000000000000000e+00 -2 -3 1114 29. - - -2.0439949631690979e-01 2.5736668705940247e-01 - -9.8827475309371948e-01 7.2147792577743530e-01 - <_> - 2.2741743087768555e+01 - - 1 2 1115 3.5000000000000000e+00 0 -1 1116 - 4.8500000000000000e+01 -2 -3 1117 3.5500000000000000e+01 - - -9.4092458486557007e-02 5.6227135658264160e-01 - -5.6600910425186157e-01 1.3143694400787354e-01 - <_> - 2.2782821655273438e+01 - - 1 2 1118 5.6500000000000000e+01 0 -1 1119 - 3.3150000000000000e+02 -2 -3 1120 6.5000000000000000e+00 - - 4.1078153997659683e-02 8.1302630901336670e-01 - -7.2408193349838257e-01 2.5323694944381714e-01 - <_> - 2.2561285018920898e+01 - - 1 2 1121 1.5000000000000000e+00 0 -1 1122 - 6.5000000000000000e+00 -2 -3 1123 1.5000000000000000e+00 - - -8.3376455307006836e-01 -1.1895341426134109e-01 - 3.2173439860343933e-01 -2.2153630852699280e-01 - <_> - 2.2957450866699219e+01 - - 1 2 1124 1.5000000000000000e+00 0 -1 1125 - 7.6950000000000000e+02 -2 -3 1126 1.3500000000000000e+01 - - -5.0485479831695557e-01 4.8193752765655518e-01 - -2.8308025002479553e-01 3.9616531133651733e-01 - <_> - 2.3185138702392578e+01 - - 1 2 1127 5.5000000000000000e+00 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 1.4050000000000000e+02 - - -7.7944564819335938e-01 3.1965014338493347e-01 - 2.2768935561180115e-01 -4.3597799539566040e-01 - <_> - 2.3197412490844727e+01 - - 1 2 1130 2.5000000000000000e+00 0 -1 1131 - 2.5000000000000000e+00 -2 -3 1132 8.5000000000000000e+00 - - 5.9841811656951904e-02 -7.1680092811584473e-01 - 6.8867534399032593e-01 1.2272221967577934e-02 - <_> - 2.3383518218994141e+01 - - 1 2 1133 9.5000000000000000e+00 0 -1 1134 - 1.0115000000000000e+03 -2 -3 1135 1.3500000000000000e+01 - - -7.5907582044601440e-01 5.5666831322014332e-03 - -6.5333795547485352e-01 1.8610689043998718e-01 - <_> - 2.4061538696289062e+01 - - 1 2 1136 3.5500000000000000e+01 0 -1 1137 - 1.5000000000000000e+00 -2 -3 1138 8.5000000000000000e+00 - - 6.7802059650421143e-01 -4.0095943212509155e-01 - -8.5392379760742188e-01 -2.6821995154023170e-02 - <_> - 2.4534542083740234e+01 - - 1 2 1139 1.2350000000000000e+02 0 -1 1140 - 2.9500000000000000e+01 -2 -3 1141 4.5000000000000000e+00 - - -7.6275803148746490e-02 4.7300234436988831e-01 - -9.2102265357971191e-01 1.5679582953453064e-01 - <_> - 2.4849668502807617e+01 - - 1 2 1142 4.5000000000000000e+00 0 -1 1143 - 1.5000000000000000e+00 -2 -3 1144 1.2500000000000000e+01 - - -7.1332806348800659e-01 -1.8122823908925056e-02 - 7.0794415473937988e-01 -2.4113529920578003e-01 - <_> - 2.4467212677001953e+01 - - 1 2 1145 4.1850000000000000e+02 0 -1 1146 - 8.5000000000000000e+00 -2 -3 1147 2945. - - 2.2338098287582397e-01 -3.8245588541030884e-01 - 7.1123474836349487e-01 -3.3307316899299622e-01 - <_> - 2.4749870300292969e+01 - - 1 2 1148 2.2500000000000000e+01 0 -1 1149 - 1.9500000000000000e+01 -2 -3 1150 3.5000000000000000e+00 - - 3.2208207249641418e-01 -4.9405458569526672e-01 - -6.4639550447463989e-01 2.8265854716300964e-01 - <_> - 2.5424608230590820e+01 - - 1 2 1151 2.8150000000000000e+02 0 -1 1152 - 4.2850000000000000e+02 -2 -3 1153 3.5000000000000000e+00 - - 1.4349616132676601e-02 8.4566748142242432e-01 - -9.5824217796325684e-01 -1.0716012120246887e-01 - <_> - 2.4834630966186523e+01 - - 1 2 1154 8.5000000000000000e+00 0 -1 1155 - 5.5000000000000000e+00 -2 -3 1156 5.0000000000000000e-01 - - 2.1508189383894205e-03 5.6899297237396240e-01 - 6.4855700731277466e-01 -6.4779657125473022e-01 - <_> - 2.4929552078247070e+01 - - 1 2 1157 7.5000000000000000e+00 0 -1 1158 - 4.5000000000000000e+00 -2 -3 1159 5.0000000000000000e-01 - - 9.4921566545963287e-02 -4.8822158575057983e-01 - 6.4119017124176025e-01 -2.8962375596165657e-02 - <_> - 2.4881700515747070e+01 - - 1 2 1160 9.1500000000000000e+01 0 -1 1161 - 2.5500000000000000e+01 -2 -3 1162 1122. - - -4.7852240502834320e-02 5.2576094865798950e-01 1. -1. - <_> - 2.5097393035888672e+01 - - 1 2 1163 1.7150000000000000e+02 0 -1 1164 - 3.4500000000000000e+01 -2 -3 1165 2.5500000000000000e+01 - - -2.1177834272384644e-01 2.1569216251373291e-01 - -9.0615940093994141e-01 1. - <_> - 2.5430635452270508e+01 - - 1 2 1166 5.5000000000000000e+00 0 -1 1167 - 5.0000000000000000e-01 -2 -3 1168 3.5000000000000000e+00 - - 6.0626584291458130e-01 -4.2933013290166855e-02 - 1.2032220512628555e-01 -4.5643520355224609e-01 - <_> - 2.4833143234252930e+01 - - 1 2 1169 6.5000000000000000e+00 0 -1 1170 - 2.5000000000000000e+00 -2 -3 1171 2.0050000000000000e+02 - - 1.9587014615535736e-01 -8.7051421403884888e-01 - -2.0953345298767090e-01 2.9975613951683044e-01 - <_> - 2.5055957794189453e+01 - - 1 2 1172 1.7415000000000000e+03 0 -1 1173 - 1.0500000000000000e+01 -2 -3 1174 1.1750000000000000e+02 - - -3.2608142495155334e-01 2.2281394898891449e-01 - -8.6601722240447998e-01 5.6492161750793457e-01 - <_> - 2.5411783218383789e+01 - - 1 2 1175 1.9500000000000000e+01 0 -1 1176 - 1.5000000000000000e+00 -2 -3 1177 1.4500000000000000e+01 - - -2.2238333523273468e-01 3.5582524538040161e-01 - 9.7925044596195221e-02 -5.7895737886428833e-01 - <_> - 2.5232561111450195e+01 - - 1 2 1178 5.5000000000000000e+00 0 -1 1179 - 3.5000000000000000e+00 -2 -3 1180 1.5000000000000000e+00 - - -1. 1.0744545608758926e-01 2.4408946931362152e-01 - -1.7922264337539673e-01 - <_> - 2.5592079162597656e+01 - - 1 2 1181 8.5000000000000000e+00 0 -1 1182 - 3.7750000000000000e+02 -2 -3 1183 1.7450000000000000e+02 - - 3.5951843857765198e-01 -2.5438147783279419e-01 - 5.8976590633392334e-01 -6.4009445905685425e-01 - <_> - 2.5460926055908203e+01 - - 1 2 1184 2.8350000000000000e+02 0 -1 1185 - 1.5885000000000000e+03 -2 -3 1186 2.2500000000000000e+01 - - -1.3115195930004120e-01 5.7663148641586304e-01 - -8.3647221326828003e-01 -5.5450040847063065e-02 - <_> - 2.4983026504516602e+01 - - 1 2 1187 5.0000000000000000e-01 0 -1 1188 - 1.8500000000000000e+01 -2 -3 1189 3.4650000000000000e+02 - - 5.0644135475158691e-01 -1. -4.7790014743804932e-01 - 5.8962784707546234e-02 - <_> - 2.4962465286254883e+01 - - 1 2 1190 3.8250000000000000e+02 0 -1 1191 - 9.5000000000000000e+00 -2 -3 1192 8.5950000000000000e+02 - - 5.8645974844694138e-02 -9.5598822832107544e-01 - 7.1161812543869019e-01 -2.0562157034873962e-02 - <_> - 2.4795219421386719e+01 - - 1 2 1193 2.8500000000000000e+01 0 -1 1194 - 1.5000000000000000e+00 -2 -3 1195 1.7500000000000000e+01 - - 2.9913264513015747e-01 -1.6724526882171631e-01 - -8.8783025741577148e-01 1. - <_> - 2.4997814178466797e+01 - - 1 2 1196 1.4500000000000000e+01 0 -1 1197 43. -2 -3 1198 - 3.5000000000000000e+00 - - -4.6730864048004150e-01 1. -9.0318864583969116e-01 - 2.0259493589401245e-01 - <_> - 2.5250741958618164e+01 - - 1 2 1199 5.5000000000000000e+00 0 -1 1200 - 1.7500000000000000e+01 -2 -3 1201 9.8500000000000000e+01 - - 2.5292718410491943e-01 -5.6624042987823486e-01 - -4.7334527969360352e-01 7.5167727470397949e-01 - <_> - 2.5597959518432617e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 4.5000000000000000e+00 -2 -3 1204 5.0000000000000000e-01 - - 5.2678531408309937e-01 -7.2871202230453491e-01 - 3.4721735119819641e-01 -1.4052625000476837e-01 - <_> - 2.6015928268432617e+01 - - 1 2 1205 3.3500000000000000e+01 0 -1 1206 - 1.5000000000000000e+00 -2 -3 1207 3.5000000000000000e+00 - - 7.1335107088088989e-01 -6.8683260679244995e-01 - 4.1797044873237610e-01 -7.5381346046924591e-02 - <_> - 2.6080852508544922e+01 - - 1 2 1208 1.9450000000000000e+02 0 -1 1209 - 3.4500000000000000e+01 -2 -3 1210 5.0000000000000000e-01 - - -6.0427057743072510e-01 5.5709409713745117e-01 - 3.4673354029655457e-01 -1.8051835894584656e-01 - <_> - 2.6467638015747070e+01 - - 1 2 1211 2.5115000000000000e+03 0 -1 1212 - 8.5000000000000000e+00 -2 -3 1213 2.0850000000000000e+02 - - -8.5619848966598511e-01 4.9012210965156555e-01 - -4.2894706130027771e-01 1.0497479885816574e-01 - <_> - 2.6485155105590820e+01 - - 1 2 1214 9.6650000000000000e+02 0 -1 1215 - 3.2550000000000000e+02 -2 -3 1216 2.4500000000000000e+01 - - 1.7517041414976120e-02 7.9495114088058472e-01 - 7.8716523945331573e-02 -8.8528424501419067e-01 - <_> - 2.6288461685180664e+01 - - 1 2 1217 2.7915000000000000e+03 0 -1 1218 - 4.5000000000000000e+00 -2 -3 1219 4.5000000000000000e+00 - - -1.9669318199157715e-01 2.9254439473152161e-01 - -8.2664072513580322e-01 2.2074800729751587e-01 - <_> - 2.6351388931274414e+01 - - 1 2 1220 1.5000000000000000e+00 0 -1 1221 - 2.5000000000000000e+00 -2 -3 1222 7.5000000000000000e+00 - - -4.2111295461654663e-01 4.7202318906784058e-01 - -8.8099575042724609e-01 -7.9371139407157898e-02 - <_> - 2.6195323944091797e+01 - - 1 2 1223 9.5000000000000000e+00 0 -1 1224 - 4.3650000000000000e+02 -2 -3 1225 6.2500000000000000e+01 - - 6.2379628419876099e-01 -3.6856892704963684e-01 - -5.6515967845916748e-01 -2.9386903624981642e-03 - <_> - 2.6427618026733398e+01 - - 1 2 1226 5.6500000000000000e+01 0 -1 1227 - 1.8500000000000000e+01 -2 -3 1228 5.0000000000000000e-01 - - -3.6606630682945251e-01 2.3229379951953888e-01 - 4.9491932988166809e-01 -7.3755401372909546e-01 - <_> - 2.6300844192504883e+01 - - 1 2 1229 6.1500000000000000e+01 0 -1 1230 - 4.1750000000000000e+02 -2 -3 1231 5.5000000000000000e+00 - - -4.9513667821884155e-01 7.5124400854110718e-01 - 2.2448441386222839e-01 -2.7989912033081055e-01 - <_> - 2.6734531402587891e+01 - - 1 2 1232 2.9500000000000000e+01 0 -1 1233 280. -2 -3 1234 - 5.0000000000000000e-01 - - 1.1864694952964783e-01 -6.6632729768753052e-01 - 4.5777958631515503e-01 -8.0784313380718231e-02 - <_> - 2.6800367355346680e+01 - - 1 2 1235 4.1265000000000000e+03 0 -1 1236 - 5.0000000000000000e-01 -2 -3 1237 7.8500000000000000e+01 - - 3.9412322640419006e-01 -3.0951443314552307e-01 - -9.7793340682983398e-01 4.3862605094909668e-01 - <_> - 2.6887401580810547e+01 - - 1 2 1238 350. 0 -1 1239 7.5000000000000000e+00 -2 -3 1240 - 2.2350000000000000e+02 - - 8.7033271789550781e-02 -3.6893099546432495e-01 - 9.4931793212890625e-01 -1. - <_> - 2.7101215362548828e+01 - - 1 2 1241 5.5000000000000000e+00 0 -1 1242 - 3.5000000000000000e+00 -2 -3 1243 6.4500000000000000e+01 - - -8.3407133817672729e-01 6.2552863359451294e-01 - 2.1381312608718872e-01 -3.0896508693695068e-01 - <_> - 2.7130867004394531e+01 - - 1 2 1244 2.6500000000000000e+01 0 -1 1245 - 1.0350000000000000e+02 -2 -3 1246 17. - - 2.9652552679181099e-02 -4.6722367405891418e-01 - -9.2275160551071167e-01 9.4599908590316772e-01 - <_> - 2.7444198608398438e+01 - - 1 2 1247 1.5000000000000000e+00 0 -1 1248 9. -2 -3 1249 - 5.0000000000000000e-01 - - -9.2614519596099854e-01 1. 3.1333214044570923e-01 - -1.0745179653167725e-01 - <_> - 2.7101421356201172e+01 - - 1 2 1250 5.0000000000000000e-01 0 -1 1251 - 5.9500000000000000e+01 -2 -3 1252 1.5500000000000000e+01 - - -3.9119881391525269e-01 3.8085353374481201e-01 - -3.4277844429016113e-01 5.1453381776809692e-01 - <_> - 2.7595775604248047e+01 - - 1 2 1253 1.5000000000000000e+00 0 -1 1254 - 1.6855000000000000e+03 -2 -3 1255 7.5000000000000000e+00 - - 4.9557527899742126e-01 -1.8799009919166565e-01 - 4.2001377791166306e-02 -5.3131079673767090e-01 - <_> - 2.7920442581176758e+01 - - 1 2 1256 788. 0 -1 1257 8.5000000000000000e+00 -2 -3 1258 - 7.5000000000000000e+00 - - 4.2728736996650696e-01 -5.2986663579940796e-01 - -4.7308242321014404e-01 3.2466796040534973e-01 - <_> - 2.7709392547607422e+01 - - 1 2 1259 4.0450000000000000e+02 0 -1 1260 - 9.5000000000000000e+00 -2 -3 1261 1.0895000000000000e+03 - - -1. 6.6353029012680054e-01 5.8117783069610596e-01 - -2.1105107665061951e-01 - <_> - 2.7577920913696289e+01 - - 1 2 1262 2.0750000000000000e+02 0 -1 1263 - 5.0000000000000000e-01 -2 -3 1264 1.0650000000000000e+02 - - 2.2170700132846832e-01 -3.8288524746894836e-01 - 4.9027836322784424e-01 -3.9834201335906982e-01 - <_> - 2.7649755477905273e+01 - - 1 2 1265 4.5000000000000000e+00 0 -1 1266 - 4.5000000000000000e+00 -2 -3 1267 6.0500000000000000e+01 - - -5.5156159400939941e-01 7.1834795176982880e-02 - 3.5335651040077209e-01 -7.6608622074127197e-01 - <_> - 2.7592519760131836e+01 - - 1 2 1268 107. 0 -1 1269 2.1500000000000000e+01 -2 -3 1270 - 5.1500000000000000e+01 - - -5.7235393673181534e-02 6.3974326848983765e-01 - -8.9891165494918823e-01 8.4132647514343262e-01 - <_> - 2.8039279937744141e+01 - - 1 2 1271 1.9650000000000000e+02 0 -1 1272 - 1.9150000000000000e+02 -2 -3 1273 1.5000000000000000e+00 - - -6.8037152290344238e-01 4.0258809924125671e-01 - 4.4676044583320618e-01 -3.5154557228088379e-01 - <_> - 2.8309566497802734e+01 - - 1 2 1274 1.5500000000000000e+01 0 -1 1275 - 2.7950000000000000e+02 -2 -3 1276 1.2500000000000000e+01 - - 1.2468610703945160e-01 -4.9273210763931274e-01 - 3.2381328940391541e-01 -5.3833800554275513e-01 - <_> - 2.8425289154052734e+01 - - 1 2 1277 2.5000000000000000e+00 0 -1 1278 - 5.5000000000000000e+00 -2 -3 1279 1.4500000000000000e+01 - - -9.7587949037551880e-01 6.4044964313507080e-01 - 1.9836525619029999e-01 -2.7098080515861511e-01 - <_> - 2.8559995651245117e+01 - - 1 2 1280 2.5500000000000000e+01 0 -1 1281 - 2.3500000000000000e+01 -2 -3 1282 2.2500000000000000e+01 - - 2.2615139186382294e-01 -8.1296950578689575e-01 - -6.1625677347183228e-01 1.3470700383186340e-01 - <_> - 2.8543394088745117e+01 - - 1 2 1283 2.5000000000000000e+00 0 -1 1284 - 8.5000000000000000e+00 -2 -3 1285 2.1250000000000000e+02 - - -8.9228659868240356e-01 4.5488858222961426e-01 - -3.4728524088859558e-01 2.5915831327438354e-01 - <_> - 2.8494907379150391e+01 - - 1 2 1286 1.2500000000000000e+01 0 -1 1287 - 1.4500000000000000e+01 -2 -3 1288 4.5000000000000000e+00 - - -4.8487342894077301e-02 4.5671224594116211e-01 - -6.9567614793777466e-01 2.2189494967460632e-01 - <_> - 2.8800910949707031e+01 - - 1 2 1289 9.5000000000000000e+00 0 -1 1290 - 5.9150000000000000e+02 -2 -3 1291 2.9450000000000000e+02 - - 4.2912089824676514e-01 -2.9302126169204712e-01 - -5.0501853227615356e-01 1.8034780025482178e-01 - <_> - 2.8596752166748047e+01 - - 1 2 1292 4.2500000000000000e+01 0 -1 1293 - 5.5000000000000000e+00 -2 -3 1294 7.8500000000000000e+01 - - 1.2166477739810944e-01 -3.2727557420730591e-01 - 8.2486468553543091e-01 -5.0142651796340942e-01 - <_> - 2.8626392364501953e+01 - - 1 2 1295 2.5000000000000000e+00 0 -1 1296 - 3.5000000000000000e+00 -2 -3 1297 1.1500000000000000e+01 - - -7.7770340442657471e-01 6.9287467002868652e-01 - -8.0658948421478271e-01 1.8084625899791718e-01 - <_> - 2.8708953857421875e+01 - - 1 0 1298 3.3725000000000000e+03 1 0 1298 3.3725000000000000e+03 -1 -2 1299 - 8.8500000000000000e+01 - - -1. -1. 8.2561485469341278e-02 -5.9142053127288818e-01 - <_> - 2.8768381118774414e+01 - - 1 2 1300 3.5000000000000000e+00 0 -1 1301 - 5.0000000000000000e-01 -2 -3 1302 1.5500000000000000e+01 - - 5.9427969157695770e-02 -4.2056742310523987e-01 - -9.8931659013032913e-03 8.4051847457885742e-01 - <_> - 2.9076734542846680e+01 - - 1 2 1303 9.5000000000000000e+00 0 -1 1304 - 2.5000000000000000e+00 -2 -3 1305 3.1500000000000000e+01 - - -1.9572173058986664e-01 3.3956131339073181e-01 - -6.8136513233184814e-01 5.0462640821933746e-02 - <_> - 2.8759977340698242e+01 - - 1 2 1306 5.5000000000000000e+00 0 -1 1307 - 4.5500000000000000e+01 -2 -3 1308 1.7500000000000000e+01 - - 4.8079681396484375e-01 -2.0112591981887817e-01 - -3.1675732135772705e-01 6.5385729074478149e-01 - <_> - 2.9039993286132812e+01 - - 1 2 1309 2.4500000000000000e+01 0 -1 1310 - 5.0000000000000000e-01 -2 -3 1311 8.8500000000000000e+01 - - 3.5188516974449158e-01 -4.6550124883651733e-01 - 2.8001558780670166e-01 -9.2857027053833008e-01 - <_> - 2.8505546569824219e+01 - - 1 2 1312 4.5000000000000000e+00 0 -1 1313 - 5.5000000000000000e+00 -2 -3 1314 3.6500000000000000e+01 - - -8.4169548749923706e-01 3.0654165148735046e-01 - -5.6565535068511963e-01 7.2410300374031067e-02 - <_> - 2.8419874191284180e+01 - - 1 2 1315 7.5000000000000000e+00 0 -1 1316 - 1.5000000000000000e+00 -2 -3 1317 1.9650000000000000e+02 - - -2.4478438496589661e-01 3.8954260945320129e-01 - -7.9576337337493896e-01 -8.5671968758106232e-02 - <_> - 2.8579849243164062e+01 - - 1 2 1318 5.2150000000000000e+02 0 -1 1319 - 1.0489500000000000e+04 -2 -3 1320 2.5000000000000000e+00 - - -9.2212122678756714e-01 9.0178871154785156e-01 - -3.1562241911888123e-01 1.5997636318206787e-01 - <_> - 2.8459320068359375e+01 - - 1 2 1321 1.5000000000000000e+00 0 -1 1322 - 5.0000000000000000e-01 -2 -3 1323 1.5000000000000000e+00 - - 1. -8.4853529930114746e-01 3.9166802167892456e-01 - -1.2053045630455017e-01 - <_> - 2.8431394577026367e+01 - - 1 2 1324 7.5000000000000000e+00 0 -1 1325 - 1.5000000000000000e+00 -2 -3 1326 1.1500000000000000e+01 - - -6.6120177507400513e-01 -2.7925388887524605e-02 - 5.5075007677078247e-01 -1.0082748532295227e-01 - <_> - 2.8410589218139648e+01 - - 1 2 1327 5.0000000000000000e-01 0 -1 1328 - 3.9795000000000000e+03 -2 -3 1329 1.0850000000000000e+02 - - -7.1049576997756958e-01 3.9087232947349548e-01 - -3.5268875956535339e-01 3.9845284819602966e-01 - <_> - 2.8433393478393555e+01 - - 1 2 1330 1.4050000000000000e+02 0 -1 1331 - 1.1395000000000000e+03 -2 -3 1332 2.7850000000000000e+02 - - 2.2805029526352882e-02 7.5605183839797974e-01 - 8.0587834119796753e-01 -3.1199476122856140e-01 - <_> - 2.8450145721435547e+01 - - 1 2 1333 1.5000000000000000e+00 0 -1 1334 - 1.6500000000000000e+01 -2 -3 1335 66. - - -6.0126043856143951e-02 5.0909739732742310e-01 - -4.1120404005050659e-01 8.8414204120635986e-01 - <_> - 2.8767240524291992e+01 - - 1 2 1336 1.9250000000000000e+02 0 -1 1337 - 6.5000000000000000e+00 -2 -3 1338 5.0000000000000000e-01 - - -1.9290012121200562e-01 3.1709375977516174e-01 - 7.3394829034805298e-01 -8.9523345232009888e-01 - <_> - 2.8702144622802734e+01 - - 1 2 1339 1.7500000000000000e+01 0 -1 1340 - 5.9500000000000000e+01 -2 -3 1341 1.4500000000000000e+01 - - -6.5095275640487671e-02 5.5785542726516724e-01 - -1.1056717485189438e-01 -9.8700886964797974e-01 - <_> - 2.9059293746948242e+01 - - 1 2 1342 5.0000000000000000e-01 0 -1 1343 - 4.5500000000000000e+01 -2 -3 1344 1.5000000000000000e+00 - - 3.5714986920356750e-01 -7.6953470706939697e-01 - 2.2187548875808716e-01 -3.9218652248382568e-01 - <_> - 2.9209346771240234e+01 - - 1 2 1345 2.5000000000000000e+00 0 -1 1346 - 3.5000000000000000e+00 -2 -3 1347 2.5000000000000000e+00 - - -7.3074096441268921e-01 -1.4095039805397391e-03 - -2.0701825618743896e-01 3.2750377058982849e-01 - <_> - 2.9597459793090820e+01 - - 1 2 1348 4.5000000000000000e+00 0 -1 1349 - 2.5000000000000000e+00 -2 -3 1350 2.6500000000000000e+01 - - -7.1926873922348022e-01 3.8811251521110535e-01 - -5.9947311878204346e-01 4.5066747814416885e-02 - <_> - 2.9683750152587891e+01 - - 1 2 1351 3.0065000000000000e+03 0 -1 1352 - 2.5000000000000000e+00 -2 -3 1353 28. - - 2.7020177245140076e-01 -2.1698342263698578e-01 - -6.7762559652328491e-01 1. - <_> - 2.9320285797119141e+01 - - 1 2 1354 1.0150000000000000e+02 0 -1 1355 - 1.4500000000000000e+01 -2 -3 1356 7.2250000000000000e+02 - - 7.8379042446613312e-02 -5.4737460613250732e-01 - 4.7727963328361511e-01 -3.0317762494087219e-01 - <_> - 2.9167158126831055e+01 - - 1 2 1357 1.6500000000000000e+01 0 -1 1358 - 7.5000000000000000e+00 -2 -3 1359 1.5000000000000000e+00 - - -8.1418055295944214e-01 2.5399097800254822e-01 - 3.6157444119453430e-01 -1.5312907099723816e-01 - <_> - 2.8848419189453125e+01 - - 1 2 1360 1.6655000000000000e+03 0 -1 1361 2034. -2 -3 1362 - 5.0000000000000000e-01 - - 5.0075697898864746e-01 -6.3801389932632446e-01 - 2.4804645776748657e-01 -3.1873735785484314e-01 - <_> - 2.9447010040283203e+01 - - 1 2 1363 8.5000000000000000e+00 0 -1 1364 4233. -2 -3 1365 - 7.5000000000000000e+00 - - -4.1500657796859741e-01 2.0234003663063049e-01 - 5.9859085083007812e-01 -6.2637329101562500e-02 - <_> - 2.9621536254882812e+01 - - 1 2 1366 2.8500000000000000e+01 0 -1 1367 - 6.5000000000000000e+00 -2 -3 1368 9.5000000000000000e+00 - - -3.5707628726959229e-01 5.3847658634185791e-01 - 6.6506719589233398e-01 -8.9059453457593918e-03 - <_> - 2.9310569763183594e+01 - - 1 2 1369 1.5000000000000000e+00 0 -1 1370 - 3.5000000000000000e+00 -2 -3 1371 5.0000000000000000e-01 - - -3.1096714735031128e-01 5.4285377264022827e-01 - 2.7238297462463379e-01 -3.5304248332977295e-01 - <_> - 2.9590980529785156e+01 - - 1 2 1372 3.5000000000000000e+00 0 -1 1373 - 2.1050000000000000e+02 -2 -3 1374 92. - - 5.3505009412765503e-01 -5.9452915191650391e-01 - 2.8041049838066101e-01 -5.0162929296493530e-01 - <_> - 2.9814289093017578e+01 - - 1 2 1375 2.0500000000000000e+01 0 -1 1376 - 2.4500000000000000e+01 -2 -3 1377 3.0250000000000000e+02 - - 8.2163912057876587e-01 -8.8399130105972290e-01 - 2.2330832481384277e-01 -2.4669396877288818e-01 - <_> - 2.9326959609985352e+01 - - 1 2 1378 2.0450000000000000e+02 0 -1 1379 - 3.5000000000000000e+00 -2 -3 1380 1.0150000000000000e+02 - - 1.2511831521987915e-01 -4.8732957243919373e-01 - 5.5693435668945312e-01 -8.8121764361858368e-02 - <_> - 2.9750629425048828e+01 - - 1 2 1381 5.0000000000000000e-01 0 -1 1382 - 6.6500000000000000e+01 -2 -3 1383 4.2500000000000000e+01 - - 4.2367118597030640e-01 -6.9602817296981812e-01 - -3.0880212783813477e-01 5.4164516925811768e-01 - <_> - 3.0155447006225586e+01 - - 1 2 1384 1.5000000000000000e+00 0 -1 1385 - 1.5000000000000000e+00 -2 -3 1386 6.5250000000000000e+02 - - -1.1533217877149582e-01 5.3498321771621704e-01 - 7.6679694652557373e-01 -3.2542830705642700e-01 - <_> - 3.0284055709838867e+01 - - 1 2 1387 8.5000000000000000e+00 0 -1 1388 - 3.2500000000000000e+01 -2 -3 1389 7.5000000000000000e+00 - - -4.8155191540718079e-01 9.3192115426063538e-02 - -7.9174178838729858e-01 3.6954385042190552e-01 - <_> - 3.0242467880249023e+01 - - 1 2 1390 377. 0 -1 1391 2.1500000000000000e+01 -2 -3 1392 - 7.2500000000000000e+01 - - -9.5957934856414795e-01 1. 1.7622567713260651e-01 - -4.1268944740295410e-01 - <_> - 3.0572156906127930e+01 - - 1 2 1393 5.0000000000000000e-01 0 -1 1394 - 3.5000000000000000e+00 -2 -3 1395 5.0000000000000000e-01 - - -4.0002107620239258e-01 4.2895126342773438e-01 - 2.3685966432094574e-01 -4.2866301536560059e-01 - <_> - 3.0457502365112305e+01 - - 1 2 1396 4.5000000000000000e+00 0 -1 1397 - 1.6250000000000000e+02 -2 -3 1398 5.0000000000000000e-01 - - -9.6815794706344604e-01 8.4674382209777832e-01 - 3.9578998088836670e-01 -1.1465511471033096e-01 - <_> - 3.0213840484619141e+01 - - 1 2 1399 1.0500000000000000e+01 0 -1 1400 - 1.2500000000000000e+01 -2 -3 1401 3.7500000000000000e+01 - - -2.4366129934787750e-01 3.7467244267463684e-01 - 7.1891885995864868e-01 -8.4162598848342896e-01 - <_> - 3.0744232177734375e+01 - - 1 2 1402 4.1500000000000000e+01 0 -1 1403 - 8.1500000000000000e+01 -2 -3 1404 1.3500000000000000e+01 - - -4.4227573275566101e-01 7.8069388866424561e-01 - -4.0449675917625427e-01 1.1648512631654739e-01 - <_> - 3.1348308563232422e+01 - - 1 2 1405 6.5000000000000000e+00 0 -1 1406 - 2.5000000000000000e+00 -2 -3 1407 2.7350000000000000e+02 - - 6.0407727956771851e-01 -7.3400579392910004e-02 - 4.1362971067428589e-01 -5.1575213670730591e-01 - <_> - 3.1235607147216797e+01 - - 1 2 1408 2.5000000000000000e+00 0 -1 1409 - 1.5000000000000000e+00 -2 -3 1410 1.6500000000000000e+01 - - -9.3220674991607666e-01 2.5101718306541443e-01 - -1.1270266026258469e-01 3.8758441805839539e-01 - <_> - 3.1384792327880859e+01 - - 1 2 1411 1.5000000000000000e+00 0 -1 1412 - 5.0000000000000000e-01 -2 -3 1413 5.5000000000000000e+00 - - -5.2711343765258789e-01 3.9250954985618591e-01 - -6.3318008184432983e-01 -4.6615589410066605e-02 - <_> - 3.1738409042358398e+01 - - 1 2 1414 5.5000000000000000e+00 0 -1 1415 - 4.5000000000000000e+00 -2 -3 1416 1.5000000000000000e+00 - - -4.7144132852554321e-01 3.7160307168960571e-01 - 1.1029309034347534e-01 -5.2341604232788086e-01 - <_> - 3.1525688171386719e+01 - - 1 2 1417 2.7500000000000000e+01 0 -1 1418 - 2.3750000000000000e+02 -2 -3 1419 549. - - 4.2861595749855042e-01 -2.9767978191375732e-01 - -2.2094106674194336e-01 5.4825913906097412e-01 - <_> - 3.1673740386962891e+01 - - 1 2 1420 1.5000000000000000e+00 0 -1 1421 - 4.9500000000000000e+01 -2 -3 1422 2.9050000000000000e+02 - - -8.7654346227645874e-01 1. -4.0255749225616455e-01 - 2.0044519007205963e-01 - <_> - 3.1621431350708008e+01 - - 1 2 1423 4.7150000000000000e+02 0 -1 1424 - 1.2725000000000000e+03 -2 -3 1425 2.5000000000000000e+00 - - 6.5338832139968872e-01 -9.5602899789810181e-01 - 2.4892359972000122e-01 -2.9016712307929993e-01 - <_> - 3.1906398773193359e+01 - - 1 2 1426 1.7450000000000000e+02 0 -1 1427 - 2.5000000000000000e+00 -2 -3 1428 9.5000000000000000e+00 - - -1.8344168365001678e-01 2.8496730327606201e-01 - -7.7526789903640747e-01 9.1641843318939209e-01 - <_> - 3.1950384140014648e+01 - - 1 2 1429 3.5000000000000000e+00 0 -1 1430 - 4.2950000000000000e+02 -2 -3 1431 4.5000000000000000e+00 - - 4.3984048068523407e-02 -5.2791535854339600e-01 - -4.3941143155097961e-01 4.2989644408226013e-01 - <_> - 3.1539623260498047e+01 - - 1 2 1432 1.4500000000000000e+01 0 -1 1433 - 7.2500000000000000e+01 -2 -3 1434 1.0500000000000000e+01 - - -7.7415037155151367e-01 2.2627775371074677e-01 - 4.7551122307777405e-01 -5.0471997261047363e-01 - <_> - 3.1797233581542969e+01 - - 1 2 1435 6.3500000000000000e+01 0 -1 1436 - 1.0850000000000000e+02 -2 -3 1437 2.9500000000000000e+01 - - 1.0805023461580276e-01 -5.7090175151824951e-01 - 2.5760993361473083e-01 -9.4147402048110962e-01 - <_> - 3.1993934631347656e+01 - - 1 2 1438 5.0000000000000000e-01 0 -1 1439 - 8.5000000000000000e+00 -2 -3 1440 2.1500000000000000e+01 - - -9.1666507720947266e-01 2.8140199184417725e-01 - -3.5136243700981140e-01 5.8392471075057983e-01 - <_> - 3.1840326309204102e+01 - - 1 2 1441 5.0000000000000000e-01 0 -1 1442 - 1.1500000000000000e+01 -2 -3 1443 9.5000000000000000e+00 - - -4.9454715847969055e-01 5.0047302246093750e-01 - -2.3830898106098175e-01 6.4585840702056885e-01 - <_> - 3.2244338989257812e+01 - - 1 2 1444 3.0500000000000000e+01 0 -1 1445 - 6.5000000000000000e+00 -2 -3 1446 1.5000000000000000e+00 - - -7.4317447841167450e-02 4.1323140263557434e-01 - 8.8791429996490479e-01 -5.5340951681137085e-01 - <_> - 3.1874242782592773e+01 - - 1 2 1447 3.5000000000000000e+00 0 -1 1448 - 2.1500000000000000e+01 -2 -3 1449 5.0000000000000000e-01 - - 3.4473064541816711e-01 -8.1799471378326416e-01 - 1.6169716417789459e-01 -4.3674921989440918e-01 - <_> - 3.2102954864501953e+01 - - 1 2 1450 3.5000000000000000e+00 0 -1 1451 - 9.5000000000000000e+00 -2 -3 1452 5.5000000000000000e+00 - - 1. -8.5720342397689819e-01 2.2871300578117371e-01 - -2.1341961622238159e-01 - <_> - 3.2401298522949219e+01 - - 1 2 1453 200. 0 -1 1454 5.0000000000000000e-01 -2 -3 1455 - 2.8950000000000000e+02 - - 3.7498253583908081e-01 -7.6661145687103271e-01 - 2.9834258556365967e-01 -1.9752407073974609e-01 - <_> - 3.2551811218261719e+01 - - 1 2 1456 5.0000000000000000e-01 0 -1 1457 - 7.5000000000000000e+00 -2 -3 1458 3.8450000000000000e+02 - - -8.7189918756484985e-01 7.6164549589157104e-01 - -5.3731578588485718e-01 1.5051148831844330e-01 - <_> - 3.2488182067871094e+01 - - 1 2 1459 1.1500000000000000e+01 0 -1 1460 - 2.9500000000000000e+01 -2 -3 1461 3.5000000000000000e+00 - - -7.3691195249557495e-01 3.8235971331596375e-01 - 3.9164143800735474e-01 -9.9554806947708130e-02 - <_> - 3.2482566833496094e+01 - - 1 2 1462 3.2500000000000000e+01 0 -1 1463 - 1.9350000000000000e+02 -2 -3 1464 1.5000000000000000e+00 - - 6.4678239822387695e-01 -4.1009801626205444e-01 - 6.7378622293472290e-01 -2.0099114626646042e-02 - <_> - 3.2707458496093750e+01 - - 1 2 1465 4.5000000000000000e+00 0 -1 1466 - 6.5000000000000000e+00 -2 -3 1467 4.5000000000000000e+00 - - 2.5011846423149109e-01 -3.5912483930587769e-01 - -5.8069908618927002e-01 5.2788341045379639e-01 - <_> - 3.2913391113281250e+01 - - 1 2 1468 6.5000000000000000e+00 0 -1 1469 - 5.0000000000000000e-01 -2 -3 1470 7.5000000000000000e+00 - - 1.8070517480373383e-01 -3.1766068935394287e-01 - -3.3772376179695129e-01 7.4420511722564697e-01 - <_> - 3.2734760284423828e+01 - - 1 2 1471 5.7550000000000000e+02 0 -1 1472 - 3.7550000000000000e+02 -2 -3 1473 6.5000000000000000e+00 - - -1. 5.9613960981369019e-01 -1.8499724566936493e-01 - 6.4883458614349365e-01 - <_> - 3.2690444946289062e+01 - - 1 2 1474 7.5000000000000000e+00 0 -1 1475 - 1.4750000000000000e+02 -2 -3 1476 1.5000000000000000e+00 - - -8.9465433359146118e-01 5.9437677264213562e-02 - 5.1306140422821045e-01 -4.4315967708826065e-02 - <_> - 3.2958328247070312e+01 - - 1 2 1477 1.3500000000000000e+01 0 -1 1478 - 9.5000000000000000e+00 -2 -3 1479 7.7500000000000000e+01 - - -5.6634312868118286e-01 4.1094091534614563e-01 - 2.8711420297622681e-01 -4.4429847598075867e-01 - <_> - 3.2698860168457031e+01 - - 1 2 1480 5.0000000000000000e-01 0 -1 1481 - 2.1500000000000000e+01 -2 -3 1482 2.5000000000000000e+00 - - 3.7188944220542908e-01 -5.5644994974136353e-01 - 2.1933442354202271e-01 -4.9837693572044373e-01 - <_> - 3.3325595855712891e+01 - - 1 2 1483 1.3500000000000000e+01 0 -1 1484 - 1.6500000000000000e+01 -2 -3 1485 2.2500000000000000e+01 - - -2.3853626102209091e-02 -8.3327960968017578e-01 - 7.2281765937805176e-01 -9.6086347103118896e-01 - <_> - 3.3551895141601562e+01 - - 1 2 1486 4.2500000000000000e+01 0 -1 1487 - 1.6500000000000000e+01 -2 -3 1488 3113. - - 1.6587443649768829e-01 -7.2913789749145508e-01 - 2.3857131600379944e-01 -5.4846972227096558e-01 - <_> - 3.3580631256103516e+01 - - 1 2 1489 6.7250000000000000e+02 0 -1 1490 - 7.5000000000000000e+00 -2 -3 1491 837. - - 1.3001777231693268e-01 -3.4062203764915466e-01 - 7.6844960451126099e-01 -8.4330815076828003e-01 - <_> - 3.3759922027587891e+01 - - 1 2 1492 2.1500000000000000e+01 0 -1 1493 532. -2 -3 1494 - 86. - - 5.4001174867153168e-02 -8.4960693120956421e-01 - 1.7928951978683472e-01 -7.8450816869735718e-01 - <_> - 3.3247550964355469e+01 - - 1 2 1495 1.0250000000000000e+02 0 -1 1496 - 1.2625000000000000e+03 -2 -3 1497 2.0350000000000000e+02 - - 1.9308057427406311e-01 -5.1236999034881592e-01 - 8.4804421663284302e-01 -1.5160441398620605e-01 - <_> - 3.3225006103515625e+01 - - 1 2 1498 6.1500000000000000e+01 0 -1 1499 - 5.3500000000000000e+01 -2 -3 1500 5.5000000000000000e+00 - - 1.6829484701156616e-01 -3.3058983087539673e-01 - -5.5838876962661743e-01 6.2332850694656372e-01 - <_> - 3.3475452423095703e+01 - - 1 2 1501 4.5000000000000000e+00 0 -1 1502 - 5.0000000000000000e-01 -2 -3 1503 1.5000000000000000e+00 - - 1. -9.6208763122558594e-01 2.5044605135917664e-01 - -1.8800856173038483e-01 - <_> - 3.3413291931152344e+01 - - 1 2 1504 4.2500000000000000e+01 0 -1 1505 - 1.5000000000000000e+00 -2 -3 1506 5.0000000000000000e-01 - - 1.7652784287929535e-01 -7.1506422758102417e-01 - 5.3353041410446167e-01 -6.2163762748241425e-02 - <_> - 3.3426036834716797e+01 - - 1 2 1507 1.2500000000000000e+01 0 -1 1508 - 4.5000000000000000e+00 -2 -3 1509 1.2650000000000000e+02 - - -5.9280592203140259e-01 1.2747475877404213e-02 - 5.8372533321380615e-01 -5.3357934951782227e-01 - <_> - 3.3327178955078125e+01 - - 1 2 1510 5.0000000000000000e-01 0 -1 1511 - 3.7850000000000000e+02 -2 -3 1512 5.0000000000000000e-01 - - 1. -8.2863241434097290e-01 4.0927416086196899e-01 - -9.8856933414936066e-02 - <_> - 3.3500465393066406e+01 - - 1 2 1513 1.0500000000000000e+01 0 -1 1514 - 1.0500000000000000e+01 -2 -3 1515 1.7500000000000000e+01 - - -8.8380420207977295e-01 1.7328330874443054e-01 - -5.4674810171127319e-01 5.4331338405609131e-01 - <_> - 3.3262767791748047e+01 - - 1 2 1516 8.5000000000000000e+00 0 -1 1517 - 8.5000000000000000e+00 -2 -3 1518 4.2450000000000000e+02 - - 1.9536088407039642e-01 -3.2009023427963257e-01 - -2.3769624531269073e-01 7.3672533035278320e-01 - <_> - 3.3368907928466797e+01 - - 1 2 1519 2.0850000000000000e+02 0 -1 1520 - 8.6750000000000000e+02 -2 -3 1521 4.1750000000000000e+02 - - 1.0613936930894852e-01 -5.0724560022354126e-01 - 6.2702029943466187e-01 -3.7619924545288086e-01 - <_> - 3.3184082031250000e+01 - - 1 2 1522 9.4950000000000000e+02 0 -1 1523 - 4.3150000000000000e+02 -2 -3 1524 3828. - - -1.8482613563537598e-01 5.3871124982833862e-01 - 8.1260812282562256e-01 -4.5530861616134644e-01 - <_> - 3.3174217224121094e+01 - - 1 2 1525 1.3150000000000000e+02 0 -1 1526 11. -2 -3 1527 - 7.1500000000000000e+01 - - -9.0531766414642334e-01 1. 5.7230138778686523e-01 - -9.8625309765338898e-03 - <_> - 3.3909645080566406e+01 - - 1 2 1528 7.5500000000000000e+01 0 -1 1529 - 7.5000000000000000e+00 -2 -3 1530 4.5000000000000000e+00 - - -1.7431867122650146e-01 5.3473585844039917e-01 - 7.9259443283081055e-01 -4.4027620553970337e-01 - <_> - 3.4323459625244141e+01 - - 1 2 1531 5.0000000000000000e-01 0 -1 1532 - 7.5000000000000000e+00 -2 -3 1533 1.1500000000000000e+01 - - -6.9457572698593140e-01 4.1381478309631348e-01 - 1.8358568847179413e-01 -4.2741861939430237e-01 - <_> - 3.4429889678955078e+01 - - 1 2 1534 1.5000000000000000e+00 0 -1 1535 - 3.4500000000000000e+01 -2 -3 1536 1.5000000000000000e+00 - - -1.6454531252384186e-01 4.1743850708007812e-01 - 2.9410120844841003e-01 -5.4460191726684570e-01 - <_> - 3.4504367828369141e+01 - - 1 2 1537 1.5000000000000000e+00 0 -1 1538 - 1.5000000000000000e+00 -2 -3 1539 131. - - -8.7539535760879517e-01 1.8415120244026184e-01 - 6.7155694961547852e-01 -6.1099171638488770e-01 - <_> - 3.4405834197998047e+01 - - 1 2 1540 2.5000000000000000e+00 0 -1 1541 - 8.5000000000000000e+00 -2 -3 1542 4.5000000000000000e+00 - - 8.8270038366317749e-01 -6.7336601018905640e-01 - -5.2773851901292801e-02 4.8054438829421997e-01 - <_> - 3.3936424255371094e+01 - - 1 2 1543 2.9500000000000000e+01 0 -1 1544 - 1.2500000000000000e+01 -2 -3 1545 4.5000000000000000e+00 - - -3.4647983312606812e-01 5.5897259712219238e-01 - -5.1516854763031006e-01 5.5205401033163071e-02 - <_> - 3.4420852661132812e+01 - - 1 2 1546 5.8550000000000000e+02 0 -1 1547 2604. -2 -3 1548 - 8.3550000000000000e+02 - - -4.0185336023569107e-02 6.1351525783538818e-01 - -6.8721204996109009e-01 6.8576447665691376e-02 - <_> - 3.4590526580810547e+01 - - 1 2 1549 5.0000000000000000e-01 0 -1 1550 - 1.3500000000000000e+01 -2 -3 1551 1.1275000000000000e+03 - - 4.7516748309135437e-01 -7.4518758058547974e-01 - 5.2697926759719849e-01 -2.4679833650588989e-01 - <_> - 3.4543453216552734e+01 - - 1 2 1552 3.9050000000000000e+02 0 -1 1553 - 1.0615000000000000e+03 -2 -3 1554 3.9250000000000000e+02 - - 2.9955598711967468e-01 -6.5189003944396973e-01 - 6.8155354261398315e-01 -4.7070294618606567e-02 - <_> - 3.4947910308837891e+01 - - 1 2 1555 4.5000000000000000e+00 0 -1 1556 - 5.5000000000000000e+00 -2 -3 1557 1.5000000000000000e+00 - - -4.3386736512184143e-01 2.5060659646987915e-01 - 5.0304436683654785e-01 -1.0806567221879959e-01 - <_> - 3.4923019409179688e+01 - - 1 2 1558 1.4750000000000000e+02 0 -1 1559 - 2.3500000000000000e+01 -2 -3 1560 8.5000000000000000e+00 - - -2.4892834946513176e-02 6.8752646446228027e-01 1. - -9.7205096483230591e-01 - <_> - 3.5048244476318359e+01 - - 1 2 1561 3.5000000000000000e+00 0 -1 1562 - 3.0750000000000000e+02 -2 -3 1563 3.5000000000000000e+00 - - -7.9125630855560303e-01 7.2282445430755615e-01 - 3.2094714045524597e-01 -1.5550766885280609e-01 - <_> - 3.5228321075439453e+01 - - 1 2 1564 1.5500000000000000e+01 0 -1 1565 - 5.5000000000000000e+00 -2 -3 1566 2.8550000000000000e+02 - - 2.4254414439201355e-01 -6.7788332700729370e-01 - 3.4273535013198853e-01 -1.6169185936450958e-01 - <_> - 3.5199493408203125e+01 - - 1 2 1567 5.4150000000000000e+02 0 -1 1568 - 1.8500000000000000e+01 -2 -3 1569 2.7150000000000000e+02 - - -7.4225193262100220e-01 6.0149985551834106e-01 - 7.5373405218124390e-01 -2.8824761509895325e-02 - <_> - 3.5414993286132812e+01 - - 1 2 1570 4.0500000000000000e+01 0 -1 1571 - 1.1500000000000000e+01 -2 -3 1572 4.5500000000000000e+01 - - -4.5218327641487122e-01 2.1549758315086365e-01 - 6.7104452848434448e-01 -6.4186567068099976e-01 - <_> - 3.5637798309326172e+01 - - 1 2 1573 4.5000000000000000e+00 0 -1 1574 - 5.0000000000000000e-01 -2 -3 1575 213. - - 4.5747065544128418e-01 -1.1402392387390137e-01 - -5.1459467411041260e-01 3.0709332227706909e-01 - <_> - 3.4993129730224609e+01 - - 1 2 1576 1.5000000000000000e+00 0 -1 1577 - 2.1500000000000000e+01 -2 -3 1578 1.5000000000000000e+00 - - -7.2895491123199463e-01 5.6356453895568848e-01 - 3.3972936868667603e-01 -1.1984481662511826e-01 - <_> - 3.4690479278564453e+01 - - 1 2 1579 6.5000000000000000e+00 0 -1 1580 - 1.3500000000000000e+01 -2 -3 1581 1.5000000000000000e+00 - - -5.0508207082748413e-01 2.4323509633541107e-01 - 4.7208204865455627e-01 -3.0265063047409058e-01 - <_> - 3.5325695037841797e+01 - - 1 2 1582 3.8500000000000000e+01 0 -1 1583 - 4.5000000000000000e+00 -2 -3 1584 4.5000000000000000e+00 - - -9.4407665729522705e-01 6.3521623611450195e-01 - -7.4727159738540649e-01 3.3814178314059973e-03 - <_> - 3.5522109985351562e+01 - - 1 2 1585 1.7500000000000000e+01 0 -1 1586 - 4.5000000000000000e+00 -2 -3 1587 1.4500000000000000e+01 - - -3.9393294602632523e-02 6.1425513029098511e-01 - 2.7176653966307640e-02 -9.3371254205703735e-01 - <_> - 3.5375267028808594e+01 - - 1 2 1588 6.9950000000000000e+02 0 -1 1589 - 3.0785000000000000e+03 -2 -3 1590 1.3850000000000000e+02 - - -1.6790051013231277e-02 8.1265693902969360e-01 - 8.6606562137603760e-01 -2.8514975309371948e-01 - <_> - 3.5136772155761719e+01 - - 1 2 1591 3.3450000000000000e+02 0 -1 1592 - 2.0650000000000000e+02 -2 -3 1593 4516. - - -2.3849676549434662e-01 2.2256006300449371e-01 - 9.2165148258209229e-01 -1. - <_> - 3.5608299255371094e+01 - - 1 2 1594 6.8050000000000000e+02 0 -1 1595 - 1.9150000000000000e+02 -2 -3 1596 2.5000000000000000e+00 - - -4.6031120419502258e-01 5.1092636585235596e-01 - -2.5612125173211098e-03 -7.0145553350448608e-01 - <_> - 3.5747840881347656e+01 - - 1 2 1597 2.0500000000000000e+01 0 -1 1598 - 3.5000000000000000e+00 -2 -3 1599 1.1500000000000000e+01 - - -6.8568515777587891e-01 1.3954034447669983e-01 - -9.1864973306655884e-01 1. - <_> - 3.5924507141113281e+01 - - 1 2 1600 5.0000000000000000e-01 0 -1 1601 - 9.5000000000000000e+00 -2 -3 1602 5.0000000000000000e-01 - - -3.1799489259719849e-01 5.5782216787338257e-01 - 1.3727062940597534e-01 -4.3257597088813782e-01 - <_> - 3.6171756744384766e+01 - - 1 2 1603 2.2365000000000000e+03 0 -1 1604 - 1.4500000000000000e+01 -2 -3 1605 3.9185000000000000e+03 - - -8.6497288942337036e-01 4.3238922953605652e-01 - -7.1348220109939575e-01 5.0993368029594421e-02 - <_> - 3.6158969879150391e+01 - - 1 2 1606 1.0350000000000000e+02 0 -1 1607 - 3.0750000000000000e+02 -2 -3 1608 9.8500000000000000e+01 - - -1.2786464765667915e-02 6.7020785808563232e-01 - 5.7271671295166016e-01 -6.4090871810913086e-01 - <_> - 3.6213565826416016e+01 - - 1 2 1609 1.5000000000000000e+00 0 -1 1610 - 2.8500000000000000e+01 -2 -3 1611 3.1500000000000000e+01 - - 3.0467820167541504e-01 -6.0481971502304077e-01 - -4.2102476954460144e-01 3.8542380928993225e-01 - <_> - 3.6608585357666016e+01 - - 1 2 1612 3.0500000000000000e+01 0 -1 1613 - 1.3500000000000000e+01 -2 -3 1614 1.5000000000000000e+00 - - -7.7328640222549438e-01 2.6755025982856750e-01 - 7.0540744066238403e-01 -5.6723617017269135e-03 - <_> - 3.6375709533691406e+01 - - 1 2 1615 1.8285000000000000e+03 0 -1 1616 - 8.7500000000000000e+01 -2 -3 1617 42. - - -6.4856064319610596e-01 2.1328862011432648e-01 - -6.6769516468048096e-01 3.2830646634101868e-01 - <_> - 3.6277973175048828e+01 - - 1 2 1618 6.5500000000000000e+01 0 -1 1619 - 4.5000000000000000e+00 -2 -3 1620 1.5000000000000000e+00 - - 4.5578959584236145e-01 -9.7738876938819885e-02 - 8.4200102090835571e-01 -9.1339147090911865e-01 - <_> - 3.6741077423095703e+01 - - 1 2 1621 7.1500000000000000e+01 0 -1 1622 582. -2 -3 1623 - 9.6500000000000000e+01 - - -1.9926805794239044e-01 7.7841401100158691e-01 - 6.1977410316467285e-01 -7.0222705602645874e-01 - <_> - 3.6163764953613281e+01 - - 1 2 1624 6.5000000000000000e+00 0 -1 1625 - 9.5000000000000000e+00 -2 -3 1626 2.5000000000000000e+00 - - 8.5611216723918915e-02 -7.3398101329803467e-01 - 5.7343614101409912e-01 -8.4580868482589722e-02 - <_> - 3.5979099273681641e+01 - - 1 2 1627 5.0000000000000000e-01 0 -1 1628 - 2.8500000000000000e+01 -2 -3 1629 2.5000000000000000e+00 - - -9.3677574396133423e-01 1. 2.6836359500885010e-01 - -1.8466624617576599e-01 - <_> - 3.6264331817626953e+01 - - 1 2 1630 3.5000000000000000e+00 0 -1 1631 - 1.8500000000000000e+01 -2 -3 1632 2.9050000000000000e+02 - - -5.7591027021408081e-01 2.5618145242333412e-02 - -5.2080082893371582e-01 2.8523272275924683e-01 - <_> - 3.6717056274414062e+01 - - 1 2 1633 1.9850000000000000e+02 0 -1 1634 - 1.5000000000000000e+00 -2 -3 1635 7.1500000000000000e+01 - - -2.0299407839775085e-01 4.5272570848464966e-01 - -4.2182067036628723e-01 5.7546317577362061e-01 - <_> - 3.6786354064941406e+01 - - 1 2 1636 1.5000000000000000e+00 0 -1 1637 - 8.5000000000000000e+00 -2 -3 1638 1.3500000000000000e+01 - - 6.9297738373279572e-02 8.4946548938751221e-01 - 9.1040611267089844e-02 -6.2724369764328003e-01 - <_> - 3.6694664001464844e+01 - - 1 2 1639 2.0650000000000000e+02 0 -1 1640 - 1.1365000000000000e+03 -2 -3 1641 8.2250000000000000e+02 - - 6.2211245298385620e-02 -5.6873995065689087e-01 - 8.5862481594085693e-01 4.4243175536394119e-02 - <_> - 3.7021118164062500e+01 - - 1 2 1642 3.5000000000000000e+00 0 -1 1643 39. -2 -3 1644 - 1.5000000000000000e+00 - - -9.3912738561630249e-01 1. 3.4181830286979675e-01 - -1.2874929606914520e-01 - <_> - 3.6611862182617188e+01 - - 1 2 1645 1.0500000000000000e+01 0 -1 1646 - 1.5000000000000000e+00 -2 -3 1647 6.9500000000000000e+01 - - 6.9203957915306091e-02 -4.2461958527565002e-01 - 5.7738226652145386e-01 -5.9804332256317139e-01 - <_> - 3.6779636383056641e+01 - - 1 2 1648 2.5000000000000000e+00 0 -1 1649 - 5.0000000000000000e-01 -2 -3 1650 234. - - 4.4199943542480469e-01 -8.0851018428802490e-01 - 1.6777423024177551e-01 -7.7587896585464478e-01 - <_> - 3.6986980438232422e+01 - - 1 2 1651 6.7500000000000000e+01 0 -1 1652 - 8.5000000000000000e+00 -2 -3 1653 4.5000000000000000e+00 - - 1.9858379662036896e-01 -6.2078595161437988e-01 - 4.7864001989364624e-01 -2.1115007996559143e-01 - <_> - 3.6953456878662109e+01 - - 1 2 1654 2.0500000000000000e+01 0 -1 1655 - 8.5000000000000000e+00 -2 -3 1656 2.5000000000000000e+00 - - -5.3770077228546143e-01 6.1488139629364014e-01 - 5.4403012990951538e-01 -3.3521864563226700e-02 - <_> - 3.6882488250732422e+01 - - 1 2 1657 8.5000000000000000e+00 0 -1 1658 - 4.5000000000000000e+00 -2 -3 1659 9.5000000000000000e+00 - - -7.9511338472366333e-01 4.1009962558746338e-01 - -7.7284365892410278e-01 -7.0968911051750183e-02 - <_> - 3.6566123962402344e+01 - - 1 2 1660 2.5000000000000000e+00 0 -1 1661 - 3.5000000000000000e+00 -2 -3 1662 6.7050000000000000e+02 - - -3.1636568903923035e-01 4.0465784072875977e-01 - -3.5978075861930847e-01 8.2645517587661743e-01 - <_> - 3.6930900573730469e+01 - - 1 2 1663 6.5000000000000000e+00 0 -1 1664 - 2.5000000000000000e+00 -2 -3 1665 2.3085000000000000e+03 - - 1.4922286570072174e-01 -5.1194334030151367e-01 - 3.6477506160736084e-01 -9.7712445259094238e-01 - <_> - 3.7481365203857422e+01 - - 1 2 1666 5.0000000000000000e-01 0 -1 1667 - 6.0500000000000000e+01 -2 -3 1668 1.1500000000000000e+01 - - 5.5046468973159790e-01 -7.3915064334869385e-01 - 5.6669384241104126e-02 -4.9786236882209778e-01 - <_> - 3.6951145172119141e+01 - - 1 2 1669 7.5500000000000000e+01 0 -1 1670 - 3.1795000000000000e+03 -2 -3 1671 2.0500000000000000e+01 - - -5.3021740913391113e-01 4.7902247309684753e-01 - -7.1032661199569702e-01 3.0279389023780823e-01 - <_> - 3.7264873504638672e+01 - - 1 2 1672 9.5000000000000000e+00 0 -1 1673 - 8.5000000000000000e+00 -2 -3 1674 1.3850000000000000e+02 - - -4.6093446016311646e-01 3.1372815370559692e-01 - 2.2579427063465118e-01 -5.3932684659957886e-01 - <_> - 3.6978828430175781e+01 - - 1 2 1675 5.0000000000000000e-01 0 -1 1676 - 2.5000000000000000e+00 -2 -3 1677 2.5500000000000000e+01 - - -5.1832169294357300e-01 5.6083697080612183e-01 - -2.8604489564895630e-01 5.8539152145385742e-01 - <_> - 3.7433582305908203e+01 - - 1 2 1678 5.0000000000000000e-01 0 -1 1679 - 2.5000000000000000e+00 -2 -3 1680 1.1050000000000000e+02 - - -4.0517255663871765e-01 4.5475342869758606e-01 - -5.2229130268096924e-01 1.9754523038864136e-01 - <_> - 3.7154258728027344e+01 - - 1 2 1681 4.7500000000000000e+01 0 -1 1682 - 3.6500000000000000e+01 -2 -3 1683 7.5000000000000000e+00 - - -4.5602896809577942e-01 6.7287951707839966e-01 - -8.5228067636489868e-01 -3.6258939653635025e-02 - <_> - 3.7732418060302734e+01 - - 1 2 1684 5.0000000000000000e-01 0 -1 1685 - 5.0000000000000000e-01 -2 -3 1686 2.4500000000000000e+01 - - -3.8009887933731079e-01 5.7815653085708618e-01 - 1.2634699046611786e-01 -4.1870203614234924e-01 - <_> - 3.8184680938720703e+01 - - 1 2 1687 7.4500000000000000e+01 0 -1 1688 - 1.6500000000000000e+01 -2 -3 1689 1.4500000000000000e+01 - - -4.0109759569168091e-01 6.5756392478942871e-01 - 4.5226430892944336e-01 -1.4041431248188019e-01 - <_> - 3.8030368804931641e+01 - - 1 2 1690 4.8500000000000000e+01 0 -1 1691 - 5.0000000000000000e-01 -2 -3 1692 2.7500000000000000e+01 - - 3.0716988444328308e-01 -1.5431092679500580e-01 - -9.8855167627334595e-01 1. - <_> - 3.8261077880859375e+01 - - 1 2 1693 1.5000000000000000e+00 0 -1 1694 - 1.5500000000000000e+01 -2 -3 1695 4.5000000000000000e+00 - - -7.7608674764633179e-01 1.1198835074901581e-01 - 2.3070898652076721e-01 -3.3017936348915100e-01 - <_> - 3.8477287292480469e+01 - - 1 2 1696 8.1500000000000000e+01 0 -1 1697 - 1.2500000000000000e+01 -2 -3 1698 2.3500000000000000e+01 - - -3.0018079280853271e-01 2.1620990335941315e-01 - 2.7798384428024292e-01 -8.1539762020111084e-01 - <_> - 3.8031333923339844e+01 - - 1 2 1699 5.0000000000000000e-01 0 -1 1700 - 5.5000000000000000e+00 -2 -3 1701 4.0500000000000000e+01 - - 3.3561244606971741e-01 -3.4119588136672974e-01 - -4.4595631957054138e-01 4.6959918737411499e-01 - <_> - 3.8664794921875000e+01 - - 1 2 1702 2.1450000000000000e+02 0 -1 1703 - 1.5455000000000000e+03 -2 -3 1704 1945. - - 1.7302942276000977e-01 -3.7786087393760681e-01 - 6.3346213102340698e-01 -4.5024818181991577e-01 - <_> - 3.8027435302734375e+01 - - 1 2 1705 1917. 0 -1 1706 2.5500000000000000e+01 -2 -3 1707 - 6.2500000000000000e+01 - - -6.3735866546630859e-01 4.2439568042755127e-01 - 2.5472366809844971e-01 -3.8954088091850281e-01 - <_> - 3.7680835723876953e+01 - - 1 2 1708 2.5000000000000000e+00 0 -1 1709 - 5.0000000000000000e-01 -2 -3 1710 3.0850000000000000e+02 - - -8.1873381137847900e-01 9.3474626541137695e-02 - -3.4660163521766663e-01 2.3065857589244843e-01 - <_> - 3.7860221862792969e+01 - - 1 2 1711 1.5000000000000000e+00 0 -1 1712 - 1.4500000000000000e+01 -2 -3 1713 5.5000000000000000e+00 - - 5.3702151775360107e-01 -5.0781750679016113e-01 - -3.6291462182998657e-01 1.7938588559627533e-01 - <_> - 3.7817699432373047e+01 - - 1 2 1714 2.2375000000000000e+03 0 -1 1715 - 4.3350000000000000e+02 -2 -3 1716 5.6150000000000000e+02 - - 1. -9.8823112249374390e-01 6.7233330011367798e-01 - -4.2519930750131607e-02 - <_> - 3.8362960815429688e+01 - - 1 2 1717 5.0000000000000000e-01 0 -1 1718 - 2.5000000000000000e+00 -2 -3 1719 7.5000000000000000e+00 - - -7.0525264739990234e-01 5.4526209831237793e-01 - -9.1778365895152092e-03 -5.8029389381408691e-01 - <_> - 3.8116054534912109e+01 - - 1 2 1720 2.9500000000000000e+01 0 -1 1721 67. -2 -3 1722 - 1.5000000000000000e+00 - - -1.5948269516229630e-02 -8.6365360021591187e-01 - 3.1721633672714233e-01 -2.4690923094749451e-01 - <_> - 3.8210441589355469e+01 - - 1 2 1723 2.5000000000000000e+00 0 -1 1724 - 5.0000000000000000e-01 -2 -3 1725 2.5000000000000000e+00 - - -2.6925474405288696e-01 3.7546786665916443e-01 - -6.4338034391403198e-01 9.4390012323856354e-02 - <_> - 3.8725402832031250e+01 - - 1 2 1726 9.7550000000000000e+02 0 -1 1727 1522. -2 -3 1728 - 1.5000000000000000e+00 - - -9.5166552066802979e-01 5.1495945453643799e-01 - 1.2304825335741043e-01 -4.3339455127716064e-01 - <_> - 3.8775840759277344e+01 - - 1 2 1729 2.0550000000000000e+02 0 -1 1730 - 1.2850000000000000e+02 -2 -3 1731 2.0150000000000000e+02 - - 6.9701796770095825e-01 -3.2005232572555542e-01 - 8.7860846519470215e-01 5.0437152385711670e-02 - <_> - 3.9036373138427734e+01 - - 1 2 1732 6.4500000000000000e+01 0 -1 1733 - 7.5000000000000000e+00 -2 -3 1734 1.5500000000000000e+01 - - -5.3216791152954102e-01 2.6053419709205627e-01 - 5.1989716291427612e-01 -5.8972364664077759e-01 - <_> - 3.9175300598144531e+01 - - 1 2 1735 1.0650000000000000e+02 0 -1 1736 - 4.5000000000000000e+00 -2 -3 1737 1.8500000000000000e+01 - - 2.3538964986801147e-01 -3.6743223667144775e-01 - -9.1809195280075073e-01 4.5017480850219727e-01 - <_> - 3.8801700592041016e+01 - - 1 2 1738 5.0000000000000000e-01 0 -1 1739 - 3.5000000000000000e+00 -2 -3 1740 452. - - -6.3299810886383057e-01 3.3003783226013184e-01 - -3.7360009551048279e-01 5.6999093294143677e-01 - <_> - 3.8591518402099609e+01 - - 1 2 1741 8.2750000000000000e+02 0 -1 1742 - 2.5000000000000000e+00 -2 -3 1743 2.3500000000000000e+01 - - -2.1018461883068085e-01 3.2383358478546143e-01 - -6.3107532262802124e-01 6.6837269067764282e-01 - <_> - 3.8231525421142578e+01 - - 1 2 1744 4.5000000000000000e+00 0 -1 1745 - 6.5000000000000000e+00 -2 -3 1746 3.8500000000000000e+01 - - -3.0509510636329651e-01 5.1145386695861816e-01 - -3.5999137163162231e-01 3.2099997997283936e-01 - <_> - 3.8624534606933594e+01 - - 1 2 1747 1.5000000000000000e+00 0 -1 1748 - 5.8350000000000000e+02 -2 -3 1749 8.5000000000000000e+00 - - -4.2885985970497131e-01 3.9300963282585144e-01 - 3.1521242856979370e-01 -4.1773849725723267e-01 - <_> - 3.8236549377441406e+01 - - 1 2 1750 7.5000000000000000e+00 0 -1 1751 - 7.5000000000000000e+00 -2 -3 1752 1.9950000000000000e+02 - - -5.7202762365341187e-01 5.4747480154037476e-01 - -4.2250210046768188e-01 2.7025526762008667e-01 - <_> - 3.7923248291015625e+01 - - 1 2 1753 1.5000000000000000e+00 0 -1 1754 - 6.5000000000000000e+00 -2 -3 1755 1.5000000000000000e+00 - - -8.9815288782119751e-01 5.5224311351776123e-01 - 2.6080465316772461e-01 -3.1330034136772156e-01 - <_> - 3.8539402008056641e+01 - - 1 2 1756 1.3500000000000000e+01 0 -1 1757 - 3.5000000000000000e+00 -2 -3 1758 9.5000000000000000e+00 - - 3.9568208158016205e-02 -5.1092988252639771e-01 - -3.6775493621826172e-01 6.1615198850631714e-01 - <_> - 3.8752826690673828e+01 - - 1 2 1759 3.2500000000000000e+01 0 -1 1760 - 6.5000000000000000e+00 -2 -3 1761 48. - - -4.1952580213546753e-01 2.1342341601848602e-01 - -7.1763622760772705e-01 6.4490622282028198e-01 - <_> - 3.9317680358886719e+01 - - 1 2 1762 9.6500000000000000e+01 0 -1 1763 5677. -2 -3 1764 - 1.0650000000000000e+02 - - -5.0442606210708618e-01 5.6485664844512939e-01 - -3.6739125847816467e-01 2.7350792288780212e-01 - <_> - 3.9856521606445312e+01 - - 1 2 1765 1.1655000000000000e+03 0 -1 1766 - 1.5000000000000000e+00 -2 -3 1767 2.6500000000000000e+01 - - 3.9167502522468567e-01 -2.5601682066917419e-01 - -4.5866334438323975e-01 5.3884023427963257e-01 - <_> - 3.9749794006347656e+01 - - 1 2 1768 7.5000000000000000e+00 0 -1 1769 - 4.5000000000000000e+00 -2 -3 1770 4.4150000000000000e+02 - - -9.4176965951919556e-01 8.0333167314529419e-01 - -1.0673010349273682e-01 4.1367250680923462e-01 - <_> - 3.9065311431884766e+01 - - 1 2 1771 1.3775000000000000e+03 0 -1 1772 - 1.7500000000000000e+01 -2 -3 1773 1.7500000000000000e+01 - - -4.1831207275390625e-01 1.8878687918186188e-01 - -6.8447953462600708e-01 8.3450621366500854e-01 - <_> - 3.8689537048339844e+01 - - 1 2 1774 5.0000000000000000e-01 0 -1 1775 - 5.0000000000000000e-01 -2 -3 1776 5.0000000000000000e-01 - - -4.6729511022567749e-01 3.4363251924514771e-01 - 5.8898377418518066e-01 -3.7577590346336365e-01 - <_> - 3.9216602325439453e+01 - - 1 2 1777 9.4500000000000000e+01 0 -1 1778 - 8.5000000000000000e+00 -2 -3 1779 2.2500000000000000e+01 - - -5.7156268507242203e-02 5.2706509828567505e-01 - -8.3782976865768433e-01 5.0827115774154663e-01 - <_> - 3.9576519012451172e+01 - - 1 2 1780 5.0000000000000000e-01 0 -1 1781 - 4.5000000000000000e+00 -2 -3 1782 1.3500000000000000e+01 - - -5.5766177177429199e-01 3.5991629958152771e-01 - -6.7030203342437744e-01 1.3232802040874958e-02 - <_> - 3.9719017028808594e+01 - - 1 2 1783 1.3750000000000000e+02 0 -1 1784 - 3.7550000000000000e+02 -2 -3 1785 5.5000000000000000e+00 - - -9.2470282316207886e-01 4.7786307334899902e-01 - 1.4250029623508453e-01 -3.8374659419059753e-01 - <_> - 3.9720008850097656e+01 - - 1 2 1786 1.9850000000000000e+02 0 -1 1787 - 5.0000000000000000e-01 -2 -3 1788 9.8500000000000000e+01 - - 8.0348841845989227e-02 -7.2714608907699585e-01 - 6.6121768951416016e-01 9.8916271235793829e-04 - <_> - 4.0004077911376953e+01 - - 1 2 1789 4.5000000000000000e+00 0 -1 1790 - 7.5000000000000000e+00 -2 -3 1791 1.5000000000000000e+00 - - 2.8407061100006104e-01 -3.8908326625823975e-01 - -4.9514287710189819e-01 4.9839928746223450e-01 - <_> - 3.9917087554931641e+01 - - 1 2 1792 3.2500000000000000e+01 0 -1 1793 - 5.0000000000000000e-01 -2 -3 1794 585. - - 4.2522689700126648e-01 -8.6992330849170685e-02 - -8.7693715095520020e-01 4.2241948843002319e-01 - <_> - 3.9895332336425781e+01 - - 1 2 1795 2.5000000000000000e+00 0 -1 1796 14. -2 -3 1797 - 8.0150000000000000e+02 - - -8.8761204481124878e-01 8.5713702440261841e-01 - 7.2065353393554688e-01 -2.1752236410975456e-02 - <_> - 3.9827915191650391e+01 - - 1 2 1798 2.5000000000000000e+00 0 -1 1799 - 3.5000000000000000e+00 -2 -3 1800 5.0000000000000000e-01 - - -8.2021051645278931e-01 3.5183283686637878e-01 - 4.9634662270545959e-01 -6.7418396472930908e-02 - <_> - 3.9946743011474609e+01 - - 1 2 1801 1.3950000000000000e+02 0 -1 1802 - 1.0500000000000000e+01 -2 -3 1803 1.2500000000000000e+01 - - -6.8266421556472778e-01 1.1882679909467697e-01 1. - -9.5458626747131348e-01 - <_> - 4.0323368072509766e+01 - - 1 2 1804 3.3500000000000000e+01 0 -1 1805 - 5.1500000000000000e+01 -2 -3 1806 1.0500000000000000e+01 - - -3.3636894822120667e-01 8.2073229551315308e-01 - 3.7662777304649353e-01 -2.6059541106224060e-01 - <_> - 4.0958503723144531e+01 - - 1 2 1807 3.5000000000000000e+00 0 -1 1808 - 1.5000000000000000e+00 -2 -3 1809 8.5000000000000000e+00 - - 2.2758090496063232e-01 -5.6749087572097778e-01 - 2.7914678212255239e-03 6.3513386249542236e-01 - <_> - 4.1149982452392578e+01 - - 1 2 1810 1.6500000000000000e+01 0 -1 1811 - 3.4500000000000000e+01 -2 -3 1812 4.2500000000000000e+01 - - 1.9147972762584686e-01 -4.0481618046760559e-01 - -7.6606553792953491e-01 4.8341959714889526e-01 - <_> - 4.1291107177734375e+01 - - 1 2 1813 5.0000000000000000e-01 0 -1 1814 - 9.2500000000000000e+01 -2 -3 1815 1.8500000000000000e+01 - - -2.8004845976829529e-01 3.2247513532638550e-01 - -4.3766206502914429e-01 3.7250506877899170e-01 - <_> - 4.1338165283203125e+01 - - 1 2 1816 8.5000000000000000e+00 0 -1 1817 - 1.4975000000000000e+03 -2 -3 1818 1.1500000000000000e+01 - - 5.4030120372772217e-01 -6.2127673625946045e-01 - -7.3714929819107056e-01 -2.8116470202803612e-02 - <_> - 4.0824058532714844e+01 - - 1 2 1819 1.0150000000000000e+02 0 -1 1820 - 5.0000000000000000e-01 -2 -3 1821 8.6500000000000000e+01 - - 1.3742440938949585e-01 -5.1410740613937378e-01 - 3.9086878299713135e-01 -5.1371574401855469e-01 - <_> - 4.1013961791992188e+01 - - 1 2 1822 3.8500000000000000e+01 0 -1 1823 - 5.1350000000000000e+02 -2 -3 1824 7.5000000000000000e+00 - - 4.4827082753181458e-01 -6.4318430423736572e-01 - -8.9208698272705078e-01 1.8990385532379150e-01 - <_> - 4.1263370513916016e+01 - - 1 2 1825 4.5000000000000000e+00 0 -1 1826 - 1.6500000000000000e+01 -2 -3 1827 5.0000000000000000e-01 - - -7.4878937005996704e-01 2.4940766394138336e-01 - 1.2522089295089245e-02 -6.5872979164123535e-01 - <_> - 4.1767433166503906e+01 - - 1 2 1828 5.0000000000000000e-01 0 -1 1829 - 2.8050000000000000e+02 -2 -3 1830 4.5000000000000000e+00 - - 5.0406265258789062e-01 -8.8616244494915009e-02 - -3.4679779410362244e-01 9.0911424160003662e-01 - <_> - 4.1977439880371094e+01 - - 1 2 1831 1.5000000000000000e+00 0 -1 1832 - 1.5000000000000000e+00 -2 -3 1833 1.8500000000000000e+01 - - -3.0890017747879028e-01 4.2208892107009888e-01 - -6.2434047460556030e-01 -4.6953088603913784e-03 - <_> - 4.1689002990722656e+01 - - 1 2 1834 8.5000000000000000e+00 0 -1 1835 - 9.5000000000000000e+00 -2 -3 1836 1.5000000000000000e+00 - - -5.0051945447921753e-01 2.1112911403179169e-01 - 6.0711330175399780e-01 -1.2307582795619965e-01 - <_> - 4.2047183990478516e+01 - - 1 2 1837 1.2500000000000000e+01 0 -1 1838 - 4.5000000000000000e+00 -2 -3 1839 1.0500000000000000e+01 - - -6.6009265184402466e-01 3.5818198323249817e-01 - -3.3626151084899902e-01 8.4897673130035400e-01 - <_> - 4.2214286804199219e+01 - - 1 2 1840 1.4500000000000000e+01 0 -1 1841 - 7.2500000000000000e+01 -2 -3 1842 3.2650000000000000e+02 - - -7.1858340501785278e-01 1.6710358858108521e-01 - 2.8976836800575256e-01 -7.7849155664443970e-01 - <_> - 4.2179775238037109e+01 - - 1 2 1843 7.5000000000000000e+00 0 -1 1844 - 2.1500000000000000e+01 -2 -3 1845 3.5000000000000000e+00 - - -1.8530772626399994e-01 3.5436087846755981e-01 - -6.8795353174209595e-01 3.3058721572160721e-02 - <_> - 4.2268901824951172e+01 - - 1 2 1846 3.9865000000000000e+03 0 -1 1847 - 9.5000000000000000e+00 -2 -3 1848 50. - - -8.7134647369384766e-01 8.9125812053680420e-02 - -9.8863673210144043e-01 1. - <_> - 4.2169776916503906e+01 - - 1 2 1849 1.5000000000000000e+00 0 -1 1850 - 1.5000000000000000e+00 -2 -3 1851 3531. - - 4.0612372756004333e-01 -3.0086937546730042e-01 - -4.4789454340934753e-01 1.9873715937137604e-01 - <_> - 4.1840965270996094e+01 - - 1 2 1852 6.5000000000000000e+00 0 -1 1853 - 1.3500000000000000e+01 -2 -3 1854 1.0500000000000000e+01 - - -3.2881295680999756e-01 2.9842245578765869e-01 - 6.5677136182785034e-01 -1.4609988033771515e-01 - <_> - 4.1779693603515625e+01 - - 1 2 1855 1.7500000000000000e+01 0 -1 1856 - 6.2550000000000000e+02 -2 -3 1857 3.5500000000000000e+01 - - 4.6628248691558838e-01 -4.2457789182662964e-01 - -5.6651604175567627e-01 7.6269887387752533e-02 - <_> - 4.1834537506103516e+01 - - 1 2 1858 9.5450000000000000e+02 0 -1 1859 - 5.1585000000000000e+03 -2 -3 1860 6.5000000000000000e+00 - - 6.7174881696701050e-01 -5.5098003149032593e-01 - -5.3131961822509766e-01 5.4840639233589172e-02 - <_> - 4.1514595031738281e+01 - - 1 2 1861 1.9050000000000000e+02 0 -1 1862 198. -2 -3 1863 - 4.5000000000000000e+00 - - -9.0632820129394531e-01 6.2302565574645996e-01 - 2.2914041578769684e-01 -3.1994026899337769e-01 - <_> - 4.1677814483642578e+01 - - 1 2 1864 1.4500000000000000e+01 0 -1 1865 - 8.5000000000000000e+00 -2 -3 1866 1.6450000000000000e+02 - - -5.9017485380172729e-01 7.7795445919036865e-01 - 1.6321752965450287e-01 -9.1361731290817261e-01 - <_> - 4.1670925140380859e+01 - - 1 2 1867 1.5000000000000000e+00 0 -1 1868 - 2.5000000000000000e+00 -2 -3 1869 3.2500000000000000e+01 - - -7.7524507045745850e-01 3.3760032057762146e-01 - -5.7039487361907959e-01 -6.8891793489456177e-03 - <_> - 4.2190979003906250e+01 - - 1 2 1870 1.5000000000000000e+00 0 -1 1871 - 3.0500000000000000e+01 -2 -3 1872 2.8500000000000000e+01 - - 5.2005475759506226e-01 -6.7560416460037231e-01 - -2.8469097614288330e-01 4.6015539765357971e-01 - <_> - 4.2414993286132812e+01 - - 1 2 1873 4.5350000000000000e+02 0 -1 1874 - 5.6250000000000000e+02 -2 -3 1875 1386. - - 2.2401304543018341e-01 -2.9675450921058655e-01 - 9.4739109277725220e-01 -3.2808578014373779e-01 - <_> - 4.2387161254882812e+01 - - 1 2 1876 6.4500000000000000e+01 0 -1 1877 - 1.0150000000000000e+02 -2 -3 1878 3.9500000000000000e+01 - - -8.6874485015869141e-02 4.2865848541259766e-01 - 4.3658611178398132e-01 -5.8364778757095337e-01 - <_> - 4.2977474212646484e+01 - - 1 2 1879 1.5000000000000000e+00 0 -1 1880 - 3.4500000000000000e+01 -2 -3 1881 3.4500000000000000e+01 - - -9.5992848277091980e-02 5.9031045436859131e-01 - -3.2916188240051270e-01 5.4475629329681396e-01 - <_> - 4.2946041107177734e+01 - - 1 2 1882 3.5000000000000000e+00 0 -1 1883 - 5.0000000000000000e-01 -2 -3 1884 2.9500000000000000e+01 - - -8.7138921022415161e-01 5.3535938262939453e-01 - -8.3411961793899536e-01 -3.1432915478944778e-02 - <_> - 4.3175075531005859e+01 - - 1 2 1885 5.1500000000000000e+01 0 -1 1886 - 9.5000000000000000e+00 -2 -3 1887 2.6500000000000000e+01 - - 2.2903612256050110e-01 -2.7770024538040161e-01 - -9.0822434425354004e-01 5.1287508010864258e-01 - <_> - 4.3395133972167969e+01 - - 1 2 1888 8.5000000000000000e+00 0 -1 1889 - 3.1500000000000000e+01 -2 -3 1890 9.5000000000000000e+00 - - -5.6919294595718384e-01 2.2005747258663177e-01 - -6.5205544233322144e-01 2.4285869300365448e-01 - <_> - 4.3123023986816406e+01 - - 1 2 1891 5.0000000000000000e-01 0 -1 1892 - 2.3500000000000000e+01 -2 -3 1893 2.8950000000000000e+02 - - 5.0510871410369873e-01 -4.2869842052459717e-01 - 2.8495252132415771e-01 -3.5368323326110840e-01 - <_> - 4.3039192199707031e+01 - - 1 2 1894 1.9450000000000000e+02 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.9750000000000000e+02 - - 2.6153838634490967e-01 -6.4255547523498535e-01 - 5.5495703220367432e-01 -8.3832859992980957e-02 - <_> - 4.2904518127441406e+01 - - 1 2 1897 8.5000000000000000e+00 0 -1 1898 - 4.8500000000000000e+01 -2 -3 1899 5.5000000000000000e+00 - - -7.5044608116149902e-01 6.8186897039413452e-01 - 3.7062332034111023e-01 -1.3467402756214142e-01 - <_> - 4.3051071166992188e+01 - - 1 2 1900 7.5000000000000000e+00 0 -1 1901 27. -2 -3 1902 - 1.5000000000000000e+00 - - 8.0564457178115845e-01 -8.3087015151977539e-01 - -6.9865477085113525e-01 1.4655402302742004e-01 - <_> - 4.3287654876708984e+01 - - 1 2 1903 1.5000000000000000e+00 0 -1 1904 - 5.4550000000000000e+02 -2 -3 1905 3.1650000000000000e+02 - - 4.4309249520301819e-01 -4.8507699370384216e-01 - -3.5189905762672424e-01 2.3658131062984467e-01 - <_> - 4.3207912445068359e+01 - - 1 2 1906 3.5500000000000000e+01 0 -1 1907 - 1.4500000000000000e+01 -2 -3 1908 3.5000000000000000e+00 - - -5.9388571977615356e-01 3.0807968974113464e-01 - 4.9596279859542847e-01 -7.9740844666957855e-02 - <_> - 4.3681106567382812e+01 - - 1 2 1909 8.3550000000000000e+02 0 -1 1910 - 5.0000000000000000e-01 -2 -3 1911 127. - - 4.7319233417510986e-01 -7.7726446092128754e-02 - -6.6155201196670532e-01 8.7220698595046997e-01 - <_> - 4.3433261871337891e+01 - - 1 2 1912 6.5000000000000000e+00 0 -1 1913 - 1.6550000000000000e+02 -2 -3 1914 7.5000000000000000e+00 - - -5.4153585433959961e-01 9.1551077365875244e-01 - 3.5053235292434692e-01 -2.4784129858016968e-01 - <_> - 4.3632259368896484e+01 - - 1 2 1915 9.5000000000000000e+00 0 -1 1916 - 5.5000000000000000e+00 -2 -3 1917 1.4015000000000000e+03 - - -3.0769789218902588e-01 1.9899617135524750e-01 - 5.1420164108276367e-01 -7.2247970104217529e-01 - <_> - 4.3781681060791016e+01 - - 1 2 1918 5.0000000000000000e-01 0 -1 1919 - 6.3500000000000000e+01 -2 -3 1920 285. - - -9.4710224866867065e-01 -1.1491143703460693e-01 - 1.4942164719104767e-01 -9.0888887643814087e-01 - <_> - 4.3436016082763672e+01 - - 1 2 1921 3.5000000000000000e+00 0 -1 1922 - 2.5000000000000000e+00 -2 -3 1923 1.1500000000000000e+01 - - 5.1440989971160889e-01 -2.3126052320003510e-01 - -3.4566339850425720e-01 6.5181219577789307e-01 - <_> - 4.3652484893798828e+01 - - 1 2 1924 7.5000000000000000e+00 0 -1 1925 10. -2 -3 1926 - 6.5000000000000000e+00 - - 1. -1. 2.1646568179130554e-01 -3.2139009237289429e-01 - <_> - 4.3613075256347656e+01 - - 1 2 1927 3.5000000000000000e+00 0 -1 1928 - 4.0500000000000000e+01 -2 -3 1929 1.5000000000000000e+00 - - 3.4087118506431580e-01 -7.6730841398239136e-01 - 6.0096609592437744e-01 -3.9409600198268890e-02 - <_> - 4.4572402954101562e+01 - - 1 2 1930 9.5000000000000000e+00 0 -1 1931 - 1.6500000000000000e+01 -2 -3 1932 2.4500000000000000e+01 - - -5.2820408344268799e-01 9.5932966470718384e-01 - -4.1353395581245422e-01 2.8032150864601135e-01 - <_> - 4.4815895080566406e+01 - - 1 2 1933 9.5000000000000000e+00 0 -1 1934 - 3.5000000000000000e+00 -2 -3 1935 3.5500000000000000e+01 - - 3.9567866921424866e-01 -1.5199808776378632e-01 - -6.2261438369750977e-01 3.6078429222106934e-01 - <_> - 4.4723213195800781e+01 - - 1 2 1936 9.7500000000000000e+01 0 -1 1937 - 1.3500000000000000e+01 -2 -3 1938 1.4500000000000000e+01 - - -9.2681065201759338e-02 5.0076460838317871e-01 - -8.6433887481689453e-01 9.0161460638046265e-01 - <_> - 4.4693969726562500e+01 - - 1 2 1939 7.0500000000000000e+01 0 -1 1940 - 7.9500000000000000e+01 -2 -3 1941 1.0500000000000000e+01 - - -2.9245814308524132e-02 6.7543286085128784e-01 - -9.3750089406967163e-01 8.4202694892883301e-01 - <_> - 4.4661819458007812e+01 - - 1 2 1942 1.0050000000000000e+02 0 -1 1943 - 5.0000000000000000e-01 -2 -3 1944 2.0350000000000000e+02 - - 2.5402522087097168e-01 -5.0677686929702759e-01 - 5.1687967777252197e-01 -2.2271750867366791e-01 - <_> - 4.4569755554199219e+01 - - 1 2 1945 2.5000000000000000e+00 0 -1 1946 - 5.5000000000000000e+00 -2 -3 1947 1.5000000000000000e+00 - - -9.8248469829559326e-01 5.9973138570785522e-01 - 3.8618931174278259e-01 -9.2063978314399719e-02 - <_> - 4.4696201324462891e+01 - - 1 2 1948 9.5000000000000000e+00 0 -1 1949 - 5.0000000000000000e-01 -2 -3 1950 1.5000000000000000e+00 - - 1.2644694745540619e-01 -3.0191975831985474e-01 - -7.1231579780578613e-01 6.6510468721389771e-01 - <_> - 4.4841907501220703e+01 - - 1 2 1951 1.0500000000000000e+01 0 -1 1952 2. -2 -3 1953 - 8.5000000000000000e+00 - - 8.4430450201034546e-01 -8.3156448602676392e-01 - -6.2735277414321899e-01 1.4570562541484833e-01 - <_> - 4.5156547546386719e+01 - - 1 2 1954 3.5000000000000000e+00 0 -1 1955 - 1.3650000000000000e+02 -2 -3 1956 9.4500000000000000e+01 - - 1.4747160673141479e-01 -4.2295038700103760e-01 - 8.1315612792968750e-01 3.4540321677923203e-02 - <_> - 4.5181140899658203e+01 - - 1 2 1957 9.2500000000000000e+01 0 -1 1958 - 3.3500000000000000e+01 -2 -3 1959 5.0000000000000000e-01 - - -1.5787394717335701e-02 5.7843238115310669e-01 1. - -6.4788794517517090e-01 - <_> - 4.5094200134277344e+01 - - 1 2 1960 5.0000000000000000e-01 0 -1 1961 11. -2 -3 1962 - 8.5000000000000000e+00 - - 7.4942219257354736e-01 -6.0185027122497559e-01 - -1.5223936736583710e-01 5.9839087724685669e-01 - <_> - 4.4670524597167969e+01 - - 1 2 1963 5.0000000000000000e-01 0 -1 1964 - 2.9500000000000000e+01 -2 -3 1965 1.5000000000000000e+00 - - -9.6831363439559937e-01 3.5105532407760620e-01 - 1.3558974862098694e-01 -4.2367911338806152e-01 - <_> - 4.5116874694824219e+01 - - 1 2 1966 1.1150000000000000e+02 0 -1 1967 - 2.2385000000000000e+03 -2 -3 1968 2.2250000000000000e+02 - - 2.0428524911403656e-01 -2.9593735933303833e-01 - 7.5892090797424316e-01 -4.3717506527900696e-01 - <_> - 4.5320117950439453e+01 - - 1 2 1969 1.4500000000000000e+01 0 -1 1970 - 5.0000000000000000e-01 -2 -3 1971 1.6850000000000000e+02 - - 2.4405136704444885e-01 -7.4230778217315674e-01 - 2.0324403047561646e-01 -7.5181680917739868e-01 - <_> - 4.5513221740722656e+01 - - 1 2 1972 1.6500000000000000e+01 0 -1 1973 - 4.3500000000000000e+01 -2 -3 1974 6.5000000000000000e+00 - - 5.3427243232727051e-01 -9.3790411949157715e-01 - 1.9310376048088074e-01 -3.0972629785537720e-01 - <_> - 4.5484699249267578e+01 - - 1 2 1975 3.8150000000000000e+02 0 -1 1976 - 2.4500000000000000e+01 -2 -3 1977 1.9050000000000000e+02 - - -8.3647137880325317e-01 6.7275720834732056e-01 - 7.3206281661987305e-01 -2.8522776439785957e-02 - <_> - 4.5164001464843750e+01 - - 1 2 1978 5.5000000000000000e+00 0 -1 1979 - 1.5000000000000000e+00 -2 -3 1980 9.5000000000000000e+00 - - 1.4569054543972015e-01 -3.2069975137710571e-01 - -5.0144684314727783e-01 7.2659003734588623e-01 - <_> - 4.5379909515380859e+01 - - 1 2 1981 4.5000000000000000e+00 0 -1 1982 - 2.5000000000000000e+00 -2 -3 1983 3.5500000000000000e+01 - - 1.1976420134305954e-01 -7.3696619272232056e-01 - -8.9609044790267944e-01 2.1590869128704071e-01 - <_> - 4.5552185058593750e+01 - - 1 2 1984 1.0500000000000000e+01 0 -1 1985 - 1.8500000000000000e+01 -2 -3 1986 2.5000000000000000e+00 - - -2.9774469137191772e-01 3.9270588755607605e-01 - 1.7227473855018616e-01 -4.3705809116363525e-01 - <_> - 4.5424057006835938e+01 - - 1 2 1987 4.5000000000000000e+00 0 -1 1988 - 2.5000000000000000e+00 -2 -3 1989 6.5000000000000000e+00 - - 4.0223541855812073e-01 -5.1850569248199463e-01 - -5.7175463438034058e-01 3.2103583216667175e-02 - <_> - 4.4719905853271484e+01 - - 1 2 1990 293. 0 -1 1991 4.5650000000000000e+02 -2 -3 1992 - 9.1500000000000000e+01 - - -7.0415091514587402e-01 1. 5.6420707702636719e-01 - -1.8475128337740898e-02 - <_> - 4.4768821716308594e+01 - - 1 2 1993 5.4050000000000000e+02 0 -1 1994 - 1.0105000000000000e+03 -2 -3 1995 3.5000000000000000e+00 - - -9.6306586265563965e-01 7.0629078149795532e-01 - -4.8114392161369324e-01 4.8914406448602676e-02 - <_> - 4.4811882019042969e+01 - - 1 2 1996 1.5000000000000000e+00 0 -1 1997 - 6.1500000000000000e+01 -2 -3 1998 1.5000000000000000e+00 - - 4.2610383033752441e-01 -4.3679422140121460e-01 - 4.3062459677457809e-02 -5.0240081548690796e-01 - <_> - 4.4782844543457031e+01 - - 1 2 1999 2.3500000000000000e+01 0 -1 2000 - 1.0500000000000000e+01 -2 -3 2001 2.0750000000000000e+02 - - -4.0699142217636108e-01 4.2282894253730774e-01 - -2.9037833213806152e-02 6.6520535945892334e-01 - <_> - 4.4953098297119141e+01 - - 1 2 2002 1.5000000000000000e+00 0 -1 2003 - 4.5250000000000000e+02 -2 -3 2004 2.8150000000000000e+02 - - 4.7697910666465759e-01 -4.2501795291900635e-01 - 1.7025266587734222e-01 -3.6029878258705139e-01 - <_> - 4.5256881713867188e+01 - - 1 2 2005 3.8550000000000000e+02 0 -1 2006 - 1.9500000000000000e+01 -2 -3 2007 2.5000000000000000e+00 - - -4.4226761907339096e-02 -8.9648228883743286e-01 - -2.1406635642051697e-01 3.0378299951553345e-01 - <_> - 4.4909713745117188e+01 - - 1 2 2008 9.5000000000000000e+00 0 -1 2009 - 7.5000000000000000e+00 -2 -3 2010 1.8950000000000000e+02 - - -3.4716686606407166e-01 3.7112823128700256e-01 - 5.6419366598129272e-01 -3.5776185989379883e-01 - <_> - 4.5013404846191406e+01 - - 1 2 2011 382. 0 -1 2012 4.5000000000000000e+00 -2 -3 2013 - 4.8500000000000000e+01 - - -8.9492672681808472e-01 1.0369122773408890e-01 - -9.3923377990722656e-01 1. - <_> - 4.4988971710205078e+01 - - 1 2 2014 5.5000000000000000e+00 0 -1 2015 - 1.9500000000000000e+01 -2 -3 2016 83. - - -2.4434272199869156e-02 6.5366929769515991e-01 - 5.1018899679183960e-01 -5.0032502412796021e-01 - <_> - 4.5461128234863281e+01 - - 1 2 2017 1.7500000000000000e+01 0 -1 2018 - 6.5000000000000000e+00 -2 -3 2019 2.5000000000000000e+00 - - -6.1140297912061214e-03 -7.2916007041931152e-01 - 4.7215846180915833e-01 -9.9503576755523682e-02 - <_> - 4.5421901702880859e+01 - - 1 2 2020 3.8500000000000000e+01 0 -1 2021 - 1.9500000000000000e+01 -2 -3 2022 4.1350000000000000e+02 - - -3.9226554334163666e-02 6.2177938222885132e-01 - 4.9934285879135132e-01 -8.5462218523025513e-01 - <_> - 4.5579975128173828e+01 - - 1 2 2023 4.5000000000000000e+00 0 -1 2024 - 1.2500000000000000e+01 -2 -3 2025 6.0750000000000000e+02 - - 1.5807190537452698e-01 -4.8279589414596558e-01 - -7.0834666490554810e-02 5.2963757514953613e-01 - <_> - 4.5701972961425781e+01 - - 1 2 2026 2.5500000000000000e+01 0 -1 2027 - 4.5000000000000000e+00 -2 -3 2028 6.6500000000000000e+01 - - 1.2199875712394714e-01 -4.4052368402481079e-01 - 4.9520158767700195e-01 -7.6688897609710693e-01 - <_> - 4.6094631195068359e+01 - - 1 2 2029 1.3500000000000000e+01 0 -1 2030 - 3.3500000000000000e+01 -2 -3 2031 5.0000000000000000e-01 - - -6.6773444414138794e-01 2.0011912286281586e-01 - 3.9265581965446472e-01 -1.3401876389980316e-01 - <_> - 4.5980365753173828e+01 - - 1 2 2032 7.5000000000000000e+00 0 -1 2033 - 6.8500000000000000e+01 -2 -3 2034 2.5000000000000000e+00 - - 1. -1. 3.8803017139434814e-01 -1.1426544934511185e-01 - <_> - 4.5323959350585938e+01 - - 1 2 2035 6.4500000000000000e+01 0 -1 2036 - 5.0000000000000000e-01 -2 -3 2037 2.2500000000000000e+01 - - -6.5640282630920410e-01 1.7750787734985352e-01 - -6.4647871255874634e-01 7.0243728160858154e-01 - <_> - 4.5314762115478516e+01 - - 1 2 2038 3.1050000000000000e+02 0 -1 2039 - 9.2250000000000000e+02 -2 -3 2040 2.5000000000000000e+00 - - -9.1993892565369606e-03 8.6791253089904785e-01 - 2.0070725679397583e-01 -7.1457195281982422e-01 - <_> - 4.5741744995117188e+01 - - 1 2 2041 4.5000000000000000e+00 0 -1 2042 - 8.5000000000000000e+00 -2 -3 2043 5.5000000000000000e+00 - - -3.7333619594573975e-01 4.2698273062705994e-01 - -3.3845084905624390e-01 4.5299550890922546e-01 - <_> - 4.5397357940673828e+01 - - 1 2 2044 5.0000000000000000e-01 0 -1 2045 673. -2 -3 2046 - 99. - - 3.5919088125228882e-01 -4.5086368918418884e-01 - -3.4438827633857727e-01 6.0893869400024414e-01 - <_> - 4.6037506103515625e+01 - - 1 2 2047 1.9450000000000000e+02 0 -1 2048 23. -2 -3 2049 - 2.9350000000000000e+02 - - -7.0736461877822876e-01 3.2864594459533691e-01 - 6.4014822244644165e-01 -5.0045125186443329e-02 - <_> - 4.6086334228515625e+01 - - 1 2 2050 1.7315000000000000e+03 0 -1 2051 - 7.5000000000000000e+00 -2 -3 2052 1.4250000000000000e+02 - - 4.8830408602952957e-02 -6.7689567804336548e-01 - 7.0138692855834961e-01 -1.2242168188095093e-01 - <_> - 4.5987598419189453e+01 - - 1 2 2053 3.6500000000000000e+01 0 -1 2054 - 1.5500000000000000e+01 -2 -3 2055 5.0000000000000000e-01 - - -3.9643624424934387e-01 8.7146002054214478e-01 - 4.2710801959037781e-01 -9.8734937608242035e-02 - <_> - 4.6501991271972656e+01 - - 1 2 2056 5.0000000000000000e-01 0 -1 2057 - 8.7450000000000000e+02 -2 -3 2058 1.5000000000000000e+00 - - 5.1439017057418823e-01 -2.0838183164596558e-01 - 2.9052633047103882e-01 -4.0280446410179138e-01 - <_> - 4.6733814239501953e+01 - - 1 2 2059 1.0500000000000000e+01 0 -1 2060 - 5.0000000000000000e-01 -2 -3 2061 1.0650000000000000e+02 - - 6.5033751726150513e-01 -6.9465583562850952e-01 - 2.3182304203510284e-01 -4.8147320747375488e-01 - <_> - 4.6992088317871094e+01 - - 1 2 2062 3.3500000000000000e+01 0 -1 2063 - 1.9500000000000000e+01 -2 -3 2064 5.5000000000000000e+00 - - 8.6601603031158447e-01 -7.5138849020004272e-01 - 2.5827473402023315e-01 -2.7564272284507751e-01 - <_> - 4.7450847625732422e+01 - - 1 2 2065 1.0450000000000000e+02 0 -1 2066 - 5.5000000000000000e+00 -2 -3 2067 1.1250000000000000e+02 - - -4.5257368683815002e-01 1.1983016133308411e-01 - 4.5876160264015198e-01 -5.6709617376327515e-01 - <_> - 4.7730972290039062e+01 - - 1 2 2068 5.0000000000000000e-01 0 -1 2069 - 1.5000000000000000e+00 -2 -3 2070 8.5000000000000000e+00 - - -7.2330117225646973e-01 3.9086556434631348e-01 - -4.4356769323348999e-01 1.6937237977981567e-01 - <_> - 4.7399227142333984e+01 - - 1 2 2071 8.4050000000000000e+02 0 -1 2072 - 8.4050000000000000e+02 -2 -3 2073 1.4050000000000000e+02 - - -9.1558247804641724e-02 7.4099737405776978e-01 - 3.8451832532882690e-01 -3.3174303174018860e-01 - <_> - 4.7281646728515625e+01 - - 1 2 2074 5.0000000000000000e-01 0 -1 2075 16. -2 -3 2076 - 1.5000000000000000e+00 - - -8.2827556133270264e-01 6.9123578071594238e-01 - 4.4064518809318542e-01 -1.1758007854223251e-01 - <_> - 4.6855220794677734e+01 - - 1 2 2077 2.9050000000000000e+02 0 -1 2078 - 5.0000000000000000e-01 -2 -3 2079 2.5000000000000000e+00 - - 2.7002122998237610e-01 -4.2642879486083984e-01 - 6.4271414279937744e-01 -9.9449371919035912e-03 - <_> - 4.6856540679931641e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 5.5000000000000000e+00 -2 -3 2082 1.3150000000000000e+02 - - 3.0294808745384216e-01 -9.4428914785385132e-01 - 7.9829651117324829e-01 1.3203345006331801e-03 - <_> - 4.7140712738037109e+01 - - 1 2 2083 2.5000000000000000e+00 0 -1 2084 - 6.5000000000000000e+00 -2 -3 2085 5.5000000000000000e+00 - - -6.8201988935470581e-01 -1.1526307091116905e-02 - 2.8417402505874634e-01 -4.2742845416069031e-01 - <_> - 4.7207427978515625e+01 - - 1 2 2086 1.3500000000000000e+01 0 -1 2087 - 5.0000000000000000e-01 -2 -3 2088 1.3500000000000000e+01 - - 6.6715896129608154e-02 -7.0858204364776611e-01 - 4.9522966146469116e-01 -9.5102474093437195e-02 - <_> - 4.7424549102783203e+01 - - 1 2 2089 9.5500000000000000e+01 0 -1 2090 - 7.5000000000000000e+00 -2 -3 2091 521. - - -4.2587676644325256e-01 2.1712063252925873e-01 - -7.5793963670730591e-01 4.0587410330772400e-01 - <_> - 4.7687419891357422e+01 - - 1 2 2092 1.5000000000000000e+00 0 -1 2093 1328. -2 -3 2094 - 4.0350000000000000e+02 - - -6.6068017482757568e-01 2.6286858320236206e-01 - 4.7489511966705322e-01 -4.0635243058204651e-01 - <_> - 4.7712440490722656e+01 - - 1 2 2095 1.8500000000000000e+01 0 -1 2096 - 7.5000000000000000e+00 -2 -3 2097 3.5000000000000000e+00 - - -2.8594979643821716e-01 3.5628849267959595e-01 - 6.2096267938613892e-01 -3.3863210678100586e-01 - <_> - 4.8107528686523438e+01 - - 1 2 2098 5.0000000000000000e-01 0 -1 2099 - 2.9500000000000000e+01 -2 -3 2100 5.0000000000000000e-01 - - -1.6691003739833832e-01 6.9435620307922363e-01 - 1.8187750875949860e-01 -3.3679330348968506e-01 - <_> - 4.8001659393310547e+01 - - 1 2 2101 2.5000000000000000e+00 0 -1 2102 - 1.5500000000000000e+01 -2 -3 2103 1.5500000000000000e+01 - - -4.0513530373573303e-01 3.5411515831947327e-01 - 3.5931992530822754e-01 -5.4738515615463257e-01 - <_> - 4.8304855346679688e+01 - - 1 2 2104 8.5000000000000000e+00 0 -1 2105 - 1.5000000000000000e+00 -2 -3 2106 9.9500000000000000e+01 - - 2.2030718624591827e-01 -8.2183599472045898e-01 - 3.0319401621818542e-01 -2.0620918273925781e-01 - <_> - 4.8225379943847656e+01 - - 1 2 2107 1.0350000000000000e+02 0 -1 2108 - 3.5000000000000000e+00 -2 -3 2109 4.0850000000000000e+02 - - 9.0001732110977173e-02 -5.7426315546035767e-01 - 6.7126566171646118e-01 -7.9473815858364105e-02 - <_> - 4.8565086364746094e+01 - - 1 2 2110 1.7150000000000000e+02 0 -1 2111 - 5.0000000000000000e-01 -2 -3 2112 2.2825000000000000e+03 - - 3.3970481157302856e-01 -1.2163538485765457e-01 - 5.6507825851440430e-01 -9.3082976341247559e-01 - <_> - 4.8754871368408203e+01 - - 1 2 2113 1.6500000000000000e+01 0 -1 2114 - 7.7500000000000000e+01 -2 -3 2115 9.5000000000000000e+00 - - 8.7172055244445801e-01 -8.8115751743316650e-01 - 1.8978470563888550e-01 -2.7678936719894409e-01 - <_> - 4.9211303710937500e+01 - - 1 2 2116 3.5000000000000000e+00 0 -1 2117 - 2.1500000000000000e+01 -2 -3 2118 3.2500000000000000e+01 - - 7.1315276622772217e-01 -8.0622744560241699e-01 - -3.9460040628910065e-02 5.3393137454986572e-01 - <_> - 4.8663822174072266e+01 - - 1 2 2119 4.5000000000000000e+00 0 -1 2120 - 1.5925000000000000e+03 -2 -3 2121 2.0650000000000000e+02 - - 1.9858585298061371e-01 -8.0468404293060303e-01 - -6.2497895956039429e-01 3.4673172235488892e-01 - <_> - 4.9210224151611328e+01 - - 1 2 2122 1.5000000000000000e+00 0 -1 2123 - 4.5000000000000000e+00 -2 -3 2124 1.1500000000000000e+01 - - -2.5436609983444214e-01 5.4640007019042969e-01 - -3.6977285146713257e-01 2.4242483079433441e-01 - <_> - 4.9246429443359375e+01 - - 1 2 2125 5.5000000000000000e+00 0 -1 2126 - 1.1500000000000000e+01 -2 -3 2127 5.0500000000000000e+01 - - -6.4848619699478149e-01 3.5011601448059082e-01 - -6.0107630491256714e-01 8.2410864531993866e-02 - <_> - 4.8944103240966797e+01 - - 1 2 2128 2.8500000000000000e+01 0 -1 2129 - 9.5000000000000000e+00 -2 -3 2130 5.0000000000000000e-01 - - 3.0096647143363953e-01 -3.0232757329940796e-01 - 6.8013429641723633e-01 -5.5317246913909912e-01 - <_> - 4.8901321411132812e+01 - - 1 2 2131 7.5000000000000000e+00 0 -1 2132 - 2.4850000000000000e+02 -2 -3 2133 249. - - 7.6584374904632568e-01 -2.6288160681724548e-01 - -2.0686230063438416e-01 4.9869608879089355e-01 - <_> - 4.8522472381591797e+01 - - 1 2 2134 1.5000000000000000e+00 0 -1 2135 - 6.5000000000000000e+00 -2 -3 2136 6.5000000000000000e+00 - - -6.7336744070053101e-01 3.8096541166305542e-01 - -3.7885129451751709e-01 2.6800793409347534e-01 - <_> - 4.8640506744384766e+01 - - 1 2 2137 4.1500000000000000e+01 0 -1 2138 7511. -2 -3 2139 - 5. - - -1. 1.1803627759218216e-01 5.8405894041061401e-01 - -9.9191021919250488e-01 - <_> - 4.9112037658691406e+01 - - 1 2 2140 1.4050000000000000e+02 0 -1 2141 - 9.1550000000000000e+02 -2 -3 2142 5.0000000000000000e-01 - - 4.7153010964393616e-01 -3.8127270340919495e-01 - 3.7462133169174194e-01 -3.5809725522994995e-01 - <_> - 4.9074180603027344e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 5.5000000000000000e+00 -2 -3 2145 1156. - - -7.7864569425582886e-01 -3.7855844944715500e-02 - -5.6096863746643066e-01 2.8747567534446716e-01 - <_> - 4.9317012786865234e+01 - - 1 2 2146 5.0000000000000000e-01 0 -1 2147 - 7.5000000000000000e+00 -2 -3 2148 8.5000000000000000e+00 - - -1.9298474490642548e-01 6.0014814138412476e-01 - -2.8463506698608398e-01 3.0250099301338196e-01 - <_> - 4.9228115081787109e+01 - - 1 2 2149 1.2500000000000000e+01 0 -1 2150 - 1.5000000000000000e+00 -2 -3 2151 2.7550000000000000e+02 - - 2.9153743386268616e-01 -1.4856611192226410e-01 - 8.5224819183349609e-01 -7.4847495555877686e-01 - <_> - 4.9394767761230469e+01 - - 1 2 2152 1.0650000000000000e+02 0 -1 2153 - 1.6650000000000000e+02 -2 -3 2154 6.4050000000000000e+02 - - -2.1377994120121002e-01 6.8324047327041626e-01 - 8.1065440177917480e-01 -1.6369237005710602e-01 - <_> - 4.9178939819335938e+01 - - 1 2 2155 5.5000000000000000e+00 0 -1 2156 - 3.5000000000000000e+00 -2 -3 2157 5.0000000000000000e-01 - - -4.4507712125778198e-01 2.7314877510070801e-01 - 1.8895468674600124e-03 -6.6257309913635254e-01 - <_> - 4.9466709136962891e+01 - - 1 2 2158 1.4350000000000000e+02 0 -1 2159 - 3.6500000000000000e+01 -2 -3 2160 2.8350000000000000e+02 - - -7.0678502321243286e-01 2.8776872158050537e-01 - 5.0643736124038696e-01 -4.6139922738075256e-01 - <_> - 4.9411914825439453e+01 - - 1 2 2161 2.8450000000000000e+02 0 -1 2162 - 1.0500000000000000e+01 -2 -3 2163 2.2500000000000000e+01 - - -5.4796442389488220e-02 5.7056087255477905e-01 - -9.7249829769134521e-01 1. - <_> - 4.9156459808349609e+01 - - 1 2 2164 1.3005000000000000e+03 0 -1 2165 - 5.0000000000000000e-01 -2 -3 2166 1.3500000000000000e+01 - - 2.4745839834213257e-01 -2.5545302033424377e-01 - 7.4935376644134521e-01 -7.2865372896194458e-01 - <_> - 4.9304908752441406e+01 - - 1 2 2167 2.5000000000000000e+00 0 -1 2168 - 4.2650000000000000e+02 -2 -3 2169 5.0000000000000000e-01 - - 9.1332197189331055e-01 -8.7917047739028931e-01 - -7.9717016220092773e-01 1.4844851195812225e-01 - <_> - 4.9519458770751953e+01 - - 1 2 2170 5.0000000000000000e-01 0 -1 2171 - 3.1050000000000000e+02 -2 -3 2172 2.5000000000000000e+00 - - -6.2879353761672974e-01 7.3362600803375244e-01 - 2.1455071866512299e-01 -5.3520482778549194e-01 - <_> - 4.9214466094970703e+01 - - 1 2 2173 6.5000000000000000e+00 0 -1 2174 - 5.0000000000000000e-01 -2 -3 2175 3.6500000000000000e+01 - - -9.2513018846511841e-01 4.0643110871315002e-01 - -3.0499455332756042e-01 5.0062865018844604e-01 - <_> - 4.9077842712402344e+01 - - 1 2 2176 3.5500000000000000e+01 0 -1 2177 - 4.5000000000000000e+00 -2 -3 2178 4.5000000000000000e+00 - - 3.1681686639785767e-01 -1.3662472367286682e-01 - -8.9950013160705566e-01 5.9339106082916260e-01 - <_> - 4.9558990478515625e+01 - - 1 2 2179 2.1500000000000000e+01 0 -1 2180 - 7.0500000000000000e+01 -2 -3 2181 4.4500000000000000e+01 - - 4.8115003108978271e-01 -3.7647187709808350e-01 - -7.3073945939540863e-02 5.2965939044952393e-01 - <_> - 4.9294830322265625e+01 - - 1 2 2182 5.0000000000000000e-01 0 -1 2183 - 1.5000000000000000e+00 -2 -3 2184 6.6750000000000000e+02 - - -2.5544604659080505e-01 5.0417780876159668e-01 - 6.0399526357650757e-01 -2.6415923237800598e-01 - <_> - 4.9588432312011719e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 - 1.4500000000000000e+01 -2 -3 2187 1.9850000000000000e+02 - - -7.2754228115081787e-01 6.9201481342315674e-01 - -2.1817497909069061e-01 2.9360204935073853e-01 - <_> - 4.9867538452148438e+01 - - 1 2 2188 8.5000000000000000e+00 0 -1 2189 - 3.0950000000000000e+02 -2 -3 2190 26. - - 2.2687920928001404e-01 -4.3458512425422668e-01 - -7.0097404718399048e-01 3.0540248751640320e-01 - <_> - 5.0168376922607422e+01 - - 1 2 2191 5.0000000000000000e-01 0 -1 2192 - 1.5000000000000000e+00 -2 -3 2193 4.5000000000000000e+00 - - -7.1328246593475342e-01 3.0083844065666199e-01 - -9.5252823084592819e-03 -6.4636266231536865e-01 - <_> - 5.0060260772705078e+01 - - 1 2 2194 3.5000000000000000e+00 0 -1 2195 - 5.5500000000000000e+01 -2 -3 2196 3.5000000000000000e+00 - - 6.1561942100524902e-01 -8.6320608854293823e-01 - -1.3441234827041626e-01 3.3917289972305298e-01 - <_> - 5.0102226257324219e+01 - - 1 2 2197 4.5500000000000000e+01 0 -1 2198 - 3.0500000000000000e+01 -2 -3 2199 8.5000000000000000e+00 - - -5.6849882006645203e-02 5.2688473463058472e-01 - 4.1965771466493607e-02 -7.8310465812683105e-01 - <_> - 5.0278747558593750e+01 - - 1 2 2200 5805. 0 -1 2201 6.4500000000000000e+01 -2 -3 2202 - 1.3666500000000000e+04 - - -3.5512223839759827e-01 1.7651933431625366e-01 1. - -9.3429499864578247e-01 - <_> - 5.0092594146728516e+01 - - 1 2 2203 87. 0 -1 2204 1.5000000000000000e+00 -2 -3 2205 - 8.5000000000000000e+00 - - 2.5804731249809265e-01 -1.8615169823169708e-01 - 9.0864014625549316e-01 -9.3007725477218628e-01 - <_> - 4.9681518554687500e+01 - - 1 2 2206 3.4500000000000000e+01 0 -1 2207 - 2.5000000000000000e+00 -2 -3 2208 144. - - 8.0942414700984955e-02 -4.1107651591300964e-01 - 8.1396090984344482e-01 -5.5868124961853027e-01 - <_> - 5.0186134338378906e+01 - - 1 2 2209 2.3500000000000000e+01 0 -1 2210 - 5.0000000000000000e-01 -2 -3 2211 1.9500000000000000e+01 - - 1.8014830350875854e-01 -5.8121389150619507e-01 - 5.0461643934249878e-01 -1.3289090991020203e-01 - <_> - 5.0354343414306641e+01 - - 1 2 2212 1.5000000000000000e+00 0 -1 2213 - 1.2500000000000000e+01 -2 -3 2214 1.5000000000000000e+00 - - -9.6955841779708862e-01 1. 1.6820773482322693e-01 - -3.2301485538482666e-01 - <_> - 5.0826210021972656e+01 - - 1 2 2215 1.7500000000000000e+01 0 -1 2216 - 1.5000000000000000e+00 -2 -3 2217 5.0000000000000000e-01 - - 1.4819860458374023e-01 -5.6733429431915283e-01 - 4.7186562418937683e-01 -8.8461555540561676e-02 - <_> - 5.0689891815185547e+01 - - 1 2 2218 5.5000000000000000e+00 0 -1 2219 - 2.5000000000000000e+00 -2 -3 2220 3.5000000000000000e+00 - - -9.8274695873260498e-01 5.8369493484497070e-01 - 3.3880138397216797e-01 -1.3631547987461090e-01 - <_> - 5.0897132873535156e+01 - - 1 2 2221 3.4500000000000000e+01 0 -1 2222 52. -2 -3 2223 - 1.1500000000000000e+01 - - 1.9135108590126038e-01 -8.2356482744216919e-01 - -6.7104524374008179e-01 2.0723932981491089e-01 - <_> - 5.0793212890625000e+01 - - 1 2 2224 5.0000000000000000e-01 0 -1 2225 - 4.5000000000000000e+00 -2 -3 2226 2.2500000000000000e+01 - - 5.1123476028442383e-01 -1.1320804804563522e-01 - -3.8408496975898743e-01 6.1438548564910889e-01 - <_> - 5.1001136779785156e+01 - - 1 2 2227 8.3500000000000000e+01 0 -1 2228 - 3.5000000000000000e+00 -2 -3 2229 42. - - -4.2239284515380859e-01 2.0792518556118011e-01 - -6.8203860521316528e-01 7.9907011985778809e-01 - <_> - 5.0596912384033203e+01 - - 1 2 2230 1.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 7.5000000000000000e+00 - - -7.0603537559509277e-01 2.4662055075168610e-01 - -4.0422463417053223e-01 5.9911012649536133e-01 - <_> - 5.0428260803222656e+01 - - 1 2 2233 1.3750000000000000e+02 0 -1 2234 - 2.0250000000000000e+02 -2 -3 2235 2253. - - -1.6865161061286926e-01 2.5998809933662415e-01 - -9.4531512260437012e-01 1. - <_> - 5.0951389312744141e+01 - - 1 2 2236 8.3850000000000000e+02 0 -1 2237 - 1.0500000000000000e+01 -2 -3 2238 2.7050000000000000e+02 - - -3.1979247927665710e-01 5.2312844991683960e-01 1. - -2.6709866523742676e-01 - <_> - 5.1609600067138672e+01 - - 1 2 2239 2.5000000000000000e+00 0 -1 2240 - 7.5000000000000000e+00 -2 -3 2241 5.0000000000000000e-01 - - -8.6014068126678467e-01 7.4454039335250854e-01 - 2.0096376538276672e-01 -2.4620246887207031e-01 - <_> - 5.1524238586425781e+01 - - 1 2 2242 4.5000000000000000e+00 0 -1 2243 - 4.5000000000000000e+00 -2 -3 2244 3.5000000000000000e+00 - - 7.2637367248535156e-01 -6.9044232368469238e-01 - 4.0469411015510559e-01 -8.5362896323204041e-02 - <_> - 5.1590244293212891e+01 - - 1 2 2245 2.7500000000000000e+01 0 -1 2246 - 1.6500000000000000e+01 -2 -3 2247 5.5000000000000000e+00 - - -4.6192824840545654e-01 6.6809237003326416e-01 - 3.9989617466926575e-01 -1.0465840995311737e-01 - <_> - 5.1738754272460938e+01 - - 1 2 2248 4.8500000000000000e+01 0 -1 2249 - 1.5000000000000000e+00 -2 -3 2250 1.5945000000000000e+03 - - -8.0413728952407837e-01 1.4850924909114838e-01 - -8.2549327611923218e-01 6.2095624208450317e-01 - <_> - 5.2021579742431641e+01 - - 1 2 2251 9.5000000000000000e+00 0 -1 2252 - 4.5000000000000000e+00 -2 -3 2253 5.5000000000000000e+00 - - -6.5502113103866577e-01 2.8282484412193298e-01 - -3.4542977809906006e-01 6.4788120985031128e-01 - <_> - 5.2015274047851562e+01 - - 1 2 2254 9.5000000000000000e+00 0 -1 2255 - 1.5000000000000000e+00 -2 -3 2256 1.0500000000000000e+01 - - 3.4599477052688599e-01 -3.4019523859024048e-01 - 7.2228658199310303e-01 7.7277146279811859e-02 - <_> - 5.1593978881835938e+01 - - 1 2 2257 5.5000000000000000e+00 0 -1 2258 5. -2 -3 2259 - 2.7250000000000000e+02 - - -1. 1.6008520126342773e-01 -5.4555195569992065e-01 - 1.6251419484615326e-01 - <_> - 5.1819255828857422e+01 - - 1 2 2260 5.5000000000000000e+00 0 -1 2261 - 2.5000000000000000e+00 -2 -3 2262 1.9500000000000000e+01 - - -4.8347968608140945e-02 6.0446649789810181e-01 - -4.0619182586669922e-01 2.2527877986431122e-01 - <_> - 5.1746963500976562e+01 - - 1 2 2263 1.3750000000000000e+02 0 -1 2264 - 4.2250000000000000e+02 -2 -3 2265 3.8500000000000000e+01 - - 7.4067801237106323e-01 -7.2294034063816071e-02 - 8.8299661874771118e-03 -6.2965631484985352e-01 - <_> - 5.2008258819580078e+01 - - 1 2 2266 2.5000000000000000e+00 0 -1 2267 - 2.8750000000000000e+02 -2 -3 2268 1.9450000000000000e+02 - - 2.6129412651062012e-01 -5.3058236837387085e-01 - -3.6182677745819092e-01 2.7137964963912964e-01 - <_> - 5.2304763793945312e+01 - - 1 2 2269 5.0000000000000000e-01 0 -1 2270 - 3.7500000000000000e+01 -2 -3 2271 5.5000000000000000e+00 - - 5.2875798940658569e-01 -6.0992181301116943e-01 - 2.9650440812110901e-01 -2.9122522473335266e-01 - <_> - 5.2421115875244141e+01 - - 1 2 2272 4.3500000000000000e+01 0 -1 2273 - 2.5000000000000000e+00 -2 -3 2274 4.5650000000000000e+02 - - 3.0624570325016975e-02 -5.8957004547119141e-01 - -2.7495118975639343e-01 3.9496597647666931e-01 - <_> - 5.2647144317626953e+01 - - 1 2 2275 1518. 0 -1 2276 1.6500000000000000e+01 -2 -3 2277 - 4.8450000000000000e+02 - - 2.2602756321430206e-01 -4.2886498570442200e-01 - -6.9053608179092407e-01 8.4119993448257446e-01 - <_> - 5.2705776214599609e+01 - - 1 2 2278 1.4500000000000000e+01 0 -1 2279 - 3.5000000000000000e+00 -2 -3 2280 5.0000000000000000e-01 - - 2.7602374553680420e-01 -8.6094701290130615e-01 - 4.6095618605613708e-01 -1.0049798339605331e-01 - <_> - 5.2445388793945312e+01 - - 1 2 2281 5.4500000000000000e+01 0 -1 2282 - 5.0000000000000000e-01 -2 -3 2283 293. - - 2.4707119166851044e-01 -2.6038503646850586e-01 - 8.0504089593887329e-01 -8.4760957956314087e-01 - <_> - 5.2260616302490234e+01 - - 1 2 2284 3.5000000000000000e+00 0 -1 2285 - 3.3500000000000000e+01 -2 -3 2286 1.0050000000000000e+02 - - -7.2160458564758301e-01 3.7846213579177856e-01 - -1.8477419018745422e-01 3.3230203390121460e-01 - <_> - 5.2433509826660156e+01 - - 1 2 2287 5.1650000000000000e+02 0 -1 2288 - 8.8500000000000000e+01 -2 -3 2289 7.0550000000000000e+02 - - 1.7289595305919647e-01 -9.1000020503997803e-01 - 3.6744228005409241e-01 -7.2866481542587280e-01 - <_> - 5.2647979736328125e+01 - - 1 2 2290 1.1150000000000000e+02 0 -1 2291 - 2.7950000000000000e+02 -2 -3 2292 5.0000000000000000e-01 - - 2.1446748077869415e-01 -3.1376039981842041e-01 -1. - 6.5572494268417358e-01 - <_> - 5.3233036041259766e+01 - - 1 2 2293 4.6500000000000000e+01 0 -1 2294 - 5.0000000000000000e-01 -2 -3 2295 1.8500000000000000e+01 - - 2.0808640122413635e-01 -4.1060706973075867e-01 - 7.6606053113937378e-01 2.6130240410566330e-02 - <_> - 5.3398525238037109e+01 - - 1 2 2296 1.5500000000000000e+01 0 -1 2297 61. -2 -3 2298 - 5.0000000000000000e-01 - - -6.7748582363128662e-01 1.6549052298069000e-01 - 4.1098600625991821e-01 -7.7618271112442017e-01 - <_> - 5.3294448852539062e+01 - - 1 2 2299 1.8615000000000000e+03 0 -1 2300 - 5.7500000000000000e+01 -2 -3 2301 1.2650000000000000e+02 - - -8.6754381656646729e-01 1. 8.4667998552322388e-01 - -2.2392984479665756e-02 - <_> - 5.3276077270507812e+01 - - 1 2 2302 3.5000000000000000e+00 0 -1 2303 - 1.0605000000000000e+03 -2 -3 2304 3.2500000000000000e+01 - - -1.8368726596236229e-02 -7.0469945669174194e-01 - 3.7680181860923767e-01 -2.6430556178092957e-01 - <_> - 5.3376117706298828e+01 - - 1 2 2305 7.5000000000000000e+00 0 -1 2306 - 1.3500000000000000e+01 -2 -3 2307 4.5000000000000000e+00 - - -4.4095748662948608e-01 8.1208780407905579e-02 - 7.2995042800903320e-01 -6.6059477627277374e-02 - <_> - 5.3484439849853516e+01 - - 1 2 2308 4.8500000000000000e+01 0 -1 2309 - 1.5000000000000000e+00 -2 -3 2310 5.0000000000000000e-01 - - -7.3434567451477051e-01 1.0832270234823227e-01 1. -1. - <_> - 5.3156581878662109e+01 - - 1 2 2311 5.0000000000000000e-01 0 -1 2312 - 5.0500000000000000e+01 -2 -3 2313 2.5000000000000000e+00 - - -3.2785847783088684e-01 6.5818876028060913e-01 - 1.5944661200046539e-01 -3.7622401118278503e-01 - <_> - 5.3464508056640625e+01 - - 1 2 2314 1.5000000000000000e+00 0 -1 2315 1395. -2 -3 2316 - 2.0550000000000000e+02 - - -2.5435209274291992e-01 3.5143795609474182e-01 - -5.3791600465774536e-01 1.4341881871223450e-01 - <_> - 5.3676666259765625e+01 - - 1 2 2317 1.9450000000000000e+02 0 -1 2318 - 7.7650000000000000e+02 -2 -3 2319 2.6500000000000000e+01 - - -1.6406188905239105e-01 6.5499174594879150e-01 - -2.9839497804641724e-01 5.4618138074874878e-01 - <_> - 5.3746845245361328e+01 - - 1 2 2320 2.5000000000000000e+00 0 -1 2321 - 3.5000000000000000e+00 -2 -3 2322 5.0000000000000000e-01 - - -1.8959516659379005e-02 7.8612476587295532e-01 - 9.0865425765514374e-02 -4.5988494157791138e-01 - <_> - 5.3647705078125000e+01 - - 1 2 2323 7.5000000000000000e+00 0 -1 2324 - 5.5000000000000000e+00 -2 -3 2325 5.7050000000000000e+02 - - 1.4724509418010712e-01 -7.7298891544342041e-01 - 3.5621020197868347e-01 -1.3211415708065033e-01 - <_> - 5.3602718353271484e+01 - - 1 2 2326 9.5000000000000000e+00 0 -1 2327 - 3.5000000000000000e+00 -2 -3 2328 8.0500000000000000e+01 - - 1.3503439724445343e-02 -8.2117962837219238e-01 - 5.8936750888824463e-01 -4.4985972344875336e-02 - <_> - 5.3612422943115234e+01 - - 1 2 2329 6.5000000000000000e+00 0 -1 2330 - 5.0000000000000000e-01 -2 -3 2331 2.0500000000000000e+01 - - -5.1986992359161377e-01 9.7068445757031441e-03 - 5.7828778028488159e-01 -2.6466268301010132e-01 - <_> - 5.2955169677734375e+01 - - 1 2 2332 5.5000000000000000e+00 0 -1 2333 - 1.4250000000000000e+02 -2 -3 2334 1.5000000000000000e+00 - - 4.0672644972801208e-01 -6.5725678205490112e-01 - 4.3416792154312134e-01 -1.0205291956663132e-01 - <_> - 5.3175640106201172e+01 - - 1 2 2335 5.8500000000000000e+01 0 -1 2336 - 3.5000000000000000e+00 -2 -3 2337 1.0500000000000000e+01 - - -9.2344768345355988e-02 -8.2324630022048950e-01 - -8.0642974376678467e-01 2.2047302126884460e-01 - <_> - 5.3262622833251953e+01 - - 1 2 2338 4.7500000000000000e+01 0 -1 2339 - 2.2450000000000000e+02 -2 -3 2340 2.8500000000000000e+01 - - 8.6981259286403656e-02 -6.1652702093124390e-01 - -9.1801822185516357e-01 6.4460629224777222e-01 - <_> - 5.3449378967285156e+01 - - 1 2 2341 4.0500000000000000e+01 0 -1 2342 - 3.5000000000000000e+00 -2 -3 2343 7.5000000000000000e+00 - - 1.8675777316093445e-01 -3.1174966692924500e-01 - -8.4308654069900513e-01 5.4007226228713989e-01 - <_> - 5.4046314239501953e+01 - - 1 2 2344 1.9500000000000000e+01 0 -1 2345 - 1.5000000000000000e+00 -2 -3 2346 1.0500000000000000e+01 - - 2.6490023732185364e-01 -2.7910321950912476e-01 - 5.9693449735641479e-01 -2.9306411743164062e-01 - <_> - 5.3945655822753906e+01 - - 1 2 2347 4.5000000000000000e+00 0 -1 2348 27. -2 -3 2349 - 5.5000000000000000e+00 - - -8.5741281509399414e-01 1.3065045699477196e-02 - 3.9639812707901001e-01 -1.0065827518701553e-01 - <_> - 5.4267860412597656e+01 - - 1 2 2350 1.9450000000000000e+02 0 -1 2351 - 1.0500000000000000e+01 -2 -3 2352 3.5000000000000000e+00 - - -6.5501171350479126e-01 3.2220518589019775e-01 - 3.1031554937362671e-01 -2.4605174362659454e-01 - <_> - 5.4434059143066406e+01 - - 1 2 2353 4.5000000000000000e+00 0 -1 2354 10. -2 -3 2355 - 1.5000000000000000e+00 - - -9.6719789505004883e-01 1. 3.4963271021842957e-01 - -1.1308565735816956e-01 - <_> - 5.4395557403564453e+01 - - 1 2 2356 9.5000000000000000e+00 0 -1 2357 50. -2 -3 2358 - 2.7650000000000000e+02 - - -5.2526080608367920e-01 1. 4.7619706392288208e-01 - -3.8500182330608368e-02 - <_> - 5.4446586608886719e+01 - - 1 2 2359 5.0000000000000000e-01 0 -1 2360 - 1.5000000000000000e+00 -2 -3 2361 2.7500000000000000e+01 - - -7.0974302291870117e-01 5.9427440166473389e-01 - -4.7772464156150818e-01 5.1026910543441772e-02 - <_> - 5.4573219299316406e+01 - - 1 2 2362 5.5000000000000000e+00 0 -1 2363 - 7.5000000000000000e+00 -2 -3 2364 5.5000000000000000e+00 - - -2.3239122331142426e-01 5.5771952867507935e-01 - -3.3134892582893372e-01 5.3258192539215088e-01 - <_> - 5.4593772888183594e+01 - - 1 2 2365 2.0850000000000000e+02 0 -1 2366 - 1.5000000000000000e+00 -2 -3 2367 2.0350000000000000e+02 - - 2.8126055002212524e-01 -3.8539481163024902e-01 - 8.0755966901779175e-01 2.5156758725643158e-02 - <_> - 5.4878520965576172e+01 - - 1 2 2368 9.5500000000000000e+01 0 -1 2369 - 3.3500000000000000e+01 -2 -3 2370 1.9500000000000000e+01 - - -2.0251634716987610e-01 2.8474879264831543e-01 - 3.4431111812591553e-01 -9.0932434797286987e-01 - <_> - 5.4830356597900391e+01 - - 1 2 2371 2.9550000000000000e+02 0 -1 2372 - 1.4735000000000000e+03 -2 -3 2373 9.5000000000000000e+00 - - -4.8165567219257355e-02 7.1227544546127319e-01 - -5.8812457323074341e-01 4.9097633361816406e-01 - <_> - 5.5037090301513672e+01 - - 1 2 2374 3.5000000000000000e+00 0 -1 2375 265. -2 -3 2376 - 5.0000000000000000e-01 - - 6.2006855010986328e-01 -1.1624867469072342e-01 - 2.0673374831676483e-01 -3.9852622151374817e-01 - <_> - 5.4704418182373047e+01 - - 1 2 2377 5.5000000000000000e+00 0 -1 2378 - 7.4150000000000000e+02 -2 -3 2379 1.4500000000000000e+01 - - 8.3038502931594849e-01 -3.3267009258270264e-01 - -5.5480867624282837e-01 3.8361921906471252e-01 - <_> - 5.5166534423828125e+01 - - 1 2 2380 2.5000000000000000e+00 0 -1 2381 - 2.5000000000000000e+00 -2 -3 2382 5.0000000000000000e-01 - - -6.5405935049057007e-01 4.6251511573791504e-01 - 1.5241867303848267e-01 -3.7966835498809814e-01 - <_> - 5.5294990539550781e+01 - - 1 2 2383 3.5000000000000000e+00 0 -1 2384 218. -2 -3 2385 - 1.5000000000000000e+00 - - -7.2755223512649536e-01 7.7218592166900635e-01 - 3.7493732571601868e-01 -1.4008188247680664e-01 - <_> - 5.5391014099121094e+01 - - 1 2 2386 5.0000000000000000e-01 0 -1 2387 - 3.5000000000000000e+00 -2 -3 2388 1.0500000000000000e+01 - - -7.2115933895111084e-01 5.6441891193389893e-01 - -2.2445468604564667e-01 4.8844140768051147e-01 - <_> - 5.5061939239501953e+01 - - 1 2 2389 1.5000000000000000e+00 0 -1 2390 - 9.4500000000000000e+01 -2 -3 2391 2.0500000000000000e+01 - - 3.0153071880340576e-01 -7.7830529212951660e-01 - -3.7638953328132629e-01 4.5185664296150208e-01 - <_> - 5.5263076782226562e+01 - - 1 2 2392 6.0575000000000000e+03 0 -1 2393 - 4.5000000000000000e+00 -2 -3 2394 23. - - -2.4923345446586609e-01 2.0113667845726013e-01 -1. 1. - <_> - 5.5297931671142578e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 5.0000000000000000e-01 -2 -3 2397 150. - - -7.8452098369598389e-01 2.7857390046119690e-01 - 3.1075701117515564e-01 -4.7745358943939209e-01 - <_> - 5.4631614685058594e+01 - - 1 2 2398 1.5000000000000000e+00 0 -1 2399 - 6.5000000000000000e+00 -2 -3 2400 3.5450000000000000e+02 - - -4.1111201047897339e-01 3.2674971222877502e-01 - -6.6631543636322021e-01 6.2937244772911072e-02 - <_> - 5.5044651031494141e+01 - - 1 2 2401 1.0250000000000000e+02 0 -1 2402 - 3.6500000000000000e+01 -2 -3 2403 1631. - - -1.7850313335657120e-02 -7.2239345312118530e-01 - 4.1303712129592896e-01 -7.0288980007171631e-01 - <_> - 5.5012844085693359e+01 - - 1 2 2404 5.5000000000000000e+00 0 -1 2405 - 1.5000000000000000e+00 -2 -3 2406 1.0500000000000000e+01 - - -7.5541549921035767e-01 -3.1809989362955093e-02 - -6.1507242918014526e-01 7.0561921596527100e-01 - <_> - 5.4918914794921875e+01 - - 1 2 2407 5.0000000000000000e-01 0 -1 2408 - 8.5000000000000000e+00 -2 -3 2409 9.2500000000000000e+01 - - -4.1232073307037354e-01 3.9009645581245422e-01 - -9.3929134309291840e-02 -7.8844040632247925e-01 - <_> - 5.5306533813476562e+01 - - 1 2 2410 5.0000000000000000e-01 0 -1 2411 - 1.5500000000000000e+01 -2 -3 2412 5.0000000000000000e-01 - - -7.7871519327163696e-01 5.0485336780548096e-01 - 3.8762193918228149e-01 -2.6150849461555481e-01 - <_> - 5.5725589752197266e+01 - - 1 2 2413 3.8500000000000000e+01 0 -1 2414 - 7.5000000000000000e+00 -2 -3 2415 2.1450000000000000e+02 - - 2.2938077151775360e-01 -3.7094232439994812e-01 - 5.0282096862792969e-01 -1. - <_> - 5.5701969146728516e+01 - - 1 2 2416 5.5000000000000000e+00 0 -1 2417 - 1.9250000000000000e+02 -2 -3 2418 3.2250000000000000e+02 - - 7.8288418054580688e-01 -1. -2.3619059473276138e-02 - 6.6452664136886597e-01 - <_> - 5.6077171325683594e+01 - - 1 2 2419 1.4050000000000000e+02 0 -1 2420 - 2.8250000000000000e+02 -2 -3 2421 1.4150000000000000e+02 - - -1.0124576836824417e-01 7.4701219797134399e-01 - 3.5501605272293091e-01 -4.3058195710182190e-01 - <_> - 5.6083236694335938e+01 - - 1 2 2422 5.0000000000000000e-01 0 -1 2423 - 1.0500000000000000e+01 -2 -3 2424 8.3150000000000000e+02 - - -5.6019341945648193e-01 3.9356786012649536e-01 - -3.6574575304985046e-01 3.6192762851715088e-01 - <_> - 5.5670101165771484e+01 - - 1 2 2425 3.5500000000000000e+01 0 -1 2426 - 5.0000000000000000e-01 -2 -3 2427 1.5000000000000000e+00 - - 1. -8.6421859264373779e-01 5.4856836795806885e-01 - -7.4459843337535858e-02 - <_> - 5.5537399291992188e+01 - - 1 2 2428 3.5000000000000000e+00 0 -1 2429 - 2.1500000000000000e+01 -2 -3 2430 8.5000000000000000e+00 - - -1.3270168006420135e-01 5.0145077705383301e-01 - -5.9590238332748413e-01 5.6020063161849976e-01 - <_> - 5.6239562988281250e+01 - - 1 2 2431 2.5000000000000000e+00 0 -1 2432 - 4.5000000000000000e+00 -2 -3 2433 4.5000000000000000e+00 - - 1.1585496366024017e-02 7.0216339826583862e-01 - 1.3687019050121307e-01 -4.4344663619995117e-01 - <_> - 5.6262195587158203e+01 - - 1 2 2434 5.5000000000000000e+00 0 -1 2435 599. -2 -3 2436 - 8.5000000000000000e+00 - - 3.7830984592437744e-01 -8.5527080297470093e-01 - 2.0193518698215485e-01 -4.7135183215141296e-01 - <_> - 5.6160911560058594e+01 - - 1 2 2437 5.5500000000000000e+01 0 -1 2438 - 1.8500000000000000e+01 -2 -3 2439 2.5000000000000000e+00 - - -4.9777466058731079e-01 6.7050379514694214e-01 - -2.8058648109436035e-01 3.3557692170143127e-01 - <_> - 5.6366966247558594e+01 - - 1 2 2440 1.9500000000000000e+01 0 -1 2441 - 1.9500000000000000e+01 -2 -3 2442 5.0000000000000000e-01 - - 3.0625101923942566e-01 -7.9308640956878662e-01 - 1.2798076868057251e-01 -5.4627287387847900e-01 - <_> - 5.6186271667480469e+01 - - 1 2 2443 1.8615000000000000e+03 0 -1 2444 167. -2 -3 2445 - 1.9650000000000000e+02 - - 8.4020185470581055e-01 -9.3632721900939941e-01 - 2.7573192119598389e-01 -1.8069291114807129e-01 - <_> - 5.6445884704589844e+01 - - 1 2 2446 3.5000000000000000e+00 0 -1 2447 - 1.0500000000000000e+01 -2 -3 2448 1.5000000000000000e+00 - - -1. 1. 2.5961092114448547e-01 -1.6614863276481628e-01 - <_> - 5.5662120819091797e+01 - - 1 2 2449 2.2500000000000000e+01 0 -1 2450 - 6.7750000000000000e+02 -2 -3 2451 4.5500000000000000e+01 - - 1.6409425437450409e-01 -7.8376275300979614e-01 - 4.5019468665122986e-01 -1.2327302992343903e-01 - <_> - 5.5920890808105469e+01 - - 1 2 2452 2.6500000000000000e+01 0 -1 2453 - 2.1500000000000000e+01 -2 -3 2454 884. - - 3.0651217699050903e-01 -7.2995334863662720e-01 - -3.2345041632652283e-01 2.5876981019973755e-01 - <_> - 5.6508441925048828e+01 - - 1 2 2455 1.5000000000000000e+00 0 -1 2456 - 7.5000000000000000e+00 -2 -3 2457 2.9500000000000000e+01 - - -4.2047679424285889e-01 5.8755081892013550e-01 - -3.5544028878211975e-01 1.4925979077816010e-01 - <_> - 5.7038162231445312e+01 - - 1 2 2458 4253. 0 -1 2459 2.5925000000000000e+03 -2 -3 2460 - 1.5500000000000000e+01 - - 1.7438737675547600e-02 7.4788528680801392e-01 - -7.3076415061950684e-01 3.7760403752326965e-01 - <_> - 5.7042125701904297e+01 - - 1 2 2461 2.6500000000000000e+01 0 -1 2462 - 1.9500000000000000e+01 -2 -3 2463 27. - - 3.9644027128815651e-03 7.4178051948547363e-01 - -7.0212310552597046e-01 3.2540574669837952e-01 - <_> - 5.6994468688964844e+01 - - 1 2 2464 1.9850000000000000e+02 0 -1 2465 - 4.1500000000000000e+01 -2 -3 2466 15. - - -4.7658316791057587e-02 4.4828248023986816e-01 - -9.3152695894241333e-01 1. - <_> - 5.7190505981445312e+01 - - 1 2 2467 1.8500000000000000e+01 0 -1 2468 - 5.0000000000000000e-01 -2 -3 2469 1.8750000000000000e+02 - - -7.1969377994537354e-01 1.9603636860847473e-01 - 4.9150291085243225e-01 -5.2527850866317749e-01 - <_> - 5.7078899383544922e+01 - - 1 2 2470 3.8450000000000000e+02 0 -1 2471 526. -2 -3 2472 - 2.9050000000000000e+02 - - 3.3174201846122742e-01 -8.2571077346801758e-01 - 5.2103126049041748e-01 -3.9841450750827789e-02 - <_> - 5.7003246307373047e+01 - - 1 2 2473 7.5500000000000000e+01 0 -1 2474 - 1.0550000000000000e+02 -2 -3 2475 968. - - -7.5653955340385437e-02 4.8758953809738159e-01 - -5.4898864030838013e-01 1. - <_> - 5.6870857238769531e+01 - - 1 2 2476 1.0500000000000000e+01 0 -1 2477 - 2.0500000000000000e+01 -2 -3 2478 1.6935000000000000e+03 - - -7.4650394916534424e-01 1.1892273277044296e-01 - 4.1699570417404175e-01 -1.3238719105720520e-01 - <_> - 5.7122226715087891e+01 - - 1 2 2479 8.5000000000000000e+00 0 -1 2480 86. -2 -3 2481 - 7.3500000000000000e+01 - - -8.4109079837799072e-01 2.5136706233024597e-01 - -7.6945990324020386e-01 -1.0176113247871399e-01 - <_> - 5.7074886322021484e+01 - - 1 2 2482 260. 0 -1 2483 2.8500000000000000e+01 -2 -3 2484 - 3.7500000000000000e+01 - - 3.3627879619598389e-01 -5.7430881261825562e-01 - -8.7236690521240234e-01 -4.7338943928480148e-02 - <_> - 5.6915012359619141e+01 - - 1 2 2485 1.6500000000000000e+01 0 -1 2486 - 5.0000000000000000e-01 -2 -3 2487 4.3050000000000000e+02 - - 5.5153751373291016e-01 -5.8580690622329712e-01 - -1.5987615287303925e-01 3.9268711209297180e-01 - <_> - 5.7239044189453125e+01 - - 1 2 2488 1.5000000000000000e+00 0 -1 2489 - 8.1500000000000000e+01 -2 -3 2490 2.6500000000000000e+01 - - 5.2343451976776123e-01 -4.1453287005424500e-01 - 3.2403412461280823e-01 -3.2856607437133789e-01 - <_> - 5.7474300384521484e+01 - - 1 2 2491 1.8500000000000000e+01 0 -1 2492 - 1.5000000000000000e+00 -2 -3 2493 9.5000000000000000e+00 - - -7.8822988271713257e-01 -9.5766671001911163e-03 - -4.8284614086151123e-01 2.3525412380695343e-01 - <_> - 5.7249835968017578e+01 - - 1 2 2494 2.3050000000000000e+02 0 -1 2495 - 2.0050000000000000e+02 -2 -3 2496 2.8150000000000000e+02 - - -2.2446456551551819e-01 2.2491098940372467e-01 - 8.3066219091415405e-01 -9.5704418420791626e-01 - <_> - 5.7814559936523438e+01 - - 1 2 2497 5.0000000000000000e-01 0 -1 2498 - 2.6185000000000000e+03 -2 -3 2499 1.7500000000000000e+01 - - 5.6472480297088623e-01 -1.6110357642173767e-01 - -3.1116396188735962e-01 4.4437372684478760e-01 - <_> - 5.8106559753417969e+01 - - 1 2 2500 8.5000000000000000e+00 0 -1 2501 - 1.7500000000000000e+01 -2 -3 2502 4.5000000000000000e+00 - - -2.7669808268547058e-01 2.9200211167335510e-01 - -9.3605440855026245e-01 6.0182154178619385e-01 - <_> - 5.8357116699218750e+01 - - 1 2 2503 6.5000000000000000e+00 0 -1 2504 4110. -2 -3 2505 - 5.0000000000000000e-01 - - 5.0149852037429810e-01 -4.7614306211471558e-01 - 2.5055614113807678e-01 -3.4401369094848633e-01 - <_> - 5.8571323394775391e+01 - - 1 2 2506 1.7500000000000000e+01 0 -1 2507 - 1.0500000000000000e+01 -2 -3 2508 1.2500000000000000e+01 - - -7.3967492580413818e-01 1.0592705756425858e-01 - -7.4430185556411743e-01 2.1420435607433319e-01 - <_> - 5.8413196563720703e+01 - - 1 2 2509 4.6500000000000000e+01 0 -1 2510 - 5.0000000000000000e-01 -2 -3 2511 6.5000000000000000e+00 - - 3.0999431014060974e-01 -1.5812423825263977e-01 - 7.2452938556671143e-01 -8.2721656560897827e-01 - <_> - 5.8289020538330078e+01 - - 1 2 2512 1.9450000000000000e+02 0 -1 2513 - 1.5500000000000000e+01 -2 -3 2514 5.1650000000000000e+02 - - -7.0014303922653198e-01 5.3811348974704742e-02 - 2.4148009717464447e-01 -3.3995988965034485e-01 - <_> - 5.8445301055908203e+01 - - 1 2 2515 6.5000000000000000e+00 0 -1 2516 - 1.5000000000000000e+00 -2 -3 2517 5.5000000000000000e+00 - - 1.5627947449684143e-01 -4.8640871047973633e-01 - 3.7407481670379639e-01 -3.9116647839546204e-01 - <_> - 5.8216587066650391e+01 - - 1 2 2518 700. 0 -1 2519 5.5850000000000000e+02 -2 -3 2520 - 16. - - 2.0464093983173370e-01 -2.6413521170616150e-01 - 8.5163682699203491e-01 -1. - <_> - 5.8270072937011719e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 3409. -2 -3 2523 - 7.3150000000000000e+02 - - 5.3485069423913956e-02 -5.7243049144744873e-01 - -8.9430630207061768e-02 6.9314485788345337e-01 - <_> - 5.7783893585205078e+01 - - 1 2 2524 5.0000000000000000e-01 0 -1 2525 - 2.5000000000000000e+00 -2 -3 2526 1684. - - -4.0134501457214355e-01 5.9734642505645752e-01 - -4.8617830872535706e-01 7.6749451458454132e-02 - <_> - 5.8102993011474609e+01 - - 1 2 2527 6.5500000000000000e+01 0 -1 2528 - 5.5000000000000000e+00 -2 -3 2529 1.9500000000000000e+01 - - 3.1909653544425964e-01 -1.7158342897891998e-01 - -7.2843241691589355e-01 2.3383940756320953e-01 - <_> - 5.8049087524414062e+01 - - 1 2 2530 4.5000000000000000e+00 0 -1 2531 - 5.0000000000000000e-01 -2 -3 2532 2.8500000000000000e+01 - - 1. -7.5028574466705322e-01 -5.3904149681329727e-02 - 5.5251020193099976e-01 - <_> - 5.8244209289550781e+01 - - 1 2 2533 5.5000000000000000e+00 0 -1 2534 - 4.5000000000000000e+00 -2 -3 2535 5.0000000000000000e-01 - - -8.0380880832672119e-01 2.9753589630126953e-01 - 1.9512148201465607e-01 -4.6969175338745117e-01 - <_> - 5.8672908782958984e+01 - - 1 2 2536 2.5000000000000000e+00 0 -1 2537 - 1.3500000000000000e+01 -2 -3 2538 11661. - - -3.4166058897972107e-01 3.3482587337493896e-01 - 4.2869973182678223e-01 -1. - <_> - 5.9023540496826172e+01 - - 1 2 2539 1.5000000000000000e+00 0 -1 2540 - 3.5000000000000000e+00 -2 -3 2541 9.5000000000000000e+00 - - -8.3383214473724365e-01 3.5063269734382629e-01 - -3.5336953401565552e-01 3.0827513337135315e-01 - <_> - 5.9003356933593750e+01 - - 1 2 2542 1.0250000000000000e+02 0 -1 2543 - 2.5550000000000000e+02 -2 -3 2544 2.0350000000000000e+02 - - 5.1257050037384033e-01 -3.2918009161949158e-01 - 7.4368792772293091e-01 -2.0184267312288284e-02 - <_> - 5.9620601654052734e+01 - - 1 2 2545 7.9500000000000000e+01 0 -1 2546 - 2.5000000000000000e+00 -2 -3 2547 3.5000000000000000e+00 - - -7.7253228425979614e-01 6.1724388599395752e-01 - -4.8216223716735840e-01 5.6440707296133041e-02 - <_> - 5.9330902099609375e+01 - - 1 2 2548 5.0000000000000000e-01 0 -1 2549 - 3.5000000000000000e+00 -2 -3 2550 2.7500000000000000e+01 - - -6.9474482536315918e-01 3.4619376063346863e-01 - -2.8969791531562805e-01 8.9516305923461914e-01 - <_> - 5.9581577301025391e+01 - - 1 2 2551 5.3500000000000000e+01 0 -1 2552 - 5.0000000000000000e-01 -2 -3 2553 1342. - - 2.5067508220672607e-01 -2.0224566757678986e-01 - -8.1104308366775513e-01 1. - <_> - 5.8948894500732422e+01 - - 1 2 2554 3.7500000000000000e+01 0 -1 2555 - 2.5500000000000000e+01 -2 -3 2556 1.0500000000000000e+01 - - 2.1159039437770844e-01 -6.3268536329269409e-01 - 2.9823055863380432e-01 -4.7319912910461426e-01 - <_> - 5.8807991027832031e+01 - - 1 2 2557 5.0000000000000000e-01 0 -1 2558 - 1.6500000000000000e+01 -2 -3 2559 5.0000000000000000e-01 - - 4.5869261026382446e-01 -8.1530493497848511e-01 - 2.9593425989151001e-01 -1.4090000092983246e-01 - <_> - 5.9417499542236328e+01 - - 1 2 2560 3.2500000000000000e+01 0 -1 2561 - 3.7750000000000000e+02 -2 -3 2562 75. - - 3.8758099079132080e-01 -2.1584044396877289e-01 - 6.0950559377670288e-01 -8.6360347270965576e-01 - <_> - 5.9395267486572266e+01 - - 1 2 2563 3.8250000000000000e+02 0 -1 2564 - 8.5000000000000000e+00 -2 -3 2565 5.7450000000000000e+02 - - 1.0727138072252274e-01 -9.5441406965255737e-01 - 7.1632760763168335e-01 -2.2229373455047607e-02 - <_> - 5.9514354705810547e+01 - - 1 2 2566 1.9950000000000000e+02 0 -1 2567 - 2.5500000000000000e+01 -2 -3 2568 2. - - -5.9233713150024414e-01 1.1908496916294098e-01 1. - -9.8158216476440430e-01 - <_> - 6.0169723510742188e+01 - - 1 2 2569 2.8150000000000000e+02 0 -1 2570 - 2.8050000000000000e+02 -2 -3 2571 3.1650000000000000e+02 - - -2.3387852311134338e-01 6.5537095069885254e-01 - -4.8421013355255127e-01 2.2264781594276428e-01 - <_> - 6.0158332824707031e+01 - - 1 2 2572 7.0500000000000000e+01 0 -1 2573 13. -2 -3 2574 - 1.7650000000000000e+02 - - 1. -9.1182774305343628e-01 6.4647716283798218e-01 - -1.1392616666853428e-02 - <_> - 6.0164875030517578e+01 - - 1 2 2575 1.0500000000000000e+01 0 -1 2576 - 6.5000000000000000e+00 -2 -3 2577 2.2500000000000000e+01 - - -5.1000970602035522e-01 1.9136555492877960e-01 - 5.6798326969146729e-01 -1.2325727939605713e-01 - <_> - 6.0000015258789062e+01 - - 1 2 2578 1.8500000000000000e+01 0 -1 2579 - 1.8550000000000000e+02 -2 -3 2580 8.5000000000000000e+00 - - 5.5650675296783447e-01 -1.7031535506248474e-01 - -3.4968420863151550e-01 2.8920692205429077e-01 - <_> - 5.9847770690917969e+01 - - 1 2 2581 7.5500000000000000e+01 0 -1 2582 - 4.5000000000000000e+00 -2 -3 2583 8.5000000000000000e+00 - - -1.5224465727806091e-01 6.9837278127670288e-01 - 8.2906544208526611e-01 -6.7065995931625366e-01 - <_> - 5.9407840728759766e+01 - - 1 2 2584 6.5000000000000000e+00 0 -1 2585 - 3.2500000000000000e+01 -2 -3 2586 2.7750000000000000e+02 - - -1.4858660101890564e-01 4.5175358653068542e-01 - 3.0660414695739746e-01 -4.3992885947227478e-01 - <_> - 5.9727443695068359e+01 - - 1 2 2587 5.5000000000000000e+00 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 2.0650000000000000e+02 - - -9.2537873983383179e-01 5.8647280931472778e-01 - -1.5209920704364777e-01 3.1960240006446838e-01 - <_> - 6.0010757446289062e+01 - - 1 2 2590 4.1850000000000000e+02 0 -1 2591 - 1.0550000000000000e+02 -2 -3 2592 2.8650000000000000e+02 - - 1.0595235042273998e-02 6.2895303964614868e-01 - 1.7578537762165070e-01 -6.4835780858993530e-01 - <_> - 6.0163875579833984e+01 - - 1 2 2593 1.1500000000000000e+01 0 -1 2594 - 1.3950000000000000e+02 -2 -3 2595 1.5000000000000000e+00 - - 1.5311945974826813e-01 -1. 3.8898807764053345e-01 - -6.8376713991165161e-01 - <_> - 6.0612895965576172e+01 - - 1 2 2596 6.5000000000000000e+00 0 -1 2597 - 7.5000000000000000e+00 -2 -3 2598 5.0000000000000000e-01 - - 1.1192434281110764e-01 -4.8998862504959106e-01 - 4.4902092218399048e-01 -2.1356025338172913e-01 - <_> - 6.0593112945556641e+01 - - 1 2 2599 7.5000000000000000e+00 0 -1 2600 - 2.5500000000000000e+01 -2 -3 2601 5.2550000000000000e+02 - - -6.2332719564437866e-01 2.7156946063041687e-01 - -2.6419401168823242e-01 3.0316945910453796e-01 - <_> - 6.0419368743896484e+01 - - 1 2 2602 1414. 0 -1 2603 5.0000000000000000e-01 -2 -3 2604 - 5.0000000000000000e-01 - - 3.2086572051048279e-01 -1.7374682426452637e-01 - 3.9743113517761230e-01 -8.2090038061141968e-01 - <_> - 6.0365997314453125e+01 - - 1 2 2605 5.5000000000000000e+00 0 -1 2606 - 9.4500000000000000e+01 -2 -3 2607 4.0500000000000000e+01 - - -5.3367935121059418e-02 -7.2029197216033936e-01 - 5.0103998184204102e-01 -5.2485477924346924e-01 - <_> - 6.0689079284667969e+01 - - 1 2 2608 2.5000000000000000e+00 0 -1 2609 - 1.5000000000000000e+00 -2 -3 2610 1.5000000000000000e+00 - - -9.3278533220291138e-01 3.5384011268615723e-01 - 3.2307976484298706e-01 -1.4563784003257751e-01 - <_> - 6.0867687225341797e+01 - - 1 2 2611 9.5000000000000000e+00 0 -1 2612 599. -2 -3 2613 - 2.8500000000000000e+01 - - 6.5348321199417114e-01 -7.7523887157440186e-01 - 1.7860861122608185e-01 -6.8781971931457520e-01 - <_> - 6.0617588043212891e+01 - - 1 2 2614 3.5000000000000000e+00 0 -1 2615 - 3.5000000000000000e+00 -2 -3 2616 29. - - -6.8590456247329712e-01 -4.1165366768836975e-02 - -7.8714710474014282e-01 2.2933968901634216e-01 - <_> - 6.0553024291992188e+01 - - 1 2 2617 5.0000000000000000e-01 0 -1 2618 - 8.5000000000000000e+00 -2 -3 2619 2.5500000000000000e+01 - - 7.2095865011215210e-01 -1.0256516933441162e-01 - -2.7349776029586792e-01 5.0410771369934082e-01 - <_> - 6.0395980834960938e+01 - - 1 2 2620 4.5000000000000000e+00 0 -1 2621 - 1.5500000000000000e+01 -2 -3 2622 4.5000000000000000e+00 - - 3.5106821451336145e-03 -6.8456047773361206e-01 - -1.5704339742660522e-01 4.0133151412010193e-01 - <_> - 5.9962356567382812e+01 - - 1 2 2623 2.5000000000000000e+00 0 -1 2624 - 3.5000000000000000e+00 -2 -3 2625 3.5500000000000000e+01 - - -4.5895889401435852e-01 3.6360222101211548e-01 - -4.3362265825271606e-01 1.4346121251583099e-01 - <_> - 6.0286312103271484e+01 - - 1 2 2626 237. 0 -1 2627 1.4050000000000000e+02 -2 -3 2628 - 1.0500000000000000e+01 - - 3.2395470142364502e-01 -1.2447713315486908e-01 1. - -9.4700473546981812e-01 - <_> - 6.0432418823242188e+01 - - 1 2 2629 1.3025000000000000e+03 0 -1 2630 - 2.5000000000000000e+00 -2 -3 2631 8.7350000000000000e+02 - - 1.4610382914543152e-01 -5.0863313674926758e-01 - 6.1481702327728271e-01 -7.1987234055995941e-02 - <_> - 6.0589881896972656e+01 - - 1 2 2632 4.5000000000000000e+00 0 -1 2633 - 9.5000000000000000e+00 -2 -3 2634 1.9150000000000000e+02 - - -7.7591598033905029e-01 1. -6.5265017747879028e-01 - 1.5746453404426575e-01 - <_> - 6.1252899169921875e+01 - - 1 2 2635 2.9250000000000000e+02 0 -1 2636 - 5.8450000000000000e+02 -2 -3 2637 2.1500000000000000e+01 - - -3.3597718924283981e-02 6.6301667690277100e-01 - 4.5846205949783325e-01 -3.1099578738212585e-01 - <_> - 6.1492858886718750e+01 - - 1 2 2638 7.5000000000000000e+00 0 -1 2639 - 2.9500000000000000e+01 -2 -3 2640 2.5000000000000000e+00 - - -3.6869207024574280e-01 3.3420211076736450e-01 - 4.7750937938690186e-01 -2.3987923562526703e-01 - <_> - 6.1205974578857422e+01 - - 1 2 2641 7.5000000000000000e+00 0 -1 2642 - 1.5000000000000000e+00 -2 -3 2643 1.4500000000000000e+01 - - -5.1257357001304626e-02 -9.2525291442871094e-01 - 2.6967108249664307e-01 -2.8688544034957886e-01 - <_> - 6.1789810180664062e+01 - - 1 2 2644 5.0000000000000000e-01 0 -1 2645 - 1.5000000000000000e+00 -2 -3 2646 1.0850000000000000e+02 - - -1.2522415816783905e-01 5.8383584022521973e-01 - -3.7811398506164551e-01 3.5324230790138245e-01 - <_> - 6.1241226196289062e+01 - - 1 2 2647 1.3500000000000000e+01 0 -1 2648 43. -2 -3 2649 - 1.5000000000000000e+00 - - 3.7132117152214050e-01 -5.4858577251434326e-01 - 5.6798547506332397e-01 -1.6644481569528580e-02 - <_> - 6.1479743957519531e+01 - - 1 2 2650 3.5000000000000000e+00 0 -1 2651 - 2.1500000000000000e+01 -2 -3 2652 2.7500000000000000e+01 - - -4.2368954420089722e-01 2.3851761221885681e-01 - -5.7994890213012695e-01 3.7476634979248047e-01 - <_> - 6.1004722595214844e+01 - - 1 2 2653 1.5000000000000000e+00 0 -1 2654 - 9.5000000000000000e+00 -2 -3 2655 2.0650000000000000e+02 - - 3.5197860002517700e-01 -6.0150128602981567e-01 - -4.7501891851425171e-01 1.0508991032838821e-01 - <_> - 6.1214889526367188e+01 - - 1 2 2656 4.1450000000000000e+02 0 -1 2657 - 1.5000000000000000e+00 -2 -3 2658 6.5000000000000000e+00 - - -9.0379047393798828e-01 2.1016710996627808e-01 - -8.4449762105941772e-01 1.7173469066619873e-01 - <_> - 6.1464859008789062e+01 - - 1 2 2659 2.5000000000000000e+00 0 -1 2660 - 3.4500000000000000e+01 -2 -3 2661 1.4500000000000000e+01 - - 2.5582450628280640e-01 -7.3183947801589966e-01 - -4.9639618396759033e-01 2.4996897578239441e-01 - <_> - 6.1681930541992188e+01 - - 1 2 2662 5.0000000000000000e-01 0 -1 2663 - 6.9500000000000000e+01 -2 -3 2664 2.6750000000000000e+02 - - -8.9841169118881226e-01 1. 6.2449836730957031e-01 - -6.4489036798477173e-02 - <_> - 6.1654228210449219e+01 - - 1 2 2665 2.7050000000000000e+02 0 -1 2666 - 5.5000000000000000e+00 -2 -3 2667 4.0950000000000000e+02 - - -8.7079370021820068e-01 2.6282650232315063e-01 - 6.5214538574218750e-01 -2.7702366933226585e-02 - <_> - 6.2061069488525391e+01 - - 1 2 2668 2.5000000000000000e+00 0 -1 2669 - 5.0000000000000000e-01 -2 -3 2670 5.0000000000000000e-01 - - -7.8327047824859619e-01 4.0684157609939575e-01 - 6.0355588793754578e-02 -5.0233304500579834e-01 - <_> - 6.1906791687011719e+01 - - 1 2 2671 1.5000000000000000e+00 0 -1 2672 - 1.5000000000000000e+00 -2 -3 2673 2.5000000000000000e+00 - - 5.6696528196334839e-01 -4.6415984630584717e-01 - 3.4750485420227051e-01 -2.1522110700607300e-01 - <_> - 6.2178283691406250e+01 - - 1 2 2674 3.9500000000000000e+01 0 -1 2675 - 8.5000000000000000e+00 -2 -3 2676 1.3750000000000000e+02 - - -1.5354898571968079e-01 3.0087256431579590e-01 - 6.2499260902404785e-01 -7.2910422086715698e-01 - <_> - 6.2438056945800781e+01 - - 1 2 2677 6.5000000000000000e+00 0 -1 2678 - 8.5000000000000000e+00 -2 -3 2679 67. - - -3.1217855215072632e-01 2.5977545976638794e-01 - 7.4574637413024902e-01 -1.9338005781173706e-01 - <_> - 6.2752281188964844e+01 - - 1 2 2680 2.6650000000000000e+02 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.3550000000000000e+02 - - 3.1422150135040283e-01 -1.4777605235576630e-01 - 8.5186350345611572e-01 -8.3034658432006836e-01 - <_> - 6.2594532012939453e+01 - - 1 2 2683 3.5500000000000000e+01 0 -1 2684 - 5.0000000000000000e-01 -2 -3 2685 5.0500000000000000e+01 - - 1.6120029985904694e-01 -3.1525397300720215e-01 - 7.8786081075668335e-01 -8.2956892251968384e-01 - <_> - 6.2900459289550781e+01 - - 1 2 2686 9.5000000000000000e+00 0 -1 2687 - 5.0000000000000000e-01 -2 -3 2688 7.5000000000000000e+00 - - 3.3722239732742310e-01 -6.2358045578002930e-01 - -2.2625392675399780e-01 3.3588206768035889e-01 - <_> - 6.2587158203125000e+01 - - 1 2 2689 1.5000000000000000e+00 0 -1 2690 - 8.5000000000000000e+00 -2 -3 2691 1.6450000000000000e+02 - - -6.1196434497833252e-01 3.7018314003944397e-01 - -3.4325864911079407e-01 7.1064901351928711e-01 - <_> - 6.2978553771972656e+01 - - 1 2 2692 5.0000000000000000e-01 0 -1 2693 - 7.5000000000000000e+00 -2 -3 2694 236. - - -8.3526867628097534e-01 3.9139539003372192e-01 - -2.7839684486389160e-01 6.4235913753509521e-01 - <_> - 6.2408267974853516e+01 - - 1 2 2695 1.4050000000000000e+02 0 -1 2696 1639. -2 -3 2697 - 2.5000000000000000e+00 - - -8.4244453907012939e-01 3.5902199149131775e-01 - 1.0501577705144882e-01 -4.8646318912506104e-01 - <_> - 6.2895637512207031e+01 - - 1 2 2698 1.4500000000000000e+01 0 -1 2699 - 8.5000000000000000e+00 -2 -3 2700 2.5000000000000000e+00 - - 4.6988185495138168e-02 -7.1969383955001831e-01 - 4.8736768960952759e-01 -6.1925843358039856e-02 - <_> - 6.2663387298583984e+01 - - 1 2 2701 2.1500000000000000e+01 0 -1 2702 - 1.1500000000000000e+01 -2 -3 2703 1.4500000000000000e+01 - - -7.2029066085815430e-01 9.2440739274024963e-02 - 2.9415887594223022e-01 -2.3525267839431763e-01 - <_> - 6.2987194061279297e+01 - - 1 2 2704 4.5000000000000000e+00 0 -1 2705 - 7.5500000000000000e+01 -2 -3 2706 5.0000000000000000e-01 - - 1. -9.0740150213241577e-01 3.2380592823028564e-01 - -1.5268217027187347e-01 - <_> - 6.3587291717529297e+01 - - 1 2 2707 2.8500000000000000e+01 0 -1 2708 - 5.0000000000000000e-01 -2 -3 2709 3.0500000000000000e+01 - - 8.2845188677310944e-02 -4.1826823353767395e-01 - -1.8972435593605042e-01 6.0009866952896118e-01 - <_> - 6.3807559967041016e+01 - - 1 2 2710 1.7050000000000000e+02 0 -1 2711 - 1.5000000000000000e+00 -2 -3 2712 2.6500000000000000e+01 - - 2.2606207430362701e-01 -3.2580971717834473e-01 - -9.5029556751251221e-01 1. - <_> - 6.3285655975341797e+01 - - 1 2 2713 2.5000000000000000e+00 0 -1 2714 - 2.0500000000000000e+01 -2 -3 2715 1.5000000000000000e+00 - - -5.2190160751342773e-01 2.7798208594322205e-01 - 3.1544733047485352e-01 -2.2196403145790100e-01 - <_> - 6.3550678253173828e+01 - - 1 2 2716 2052. 0 -1 2717 1.5000000000000000e+00 -2 -3 2718 - 2.4500000000000000e+01 - - 2.8521814942359924e-01 -2.5548547506332397e-01 - -7.0672160387039185e-01 7.2617936134338379e-01 - <_> - 6.3662876129150391e+01 - - 1 2 2719 2.5500000000000000e+01 0 -1 2720 - 3.7500000000000000e+01 -2 -3 2721 2.9500000000000000e+01 - - 9.2001825571060181e-02 -6.1267060041427612e-01 - -7.6270443201065063e-01 2.8730672597885132e-01 - <_> - 6.3807342529296875e+01 - - 1 2 2722 1.5000000000000000e+00 0 -1 2723 - 1.5000000000000000e+00 -2 -3 2724 3.7150000000000000e+02 - - -7.3808377981185913e-01 3.7818792462348938e-01 - -4.3305176496505737e-01 2.3701250553131104e-01 - <_> - 6.3842769622802734e+01 - - 1 2 2725 2.5000000000000000e+00 0 -1 2726 - 2.5000000000000000e+00 -2 -3 2727 5.0000000000000000e-01 - - 1.1332137882709503e-01 -5.1461762189865112e-01 - 7.9907387495040894e-01 3.5429000854492188e-02 - <_> - 6.3756759643554688e+01 - - 1 2 2728 1.9450000000000000e+02 0 -1 2729 1643. -2 -3 2730 - 1.9650000000000000e+02 - - 1.4746785163879395e-01 -7.2807186841964722e-01 - 5.6145447492599487e-01 -8.6011424660682678e-02 - <_> - 6.3733058929443359e+01 - - 1 2 2731 8.3500000000000000e+01 0 -1 2732 - 1.0500000000000000e+01 -2 -3 2733 2.3500000000000000e+01 - - -2.3702777922153473e-02 5.4405170679092407e-01 - -7.7169793844223022e-01 3.0090901255607605e-01 - <_> - 6.3680248260498047e+01 - - 1 2 2734 7.5000000000000000e+00 0 -1 2735 - 4.8500000000000000e+01 -2 -3 2736 1.5000000000000000e+00 - - -5.2809726446866989e-02 -7.8950524330139160e-01 - 5.1301914453506470e-01 -4.9866847693920135e-02 - <_> - 6.3880180358886719e+01 - - 1 2 2737 2.9015000000000000e+03 0 -1 2738 - 6.5000000000000000e+00 -2 -3 2739 8.7050000000000000e+02 - - -5.2026945352554321e-01 1.4022850990295410e-01 - 7.1531414985656738e-01 -1.1917709559202194e-01 - <_> - 6.3902549743652344e+01 - - 1 2 2740 1.7500000000000000e+01 0 -1 2741 682. -2 -3 2742 - 1.4500000000000000e+01 - - 2.2369438782334328e-02 7.8829252719879150e-01 - -7.3855948448181152e-01 6.5198886394500732e-01 - <_> - 6.4139472961425781e+01 - - 1 2 2743 1.5000000000000000e+00 0 -1 2744 - 2.5000000000000000e+00 -2 -3 2745 2.0500000000000000e+01 - - -6.6418927907943726e-01 7.0931375026702881e-01 - -2.0525617897510529e-01 6.0997349023818970e-01 - <_> - 6.3896743774414062e+01 - - 1 2 2746 8.5000000000000000e+00 0 -1 2747 - 2.5000000000000000e+00 -2 -3 2748 3.1500000000000000e+01 - - -4.3710169196128845e-01 4.7477069497108459e-01 - -3.1593173742294312e-01 4.8821964859962463e-01 - <_> - 6.3892070770263672e+01 - - 1 2 2749 4.3750000000000000e+02 0 -1 2750 - 4.3150000000000000e+02 -2 -3 2751 9.5000000000000000e+00 - - -4.6721110120415688e-03 8.8219249248504639e-01 - -8.3383691310882568e-01 7.1565806865692139e-01 - <_> - 6.4291923522949219e+01 - - 1 2 2752 5.0000000000000000e-01 0 -1 2753 - 2.9350000000000000e+02 -2 -3 2754 1.2500000000000000e+01 - - 5.9044593572616577e-01 -3.5737776756286621e-01 - -2.6983705163002014e-01 3.9985546469688416e-01 - <_> - 6.4444198608398438e+01 - - 1 2 2755 2.5000000000000000e+00 0 -1 2756 496. -2 -3 2757 - 8.7500000000000000e+01 - - -8.2448130846023560e-01 1. 1.5226939320564270e-01 - -7.8910803794860840e-01 - <_> - 6.4720268249511719e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 8.5000000000000000e+00 -2 -3 2760 1.6895000000000000e+03 - - -7.6469248533248901e-01 5.3199023008346558e-01 - 1.3163314759731293e-01 -3.6375212669372559e-01 - <_> - 6.4363922119140625e+01 - - 1 2 2761 2.0650000000000000e+02 0 -1 2762 - 5.0000000000000000e-01 -2 -3 2763 2.0850000000000000e+02 - - 9.4482317566871643e-02 -4.8107957839965820e-01 - 6.4464539289474487e-01 -1.6706781089305878e-01 - <_> - 6.4417221069335938e+01 - - 1 2 2764 5.7500000000000000e+01 0 -1 2765 - 1.5000000000000000e+00 -2 -3 2766 5.0000000000000000e-01 - - -7.5109612941741943e-01 3.3447441458702087e-01 - 4.7835576534271240e-01 -7.7882848680019379e-02 - <_> - 6.4584609985351562e+01 - - 1 2 2767 1.2500000000000000e+01 0 -1 2768 - 5.0000000000000000e-01 -2 -3 2769 2.1500000000000000e+01 - - -5.4096364974975586e-01 1.6738529503345490e-01 - -7.5967723131179810e-01 8.8292425870895386e-01 - <_> - 6.4760520935058594e+01 - - 1 2 2770 2.5000000000000000e+00 0 -1 2771 - 1.9050000000000000e+02 -2 -3 2772 5.0000000000000000e-01 - - -4.6916040778160095e-01 5.8294248580932617e-01 - 5.0347501039505005e-01 -2.4913801252841949e-01 - <_> - 6.4607902526855469e+01 - - 1 2 2773 1.7500000000000000e+01 0 -1 2774 - 9.5500000000000000e+01 -2 -3 2775 4.4350000000000000e+02 - - 3.4941902756690979e-01 -6.4918982982635498e-01 - -4.3396180868148804e-01 2.8290441632270813e-01 - <_> - 6.4527969360351562e+01 - - 1 2 2776 5.0000000000000000e-01 0 -1 2777 - 4.3500000000000000e+01 -2 -3 2778 8.8500000000000000e+01 - - 4.4687822461128235e-01 -7.1882510185241699e-01 - -7.9936116933822632e-02 -8.9642030000686646e-01 - <_> - 6.4619773864746094e+01 - - 1 2 2779 3.5000000000000000e+00 0 -1 2780 - 3.1500000000000000e+01 -2 -3 2781 3.9150000000000000e+02 - - -9.1050511598587036e-01 1. 9.1801762580871582e-02 - -9.1259324550628662e-01 - <_> - 6.4837570190429688e+01 - - 1 2 2782 7.1500000000000000e+01 0 -1 2783 - 1.1500000000000000e+01 -2 -3 2784 1.7850000000000000e+02 - - -4.0079045295715332e-01 7.8354829549789429e-01 - 2.1779969334602356e-01 -9.3245065212249756e-01 - <_> - 6.4496871948242188e+01 - - 1 2 2785 5.0000000000000000e-01 0 -1 2786 - 7.5000000000000000e+00 -2 -3 2787 5.0000000000000000e-01 - - 4.1458779573440552e-01 -1.6905190050601959e-01 - 4.9135982990264893e-01 -3.4069874882698059e-01 - <_> - 6.5054672241210938e+01 - - 1 2 2788 4.5000000000000000e+00 0 -1 2789 - 5.5000000000000000e+00 -2 -3 2790 5.0000000000000000e-01 - - -3.2522678375244141e-01 3.4266743063926697e-01 - 5.5779844522476196e-01 -1.2484771758317947e-01 - <_> - 6.4687782287597656e+01 - - 1 2 2791 5.3500000000000000e+01 0 -1 2792 - 1.5500000000000000e+01 -2 -3 2793 1.8500000000000000e+01 - - -3.6688560247421265e-01 2.1883730590343475e-01 - 2.1215963363647461e-01 -8.3708620071411133e-01 - <_> - 6.5208068847656250e+01 - - 1 2 2794 1.5000000000000000e+00 0 -1 2795 - 7.5000000000000000e+00 -2 -3 2796 4.5000000000000000e+00 - - -4.4749242067337036e-01 5.2028369903564453e-01 - 1.4320193231105804e-01 -3.6478173732757568e-01 - <_> - 6.5268638610839844e+01 - - 1 2 2797 5.5000000000000000e+00 0 -1 2798 - 4.1500000000000000e+01 -2 -3 2799 4.5000000000000000e+00 - - 8.3268040418624878e-01 -6.3441288471221924e-01 - 4.0759882330894470e-01 -8.2020364701747894e-02 - <_> - 6.5322891235351562e+01 - - 1 2 2800 9.0500000000000000e+01 0 -1 2801 - 2.5000000000000000e+00 -2 -3 2802 1.8650000000000000e+02 - - 2.2344470024108887e-01 -2.9277965426445007e-01 - -9.6397489309310913e-01 5.7233071327209473e-01 - <_> - 6.5454887390136719e+01 - - 1 2 2803 2.0500000000000000e+01 0 -1 2804 - 2.5000000000000000e+00 -2 -3 2805 4. - - -6.3367128372192383e-01 1.3200259208679199e-01 - -9.4963890314102173e-01 4.6485623717308044e-01 - <_> - 6.5903160095214844e+01 - - 1 2 2806 2.5000000000000000e+00 0 -1 2807 - 3.8500000000000000e+01 -2 -3 2808 4.5500000000000000e+01 - - 4.4826710224151611e-01 -7.7937543392181396e-01 - -5.1449149847030640e-01 1.0056205093860626e-01 - <_> - 6.6093971252441406e+01 - - 1 2 2809 2.5175000000000000e+03 0 -1 2810 6717. -2 -3 2811 - 2.0650000000000000e+02 - - -3.9923682808876038e-02 9.1757839918136597e-01 - -5.2093452215194702e-01 1.9081139564514160e-01 - <_> - 6.6034652709960938e+01 - - 1 2 2812 2.5000000000000000e+00 0 -1 2813 - 3.5000000000000000e+00 -2 -3 2814 3.3150000000000000e+02 - - -7.6858395338058472e-01 3.2895866036415100e-01 - -3.3519825339317322e-01 6.6958039999008179e-01 - <_> - 6.6225700378417969e+01 - - 1 2 2815 2.0500000000000000e+01 0 -1 2816 - 7.5000000000000000e+00 -2 -3 2817 1.0350000000000000e+02 - - 1.6298887133598328e-01 -7.7439045906066895e-01 - 2.3633432388305664e-01 -4.2903181910514832e-01 - <_> - 6.6216186523437500e+01 - - 1 2 2818 2.5000000000000000e+00 0 -1 2819 - 5.8500000000000000e+01 -2 -3 2820 1.5500000000000000e+01 - - 2.1922865509986877e-01 -4.7555354237556458e-01 - -3.8529956340789795e-01 3.8940200209617615e-01 - <_> - 6.5891036987304688e+01 - - 1 2 2821 5.5000000000000000e+00 0 -1 2822 - 8.3500000000000000e+01 -2 -3 2823 2.3500000000000000e+01 - - 3.2532903552055359e-01 -4.5672222971916199e-01 - -5.5388760566711426e-01 1.9246758520603180e-01 - <_> - 6.5877616882324219e+01 - - 1 2 2824 6.5000000000000000e+00 0 -1 2825 - 5.6550000000000000e+02 -2 -3 2826 5.5000000000000000e+00 - - -7.6332885026931763e-01 -1.3426670804619789e-02 - -7.4143958091735840e-01 8.1064927577972412e-01 - <_> - 6.6143356323242188e+01 - - 1 2 2827 3.7450000000000000e+02 0 -1 2828 - 3.5000000000000000e+00 -2 -3 2829 5.0000000000000000e-01 - - 6.8982642889022827e-01 -8.5442638397216797e-01 - 2.6574078202247620e-01 -2.8088992834091187e-01 - <_> - 6.6746147155761719e+01 - - 1 2 2830 1.9650000000000000e+02 0 -1 2831 - 2.0650000000000000e+02 -2 -3 2832 1.9750000000000000e+02 - - -4.7177043557167053e-01 1. 6.5734672546386719e-01 - -5.5299658328294754e-02 - <_> - 6.6317184448242188e+01 - - 1 2 2833 3.5000000000000000e+00 0 -1 2834 - 6.5000000000000000e+00 -2 -3 2835 1.9500000000000000e+01 - - -4.2896154522895813e-01 1.9346684217453003e-01 - -4.7202244400978088e-01 4.7573706507682800e-01 - <_> - 6.6482894897460938e+01 - - 1 2 2836 2.3500000000000000e+01 0 -1 2837 - 5.7050000000000000e+02 -2 -3 2838 5.0000000000000000e-01 - - -7.4143189191818237e-01 1.6571453213691711e-01 - 2.8583261370658875e-01 -7.6734077930450439e-01 - <_> - 6.6698379516601562e+01 - - 1 2 2839 1.9650000000000000e+02 0 -1 2840 - 9.8450000000000000e+02 -2 -3 2841 2.5000000000000000e+00 - - -8.8686957955360413e-02 6.8865406513214111e-01 - 1.6092415153980255e-01 -4.5511838793754578e-01 - <_> - 6.7053703308105469e+01 - - 1 2 2842 9.5000000000000000e+00 0 -1 2843 - 3.4050000000000000e+02 -2 -3 2844 2.5000000000000000e+00 - - -5.7897639274597168e-01 8.3814328908920288e-01 - 3.5532349348068237e-01 -1.6980881989002228e-01 - <_> - 6.7309471130371094e+01 - - 1 2 2845 2.8050000000000000e+02 0 -1 2846 - 3.5000000000000000e+00 -2 -3 2847 7.9050000000000000e+02 - - 5.3537392616271973e-01 -1.3895300030708313e-01 - -6.1582380533218384e-01 5.4094051010906696e-03 - <_> - 6.7479339599609375e+01 - - 1 2 2848 2.5000000000000000e+00 0 -1 2849 - 2.5000000000000000e+00 -2 -3 2850 2.5000000000000000e+00 - - -1. 5.5264580249786377e-01 1.6986495256423950e-01 - -4.1565752029418945e-01 - <_> - 6.7149955749511719e+01 - - 1 2 2851 4.5000000000000000e+00 0 -1 2852 - 1.8500000000000000e+01 -2 -3 2853 2.5000000000000000e+00 - - -4.9663683772087097e-01 3.3515587449073792e-01 - 4.6553504467010498e-01 -8.7602093815803528e-02 - <_> - 6.7272407531738281e+01 - - 1 2 2854 237. 0 -1 2855 1.0500000000000000e+01 -2 -3 2856 - 2.7350000000000000e+02 - - -1.5763807296752930e-01 2.8533494472503662e-01 - 6.8770086765289307e-01 -9.8898959159851074e-01 - <_> - 6.6949989318847656e+01 - - 1 2 2857 1.0500000000000000e+01 0 -1 2858 - 2.4850000000000000e+02 -2 -3 2859 9.9500000000000000e+01 - - 1.6148981451988220e-01 -3.2241418957710266e-01 - -5.9701257944107056e-01 6.3962835073471069e-01 - <_> - 6.7259635925292969e+01 - - 1 2 2860 5.0000000000000000e-01 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 7.5000000000000000e+00 - - 8.0473339557647705e-01 -9.0566039085388184e-01 - 3.0964154005050659e-01 -1.4670071005821228e-01 - <_> - 6.7172332763671875e+01 - - 1 2 2863 1.2500000000000000e+01 0 -1 2864 - 1.5500000000000000e+01 -2 -3 2865 3.5000000000000000e+00 - - -6.6961383819580078e-01 5.7878249883651733e-01 - 4.8450264334678650e-01 -8.7298728525638580e-02 - <_> - 6.7815200805664062e+01 - - 1 2 2866 1.1500000000000000e+01 0 -1 2867 - 3.1500000000000000e+01 -2 -3 2868 6.5000000000000000e+00 - - -4.8206365108489990e-01 4.7012288123369217e-02 - 7.4164730310440063e-01 -3.0158874392509460e-01 - <_> - 6.7794479370117188e+01 - - 1 2 2869 8.5000000000000000e+00 0 -1 2870 - 1.5000000000000000e+00 -2 -3 2871 3.7500000000000000e+01 - - 4.6158957481384277e-01 -5.1054544746875763e-02 - -6.3606274127960205e-01 3.5886037349700928e-01 - <_> - 6.7871452331542969e+01 - - 1 2 2872 5.5000000000000000e+00 0 -1 2873 - 5.5750000000000000e+02 -2 -3 2874 3209. - - 7.5514155626296997e-01 -6.2665617465972900e-01 - 1.7917767167091370e-01 -7.6869279146194458e-01 - <_> - 6.7681411743164062e+01 - - 1 2 2875 1.0650000000000000e+02 0 -1 2876 - 3.9550000000000000e+02 -2 -3 2877 9.5000000000000000e+00 - - 4.4955825805664062e-01 -2.9224312305450439e-01 - -8.0019611120223999e-01 5.1831835508346558e-01 - <_> - 6.7658134460449219e+01 - - 1 2 2878 6.2450000000000000e+02 0 -1 2879 - 3.0500000000000000e+01 -2 -3 2880 7.9750000000000000e+02 - - -1. 1. 7.4804317951202393e-01 -2.3278422653675079e-02 - <_> - 6.7805534362792969e+01 - - 1 2 2881 1.4650000000000000e+02 0 -1 2882 - 5.0000000000000000e-01 -2 -3 2883 1.9500000000000000e+01 - - -6.3743829727172852e-01 1.4740309119224548e-01 - -8.2422167062759399e-01 1. - <_> - 6.7852165222167969e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 9.5000000000000000e+00 -2 -3 2886 2.7500000000000000e+01 - - -5.1376032829284668e-01 7.3264604806900024e-01 - -2.5961226224899292e-01 3.9754027128219604e-01 - <_> - 6.8086799621582031e+01 - - 1 2 2887 3.2500000000000000e+01 0 -1 2888 - 1.5000000000000000e+00 -2 -3 2889 5.5000000000000000e+00 - - 3.6609417200088501e-01 -1.0678847134113312e-01 - -8.1009173393249512e-01 6.5037436783313751e-02 - <_> - 6.8214500427246094e+01 - - 1 2 2890 5.0000000000000000e-01 0 -1 2891 - 4.5000000000000000e+00 -2 -3 2892 3.0500000000000000e+01 - - -9.0979951620101929e-01 3.1051525473594666e-01 - -8.2302808761596680e-01 1.2769748270511627e-01 - <_> - 6.7917503356933594e+01 - - 1 2 2893 4.2350000000000000e+02 0 -1 2894 - 2.2875000000000000e+03 -2 -3 2895 2.1500000000000000e+01 - - -4.0313944220542908e-02 8.5728436708450317e-01 - -2.9699394106864929e-01 8.5103875398635864e-01 - <_> - 6.8314117431640625e+01 - - 1 2 2896 1.5000000000000000e+00 0 -1 2897 53. -2 -3 2898 - 1.5000000000000000e+00 - - 3.9660894870758057e-01 -9.0774112939834595e-01 - 1.2309800088405609e-01 -4.6573173999786377e-01 - <_> - 6.8401733398437500e+01 - - 1 2 2899 1.9450000000000000e+02 0 -1 2900 - 2.3500000000000000e+01 -2 -3 2901 3.9050000000000000e+02 - - -5.7891708612442017e-01 9.1515809297561646e-01 - 6.9994968175888062e-01 -4.3836530297994614e-02 - <_> - 6.8536247253417969e+01 - - 1 2 2902 1.8650000000000000e+02 0 -1 2903 - 7.5000000000000000e+00 -2 -3 2904 2.6650000000000000e+02 - - -6.9809150695800781e-01 1.3451172411441803e-01 1. - -9.9006718397140503e-01 - <_> - 6.8994667053222656e+01 - - 1 2 2905 5.0000000000000000e-01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 5.0000000000000000e-01 - - -2.2326274216175079e-01 4.5842617750167847e-01 - 6.2888121604919434e-01 -3.4905898571014404e-01 - <_> - 6.8767745971679688e+01 - - 1 2 2908 9.5000000000000000e+00 0 -1 2909 - 5.5000000000000000e+00 -2 -3 2910 1.2255000000000000e+03 - - 2.2254677116870880e-01 -2.8151977062225342e-01 - -9.0560692548751831e-01 9.0504884719848633e-01 - <_> - 6.8525566101074219e+01 - - 1 2 2911 3.2500000000000000e+01 0 -1 2912 - 4.5000000000000000e+00 -2 -3 2913 7.5000000000000000e+00 - - -2.7538121212273836e-03 -6.9165170192718506e-01 - 5.7820391654968262e-01 -2.5509628653526306e-01 - <_> - 6.8883575439453125e+01 - - 1 2 2914 6.5000000000000000e+00 0 -1 2915 - 5.0000000000000000e-01 -2 -3 2916 5.5000000000000000e+00 - - 1.3683679699897766e-01 -5.6018638610839844e-01 - -3.3692777156829834e-01 3.5801160335540771e-01 - <_> - 6.8840766906738281e+01 - - 1 2 2917 5.0000000000000000e-01 0 -1 2918 - 5.2500000000000000e+01 -2 -3 2919 1.1050000000000000e+02 - - 7.7966368198394775e-01 2.0057722926139832e-02 - -2.8223827481269836e-01 4.5779809355735779e-01 - <_> - 6.9032073974609375e+01 - - 1 2 2920 7.5000000000000000e+00 0 -1 2921 - 2.9500000000000000e+01 -2 -3 2922 2.2500000000000000e+01 - - -9.2170667648315430e-01 1. 3.5735762119293213e-01 - -1.0750242322683334e-01 - <_> - 6.8714004516601562e+01 - - 1 2 2923 1.8500000000000000e+01 0 -1 2924 - 1.2500000000000000e+01 -2 -3 2925 2.0500000000000000e+01 - - 2.3622247576713562e-01 -6.2772291898727417e-01 - -5.2963131666183472e-01 2.7689251303672791e-01 - <_> - 6.8882164001464844e+01 - - 1 2 2926 219. 0 -1 2927 3.0950000000000000e+02 -2 -3 2928 - 1.1450000000000000e+02 - - 1.6816329956054688e-01 -3.7265399098396301e-01 - -9.0168434381484985e-01 1. - <_> - 6.8773300170898438e+01 - - 1 2 2929 1.0500000000000000e+01 0 -1 2930 - 2.2500000000000000e+01 -2 -3 2931 3.5000000000000000e+00 - - -7.8473842144012451e-01 1.2849690020084381e-01 - 3.7842509150505066e-01 -1.0886743664741516e-01 - <_> - 6.8523002624511719e+01 - - 1 2 2932 4.5000000000000000e+00 0 -1 2933 - 2.5000000000000000e+00 -2 -3 2934 1.9500000000000000e+01 - - -5.6240028142929077e-01 -8.6381016299128532e-03 - 5.5950272083282471e-01 -6.6527374088764191e-02 - <_> - 6.8540222167968750e+01 - - 1 2 2935 2.5000000000000000e+00 0 -1 2936 - 4.5000000000000000e+00 -2 -3 2937 7.2500000000000000e+01 - - -3.5429468750953674e-01 4.7208651900291443e-01 - 1.7222335562109947e-02 -6.1873370409011841e-01 - <_> - 6.8054306030273438e+01 - - 1 2 2938 1.0250000000000000e+02 0 -1 2939 - 7.5000000000000000e+00 -2 -3 2940 2.0550000000000000e+02 - - 1.3330066204071045e-01 -4.8592099547386169e-01 - 6.4965671300888062e-01 -3.7294719368219376e-02 - <_> - 6.8587783813476562e+01 - - 1 2 2941 2.9500000000000000e+01 0 -1 2942 - 6.3500000000000000e+01 -2 -3 2943 6.5000000000000000e+00 - - -2.2070726752281189e-01 6.4551812410354614e-01 - -6.1110073328018188e-01 5.3347945213317871e-01 - <_> - 6.8991744995117188e+01 - - 1 2 2944 4.5000000000000000e+00 0 -1 2945 - 7.5000000000000000e+00 -2 -3 2946 3.7500000000000000e+01 - - -1.6733403503894806e-01 4.0395921468734741e-01 - 3.4822711348533630e-01 -4.4277858734130859e-01 - <_> - 6.9024818420410156e+01 - - 1 2 2947 1054. 0 -1 2948 2.9645000000000000e+03 -2 -3 2949 - 4.8550000000000000e+02 - - -1. 8.5014098882675171e-01 -5.8178287744522095e-01 - 3.3078812062740326e-02 - <_> - 6.9566368103027344e+01 - - 1 2 2950 5.0000000000000000e-01 0 -1 2951 - 5.5000000000000000e+00 -2 -3 2952 7.5000000000000000e+00 - - -1.9729833584278822e-03 6.8332517147064209e-01 - -4.2742264270782471e-01 2.2634387016296387e-01 - <_> - 6.9610260009765625e+01 - - 1 2 2953 1.6950000000000000e+02 0 -1 2954 - 2.5000000000000000e+00 -2 -3 2955 3.3500000000000000e+01 - - 3.9216127991676331e-01 -9.7884893417358398e-02 - -9.5070320367813110e-01 1. - <_> - 6.9546066284179688e+01 - - 1 2 2956 1.0500000000000000e+01 0 -1 2957 - 8.5000000000000000e+00 -2 -3 2958 1.2500000000000000e+01 - - -7.4745219945907593e-01 6.7914712429046631e-01 - -6.1746150255203247e-01 1.7846804857254028e-01 - <_> - 6.9931442260742188e+01 - - 1 2 2959 1.5500000000000000e+01 0 -1 2960 581. -2 -3 2961 - 881. - - 3.8537198305130005e-01 -4.9864691495895386e-01 - -5.2889358997344971e-01 7.6011091470718384e-02 - <_> - 7.0310058593750000e+01 - - 1 2 2962 9.5000000000000000e+00 0 -1 2963 - 6.5000000000000000e+00 -2 -3 2964 3.8450000000000000e+02 - - 1.3596023619174957e-01 -4.2733094096183777e-01 - 5.0578802824020386e-01 -1. - <_> - 7.0192367553710938e+01 - - 1 2 2965 1.0500000000000000e+01 0 -1 2966 - 3.5000000000000000e+00 -2 -3 2967 1.4050000000000000e+02 - - -7.4998342990875244e-01 2.7843931317329407e-01 - 4.3058690428733826e-01 -1.1769727617502213e-01 - <_> - 6.9951408386230469e+01 - - 1 2 2968 8.8250000000000000e+02 0 -1 2969 - 6.0150000000000000e+02 -2 -3 2970 1459. - - -4.1208836436271667e-01 1.3212314248085022e-01 - 7.5216329097747803e-01 4.9172616563737392e-03 - <_> - 6.9623153686523438e+01 - - 1 2 2971 5.0000000000000000e-01 0 -1 2972 - 2.5000000000000000e+00 -2 -3 2973 7.5000000000000000e+00 - - -3.2825407385826111e-01 4.7693637013435364e-01 - -2.9572629928588867e-01 3.7341046333312988e-01 - <_> - 7.0125137329101562e+01 - - 1 2 2974 5.0000000000000000e-01 0 -1 2975 - 3.1500000000000000e+01 -2 -3 2976 3.5000000000000000e+00 - - -6.9827795028686523e-01 6.5693438053131104e-01 - 5.0198370218276978e-01 -1.0436290502548218e-01 - <_> - 7.0039115905761719e+01 - - 1 2 2977 1.3500000000000000e+01 0 -1 2978 - 2.3500000000000000e+01 -2 -3 2979 5.0000000000000000e-01 - - -8.4431791305541992e-01 1. 4.4658949971199036e-01 - -8.6022958159446716e-02 - <_> - 7.0156913757324219e+01 - - 1 2 2980 5.0000000000000000e-01 0 -1 2981 - 3.5000000000000000e+00 -2 -3 2982 2.5500000000000000e+01 - - -5.4146528244018555e-01 6.7168194055557251e-01 - -4.8114633560180664e-01 3.8386128842830658e-02 - <_> - 7.0207313537597656e+01 - - 1 2 2983 7.6500000000000000e+01 0 -1 2984 - 1.9650000000000000e+02 -2 -3 2985 270. - - 3.9014890789985657e-01 -1.0452992469072342e-01 - 6.6388440132141113e-01 -6.9735282659530640e-01 - <_> - 7.0389663696289062e+01 - - 1 2 2986 2.7500000000000000e+01 0 -1 2987 - 1.5000000000000000e+00 -2 -3 2988 3.5000000000000000e+00 - - 2.2635735571384430e-01 -6.3035410642623901e-01 - -8.5632139444351196e-01 1.8234945833683014e-01 - <_> - 7.0754112243652344e+01 - - 1 2 2989 6.5000000000000000e+00 0 -1 2990 - 1.9500000000000000e+01 -2 -3 2991 5.0000000000000000e-01 - - 3.6445134878158569e-01 -3.0069667100906372e-01 - 7.7127411961555481e-02 -5.1235681772232056e-01 - <_> - 7.0504135131835938e+01 - - 1 2 2992 1.3500000000000000e+01 0 -1 2993 - 1.5500000000000000e+01 -2 -3 2994 1.0500000000000000e+01 - - -2.4998134374618530e-01 4.6560180187225342e-01 - -6.1666029691696167e-01 6.5309768915176392e-01 - <_> - 7.0445526123046875e+01 - - 1 2 2995 6.5000000000000000e+00 0 -1 2996 - 6.9500000000000000e+01 -2 -3 2997 4.6500000000000000e+01 - - 3.0786228179931641e-01 -6.0552901029586792e-01 - 5.3606212139129639e-02 -5.8309459686279297e-01 - <_> - 7.0407524108886719e+01 - - 1 2 2998 1.5000000000000000e+00 0 -1 2999 - 1.0500000000000000e+01 -2 -3 3000 5.0000000000000000e-01 - - -8.0116474628448486e-01 6.0916137695312500e-01 - 6.4076530933380127e-01 -3.8002632558345795e-02 - <_> - 7.0560409545898438e+01 - - 1 2 3001 1.5500000000000000e+01 0 -1 3002 17. -2 -3 3003 - 5.5000000000000000e+00 - - 5.2674514055252075e-01 -6.5563476085662842e-01 - -9.1981142759323120e-01 1.5288232266902924e-01 - <_> - 7.0493698120117188e+01 - - 1 2 3004 3.5000000000000000e+00 0 -1 3005 - 5.5000000000000000e+00 -2 -3 3006 2.1500000000000000e+01 - - -1.7892476916313171e-01 4.8387104272842407e-01 - -7.3338449001312256e-01 -4.8672512173652649e-02 - <_> - 7.0596115112304688e+01 - - 1 2 3007 5.0000000000000000e-01 0 -1 3008 - 2.2500000000000000e+01 -2 -3 3009 3.7500000000000000e+01 - - 4.6702525019645691e-01 -7.1555072069168091e-01 - -4.6292027831077576e-01 1.0242109745740891e-01 - <_> - 7.0788101196289062e+01 - - 1 2 3010 888. 0 -1 3011 2.8350000000000000e+02 -2 -3 3012 - 5.4500000000000000e+01 - - 1.9198547303676605e-01 -3.3554536104202271e-01 - 7.5706630945205688e-01 -9.4958788156509399e-01 - <_> - 7.0992675781250000e+01 - - 1 2 3013 4.6500000000000000e+01 0 -1 3014 - 1.1500000000000000e+01 -2 -3 3015 3.8350000000000000e+02 - - 5.8137912303209305e-02 -8.1196117401123047e-01 - -5.8893513679504395e-01 2.0457436144351959e-01 - <_> - 7.0927970886230469e+01 - - 1 2 3016 4.5000000000000000e+00 0 -1 3017 - 3.7500000000000000e+01 -2 -3 3018 5.0000000000000000e-01 - - -6.4707726240158081e-02 -7.4383819103240967e-01 - 7.0274794101715088e-01 3.6739804781973362e-03 - <_> - 7.0937110900878906e+01 - - 1 2 3019 1.8750000000000000e+02 0 -1 3020 368. -2 -3 3021 - 1.5500000000000000e+01 - - -1. 7.3944020271301270e-01 9.1391317546367645e-03 - -5.9454476833343506e-01 - <_> - 7.1217323303222656e+01 - - 1 2 3022 1.2500000000000000e+01 0 -1 3023 - 1.5000000000000000e+00 -2 -3 3024 2.5000000000000000e+00 - - 7.2053438425064087e-01 -8.6623835563659668e-01 - 2.8021961450576782e-01 -2.7525502443313599e-01 - <_> - 7.1467041015625000e+01 - - 1 2 3025 7.5500000000000000e+01 0 -1 3026 - 2.8500000000000000e+01 -2 -3 3027 5.3500000000000000e+01 - - -4.2027494311332703e-01 5.5862784385681152e-01 - 3.1650352478027344e-01 -5.8407008647918701e-01 - <_> - 7.1588317871093750e+01 - - 1 2 3028 4.5000000000000000e+00 0 -1 3029 - 6.5000000000000000e+00 -2 -3 3030 4.5000000000000000e+00 - - -4.1601717472076416e-01 4.5779439806938171e-01 - 2.2142156958580017e-01 -3.8868919014930725e-01 - <_> - 7.1852600097656250e+01 - - 1 2 3031 8.7500000000000000e+01 0 -1 3032 - 2.9500000000000000e+01 -2 -3 3033 1.2500000000000000e+01 - - -7.2233885526657104e-02 5.3140532970428467e-01 - -9.3469631671905518e-01 1. - <_> - 7.1505233764648438e+01 - - 1 2 3034 5.0000000000000000e-01 0 -1 3035 - 6.5000000000000000e+00 -2 -3 3036 1.7255000000000000e+03 - - 3.3586502075195312e-01 -5.8553379774093628e-01 - -5.2456873655319214e-01 6.7789293825626373e-02 - <_> - 7.1216247558593750e+01 - - 1 2 3037 1.3850000000000000e+02 0 -1 3038 - 2.1500000000000000e+01 -2 -3 3039 8.3950000000000000e+02 - - -4.7844988107681274e-01 6.2551170587539673e-01 - 3.5149163007736206e-01 -2.8898537158966064e-01 - <_> - 7.1451400756835938e+01 - - 1 2 3040 2.7750000000000000e+02 0 -1 3041 - 7.5000000000000000e+00 -2 -3 3042 1.2150000000000000e+02 - - 3.0562061071395874e-01 -5.7451391220092773e-01 - 2.3515534400939941e-01 -5.9030193090438843e-01 - <_> - 7.1664764404296875e+01 - - 1 2 3043 2.5000000000000000e+00 0 -1 3044 - 2.6500000000000000e+01 -2 -3 3045 5.0550000000000000e+02 - - -9.2273312807083130e-01 1. 2.1336206793785095e-01 - -2.3929618299007416e-01 - <_> - 7.1852516174316406e+01 - - 1 2 3046 2.0550000000000000e+02 0 -1 3047 - 1.5000000000000000e+00 -2 -3 3048 1.0150000000000000e+02 - - 2.9846069216728210e-01 -4.9547702074050903e-01 - 6.2601786851882935e-01 -2.5054400321096182e-03 - <_> - 7.1862113952636719e+01 - - 1 2 3049 2.5000000000000000e+00 0 -1 3050 - 6.5000000000000000e+00 -2 -3 3051 8.5000000000000000e+00 - - -8.3387494087219238e-01 5.1528376340866089e-01 - 4.0370386838912964e-01 -1.0111065953969955e-01 - <_> - 7.1967544555664062e+01 - - 1 2 3052 1.7500000000000000e+01 0 -1 3053 311. -2 -3 3054 - 3.5000000000000000e+00 - - -2.8867423534393311e-01 2.3968809843063354e-01 - -8.3167719841003418e-01 3.0170908570289612e-01 - <_> - 7.2000297546386719e+01 - - 1 2 3055 1.0500000000000000e+01 0 -1 3056 - 2.8500000000000000e+01 -2 -3 3057 7.5000000000000000e+00 - - -1.0150995105504990e-01 5.2106666564941406e-01 - 4.5249879360198975e-01 -5.5006933212280273e-01 - <_> - 7.2459365844726562e+01 - - 1 2 3058 3.2535000000000000e+03 0 -1 3059 - 6.4450000000000000e+02 -2 -3 3060 4.7500000000000000e+01 - - -2.9244979843497276e-02 7.8562206029891968e-01 - -9.7256761789321899e-01 6.8540745973587036e-01 - <_> - 7.2652557373046875e+01 - - 1 2 3061 5.0000000000000000e-01 0 -1 3062 - 1.9455000000000000e+03 -2 -3 3063 8.3950000000000000e+02 - - 3.9193862676620483e-01 -5.5309027433395386e-01 - -3.6735993623733521e-01 2.9874709248542786e-01 - <_> - 7.2714279174804688e+01 - - 1 2 3064 3.5000000000000000e+00 0 -1 3065 - 1.3500000000000000e+01 -2 -3 3066 5.0000000000000000e-01 - - -6.2343889474868774e-01 3.5922548174858093e-01 - 4.0484932065010071e-01 -9.4865411520004272e-02 - <_> - 7.2773506164550781e+01 - - 1 2 3067 7.1450000000000000e+02 0 -1 3068 - 1.1165000000000000e+03 -2 -3 3069 1.5500000000000000e+01 - - -1.4480955898761749e-01 5.5192404985427856e-01 - -4.6364155411720276e-01 9.9115431308746338e-02 - - <_> - 0 - - 3 9 3 5 - <_> - 3 - - 2 1 3 12 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 8 2 6 - <_> - 5 - - 2 2 4 5 - <_> - 5 - - 0 14 7 1 - <_> - 4 - - 3 10 2 2 - <_> - 1 - - 3 13 3 2 - <_> - 4 - - 1 5 6 8 - <_> - 9 - - 4 8 1 2 - <_> - 3 - - 0 0 6 8 - <_> - 8 - - 3 3 2 1 - <_> - 3 - - 2 14 5 1 - <_> - 4 - - 1 3 5 12 - <_> - 2 - - 2 8 3 6 - <_> - 0 - - 3 9 3 5 - <_> - 5 - - 5 4 1 1 - <_> - 4 - - 3 1 2 4 - <_> - 1 - - 3 5 2 1 - <_> - 2 - - 2 6 3 8 - <_> - 9 - - 3 7 2 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 2 3 4 10 - <_> - 1 - - 3 3 1 2 - <_> - 4 - - 1 0 6 15 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 2 5 4 4 - <_> - 7 - - 3 6 2 1 - <_> - 7 - - 1 14 6 1 - <_> - 1 - - 3 2 2 6 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 0 14 7 1 - <_> - 1 - - 1 0 6 1 - <_> - 2 - - 1 13 4 1 - <_> - 3 - - 2 4 1 4 - <_> - 5 - - 2 14 5 1 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 3 2 2 5 - <_> - 8 - - 6 10 1 2 - <_> - 0 - - 2 2 5 2 - <_> - 7 - - 0 8 6 1 - <_> - 0 - - 2 0 4 2 - <_> - 5 - - 4 2 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 5 - - 1 0 6 1 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 3 1 1 3 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 0 14 4 1 - <_> - 0 - - 2 12 5 2 - <_> - 9 - - 0 10 4 1 - <_> - 1 - - 3 13 2 2 - <_> - 5 - - 5 4 1 4 - <_> - 1 - - 2 5 4 2 - <_> - 5 - - 2 8 2 2 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 3 7 1 1 - <_> - 1 - - 3 3 2 1 - <_> - 3 - - 3 3 1 1 - <_> - 4 - - 1 3 6 3 - <_> - 5 - - 5 5 1 8 - <_> - 7 - - 0 4 1 3 - <_> - 2 - - 0 1 6 8 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 1 3 6 12 - <_> - 2 - - 0 0 7 1 - <_> - 4 - - 4 0 1 11 - <_> - 7 - - 3 6 1 1 - <_> - 4 - - 3 11 2 2 - <_> - 3 - - 0 14 4 1 - <_> - 2 - - 2 12 3 2 - <_> - 4 - - 2 2 4 1 - <_> - 0 - - 4 5 1 2 - <_> - 0 - - 2 7 4 4 - <_> - 8 - - 2 6 4 1 - <_> - 4 - - 3 9 2 2 - <_> - 1 - - 0 6 4 8 - <_> - 5 - - 0 12 2 2 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 2 3 4 1 - <_> - 8 - - 3 10 2 4 - <_> - 4 - - 1 5 6 9 - <_> - 8 - - 3 0 2 2 - <_> - 9 - - 3 10 2 1 - <_> - 5 - - 3 4 4 3 - <_> - 2 - - 5 4 1 4 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 3 7 2 1 - <_> - 7 - - 5 10 1 3 - <_> - 0 - - 2 4 1 4 - <_> - 9 - - 4 4 1 3 - <_> - 9 - - 0 1 7 12 - <_> - 2 - - 6 13 1 2 - <_> - 3 - - 3 13 2 1 - <_> - 2 - - 5 6 2 2 - <_> - 0 - - 1 10 1 2 - <_> - 1 - - 3 14 2 1 - <_> - 0 - - 3 9 2 4 - <_> - 4 - - 1 3 5 2 - <_> - 4 - - 3 0 3 15 - <_> - 2 - - 1 14 5 1 - <_> - 1 - - 4 5 2 3 - <_> - 1 - - 0 3 5 2 - <_> - 4 - - 3 2 2 1 - <_> - 2 - - 0 2 6 3 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 0 0 4 9 - <_> - 1 - - 1 8 4 1 - <_> - 2 - - 2 8 3 6 - <_> - 1 - - 4 7 1 1 - <_> - 7 - - 5 12 2 1 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 5 11 1 2 - <_> - 9 - - 3 6 1 9 - <_> - 8 - - 2 3 3 1 - <_> - 3 - - 2 8 1 4 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 2 13 3 2 - <_> - 8 - - 4 9 1 3 - <_> - 1 - - 3 10 2 3 - <_> - 9 - - 0 0 1 1 - <_> - 0 - - 4 5 2 1 - <_> - 9 - - 4 3 1 10 - <_> - 0 - - 0 2 5 3 - <_> - 3 - - 2 0 1 6 - <_> - 8 - - 3 3 1 1 - <_> - 8 - - 2 2 1 1 - <_> - 8 - - 4 3 1 3 - <_> - 9 - - 1 9 5 2 - <_> - 3 - - 1 14 4 1 - <_> - 0 - - 3 13 4 2 - <_> - 2 - - 2 7 4 7 - <_> - 4 - - 2 0 4 15 - <_> - 0 - - 1 4 3 1 - <_> - 8 - - 1 1 1 2 - <_> - 2 - - 3 13 2 1 - <_> - 5 - - 4 4 3 2 - <_> - 2 - - 3 5 2 4 - <_> - 5 - - 4 14 2 1 - <_> - 5 - - 4 7 2 6 - <_> - 5 - - 0 3 2 5 - <_> - 5 - - 1 12 1 3 - <_> - 3 - - 2 12 2 3 - <_> - 9 - - 4 8 1 1 - <_> - 3 - - 0 5 1 5 - <_> - 7 - - 6 1 1 11 - <_> - 7 - - 5 12 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 4 - - 3 10 2 1 - <_> - 3 - - 3 0 4 6 - <_> - 3 - - 3 14 4 1 - <_> - 2 - - 1 11 3 3 - <_> - 2 - - 3 5 2 1 - <_> - 1 - - 3 2 2 1 - <_> - 4 - - 3 2 3 1 - <_> - 4 - - 0 1 7 1 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 4 7 2 3 - <_> - 2 - - 5 3 2 5 - <_> - 3 - - 2 4 1 1 - <_> - 2 - - 2 14 5 1 - <_> - 0 - - 0 0 5 9 - <_> - 1 - - 3 0 1 15 - <_> - 7 - - 2 7 4 1 - <_> - 7 - - 1 14 2 1 - <_> - 1 - - 2 11 3 2 - <_> - 1 - - 1 13 3 1 - <_> - 5 - - 4 1 3 14 - <_> - 3 - - 1 5 6 2 - <_> - 3 - - 2 11 1 2 - <_> - 0 - - 1 0 4 1 - <_> - 1 - - 0 6 6 9 - <_> - 7 - - 2 4 4 8 - <_> - 2 - - 3 5 1 9 - <_> - 0 - - 2 3 2 11 - <_> - 4 - - 3 14 2 1 - <_> - 0 - - 0 10 1 1 - <_> - 2 - - 4 7 1 2 - <_> - 2 - - 0 3 6 11 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 3 4 2 1 - <_> - 9 - - 3 0 3 3 - <_> - 4 - - 3 3 2 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 2 10 4 5 - <_> - 3 - - 3 2 1 1 - <_> - 0 - - 3 5 2 2 - <_> - 3 - - 1 14 3 1 - <_> - 7 - - 0 14 5 1 - <_> - 0 - - 3 9 4 5 - <_> - 1 - - 0 8 5 2 - <_> - 1 - - 3 1 2 3 - <_> - 3 - - 4 1 2 4 - <_> - 5 - - 2 10 5 1 - <_> - 1 - - 1 1 4 1 - <_> - 5 - - 3 1 4 4 - <_> - 7 - - 1 3 2 10 - <_> - 5 - - 3 0 4 2 - <_> - 7 - - 0 0 1 11 - <_> - 4 - - 4 1 1 7 - <_> - 9 - - 3 4 3 5 - <_> - 8 - - 0 14 4 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 2 7 4 2 - <_> - 4 - - 1 5 6 7 - <_> - 1 - - 3 7 1 1 - <_> - 7 - - 3 6 2 1 - <_> - 9 - - 3 8 2 6 - <_> - 7 - - 4 10 1 3 - <_> - 1 - - 0 2 5 3 - <_> - 4 - - 3 0 2 5 - <_> - 2 - - 2 9 2 1 - <_> - 9 - - 1 4 2 4 - <_> - 3 - - 2 14 2 1 - <_> - 3 - - 0 12 5 2 - <_> - 2 - - 1 14 2 1 - <_> - 5 - - 2 11 1 2 - <_> - 2 - - 2 8 3 6 - <_> - 0 - - 4 3 1 1 - <_> - 5 - - 5 12 1 1 - <_> - 2 - - 6 9 1 3 - <_> - 0 - - 5 4 2 1 - <_> - 0 - - 3 8 2 6 - <_> - 2 - - 3 9 1 1 - <_> - 4 - - 2 4 2 10 - <_> - 1 - - 3 14 1 1 - <_> - 9 - - 0 0 2 3 - <_> - 4 - - 2 4 3 1 - <_> - 9 - - 5 9 2 2 - <_> - 9 - - 3 2 2 3 - <_> - 9 - - 4 4 1 2 - <_> - 0 - - 3 0 2 13 - <_> - 0 - - 0 0 6 14 - <_> - 5 - - 2 3 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 2 4 3 7 - <_> - 9 - - 4 8 1 1 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 4 5 2 3 - <_> - 8 - - 3 1 2 1 - <_> - 4 - - 2 10 5 1 - <_> - 0 - - 1 0 3 1 - <_> - 8 - - 3 3 2 11 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 0 9 1 2 - <_> - 3 - - 1 12 2 3 - <_> - 3 - - 1 5 2 8 - <_> - 0 - - 2 4 2 1 - <_> - 3 - - 0 4 6 7 - <_> - 7 - - 2 5 1 2 - <_> - 7 - - 5 13 1 2 - <_> - 1 - - 3 0 3 9 - <_> - 0 - - 0 14 6 1 - <_> - 0 - - 4 7 2 7 - <_> - 7 - - 3 10 1 5 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 2 10 4 5 - <_> - 3 - - 2 2 2 1 - <_> - 0 - - 3 5 2 1 - <_> - 2 - - 2 13 3 1 - <_> - 0 - - 2 0 4 2 - <_> - 5 - - 1 14 5 1 - <_> - 5 - - 4 2 2 2 - <_> - 0 - - 2 10 3 4 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 5 - - 3 12 1 2 - <_> - 4 - - 0 5 6 2 - <_> - 3 - - 3 3 3 3 - <_> - 7 - - 1 11 2 4 - <_> - 9 - - 3 4 1 8 - <_> - 7 - - 4 11 1 2 - <_> - 8 - - 3 5 1 7 - <_> - 0 - - 2 3 4 8 - <_> - 7 - - 3 3 1 4 - <_> - 0 - - 3 14 4 1 - <_> - 1 - - 4 0 3 14 - <_> - 2 - - 4 3 3 2 - <_> - 0 - - 3 1 1 9 - <_> - 3 - - 5 10 2 4 - <_> - 3 - - 2 8 2 3 - <_> - 4 - - 2 1 3 3 - <_> - 0 - - 4 13 3 1 - <_> - 0 - - 0 10 2 3 - <_> - 5 - - 2 14 4 1 - <_> - 9 - - 3 4 2 5 - <_> - 9 - - 0 14 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 3 9 3 4 - <_> - 2 - - 0 14 7 1 - <_> - 9 - - 3 11 2 2 - <_> - 2 - - 2 13 3 1 - <_> - 3 - - 2 12 3 2 - <_> - 2 - - 2 5 3 1 - <_> - 0 - - 4 6 1 1 - <_> - 0 - - 2 0 1 9 - <_> - 9 - - 3 12 4 2 - <_> - 4 - - 3 10 2 2 - <_> - 1 - - 1 7 3 8 - <_> - 9 - - 3 2 2 12 - <_> - 4 - - 0 14 7 1 - <_> - 4 - - 2 4 4 3 - <_> - 1 - - 4 2 1 12 - <_> - 4 - - 3 0 4 14 - <_> - 2 - - 1 1 4 13 - <_> - 1 - - 4 13 3 2 - <_> - 1 - - 2 5 4 1 - <_> - 9 - - 6 9 1 1 - <_> - 7 - - 3 5 2 9 - <_> - 3 - - 3 2 2 3 - <_> - 7 - - 0 1 1 5 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 0 3 5 3 - <_> - 2 - - 3 1 2 1 - <_> - 5 - - 4 9 2 4 - <_> - 1 - - 1 13 5 1 - <_> - 5 - - 0 11 1 2 - <_> - 5 - - 3 8 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 4 1 2 - <_> - 2 - - 4 1 1 4 - <_> - 5 - - 5 4 1 5 - <_> - 7 - - 0 0 1 12 - <_> - 3 - - 1 6 4 4 - <_> - 5 - - 1 4 6 3 - <_> - 0 - - 5 8 1 7 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 2 0 2 14 - <_> - 7 - - 3 0 1 3 - <_> - 4 - - 2 0 3 6 - <_> - 0 - - 4 0 2 8 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 4 1 1 6 - <_> - 4 - - 1 5 2 6 - <_> - 7 - - 1 13 2 1 - <_> - 2 - - 0 0 3 10 - <_> - 0 - - 3 9 2 4 - <_> - 1 - - 3 0 2 1 - <_> - 1 - - 3 4 3 9 - <_> - 5 - - 3 2 4 4 - <_> - 1 - - 2 11 3 2 - <_> - 2 - - 4 5 1 4 - <_> - 5 - - 0 10 2 1 - <_> - 2 - - 2 7 5 1 - <_> - 1 - - 3 12 2 3 - <_> - 0 - - 1 12 5 2 - <_> - 1 - - 2 12 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 4 - - 4 1 2 9 - <_> - 7 - - 0 6 1 2 - <_> - 1 - - 4 5 2 1 - <_> - 4 - - 4 10 2 1 - <_> - 3 - - 2 6 1 5 - <_> - 2 - - 3 7 3 4 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 1 11 4 1 - <_> - 8 - - 4 10 1 2 - <_> - 3 - - 0 9 2 5 - <_> - 2 - - 1 6 3 5 - <_> - 9 - - 4 5 1 1 - <_> - 3 - - 1 12 4 2 - <_> - 2 - - 3 7 1 4 - <_> - 0 - - 0 12 3 1 - <_> - 7 - - 2 14 4 1 - <_> - 1 - - 0 4 7 11 - <_> - 2 - - 4 5 3 9 - <_> - 3 - - 1 10 2 5 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 0 0 5 1 - <_> - 8 - - 3 8 4 3 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 4 14 3 1 - <_> - 4 - - 1 0 6 15 - <_> - 5 - - 4 8 2 6 - <_> - 4 - - 0 0 7 2 - <_> - 0 - - 1 1 6 1 - <_> - 3 - - 0 1 6 6 - <_> - 4 - - 4 9 1 2 - <_> - 0 - - 2 4 1 1 - <_> - 3 - - 2 4 1 2 - <_> - 2 - - 0 1 5 6 - <_> - 7 - - 0 3 5 1 - <_> - 3 - - 2 0 1 1 - <_> - 2 - - 3 1 1 3 - <_> - 3 - - 5 11 1 1 - <_> - 0 - - 3 7 3 6 - <_> - 0 - - 0 11 4 3 - <_> - 9 - - 1 1 1 1 - <_> - 0 - - 4 4 2 1 - <_> - 9 - - 3 2 2 10 - <_> - 2 - - 0 14 7 1 - <_> - 1 - - 3 5 3 7 - <_> - 5 - - 2 11 4 2 - <_> - 2 - - 1 9 4 5 - <_> - 2 - - 2 3 4 4 - <_> - 9 - - 2 8 3 1 - <_> - 1 - - 6 0 1 15 - <_> - 2 - - 2 4 3 3 - <_> - 1 - - 3 10 3 2 - <_> - 8 - - 4 3 1 1 - <_> - 1 - - 5 11 1 4 - <_> - 8 - - 4 0 1 1 - <_> - 2 - - 3 5 1 3 - <_> - 3 - - 3 1 2 3 - <_> - 4 - - 3 3 2 8 - <_> - 4 - - 4 4 3 11 - <_> - 3 - - 0 14 6 1 - <_> - 0 - - 5 13 1 2 - <_> - 5 - - 1 4 5 4 - <_> - 1 - - 2 8 3 3 - <_> - 5 - - 3 12 2 3 - <_> - 5 - - 3 14 4 1 - <_> - 2 - - 2 11 4 3 - <_> - 1 - - 0 14 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 0 - - 5 8 1 3 - <_> - 4 - - 1 0 6 1 - <_> - 5 - - 5 0 1 7 - <_> - 1 - - 0 4 7 2 - <_> - 5 - - 1 14 6 1 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 2 0 3 10 - <_> - 7 - - 3 3 2 11 - <_> - 7 - - 3 3 4 1 - <_> - 4 - - 3 10 2 2 - <_> - 2 - - 3 9 3 5 - <_> - 3 - - 2 3 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 3 4 1 7 - <_> - 3 - - 1 4 2 2 - <_> - 0 - - 1 5 2 1 - <_> - 4 - - 0 5 7 3 - <_> - 2 - - 2 7 3 6 - <_> - 0 - - 2 4 1 1 - <_> - 2 - - 4 7 1 3 - <_> - 7 - - 3 5 4 6 - <_> - 1 - - 0 14 5 1 - <_> - 1 - - 3 3 3 1 - <_> - 9 - - 4 8 1 1 - <_> - 9 - - 0 0 2 12 - <_> - 8 - - 2 6 2 1 - <_> - 5 - - 1 0 5 2 - <_> - 2 - - 3 2 3 3 - <_> - 5 - - 2 11 1 4 - <_> - 0 - - 3 10 3 4 - <_> - 4 - - 2 2 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 0 - - 1 3 2 5 - <_> - 2 - - 2 4 2 1 - <_> - 5 - - 0 0 5 11 - <_> - 5 - - 3 2 2 1 - <_> - 8 - - 5 2 2 3 - <_> - 0 - - 4 4 3 2 - <_> - 8 - - 4 2 1 2 - <_> - 0 - - 0 2 7 1 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 4 2 1 13 - <_> - 4 - - 4 0 2 15 - <_> - 4 - - 2 0 4 8 - <_> - 1 - - 3 5 2 1 - <_> - 8 - - 3 3 2 5 - <_> - 4 - - 0 12 4 3 - <_> - 5 - - 2 5 5 3 - <_> - 9 - - 1 0 5 7 - <_> - 3 - - 2 0 2 14 - <_> - 5 - - 2 8 2 1 - <_> - 2 - - 2 5 1 9 - <_> - 2 - - 0 6 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 1 - <_> - 8 - - 3 0 1 2 - <_> - 3 - - 3 2 4 2 - <_> - 0 - - 3 3 2 1 - <_> - 4 - - 1 0 4 3 - <_> - 5 - - 0 14 6 1 - <_> - 5 - - 0 12 6 2 - <_> - 7 - - 3 6 1 1 - <_> - 5 - - 0 7 2 1 - <_> - 8 - - 2 14 3 1 - <_> - 2 - - 4 12 3 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 2 3 1 1 - <_> - 8 - - 5 2 1 1 - <_> - 3 - - 5 11 1 3 - <_> - 0 - - 4 9 3 5 - <_> - 7 - - 2 14 2 1 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 2 14 5 1 - <_> - 2 - - 1 13 5 1 - <_> - 1 - - 0 1 6 3 - <_> - 4 - - 0 4 7 1 - <_> - 1 - - 1 1 1 2 - <_> - 2 - - 1 10 5 1 - <_> - 7 - - 3 6 4 3 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 2 3 4 2 - <_> - 5 - - 2 4 5 3 - <_> - 2 - - 0 0 3 11 - <_> - 3 - - 3 4 3 8 - <_> - 7 - - 1 13 2 2 - <_> - 5 - - 0 3 3 5 - <_> - 8 - - 3 0 2 5 - <_> - 9 - - 4 5 1 6 - <_> - 4 - - 3 10 2 5 - <_> - 0 - - 1 6 6 2 - <_> - 4 - - 6 1 1 8 - <_> - 4 - - 4 9 1 2 - <_> - 0 - - 1 11 1 4 - <_> - 5 - - 3 5 3 10 - <_> - 0 - - 1 12 5 2 - <_> - 3 - - 2 9 2 6 - <_> - 3 - - 1 1 3 4 - <_> - 5 - - 0 10 4 1 - <_> - 1 - - 2 2 3 2 - <_> - 4 - - 3 2 4 1 - <_> - 4 - - 1 0 2 2 - <_> - 3 - - 2 14 3 1 - <_> - 3 - - 1 11 5 3 - <_> - 1 - - 4 11 2 2 - <_> - 5 - - 4 1 3 6 - <_> - 4 - - 0 2 7 3 - <_> - 2 - - 2 8 3 6 - <_> - 5 - - 4 7 1 1 - <_> - 4 - - 5 0 1 10 - <_> - 8 - - 3 6 1 1 - <_> - 5 - - 4 14 3 1 - <_> - 0 - - 1 11 6 3 - <_> - 1 - - 3 1 2 4 - <_> - 8 - - 5 5 1 9 - <_> - 5 - - 0 2 1 1 - <_> - 8 - - 6 10 1 2 - <_> - 4 - - 0 5 7 7 - <_> - 5 - - 3 3 3 11 - <_> - 7 - - 0 13 5 2 - <_> - 7 - - 3 8 1 1 - <_> - 7 - - 1 0 2 2 - <_> - 4 - - 3 3 2 9 - <_> - 5 - - 1 14 6 1 - <_> - 9 - - 4 9 1 1 - <_> - 1 - - 5 12 2 3 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 1 0 6 2 - <_> - 3 - - 3 7 1 1 - <_> - 8 - - 4 1 1 1 - <_> - 7 - - 3 3 2 8 - <_> - 4 - - 3 10 1 5 - <_> - 2 - - 2 3 4 10 - <_> - 0 - - 0 10 1 3 - <_> - 2 - - 1 6 5 3 - <_> - 1 - - 2 13 3 2 - <_> - 0 - - 2 4 3 2 - <_> - 4 - - 3 1 2 4 - <_> - 4 - - 3 1 3 2 - <_> - 1 - - 4 2 1 3 - <_> - 5 - - 0 2 5 2 - <_> - 7 - - 3 6 1 1 - <_> - 4 - - 4 3 1 8 - <_> - 0 - - 2 3 1 5 - <_> - 3 - - 0 14 4 1 - <_> - 4 - - 3 1 4 14 - <_> - 4 - - 1 6 6 1 - <_> - 2 - - 2 9 3 5 - <_> - 4 - - 0 4 2 3 - <_> - 0 - - 3 0 2 8 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 7 1 2 - <_> - 8 - - 1 8 1 4 - <_> - 1 - - 3 14 2 1 - <_> - 3 - - 1 4 2 6 - <_> - 4 - - 1 4 6 1 - <_> - 4 - - 2 10 5 1 - <_> - 1 - - 5 6 2 8 - <_> - 2 - - 2 5 2 2 - <_> - 0 - - 3 2 2 2 - <_> - 3 - - 1 2 5 1 - <_> - 4 - - 0 14 2 1 - <_> - 0 - - 6 14 1 1 - <_> - 3 - - 1 6 3 1 - <_> - 2 - - 3 3 2 12 - <_> - 3 - - 0 4 5 11 - <_> - 0 - - 3 11 2 2 - <_> - 3 - - 4 6 1 3 - <_> - 1 - - 3 4 4 10 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 0 1 1 2 - <_> - 0 - - 4 8 3 2 - <_> - 1 - - 5 10 1 3 - <_> - 0 - - 5 2 2 3 - <_> - 2 - - 4 8 2 1 - <_> - 1 - - 2 13 5 1 - <_> - 9 - - 2 0 2 3 - <_> - 9 - - 4 4 2 2 - <_> - 2 - - 5 3 2 10 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 3 4 3 2 - <_> - 7 - - 4 7 3 1 - <_> - 5 - - 2 14 1 1 - <_> - 1 - - 2 1 5 1 - <_> - 0 - - 1 4 5 4 - <_> - 0 - - 3 5 2 3 - <_> - 0 - - 1 1 5 13 - <_> - 1 - - 1 1 6 1 - <_> - 5 - - 0 10 2 2 - <_> - 2 - - 1 13 3 1 - <_> - 2 - - 4 13 1 1 - <_> - 0 - - 0 1 3 6 - <_> - 4 - - 0 2 4 5 - <_> - 4 - - 1 0 6 14 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 3 10 4 4 - <_> - 2 - - 3 3 1 1 - <_> - 5 - - 4 11 3 4 - <_> - 2 - - 0 1 5 1 - <_> - 4 - - 2 11 1 1 - <_> - 1 - - 0 0 7 5 - <_> - 5 - - 5 2 1 11 - <_> - 4 - - 1 5 3 10 - <_> - 0 - - 3 2 1 12 - <_> - 4 - - 3 14 2 1 - <_> - 2 - - 1 10 1 4 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 0 1 5 11 - <_> - 1 - - 1 7 4 3 - <_> - 4 - - 3 10 2 2 - <_> - 4 - - 2 3 4 5 - <_> - 1 - - 3 14 2 1 - <_> - 7 - - 2 13 1 1 - <_> - 7 - - 2 8 5 7 - <_> - 1 - - 3 9 2 4 - <_> - 5 - - 4 1 1 11 - <_> - 7 - - 6 1 1 6 - <_> - 9 - - 3 8 2 2 - <_> - 9 - - 1 13 2 2 - <_> - 2 - - 3 5 1 3 - <_> - 9 - - 3 4 3 2 - <_> - 3 - - 3 2 1 13 - <_> - 1 - - 5 10 1 2 - <_> - 5 - - 3 2 4 2 - <_> - 7 - - 3 7 3 3 - <_> - 0 - - 5 1 2 2 - <_> - 8 - - 4 2 2 2 - <_> - 1 - - 3 2 2 3 - <_> - 7 - - 3 5 1 3 - <_> - 4 - - 2 1 5 5 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 4 2 8 - <_> - 8 - - 3 1 1 1 - <_> - 5 - - 5 2 1 6 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 2 8 1 4 - <_> - 0 - - 3 12 4 2 - <_> - 3 - - 1 4 2 1 - <_> - 3 - - 1 14 5 1 - <_> - 1 - - 3 4 2 6 - <_> - 1 - - 3 7 2 2 - <_> - 2 - - 0 9 6 3 - <_> - 2 - - 1 6 3 7 - <_> - 0 - - 1 7 1 4 - <_> - 2 - - 4 7 1 3 - <_> - 2 - - 0 14 5 1 - <_> - 2 - - 4 5 2 6 - <_> - 8 - - 4 3 1 1 - <_> - 0 - - 4 4 2 2 - <_> - 0 - - 4 0 2 14 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 1 2 3 1 - <_> - 1 - - 3 12 2 1 - <_> - 5 - - 5 1 1 10 - <_> - 0 - - 1 0 3 2 - <_> - 7 - - 5 14 1 1 - <_> - 5 - - 0 10 2 5 - <_> - 8 - - 2 3 3 1 - <_> - 8 - - 4 2 1 3 - <_> - 8 - - 4 11 1 1 - <_> - 0 - - 1 0 3 5 - <_> - 5 - - 4 2 2 1 - <_> - 1 - - 2 5 3 2 - <_> - 3 - - 2 5 1 9 - <_> - 2 - - 6 12 1 3 - <_> - 2 - - 0 2 5 12 - <_> - 4 - - 6 5 1 10 - <_> - 1 - - 4 3 1 2 - <_> - 5 - - 3 5 1 6 - <_> - 0 - - 3 9 2 3 - <_> - 2 - - 1 8 3 1 - <_> - 0 - - 5 14 1 1 - <_> - 5 - - 5 3 1 8 - <_> - 1 - - 1 0 6 2 - <_> - 5 - - 3 10 2 5 - <_> - 2 - - 2 13 3 1 - <_> - 9 - - 3 4 2 2 - <_> - 1 - - 1 5 1 10 - <_> - 5 - - 1 9 1 3 - <_> - 2 - - 2 6 5 4 - <_> - 9 - - 1 7 2 4 - <_> - 9 - - 3 1 2 3 - <_> - 8 - - 2 0 1 4 - <_> - 9 - - 3 4 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 2 - <_> - 1 - - 3 10 2 3 - <_> - 3 - - 3 2 1 1 - <_> - 3 - - 0 11 2 4 - <_> - 9 - - 3 9 3 2 - <_> - 1 - - 3 14 2 1 - <_> - 1 - - 1 0 1 2 - <_> - 4 - - 4 14 3 1 - <_> - 0 - - 3 10 3 4 - <_> - 1 - - 2 2 2 1 - <_> - 4 - - 2 4 3 7 - <_> - 4 - - 3 9 1 2 - <_> - 1 - - 2 7 2 3 - <_> - 9 - - 4 9 1 2 - <_> - 4 - - 0 5 5 10 - <_> - 1 - - 3 13 4 1 - <_> - 1 - - 2 6 5 2 - <_> - 7 - - 5 14 1 1 - <_> - 0 - - 3 7 2 1 - <_> - 0 - - 4 12 2 2 - <_> - 3 - - 0 3 6 5 - <_> - 7 - - 3 9 2 5 - <_> - 3 - - 2 14 1 1 - <_> - 3 - - 0 6 1 1 - <_> - 4 - - 2 3 4 11 - <_> - 1 - - 3 7 2 2 - <_> - 1 - - 2 2 3 2 - <_> - 2 - - 3 14 2 1 - <_> - 3 - - 0 12 6 2 - <_> - 3 - - 5 12 2 1 - <_> - 1 - - 5 1 2 2 - <_> - 0 - - 5 9 2 1 - <_> - 0 - - 3 3 4 11 - <_> - 1 - - 1 6 6 7 - <_> - 5 - - 3 14 4 1 - <_> - 9 - - 3 9 2 2 - <_> - 9 - - 0 7 7 1 - <_> - 8 - - 3 3 2 10 - <_> - 9 - - 3 5 2 3 - <_> - 9 - - 0 2 7 3 - <_> - 8 - - 3 2 2 2 - <_> - 8 - - 3 0 2 1 - <_> - 8 - - 3 1 2 13 - <_> - 3 - - 6 9 1 3 - <_> - 2 - - 3 10 2 4 - <_> - 1 - - 2 3 3 6 - <_> - 2 - - 3 8 2 1 - <_> - 5 - - 3 7 1 5 - <_> - 2 - - 4 4 2 1 - <_> - 4 - - 4 14 3 1 - <_> - 0 - - 0 14 6 1 - <_> - 2 - - 2 7 2 6 - <_> - 2 - - 5 0 1 15 - <_> - 4 - - 0 14 2 1 - <_> - 1 - - 2 14 3 1 - <_> - 2 - - 3 6 4 3 - <_> - 4 - - 3 1 3 4 - <_> - 1 - - 3 1 2 4 - <_> - 4 - - 2 0 5 13 - <_> - 9 - - 1 2 6 5 - <_> - 3 - - 1 2 2 12 - <_> - 3 - - 0 7 4 2 - <_> - 3 - - 2 8 5 2 - <_> - 0 - - 3 5 2 2 - <_> - 5 - - 3 4 4 1 - <_> - 2 - - 2 9 1 6 - <_> - 1 - - 0 1 4 1 - <_> - 5 - - 2 1 1 12 - <_> - 9 - - 4 9 1 4 - <_> - 2 - - 1 0 3 11 - <_> - 5 - - 2 11 1 2 - <_> - 5 - - 2 2 1 3 - <_> - 7 - - 6 11 1 3 - <_> - 7 - - 4 8 1 1 - <_> - 0 - - 4 7 2 4 - <_> - 0 - - 2 3 3 9 - <_> - 0 - - 0 10 1 2 - <_> - 1 - - 2 2 2 2 - <_> - 3 - - 2 2 5 3 - <_> - 4 - - 3 10 2 5 - <_> - 0 - - 1 4 3 2 - <_> - 3 - - 4 12 2 1 - <_> - 2 - - 3 0 4 2 - <_> - 5 - - 4 7 1 1 - <_> - 0 - - 3 4 2 2 - <_> - 5 - - 3 4 3 11 - <_> - 4 - - 2 10 4 3 - <_> - 2 - - 3 1 2 14 - <_> - 5 - - 3 0 4 10 - <_> - 4 - - 3 1 2 2 - <_> - 9 - - 6 0 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 3 0 2 1 - <_> - 8 - - 1 0 6 5 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 2 14 1 1 - <_> - 1 - - 1 10 1 3 - <_> - 7 - - 3 2 2 9 - <_> - 3 - - 2 2 1 13 - <_> - 3 - - 3 2 1 3 - <_> - 4 - - 0 1 6 13 - <_> - 4 - - 2 4 4 5 - <_> - 1 - - 1 8 2 3 - <_> - 0 - - 3 9 3 2 - <_> - 8 - - 1 2 1 4 - <_> - 0 - - 3 7 2 1 - <_> - 3 - - 3 14 4 1 - <_> - 0 - - 3 2 2 3 - <_> - 8 - - 3 6 4 1 - <_> - 4 - - 3 10 3 3 - <_> - 7 - - 0 0 6 1 - <_> - 3 - - 1 1 3 11 - <_> - 2 - - 2 11 2 3 - <_> - 1 - - 0 13 2 2 - <_> - 2 - - 1 9 1 1 - <_> - 2 - - 4 3 2 11 - <_> - 5 - - 0 3 5 3 - <_> - 7 - - 1 13 4 2 - <_> - 0 - - 3 0 4 9 - <_> - 9 - - 0 3 5 1 - <_> - 7 - - 4 8 1 1 - <_> - 9 - - 2 4 2 1 - <_> - 9 - - 1 1 4 5 - <_> - 8 - - 3 3 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 2 7 3 1 - <_> - 1 - - 2 5 4 1 - <_> - 8 - - 2 14 4 1 - <_> - 1 - - 3 1 2 3 - <_> - 8 - - 2 0 1 4 - <_> - 4 - - 1 0 6 1 - <_> - 1 - - 1 3 2 10 - <_> - 4 - - 2 5 1 3 - <_> - 0 - - 4 3 3 7 - <_> - 7 - - 3 2 1 2 - <_> - 4 - - 2 0 4 3 - <_> - 1 - - 1 10 5 3 - <_> - 5 - - 1 14 6 1 - <_> - 7 - - 5 14 2 1 - <_> - 3 - - 3 11 2 3 - <_> - 3 - - 3 0 2 5 - <_> - 9 - - 3 2 1 11 - <_> - 8 - - 3 3 1 1 - <_> - 0 - - 3 4 2 1 - <_> - 8 - - 1 2 3 3 - <_> - 0 - - 6 14 1 1 - <_> - 4 - - 3 1 2 4 - <_> - 8 - - 4 2 1 2 - <_> - 0 - - 0 2 5 3 - <_> - 3 - - 1 0 2 6 - <_> - 0 - - 2 0 4 2 - <_> - 2 - - 1 3 2 12 - <_> - 2 - - 4 4 2 2 - <_> - 2 - - 5 4 1 1 - <_> - 3 - - 3 8 2 2 - <_> - 0 - - 2 9 5 2 - <_> - 1 - - 3 6 2 8 - <_> - 9 - - 4 9 1 5 - <_> - 7 - - 3 12 1 2 - <_> - 4 - - 0 5 6 6 - <_> - 4 - - 3 1 2 10 - <_> - 2 - - 3 5 1 2 - <_> - 5 - - 1 11 6 3 - <_> - 8 - - 3 3 3 1 - <_> - 1 - - 1 3 6 2 - <_> - 3 - - 0 14 4 1 - <_> - 5 - - 3 2 2 2 - <_> - 2 - - 4 2 2 3 - <_> - 5 - - 1 0 2 1 - <_> - 7 - - 3 6 2 1 - <_> - 4 - - 2 5 4 7 - <_> - 0 - - 0 2 5 3 - <_> - 0 - - 2 12 4 2 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 1 14 5 1 - <_> - 4 - - 1 1 3 5 - <_> - 4 - - 3 2 1 11 - <_> - 1 - - 3 2 2 5 - <_> - 2 - - 5 10 2 2 - <_> - 2 - - 2 6 1 6 - <_> - 9 - - 5 5 1 2 - <_> - 1 - - 3 3 3 1 - <_> - 4 - - 2 1 3 2 - <_> - 9 - - 0 0 7 1 - <_> - 1 - - 1 1 2 1 - <_> - 0 - - 3 11 3 2 - <_> - 8 - - 6 9 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 1 0 6 2 - <_> - 5 - - 4 4 1 10 - <_> - 4 - - 3 11 2 2 - <_> - 4 - - 2 11 3 3 - <_> - 2 - - 0 9 1 5 - <_> - 1 - - 3 14 2 1 - <_> - 4 - - 2 9 4 5 - <_> - 1 - - 6 8 1 4 - <_> - 4 - - 5 5 2 1 - <_> - 5 - - 1 3 6 4 - <_> - 2 - - 1 1 2 3 - <_> - 0 - - 4 4 1 1 - <_> - 0 - - 4 6 2 8 - <_> - 1 - - 3 4 4 1 - <_> - 1 - - 4 0 3 1 - <_> - 4 - - 4 0 3 11 - <_> - 8 - - 3 3 1 2 - <_> - 9 - - 4 4 1 4 - <_> - 9 - - 5 6 1 6 - <_> - 0 - - 0 14 3 1 - <_> - 2 - - 2 10 3 4 - <_> - 1 - - 1 8 6 3 - <_> - 9 - - 2 10 1 1 - <_> - 1 - - 5 1 2 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 3 1 4 4 - <_> - 1 - - 3 5 1 9 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 0 8 6 7 - <_> - 8 - - 2 0 3 1 - <_> - 7 - - 0 0 7 11 - <_> - 2 - - 4 8 2 1 - <_> - 0 - - 2 3 4 7 - <_> - 1 - - 3 6 2 1 - <_> - 5 - - 3 14 4 1 - <_> - 7 - - 5 14 2 1 - <_> - 3 - - 5 1 2 8 - <_> - 9 - - 2 0 3 4 - <_> - 9 - - 4 6 1 4 - <_> - 0 - - 3 2 1 6 - <_> - 8 - - 3 7 2 2 - <_> - 4 - - 0 14 4 1 - <_> - 2 - - 2 11 4 3 - <_> - 2 - - 2 3 4 11 - <_> - 4 - - 1 0 6 14 - <_> - 1 - - 2 2 3 2 - <_> - 1 - - 5 5 1 4 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 3 10 1 3 - <_> - 0 - - 2 10 3 4 - <_> - 9 - - 3 1 2 11 - <_> - 9 - - 5 6 1 2 - <_> - 9 - - 0 0 7 6 - <_> - 0 - - 2 10 4 3 - <_> - 9 - - 1 2 1 2 - <_> - 3 - - 5 10 1 5 - <_> - 2 - - 2 2 3 13 - <_> - 0 - - 2 4 1 1 - <_> - 2 - - 2 5 3 1 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 1 5 5 3 - <_> - 9 - - 3 6 1 2 - <_> - 2 - - 2 14 1 1 - <_> - 3 - - 3 3 3 3 - <_> - 7 - - 4 5 1 1 - <_> - 4 - - 4 9 1 3 - <_> - 0 - - 2 5 3 4 - <_> - 4 - - 0 10 7 2 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 1 1 4 2 - <_> - 8 - - 3 13 2 2 - <_> - 3 - - 2 1 3 12 - <_> - 7 - - 6 1 1 4 - <_> - 5 - - 4 0 1 3 - <_> - 0 - - 1 0 1 1 - <_> - 1 - - 3 5 1 1 - <_> - 3 - - 1 0 2 1 - <_> - 4 - - 3 0 1 15 - <_> - 2 - - 0 14 7 1 - <_> - 4 - - 2 2 1 13 - <_> - 5 - - 0 10 7 4 - <_> - 2 - - 3 10 1 5 - <_> - 5 - - 2 8 2 1 - <_> - 3 - - 2 2 2 3 - <_> - 2 - - 2 12 1 2 - <_> - 1 - - 1 5 1 9 - <_> - 3 - - 0 14 6 1 - <_> - 2 - - 3 4 1 1 - <_> - 0 - - 1 4 2 4 - <_> - 1 - - 3 10 2 1 - <_> - 4 - - 2 7 2 5 - <_> - 1 - - 0 10 1 4 - <_> - 8 - - 5 10 1 1 - <_> - 8 - - 5 4 2 10 - <_> - 1 - - 2 14 4 1 - <_> - 4 - - 3 0 2 15 - <_> - 7 - - 2 13 4 2 - <_> - 9 - - 2 7 3 2 - <_> - 4 - - 3 9 3 2 - <_> - 0 - - 4 7 2 5 - <_> - 1 - - 5 8 2 3 - <_> - 1 - - 3 2 3 12 - <_> - 0 - - 3 5 2 3 - <_> - 2 - - 4 0 2 14 - <_> - 5 - - 1 14 4 1 - <_> - 4 - - 5 6 2 9 - <_> - 0 - - 2 4 1 1 - <_> - 5 - - 5 4 1 5 - <_> - 0 - - 4 13 3 1 - <_> - 5 - - 1 3 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 2 4 3 2 - <_> - 8 - - 3 1 2 1 - <_> - 7 - - 3 3 1 3 - <_> - 4 - - 5 6 1 3 - <_> - 0 - - 2 3 3 10 - <_> - 8 - - 2 5 2 1 - <_> - 9 - - 2 3 3 2 - <_> - 3 - - 0 9 6 5 - <_> - 0 - - 1 14 6 1 - <_> - 4 - - 1 14 6 1 - <_> - 9 - - 0 1 2 1 - <_> - 3 - - 1 0 3 7 - <_> - 7 - - 1 0 4 1 - <_> - 9 - - 4 8 1 1 - <_> - 9 - - 3 1 3 3 - <_> - 3 - - 0 1 4 1 - <_> - 9 - - 4 5 1 1 - <_> - 4 - - 0 1 5 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 3 0 2 3 - <_> - 4 - - 1 5 6 6 - <_> - 5 - - 3 0 2 5 - <_> - 8 - - 2 6 3 1 - <_> - 5 - - 0 10 2 1 - <_> - 2 - - 3 10 2 4 - <_> - 3 - - 2 4 1 9 - <_> - 0 - - 4 4 2 2 - <_> - 0 - - 2 8 4 6 - <_> - 0 - - 1 0 1 1 - <_> - 5 - - 2 14 5 1 - <_> - 1 - - 1 10 5 1 - <_> - 9 - - 3 9 2 4 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 5 7 2 3 - <_> - 8 - - 0 14 4 1 - <_> - 5 - - 4 3 3 4 - <_> - 2 - - 4 4 3 1 - <_> - 8 - - 3 3 2 11 - <_> - 0 - - 4 9 1 3 - <_> - 9 - - 4 4 2 1 - <_> - 3 - - 4 9 3 1 - <_> - 4 - - 0 5 1 10 - <_> - 1 - - 0 3 2 11 - <_> - 5 - - 4 10 2 4 - <_> - 5 - - 4 7 1 1 - <_> - 2 - - 2 9 3 5 - <_> - 9 - - 5 0 1 8 - <_> - 0 - - 4 3 2 1 - <_> - 1 - - 4 5 2 1 - <_> - 0 - - 1 1 6 2 - <_> - 7 - - 0 8 5 3 - <_> - 1 - - 1 13 5 1 - <_> - 4 - - 6 3 1 6 - <_> - 9 - - 4 5 1 4 - <_> - 9 - - 6 5 1 4 - <_> - 0 - - 0 11 2 1 - <_> - 2 - - 3 3 3 3 - <_> - 5 - - 3 2 2 2 - <_> - 3 - - 0 7 6 8 - <_> - 2 - - 3 5 2 1 - <_> - 9 - - 3 3 3 1 - <_> - 0 - - 4 0 2 1 - <_> - 5 - - 5 1 1 8 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 2 3 1 9 - <_> - 2 - - 2 0 4 2 - <_> - 2 - - 4 1 3 5 - <_> - 1 - - 0 4 7 1 - <_> - 0 - - 3 5 1 4 - <_> - 0 - - 3 13 4 1 - <_> - 2 - - 2 9 1 6 - <_> - 3 - - 1 14 4 1 - <_> - 2 - - 0 13 4 1 - <_> - 0 - - 3 8 2 5 - <_> - 4 - - 0 10 7 1 - <_> - 1 - - 1 1 5 5 - <_> - 3 - - 2 11 3 3 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 4 6 2 7 - <_> - 2 - - 6 10 1 2 - <_> - 9 - - 3 9 1 2 - <_> - 9 - - 4 1 1 3 - <_> - 9 - - 3 4 1 5 - <_> - 4 - - 1 0 6 14 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 3 10 2 2 - <_> - 8 - - 1 0 5 1 - <_> - 8 - - 3 2 2 2 - <_> - 3 - - 1 2 4 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 3 13 3 2 - <_> - 5 - - 4 2 1 1 - <_> - 7 - - 2 14 1 1 - <_> - 4 - - 1 3 4 12 - <_> - 1 - - 4 5 1 9 - <_> - 0 - - 2 4 2 1 - <_> - 2 - - 1 0 4 14 - <_> - 0 - - 3 4 3 5 - <_> - 7 - - 2 4 2 5 - <_> - 8 - - 0 2 5 1 - <_> - 4 - - 3 2 2 9 - <_> - 3 - - 2 14 2 1 - <_> - 1 - - 6 0 1 15 - <_> - 3 - - 4 14 3 1 - <_> - 1 - - 3 5 1 2 - <_> - 4 - - 2 4 2 3 - <_> - 2 - - 5 4 2 7 - <_> - 4 - - 0 3 7 4 - <_> - 3 - - 2 3 4 6 - <_> - 9 - - 4 4 1 6 - <_> - 0 - - 3 10 4 2 - <_> - 4 - - 0 11 5 1 - <_> - 5 - - 0 14 2 1 - <_> - 2 - - 1 14 5 1 - <_> - 3 - - 3 12 1 2 - <_> - 4 - - 1 5 1 9 - <_> - 5 - - 2 9 1 4 - <_> - 5 - - 4 5 3 9 - <_> - 0 - - 2 4 2 8 - <_> - 0 - - 3 4 4 5 - <_> - 9 - - 5 14 2 1 - <_> - 2 - - 2 3 2 1 - <_> - 1 - - 1 13 4 1 - <_> - 3 - - 1 1 3 2 - <_> - 1 - - 4 10 2 1 - <_> - 0 - - 4 4 3 1 - <_> - 8 - - 4 0 1 8 - <_> - 3 - - 2 5 1 3 - <_> - 3 - - 0 8 2 3 - <_> - 0 - - 1 6 5 3 - <_> - 9 - - 1 9 1 1 - <_> - 5 - - 3 12 2 2 - <_> - 0 - - 1 0 1 2 - <_> - 5 - - 1 12 4 3 - <_> - 1 - - 6 1 1 14 - <_> - 8 - - 0 0 2 5 - <_> - 3 - - 0 10 7 4 - <_> - 7 - - 3 6 1 1 - <_> - 1 - - 3 4 2 1 - <_> - 0 - - 1 3 3 5 - <_> - 4 - - 3 0 3 15 - <_> - 1 - - 4 3 3 5 - <_> - 4 - - 6 4 1 1 - <_> - 5 - - 4 2 1 1 - <_> - 1 - - 3 1 2 3 - <_> - 3 - - 3 0 4 1 - <_> - 8 - - 3 5 2 2 - <_> - 0 - - 3 5 2 4 - <_> - 8 - - 2 8 4 7 - <_> - 5 - - 4 5 2 8 - <_> - 1 - - 3 3 3 10 - <_> - 3 - - 3 1 3 3 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 1 3 3 1 - <_> - 4 - - 2 5 3 5 - <_> - 5 - - 2 14 4 1 - <_> - 5 - - 3 12 1 2 - <_> - 0 - - 5 11 1 2 - <_> - 1 - - 3 13 2 2 - <_> - 4 - - 3 9 4 2 - <_> - 1 - - 3 0 4 1 - <_> - 1 - - 2 4 5 5 - <_> - 0 - - 2 4 1 7 - <_> - 9 - - 3 10 3 3 - <_> - 4 - - 0 5 7 9 - <_> - 0 - - 4 3 2 11 - <_> - 1 - - 3 4 1 4 - <_> - 3 - - 5 10 2 3 - <_> - 4 - - 3 0 4 1 - <_> - 0 - - 5 11 1 4 - <_> - 0 - - 2 2 5 2 - <_> - 2 - - 3 5 2 3 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 2 1 11 - <_> - 2 - - 2 9 2 5 - <_> - 8 - - 3 8 1 1 - <_> - 0 - - 2 0 3 3 - <_> - 5 - - 5 11 1 3 - <_> - 2 - - 0 6 5 2 - <_> - 5 - - 0 2 3 8 - <_> - 1 - - 4 12 1 2 - <_> - 4 - - 0 14 2 1 - <_> - 2 - - 4 4 2 1 - <_> - 8 - - 3 0 2 2 - <_> - 2 - - 0 2 7 7 - <_> - 7 - - 3 6 2 2 - <_> - 7 - - 0 0 4 6 - <_> - 4 - - 1 6 4 8 - <_> - 4 - - 3 11 2 2 - <_> - 3 - - 2 1 1 2 - <_> - 7 - - 2 14 4 1 - <_> - 8 - - 2 3 4 1 - <_> - 2 - - 1 0 6 2 - <_> - 8 - - 2 9 3 3 - <_> - 4 - - 4 3 2 4 - <_> - 5 - - 4 14 3 1 - <_> - 2 - - 3 12 3 1 - <_> - 0 - - 3 10 3 4 - <_> - 3 - - 5 4 2 4 - <_> - 2 - - 1 7 3 4 - <_> - 4 - - 1 6 2 2 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 0 1 3 10 - <_> - 4 - - 4 2 1 5 - <_> - 5 - - 2 0 4 3 - <_> - 4 - - 4 9 1 2 - <_> - 2 - - 2 2 3 12 - <_> - 4 - - 2 0 1 9 - <_> - 2 - - 0 14 7 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 2 5 2 - <_> - 1 - - 3 5 2 1 - <_> - 9 - - 1 8 6 3 - <_> - 1 - - 0 6 4 7 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 4 0 3 3 - <_> - 9 - - 3 0 2 1 - <_> - 4 - - 3 3 2 11 - <_> - 9 - - 1 3 2 9 - <_> - 2 - - 2 12 2 2 - <_> - 0 - - 3 2 3 1 - <_> - 3 - - 1 14 4 1 - <_> - 3 - - 0 12 4 2 - <_> - 1 - - 2 0 2 10 - <_> - 5 - - 0 5 2 8 - <_> - 7 - - 1 1 1 4 - <_> - 3 - - 1 2 3 13 - <_> - 4 - - 2 1 2 11 - <_> - 5 - - 1 2 4 5 - <_> - 2 - - 3 4 2 1 - <_> - 7 - - 3 8 2 1 - <_> - 7 - - 0 0 3 4 - <_> - 2 - - 0 0 5 2 - <_> - 3 - - 3 0 4 6 - <_> - 7 - - 3 1 4 1 - <_> - 3 - - 3 7 1 1 - <_> - 7 - - 0 3 3 12 - <_> - 5 - - 3 7 2 2 - <_> - 5 - - 1 1 6 11 - <_> - 8 - - 3 5 1 3 - <_> - 2 - - 4 5 1 4 - <_> - 8 - - 6 8 1 2 - <_> - 2 - - 1 6 6 2 - <_> - 3 - - 0 12 1 1 - <_> - 4 - - 2 5 5 7 - <_> - 0 - - 1 4 2 2 - <_> - 8 - - 2 14 1 1 - <_> - 4 - - 1 3 4 5 - <_> - 4 - - 3 2 1 10 - <_> - 1 - - 2 4 5 1 - <_> - 4 - - 3 14 2 1 - <_> - 2 - - 0 11 1 2 - <_> - 0 - - 0 1 5 12 - <_> - 4 - - 3 6 2 2 - <_> - 1 - - 3 5 2 2 - <_> - 7 - - 3 4 2 8 - <_> - 1 - - 2 0 4 2 - <_> - 7 - - 0 0 1 11 - <_> - 1 - - 2 5 3 8 - <_> - 4 - - 4 1 2 5 - <_> - 9 - - 3 5 1 3 - <_> - 5 - - 2 7 5 4 - <_> - 9 - - 3 8 2 4 - <_> - 8 - - 3 3 2 1 - <_> - 0 - - 4 4 1 2 - <_> - 4 - - 3 3 4 12 - <_> - 1 - - 2 14 3 1 - <_> - 2 - - 2 11 3 1 - <_> - 5 - - 6 2 1 13 - <_> - 4 - - 0 5 4 9 - <_> - 1 - - 3 3 2 3 - <_> - 3 - - 0 0 6 2 - <_> - 8 - - 6 10 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 0 14 7 1 - <_> - 0 - - 3 9 2 5 - <_> - 9 - - 4 4 1 2 - <_> - 5 - - 3 14 4 1 - <_> - 5 - - 4 4 3 3 - <_> - 2 - - 5 4 2 2 - <_> - 4 - - 6 7 1 8 - <_> - 5 - - 4 0 2 15 - <_> - 3 - - 2 0 3 11 - <_> - 3 - - 2 0 2 12 - <_> - 5 - - 0 9 4 1 - <_> - 2 - - 2 6 3 7 - <_> - 8 - - 3 2 1 2 - <_> - 5 - - 3 1 4 1 - <_> - 2 - - 4 2 2 3 - <_> - 4 - - 6 3 1 2 - <_> - 2 - - 3 5 2 3 - <_> - 9 - - 3 3 2 2 - <_> - 9 - - 0 13 1 2 - <_> - 5 - - 1 5 2 5 - <_> - 0 - - 4 0 2 2 - <_> - 2 - - 2 3 2 9 - <_> - 5 - - 3 2 3 2 - <_> - 2 - - 4 2 2 1 - <_> - 4 - - 2 1 3 10 - <_> - 9 - - 2 3 5 4 - <_> - 4 - - 3 0 3 11 - <_> - 3 - - 2 4 1 1 - <_> - 3 - - 0 1 1 1 - <_> - 5 - - 5 3 1 5 - <_> - 3 - - 1 14 5 1 - <_> - 2 - - 1 13 3 1 - <_> - 1 - - 0 8 7 3 - <_> - 2 - - 1 14 6 1 - <_> - 1 - - 0 5 4 8 - <_> - 1 - - 1 10 6 1 - <_> - 0 - - 1 11 6 3 - <_> - 0 - - 1 10 1 5 - <_> - 3 - - 4 3 2 9 - <_> - 4 - - 1 14 6 1 - <_> - 0 - - 0 0 4 5 - <_> - 1 - - 3 2 2 12 - <_> - 0 - - 0 14 6 1 - <_> - 5 - - 3 13 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 4 1 4 - <_> - 9 - - 0 1 7 12 - <_> - 2 - - 3 13 2 1 - <_> - 1 - - 2 13 4 2 - <_> - 5 - - 4 5 1 8 - <_> - 1 - - 3 10 1 3 - <_> - 5 - - 4 1 2 2 - <_> - 1 - - 3 2 2 2 - <_> - 5 - - 0 10 4 2 - <_> - 1 - - 4 0 3 1 - <_> - 8 - - 1 3 6 7 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 4 4 1 1 - <_> - 9 - - 2 0 2 4 - <_> - 9 - - 2 3 1 2 - <_> - 1 - - 4 5 2 1 - <_> - 0 - - 2 3 1 9 - <_> - 2 - - 5 2 2 8 - <_> - 4 - - 2 0 5 15 - <_> - 4 - - 3 1 3 2 - <_> - 0 - - 3 3 1 3 - <_> - 2 - - 0 14 7 1 - <_> - 2 - - 0 10 6 4 - <_> - 3 - - 1 0 6 1 - <_> - 5 - - 4 5 1 1 - <_> - 1 - - 3 5 4 5 - <_> - 5 - - 2 14 4 1 - <_> - 4 - - 1 13 6 1 - <_> - 1 - - 1 14 4 1 - <_> - 0 - - 4 13 3 1 - <_> - 4 - - 3 10 4 2 - <_> - 4 - - 2 4 2 6 - <_> - 3 - - 1 3 2 9 - <_> - 7 - - 0 0 2 10 - <_> - 3 - - 0 7 1 3 - <_> - 2 - - 4 10 1 3 - <_> - 8 - - 3 3 1 1 - <_> - 2 - - 2 1 5 2 - <_> - 8 - - 0 14 7 1 - <_> - 5 - - 4 1 3 6 - <_> - 2 - - 1 4 5 1 - <_> - 0 - - 1 0 1 1 - <_> - 9 - - 2 9 4 3 - <_> - 8 - - 4 1 2 10 - <_> - 5 - - 6 11 1 3 - <_> - 3 - - 3 1 1 4 - <_> - 8 - - 1 7 6 7 - <_> - 0 - - 3 4 1 5 - <_> - 0 - - 4 6 2 8 - <_> - 5 - - 1 13 1 2 - <_> - 1 - - 2 0 1 12 - <_> - 3 - - 0 14 4 1 - <_> - 3 - - 2 12 3 2 - <_> - 3 - - 3 7 2 1 - <_> - 1 - - 2 2 3 2 - <_> - 7 - - 3 8 2 4 - <_> - 4 - - 1 1 5 6 - <_> - 3 - - 1 5 6 6 - <_> - 7 - - 0 2 2 1 - <_> - 8 - - 2 8 1 3 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 1 4 1 - <_> - 8 - - 4 0 1 1 - <_> - 2 - - 0 13 2 1 - <_> - 4 - - 4 6 3 9 - <_> - 3 - - 2 3 1 9 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 4 4 1 3 - <_> - 9 - - 4 4 1 5 - <_> - 1 - - 2 14 4 1 - <_> - 0 - - 3 3 2 10 - <_> - 5 - - 1 5 6 2 - <_> - 8 - - 2 3 4 1 - <_> - 5 - - 5 8 1 3 - <_> - 0 - - 3 0 3 8 - <_> - 3 - - 5 11 1 2 - <_> - 1 - - 1 6 5 3 - <_> - 4 - - 2 6 1 2 - <_> - 2 - - 2 10 3 4 - <_> - 9 - - 6 3 1 1 - <_> - 4 - - 3 9 2 2 - <_> - 3 - - 3 2 1 2 - <_> - 1 - - 1 4 5 1 - <_> - 3 - - 1 0 4 2 - <_> - 7 - - 0 5 1 1 - <_> - 7 - - 5 13 2 1 - <_> - 5 - - 5 4 1 9 - <_> - 1 - - 3 10 2 3 - <_> - 2 - - 2 14 5 1 - <_> - 9 - - 4 10 2 1 - <_> - 0 - - 0 1 2 10 - <_> - 2 - - 2 6 1 1 - <_> - 2 - - 4 3 2 4 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 2 1 1 4 - <_> - 1 - - 2 6 2 5 - <_> - 4 - - 0 14 7 1 - <_> - 0 - - 4 10 2 4 - <_> - 0 - - 5 14 2 1 - <_> - 0 - - 3 4 1 11 - <_> - 7 - - 2 4 2 3 - <_> - 7 - - 0 14 5 1 - <_> - 4 - - 2 7 4 4 - <_> - 2 - - 1 8 3 3 - <_> - 8 - - 3 3 3 1 - <_> - 8 - - 1 1 5 1 - <_> - 7 - - 3 1 1 8 - <_> - 0 - - 6 7 1 5 - <_> - 1 - - 1 3 6 11 - <_> - 3 - - 3 2 2 1 - <_> - 4 - - 1 9 1 2 - <_> - 1 - - 3 14 2 1 - <_> - 9 - - 4 9 1 3 - <_> - 4 - - 2 3 5 2 - <_> - 5 - - 0 10 2 5 - <_> - 7 - - 2 13 1 2 - <_> - 2 - - 1 5 5 2 - <_> - 0 - - 2 3 4 9 - <_> - 7 - - 3 7 1 2 - <_> - 4 - - 2 3 2 3 - <_> - 3 - - 0 12 1 2 - <_> - 2 - - 1 6 5 4 - <_> - 1 - - 3 3 2 3 - <_> - 5 - - 4 7 1 2 - <_> - 0 - - 4 9 3 5 - <_> - 2 - - 2 8 1 1 - <_> - 4 - - 3 9 3 5 - <_> - 5 - - 3 10 2 2 - <_> - 1 - - 3 10 2 3 - <_> - 5 - - 0 14 6 1 - <_> - 4 - - 1 5 2 3 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 1 5 4 2 - <_> - 4 - - 0 2 5 6 - <_> - 1 - - 1 12 5 1 - <_> - 7 - - 6 11 1 4 - <_> - 2 - - 1 11 1 4 - <_> - 9 - - 3 7 1 2 - <_> - 1 - - 1 13 5 1 - <_> - 3 - - 5 4 2 1 - <_> - 8 - - 3 2 2 2 - <_> - 2 - - 2 9 3 5 - <_> - 5 - - 1 6 2 9 - <_> - 5 - - 2 9 2 2 - <_> - 5 - - 3 1 2 11 - <_> - 7 - - 2 9 2 3 - <_> - 5 - - 2 1 3 1 - <_> - 3 - - 2 14 2 1 - <_> - 4 - - 0 5 1 2 - <_> - 2 - - 5 4 1 1 - <_> - 1 - - 3 2 2 1 - <_> - 1 - - 0 14 1 1 - <_> - 4 - - 0 12 6 2 - <_> - 8 - - 3 11 3 2 - <_> - 8 - - 3 2 2 2 - <_> - 5 - - 4 2 1 1 - <_> - 0 - - 2 10 4 3 - <_> - 9 - - 6 3 1 1 - <_> - 2 - - 5 10 2 2 - <_> - 4 - - 3 1 3 5 - <_> - 1 - - 2 3 3 2 - <_> - 4 - - 2 3 4 9 - <_> - 1 - - 3 5 2 1 - <_> - 0 - - 3 5 2 3 - <_> - 4 - - 0 0 7 1 - <_> - 4 - - 3 7 2 2 - <_> - 5 - - 1 14 6 1 - <_> - 1 - - 3 6 2 4 - <_> - 3 - - 2 1 3 13 - <_> - 4 - - 1 3 3 10 - <_> - 7 - - 0 0 2 10 - <_> - 7 - - 2 14 4 1 - <_> - 0 - - 5 0 2 3 - <_> - 7 - - 4 13 2 2 - <_> - 5 - - 0 1 6 5 - <_> - 7 - - 0 2 5 2 - <_> - 3 - - 4 3 2 9 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 5 1 9 - <_> - 8 - - 5 3 2 1 - <_> - 3 - - 4 3 3 7 - <_> - 5 - - 0 3 4 10 - <_> - 2 - - 3 12 2 3 - <_> - 1 - - 1 6 3 8 - <_> - 3 - - 3 12 3 3 - <_> - 2 - - 1 14 2 1 - <_> - 2 - - 0 2 4 11 - <_> - 4 - - 2 11 3 2 - <_> - 2 - - 3 4 2 1 - <_> - 2 - - 4 3 2 2 - <_> - 0 - - 3 11 2 3 - <_> - 2 - - 0 2 7 5 - <_> - 4 - - 3 0 2 3 - <_> - 7 - - 0 0 7 2 - <_> - 5 - - 4 14 3 1 - <_> - 1 - - 3 10 2 3 - <_> - 4 - - 2 0 3 12 - <_> - 5 - - 5 10 1 5 - <_> - 2 - - 2 3 2 1 - <_> - 4 - - 2 5 4 3 - <_> - 9 - - 3 1 1 3 - <_> - 8 - - 3 5 2 1 - <_> - 9 - - 3 3 2 3 - <_> - 8 - - 3 13 2 2 - <_> - 9 - - 0 1 3 2 - <_> - 8 - - 3 11 2 2 - <_> - 9 - - 1 6 6 4 - <_> - 7 - - 2 13 2 2 - <_> - 2 - - 3 10 1 5 - <_> - 7 - - 3 9 2 1 - <_> - 0 - - 2 9 4 5 - <_> - 1 - - 3 7 2 1 - <_> - 3 - - 4 9 2 1 - <_> - 0 - - 1 13 1 2 - <_> - 0 - - 2 0 3 5 - <_> - 0 - - 0 0 3 3 - <_> - 0 - - 4 5 1 1 - <_> - 0 - - 4 3 2 11 - <_> - 3 - - 0 7 2 2 - <_> - 5 - - 5 14 1 1 - <_> - 4 - - 4 2 1 10 - <_> - 7 - - 3 9 2 2 - <_> - 2 - - 2 11 5 1 - <_> - 1 - - 0 2 4 8 - <_> - 1 - - 2 2 2 1 - <_> - 4 - - 0 10 7 5 - <_> - 4 - - 0 6 4 8 - <_> - 0 - - 2 13 5 1 - <_> - 9 - - 1 8 4 1 - <_> - 9 - - 1 2 6 3 - <_> - 7 - - 2 7 4 2 - <_> - 1 - - 3 5 2 2 - <_> - 3 - - 3 7 2 2 - <_> - 8 - - 0 8 2 6 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 1 4 4 2 - <_> - 8 - - 2 1 4 1 - <_> - 1 - - 2 14 3 1 - <_> - 0 - - 2 10 2 1 - <_> - 4 - - 0 14 2 1 - <_> - 4 - - 0 5 6 9 - <_> - 0 - - 2 3 1 5 - <_> - 1 - - 1 5 5 4 - <_> - 5 - - 5 6 1 9 - <_> - 9 - - 0 9 2 1 - <_> - 5 - - 2 14 5 1 - <_> - 2 - - 1 10 4 4 - <_> - 1 - - 1 10 4 3 - <_> - 9 - - 5 9 2 1 - <_> - 9 - - 3 1 2 2 - <_> - 4 - - 3 9 3 2 - <_> - 9 - - 3 4 1 2 - <_> - 4 - - 3 9 3 6 - <_> - 4 - - 3 1 2 9 - <_> - 4 - - 3 7 4 7 - <_> - 1 - - 4 0 2 2 - <_> - 2 - - 6 13 1 2 - <_> - 8 - - 3 3 1 2 - <_> - 1 - - 0 13 7 1 - <_> - 0 - - 4 9 1 4 - <_> - 1 - - 3 5 2 2 - <_> - 5 - - 4 2 2 2 - <_> - 2 - - 4 2 2 3 - <_> - 5 - - 1 0 1 1 - <_> - 7 - - 3 6 1 1 - <_> - 3 - - 0 5 5 4 - <_> - 1 - - 2 2 3 3 - <_> - 3 - - 0 14 7 1 - <_> - 3 - - 2 12 1 1 - <_> - 4 - - 1 9 6 3 - <_> - 9 - - 3 5 1 5 - <_> - 9 - - 1 4 2 11 - <_> - 9 - - 2 10 1 1 - <_> - 9 - - 5 14 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 2 3 9 - <_> - 8 - - 0 0 7 1 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 5 1 1 - <_> - 2 - - 0 14 6 1 - <_> - 2 - - 2 11 3 3 - <_> - 5 - - 0 6 1 2 - <_> - 4 - - 1 14 3 1 - <_> - 3 - - 1 5 6 2 - <_> - 4 - - 4 9 1 2 - <_> - 9 - - 4 4 2 8 - <_> - 1 - - 0 5 4 10 - <_> - 8 - - 2 6 5 8 - <_> - 8 - - 3 14 1 1 - <_> - 9 - - 0 0 1 2 - <_> - 8 - - 3 12 1 1 - <_> - 1 - - 2 12 2 1 - <_> - 5 - - 0 13 5 2 - <_> - 2 - - 3 11 3 3 - <_> - 2 - - 0 8 6 6 - <_> - 4 - - 3 8 3 2 - <_> - 0 - - 0 10 3 3 - <_> - 7 - - 0 0 1 13 - <_> - 7 - - 5 14 2 1 - <_> - 1 - - 0 8 3 6 - <_> - 1 - - 2 6 4 6 - <_> - 5 - - 1 0 5 2 - <_> - 4 - - 3 8 2 4 - <_> - 5 - - 1 1 5 5 - <_> - 8 - - 4 6 1 5 - <_> - 0 - - 5 3 2 12 - <_> - 0 - - 3 12 4 2 - <_> - 2 - - 4 5 1 7 - <_> - 5 - - 2 14 5 1 - <_> - 0 - - 3 1 2 3 - <_> - 2 - - 0 11 3 2 - <_> - 2 - - 3 1 2 1 - <_> - 0 - - 2 9 3 1 - <_> - 2 - - 2 8 2 6 - <_> - 8 - - 2 3 3 1 - <_> - 8 - - 5 9 1 2 - <_> - 3 - - 3 2 1 2 - <_> - 1 - - 0 0 5 5 - <_> - 5 - - 1 8 1 1 - <_> - 3 - - 6 12 1 2 - <_> - 5 - - 0 9 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 2 9 4 2 - <_> - 8 - - 3 2 2 4 - <_> - 0 - - 3 7 3 4 - <_> - 5 - - 2 4 1 7 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 3 3 3 1 - <_> - 2 - - 5 14 2 1 - <_> - 3 - - 0 0 5 4 - <_> - 1 - - 1 6 1 9 - <_> - 0 - - 3 6 2 2 - <_> - 4 - - 1 0 6 15 - <_> - 2 - - 2 3 4 10 - <_> - 4 - - 1 1 1 9 - <_> - 2 - - 3 7 2 1 - <_> - 4 - - 2 1 5 4 - <_> - 1 - - 3 2 2 2 - <_> - 4 - - 3 10 3 2 - <_> - 4 - - 2 5 4 3 - <_> - 2 - - 2 2 1 12 - <_> - 5 - - 2 4 3 4 - <_> - 3 - - 1 14 4 1 - <_> - 3 - - 1 12 4 2 - <_> - 8 - - 1 7 3 2 - <_> - 3 - - 2 2 3 1 - <_> - 1 - - 1 0 2 2 - <_> - 7 - - 4 4 2 7 - <_> - 2 - - 5 11 1 3 - <_> - 1 - - 1 2 3 9 - <_> - 3 - - 2 0 5 1 - <_> - 7 - - 2 14 1 1 - <_> - 8 - - 0 2 6 5 - <_> - 1 - - 3 2 2 13 - <_> - 1 - - 3 9 2 4 - <_> - 0 - - 1 1 2 8 - <_> - 9 - - 4 8 1 1 - <_> - 0 - - 3 7 2 1 - <_> - 3 - - 1 7 2 4 - <_> - 5 - - 5 4 1 5 - <_> - 1 - - 3 5 2 1 - <_> - 4 - - 3 4 2 4 - <_> - 7 - - 4 5 1 1 - <_> - 7 - - 3 4 1 1 - <_> - 7 - - 2 14 1 1 - <_> - 2 - - 3 2 4 3 - <_> - 2 - - 0 9 1 5 - <_> - 0 - - 4 1 1 2 - <_> - 0 - - 2 0 5 3 - <_> - 0 - - 2 3 4 11 - <_> - 4 - - 3 8 2 3 - <_> - 0 - - 1 11 6 1 - <_> - 4 - - 5 0 1 15 - <_> - 0 - - 4 4 1 1 - <_> - 2 - - 4 10 1 5 - <_> - 0 - - 3 13 4 1 - <_> - 5 - - 5 4 2 3 - <_> - 0 - - 4 14 2 1 - <_> - 2 - - 1 4 4 6 - <_> - 2 - - 3 8 2 6 - <_> - 2 - - 4 3 1 8 - <_> - 5 - - 2 12 1 1 - <_> - 0 - - 4 5 2 1 - <_> - 1 - - 2 2 3 6 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 3 1 11 - <_> - 8 - - 0 12 6 3 - <_> - 9 - - 1 1 1 14 - <_> - 0 - - 5 8 2 4 - <_> - 4 - - 4 0 2 14 - <_> - 4 - - 5 9 2 5 - <_> - 5 - - 1 0 1 1 - <_> - 7 - - 2 14 4 1 - <_> - 4 - - 3 10 2 3 - <_> - 5 - - 3 6 2 2 - <_> - 3 - - 3 2 1 2 - <_> - 8 - - 1 5 6 4 - <_> - 8 - - 2 6 5 1 - <_> - 8 - - 3 0 3 2 - <_> - 2 - - 4 8 2 1 - <_> - 5 - - 4 6 3 3 - <_> - 2 - - 2 14 3 1 - <_> - 0 - - 3 0 2 14 - <_> - 7 - - 6 6 1 1 - <_> - 5 - - 0 14 2 1 - <_> - 2 - - 3 1 2 1 - <_> - 1 - - 3 14 1 1 - <_> - 1 - - 2 3 3 1 - <_> - 9 - - 0 10 7 1 - <_> - 9 - - 1 1 6 2 - <_> - 0 - - 1 10 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 4 4 1 1 - <_> - 8 - - 5 3 1 2 - <_> - 4 - - 2 5 5 7 - <_> - 5 - - 4 6 2 7 - <_> - 1 - - 1 5 4 5 - <_> - 2 - - 2 2 4 11 - <_> - 4 - - 1 10 6 2 - <_> - 4 - - 2 3 4 8 - <_> - 2 - - 3 5 1 1 - <_> - 3 - - 1 5 4 2 - <_> - 8 - - 2 5 2 2 - <_> - 8 - - 1 13 4 2 - <_> - 2 - - 2 13 3 1 - <_> - 1 - - 0 7 6 1 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 1 12 6 2 - <_> - 3 - - 2 1 3 4 - <_> - 1 - - 3 5 3 1 - <_> - 8 - - 3 2 3 2 - <_> - 2 - - 1 0 1 13 - <_> - 1 - - 6 2 1 12 - <_> - 4 - - 0 1 3 1 - <_> - 7 - - 4 14 3 1 - <_> - 0 - - 3 4 1 4 - <_> - 2 - - 0 3 3 7 - <_> - 0 - - 3 1 3 1 - <_> - 0 - - 4 9 2 2 - <_> - 4 - - 3 10 1 3 - <_> - 2 - - 3 9 2 4 - <_> - 5 - - 1 13 6 2 - <_> - 0 - - 3 0 2 5 - <_> - 5 - - 0 4 3 4 - <_> - 8 - - 5 10 1 1 - <_> - 8 - - 3 0 4 15 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 3 2 4 - <_> - 0 - - 4 5 1 1 - <_> - 1 - - 0 4 7 1 - <_> - 2 - - 3 0 4 5 - <_> - 5 - - 4 3 1 2 - <_> - 9 - - 1 14 3 1 - <_> - 7 - - 0 1 1 9 - <_> - 0 - - 2 10 5 4 - <_> - 2 - - 3 9 3 1 - <_> - 3 - - 5 11 1 1 - <_> - 4 - - 1 13 6 1 - <_> - 4 - - 0 1 7 1 - <_> - 4 - - 4 3 3 12 - <_> - 0 - - 2 4 2 1 - <_> - 2 - - 4 10 1 4 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 1 9 3 4 - <_> - 4 - - 3 1 4 4 - <_> - 9 - - 4 9 1 1 - <_> - 9 - - 3 3 3 1 - <_> - 2 - - 0 1 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 3 - - 4 8 1 1 - <_> - 8 - - 4 4 1 1 - <_> - 1 - - 3 14 2 1 - <_> - 1 - - 0 5 1 10 - <_> - 4 - - 4 2 1 4 - <_> - 4 - - 3 3 3 3 - <_> - 5 - - 4 14 3 1 - <_> - 7 - - 2 14 4 1 - <_> - 5 - - 0 3 3 5 - <_> - 4 - - 2 4 5 1 - <_> - 9 - - 3 11 2 3 - <_> - 2 - - 2 11 3 2 - <_> - 1 - - 1 7 1 1 - <_> - 0 - - 0 10 1 5 - <_> - 4 - - 0 5 5 10 - <_> - 1 - - 0 6 4 8 - <_> - 1 - - 1 3 2 7 - <_> - 0 - - 1 10 5 4 - <_> - 3 - - 5 2 2 6 - <_> - 3 - - 2 0 4 1 - <_> - 5 - - 5 2 1 4 - <_> - 4 - - 6 8 1 4 - <_> - 3 - - 3 2 1 2 - <_> - 3 - - 0 14 7 1 - <_> - 0 - - 0 0 6 2 - <_> - 1 - - 3 0 2 11 - <_> - 1 - - 2 6 1 1 - <_> - 2 - - 0 1 6 12 - <_> - 0 - - 1 6 3 2 - <_> - 2 - - 2 4 3 3 - <_> - 9 - - 1 3 5 2 - <_> - 4 - - 3 2 2 8 - <_> - 8 - - 4 3 1 1 - <_> - 4 - - 2 10 3 1 - <_> - 4 - - 2 4 4 11 - <_> - 3 - - 2 2 3 12 - <_> - 7 - - 4 2 2 7 - <_> - 1 - - 2 3 2 12 - <_> - 1 - - 4 0 2 2 - <_> - 5 - - 1 5 6 5 - <_> - 5 - - 1 8 1 1 - <_> - 5 - - 4 7 1 1 - <_> - 9 - - 4 6 1 2 - <_> - 1 - - 4 0 1 1 - <_> - 0 - - 5 14 2 1 - <_> - 0 - - 4 13 3 2 - <_> - 5 - - 4 2 1 13 - <_> - 1 - - 3 2 2 3 - <_> - 3 - - 1 4 2 2 - <_> - 4 - - 3 3 2 1 - <_> - 0 - - 2 5 2 4 - <_> - 2 - - 1 5 2 7 - <_> - 2 - - 5 4 1 1 - <_> - 2 - - 0 14 6 1 - <_> - 7 - - 5 13 2 1 - <_> - 7 - - 3 7 3 2 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 2 7 3 8 - <_> - 2 - - 1 13 3 1 - <_> - 7 - - 2 6 4 6 - <_> - 3 - - 3 1 4 7 - <_> - 0 - - 2 10 3 2 - <_> - 1 - - 3 5 2 2 - <_> - 3 - - 4 7 1 1 - <_> - 7 - - 2 5 3 10 - <_> - 2 - - 4 2 1 3 - <_> - 2 - - 1 2 3 2 - <_> - 5 - - 3 0 4 2 - <_> - 4 - - 2 10 4 5 - <_> - 7 - - 4 9 2 3 - <_> - 0 - - 2 3 2 10 - <_> - 9 - - 3 4 1 7 - <_> - 8 - - 2 0 4 13 - <_> - 4 - - 2 2 4 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 3 12 2 1 - <_> - 3 - - 0 13 2 2 - <_> - 0 - - 3 10 4 4 - <_> - 3 - - 2 4 1 1 - <_> - 4 - - 2 0 4 15 - <_> - 5 - - 4 14 3 1 - <_> - 5 - - 4 9 3 4 - <_> - 2 - - 1 5 3 7 - <_> - 2 - - 5 10 2 2 - <_> - 4 - - 4 1 2 4 - <_> - 1 - - 0 3 5 2 - <_> - 8 - - 3 3 1 4 - <_> - 9 - - 3 4 2 2 - <_> - 8 - - 2 1 1 12 - <_> - 4 - - 1 5 5 7 - <_> - 8 - - 4 3 1 1 - <_> - 1 - - 1 6 6 6 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 4 3 2 11 - <_> - 2 - - 3 9 2 4 - <_> - 3 - - 1 0 5 1 - <_> - 4 - - 5 11 2 3 - <_> - 3 - - 1 0 3 10 - <_> - 2 - - 3 4 2 6 - <_> - 0 - - 1 14 6 1 - <_> - 0 - - 1 4 2 3 - <_> - 5 - - 1 2 4 2 - <_> - 1 - - 0 7 2 8 - <_> - 4 - - 4 1 2 10 - <_> - 4 - - 1 14 3 1 - <_> - 1 - - 2 6 4 3 - <_> - 8 - - 2 12 3 1 - <_> - 8 - - 4 2 1 2 - <_> - 3 - - 4 8 1 3 - <_> - 8 - - 3 4 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 0 - - 2 3 2 9 - <_> - 5 - - 0 10 4 1 - <_> - 1 - - 3 0 1 15 - <_> - 7 - - 5 4 1 1 - <_> - 0 - - 0 6 4 2 - <_> - 2 - - 3 5 1 3 - <_> - 7 - - 3 3 4 1 - <_> - 8 - - 3 3 1 3 - <_> - 5 - - 4 1 2 12 - <_> - 2 - - 4 2 2 3 - <_> - 2 - - 3 1 4 1 - <_> - 8 - - 0 13 4 2 - <_> - 4 - - 4 9 1 3 - <_> - 8 - - 0 14 1 1 - <_> - 0 - - 3 12 4 2 - <_> - 9 - - 6 14 1 1 - <_> - 3 - - 0 14 6 1 - <_> - 2 - - 2 11 1 3 - <_> - 5 - - 4 2 1 2 - <_> - 9 - - 6 3 1 9 - <_> - 1 - - 1 13 5 1 - <_> - 2 - - 0 4 7 5 - <_> - 4 - - 0 0 7 14 - <_> - 2 - - 2 14 5 1 - <_> - 1 - - 3 10 1 3 - <_> - 4 - - 3 7 1 3 - <_> - 4 - - 2 3 4 8 - <_> - 7 - - 3 12 1 1 - <_> - 4 - - 0 12 1 3 - <_> - 3 - - 1 12 4 2 - <_> - 7 - - 0 5 1 1 - <_> - 5 - - 0 12 3 3 - <_> - 1 - - 0 9 3 5 - <_> - 2 - - 3 10 2 1 - <_> - 2 - - 1 8 4 6 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 0 5 1 3 - <_> - 2 - - 6 0 1 12 - <_> - 2 - - 1 0 2 12 - <_> - 3 - - 3 2 2 2 - <_> - 5 - - 4 10 2 1 - <_> - 0 - - 3 3 3 5 - <_> - 0 - - 3 7 3 7 - <_> - 4 - - 3 6 2 1 - <_> - 8 - - 3 3 1 1 - <_> - 4 - - 3 10 2 2 - <_> - 8 - - 2 1 2 1 - <_> - 1 - - 0 1 5 3 - <_> - 4 - - 4 2 3 1 - <_> - 1 - - 2 1 1 3 - <_> - 1 - - 3 2 3 1 - <_> - 5 - - 4 8 1 1 - <_> - 4 - - 0 7 7 1 - <_> - 0 - - 3 7 3 6 - <_> - 1 - - 5 0 2 6 - <_> - 2 - - 3 0 4 5 - <_> - 1 - - 4 13 2 1 - <_> - 7 - - 3 6 2 1 - <_> - 8 - - 1 0 1 1 - <_> - 4 - - 2 3 5 8 - <_> - 5 - - 5 2 1 9 - <_> - 1 - - 3 6 3 2 - <_> - 4 - - 1 1 6 1 - <_> - 0 - - 4 5 2 2 - <_> - 0 - - 2 4 1 1 - <_> - 3 - - 5 14 2 1 - <_> - 7 - - 6 13 1 1 - <_> - 2 - - 2 14 2 1 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 2 5 2 8 - <_> - 8 - - 6 8 1 2 - <_> - 2 - - 1 10 4 4 - <_> - 0 - - 4 4 2 1 - <_> - 4 - - 0 6 7 9 - <_> - 3 - - 2 2 4 7 - <_> - 7 - - 4 1 1 2 - <_> - 2 - - 4 7 1 3 - <_> - 8 - - 2 3 4 1 - <_> - 1 - - 5 7 2 4 - <_> - 8 - - 2 2 1 2 - <_> - 2 - - 3 3 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 5 - - 2 6 5 2 - <_> - 1 - - 3 0 1 8 - <_> - 3 - - 1 14 5 1 - <_> - 0 - - 1 1 4 13 - <_> - 3 - - 1 0 3 2 - <_> - 0 - - 3 10 3 4 - <_> - 0 - - 4 11 3 1 - <_> - 1 - - 3 9 2 4 - <_> - 2 - - 4 14 1 1 - <_> - 3 - - 0 2 5 1 - <_> - 7 - - 1 12 2 3 - <_> - 9 - - 2 1 1 3 - <_> - 7 - - 3 4 1 2 - <_> - 9 - - 3 9 1 4 - <_> - 9 - - 2 12 4 2 - <_> - 1 - - 2 2 3 2 - <_> - 3 - - 0 14 4 1 - <_> - 4 - - 2 5 5 6 - <_> - 0 - - 1 10 1 1 - <_> - 2 - - 2 8 2 6 - <_> - 5 - - 2 4 1 4 - <_> - 8 - - 3 2 1 2 - <_> - 4 - - 2 10 5 1 - <_> - 7 - - 6 0 1 3 - <_> - 9 - - 2 4 2 1 - <_> - 8 - - 1 3 4 1 - <_> - 1 - - 1 0 6 3 - <_> - 4 - - 3 2 3 1 - <_> - 3 - - 2 0 5 1 - <_> - 0 - - 3 0 2 5 - <_> - 8 - - 3 10 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 2 - - 2 7 3 5 - <_> - 2 - - 3 4 1 10 - <_> - 2 - - 0 14 4 1 - <_> - 3 - - 2 11 3 2 - <_> - 7 - - 2 7 2 1 - <_> - 5 - - 5 0 1 15 - <_> - 4 - - 1 5 6 1 - <_> - 0 - - 4 0 2 1 - <_> - 4 - - 3 10 3 5 - <_> - 1 - - 3 3 2 3 - <_> - 9 - - 5 4 1 3 - <_> - 1 - - 2 14 3 1 - <_> - 4 - - 1 2 1 13 - <_> - 8 - - 2 2 3 2 - <_> - 0 - - 3 9 2 5 - <_> - 5 - - 1 8 4 1 - <_> - 3 - - 4 4 2 7 - <_> - 3 - - 2 1 1 12 - <_> - 0 - - 1 4 3 8 - <_> - 4 - - 4 9 1 2 - <_> - 4 - - 2 3 4 8 - <_> - 7 - - 3 9 2 4 - <_> - 2 - - 1 5 4 1 - <_> - 4 - - 2 5 5 7 - <_> - 3 - - 4 0 1 6 - <_> - 2 - - 5 4 1 6 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 2 11 3 3 - <_> - 0 - - 6 7 1 4 - <_> - 2 - - 2 1 5 1 - <_> - 5 - - 3 2 4 3 - <_> - 3 - - 3 2 1 1 - <_> - 5 - - 0 13 1 2 - <_> - 7 - - 0 8 5 1 - <_> - 5 - - 4 2 2 11 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 0 3 7 1 - <_> - 8 - - 2 1 1 3 - <_> - 9 - - 1 0 6 2 - <_> - 0 - - 4 4 2 2 - <_> - 9 - - 4 5 1 1 - <_> - 0 - - 4 3 3 9 - <_> - 2 - - 5 4 1 4 - <_> - 5 - - 5 14 1 1 - <_> - 1 - - 4 5 1 2 - <_> - 9 - - 2 11 3 2 - <_> - 4 - - 0 0 7 1 - <_> - 1 - - 2 0 4 5 - <_> - 2 - - 5 9 1 6 - <_> - 4 - - 1 0 4 11 - <_> - 2 - - 2 2 3 12 - <_> - 5 - - 1 3 5 8 - <_> - 3 - - 1 14 4 1 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 0 12 4 1 - <_> - 8 - - 3 1 1 1 - <_> - 3 - - 6 10 1 2 - <_> - 0 - - 4 7 2 4 - <_> - 5 - - 3 2 2 2 - <_> - 9 - - 2 4 3 2 - <_> - 9 - - 2 2 3 2 - <_> - 9 - - 6 9 1 1 - <_> - 1 - - 1 13 5 1 - <_> - 5 - - 0 6 2 2 - <_> - 4 - - 3 11 2 2 - <_> - 9 - - 5 14 2 1 - <_> - 2 - - 3 5 1 2 - <_> - 5 - - 2 14 5 1 - <_> - 3 - - 1 5 4 2 - <_> - 4 - - 4 2 2 7 - <_> - 9 - - 4 9 1 1 - <_> - 0 - - 4 13 3 1 - <_> - 0 - - 3 3 2 2 - <_> - 1 - - 2 5 3 1 - <_> - 1 - - 4 0 1 15 - <_> - 5 - - 2 14 2 1 - <_> - 1 - - 3 8 3 5 - <_> - 0 - - 4 0 3 10 - <_> - 0 - - 3 10 3 3 - <_> - 8 - - 1 6 5 1 - <_> - 2 - - 5 13 1 2 - <_> - 8 - - 0 5 7 2 - <_> - 9 - - 3 5 3 1 - <_> - 5 - - 5 2 1 6 - <_> - 2 - - 4 4 2 1 - <_> - 0 - - 4 14 2 1 - <_> - 0 - - 3 1 2 1 - <_> - 3 - - 3 0 4 6 - <_> - 2 - - 4 4 1 1 - <_> - 2 - - 3 13 2 1 - <_> - 2 - - 2 10 5 1 - <_> - 5 - - 2 14 5 1 - <_> - 5 - - 1 1 2 9 - <_> - 3 - - 0 14 5 1 - <_> - 8 - - 6 10 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 3 1 3 1 - <_> - 8 - - 1 9 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 3 - - 3 7 1 1 - <_> - 8 - - 0 7 6 4 - <_> - 2 - - 1 0 6 5 - <_> - 7 - - 6 7 1 3 - <_> - 1 - - 0 12 6 1 - <_> - 1 - - 2 12 4 3 - <_> - 2 - - 0 2 7 4 - <_> - 2 - - 3 10 2 4 - <_> - 2 - - 3 7 2 1 - <_> - 9 - - 3 3 1 10 - <_> - 8 - - 3 6 2 1 - <_> - 0 - - 3 0 2 1 - <_> - 0 - - 3 1 2 3 - <_> - 3 - - 1 6 2 2 - <_> - 4 - - 0 14 7 1 - <_> - 2 - - 1 9 4 5 - <_> - 1 - - 3 2 3 12 - <_> - 1 - - 3 4 2 8 - <_> - 0 - - 0 14 6 1 - <_> - 2 - - 0 8 1 7 - <_> - 5 - - 4 10 1 4 - <_> - 9 - - 4 4 1 2 - <_> - 7 - - 2 14 3 1 - <_> - 4 - - 3 10 4 1 - <_> - 4 - - 0 3 6 3 - <_> - 0 - - 4 9 2 1 - <_> - 4 - - 3 1 2 4 - <_> - 9 - - 0 0 5 12 - <_> - 1 - - 3 2 2 4 - <_> - 9 - - 1 9 1 1 - <_> - 7 - - 5 1 1 8 - <_> - 0 - - 1 10 1 4 - <_> - 1 - - 3 13 2 2 - <_> - 5 - - 0 13 6 1 - <_> - 7 - - 2 0 5 5 - <_> - 0 - - 3 5 2 1 - <_> - 3 - - 0 6 7 1 - <_> - 0 - - 4 3 2 1 - <_> - 4 - - 3 5 4 1 - <_> - 2 - - 6 10 1 2 - <_> - 8 - - 2 0 3 1 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 0 12 1 1 - <_> - 8 - - 1 3 6 1 - <_> - 2 - - 1 14 3 1 - <_> - 3 - - 1 12 4 2 - <_> - 0 - - 4 5 1 1 - <_> - 9 - - 4 7 1 1 - <_> - 7 - - 5 14 1 1 - <_> - 9 - - 5 9 2 1 - <_> - 4 - - 0 0 7 14 - <_> - 0 - - 2 4 1 2 - <_> - 0 - - 4 11 1 3 - <_> - 8 - - 4 6 3 4 - <_> - 3 - - 5 11 1 3 - <_> - 0 - - 3 8 4 1 - <_> - 0 - - 2 9 3 3 - <_> - 7 - - 2 3 4 5 - <_> - 4 - - 1 7 3 4 - <_> - 4 - - 2 4 3 1 - <_> - 9 - - 1 0 1 2 - <_> - 1 - - 3 5 1 1 - <_> - 1 - - 2 10 4 3 - <_> - 4 - - 4 2 1 8 - <_> - 3 - - 2 3 1 7 - <_> - 3 - - 2 0 2 3 - <_> - 1 - - 0 1 6 1 - <_> - 0 - - 5 11 1 1 - <_> - 1 - - 4 0 1 15 - <_> - 7 - - 3 6 2 1 - <_> - 2 - - 4 4 2 11 - <_> - 0 - - 0 9 1 3 - <_> - 1 - - 2 2 2 2 - <_> - 9 - - 4 4 1 5 - <_> - 0 - - 3 9 3 2 - <_> - 5 - - 2 0 3 2 - <_> - 8 - - 3 3 2 1 - <_> - 5 - - 2 14 4 1 - <_> - 8 - - 3 14 3 1 - <_> - 2 - - 0 9 2 5 - <_> - 1 - - 3 6 2 1 - <_> - 5 - - 4 9 2 4 - <_> - 1 - - 3 8 2 2 - <_> - 3 - - 2 7 2 5 - <_> - 4 - - 2 0 5 15 - <_> - 4 - - 3 2 2 1 - <_> - 3 - - 0 4 2 10 - <_> - 0 - - 3 2 1 12 - <_> - 0 - - 3 4 1 5 - <_> - 7 - - 2 3 4 9 - <_> - 7 - - 5 14 1 1 - <_> - 7 - - 0 0 7 13 - <_> - 1 - - 5 0 2 14 - <_> - 5 - - 2 12 1 2 - <_> - 0 - - 3 1 1 9 - <_> - 5 - - 2 4 1 8 - <_> - 2 - - 4 6 1 2 - <_> - 2 - - 2 0 3 15 - <_> - 5 - - 3 2 4 4 - <_> - 4 - - 2 10 4 1 - <_> - 5 - - 1 0 6 2 - <_> - 0 - - 4 7 2 4 - <_> - 1 - - 2 7 4 1 - <_> - 2 - - 2 14 1 1 - <_> - 2 - - 2 10 3 4 - <_> - 4 - - 0 11 5 1 - <_> - 3 - - 3 7 1 1 - <_> - 1 - - 1 7 3 8 - <_> - 5 - - 4 2 1 1 - <_> - 1 - - 2 11 3 2 - <_> - 3 - - 1 0 3 11 - <_> - 7 - - 3 1 1 1 - <_> - 4 - - 2 0 3 7 - <_> - 3 - - 5 12 1 1 - <_> - 2 - - 2 5 2 2 - <_> - 4 - - 0 8 6 1 - <_> - 4 - - 1 5 6 6 - <_> - 2 - - 3 2 3 2 - <_> - 2 - - 5 8 2 5 - <_> - 5 - - 6 13 1 2 - <_> - 2 - - 2 11 4 3 - <_> - 3 - - 2 4 1 1 - <_> - 3 - - 0 7 6 6 - <_> - 8 - - 3 3 2 1 - <_> - 7 - - 5 1 2 6 - <_> - 9 - - 3 8 2 3 - <_> - 5 - - 4 9 3 4 - <_> - 9 - - 3 7 2 1 - <_> - 2 - - 5 8 2 5 - <_> - 3 - - 2 6 5 4 - <_> - 4 - - 5 14 2 1 - <_> - 0 - - 3 12 4 2 - <_> - 2 - - 0 6 2 9 - <_> - 5 - - 0 14 6 1 - <_> - 5 - - 5 4 2 11 - <_> - 2 - - 5 4 1 5 - <_> - 3 - - 3 5 1 4 - <_> - 4 - - 0 3 4 4 - <_> - 1 - - 2 13 4 2 - <_> - 8 - - 2 2 3 5 - <_> - 3 - - 2 0 5 1 - <_> - 3 - - 1 9 3 4 - <_> - 4 - - 6 2 1 1 - <_> - 3 - - 3 2 2 2 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 4 0 3 3 - <_> - 0 - - 0 0 4 5 - <_> - 1 - - 3 13 1 2 - <_> - 9 - - 3 2 2 1 - <_> - 3 - - 4 10 3 2 - <_> - 1 - - 2 14 2 1 - <_> - 5 - - 1 4 2 4 - <_> - 9 - - 4 9 1 1 - <_> - 7 - - 4 10 1 4 - <_> - 4 - - 3 8 4 5 - <_> - 2 - - 2 13 3 1 - <_> - 8 - - 2 0 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 6 2 1 - <_> - 5 - - 1 12 6 2 - <_> - 2 - - 0 0 5 2 - <_> - 0 - - 2 7 4 6 - <_> - 1 - - 3 0 2 2 - <_> - 7 - - 1 14 5 1 - <_> - 7 - - 5 0 2 5 - <_> - 2 - - 0 14 7 1 - <_> - 9 - - 2 12 3 1 - <_> - 4 - - 1 1 5 5 - <_> - 5 - - 4 4 1 6 - <_> - 2 - - 4 4 1 2 - <_> - 3 - - 5 2 2 7 - <_> - 4 - - 4 9 1 3 - <_> - 3 - - 1 0 6 11 - <_> - 0 - - 2 2 3 2 - <_> - 3 - - 2 0 2 6 - <_> - 8 - - 4 3 1 1 - <_> - 8 - - 0 14 5 1 - <_> - 4 - - 4 1 2 14 - <_> - 8 - - 4 4 1 7 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 1 11 2 1 - <_> - 5 - - 2 13 4 1 - <_> - 2 - - 2 2 2 11 - <_> - 3 - - 0 13 2 2 - <_> - 2 - - 0 0 6 3 - <_> - 3 - - 1 14 5 1 - <_> - 7 - - 0 13 2 1 - <_> - 5 - - 1 12 2 1 - <_> - 8 - - 5 5 2 10 - <_> - 4 - - 1 8 6 3 - <_> - 9 - - 4 4 1 1 - <_> - 0 - - 4 13 3 1 - <_> - 7 - - 3 3 3 3 - <_> - 0 - - 3 4 4 3 - <_> - 0 - - 2 4 2 1 - <_> - 5 - - 0 2 5 2 - <_> - 5 - - 6 11 1 4 - <_> - 4 - - 3 0 1 14 - <_> - 5 - - 4 9 2 4 - <_> - 0 - - 3 4 1 4 - <_> - 0 - - 3 7 2 1 - <_> - 0 - - 2 5 5 9 - <_> - 3 - - 0 8 1 5 - <_> - 0 - - 1 0 1 1 - <_> - 9 - - 1 1 5 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 4 0 1 2 - <_> - 8 - - 3 2 2 4 - <_> - 5 - - 0 5 3 2 - <_> - 4 - - 3 9 2 4 - <_> - 1 - - 2 6 2 3 - <_> - 5 - - 5 14 1 1 - <_> - 0 - - 3 10 3 3 - <_> - 5 - - 0 8 5 2 - <_> - 9 - - 5 9 2 2 - <_> - 2 - - 1 9 3 5 - <_> - 1 - - 1 1 6 1 - <_> - 7 - - 2 5 1 2 - <_> - 3 - - 0 6 3 1 - <_> - 1 - - 4 14 1 1 - <_> - 3 - - 1 11 2 4 - <_> - 1 - - 3 0 2 5 - <_> - 7 - - 3 5 2 2 - <_> - 1 - - 3 10 1 3 - <_> - 7 - - 1 2 1 1 - <_> - 4 - - 0 5 1 3 - <_> - 5 - - 0 0 6 4 - <_> - 5 - - 0 13 6 2 - <_> - 4 - - 0 0 6 15 - <_> - 2 - - 4 10 1 4 - <_> - 1 - - 0 2 5 3 - <_> - 1 - - 0 1 7 1 - <_> - 4 - - 4 8 3 6 - <_> - 5 - - 5 2 1 6 - <_> - 1 - - 3 5 4 2 - <_> - 5 - - 6 0 1 4 - <_> - 1 - - 6 1 1 12 - <_> - 4 - - 3 5 4 7 - <_> - 4 - - 6 5 1 6 - <_> - 8 - - 3 3 2 1 - <_> - 1 - - 6 3 1 6 - <_> - 1 - - 1 2 1 2 - <_> - 1 - - 1 0 6 4 - <_> - 0 - - 5 5 1 1 - <_> - 4 - - 3 10 3 2 - <_> - 1 - - 0 5 2 8 - <_> - 5 - - 2 3 1 12 - <_> - 9 - - 5 4 1 2 - <_> - 0 - - 0 8 1 7 - <_> - 5 - - 3 5 4 1 - <_> - 2 - - 1 6 3 7 - <_> - 4 - - 0 14 7 1 - <_> - 1 - - 2 13 3 2 - <_> - 1 - - 0 13 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 1 5 3 1 - <_> - 8 - - 5 2 1 2 - <_> - 4 - - 3 5 4 9 - <_> - 0 - - 3 3 2 11 - <_> - 1 - - 5 0 2 8 - <_> - 9 - - 3 4 2 1 - <_> - 9 - - 1 1 2 5 - <_> - 1 - - 4 2 1 3 - <_> - 1 - - 2 11 3 2 - <_> - 7 - - 6 4 1 3 - <_> - 1 - - 3 0 4 1 - <_> - 4 - - 2 2 4 1 - <_> - 9 - - 3 4 2 3 - <_> - 3 - - 1 2 4 4 - <_> - 5 - - 2 14 5 1 - <_> - 5 - - 3 12 4 2 - <_> - 4 - - 3 5 2 1 - <_> - 5 - - 5 6 1 9 - <_> - 8 - - 4 5 1 2 - <_> - 0 - - 3 5 2 1 - <_> - 5 - - 6 9 1 4 - <_> - 3 - - 3 10 4 4 - <_> - 2 - - 2 3 2 1 - <_> - 0 - - 5 14 2 1 - <_> - 1 - - 4 2 3 11 - <_> - 1 - - 3 3 2 3 - <_> - 7 - - 4 2 3 12 - <_> - 0 - - 2 13 5 1 - <_> - 3 - - 1 8 2 2 - <_> - 3 - - 6 14 1 1 - <_> - 5 - - 3 4 4 1 - <_> - 7 - - 3 8 3 1 - <_> - 2 - - 1 14 2 1 - <_> - 2 - - 1 10 3 4 - <_> - 7 - - 2 11 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 0 - - 1 0 5 3 - <_> - 8 - - 0 12 5 3 - <_> - 3 - - 3 2 1 1 - <_> - 1 - - 3 1 2 3 - <_> - 5 - - 4 2 2 4 - <_> - 3 - - 4 7 1 1 - <_> - 3 - - 2 5 2 7 - <_> - 4 - - 3 1 3 13 - <_> - 5 - - 2 9 2 1 - <_> - 2 - - 0 2 3 11 - <_> - 2 - - 0 9 3 1 - <_> - 0 - - 2 4 2 7 - <_> - 4 - - 2 5 4 3 - <_> - 3 - - 0 0 4 15 - <_> - 1 - - 4 6 3 8 - <_> - 8 - - 1 10 2 1 - <_> - 9 - - 0 1 2 1 - <_> - 9 - - 3 8 1 1 - <_> - 9 - - 1 1 2 1 - <_> - 9 - - 1 9 1 1 - <_> - 5 - - 4 7 1 1 - <_> - 2 - - 2 9 3 5 - <_> - 8 - - 4 4 1 8 - <_> - 7 - - 5 14 1 1 - <_> - 1 - - 1 4 6 2 - <_> - 0 - - 0 9 4 1 - <_> - 1 - - 4 10 2 1 - <_> - 1 - - 4 0 1 15 - <_> - 5 - - 5 11 1 2 - <_> - 4 - - 3 9 2 3 - <_> - 0 - - 2 4 2 1 - <_> - 4 - - 3 5 2 3 - <_> - 3 - - 2 8 2 6 - <_> - 7 - - 2 7 5 3 - <_> - 3 - - 2 14 3 1 - <_> - 5 - - 4 2 3 13 - <_> - 4 - - 3 9 3 2 - <_> - 4 - - 2 3 1 4 - <_> - 4 - - 0 13 7 2 - <_> - 2 - - 0 14 6 1 - <_> - 3 - - 0 2 1 2 - <_> - 8 - - 5 5 2 10 - <_> - 7 - - 6 2 1 2 - <_> - 8 - - 6 10 1 2 - <_> - 0 - - 3 8 3 4 - <_> - 5 - - 6 10 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 3 0 4 9 - <_> - 7 - - 4 7 3 5 - <_> - 4 - - 1 0 6 6 - <_> - 5 - - 1 3 5 5 - <_> - 4 - - 0 3 6 6 - <_> - 7 - - 6 1 1 12 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 2 4 4 3 - <_> - 3 - - 2 2 1 11 - <_> - 7 - - 4 0 3 10 - <_> - 7 - - 2 9 5 4 - <_> - 4 - - 3 6 2 2 - <_> - 1 - - 3 4 2 6 - <_> - 4 - - 3 6 2 4 - <_> - 2 - - 5 4 1 7 - <_> - 0 - - 0 0 6 9 - <_> - 0 - - 2 7 3 5 - <_> - 0 - - 0 8 1 2 - <_> - 0 - - 3 5 2 4 - <_> - 3 - - 4 1 2 3 - <_> - 8 - - 3 0 1 2 - <_> - 8 - - 3 2 2 2 - <_> - 9 - - 2 7 4 1 - <_> - 8 - - 3 4 3 1 - <_> - 4 - - 2 5 5 8 - <_> - 8 - - 4 3 1 1 - <_> - 7 - - 1 6 5 1 - <_> - 0 - - 3 10 3 4 - <_> - 2 - - 1 2 5 2 - <_> - 9 - - 1 10 6 2 - <_> - 3 - - 0 14 6 1 - <_> - 7 - - 0 14 3 1 - <_> - 4 - - 0 0 6 10 - <_> - 7 - - 4 1 1 3 - <_> - 2 - - 3 1 1 8 - <_> - 5 - - 1 4 6 5 - <_> - 4 - - 3 1 4 5 - <_> - 0 - - 3 0 4 1 - <_> - 7 - - 0 13 2 2 - <_> - 2 - - 6 10 1 4 - <_> - 4 - - 1 3 6 6 - <_> - 1 - - 3 3 4 9 - <_> - 3 - - 1 1 3 6 - <_> - 1 - - 4 3 1 2 - <_> - 4 - - 2 0 3 5 - <_> - 4 - - 1 0 6 14 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 1 8 3 1 - <_> - 2 - - 4 4 1 2 - <_> - 9 - - 2 1 3 6 - <_> - 4 - - 3 6 2 3 - <_> - 5 - - 4 14 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 4 - - 6 5 1 2 - <_> - 2 - - 2 0 5 2 - <_> - 7 - - 1 1 4 8 - <_> - 4 - - 4 14 3 1 - <_> - 2 - - 3 0 4 5 - <_> - 5 - - 4 2 2 3 - <_> - 0 - - 2 3 2 11 - <_> - 4 - - 3 0 2 7 - <_> - 2 - - 3 6 1 1 - <_> - 1 - - 3 2 2 4 - <_> - 8 - - 4 3 2 1 - <_> - 4 - - 3 1 2 4 - <_> - 8 - - 0 14 5 1 - <_> - 1 - - 3 13 2 2 - <_> - 4 - - 2 10 5 1 - <_> - 1 - - 2 5 4 1 - <_> - 8 - - 4 5 1 6 - <_> - 9 - - 3 9 2 2 - <_> - 0 - - 6 8 1 3 - <_> - 0 - - 2 2 4 8 - <_> - 7 - - 2 2 4 9 - <_> - 9 - - 1 14 5 1 - <_> - 1 - - 0 0 5 1 - <_> - 4 - - 2 8 1 7 - <_> - 7 - - 5 0 2 11 - <_> - 4 - - 2 5 5 7 - <_> - 3 - - 0 14 6 1 - <_> - 3 - - 6 5 1 9 - <_> - 0 - - 3 11 3 3 - <_> - 1 - - 5 0 2 5 - <_> - 1 - - 0 3 5 2 - <_> - 5 - - 0 10 4 1 - <_> - 3 - - 0 9 4 4 - <_> - 0 - - 3 0 1 1 - <_> - 5 - - 4 2 1 1 - <_> - 2 - - 4 3 2 2 - <_> - 7 - - 0 0 6 11 - <_> - 0 - - 3 5 2 1 - <_> - 0 - - 2 0 2 9 - <_> - 1 - - 3 7 2 2 - <_> - 8 - - 4 3 1 1 - <_> - 9 - - 3 4 2 1 - <_> - 8 - - 5 3 1 2 - <_> - 7 - - 4 8 1 2 - <_> - 2 - - 2 3 1 9 - <_> - 4 - - 3 1 3 2 - <_> - 2 - - 0 12 1 2 - <_> - 2 - - 5 1 1 10 - <_> - 3 - - 6 3 1 5 - <_> - 4 - - 1 5 3 7 - <_> - 2 - - 6 14 1 1 - <_> - 7 - - 3 5 2 3 - <_> - 3 - - 2 2 2 12 - <_> - 1 - - 1 5 4 8 - <_> - 3 - - 1 14 4 1 - <_> - 4 - - 4 2 1 5 - <_> - 2 - - 1 2 4 5 - <_> - 0 - - 5 4 1 1 - <_> - 2 - - 3 10 2 4 - <_> - 8 - - 1 1 4 1 - <_> - 5 - - 1 6 3 7 - <_> - 8 - - 2 3 4 1 - <_> - 2 - - 0 0 7 2 - <_> - 8 - - 2 9 2 3 - <_> - 1 - - 2 1 5 13 - <_> - 2 - - 0 0 7 6 - <_> - 0 - - 3 3 1 6 - <_> - 9 - - 3 4 1 2 - <_> - 9 - - 3 2 2 1 - <_> - 8 - - 3 3 1 3 - <_> - 7 - - 5 13 2 1 - <_> - 4 - - 1 3 5 5 - <_> - 7 - - 3 12 2 2 - <_> - 0 - - 1 4 3 2 - <_> - 3 - - 2 3 1 4 - <_> - 0 - - 1 0 4 3 - <_> - 4 - - 0 3 2 8 - <_> - 7 - - 3 9 2 1 - <_> - 1 - - 2 9 1 4 - <_> - 0 - - 2 9 4 5 - <_> - 3 - - 0 2 1 1 - <_> - 5 - - 3 8 1 3 - <_> - 1 - - 3 10 2 3 - <_> - 1 - - 3 0 2 15 - <_> - 9 - - 2 10 2 1 - <_> - 2 - - 2 10 3 4 - <_> - 3 - - 1 10 1 1 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 2 1 1 4 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 3 5 2 1 - <_> - 5 - - 2 14 5 1 - <_> - 4 - - 2 6 5 9 - <_> - 2 - - 4 8 2 2 - <_> - 3 - - 3 1 1 4 - <_> - 4 - - 2 6 4 3 - <_> - 3 - - 2 14 1 1 - <_> - 5 - - 5 5 1 9 - <_> - 2 - - 5 4 1 11 - <_> - 7 - - 0 14 7 1 - <_> - 7 - - 0 1 1 9 - <_> - 0 - - 0 10 1 2 - <_> - 2 - - 3 7 2 1 - <_> - 3 - - 2 11 1 2 - <_> - 0 - - 3 6 4 8 - <_> - 0 - - 0 13 7 2 - <_> - 0 - - 0 1 2 9 - <_> - 1 - - 4 13 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 4 - - 3 2 2 8 - <_> - 7 - - 0 3 4 4 - <_> - 4 - - 3 3 3 2 - <_> - 3 - - 3 12 2 2 - <_> - 0 - - 1 12 4 1 - <_> - 7 - - 6 13 1 1 - <_> - 3 - - 5 11 1 3 - <_> - 5 - - 0 1 6 1 - <_> - 5 - - 0 4 2 4 - <_> - 5 - - 4 1 1 4 - <_> - 0 - - 0 7 4 2 - <_> - 4 - - 0 2 5 1 - <_> - 5 - - 3 14 4 1 - <_> - 1 - - 0 2 5 2 - <_> - 0 - - 2 8 3 5 - <_> - 4 - - 1 0 6 15 - <_> - 9 - - 4 4 1 1 - <_> - 1 - - 4 1 1 10 - <_> - 9 - - 1 0 3 3 - <_> - 0 - - 2 1 3 1 - <_> - 9 - - 4 5 1 6 - <_> - 5 - - 1 3 2 8 - <_> - 4 - - 5 13 1 2 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 3 1 3 1 - <_> - 8 - - 3 2 3 2 - <_> - 4 - - 0 8 6 7 - <_> - 0 - - 3 2 2 2 - <_> - 0 - - 5 8 2 6 - <_> - 3 - - 3 1 1 1 - <_> - 2 - - 2 10 3 4 - <_> - 0 - - 4 4 2 1 - <_> - 5 - - 0 10 2 5 - <_> - 4 - - 2 6 1 2 - <_> - 4 - - 1 7 3 2 - <_> - 8 - - 3 3 1 1 - <_> - 3 - - 1 2 3 4 - <_> - 7 - - 2 0 1 1 - <_> - 2 - - 1 3 2 1 - <_> - 3 - - 2 14 2 1 - <_> - 2 - - 1 8 4 6 - <_> - 1 - - 0 3 5 2 - <_> - 3 - - 4 7 1 2 - <_> - 4 - - 6 5 1 4 - <_> - 8 - - 3 3 2 1 - <_> - 8 - - 1 14 4 1 - <_> - 5 - - 3 5 4 2 - <_> - 4 - - 3 0 2 2 - <_> - 1 - - 2 12 3 1 - <_> - 5 - - 1 13 6 2 - <_> - 0 - - 3 12 2 3 - <_> - 1 - - 2 13 3 2 - <_> - 5 - - 1 8 3 6 - <_> - 9 - - 3 8 2 1 - <_> - 9 - - 3 2 2 1 - <_> - 3 - - 3 2 1 2 - <_> - 9 - - 2 4 3 1 - <_> - 4 - - 3 10 3 2 - <_> - 4 - - 2 4 2 4 - <_> - 5 - - 5 14 1 1 - <_> - 1 - - 3 13 3 1 - <_> - 3 - - 4 10 2 5 - <_> - 2 - - 0 0 1 3 - <_> - 4 - - 2 1 2 6 - <_> - 3 - - 3 11 2 3 - <_> - 9 - - 0 4 1 1 - <_> - 2 - - 4 4 2 1 - <_> - 3 - - 0 4 3 1 - <_> - 2 - - 0 4 5 6 - <_> - 3 - - 0 0 6 13 - <_> - 1 - - 3 6 2 1 - <_> - 9 - - 4 8 1 1 - <_> - 5 - - 5 2 1 8 - <_> - 0 - - 1 14 2 1 - <_> - 4 - - 2 8 5 5 - <_> - 4 - - 4 0 2 7 - <_> - 3 - - 6 10 1 5 - <_> - 5 - - 1 2 6 1 - <_> - 2 - - 3 5 2 1 - <_> - 2 - - 3 1 4 5 - <_> - 9 - - 1 0 1 1 - <_> - 1 - - 1 1 2 1 - <_> - 0 - - 1 6 5 4 - <_> - 8 - - 2 7 2 1 - <_> - 9 - - 6 9 1 1 - <_> - 9 - - 6 2 1 13 - <_> - 3 - - 0 10 1 5 - <_> - 0 - - 3 10 3 4 - <_> - 4 - - 2 9 4 3 - <_> - 2 - - 1 14 5 1 - <_> - 2 - - 2 7 3 7 - <_> - 5 - - 4 1 3 2 - <_> - 3 - - 2 0 3 2 - <_> - 4 - - 2 3 4 4 - <_> - 7 - - 1 1 5 1 - <_> - 4 - - 3 14 2 1 - <_> - 0 - - 2 4 1 11 - <_> - 5 - - 2 9 1 1 - <_> - 1 - - 2 9 5 6 - <_> - 4 - - 0 5 7 9 - <_> - 2 - - 6 14 1 1 - <_> - 1 - - 3 4 1 5 - <_> - 2 - - 2 13 3 1 - <_> - 5 - - 2 4 4 2 - <_> - 1 - - 4 5 2 1 - <_> - 7 - - 6 0 1 14 - <_> - 1 - - 3 10 2 1 - <_> - 3 - - 2 11 3 2 - <_> - 1 - - 4 2 2 12 - <_> - 4 - - 0 3 3 12 - <_> - 5 - - 2 6 5 8 - <_> - 5 - - 2 8 2 1 - <_> - 2 - - 0 6 3 3 - <_> - 7 - - 2 5 3 1 - <_> - 0 - - 5 7 2 1 - <_> - 3 - - 0 14 5 1 - <_> - 0 - - 3 7 2 1 - <_> - 8 - - 3 3 2 1 - <_> - 9 - - 3 3 2 6 - <_> - 8 - - 5 4 2 1 - <_> - 4 - - 1 5 6 7 - <_> - 4 - - 1 6 1 6 - <_> - 4 - - 4 4 1 6 - <_> - 0 - - 3 2 3 2 - <_> - 4 - - 2 9 5 6 - <_> - 0 - - 3 1 2 1 - <_> - 9 - - 0 0 5 4 - <_> - 1 - - 2 14 4 1 - <_> - 9 - - 3 6 2 3 - <_> - 2 - - 0 14 7 1 - <_> - 8 - - 2 4 3 2 - <_> - 3 - - 3 3 3 1 - <_> - 4 - - 0 10 5 2 - <_> - 3 - - 2 10 2 5 - <_> - 2 - - 4 4 2 2 - <_> - 4 - - 2 5 4 3 - <_> - 4 - - 3 4 1 10 - <_> - 5 - - 1 6 3 3 - <_> - 8 - - 2 13 4 1 - <_> - 8 - - 3 11 2 2 - <_> - 4 - - 3 1 2 1 - <_> - 0 - - 3 6 2 1 - <_> - 9 - - 3 12 1 2 - <_> - 2 - - 4 11 1 3 - <_> - 0 - - 3 9 2 4 - <_> - 9 - - 1 0 3 1 - <_> - 4 - - 4 0 2 15 - <_> - 5 - - 3 14 4 1 - <_> - 2 - - 1 10 4 4 - <_> - 9 - - 3 8 2 6 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 5 1 1 - <_> - 8 - - 4 0 1 2 - <_> - 3 - - 1 1 6 9 - <_> - 1 - - 4 4 1 1 - <_> - 4 - - 3 9 2 2 - <_> - 5 - - 2 14 4 1 - <_> - 5 - - 2 13 4 1 - <_> - 4 - - 4 3 1 7 - <_> - 5 - - 0 12 3 3 - <_> - 8 - - 5 13 2 1 - <_> - 0 - - 3 4 2 2 - <_> - 1 - - 2 2 3 9 - <_> - 7 - - 3 13 2 1 - <_> - 7 - - 1 14 6 1 - <_> - 1 - - 0 0 4 1 - <_> - 4 - - 0 3 4 3 - <_> - 1 - - 2 4 4 9 - <_> - 1 - - 0 7 4 5 - <_> - 4 - - 4 7 3 3 - <_> - 7 - - 2 13 2 1 - <_> - 0 - - 2 3 4 10 - <_> - 4 - - 0 4 1 2 - <_> - 3 - - 0 7 6 8 - <_> - 0 - - 1 7 1 1 - <_> - 0 - - 1 14 5 1 - <_> - 5 - - 1 9 1 3 - <_> - 5 - - 4 2 1 2 - <_> - 2 - - 2 12 1 2 - <_> - 4 - - 1 14 1 1 - <_> - 0 - - 3 0 3 5 - <_> - 0 - - 1 2 2 10 - <_> - 4 - - 0 2 1 13 - <_> - 0 - - 0 9 3 1 - <_> - 3 - - 1 11 4 3 - <_> - 1 - - 3 5 3 3 - <_> - 4 - - 4 1 1 10 - <_> - 7 - - 0 6 1 2 - <_> - 2 - - 2 1 5 1 - <_> - 0 - - 2 7 4 7 - <_> - 1 - - 3 10 2 3 - <_> - 8 - - 5 13 2 1 - <_> - 3 - - 1 13 2 2 - <_> - 1 - - 5 6 2 7 - <_> - 3 - - 0 1 1 1 - <_> - 2 - - 1 14 6 1 - <_> - 4 - - 0 0 3 3 - <_> - 2 - - 2 2 2 12 - <_> - 9 - - 2 4 2 9 - <_> - 9 - - 0 1 6 8 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 2 5 2 1 - <_> - 1 - - 2 1 5 3 - <_> - 9 - - 1 9 1 2 - <_> - 2 - - 0 9 7 3 - <_> - 4 - - 1 1 1 8 - <_> - 8 - - 3 14 1 1 - <_> - 4 - - 3 2 2 1 - <_> - 7 - - 3 8 1 1 - <_> - 3 - - 2 0 2 6 - <_> - 3 - - 0 14 5 1 - <_> - 4 - - 3 1 3 12 - <_> - 1 - - 1 3 4 3 - <_> - 0 - - 4 3 1 1 - <_> - 8 - - 3 2 3 2 - <_> - 1 - - 4 4 1 11 - <_> - 8 - - 4 0 2 2 - <_> - 3 - - 5 1 1 1 - <_> - 1 - - 3 5 2 2 - <_> - 8 - - 3 2 1 2 - <_> - 8 - - 3 5 1 2 - <_> - 8 - - 3 4 2 1 - <_> - 1 - - 3 14 2 1 - <_> - 3 - - 2 12 3 1 - <_> - 5 - - 3 1 4 5 - <_> - 0 - - 0 11 7 1 - <_> - 7 - - 0 12 7 2 - <_> - 2 - - 2 11 1 1 - <_> - 8 - - 6 10 1 2 - <_> - 8 - - 2 6 5 2 - <_> - 5 - - 1 14 6 1 - <_> - 2 - - 0 12 6 2 - <_> - 9 - - 0 11 2 1 - <_> - 4 - - 2 10 4 1 - <_> - 9 - - 4 6 1 2 - <_> - 0 - - 1 7 3 1 - <_> - 8 - - 1 5 4 2 - <_> - 0 - - 0 1 3 6 - <_> - 5 - - 6 4 1 1 - <_> - 2 - - 2 14 1 1 - <_> - 0 - - 2 13 5 1 - <_> - 5 - - 5 1 1 6 - <_> - 3 - - 6 11 1 4 - <_> - 4 - - 1 0 6 15 - <_> - 1 - - 2 2 4 2 - <_> - 9 - - 3 7 1 2 - <_> - 3 - - 3 2 1 2 - <_> - 7 - - 0 2 3 1 - <_> - 7 - - 5 3 2 1 - <_> - 3 - - 4 0 1 6 - <_> - 5 - - 0 4 3 11 - <_> - 0 - - 5 0 2 3 - <_> - 3 - - 2 1 1 13 - <_> - 3 - - 1 3 2 6 - <_> - 0 - - 2 5 2 2 - <_> - 2 - - 5 3 1 3 - <_> - 0 - - 4 3 2 11 - <_> - 5 - - 1 0 4 1 - <_> - 0 - - 4 4 1 3 - <_> - 3 - - 0 14 4 1 - <_> - 1 - - 0 3 6 2 - <_> - 3 - - 1 11 3 3 - <_> - 7 - - 0 2 2 8 - <_> - 9 - - 3 2 2 10 - <_> - 8 - - 3 3 1 1 - <_> - 9 - - 4 4 1 3 - <_> - 5 - - 2 1 2 8 - <_> - 9 - - 1 5 1 5 - <_> - 5 - - 2 10 4 2 - <_> - 9 - - 2 11 3 2 - <_> - 4 - - 1 5 6 10 - <_> - 1 - - 2 13 4 1 - <_> - 2 - - 5 0 2 2 - <_> - 0 - - 1 10 1 5 - <_> - 3 - - 5 0 2 8 - <_> - 5 - - 4 9 2 4 - <_> - 5 - - 1 13 6 2 - <_> - 1 - - 3 5 2 2 - <_> - 1 - - 5 13 1 2 - <_> - 4 - - 2 4 3 2 - <_> - 2 - - 2 0 2 1 - <_> - 2 - - 2 1 3 14 - <_> - 9 - - 2 4 3 1 - <_> - 9 - - 1 0 4 4 - <_> - 0 - - 4 10 1 3 - <_> - 2 - - 2 1 2 1 - <_> - 4 - - 2 3 4 4 - <_> - 4 - - 4 9 3 1 - <_> - 8 - - 3 3 2 1 - <_> - 4 - - 4 4 1 6 - <_> - 8 - - 2 0 1 4 - <_> - 3 - - 0 6 6 8 - <_> - 5 - - 4 6 2 8 - <_> - 9 - - 4 5 2 1 - <_> - 2 - - 5 14 2 1 - <_> - 5 - - 2 5 5 1 - <_> - 2 - - 5 7 2 2 - <_> - 0 - - 2 4 1 1 - <_> - 4 - - 0 14 7 1 - <_> - 9 - - 5 6 1 9 - <_> - 2 - - 2 10 3 4 - <_> - 1 - - 3 1 2 1 - <_> - 2 - - 1 5 3 1 - <_> - 4 - - 2 1 3 2 - <_> - 3 - - 3 7 1 1 - <_> - 3 - - 2 4 2 3 - <_> - 2 - - 3 4 2 1 - <_> - 7 - - 4 4 1 1 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 3 0 4 5 - <_> - 0 - - 5 12 2 3 - <_> - 3 - - 0 0 7 2 - <_> - 3 - - 3 0 1 14 - <_> - 1 - - 3 5 2 8 - <_> - 1 - - 3 2 2 13 - <_> - 4 - - 0 1 6 13 - <_> - 8 - - 2 14 3 1 - <_> - 8 - - 4 5 1 1 - <_> - 3 - - 2 0 1 12 - <_> - 0 - - 2 4 3 5 - <_> - 3 - - 5 9 1 5 - <_> - 1 - - 1 14 4 1 - <_> - 4 - - 2 13 4 1 - <_> - 4 - - 0 12 6 3 - <_> - 2 - - 0 9 1 6 - <_> - 1 - - 0 2 1 8 - <_> - 4 - - 0 5 7 6 - <_> - 8 - - 4 3 1 1 - <_> - 2 - - 2 0 4 2 - <_> - 8 - - 5 3 1 2 - <_> - 0 - - 3 9 2 5 - <_> - 3 - - 5 3 2 8 - <_> - 5 - - 5 4 1 11 - <_> - 5 - - 1 14 4 1 - <_> - 5 - - 3 12 3 3 - <_> - 7 - - 3 6 1 1 - <_> - 9 - - 3 4 2 4 - <_> - 9 - - 0 2 6 4 - <_> - 8 - - 4 2 1 5 - <_> - 2 - - 4 8 1 1 - <_> - 5 - - 2 5 1 3 - <_> - 1 - - 4 2 2 2 - <_> - 4 - - 0 5 7 9 - <_> - 1 - - 1 1 6 1 - <_> - 1 - - 3 4 2 1 - <_> - 4 - - 2 0 3 6 - <_> - 1 - - 3 1 2 4 - <_> - 2 - - 2 8 3 6 - <_> - 3 - - 2 8 5 2 - <_> - 7 - - 0 5 5 1 - <_> - 7 - - 0 13 4 2 - <_> - 2 - - 2 3 3 1 - <_> - 1 - - 2 10 3 3 - <_> - 7 - - 4 13 2 1 - <_> - 3 - - 0 5 7 2 - <_> - 3 - - 2 11 1 2 - <_> - 9 - - 3 9 1 1 - <_> - 9 - - 0 9 1 6 - <_> - 8 - - 4 1 3 2 - <_> - 9 - - 3 4 2 5 - <_> - 0 - - 0 9 1 3 - <_> - 0 - - 2 9 2 4 - <_> - 3 - - 3 2 1 2 - <_> - 2 - - 1 13 3 1 - <_> - 3 - - 1 0 1 9 - <_> - 5 - - 0 14 7 1 - <_> - 0 - - 3 7 3 7 - <_> - 3 - - 4 5 2 3 - <_> - 2 - - 3 5 2 1 - <_> - 3 - - 0 10 2 2 - <_> - 5 - - 3 0 2 4 - <_> - 1 - - 4 2 2 13 - <_> - 4 - - 2 3 4 9 - <_> - 8 - - 6 10 1 2 - <_> - 9 - - 0 2 1 2 - <_> - 2 - - 2 3 2 11 - <_> - 5 - - 0 14 7 1 - <_> - 1 - - 1 7 3 6 - <_> - 1 - - 3 9 2 4 - <_> - 3 - - 0 13 5 2 - <_> - 0 - - 4 7 1 1 - <_> - 3 - - 2 5 1 3 - <_> - 4 - - 3 7 2 3 - <_> - 1 - - 0 5 2 8 - <_> - 1 - - 0 5 1 5 - <_> - 5 - - 2 0 5 4 - <_> - 4 - - 0 5 7 4 - <_> - 4 - - 2 3 3 2 - <_> - 1 - - 3 2 2 3 - <_> - 1 - - 1 4 5 1 - <_> - 5 - - 4 1 3 6 - <_> - 4 - - 1 2 5 10 - <_> - 3 - - 2 6 2 8 - <_> - 3 - - 3 7 1 3 - <_> - 2 - - 3 9 1 6 - <_> - 1 - - 1 2 4 6 - <_> - 4 - - 3 10 2 2 - <_> - 3 - - 5 0 1 4 - <_> - 2 - - 4 2 2 11 - <_> - 8 - - 4 2 2 4 - <_> - 9 - - 4 4 2 1 - <_> - 4 - - 3 6 4 6 - <_> - 0 - - 3 0 3 14 - <_> - 5 - - 2 7 3 8 - <_> - 8 - - 3 2 2 2 - <_> - 1 - - 3 14 2 1 - <_> - 4 - - 1 10 5 4 - <_> - 3 - - 5 11 1 2 - <_> - 8 - - 3 0 2 1 - <_> - 8 - - 3 3 2 2 - <_> - 0 - - 4 4 1 5 - <_> - 5 - - 1 6 5 5 - <_> - 3 - - 1 1 6 2 - <_> - 1 - - 3 5 3 1 - <_> - 0 - - 2 3 4 10 - <_> - 2 - - 3 3 3 3 - <_> - 3 - - 4 5 2 6 - <_> - 5 - - 0 14 7 1 - <_> - 5 - - 4 9 2 6 - <_> - 0 - - 0 6 5 1 - <_> - 4 - - 4 5 3 10 - <_> - 1 - - 4 3 3 5 - <_> - 3 - - 6 7 1 1 - <_> - 0 - - 3 5 1 1 - <_> - 5 - - 4 14 2 1 - <_> - 9 - - 2 0 4 3 - <_> - 9 - - 4 8 1 1 - <_> - 0 - - 0 8 4 6 - <_> - 9 - - 1 6 1 6 - <_> - 9 - - 0 14 2 1 - <_> - 4 - - 3 10 3 5 - <_> - 3 - - 1 0 2 15 - <_> - 0 - - 2 0 2 6 - <_> - 5 - - 3 12 2 3 - <_> - 8 - - 0 14 5 1 - <_> - 8 - - 3 3 2 1 - <_> - 2 - - 3 1 4 1 - <_> - 8 - - 3 1 1 1 - <_> - 3 - - 1 3 2 3 - <_> - 0 - - 2 4 2 1 - <_> - 0 - - 3 5 2 4 - <_> - 2 - - 0 14 7 1 - <_> - 7 - - 2 14 4 1 - <_> - 0 - - 4 9 1 1 - <_> - 1 - - 5 3 1 6 - <_> - 3 - - 0 2 4 3 - <_> - 4 - - 1 5 4 3 - <_> - 7 - - 1 7 5 4 - <_> - 7 - - 3 5 2 2 - <_> - 0 - - 0 10 5 2 - <_> - 3 - - 3 7 1 1 - <_> - 7 - - 5 2 2 7 - <_> - 8 - - 3 0 1 8 - <_> - 1 - - 2 2 3 2 - <_> - 4 - - 0 1 5 2 - <_> - 1 - - 3 1 1 1 - <_> - 9 - - 5 3 1 5 - <_> - 9 - - 3 2 2 4 - <_> - 5 - - 4 10 2 4 - <_> - 0 - 1024 - - <_> - -8.4679585695266724e-01 - - 1 2 0 7.7750000000000000e+02 0 -1 1 5.8850000000000000e+02 - -2 -3 2 2.5500000000000000e+01 - - -8.4679585695266724e-01 7.5506496429443359e-01 - -6.9044047594070435e-01 6.3049119710922241e-01 - <_> - -1.6734303236007690e+00 - - 1 2 3 1.9500000000000000e+01 0 -1 4 1.5500000000000000e+01 - -2 -3 5 1.4500000000000000e+01 - - -7.5389009714126587e-01 6.4812886714935303e-01 - -2.1629486978054047e-01 -8.2663446664810181e-01 - <_> - -1.8291370868682861e+00 - - 1 2 6 1.3500000000000000e+01 0 -1 7 2.0350000000000000e+02 - -2 -3 8 3.0050000000000000e+02 - - -1.5570680797100067e-01 -8.0992084741592407e-01 - 6.8644106388092041e-01 -5.6922149658203125e-01 - <_> - -1.7377158403396606e+00 - - 1 2 9 3.6500000000000000e+01 0 -1 10 2.4500000000000000e+01 - -2 -3 11 2.8150000000000000e+02 - - -8.2347095012664795e-01 3.0225446820259094e-01 - 6.9995605945587158e-01 -1.7914050817489624e-01 - <_> - -2.2347910404205322e+00 - - 1 2 12 2.0550000000000000e+02 0 -1 13 6.7500000000000000e+01 - -2 -3 14 8.6350000000000000e+02 - - -4.9707528948783875e-01 1.7866376042366028e-01 - 7.4965566396713257e-01 5.7663144543766975e-03 - <_> - -1.8678615093231201e+00 - - 1 2 15 1.5150000000000000e+02 0 -1 16 1.0500000000000000e+01 - -2 -3 17 4.3255000000000000e+03 - - -2.6820951700210571e-01 6.4194840192794800e-01 - -6.7160737514495850e-01 6.3368387520313263e-02 - <_> - -2.0991549491882324e+00 - - 1 2 18 1.5000000000000000e+00 0 -1 19 2.9500000000000000e+01 - -2 -3 20 5.0000000000000000e-01 - - -5.0631237030029297e-01 5.5947405099868774e-01 - 7.0312672853469849e-01 -4.0578368306159973e-01 - <_> - -2.0249555110931396e+00 - - 1 2 21 5.2500000000000000e+01 0 -1 22 7.5000000000000000e+00 - -2 -3 23 4.3500000000000000e+01 - - -7.6095990836620331e-02 -7.4784129858016968e-01 - 5.0073879957199097e-01 -3.8508036732673645e-01 - <_> - -2.0100402832031250e+00 - - 1 2 24 3.7650000000000000e+02 0 -1 25 4.1500000000000000e+01 - -2 -3 26 2.5250000000000000e+02 - - -5.6506282091140747e-01 2.3158341646194458e-01 - -8.8750278949737549e-01 8.2055127620697021e-01 - <_> - -1.6451328992843628e+00 - - 1 2 27 7.5000000000000000e+00 0 -1 28 1.8500000000000000e+01 - -2 -3 29 2.2500000000000000e+01 - - -6.0027003288269043e-01 3.8312932848930359e-01 - 2.1947205066680908e-01 -5.9093552827835083e-01 - <_> - -2.0925648212432861e+00 - - 1 2 30 1.1500000000000000e+01 0 -1 31 9.5000000000000000e+00 - -2 -3 32 2.6350000000000000e+02 - - -4.6565398573875427e-01 5.0306195020675659e-01 - 4.4449210166931152e-01 -6.1473309993743896e-01 - <_> - -1.5271776914596558e+00 - - 1 2 33 5.0000000000000000e-01 0 -1 34 1.2500000000000000e+01 - -2 -3 35 3.6500000000000000e+01 - - -7.7037209272384644e-01 5.6538718938827515e-01 - -5.0570178031921387e-01 1.6205248236656189e-01 - <_> - -1.1876722574234009e+00 - - 1 2 36 3.5000000000000000e+00 0 -1 37 1.5000000000000000e+00 - -2 -3 38 2.5150000000000000e+02 - - -7.4505090713500977e-01 3.8910430669784546e-01 - -5.9720128774642944e-01 7.2264879941940308e-02 - <_> - -1.1631057262420654e+00 - - 1 2 39 2.7950000000000000e+02 0 -1 40 1.7065000000000000e+03 - -2 -3 41 1.2495000000000000e+03 - - 2.4566594511270523e-02 7.9330480098724365e-01 - 5.6873923540115356e-01 -4.0141937136650085e-01 - <_> - -8.4218001365661621e-01 - - 1 2 42 4.2525000000000000e+03 0 -1 43 4.5000000000000000e+00 - -2 -3 44 1.5175000000000000e+03 - - 3.2092568278312683e-01 -4.5945590734481812e-01 - -8.0667120218276978e-01 4.0151047706604004e-01 - <_> - -1.3475534915924072e+00 - - 1 2 45 2.3500000000000000e+01 0 -1 46 8.8500000000000000e+01 - -2 -3 47 9.2150000000000000e+02 - - 3.0066493153572083e-01 -5.0537353754043579e-01 - 3.6820709705352783e-01 -9.1408914327621460e-01 - <_> - -9.5874893665313721e-01 - - 1 2 48 5.7550000000000000e+02 0 -1 49 6.7550000000000000e+02 - -2 -3 50 5.0000000000000000e-01 - - -8.4770929813385010e-01 3.3511099219322205e-01 - 3.8880458474159241e-01 -1.9090360403060913e-01 - <_> - -8.5856813192367554e-01 - - 1 2 51 6.1500000000000000e+01 0 -1 52 1.5000000000000000e+00 - -2 -3 53 1158. - - 5.0987577438354492e-01 -3.8584578037261963e-01 - -5.0875252485275269e-01 5.5896055698394775e-01 - <_> - -6.4911109209060669e-01 - - 1 2 54 2.2050000000000000e+02 0 -1 55 2.5750000000000000e+02 - -2 -3 56 2.1450000000000000e+02 - - -6.3486647605895996e-01 2.0945706963539124e-01 - -8.4773159027099609e-01 4.1636252403259277e-01 - <_> - -4.9586555361747742e-01 - - 1 2 57 3.5000000000000000e+00 0 -1 58 2.5000000000000000e+00 - -2 -3 59 3.2500000000000000e+01 - - -7.5921803712844849e-01 4.6488901972770691e-01 - -6.8810594081878662e-01 -2.7040589600801468e-02 - <_> - -4.7253912687301636e-01 - - 1 2 60 2.5000000000000000e+00 0 -1 61 4.5000000000000000e+00 - -2 -3 62 3.2500000000000000e+01 - - -7.9894185066223145e-01 6.2211072444915771e-01 - -5.4600864648818970e-01 2.3326411843299866e-02 - <_> - -5.5614802986383438e-02 - - 1 2 63 2.4500000000000000e+01 0 -1 64 2.2500000000000000e+01 - -2 -3 65 1.5000000000000000e+00 - - -1.4692783355712891e-01 4.1692432761192322e-01 - 3.2402262091636658e-01 -8.1831818819046021e-01 - <_> - 2.4737248197197914e-02 - - 1 2 66 3.4500000000000000e+01 0 -1 67 5.0000000000000000e-01 - -2 -3 68 8.1750000000000000e+02 - - 4.9493959546089172e-01 -4.3111301958560944e-02 - 4.1624513268470764e-01 -6.5285211801528931e-01 - <_> - -3.8909688591957092e-01 - - 1 2 69 4.6500000000000000e+01 0 -1 70 1.1950000000000000e+02 - -2 -3 71 5.0000000000000000e-01 - - 3.9863130450248718e-01 -6.7247897386550903e-01 - 5.4888677597045898e-01 -1.2822744250297546e-01 - <_> - -7.9226568341255188e-02 - - 1 2 72 1.1500000000000000e+01 0 -1 73 2.3550000000000000e+02 - -2 -3 74 1.2550000000000000e+02 - - 9.7892753779888153e-02 -7.6417064666748047e-01 - -5.4467469453811646e-01 3.0987030267715454e-01 - <_> - -1.9954596646130085e-03 - - 1 2 75 1.5000000000000000e+00 0 -1 76 1.5000000000000000e+00 - -2 -3 77 1.0500000000000000e+01 - - -4.4582867622375488e-01 4.6034806966781616e-01 - 9.2526301741600037e-02 -5.5669903755187988e-01 - <_> - -1.2115581892430782e-02 - - 1 2 78 1.4500000000000000e+01 0 -1 79 2.5000000000000000e+00 - -2 -3 80 1284. - - -1.0120121762156487e-02 -5.9989041090011597e-01 - -1.7805591225624084e-01 6.3028931617736816e-01 - <_> - 3.5972565412521362e-01 - - 1 2 81 1.9650000000000000e+02 0 -1 82 9.5000000000000000e+00 - -2 -3 83 1.0625000000000000e+03 - - -2.0688037574291229e-01 3.7184122204780579e-01 - 7.2959977388381958e-01 -6.4402073621749878e-01 - <_> - 3.0813610553741455e-01 - - 1 2 84 1.1050000000000000e+02 0 -1 85 4.5000000000000000e+00 - -2 -3 86 6.6500000000000000e+01 - - -8.8497090339660645e-01 3.9636072516441345e-01 - 6.6349333524703979e-01 -5.1589541137218475e-02 - <_> - 2.5005090236663818e-01 - - 1 2 87 2.0550000000000000e+02 0 -1 88 3.5000000000000000e+00 - -2 -3 89 8.5000000000000000e+00 - - 3.3133915066719055e-01 -3.9812210202217102e-01 - -6.8591558933258057e-01 4.8487389087677002e-01 - <_> - 5.8778470754623413e-01 - - 1 2 90 1.3950000000000000e+02 0 -1 91 1.9500000000000000e+01 - -2 -3 92 3.5000000000000000e+00 - - -6.3595020771026611e-01 5.8211249113082886e-01 - 4.3087210506200790e-02 -5.4251241683959961e-01 - <_> - 8.2915985584259033e-01 - - 1 2 93 4.5000000000000000e+00 0 -1 94 2929. -2 -3 95 - 3.9500000000000000e+01 - - 3.6084750294685364e-01 -5.3846013545989990e-01 - 3.9264413714408875e-01 -2.5116056203842163e-01 - <_> - 9.1550654172897339e-01 - - 1 2 96 1.2500000000000000e+01 0 -1 97 4.4500000000000000e+01 - -2 -3 98 7.5500000000000000e+01 - - -3.1323480606079102e-01 3.6048817634582520e-01 - 6.6347086429595947e-01 -6.9799762964248657e-01 - <_> - 1.0855576992034912e+00 - - 1 2 99 2.7500000000000000e+01 0 -1 100 - 8.5000000000000000e+00 -2 -3 101 5.5000000000000000e+00 - - -3.5093611478805542e-01 3.0252355337142944e-01 - 1.6355676949024200e-01 -8.4324830770492554e-01 - <_> - 1.0639545917510986e+00 - - 1 2 102 1.5000000000000000e+00 0 -1 103 - 3.7500000000000000e+01 -2 -3 104 5.1500000000000000e+01 - - -3.3908194303512573e-01 4.2347168922424316e-01 - -4.4102880358695984e-01 4.3833139538764954e-01 - <_> - 9.0562820434570312e-01 - - 1 2 105 4.5000000000000000e+00 0 -1 106 - 9.5000000000000000e+00 -2 -3 107 5.5000000000000000e+00 - - -5.8544105291366577e-01 3.8719829916954041e-01 - 1.4575521647930145e-01 -4.6634963154792786e-01 - <_> - 1.0761597156524658e+00 - - 1 2 108 1.4500000000000000e+01 0 -1 109 - 1.2545000000000000e+03 -2 -3 110 1.0850000000000000e+02 - - 2.5986677408218384e-01 -4.0740066766738892e-01 - 4.9753630161285400e-01 -6.2639516592025757e-01 - <_> - 1.5152643918991089e+00 - - 1 2 111 7.8250000000000000e+02 0 -1 112 - 1.2265000000000000e+03 -2 -3 113 2.1500000000000000e+01 - - -5.9889906644821167e-01 5.2061015367507935e-01 - 4.3910467624664307e-01 -2.6094654202461243e-01 - <_> - 1.4136078357696533e+00 - - 1 2 114 1.0500000000000000e+01 0 -1 115 1696. -2 -3 116 - 5.0000000000000000e-01 - - 1. -9.7255414724349976e-01 3.5954985022544861e-01 - -1.7254945635795593e-01 - <_> - 1.4225575923919678e+00 - - 1 2 117 3.8500000000000000e+01 0 -1 118 - 1.0250000000000000e+02 -2 -3 119 8.5000000000000000e+00 - - -2.4716213345527649e-01 3.7233117222785950e-01 - 4.1007906198501587e-01 -7.6787543296813965e-01 - <_> - 1.7332764863967896e+00 - - 1 2 120 6.5000000000000000e+00 0 -1 121 - 6.5000000000000000e+00 -2 -3 122 5.1500000000000000e+01 - - -8.0807107686996460e-01 3.1071880459785461e-01 - -7.6486444473266602e-01 -4.4724285602569580e-02 - <_> - 1.8922506570816040e+00 - - 1 2 123 5.0000000000000000e-01 0 -1 124 - 6.5000000000000000e+00 -2 -3 125 2.5175000000000000e+03 - - -4.5441693067550659e-01 5.4230731725692749e-01 - -3.1970790028572083e-01 7.5582736730575562e-01 - <_> - 1.6188565492630005e+00 - - 1 2 126 8.2450000000000000e+02 0 -1 127 - 1.5500000000000000e+01 -2 -3 128 1.2500000000000000e+01 - - -2.7339416742324829e-01 3.4306022524833679e-01 - 1.7286354303359985e-01 -6.8018329143524170e-01 - <_> - 1.6078552007675171e+00 - - 1 2 129 4.2050000000000000e+02 0 -1 130 263. -2 -3 131 - 8.4450000000000000e+02 - - 5.0138735771179199e-01 -4.4576519727706909e-01 - 2.3392482101917267e-01 -3.9459699392318726e-01 - <_> - 1.8623019456863403e+00 - - 1 2 132 2.0850000000000000e+02 0 -1 133 - 5.5000000000000000e+00 -2 -3 134 4.5000000000000000e+00 - - 4.0980271995067596e-02 -6.1965447664260864e-01 - -7.8912788629531860e-01 5.9828245639801025e-01 - <_> - 1.7021096944808960e+00 - - 1 2 135 4.2500000000000000e+01 0 -1 136 - 6.5000000000000000e+00 -2 -3 137 2.2500000000000000e+01 - - 4.1077250242233276e-01 -5.9424054622650146e-01 - 4.9294531345367432e-01 -1.6019217669963837e-01 - <_> - 1.9233746528625488e+00 - - 1 2 138 1.5000000000000000e+00 0 -1 139 - 1.6500000000000000e+01 -2 -3 140 8.7500000000000000e+01 - - -6.7251849174499512e-01 9.7932207584381104e-01 - 2.2126492857933044e-01 -6.2606680393218994e-01 - <_> - 2.1816830635070801e+00 - - 1 2 141 6.8500000000000000e+01 0 -1 142 - 9.6500000000000000e+01 -2 -3 143 4.3350000000000000e+02 - - -3.1670400500297546e-01 2.5830829143524170e-01 - -8.8838213682174683e-01 4.1476368904113770e-01 - <_> - 2.2655973434448242e+00 - - 1 2 144 1.6500000000000000e+01 0 -1 145 - 5.5000000000000000e+00 -2 -3 146 3.0500000000000000e+01 - - 5.9501928091049194e-01 -3.1914636492729187e-01 - -3.8668751716613770e-01 3.1921181082725525e-01 - <_> - 2.6427345275878906e+00 - - 1 2 147 6.5000000000000000e+00 0 -1 148 - 2.4500000000000000e+01 -2 -3 149 1.1500000000000000e+01 - - -4.5482164621353149e-01 4.6515238285064697e-01 - -5.1726001501083374e-01 2.0654375851154327e-01 - <_> - 1.9806412458419800e+00 - - 1 2 150 2.8850000000000000e+02 0 -1 151 - 5.5000000000000000e+00 -2 -3 152 1.1515000000000000e+03 - - -6.6209328174591064e-01 1.8325349688529968e-01 - 4.9089592695236206e-01 -8.4841215610504150e-01 - <_> - 2.4156589508056641e+00 - - 1 2 153 5.0000000000000000e-01 0 -1 154 2811. -2 -3 155 - 5.0000000000000000e-01 - - 4.3501755595207214e-01 -6.5484809875488281e-01 - 4.1686266660690308e-01 -4.1646206378936768e-01 - <_> - 2.7843391895294189e+00 - - 1 2 156 1.1350000000000000e+02 0 -1 157 - 3.3450000000000000e+02 -2 -3 158 3.5000000000000000e+00 - - 3.6868026852607727e-01 -6.1238104104995728e-01 - 6.8396532535552979e-01 -1.2954165227711201e-02 - <_> - 2.8158543109893799e+00 - - 1 2 159 4.2550000000000000e+02 0 -1 160 - 5.6050000000000000e+02 -2 -3 161 3.8500000000000000e+01 - - -5.9484893083572388e-01 3.1515140086412430e-02 - -7.0635133981704712e-01 6.2144660949707031e-01 - <_> - 3.0259079933166504e+00 - - 1 2 162 7.5000000000000000e+00 0 -1 163 - 4.5000000000000000e+00 -2 -3 164 1.6375000000000000e+03 - - -7.1446412801742554e-01 3.4102836251258850e-01 - 3.5541319847106934e-01 -4.5499989390373230e-01 - <_> - 3.3236474990844727e+00 - - 1 2 165 1.5000000000000000e+00 0 -1 166 - 1.0500000000000000e+01 -2 -3 167 5.0000000000000000e-01 - - -7.0691192150115967e-01 5.4418134689331055e-01 - 3.7381768226623535e-01 -3.6192026734352112e-01 - <_> - 3.2000217437744141e+00 - - 1 2 168 1.0500000000000000e+01 0 -1 169 - 6.5000000000000000e+00 -2 -3 170 3.5000000000000000e+00 - - -1.1653541773557663e-01 -8.1098204851150513e-01 - 3.6642596125602722e-01 -2.8248944878578186e-01 - <_> - 3.2462809085845947e+00 - - 1 2 171 1.9850000000000000e+02 0 -1 172 - 2.9500000000000000e+01 -2 -3 173 8.1500000000000000e+01 - - -3.9297759532928467e-01 5.5565875768661499e-01 - 5.2605623006820679e-01 -3.3815068006515503e-01 - <_> - 3.4681446552276611e+00 - - 1 2 174 5.7550000000000000e+02 0 -1 175 338. -2 -3 176 - 1.1515000000000000e+03 - - -7.6464962959289551e-01 9.0472358465194702e-01 - 6.2902992963790894e-01 -3.9204329252243042e-02 - <_> - 3.6334233283996582e+00 - - 1 2 177 4167. 0 -1 178 6.5000000000000000e+00 -2 -3 179 - 3.5000000000000000e+00 - - -9.1638332605361938e-01 1.6527870297431946e-01 - 4.8254090547561646e-01 -8.9626789093017578e-01 - <_> - 3.9205143451690674e+00 - - 1 2 180 6.5000000000000000e+00 0 -1 181 - 1.2500000000000000e+01 -2 -3 182 8.5000000000000000e+00 - - 6.7690986394882202e-01 -2.3904214799404144e-01 - -4.0556749701499939e-01 2.2106994688510895e-01 - <_> - 3.8434190750122070e+00 - - 1 2 183 5.0000000000000000e-01 0 -1 184 - 1.3500000000000000e+01 -2 -3 185 2.6500000000000000e+01 - - -3.2586407661437988e-01 4.4005537033081055e-01 - -6.4374852180480957e-01 1.0862501710653305e-01 - <_> - 3.7773578166961670e+00 - - 1 2 186 1.6500000000000000e+01 0 -1 187 - 9.5000000000000000e+00 -2 -3 188 8.5000000000000000e+00 - - -9.3096941709518433e-01 2.3926372826099396e-01 - 5.1413863897323608e-01 -5.5257624387741089e-01 - <_> - 4.1896114349365234e+00 - - 1 2 189 1.2500000000000000e+01 0 -1 190 - 7.5000000000000000e+00 -2 -3 191 36. - - -6.8173252046108246e-02 5.3156542778015137e-01 - -6.3870549201965332e-01 5.8901703357696533e-01 - <_> - 4.1023836135864258e+00 - - 1 2 192 6.7500000000000000e+01 0 -1 193 - 8.0500000000000000e+01 -2 -3 194 3.9500000000000000e+01 - - 1.7302609980106354e-01 -5.5641782283782959e-01 - -8.8721150159835815e-01 1. - <_> - 4.1807246208190918e+00 - - 1 2 195 1.5235000000000000e+03 0 -1 196 - 2.6952500000000000e+04 -2 -3 197 1.8235000000000000e+03 - - -3.0445727705955505e-01 7.7833265066146851e-01 - 8.7232065200805664e-01 -2.4321475625038147e-01 - <_> - 4.2723703384399414e+00 - - 1 2 198 6.5000000000000000e+00 0 -1 199 - 7.5000000000000000e+00 -2 -3 200 3.4175000000000000e+03 - - 1.3138349354267120e-01 -5.8236575126647949e-01 - 2.2224109619855881e-02 6.9834595918655396e-01 - <_> - 4.6446409225463867e+00 - - 1 2 201 2.1500000000000000e+01 0 -1 202 - 4.5000000000000000e+00 -2 -3 203 7.5000000000000000e+00 - - 1.9490295648574829e-01 -7.6766520738601685e-01 - 3.7227055430412292e-01 -2.2965273261070251e-01 - <_> - 4.2965531349182129e+00 - - 1 2 204 3.5000000000000000e+00 0 -1 205 - 1.1500000000000000e+01 -2 -3 206 1.5000000000000000e+00 - - -2.8419467806816101e-01 4.3421781063079834e-01 - -5.4377484321594238e-01 1.9981886446475983e-01 - <_> - 4.6640934944152832e+00 - - 1 2 207 705. 0 -1 208 1.7500000000000000e+01 -2 -3 209 - 5.0000000000000000e-01 - - 2.7177429199218750e-01 -8.8838618993759155e-01 - 3.6754038929939270e-01 -1.2962521612644196e-01 - <_> - 4.5903968811035156e+00 - - 1 2 210 3.4500000000000000e+01 0 -1 211 - 2.2850000000000000e+02 -2 -3 212 4.5000000000000000e+00 - - 7.0602458715438843e-01 -7.7238667011260986e-01 - 4.3168050050735474e-01 -1.4236643910408020e-01 - <_> - 4.4601187705993652e+00 - - 1 2 213 1.8500000000000000e+01 0 -1 214 - 5.0000000000000000e-01 -2 -3 215 1.6450000000000000e+02 - - 7.2294287383556366e-02 -4.4637727737426758e-01 - 5.0045186281204224e-01 -8.8895571231842041e-01 - <_> - 4.6810216903686523e+00 - - 1 2 216 1.5000000000000000e+00 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 2.2500000000000000e+01 - - 7.5774848461151123e-01 -8.5371148586273193e-01 - -3.8080200552940369e-01 2.2090284526348114e-01 - <_> - 4.5454678535461426e+00 - - 1 2 219 5.0000000000000000e-01 0 -1 220 - 2.4500000000000000e+01 -2 -3 221 1.3950000000000000e+02 - - -1.9623221457004547e-01 9.1209959983825684e-01 - 2.2579464316368103e-01 -3.2021987438201904e-01 - <_> - 4.7205095291137695e+00 - - 1 2 222 6.8250000000000000e+02 0 -1 223 - 5.8750000000000000e+02 -2 -3 224 4.9250000000000000e+02 - - -6.1928713321685791e-01 4.4073671102523804e-01 - 5.2129870653152466e-01 -9.0712592005729675e-02 - <_> - 5.0539321899414062e+00 - - 1 2 225 1.5500000000000000e+01 0 -1 226 - 6.3500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 3.9318233728408813e-01 -3.8358560204505920e-01 - 4.2106309533119202e-01 -5.5091488361358643e-01 - <_> - 5.2054772377014160e+00 - - 1 2 228 3.1500000000000000e+01 0 -1 229 - 2.3500000000000000e+01 -2 -3 230 3.3750000000000000e+02 - - -6.1581993103027344e-01 7.1099334955215454e-01 - 2.9412022233009338e-01 -7.1934843063354492e-01 - <_> - 5.1629271507263184e+00 - - 1 2 231 3.2950000000000000e+02 0 -1 232 - 5.0000000000000000e-01 -2 -3 233 1864. - - 2.0024216175079346e-01 -3.3125820755958557e-01 - 9.7632443904876709e-01 -8.2965487241744995e-01 - <_> - 5.4650130271911621e+00 - - 1 2 234 4.0550000000000000e+02 0 -1 235 - 2.7750000000000000e+02 -2 -3 236 5.7155000000000000e+03 - - 2.2284466028213501e-01 -4.8526307940483093e-01 - 8.1116855144500732e-01 -1.5218812972307205e-02 - <_> - 5.4984669685363770e+00 - - 1 2 237 4.5000000000000000e+00 0 -1 238 - 1.7500000000000000e+01 -2 -3 239 2.9500000000000000e+01 - - -6.3221347332000732e-01 3.8014096021652222e-01 - -6.2983202934265137e-01 1.1483613401651382e-01 - <_> - 5.4328503608703613e+00 - - 1 2 240 2.2500000000000000e+01 0 -1 241 - 3.2750000000000000e+02 -2 -3 242 5.5250000000000000e+02 - - 2.7665451169013977e-01 -4.1230320930480957e-01 - 5.8497339487075806e-01 -9.2561680078506470e-01 - <_> - 5.2271656990051270e+00 - - 1 2 243 2.5000000000000000e+00 0 -1 244 - 1.5000000000000000e+00 -2 -3 245 4.1500000000000000e+01 - - -6.2440222501754761e-01 3.4950828552246094e-01 - -4.4587394595146179e-01 3.7627801299095154e-01 - <_> - 5.7503991127014160e+00 - - 1 2 246 2.5500000000000000e+01 0 -1 247 - 1.7500000000000000e+01 -2 -3 248 1742. - - 1.7403741180896759e-01 -4.8115825653076172e-01 - -8.1405687332153320e-01 5.2323335409164429e-01 - <_> - 5.9725828170776367e+00 - - 1 2 249 2.5000000000000000e+00 0 -1 250 - 1.8750000000000000e+02 -2 -3 251 3.0750000000000000e+02 - - 5.0755202770233154e-01 -9.1562610864639282e-01 - 2.2218362987041473e-01 -5.9081828594207764e-01 - <_> - 5.9053583145141602e+00 - - 1 2 252 4.4500000000000000e+01 0 -1 253 - 7.5000000000000000e+00 -2 -3 254 2.3500000000000000e+01 - - 2.7661845088005066e-01 -7.2863763570785522e-01 - 2.9604527354240417e-01 -3.9353659749031067e-01 - <_> - 6.2247257232666016e+00 - - 1 2 255 2.7915000000000000e+03 0 -1 256 - 5.0000000000000000e-01 -2 -3 257 2.7750000000000000e+02 - - 5.7657641172409058e-01 -5.8752876520156860e-01 - 7.3920065164566040e-01 -5.6199613958597183e-02 - <_> - 6.3211832046508789e+00 - - 1 2 258 1.5000000000000000e+00 0 -1 259 - 1.5950000000000000e+02 -2 -3 260 9.5000000000000000e+00 - - 3.8729599118232727e-01 -8.2186138629913330e-01 - -7.5912064313888550e-01 -9.1310448944568634e-02 - <_> - 6.1939978599548340e+00 - - 1 2 261 5.0000000000000000e-01 0 -1 262 - 1.1500000000000000e+01 -2 -3 263 2.5000000000000000e+00 - - -6.8085348606109619e-01 3.7691861391067505e-01 - 3.6999684572219849e-01 -4.1802382469177246e-01 - <_> - 6.5674057006835938e+00 - - 1 2 264 4.6500000000000000e+01 0 -1 265 - 1.6500000000000000e+01 -2 -3 266 2.5500000000000000e+01 - - -2.4361716583371162e-02 -7.4328392744064331e-01 - 3.7340793013572693e-01 -3.1576988101005554e-01 - <_> - 6.4908089637756348e+00 - - 1 2 267 6.5000000000000000e+00 0 -1 268 - 1.5000000000000000e+00 -2 -3 269 5.0000000000000000e-01 - - -9.5202457904815674e-01 7.6004970073699951e-01 - 4.0044522285461426e-01 -1.8293106555938721e-01 - <_> - 6.7305116653442383e+00 - - 1 2 270 1.3450000000000000e+02 0 -1 271 69. -2 -3 272 - 2.5500000000000000e+01 - - -3.7816595286130905e-02 -9.0281504392623901e-01 - -5.4295367002487183e-01 2.3970291018486023e-01 - <_> - 6.8999171257019043e+00 - - 1 2 273 2.5000000000000000e+00 0 -1 274 - 2.5000000000000000e+00 -2 -3 275 1.5000000000000000e+00 - - -5.0667393207550049e-01 3.6585667729377747e-01 - 3.1221818923950195e-01 -4.8534518480300903e-01 - <_> - 7.0018959045410156e+00 - - 1 2 276 3.5000000000000000e+00 0 -1 277 - 3.5000000000000000e+00 -2 -3 278 266. - - -3.6587709188461304e-01 6.2320345640182495e-01 - -3.9827787876129150e-01 2.4151444435119629e-01 - <_> - 7.1498341560363770e+00 - - 1 2 279 6.5000000000000000e+00 0 -1 280 - 3.7500000000000000e+01 -2 -3 281 3.3550000000000000e+02 - - 5.1520365476608276e-01 -6.4510118961334229e-01 - -4.8505461215972900e-01 1.4793802797794342e-01 - <_> - 7.0538568496704102e+00 - - 1 2 282 1540. 0 -1 283 2.2500000000000000e+01 -2 -3 284 - 5.0500000000000000e+01 - - -2.7819830179214478e-01 3.7289941310882568e-01 - -5.9334021806716919e-01 5.5907440185546875e-01 - <_> - 7.3145952224731445e+00 - - 1 2 285 5.0000000000000000e-01 0 -1 286 - 5.0500000000000000e+01 -2 -3 287 5.0000000000000000e-01 - - -6.9114875793457031e-01 4.3989965319633484e-01 - 2.9516109824180603e-01 -5.3384852409362793e-01 - <_> - 7.2128500938415527e+00 - - 1 2 288 7.5000000000000000e+00 0 -1 289 - 8.5000000000000000e+00 -2 -3 290 8.7500000000000000e+01 - - -5.5619347095489502e-01 5.4719102382659912e-01 - 3.2581725716590881e-01 -6.7037367820739746e-01 - <_> - 7.0432367324829102e+00 - - 1 2 291 2.5000000000000000e+00 0 -1 292 - 3.5000000000000000e+00 -2 -3 293 1.6805000000000000e+03 - - -1.8180048465728760e-01 4.9322417378425598e-01 - 1.2089827656745911e-01 -5.3679817914962769e-01 - <_> - 7.1085200309753418e+00 - - 1 2 294 8.0250000000000000e+02 0 -1 295 - 3.5000000000000000e+00 -2 -3 296 1.5465000000000000e+03 - - 4.4113153219223022e-01 -4.7889050841331482e-01 - 4.8183086514472961e-01 -2.7461019158363342e-01 - <_> - 7.4934172630310059e+00 - - 1 2 297 5.5000000000000000e+00 0 -1 298 - 9.5000000000000000e+00 -2 -3 299 5.0000000000000000e-01 - - -7.8466171026229858e-01 3.8489729166030884e-01 - 1.2428891658782959e-01 -5.3000146150588989e-01 - <_> - 7.7679367065429688e+00 - - 1 2 300 4.5000000000000000e+00 0 -1 301 - 3.8500000000000000e+01 -2 -3 302 1.0500000000000000e+01 - - -5.8519446849822998e-01 1.3908083736896515e-01 - 3.4237712621688843e-01 -5.5784845352172852e-01 - <_> - 8.2031955718994141e+00 - - 1 2 303 1.0500000000000000e+01 0 -1 304 - 1.5000000000000000e+00 -2 -3 305 1.1500000000000000e+01 - - -3.8500145077705383e-01 4.3525907397270203e-01 - -7.3580604791641235e-01 -1.5477402135729790e-02 - <_> - 7.8415699005126953e+00 - - 1 2 306 1.1500000000000000e+01 0 -1 307 - 1.9950000000000000e+02 -2 -3 308 2.1050000000000000e+02 - - 3.0834931135177612e-01 -5.2214068174362183e-01 - -6.1229497194290161e-01 1.6261228919029236e-01 - <_> - 8.1340169906616211e+00 - - 1 2 309 4.4500000000000000e+01 0 -1 310 - 5.0000000000000000e-01 -2 -3 311 2.7750000000000000e+02 - - 3.8989096879959106e-01 -4.0270605683326721e-01 - -3.7438669800758362e-01 4.9117839336395264e-01 - <_> - 8.0494565963745117e+00 - - 1 2 312 2.9215000000000000e+03 0 -1 313 5981. -2 -3 314 - 1.4500000000000000e+01 - - -8.4560506045818329e-02 5.6669616699218750e-01 - -6.5312331914901733e-01 1.4199882745742798e-01 - <_> - 8.1713457107543945e+00 - - 1 2 315 8.1500000000000000e+01 0 -1 316 66. -2 -3 317 371. - - 4.5325097441673279e-01 -3.0569469928741455e-01 - 5.9206598997116089e-01 -6.7238986492156982e-01 - <_> - 8.2347335815429688e+00 - - 1 2 318 4.1450000000000000e+02 0 -1 319 - 5.0000000000000000e-01 -2 -3 320 410. - - 3.8724437355995178e-01 -3.1869423389434814e-01 - 8.7538170814514160e-01 -9.7314991056919098e-02 - <_> - 8.5628070831298828e+00 - - 1 2 321 1.0500000000000000e+01 0 -1 322 - 5.0000000000000000e-01 -2 -3 323 2.5000000000000000e+00 - - 7.2377610206604004e-01 -8.4155076742172241e-01 - 3.2807359099388123e-01 -2.0454038679599762e-01 - <_> - 8.5264968872070312e+00 - - 1 2 324 9.9150000000000000e+02 0 -1 325 - 7.0350000000000000e+02 -2 -3 326 6. - - 1.8747280538082123e-01 -3.3632183074951172e-01 - 8.6560744047164917e-01 -9.4016164541244507e-01 - <_> - 8.5532627105712891e+00 - - 1 2 327 1.1500000000000000e+01 0 -1 328 - 2.7450000000000000e+02 -2 -3 329 5.0000000000000000e-01 - - 8.5004931688308716e-01 -8.5131084918975830e-01 - 4.0861058235168457e-01 -1.2481645494699478e-01 - <_> - 8.7125473022460938e+00 - - 1 2 330 4.9350000000000000e+02 0 -1 331 - 1.0500000000000000e+01 -2 -3 332 488. - - 3.3095937967300415e-01 -9.6550559997558594e-01 - 1.5928384661674500e-01 -7.0109528303146362e-01 - <_> - 8.5748119354248047e+00 - - 1 2 333 5.8750000000000000e+02 0 -1 334 - 5.3965000000000000e+03 -2 -3 335 1.9550000000000000e+02 - - -5.2717298269271851e-01 7.5915068387985229e-01 - 6.2651741504669189e-01 -7.6558768749237061e-02 - <_> - 8.5311050415039062e+00 - - 1 2 336 3.5000000000000000e+00 0 -1 337 - 1.8500000000000000e+01 -2 -3 338 1.1500000000000000e+01 - - -5.9637790918350220e-01 6.7646257579326630e-02 - 6.4769101142883301e-01 -3.3726450055837631e-02 - <_> - 9.0640134811401367e+00 - - 1 2 339 1.5000000000000000e+00 0 -1 340 - 2.5000000000000000e+00 -2 -3 341 3.4500000000000000e+01 - - -6.8097436428070068e-01 6.0266649723052979e-01 - -3.0453455448150635e-01 4.0144833922386169e-01 - <_> - 8.9831085205078125e+00 - - 1 2 342 2.5000000000000000e+00 0 -1 343 - 2.1750000000000000e+02 -2 -3 344 3.1850000000000000e+02 - - 9.3521779775619507e-01 -8.8511615991592407e-01 - -8.0904886126518250e-02 4.7593075037002563e-01 - <_> - 9.3769168853759766e+00 - - 1 2 345 1.8345000000000000e+03 0 -1 346 7548. -2 -3 347 - 2.5000000000000000e+00 - - -9.6914649009704590e-01 8.2535630464553833e-01 - 9.6199281513690948e-02 -4.2918723821640015e-01 - <_> - 9.3018980026245117e+00 - - 1 2 348 3.4500000000000000e+01 0 -1 349 - 5.0000000000000000e-01 -2 -3 350 4.5000000000000000e+00 - - 7.7495819330215454e-01 -7.7019518613815308e-01 - -6.7532777786254883e-01 2.1935020387172699e-01 - <_> - 9.5473661422729492e+00 - - 1 2 351 3.5000000000000000e+00 0 -1 352 - 3.8150000000000000e+02 -2 -3 353 2.5000000000000000e+00 - - 2.4546769261360168e-01 -9.4206953048706055e-01 - 5.2967166900634766e-01 -5.7282263040542603e-01 - <_> - 9.3910045623779297e+00 - - 1 2 354 4.2500000000000000e+01 0 -1 355 - 2.5000000000000000e+00 -2 -3 356 2.5000000000000000e+00 - - 4.9605733156204224e-01 -8.9919465780258179e-01 - 4.6279174089431763e-01 -1.5636166930198669e-01 - <_> - 9.2007036209106445e+00 - - 1 2 357 3.0750000000000000e+02 0 -1 358 - 5.0000000000000000e-01 -2 -3 359 1.7500000000000000e+01 - - 9.5931455492973328e-02 -5.2677857875823975e-01 - -6.8146902322769165e-01 4.2670670151710510e-01 - <_> - 9.4172534942626953e+00 - - 1 2 360 436. 0 -1 361 1.0500000000000000e+01 -2 -3 362 - 1.4150000000000000e+02 - - -4.8916128277778625e-01 2.1654944121837616e-01 - -9.5991367101669312e-01 2.0731329917907715e-02 - <_> - 9.3878002166748047e+00 - - 1 2 363 2.1500000000000000e+01 0 -1 364 - 5.0000000000000000e-01 -2 -3 365 7.5000000000000000e+00 - - 6.1134243011474609e-01 -1.5622694790363312e-01 - -2.9453342780470848e-02 -6.6399675607681274e-01 - <_> - 9.3314304351806641e+00 - - 1 2 366 5.6500000000000000e+01 0 -1 367 - 2.3500000000000000e+01 -2 -3 368 4.5000000000000000e+00 - - -7.5016134977340698e-01 6.0379421710968018e-01 - 5.0015795230865479e-01 -5.6369733065366745e-02 - <_> - 9.8574962615966797e+00 - - 1 2 369 3.5000000000000000e+00 0 -1 370 2013. -2 -3 371 - 1.9500000000000000e+01 - - 8.2091175019741058e-02 -6.4141482114791870e-01 - -1.7478708922863007e-01 5.2606624364852905e-01 - <_> - 1.0064584732055664e+01 - - 1 2 372 2.0650000000000000e+02 0 -1 373 - 1.7500000000000000e+01 -2 -3 374 1.0450000000000000e+02 - - -1.0901508852839470e-02 -6.5456998348236084e-01 - 6.3896632194519043e-01 -1.6473773121833801e-01 - <_> - 1.0252257347106934e+01 - - 1 2 375 5.5000000000000000e+00 0 -1 376 - 3.4500000000000000e+01 -2 -3 377 5.5000000000000000e+00 - - 3.2374709844589233e-01 -5.0062644481658936e-01 - -7.0661611855030060e-02 -7.5508368015289307e-01 - <_> - 1.0398225784301758e+01 - - 1 2 378 2.5000000000000000e+00 0 -1 379 - 5.2500000000000000e+01 -2 -3 380 1.8785000000000000e+03 - - -9.0781456232070923e-01 1. -6.3530296087265015e-01 - 1.4596807956695557e-01 - <_> - 1.0281527519226074e+01 - - 1 2 381 4.8500000000000000e+01 0 -1 382 - 1.2500000000000000e+01 -2 -3 383 2.7950000000000000e+02 - - 1.5367124974727631e-01 -8.4021937847137451e-01 - 4.6640846133232117e-01 -1.1669804900884628e-01 - <_> - 1.0402153968811035e+01 - - 1 2 384 6.5750000000000000e+02 0 -1 385 - 2.5000000000000000e+00 -2 -3 386 1.2991500000000000e+04 - - 1.8093550205230713e-01 -3.1117281317710876e-01 - 8.3136463165283203e-01 -9.4209736585617065e-01 - <_> - 1.0749721527099609e+01 - - 1 2 387 1.5500000000000000e+01 0 -1 388 3147. -2 -3 389 - 5.0000000000000000e-01 - - 5.8778691291809082e-01 -8.4557241201400757e-01 - 3.5276123881340027e-01 -1.5734243392944336e-01 - <_> - 1.0613196372985840e+01 - - 1 2 390 2.9405000000000000e+03 0 -1 391 - 5.0000000000000000e-01 -2 -3 392 4.5500000000000000e+01 - - 3.9040172100067139e-01 -1.3652552664279938e-01 - -9.2412209510803223e-01 -8.2783259451389313e-02 - <_> - 1.0694108009338379e+01 - - 1 2 393 5.0500000000000000e+01 0 -1 394 - 5.0000000000000000e-01 -2 -3 395 4.5000000000000000e+00 - - 4.7963955998420715e-01 -7.4252939224243164e-01 - -6.8665945529937744e-01 1.9869653880596161e-01 - <_> - 1.0847300529479980e+01 - - 1 2 396 1.4500000000000000e+01 0 -1 397 - 5.5000000000000000e+00 -2 -3 398 1.5000000000000000e+00 - - -6.5649849176406860e-01 3.1507906317710876e-01 - 5.9824740886688232e-01 -4.3184515833854675e-01 - <_> - 1.0666165351867676e+01 - - 1 2 399 2.5000000000000000e+00 0 -1 400 - 4.5000000000000000e+00 -2 -3 401 5.0000000000000000e-01 - - -3.0361318588256836e-01 4.3227225542068481e-01 - 3.5962799191474915e-01 -4.3973237276077271e-01 - <_> - 1.0870504379272461e+01 - - 1 2 402 2.6500000000000000e+01 0 -1 403 - 1.5000000000000000e+00 -2 -3 404 8.4500000000000000e+01 - - 1.6933162510395050e-01 -5.0010979175567627e-01 - -3.3642402291297913e-01 4.9337503314018250e-01 - <_> - 1.0975853919982910e+01 - - 1 2 405 2.5000000000000000e+00 0 -1 406 - 1.4795000000000000e+03 -2 -3 407 1.5000000000000000e+00 - - 5.9212744235992432e-02 -6.0414147377014160e-01 - 5.3754031658172607e-01 -1.4943325519561768e-01 - <_> - 1.1088579177856445e+01 - - 1 2 408 1.9500000000000000e+01 0 -1 409 - 8.0500000000000000e+01 -2 -3 410 2.5000000000000000e+00 - - -5.4455469362437725e-03 7.1131867170333862e-01 - 1.2728694081306458e-01 -5.3219115734100342e-01 - <_> - 1.1411317825317383e+01 - - 1 2 411 6.5000000000000000e+00 0 -1 412 - 5.0000000000000000e-01 -2 -3 413 5.0000000000000000e-01 - - -9.8449540138244629e-01 7.5238209962844849e-01 - 3.2273903489112854e-01 -2.0153416693210602e-01 - <_> - 1.1409852027893066e+01 - - 1 2 414 3.2650000000000000e+02 0 -1 415 - 4.5000000000000000e+00 -2 -3 416 1.0500000000000000e+01 - - 1.5437091886997223e-01 -3.4433943033218384e-01 - 8.3089745044708252e-01 -8.7578713893890381e-01 - <_> - 1.1487524032592773e+01 - - 1 2 417 9.4500000000000000e+01 0 -1 418 - 5.3150000000000000e+02 -2 -3 419 1.5000000000000000e+00 - - 7.5558461248874664e-02 -7.0222413539886475e-01 - 4.5731905102729797e-01 -1.0453109443187714e-01 - <_> - 1.1415844917297363e+01 - - 1 2 420 2.0350000000000000e+02 0 -1 421 - 5.1500000000000000e+01 -2 -3 422 1.4350000000000000e+02 - - -8.8595420122146606e-02 -8.2399624586105347e-01 - 7.0543432235717773e-01 8.3339767297729850e-04 - <_> - 1.1137701034545898e+01 - - 1 2 423 1.1500000000000000e+01 0 -1 424 - 2.7850000000000000e+02 -2 -3 425 1231. - - 2.5673583149909973e-01 -2.7814364433288574e-01 - 7.7550095319747925e-01 -6.8776667118072510e-01 - <_> - 1.1352587699890137e+01 - - 1 2 426 1.5000000000000000e+00 0 -1 427 - 4.2500000000000000e+01 -2 -3 428 436. - - -8.6447370052337646e-01 3.8263612985610962e-01 - 2.1488623321056366e-01 -6.5995728969573975e-01 - <_> - 1.1502726554870605e+01 - - 1 2 429 4.5000000000000000e+00 0 -1 430 - 8.9500000000000000e+01 -2 -3 431 1.2500000000000000e+01 - - -5.1148355007171631e-01 4.3896585702896118e-01 - -4.8310482501983643e-01 1.8991161882877350e-01 - <_> - 1.1872124671936035e+01 - - 1 2 432 5.0000000000000000e-01 0 -1 433 - 4.5000000000000000e+00 -2 -3 434 1.1500000000000000e+01 - - -5.1016438007354736e-01 3.6939758062362671e-01 - 1.1107332259416580e-01 -6.3128584623336792e-01 - <_> - 1.1897380828857422e+01 - - 1 2 435 1.5000000000000000e+00 0 -1 436 - 8.5000000000000000e+00 -2 -3 437 1.4500000000000000e+01 - - -7.3261368274688721e-01 5.7636475563049316e-01 - -4.3446037173271179e-01 2.1413095295429230e-01 - <_> - 1.1853853225708008e+01 - - 1 2 438 3706. 0 -1 439 1.5000000000000000e+00 -2 -3 440 - 4410. - - 5.6994712352752686e-01 -4.3527409434318542e-02 - -7.2693550586700439e-01 4.1713526844978333e-01 - <_> - 1.1845816612243652e+01 - - 1 2 441 6.5000000000000000e+00 0 -1 442 - 1.5500000000000000e+01 -2 -3 443 5.3500000000000000e+01 - - -8.0371825024485588e-03 -5.7360154390335083e-01 - 5.8637946844100952e-01 -4.5183259248733521e-01 - <_> - 1.1606418609619141e+01 - - 1 2 444 5.7500000000000000e+01 0 -1 445 - 1.3650000000000000e+02 -2 -3 446 3.3595000000000000e+03 - - 4.9911895394325256e-01 -5.3746724128723145e-01 - -2.3939760029315948e-01 3.7778580188751221e-01 - <_> - 1.1980805397033691e+01 - - 1 2 447 4.5000000000000000e+00 0 -1 448 - 3.5000000000000000e+00 -2 -3 449 1.1500000000000000e+01 - - -7.3552447557449341e-01 3.7438639998435974e-01 - -4.0720772743225098e-01 4.5558989048004150e-01 - <_> - 1.2240980148315430e+01 - - 1 2 450 2.0950000000000000e+02 0 -1 451 - 3.5000000000000000e+00 -2 -3 452 2.0450000000000000e+02 - - 2.6017466187477112e-01 -4.3274480104446411e-01 - 6.6186487674713135e-01 -1.9433960318565369e-01 - <_> - 1.1877487182617188e+01 - - 1 2 453 8.7500000000000000e+01 0 -1 454 - 3.3500000000000000e+01 -2 -3 455 1.9500000000000000e+01 - - -3.6349293589591980e-01 2.8466138243675232e-01 - -8.9488905668258667e-01 2.0050047338008881e-01 - <_> - 1.2315251350402832e+01 - - 1 2 456 6.5000000000000000e+00 0 -1 457 - 2.8500000000000000e+01 -2 -3 458 1.1500000000000000e+01 - - -4.2718878388404846e-01 4.3776413798332214e-01 - -4.0096122026443481e-01 4.4375243782997131e-01 - <_> - 1.2738058090209961e+01 - - 1 2 459 2.5000000000000000e+00 0 -1 460 - 5.5000000000000000e+00 -2 -3 461 4.2050000000000000e+02 - - -1. 4.2698940634727478e-01 1.3992704451084137e-01 - -4.4792297482490540e-01 - <_> - 1.2678054809570312e+01 - - 1 2 462 4.6035000000000000e+03 0 -1 463 - 1.2500000000000000e+01 -2 -3 464 1.6885000000000000e+03 - - -6.3804382085800171e-01 2.8076967597007751e-01 - 7.0788478851318359e-01 -6.0002621263265610e-02 - <_> - 1.2586655616760254e+01 - - 1 2 465 2.1150000000000000e+02 0 -1 466 - 3.5000000000000000e+00 -2 -3 467 3.1365000000000000e+03 - - 3.2408985495567322e-01 -3.3107626438140869e-01 - 8.7245899438858032e-01 -1.1116035282611847e-01 - <_> - 1.2680603027343750e+01 - - 1 2 468 2.2500000000000000e+01 0 -1 469 - 4.5500000000000000e+01 -2 -3 470 4.8500000000000000e+01 - - 9.3947365880012512e-02 -5.0669384002685547e-01 - 6.3860702514648438e-01 -5.6095314025878906e-01 - <_> - 1.2646597862243652e+01 - - 1 2 471 5.7750000000000000e+02 0 -1 472 2607. -2 -3 473 - 8.4850000000000000e+02 - - -8.0222898721694946e-01 4.9571409821510315e-01 - 6.9677603244781494e-01 -3.4005377441644669e-02 - <_> - 1.3080556869506836e+01 - - 1 2 474 3.5000000000000000e+00 0 -1 475 - 2.9025000000000000e+03 -2 -3 476 1.4500000000000000e+01 - - 6.3582272268831730e-03 -7.6159459352493286e-01 - 4.4750732183456421e-01 -1.8545417487621307e-01 - <_> - 1.3341848373413086e+01 - - 1 2 477 2.5000000000000000e+00 0 -1 478 - 1.3500000000000000e+01 -2 -3 479 5.0000000000000000e-01 - - -4.0977507829666138e-01 3.4295764565467834e-01 - 9.3431934714317322e-02 -7.1162647008895874e-01 - <_> - 1.2996747970581055e+01 - - 1 2 480 5.5000000000000000e+00 0 -1 481 - 6.5000000000000000e+00 -2 -3 482 3.1450000000000000e+02 - - -5.9179306030273438e-01 5.3183627128601074e-01 - 2.9362958669662476e-01 -5.2066570520401001e-01 - <_> - 1.3275168418884277e+01 - - 1 2 483 5.0000000000000000e-01 0 -1 484 - 5.8550000000000000e+02 -2 -3 485 1.2025000000000000e+03 - - -4.2056784033775330e-01 5.3556817770004272e-01 - 5.9011709690093994e-01 -3.4758779406547546e-01 - <_> - 1.3466418266296387e+01 - - 1 2 486 5.5000000000000000e+00 0 -1 487 - 5.0000000000000000e-01 -2 -3 488 14734. - - 4.4770663976669312e-01 -8.6989867687225342e-01 - 1.9124945998191833e-01 -7.6927727460861206e-01 - <_> - 1.3708694458007812e+01 - - 1 2 489 3.5150000000000000e+02 0 -1 490 - 2.4500000000000000e+01 -2 -3 491 1.2500000000000000e+01 - - 5.4361712932586670e-01 -9.3802767992019653e-01 - 2.4227620661258698e-01 -3.2380709052085876e-01 - <_> - 1.3621360778808594e+01 - - 1 2 492 1.5750000000000000e+02 0 -1 493 45. -2 -3 494 - 6.5000000000000000e+00 - - 4.8756289482116699e-01 -6.2756335735321045e-01 - 5.6488978862762451e-01 -8.7333582341670990e-02 - <_> - 1.3719803810119629e+01 - - 1 2 495 1.4500000000000000e+01 0 -1 496 - 3.2785000000000000e+03 -2 -3 497 1.2500000000000000e+01 - - -8.3579055964946747e-02 -9.0902733802795410e-01 - 4.0620484948158264e-01 -2.2033128142356873e-01 - <_> - 1.3743362426757812e+01 - - 1 2 498 1.7500000000000000e+01 0 -1 499 - 2.5500000000000000e+01 -2 -3 500 446. - - 5.8430969715118408e-02 -5.6837719678878784e-01 - -1.8840381503105164e-01 6.9564127922058105e-01 - <_> - 1.3924007415771484e+01 - - 1 2 501 8.0450000000000000e+02 0 -1 502 - 4.0500000000000000e+01 -2 -3 503 2.5000000000000000e+00 - - -4.7573506832122803e-01 2.6540222764015198e-01 - -3.4159180521965027e-01 5.4993849992752075e-01 - <_> - 1.4126693725585938e+01 - - 1 2 504 2.5000000000000000e+00 0 -1 505 3876. -2 -3 506 - 7.5000000000000000e+00 - - 4.1770899295806885e-01 -3.8963168859481812e-01 - 1.9346395134925842e-01 -5.6205403804779053e-01 - <_> - 1.4377063751220703e+01 - - 1 2 507 1.0630500000000000e+04 0 -1 508 - 1.7500000000000000e+01 -2 -3 509 5.0000000000000000e-01 - - 4.2469942569732666e-01 -6.3991433382034302e-01 - 7.5341060757637024e-02 -5.3553485870361328e-01 - <_> - 1.4237608909606934e+01 - - 1 2 510 5.7500000000000000e+01 0 -1 511 - 6.5000000000000000e+00 -2 -3 512 2.8500000000000000e+01 - - 5.4694686084985733e-02 -5.2880686521530151e-01 - -3.4901857376098633e-01 4.7299972176551819e-01 - <_> - 1.4564194679260254e+01 - - 1 2 513 7.5000000000000000e+00 0 -1 514 - 8.5000000000000000e+00 -2 -3 515 4.5000000000000000e+00 - - -5.7572060823440552e-01 4.0378063917160034e-01 - 1.7233282327651978e-01 -5.5302166938781738e-01 - <_> - 1.4479125976562500e+01 - - 1 2 516 4.1500000000000000e+01 0 -1 517 - 5.0000000000000000e-01 -2 -3 518 3.5000000000000000e+00 - - 6.9208496809005737e-01 -9.3342530727386475e-01 - 4.8711183667182922e-01 -8.5068866610527039e-02 - <_> - 1.4771840095520020e+01 - - 1 2 519 3.2350000000000000e+02 0 -1 520 - 6.8500000000000000e+01 -2 -3 521 2.9050000000000000e+02 - - -5.6921553611755371e-01 7.5075703859329224e-01 - 3.0680647492408752e-01 -5.3018033504486084e-01 - <_> - 1.4921194076538086e+01 - - 1 2 522 9.5000000000000000e+00 0 -1 523 178. -2 -3 524 - 1.5000000000000000e+00 - - 2.7555197477340698e-01 -8.4987080097198486e-01 - 7.1478825807571411e-01 -4.7535741329193115e-01 - <_> - 1.5011672019958496e+01 - - 1 2 525 3.5500000000000000e+01 0 -1 526 - 4.9450000000000000e+02 -2 -3 527 151. - - -4.1447910666465759e-01 9.0478152036666870e-02 - 7.2348231077194214e-01 -8.4134203195571899e-01 - <_> - 1.5009381294250488e+01 - - 1 2 528 1.0075000000000000e+03 0 -1 529 - 4.6135000000000000e+03 -2 -3 530 5.0000000000000000e-01 - - -1.3591668009757996e-01 5.0908648967742920e-01 - 4.3699756264686584e-02 -6.3745105266571045e-01 - <_> - 1.4872577667236328e+01 - - 1 2 531 4.9500000000000000e+01 0 -1 532 - 7.5000000000000000e+00 -2 -3 533 2.6500000000000000e+01 - - 5.5888742208480835e-02 -5.8190774917602539e-01 - -7.9333829879760742e-01 5.4325503110885620e-01 - <_> - 1.5080644607543945e+01 - - 1 2 534 4.7500000000000000e+01 0 -1 535 - 1.4500000000000000e+01 -2 -3 536 2.7500000000000000e+01 - - -8.9569383859634399e-01 2.0806635916233063e-01 - -7.5062823295593262e-01 2.4852557480335236e-01 - <_> - 1.5080853462219238e+01 - - 1 2 537 6.5000000000000000e+00 0 -1 538 - 8.5000000000000000e+00 -2 -3 539 3.8050000000000000e+02 - - -6.1480957269668579e-01 3.2939058542251587e-01 - 4.0805706381797791e-01 -4.6099272370338440e-01 - <_> - 1.4875501632690430e+01 - - 1 2 540 1.0500000000000000e+01 0 -1 541 - 1.5000000000000000e+00 -2 -3 542 478. - - -9.0150666236877441e-01 3.4228125214576721e-01 - -5.9740513563156128e-01 8.7162934243679047e-02 - <_> - 1.5382561683654785e+01 - - 1 2 543 5.5000000000000000e+00 0 -1 544 - 5.0000000000000000e-01 -2 -3 545 2.5500000000000000e+01 - - -3.2944935560226440e-01 5.0705975294113159e-01 - -3.9558005332946777e-01 3.1945833563804626e-01 - <_> - 1.5631669998168945e+01 - - 1 2 546 1.5000000000000000e+00 0 -1 547 - 1.1500000000000000e+01 -2 -3 548 3.5000000000000000e+00 - - -5.0148051977157593e-01 3.6997869610786438e-01 - 7.7569979429244995e-01 -3.7318921089172363e-01 - <_> - 1.5227413177490234e+01 - - 1 2 549 5.5000000000000000e+00 0 -1 550 - 2.5000000000000000e+00 -2 -3 551 8.2500000000000000e+01 - - 9.7206316888332367e-02 -5.2512657642364502e-01 - 5.3593277931213379e-01 -5.2903693914413452e-01 - <_> - 1.5712855339050293e+01 - - 1 2 552 1.5000000000000000e+00 0 -1 553 - 1.1500000000000000e+01 -2 -3 554 1.5000000000000000e+00 - - -5.5320370197296143e-01 5.5974000692367554e-01 - -4.7809949517250061e-01 1.2362124770879745e-01 - <_> - 1.5475475311279297e+01 - - 1 2 555 1.1150000000000000e+02 0 -1 556 107. -2 -3 557 - 5.4500000000000000e+01 - - 2.2000953555107117e-01 -5.7901185750961304e-01 - 5.5795150995254517e-01 -2.0629312098026276e-01 - <_> - 1.5877110481262207e+01 - - 1 2 558 5.0000000000000000e-01 0 -1 559 - 4.7500000000000000e+01 -2 -3 560 4.0850000000000000e+02 - - 4.0163558721542358e-01 -6.5443444252014160e-01 - 3.9427250623703003e-01 -4.3203008174896240e-01 - <_> - 1.5799601554870605e+01 - - 1 2 561 2.0250000000000000e+02 0 -1 562 - 5.0000000000000000e-01 -2 -3 563 2399. - - 1.2356969714164734e-01 -5.3489917516708374e-01 - 4.6495470404624939e-01 -5.8487701416015625e-01 - <_> - 1.6042089462280273e+01 - - 1 2 564 7.0450000000000000e+02 0 -1 565 - 4.4500000000000000e+01 -2 -3 566 288. - - 4.8793616890907288e-01 -8.4778493642807007e-01 - -4.3374565243721008e-01 2.4248743057250977e-01 - <_> - 1.6111749649047852e+01 - - 1 2 567 1.8500000000000000e+01 0 -1 568 - 1.2500000000000000e+01 -2 -3 569 5.0000000000000000e-01 - - -4.8669865727424622e-01 2.7788683772087097e-01 - 3.6192622780799866e-01 -5.7420414686203003e-01 - <_> - 1.6021078109741211e+01 - - 1 2 570 8.3450000000000000e+02 0 -1 571 4451. -2 -3 572 - 3.2950000000000000e+02 - - 5.3921067714691162e-01 -4.8135292530059814e-01 - -2.9889726638793945e-01 6.0160857439041138e-01 - <_> - 1.6436674118041992e+01 - - 1 2 573 1.2500000000000000e+01 0 -1 574 - 6.5000000000000000e+00 -2 -3 575 2.9500000000000000e+01 - - 4.3214797973632812e-01 -2.8101849555969238e-01 - 6.6012543439865112e-01 -7.0270007848739624e-01 - <_> - 1.6612668991088867e+01 - - 1 2 576 4.4500000000000000e+01 0 -1 577 3724. -2 -3 578 - 7.5000000000000000e+00 - - 6.2758970260620117e-01 -5.7332456111907959e-01 - -7.3119300603866577e-01 2.5508829951286316e-01 - <_> - 1.6793443679809570e+01 - - 1 2 579 1.5000000000000000e+00 0 -1 580 - 2.5500000000000000e+01 -2 -3 581 2.3500000000000000e+01 - - -6.3251662254333496e-01 4.4916898012161255e-01 - 4.5003961771726608e-02 -5.9809100627899170e-01 - <_> - 1.6161096572875977e+01 - - 1 2 582 1.5000000000000000e+00 0 -1 583 - 1.5000000000000000e+00 -2 -3 584 2.0500000000000000e+01 - - -7.4945521354675293e-01 6.5612715482711792e-01 - -6.3234704732894897e-01 7.2132863104343414e-02 - <_> - 1.6042703628540039e+01 - - 1 2 585 2.7500000000000000e+01 0 -1 586 - 1.3500000000000000e+01 -2 -3 587 2.5000000000000000e+00 - - -1.1839324980974197e-01 3.9118841290473938e-01 - 2.9518869519233704e-01 -8.5212147235870361e-01 - <_> - 1.6447755813598633e+01 - - 1 2 588 5.0000000000000000e-01 0 -1 589 - 5.0000000000000000e-01 -2 -3 590 5.0000000000000000e-01 - - -8.3366543054580688e-01 4.0505367517471313e-01 - 4.8622503876686096e-02 -5.6565636396408081e-01 - <_> - 1.7133924484252930e+01 - - 1 2 591 2.0350000000000000e+02 0 -1 592 334. -2 -3 593 - 3.0050000000000000e+02 - - -3.5271939635276794e-01 8.6447751522064209e-01 - 7.1061849594116211e-01 -1.1952371150255203e-01 - <_> - 1.6702384948730469e+01 - - 1 2 594 4.5000000000000000e+00 0 -1 595 - 2.8500000000000000e+01 -2 -3 596 1.2500000000000000e+01 - - -3.9405979216098785e-02 6.6947597265243530e-01 - -4.9912232160568237e-01 1.0251764953136444e-01 - <_> - 1.7397886276245117e+01 - - 1 2 597 2.2450000000000000e+02 0 -1 598 42. -2 -3 599 - 4.2500000000000000e+01 - - 7.0597994327545166e-01 -9.4353288412094116e-01 - -6.9157105684280396e-01 2.2714031860232353e-02 - <_> - 1.7262920379638672e+01 - - 1 2 600 3.1500000000000000e+01 0 -1 601 - 1.0450000000000000e+02 -2 -3 602 5.0000000000000000e-01 - - -1.3496619462966919e-01 4.4948977231979370e-01 - 1.4885289967060089e-01 -8.6381590366363525e-01 - <_> - 1.7465213775634766e+01 - - 1 2 603 1.4500000000000000e+01 0 -1 604 - 2.5000000000000000e+00 -2 -3 605 2.5000000000000000e+00 - - -7.1829992532730103e-01 3.5132697224617004e-01 - 4.2205992341041565e-01 -4.3211916089057922e-01 - <_> - 1.7307765960693359e+01 - - 1 2 606 5.5000000000000000e+00 0 -1 607 - 1.6500000000000000e+01 -2 -3 608 1.5000000000000000e+00 - - -4.3471553921699524e-01 5.3184741735458374e-01 - 1.5001934766769409e-01 -5.0502711534500122e-01 - <_> - 1.7614244461059570e+01 - - 1 2 609 2.1950000000000000e+02 0 -1 610 - 3.5000000000000000e+00 -2 -3 611 3.5000000000000000e+00 - - 9.3997812271118164e-01 -9.3997251987457275e-01 - 3.0647855997085571e-01 -2.0921668410301208e-01 - <_> - 1.7706068038940430e+01 - - 1 2 612 5.7500000000000000e+01 0 -1 613 - 5.5450000000000000e+02 -2 -3 614 6271. - - 2.8178128600120544e-01 -6.5705215930938721e-01 - 2.1660777926445007e-01 -8.9905387163162231e-01 - <_> - 1.7754480361938477e+01 - - 1 2 615 5.0000000000000000e-01 0 -1 616 - 1.6500000000000000e+01 -2 -3 617 5.0000000000000000e-01 - - -6.6525924205780029e-01 5.8488470315933228e-01 - 2.6185688376426697e-01 -3.7666809558868408e-01 - <_> - 1.7758506774902344e+01 - - 1 2 618 5.8750000000000000e+02 0 -1 619 - 5.0000000000000000e-01 -2 -3 620 7.9050000000000000e+02 - - 6.1497175693511963e-01 -5.2589684724807739e-01 - 5.6739014387130737e-01 -1.2997034192085266e-01 - <_> - 1.8137268066406250e+01 - - 1 2 621 1.2500000000000000e+01 0 -1 622 - 2.7500000000000000e+01 -2 -3 623 9.5000000000000000e+00 - - 2.7133096009492874e-02 -7.4169838428497314e-01 - -5.5511766672134399e-01 3.7876096367835999e-01 - <_> - 1.8127597808837891e+01 - - 1 2 624 1.3500000000000000e+01 0 -1 625 - 1.6500000000000000e+01 -2 -3 626 7.0050000000000000e+02 - - -9.9238857626914978e-02 5.2959042787551880e-01 - 1.2502020597457886e-01 -6.9074809551239014e-01 - <_> - 1.8081335067749023e+01 - - 1 2 627 1.2500000000000000e+01 0 -1 628 2. -2 -3 629 - 5.0000000000000000e-01 - - -9.4234240055084229e-01 1. 3.8502028584480286e-01 - -1.8359494209289551e-01 - <_> - 1.8053295135498047e+01 - - 1 2 630 2.7500000000000000e+01 0 -1 631 - 5.9500000000000000e+01 -2 -3 632 4.1500000000000000e+01 - - -4.9844527244567871e-01 2.2154885530471802e-01 - 1.6719245910644531e-01 -8.5411649942398071e-01 - <_> - 1.8328479766845703e+01 - - 1 2 633 1.2564500000000000e+04 0 -1 634 - 4.5000000000000000e+00 -2 -3 635 1.4450000000000000e+02 - - -5.1779359579086304e-01 3.0374595522880554e-01 - -7.3483371734619141e-01 7.6394975185394287e-02 - <_> - 1.8571502685546875e+01 - - 1 2 636 2.5000000000000000e+00 0 -1 637 - 2.6750000000000000e+02 -2 -3 638 6.4350000000000000e+02 - - -8.5374289751052856e-01 4.6067333221435547e-01 - -4.1071122884750366e-01 3.6673283576965332e-01 - <_> - 1.8682445526123047e+01 - - 1 2 639 2.0650000000000000e+02 0 -1 640 - 4.2500000000000000e+01 -2 -3 641 1.1500000000000000e+01 - - -5.0848436355590820e-01 2.4837252497673035e-01 - -6.5386766195297241e-01 4.2162042856216431e-01 - <_> - 1.8954551696777344e+01 - - 1 2 642 6.5000000000000000e+00 0 -1 643 - 3.0500000000000000e+01 -2 -3 644 2.2500000000000000e+01 - - -5.9916085004806519e-01 2.7210691571235657e-01 - -1.1765263974666595e-01 -8.1677961349487305e-01 - <_> - 1.8866088867187500e+01 - - 1 2 645 1.5000000000000000e+00 0 -1 646 - 6.5000000000000000e+00 -2 -3 647 1.1150000000000000e+02 - - 5.0670212507247925e-01 -2.6341021060943604e-01 - -4.3560948967933655e-01 3.6474627256393433e-01 - <_> - 1.8741416931152344e+01 - - 1 2 648 4.1500000000000000e+01 0 -1 649 - 6.5000000000000000e+00 -2 -3 650 1.5000000000000000e+00 - - 5.2751459181308746e-02 -6.6522449254989624e-01 - 3.3934053778648376e-01 -4.9355345964431763e-01 - <_> - 1.8643299102783203e+01 - - 1 2 651 5.9775000000000000e+03 0 -1 652 - 1.8165000000000000e+03 -2 -3 653 1.4355000000000000e+03 - - 5.5302268266677856e-01 -4.7563236951828003e-01 - 6.5803569555282593e-01 -9.8118394613265991e-02 - <_> - 1.8880964279174805e+01 - - 1 2 654 1.2650000000000000e+02 0 -1 655 - 2.5000000000000000e+00 -2 -3 656 1.3500000000000000e+01 - - -7.5744998455047607e-01 2.8973925113677979e-01 - -5.4551291465759277e-01 8.2080578804016113e-01 - <_> - 1.8557128906250000e+01 - - 1 2 657 4.6500000000000000e+01 0 -1 658 1647. -2 -3 659 - 1.0500000000000000e+01 - - 1.0912799835205078e-01 -8.0168753862380981e-01 - 3.0439880490303040e-01 -3.2383540272712708e-01 - <_> - 1.9214336395263672e+01 - - 1 2 660 1.6085000000000000e+03 0 -1 661 - 2.0950000000000000e+02 -2 -3 662 2.9750000000000000e+02 - - -3.6497074365615845e-01 7.4361735582351685e-01 - 7.8719192743301392e-01 -1.0578166693449020e-02 - <_> - 1.9558198928833008e+01 - - 1 2 663 5.5000000000000000e+00 0 -1 664 141. -2 -3 665 - 1.2500000000000000e+01 - - 4.0406695008277893e-01 -7.0202612876892090e-01 - -4.2011860013008118e-01 6.0265243053436279e-01 - <_> - 1.9143066406250000e+01 - - 1 2 666 1.1500000000000000e+01 0 -1 667 - 8.5000000000000000e+00 -2 -3 668 2.1150000000000000e+02 - - -4.1513276100158691e-01 4.5337858796119690e-01 - 3.6399593949317932e-01 -7.8625452518463135e-01 - <_> - 1.9362360000610352e+01 - - 1 2 669 3.1500000000000000e+01 0 -1 670 - 3.5000000000000000e+00 -2 -3 671 1.5500000000000000e+01 - - -5.3197765350341797e-01 2.7408641576766968e-01 - -6.3501793146133423e-01 4.3600288033485413e-01 - <_> - 1.9299673080444336e+01 - - 1 2 672 3.5000000000000000e+00 0 -1 673 - 1.3500000000000000e+01 -2 -3 674 6918. - - -4.8876148462295532e-01 4.8771849274635315e-01 - -3.5163021087646484e-01 5.7008403539657593e-01 - <_> - 1.9273160934448242e+01 - - 1 2 675 4.2150000000000000e+02 0 -1 676 - 2.2035000000000000e+03 -2 -3 677 4125. - - -1. 4.3742546439170837e-01 -6.3171046972274780e-01 - -1.2324055656790733e-02 - <_> - 1.9674695968627930e+01 - - 1 2 678 5.0000000000000000e-01 0 -1 679 - 1.0500000000000000e+01 -2 -3 680 6.7150000000000000e+02 - - -2.4401791393756866e-01 5.4219561815261841e-01 - 4.5299509167671204e-01 -4.0972766280174255e-01 - <_> - 1.9536827087402344e+01 - - 1 2 681 80. 0 -1 682 9.5000000000000000e+00 -2 -3 683 - 1.1950000000000000e+02 - - 9.7771358489990234e-01 -1. -2.7852934598922729e-01 - 3.1141099333763123e-01 - <_> - 1.9679944992065430e+01 - - 1 2 684 5.5000000000000000e+00 0 -1 685 - 5.5000000000000000e+00 -2 -3 686 4.5000000000000000e+00 - - -3.4437903761863708e-01 4.5901042222976685e-01 - 1.4311666786670685e-01 -5.8588796854019165e-01 - <_> - 1.9943355560302734e+01 - - 1 2 687 2.9500000000000000e+01 0 -1 688 - 6.5000000000000000e+00 -2 -3 689 2.4500000000000000e+01 - - -5.8437657356262207e-01 2.6341116428375244e-01 - -6.2989181280136108e-01 2.0000371336936951e-01 - <_> - 1.9625724792480469e+01 - - 1 2 690 2.0850000000000000e+02 0 -1 691 - 2.3305000000000000e+03 -2 -3 692 866. - - -3.1762993335723877e-01 5.5581647157669067e-01 - 5.3226226568222046e-01 -4.7602936625480652e-01 - <_> - 1.9914857864379883e+01 - - 1 2 693 8.7850000000000000e+02 0 -1 694 - 6.5050000000000000e+02 -2 -3 695 1.2605000000000000e+03 - - 2.8913190960884094e-01 -8.0038177967071533e-01 - -7.6349312067031860e-01 1.2914163060486317e-02 - <_> - 2.0337768554687500e+01 - - 1 2 696 1.8500000000000000e+01 0 -1 697 51. -2 -3 698 - 5.0000000000000000e-01 - - 2.0884056389331818e-01 -6.6362190246582031e-01 - 4.8303022980690002e-01 -1.5653999149799347e-01 - <_> - 2.0547544479370117e+01 - - 1 2 699 5.5000000000000000e+00 0 -1 700 - 4.4500000000000000e+01 -2 -3 701 52. - - -5.9065473079681396e-01 2.0977459847927094e-01 - -7.6793259382247925e-01 5.2228933572769165e-01 - <_> - 2.0560253143310547e+01 - - 1 2 702 4.5000000000000000e+00 0 -1 703 - 2.4650000000000000e+02 -2 -3 704 4.8500000000000000e+01 - - 4.7756865620613098e-01 -6.9306534528732300e-01 - -4.7408469021320343e-02 -7.5790488719940186e-01 - <_> - 2.0091964721679688e+01 - - 1 2 705 3.8500000000000000e+01 0 -1 706 - 5.0000000000000000e-01 -2 -3 707 458. - - 4.1837117075920105e-01 -5.6005704402923584e-01 - -4.6829015016555786e-01 3.3648452162742615e-01 - <_> - 2.0445671081542969e+01 - - 1 2 708 4.5000000000000000e+00 0 -1 709 - 2.7895000000000000e+03 -2 -3 710 1.1500000000000000e+01 - - -3.6157336831092834e-01 3.5370638966560364e-01 - -5.6435430049896240e-01 6.2603580951690674e-01 - <_> - 2.0708145141601562e+01 - - 1 2 711 1.1245000000000000e+03 0 -1 712 - 4.5000000000000000e+00 -2 -3 713 1.4500000000000000e+01 - - -6.9924837350845337e-01 4.3067482113838196e-01 - -4.2009061574935913e-01 2.6247435808181763e-01 - <_> - 2.1024463653564453e+01 - - 1 2 714 5.5000000000000000e+00 0 -1 715 - 1.1500000000000000e+01 -2 -3 716 7.5000000000000000e+00 - - -8.0043709278106689e-01 3.1631988286972046e-01 - -5.1429873704910278e-01 2.7576768398284912e-01 - <_> - 2.0803630828857422e+01 - - 1 2 717 5.8750000000000000e+02 0 -1 718 3981. -2 -3 719 - 1.9550000000000000e+02 - - -5.4785442352294922e-01 7.9078370332717896e-01 - 6.8359661102294922e-01 -2.8464736416935921e-02 - <_> - 2.1062959671020508e+01 - - 1 2 720 2.5000000000000000e+00 0 -1 721 - 1.5000000000000000e+00 -2 -3 722 3.4050000000000000e+02 - - -6.4614498615264893e-01 7.4008464813232422e-01 - -2.5458994507789612e-01 4.7160488367080688e-01 - <_> - 2.1148992538452148e+01 - - 1 2 723 2.5000000000000000e+00 0 -1 724 - 1.9500000000000000e+01 -2 -3 725 1.1365000000000000e+03 - - -7.9459643363952637e-01 4.0373617410659790e-01 - 1.7909039556980133e-01 -4.8390582203865051e-01 - <_> - 2.1316343307495117e+01 - - 1 2 726 596. 0 -1 727 2.9500000000000000e+01 -2 -3 728 - 9.7500000000000000e+01 - - -3.1621825695037842e-01 2.6443120837211609e-01 - -7.2724926471710205e-01 3.8569703698158264e-01 - <_> - 2.1407173156738281e+01 - - 1 2 729 3.5000000000000000e+00 0 -1 730 - 1.2500000000000000e+01 -2 -3 731 1.6250000000000000e+02 - - -5.2135920524597168e-01 3.0805602669715881e-01 - -5.1675158739089966e-01 8.4476417303085327e-01 - <_> - 2.1468662261962891e+01 - - 1 2 732 2.5000000000000000e+00 0 -1 733 - 9.5000000000000000e+00 -2 -3 734 1.5000000000000000e+00 - - 4.6017938852310181e-01 -8.2636475563049316e-02 - 5.0263375043869019e-01 -6.4655619859695435e-01 - <_> - 2.1531848907470703e+01 - - 1 2 735 1.6500000000000000e+01 0 -1 736 - 1.5000000000000000e+00 -2 -3 737 132. - - 6.3187964260578156e-02 -4.6502736210823059e-01 - -5.3921943902969360e-01 6.6515022516250610e-01 - <_> - 2.1421955108642578e+01 - - 1 2 738 1.4500000000000000e+01 0 -1 739 - 5.5000000000000000e+00 -2 -3 740 4.5000000000000000e+00 - - 7.3170220851898193e-01 -7.9929661750793457e-01 - 4.2181393504142761e-01 -1.0989431291818619e-01 - <_> - 2.1327116012573242e+01 - - 1 2 741 3.5000000000000000e+00 0 -1 742 35. -2 -3 743 - 2.5000000000000000e+00 - - -8.3855998516082764e-01 4.6628227829933167e-01 - 4.7352400422096252e-01 -9.4839885830879211e-02 - <_> - 2.1836402893066406e+01 - - 1 2 744 1.7500000000000000e+01 0 -1 745 555. -2 -3 746 - 1.0500000000000000e+01 - - 9.3723833560943604e-01 -9.0897613763809204e-01 - -7.3575176298618317e-02 5.0928729772567749e-01 - <_> - 2.2053348541259766e+01 - - 1 2 747 5.0000000000000000e-01 0 -1 748 - 1.6500000000000000e+01 -2 -3 749 6.5850000000000000e+02 - - 3.9292082190513611e-01 -5.4508280754089355e-01 - -3.8765028119087219e-01 7.9302084445953369e-01 - <_> - 2.2000936508178711e+01 - - 1 2 750 1.2495000000000000e+03 0 -1 751 - 7.5650000000000000e+02 -2 -3 752 8.5000000000000000e+00 - - -8.3031547069549561e-01 6.1485505104064941e-01 - -7.2577434778213501e-01 -3.1862542033195496e-02 - <_> - 2.2258289337158203e+01 - - 1 2 753 1.7050000000000000e+02 0 -1 754 - 2.7500000000000000e+01 -2 -3 755 171. - - 2.5735321640968323e-01 -4.8002240061759949e-01 - -8.0062097311019897e-01 3.0654129385948181e-01 - <_> - 2.2328397750854492e+01 - - 1 2 756 1.2550000000000000e+02 0 -1 757 - 4.9850000000000000e+02 -2 -3 758 4.4150000000000000e+02 - - -5.5743676424026489e-01 7.0109486579895020e-02 - 4.4649991393089294e-01 -7.7318650484085083e-01 - <_> - 2.2216890335083008e+01 - - 1 2 759 6.5000000000000000e+00 0 -1 760 - 1.5000000000000000e+00 -2 -3 761 1.4500000000000000e+01 - - -5.4395025968551636e-01 3.0336576700210571e-01 - -7.8275823593139648e-01 1.5390900894999504e-02 - <_> - 2.2302726745605469e+01 - - 1 2 762 1.5000000000000000e+00 0 -1 763 - 5.7500000000000000e+01 -2 -3 764 2.0645000000000000e+03 - - 4.8738116025924683e-01 -3.1202495098114014e-01 - -4.3800228834152222e-01 2.9288199543952942e-01 - <_> - 2.2548938751220703e+01 - - 1 2 765 4.9500000000000000e+01 0 -1 766 - 3.8500000000000000e+01 -2 -3 767 5.1500000000000000e+01 - - 4.8418575525283813e-01 -6.1569869518280029e-01 - 2.4621097743511200e-01 -7.1180444955825806e-01 - <_> - 2.2475860595703125e+01 - - 1 2 768 4.5000000000000000e+00 0 -1 769 - 1.7850000000000000e+02 -2 -3 770 2.4500000000000000e+01 - - -6.3133555650711060e-01 3.8137707114219666e-01 - -3.6368274688720703e-01 6.6181749105453491e-01 - <_> - 2.2855289459228516e+01 - - 1 2 771 4284. 0 -1 772 1.0550000000000000e+02 -2 -3 773 - 2.6500000000000000e+01 - - -1.8270370364189148e-01 5.1926845312118530e-01 - -4.9393907189369202e-01 3.6390557885169983e-01 - <_> - 2.2716596603393555e+01 - - 1 2 774 4.5000000000000000e+00 0 -1 775 - 2.5500000000000000e+01 -2 -3 776 6.0350000000000000e+02 - - -5.2201086282730103e-01 4.4320568442344666e-01 - -4.9849912524223328e-01 2.6197108626365662e-01 - <_> - 2.2941522598266602e+01 - - 1 2 777 5.7850000000000000e+02 0 -1 778 - 6.8250000000000000e+02 -2 -3 779 2.6500000000000000e+01 - - -7.4641335010528564e-01 9.6406400203704834e-01 - 2.2492493689060211e-01 -7.7606719732284546e-01 - <_> - 2.3111333847045898e+01 - - 1 2 780 2.9650000000000000e+02 0 -1 781 - 9.5000000000000000e+00 -2 -3 782 4.2500000000000000e+01 - - -6.2134265899658203e-01 1.6981208324432373e-01 - -8.7735611200332642e-01 6.5406101942062378e-01 - <_> - 2.3225652694702148e+01 - - 1 2 783 5.0000000000000000e-01 0 -1 784 - 3.5000000000000000e+00 -2 -3 785 1.1050000000000000e+02 - - 4.8261573910713196e-01 -1.2186601758003235e-01 - -6.2313985824584961e-01 1.7973627150058746e-01 - <_> - 2.3488880157470703e+01 - - 1 2 786 5.0000000000000000e-01 0 -1 787 - 2.5000000000000000e+00 -2 -3 788 4.1500000000000000e+01 - - -8.2940989732742310e-01 4.9927219748497009e-01 - -5.5514144897460938e-01 4.2520754039287567e-02 - <_> - 2.3246582031250000e+01 - - 1 2 789 1.7500000000000000e+01 0 -1 790 - 3.5000000000000000e+00 -2 -3 791 3.7500000000000000e+01 - - 2.3804731667041779e-01 -3.6675044894218445e-01 - -7.8130763769149780e-01 4.6650439500808716e-01 - <_> - 2.3027326583862305e+01 - - 1 2 792 2.0450000000000000e+02 0 -1 793 - 6.4350000000000000e+02 -2 -3 794 1.0050000000000000e+02 - - 6.1607003211975098e-01 -3.5964947938919067e-01 - 6.6453498601913452e-01 -1.7912100255489349e-01 - <_> - 2.3406442642211914e+01 - - 1 2 795 5.0000000000000000e-01 0 -1 796 - 6.5000000000000000e+00 -2 -3 797 5.0000000000000000e-01 - - -8.2512348890304565e-01 3.7911432981491089e-01 - 3.5871699452400208e-01 -4.4794848561286926e-01 - <_> - 2.3616649627685547e+01 - - 1 2 798 2.8500000000000000e+01 0 -1 799 - 4.7450000000000000e+02 -2 -3 800 2.9250000000000000e+02 - - 6.9855457544326782e-01 -7.0031523704528809e-01 - 2.1020780503749847e-01 -7.6559376716613770e-01 - <_> - 2.4126110076904297e+01 - - 1 2 801 2.7500000000000000e+01 0 -1 802 - 6.5000000000000000e+00 -2 -3 803 4.0500000000000000e+01 - - -2.3670162260532379e-01 5.7600808143615723e-01 - 7.9060065746307373e-01 -6.8735271692276001e-01 - <_> - 2.4140369415283203e+01 - - 1 2 804 5.0000000000000000e-01 0 -1 805 - 5.0000000000000000e-01 -2 -3 806 4.5000000000000000e+00 - - -9.1332882642745972e-01 5.2299410104751587e-01 - -7.9110765457153320e-01 -2.8204634785652161e-02 - <_> - 2.4360799789428711e+01 - - 1 2 807 4.5000000000000000e+00 0 -1 808 - 1.3185000000000000e+03 -2 -3 809 5.3500000000000000e+01 - - -8.1156605482101440e-01 2.2043134272098541e-01 - 2.7905371785163879e-01 -7.4440413713455200e-01 - <_> - 2.4109243392944336e+01 - - 1 2 810 1.3500000000000000e+01 0 -1 811 - 5.0000000000000000e-01 -2 -3 812 4.4500000000000000e+01 - - 2.3124285042285919e-01 -6.3171100616455078e-01 - -8.5163635015487671e-01 3.0160894989967346e-01 - <_> - 2.4255434036254883e+01 - - 1 2 813 1.5650000000000000e+02 0 -1 814 - 3.5000000000000000e+00 -2 -3 815 4.3500000000000000e+01 - - -7.0664036273956299e-01 1.4619015157222748e-01 - -7.6265025138854980e-01 9.5157426595687866e-01 - <_> - 2.4288377761840820e+01 - - 1 2 816 8.3850000000000000e+02 0 -1 817 - 1.6815000000000000e+03 -2 -3 818 3.7500000000000000e+01 - - -1.9312603771686554e-01 7.6522910594940186e-01 - -5.9187997132539749e-02 -8.7799388170242310e-01 - <_> - 2.4200824737548828e+01 - - 1 2 819 2.3685000000000000e+03 0 -1 820 - 6.4500000000000000e+01 -2 -3 821 2218. - - -2.3894232511520386e-01 3.3463284373283386e-01 - 9.7570341825485229e-01 -1. - <_> - 2.4393486022949219e+01 - - 1 2 822 1.5000000000000000e+00 0 -1 823 - 6.2500000000000000e+01 -2 -3 824 5.0000000000000000e-01 - - 3.8941594958305359e-01 -6.3870257139205933e-01 - 2.9708841443061829e-01 -4.5916315913200378e-01 - <_> - 2.3864915847778320e+01 - - 1 2 825 5.8500000000000000e+01 0 -1 826 - 5.0000000000000000e-01 -2 -3 827 5.0550000000000000e+02 - - 1.0665965825319290e-01 -5.2857077121734619e-01 - 4.3078324198722839e-01 -6.8552410602569580e-01 - <_> - 2.4371673583984375e+01 - - 1 2 828 4.6500000000000000e+01 0 -1 829 - 2.8500000000000000e+01 -2 -3 830 2.5000000000000000e+00 - - -4.6691280603408813e-01 9.4536936283111572e-01 - 5.0675743818283081e-01 -7.4976824223995209e-02 - <_> - 2.4283998489379883e+01 - - 1 2 831 8.5000000000000000e+00 0 -1 832 - 4.5000000000000000e+00 -2 -3 833 5.0000000000000000e-01 - - 1.1491531878709793e-01 -5.4051393270492554e-01 - 5.9726655483245850e-01 -8.7674349546432495e-02 - <_> - 2.4178682327270508e+01 - - 1 2 834 2.4500000000000000e+01 0 -1 835 31. -2 -3 836 - 2.5000000000000000e+00 - - -1.4163693785667419e-01 -8.9226043224334717e-01 - 4.4437414407730103e-01 -1.0531529039144516e-01 - <_> - 2.4790372848510742e+01 - - 1 2 837 2.5500000000000000e+01 0 -1 838 - 3.3050000000000000e+02 -2 -3 839 5.0000000000000000e-01 - - -6.6818559169769287e-01 9.3957829475402832e-01 - 6.1168950796127319e-01 -2.6481609791517258e-02 - <_> - 2.4897542953491211e+01 - - 1 2 840 5.0000000000000000e-01 0 -1 841 - 5.0000000000000000e-01 -2 -3 842 2407. - - -3.7540107965469360e-01 5.3918349742889404e-01 - 4.6452194452285767e-01 -4.5957338809967041e-01 - <_> - 2.5076763153076172e+01 - - 1 2 843 228. 0 -1 844 182. -2 -3 845 3.3500000000000000e+01 - - 1.7922003567218781e-01 -6.3466674089431763e-01 - -9.4654053449630737e-01 1. - <_> - 2.5344453811645508e+01 - - 1 2 846 2.1050000000000000e+02 0 -1 847 950. -2 -3 848 - 6.5000000000000000e+00 - - 3.8418850302696228e-01 -3.3828052878379822e-01 - -9.4338703155517578e-01 5.6358563899993896e-01 - <_> - 2.5327934265136719e+01 - - 1 2 849 5.7850000000000000e+02 0 -1 850 2721. -2 -3 851 - 5.7950000000000000e+02 - - -7.7749001979827881e-01 7.9369461536407471e-01 - 6.1001539230346680e-01 -3.9780076593160629e-02 - <_> - 2.5586107254028320e+01 - - 1 2 852 1.5500000000000000e+01 0 -1 853 - 5.0000000000000000e-01 -2 -3 854 7.5000000000000000e+00 - - 6.5170124173164368e-02 -8.7068217992782593e-01 - 3.4386867284774780e-01 -3.1679311394691467e-01 - <_> - 2.5956110000610352e+01 - - 1 2 855 4.1250000000000000e+02 0 -1 856 - 9.5000000000000000e+00 -2 -3 857 1.2500000000000000e+01 - - -9.4299390912055969e-02 4.5086464285850525e-01 - 2.8941693902015686e-01 -7.5506448745727539e-01 - <_> - 2.5679136276245117e+01 - - 1 2 858 1.5500000000000000e+01 0 -1 859 - 3.5500000000000000e+01 -2 -3 860 1.5500000000000000e+01 - - 5.7768863439559937e-01 -9.8376011848449707e-01 - 2.2712181508541107e-01 -3.7263166904449463e-01 - <_> - 2.5702135086059570e+01 - - 1 2 861 5.2500000000000000e+01 0 -1 862 - 1.1305000000000000e+03 -2 -3 863 213. - - 2.2998491302132607e-02 -5.8967226743698120e-01 - 6.5218383073806763e-01 -8.2674098014831543e-01 - <_> - 2.5561569213867188e+01 - - 1 2 864 5.5500000000000000e+01 0 -1 865 - 9.5000000000000000e+00 -2 -3 866 3.1350000000000000e+02 - - 2.0403856039047241e-01 -5.6006175279617310e-01 - -1.6610753536224365e-01 5.0708794593811035e-01 - <_> - 2.5522092819213867e+01 - - 1 2 867 5.0000000000000000e-01 0 -1 868 5. -2 -3 869 - 3.8500000000000000e+01 - - -5.3519564867019653e-01 5.9799957275390625e-01 - -6.4083904027938843e-01 8.0231800675392151e-03 - <_> - 2.5928745269775391e+01 - - 1 2 870 2.7500000000000000e+01 0 -1 871 - 6.5000000000000000e+00 -2 -3 872 3.4500000000000000e+01 - - 6.7719250917434692e-01 1.6834596171975136e-02 - -4.1419923305511475e-01 4.9665707349777222e-01 - <_> - 2.5877567291259766e+01 - - 1 2 873 4.2500000000000000e+01 0 -1 874 - 1.5000000000000000e+00 -2 -3 875 1.2500000000000000e+01 - - 7.5778728723526001e-01 -6.9553768634796143e-01 - 5.8824920654296875e-01 -5.1177542656660080e-02 - <_> - 2.6253459930419922e+01 - - 1 2 876 2.0450000000000000e+02 0 -1 877 - 5.5000000000000000e+00 -2 -3 878 2.0750000000000000e+02 - - 1.4472042024135590e-01 -5.3407484292984009e-01 - 5.5299741029739380e-01 -2.1952067315578461e-01 - <_> - 2.5972379684448242e+01 - - 1 2 879 5.0000000000000000e-01 0 -1 880 - 9.2500000000000000e+01 -2 -3 881 2.8150000000000000e+02 - - -4.9287506937980652e-01 4.8725369572639465e-01 - 2.1028327941894531e-01 -4.5818585157394409e-01 - <_> - 2.6239015579223633e+01 - - 1 2 882 3.3450000000000000e+02 0 -1 883 - 2.9500000000000000e+01 -2 -3 884 1.9500000000000000e+01 - - -2.7773824334144592e-01 2.6663535833358765e-01 - 9.2568081617355347e-01 -1. - <_> - 2.6405815124511719e+01 - - 1 2 885 7.5000000000000000e+00 0 -1 886 - 1.5500000000000000e+01 -2 -3 887 2.9500000000000000e+01 - - -1.3278310000896454e-01 5.4445451498031616e-01 - -4.4695791602134705e-01 5.7305967807769775e-01 - <_> - 2.6828212738037109e+01 - - 1 2 888 3.1750000000000000e+02 0 -1 889 - 8.5000000000000000e+00 -2 -3 890 1.9950000000000000e+02 - - 5.8375543355941772e-01 -1.7268431186676025e-01 - -6.6015034914016724e-01 4.4744126498699188e-02 - <_> - 2.7001083374023438e+01 - - 1 2 891 7.4500000000000000e+01 0 -1 892 - 9.5000000000000000e+00 -2 -3 893 1.0500000000000000e+01 - - -7.7140247821807861e-01 1.7287059128284454e-01 - -9.5679062604904175e-01 2.9170122742652893e-01 - <_> - 2.6600372314453125e+01 - - 1 2 894 5.0000000000000000e-01 0 -1 895 - 1.5000000000000000e+00 -2 -3 896 1.5000000000000000e+00 - - -6.1320728063583374e-01 3.7253630161285400e-01 - 5.1001715660095215e-01 -4.2740473151206970e-01 - <_> - 2.6939287185668945e+01 - - 1 2 897 742. 0 -1 898 1.5000000000000000e+00 -2 -3 899 - 4.6500000000000000e+01 - - 6.4842426776885986e-01 -6.8702745437622070e-01 - 5.3773084655404091e-03 7.0070070028305054e-01 - <_> - 2.7120637893676758e+01 - - 1 2 900 4.7500000000000000e+01 0 -1 901 - 2.1500000000000000e+01 -2 -3 902 155. - - -2.1175275743007660e-01 3.5446098446846008e-01 - 3.6745795607566833e-01 -7.7352613210678101e-01 - <_> - 2.6940479278564453e+01 - - 1 2 903 5.5000000000000000e+00 0 -1 904 - 5.0000000000000000e-01 -2 -3 905 5.0000000000000000e-01 - - -4.2342516779899597e-01 4.6100237965583801e-01 - 7.2207629680633545e-02 -5.1426035165786743e-01 - <_> - 2.6880437850952148e+01 - - 1 2 906 4.1050000000000000e+02 0 -1 907 - 3.5000000000000000e+00 -2 -3 908 1.0185000000000000e+03 - - 7.6362460851669312e-01 -2.9716432094573975e-01 - 6.9237434864044189e-01 -6.0041967779397964e-02 - <_> - 2.6966255187988281e+01 - - 1 2 909 5.0000000000000000e-01 0 -1 910 28. -2 -3 911 - 2.5000000000000000e+00 - - -7.3636984825134277e-01 8.9863502979278564e-01 - 5.1865053176879883e-01 -1.0253517329692841e-01 - <_> - 2.7442039489746094e+01 - - 1 2 912 2.3500000000000000e+01 0 -1 913 - 2.5000000000000000e+00 -2 -3 914 550. - - 1.5000563859939575e-01 -4.6704238653182983e-01 - -6.6705381870269775e-01 4.7578340768814087e-01 - <_> - 2.7651542663574219e+01 - - 1 2 915 2.0050000000000000e+02 0 -1 916 - 2.5000000000000000e+00 -2 -3 917 3.5000000000000000e+00 - - -6.6723048686981201e-01 2.0950356125831604e-01 - 3.3526617288589478e-01 -7.9762780666351318e-01 - <_> - 2.7623653411865234e+01 - - 1 2 918 8.5000000000000000e+00 0 -1 919 - 5.5000000000000000e+00 -2 -3 920 5.5000000000000000e+00 - - -8.1512671709060669e-01 1.2574225664138794e-01 - 4.8598203063011169e-01 -1.5266139805316925e-01 - <_> - 2.7450769424438477e+01 - - 1 2 921 5.5000000000000000e+00 0 -1 922 - 6.5000000000000000e+00 -2 -3 923 5.0000000000000000e-01 - - -2.1216700971126556e-01 5.0396865606307983e-01 - 5.1462185382843018e-01 -4.5113617181777954e-01 - <_> - 2.7734930038452148e+01 - - 1 2 924 644. 0 -1 925 1.1500000000000000e+01 -2 -3 926 - 1.2050000000000000e+02 - - 2.5870633125305176e-01 -8.3483195304870605e-01 - -6.0892283916473389e-01 2.8416162729263306e-01 - <_> - 2.7435287475585938e+01 - - 1 2 927 2.5000000000000000e+00 0 -1 928 - 1.5000000000000000e+00 -2 -3 929 658. - - -9.0528321266174316e-01 5.4103326797485352e-01 - -2.9964354634284973e-01 4.7055888175964355e-01 - <_> - 2.7890865325927734e+01 - - 1 2 930 2.6065000000000000e+03 0 -1 931 - 3.0950000000000000e+02 -2 -3 932 3.6500000000000000e+01 - - -1.2102564424276352e-01 4.5557883381843567e-01 - -9.6796959638595581e-01 4.1553020477294922e-01 - <_> - 2.7985542297363281e+01 - - 1 2 933 1.2535000000000000e+03 0 -1 934 - 6.4950000000000000e+02 -2 -3 935 4.1650000000000000e+02 - - 6.4220869541168213e-01 -4.2341175675392151e-01 - 5.5095940828323364e-01 -3.7539717555046082e-01 - <_> - 2.8142776489257812e+01 - - 1 2 936 5.0000000000000000e-01 0 -1 937 - 4.5000000000000000e+00 -2 -3 938 3.7500000000000000e+01 - - -3.2875818014144897e-01 4.3458873033523560e-01 - -5.8713775873184204e-01 1.6683255136013031e-01 - <_> - 2.8195165634155273e+01 - - 1 2 939 7.7450000000000000e+02 0 -1 940 - 2.5000000000000000e+00 -2 -3 941 7.9250000000000000e+02 - - 3.3088469505310059e-01 -7.3728382587432861e-01 - 4.7910848259925842e-01 -1.5558865666389465e-01 - <_> - 2.8348829269409180e+01 - - 1 2 942 2.2850000000000000e+02 0 -1 943 - 2.7500000000000000e+01 -2 -3 944 5.2500000000000000e+01 - - -9.7540810704231262e-02 4.9717679619789124e-01 - -8.4607970714569092e-01 3.1448280811309814e-01 - <_> - 2.8368389129638672e+01 - - 1 2 945 5.5000000000000000e+00 0 -1 946 - 5.5000000000000000e+00 -2 -3 947 5.0000000000000000e-01 - - -7.9352790117263794e-01 4.7426006197929382e-01 - 3.1184694170951843e-01 -3.9333003759384155e-01 - <_> - 2.8678846359252930e+01 - - 1 2 948 9.5500000000000000e+01 0 -1 949 - 1.3250000000000000e+02 -2 -3 950 85. - - 8.9399956166744232e-02 -7.3296272754669189e-01 - -7.4362647533416748e-01 3.2927182316780090e-01 - <_> - 2.8603195190429688e+01 - - 1 2 951 2.3500000000000000e+01 0 -1 952 - 5.5000000000000000e+00 -2 -3 953 1.5500000000000000e+01 - - 2.9263785481452942e-01 -2.7861267328262329e-01 - 2.4879254400730133e-02 -8.7280374765396118e-01 - <_> - 2.8429206848144531e+01 - - 1 2 954 5.0000000000000000e-01 0 -1 955 - 7.5000000000000000e+00 -2 -3 956 1.1050000000000000e+02 - - -4.9112609028816223e-01 4.5099055767059326e-01 - -6.6482228040695190e-01 3.8441817741841078e-03 - <_> - 2.8728115081787109e+01 - - 1 2 957 4.5000000000000000e+00 0 -1 958 - 3.0500000000000000e+01 -2 -3 959 9.5000000000000000e+00 - - 3.4782031178474426e-01 -4.3692314624786377e-01 - -5.0424945354461670e-01 4.8909524083137512e-01 - <_> - 2.9034227371215820e+01 - - 1 2 960 8.5000000000000000e+00 0 -1 961 1313. -2 -3 962 - 7.5000000000000000e+00 - - 4.1847491264343262e-01 -7.2316378355026245e-01 - 5.3542798757553101e-01 -6.9837749004364014e-02 - <_> - 2.9042299270629883e+01 - - 1 2 963 8.2350000000000000e+02 0 -1 964 - 6.1500000000000000e+01 -2 -3 965 1.0848500000000000e+04 - - -2.7015477418899536e-01 2.4192942678928375e-01 - 9.2728316783905029e-01 -1. - <_> - 2.9266605377197266e+01 - - 1 2 966 3.5500000000000000e+01 0 -1 967 - 1.1500000000000000e+01 -2 -3 968 474. - - 3.2317626476287842e-01 -2.3886755108833313e-01 - -9.2069733142852783e-01 9.9993713200092316e-02 - <_> - 2.9196119308471680e+01 - - 1 2 969 1.5000000000000000e+00 0 -1 970 50. -2 -3 971 - 4.5000000000000000e+00 - - -8.8119459152221680e-01 1.5396067500114441e-01 - 3.5588577389717102e-01 -1.8907056748867035e-01 - <_> - 2.8916269302368164e+01 - - 1 2 972 2.7500000000000000e+01 0 -1 973 78. -2 -3 974 - 1.4750000000000000e+02 - - 9.6468514204025269e-01 -2.7984911203384399e-01 - 5.2942144870758057e-01 -5.4215109348297119e-01 - <_> - 2.9137155532836914e+01 - - 1 2 975 2.3500000000000000e+01 0 -1 976 - 5.7850000000000000e+02 -2 -3 977 2.9250000000000000e+02 - - 2.3396319150924683e-01 -8.4364879131317139e-01 - -3.0435711145401001e-01 3.2314890623092651e-01 - <_> - 2.9115297317504883e+01 - - 1 2 978 5.0000000000000000e-01 0 -1 979 - 3.9550000000000000e+02 -2 -3 980 5.5000000000000000e+00 - - 3.9777445793151855e-01 -7.7888238430023193e-01 - -4.1580772399902344e-01 3.4073171019554138e-01 - <_> - 2.9551794052124023e+01 - - 1 2 981 1.8785000000000000e+03 0 -1 982 - 5.9715000000000000e+03 -2 -3 983 6.4250000000000000e+02 - - -1.2244975566864014e-01 6.9085955619812012e-01 - -5.9161955118179321e-01 2.9289481043815613e-01 - <_> - 2.9916490554809570e+01 - - 1 2 984 3.6500000000000000e+01 0 -1 985 - 5.5000000000000000e+00 -2 -3 986 6.5000000000000000e+00 - - -8.7442290782928467e-01 9.8645307123661041e-02 - 4.4346800446510315e-01 -1.5005703270435333e-01 - <_> - 2.9763261795043945e+01 - - 1 2 987 3.2500000000000000e+01 0 -1 988 - 1.0500000000000000e+01 -2 -3 989 4.6500000000000000e+01 - - -3.8456574082374573e-01 3.4571200609207153e-01 - 5.5213904380798340e-01 -5.1309728622436523e-01 - <_> - 3.0075271606445312e+01 - - 1 2 990 5.5000000000000000e+00 0 -1 991 3216. -2 -3 992 57. - - 3.7469649314880371e-01 -7.7058547735214233e-01 - -6.3845652341842651e-01 4.0090378373861313e-02 - <_> - 3.0020376205444336e+01 - - 1 2 993 6.6650000000000000e+02 0 -1 994 - 1.5000000000000000e+00 -2 -3 995 1.6650000000000000e+02 - - 6.1095565557479858e-01 -6.7465776205062866e-01 - 2.2271032631397247e-01 -8.2703709602355957e-01 - <_> - 2.9878087997436523e+01 - - 1 2 996 5.5000000000000000e+00 0 -1 997 - 1.1500000000000000e+01 -2 -3 998 6.2500000000000000e+01 - - -4.6279782056808472e-01 1.8749718368053436e-01 - 6.7090582847595215e-01 -1.3304303586483002e-01 - <_> - 2.9944360733032227e+01 - - 1 2 999 1.5000000000000000e+00 0 -1 1000 - 2.5000000000000000e+00 -2 -3 1001 2.5000000000000000e+00 - - -1. 4.3671074509620667e-01 6.6273018717765808e-02 - -5.3205168247222900e-01 - <_> - 2.9942871093750000e+01 - - 1 2 1002 5.5000000000000000e+00 0 -1 1003 - 3.7450000000000000e+02 -2 -3 1004 4.5000000000000000e+00 - - 6.1623644828796387e-01 -4.8089489340782166e-01 - 5.9936344623565674e-01 -3.1623546034097672e-02 - <_> - 3.0450216293334961e+01 - - 1 2 1005 7.8750000000000000e+02 0 -1 1006 - 6.7550000000000000e+02 -2 -3 1007 7.0250000000000000e+02 - - -4.9125915765762329e-01 5.5245697498321533e-01 - 5.0734555721282959e-01 -1.7348597943782806e-01 - <_> - 3.0483926773071289e+01 - - 1 2 1008 2.2350000000000000e+02 0 -1 1009 - 5.5000000000000000e+00 -2 -3 1010 2.4500000000000000e+01 - - 5.1597571372985840e-01 -3.2840871810913086e-01 - -4.1519615054130554e-01 3.1820172071456909e-01 - <_> - 3.0558099746704102e+01 - - 1 2 1011 4.8500000000000000e+01 0 -1 1012 - 5.5000000000000000e+00 -2 -3 1013 2.0500000000000000e+01 - - 7.4174232780933380e-02 -6.8477684259414673e-01 - -9.2985051870346069e-01 3.0161842703819275e-01 - <_> - 3.0625425338745117e+01 - - 1 2 1014 1.8500000000000000e+01 0 -1 1015 - 9.3500000000000000e+01 -2 -3 1016 1.4050000000000000e+02 - - -8.1940811872482300e-01 2.9973128437995911e-01 - 7.6479032635688782e-02 -6.5602862834930420e-01 - <_> - 3.0697441101074219e+01 - - 1 2 1017 3.7500000000000000e+01 0 -1 1018 - 2.1500000000000000e+01 -2 -3 1019 5804. - - -4.4756698608398438e-01 2.7423384785652161e-01 - -6.8169790506362915e-01 2.0900464057922363e-01 - <_> - 3.0949892044067383e+01 - - 1 2 1020 5.0000000000000000e-01 0 -1 1021 - 5.5000000000000000e+00 -2 -3 1022 4.5000000000000000e+00 - - -6.4901775121688843e-01 2.5245016813278198e-01 - 2.4039171636104584e-01 -6.1729639768600464e-01 - <_> - 3.0929098129272461e+01 - - 1 2 1023 5.0000000000000000e-01 0 -1 1024 - 6.5000000000000000e+00 -2 -3 1025 1.4500000000000000e+01 - - -3.9928469061851501e-01 5.0110679864883423e-01 - -7.4043375253677368e-01 -4.4123314321041107e-02 - <_> - 3.1333951950073242e+01 - - 1 2 1026 6.5000000000000000e+00 0 -1 1027 - 2.1500000000000000e+01 -2 -3 1028 3.9500000000000000e+01 - - -5.8101430535316467e-02 6.1747199296951294e-01 - 2.6098625734448433e-02 -6.9707942008972168e-01 - <_> - 3.1116010665893555e+01 - - 1 2 1029 2.0150000000000000e+02 0 -1 1030 - 5.0000000000000000e-01 -2 -3 1031 2.8750000000000000e+02 - - 2.9852050542831421e-01 -4.3055999279022217e-01 - 6.7561793327331543e-01 -8.7017469108104706e-02 - <_> - 3.1032897949218750e+01 - - 1 2 1032 8.5000000000000000e+00 0 -1 1033 - 3.5000000000000000e+00 -2 -3 1034 2.3500000000000000e+01 - - -8.2436734437942505e-01 7.9362380504608154e-01 - 3.3129659295082092e-01 -2.2134104371070862e-01 - <_> - 3.0731082916259766e+01 - - 1 2 1035 1.5500000000000000e+01 0 -1 1036 - 1.5000000000000000e+00 -2 -3 1037 2.0500000000000000e+01 - - 5.2363544702529907e-01 -8.2277619838714600e-01 - 3.4363475441932678e-01 -3.0181473493576050e-01 - <_> - 3.1582773208618164e+01 - - 1 2 1038 2.3500000000000000e+01 0 -1 1039 256. -2 -3 1040 - 1245. - - 4.0018074214458466e-02 -5.4246288537979126e-01 - -7.1379941701889038e-01 8.5168963670730591e-01 - <_> - 3.0922315597534180e+01 - - 1 2 1041 1.1500000000000000e+01 0 -1 1042 - 9.7500000000000000e+01 -2 -3 1043 4.2050000000000000e+02 - - 3.3170649409294128e-01 -6.6045612096786499e-01 - -1.4949633181095123e-01 5.1487708091735840e-01 - <_> - 3.0648450851440430e+01 - - 1 2 1044 5.7750000000000000e+02 0 -1 1045 - 5.0000000000000000e-01 -2 -3 1046 3.8250000000000000e+02 - - 4.8874342441558838e-01 -8.4576064348220825e-01 - 6.7698836326599121e-01 -6.0642462223768234e-02 - <_> - 3.0702632904052734e+01 - - 1 2 1047 2.2500000000000000e+01 0 -1 1048 - 1.2950000000000000e+02 -2 -3 1049 3.5650000000000000e+02 - - 5.4180499166250229e-02 -5.0506794452667236e-01 - 7.7279126644134521e-01 -4.4330042600631714e-01 - <_> - 3.1123544692993164e+01 - - 1 2 1050 2.1500000000000000e+01 0 -1 1051 - 1.8500000000000000e+01 -2 -3 1052 5.9500000000000000e+01 - - -3.4420540928840637e-01 5.7321655750274658e-01 - 4.2091187834739685e-01 -6.6199111938476562e-01 - <_> - 3.0851852416992188e+01 - - 1 2 1053 1.5000000000000000e+00 0 -1 1054 - 4.5000000000000000e+00 -2 -3 1055 5.0000000000000000e-01 - - -8.3376497030258179e-01 5.1961439847946167e-01 - 1.9672468304634094e-01 -3.8548988103866577e-01 - <_> - 3.1271551132202148e+01 - - 1 2 1056 5.5000000000000000e+00 0 -1 1057 - 1.5000000000000000e+00 -2 -3 1058 3.2500000000000000e+01 - - 1.9125646352767944e-01 -4.8435854911804199e-01 - 6.1247032880783081e-01 -2.2513453662395477e-01 - <_> - 3.1481870651245117e+01 - - 1 2 1059 2.6500000000000000e+01 0 -1 1060 160. -2 -3 1061 - 1.5000000000000000e+00 - - 5.5120378732681274e-01 -7.5941944122314453e-01 - 4.1089880466461182e-01 -1.3137997686862946e-01 - <_> - 3.1036325454711914e+01 - - 1 2 1062 1.5500000000000000e+01 0 -1 1063 - 1.4500000000000000e+01 -2 -3 1064 2.1500000000000000e+01 - - 3.4304007887840271e-02 -6.1823207139968872e-01 - -2.7733555436134338e-01 6.1952215433120728e-01 - <_> - 3.1423891067504883e+01 - - 1 2 1065 2.5450000000000000e+02 0 -1 1066 - 1.2500000000000000e+01 -2 -3 1067 1.4500000000000000e+01 - - 4.7979310154914856e-01 -9.3194240331649780e-01 - -1.1963248252868652e-01 4.4283005595207214e-01 - <_> - 3.0981994628906250e+01 - - 1 2 1068 4.5000000000000000e+00 0 -1 1069 - 1.5000000000000000e+00 -2 -3 1070 5.0000000000000000e-01 - - -7.1386426687240601e-01 3.3223813772201538e-01 - 5.5634075403213501e-01 -4.5681276917457581e-01 - <_> - 3.1151826858520508e+01 - - 1 2 1071 8.3500000000000000e+01 0 -1 1072 - 6.5000000000000000e+00 -2 -3 1073 32. - - -6.9022941589355469e-01 1.6983160376548767e-01 - -7.8779727220535278e-01 1. - <_> - 3.1287761688232422e+01 - - 1 2 1074 4.2250000000000000e+02 0 -1 1075 - 1.6785000000000000e+03 -2 -3 1076 3.4085000000000000e+03 - - -2.1672263741493225e-01 7.0122992992401123e-01 - -5.5317509174346924e-01 1.3593602180480957e-01 - <_> - 3.1590259552001953e+01 - - 1 2 1077 3.1150000000000000e+02 0 -1 1078 - 1.1500000000000000e+01 -2 -3 1079 1.5000000000000000e+00 - - -4.2860367894172668e-01 3.0249705910682678e-01 - 8.6132842302322388e-01 -5.9583419561386108e-01 - <_> - 3.1790189743041992e+01 - - 1 2 1080 9.3500000000000000e+01 0 -1 1081 - 8.5000000000000000e+00 -2 -3 1082 2.5000000000000000e+00 - - -8.5307538509368896e-01 1.9993139803409576e-01 - 5.2050822973251343e-01 -7.1924048662185669e-01 - <_> - 3.1949237823486328e+01 - - 1 2 1083 1.5000000000000000e+00 0 -1 1084 - 1.8500000000000000e+01 -2 -3 1085 4.7500000000000000e+01 - - -8.7075895071029663e-01 4.1160404682159424e-01 - -4.2329508066177368e-01 3.9578995108604431e-01 - <_> - 3.1551105499267578e+01 - - 1 2 1086 5.0000000000000000e-01 0 -1 1087 - 7.1500000000000000e+01 -2 -3 1088 5.0000000000000000e-01 - - 4.7251659631729126e-01 -6.8467688560485840e-01 - 3.0512693524360657e-01 -3.9813303947448730e-01 - <_> - 3.1931394577026367e+01 - - 1 2 1089 1.9150000000000000e+02 0 -1 1090 - 4.5000000000000000e+00 -2 -3 1091 7.6950000000000000e+02 - - 1.9683115184307098e-01 -5.8899974822998047e-01 - -6.5470945835113525e-01 3.8028964400291443e-01 - <_> - 3.2017967224121094e+01 - - 1 2 1092 7.5000000000000000e+00 0 -1 1093 - 2.8500000000000000e+01 -2 -3 1094 3.7500000000000000e+01 - - 2.7054101228713989e-01 -5.6520724296569824e-01 - -6.2938737869262695e-01 8.6574614048004150e-02 - <_> - 3.2285461425781250e+01 - - 1 2 1095 5.8750000000000000e+02 0 -1 1096 - 5.0000000000000000e-01 -2 -3 1097 1.5500000000000000e+01 - - 1.0511577874422073e-01 -6.9365251064300537e-01 - -6.4478015899658203e-01 2.6749077439308167e-01 - <_> - 3.2811119079589844e+01 - - 1 2 1098 2.1500000000000000e+01 0 -1 1099 - 4.1500000000000000e+01 -2 -3 1100 559. - - -2.0592536032199860e-01 3.7386643886566162e-01 - 7.8755700588226318e-01 -6.8481349945068359e-01 - <_> - 3.2689319610595703e+01 - - 1 2 1101 5.7550000000000000e+02 0 -1 1102 - 3.5000000000000000e+00 -2 -3 1103 9.6500000000000000e+01 - - 3.9178147912025452e-01 -1.2180019915103912e-01 - -9.6077018976211548e-01 -1.4056563377380371e-01 - <_> - 3.2619079589843750e+01 - - 1 2 1104 2.5000000000000000e+00 0 -1 1105 43. -2 -3 1106 - 2.5000000000000000e+00 - - -8.9122837781906128e-01 4.5819079875946045e-01 - 5.5948436260223389e-01 -7.0240341126918793e-02 - <_> - 3.3039958953857422e+01 - - 1 2 1107 2.3955000000000000e+03 0 -1 1108 - 1.2535000000000000e+03 -2 -3 1109 4.0405000000000000e+03 - - 2.9499965906143188e-01 -2.6054748892784119e-01 - 9.8911577463150024e-01 -1. - <_> - 3.3041172027587891e+01 - - 1 2 1110 2.0850000000000000e+02 0 -1 1111 - 2.7500000000000000e+01 -2 -3 1112 4.5000000000000000e+00 - - -6.7137396335601807e-01 1.2141949264332652e-03 - 6.0118967294692993e-01 -2.0657041668891907e-01 - <_> - 3.2776119232177734e+01 - - 1 2 1113 3.5000000000000000e+00 0 -1 1114 - 6.5000000000000000e+00 -2 -3 1115 3.0500000000000000e+01 - - -2.2868818044662476e-01 5.7510751485824585e-01 - -3.6484047770500183e-01 5.1262056827545166e-01 - <_> - 3.2935546875000000e+01 - - 1 2 1116 5.0000000000000000e-01 0 -1 1117 - 2.5000000000000000e+00 -2 -3 1118 5.0000000000000000e-01 - - -7.3760849237442017e-01 4.5924603939056396e-01 - 1.5942642092704773e-01 -4.6601155400276184e-01 - <_> - 3.2656055450439453e+01 - - 1 2 1119 3.3500000000000000e+01 0 -1 1120 - 3.4500000000000000e+01 -2 -3 1121 3.9150000000000000e+02 - - -2.7949050068855286e-01 3.4181603789329529e-01 - 7.1765547990798950e-01 -7.6309484243392944e-01 - <_> - 3.2747634887695312e+01 - - 1 2 1122 2.5000000000000000e+00 0 -1 1123 - 2.5000000000000000e+00 -2 -3 1124 3.5250000000000000e+02 - - -7.4318218231201172e-01 5.3260874748229980e-01 - -5.0913441181182861e-01 9.1580078005790710e-02 - <_> - 3.3188011169433594e+01 - - 1 2 1125 5.6500000000000000e+01 0 -1 1126 - 3.2500000000000000e+01 -2 -3 1127 3.9500000000000000e+01 - - -6.4126682281494141e-01 4.9496468901634216e-01 - -3.9145907759666443e-01 4.4037669897079468e-01 - <_> - 3.3416931152343750e+01 - - 1 2 1128 7.0500000000000000e+01 0 -1 1129 - 1.1500000000000000e+01 -2 -3 1130 9.5000000000000000e+00 - - -3.8201475143432617e-01 2.2891646623611450e-01 - -8.5659736394882202e-01 6.1013686656951904e-01 - <_> - 3.3275886535644531e+01 - - 1 2 1131 4.0500000000000000e+01 0 -1 1132 - 1.9500000000000000e+01 -2 -3 1133 1.3500000000000000e+01 - - 2.6871705055236816e-01 -6.3255614042282104e-01 - 2.3965831100940704e-01 -6.3516211509704590e-01 - <_> - 3.3399391174316406e+01 - - 1 2 1134 5.5000000000000000e+00 0 -1 1135 - 8.5000000000000000e+00 -2 -3 1136 3.0500000000000000e+01 - - -6.6200548410415649e-01 1.5101595222949982e-01 - -7.6606094837188721e-01 2.5947886705398560e-01 - <_> - 3.3559207916259766e+01 - - 1 2 1137 6.5000000000000000e+00 0 -1 1138 - 8.2500000000000000e+01 -2 -3 1139 1.6500000000000000e+01 - - 7.6681274175643921e-01 -6.3294899463653564e-01 - -5.5192285776138306e-01 2.3842744529247284e-02 - <_> - 3.3856239318847656e+01 - - 1 2 1140 1.0500000000000000e+01 0 -1 1141 - 1.7350000000000000e+02 -2 -3 1142 2.7550000000000000e+02 - - 2.9703170061111450e-01 -5.5057585239410400e-01 - -6.4888852834701538e-01 1.1229314655065536e-01 - <_> - 3.3721168518066406e+01 - - 1 2 1143 3.5000000000000000e+00 0 -1 1144 126. -2 -3 1145 - 2.5000000000000000e+00 - - 9.2471975088119507e-01 -7.2330892086029053e-01 - 3.9742922782897949e-01 -1.3506934046745300e-01 - <_> - 3.4096935272216797e+01 - - 1 2 1146 2.3500000000000000e+01 0 -1 1147 - 1.9500000000000000e+01 -2 -3 1148 6.6500000000000000e+01 - - -5.5066823959350586e-01 3.2355815172195435e-01 - 3.7576669454574585e-01 -2.6415929198265076e-01 - <_> - 3.4108264923095703e+01 - - 1 2 1149 1.5000000000000000e+00 0 -1 1150 - 6.5000000000000000e+00 -2 -3 1151 5.0500000000000000e+01 - - -9.7412526607513428e-01 5.2388346195220947e-01 - -4.9519532918930054e-01 1.9004400074481964e-01 - <_> - 3.3904502868652344e+01 - - 1 2 1152 7.7250000000000000e+02 0 -1 1153 77. -2 -3 1154 - 4.8350000000000000e+02 - - -6.9026130437850952e-01 8.2613104581832886e-01 - 6.4011102914810181e-01 -8.1689134240150452e-02 - <_> - 3.4277988433837891e+01 - - 1 2 1155 5.0000000000000000e-01 0 -1 1156 - 7.3150000000000000e+02 -2 -3 1157 5.0000000000000000e-01 - - 4.5011767745018005e-01 -2.4998305737972260e-01 - 8.2632339000701904e-01 -4.2073485255241394e-01 - <_> - 3.4078739166259766e+01 - - 1 2 1158 2.0950000000000000e+02 0 -1 1159 - 1.6755000000000000e+03 -2 -3 1160 6.1815000000000000e+03 - - -2.7588048577308655e-01 9.5124208927154541e-01 - 6.4596521854400635e-01 -3.6611458659172058e-01 - <_> - 3.4438789367675781e+01 - - 1 2 1161 1.5500000000000000e+01 0 -1 1162 - 2.1500000000000000e+01 -2 -3 1163 4.4500000000000000e+01 - - -3.0783519148826599e-01 3.6005032062530518e-01 - 4.5609518885612488e-01 -6.2639898061752319e-01 - <_> - 3.4638523101806641e+01 - - 1 2 1164 3.1500000000000000e+01 0 -1 1165 - 7.5000000000000000e+00 -2 -3 1166 3.2350000000000000e+02 - - -9.4682770967483521e-01 1.9973398745059967e-01 - -6.2348783016204834e-01 6.9902861118316650e-01 - <_> - 3.4201782226562500e+01 - - 1 2 1167 7.5000000000000000e+00 0 -1 1168 - 1.5000000000000000e+00 -2 -3 1169 1.2500000000000000e+01 - - 3.3168455958366394e-01 -4.3674397468566895e-01 - -6.4757126569747925e-01 2.0459994673728943e-01 - <_> - 3.4516929626464844e+01 - - 1 2 1170 1.6500000000000000e+01 0 -1 1171 - 5.0000000000000000e-01 -2 -3 1172 675. - - 2.3890937864780426e-01 -5.7110768556594849e-01 - 3.1514799594879150e-01 -1. - <_> - 3.4619071960449219e+01 - - 1 2 1173 8.6500000000000000e+01 0 -1 1174 - 4.5000000000000000e+00 -2 -3 1175 1.7500000000000000e+01 - - 7.6261973381042480e-01 -8.6133646965026855e-01 -1. - 1.0214501619338989e-01 - <_> - 3.4869640350341797e+01 - - 1 2 1176 5.0000000000000000e-01 0 -1 1177 - 1.2315000000000000e+03 -2 -3 1178 5.0000000000000000e-01 - - 3.7597665190696716e-01 -6.9864195585250854e-01 - 2.0625047385692596e-01 -4.8068267107009888e-01 - <_> - 3.5086204528808594e+01 - - 1 2 1179 1.6500000000000000e+01 0 -1 1180 - 8.3500000000000000e+01 -2 -3 1181 7.5000000000000000e+00 - - 1.4784654974937439e-01 -8.3145272731781006e-01 - -6.7620545625686646e-01 2.1656262874603271e-01 - <_> - 3.4877140045166016e+01 - - 1 2 1182 5.0000000000000000e-01 0 -1 1183 - 3.5000000000000000e+00 -2 -3 1184 969. - - -6.4537084102630615e-01 2.7460998296737671e-01 - -5.3607624769210815e-01 2.8266566991806030e-01 - <_> - 3.5179489135742188e+01 - - 1 2 1185 1.5000000000000000e+00 0 -1 1186 - 7.2500000000000000e+01 -2 -3 1187 3.1500000000000000e+01 - - 9.7988271713256836e-01 -5.9574514627456665e-01 - -1.8132425844669342e-01 5.5573570728302002e-01 - <_> - 3.5144893646240234e+01 - - 1 2 1188 5.0000000000000000e-01 0 -1 1189 - 2.6500000000000000e+01 -2 -3 1190 8.1650000000000000e+02 - - -4.2640584707260132e-01 5.2214205265045166e-01 - 8.3740442991256714e-01 -2.8797909617424011e-01 - <_> - 3.5558689117431641e+01 - - 1 2 1191 5.0000000000000000e-01 0 -1 1192 - 2.6500000000000000e+01 -2 -3 1193 1.2500000000000000e+01 - - -4.3793568015098572e-01 4.1379487514495850e-01 - 1.8940502405166626e-01 -5.4046261310577393e-01 - <_> - 3.5233970642089844e+01 - - 1 2 1194 4.7500000000000000e+01 0 -1 1195 - 8.5000000000000000e+00 -2 -3 1196 338. - - 1.5260761976242065e-01 -4.2628118395805359e-01 - 5.9790462255477905e-01 -5.5013555288314819e-01 - <_> - 3.5332725524902344e+01 - - 1 2 1197 5.0000000000000000e-01 0 -1 1198 - 3.6500000000000000e+01 -2 -3 1199 1.7500000000000000e+01 - - -6.2585823237895966e-02 6.3506704568862915e-01 - -3.5257333517074585e-01 5.9659516811370850e-01 - <_> - 3.5257114410400391e+01 - - 1 2 1200 3.5000000000000000e+00 0 -1 1201 - 7.5000000000000000e+00 -2 -3 1202 1.8500000000000000e+01 - - -9.3612766265869141e-01 3.4692686796188354e-01 - 5.0016778707504272e-01 -7.5611986219882965e-02 - <_> - 3.5595767974853516e+01 - - 1 2 1203 1.0500000000000000e+01 0 -1 1204 - 1.8500000000000000e+01 -2 -3 1205 1.5000000000000000e+00 - - -9.5243799686431885e-01 7.0761454105377197e-01 - 3.3865371346473694e-01 -1.8447074294090271e-01 - <_> - 3.5873832702636719e+01 - - 1 2 1206 1.6350000000000000e+02 0 -1 1207 - 9.1500000000000000e+01 -2 -3 1208 19. - - -1.3119605183601379e-01 4.0907257795333862e-01 - -8.4312802553176880e-01 9.1352003812789917e-01 - <_> - 3.6231769561767578e+01 - - 1 2 1209 4.5000000000000000e+00 0 -1 1210 - 1.5000000000000000e+00 -2 -3 1211 2.0500000000000000e+01 - - -4.6025198698043823e-01 3.4153524041175842e-01 - -5.0537836551666260e-01 3.5793614387512207e-01 - <_> - 3.6177539825439453e+01 - - 1 2 1212 1.5500000000000000e+01 0 -1 1213 - 4.5000000000000000e+00 -2 -3 1214 5.8650000000000000e+02 - - -3.4014788269996643e-01 3.7431231141090393e-01 - -8.9153337478637695e-01 -8.3685964345932007e-02 - <_> - 3.5921119689941406e+01 - - 1 2 1215 5.0000000000000000e-01 0 -1 1216 - 8.5500000000000000e+01 -2 -3 1217 3.3350000000000000e+02 - - 7.2648537158966064e-01 -8.4184181690216064e-01 - -2.5641769170761108e-01 5.9225118160247803e-01 - <_> - 3.5762935638427734e+01 - - 1 2 1218 5.0695000000000000e+03 0 -1 1219 - 4.1865000000000000e+03 -2 -3 1220 1.8500000000000000e+01 - - -1.5818408131599426e-01 7.5127458572387695e-01 - -4.1771730780601501e-01 1.6759181022644043e-01 - <_> - 3.6343830108642578e+01 - - 1 2 1221 5.5000000000000000e+00 0 -1 1222 161. -2 -3 1223 - 5.5000000000000000e+00 - - -7.1770183742046356e-02 -8.2580149173736572e-01 - 6.3310110569000244e-01 -1.1210992932319641e-02 - <_> - 3.6239753723144531e+01 - - 1 2 1224 2.9500000000000000e+01 0 -1 1225 - 2.2500000000000000e+01 -2 -3 1226 2.5000000000000000e+00 - - -5.7685142755508423e-01 5.9265869855880737e-01 - 5.8708161115646362e-01 -1.0407686233520508e-01 - <_> - 3.6570693969726562e+01 - - 1 2 1227 2.6050000000000000e+02 0 -1 1228 - 5.1500000000000000e+01 -2 -3 1229 194. - - -1.3848701119422913e-01 3.8530793786048889e-01 - -9.9199587106704712e-01 7.3519229888916016e-01 - <_> - 3.6172859191894531e+01 - - 1 2 1230 4.5000000000000000e+00 0 -1 1231 2985. -2 -3 1232 - 4.1050000000000000e+02 - - 7.0713436603546143e-01 -7.4149054288864136e-01 - -3.9783236384391785e-01 1.8219061195850372e-01 - <_> - 3.6474601745605469e+01 - - 1 2 1233 7.2850000000000000e+02 0 -1 1234 - 1.0500000000000000e+01 -2 -3 1235 9.5000000000000000e+00 - - -8.5275667905807495e-01 3.0174070596694946e-01 - 5.2034640312194824e-01 -4.9349766969680786e-01 - <_> - 3.6498180389404297e+01 - - 1 2 1236 4.8500000000000000e+01 0 -1 1237 - 9.5000000000000000e+00 -2 -3 1238 4.5000000000000000e+00 - - 7.8738486766815186e-01 -7.6111316680908203e-01 - 5.0128465890884399e-01 -1.1157950758934021e-01 - <_> - 3.6698276519775391e+01 - - 1 2 1239 2.8850000000000000e+02 0 -1 1240 - 2.0500000000000000e+01 -2 -3 1241 1.2805000000000000e+03 - - -4.7094190120697021e-01 2.0009694993495941e-01 1. - -9.3752562999725342e-01 - <_> - 3.6857143402099609e+01 - - 1 2 1242 3.5000000000000000e+00 0 -1 1243 2854. -2 -3 1244 - 5.0000000000000000e-01 - - 4.4445955753326416e-01 -6.2877982854843140e-01 - 2.8415599465370178e-01 -4.0654498338699341e-01 - <_> - 3.6661224365234375e+01 - - 1 2 1245 6.3850000000000000e+02 0 -1 1246 - 1.3500000000000000e+01 -2 -3 1247 2.5000000000000000e+00 - - -2.8753396868705750e-01 4.5057922601699829e-01 - -9.3399870395660400e-01 6.8900948762893677e-01 - <_> - 3.7027565002441406e+01 - - 1 2 1248 1.1500000000000000e+01 0 -1 1249 - 3.5000000000000000e+00 -2 -3 1250 482. - - -8.2890731096267700e-01 3.8032263517379761e-01 - -6.3736891746520996e-01 2.2181304171681404e-02 - <_> - 3.7302738189697266e+01 - - 1 2 1251 1.5000000000000000e+00 0 -1 1252 - 6.5000000000000000e+00 -2 -3 1253 2.1500000000000000e+01 - - -8.7263113260269165e-01 2.7517196536064148e-01 - -6.8864667415618896e-01 -1.0606539435684681e-02 - <_> - 3.7514694213867188e+01 - - 1 2 1254 5.0000000000000000e-01 0 -1 1255 - 1.6555000000000000e+03 -2 -3 1256 2.5500000000000000e+01 - - 5.4653161764144897e-01 -3.8731038570404053e-01 - -2.6684281229972839e-01 5.9316390752792358e-01 - <_> - 3.7565513610839844e+01 - - 1 2 1257 5.7450000000000000e+02 0 -1 1258 - 2.9450000000000000e+02 -2 -3 1259 3.4500000000000000e+01 - - -7.9943376779556274e-01 1. 3.4340542554855347e-01 - -2.2570419311523438e-01 - <_> - 3.7413349151611328e+01 - - 1 2 1260 189. 0 -1 1261 5.0000000000000000e-01 -2 -3 1262 - 2.0500000000000000e+01 - - 7.8168439865112305e-01 -8.3374607563018799e-01 - -1.9817931950092316e-01 3.6079603433609009e-01 - <_> - 3.7554840087890625e+01 - - 1 2 1263 298. 0 -1 1264 3022. -2 -3 1265 - 1.9350000000000000e+02 - - -1.1193416081368923e-02 8.7101829051971436e-01 - 2.1728983521461487e-01 -4.2951995134353638e-01 - <_> - 3.7603076934814453e+01 - - 1 2 1266 1.1500000000000000e+01 0 -1 1267 - 2.5000000000000000e+00 -2 -3 1268 1.0050000000000000e+02 - - 1.7867322266101837e-01 -4.2928701639175415e-01 - 5.2659392356872559e-01 -6.2002837657928467e-01 - <_> - 3.7885494232177734e+01 - - 1 2 1269 1.4500000000000000e+01 0 -1 1270 - 2.5000000000000000e+00 -2 -3 1271 8.0500000000000000e+01 - - 1.8106105923652649e-01 -7.7528846263885498e-01 - -5.8309614658355713e-01 2.8241708874702454e-01 - <_> - 3.7499431610107422e+01 - - 1 2 1272 3.5500000000000000e+01 0 -1 1273 - 2.5000000000000000e+00 -2 -3 1274 7.5000000000000000e+00 - - -9.1437792778015137e-01 5.1539105176925659e-01 - -3.8606551289558411e-01 3.3163914084434509e-01 - <_> - 3.7937980651855469e+01 - - 1 2 1275 1.3500000000000000e+01 0 -1 1276 - 1.4500000000000000e+01 -2 -3 1277 7.9500000000000000e+01 - - -7.2145909070968628e-02 6.0647141933441162e-01 - -6.2856364250183105e-01 8.6137987673282623e-02 - <_> - 3.8185783386230469e+01 - - 1 2 1278 1.4500000000000000e+01 0 -1 1279 73. -2 -3 1280 - 1.0500000000000000e+01 - - -9.4152975082397461e-01 1. 2.4780233204364777e-01 - -4.0907081961631775e-01 - <_> - 3.7849395751953125e+01 - - 1 2 1281 5.0000000000000000e-01 0 -1 1282 - 4.5000000000000000e+00 -2 -3 1283 5.0000000000000000e-01 - - -5.0824928283691406e-01 5.6237548589706421e-01 - 5.4402673244476318e-01 -3.3638605475425720e-01 - <_> - 3.8386943817138672e+01 - - 1 2 1284 2.0450000000000000e+02 0 -1 1285 - 6.7250000000000000e+02 -2 -3 1286 1.2385000000000000e+03 - - 3.9266860485076904e-01 -3.8152101635932922e-01 - 5.9661215543746948e-01 -3.8554838299751282e-01 - <_> - 3.8467891693115234e+01 - - 1 2 1287 5.5000000000000000e+00 0 -1 1288 - 9.0500000000000000e+01 -2 -3 1289 1.5000000000000000e+00 - - 2.1883549168705940e-02 -6.2764549255371094e-01 - 7.0444834232330322e-01 -4.4701110571622849e-02 - <_> - 3.8550418853759766e+01 - - 1 2 1290 2.8350000000000000e+02 0 -1 1291 - 1.4500000000000000e+01 -2 -3 1292 58. - - -8.5395231842994690e-02 5.9592086076736450e-01 - 9.0824156999588013e-01 -8.9943450689315796e-01 - <_> - 3.8631130218505859e+01 - - 1 2 1293 2.5000000000000000e+00 0 -1 1294 - 9.5000000000000000e+00 -2 -3 1295 5.5000000000000000e+00 - - -3.6073815822601318e-01 5.3091663122177124e-01 - 1.6989825665950775e-01 -4.6344351768493652e-01 - <_> - 3.8474849700927734e+01 - - 1 2 1296 5.7750000000000000e+02 0 -1 1297 - 1.9250000000000000e+02 -2 -3 1298 2.6195000000000000e+03 - - -8.1247472763061523e-01 2.9322347044944763e-01 - 3.5261180996894836e-01 -2.4546836316585541e-01 - <_> - 3.8279983520507812e+01 - - 1 2 1299 4.4500000000000000e+01 0 -1 1300 1096. -2 -3 1301 - 5.0000000000000000e-01 - - 6.6110774874687195e-02 -7.6391810178756714e-01 - 5.6174814701080322e-01 -7.3350854218006134e-02 - <_> - 3.8626735687255859e+01 - - 1 2 1302 3.4350000000000000e+02 0 -1 1303 - 5.0000000000000000e-01 -2 -3 1304 7.1750000000000000e+02 - - 3.5977458953857422e-01 -2.1690338850021362e-01 - 9.9256932735443115e-01 -1. - <_> - 3.8572544097900391e+01 - - 1 2 1305 1.1500000000000000e+01 0 -1 1306 - 1.2500000000000000e+01 -2 -3 1307 5.0000000000000000e-01 - - -9.2809075117111206e-01 8.5182946920394897e-01 - 4.9062111973762512e-01 -5.4192960262298584e-02 - <_> - 3.8948635101318359e+01 - - 1 2 1308 4.2550000000000000e+02 0 -1 1309 - 7.6500000000000000e+01 -2 -3 1310 8986. - - -4.5830437541007996e-01 1.6672098636627197e-01 - 7.7317571640014648e-01 -2.2485339641571045e-01 - <_> - 3.9342456817626953e+01 - - 1 2 1311 6.9500000000000000e+01 0 -1 1312 - 3.5500000000000000e+01 -2 -3 1313 1.0545000000000000e+03 - - -1.2714000418782234e-02 6.2372517585754395e-01 - -5.7864826917648315e-01 5.6230723857879639e-01 - <_> - 3.9216064453125000e+01 - - 1 2 1314 5.2750000000000000e+02 0 -1 1315 - 1.9048500000000000e+04 -2 -3 1316 4.5000000000000000e+00 - - -1. 7.7397161722183228e-01 1.6222594678401947e-01 - -3.9657172560691833e-01 - <_> - 3.9446334838867188e+01 - - 1 2 1317 3.5000000000000000e+00 0 -1 1318 - 6.3500000000000000e+01 -2 -3 1319 288. - - 3.8338693976402283e-01 -9.0452802181243896e-01 - -5.4537796974182129e-01 2.3026967048645020e-01 - <_> - 3.9339183807373047e+01 - - 1 2 1320 1.1500000000000000e+01 0 -1 1321 - 5.0000000000000000e-01 -2 -3 1322 3472. - - 3.7719848752021790e-01 -2.7750793099403381e-01 - -7.6843172311782837e-01 3.3132901880890131e-03 - <_> - 3.9513347625732422e+01 - - 1 2 1323 2.1500000000000000e+01 0 -1 1324 - 4.5000000000000000e+00 -2 -3 1325 1.1500000000000000e+01 - - 1.7416687309741974e-01 -4.6917149424552917e-01 - 5.5244189500808716e-01 -4.0332382917404175e-01 - <_> - 3.9441356658935547e+01 - - 1 2 1326 2.5500000000000000e+01 0 -1 1327 - 5.0000000000000000e-01 -2 -3 1328 4.5000000000000000e+00 - - 1.5569829940795898e-01 -8.3738613128662109e-01 - 5.1308917999267578e-01 -9.2380218207836151e-02 - <_> - 3.9830265045166016e+01 - - 1 2 1329 6.8500000000000000e+01 0 -1 1330 - 1.2500000000000000e+01 -2 -3 1331 2043. - - -1.6650912165641785e-01 3.8890799880027771e-01 - -8.0130118131637573e-01 8.2459330558776855e-01 - <_> - 3.9304054260253906e+01 - - 1 2 1332 5.0000000000000000e-01 0 -1 1333 3671. -2 -3 1334 - 3.8850000000000000e+02 - - 4.6532985568046570e-01 -4.4042190909385681e-01 - -5.5587589740753174e-01 1.3195018470287323e-01 - <_> - 3.9642890930175781e+01 - - 1 2 1335 8.5000000000000000e+00 0 -1 1336 - 2.1500000000000000e+01 -2 -3 1337 4.7350000000000000e+02 - - -5.9328550100326538e-01 3.3883699774742126e-01 - -6.9553929567337036e-01 1.5794724225997925e-01 - <_> - 3.9908969879150391e+01 - - 1 2 1338 5.5000000000000000e+00 0 -1 1339 - 1.3500000000000000e+01 -2 -3 1340 1.7500000000000000e+01 - - -6.7269146442413330e-01 2.6607844233512878e-01 - 6.0325987637042999e-02 -6.9073736667633057e-01 - <_> - 3.9898288726806641e+01 - - 1 2 1341 2.5950000000000000e+02 0 -1 1342 - 1.5500000000000000e+01 -2 -3 1343 1467. - - -7.4252463877201080e-02 6.0873824357986450e-01 - 8.6466276645660400e-01 -9.0673094987869263e-01 - <_> - 4.0200969696044922e+01 - - 1 2 1344 2.2500000000000000e+01 0 -1 1345 - 2.5000000000000000e+00 -2 -3 1346 9.5000000000000000e+00 - - -6.9203126430511475e-01 3.0267745256423950e-01 - 5.9105551242828369e-01 -5.3770178556442261e-01 - <_> - 4.0379238128662109e+01 - - 1 2 1347 2.9500000000000000e+01 0 -1 1348 - 8.3450000000000000e+02 -2 -3 1349 2.5000000000000000e+00 - - 3.7345203757286072e-01 -8.9355528354644775e-01 - 5.5846959352493286e-01 -5.8389563113451004e-02 - <_> - 4.0466419219970703e+01 - - 1 2 1350 3.1150000000000000e+02 0 -1 1351 - 5.0000000000000000e-01 -2 -3 1352 43. - - 3.1653991341590881e-01 -4.0619984269142151e-01 - -9.6266198158264160e-01 5.1727998256683350e-01 - <_> - 4.0718650817871094e+01 - - 1 2 1353 2.6150000000000000e+02 0 -1 1354 98. -2 -3 1355 - 8.5000000000000000e+00 - - -5.2089494466781616e-01 2.5222977995872498e-01 - -6.5091305971145630e-01 5.5701977014541626e-01 - <_> - 4.0246669769287109e+01 - - 1 2 1356 5.0000000000000000e-01 0 -1 1357 - 7.5000000000000000e+00 -2 -3 1358 2.0850000000000000e+02 - - -7.2299337387084961e-01 5.0567185878753662e-01 - -4.7197958827018738e-01 2.6619127392768860e-01 - <_> - 4.0419990539550781e+01 - - 1 2 1359 5.4705000000000000e+03 0 -1 1360 - 5.4750000000000000e+02 -2 -3 1361 1.5750000000000000e+02 - - 1.7332153022289276e-01 -6.0361874103546143e-01 - -9.6441686153411865e-01 1. - <_> - 4.1056423187255859e+01 - - 1 2 1362 5.0000000000000000e-01 0 -1 1363 - 3.5000000000000000e+00 -2 -3 1364 7.8350000000000000e+02 - - 6.3643354177474976e-01 -8.3072267472743988e-02 - -3.8505536317825317e-01 5.1825720071792603e-01 - <_> - 4.0787433624267578e+01 - - 1 2 1365 8.5000000000000000e+00 0 -1 1366 - 4.1250000000000000e+02 -2 -3 1367 3.0850000000000000e+02 - - -2.2618213668465614e-02 -7.3404783010482788e-01 - 5.4074966907501221e-01 -6.5069526433944702e-01 - <_> - 4.0980438232421875e+01 - - 1 2 1368 1.0750000000000000e+02 0 -1 1369 - 4.5500000000000000e+01 -2 -3 1370 1.5500000000000000e+01 - - 2.9288902878761292e-01 -7.8175473213195801e-01 - 4.1299736499786377e-01 -2.0014704763889313e-01 - <_> - 4.0946659088134766e+01 - - 1 2 1371 2.2500000000000000e+01 0 -1 1372 - 1.6500000000000000e+01 -2 -3 1373 2.5000000000000000e+00 - - -6.0043293237686157e-01 2.2489283978939056e-01 - 5.3942525386810303e-01 -1.2392763793468475e-01 - <_> - 4.0625984191894531e+01 - - 1 2 1374 5.8450000000000000e+02 0 -1 1375 3981. -2 -3 1376 - 3.8850000000000000e+02 - - -6.5919399261474609e-01 7.3984676599502563e-01 - 6.0902094841003418e-01 -5.9394266456365585e-02 - <_> - 4.1078342437744141e+01 - - 1 2 1377 1.5000000000000000e+00 0 -1 1378 - 9.5000000000000000e+00 -2 -3 1379 2.5000000000000000e+00 - - -9.4205194711685181e-01 5.8499878644943237e-01 - 4.5235899090766907e-01 -1.7015253007411957e-01 - <_> - 4.1278953552246094e+01 - - 1 2 1380 2.7950000000000000e+02 0 -1 1381 - 2.7950000000000000e+02 -2 -3 1382 7572. - - -1.0575494915246964e-01 7.5965499877929688e-01 - -5.6243377923965454e-01 1.3653093576431274e-01 - <_> - 4.1171962738037109e+01 - - 1 2 1383 5.5000000000000000e+00 0 -1 1384 - 8.6950000000000000e+02 -2 -3 1385 3.5000000000000000e+00 - - 3.1256729364395142e-01 -4.9650138616561890e-01 - 5.3703850507736206e-01 -1.0799391567707062e-01 - <_> - 4.1153244018554688e+01 - - 1 2 1386 1.5000000000000000e+00 0 -1 1387 - 8.5000000000000000e+00 -2 -3 1388 1.4500000000000000e+01 - - -1.8950442969799042e-01 5.2447348833084106e-01 - -4.3827834725379944e-01 3.5529047250747681e-01 - <_> - 4.1464454650878906e+01 - - 1 2 1389 2.7500000000000000e+01 0 -1 1390 - 3.1500000000000000e+01 -2 -3 1391 4.5000000000000000e+00 - - -3.4287273883819580e-01 3.1121128797531128e-01 - 2.0723707973957062e-01 -7.9717916250228882e-01 - <_> - 4.1779788970947266e+01 - - 1 2 1392 1.5000000000000000e+00 0 -1 1393 - 1.8265000000000000e+03 -2 -3 1394 2.8650000000000000e+02 - - 8.0022591352462769e-01 -2.8835564851760864e-01 - 3.1533339619636536e-01 -3.5018000006675720e-01 - <_> - 4.2194210052490234e+01 - - 1 2 1395 2.2500000000000000e+01 0 -1 1396 - 2.2500000000000000e+01 -2 -3 1397 7.5000000000000000e+00 - - 7.3232901096343994e-01 -7.3244142532348633e-01 - 3.6955040693283081e-01 -2.0323853194713593e-01 - <_> - 4.1935131072998047e+01 - - 1 2 1398 9.4500000000000000e+01 0 -1 1399 - 4.0500000000000000e+01 -2 -3 1400 2.2500000000000000e+01 - - 1.9609075784683228e-01 -4.6288254857063293e-01 - 6.2146210670471191e-01 -3.8049280643463135e-01 - <_> - 4.2215938568115234e+01 - - 1 2 1401 2.9500000000000000e+01 0 -1 1402 - 5.0000000000000000e-01 -2 -3 1403 1.0500000000000000e+01 - - 3.9385579526424408e-02 -7.3405563831329346e-01 - -5.1055783033370972e-01 2.8080457448959351e-01 - <_> - 4.2273452758789062e+01 - - 1 2 1404 4.5450000000000000e+02 0 -1 1405 - 5.8750000000000000e+02 -2 -3 1406 9.5000000000000000e+00 - - -3.3196282386779785e-01 2.5219461321830750e-01 - 7.2692161798477173e-01 -8.5374397039413452e-01 - <_> - 4.2540458679199219e+01 - - 1 2 1407 1.5000000000000000e+00 0 -1 1408 - 1.0500000000000000e+01 -2 -3 1409 3.7950000000000000e+02 - - -5.1572650671005249e-01 2.6700666546821594e-01 - 5.4633575677871704e-01 -6.4842927455902100e-01 - <_> - 4.2285171508789062e+01 - - 1 2 1410 4.5000000000000000e+00 0 -1 1411 - 4.8500000000000000e+01 -2 -3 1412 1.1500000000000000e+01 - - -4.3229374289512634e-01 5.2580875158309937e-01 - -3.8174706697463989e-01 6.1482822895050049e-01 - <_> - 4.2519309997558594e+01 - - 1 2 1413 1.2500000000000000e+01 0 -1 1414 - 7.5000000000000000e+00 -2 -3 1415 3.7500000000000000e+01 - - -6.5897458791732788e-01 2.3413842916488647e-01 - -6.6297173500061035e-01 9.3680036067962646e-01 - <_> - 4.2602912902832031e+01 - - 1 2 1416 2.7850000000000000e+02 0 -1 1417 - 6.7750000000000000e+02 -2 -3 1418 6.5750000000000000e+02 - - -5.7975625991821289e-01 6.0615879297256470e-01 - -4.7606697678565979e-01 1.9234745204448700e-01 - <_> - 4.2477813720703125e+01 - - 1 2 1419 3.5000000000000000e+00 0 -1 1420 - 5.0000000000000000e-01 -2 -3 1421 9.6750000000000000e+02 - - -1. 5.3890687227249146e-01 -2.7986538410186768e-01 - 5.5624389648437500e-01 - <_> - 4.2815971374511719e+01 - - 1 2 1422 2.5000000000000000e+00 0 -1 1423 3470. -2 -3 1424 - 1.3150000000000000e+02 - - 3.3815622329711914e-01 -6.8323451280593872e-01 - -5.7661479711532593e-01 1.8929332494735718e-01 - <_> - 4.2939407348632812e+01 - - 1 2 1425 1835. 0 -1 1426 1485. -2 -3 1427 - 5.0000000000000000e-01 - - -9.3249452114105225e-01 8.5018444061279297e-01 - 1.2343621253967285e-01 -4.1629931330680847e-01 - <_> - 4.2931537628173828e+01 - - 1 2 1428 6.5000000000000000e+00 0 -1 1429 - 9.5000000000000000e+00 -2 -3 1430 8.3500000000000000e+01 - - -5.8253604173660278e-01 2.3116320371627808e-01 - 4.4566446542739868e-01 -2.5381112098693848e-01 - <_> - 4.2532341003417969e+01 - - 1 2 1431 801. 0 -1 1432 1.4500000000000000e+01 -2 -3 1433 - 2.2500000000000000e+01 - - 2.3233406245708466e-01 -8.8682103157043457e-01 - 2.7638220787048340e-01 -3.9919924736022949e-01 - <_> - 4.2818271636962891e+01 - - 1 2 1434 3.3500000000000000e+01 0 -1 1435 - 5.0000000000000000e-01 -2 -3 1436 5.5000000000000000e+00 - - 2.6199400424957275e-01 -7.7381122112274170e-01 - 3.9374157786369324e-01 -1.9156071543693542e-01 - <_> - 4.3225166320800781e+01 - - 1 2 1437 3.0650000000000000e+02 0 -1 1438 - 3.5000000000000000e+00 -2 -3 1439 2.2750000000000000e+02 - - 1.6485489904880524e-01 -5.3608208894729614e-01 - 4.0689289569854736e-01 -6.9017094373703003e-01 - <_> - 4.3414455413818359e+01 - - 1 2 1440 4.9500000000000000e+01 0 -1 1441 - 3.2550000000000000e+02 -2 -3 1442 7.5500000000000000e+01 - - -7.2704082727432251e-01 9.2259776592254639e-01 - 1.8928927183151245e-01 -7.1190369129180908e-01 - <_> - 4.3530220031738281e+01 - - 1 2 1443 8.5000000000000000e+00 0 -1 1444 - 5.5000000000000000e+00 -2 -3 1445 33. - - -2.6097178459167480e-01 3.5981386899948120e-01 - 5.5373930931091309e-01 -5.9446001052856445e-01 - <_> - 4.3589599609375000e+01 - - 1 2 1446 1.7500000000000000e+01 0 -1 1447 - 1.5000000000000000e+00 -2 -3 1448 7.1500000000000000e+01 - - -8.9150971174240112e-01 4.0421536564826965e-01 - -5.9817147254943848e-01 1.3356564939022064e-01 - <_> - 4.3756496429443359e+01 - - 1 2 1449 2.7150000000000000e+02 0 -1 1450 - 3.1500000000000000e+01 -2 -3 1451 7.5000000000000000e+00 - - -7.5597035884857178e-01 7.5368809700012207e-01 - 2.0741133391857147e-01 -3.4641715884208679e-01 - <_> - 4.4184627532958984e+01 - - 1 2 1452 3.4445000000000000e+03 0 -1 1453 - 1.3500000000000000e+01 -2 -3 1454 7.5000000000000000e+00 - - -3.4672267735004425e-02 6.4763146638870239e-01 - -5.8406358957290649e-01 9.5271444320678711e-01 - <_> - 4.4115615844726562e+01 - - 1 2 1455 351. 0 -1 1456 5.5000000000000000e+00 -2 -3 1457 - 1.3150000000000000e+02 - - 1. -9.0385907888412476e-01 5.6236469745635986e-01 - -6.9008864462375641e-02 - <_> - 4.3778049468994141e+01 - - 1 2 1458 2.1950000000000000e+02 0 -1 1459 - 1.7500000000000000e+01 -2 -3 1460 1446. - - 1.1805868148803711e-01 -4.6155539155006409e-01 - 8.1571227312088013e-01 -4.5998147130012512e-01 - <_> - 4.3705924987792969e+01 - - 1 2 1461 5.4500000000000000e+01 0 -1 1462 - 5.0000000000000000e-01 -2 -3 1463 2.0500000000000000e+01 - - 1.5270361304283142e-01 -7.6259005069732666e-01 - -4.3407937884330750e-01 3.2683727145195007e-01 - <_> - 4.3761566162109375e+01 - - 1 2 1464 1.5000000000000000e+00 0 -1 1465 - 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 - - -4.2883574962615967e-01 4.9130806326866150e-01 - 7.2157061100006104e-01 -3.4332326054573059e-01 - <_> - 4.4159553527832031e+01 - - 1 2 1467 1.8850000000000000e+02 0 -1 1468 - 4.4500000000000000e+01 -2 -3 1469 1.6865000000000000e+03 - - -1.2656107544898987e-01 3.9798957109451294e-01 - -8.5940158367156982e-01 7.5859928131103516e-01 - <_> - 4.4086994171142578e+01 - - 1 2 1470 3.5000000000000000e+00 0 -1 1471 - 1.6500000000000000e+01 -2 -3 1472 2.0500000000000000e+01 - - -7.1025812625885010e-01 3.1149634718894958e-01 - 4.1715073585510254e-01 -5.0822889804840088e-01 - <_> - 4.4548297882080078e+01 - - 1 2 1473 5.0000000000000000e-01 0 -1 1474 - 6.3500000000000000e+01 -2 -3 1475 1.4450000000000000e+02 - - -1.9292996823787689e-01 5.2084052562713623e-01 - -1.8266052007675171e-02 -7.4490708112716675e-01 - <_> - 4.4444839477539062e+01 - - 1 2 1476 5.5000000000000000e+00 0 -1 1477 - 1.8500000000000000e+01 -2 -3 1478 2.1500000000000000e+01 - - -5.8617092669010162e-02 5.7820588350296021e-01 - -4.1243070363998413e-01 6.0866367816925049e-01 - <_> - 4.4468860626220703e+01 - - 1 2 1479 4.5000000000000000e+00 0 -1 1480 - 2.3450000000000000e+02 -2 -3 1481 1.4500000000000000e+01 - - 2.8463301062583923e-01 -8.2563692331314087e-01 - -5.8707511425018311e-01 2.5017964839935303e-01 - <_> - 4.4571441650390625e+01 - - 1 2 1482 3.3450000000000000e+02 0 -1 1483 - 2.1500000000000000e+01 -2 -3 1484 946. - - -4.3612629175186157e-01 1.0257755219936371e-01 - 9.7813111543655396e-01 -8.0724465847015381e-01 - <_> - 4.4642127990722656e+01 - - 1 2 1485 1.5000000000000000e+00 0 -1 1486 - 8.5000000000000000e+00 -2 -3 1487 2.0500000000000000e+01 - - -9.3800437450408936e-01 6.0421532392501831e-01 - -6.4370167255401611e-01 2.7616502717137337e-02 - <_> - 4.4928077697753906e+01 - - 1 2 1488 5.0000000000000000e-01 0 -1 1489 - 2.6500000000000000e+01 -2 -3 1490 7.9250000000000000e+02 - - -6.6210180521011353e-02 6.4315652847290039e-01 - 6.9847983121871948e-01 -3.6571246385574341e-01 - <_> - 4.4592266082763672e+01 - - 1 2 1491 5.0000000000000000e-01 0 -1 1492 - 5.5350000000000000e+02 -2 -3 1493 1.5000000000000000e+00 - - -3.8149592280387878e-01 6.3860899209976196e-01 - 3.4885448217391968e-01 -3.3581241965293884e-01 - <_> - 4.4829784393310547e+01 - - 1 2 1494 1.5500000000000000e+01 0 -1 1495 - 2.7850000000000000e+02 -2 -3 1496 3.5000000000000000e+00 - - 6.8045026063919067e-01 -8.0610173940658569e-01 - -5.2162581682205200e-01 2.3751950263977051e-01 - <_> - 4.5090461730957031e+01 - - 1 2 1497 2.3500000000000000e+01 0 -1 1498 - 5.5000000000000000e+00 -2 -3 1499 1.3500000000000000e+01 - - -1.3596580922603607e-01 4.8954018950462341e-01 - -5.6967926025390625e-01 3.6096325516700745e-01 - <_> - 4.5232925415039062e+01 - - 1 2 1500 2154. 0 -1 1501 2.7550000000000000e+02 -2 -3 1502 - 128. - - 1.4246465265750885e-01 -8.8002961874008179e-01 1. - -9.7181195020675659e-01 - <_> - 4.5529132843017578e+01 - - 1 2 1503 5.8750000000000000e+02 0 -1 1504 3981. -2 -3 1505 - 5.0000000000000000e-01 - - -5.8577227592468262e-01 5.8029693365097046e-01 - 4.0880706906318665e-01 -2.0956511795520782e-01 - <_> - 4.5304393768310547e+01 - - 1 2 1506 1.6785000000000000e+03 0 -1 1507 - 4.2005000000000000e+03 -2 -3 1508 359. - - 2.9394268989562988e-02 8.0651479959487915e-01 - -3.3733904361724854e-01 6.9124865531921387e-01 - <_> - 4.5737625122070312e+01 - - 1 2 1509 2.7500000000000000e+01 0 -1 1510 - 5.0000000000000000e-01 -2 -3 1511 2.5000000000000000e+00 - - 2.7190417051315308e-01 -6.8398970365524292e-01 - 5.1673895120620728e-01 -5.9552457183599472e-02 - <_> - 4.5805149078369141e+01 - - 1 2 1512 5.6550000000000000e+02 0 -1 1513 - 1.1500000000000000e+01 -2 -3 1514 1.3500000000000000e+01 - - -5.3953158855438232e-01 4.1888201236724854e-01 - -7.7625131607055664e-01 -1.5986794605851173e-02 - <_> - 4.5724216461181641e+01 - - 1 2 1515 1.0500000000000000e+01 0 -1 1516 - 5.5000000000000000e+00 -2 -3 1517 25. - - 4.2757162451744080e-01 -2.2005110979080200e-01 - -5.4273819923400879e-01 8.9083051681518555e-01 - <_> - 4.5885368347167969e+01 - - 1 2 1518 238. 0 -1 1519 9.5000000000000000e+00 -2 -3 1520 - 2.0850000000000000e+02 - - -9.5597231388092041e-01 5.2587646245956421e-01 - 1.6115142405033112e-01 -7.6278209686279297e-01 - <_> - 4.5789482116699219e+01 - - 1 2 1521 2.9500000000000000e+01 0 -1 1522 - 2.6500000000000000e+01 -2 -3 1523 1.5450000000000000e+02 - - 1.6601219773292542e-01 -7.7067446708679199e-01 - -6.6907399892807007e-01 2.2051426768302917e-01 - <_> - 4.5806617736816406e+01 - - 1 2 1524 4.5000000000000000e+00 0 -1 1525 - 1.1500000000000000e+01 -2 -3 1526 3.5000000000000000e+00 - - -5.7005125284194946e-01 2.7322229743003845e-01 - 7.9801094532012939e-01 -5.2006053924560547e-01 - <_> - 4.6323131561279297e+01 - - 1 2 1527 1.3500000000000000e+01 0 -1 1528 - 3.4500000000000000e+01 -2 -3 1529 3.5000000000000000e+00 - - -5.5972643196582794e-02 5.1800715923309326e-01 - 3.3099360764026642e-02 -9.6488022804260254e-01 - <_> - 4.6282222747802734e+01 - - 1 2 1530 7.7250000000000000e+02 0 -1 1531 - 1.3500000000000000e+01 -2 -3 1532 1.1545000000000000e+03 - - -1.0771922767162323e-02 -8.7211072444915771e-01 - 7.0063769817352295e-01 -4.2402658611536026e-02 - <_> - 4.6205421447753906e+01 - - 1 2 1533 1.5000000000000000e+00 0 -1 1534 - 1.1500000000000000e+01 -2 -3 1535 1.5500000000000000e+01 - - -7.8480374813079834e-01 4.9849182367324829e-01 - 2.8026169538497925e-01 -3.8838988542556763e-01 - <_> - 4.6704681396484375e+01 - - 1 2 1536 2.5650000000000000e+02 0 -1 1537 - 9.5000000000000000e+00 -2 -3 1538 3.6145000000000000e+03 - - 8.8258177042007446e-01 -1. -6.1924713850021362e-01 - 6.9299057126045227e-02 - <_> - 4.6858192443847656e+01 - - 1 2 1539 1.6500000000000000e+01 0 -1 1540 - 2.1950000000000000e+02 -2 -3 1541 5.0000000000000000e-01 - - 3.5154920816421509e-01 -7.6912820339202881e-01 - 4.3404066562652588e-01 -1.0876829922199249e-01 - <_> - 4.6701599121093750e+01 - - 1 2 1542 3.5000000000000000e+00 0 -1 1543 - 4.1500000000000000e+01 -2 -3 1544 4.5000000000000000e+00 - - -8.0593466758728027e-01 6.3903629779815674e-01 - 4.0837219357490540e-01 -1.5659359097480774e-01 - <_> - 4.6904064178466797e+01 - - 1 2 1545 2.9500000000000000e+01 0 -1 1546 - 1.5000000000000000e+00 -2 -3 1547 219. - - -4.2634201049804688e-01 2.0246233046054840e-01 - -8.5641664266586304e-01 1. - <_> - 4.6656322479248047e+01 - - 1 2 1548 6.5000000000000000e+00 0 -1 1549 - 3.2500000000000000e+01 -2 -3 1550 4.1650000000000000e+02 - - -2.4700936675071716e-01 6.6941606998443604e-01 - 3.2602754235267639e-01 -3.6878246068954468e-01 - <_> - 4.6564968109130859e+01 - - 1 2 1551 1.2450000000000000e+02 0 -1 1552 - 5.5000000000000000e+00 -2 -3 1553 2.4150000000000000e+02 - - 4.5446833968162537e-01 -3.7261262536048889e-01 - 4.6772354841232300e-01 -7.1237772703170776e-01 - <_> - 4.6805198669433594e+01 - - 1 2 1554 4.5000000000000000e+00 0 -1 1555 - 7.3500000000000000e+01 -2 -3 1556 1.9500000000000000e+01 - - 2.4023169279098511e-01 -4.3494370579719543e-01 - -8.5679495334625244e-01 5.3150933980941772e-01 - <_> - 4.6938976287841797e+01 - - 1 2 1557 2.0850000000000000e+02 0 -1 1558 - 1.5000000000000000e+00 -2 -3 1559 4.5000000000000000e+00 - - 1.3377590477466583e-01 -4.7894757986068726e-01 - -7.4763888120651245e-01 4.7673630714416504e-01 - <_> - 4.7246456146240234e+01 - - 1 2 1560 2.5000000000000000e+00 0 -1 1561 6. -2 -3 1562 - 1.5000000000000000e+00 - - -9.0447050333023071e-01 8.6583727598190308e-01 - 3.0747944116592407e-01 -2.1712197363376617e-01 - <_> - 4.7012886047363281e+01 - - 1 2 1563 1.0500000000000000e+01 0 -1 1564 - 2.5000000000000000e+00 -2 -3 1565 2.4500000000000000e+01 - - -8.6812806129455566e-01 7.4207389354705811e-01 - -4.6920669078826904e-01 2.0873917639255524e-01 - <_> - 4.7398384094238281e+01 - - 1 2 1566 5.0000000000000000e-01 0 -1 1567 - 4.1500000000000000e+01 -2 -3 1568 1.2365000000000000e+03 - - -2.2475609183311462e-01 5.0746756792068481e-01 - -5.6809660047292709e-02 -7.4659413099288940e-01 - <_> - 4.7630195617675781e+01 - - 1 2 1569 7.5000000000000000e+00 0 -1 1570 - 4.5500000000000000e+01 -2 -3 1571 27. - - 2.3181208968162537e-01 -6.4988273382186890e-01 - -6.4328664541244507e-01 6.1851358413696289e-01 - <_> - 4.7380603790283203e+01 - - 1 2 1572 5.5000000000000000e+00 0 -1 1573 - 2.5000000000000000e+00 -2 -3 1574 1.8650000000000000e+02 - - 6.1403033323585987e-03 -5.5332463979721069e-01 - 4.5167797803878784e-01 -7.4148744344711304e-01 - <_> - 4.7716838836669922e+01 - - 1 2 1575 5.0500000000000000e+01 0 -1 1576 340. -2 -3 1577 - 1.5000000000000000e+00 - - 4.3912079930305481e-01 -7.3454135656356812e-01 - 6.4382767677307129e-01 -1.5953628346323967e-02 - <_> - 4.7556518554687500e+01 - - 1 2 1578 8.4500000000000000e+01 0 -1 1579 311. -2 -3 1580 - 5.0000000000000000e-01 - - 8.0123282968997955e-02 -7.0855069160461426e-01 - 4.7582688927650452e-01 -1.6031953692436218e-01 - <_> - 4.7572052001953125e+01 - - 1 2 1581 4.1250000000000000e+02 0 -1 1582 - 2.5000000000000000e+00 -2 -3 1583 1.0405000000000000e+03 - - 5.3272254765033722e-02 -6.1080712080001831e-01 - 5.7476472854614258e-01 -3.3661961555480957e-01 - <_> - 4.7565738677978516e+01 - - 1 2 1584 8.1450000000000000e+02 0 -1 1585 - 5.7750000000000000e+02 -2 -3 1586 8.5000000000000000e+00 - - 8.0671536922454834e-01 -4.1966786980628967e-01 - 1.6598591208457947e-01 -3.8562926650047302e-01 - <_> - 4.7773296356201172e+01 - - 1 2 1587 1.5000000000000000e+00 0 -1 1588 1174. -2 -3 1589 - 3.9500000000000000e+01 - - 1. -9.7881591320037842e-01 2.0755772292613983e-01 - -5.1666331291198730e-01 - <_> - 4.8310127258300781e+01 - - 1 2 1590 1.9500000000000000e+01 0 -1 1591 - 5.0000000000000000e-01 -2 -3 1592 3.5000000000000000e+00 - - 7.0349156856536865e-01 -7.1407133340835571e-01 - 5.4187601804733276e-01 -9.5178633928298950e-02 - <_> - 4.8071701049804688e+01 - - 1 2 1593 801. 0 -1 1594 8.5000000000000000e+00 -2 -3 1595 - 8.5000000000000000e+00 - - -2.3842808604240417e-01 4.0528839826583862e-01 - 8.4955078363418579e-01 -9.1280186176300049e-01 - <_> - 4.8208892822265625e+01 - - 1 2 1596 6.5000000000000000e+00 0 -1 1597 - 4.1500000000000000e+01 -2 -3 1598 1.8500000000000000e+01 - - -9.3895512819290161e-01 3.3225542306900024e-01 - -5.6959801912307739e-01 1.9758279621601105e-01 - <_> - 4.8468334197998047e+01 - - 1 2 1599 644. 0 -1 1600 3.1500000000000000e+01 -2 -3 1601 - 2.5500000000000000e+01 - - 4.6466782689094543e-01 -7.2437942028045654e-01 - 2.5944426655769348e-01 -5.1669490337371826e-01 - <_> - 4.8280807495117188e+01 - - 1 2 1602 5.8750000000000000e+02 0 -1 1603 998. -2 -3 1604 - 1.9450000000000000e+02 - - -5.6361049413681030e-01 8.2740515470504761e-01 - 7.3864108324050903e-01 -3.1339693814516068e-02 - <_> - 4.8574962615966797e+01 - - 1 2 1605 2.3450000000000000e+02 0 -1 1606 - 1.5000000000000000e+00 -2 -3 1607 1.4050000000000000e+02 - - 3.6085158586502075e-01 -1.9539615511894226e-01 - -9.4802927970886230e-01 2.6839014887809753e-01 - <_> - 4.8454341888427734e+01 - - 1 2 1608 3.9500000000000000e+01 0 -1 1609 - 5.0000000000000000e-01 -2 -3 1610 1.6650000000000000e+02 - - 1.0862217843532562e-01 -5.7014846801757812e-01 - 3.1803789734840393e-01 -8.6990028619766235e-01 - <_> - 4.8686836242675781e+01 - - 1 2 1611 7.5000000000000000e+00 0 -1 1612 - 4.4500000000000000e+01 -2 -3 1613 5.0000000000000000e-01 - - 4.4552764296531677e-01 -9.6768623590469360e-01 - 3.7845483422279358e-01 -2.0616437494754791e-01 - <_> - 4.8645317077636719e+01 - - 1 2 1614 2.1500000000000000e+01 0 -1 1615 - 5.7500000000000000e+01 -2 -3 1616 9.2500000000000000e+01 - - 2.0209166407585144e-01 -3.7205338478088379e-01 - 6.6951900720596313e-01 -9.7072052955627441e-01 - <_> - 4.8846817016601562e+01 - - 1 2 1617 1.8500000000000000e+01 0 -1 1618 - 1.9500000000000000e+01 -2 -3 1619 2.7500000000000000e+01 - - -9.0423774719238281e-01 4.2085230350494385e-01 - 2.0150278508663177e-01 -6.7301428318023682e-01 - <_> - 4.8628437042236328e+01 - - 1 2 1620 291. 0 -1 1621 6.5000000000000000e+00 -2 -3 1622 - 1.1500000000000000e+01 - - 2.5333371758460999e-01 -9.6325629949569702e-01 - -6.0980123281478882e-01 1.4127761125564575e-01 - <_> - 4.8402679443359375e+01 - - 1 2 1623 2.1050000000000000e+02 0 -1 1624 - 6.5000000000000000e+00 -2 -3 1625 3.2500000000000000e+01 - - 3.4403830766677856e-02 -5.8541810512542725e-01 - -6.9637399911880493e-01 4.9845540523529053e-01 - <_> - 4.8841716766357422e+01 - - 1 2 1626 7.5000000000000000e+00 0 -1 1627 - 4.9500000000000000e+01 -2 -3 1628 1.1500000000000000e+01 - - 4.3903854489326477e-01 -6.2086170911788940e-01 - -6.5002232789993286e-01 -1.5730377286672592e-02 - <_> - 4.9389339447021484e+01 - - 1 2 1629 80. 0 -1 1630 3.5000000000000000e+00 -2 -3 1631 - 1.0255000000000000e+03 - - 3.1859183311462402e-01 -4.2584937810897827e-01 - -8.9118802547454834e-01 5.4762154817581177e-01 - <_> - 4.8809658050537109e+01 - - 1 2 1632 5.0000000000000000e-01 0 -1 1633 - 9.1500000000000000e+01 -2 -3 1634 1.5500000000000000e+01 - - -2.0882329344749451e-01 5.9099739789962769e-01 - 3.5995401442050934e-02 -5.7967907190322876e-01 - <_> - 4.9262874603271484e+01 - - 1 2 1635 2.3500000000000000e+01 0 -1 1636 2138. -2 -3 1637 - 7.4500000000000000e+01 - - 2.5881242752075195e-01 -6.5358424186706543e-01 - -4.4690254330635071e-01 4.5321631431579590e-01 - <_> - 4.9810745239257812e+01 - - 1 2 1638 2.8905000000000000e+03 0 -1 1639 - 1.4034500000000000e+04 -2 -3 1640 5.0000000000000000e-01 - - 5.9278053045272827e-01 -9.4314843416213989e-01 - 3.9468899369239807e-01 -2.7942237257957458e-01 - <_> - 4.9740810394287109e+01 - - 1 2 1641 5.0000000000000000e-01 0 -1 1642 13. -2 -3 1643 - 6.4500000000000000e+01 - - -9.7298115491867065e-01 7.5200670957565308e-01 - 1.9612585008144379e-01 -5.2234607934951782e-01 - <_> - 4.9890090942382812e+01 - - 1 2 1644 7.5000000000000000e+00 0 -1 1645 - 8.5000000000000000e+00 -2 -3 1646 381. - - -5.6059420108795166e-01 5.0415074825286865e-01 - 4.8369589447975159e-01 -3.1803038716316223e-01 - <_> - 4.9964401245117188e+01 - - 1 2 1647 5.0000000000000000e-01 0 -1 1648 - 6.5000000000000000e+00 -2 -3 1649 1.5500000000000000e+01 - - -9.7737157344818115e-01 5.3311198949813843e-01 - -4.1340222954750061e-01 2.4446828663349152e-01 - <_> - 5.0132915496826172e+01 - - 1 2 1650 1.0500000000000000e+01 0 -1 1651 - 9.5000000000000000e+00 -2 -3 1652 182. - - -2.6112908124923706e-01 4.9358665943145752e-01 - 6.2064582109451294e-01 -4.5646050572395325e-01 - <_> - 5.0014610290527344e+01 - - 1 2 1653 6.5000000000000000e+00 0 -1 1654 2329. -2 -3 1655 - 6.6350000000000000e+02 - - 4.0677326917648315e-01 -7.2954016923904419e-01 - -5.2711308002471924e-01 2.2369565069675446e-01 - <_> - 5.0282009124755859e+01 - - 1 2 1656 1513. 0 -1 1657 6.6500000000000000e+01 -2 -3 1658 - 2.0125000000000000e+03 - - -9.2653149366378784e-01 5.6927061080932617e-01 - 6.3748288154602051e-01 -6.0769841074943542e-02 - <_> - 5.0116958618164062e+01 - - 1 2 1659 1.4500000000000000e+01 0 -1 1660 - 3.5000000000000000e+00 -2 -3 1661 1.6500000000000000e+01 - - -8.6243766546249390e-01 8.8660824298858643e-01 - 4.5358371734619141e-01 -1.6504985094070435e-01 - <_> - 5.0264678955078125e+01 - - 1 2 1662 1.1500000000000000e+01 0 -1 1663 - 4.5000000000000000e+00 -2 -3 1664 4.3500000000000000e+01 - - -8.9545702934265137e-01 1. 2.3749004304409027e-01 - -4.1009184718132019e-01 - <_> - 5.0537300109863281e+01 - - 1 2 1665 6.5000000000000000e+00 0 -1 1666 - 1.1500000000000000e+01 -2 -3 1667 4.8500000000000000e+01 - - 1.8909458816051483e-01 -6.9768869876861572e-01 - -3.7118515372276306e-01 2.7262043952941895e-01 - <_> - 5.0127769470214844e+01 - - 1 2 1668 2.5000000000000000e+00 0 -1 1669 49. -2 -3 1670 - 1.5000000000000000e+00 - - -7.0132219791412354e-01 4.8064956068992615e-01 - 2.1170513331890106e-01 -4.0953138470649719e-01 - <_> - 5.0477714538574219e+01 - - 1 2 1671 2.5000000000000000e+00 0 -1 1672 - 1.5650000000000000e+02 -2 -3 1673 1.1995000000000000e+03 - - 3.4994655847549438e-01 -7.3900407552719116e-01 - -6.3774943351745605e-01 -4.0900995954871178e-03 - <_> - 5.0603004455566406e+01 - - 1 2 1674 2.7950000000000000e+02 0 -1 1675 8514. -2 -3 1676 - 4.0500000000000000e+01 - - 9.1369850561022758e-03 8.2339012622833252e-01 - -5.2016735076904297e-01 1.2528854608535767e-01 - <_> - 5.0545921325683594e+01 - - 1 2 1677 3.5000000000000000e+00 0 -1 1678 - 3.9500000000000000e+01 -2 -3 1679 1.6500000000000000e+01 - - -1.4933063089847565e-01 4.4103890657424927e-01 - -5.4845666885375977e-01 3.5070386528968811e-01 - <_> - 5.0866680145263672e+01 - - 1 2 1680 5.1950000000000000e+02 0 -1 1681 - 1.2150000000000000e+02 -2 -3 1682 1.5000000000000000e+00 - - -1.7503215372562408e-01 3.2076016068458557e-01 - 5.0803476572036743e-01 -9.5718288421630859e-01 - <_> - 5.0898628234863281e+01 - - 1 2 1683 5.0000000000000000e-01 0 -1 1684 - 6.5000000000000000e+00 -2 -3 1685 1.5500000000000000e+01 - - -8.3207756280899048e-01 7.2688364982604980e-01 - 8.6272723972797394e-02 -4.6617463231086731e-01 - <_> - 5.0805313110351562e+01 - - 1 2 1686 5.7750000000000000e+02 0 -1 1687 - 6.5000000000000000e+00 -2 -3 1688 1.3950000000000000e+02 - - -8.3755981922149658e-01 5.7054156064987183e-01 - 4.9337804317474365e-01 -9.3315914273262024e-02 - <_> - 5.0919166564941406e+01 - - 1 2 1689 1.5095000000000000e+03 0 -1 1690 - 7.5000000000000000e+00 -2 -3 1691 6720. - - 2.1196880936622620e-01 -3.8356184959411621e-01 - 5.3207170963287354e-01 -7.4764668941497803e-01 - <_> - 5.0936717987060547e+01 - - 1 2 1692 4.0500000000000000e+01 0 -1 1693 - 1.5000000000000000e+00 -2 -3 1694 5.0000000000000000e-01 - - -3.7224005907773972e-02 -8.9793884754180908e-01 - 7.6496970653533936e-01 1.7551671713590622e-02 - <_> - 5.1368896484375000e+01 - - 1 2 1695 2.5550000000000000e+02 0 -1 1696 1484. -2 -3 1697 - 7.5000000000000000e+00 - - -1. 9.0734022855758667e-01 -2.2103266417980194e-01 - 4.3218004703521729e-01 - <_> - 5.1568653106689453e+01 - - 1 2 1698 8.1615000000000000e+03 0 -1 1699 - 5.0000000000000000e-01 -2 -3 1700 28. - - -9.8341357707977295e-01 1.9975320994853973e-01 - -1.2860924005508423e-01 -9.3606525659561157e-01 - <_> - 5.1350795745849609e+01 - - 1 2 1701 5.0000000000000000e-01 0 -1 1702 - 1.8500000000000000e+01 -2 -3 1703 3.5000000000000000e+00 - - -7.4128049612045288e-01 3.7650343775749207e-01 - 3.4844925999641418e-01 -4.2916879057884216e-01 - <_> - 5.1636371612548828e+01 - - 1 2 1704 3.5000000000000000e+00 0 -1 1705 32. -2 -3 1706 - 1.5000000000000000e+00 - - 1. -9.1778641939163208e-01 -3.0592209100723267e-01 - 2.8557664155960083e-01 - <_> - 5.2074638366699219e+01 - - 1 2 1707 4.5000000000000000e+00 0 -1 1708 - 2.5500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 - - -1.7822149395942688e-01 4.3826532363891602e-01 - -5.1980108022689819e-01 4.8558112978935242e-01 - <_> - 5.1970214843750000e+01 - - 1 2 1710 5.9500000000000000e+01 0 -1 1711 - 1.0500000000000000e+01 -2 -3 1712 544. - - 3.5063171386718750e-01 -3.3192864060401917e-01 - -6.3897025585174561e-01 2.3550751805305481e-01 - <_> - 5.2024555206298828e+01 - - 1 2 1713 4.5000000000000000e+00 0 -1 1714 - 1.3950000000000000e+02 -2 -3 1715 1.5000000000000000e+00 - - 2.8414461016654968e-01 -5.8255207538604736e-01 - -6.8949204683303833e-01 3.0280160903930664e-01 - <_> - 5.1652011871337891e+01 - - 1 2 1716 1.5000000000000000e+00 0 -1 1717 - 1.0500000000000000e+01 -2 -3 1718 2.5000000000000000e+00 - - -6.4423668384552002e-01 7.1819794178009033e-01 - 1.2163987010717392e-01 -4.3241024017333984e-01 - <_> - 5.2231746673583984e+01 - - 1 2 1719 2.1550000000000000e+02 0 -1 1720 - 5.0000000000000000e-01 -2 -3 1721 1966. - - 1.3263493776321411e-01 -4.2725384235382080e-01 - 8.6758172512054443e-01 -2.6626121997833252e-01 - <_> - 5.2511852264404297e+01 - - 1 2 1722 5.3450000000000000e+02 0 -1 1723 - 1.1500000000000000e+01 -2 -3 1724 4.5000000000000000e+00 - - 2.5023856759071350e-01 -8.6206442117691040e-01 - -4.7992885112762451e-01 2.8010553121566772e-01 - <_> - 5.2546646118164062e+01 - - 1 2 1725 1.2500000000000000e+01 0 -1 1726 - 3.2500000000000000e+01 -2 -3 1727 5.8895000000000000e+03 - - -1.0283301770687103e-01 5.0622606277465820e-01 - 3.4796718508005142e-02 -7.5529223680496216e-01 - <_> - 5.2223571777343750e+01 - - 1 2 1728 5.0000000000000000e-01 0 -1 1729 - 5.8550000000000000e+02 -2 -3 1730 2.0500000000000000e+01 - - -3.2307562232017517e-01 4.2715775966644287e-01 - 5.5647647380828857e-01 -4.0453824400901794e-01 - <_> - 5.2863487243652344e+01 - - 1 2 1731 3.3595000000000000e+03 0 -1 1732 - 1.6685000000000000e+03 -2 -3 1733 7.5000000000000000e+00 - - -1.1682216823101044e-01 7.5274443626403809e-01 - -3.0044618248939514e-01 7.6707494258880615e-01 - <_> - 5.3050804138183594e+01 - - 1 2 1734 1.5000000000000000e+00 0 -1 1735 - 1.5500000000000000e+01 -2 -3 1736 1.5000000000000000e+00 - - 6.9346052408218384e-01 -9.0690630674362183e-01 - -9.2264664173126221e-01 1.8731895089149475e-01 - <_> - 5.3262607574462891e+01 - - 1 2 1737 5.0000000000000000e-01 0 -1 1738 - 3.5000000000000000e+00 -2 -3 1739 3.3550000000000000e+02 - - -3.2821202278137207e-01 5.9129446744918823e-01 - -5.1578968763351440e-01 9.9953614175319672e-02 - <_> - 5.3258419036865234e+01 - - 1 2 1740 1.9500000000000000e+01 0 -1 1741 - 1.2500000000000000e+01 -2 -3 1742 1.5000000000000000e+00 - - 3.8119539618492126e-01 -1.9959560036659241e-01 - 6.4132863283157349e-01 -7.4302184581756592e-01 - <_> - 5.3413326263427734e+01 - - 1 2 1743 7.6500000000000000e+01 0 -1 1744 - 5.8750000000000000e+02 -2 -3 1745 5.5000000000000000e+00 - - -7.1226209402084351e-01 1.5490560233592987e-01 - -9.5072907209396362e-01 1. - <_> - 5.3368370056152344e+01 - - 1 2 1746 1.4355000000000000e+03 0 -1 1747 - 2.5293500000000000e+04 -2 -3 1748 3.5000000000000000e+00 - - -4.4957466423511505e-02 7.0797920227050781e-01 - 2.4098557233810425e-01 -5.3875494003295898e-01 - <_> - 5.3336959838867188e+01 - - 1 2 1749 2.5500000000000000e+01 0 -1 1750 - 2.0500000000000000e+01 -2 -3 1751 2.7375000000000000e+03 - - -7.6909404993057251e-01 -4.0910251438617706e-02 - -8.7062567472457886e-02 6.8476140499114990e-01 - <_> - 5.3268756866455078e+01 - - 1 2 1752 3.7500000000000000e+01 0 -1 1753 2449. -2 -3 1754 - 3.4085000000000000e+03 - - 2.9082170128822327e-01 -3.9411529898643494e-01 - 6.2446767091751099e-01 -7.7681422233581543e-01 - <_> - 5.3295890808105469e+01 - - 1 2 1755 1.5500000000000000e+01 0 -1 1756 - 1.5000000000000000e+00 -2 -3 1757 6.3500000000000000e+01 - - 2.3223483562469482e-01 -3.3189105987548828e-01 - 8.2484543323516846e-01 -1. - <_> - 5.3821460723876953e+01 - - 1 2 1758 7.5000000000000000e+00 0 -1 1759 32. -2 -3 1760 - 3.5000000000000000e+00 - - 7.7407427132129669e-02 -9.0338480472564697e-01 - 5.2557128667831421e-01 -8.5458166897296906e-02 - <_> - 5.3644256591796875e+01 - - 1 2 1761 2.3500000000000000e+01 0 -1 1762 - 1.7500000000000000e+01 -2 -3 1763 5.5500000000000000e+01 - - 1.9049738347530365e-01 -6.4127218723297119e-01 - -5.8284378051757812e-01 3.6358082294464111e-01 - <_> - 5.3565219879150391e+01 - - 1 2 1764 5.0000000000000000e-01 0 -1 1765 - 5.5000000000000000e+00 -2 -3 1766 6.2650000000000000e+02 - - -9.1313230991363525e-01 3.1892377138137817e-01 - -5.0848573446273804e-01 4.0014332532882690e-01 - <_> - 5.3612766265869141e+01 - - 1 2 1767 2.7500000000000000e+01 0 -1 1768 - 1.1850000000000000e+02 -2 -3 1769 6.5000000000000000e+00 - - -1.1785164475440979e-01 4.6228489279747009e-01 - 8.3617496490478516e-01 -7.2740668058395386e-01 - <_> - 5.3733577728271484e+01 - - 1 2 1770 1.3500000000000000e+01 0 -1 1771 - 6.5000000000000000e+00 -2 -3 1772 1.3500000000000000e+01 - - -4.3037781119346619e-01 4.0931895375251770e-01 - -8.7283575534820557e-01 -1.1174897849559784e-01 - <_> - 5.3474098205566406e+01 - - 1 2 1773 2.2500000000000000e+01 0 -1 1774 - 1.5000000000000000e+00 -2 -3 1775 6.8500000000000000e+01 - - -4.9783071875572205e-01 3.2450476288795471e-01 - -5.4798841476440430e-01 4.3143227696418762e-01 - <_> - 5.3782051086425781e+01 - - 1 2 1776 7.5000000000000000e+00 0 -1 1777 - 7.5000000000000000e+00 -2 -3 1778 5.8850000000000000e+02 - - 3.0795454978942871e-01 -4.3086576461791992e-01 - 2.5671597104519606e-03 -7.0709168910980225e-01 - <_> - 5.4081798553466797e+01 - - 1 2 1779 4.1250000000000000e+02 0 -1 1780 2532. -2 -3 1781 - 4.2500000000000000e+01 - - 1.1845014244318008e-01 -4.8000225424766541e-01 - -7.1575754880905151e-01 4.8367628455162048e-01 - <_> - 5.3729518890380859e+01 - - 1 2 1782 4.5000000000000000e+00 0 -1 1783 - 4.0500000000000000e+01 -2 -3 1784 5.0000000000000000e-01 - - -6.5016943216323853e-01 4.5923739671707153e-01 - 7.4234819412231445e-01 -3.5227757692337036e-01 - <_> - 5.3706134796142578e+01 - - 1 2 1785 1.7500000000000000e+01 0 -1 1786 - 2.0500000000000000e+01 -2 -3 1787 35. - - -2.3385923355817795e-02 5.5982124805450439e-01 - -7.7798545360565186e-01 5.9317058324813843e-01 - <_> - 5.4069709777832031e+01 - - 1 2 1788 3.0650000000000000e+02 0 -1 1789 - 6.7500000000000000e+01 -2 -3 1790 1.5000000000000000e+00 - - -2.0442806184291840e-01 3.6357563734054565e-01 - 4.3344959616661072e-01 -7.8407233953475952e-01 - <_> - 5.4122543334960938e+01 - - 1 2 1791 6.9550000000000000e+02 0 -1 1792 - 2.0150000000000000e+02 -2 -3 1793 1.5500000000000000e+01 - - -2.8922367095947266e-01 4.2674824595451355e-01 - -6.8660050630569458e-01 5.2831500768661499e-02 - <_> - 5.4034683227539062e+01 - - 1 2 1794 5.0000000000000000e-01 0 -1 1795 - 5.9715000000000000e+03 -2 -3 1796 4.5000000000000000e+00 - - -5.2834486961364746e-01 4.5531541109085083e-01 - 1.1746359616518021e-01 -4.9576222896575928e-01 - <_> - 5.4980464935302734e+01 - - 1 2 1797 1.3500000000000000e+01 0 -1 1798 - 2.9450000000000000e+02 -2 -3 1799 7.5000000000000000e+00 - - -3.2881252467632294e-02 -9.8305457830429077e-01 - 9.4577944278717041e-01 -1. - <_> - 5.5089954376220703e+01 - - 1 2 1800 2.5000000000000000e+00 0 -1 1801 39. -2 -3 1802 - 9.4950000000000000e+02 - - -1. 1. 1.6094356775283813e-01 -5.4309475421905518e-01 - <_> - 5.5099483489990234e+01 - - 1 2 1803 5.7850000000000000e+02 0 -1 1804 - 4.2500000000000000e+01 -2 -3 1805 5.7750000000000000e+02 - - -7.0962339639663696e-01 1. 7.6542943716049194e-01 - -4.1924782097339630e-02 - <_> - 5.4866825103759766e+01 - - 1 2 1806 1328. 0 -1 1807 1.5000000000000000e+00 -2 -3 1808 - 5.5285000000000000e+03 - - 3.6924600601196289e-01 -2.3265689611434937e-01 - 9.9105215072631836e-01 -8.4446805715560913e-01 - <_> - 5.5432411193847656e+01 - - 1 2 1809 2.5500000000000000e+01 0 -1 1810 - 1.1500000000000000e+01 -2 -3 1811 7.4350000000000000e+02 - - -3.2548126578330994e-01 2.2827453911304474e-01 - 7.1661698818206787e-01 -1. - <_> - 5.5408927917480469e+01 - - 1 2 1812 5.0000000000000000e-01 0 -1 1813 - 3.5000000000000000e+00 -2 -3 1814 2.4500000000000000e+01 - - -7.4099457263946533e-01 3.7504613399505615e-01 - -6.2640714645385742e-01 8.4968566894531250e-02 - <_> - 5.5198207855224609e+01 - - 1 2 1815 1.5000000000000000e+00 0 -1 1816 - 6.5000000000000000e+00 -2 -3 1817 2.2500000000000000e+01 - - -1. 6.4012116193771362e-01 -2.1071846783161163e-01 - 6.4778321981430054e-01 - <_> - 5.5283359527587891e+01 - - 1 2 1818 2.5000000000000000e+00 0 -1 1819 - 5.0000000000000000e-01 -2 -3 1820 2.4550000000000000e+02 - - 4.5631405711174011e-01 -1.3484077155590057e-01 - -5.9344494342803955e-01 1.6467481851577759e-01 - <_> - 5.5470157623291016e+01 - - 1 2 1821 3.5000000000000000e+00 0 -1 1822 - 9.5000000000000000e+00 -2 -3 1823 9.5000000000000000e+00 - - 1. -1. -4.3856528401374817e-01 1.8679495155811310e-01 - <_> - 5.5202453613281250e+01 - - 1 2 1824 5.6150000000000000e+02 0 -1 1825 4192. -2 -3 1826 - 1.2425000000000000e+03 - - -1.4592270553112030e-01 5.8146274089813232e-01 - -5.5671817064285278e-01 1.2355826795101166e-01 - <_> - 5.5569751739501953e+01 - - 1 2 1827 2.1500000000000000e+01 0 -1 1828 - 5.5000000000000000e+00 -2 -3 1829 1.6500000000000000e+01 - - -6.8071776628494263e-01 3.6730051040649414e-01 - -1.3501003384590149e-01 -9.1282844543457031e-01 - <_> - 5.5779064178466797e+01 - - 1 2 1830 3.3500000000000000e+01 0 -1 1831 - 9.5000000000000000e+00 -2 -3 1832 1.5500000000000000e+01 - - 3.2467505335807800e-01 -7.8718549013137817e-01 - 5.1464933156967163e-01 -1.6156230866909027e-01 - <_> - 5.5348117828369141e+01 - - 1 2 1833 3.7650000000000000e+02 0 -1 1834 - 5.5750000000000000e+02 -2 -3 1835 1.5000000000000000e+00 - - -8.1101077795028687e-01 6.3146162033081055e-01 - 1.3779489696025848e-01 -4.3094816803932190e-01 - <_> - 5.5919422149658203e+01 - - 1 2 1836 3.7500000000000000e+01 0 -1 1837 - 5.0000000000000000e-01 -2 -3 1838 8.8500000000000000e+01 - - 3.4091222286224365e-01 -3.4007987380027771e-01 - 5.7130312919616699e-01 -6.3140660524368286e-01 - <_> - 5.5871620178222656e+01 - - 1 2 1839 7.5000000000000000e+00 0 -1 1840 - 1.6500000000000000e+01 -2 -3 1841 6.4500000000000000e+01 - - -2.2035612165927887e-01 -9.4882357120513916e-01 - 5.1813077926635742e-01 -4.7800488770008087e-02 - <_> - 5.6252223968505859e+01 - - 1 2 1842 1.1950000000000000e+02 0 -1 1843 - 9.5500000000000000e+01 -2 -3 1844 3.6850000000000000e+02 - - 3.8002592325210571e-01 -3.4263178706169128e-01 - 5.1846081018447876e-01 -7.4162709712982178e-01 - <_> - 5.6455226898193359e+01 - - 1 2 1845 5.0000000000000000e-01 0 -1 1846 12. -2 -3 1847 - 3.2995000000000000e+03 - - -9.0239804983139038e-01 3.5835075378417969e-01 - -3.9121779799461365e-01 8.4680241346359253e-01 - <_> - 5.6692668914794922e+01 - - 1 2 1848 2.5000000000000000e+00 0 -1 1849 - 5.0000000000000000e-01 -2 -3 1850 3.0500000000000000e+01 - - -8.6832201480865479e-01 3.5786366462707520e-01 - -6.5906804800033569e-01 3.1783048063516617e-02 - <_> - 5.6752792358398438e+01 - - 1 2 1851 1.0500000000000000e+01 0 -1 1852 - 6.5500000000000000e+01 -2 -3 1853 1.4500000000000000e+01 - - -4.6706490218639374e-02 -8.7982815504074097e-01 - 5.6353557109832764e-01 -6.0297027230262756e-02 - <_> - 5.6775104522705078e+01 - - 1 2 1854 2.0150000000000000e+02 0 -1 1855 - 1.0500000000000000e+01 -2 -3 1856 2.8650000000000000e+02 - - 7.4959583580493927e-02 -5.7888466119766235e-01 - 6.6168105602264404e-01 -9.9754244089126587e-02 - <_> - 5.6972690582275391e+01 - - 1 2 1857 1.6150000000000000e+02 0 -1 1858 - 1.5500000000000000e+01 -2 -3 1859 24. - - -7.3095875978469849e-01 1.9758741557598114e-01 - -8.8720643520355225e-01 1. - <_> - 5.7200763702392578e+01 - - 1 2 1860 5.0000000000000000e-01 0 -1 1861 - 8.8500000000000000e+01 -2 -3 1862 1.8500000000000000e+01 - - 3.3610743284225464e-01 -8.8137799501419067e-01 - -6.0375785827636719e-01 1.2033233046531677e-01 - <_> - 5.7070457458496094e+01 - - 1 2 1863 2.1500000000000000e+01 0 -1 1864 - 1.4500000000000000e+01 -2 -3 1865 5.6500000000000000e+01 - - -9.7666543722152710e-01 7.4382346868515015e-01 - 4.3915370106697083e-01 -1.3030719757080078e-01 - <_> - 5.6970527648925781e+01 - - 1 2 1866 1.0500000000000000e+01 0 -1 1867 - 8.5000000000000000e+00 -2 -3 1868 142. - - -3.9075690507888794e-01 2.1810866892337799e-01 - 7.3304098844528198e-01 -1.5522833168506622e-01 - <_> - 5.7172351837158203e+01 - - 1 2 1869 8.3500000000000000e+01 0 -1 1870 - 5.0000000000000000e-01 -2 -3 1871 4.5000000000000000e+00 - - 4.7355487942695618e-01 -8.4495109319686890e-01 - -8.0800145864486694e-01 2.0182393491268158e-01 - <_> - 5.7369266510009766e+01 - - 1 2 1872 1.3500000000000000e+01 0 -1 1873 - 2.2050000000000000e+02 -2 -3 1874 1.5000000000000000e+00 - - 3.0745425820350647e-01 -5.7873797416687012e-01 - 7.1144923567771912e-02 -7.0968645811080933e-01 - <_> - 5.7163673400878906e+01 - - 1 2 1875 3.0500000000000000e+01 0 -1 1876 - 1.7955000000000000e+03 -2 -3 1877 1.9500000000000000e+01 - - 4.0770485997200012e-01 -6.0543429851531982e-01 - 3.7602424621582031e-01 -2.8918644785881042e-01 - <_> - 5.6786552429199219e+01 - - 1 2 1878 6.8500000000000000e+01 0 -1 1879 - 5.5000000000000000e+00 -2 -3 1880 2.8500000000000000e+01 - - 1.1757279932498932e-01 -5.8252972364425659e-01 - -3.8951548933982849e-01 5.1052653789520264e-01 - <_> - 5.6868556976318359e+01 - - 1 2 1881 6.5000000000000000e+00 0 -1 1882 - 2.5000000000000000e+00 -2 -3 1883 2.6950000000000000e+02 - - 8.2006074488162994e-02 -5.1789224147796631e-01 - 5.3505361080169678e-01 -9.4605493545532227e-01 - <_> - 5.7130115509033203e+01 - - 1 2 1884 8.5000000000000000e+00 0 -1 1885 - 1.9150000000000000e+02 -2 -3 1886 2.9450000000000000e+02 - - 4.5292165875434875e-01 -4.3888345360755920e-01 - 4.7173380851745605e-01 -5.1566743850708008e-01 - <_> - 5.7406742095947266e+01 - - 1 2 1887 5.5000000000000000e+00 0 -1 1888 - 4.5000000000000000e+00 -2 -3 1889 7.9850000000000000e+02 - - -3.7859401106834412e-01 5.5919343233108521e-01 - -5.8277565240859985e-01 6.6450834274291992e-02 - <_> - 5.7422473907470703e+01 - - 1 2 1890 5.6150000000000000e+02 0 -1 1891 4961. -2 -3 1892 - 4.8705000000000000e+03 - - -4.5244730426929891e-04 8.3497661352157593e-01 - -6.8882519006729126e-01 1.5732206404209137e-02 - <_> - 5.7687702178955078e+01 - - 1 2 1893 1.4500000000000000e+01 0 -1 1894 - 4.1335000000000000e+03 -2 -3 1895 7.1500000000000000e+01 - - 2.6522731781005859e-01 -8.9758622646331787e-01 - -6.0936498641967773e-01 4.6634823083877563e-01 - <_> - 5.7540111541748047e+01 - - 1 2 1896 2.9500000000000000e+01 0 -1 1897 - 5.5000000000000000e+00 -2 -3 1898 1.5000000000000000e+00 - - -9.3110167980194092e-01 1. 3.9634063839912415e-01 - -1.9126465916633606e-01 - <_> - 5.7616504669189453e+01 - - 1 2 1899 7.5000000000000000e+00 0 -1 1900 397. -2 -3 1901 - 1.5000000000000000e+00 - - 7.1867322921752930e-01 -5.4185843467712402e-01 - 5.2771824598312378e-01 -1.5528239309787750e-01 - <_> - 5.7763866424560547e+01 - - 1 2 1902 2.1500000000000000e+01 0 -1 1903 - 1.7050000000000000e+02 -2 -3 1904 1.6500000000000000e+01 - - 2.9671201109886169e-01 -8.4789550304412842e-01 - -5.6201756000518799e-01 2.5604116916656494e-01 - <_> - 5.7565292358398438e+01 - - 1 2 1905 5.0000000000000000e-01 0 -1 1906 - 2.1350000000000000e+02 -2 -3 1907 3.6950000000000000e+02 - - 5.7148373126983643e-01 -8.4696042537689209e-01 - -3.0725291371345520e-01 5.5036330223083496e-01 - <_> - 5.7710926055908203e+01 - - 1 2 1908 1.2500000000000000e+01 0 -1 1909 - 4.5000000000000000e+00 -2 -3 1910 2.4500000000000000e+01 - - -6.8967974185943604e-01 3.9181429147720337e-01 - -6.0330241918563843e-01 2.1838249266147614e-01 - <_> - 5.8008132934570312e+01 - - 1 2 1911 9.5000000000000000e+00 0 -1 1912 270. -2 -3 1913 - 3.0500000000000000e+01 - - 2.9720637202262878e-01 -7.7370458841323853e-01 - -7.1012228727340698e-01 1.2770961225032806e-01 - <_> - 5.8256633758544922e+01 - - 1 2 1914 6.3500000000000000e+01 0 -1 1915 - 3.7500000000000000e+01 -2 -3 1916 3.0500000000000000e+01 - - -4.4066715240478516e-01 8.2518380880355835e-01 - 2.9887351393699646e-01 -4.9117338657379150e-01 - <_> - 5.8460075378417969e+01 - - 1 2 1917 1.2500000000000000e+01 0 -1 1918 - 3.1500000000000000e+01 -2 -3 1919 5.0000000000000000e-01 - - -3.4090422093868256e-02 5.7412135601043701e-01 - 7.2392117977142334e-01 -6.3018786907196045e-01 - <_> - 5.8618007659912109e+01 - - 1 2 1920 5.0000000000000000e-01 0 -1 1921 - 1.5500000000000000e+01 -2 -3 1922 5.0000000000000000e-01 - - -9.6668690443038940e-01 3.7771463394165039e-01 - 2.2855560481548309e-01 -4.7967869043350220e-01 - <_> - 5.8478435516357422e+01 - - 1 2 1923 7.5000000000000000e+00 0 -1 1924 - 1.5000000000000000e+00 -2 -3 1925 5.0000000000000000e-01 - - 4.2515745759010315e-01 -5.5478894710540771e-01 - 4.5419645309448242e-01 -1.3957175612449646e-01 - <_> - 5.8872611999511719e+01 - - 1 2 1926 1.8350000000000000e+02 0 -1 1927 - 4.0500000000000000e+01 -2 -3 1928 6.6500000000000000e+01 - - -2.0008619129657745e-01 3.9417695999145508e-01 - -9.6238315105438232e-01 1. - <_> - 5.8883186340332031e+01 - - 1 2 1929 1.2500000000000000e+01 0 -1 1930 - 3.5000000000000000e+00 -2 -3 1931 2.1050000000000000e+02 - - 6.1217731237411499e-01 -1.9048878923058510e-02 - -7.2783750295639038e-01 8.3897627890110016e-02 - <_> - 5.8808357238769531e+01 - - 1 2 1932 4.6500000000000000e+01 0 -1 1933 - 3.5000000000000000e+00 -2 -3 1934 2.8650000000000000e+02 - - 1.3248841464519501e-01 -6.7872178554534912e-01 - 4.7229564189910889e-01 -1.4815118908882141e-01 - <_> - 5.9144462585449219e+01 - - 1 2 1935 1.4500000000000000e+01 0 -1 1936 - 1.6500000000000000e+01 -2 -3 1937 9.5000000000000000e+00 - - -6.5575122833251953e-01 6.0179513692855835e-01 - 3.3610317111015320e-01 -2.4818602204322815e-01 - <_> - 5.9101814270019531e+01 - - 1 2 1938 5.0000000000000000e-01 0 -1 1939 - 2.5000000000000000e+00 -2 -3 1940 2.3500000000000000e+01 - - 6.1000245809555054e-01 -4.2646210640668869e-02 - -5.3324443101882935e-01 3.5818785429000854e-01 - <_> - 5.8948040008544922e+01 - - 1 2 1941 7.5000000000000000e+00 0 -1 1942 - 4.5000000000000000e+00 -2 -3 1943 5.0000000000000000e-01 - - -8.8669669628143311e-01 7.7529543638229370e-01 - 3.8582339882850647e-01 -1.5377666056156158e-01 - <_> - 5.9593772888183594e+01 - - 1 2 1944 3.5525000000000000e+03 0 -1 1945 - 3.4500000000000000e+01 -2 -3 1946 167. - - -2.2072853147983551e-01 3.3567503094673157e-01 1. -1. - <_> - 5.9370800018310547e+01 - - 1 2 1947 7.5000000000000000e+00 0 -1 1948 3474. -2 -3 1949 - 9.5000000000000000e+00 - - 3.4637100994586945e-02 -5.9609389305114746e-01 - 5.9798693656921387e-01 -1.3024185597896576e-01 - <_> - 5.9757068634033203e+01 - - 1 2 1950 1.1500000000000000e+01 0 -1 1951 - 4.4500000000000000e+01 -2 -3 1952 2.5000000000000000e+00 - - -9.1445469856262207e-01 8.4411728382110596e-01 - 3.8626831769943237e-01 -1.6962867975234985e-01 - <_> - 5.9796058654785156e+01 - - 1 2 1953 5.8750000000000000e+02 0 -1 1954 - 3.5000000000000000e+00 -2 -3 1955 3.9150000000000000e+02 - - 2.4987047910690308e-01 -6.1070859432220459e-01 - 7.2914922237396240e-01 -7.8055180609226227e-02 - <_> - 5.9801254272460938e+01 - - 1 2 1956 5.5850000000000000e+02 0 -1 1957 - 4.7500000000000000e+01 -2 -3 1958 1.8500000000000000e+01 - - -1.1270057410001755e-01 6.9968527555465698e-01 - 5.1938942633569241e-03 -7.4568808078765869e-01 - <_> - 6.0010192871093750e+01 - - 1 2 1959 4.8500000000000000e+01 0 -1 1960 - 6.5000000000000000e+00 -2 -3 1961 7.5000000000000000e+00 - - -7.4147862195968628e-01 2.0893752574920654e-01 - -7.3173969984054565e-01 3.0364623665809631e-01 - <_> - 5.9708690643310547e+01 - - 1 2 1962 5.0000000000000000e-01 0 -1 1963 - 3.5000000000000000e+00 -2 -3 1964 2.2500000000000000e+01 - - -9.1378659009933472e-01 5.2321916818618774e-01 - -3.0149966478347778e-01 6.9747513532638550e-01 - <_> - 6.0059795379638672e+01 - - 1 2 1965 4.1500000000000000e+01 0 -1 1966 - 1.5000000000000000e+00 -2 -3 1967 4.5500000000000000e+01 - - 7.6339656114578247e-01 -6.3636028766632080e-01 - 3.5110288858413696e-01 -2.9607880115509033e-01 - <_> - 6.0240623474121094e+01 - - 1 2 1968 4.5000000000000000e+00 0 -1 1969 - 1.5000000000000000e+00 -2 -3 1970 3.0850000000000000e+02 - - -6.1838161945343018e-01 1.8083088099956512e-01 - -1.4869785308837891e-01 5.0236159563064575e-01 - <_> - 6.0387596130371094e+01 - - 1 2 1971 1.6250000000000000e+02 0 -1 1972 - 4.5000000000000000e+00 -2 -3 1973 4.4650000000000000e+02 - - 6.7135459184646606e-01 1.1329505359753966e-03 - -6.6079312562942505e-01 1.4697253704071045e-01 - <_> - 6.0387634277343750e+01 - - 1 2 1974 3.5000000000000000e+00 0 -1 1975 - 1.8500000000000000e+01 -2 -3 1976 3.5500000000000000e+01 - - 3.3784970641136169e-01 -4.8918390274047852e-01 - -5.6978744268417358e-01 1.3324360549449921e-01 - <_> - 6.0022872924804688e+01 - - 1 2 1977 2.0850000000000000e+02 0 -1 1978 - 3.5000000000000000e+00 -2 -3 1979 2.2500000000000000e+01 - - 2.4730446934700012e-01 -3.6476173996925354e-01 - -6.7308956384658813e-01 5.9900748729705811e-01 - <_> - 6.0411987304687500e+01 - - 1 2 1980 4.6500000000000000e+01 0 -1 1981 - 7.5000000000000000e+00 -2 -3 1982 1.6500000000000000e+01 - - -7.1475833654403687e-01 3.5484632849693298e-01 - 3.8911363482475281e-01 -1.7250961065292358e-01 - <_> - 6.0604080200195312e+01 - - 1 2 1983 5.0000000000000000e-01 0 -1 1984 - 6.5000000000000000e+00 -2 -3 1985 4.5000000000000000e+00 - - -5.3925055265426636e-01 4.7325718402862549e-01 - 1.9209517538547516e-01 -4.6254682540893555e-01 - <_> - 6.0539005279541016e+01 - - 1 2 1986 3.5500000000000000e+01 0 -1 1987 97. -2 -3 1988 - 5.5000000000000000e+00 - - 6.5639108419418335e-01 -8.1671226024627686e-01 - 5.2336204051971436e-01 -6.5074905753135681e-02 - <_> - 6.0846366882324219e+01 - - 1 2 1989 3.1350000000000000e+02 0 -1 1990 - 1.6190500000000000e+04 -2 -3 1991 1.1005000000000000e+03 - - 4.3834140896797180e-01 -3.6532020568847656e-01 - 6.3986539840698242e-01 -4.1561451554298401e-01 - <_> - 6.0749099731445312e+01 - - 1 2 1992 3.5000000000000000e+00 0 -1 1993 - 1.6050000000000000e+02 -2 -3 1994 4.5000000000000000e+00 - - 3.9444553852081299e-01 -5.1368337869644165e-01 - -6.9115257263183594e-01 1.9162381067872047e-02 - <_> - 6.0911582946777344e+01 - - 1 2 1995 3.1500000000000000e+01 0 -1 1996 39. -2 -3 1997 - 1.5000000000000000e+00 - - -9.1950684785842896e-01 1. -7.2641021013259888e-01 - 1.6248121857643127e-01 - <_> - 6.0922454833984375e+01 - - 1 2 1998 5.5000000000000000e+00 0 -1 1999 - 1.0500000000000000e+01 -2 -3 2000 1.5805000000000000e+03 - - -7.5020366907119751e-01 3.5568973422050476e-01 - -4.8083752393722534e-01 3.0702778697013855e-01 - <_> - 6.1254642486572266e+01 - - 1 2 2001 3.3650000000000000e+02 0 -1 2002 - 5.0000000000000000e-01 -2 -3 2003 7.5000000000000000e+00 - - 7.5214070081710815e-01 -5.6389236450195312e-01 - 3.4662494063377380e-01 -2.9536944627761841e-01 - <_> - 6.1591125488281250e+01 - - 1 2 2004 2.5500000000000000e+01 0 -1 2005 - 1.4500000000000000e+01 -2 -3 2006 1.5000000000000000e+00 - - 1.3703818619251251e-01 -4.9739819765090942e-01 - -6.2935429811477661e-01 5.6868934631347656e-01 - <_> - 6.1522079467773438e+01 - - 1 2 2007 2.0500000000000000e+01 0 -1 2008 - 8.5500000000000000e+01 -2 -3 2009 4.5500000000000000e+01 - - 7.8972160816192627e-01 -6.7304050922393799e-01 - 2.6793375611305237e-01 -6.3064610958099365e-01 - <_> - 6.1685386657714844e+01 - - 1 2 2010 4.7055000000000000e+03 0 -1 2011 - 7.5000000000000000e+00 -2 -3 2012 34. - - -6.3200688362121582e-01 1.6331009566783905e-01 - -9.4863635301589966e-01 8.0065780878067017e-01 - <_> - 6.1566181182861328e+01 - - 1 2 2013 7.2950000000000000e+02 0 -1 2014 - 2.0350000000000000e+02 -2 -3 2015 2.1500000000000000e+01 - - -1.1920681595802307e-01 6.4878600835800171e-01 - -5.8408319950103760e-01 3.3495616912841797e-01 - <_> - 6.2094886779785156e+01 - - 1 2 2016 9.5000000000000000e+00 0 -1 2017 - 3.5000000000000000e+00 -2 -3 2018 2.3500000000000000e+01 - - 5.2870643138885498e-01 -5.9091903269290924e-02 - 1.4992588758468628e-01 -7.4673342704772949e-01 - <_> - 6.1996501922607422e+01 - - 1 2 2019 3.4500000000000000e+01 0 -1 2020 - 9.6500000000000000e+01 -2 -3 2021 7.5000000000000000e+00 - - -9.8386786878108978e-02 5.0483143329620361e-01 - 1.5602034330368042e-01 -6.9411128759384155e-01 - <_> - 6.2363922119140625e+01 - - 1 2 2022 1.4965000000000000e+03 0 -1 2023 61. -2 -3 2024 - 8.5250000000000000e+02 - - -9.3483263254165649e-01 1. 5.6837409734725952e-01 - -8.3574697375297546e-02 - <_> - 6.2407440185546875e+01 - - 1 2 2025 5977. 0 -1 2026 2.5000000000000000e+00 -2 -3 2027 - 2.1421500000000000e+04 - - 2.2136372327804565e-01 -6.3119232654571533e-01 - 9.1829413175582886e-01 4.3518073856830597e-02 - <_> - 6.2328540802001953e+01 - - 1 2 2028 9.5000000000000000e+00 0 -1 2029 - 3.8550000000000000e+02 -2 -3 2030 6.5000000000000000e+00 - - 7.9880517721176147e-01 -3.3323591947555542e-01 - -9.3455439805984497e-01 3.5605767369270325e-01 - <_> - 6.2549594879150391e+01 - - 1 2 2031 1.2500000000000000e+01 0 -1 2032 - 2.5000000000000000e+00 -2 -3 2033 1.4500000000000000e+01 - - 4.2225402593612671e-01 -2.8828126192092896e-01 - -4.3309009075164795e-01 6.5534549951553345e-01 - <_> - 6.2636714935302734e+01 - - 1 2 2034 417. 0 -1 2035 1.1500000000000000e+01 -2 -3 2036 7. - - -2.1113002672791481e-02 8.4205090999603271e-01 - -9.7738903760910034e-01 5.3100347518920898e-01 - <_> - 6.2861415863037109e+01 - - 1 2 2037 2.5000000000000000e+00 0 -1 2038 - 5.5000000000000000e+00 -2 -3 2039 3.6500000000000000e+01 - - -7.6132452487945557e-01 3.6051002144813538e-01 - -5.7641249895095825e-01 1.5012158453464508e-01 - <_> - 6.2900104522705078e+01 - - 1 2 2040 5.0000000000000000e-01 0 -1 2041 - 3.5000000000000000e+00 -2 -3 2042 6.5000000000000000e+00 - - -9.3149966001510620e-01 2.9147976636886597e-01 - -6.3701289892196655e-01 5.4918531328439713e-02 - <_> - 6.2879768371582031e+01 - - 1 2 2043 1.5000000000000000e+00 0 -1 2044 - 2.5000000000000000e+00 -2 -3 2045 1.5000000000000000e+00 - - 6.6399359703063965e-01 -1.0929831862449646e-01 - 7.8133702278137207e-02 -4.7019696235656738e-01 - <_> - 6.2129520416259766e+01 - - 1 2 2046 1.3650000000000000e+02 0 -1 2047 - 2.1215000000000000e+03 -2 -3 2048 1.9500000000000000e+01 - - 1.4869627356529236e-01 -7.8195393085479736e-01 - -5.4876875877380371e-01 2.9066467285156250e-01 - <_> - 6.2598121643066406e+01 - - 1 2 2049 5.5000000000000000e+00 0 -1 2050 - 2.0500000000000000e+01 -2 -3 2051 3.3450000000000000e+02 - - -2.8021445870399475e-01 4.6860334277153015e-01 - -4.1921630501747131e-01 9.1871756315231323e-01 - <_> - 6.2898983001708984e+01 - - 1 2 2052 5.8750000000000000e+02 0 -1 2053 - 3.3150000000000000e+02 -2 -3 2054 258. - - -5.8121073246002197e-01 7.2862756252288818e-01 - 3.0086198449134827e-01 -6.1838138103485107e-01 - <_> - 6.3007404327392578e+01 - - 1 2 2055 2.7950000000000000e+02 0 -1 2056 - 5.0500000000000000e+01 -2 -3 2057 3.5000000000000000e+00 - - -7.9203374683856964e-02 6.8916302919387817e-01 - 2.2891193628311157e-01 -4.4382786750793457e-01 - <_> - 6.3243953704833984e+01 - - 1 2 2058 8.5000000000000000e+00 0 -1 2059 - 3.2650000000000000e+02 -2 -3 2060 2.1500000000000000e+01 - - -1. 2.3655229806900024e-01 -5.4432135820388794e-01 - 8.4973216056823730e-01 - <_> - 6.3190502166748047e+01 - - 1 2 2061 3.1500000000000000e+01 0 -1 2062 - 6.4500000000000000e+01 -2 -3 2063 1.5500000000000000e+01 - - -1.7394508421421051e-01 3.4196874499320984e-01 - -7.9306966066360474e-01 7.7552306652069092e-01 - <_> - 6.3256435394287109e+01 - - 1 2 2064 5.0000000000000000e-01 0 -1 2065 - 4.5000000000000000e+00 -2 -3 2066 1.6500000000000000e+01 - - -6.4375263452529907e-01 4.6298280358314514e-01 - 6.5930701792240143e-02 -6.0258072614669800e-01 - <_> - 6.3547569274902344e+01 - - 1 2 2067 3.5000000000000000e+00 0 -1 2068 - 2.9665000000000000e+03 -2 -3 2069 2.5000000000000000e+00 - - 2.6696309447288513e-01 -6.1605608463287354e-01 - 5.8771264553070068e-01 -7.7434383332729340e-02 - <_> - 6.3455562591552734e+01 - - 1 2 2070 2.6500000000000000e+01 0 -1 2071 - 1.0435000000000000e+03 -2 -3 2072 2.2500000000000000e+01 - - -3.0468648672103882e-01 2.7090394496917725e-01 -1. - 7.8004688024520874e-01 - <_> - 6.3757442474365234e+01 - - 1 2 2073 1.0350000000000000e+02 0 -1 2074 - 1.0500000000000000e+01 -2 -3 2075 2.5000000000000000e+00 - - -3.8403138518333435e-01 3.0187815427780151e-01 - 3.1422126293182373e-01 -7.1062839031219482e-01 - <_> - 6.3906417846679688e+01 - - 1 2 2076 4.5000000000000000e+00 0 -1 2077 - 1.5000000000000000e+00 -2 -3 2078 4.8150000000000000e+02 - - -7.3861616849899292e-01 4.0836670994758606e-01 - -5.5579960346221924e-01 1.4897711575031281e-01 - <_> - 6.4099327087402344e+01 - - 1 2 2079 2.5500000000000000e+01 0 -1 2080 - 5.7650000000000000e+02 -2 -3 2081 1.8500000000000000e+01 - - -5.5475443601608276e-01 1.9290663301944733e-01 - -7.1113204956054688e-01 5.3957355022430420e-01 - <_> - 6.3918937683105469e+01 - - 1 2 2082 3.5000000000000000e+00 0 -1 2083 - 9.7500000000000000e+01 -2 -3 2084 3.5000000000000000e+00 - - -3.3335947990417480e-01 2.7078640460968018e-01 - 3.7570750713348389e-01 -7.7115553617477417e-01 - <_> - 6.3970809936523438e+01 - - 1 2 2085 3.5000000000000000e+00 0 -1 2086 - 1.9850000000000000e+02 -2 -3 2087 2.3500000000000000e+01 - - 6.5109664201736450e-01 -1.3773214817047119e-01 - -5.4258519411087036e-01 5.1870465278625488e-02 - <_> - 6.4214424133300781e+01 - - 1 2 2088 1.2500000000000000e+01 0 -1 2089 - 3.2450000000000000e+02 -2 -3 2090 6.5000000000000000e+00 - - 4.3517467379570007e-01 -9.6950376033782959e-01 - 2.5978988409042358e-01 -2.7689433097839355e-01 - <_> - 6.4605529785156250e+01 - - 1 2 2091 327. 0 -1 2092 5.0000000000000000e-01 -2 -3 2093 - 1.5500000000000000e+01 - - 2.3849301040172577e-01 -5.6138235330581665e-01 - -6.2119048833847046e-01 3.9110702276229858e-01 - <_> - 6.4053535461425781e+01 - - 1 2 2094 1.8500000000000000e+01 0 -1 2095 - 1.4500000000000000e+01 -2 -3 2096 1.7225000000000000e+03 - - -7.9772460460662842e-01 2.5171506404876709e-01 - 4.5911735296249390e-01 -5.6817436218261719e-01 - <_> - 6.4624084472656250e+01 - - 1 2 2097 1.3500000000000000e+01 0 -1 2098 - 3.8450000000000000e+02 -2 -3 2099 2.5000000000000000e+00 - - 6.7918819189071655e-01 -6.8560796976089478e-01 - 5.7055342197418213e-01 -1.1227272450923920e-01 - <_> - 6.4599174499511719e+01 - - 1 2 2100 3.9950000000000000e+02 0 -1 2101 - 6.5000000000000000e+00 -2 -3 2102 2.6500000000000000e+01 - - 2.6946315169334412e-01 -6.8496251106262207e-01 - -1.4580105245113373e-01 4.0004068613052368e-01 - <_> - 6.4730812072753906e+01 - - 1 2 2103 5.0000000000000000e-01 0 -1 2104 - 1.0500000000000000e+01 -2 -3 2105 2.5000000000000000e+00 - - -4.1157549619674683e-01 3.9449948072433472e-01 - 1.3164354860782623e-01 -5.7457894086837769e-01 - <_> - 6.4550361633300781e+01 - - 1 2 2106 6.1500000000000000e+01 0 -1 2107 - 4.2500000000000000e+01 -2 -3 2108 5.0000000000000000e-01 - - -6.7661024630069733e-02 4.9807086586952209e-01 - 2.6868519186973572e-01 -5.6513643264770508e-01 - <_> - 6.4741752624511719e+01 - - 1 2 2109 1.5000000000000000e+00 0 -1 2110 - 1.4500000000000000e+01 -2 -3 2111 5.0000000000000000e-01 - - -5.7091879844665527e-01 4.6459051966667175e-01 - 2.1071271598339081e-01 -4.8713284730911255e-01 - <_> - 6.4659866333007812e+01 - - 1 2 2112 2.5000000000000000e+00 0 -1 2113 - 1.0500000000000000e+01 -2 -3 2114 2.5000000000000000e+00 - - 8.9292472600936890e-01 -9.4043314456939697e-01 - 5.3616881370544434e-01 -8.1886835396289825e-02 - <_> - 6.4854621887207031e+01 - - 1 2 2115 5.7500000000000000e+01 0 -1 2116 - 6.5000000000000000e+00 -2 -3 2117 1399. - - 1.7543983459472656e-01 -5.9518599510192871e-01 - -6.6982376575469971e-01 3.6574700474739075e-01 - <_> - 6.4909034729003906e+01 - - 1 2 2118 2.7650000000000000e+02 0 -1 2119 2618. -2 -3 2120 - 4.3500000000000000e+01 - - 5.1149606704711914e-01 -7.5715744495391846e-01 - 5.4412230849266052e-02 -5.4240036010742188e-01 - <_> - 6.5523689270019531e+01 - - 1 2 2121 2.0850000000000000e+02 0 -1 2122 - 1.5000000000000000e+00 -2 -3 2123 2.1500000000000000e+01 - - 2.8490218520164490e-01 -4.3338671326637268e-01 - -4.2747175693511963e-01 6.1465066671371460e-01 - <_> - 6.5561706542968750e+01 - - 1 2 2124 212. 0 -1 2125 4.5500000000000000e+01 -2 -3 2126 - 2.5150000000000000e+02 - - -5.5702477693557739e-01 3.5860374569892883e-01 - -6.7760747671127319e-01 3.8017414510250092e-02 - <_> - 6.5649497985839844e+01 - - 1 2 2127 5.9500000000000000e+01 0 -1 2128 - 3.5000000000000000e+00 -2 -3 2129 6.5000000000000000e+00 - - -7.9711538553237915e-01 2.5381851196289062e-01 - 4.2455443739891052e-01 -1.7120632529258728e-01 - <_> - 6.5992294311523438e+01 - - 1 2 2130 3.5000000000000000e+00 0 -1 2131 - 1.6250000000000000e+02 -2 -3 2132 2.2500000000000000e+01 - - -3.3420738577842712e-01 6.4248228073120117e-01 - 6.8257737159729004e-01 -1.6899804770946503e-01 - <_> - 6.6213569641113281e+01 - - 1 2 2133 5.5000000000000000e+00 0 -1 2134 - 7.3500000000000000e+01 -2 -3 2135 9.4500000000000000e+01 - - 2.2127301990985870e-01 -7.9195356369018555e-01 - -6.8413102626800537e-01 8.0674022436141968e-01 - <_> - 6.5891929626464844e+01 - - 1 2 2136 5.1500000000000000e+01 0 -1 2137 - 3.5000000000000000e+00 -2 -3 2138 3.6750000000000000e+02 - - 3.1779468059539795e-01 -3.8076880574226379e-01 - 6.2580502033233643e-01 -3.2678863406181335e-01 - <_> - 6.5933746337890625e+01 - - 1 2 2139 1.1500000000000000e+01 0 -1 2140 - 2.5000000000000000e+00 -2 -3 2141 4.5000000000000000e+00 - - 1.1745031177997589e-01 -4.3131595849990845e-01 - 6.6705638170242310e-01 -2.3260143399238586e-01 - <_> - 6.5980415344238281e+01 - - 1 2 2142 3.5000000000000000e+00 0 -1 2143 - 2.5000000000000000e+00 -2 -3 2144 5.0000000000000000e-01 - - 7.7854001522064209e-01 -8.4415936470031738e-01 - 5.8085924386978149e-01 -2.8965638950467110e-02 - <_> - 6.5784027099609375e+01 - - 1 2 2145 4.7500000000000000e+01 0 -1 2146 - 2.5000000000000000e+00 -2 -3 2147 3.5000000000000000e+00 - - 3.7243506312370300e-01 -6.9404041767120361e-01 - 3.7178915739059448e-01 -1.9639030098915100e-01 - <_> - 6.6053306579589844e+01 - - 1 2 2148 4.7350000000000000e+02 0 -1 2149 - 4.7500000000000000e+01 -2 -3 2150 2.2500000000000000e+01 - - -3.7930485606193542e-01 2.6928251981735229e-01 - -6.6765409708023071e-01 4.6291077136993408e-01 - <_> - 6.6251876831054688e+01 - - 1 2 2151 1.7500000000000000e+01 0 -1 2152 - 3.2650000000000000e+02 -2 -3 2153 1.5500000000000000e+01 - - -1. 1.9857025146484375e-01 -6.2745827436447144e-01 - 4.3167012929916382e-01 - <_> - 6.6497039794921875e+01 - - 1 2 2154 2.8500000000000000e+01 0 -1 2155 - 2.6500000000000000e+01 -2 -3 2156 4.1500000000000000e+01 - - -8.1000304222106934e-01 6.9051915407180786e-01 - -2.8902414441108704e-01 4.2377713322639465e-01 - <_> - 6.6451217651367188e+01 - - 1 2 2157 4.1250000000000000e+02 0 -1 2158 - 1.6500000000000000e+01 -2 -3 2159 3.0650000000000000e+02 - - 2.3259440436959267e-02 -6.3648867607116699e-01 - 7.6639103889465332e-01 -1.8078628182411194e-01 - <_> - 6.6132827758789062e+01 - - 1 2 2160 2.1500000000000000e+01 0 -1 2161 - 8.7550000000000000e+02 -2 -3 2162 1.6500000000000000e+01 - - -3.3872911334037781e-01 2.7060332894325256e-01 - -6.3514488935470581e-01 9.0211552381515503e-01 - <_> - 6.6081367492675781e+01 - - 1 2 2163 5.7650000000000000e+02 0 -1 2164 681. -2 -3 2165 - 1.7175000000000000e+03 - - -7.8227895498275757e-01 8.6135381460189819e-01 - 8.2487636804580688e-01 -5.1461022347211838e-02 - <_> - 6.5997879028320312e+01 - - 1 2 2166 1.8500000000000000e+01 0 -1 2167 - 4.5000000000000000e+00 -2 -3 2168 3.5500000000000000e+01 - - -8.3486534655094147e-02 6.0638916492462158e-01 - -4.8585453629493713e-01 2.9007250070571899e-01 - <_> - 6.6484413146972656e+01 - - 1 2 2169 1.2995000000000000e+03 0 -1 2170 - 4.6065000000000000e+03 -2 -3 2171 2.5000000000000000e+00 - - -2.7341315150260925e-01 5.3913331031799316e-01 - 4.8653602600097656e-01 -4.5589551329612732e-01 - <_> - 6.6919540405273438e+01 - - 1 2 2172 2.8500000000000000e+01 0 -1 2173 143. -2 -3 2174 - 1.3500000000000000e+01 - - 4.0857741236686707e-01 -7.9653608798980713e-01 - 4.3512815237045288e-01 -1.2409269809722900e-01 - <_> - 6.6548828125000000e+01 - - 1 2 2175 3.6500000000000000e+01 0 -1 2176 - 3.8500000000000000e+01 -2 -3 2177 3.0015000000000000e+03 - - -3.7071618437767029e-01 3.0769228935241699e-01 - -5.6432120501995087e-02 7.5577193498611450e-01 - <_> - 6.6935661315917969e+01 - - 1 2 2178 221. 0 -1 2179 5.0000000000000000e-01 -2 -3 2180 - 6.5000000000000000e+00 - - 3.8683256506919861e-01 -1.6335722804069519e-01 - 3.1397402286529541e-01 -8.9784342050552368e-01 - <_> - 6.6811462402343750e+01 - - 1 2 2181 1.6500000000000000e+01 0 -1 2182 - 9.7500000000000000e+01 -2 -3 2183 4.5000000000000000e+00 - - 1.9564503431320190e-01 -6.8224984407424927e-01 - 3.6420011520385742e-01 -2.7474680542945862e-01 - <_> - 6.7206642150878906e+01 - - 1 2 2184 2.8150000000000000e+02 0 -1 2185 - 5.3500000000000000e+01 -2 -3 2186 2.1950000000000000e+02 - - 3.9518028497695923e-01 -7.5029599666595459e-01 - -4.5047336816787720e-01 4.4910728931427002e-01 - <_> - 6.6829307556152344e+01 - - 1 2 2187 6.2550000000000000e+02 0 -1 2188 - 2.7045000000000000e+03 -2 -3 2189 7.5250000000000000e+02 - - -1.0180658102035522e-01 4.7846919298171997e-01 - -9.1966360807418823e-01 -3.8947533816099167e-02 - <_> - 6.6750717163085938e+01 - - 1 2 2190 4.7350000000000000e+02 0 -1 2191 - 5.7500000000000000e+01 -2 -3 2192 5.0000000000000000e-01 - - -7.8587010502815247e-02 6.3941407203674316e-01 - 7.1196836233139038e-01 -7.2520041465759277e-01 - <_> - 6.7127670288085938e+01 - - 1 2 2193 2.5000000000000000e+00 0 -1 2194 - 1.5500000000000000e+01 -2 -3 2195 2.5000000000000000e+00 - - -4.7885441780090332e-01 3.2798525691032410e-01 - 8.6548590660095215e-01 5.7965524494647980e-02 - <_> - 6.7040710449218750e+01 - - 1 2 2196 2.5000000000000000e+00 0 -1 2197 - 1.9500000000000000e+01 -2 -3 2198 1.2500000000000000e+01 - - -5.5627369880676270e-01 5.8527511358261108e-01 - -5.7549017667770386e-01 6.9125495851039886e-02 - <_> - 6.7134475708007812e+01 - - 1 2 2199 2.5000000000000000e+00 0 -1 2200 - 1.4215000000000000e+03 -2 -3 2201 5.0000000000000000e-01 - - 3.7880736589431763e-01 -4.5164510607719421e-01 - 5.3598467260599136e-02 -5.7012593746185303e-01 - <_> - 6.7369125366210938e+01 - - 1 2 2202 5.5000000000000000e+00 0 -1 2203 - 5.5000000000000000e+00 -2 -3 2204 1.5000000000000000e+00 - - -9.4780540466308594e-01 7.3004895448684692e-01 - 6.4780569076538086e-01 -5.0393346697092056e-02 - <_> - 6.7813079833984375e+01 - - 1 2 2205 1.2500000000000000e+01 0 -1 2206 9948. -2 -3 2207 - 2.0450000000000000e+02 - - -4.2956997640430927e-03 -9.1839849948883057e-01 - -1.5275211632251740e-01 4.4395634531974792e-01 - <_> - 6.8058036804199219e+01 - - 1 2 2208 4.0500000000000000e+01 0 -1 2209 - 5.0000000000000000e-01 -2 -3 2210 4.7500000000000000e+01 - - 2.4495334923267365e-01 -9.5012718439102173e-01 - 1.7766039073467255e-01 -4.3439298868179321e-01 - <_> - 6.7814498901367188e+01 - - 1 2 2211 1.5500000000000000e+01 0 -1 2212 - 7.5000000000000000e+00 -2 -3 2213 1.4500000000000000e+01 - - 3.4375911951065063e-01 -6.9197601079940796e-01 - -7.6082307100296021e-01 2.3456893861293793e-01 - <_> - 6.7533103942871094e+01 - - 1 2 2214 8.1500000000000000e+01 0 -1 2215 - 1.1500000000000000e+01 -2 -3 2216 1.9500000000000000e+01 - - 2.6256918907165527e-01 -2.8139856457710266e-01 - -8.1822723150253296e-01 2.4620606005191803e-01 - <_> - 6.7985069274902344e+01 - - 1 2 2217 2.6500000000000000e+01 0 -1 2218 - 9.5000000000000000e+00 -2 -3 2219 4.5000000000000000e+00 - - -1.2688148021697998e-01 -9.2650556564331055e-01 - 4.5196792483329773e-01 -1.2886488437652588e-01 - <_> - 6.8211486816406250e+01 - - 1 2 2220 1.9500000000000000e+01 0 -1 2221 - 9.4500000000000000e+01 -2 -3 2222 1.8500000000000000e+01 - - -4.5716031454503536e-03 -9.2506814002990723e-01 - 2.2641468048095703e-01 -5.4319751262664795e-01 - <_> - 6.8062339782714844e+01 - - 1 2 2223 1.5000000000000000e+00 0 -1 2224 - 1.1350000000000000e+02 -2 -3 2225 3.5000000000000000e+00 - - -1.4914712309837341e-01 6.2766093015670776e-01 - 5.2602481842041016e-01 -3.3082970976829529e-01 - <_> - 6.8320228576660156e+01 - - 1 2 2226 6.7500000000000000e+01 0 -1 2227 - 4.5000000000000000e+00 -2 -3 2228 8.3350000000000000e+02 - - -7.0059794187545776e-01 2.5789487361907959e-01 - 2.8099337220191956e-01 -6.9175392389297485e-01 - <_> - 6.8181999206542969e+01 - - 1 2 2229 1.2500000000000000e+01 0 -1 2230 - 3.1350000000000000e+02 -2 -3 2231 9.4565000000000000e+03 - - 1.9189414381980896e-01 -3.9976862072944641e-01 - 5.6042033433914185e-01 -9.6583509445190430e-01 - <_> - 6.8313468933105469e+01 - - 1 2 2232 9.5000000000000000e+00 0 -1 2233 1313. -2 -3 2234 - 7.9450000000000000e+02 - - 6.0552877187728882e-01 -7.1993356943130493e-01 - -1.9865931570529938e-01 3.5071191191673279e-01 - <_> - 6.8655784606933594e+01 - - 1 2 2235 5.5000000000000000e+00 0 -1 2236 - 1.5500000000000000e+01 -2 -3 2237 4.2500000000000000e+01 - - -8.3366417884826660e-01 3.4231638908386230e-01 - -5.7617366313934326e-01 1.2723289430141449e-01 - <_> - 6.8312980651855469e+01 - - 1 2 2238 1.5000000000000000e+00 0 -1 2239 - 1.0500000000000000e+01 -2 -3 2240 3.2950000000000000e+02 - - -6.2311822175979614e-01 5.3832811117172241e-01 - -3.4280434250831604e-01 6.2301361560821533e-01 - <_> - 6.8748611450195312e+01 - - 1 2 2241 5.5000000000000000e+00 0 -1 2242 - 6.3500000000000000e+01 -2 -3 2243 1.4355000000000000e+03 - - 4.3563413619995117e-01 -7.9157996177673340e-01 - 6.3327491283416748e-02 -5.8212018013000488e-01 - <_> - 6.8442298889160156e+01 - - 1 2 2244 2.0500000000000000e+01 0 -1 2245 - 8.5000000000000000e+00 -2 -3 2246 1.3350000000000000e+02 - - -3.0631437897682190e-01 2.6373180747032166e-01 - 7.2269374132156372e-01 -8.2843840122222900e-01 - <_> - 6.8691452026367188e+01 - - 1 2 2247 5.8450000000000000e+02 0 -1 2248 1991. -2 -3 2249 - 1.9550000000000000e+02 - - -5.8844625949859619e-01 7.2171705961227417e-01 - 5.9379982948303223e-01 -8.8590703904628754e-02 - <_> - 6.8854362487792969e+01 - - 1 2 2250 2.2450000000000000e+02 0 -1 2251 - 3.5000000000000000e+00 -2 -3 2252 4.4500000000000000e+01 - - 4.1746988892555237e-01 -1.5201584994792938e-01 - -7.8322100639343262e-01 4.8759365081787109e-01 - <_> - 6.8978080749511719e+01 - - 1 2 2253 1.1350000000000000e+02 0 -1 2254 - 4.5000000000000000e+00 -2 -3 2255 4.5500000000000000e+01 - - 1.2371577322483063e-01 -6.8989777565002441e-01 - 3.5007947683334351e-01 -7.2059243917465210e-01 - <_> - 6.9356269836425781e+01 - - 1 2 2256 1.9500000000000000e+01 0 -1 2257 - 1.0500000000000000e+01 -2 -3 2258 1.3500000000000000e+01 - - 2.8434163331985474e-01 -4.2419987916946411e-01 - 5.7273209095001221e-01 -1.0273739695549011e-01 - <_> - 6.9808845520019531e+01 - - 1 2 2259 5.5000000000000000e+00 0 -1 2260 - 1.8500000000000000e+01 -2 -3 2261 1.5000000000000000e+00 - - -8.0742955207824707e-01 8.1550550460815430e-01 - 4.5257565379142761e-01 -1.1754118651151657e-01 - <_> - 6.9490539550781250e+01 - - 1 2 2262 5.3500000000000000e+01 0 -1 2263 80. -2 -3 2264 - 2.9500000000000000e+01 - - -5.4256713390350342e-01 5.4104971885681152e-01 - 3.5188353061676025e-01 -3.0036619305610657e-01 - <_> - 6.9366668701171875e+01 - - 1 2 2265 2.6065000000000000e+03 0 -1 2266 - 3.1350000000000000e+02 -2 -3 2267 5.5000000000000000e+00 - - -1.2386845052242279e-01 4.6345305442810059e-01 - 6.0491842031478882e-01 -9.4304585456848145e-01 - <_> - 6.9713836669921875e+01 - - 1 2 2268 1.7500000000000000e+01 0 -1 2269 - 2.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 - - -8.5482913255691528e-01 3.4717017412185669e-01 - 1.7867124080657959e-01 -6.1432170867919922e-01 - <_> - 7.0036468505859375e+01 - - 1 2 2271 7.5000000000000000e+00 0 -1 2272 - 2.3500000000000000e+01 -2 -3 2273 1.5500000000000000e+01 - - -9.8486787080764771e-01 3.2262811064720154e-01 - -5.6460940837860107e-01 1.9223406910896301e-01 - <_> - 6.9981750488281250e+01 - - 1 2 2274 1.7250000000000000e+02 0 -1 2275 - 5.0000000000000000e-01 -2 -3 2276 5.6500000000000000e+01 - - 2.4282279610633850e-01 -3.6108613014221191e-01 - 5.9585607051849365e-01 -6.8952751159667969e-01 - <_> - 6.9557426452636719e+01 - - 1 2 2277 1.5000000000000000e+00 0 -1 2278 7. -2 -3 2279 - 4.2050000000000000e+02 - - 1. -7.2186136245727539e-01 2.3051606118679047e-01 - -4.9865522980690002e-01 - <_> - 6.9593688964843750e+01 - - 1 2 2280 3.5000000000000000e+00 0 -1 2281 - 5.5000000000000000e+00 -2 -3 2282 1.5000000000000000e+00 - - 3.6256898194551468e-02 -5.9310066699981689e-01 - 6.1099308729171753e-01 -5.2162308245897293e-02 - <_> - 6.9190055847167969e+01 - - 1 2 2283 5.0000000000000000e-01 0 -1 2284 - 1.5000000000000000e+00 -2 -3 2285 3.1950000000000000e+02 - - -5.6549012660980225e-01 4.1545909643173218e-01 - -4.0363189578056335e-01 6.4397597312927246e-01 - <_> - 6.9152801513671875e+01 - - 1 2 2286 1.2500000000000000e+01 0 -1 2287 - 1.3500000000000000e+01 -2 -3 2288 1.5000000000000000e+00 - - 8.4121584892272949e-02 -8.1945008039474487e-01 - 5.4119038581848145e-01 -3.7251871079206467e-02 - <_> - 6.9844085693359375e+01 - - 1 2 2289 4.1950000000000000e+02 0 -1 2290 3338. -2 -3 2291 - 1.7450000000000000e+02 - - -1.0648692399263382e-01 6.9128334522247314e-01 - -4.1935205459594727e-01 2.4380990862846375e-01 - <_> - 7.0174018859863281e+01 - - 1 2 2292 1.5500000000000000e+01 0 -1 2293 - 2.6500000000000000e+01 -2 -3 2294 1.5000000000000000e+00 - - -5.6438052654266357e-01 3.2993179559707642e-01 - 1.9468745589256287e-01 -5.9477233886718750e-01 - <_> - 7.0660224914550781e+01 - - 1 2 2295 1.0150000000000000e+02 0 -1 2296 - 5.0000000000000000e-01 -2 -3 2297 2.6500000000000000e+01 - - 4.8620355129241943e-01 -1.8835483491420746e-01 - -5.4727905988693237e-01 5.2561342716217041e-01 - <_> - 7.0732994079589844e+01 - - 1 2 2298 1.4450000000000000e+02 0 -1 2299 - 2.5000000000000000e+00 -2 -3 2300 1.5000000000000000e+00 - - 7.2770319879055023e-02 -6.6459918022155762e-01 - 4.1657650470733643e-01 -3.1872367858886719e-01 - <_> - 7.0376434326171875e+01 - - 1 2 2301 2.7750000000000000e+02 0 -1 2302 - 2.8500000000000000e+01 -2 -3 2303 2.2500000000000000e+01 - - -4.7953361272811890e-01 5.4570424556732178e-01 - 3.0004525184631348e-01 -3.5655823349952698e-01 - <_> - 7.0656318664550781e+01 - - 1 2 2304 5.8750000000000000e+02 0 -1 2305 - 1.0500000000000000e+01 -2 -3 2306 7.1500000000000000e+01 - - -1.0104954242706299e-01 -8.7880355119705200e-01 - -8.3692330121994019e-01 2.7988719940185547e-01 - <_> - 7.0784782409667969e+01 - - 1 2 2307 1.4500000000000000e+01 0 -1 2308 - 1.0450000000000000e+02 -2 -3 2309 67. - - 6.7218846082687378e-01 -3.5151880979537964e-01 - -6.5867102146148682e-01 4.6130353212356567e-01 - <_> - 7.0990669250488281e+01 - - 1 2 2310 334. 0 -1 2311 3.3500000000000000e+01 -2 -3 2312 - 8.1750000000000000e+02 - - -3.3783861994743347e-01 3.0199536681175232e-01 - -9.2741793394088745e-01 2.6250743865966797e-01 - <_> - 7.1334205627441406e+01 - - 1 2 2313 1.4500000000000000e+01 0 -1 2314 - 1.4500000000000000e+01 -2 -3 2315 3.6500000000000000e+01 - - -2.9965308308601379e-01 4.6802315115928650e-01 - -4.5157477259635925e-01 6.7555361986160278e-01 - <_> - 7.1500701904296875e+01 - - 1 2 2316 5.0000000000000000e-01 0 -1 2317 87. -2 -3 2318 - 5.5000000000000000e+00 - - 3.0542531609535217e-01 -5.7673245668411255e-01 - 2.7094784379005432e-01 -5.7631582021713257e-01 - <_> - 7.1793479919433594e+01 - - 1 2 2319 4.5000000000000000e+00 0 -1 2320 - 3.0500000000000000e+01 -2 -3 2321 1.8005000000000000e+03 - - -9.6369409561157227e-01 1. 2.9277887940406799e-01 - -2.4375233054161072e-01 - <_> - 7.1967315673828125e+01 - - 1 2 2322 2.5000000000000000e+00 0 -1 2323 4880. -2 -3 2324 - 3.2500000000000000e+01 - - 3.0087158083915710e-01 -5.3540611267089844e-01 - -6.9770932197570801e-01 -8.8338237255811691e-03 - <_> - 7.1673614501953125e+01 - - 1 2 2325 1.1500000000000000e+01 0 -1 2326 - 5.0000000000000000e-01 -2 -3 2327 2.5000000000000000e+00 - - 3.5899358987808228e-01 -5.2653604745864868e-01 - 5.8578026294708252e-01 -3.2805901020765305e-02 - <_> - 7.1711250305175781e+01 - - 1 2 2328 1.8500000000000000e+01 0 -1 2329 - 1.8050000000000000e+02 -2 -3 2330 35. - - 3.5447284579277039e-01 -5.9741777181625366e-01 - -7.3350757360458374e-01 2.8574359416961670e-01 - <_> - 7.1695281982421875e+01 - - 1 2 2331 2.0850000000000000e+02 0 -1 2332 1048. -2 -3 2333 - 5.5000000000000000e+00 - - -3.0666926503181458e-01 9.4038575887680054e-01 - -7.0172363519668579e-01 4.9131000041961670e-01 - <_> - 7.1706031799316406e+01 - - 1 2 2334 2.8850000000000000e+02 0 -1 2335 1736. -2 -3 2336 - 1.5000000000000000e+00 - - 1.0753270238637924e-02 7.3304736614227295e-01 - 5.3744524717330933e-01 -5.2062910795211792e-01 - <_> - 7.1823760986328125e+01 - - 1 2 2337 1.6500000000000000e+01 0 -1 2338 - 7.5000000000000000e+00 -2 -3 2339 1.5000000000000000e+00 - - -7.8876292705535889e-01 3.3360600471496582e-01 - 1.1772559583187103e-01 -5.7080477476119995e-01 - <_> - 7.2228584289550781e+01 - - 1 2 2340 2.5000000000000000e+00 0 -1 2341 - 4.6500000000000000e+01 -2 -3 2342 1.5250000000000000e+02 - - -2.1400362253189087e-01 4.0482848882675171e-01 - -6.2977635860443115e-01 3.5589864850044250e-01 - <_> - 7.2438087463378906e+01 - - 1 2 2343 1.6500000000000000e+01 0 -1 2344 3901. -2 -3 2345 - 2.7500000000000000e+01 - - 2.0950204133987427e-01 -5.5380266904830933e-01 - -7.4909400939941406e-01 5.2945792675018311e-01 - <_> - 7.2360771179199219e+01 - - 1 2 2346 2.4500000000000000e+01 0 -1 2347 - 7.5000000000000000e+00 -2 -3 2348 1.8500000000000000e+01 - - 3.7871867418289185e-01 -7.5313919782638550e-01 - 5.1331257820129395e-01 -9.7519315779209137e-02 - <_> - 7.1928703308105469e+01 - - 1 2 2349 8.0500000000000000e+01 0 -1 2350 - 8.6500000000000000e+01 -2 -3 2351 139. - - 5.2605316042900085e-02 -6.2711888551712036e-01 - -3.3864989876747131e-01 4.3293687701225281e-01 - <_> - 7.2465637207031250e+01 - - 1 2 2352 3.5000000000000000e+00 0 -1 2353 - 3.5000000000000000e+00 -2 -3 2354 458. - - -8.2156580686569214e-01 5.3693503141403198e-01 - -7.5703012943267822e-01 7.3093846440315247e-03 - <_> - 7.2306266784667969e+01 - - 1 2 2355 1.5000000000000000e+00 0 -1 2356 - 2.2500000000000000e+01 -2 -3 2357 5.0000000000000000e-01 - - -8.8483113050460815e-01 2.5380238890647888e-01 - 1.9247277081012726e-01 -5.5495434999465942e-01 - <_> - 7.2351318359375000e+01 - - 1 2 2358 5.0000000000000000e-01 0 -1 2359 - 1.1500000000000000e+01 -2 -3 2360 2.0550000000000000e+02 - - -6.4710837602615356e-01 3.3967879414558411e-01 - 4.5056350529193878e-02 -6.6342002153396606e-01 - <_> - 7.2549964904785156e+01 - - 1 2 2361 3.1500000000000000e+01 0 -1 2362 - 5.5000000000000000e+00 -2 -3 2363 1.1150000000000000e+02 - - -9.2634866014122963e-03 -5.6539881229400635e-01 - 5.9193736314773560e-01 -6.0422807931900024e-01 - <_> - 7.2340164184570312e+01 - - 1 2 2364 1.4550000000000000e+02 0 -1 2365 87. -2 -3 2366 - 2.0500000000000000e+01 - - 7.1558344364166260e-01 -6.7444592714309692e-01 - 2.4655258655548096e-01 -4.4633221626281738e-01 - <_> - 7.2298965454101562e+01 - - 1 2 2367 5.0000000000000000e-01 0 -1 2368 - 1.6500000000000000e+01 -2 -3 2369 1.1650000000000000e+02 - - -6.4155972003936768e-01 5.6763589382171631e-01 - 4.5910947024822235e-02 -5.7516378164291382e-01 - <_> - 7.2460647583007812e+01 - - 1 2 2370 1.0500000000000000e+01 0 -1 2371 776. -2 -3 2372 - 3.0350000000000000e+02 - - 1. -7.5311285257339478e-01 1.6168554127216339e-01 - -9.7889220714569092e-01 - <_> - 7.2329025268554688e+01 - - 1 2 2373 6.8250000000000000e+02 0 -1 2374 - 9.8350000000000000e+02 -2 -3 2375 8.4550000000000000e+02 - - -5.8907532691955566e-01 6.2361657619476318e-01 - 6.0256063938140869e-01 -1.3162477314472198e-01 - <_> - 7.2692337036132812e+01 - - 1 2 2376 9.5000000000000000e+00 0 -1 2377 587. -2 -3 2378 - 6.2850000000000000e+02 - - 1.8354943394660950e-01 -6.3397884368896484e-01 - 3.6331036686897278e-01 -4.3740653991699219e-01 - <_> - 7.3099296569824219e+01 - - 1 2 2379 5.0000000000000000e-01 0 -1 2380 - 5.5000000000000000e+00 -2 -3 2381 1.5000000000000000e+00 - - 4.0695956349372864e-01 -2.3705665767192841e-01 - 5.4972708225250244e-01 -5.1312422752380371e-01 - <_> - 7.3302726745605469e+01 - - 1 2 2382 8.7050000000000000e+02 0 -1 2383 - 1.5000000000000000e+00 -2 -3 2384 2.9500000000000000e+01 - - 3.9779379963874817e-01 -6.3519412279129028e-01 - -8.4823501110076904e-01 3.2447892427444458e-01 - <_> - 7.3023147583007812e+01 - - 1 2 2385 5.0000000000000000e-01 0 -1 2386 - 3.8500000000000000e+01 -2 -3 2387 1.5775000000000000e+03 - - -2.5971448421478271e-01 5.4386669397354126e-01 - -4.0062361955642700e-01 4.5868498086929321e-01 - <_> - 7.3163795471191406e+01 - - 1 2 2388 2.7500000000000000e+01 0 -1 2389 - 5.0000000000000000e-01 -2 -3 2390 4.6500000000000000e+01 - - 1.4064319431781769e-01 -4.5721408724784851e-01 - 8.3929353952407837e-01 -5.6752306222915649e-01 - <_> - 7.3411483764648438e+01 - - 1 2 2391 3.5000000000000000e+00 0 -1 2392 21. -2 -3 2393 - 1.0850000000000000e+02 - - -7.8916430473327637e-01 1. 2.4769315123558044e-01 - -4.8368823528289795e-01 - <_> - 7.3806152343750000e+01 - - 1 2 2394 6.5000000000000000e+00 0 -1 2395 - 2.2500000000000000e+01 -2 -3 2396 1.9500000000000000e+01 - - -4.2384034395217896e-01 3.9466390013694763e-01 - 1.2428787350654602e-01 -5.8119755983352661e-01 - <_> - 7.3893051147460938e+01 - - 1 2 2397 6.2500000000000000e+01 0 -1 2398 - 2.5000000000000000e+00 -2 -3 2399 8.5000000000000000e+00 - - 8.6900889873504639e-02 -5.0835818052291870e-01 - 6.4387518167495728e-01 -3.4420084953308105e-01 - <_> - 7.4370101928710938e+01 - - 1 2 2400 2.0250000000000000e+02 0 -1 2401 - 2.6500000000000000e+01 -2 -3 2402 1.0250000000000000e+02 - - -3.3534547686576843e-01 7.1747875213623047e-01 - 5.8294051885604858e-01 -2.0199438929557800e-01 - <_> - 7.3817878723144531e+01 - - 1 2 2403 2.2250000000000000e+02 0 -1 2404 495. -2 -3 2405 - 1.1150000000000000e+02 - - -9.2125439643859863e-01 4.6380558609962463e-01 - -8.2408124208450317e-01 -5.1385825499892235e-03 - <_> - 7.4274734497070312e+01 - - 1 2 2406 5.0000000000000000e-01 0 -1 2407 - 6.5000000000000000e+00 -2 -3 2408 4.5000000000000000e+00 - - -5.4510724544525146e-01 4.5685729384422302e-01 - -4.1785773634910583e-01 3.7173369526863098e-01 - <_> - 7.4214447021484375e+01 - - 1 2 2409 4.3515000000000000e+03 0 -1 2410 - 7.1850000000000000e+02 -2 -3 2411 6.1445000000000000e+03 - - -5.5608157068490982e-02 6.8498140573501587e-01 - -8.1597936153411865e-01 -6.0283310711383820e-02 - <_> - 7.4526939392089844e+01 - - 1 2 2412 1.5000000000000000e+00 0 -1 2413 - 4.5000000000000000e+00 -2 -3 2414 1.7500000000000000e+01 - - -2.5446805357933044e-01 8.0654889345169067e-01 - 4.4617369771003723e-02 -4.9571081995964050e-01 - <_> - 7.4664260864257812e+01 - - 1 2 2415 2.1500000000000000e+01 0 -1 2416 - 9.5000000000000000e+00 -2 -3 2417 5.0000000000000000e-01 - - 2.5834673643112183e-01 -6.3097542524337769e-01 - 5.6628465652465820e-01 -1.0652445256710052e-01 - <_> - 7.4835792541503906e+01 - - 1 2 2418 1.9500000000000000e+01 0 -1 2419 - 2.1650000000000000e+02 -2 -3 2420 3.5000000000000000e+00 - - -3.4473347663879395e-01 3.5953617095947266e-01 - -7.8647011518478394e-01 4.7845369577407837e-01 - <_> - 7.5001464843750000e+01 - - 1 2 2421 4.3350000000000000e+02 0 -1 2422 - 9.5000000000000000e+00 -2 -3 2423 5.0000000000000000e-01 - - -7.6833075284957886e-01 1.6567093133926392e-01 1. - -9.3112909793853760e-01 - <_> - 7.5096672058105469e+01 - - 1 2 2424 1.9500000000000000e+01 0 -1 2425 - 2.5500000000000000e+01 -2 -3 2426 2.5165000000000000e+03 - - -7.1183577179908752e-02 5.7713252305984497e-01 - -7.3037630319595337e-01 9.5210477709770203e-02 - <_> - 7.4955039978027344e+01 - - 1 2 2427 5.5000000000000000e+00 0 -1 2428 - 8.0500000000000000e+01 -2 -3 2429 4.0500000000000000e+01 - - 3.1543654203414917e-01 -5.0912439823150635e-01 - -6.9998091459274292e-01 1.5216259658336639e-01 - <_> - 7.4920089721679688e+01 - - 1 2 2430 1.1215000000000000e+03 0 -1 2431 - 3.8850000000000000e+02 -2 -3 2432 4.1195000000000000e+03 - - 4.6712434291839600e-01 -4.7107401490211487e-01 - -8.0701512098312378e-01 -4.6098276972770691e-02 - <_> - 7.4982124328613281e+01 - - 1 2 2433 1.8500000000000000e+01 0 -1 2434 - 3.5500000000000000e+01 -2 -3 2435 3.5000000000000000e+00 - - -3.7868845462799072e-01 5.3733342885971069e-01 - 5.9916520118713379e-01 -1.3988719880580902e-01 - <_> - 7.5354972839355469e+01 - - 1 2 2436 2.5000000000000000e+00 0 -1 2437 - 4.5000000000000000e+00 -2 -3 2438 2.3500000000000000e+01 - - 3.7731003016233444e-02 -8.0526626110076904e-01 - 4.1983363032341003e-01 -1.6427561640739441e-01 - <_> - 7.5353942871093750e+01 - - 1 2 2439 3.8500000000000000e+01 0 -1 2440 - 5.0000000000000000e-01 -2 -3 2441 1.5250000000000000e+02 - - 4.1628280282020569e-01 -5.9752076864242554e-01 - 2.2085283696651459e-01 -7.8762036561965942e-01 - <_> - 7.4907821655273438e+01 - - 1 2 2442 9.5000000000000000e+00 0 -1 2443 - 5.5000000000000000e+00 -2 -3 2444 1.3500000000000000e+01 - - -6.2543123960494995e-01 2.9037654399871826e-01 - -6.6800427436828613e-01 2.3413531482219696e-01 - <_> - 7.5347267150878906e+01 - - 1 2 2445 5.0000000000000000e-01 0 -1 2446 - 7.5000000000000000e+00 -2 -3 2447 1.5000000000000000e+00 - - -7.7953171730041504e-01 4.3944290280342102e-01 - 2.1482174098491669e-01 -4.5657783746719360e-01 - <_> - 7.5632286071777344e+01 - - 1 2 2448 1.8500000000000000e+01 0 -1 2449 - 1.0500000000000000e+01 -2 -3 2450 3.7500000000000000e+01 - - -3.2795214653015137e-01 2.8501552343368530e-01 - -7.3039668798446655e-01 3.0266335606575012e-01 - <_> - 7.5784385681152344e+01 - - 1 2 2451 5.0000000000000000e-01 0 -1 2452 - 4.5000000000000000e+00 -2 -3 2453 9.5500000000000000e+01 - - -7.9435759782791138e-01 2.8812354803085327e-01 - 3.0145803093910217e-01 -5.5056422948837280e-01 - <_> - 7.5934288024902344e+01 - - 1 2 2454 1.2500000000000000e+01 0 -1 2455 - 1.1500000000000000e+01 -2 -3 2456 9.5000000000000000e+00 - - -5.4109108448028564e-01 3.4966334700584412e-01 - 2.2563920915126801e-01 -6.0146200656890869e-01 - <_> - 7.5664039611816406e+01 - - 1 2 2457 1.5000000000000000e+00 0 -1 2458 - 2.0500000000000000e+01 -2 -3 2459 1.7500000000000000e+01 - - -6.3995569944381714e-02 5.8523094654083252e-01 - -6.0602784156799316e-01 9.1935232281684875e-02 - <_> - 7.5729660034179688e+01 - - 1 2 2460 5.0000000000000000e-01 0 -1 2461 - 1.5000000000000000e+00 -2 -3 2462 5.7500000000000000e+01 - - -3.9503663778305054e-01 6.0793364048004150e-01 - -5.8376723527908325e-01 2.0124232396483421e-02 - <_> - 7.6041374206542969e+01 - - 1 2 2463 2.5000000000000000e+00 0 -1 2464 - 4.5850000000000000e+02 -2 -3 2465 2.8500000000000000e+01 - - 3.1171244382858276e-01 -1. -6.6108351945877075e-01 - 2.7302114292979240e-02 - <_> - 7.5795768737792969e+01 - - 1 2 2466 1.9650000000000000e+02 0 -1 2467 - 6.2950000000000000e+02 -2 -3 2468 8.3500000000000000e+01 - - -2.5152391195297241e-01 6.5583813190460205e-01 - -7.8791797161102295e-01 9.4210775569081306e-04 - <_> - 7.5857429504394531e+01 - - 1 2 2469 4.5000000000000000e+00 0 -1 2470 - 8.0500000000000000e+01 -2 -3 2471 1.1845000000000000e+03 - - 4.5618292689323425e-01 -2.6651117205619812e-01 - 6.1658360064029694e-02 -5.8446490764617920e-01 - <_> - 7.6416542053222656e+01 - - 1 2 2472 4.0950000000000000e+02 0 -1 2473 - 1.5950000000000000e+02 -2 -3 2474 3.6500000000000000e+01 - - -3.3679732680320740e-01 6.7494618892669678e-01 - -5.3805744647979736e-01 5.5911004543304443e-01 - <_> - 7.5964401245117188e+01 - - 1 2 2475 2159. 0 -1 2476 9.5000000000000000e+00 -2 -3 2477 - 2.7550000000000000e+02 - - -9.7294098138809204e-01 3.4394034743309021e-01 - 7.5755751132965088e-01 -4.5213976502418518e-01 - <_> - 7.6349334716796875e+01 - - 1 2 2478 5.0000000000000000e-01 0 -1 2479 109. -2 -3 2480 - 7.5000000000000000e+00 - - -8.3041268587112427e-01 3.8493672013282776e-01 - 1.9105611741542816e-01 -5.4174506664276123e-01 - <_> - 7.6266555786132812e+01 - - 1 2 2481 5.7850000000000000e+02 0 -1 2482 - 1.5000000000000000e+00 -2 -3 2483 2.8750000000000000e+02 - - 5.4517310857772827e-01 -8.3548069000244141e-01 - 5.4728341102600098e-01 -8.2781173288822174e-02 - <_> - 7.6401138305664062e+01 - - 1 2 2484 3.9500000000000000e+01 0 -1 2485 - 4.8500000000000000e+01 -2 -3 2486 1.5450000000000000e+02 - - -3.2842093706130981e-01 4.5771333575248718e-01 - 5.4719090461730957e-01 -5.5783140659332275e-01 - <_> - 7.6629852294921875e+01 - - 1 2 2487 5.0000000000000000e-01 0 -1 2488 - 9.8695000000000000e+03 -2 -3 2489 6.5000000000000000e+00 - - 3.5277694463729858e-01 -8.9051485061645508e-01 - 1.5630321204662323e-01 -5.0492966175079346e-01 - <_> - 7.7012748718261719e+01 - - 1 2 2490 3.4250000000000000e+02 0 -1 2491 - 5.0000000000000000e-01 -2 -3 2492 1.0500000000000000e+01 - - 6.1497741937637329e-01 -4.2811819911003113e-01 - -6.7799770832061768e-01 3.8289925456047058e-01 - <_> - 7.7173255920410156e+01 - - 1 2 2493 6.3500000000000000e+01 0 -1 2494 - 4.2500000000000000e+01 -2 -3 2495 1.0450000000000000e+02 - - -7.6624304056167603e-01 1.6050516068935394e-01 - -9.2148023843765259e-01 7.9243576526641846e-01 - <_> - 7.7233604431152344e+01 - - 1 2 2496 3.5000000000000000e+00 0 -1 2497 - 2.9500000000000000e+01 -2 -3 2498 9.5000000000000000e+00 - - 4.3042707443237305e-01 -7.0397478342056274e-01 - -5.7992899417877197e-01 6.0347892343997955e-02 - <_> - 7.7677680969238281e+01 - - 1 2 2499 7.7750000000000000e+02 0 -1 2500 - 3.5000000000000000e+00 -2 -3 2501 3.9050000000000000e+02 - - 2.6784166693687439e-01 -7.3122310638427734e-01 - 6.9813531637191772e-01 -5.0064746290445328e-02 - <_> - 7.7810462951660156e+01 - - 1 2 2502 1.2500000000000000e+01 0 -1 2503 46. -2 -3 2504 - 4.7550000000000000e+02 - - 7.4502938985824585e-01 -9.3451422452926636e-01 - 1.7553819715976715e-01 -6.0448014736175537e-01 - <_> - 7.8011604309082031e+01 - - 1 2 2505 5.0000000000000000e-01 0 -1 2506 - 1.5000000000000000e+00 -2 -3 2507 2.1500000000000000e+01 - - 5.5112600326538086e-01 -7.1465468406677246e-01 - -6.2684929370880127e-01 2.0114150643348694e-01 - <_> - 7.7726852416992188e+01 - - 1 2 2508 2.5000000000000000e+00 0 -1 2509 - 1.5000000000000000e+00 -2 -3 2510 2.2275000000000000e+03 - - -6.1417835950851440e-01 6.4539062976837158e-01 - 2.3531807959079742e-01 -3.7372583150863647e-01 - <_> - 7.7838409423828125e+01 - - 1 2 2511 4.0435000000000000e+03 0 -1 2512 - 1.6050000000000000e+02 -2 -3 2513 12334. - - -3.2763364911079407e-01 7.1799826622009277e-01 - 4.0013375878334045e-01 -8.6134457588195801e-01 - <_> - 7.7509208679199219e+01 - - 1 2 2514 5.0000000000000000e-01 0 -1 2515 - 3.5000000000000000e+00 -2 -3 2516 4.1050000000000000e+02 - - -5.3890359401702881e-01 3.9034625887870789e-01 - 3.8619524240493774e-01 -5.2792149782180786e-01 - <_> - 7.7868835449218750e+01 - - 1 2 2517 5.0000000000000000e-01 0 -1 2518 - 4.5000000000000000e+00 -2 -3 2519 5.0000000000000000e-01 - - -4.3116971850395203e-01 3.5963350534439087e-01 - 3.4538099169731140e-01 -4.9176117777824402e-01 - <_> - 7.8107124328613281e+01 - - 1 2 2520 8.5000000000000000e+00 0 -1 2521 303. -2 -3 2522 - 1.3550000000000000e+02 - - 3.4497961401939392e-01 -3.9331153035163879e-01 - 6.7525440454483032e-01 -6.4588183164596558e-01 - <_> - 7.7949096679687500e+01 - - 1 2 2523 4.5000000000000000e+00 0 -1 2524 - 4.4500000000000000e+01 -2 -3 2525 9.5000000000000000e+00 - - -8.7561493273824453e-04 6.5230095386505127e-01 - -5.9499686956405640e-01 2.8807112574577332e-01 - <_> - 7.7715606689453125e+01 - - 1 2 2526 5.7500000000000000e+01 0 -1 2527 - 1.9500000000000000e+01 -2 -3 2528 4.5000000000000000e+00 - - -2.3348997533321381e-01 3.4078663587570190e-01 - 8.8998430967330933e-01 -8.2743632793426514e-01 - <_> - 7.7412117004394531e+01 - - 1 2 2529 1.5500000000000000e+01 0 -1 2530 - 7.5000000000000000e+00 -2 -3 2531 1.2500000000000000e+01 - - -8.8361167907714844e-01 4.6851965785026550e-01 - 7.6548218727111816e-01 -3.4992104768753052e-01 - <_> - 7.7919708251953125e+01 - - 1 2 2532 1.4500000000000000e+01 0 -1 2533 - 4.3250000000000000e+02 -2 -3 2534 1.5000000000000000e+00 - - 1.6036920249462128e-01 -4.6338194608688354e-01 - -7.4071860313415527e-01 5.0758624076843262e-01 - <_> - 7.7726272583007812e+01 - - 1 2 2535 8.0500000000000000e+01 0 -1 2536 - 3.7500000000000000e+01 -2 -3 2537 2.5000000000000000e+00 - - -1.9343656301498413e-01 3.6727836728096008e-01 1. - -8.6589008569717407e-01 - <_> - 7.8272102355957031e+01 - - 1 2 2538 5.0000000000000000e-01 0 -1 2539 - 4.5000000000000000e+00 -2 -3 2540 658. - - -5.3998571634292603e-01 5.4582929611206055e-01 - -3.1522071361541748e-01 7.1490818262100220e-01 - <_> - 7.8563529968261719e+01 - - 1 2 2541 4.5000000000000000e+00 0 -1 2542 - 1.4500000000000000e+01 -2 -3 2543 1.6500000000000000e+01 - - 5.0465071201324463e-01 -4.6871420741081238e-01 - 5.3199578076601028e-02 -5.5464112758636475e-01 - <_> - 7.8416564941406250e+01 - - 1 2 2544 1.3450000000000000e+02 0 -1 2545 - 1.9500000000000000e+01 -2 -3 2546 3.5000000000000000e+00 - - -8.7330028414726257e-02 -7.5999724864959717e-01 - 5.3803235292434692e-01 -1.4696989953517914e-01 - <_> - 7.8487602233886719e+01 - - 1 2 2547 6.5000000000000000e+00 0 -1 2548 - 5.0000000000000000e-01 -2 -3 2549 1.7500000000000000e+01 - - 7.1036763489246368e-02 -7.1582734584808350e-01 - 5.4787242412567139e-01 -1.1151381582021713e-01 - <_> - 7.8819152832031250e+01 - - 1 2 2550 2.0750000000000000e+02 0 -1 2551 - 2.0735000000000000e+03 -2 -3 2552 4304. - - 2.2555717825889587e-01 -4.1814169287681580e-01 - 6.8767857551574707e-01 -2.6335984468460083e-01 - <_> - 7.9293106079101562e+01 - - 1 2 2553 1.8500000000000000e+01 0 -1 2554 - 4.1500000000000000e+01 -2 -3 2555 1.8500000000000000e+01 - - -8.1884217262268066e-01 1. 4.7395563125610352e-01 - -1.8633662164211273e-01 - <_> - 7.9529563903808594e+01 - - 1 2 2556 3.3500000000000000e+01 0 -1 2557 - 1.9850000000000000e+02 -2 -3 2558 1.3050000000000000e+02 - - 5.9216380119323730e-01 -7.9069614410400391e-01 - 2.3645764589309692e-01 -5.4375654458999634e-01 - <_> - 7.9264884948730469e+01 - - 1 2 2559 5.2500000000000000e+01 0 -1 2560 - 6.0500000000000000e+01 -2 -3 2561 3.1500000000000000e+01 - - 9.8454810678958893e-02 -6.2080347537994385e-01 - 3.8626289367675781e-01 -4.1950720548629761e-01 - <_> - 7.9011604309082031e+01 - - 1 2 2562 2.9550000000000000e+02 0 -1 2563 - 3.9500000000000000e+01 -2 -3 2564 2.5000000000000000e+00 - - -6.1641591787338257e-01 2.5828385353088379e-01 - 6.0895466804504395e-01 -5.8573886752128601e-02 - <_> - 7.9083618164062500e+01 - - 1 2 2565 2.8500000000000000e+01 0 -1 2566 - 5.0000000000000000e-01 -2 -3 2567 5.5000000000000000e+00 - - -3.0742061138153076e-01 2.8055912256240845e-01 - -7.9475212097167969e-01 8.2691472768783569e-01 - <_> - 7.9463661193847656e+01 - - 1 2 2568 5.0000000000000000e-01 0 -1 2569 - 1.5000000000000000e+00 -2 -3 2570 6.3050000000000000e+02 - - -1.2270902097225189e-01 7.1463072299957275e-01 - -4.2850509285926819e-01 2.2205479443073273e-01 - <_> - 7.9607894897460938e+01 - - 1 2 2571 3.5000000000000000e+00 0 -1 2572 - 3.5000000000000000e+00 -2 -3 2573 5.0000000000000000e-01 - - -9.3542063236236572e-01 5.4489326477050781e-01 - 2.0372124016284943e-01 -3.9889475703239441e-01 - <_> - 7.9263900756835938e+01 - - 1 2 2574 2.7950000000000000e+02 0 -1 2575 13730. -2 -3 2576 - 7.5000000000000000e+00 - - -7.3570191860198975e-02 7.3383468389511108e-01 - 4.3032327294349670e-01 -3.4399634599685669e-01 - <_> - 7.9479598999023438e+01 - - 1 2 2577 3.5000000000000000e+00 0 -1 2578 - 1.6500000000000000e+01 -2 -3 2579 168. - - 5.7104247808456421e-01 -8.0473148822784424e-01 - 2.1569329500198364e-01 -8.4493541717529297e-01 - <_> - 7.9719924926757812e+01 - - 1 2 2580 1.8500000000000000e+01 0 -1 2581 - 2.5500000000000000e+01 -2 -3 2582 5.8750000000000000e+02 - - -7.7445679903030396e-01 8.1580907106399536e-01 - -3.5785317420959473e-01 2.4033224582672119e-01 - <_> - 7.9651489257812500e+01 - - 1 2 2583 1.9750000000000000e+02 0 -1 2584 - 2.9845000000000000e+03 -2 -3 2585 8.7950000000000000e+02 - - -6.2534831464290619e-02 6.7511278390884399e-01 - 5.5172812938690186e-01 -4.6909588575363159e-01 - <_> - 7.9875663757324219e+01 - - 1 2 2586 4.3500000000000000e+01 0 -1 2587 - 3.0350000000000000e+02 -2 -3 2588 1.5000000000000000e+00 - - -9.0566140413284302e-01 2.2416961193084717e-01 - 6.5261769294738770e-01 -7.8972738981246948e-01 - <_> - 7.9825202941894531e+01 - - 1 2 2589 1.8500000000000000e+01 0 -1 2590 - 7.8500000000000000e+01 -2 -3 2591 5.5000000000000000e+00 - - -5.0458520650863647e-02 6.2098169326782227e-01 - -6.2433195114135742e-01 7.0211088657379150e-01 - <_> - 7.9897819519042969e+01 - - 1 2 2592 5.0000000000000000e-01 0 -1 2593 - 7.5000000000000000e+00 -2 -3 2594 3.6500000000000000e+01 - - -4.5179387927055359e-01 4.7666555643081665e-01 - -5.4754704236984253e-01 7.9487584531307220e-02 - <_> - 8.0220909118652344e+01 - - 1 2 2595 1.5000000000000000e+00 0 -1 2596 - 3.5000000000000000e+00 -2 -3 2597 2.3025000000000000e+03 - - 5.9295910596847534e-01 -4.7368842363357544e-01 - 3.2309135794639587e-01 -3.6595731973648071e-01 - <_> - 8.0416793823242188e+01 - - 1 2 2598 5.7650000000000000e+02 0 -1 2599 - 6.8250000000000000e+02 -2 -3 2600 423. - - -8.3457779884338379e-01 9.4248223304748535e-01 - 1.9588518142700195e-01 -8.9797055721282959e-01 - <_> - 8.0621925354003906e+01 - - 1 2 2601 4.3500000000000000e+01 0 -1 2602 - 4.5000000000000000e+00 -2 -3 2603 1.6500000000000000e+01 - - 5.7445579767227173e-01 -7.1823668479919434e-01 - -8.5307145118713379e-01 2.0513093471527100e-01 - <_> - 8.0483642578125000e+01 - - 1 2 2604 1.5000000000000000e+00 0 -1 2605 - 1.3500000000000000e+01 -2 -3 2606 1.5000000000000000e+00 - - -8.1219720840454102e-01 2.1613596379756927e-01 - 8.3621460199356079e-01 -6.8892109394073486e-01 - <_> - 8.0708099365234375e+01 - - 1 2 2607 1.5000000000000000e+00 0 -1 2608 - 1.5000000000000000e+00 -2 -3 2609 1.5000000000000000e+00 - - -4.5658573508262634e-01 4.5419740676879883e-01 - 3.7913042306900024e-01 -4.2572236061096191e-01 - <_> - 8.0967964172363281e+01 - - 1 2 2610 1.7225000000000000e+03 0 -1 2611 904. -2 -3 2612 - 48. - - -4.9103862047195435e-01 2.5986543297767639e-01 - -6.5187561511993408e-01 7.3263108730316162e-01 - <_> - 8.1015785217285156e+01 - - 1 2 2613 8.5500000000000000e+01 0 -1 2614 - 3.2500000000000000e+01 -2 -3 2615 1.6500000000000000e+01 - - 3.0590304732322693e-01 -6.0726463794708252e-01 - 4.5478045940399170e-01 -2.1701261401176453e-01 - <_> - 8.1222023010253906e+01 - - 1 2 2616 1.1500000000000000e+01 0 -1 2617 - 3.5000000000000000e+00 -2 -3 2618 570. - - 4.0577322244644165e-01 -2.8158581256866455e-01 - -7.0219916105270386e-01 7.8437590599060059e-01 - <_> - 8.1114990234375000e+01 - - 1 2 2619 1.5000000000000000e+00 0 -1 2620 - 5.0000000000000000e-01 -2 -3 2621 5.0000000000000000e-01 - - 4.7717106342315674e-01 -8.8117665052413940e-01 - 3.8160988688468933e-01 -1.6836205124855042e-01 - <_> - 8.0563499450683594e+01 - - 1 2 2622 2.5500000000000000e+01 0 -1 2623 - 1.2500000000000000e+01 -2 -3 2624 5.9500000000000000e+01 - - -5.5149054527282715e-01 3.2653099298477173e-01 - 3.5567849874496460e-01 -6.7506045103073120e-01 - <_> - 8.1009407043457031e+01 - - 1 2 2625 3.5000000000000000e+00 0 -1 2626 - 2.2985000000000000e+03 -2 -3 2627 5.5000000000000000e+00 - - 4.4590899348258972e-01 -2.8159150481224060e-01 - -5.6732189655303955e-01 2.0876012742519379e-01 - <_> - 8.1270759582519531e+01 - - 1 2 2628 1.3500000000000000e+01 0 -1 2629 - 4.4500000000000000e+01 -2 -3 2630 3.9500000000000000e+01 - - 1.7286604642868042e-01 -7.5421804189682007e-01 - 2.6134765148162842e-01 -5.9037572145462036e-01 - <_> - 8.1395576477050781e+01 - - 1 2 2631 4.4750000000000000e+02 0 -1 2632 - 1.9500000000000000e+01 -2 -3 2633 2.7965000000000000e+03 - - 1.2481955438852310e-01 -4.5122003555297852e-01 - 7.7366709709167480e-01 -3.6004805564880371e-01 - <_> - 8.1301132202148438e+01 - - 1 2 2634 2.5000000000000000e+00 0 -1 2635 6. -2 -3 2636 - 1.3995000000000000e+03 - - 1. -1. 4.4335600733757019e-01 -9.4446659088134766e-02 - <_> - 8.1370132446289062e+01 - - 1 2 2637 4.1250000000000000e+02 0 -1 2638 - 1.5000000000000000e+00 -2 -3 2639 7.5000000000000000e+00 - - 6.9000430405139923e-02 -4.9422886967658997e-01 - -9.1928571462631226e-01 4.6428659558296204e-01 - <_> - 8.1621879577636719e+01 - - 1 2 2640 2.8500000000000000e+01 0 -1 2641 - 2.6500000000000000e+01 -2 -3 2642 1.5500000000000000e+01 - - -4.7164541482925415e-01 2.5174945592880249e-01 - 1.3210830092430115e-01 -8.8470876216888428e-01 - <_> - 8.2271644592285156e+01 - - 1 2 2643 2.5000000000000000e+00 0 -1 2644 - 1.0500000000000000e+01 -2 -3 2645 86. - - -6.9350771605968475e-02 6.4976197481155396e-01 - -7.7881592512130737e-01 -6.0378432273864746e-02 - <_> - 8.2486991882324219e+01 - - 1 2 2646 2.7500000000000000e+01 0 -1 2647 - 4.5000000000000000e+00 -2 -3 2648 6.5000000000000000e+00 - - -8.2361882925033569e-01 3.2168322801589966e-01 - 2.4581556022167206e-01 -5.5088657140731812e-01 - <_> - 8.2648330688476562e+01 - - 1 2 2649 1.1500000000000000e+01 0 -1 2650 - 2.5000000000000000e+00 -2 -3 2651 552. - - 5.5005900561809540e-02 -6.6145080327987671e-01 - -9.3321514129638672e-01 2.9643073678016663e-01 - <_> - 8.2730377197265625e+01 - - 1 2 2652 1835. 0 -1 2653 9026. -2 -3 2654 - 5.0000000000000000e-01 - - -8.2883286476135254e-01 9.0321773290634155e-01 - 8.2042239606380463e-02 -4.4094491004943848e-01 - <_> - 8.2976600646972656e+01 - - 1 2 2655 7.5000000000000000e+00 0 -1 2656 27. -2 -3 2657 - 7.7500000000000000e+01 - - -6.6883772611618042e-01 8.2824200391769409e-01 - 2.4622967839241028e-01 -7.1693640947341919e-01 - <_> - 8.2621650695800781e+01 - - 1 2 2658 8.5000000000000000e+00 0 -1 2659 - 5.0000000000000000e-01 -2 -3 2660 55. - - 2.1821559965610504e-01 -3.5495325922966003e-01 - -5.7552605867385864e-01 6.4010292291641235e-01 - <_> - 8.2944847106933594e+01 - - 1 2 2661 5.5000000000000000e+00 0 -1 2662 9109. -2 -3 2663 - 3.0500000000000000e+01 - - 3.6217045038938522e-02 -6.7411881685256958e-01 - 4.6031165122985840e-01 -1.3432784378528595e-01 - <_> - 8.2844596862792969e+01 - - 1 2 2664 4.5000000000000000e+00 0 -1 2665 - 1.9500000000000000e+01 -2 -3 2666 5.0000000000000000e-01 - - -6.6067945957183838e-01 6.5172028541564941e-01 - 5.3896325826644897e-01 -1.0024529695510864e-01 - <_> - 8.2988021850585938e+01 - - 1 2 2667 2.3500000000000000e+01 0 -1 2668 - 3.5000000000000000e+00 -2 -3 2669 5.5500000000000000e+01 - - 3.6205202341079712e-01 -4.8302540183067322e-01 - -3.1453946232795715e-01 4.5836016535758972e-01 - <_> - 8.3242561340332031e+01 - - 1 2 2670 9.0500000000000000e+01 0 -1 2671 - 4.1500000000000000e+01 -2 -3 2672 3.9500000000000000e+01 - - 2.5454065203666687e-01 -3.1304958462715149e-01 - -9.7736436128616333e-01 6.2847685813903809e-01 - <_> - 8.3276382446289062e+01 - - 1 2 2673 1.7500000000000000e+01 0 -1 2674 - 8.3500000000000000e+01 -2 -3 2675 5.5000000000000000e+00 - - 5.6938213109970093e-01 -9.2754542827606201e-01 - 3.0042541027069092e-01 -2.8111898899078369e-01 - <_> - 8.2934799194335938e+01 - - 1 2 2676 3.3500000000000000e+01 0 -1 2677 - 3.6050000000000000e+02 -2 -3 2678 94. - - -3.8239040970802307e-01 1.4262221753597260e-01 - 7.1967273950576782e-01 -7.4638730287551880e-01 - <_> - 8.3355155944824219e+01 - - 1 2 2679 6.5000000000000000e+00 0 -1 2680 25. -2 -3 2681 - 1.5000000000000000e+00 - - -9.2031919956207275e-01 1. 4.2035222053527832e-01 - -1.8400678038597107e-01 - <_> - 8.3341117858886719e+01 - - 1 2 2682 2.7550000000000000e+02 0 -1 2683 - 3.9500000000000000e+01 -2 -3 2684 1.7500000000000000e+01 - - -3.1554982066154480e-01 2.4787786602973938e-01 - -9.8996192216873169e-01 1. - <_> - 8.3088867187500000e+01 - - 1 2 2685 5.0000000000000000e-01 0 -1 2686 - 3.4500000000000000e+01 -2 -3 2687 3.3250000000000000e+02 - - 7.6295363903045654e-01 -3.0974990129470825e-01 - -2.5224679708480835e-01 6.2690478563308716e-01 - <_> - 8.3444519042968750e+01 - - 1 2 2688 1.5000000000000000e+00 0 -1 2689 - 6.6500000000000000e+01 -2 -3 2690 5.0000000000000000e-01 - - -4.7374388575553894e-01 3.5564544796943665e-01 - 2.2661061584949493e-01 -5.4821664094924927e-01 - <_> - 8.3531219482421875e+01 - - 1 2 2691 1.5450000000000000e+02 0 -1 2692 - 3.2500000000000000e+01 -2 -3 2693 1.9500000000000000e+01 - - -2.1394637227058411e-01 8.1045120954513550e-01 - -4.8737204074859619e-01 8.6701557040214539e-02 - <_> - 8.3356086730957031e+01 - - 1 2 2694 3.5000000000000000e+00 0 -1 2695 - 9.5000000000000000e+00 -2 -3 2696 2.1500000000000000e+01 - - -3.3526990562677383e-02 5.4166865348815918e-01 - -6.0305202007293701e-01 7.6919454336166382e-01 - <_> - 8.3536964416503906e+01 - - 1 2 2697 2.7950000000000000e+02 0 -1 2698 - 2.1500000000000000e+01 -2 -3 2699 3.5045000000000000e+03 - - -4.9123385548591614e-01 5.2362555265426636e-01 - -7.9040545225143433e-01 -3.3013910055160522e-02 - <_> - 8.3796424865722656e+01 - - 1 2 2700 9.5000000000000000e+00 0 -1 2701 - 4.5000000000000000e+00 -2 -3 2702 1.7500000000000000e+01 - - 4.8670431971549988e-01 -2.3416480422019958e-01 - -4.7568261623382568e-01 2.2792084515094757e-01 - <_> - 8.4059371948242188e+01 - - 1 2 2703 5.5500000000000000e+01 0 -1 2704 - 5.0000000000000000e-01 -2 -3 2705 3.9185000000000000e+03 - - 2.2618722915649414e-01 -9.2116522789001465e-01 - -3.2166120409965515e-01 2.6295122504234314e-01 - <_> - 8.4028038024902344e+01 - - 1 2 2706 1.1500000000000000e+01 0 -1 2707 15. -2 -3 2708 - 4.5000000000000000e+00 - - 8.7838518619537354e-01 -8.4853267669677734e-01 - 3.6655527353286743e-01 -1.8356652557849884e-01 - <_> - 8.3846260070800781e+01 - - 1 2 2709 5.5000000000000000e+00 0 -1 2710 325. -2 -3 2711 - 9.5000000000000000e+00 - - -8.7982141971588135e-01 1. 3.4321373701095581e-01 - -1.8177768588066101e-01 - <_> - 8.4174667358398438e+01 - - 1 2 2712 9.5000000000000000e+00 0 -1 2713 - 1.9050000000000000e+02 -2 -3 2714 4.5000000000000000e+00 - - 6.9107550382614136e-01 -7.7517443895339966e-01 - 5.7090425491333008e-01 -1.1606752872467041e-01 - <_> - 8.4324356079101562e+01 - - 1 2 2715 2.7500000000000000e+01 0 -1 2716 - 4.0885000000000000e+03 -2 -3 2717 8.5000000000000000e+00 - - 8.7019419670104980e-01 -8.7088418006896973e-01 - 2.1278975903987885e-01 -4.6584972739219666e-01 - <_> - 8.4102806091308594e+01 - - 1 2 2718 2.1250000000000000e+02 0 -1 2719 - 5.6500000000000000e+01 -2 -3 2720 5.0000000000000000e-01 - - 2.1476839482784271e-01 -4.4505792856216431e-01 1. - -7.7488011121749878e-01 - <_> - 8.4038200378417969e+01 - - 1 2 2721 9.4500000000000000e+01 0 -1 2722 - 1.5000000000000000e+00 -2 -3 2723 98. - - 1.9173437356948853e-01 -5.0092142820358276e-01 - -4.4755691289901733e-01 4.7253641486167908e-01 - <_> - 8.4137344360351562e+01 - - 1 2 2724 1.1515000000000000e+03 0 -1 2725 - 2.0050000000000000e+02 -2 -3 2726 4.8500000000000000e+01 - - -8.2353651523590088e-02 5.8139425516128540e-01 - 3.6044213920831680e-02 -6.4356809854507446e-01 - <_> - 8.4309326171875000e+01 - - 1 2 2727 1.0500000000000000e+01 0 -1 2728 2663. -2 -3 2729 - 2.4250000000000000e+02 - - 4.7916080802679062e-02 -5.9066039323806763e-01 - 7.3575264215469360e-01 -8.9028924703598022e-01 - <_> - 8.4420402526855469e+01 - - 1 2 2730 5.4665000000000000e+03 0 -1 2731 - 1.5000000000000000e+00 -2 -3 2732 4.6500000000000000e+01 - - 2.7950283885002136e-01 -2.4711169302463531e-01 - -9.4440460205078125e-01 1. - <_> - 8.4394798278808594e+01 - - 1 2 2733 1.1050000000000000e+02 0 -1 2734 63. -2 -3 2735 - 6.4650000000000000e+02 - - 4.1327634453773499e-01 -8.2762449979782104e-01 - -2.5601835921406746e-02 7.5820297002792358e-01 - <_> - 8.4607276916503906e+01 - - 1 2 2736 2.5000000000000000e+00 0 -1 2737 - 2.5500000000000000e+01 -2 -3 2738 1.0500000000000000e+01 - - -3.7000726908445358e-02 6.8266022205352783e-01 - 1.4960629865527153e-02 -6.4148795604705811e-01 - <_> - 8.5164596557617188e+01 - - 1 2 2739 5.3500000000000000e+01 0 -1 2740 - 2.9500000000000000e+01 -2 -3 2741 1.0850000000000000e+02 - - -1.2329825013875961e-01 5.5731654167175293e-01 - -8.3035022020339966e-01 7.4285131692886353e-01 - <_> - 8.5318458557128906e+01 - - 1 2 2742 6.0500000000000000e+01 0 -1 2743 - 5.5750000000000000e+02 -2 -3 2744 2.4455000000000000e+03 - - -9.1876357793807983e-01 1.5386807918548584e-01 1. - -8.4595882892608643e-01 - <_> - 8.5138092041015625e+01 - - 1 2 2745 1.4500000000000000e+01 0 -1 2746 133. -2 -3 2747 - 1.5000000000000000e+00 - - 9.3546825647354126e-01 -7.7808952331542969e-01 - 4.2497289180755615e-01 -1.8036651611328125e-01 - <_> - 8.5170181274414062e+01 - - 1 2 2748 2.6500000000000000e+01 0 -1 2749 - 1.6500000000000000e+01 -2 -3 2750 3.0550000000000000e+02 - - 9.9500669166445732e-03 -6.0836273431777954e-01 - 5.2151191234588623e-01 -3.4265536069869995e-01 - <_> - 8.5376792907714844e+01 - - 1 2 2751 3.5000000000000000e+00 0 -1 2752 - 1.6500000000000000e+01 -2 -3 2753 4.2500000000000000e+01 - - 4.3600571155548096e-01 -8.0105257034301758e-01 - -5.1988095045089722e-01 2.0660850405693054e-01 - <_> - 8.5609893798828125e+01 - - 1 2 2754 1.0500000000000000e+01 0 -1 2755 - 1.5000000000000000e+00 -2 -3 2756 2.5000000000000000e+00 - - -6.2382709980010986e-01 4.6645849943161011e-01 - 3.5961329936981201e-02 -5.3663784265518188e-01 - <_> - 8.5939903259277344e+01 - - 1 2 2757 9.5500000000000000e+01 0 -1 2758 11828. -2 -3 2759 - 3.8450000000000000e+02 - - -7.1205846965312958e-02 -9.5047873258590698e-01 - 3.3001002669334412e-01 -5.8486175537109375e-01 - <_> - 8.5633140563964844e+01 - - 1 2 2760 1.5000000000000000e+00 0 -1 2761 - 7.5000000000000000e+00 -2 -3 2762 1.5605000000000000e+03 - - -1.8193472921848297e-01 5.5474883317947388e-01 - 6.6240763664245605e-01 -3.6709865927696228e-01 - <_> - 8.5665580749511719e+01 - - 1 2 2763 5.0000000000000000e-01 0 -1 2764 - 3.5000000000000000e+00 -2 -3 2765 1.6500000000000000e+01 - - -6.3473922014236450e-01 4.5258450508117676e-01 - -6.2842214107513428e-01 3.2442636787891388e-02 - <_> - 8.5813781738281250e+01 - - 1 2 2766 1.8050000000000000e+02 0 -1 2767 - 1.5000000000000000e+00 -2 -3 2768 6.5000000000000000e+00 - - -8.1317859888076782e-01 1.4819937944412231e-01 - 7.9641395807266235e-01 -9.0252667665481567e-01 - <_> - 8.6130287170410156e+01 - - 1 2 2769 2.5000000000000000e+00 0 -1 2770 - 1.5000000000000000e+00 -2 -3 2771 1.0850000000000000e+02 - - -8.2908695936203003e-01 6.0830992460250854e-01 - -3.5930514335632324e-01 2.5600242614746094e-01 - <_> - 8.5960426330566406e+01 - - 1 2 2772 3.5000000000000000e+00 0 -1 2773 - 2.5000000000000000e+00 -2 -3 2774 3.5000000000000000e+00 - - 4.0980219841003418e-01 -8.7654078006744385e-01 - 3.7149679660797119e-01 -1.6985960304737091e-01 - <_> - 8.5911773681640625e+01 - - 1 2 2775 2.0750000000000000e+02 0 -1 2776 - 2.5000000000000000e+00 -2 -3 2777 4.0550000000000000e+02 - - 6.4895875751972198e-02 -5.2602392435073853e-01 - 8.3245736360549927e-01 -4.8650942742824554e-02 - <_> - 8.6134010314941406e+01 - - 1 2 2778 6.2500000000000000e+01 0 -1 2779 - 3.6650000000000000e+02 -2 -3 2780 4.5500000000000000e+01 - - -7.8410977125167847e-01 2.2223210334777832e-01 - -8.4461647272109985e-01 7.4402904510498047e-01 - <_> - 8.6428909301757812e+01 - - 1 2 2781 2.5000000000000000e+00 0 -1 2782 - 6.5000000000000000e+00 -2 -3 2783 4.1750000000000000e+02 - - 5.1555430889129639e-01 -1.5588639676570892e-01 - 1.7773015797138214e-01 -5.0610744953155518e-01 - <_> - 8.6826782226562500e+01 - - 1 2 2784 1.5505000000000000e+03 0 -1 2785 - 5.0000000000000000e-01 -2 -3 2786 1.4500000000000000e+01 - - 3.5983416438102722e-01 -5.7004302740097046e-01 - -5.4764652252197266e-01 3.9787346124649048e-01 - <_> - 8.7037475585937500e+01 - - 1 2 2787 5.0000000000000000e-01 0 -1 2788 - 8.5000000000000000e+00 -2 -3 2789 5.0000000000000000e-01 - - -7.9977160692214966e-01 3.6234867572784424e-01 - 2.8641289472579956e-01 -4.9720412492752075e-01 - <_> - 8.6423477172851562e+01 - - 1 2 2790 1.4500000000000000e+01 0 -1 2791 47. -2 -3 2792 - 3.2500000000000000e+01 - - 4.9334439635276794e-01 -7.6565510034561157e-01 - 2.7979478240013123e-01 -3.8790243864059448e-01 - <_> - 8.6541648864746094e+01 - - 1 2 2793 3.8500000000000000e+01 0 -1 2794 - 1.5000000000000000e+00 -2 -3 2795 2.0850000000000000e+02 - - 1.1817480623722076e-01 -4.9608191847801208e-01 - 4.3412643671035767e-01 -8.0814820528030396e-01 - <_> - 8.6554786682128906e+01 - - 1 2 2796 5.0000000000000000e-01 0 -1 2797 - 5.0000000000000000e-01 -2 -3 2798 1.5500000000000000e+01 - - -7.7674239873886108e-01 4.3930459022521973e-01 - 1.3139089569449425e-02 -6.7160016298294067e-01 - <_> - 8.6836524963378906e+01 - - 1 2 2799 2.1500000000000000e+01 0 -1 2800 - 3.2750000000000000e+02 -2 -3 2801 1.2500000000000000e+01 - - -3.1266799569129944e-01 6.9435644149780273e-01 - -5.9980082511901855e-01 6.5070140361785889e-01 - <_> - 8.6815773010253906e+01 - - 1 2 2802 9.8850000000000000e+02 0 -1 2803 - 4.5000000000000000e+00 -2 -3 2804 3.1500000000000000e+01 - - 7.5975960493087769e-01 -1.4526490122079849e-02 - -4.3337148427963257e-01 3.4662330150604248e-01 - <_> - 8.6753486633300781e+01 - - 1 2 2805 5.8750000000000000e+02 0 -1 2806 - 4.0050000000000000e+02 -2 -3 2807 5.8550000000000000e+02 - - -5.1701253652572632e-01 8.5829895734786987e-01 - 6.8487954139709473e-01 -6.2283929437398911e-02 - <_> - 8.7153579711914062e+01 - - 1 2 2808 5.0000000000000000e-01 0 -1 2809 - 2.5000000000000000e+00 -2 -3 2810 9.3050000000000000e+02 - - -7.2558873891830444e-01 4.3454471230506897e-01 - -8.1130824983119965e-02 -8.3618861436843872e-01 - <_> - 8.7351936340332031e+01 - - 1 2 2811 3.5000000000000000e+00 0 -1 2812 - 7.5000000000000000e+00 -2 -3 2813 1.5000000000000000e+00 - - -9.6148520708084106e-01 4.0121293067932129e-01 - 1.6389970481395721e-01 -5.4697543382644653e-01 - <_> - 8.7288108825683594e+01 - - 1 2 2814 9.8500000000000000e+01 0 -1 2815 - 1.5000000000000000e+00 -2 -3 2816 5.0000000000000000e-01 - - 3.0000725388526917e-01 -5.5716449022293091e-01 - 6.8792611360549927e-01 -6.3822388648986816e-02 - <_> - 8.7567855834960938e+01 - - 1 2 2817 1.2500000000000000e+01 0 -1 2818 - 5.5000000000000000e+00 -2 -3 2819 3.2500000000000000e+01 - - -6.0839080810546875e-01 2.7974289655685425e-01 - -9.0464597940444946e-01 -9.1534465551376343e-02 - <_> - 8.7742805480957031e+01 - - 1 2 2820 2.9050000000000000e+02 0 -1 2821 - 4.0350000000000000e+02 -2 -3 2822 1.5000000000000000e+00 - - -1.1221635341644287e-01 6.0925048589706421e-01 - 3.3704385161399841e-01 -5.3282082080841064e-01 - <_> - 8.7797904968261719e+01 - - 1 2 2823 1.4500000000000000e+01 0 -1 2824 1690. -2 -3 2825 - 7.4500000000000000e+01 - - 5.5097710341215134e-02 -8.7218642234802246e-01 - -7.2020220756530762e-01 3.5318741202354431e-01 - <_> - 8.8284759521484375e+01 - - 1 2 2826 2.2450000000000000e+02 0 -1 2827 - 1.9500000000000000e+01 -2 -3 2828 1.9535000000000000e+03 - - -1.3064707815647125e-01 4.8685196042060852e-01 - -8.4640699625015259e-01 1.8381766974925995e-01 - <_> - 8.8222618103027344e+01 - - 1 2 2829 5.0000000000000000e-01 0 -1 2830 - 1.2500000000000000e+01 -2 -3 2831 4.5000000000000000e+00 - - -5.3857803344726562e-01 5.4414546489715576e-01 - 1.8226167559623718e-01 -5.0997644662857056e-01 - <_> - 8.8490211486816406e+01 - - 1 2 2832 8.5000000000000000e+00 0 -1 2833 1990. -2 -3 2834 - 3.5000000000000000e+00 - - -3.3869510889053345e-01 8.5612648725509644e-01 - 6.6255128383636475e-01 -1.8713159859180450e-01 - <_> - 8.8309280395507812e+01 - - 1 2 2835 5.0000000000000000e-01 0 -1 2836 - 1.5350000000000000e+02 -2 -3 2837 3.0500000000000000e+01 - - 3.7325781583786011e-01 -9.1693335771560669e-01 - -3.7281343340873718e-01 4.3598929047584534e-01 - <_> - 8.8545036315917969e+01 - - 1 2 2838 2.5000000000000000e+00 0 -1 2839 - 3.5000000000000000e+00 -2 -3 2840 9.5000000000000000e+00 - - -8.1305176019668579e-01 2.3575115203857422e-01 - 8.2359343767166138e-01 -5.0804460048675537e-01 - <_> - 8.8620689392089844e+01 - - 1 2 2841 4.7950000000000000e+02 0 -1 2842 - 7.4550000000000000e+02 -2 -3 2843 3.5000000000000000e+00 - - -1. 5.5236303806304932e-01 -4.9426826834678650e-01 - 7.5652711093425751e-02 - <_> - 8.8498481750488281e+01 - - 1 2 2844 5.0000000000000000e-01 0 -1 2845 - 5.0000000000000000e-01 -2 -3 2846 9.6500000000000000e+01 - - -8.3736324310302734e-01 3.9632564783096313e-01 - -7.2766882181167603e-01 4.8122378066182137e-03 - <_> - 8.8912002563476562e+01 - - 1 2 2847 3.5000000000000000e+00 0 -1 2848 - 5.0000000000000000e-01 -2 -3 2849 1.5000000000000000e+00 - - 7.1133011579513550e-01 -1.0473229736089706e-01 - 3.0710890889167786e-01 -4.0350064635276794e-01 - <_> - 8.9316238403320312e+01 - - 1 2 2850 1.6500000000000000e+01 0 -1 2851 - 1.5000000000000000e+00 -2 -3 2852 7.5000000000000000e+00 - - 8.4607600001618266e-04 -7.6641041040420532e-01 - -3.1311124563217163e-01 4.4425663352012634e-01 - <_> - 8.9348419189453125e+01 - - 1 2 2853 1.1500000000000000e+01 0 -1 2854 - 1.7500000000000000e+01 -2 -3 2855 2.0500000000000000e+01 - - -9.8593395948410034e-01 1. 2.4410592019557953e-01 - -3.1496018171310425e-01 - <_> - 8.9189270019531250e+01 - - 1 2 2856 1.6500000000000000e+01 0 -1 2857 - 6.5000000000000000e+00 -2 -3 2858 74. - - 8.4461316466331482e-02 -4.1109508275985718e-01 - 9.0820807218551636e-01 -3.5371799021959305e-02 - <_> - 8.9124603271484375e+01 - - 1 2 2859 5.8750000000000000e+02 0 -1 2860 9863. -2 -3 2861 - 1.2500000000000000e+01 - - -6.3491946458816528e-01 4.8731520771980286e-01 - -5.2020323276519775e-01 3.2958313822746277e-01 - <_> - 8.9286071777343750e+01 - - 1 2 2862 9.7500000000000000e+01 0 -1 2863 - 2.1950000000000000e+02 -2 -3 2864 5.0000000000000000e-01 - - 4.2516252398490906e-01 -1. 2.8237330913543701e-01 - -5.0328004360198975e-01 - <_> - 8.9424316406250000e+01 - - 1 2 2865 5.2500000000000000e+01 0 -1 2866 61. -2 -3 2867 - 1.7500000000000000e+01 - - 5.0655448436737061e-01 -5.1969325542449951e-01 - 3.5390514135360718e-01 -4.7365185618400574e-01 - <_> - 8.9726875305175781e+01 - - 1 2 2868 5.8500000000000000e+01 0 -1 2869 - 1.4500000000000000e+01 -2 -3 2870 42. - - 3.0255803465843201e-01 -2.0427562296390533e-01 - -8.5021793842315674e-01 7.0594644546508789e-01 - <_> - 8.9578895568847656e+01 - - 1 2 2871 1.0500000000000000e+01 0 -1 2872 - 1.1950000000000000e+02 -2 -3 2873 24. - - -2.4734574556350708e-01 3.1361401081085205e-01 - 8.7930864095687866e-01 -1. - <_> - 8.9768898010253906e+01 - - 1 2 2874 7.5000000000000000e+00 0 -1 2875 - 7.4500000000000000e+01 -2 -3 2876 2.8500000000000000e+01 - - 3.1221041083335876e-01 -7.0097410678863525e-01 - 2.4191275238990784e-01 -5.3588688373565674e-01 - <_> - 8.9684265136718750e+01 - - 1 2 2877 3.5000000000000000e+00 0 -1 2878 - 2.7950000000000000e+02 -2 -3 2879 4.1500000000000000e+01 - - 1.2314370274543762e-01 -6.7686629295349121e-01 - -3.6168605089187622e-01 3.5209780931472778e-01 - <_> - 8.9795585632324219e+01 - - 1 2 2880 2.1050000000000000e+02 0 -1 2881 - 3.5000000000000000e+00 -2 -3 2882 1.0500000000000000e+01 - - 5.2586346864700317e-01 -3.2540410757064819e-01 - -8.8829517364501953e-01 4.9435129761695862e-01 - <_> - 8.9792076110839844e+01 - - 1 2 2883 2.5000000000000000e+00 0 -1 2884 - 2.9500000000000000e+01 -2 -3 2885 3.9250000000000000e+02 - - -6.1523008346557617e-01 3.7085807323455811e-01 - 9.0023398399353027e-02 -6.0440886020660400e-01 - <_> - 8.9958946228027344e+01 - - 1 2 2886 1.0500000000000000e+01 0 -1 2887 - 1.2500000000000000e+01 -2 -3 2888 1.8500000000000000e+01 - - -5.9052956104278564e-01 2.1934990584850311e-01 - -5.8395588397979736e-01 5.4426544904708862e-01 - <_> - 8.9670410156250000e+01 - - 1 2 2889 1.5000000000000000e+00 0 -1 2890 - 2.5000000000000000e+00 -2 -3 2891 8.5000000000000000e+00 - - -8.5811334848403931e-01 5.2128863334655762e-01 - -3.4101697802543640e-01 2.6454553008079529e-01 - <_> - 8.9847396850585938e+01 - - 1 2 2892 1.4500000000000000e+01 0 -1 2893 - 1.1500000000000000e+01 -2 -3 2894 6.6500000000000000e+01 - - -3.8977336883544922e-01 4.3855726718902588e-01 - -5.0296223163604736e-01 1.7698343098163605e-01 - <_> - 9.0157752990722656e+01 - - 1 2 2895 5.0000000000000000e-01 0 -1 2896 - 8.5000000000000000e+00 -2 -3 2897 4.5000000000000000e+00 - - -4.1999164223670959e-01 3.1035554409027100e-01 - 2.2039012610912323e-01 -5.3406608104705811e-01 - <_> - 9.0098411560058594e+01 - - 1 2 2898 5.0000000000000000e-01 0 -1 2899 - 2.1750000000000000e+02 -2 -3 2900 1.9500000000000000e+01 - - -5.9334795922040939e-02 6.7584723234176636e-01 - -5.2655130624771118e-01 2.6948010921478271e-01 - <_> - 9.0537551879882812e+01 - - 1 2 2901 5.0000000000000000e-01 0 -1 2902 - 7.5000000000000000e+00 -2 -3 2903 2.2500000000000000e+01 - - -6.9564437866210938e-01 4.3913722038269043e-01 - -3.6194628477096558e-01 3.8801836967468262e-01 - <_> - 9.0335647583007812e+01 - - 1 2 2904 1.5000000000000000e+00 0 -1 2905 - 5.4550000000000000e+02 -2 -3 2906 2.5000000000000000e+00 - - 1. -9.8192542791366577e-01 3.3667489886283875e-01 - -2.0190110802650452e-01 - <_> - 9.0692535400390625e+01 - - 1 2 2907 1.5000000000000000e+00 0 -1 2908 - 8.5000000000000000e+00 -2 -3 2909 344. - - -4.5181885361671448e-01 3.5688367486000061e-01 - -5.9278815984725952e-01 6.4385175704956055e-02 - <_> - 9.0584419250488281e+01 - - 1 2 2910 4.6500000000000000e+01 0 -1 2911 - 2.5000000000000000e+00 -2 -3 2912 6.5000000000000000e+00 - - 4.3527498841285706e-01 -1.0811836272478104e-01 - -6.3831877708435059e-01 1. - <_> - 9.0788459777832031e+01 - - 1 2 2913 294. 0 -1 2914 14. -2 -3 2915 - 4.4500000000000000e+01 - - -8.4630513191223145e-01 1. 2.0404133200645447e-01 - -4.8527365922927856e-01 - <_> - 9.0862548828125000e+01 - - 1 2 2916 3.3500000000000000e+01 0 -1 2917 52. -2 -3 2918 - 5.2705000000000000e+03 - - 7.2816586494445801e-01 -5.4465806484222412e-01 - -1.1197114735841751e-01 5.4565620422363281e-01 - <_> - 9.0902687072753906e+01 - - 1 2 2919 4.1050000000000000e+02 0 -1 2920 139. -2 -3 2921 - 1.5000000000000000e+00 - - -9.1185075044631958e-01 6.4714074134826660e-01 - 1.9417783617973328e-01 -3.6837339401245117e-01 - <_> - 9.0985298156738281e+01 - - 1 2 2922 5.7650000000000000e+02 0 -1 2923 - 2.9450000000000000e+02 -2 -3 2924 3.9150000000000000e+02 - - -8.4534245729446411e-01 1. 4.4867873191833496e-01 - -1.7172452807426453e-01 - <_> - 9.1107513427734375e+01 - - 1 2 2925 3.5000000000000000e+00 0 -1 2926 - 1.5500000000000000e+01 -2 -3 2927 4.2500000000000000e+01 - - -8.3989793062210083e-01 8.9864379167556763e-01 - 2.8704452514648438e-01 -2.8833448886871338e-01 - <_> - 9.1266738891601562e+01 - - 1 2 2928 4.9775000000000000e+03 0 -1 2929 - 4.5000000000000000e+00 -2 -3 2930 1.9865000000000000e+03 - - -7.4095195531845093e-01 1.5922544896602631e-01 - -9.0941101312637329e-01 1.8585844337940216e-01 - <_> - 9.1225799560546875e+01 - - 1 2 2931 5.0000000000000000e-01 0 -1 2932 - 4.5000000000000000e+00 -2 -3 2933 1.4500000000000000e+01 - - -7.6407551765441895e-01 5.0083768367767334e-01 - -7.2587943077087402e-01 -5.0088282674551010e-02 - <_> - 9.0573638916015625e+01 - - 1 2 2934 8.5000000000000000e+00 0 -1 2935 - 2.7500000000000000e+01 -2 -3 2936 9.5000000000000000e+00 - - -7.4017934501171112e-02 5.9898555278778076e-01 - 1.7782434821128845e-01 -6.5216350555419922e-01 - <_> - 9.0737045288085938e+01 - - 1 2 2937 5.0000000000000000e-01 0 -1 2938 - 1.0450000000000000e+02 -2 -3 2939 1.6950000000000000e+02 - - 6.0130667686462402e-01 -9.1431754827499390e-01 - -4.1352280974388123e-01 1.6340811550617218e-01 - <_> - 9.1356544494628906e+01 - - 1 2 2940 1.5000000000000000e+00 0 -1 2941 - 7.5000000000000000e+00 -2 -3 2942 1.6805000000000000e+03 - - -2.0215752720832825e-01 6.1950212717056274e-01 - -5.5768364667892456e-01 3.5280909389257431e-02 - <_> - 9.0944335937500000e+01 - - 1 2 2943 1.1155000000000000e+03 0 -1 2944 - 1.3500000000000000e+01 -2 -3 2945 4.1950000000000000e+02 - - 6.8771177530288696e-01 -9.7811706364154816e-02 - -4.1221308708190918e-01 1.9626976549625397e-01 - <_> - 9.1227783203125000e+01 - - 1 2 2946 1.7535000000000000e+03 0 -1 2947 - 6.5000000000000000e+00 -2 -3 2948 8.3500000000000000e+01 - - 2.8345218300819397e-01 -2.8811171650886536e-01 - -9.1736477613449097e-01 1. - <_> - 9.1561256408691406e+01 - - 1 2 2949 3.9500000000000000e+01 0 -1 2950 169. -2 -3 2951 - 3.5000000000000000e+00 - - -7.5076478719711304e-01 8.8347315788269043e-01 - 3.4602180123329163e-01 -2.1803687512874603e-01 - <_> - 9.0775177001953125e+01 - - 1 2 2952 1.2550000000000000e+02 0 -1 2953 - 8.5000000000000000e+00 -2 -3 2954 156. - - -3.8729524612426758e-01 2.9583999514579773e-01 - -7.9863160848617554e-01 3.9145687222480774e-01 - <_> - 9.1042625427246094e+01 - - 1 2 2955 2.5000000000000000e+00 0 -1 2956 - 2.5750000000000000e+02 -2 -3 2957 4685. - - 2.6745319366455078e-01 -6.6209262609481812e-01 - -7.7674686908721924e-01 7.1668751537799835e-02 - <_> - 9.1575469970703125e+01 - - 1 2 2958 1.0500000000000000e+01 0 -1 2959 - 1.0550000000000000e+02 -2 -3 2960 4.5500000000000000e+01 - - 5.3284192085266113e-01 -3.2092022895812988e-01 - -9.5425200462341309e-01 5.0468903779983521e-01 - <_> - 9.1930732727050781e+01 - - 1 2 2961 1.2500000000000000e+01 0 -1 2962 - 1.8950000000000000e+02 -2 -3 2963 2.5000000000000000e+00 - - -2.8867003321647644e-01 3.5526236891746521e-01 - 2.9676264524459839e-01 -6.0322642326354980e-01 - <_> - 9.2231742858886719e+01 - - 1 2 2964 7.5000000000000000e+00 0 -1 2965 - 1.9500000000000000e+01 -2 -3 2966 4.1500000000000000e+01 - - -7.3552119731903076e-01 3.0101212859153748e-01 - -5.0962239503860474e-01 5.0894033908843994e-01 - <_> - 9.2388069152832031e+01 - - 1 2 2967 1.1500000000000000e+01 0 -1 2968 - 1.5000000000000000e+00 -2 -3 2969 2.6500000000000000e+01 - - 1.5632244944572449e-01 -4.4891685247421265e-01 - 6.4296531677246094e-01 -5.9720402956008911e-01 - <_> - 9.2552001953125000e+01 - - 1 2 2970 1.0675000000000000e+03 0 -1 2971 - 4.3756500000000000e+04 -2 -3 2972 4.9450000000000000e+02 - - -1. 8.0944263935089111e-01 -3.8900658488273621e-01 - 1.6393135488033295e-01 - <_> - 9.2899009704589844e+01 - - 1 2 2973 2.5000000000000000e+00 0 -1 2974 - 1.4055000000000000e+03 -2 -3 2975 1.8500000000000000e+01 - - 1.6320782899856567e-01 -5.9554386138916016e-01 - -7.9579621553421021e-01 3.4700983762741089e-01 - <_> - 9.2847854614257812e+01 - - 1 2 2976 8.5500000000000000e+01 0 -1 2977 - 1.2550000000000000e+02 -2 -3 2978 5.5000000000000000e+00 - - -1. 9.6116375923156738e-01 2.2865201532840729e-01 - -2.7930772304534912e-01 - <_> - 9.2859100341796875e+01 - - 1 2 2979 1.1350000000000000e+02 0 -1 2980 - 2.0500000000000000e+01 -2 -3 2981 1.6150000000000000e+02 - - 1.7545458674430847e-01 -7.0411294698715210e-01 - 3.2774302363395691e-01 -6.4024138450622559e-01 - <_> - 9.2426673889160156e+01 - - 1 2 2982 2.5000000000000000e+00 0 -1 2983 - 2.7500000000000000e+01 -2 -3 2984 1.0350000000000000e+02 - - 6.4859634637832642e-01 -6.6807705163955688e-01 - 2.5129410624504089e-01 -4.3242052197456360e-01 - <_> - 9.2854904174804688e+01 - - 1 2 2985 3.0050000000000000e+02 0 -1 2986 333. -2 -3 2987 - 3.2045000000000000e+03 - - -3.9532727003097534e-01 8.3435887098312378e-01 - 4.2823007702827454e-01 -3.9525333046913147e-01 - <_> - 9.3196861267089844e+01 - - 1 2 2988 2.5000000000000000e+00 0 -1 2989 - 6.5000000000000000e+00 -2 -3 2990 4.8895000000000000e+03 - - -8.9721941947937012e-01 3.4195712208747864e-01 - 6.4947992563247681e-01 -4.5169207453727722e-01 - <_> - 9.3306480407714844e+01 - - 1 2 2991 2.7500000000000000e+01 0 -1 2992 - 1.5000000000000000e+00 -2 -3 2993 4.5000000000000000e+00 - - 1.0962056368589401e-01 -4.2897370457649231e-01 - 9.1374301910400391e-01 -6.3376551866531372e-01 - <_> - 9.3460906982421875e+01 - - 1 2 2994 1.0500000000000000e+01 0 -1 2995 - 3.5000000000000000e+00 -2 -3 2996 3.5000000000000000e+00 - - 2.2791311144828796e-01 -5.2986472845077515e-01 - 4.5877307653427124e-01 -1.7966294288635254e-01 - <_> - 9.3358589172363281e+01 - - 1 2 2997 3.4500000000000000e+01 0 -1 2998 222. -2 -3 2999 - 2.0750000000000000e+02 - - 7.5331348180770874e-01 -9.4210654497146606e-01 - -1.0231721401214600e-01 4.7118717432022095e-01 - <_> - 9.3666183471679688e+01 - - 1 2 3000 2.2500000000000000e+01 0 -1 3001 - 1.8450000000000000e+02 -2 -3 3002 2.5000000000000000e+00 - - -3.5824659466743469e-01 3.0759900808334351e-01 - 6.4143782854080200e-01 -6.5782296657562256e-01 - <_> - 9.3088340759277344e+01 - - 1 2 3003 1.3350000000000000e+02 0 -1 3004 830. -2 -3 3005 - 2.4500000000000000e+01 - - -6.9563269615173340e-01 6.3497310876846313e-01 - -5.7784938812255859e-01 6.1700064688920975e-02 - <_> - 9.2995674133300781e+01 - - 1 2 3006 4.5500000000000000e+01 0 -1 3007 - 1.5000000000000000e+00 -2 -3 3008 6.6500000000000000e+01 - - 4.5369678735733032e-01 -9.2660412192344666e-02 - -7.4712693691253662e-01 6.0710644721984863e-01 - <_> - 9.2739532470703125e+01 - - 1 2 3009 1.2950000000000000e+02 0 -1 3010 1144. -2 -3 3011 - 4.2850000000000000e+02 - - -7.0763772726058960e-01 9.4605678319931030e-01 - -2.5614449381828308e-01 4.1044127941131592e-01 - <_> - 9.2615875244140625e+01 - - 1 2 3012 2.3500000000000000e+01 0 -1 3013 36. -2 -3 3014 - 5.0000000000000000e-01 - - 8.3025622367858887e-01 -8.2933390140533447e-01 - 4.6695771813392639e-01 -1.2365625053644180e-01 - <_> - 9.3196029663085938e+01 - - 1 2 3015 2.0450000000000000e+02 0 -1 3016 - 1.0500000000000000e+01 -2 -3 3017 524. - - -1.5761210024356842e-01 5.8015257120132446e-01 - -8.8289064168930054e-01 2.2438578307628632e-01 - <_> - 9.3732429504394531e+01 - - 1 2 3018 3.3500000000000000e+01 0 -1 3019 - 1.8500000000000000e+01 -2 -3 3020 6.6500000000000000e+01 - - 4.8793593049049377e-01 -5.8576709032058716e-01 - 5.3640323877334595e-01 -8.2473360002040863e-02 - <_> - 9.3099838256835938e+01 - - 1 2 3021 1.3500000000000000e+01 0 -1 3022 - 5.0000000000000000e-01 -2 -3 3023 1.4500000000000000e+01 - - 3.0108803510665894e-01 -6.3259094953536987e-01 - -7.1200174093246460e-01 2.7906426787376404e-01 - <_> - 9.3105216979980469e+01 - - 1 2 3024 3.9050000000000000e+02 0 -1 3025 1243. -2 -3 3026 - 4.2050000000000000e+02 - - -8.8503718376159668e-01 9.7225552797317505e-01 - 5.3784158080816269e-03 -7.7111572027206421e-01 - <_> - 9.3588562011718750e+01 - - 1 2 3027 1.2850000000000000e+02 0 -1 3028 - 9.5000000000000000e+00 -2 -3 3029 3.5000000000000000e+00 - - 3.3606645464897156e-01 -5.4860621690750122e-01 - 4.8334029316902161e-01 -1.3527640700340271e-01 - <_> - 9.3835968017578125e+01 - - 1 2 3030 4.5000000000000000e+00 0 -1 3031 - 4.5000000000000000e+00 -2 -3 3032 1.3415000000000000e+03 - - -7.8450918197631836e-01 1.6970160603523254e-01 - -5.8498537540435791e-01 2.4740667641162872e-01 - <_> - 9.4142906188964844e+01 - - 1 2 3033 4.3500000000000000e+01 0 -1 3034 - 4.5000000000000000e+00 -2 -3 3035 3.2500000000000000e+01 - - 3.0693769454956055e-01 -2.6115962862968445e-01 - -8.9926475286483765e-01 7.7170163393020630e-01 - <_> - 9.4121742248535156e+01 - - 1 2 3036 3.3500000000000000e+01 0 -1 3037 5772. -2 -3 3038 - 8.2650000000000000e+02 - - 6.0314506292343140e-01 -8.1919574737548828e-01 - -2.1161338314414024e-02 7.4580943584442139e-01 - <_> - 9.3867355346679688e+01 - - 1 2 3039 1.5000000000000000e+00 0 -1 3040 - 2.5000000000000000e+00 -2 -3 3041 7.6500000000000000e+01 - - -1. 6.5151697397232056e-01 -2.5439009070396423e-01 - 4.9923765659332275e-01 - <_> - 9.4093467712402344e+01 - - 1 2 3042 7584. 0 -1 3043 5.1250000000000000e+02 -2 -3 3044 - 1.1500000000000000e+01 - - -4.7158271074295044e-01 2.2611454129219055e-01 - -8.3964759111404419e-01 4.5222747325897217e-01 - <_> - 9.4337669372558594e+01 - - 1 2 3045 1.5625000000000000e+03 0 -1 3046 - 1.0615000000000000e+03 -2 -3 3047 2.5000000000000000e+00 - - -1. 9.3781590461730957e-01 2.4420407414436340e-01 - -2.9586532711982727e-01 - <_> - 9.4508171081542969e+01 - - 1 2 3048 1.3500000000000000e+01 0 -1 3049 23. -2 -3 3050 - 1.5245000000000000e+03 - - -8.5904693603515625e-01 1.7050011456012726e-01 - 9.2488127946853638e-01 -9.8964858055114746e-01 - <_> - 9.4239341735839844e+01 - - 1 2 3051 5.0000000000000000e-01 0 -1 3052 - 5.5000000000000000e+00 -2 -3 3053 1.8500000000000000e+01 - - -8.7914295494556427e-02 5.4742050170898438e-01 - -4.5447856187820435e-01 4.4385817646980286e-01 - <_> - 9.4594245910644531e+01 - - 1 2 3054 1.5000000000000000e+00 0 -1 3055 - 1.5500000000000000e+01 -2 -3 3056 1.1500000000000000e+01 - - 3.5490357875823975e-01 -4.3068945407867432e-01 - -6.6280466318130493e-01 3.0311322771012783e-03 - <_> - 9.4814491271972656e+01 - - 1 2 3057 3.5000000000000000e+00 0 -1 3058 - 5.0000000000000000e-01 -2 -3 3059 4.0550000000000000e+02 - - 7.0450115203857422e-01 -7.8278595209121704e-01 - 2.2024388611316681e-01 -4.0765863656997681e-01 - <_> - 9.4579345703125000e+01 - - 1 2 3060 1.5500000000000000e+01 0 -1 3061 - 1.5000000000000000e+00 -2 -3 3062 1934. - - 1.5189912915229797e-01 -4.7490403056144714e-01 - -2.3514933884143829e-01 6.0529416799545288e-01 - <_> - 9.4922325134277344e+01 - - 1 2 3063 5.0000000000000000e-01 0 -1 3064 - 3.0500000000000000e+01 -2 -3 3065 1.1500000000000000e+01 - - -3.8056674599647522e-01 5.7760846614837646e-01 - -4.7326391935348511e-01 1.4074583351612091e-01 - <_> - 9.5195831298828125e+01 - - 1 2 3066 2.7500000000000000e+01 0 -1 3067 - 1.5500000000000000e+01 -2 -3 3068 1.3500000000000000e+01 - - -3.2090973854064941e-01 2.7350622415542603e-01 - 1.3395747169852257e-02 -8.1775778532028198e-01 - <_> - 9.5786506652832031e+01 - - 1 2 3069 4.5000000000000000e+00 0 -1 3070 - 4.3500000000000000e+01 -2 -3 3071 1.0235000000000000e+03 - - -2.7497810125350952e-01 5.9067696332931519e-01 - -5.4431802034378052e-01 7.7079035341739655e-02 - - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 4 18 5 10 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 6 22 6 6 - <_> - 4 - - 6 19 4 5 - <_> - 1 - - 6 27 5 2 - <_> - 7 - - 7 5 2 1 - <_> - 4 - - 4 9 8 22 - <_> - 5 - - 8 4 5 9 - <_> - 2 - - 8 6 4 4 - <_> - 9 - - 7 19 2 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 6 18 5 7 - <_> - 9 - - 7 14 2 3 - <_> - 4 - - 0 18 12 13 - <_> - 1 - - 4 26 7 3 - <_> - 7 - - 0 28 13 3 - <_> - 1 - - 5 10 6 1 - <_> - 1 - - 1 3 10 7 - <_> - 4 - - 0 30 15 1 - <_> - 2 - - 4 12 3 16 - <_> - 0 - - 4 28 8 2 - <_> - 5 - - 3 28 11 3 - <_> - 4 - - 3 10 9 19 - <_> - 3 - - 1 3 7 10 - <_> - 7 - - 8 12 1 1 - <_> - 0 - - 7 10 2 4 - <_> - 0 - - 8 14 4 11 - <_> - 3 - - 0 11 2 20 - <_> - 1 - - 7 4 2 4 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 2 2 11 8 - <_> - 4 - - 6 18 1 4 - <_> - 1 - - 1 16 5 12 - <_> - 2 - - 7 21 3 7 - <_> - 2 - - 8 30 7 1 - <_> - 5 - - 6 26 7 2 - <_> - 7 - - 14 28 1 2 - <_> - 9 - - 7 12 2 1 - <_> - 9 - - 3 1 12 1 - <_> - 9 - - 7 19 3 3 - <_> - 7 - - 6 5 9 3 - <_> - 3 - - 3 28 2 2 - <_> - 9 - - 5 1 3 3 - <_> - 3 - - 5 8 1 18 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 1 12 25 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 9 2 15 - <_> - 3 - - 13 21 2 9 - <_> - 7 - - 4 29 8 2 - <_> - 1 - - 5 11 6 17 - <_> - 7 - - 12 24 1 6 - <_> - 8 - - 7 12 2 1 - <_> - 0 - - 8 9 4 2 - <_> - 5 - - 7 10 6 3 - <_> - 0 - - 1 4 9 4 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 9 10 3 - <_> - 0 - - 2 28 13 1 - <_> - 0 - - 6 24 4 4 - <_> - 2 - - 6 16 4 1 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 5 29 5 1 - <_> - 9 - - 7 15 3 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 7 22 2 2 - <_> - 0 - - 13 21 2 1 - <_> - 4 - - 6 4 5 3 - <_> - 4 - - 0 9 15 17 - <_> - 3 - - 4 1 5 30 - <_> - 3 - - 6 15 3 1 - <_> - 5 - - 8 5 3 2 - <_> - 5 - - 0 0 15 1 - <_> - 1 - - 6 27 3 2 - <_> - 5 - - 1 29 2 2 - <_> - 7 - - 0 27 3 4 - <_> - 4 - - 9 13 6 18 - <_> - 1 - - 3 7 12 1 - <_> - 9 - - 5 23 8 1 - <_> - 7 - - 12 30 3 1 - <_> - 3 - - 12 27 2 1 - <_> - 7 - - 5 13 1 2 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 14 13 1 16 - <_> - 0 - - 5 5 8 2 - <_> - 9 - - 9 14 1 1 - <_> - 5 - - 9 13 3 12 - <_> - 5 - - 9 30 6 1 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 3 12 9 7 - <_> - 4 - - 9 7 1 24 - <_> - 2 - - 8 8 4 1 - <_> - 2 - - 8 19 2 10 - <_> - 3 - - 2 13 2 15 - <_> - 2 - - 0 28 15 1 - <_> - 2 - - 3 26 8 2 - <_> - 3 - - 4 28 7 1 - <_> - 3 - - 11 23 1 3 - <_> - 0 - - 9 15 4 16 - <_> - 1 - - 2 7 9 2 - <_> - 4 - - 6 22 3 3 - <_> - 3 - - 5 5 1 25 - <_> - 1 - - 2 20 12 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 1 30 13 1 - <_> - 4 - - 3 16 12 4 - <_> - 8 - - 6 5 4 2 - <_> - 8 - - 2 23 12 1 - <_> - 4 - - 1 29 9 2 - <_> - 4 - - 9 6 4 14 - <_> - 7 - - 0 4 3 16 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 1 0 13 1 - <_> - 5 - - 3 5 10 8 - <_> - 5 - - 7 7 2 7 - <_> - 5 - - 6 28 5 2 - <_> - 3 - - 2 24 7 4 - <_> - 4 - - 6 1 3 17 - <_> - 0 - - 1 21 1 5 - <_> - 0 - - 1 11 6 5 - <_> - 9 - - 0 30 15 1 - <_> - 8 - - 2 30 8 1 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 2 24 12 2 - <_> - 9 - - 1 13 1 3 - <_> - 7 - - 7 5 2 1 - <_> - 9 - - 6 10 2 3 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 6 17 2 3 - <_> - 1 - - 6 27 4 4 - <_> - 2 - - 5 18 5 10 - <_> - 2 - - 14 0 1 29 - <_> - 5 - - 2 20 3 9 - <_> - 1 - - 5 27 6 1 - <_> - 4 - - 7 30 2 1 - <_> - 4 - - 5 24 5 6 - <_> - 4 - - 3 9 12 2 - <_> - 5 - - 9 7 4 20 - <_> - 7 - - 10 10 3 1 - <_> - 3 - - 2 28 13 3 - <_> - 5 - - 14 22 1 7 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 8 15 2 4 - <_> - 0 - - 7 19 4 9 - <_> - 4 - - 7 11 1 8 - <_> - 4 - - 2 11 13 11 - <_> - 4 - - 6 4 4 6 - <_> - 8 - - 4 22 2 6 - <_> - 4 - - 7 19 2 2 - <_> - 9 - - 6 4 3 6 - <_> - 4 - - 2 29 8 1 - <_> - 3 - - 1 9 6 16 - <_> - 7 - - 8 3 3 2 - <_> - 5 - - 6 12 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 7 - - 1 25 2 4 - <_> - 4 - - 6 1 3 17 - <_> - 1 - - 5 11 4 3 - <_> - 5 - - 9 9 5 4 - <_> - 9 - - 6 14 3 4 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 2 5 6 8 - <_> - 2 - - 6 10 3 1 - <_> - 1 - - 9 26 5 3 - <_> - 0 - - 1 30 8 1 - <_> - 1 - - 9 22 1 3 - <_> - 2 - - 5 6 7 18 - <_> - 2 - - 11 6 1 14 - <_> - 3 - - 1 4 2 21 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 13 17 2 1 - <_> - 8 - - 8 24 6 2 - <_> - 7 - - 4 5 5 5 - <_> - 2 - - 4 25 9 3 - <_> - 4 - - 0 29 12 1 - <_> - 5 - - 1 28 9 3 - <_> - 1 - - 6 20 4 3 - <_> - 0 - - 5 25 4 1 - <_> - 1 - - 9 9 2 1 - <_> - 1 - - 3 6 9 4 - <_> - 3 - - 5 8 1 18 - <_> - 5 - - 0 19 2 7 - <_> - 3 - - 3 18 11 4 - <_> - 5 - - 5 12 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 3 - - 6 5 3 1 - <_> - 1 - - 6 7 6 2 - <_> - 3 - - 0 27 13 2 - <_> - 4 - - 2 9 12 3 - <_> - 4 - - 10 24 4 2 - <_> - 9 - - 0 22 11 1 - <_> - 9 - - 1 0 14 14 - <_> - 9 - - 7 9 2 7 - <_> - 1 - - 4 27 4 1 - <_> - 2 - - 9 28 4 3 - <_> - 8 - - 6 6 2 17 - <_> - 2 - - 5 23 9 4 - <_> - 0 - - 10 9 4 3 - <_> - 2 - - 6 13 3 2 - <_> - 4 - - 13 29 2 2 - <_> - 5 - - 8 5 3 4 - <_> - 4 - - 13 8 1 1 - <_> - 7 - - 4 30 11 1 - <_> - 3 - - 8 15 3 15 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 1 5 8 6 - <_> - 7 - - 13 0 2 3 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 10 9 1 2 - <_> - 3 - - 7 10 3 13 - <_> - 5 - - 3 26 9 1 - <_> - 4 - - 2 0 13 4 - <_> - 4 - - 5 0 4 8 - <_> - 2 - - 11 23 4 3 - <_> - 5 - - 10 9 3 13 - <_> - 9 - - 9 10 1 1 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 0 17 1 5 - <_> - 5 - - 5 28 8 2 - <_> - 4 - - 2 10 5 8 - <_> - 0 - - 2 29 6 2 - <_> - 0 - - 6 21 5 7 - <_> - 0 - - 3 22 2 5 - <_> - 3 - - 0 6 5 25 - <_> - 9 - - 5 1 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 5 10 1 2 - <_> - 8 - - 3 5 7 8 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 4 12 3 16 - <_> - 5 - - 11 5 1 21 - <_> - 0 - - 4 7 2 4 - <_> - 7 - - 7 12 2 3 - <_> - 0 - - 6 6 8 25 - <_> - 2 - - 8 30 6 1 - <_> - 5 - - 9 25 5 2 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 13 3 1 19 - <_> - 7 - - 0 27 15 2 - <_> - 1 - - 7 3 2 6 - <_> - 7 - - 10 13 1 7 - <_> - 4 - - 3 12 8 19 - <_> - 5 - - 8 5 5 10 - <_> - 4 - - 6 0 2 8 - <_> - 5 - - 8 0 4 3 - <_> - 9 - - 3 3 10 2 - <_> - 3 - - 12 20 2 5 - <_> - 9 - - 7 17 2 1 - <_> - 5 - - 1 30 5 1 - <_> - 3 - - 3 0 8 6 - <_> - 0 - - 6 24 4 4 - <_> - 3 - - 7 14 1 2 - <_> - 4 - - 5 6 9 5 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 4 18 5 10 - <_> - 1 - - 4 18 11 3 - <_> - 0 - - 4 28 10 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 11 15 1 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 9 30 2 1 - <_> - 1 - - 4 17 6 12 - <_> - 2 - - 0 6 10 4 - <_> - 2 - - 5 1 1 4 - <_> - 0 - - 6 0 2 8 - <_> - 2 - - 3 10 4 1 - <_> - 4 - - 1 30 12 1 - <_> - 1 - - 4 27 9 1 - <_> - 7 - - 11 25 2 1 - <_> - 1 - - 7 19 2 7 - <_> - 4 - - 12 26 3 5 - <_> - 5 - - 2 5 10 22 - <_> - 7 - - 7 5 4 3 - <_> - 4 - - 2 25 13 3 - <_> - 2 - - 6 18 3 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 17 7 12 - <_> - 0 - - 12 21 2 1 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 0 2 17 - <_> - 5 - - 9 29 6 1 - <_> - 2 - - 6 26 7 1 - <_> - 9 - - 6 8 3 4 - <_> - 8 - - 6 5 4 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 0 30 15 1 - <_> - 0 - - 7 13 2 4 - <_> - 3 - - 3 10 8 4 - <_> - 0 - - 1 14 2 1 - <_> - 1 - - 6 28 5 1 - <_> - 5 - - 10 7 3 7 - <_> - 1 - - 3 29 3 1 - <_> - 3 - - 1 22 2 8 - <_> - 3 - - 4 25 2 5 - <_> - 3 - - 4 5 3 4 - <_> - 2 - - 6 1 2 4 - <_> - 4 - - 3 14 7 14 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 3 9 2 14 - <_> - 4 - - 2 29 9 1 - <_> - 7 - - 12 30 3 1 - <_> - 9 - - 6 12 4 5 - <_> - 9 - - 1 0 14 3 - <_> - 1 - - 7 4 2 4 - <_> - 2 - - 6 18 4 9 - <_> - 7 - - 3 13 1 2 - <_> - 2 - - 4 13 11 12 - <_> - 8 - - 6 13 4 1 - <_> - 1 - - 6 11 5 2 - <_> - 8 - - 11 16 2 2 - <_> - 1 - - 4 20 3 11 - <_> - 5 - - 2 28 7 2 - <_> - 1 - - 10 29 2 1 - <_> - 9 - - 13 25 2 3 - <_> - 9 - - 6 19 1 5 - <_> - 5 - - 9 29 2 2 - <_> - 2 - - 5 5 10 3 - <_> - 7 - - 0 10 2 8 - <_> - 2 - - 0 30 4 1 - <_> - 7 - - 9 29 6 2 - <_> - 3 - - 8 2 1 29 - <_> - 4 - - 1 0 10 23 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 6 9 - <_> - 8 - - 7 9 2 1 - <_> - 1 - - 7 28 4 1 - <_> - 3 - - 1 10 12 1 - <_> - 5 - - 7 8 1 19 - <_> - 4 - - 3 30 10 1 - <_> - 3 - - 4 4 1 11 - <_> - 0 - - 7 18 3 4 - <_> - 4 - - 7 7 4 5 - <_> - 7 - - 11 1 1 12 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 10 11 5 12 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 4 19 7 9 - <_> - 1 - - 0 0 15 1 - <_> - 3 - - 4 5 6 2 - <_> - 3 - - 11 20 1 3 - <_> - 3 - - 5 0 8 15 - <_> - 4 - - 10 11 1 12 - <_> - 0 - - 6 16 7 11 - <_> - 5 - - 6 6 1 25 - <_> - 5 - - 3 22 2 4 - <_> - 5 - - 0 7 13 16 - <_> - 4 - - 6 21 4 1 - <_> - 4 - - 5 1 6 5 - <_> - 4 - - 5 0 8 27 - <_> - 1 - - 4 26 6 3 - <_> - 7 - - 8 9 1 1 - <_> - 0 - - 1 28 11 3 - <_> - 3 - - 2 22 1 2 - <_> - 0 - - 7 9 1 6 - <_> - 3 - - 4 9 4 20 - <_> - 5 - - 3 8 1 21 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 4 7 4 1 - <_> - 9 - - 10 9 2 7 - <_> - 2 - - 11 6 1 18 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 5 29 6 2 - <_> - 8 - - 8 3 1 1 - <_> - 3 - - 8 17 1 5 - <_> - 3 - - 2 28 12 2 - <_> - 0 - - 0 8 1 5 - <_> - 3 - - 3 23 4 4 - <_> - 1 - - 13 2 2 7 - <_> - 8 - - 5 6 10 2 - <_> - 0 - - 7 18 6 10 - <_> - 3 - - 12 17 3 14 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 0 4 1 - <_> - 0 - - 9 9 4 1 - <_> - 9 - - 4 5 6 13 - <_> - 0 - - 5 3 6 6 - <_> - 9 - - 5 22 6 4 - <_> - 0 - - 11 4 1 1 - <_> - 7 - - 14 1 1 19 - <_> - 4 - - 8 17 3 1 - <_> - 5 - - 9 13 4 6 - <_> - 5 - - 9 2 3 22 - <_> - 0 - - 0 28 8 1 - <_> - 4 - - 6 4 5 3 - <_> - 5 - - 14 10 1 14 - <_> - 5 - - 7 24 5 4 - <_> - 3 - - 10 18 1 8 - <_> - 5 - - 8 30 6 1 - <_> - 2 - - 6 26 6 2 - <_> - 1 - - 4 10 4 2 - <_> - 3 - - 5 8 1 18 - <_> - 4 - - 8 29 7 1 - <_> - 7 - - 13 28 1 1 - <_> - 1 - - 7 28 3 1 - <_> - 7 - - 2 25 4 4 - <_> - 4 - - 12 30 3 1 - <_> - 4 - - 7 19 3 7 - <_> - 5 - - 9 8 5 7 - <_> - 5 - - 2 19 1 5 - <_> - 1 - - 2 22 5 8 - <_> - 1 - - 3 24 2 2 - <_> - 0 - - 6 29 1 2 - <_> - 9 - - 5 28 2 1 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 4 28 6 1 - <_> - 0 - - 3 7 5 22 - <_> - 7 - - 2 8 9 1 - <_> - 3 - - 6 17 1 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 3 0 6 4 - <_> - 9 - - 7 13 1 1 - <_> - 2 - - 4 22 3 1 - <_> - 9 - - 8 19 1 2 - <_> - 8 - - 10 15 4 3 - <_> - 5 - - 9 10 3 3 - <_> - 3 - - 9 3 6 4 - <_> - 4 - - 1 12 11 18 - <_> - 5 - - 1 28 4 3 - <_> - 3 - - 1 3 8 14 - <_> - 4 - - 7 11 1 8 - <_> - 0 - - 7 9 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 5 1 4 3 - <_> - 4 - - 5 18 5 2 - <_> - 5 - - 2 18 11 3 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 13 4 1 25 - <_> - 2 - - 13 19 2 4 - <_> - 9 - - 4 0 7 4 - <_> - 1 - - 8 27 1 2 - <_> - 4 - - 3 29 11 1 - <_> - 4 - - 6 26 4 4 - <_> - 0 - - 7 17 5 10 - <_> - 9 - - 2 30 1 1 - <_> - 7 - - 12 18 3 13 - <_> - 4 - - 6 22 3 3 - <_> - 1 - - 5 25 3 6 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 4 9 4 2 - <_> - 8 - - 4 25 1 2 - <_> - 4 - - 4 9 8 5 - <_> - 5 - - 8 5 5 8 - <_> - 4 - - 3 28 9 1 - <_> - 2 - - 7 29 7 2 - <_> - 2 - - 6 19 5 12 - <_> - 4 - - 14 23 1 4 - <_> - 5 - - 6 17 2 3 - <_> - 2 - - 3 17 5 7 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 2 3 11 3 - <_> - 1 - - 4 28 4 1 - <_> - 9 - - 6 7 2 6 - <_> - 8 - - 6 6 1 2 - <_> - 2 - - 14 17 1 13 - <_> - 8 - - 3 0 6 5 - <_> - 2 - - 7 24 3 3 - <_> - 4 - - 1 28 11 3 - <_> - 2 - - 6 27 5 4 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 4 4 3 9 - <_> - 8 - - 6 0 3 3 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 6 14 5 4 - <_> - 3 - - 0 9 1 18 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 7 12 8 6 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 3 9 3 1 - <_> - 4 - - 3 15 11 14 - <_> - 1 - - 6 11 6 1 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 7 14 3 3 - <_> - 4 - - 3 11 4 9 - <_> - 2 - - 8 7 1 11 - <_> - 7 - - 0 12 9 10 - <_> - 7 - - 0 27 10 1 - <_> - 0 - - 6 5 3 18 - <_> - 5 - - 4 28 5 3 - <_> - 2 - - 4 9 8 22 - <_> - 7 - - 7 17 1 2 - <_> - 2 - - 6 13 4 2 - <_> - 0 - - 5 5 6 3 - <_> - 7 - - 8 13 3 14 - <_> - 0 - - 10 0 2 5 - <_> - 1 - - 3 28 8 1 - <_> - 4 - - 12 7 1 24 - <_> - 7 - - 1 28 2 2 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 6 18 5 4 - <_> - 4 - - 11 6 4 2 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 14 0 1 28 - <_> - 5 - - 9 27 6 3 - <_> - 8 - - 0 4 4 27 - <_> - 0 - - 5 28 8 1 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 10 4 9 - <_> - 5 - - 5 0 2 5 - <_> - 4 - - 4 4 6 5 - <_> - 4 - - 2 29 9 1 - <_> - 1 - - 5 26 7 3 - <_> - 2 - - 2 20 2 4 - <_> - 0 - - 6 17 7 12 - <_> - 3 - - 10 25 5 6 - <_> - 3 - - 10 17 1 10 - <_> - 2 - - 0 0 12 28 - <_> - 5 - - 9 8 5 7 - <_> - 4 - - 3 12 9 16 - <_> - 0 - - 13 22 2 4 - <_> - 3 - - 6 0 5 11 - <_> - 1 - - 0 2 8 2 - <_> - 1 - - 6 7 6 2 - <_> - 8 - - 8 3 1 5 - <_> - 4 - - 8 2 4 13 - <_> - 9 - - 8 10 1 7 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 11 28 2 1 - <_> - 0 - - 9 4 1 24 - <_> - 0 - - 5 28 4 2 - <_> - 4 - - 7 0 2 18 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 7 7 6 14 - <_> - 4 - - 6 25 3 5 - <_> - 4 - - 5 13 2 5 - <_> - 3 - - 3 24 8 3 - <_> - 8 - - 5 20 2 2 - <_> - 3 - - 1 22 2 8 - <_> - 1 - - 2 27 8 2 - <_> - 7 - - 10 28 5 1 - <_> - 4 - - 7 20 3 5 - <_> - 4 - - 8 26 2 2 - <_> - 0 - - 5 24 4 3 - <_> - 4 - - 12 30 3 1 - <_> - 2 - - 4 24 6 4 - <_> - 2 - - 12 10 3 7 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 1 - - 11 23 3 8 - <_> - 2 - - 8 10 1 5 - <_> - 2 - - 11 0 2 15 - <_> - 1 - - 11 20 1 3 - <_> - 3 - - 3 8 5 16 - <_> - 7 - - 7 5 2 1 - <_> - 3 - - 0 19 4 10 - <_> - 1 - - 6 22 1 2 - <_> - 3 - - 4 27 11 2 - <_> - 9 - - 10 10 3 1 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 8 8 2 1 - <_> - 8 - - 1 26 11 2 - <_> - 7 - - 4 30 11 1 - <_> - 1 - - 3 18 11 12 - <_> - 2 - - 0 0 12 28 - <_> - 0 - - 13 8 2 6 - <_> - 1 - - 3 22 4 7 - <_> - 2 - - 2 30 8 1 - <_> - 9 - - 9 19 1 6 - <_> - 7 - - 3 16 9 4 - <_> - 9 - - 5 1 2 1 - <_> - 2 - - 7 9 5 1 - <_> - 4 - - 3 28 9 3 - <_> - 5 - - 5 0 6 2 - <_> - 5 - - 8 5 5 10 - <_> - 9 - - 5 17 7 4 - <_> - 2 - - 4 25 9 3 - <_> - 2 - - 9 16 2 2 - <_> - 5 - - 10 9 3 19 - <_> - 1 - - 4 10 7 4 - <_> - 0 - - 13 24 2 7 - <_> - 0 - - 7 24 3 5 - <_> - 4 - - 4 3 6 4 - <_> - 4 - - 11 15 2 5 - <_> - 0 - - 11 13 1 10 - <_> - 1 - - 1 25 1 5 - <_> - 5 - - 11 22 1 2 - <_> - 1 - - 8 26 1 4 - <_> - 3 - - 8 18 1 1 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 14 24 1 2 - <_> - 8 - - 11 6 1 3 - <_> - 2 - - 5 4 5 1 - <_> - 2 - - 6 3 4 7 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 7 1 5 - <_> - 0 - - 0 10 9 3 - <_> - 0 - - 4 4 7 7 - <_> - 5 - - 4 28 9 2 - <_> - 2 - - 6 17 6 12 - <_> - 0 - - 13 25 1 3 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 5 6 7 2 - <_> - 0 - - 5 10 4 2 - <_> - 1 - - 7 19 2 6 - <_> - 4 - - 5 13 6 9 - <_> - 1 - - 6 17 4 1 - <_> - 7 - - 2 28 6 1 - <_> - 0 - - 11 21 3 6 - <_> - 4 - - 13 29 2 2 - <_> - 3 - - 4 3 3 18 - <_> - 7 - - 7 5 4 3 - <_> - 7 - - 1 0 3 10 - <_> - 2 - - 6 12 3 1 - <_> - 5 - - 1 11 14 3 - <_> - 0 - - 6 15 3 1 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 0 11 3 - <_> - 8 - - 11 18 4 2 - <_> - 4 - - 4 26 7 2 - <_> - 2 - - 5 28 10 3 - <_> - 2 - - 4 5 7 2 - <_> - 4 - - 6 29 5 2 - <_> - 1 - - 5 28 6 2 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 3 17 6 7 - <_> - 3 - - 8 25 1 1 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 3 0 6 13 - <_> - 3 - - 7 6 3 11 - <_> - 7 - - 8 1 7 14 - <_> - 5 - - 3 26 8 2 - <_> - 2 - - 7 12 6 15 - <_> - 0 - - 7 8 1 7 - <_> - 8 - - 14 0 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 1 30 2 1 - <_> - 7 - - 3 28 1 1 - <_> - 0 - - 5 25 4 1 - <_> - 3 - - 5 28 3 2 - <_> - 0 - - 9 12 3 19 - <_> - 3 - - 1 16 2 9 - <_> - 3 - - 11 24 3 1 - <_> - 1 - - 4 22 7 1 - <_> - 5 - - 10 7 2 20 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 4 28 9 2 - <_> - 5 - - 11 29 1 1 - <_> - 9 - - 1 0 14 3 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 8 13 2 5 - <_> - 4 - - 9 17 5 14 - <_> - 1 - - 7 27 8 2 - <_> - 4 - - 5 24 1 2 - <_> - 2 - - 5 18 6 10 - <_> - 7 - - 9 3 1 26 - <_> - 2 - - 8 16 2 3 - <_> - 8 - - 8 4 2 8 - <_> - 8 - - 6 6 1 2 - <_> - 8 - - 11 5 1 3 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 4 9 3 22 - <_> - 5 - - 10 19 3 1 - <_> - 1 - - 8 4 2 5 - <_> - 4 - - 7 4 3 1 - <_> - 4 - - 5 0 7 10 - <_> - 1 - - 5 9 6 4 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 4 8 2 2 - <_> - 5 - - 1 25 2 6 - <_> - 3 - - 3 9 4 6 - <_> - 7 - - 7 24 6 7 - <_> - 9 - - 6 20 1 3 - <_> - 8 - - 7 5 6 4 - <_> - 8 - - 1 10 14 3 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 5 3 4 - <_> - 8 - - 5 19 7 1 - <_> - 7 - - 6 3 4 1 - <_> - 5 - - 12 25 2 2 - <_> - 2 - - 7 14 6 12 - <_> - 2 - - 5 30 8 1 - <_> - 2 - - 3 26 8 2 - <_> - 2 - - 9 19 5 1 - <_> - 4 - - 9 13 2 11 - <_> - 1 - - 6 27 4 4 - <_> - 1 - - 6 4 2 6 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 0 5 3 - <_> - 8 - - 5 28 8 1 - <_> - 9 - - 6 12 3 2 - <_> - 1 - - 0 2 12 24 - <_> - 8 - - 6 11 3 4 - <_> - 4 - - 4 3 4 6 - <_> - 7 - - 4 3 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 0 - - 7 28 1 3 - <_> - 0 - - 6 16 7 11 - <_> - 4 - - 1 22 5 4 - <_> - 0 - - 1 28 12 1 - <_> - 4 - - 5 12 8 15 - <_> - 4 - - 1 27 5 4 - <_> - 2 - - 6 18 4 11 - <_> - 3 - - 13 20 1 10 - <_> - 7 - - 5 29 6 1 - <_> - 1 - - 7 24 2 2 - <_> - 9 - - 3 3 10 2 - <_> - 0 - - 6 8 1 2 - <_> - 9 - - 4 9 4 2 - <_> - 5 - - 10 12 1 15 - <_> - 5 - - 10 7 1 7 - <_> - 5 - - 6 17 2 3 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 6 3 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 7 9 2 1 - <_> - 5 - - 13 22 2 9 - <_> - 2 - - 6 25 4 2 - <_> - 7 - - 10 29 1 2 - <_> - 5 - - 5 29 8 1 - <_> - 5 - - 9 12 3 16 - <_> - 9 - - 6 16 4 2 - <_> - 7 - - 7 6 2 2 - <_> - 4 - - 7 0 2 18 - <_> - 2 - - 1 10 7 5 - <_> - 1 - - 4 10 5 1 - <_> - 0 - - 4 2 3 11 - <_> - 9 - - 11 17 1 1 - <_> - 3 - - 0 26 1 3 - <_> - 5 - - 4 1 3 5 - <_> - 0 - - 13 11 2 4 - <_> - 2 - - 8 23 2 3 - <_> - 4 - - 1 30 3 1 - <_> - 7 - - 5 30 2 1 - <_> - 3 - - 5 0 1 27 - <_> - 2 - - 9 24 4 6 - <_> - 5 - - 6 15 1 8 - <_> - 1 - - 5 26 6 2 - <_> - 0 - - 9 15 1 13 - <_> - 4 - - 3 20 10 1 - <_> - 4 - - 4 6 9 6 - <_> - 7 - - 2 1 5 5 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 6 12 3 1 - <_> - 0 - - 2 7 6 1 - <_> - 9 - - 12 2 1 4 - <_> - 8 - - 10 18 1 13 - <_> - 8 - - 6 5 4 2 - <_> - 0 - - 5 5 8 2 - <_> - 0 - - 7 0 5 14 - <_> - 4 - - 1 9 11 1 - <_> - 1 - - 0 4 14 6 - <_> - 0 - - 6 14 6 12 - <_> - 8 - - 7 3 1 5 - <_> - 0 - - 6 12 8 17 - <_> - 5 - - 5 28 6 1 - <_> - 5 - - 3 26 9 1 - <_> - 3 - - 6 5 4 2 - <_> - 3 - - 6 15 3 1 - <_> - 1 - - 9 8 3 14 - <_> - 7 - - 0 30 14 1 - <_> - 3 - - 4 6 11 5 - <_> - 7 - - 13 0 1 1 - <_> - 1 - - 11 25 2 6 - <_> - 3 - - 1 30 9 1 - <_> - 7 - - 4 27 5 1 - <_> - 5 - - 2 14 7 1 - <_> - 9 - - 3 13 5 6 - <_> - 5 - - 9 7 4 21 - <_> - 1 - - 6 4 2 6 - <_> - 0 - - 7 10 3 2 - <_> - 2 - - 3 12 4 14 - <_> - 9 - - 13 29 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 2 - - 4 28 11 1 - <_> - 4 - - 3 10 11 13 - <_> - 1 - - 5 27 6 4 - <_> - 5 - - 0 6 1 14 - <_> - 4 - - 6 29 1 1 - <_> - 2 - - 7 30 8 1 - <_> - 3 - - 3 9 3 18 - <_> - 4 - - 7 20 2 3 - <_> - 1 - - 4 15 8 4 - <_> - 2 - - 4 22 6 9 - <_> - 2 - - 3 28 5 2 - <_> - 0 - - 13 22 1 2 - <_> - 0 - - 9 17 5 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 9 5 1 - <_> - 8 - - 8 3 1 1 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 6 11 6 1 - <_> - 5 - - 9 3 4 10 - <_> - 8 - - 12 20 1 5 - <_> - 5 - - 4 0 9 11 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 12 25 2 1 - <_> - 3 - - 1 6 3 5 - <_> - 2 - - 12 24 2 2 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 6 26 7 2 - <_> - 2 - - 6 10 3 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 0 10 4 13 - <_> - 4 - - 6 4 5 3 - <_> - 0 - - 2 30 5 1 - <_> - 3 - - 3 0 5 13 - <_> - 4 - - 5 0 3 24 - <_> - 1 - - 11 20 3 8 - <_> - 2 - - 3 12 1 7 - <_> - 9 - - 7 17 2 3 - <_> - 9 - - 7 3 3 4 - <_> - 5 - - 2 29 13 2 - <_> - 9 - - 0 29 7 2 - <_> - 0 - - 5 21 5 6 - <_> - 9 - - 7 7 2 7 - <_> - 0 - - 14 14 1 3 - <_> - 2 - - 8 26 6 5 - <_> - 5 - - 2 24 1 7 - <_> - 5 - - 10 10 4 9 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 1 11 13 14 - <_> - 2 - - 4 18 5 10 - <_> - 0 - - 4 8 2 2 - <_> - 2 - - 6 16 4 1 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 0 9 1 15 - <_> - 1 - - 9 22 1 2 - <_> - 0 - - 3 4 3 13 - <_> - 3 - - 6 25 6 4 - <_> - 4 - - 4 20 8 1 - <_> - 0 - - 7 19 4 9 - <_> - 9 - - 7 1 1 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 9 7 1 4 - <_> - 8 - - 9 25 5 5 - <_> - 3 - - 0 18 7 11 - <_> - 1 - - 2 12 12 7 - <_> - 5 - - 5 7 7 1 - <_> - 8 - - 6 6 1 2 - <_> - 9 - - 7 13 1 7 - <_> - 4 - - 5 0 2 13 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 1 2 14 - <_> - 8 - - 6 8 3 2 - <_> - 1 - - 2 26 11 2 - <_> - 2 - - 11 28 2 1 - <_> - 1 - - 5 8 1 6 - <_> - 8 - - 9 26 1 4 - <_> - 1 - - 8 6 2 3 - <_> - 4 - - 2 24 12 2 - <_> - 2 - - 5 16 4 11 - <_> - 4 - - 8 14 5 17 - <_> - 0 - - 5 28 6 2 - <_> - 0 - - 9 16 2 10 - <_> - 7 - - 7 4 8 1 - <_> - 0 - - 7 10 3 17 - <_> - 3 - - 3 12 4 12 - <_> - 0 - - 7 7 3 5 - <_> - 7 - - 7 30 3 1 - <_> - 5 - - 0 21 3 2 - <_> - 5 - - 1 9 3 17 - <_> - 5 - - 1 8 14 3 - <_> - 4 - - 12 8 1 23 - <_> - 0 - - 4 28 10 2 - <_> - 5 - - 5 15 1 10 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 0 29 15 2 - <_> - 0 - - 10 19 4 4 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 13 23 2 5 - <_> - 8 - - 11 5 2 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 2 0 8 14 - <_> - 9 - - 5 22 2 1 - <_> - 9 - - 14 24 1 2 - <_> - 5 - - 11 13 1 18 - <_> - 5 - - 10 28 5 3 - <_> - 4 - - 5 29 7 1 - <_> - 1 - - 6 27 6 2 - <_> - 1 - - 13 5 1 9 - <_> - 7 - - 7 6 2 2 - <_> - 0 - - 3 3 2 3 - <_> - 2 - - 5 6 8 18 - <_> - 4 - - 6 23 4 6 - <_> - 0 - - 3 2 3 14 - <_> - 4 - - 6 19 2 2 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 10 12 4 3 - <_> - 0 - - 7 10 2 4 - <_> - 7 - - 3 19 1 12 - <_> - 2 - - 14 17 1 9 - <_> - 2 - - 7 8 5 3 - <_> - 5 - - 3 28 11 3 - <_> - 5 - - 10 9 3 6 - <_> - 7 - - 6 15 3 1 - <_> - 0 - - 12 8 2 4 - <_> - 5 - - 10 8 1 4 - <_> - 0 - - 10 9 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 3 1 12 3 - <_> - 9 - - 8 10 1 7 - <_> - 1 - - 4 27 5 1 - <_> - 2 - - 7 18 2 3 - <_> - 4 - - 0 30 8 1 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 7 16 4 1 - <_> - 7 - - 12 22 3 4 - <_> - 4 - - 3 14 7 14 - <_> - 1 - - 7 3 2 6 - <_> - 1 - - 2 30 10 1 - <_> - 0 - - 8 26 6 5 - <_> - 2 - - 9 9 4 1 - <_> - 5 - - 9 28 5 3 - <_> - 1 - - 3 10 10 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 1 10 2 3 - <_> - 7 - - 5 29 9 1 - <_> - 2 - - 7 8 3 9 - <_> - 3 - - 2 8 7 20 - <_> - 3 - - 13 23 2 6 - <_> - 3 - - 5 25 6 2 - <_> - 9 - - 0 0 4 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 1 - - 1 0 10 2 - <_> - 9 - - 7 14 3 3 - <_> - 7 - - 5 16 6 1 - <_> - 9 - - 6 19 3 1 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 6 5 3 4 - <_> - 1 - - 1 7 9 3 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 5 28 10 1 - <_> - 8 - - 10 7 2 4 - <_> - 4 - - 3 8 9 13 - <_> - 4 - - 8 3 1 17 - <_> - 1 - - 8 4 1 12 - <_> - 3 - - 2 19 1 11 - <_> - 3 - - 4 23 6 4 - <_> - 0 - - 6 15 3 1 - <_> - 0 - - 5 12 5 17 - <_> - 4 - - 4 6 8 19 - <_> - 2 - - 6 1 4 27 - <_> - 0 - - 5 11 9 1 - <_> - 1 - - 8 10 2 4 - <_> - 5 - - 12 25 3 6 - <_> - 5 - - 2 27 1 3 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 0 4 30 - <_> - 0 - - 4 25 1 5 - <_> - 4 - - 9 8 1 17 - <_> - 5 - - 3 18 1 4 - <_> - 1 - - 5 26 5 3 - <_> - 9 - - 5 9 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 8 28 5 1 - <_> - 5 - - 10 9 2 15 - <_> - 9 - - 6 3 3 22 - <_> - 4 - - 11 27 3 4 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 5 29 2 2 - <_> - 5 - - 8 3 2 4 - <_> - 2 - - 9 3 3 13 - <_> - 0 - - 6 10 3 2 - <_> - 0 - - 5 22 3 5 - <_> - 7 - - 6 3 4 1 - <_> - 0 - - 0 14 4 17 - <_> - 3 - - 3 5 4 9 - <_> - 7 - - 0 11 3 5 - <_> - 8 - - 7 7 3 1 - <_> - 2 - - 0 30 4 1 - <_> - 4 - - 0 18 12 13 - <_> - 0 - - 9 18 2 1 - <_> - 9 - - 7 8 1 13 - <_> - 9 - - 1 0 14 3 - <_> - 8 - - 4 12 3 2 - <_> - 2 - - 4 19 7 9 - <_> - 2 - - 4 15 1 8 - <_> - 3 - - 8 20 2 4 - <_> - 2 - - 8 6 4 4 - <_> - 5 - - 9 7 2 2 - <_> - 2 - - 0 28 14 2 - <_> - 5 - - 7 15 1 7 - <_> - 7 - - 0 15 7 3 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 5 30 9 1 - <_> - 2 - - 13 23 2 8 - <_> - 1 - - 8 24 6 6 - <_> - 4 - - 7 4 3 1 - <_> - 1 - - 7 4 2 4 - <_> - 1 - - 0 17 9 7 - <_> - 5 - - 2 30 6 1 - <_> - 2 - - 0 24 9 3 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 5 28 6 1 - <_> - 8 - - 2 17 1 4 - <_> - 0 - - 1 3 9 1 - <_> - 8 - - 6 5 4 2 - <_> - 7 - - 11 24 2 2 - <_> - 8 - - 14 18 1 7 - <_> - 7 - - 7 5 1 3 - <_> - 1 - - 5 25 4 1 - <_> - 2 - - 8 23 2 6 - <_> - 3 - - 5 11 3 17 - <_> - 3 - - 6 14 1 15 - <_> - 4 - - 4 6 9 6 - <_> - 4 - - 6 29 9 2 - <_> - 7 - - 11 27 3 1 - <_> - 9 - - 7 15 1 1 - <_> - 0 - - 1 28 14 2 - <_> - 0 - - 7 19 4 8 - <_> - 8 - - 5 6 7 8 - <_> - 1 - - 10 9 1 1 - <_> - 3 - - 4 19 9 2 - <_> - 1 - - 10 19 4 3 - <_> - 4 - - 7 20 4 1 - <_> - 3 - - 5 15 1 14 - <_> - 0 - - 5 5 6 3 - <_> - 2 - - 8 11 1 7 - <_> - 5 - - 10 10 3 4 - <_> - 0 - - 7 1 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 3 - - 9 16 2 2 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 3 27 7 4 - <_> - 1 - - 11 24 1 1 - <_> - 4 - - 0 29 10 2 - <_> - 2 - - 3 24 8 4 - <_> - 0 - - 0 21 3 10 - <_> - 2 - - 4 28 9 2 - <_> - 0 - - 7 18 1 5 - <_> - 7 - - 8 7 2 1 - <_> - 7 - - 1 24 2 7 - <_> - 1 - - 7 6 5 3 - <_> - 7 - - 6 14 2 1 - <_> - 7 - - 4 27 1 4 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 13 14 1 6 - <_> - 8 - - 4 3 1 4 - <_> - 2 - - 11 10 1 8 - <_> - 1 - - 8 7 6 16 - <_> - 3 - - 0 8 11 13 - <_> - 3 - - 5 7 1 15 - <_> - 0 - - 5 20 3 2 - <_> - 3 - - 1 6 8 2 - <_> - 2 - - 4 9 4 1 - <_> - 0 - - 3 4 4 6 - <_> - 3 - - 8 2 1 3 - <_> - 1 - - 8 27 1 2 - <_> - 3 - - 14 21 1 4 - <_> - 4 - - 1 9 2 10 - <_> - 5 - - 9 12 3 15 - <_> - 7 - - 3 12 1 6 - <_> - 2 - - 9 30 5 1 - <_> - 3 - - 6 5 4 2 - <_> - 4 - - 9 20 1 11 - <_> - 4 - - 2 6 8 3 - <_> - 7 - - 4 24 1 7 - <_> - 0 - - 6 7 3 12 - <_> - 5 - - 6 26 5 2 - <_> - 5 - - 3 21 2 3 - <_> - 2 - - 3 20 7 2 - <_> - 4 - - 0 30 8 1 - <_> - 3 - - 1 27 10 4 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 12 22 3 3 - <_> - 9 - - 7 8 1 3 - <_> - 9 - - 7 1 2 6 - <_> - 8 - - 7 6 3 11 - <_> - 8 - - 8 29 3 1 - <_> - 1 - - 7 3 3 7 - <_> - 0 - - 9 19 1 12 - <_> - 4 - - 9 5 2 26 - <_> - 4 - - 9 9 4 13 - <_> - 4 - - 1 23 12 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 10 12 3 19 - <_> - 4 - - 7 11 2 14 - <_> - 0 - - 14 19 1 3 - <_> - 4 - - 5 9 10 3 - <_> - 4 - - 8 22 1 4 - <_> - 2 - - 4 3 6 23 - <_> - 2 - - 14 16 1 13 - <_> - 7 - - 3 19 1 12 - <_> - 5 - - 8 28 3 3 - <_> - 3 - - 5 0 9 1 - <_> - 0 - - 11 10 1 19 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 5 20 5 1 - <_> - 0 - - 6 21 5 7 - <_> - 3 - - 13 21 2 5 - <_> - 3 - - 1 7 4 8 - <_> - 8 - - 6 18 3 2 - <_> - 7 - - 7 6 2 2 - <_> - 1 - - 7 19 2 5 - <_> - 5 - - 11 8 3 22 - <_> - 1 - - 11 20 2 8 - <_> - 5 - - 11 1 1 20 - <_> - 4 - - 0 30 13 1 - <_> - 9 - - 1 29 7 2 - <_> - 9 - - 5 19 3 3 - <_> - 9 - - 5 6 5 5 - <_> - 8 - - 7 6 1 2 - <_> - 2 - - 5 19 4 11 - <_> - 4 - - 2 29 2 2 - <_> - 0 - - 7 10 3 2 - <_> - 1 - - 8 27 4 2 - <_> - 2 - - 7 8 4 2 - <_> - 0 - - 2 28 2 2 - <_> - 3 - - 2 12 5 3 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 6 18 3 4 - <_> - 0 - - 5 22 3 5 - <_> - 2 - - 5 1 5 27 - <_> - 0 - - 5 28 7 1 - <_> - 3 - - 5 26 8 2 - <_> - 7 - - 13 21 1 4 - <_> - 7 - - 9 17 1 1 - <_> - 7 - - 13 30 1 1 - <_> - 2 - - 11 4 1 16 - <_> - 5 - - 12 18 2 12 - <_> - 5 - - 8 9 5 4 - <_> - 5 - - 3 23 1 2 - <_> - 4 - - 0 9 4 7 - <_> - 2 - - 3 28 5 2 - <_> - 4 - - 9 8 1 17 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 6 4 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 0 - - 2 2 11 2 - <_> - 4 - - 9 1 3 16 - <_> - 4 - - 7 4 5 4 - <_> - 4 - - 4 29 8 1 - <_> - 0 - - 6 7 6 10 - <_> - 7 - - 7 28 1 2 - <_> - 5 - - 3 26 7 2 - <_> - 7 - - 7 13 1 8 - <_> - 4 - - 5 20 8 1 - <_> - 1 - - 3 27 10 2 - <_> - 0 - - 0 8 9 1 - <_> - 4 - - 8 26 6 5 - <_> - 5 - - 4 24 1 7 - <_> - 2 - - 2 11 4 11 - <_> - 2 - - 6 21 5 7 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 3 7 2 11 - <_> - 8 - - 2 21 1 5 - <_> - 2 - - 5 8 1 1 - <_> - 9 - - 7 12 1 5 - <_> - 2 - - 6 9 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 12 24 2 5 - <_> - 8 - - 11 0 3 19 - <_> - 3 - - 0 26 4 3 - <_> - 3 - - 4 13 2 15 - <_> - 7 - - 8 19 1 1 - <_> - 2 - - 9 0 2 8 - <_> - 4 - - 7 3 2 18 - <_> - 9 - - 14 2 1 2 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 30 2 1 - <_> - 5 - - 10 20 1 6 - <_> - 2 - - 3 6 7 2 - <_> - 1 - - 6 11 5 2 - <_> - 3 - - 0 6 10 19 - <_> - 7 - - 6 29 1 2 - <_> - 3 - - 6 9 3 8 - <_> - 0 - - 2 12 10 7 - <_> - 2 - - 1 16 2 1 - <_> - 7 - - 1 15 8 1 - <_> - 4 - - 7 18 2 2 - <_> - 3 - - 6 5 9 3 - <_> - 5 - - 0 19 15 8 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 13 14 1 1 - <_> - 1 - - 13 3 2 12 - <_> - 7 - - 0 24 7 1 - <_> - 3 - - 0 28 15 2 - <_> - 1 - - 4 21 7 5 - <_> - 5 - - 5 14 1 10 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 1 7 14 5 - <_> - 8 - - 0 16 3 3 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 8 9 3 19 - <_> - 5 - - 3 21 2 9 - <_> - 0 - - 6 19 2 12 - <_> - 1 - - 5 17 6 3 - <_> - 3 - - 2 19 13 11 - <_> - 0 - - 9 9 1 2 - <_> - 5 - - 9 8 6 4 - <_> - 0 - - 3 8 4 1 - <_> - 1 - - 3 22 3 8 - <_> - 1 - - 2 19 3 4 - <_> - 5 - - 13 1 1 30 - <_> - 5 - - 5 19 7 6 - <_> - 2 - - 0 23 9 1 - <_> - 5 - - 6 17 3 1 - <_> - 4 - - 11 0 3 21 - <_> - 1 - - 2 4 12 5 - <_> - 5 - - 1 13 1 7 - <_> - 1 - - 4 3 5 1 - <_> - 5 - - 9 5 1 7 - <_> - 0 - - 7 18 4 2 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 3 26 7 2 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 4 - - 2 6 5 7 - <_> - 9 - - 7 1 1 2 - <_> - 9 - - 7 13 4 9 - <_> - 9 - - 3 3 10 3 - <_> - 1 - - 3 4 6 2 - <_> - 1 - - 5 28 6 1 - <_> - 4 - - 4 5 11 9 - <_> - 3 - - 2 16 1 11 - <_> - 0 - - 6 20 5 7 - <_> - 4 - - 10 1 1 8 - <_> - 3 - - 11 22 1 6 - <_> - 4 - - 5 12 6 17 - <_> - 5 - - 10 10 4 8 - <_> - 5 - - 2 1 5 13 - <_> - 5 - - 4 2 8 2 - <_> - 7 - - 2 21 12 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 7 12 1 5 - <_> - 0 - - 2 4 4 12 - <_> - 3 - - 2 15 2 12 - <_> - 2 - - 4 1 3 26 - <_> - 4 - - 0 4 13 4 - <_> - 5 - - 13 15 1 11 - <_> - 5 - - 4 0 9 11 - <_> - 5 - - 7 0 5 7 - <_> - 9 - - 6 19 2 5 - <_> - 1 - - 7 19 2 5 - <_> - 7 - - 2 11 11 2 - <_> - 1 - - 5 9 6 1 - <_> - 7 - - 7 29 2 2 - <_> - 2 - - 8 8 4 1 - <_> - 1 - - 4 27 8 1 - <_> - 4 - - 0 29 14 1 - <_> - 4 - - 8 7 4 8 - <_> - 7 - - 10 28 5 1 - <_> - 2 - - 8 16 1 2 - <_> - 3 - - 2 24 7 4 - <_> - 1 - - 11 15 3 8 - <_> - 5 - - 1 26 1 5 - <_> - 8 - - 3 27 8 2 - <_> - 2 - - 10 9 3 2 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 4 - - 3 10 12 3 - <_> - 7 - - 2 27 2 2 - <_> - 4 - - 3 24 8 2 - <_> - 3 - - 5 5 1 14 - <_> - 7 - - 6 12 3 2 - <_> - 8 - - 0 4 15 2 - <_> - 8 - - 10 3 2 1 - <_> - 4 - - 6 26 4 2 - <_> - 2 - - 7 11 2 3 - <_> - 4 - - 5 21 5 8 - <_> - 0 - - 5 5 6 3 - <_> - 5 - - 2 13 1 10 - <_> - 4 - - 4 0 6 22 - <_> - 1 - - 5 15 5 11 - <_> - 4 - - 8 3 1 17 - <_> - 2 - - 7 25 3 1 - <_> - 5 - - 6 28 7 2 - <_> - 5 - - 11 13 1 9 - <_> - 0 - - 9 14 3 11 - <_> - 2 - - 5 16 4 11 - <_> - 5 - - 3 15 7 12 - <_> - 5 - - 12 17 3 2 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 7 27 3 3 - <_> - 4 - - 7 12 3 3 - <_> - 8 - - 8 6 1 2 - <_> - 9 - - 5 16 1 5 - <_> - 8 - - 6 25 4 3 - <_> - 3 - - 6 20 1 5 - <_> - 4 - - 3 26 10 5 - <_> - 4 - - 7 21 3 2 - <_> - 3 - - 3 0 9 10 - <_> - 0 - - 3 9 5 1 - <_> - 3 - - 7 7 6 5 - <_> - 5 - - 3 30 11 1 - <_> - 2 - - 4 26 9 4 - <_> - 0 - - 0 29 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 9 5 2 1 - <_> - 9 - - 7 10 3 6 - <_> - 5 - - 8 5 5 10 - <_> - 7 - - 3 5 10 2 - <_> - 2 - - 14 22 1 4 - <_> - 9 - - 8 1 2 1 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 8 1 1 6 - <_> - 3 - - 2 9 7 5 - <_> - 4 - - 1 21 2 4 - <_> - 0 - - 8 9 2 1 - <_> - 8 - - 6 6 2 2 - <_> - 2 - - 6 18 5 10 - <_> - 8 - - 1 4 14 6 - <_> - 3 - - 6 9 3 12 - <_> - 3 - - 5 4 2 9 - <_> - 8 - - 6 12 5 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 1 5 14 11 - <_> - 5 - - 6 8 4 1 - <_> - 5 - - 6 4 4 3 - <_> - 0 - - 0 20 15 10 - <_> - 7 - - 0 27 6 1 - <_> - 2 - - 5 1 2 4 - <_> - 4 - - 8 23 1 1 - <_> - 9 - - 2 2 8 3 - <_> - 1 - - 3 28 8 1 - <_> - 2 - - 4 30 11 1 - <_> - 1 - - 4 3 5 1 - <_> - 0 - - 7 19 4 9 - <_> - 0 - - 13 24 1 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 1 9 14 2 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 9 27 3 4 - <_> - 1 - - 9 10 1 3 - <_> - 7 - - 14 0 1 26 - <_> - 5 - - 2 9 13 20 - <_> - 0 - - 7 11 2 3 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 3 16 1 4 - <_> - 5 - - 5 29 4 2 - <_> - 0 - - 3 25 9 5 - <_> - 3 - - 7 29 8 2 - <_> - 4 - - 3 11 9 14 - <_> - 4 - - 8 11 1 8 - <_> - 8 - - 6 21 4 4 - <_> - 3 - - 0 23 3 7 - <_> - 3 - - 3 23 4 4 - <_> - 5 - - 5 18 3 6 - <_> - 5 - - 8 2 5 10 - <_> - 7 - - 2 4 3 5 - <_> - 2 - - 4 10 7 1 - <_> - 3 - - 3 9 9 18 - <_> - 3 - - 5 28 6 1 - <_> - 4 - - 1 6 10 8 - <_> - 3 - - 0 0 5 26 - <_> - 2 - - 5 0 5 31 - <_> - 5 - - 10 25 2 1 - <_> - 2 - - 8 9 1 3 - <_> - 2 - - 3 24 6 4 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 2 5 8 4 - <_> - 8 - - 10 2 1 5 - <_> - 5 - - 2 7 2 16 - <_> - 0 - - 2 27 1 3 - <_> - 1 - - 1 17 4 2 - <_> - 9 - - 13 25 1 5 - <_> - 4 - - 7 3 2 2 - <_> - 8 - - 6 28 4 1 - <_> - 1 - - 1 10 14 12 - <_> - 3 - - 4 4 5 23 - <_> - 5 - - 1 16 10 8 - <_> - 2 - - 6 10 3 4 - <_> - 5 - - 7 21 5 5 - <_> - 5 - - 9 16 3 5 - <_> - 3 - - 14 24 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 8 - - 8 16 2 2 - <_> - 1 - - 4 27 10 1 - <_> - 1 - - 5 26 7 2 - <_> - 4 - - 5 20 8 1 - <_> - 9 - - 9 11 1 2 - <_> - 9 - - 8 1 2 1 - <_> - 8 - - 8 4 3 25 - <_> - 1 - - 6 28 5 1 - <_> - 8 - - 8 28 3 3 - <_> - 4 - - 6 29 4 1 - <_> - 4 - - 7 21 3 2 - <_> - 5 - - 10 18 1 11 - <_> - 2 - - 7 9 5 1 - <_> - 5 - - 0 21 3 6 - <_> - 2 - - 3 22 7 6 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 11 24 2 6 - <_> - 7 - - 14 17 1 13 - <_> - 8 - - 4 3 3 1 - <_> - 4 - - 5 3 6 6 - <_> - 5 - - 1 16 6 15 - <_> - 3 - - 3 29 5 2 - <_> - 0 - - 6 18 4 12 - <_> - 4 - - 10 0 3 13 - <_> - 0 - - 7 11 2 6 - <_> - 5 - - 3 10 12 3 - <_> - 1 - - 7 1 3 2 - <_> - 1 - - 4 26 6 3 - <_> - 4 - - 1 11 11 19 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 12 11 1 20 - <_> - 5 - - 12 30 2 1 - <_> - 0 - - 5 26 8 4 - <_> - 8 - - 11 21 4 1 - <_> - 1 - - 3 10 10 1 - <_> - 4 - - 7 1 4 18 - <_> - 2 - - 7 20 3 1 - <_> - 5 - - 5 28 4 2 - <_> - 0 - - 2 4 6 5 - <_> - 3 - - 5 7 2 3 - <_> - 9 - - 8 19 1 2 - <_> - 9 - - 5 6 5 1 - <_> - 7 - - 1 22 2 3 - <_> - 2 - - 14 14 1 13 - <_> - 1 - - 2 21 3 6 - <_> - 9 - - 14 1 1 6 - <_> - 1 - - 5 11 3 2 - <_> - 7 - - 14 4 1 22 - <_> - 0 - - 6 4 3 24 - <_> - 9 - - 7 9 2 7 - <_> - 9 - - 9 17 6 2 - <_> - 0 - - 7 10 1 1 - <_> - 3 - - 6 2 1 8 - <_> - 0 - - 5 6 1 6 - <_> - 3 - - 5 0 10 4 - <_> - 7 - - 2 30 11 1 - <_> - 1 - - 7 16 3 11 - <_> - 1 - - 9 10 2 7 - <_> - 2 - - 5 20 6 8 - <_> - 0 - - 10 8 2 2 - <_> - 3 - - 8 13 1 7 - <_> - 8 - - 7 7 3 1 - <_> - 0 - - 5 28 8 1 - <_> - 8 - - 8 3 1 2 - <_> - 0 - - 5 17 7 11 - <_> - 9 - - 11 6 2 1 - <_> - 4 - - 2 27 5 4 - <_> - 5 - - 8 28 3 3 - <_> - 1 - - 7 28 6 1 - <_> - 7 - - 7 20 1 1 - <_> - 4 - - 7 18 3 8 - <_> - 1 - - 11 21 2 8 - <_> - 2 - - 6 18 5 10 - <_> - 9 - - 6 18 1 2 - <_> - 4 - - 9 6 4 18 - <_> - 1 - - 12 23 1 7 - <_> - 7 - - 14 1 1 24 - <_> - 0 - - 4 8 2 2 - <_> - 1 - - 13 12 2 1 - <_> - 7 - - 0 27 10 1 - <_> - 3 - - 8 23 7 8 - <_> - 7 - - 7 13 3 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 9 9 6 3 - <_> - 8 - - 2 6 13 1 - <_> - 5 - - 8 3 5 12 - <_> - 2 - - 2 25 1 3 - <_> - 4 - - 6 2 5 6 - <_> - 3 - - 10 23 1 4 - <_> - 4 - - 5 26 5 2 - <_> - 3 - - 11 17 1 14 - <_> - 4 - - 3 12 10 9 - <_> - 4 - - 4 14 7 7 - <_> - 7 - - 11 11 2 5 - <_> - 4 - - 8 20 2 3 - <_> - 5 - - 7 19 5 9 - <_> - 4 - - 4 16 9 4 - <_> - 5 - - 2 28 1 2 - <_> - 3 - - 4 8 8 7 - <_> - 9 - - 8 13 1 1 - <_> - 0 - - 6 9 2 3 - <_> - 0 - - 5 5 5 3 - <_> - 5 - - 9 20 3 2 - <_> - 2 - - 8 30 6 1 - <_> - 3 - - 2 0 4 16 - <_> - 1 - - 11 19 2 5 - <_> - 9 - - 14 24 1 2 - <_> - 1 - - 4 27 6 3 - <_> - 9 - - 7 9 2 3 - <_> - 4 - - 6 22 4 3 - <_> - 3 - - 3 19 12 4 - <_> - 3 - - 4 12 2 15 - <_> - 3 - - 2 22 1 2 - <_> - 3 - - 4 10 2 13 - <_> - 9 - - 7 14 2 3 - <_> - 2 - - 6 10 3 1 - <_> - 9 - - 12 2 2 2 - <_> - 5 - - 4 3 6 1 - <_> - 3 - - 2 5 7 4 - <_> - 7 - - 12 14 1 9 - <_> - 1 - - 4 4 4 4 - <_> - 4 - - 9 28 5 3 - <_> - 1 - - 8 27 6 1 - <_> - 1 - - 11 23 2 2 - <_> - 7 - - 2 5 12 1 - <_> - 3 - - 1 12 7 11 - <_> - 9 - - 8 24 1 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 5 8 - <_> - 1 - - 10 9 1 2 - <_> - 9 - - 6 7 2 6 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 9 1 3 - <_> - 0 - - 6 21 5 7 - <_> - 5 - - 10 29 5 2 - <_> - 0 - - 13 27 2 4 - <_> - 9 - - 7 18 1 4 - <_> - 3 - - 3 21 6 4 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 5 10 4 3 - <_> - 0 - - 5 28 6 1 - <_> - 0 - - 11 15 2 2 - <_> - 7 - - 1 27 7 1 - <_> - 5 - - 10 11 2 1 - <_> - 1 - - 5 12 8 12 - <_> - 4 - - 7 0 2 18 - <_> - 3 - - 1 22 10 3 - <_> - 2 - - 3 5 8 25 - <_> - 5 - - 7 16 1 4 - <_> - 5 - - 9 5 2 12 - <_> - 4 - - 4 29 11 2 - <_> - 2 - - 9 1 2 2 - <_> - 2 - - 8 21 2 7 - <_> - 4 - - 7 27 1 4 - <_> - 8 - - 6 5 4 2 - <_> - 5 - - 1 12 3 6 - <_> - 8 - - 1 20 6 2 - <_> - 4 - - 7 17 4 2 - <_> - 1 - - 6 27 9 3 - <_> - 5 - - 13 1 1 23 - <_> - 9 - - 8 9 1 2 - <_> - 5 - - 11 30 4 1 - <_> - 9 - - 7 0 2 13 - <_> - 3 - - 5 2 1 29 - <_> - 7 - - 10 8 2 3 - <_> - 2 - - 4 29 2 2 - <_> - 3 - - 4 12 11 1 - <_> - 3 - - 1 13 12 4 - <_> - 0 - - 6 10 3 2 - <_> - 4 - - 2 9 5 2 - <_> - 1 - - 5 27 5 1 - <_> - 8 - - 6 22 2 1 - <_> - 3 - - 12 19 2 7 - <_> - 5 - - 8 16 4 12 - <_> - 9 - - 6 17 3 1 - <_> - 2 - - 6 14 8 10 - <_> - 4 - - 4 28 8 3 - <_> - 4 - - 4 16 9 12 - <_> - 0 - - 7 29 1 2 - <_> - 4 - - 3 28 11 3 - <_> - 4 - - 4 16 5 2 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 7 8 1 4 - <_> - 1 - - 12 24 2 7 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 7 4 3 1 - <_> - 2 - - 1 29 2 2 - <_> - 2 - - 2 24 6 7 - <_> - 5 - - 7 27 2 1 - <_> - 0 - - 5 4 10 4 - <_> - 1 - - 8 11 2 2 - <_> - 2 - - 4 20 6 7 - <_> - 8 - - 6 28 4 3 - <_> - 5 - - 8 28 3 2 - <_> - 3 - - 1 0 13 1 - <_> - 2 - - 3 15 3 2 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 22 1 4 - <_> - 4 - - 1 26 11 4 - <_> - 5 - - 9 0 3 20 - <_> - 7 - - 7 21 2 4 - <_> - 0 - - 7 14 2 3 - <_> - 0 - - 6 4 3 24 - <_> - 7 - - 7 6 2 2 - <_> - 2 - - 7 13 1 1 - <_> - 8 - - 6 6 2 2 - <_> - 0 - - 7 10 3 1 - <_> - 8 - - 12 15 1 10 - <_> - 9 - - 7 15 3 2 - <_> - 7 - - 6 16 5 1 - <_> - 1 - - 7 18 2 7 - <_> - 1 - - 7 23 2 6 - <_> - 9 - - 2 5 9 1 - <_> - 0 - - 8 3 4 3 - <_> - 3 - - 4 2 4 9 - <_> - 4 - - 6 21 5 3 - <_> - 2 - - 4 9 4 2 - <_> - 9 - - 13 17 1 5 - <_> - 2 - - 9 25 1 4 - <_> - 0 - - 10 28 2 3 - <_> - 1 - - 4 10 10 1 - <_> - 0 - - 7 9 6 17 - <_> - 0 - - 10 10 1 10 - <_> - 7 - - 5 29 9 1 - <_> - 3 - - 0 17 5 14 - <_> - 3 - - 3 1 11 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 7 6 2 5 - <_> - 8 - - 7 8 2 1 - <_> - 4 - - 2 12 11 11 - <_> - 2 - - 9 30 4 1 - <_> - 3 - - 9 0 6 14 - <_> - 3 - - 4 12 2 15 - <_> - 4 - - 1 30 4 1 - <_> - 0 - - 1 16 6 8 - <_> - 2 - - 4 25 9 3 - <_> - 3 - - 10 4 5 25 - <_> - 2 - - 8 16 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 7 - - 9 12 1 1 - <_> - 4 - - 3 5 8 3 - <_> - 5 - - 8 5 5 7 - <_> - 1 - - 5 8 8 1 - <_> - 2 - - 3 27 4 3 - <_> - 7 - - 2 27 8 1 - <_> - 4 - - 0 27 13 2 - <_> - 2 - - 6 17 3 11 - <_> - 8 - - 8 6 1 2 - <_> - 0 - - 11 0 2 3 - <_> - 4 - - 1 3 11 5 - <_> - 0 - - 3 28 5 3 - <_> - 1 - - 7 15 4 7 - <_> - 1 - - 2 27 10 1 - <_> - 0 - - 6 18 4 9 - <_> - 1 - - 4 24 9 1 - <_> - 9 - - 14 8 1 8 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 8 1 4 29 - <_> - 2 - - 4 2 3 4 - <_> - 2 - - 5 5 6 3 - <_> - 7 - - 2 14 8 5 - <_> - 7 - - 9 30 1 1 - <_> - 9 - - 5 16 3 7 - <_> - 7 - - 3 13 7 13 - <_> - 2 - - 14 22 1 7 - <_> - 4 - - 8 26 7 2 - <_> - 0 - - 3 8 4 1 - <_> - 3 - - 7 25 6 5 - <_> - 1 - - 6 4 4 2 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 3 8 10 23 - <_> - 1 - - 7 9 5 1 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 5 28 6 1 - <_> - 5 - - 10 11 4 1 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 9 4 6 9 - <_> - 1 - - 5 11 4 3 - <_> - 7 - - 7 6 5 3 - <_> - 7 - - 11 26 1 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 4 12 2 10 - <_> - 8 - - 1 16 3 7 - <_> - 5 - - 9 14 3 13 - <_> - 1 - - 13 22 2 1 - <_> - 4 - - 1 29 14 2 - <_> - 1 - - 3 27 10 4 - <_> - 3 - - 3 30 1 1 - <_> - 2 - - 0 23 4 8 - <_> - 0 - - 6 25 5 2 - <_> - 5 - - 13 7 1 24 - <_> - 3 - - 2 5 6 9 - <_> - 0 - - 7 15 3 2 - <_> - 0 - - 9 0 3 31 - <_> - 0 - - 7 10 3 1 - <_> - 3 - - 13 19 1 3 - <_> - 4 - - 12 9 3 19 - <_> - 8 - - 7 6 3 4 - <_> - 9 - - 8 15 1 2 - <_> - 9 - - 0 1 15 4 - <_> - 1 - - 6 4 7 4 - <_> - 5 - - 6 28 4 1 - <_> - 0 - - 6 19 4 10 - <_> - 2 - - 4 18 5 1 - <_> - 4 - - 3 1 10 24 - <_> - 3 - - 1 9 6 16 - <_> - 1 - - 9 16 2 3 - <_> - 4 - - 1 30 8 1 - <_> - 1 - - 4 24 5 5 - <_> - 3 - - 0 10 1 21 - <_> - 8 - - 7 5 2 3 - <_> - 1 - - 2 19 1 2 - <_> - 9 - - 7 20 1 1 - <_> - 9 - - 10 28 5 2 - <_> - 1 - - 6 19 4 5 - <_> - 9 - - 7 5 2 21 - <_> - 2 - - 5 19 6 10 - <_> - 4 - - 3 29 5 1 - <_> - 0 - - 4 22 1 7 - <_> - 9 - - 8 9 1 2 - <_> - 9 - - 7 3 2 6 - <_> - 0 - - 10 16 1 2 - <_> - 7 - - 1 0 2 28 - <_> - 5 - - 6 26 7 2 - <_> - 3 - - 10 23 4 6 - <_> - 2 - - 1 29 2 2 - <_> - 0 - - 3 3 3 19 - <_> - 0 - - 2 11 7 1 - <_> - 5 - - 9 2 1 14 - <_> - 7 - - 13 19 2 1 - <_> - 3 - - 5 26 3 1 - <_> - 2 - - 12 26 1 5 - <_> - 5 - - 11 7 1 24 - <_> - 4 - - 5 24 1 2 - <_> - 4 - - 5 11 2 19 - <_> - 5 - - 5 0 1 6 - <_> - 7 - - 8 13 2 2 - <_> - 3 - - 6 5 1 6 - <_> - 9 - - 10 30 1 1 - <_> - 1 - - 8 25 2 4 - <_> - 2 - - 6 9 4 2 - <_> - 5 - - 12 10 3 13 - <_> - 5 - - 9 30 6 1 - <_> - 8 - - 7 6 1 2 - <_> - 4 - - 13 12 2 1 - <_> - 8 - - 5 4 6 3 - <_> - 7 - - 4 30 8 1 - <_> - 1 - - 7 16 3 10 - <_> - 0 - - 9 14 3 4 - <_> - 1 - - 5 10 7 2 - <_> - 4 - - 7 2 1 27 - <_> - 8 - - 0 9 3 20 - <_> - 1 - - 6 22 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 3 - - 0 12 3 19 - <_> - 9 - - 4 8 8 3 - <_> - 9 - - 5 4 4 3 - <_> - 0 - - 4 10 1 1 - <_> - 1 - - 14 2 1 14 - <_> - 0 - - 2 18 11 3 - <_> - 5 - - 7 26 8 2 - <_> - 1 - - 10 15 1 3 - <_> - 1 - - 4 22 1 6 - <_> - 5 - - 2 5 10 22 - <_> - 4 - - 12 27 2 4 - <_> - 0 - - 1 29 14 1 - <_> - 5 - - 3 4 2 5 - <_> - 4 - - 4 9 3 9 - <_> - 7 - - 11 25 2 6 - <_> - 0 - - 4 0 1 1 - <_> - 9 - - 8 13 2 5 - <_> - 9 - - 4 15 11 16 - <_> - 5 - - 11 16 1 7 - <_> - 1 - - 3 28 10 1 - <_> - 3 - - 4 9 2 19 - <_> - 7 - - 1 27 13 2 - <_> - 1 - - 6 23 4 4 - <_> - 7 - - 14 4 1 17 - <_> - 9 - - 7 22 5 5 - <_> - 4 - - 6 15 5 1 - <_> - 5 - - 0 24 5 1 - <_> - 3 - - 5 11 8 2 - <_> - 2 - - 1 25 9 2 - <_> - 3 - - 12 3 2 20 - <_> - 5 - - 5 22 1 8 - <_> - 4 - - 6 4 4 5 - <_> - 3 - - 1 15 2 16 - <_> - 0 - - 2 19 8 12 - <_> - 1 - - 10 9 1 2 - <_> - 1 - - 4 3 5 8 - <_> - 8 - - 8 10 1 6 - <_> - 5 - - 2 0 7 2 - <_> - 2 - - 4 16 6 12 - <_> - 5 - - 7 11 1 18 - <_> - 2 - - 5 3 6 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 0 0 4 7 - <_> - 1 - - 4 10 6 4 - <_> - 1 - - 8 27 2 3 - <_> - 0 - - 9 15 2 12 - <_> - 1 - - 6 22 4 2 - <_> - 5 - - 12 28 2 3 - <_> - 8 - - 0 20 3 2 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 12 12 3 6 - <_> - 3 - - 4 1 5 12 - <_> - 0 - - 6 10 3 2 - <_> - 2 - - 4 15 5 16 - <_> - 0 - - 2 1 8 2 - <_> - 5 - - 3 29 10 1 - <_> - 2 - - 9 9 4 2 - <_> - 1 - - 13 4 2 5 - <_> - 4 - - 3 15 10 15 - <_> - 5 - - 2 8 11 5 - <_> - 5 - - 8 22 1 5 - <_> - 7 - - 4 5 6 1 - <_> - 7 - - 2 27 1 3 - <_> - 4 - - 7 12 1 12 - <_> - 2 - - 0 30 4 1 - <_> - 8 - - 8 4 7 9 - <_> - 2 - - 8 14 2 4 - <_> - 3 - - 3 10 2 1 - <_> - 3 - - 3 0 9 10 - <_> - 3 - - 14 0 1 1 - <_> - 2 - - 0 25 10 2 - <_> - 2 - - 8 7 2 4 - <_> - 8 - - 4 30 9 1 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 10 11 4 2 - <_> - 8 - - 6 8 3 2 - <_> - 9 - - 5 1 4 2 - <_> - 0 - - 7 8 1 9 - <_> - 9 - - 6 0 3 11 - <_> - 0 - - 4 7 2 4 - <_> - 3 - - 6 6 8 1 - <_> - 3 - - 1 7 12 20 - <_> - 4 - - 6 21 3 1 - <_> - 1 - - 11 19 2 10 - <_> - 3 - - 4 7 1 21 - <_> - 3 - - 13 21 2 9 - <_> - 3 - - 0 8 7 4 - <_> - 2 - - 7 24 2 3 - <_> - 5 - - 6 28 3 1 - <_> - 4 - - 8 18 1 2 - <_> - 0 - - 2 9 8 17 - <_> - 4 - - 9 8 3 12 - <_> - 1 - - 2 25 9 6 - <_> - 2 - - 6 24 5 4 - <_> - 9 - - 7 18 2 2 - <_> - 9 - - 3 3 10 3 - <_> - 8 - - 7 6 3 4 - <_> - 4 - - 1 29 9 2 - <_> - 1 - - 2 27 7 3 - <_> - 3 - - 3 28 6 2 - <_> - 0 - - 7 17 5 10 - <_> - 2 - - 13 2 1 28 - <_> - 3 - - 10 16 2 10 - <_> - 8 - - 7 1 2 2 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 9 30 4 1 - <_> - 0 - - 9 17 3 6 - <_> - 0 - - 0 20 1 10 - <_> - 0 - - 6 12 5 6 - <_> - 1 - - 8 27 6 2 - <_> - 5 - - 0 29 9 2 - <_> - 4 - - 9 20 5 11 - <_> - 2 - - 7 14 6 12 - <_> - 8 - - 10 24 1 1 - <_> - 2 - - 1 17 14 9 - <_> - 1 - - 10 9 1 2 - <_> - 4 - - 8 7 5 13 - <_> - 9 - - 1 28 10 2 - <_> - 4 - - 4 20 7 1 - <_> - 4 - - 8 4 1 8 - <_> - 2 - - 6 23 4 8 - <_> - 3 - - 5 9 1 14 - <_> - 1 - - 2 11 12 5 - <_> - 0 - - 7 10 3 7 - <_> - 8 - - 7 6 1 2 - <_> - 0 - - 4 28 11 2 - <_> - 9 - - 8 15 1 2 - <_> - 0 - - 0 13 4 16 - <_> - 3 - - 3 21 6 8 - <_> - 5 - - 12 15 1 4 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 10 3 4 6 - <_> - 2 - - 9 9 2 6 - <_> - 0 - - 0 3 8 10 - <_> - 1 - - 8 27 5 1 - <_> - 7 - - 5 11 1 1 - <_> - 0 - - 4 8 2 2 - <_> - 4 - - 7 3 2 2 - <_> - 3 - - 2 0 4 16 - <_> - 7 - - 3 28 2 1 - <_> - 5 - - 1 20 1 6 - <_> - 5 - - 9 9 5 4 - <_> - 5 - - 2 0 11 1 - <_> - 4 - - 3 13 7 17 - <_> - 4 - - 6 29 2 2 - <_> - 2 - - 6 0 4 9 - <_> - 7 - - 6 5 3 18 - <_> - 2 - - 6 10 5 2 - <_> - 3 - - 3 11 4 12 - <_> - 4 - - 8 29 5 2 - <_> - 4 - - 4 4 6 5 - <_> - 1 - - 8 27 1 2 - <_> - 5 - - 1 29 3 2 - <_> - 4 - - 8 1 6 18 - <_> - 5 - - 3 26 7 1 - <_> - 8 - - 13 27 1 2 - <_> - 3 - - 0 6 5 25 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 23 2 6 - <_> - 8 - - 6 5 4 2 - <_> - 9 - - 6 8 2 2 - <_> - 9 - - 4 2 7 5 - <_> - 8 - - 4 10 7 7 - <_> - 5 - - 2 30 13 1 - <_> - 7 - - 6 5 4 6 - <_> - 0 - - 5 24 6 4 - <_> - 2 - - 4 14 6 12 - <_> - 3 - - 14 22 1 3 - <_> - 5 - - 6 15 1 5 - <_> - 0 - - 5 26 6 2 - <_> - 9 - - 4 20 3 1 - <_> - 3 - - 11 24 3 1 - <_> - 5 - - 9 4 4 9 - <_> - 7 - - 6 3 4 1 - <_> - 4 - - 5 4 6 5 - <_> - 2 - - 3 8 3 1 - <_> - 8 - - 5 24 2 1 - <_> - 7 - - 10 9 1 2 - <_> - 4 - - 11 28 4 3 - <_> - 0 - - 2 5 5 4 - <_> - 2 - - 11 10 1 16 - <_> - 0 - - 9 3 3 2 - <_> - 4 - - 1 5 7 18 - <_> - 4 - - 5 25 6 3 - <_> - 3 - - 10 0 4 15 - <_> - 2 - - 9 9 2 6 - <_> - 3 - - 5 0 9 1 - <_> - 3 - - 9 21 6 1 - <_> - 0 - - 5 19 8 2 - <_> - 2 - - 11 21 3 1 - <_> - 3 - - 7 14 1 2 - <_> - 5 - - 8 11 5 11 - <_> - 2 - - 9 17 1 2 - <_> - 1 - - 4 28 8 1 - <_> - 5 - - 4 8 3 2 - <_> - 0 - - 12 26 1 1 - <_> - 1 - - 5 13 6 13 - <_> - 3 - - 4 10 2 13 - <_> - 1 - - 7 5 2 4 - <_> - 2 - - 4 29 10 1 - <_> - 4 - - 5 21 5 4 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 18 5 10 - <_> - 2 - - 14 17 1 14 - <_> - 9 - - 8 15 1 2 - <_> - 1 - - 4 4 7 4 - <_> - 4 - - 7 3 2 4 - <_> - 4 - - 11 29 4 2 - <_> - 1 - - 8 11 2 1 - <_> - 2 - - 1 30 12 1 - <_> - 2 - - 6 7 5 2 - <_> - 1 - - 1 27 9 4 - <_> - 5 - - 14 2 1 2 - <_> - 0 - - 2 27 1 3 - <_> - 9 - - 1 1 7 3 - <_> - 1 - - 4 4 4 4 - <_> - 9 - - 8 8 1 1 - <_> - 5 - - 10 7 1 7 - <_> - 7 - - 11 0 4 9 - <_> - 2 - - 7 11 4 2 - <_> - 2 - - 3 24 9 4 - <_> - 5 - - 9 19 4 8 - <_> - 5 - - 5 21 1 5 - <_> - 8 - - 7 5 2 3 - <_> - 0 - - 7 12 3 5 - <_> - 8 - - 10 4 1 4 - <_> - 9 - - 6 15 2 2 - <_> - 5 - - 9 17 4 10 - <_> - 4 - - 1 9 8 1 - <_> - 5 - - 4 28 11 3 - <_> - 0 - - 7 0 3 8 - <_> - 5 - - 10 25 1 2 - <_> - 2 - - 6 10 3 1 - <_> - 3 - - 2 10 6 3 - <_> - 4 - - 12 22 3 2 - <_> - 2 - - 5 18 5 10 - <_> - 3 - - 14 2 1 22 - <_> - 4 - - 13 7 2 13 - <_> - 1 - - 7 28 5 1 - <_> - 1 - - 5 27 2 1 - <_> - 8 - - 7 7 3 1 - <_> - 4 - - 6 17 8 14 - <_> - 3 - - 3 2 9 1 - <_> - 7 - - 1 22 2 2 - <_> - 2 - - 7 30 7 1 - <_> - 3 - - 7 8 3 2 - <_> - 5 - - 8 10 6 3 - <_> - 8 - - 1 30 2 1 - <_> - 3 - - 7 14 1 2 - <_> - 2 - - 8 20 1 6 - <_> - 0 - - 6 18 6 10 - <_> - 2 - - 9 13 4 1 - <_> - 3 - - 11 20 4 4 - <_> - 2 - - 8 16 1 2 - <_> - 5 - - 9 9 4 4 - <_> - 2 - - 7 14 6 1 - <_> - 2 - - 1 10 12 6 - <_> - 7 - - 8 17 1 5 - <_> - 5 - - 0 21 5 3 - <_> - 8 - - 5 6 3 1 - <_> - 9 - - 4 8 7 17 - <_> - 8 - - 2 3 2 5 - <_> - 5 - - 0 30 8 1 - <_> - 4 - - 2 12 8 10 - <_> - 4 - - 4 27 8 1 - <_> - 7 - - 7 30 1 1 - <_> - 5 - - 11 9 1 6 - <_> - 5 - - 3 26 9 1 - <_> - 1 - - 3 10 10 1 - <_> - 0 - - 2 3 3 14 - <_> - 8 - - 7 11 5 3 - <_> - 7 - - 1 30 4 1 - <_> - 3 - - 11 19 2 6 - <_> - 3 - - 4 29 4 2 - <_> - 0 - - 5 24 4 3 - <_> - 2 - - 2 10 1 14 - <_> - 2 - - 14 1 1 11 - <_> - 5 - - 7 2 4 6 - <_> - 7 - - 6 3 4 1 - <_> - 3 - - 1 0 13 1 - <_> - 7 - - 6 5 9 3 - <_> - 2 - - 1 25 8 3 - <_> - 2 - - 9 23 1 8 - <_> - 9 - - 7 12 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 6 7 3 3 - <_> - 1 - - 3 29 4 1 - <_> - 0 - - 14 19 1 10 - <_> - 4 - - 14 1 1 26 - <_> - 2 - - 0 28 14 2 - <_> - 2 - - 4 20 9 7 - <_> - 5 - - 7 16 2 5 - <_> - 8 - - 4 6 8 2 - <_> - 0 - - 5 7 10 2 - <_> - 8 - - 6 0 3 3 - <_> - 9 - - 1 0 14 3 - <_> - 5 - - 4 3 6 1 - <_> - 9 - - 1 7 8 19 - <_> - 1 - - 4 28 7 1 - <_> - 9 - - 7 8 1 3 - <_> - 2 - - 5 5 10 2 - <_> - 4 - - 1 29 7 2 - <_> - 1 - - 9 10 1 3 - <_> - 3 - - 4 11 3 1 - <_> - 3 - - 0 7 9 15 - <_> - 0 - - 4 8 2 1 - <_> - 3 - - 12 25 2 1 - <_> - 2 - - 9 30 6 1 - <_> - 3 - - 1 25 12 2 - <_> - 3 - - 6 22 4 6 - <_> - 3 - - 11 24 1 1 - <_> - 0 - - 5 17 7 3 - <_> - 1 - - 2 27 5 1 - <_> - 2 - - 4 9 4 1 - <_> - 5 - - 3 28 5 1 - <_> - 1 - - 4 20 3 1 - <_> - 2 - - 3 5 6 24 - <_> - 7 - - 8 0 1 31 - <_> - 4 - - 7 2 2 15 - <_> - 2 - - 6 13 3 2 - <_> - 3 - - 4 19 4 6 - <_> - 9 - - 14 13 1 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 0 27 1 2 - <_> - 4 - - 3 12 9 15 - <_> - 9 - - 7 15 1 2 - <_> - 5 - - 9 7 4 10 - <_> - 5 - - 11 16 1 7 - <_> - 0 - - 3 28 6 1 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 13 17 1 5 - <_> - 4 - - 1 9 11 1 - <_> - 4 - - 6 4 9 5 - <_> - 2 - - 2 1 5 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 5 14 7 6 - <_> - 4 - - 6 29 8 2 - <_> - 1 - - 7 28 4 1 - <_> - 9 - - 6 23 3 7 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 20 1 7 - <_> - 8 - - 7 5 1 10 - <_> - 0 - - 5 3 6 6 - <_> - 8 - - 13 18 1 1 - <_> - 2 - - 4 23 5 4 - <_> - 5 - - 1 29 12 1 - <_> - 4 - - 6 22 2 4 - <_> - 1 - - 9 21 5 5 - <_> - 7 - - 10 28 2 2 - <_> - 1 - - 12 22 1 9 - <_> - 8 - - 7 5 2 3 - <_> - 5 - - 1 13 1 7 - <_> - 3 - - 0 27 1 3 - <_> - 3 - - 3 4 6 16 - <_> - 4 - - 2 28 9 1 - <_> - 0 - - 7 10 3 2 - <_> - 7 - - 12 6 2 1 - <_> - 1 - - 8 4 3 6 - <_> - 5 - - 7 20 8 5 - <_> - 7 - - 2 21 4 2 - <_> - 5 - - 11 29 4 2 - <_> - 5 - - 2 5 11 20 - <_> - 3 - - 10 18 1 3 - <_> - 4 - - 4 4 5 4 - <_> - 1 - - 6 10 6 3 - <_> - 3 - - 4 16 8 6 - <_> - 8 - - 11 20 2 9 - <_> - 1 - - 3 27 8 3 - <_> - 7 - - 7 19 3 5 - <_> - 2 - - 0 23 6 1 - <_> - 7 - - 14 23 1 6 - <_> - 1 - - 5 20 6 4 - <_> - 3 - - 5 8 1 18 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 8 8 4 - <_> - 1 - - 1 20 7 1 - <_> - 2 - - 13 2 2 22 - <_> - 2 - - 9 5 5 8 - <_> - 5 - - 7 17 2 1 - <_> - 3 - - 10 23 1 4 - <_> - 5 - - 7 23 7 5 - <_> - 5 - - 14 24 1 2 - <_> - 0 - - 5 6 7 2 - <_> - 3 - - 9 20 6 10 - <_> - 4 - - 0 30 13 1 - <_> - 2 - - 2 23 10 5 - <_> - 2 - - 4 8 4 3 - <_> - 7 - - 4 29 10 2 - <_> - 9 - - 7 17 2 1 - <_> - 7 - - 2 16 9 2 - <_> - 3 - - 0 20 4 10 - <_> - 8 - - 8 6 1 2 - <_> - 2 - - 4 2 3 2 - <_> - 4 - - 6 2 5 6 - <_> - 7 - - 7 5 2 1 - <_> - 0 - - 7 12 5 16 - <_> - 5 - - 5 2 7 21 - <_> - 3 - - 3 0 6 13 - <_> - 0 - - 4 7 2 2 - <_> - 0 - - 7 10 2 4 - <_> - 1 - - 4 27 2 1 - <_> - 9 - - 4 24 1 1 - <_> - 4 - - 1 3 1 16 - <_> - 2 - - 8 28 1 3 - <_> - 1 - - 8 12 2 14 - <_> - 0 - - 8 3 1 25 - <_> - 3 - - 3 9 2 14 - <_> - 0 - - 7 7 1 12 - <_> - 0 - - 0 2 7 25 - <_> - 4 - - 7 11 1 8 - <_> - 5 - - 7 29 8 1 - <_> - 4 - - 13 16 1 3 - <_> - 4 - - 7 7 4 5 - <_> - 3 - - 2 1 10 3 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 5 18 6 10 - <_> - 2 - - 13 13 2 13 - <_> - 2 - - 6 16 3 1 - <_> - 4 - - 1 9 12 22 - <_> - 5 - - 1 10 11 6 - <_> - 1 - - 2 23 3 2 - <_> - 5 - - 4 28 5 3 - <_> - 7 - - 2 28 12 1 - <_> - 1 - - 7 28 4 1 - <_> - 7 - - 5 11 1 1 - <_> - 3 - - 2 5 6 9 - <_> - 2 - - 7 23 3 6 - <_> - 8 - - 6 6 2 2 - <_> - 5 - - 6 6 2 4 - <_> - 8 - - 4 3 3 1 - <_> - 0 - - 2 28 13 1 - <_> - 7 - - 9 25 5 3 - <_> - 1 - - 11 23 1 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 5 19 6 3 - <_> - 1 - - 1 10 14 2 - <_> - 1 - - 5 7 6 1 - <_> - 3 - - 1 24 9 2 - <_> - 9 - - 8 11 1 9 - <_> - 9 - - 2 3 11 3 - <_> - 2 - - 8 23 7 1 - <_> - 2 - - 2 5 9 4 - <_> - 7 - - 8 21 3 1 - <_> - 2 - - 5 3 6 2 - <_> - 5 - - 9 11 5 4 - <_> - 2 - - 10 5 2 10 - <_> - 7 - - 4 27 6 4 - <_> - 1 - - 5 11 6 17 - <_> - 0 - - 9 29 2 1 - <_> - 4 - - 0 28 6 3 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 6 14 2 1 - <_> - 4 - - 10 15 4 1 - <_> - 9 - - 5 9 1 2 - <_> - 4 - - 5 2 3 5 - <_> - 8 - - 7 6 1 2 - <_> - 8 - - 9 30 6 1 - <_> - 8 - - 9 10 3 9 - <_> - 9 - - 10 29 5 1 - <_> - 3 - - 0 1 9 23 - <_> - 3 - - 3 9 3 8 - <_> - 5 - - 4 20 2 2 - <_> - 1 - - 7 28 3 1 - <_> - 2 - - 6 5 3 2 - <_> - 1 - - 6 21 3 5 - <_> - 3 - - 10 18 1 8 - <_> - 3 - - 4 19 6 8 - <_> - 1 - - 8 1 1 18 - <_> - 0 - - 7 10 3 1 - <_> - 7 - - 1 11 3 3 - <_> - 1 - - 6 2 2 1 - <_> - 0 - - 5 25 7 3 - <_> - 4 - - 12 5 2 1 - <_> - 3 - - 13 23 2 8 - <_> - 0 - - 5 5 6 3 - <_> - 9 - - 3 15 10 7 - <_> - 8 - - 8 6 1 2 - <_> - 7 - - 10 30 1 1 - <_> - 2 - - 10 29 3 2 - <_> - 4 - - 4 9 9 3 - <_> - 4 - - 5 4 7 3 - <_> - 3 - - 6 22 7 2 - <_> - 3 - - 5 3 1 28 - <_> - 5 - - 1 26 10 5 - <_> - 4 - - 7 20 3 4 - <_> - 2 - - 6 19 4 2 - <_> - 2 - - 5 19 4 11 - <_> - 3 - - 1 28 11 2 - <_> - 2 - - 2 20 2 4 - <_> - 3 - - 6 5 9 3 - <_> - 4 - - 9 7 4 24 - <_> - 3 - - 6 0 5 1 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 2 3 4 28 - <_> - 3 - - 2 0 9 2 - <_> - 4 - - 2 28 12 3 - <_> - 1 - - 11 22 3 8 - <_> - 9 - - 5 8 1 6 - <_> - 0 - - 4 8 2 2 - <_> - 7 - - 7 12 2 3 - <_> - 9 - - 7 14 4 15 - <_> - 1 - - 4 26 6 3 - <_> - 9 - - 5 9 5 2 - <_> - 8 - - 6 5 4 2 - <_> - 3 - - 0 28 9 1 - <_> - 2 - - 5 17 4 14 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 4 20 7 1 - <_> - 0 - - 10 14 3 9 - <_> - 9 - - 7 1 1 2 - <_> - 0 - - 13 15 1 8 - <_> - 0 - - 5 2 3 6 - <_> - 9 - - 8 13 2 5 - <_> - 1 - - 1 7 8 1 - <_> - 4 - - 7 3 2 2 - <_> - 4 - - 10 3 3 15 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 8 4 5 - <_> - 8 - - 7 9 2 1 - <_> - 4 - - 3 8 9 13 - <_> - 2 - - 7 30 8 1 - <_> - 2 - - 10 9 4 3 - <_> - 2 - - 4 18 10 10 - <_> - 4 - - 0 29 15 1 - <_> - 5 - - 13 16 1 14 - <_> - 1 - - 6 27 5 2 - <_> - 5 - - 0 15 3 16 - <_> - 4 - - 9 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 5 - - 2 13 1 9 - <_> - 3 - - 7 14 2 2 - <_> - 3 - - 1 10 14 4 - <_> - 0 - - 11 9 4 11 - <_> - 3 - - 0 21 15 1 - <_> - 8 - - 6 25 4 6 - <_> - 8 - - 7 7 3 1 - <_> - 3 - - 1 29 13 2 - <_> - 4 - - 9 9 6 3 - <_> - 1 - - 4 15 8 4 - <_> - 4 - - 7 18 2 2 - <_> - 5 - - 6 16 3 3 - <_> - 2 - - 1 11 6 15 - <_> - 1 - - 7 7 4 3 - <_> - 5 - - 8 4 4 20 - <_> - 1 - - 7 9 5 1 - <_> - 5 - - 13 8 1 22 - <_> - 1 - - 14 5 1 9 - <_> - 2 - - 9 21 4 10 - <_> - 8 - - 11 2 1 4 - <_> - 0 - - 7 20 1 4 - <_> - 5 - - 1 29 7 2 - <_> - 5 - - 7 16 1 3 - <_> - 1 - - 6 12 3 1 - <_> - 5 - - 7 10 7 1 - <_> - 9 - - 13 5 1 2 - <_> - 1 - - 6 26 5 4 - <_> - 2 - - 14 6 1 24 - <_> - 1 - - 13 29 2 2 - <_> - 9 - - 5 21 3 1 - <_> - 9 - - 5 4 6 4 - <_> - 2 - - 8 4 4 23 - <_> - 5 - - 5 28 8 2 - <_> - 5 - - 10 5 2 25 - <_> - 5 - - 14 24 1 6 - <_> - 4 - - 8 9 4 18 - <_> - 0 - - 8 9 1 1 - <_> - 2 - - 11 9 1 6 - <_> - 0 - - 3 15 9 15 - <_> - 0 - - 0 13 1 14 - <_> - 3 - - 5 30 2 1 - <_> - 9 - - 7 17 2 1 - <_> - 2 - - 5 4 6 6 - <_> - 5 - - 10 17 4 9 - <_> - 8 - - 7 5 2 3 - <_> - 2 - - 5 1 2 4 - <_> - 7 - - 4 30 2 1 - <_> - 1 - - 7 4 2 4 - <_> - 7 - - 10 10 1 4 - <_> - 2 - - 7 0 7 10 - <_> - 4 - - 3 6 10 17 - <_> - 3 - - 3 7 5 7 - <_> - 7 - - 11 27 3 2 - <_> - 0 - - 1 3 13 1 - <_> - 0 - - 7 0 3 8 - <_> - 1 - - 0 8 13 1 - <_> - 1 - - 9 23 1 1 - <_> - 3 - - 7 5 2 13 - <_> - 5 - - 2 10 2 6 - <_> - 5 - - 5 23 9 2 - <_> - 0 - - 7 9 1 19 - <_> - 8 - - 3 29 9 2 - <_> - 2 - - 8 30 5 1 - <_> - 7 - - 4 3 4 8 - <_> - 1 - - 3 27 8 3 - <_> - 2 - - 5 26 8 2 - <_> - 0 - - 0 15 1 13 - <_> - 4 - - 7 30 8 1 - <_> - 4 - - 5 4 7 3 - <_> - 7 - - 2 4 4 1 - <_> - 5 - - 8 4 5 9 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 3 28 3 2 - <_> - 5 - - 0 10 7 2 - <_> - 9 - - 10 9 1 2 - <_> - 9 - - 4 0 3 4 - <_> - 5 - - 13 21 2 5 - <_> - 0 - - 11 2 1 12 - <_> - 1 - - 11 21 3 10 - <_> - 4 - - 9 17 1 4 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 6 4 2 24 - <_> - 9 - - 12 28 1 1 - <_> - 3 - - 14 21 1 9 - <_> - 7 - - 13 0 1 26 - <_> - 0 - - 9 24 3 2 - <_> - 0 - - 7 19 4 9 - <_> - 2 - - 13 1 1 30 - <_> - 3 - - 9 16 2 15 - <_> - 5 - - 10 11 4 15 - <_> - 1 - - 9 15 6 13 - <_> - 3 - - 1 5 6 19 - <_> - 5 - - 4 19 1 10 - <_> - 5 - - 3 25 11 2 - <_> - 7 - - 5 29 6 1 - <_> - 3 - - 11 23 1 2 - <_> - 0 - - 0 3 8 10 - <_> - 2 - - 3 8 3 1 - <_> - 1 - - 8 11 2 1 - <_> - 1 - - 9 4 6 10 - <_> - 4 - - 1 2 14 10 - <_> - 4 - - 5 25 6 3 - <_> - 1 - - 5 18 4 2 - <_> - 4 - - 3 24 6 6 - <_> - 2 - - 3 1 7 27 - <_> - 1 - - 1 8 11 22 - <_> - 3 - - 9 0 4 2 - <_> - 2 - - 3 29 6 1 - <_> - 3 - - 2 24 12 4 - <_> - 4 - - 1 10 5 16 - <_> - 1 - - 5 27 6 4 - <_> - 9 - - 7 9 2 3 - <_> - 5 - - 3 7 7 13 - <_> - 8 - - 5 6 7 1 - <_> - 8 - - 7 6 2 5 - <_> - 9 - - 6 10 2 3 - <_> - 1 - - 8 4 2 5 - <_> - 7 - - 7 13 2 6 - <_> - 8 - - 10 26 3 2 - <_> - 4 - - 8 23 1 1 - <_> - 0 - - 3 29 5 2 - <_> - 4 - - 6 18 2 5 - <_> - 7 - - 3 19 1 12 - <_> - 4 - - 0 29 9 2 - <_> - 4 - - 2 15 6 13 - <_> - 2 - - 8 9 2 1 - <_> - 5 - - 8 0 6 7 - <_> - 8 - - 7 11 5 3 - <_> - 2 - - 7 8 4 2 - <_> - 1 - - 6 10 2 1 - <_> - 5 - - 10 4 4 4 - <_> - 4 - - 7 7 4 5 - <_> - 1 - - 2 24 3 1 - <_> - 4 - - 10 9 5 10 - <_> - 5 - - 2 21 1 10 - <_> - 3 - - 4 9 2 19 - <_> - 0 - - 0 2 1 28 - <_> - 2 - - 7 20 4 8 - <_> - 0 - - 7 10 3 1 - <_> - 5 - - 8 28 5 1 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 10 8 1 5 - <_> - 8 - - 8 3 1 1 - <_> - 7 - - 7 5 1 3 - <_> - 7 - - 0 27 15 1 - <_> - 3 - - 3 5 11 9 - <_> - 0 - - 13 15 2 1 - <_> - 0 - - 8 13 6 4 - <_> - 1 - - 9 28 1 1 - <_> - 9 - - 7 12 5 6 - <_> - 9 - - 6 2 1 5 - <_> - 7 - - 2 7 11 7 - <_> - 0 - - 1 17 1 14 - <_> - 0 - - 5 4 1 15 - <_> - 4 - - 1 29 12 1 - <_> - 2 - - 4 23 6 5 - <_> - 4 - - 3 8 1 17 - <_> - 2 - - 7 15 2 1 - <_> - 1 - - 3 28 7 1 - <_> - 8 - - 7 6 1 2 - <_> - 5 - - 9 1 1 12 - <_> - 1 - - 5 1 6 30 - <_> - 3 - - 5 1 1 30 - <_> - 3 - - 11 24 4 3 - <_> - 1 - - 4 10 7 4 - <_> - 4 - - 7 0 1 22 - <_> - 7 - - 4 27 11 2 - <_> - 2 - - 8 30 6 1 - <_> - 4 - - 3 20 10 5 - <_> - 0 - - 10 13 5 5 - <_> - 9 - - 7 7 1 8 - <_> - 7 - - 7 15 3 1 - <_> - 8 - - 1 10 14 3 - <_> - 1 - - 4 6 4 4 - <_> - 4 - - 1 6 6 3 - <_> - 0 - - 3 28 4 1 - <_> - 1 - - 5 27 4 2 - <_> - 5 - - 13 19 1 9 - <_> - 4 - - 1 9 14 2 - <_> - 2 - - 5 18 5 10 - <_> - 5 - - 14 0 1 7 - <_> - 4 - - 3 3 4 14 - <_> - 3 - - 4 29 5 2 - <_> - 2 - - 6 5 5 3 - <_> - 1 - - 3 8 9 1 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 13 9 6 - <_> - 1 - - 7 16 5 1 - <_> - 4 - - 12 27 2 4 - <_> - 2 - - 1 26 10 2 - <_> - 4 - - 7 12 2 11 - <_> - 0 - - 7 10 1 1 - <_> - 5 - - 9 9 5 4 - <_> - 8 - - 14 20 1 1 - <_> - 3 - - 1 22 2 7 - <_> - 3 - - 3 9 4 6 - <_> - 4 - - 6 22 4 4 - <_> - 5 - - 11 30 3 1 - <_> - 3 - - 4 22 3 4 - <_> - 5 - - 2 26 11 1 - <_> - 3 - - 6 15 3 1 - <_> - 0 - - 5 5 5 1 - <_> - 0 - - 6 12 4 15 - <_> - 2 - - 3 3 3 1 - <_> - 4 - - 2 9 10 20 - <_> - 4 - - 2 4 9 3 - <_> - 7 - - 8 20 1 4 - <_> - 7 - - 13 22 2 6 - <_> - 2 - - 6 1 4 27 - <_> - 3 - - 1 28 9 1 - <_> - 1 - - 3 11 9 7 - <_> - 8 - - 0 18 4 3 - <_> - 8 - - 6 6 2 2 - <_> - 9 - - 13 7 1 1 - <_> - 4 - - 6 2 3 17 - <_> - 9 - - 7 7 1 15 - <_> - 0 - - 6 22 6 6 - <_> - 9 - - 12 17 1 2 - <_> - 5 - - 14 24 1 2 - <_> - 7 - - 1 30 3 1 - <_> - 5 - - 8 10 2 5 - <_> - 8 - - 7 5 2 3 - <_> - 4 - - 9 14 2 5 - <_> - 8 - - 7 0 1 3 - <_> - 2 - - 10 5 2 10 - <_> - 5 - - 10 10 4 5 - <_> - 0 - - 6 0 7 8 - <_> - 1 - - 6 12 3 1 - <_> - 7 - - 2 11 6 10 - <_> - 4 - - 9 10 6 2 - <_> - 7 - - 1 30 3 1 - <_> - 3 - - 14 22 1 8 - <_> - 2 - - 6 2 3 7 - <_> - 2 - - 0 28 15 2 - <_> - 0 - - 6 16 7 11 - <_> - 1 - - 8 20 7 5 - <_> - 3 - - 10 18 1 8 - <_> - 4 - - 0 12 3 3 - <_> - 1 - - 7 4 2 4 - <_> - 8 - - 8 5 4 2 - <_> - 2 - - 5 1 2 4 - <_> - 8 - - 10 7 4 1 - <_> - 1 - - 3 26 8 5 - <_> - 7 - - 8 20 1 2 - <_> - 4 - - 1 0 10 23 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 0 23 4 6 - <_> - 5 - - 7 21 6 7 - <_> - 4 - - 0 30 13 1 - <_> - 1 - - 4 27 10 1 - <_> - 9 - - 6 9 4 4 - <_> - 8 - - 6 1 4 10 - <_> - 9 - - 14 19 1 1 - <_> - 9 - - 6 3 4 19 - <_> - 0 - - 8 9 1 1 - <_> - 3 - - 5 6 4 4 - <_> - 9 - - 8 15 1 3 - <_> - 0 - - 4 27 1 1 - <_> - 2 - - 5 25 4 3 - <_> - 1 - - 8 10 2 4 - <_> - 0 - - 3 9 3 1 - <_> - 7 - - 6 12 3 2 - <_> - 0 - - 0 15 4 13 - <_> - 2 - - 8 30 6 1 - <_> - 2 - - 8 20 3 11 - <_> - 0 - - 7 20 4 1 - <_> - 3 - - 2 0 9 2 - <_> - 0 - - 5 5 5 3 - <_> - 2 - - 6 10 4 4 - <_> - 4 - - 6 17 4 7 - <_> - 4 - - 8 6 3 17 - <_> - 1 - - 6 18 5 7 - <_> - 1 - - 5 28 6 1 - <_> - 7 - - 10 0 5 1 - <_> - 1 - - 13 6 2 8 - <_> - 4 - - 11 23 4 6 - <_> - 3 - - 5 12 2 15 - <_> - 3 - - 12 23 3 7 - <_> - 0 - - 7 10 3 1 - <_> - 0 - - 2 13 5 5 - <_> - 9 - - 0 0 4 1 - <_> - 2 - - 5 1 2 4 - <_> - 3 - - 9 20 3 2 - <_> - 4 - - 1 29 7 2 - <_> - 5 - - 2 3 9 11 - <_> - 3 - - 0 26 4 5 - <_> - 2 - - 0 11 1 5 - <_> - 0 - - 5 26 5 2 - <_> - 1 - - 8 12 1 3 - <_> - 0 - - 1 28 8 3 - <_> - 8 - - 7 6 1 2 - <_> - 9 - - 6 14 3 5 - <_> - 8 - - 13 7 2 21 - <_> - 2 - - 5 15 4 11 - <_> - 0 - - 9 26 6 2 - <_> - 5 - - 5 17 4 5 - <_> - 2 - - 10 0 3 22 - <_> - 7 - - 3 22 7 1 - <_> - 2 - - 8 2 7 7 - <_> - 3 - - 3 7 3 12 - <_> - 7 - - 8 5 1 1 - <_> - 3 - - 3 2 2 6 - <_> - 8 - - 5 6 3 1 - <_> - 0 - - 6 18 5 4 - <_> - 5 - - 9 29 6 2 - <_> - 4 - - 11 15 2 5 - <_> - 1 - - 8 27 2 1 - <_> - 4 - - 5 19 1 1 - <_> - 1 - - 7 9 5 1 - <_> - 4 - - 7 8 4 1 - <_> - 7 - - 4 28 5 1 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 15 2 14 - <_> - 5 - - 2 27 1 3 - <_> - 9 - - 7 15 1 2 - <_> - 9 - - 1 1 14 7 - <_> - 3 - - 12 19 3 9 - <_> - 5 - - 3 26 7 2 - <_> - 2 - - 1 0 4 11 - <_> - 1 - - 5 12 7 10 - <_> - 3 - - 1 6 8 4 - <_> - 2 - - 11 9 1 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 2 9 2 1 - <_> - 8 - - 5 10 5 6 - <_> - 8 - - 5 9 3 3 - <_> - 3 - - 2 28 8 3 - <_> - 7 - - 3 27 10 1 - <_> - 2 - - 4 29 6 1 - <_> - 5 - - 0 19 2 7 - <_> - 5 - - 10 8 2 17 - <_> - 2 - - 13 25 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 8 5 3 8 - <_> - 3 - - 5 21 4 7 - <_> - 4 - - 7 17 4 2 - <_> - 5 - - 7 30 4 1 - <_> - 8 - - 3 24 8 3 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 7 1 - <_> - 1 - - 0 13 8 18 - <_> - 5 - - 8 5 5 10 - <_> - 1 - - 6 9 7 6 - <_> - 4 - - 7 0 2 20 - <_> - 2 - - 8 16 1 1 - <_> - 2 - - 5 16 4 11 - <_> - 2 - - 8 10 1 5 - <_> - 5 - - 8 28 4 1 - <_> - 3 - - 7 26 7 1 - <_> - 2 - - 6 9 4 2 - <_> - 7 - - 8 5 4 3 - <_> - 7 - - 13 19 2 9 - <_> - 0 - - 1 9 3 5 - <_> - 3 - - 3 11 5 14 - <_> - 1 - - 3 17 7 9 - <_> - 3 - - 0 21 2 8 - <_> - 2 - - 8 26 4 1 - <_> - 0 - - 13 15 1 14 - <_> - 7 - - 7 27 7 1 - <_> - 4 - - 3 26 6 2 - <_> - 2 - - 3 29 6 1 - <_> - 4 - - 8 18 1 2 - <_> - 1 - - 7 3 5 5 - <_> - 4 - - 6 3 3 2 - <_> - 4 - - 0 27 5 4 - <_> - 5 - - 6 28 4 1 - <_> - 7 - - 5 7 10 2 - <_> - 1 - - 9 27 1 2 - <_> - 0 - - 7 19 3 7 - <_> - 7 - - 11 11 1 1 - <_> - 4 - - 6 7 1 16 - <_> - 7 - - 6 9 3 1 - <_> - 5 - - 4 28 11 3 - <_> - 7 - - 7 5 6 3 - <_> - 2 - - 0 25 10 2 - <_> - 4 - - 12 4 2 17 - <_> - 9 - - 6 19 5 2 - <_> - 8 - - 6 6 2 2 - <_> - 4 - - 6 21 3 2 - <_> - 2 - - 5 5 10 2 - <_> - 5 - - 2 0 7 2 - <_> - 5 - - 9 4 4 9 - <_> - 2 - - 6 10 4 4 - <_> - 0 - - 10 8 2 2 - <_> - 0 - - 9 6 4 3 - <_> - 2 - - 2 18 9 11 - <_> - 4 - - 3 9 12 2 - <_> - 4 - - 3 11 4 9 - <_> - 0 - - 6 13 3 4 - <_> - 1 - - 5 27 10 1 - <_> - 2 - - 8 28 5 1 - <_> - 8 - - 1 11 6 1 - <_> - 9 - - 7 9 2 7 - <_> - 8 - - 0 17 14 7 - <_> - 0 - - 7 10 1 1 - <_> - 0 - - 5 3 1 20 - <_> - 0 - - 4 6 1 19 - <_> - 4 - - 6 23 4 6 - <_> - 2 - - 6 5 1 3 - <_> - 5 - - 3 29 3 2 - <_> - 1 - - 8 4 5 20 - <_> - 1 - - 5 28 7 1 - <_> - 8 - - 0 3 4 23 - <_> - 4 - - 5 28 7 3 - <_> - 2 - - 5 25 5 2 - <_> - 5 - - 2 3 1 6 - <_> - 3 - - 9 8 2 1 - <_> - 3 - - 4 12 2 8 - <_> - 2 - - 14 12 1 15 - <_> - 5 - - 10 10 5 9 - <_> - 5 - - 10 3 4 6 - <_> - 4 - - 3 9 3 9 - <_> - 1 - - 7 6 2 10 - <_> - 4 - - 4 6 9 6 - <_> - 3 - - 4 18 11 11 - <_> - 1 - - 8 10 2 4 - <_> - 2 - - 10 8 3 4 - <_> - 7 - - 1 30 3 1 - <_> - 2 - - 12 12 2 19 - <_> - 5 - - 3 19 9 3 - <_> - 0 - - 4 9 1 6 - <_> - 5 - - 5 21 1 4 - <_> - 3 - - 2 12 9 9 - <_> - 0 - - 6 19 4 10 - <_> - 5 - - 10 26 1 3 - <_> - 0 - - 6 15 2 3 - <_> - 1 - - 11 22 2 8 - <_> - 9 - - 2 22 1 2 - <_> - 5 - - 12 30 3 1 - <_> - 2 - - 6 0 7 16 - <_> - 3 - - 8 21 2 1 - <_> - 7 - - 5 10 1 4 - <_> - 7 - - 3 5 1 1 - <_> - 1 - - 4 6 7 3 - <_> - 5 - - 5 1 1 2 - <_> - 4 - - 7 3 2 2 - <_> - 0 - - 7 18 4 2 - <_> - 9 - - 8 15 1 2 - <_> - 2 - - 4 20 9 4 - <_> - 8 - - 5 5 6 6 - <_> - 3 - - 4 28 7 2 - <_> - 5 - - 1 20 1 6 - <_> - 2 - - 2 26 7 1 - <_> - 0 - - 5 15 7 13 - <_> - 2 - - 9 3 4 1 - <_> - 9 - - 5 3 7 4 - <_> - 2 - - 1 23 7 6 - <_> - 4 - - 5 2 7 8 - <_> - 4 - - 10 14 4 2 - <_> - 3 - - 6 3 5 4 - <_> - 9 - - 13 30 2 1 - <_> - 3 - - 7 12 2 5 - <_> - 1 - - 6 26 5 4 - <_> - 7 - - 7 19 2 4 - <_> - 1 - - 6 29 5 2 - <_> - 5 - - 3 10 11 5 - <_> - 9 - - 9 21 3 10 - <_> - 2 - - 12 28 3 2 - <_> - 4 - - 3 0 5 18 - <_> - 5 - - 6 0 7 4 - <_> - 5 - - 0 29 14 2 - <_> - 5 - - 1 4 6 10 - <_> - 4 - - 8 22 1 4 - <_> - 3 - - 8 9 7 12 - <_> - 9 - - 6 16 4 2 - <_> - 8 - - 8 6 1 2 - <_> - 3 - - 0 14 3 15 - <_> - 2 - - 7 20 3 1 - <_> - 8 - - 1 29 13 2 - <_> - 3 - - 0 3 4 23 - <_> - 7 - - 2 5 8 4 - <_> - 2 - - 8 16 1 2 - <_> - 0 - - 6 22 2 5 - <_> - 3 - - 1 3 11 12 - <_> - 5 - - 0 15 15 9 - <_> - 9 - - 14 1 1 4 - <_> - 0 - - 7 10 3 1 - <_> - 1 - - 3 28 10 1 - <_> - 4 - - 0 29 10 1 - <_> - 0 - - 8 26 7 3 - <_> - 0 - - 6 24 4 4 - <_> - 1 - - 0 23 15 2 - <_> - 3 - - 2 0 9 2 - <_> - 8 - - 7 5 2 3 - <_> - 9 - - 6 20 9 2 - <_> - 5 - - 7 23 7 5 - <_> - 7 - - 6 0 5 1 - <_> - 5 - - 2 30 6 1 - <_> - 3 - - 5 5 1 14 - <_> - 4 - - 2 8 1 11 - <_> - 0 - - 1 2 7 20 - <_> - 4 - - 3 6 2 8 - <_> - 5 - - 4 16 5 7 - <_> - 0 - - 6 18 6 10 - <_> - 3 - - 9 20 2 9 - <_> - 0 - - 8 27 7 2 - <_> - 4 - - 9 20 4 1 - <_> - 2 - - 5 14 6 15 - <_> - 7 - - 3 4 10 10 - <_> - 5 - - 1 18 14 13 - <_> - 1 - - 6 11 6 1 - <_> - 1 - - 7 14 6 3 - <_> - 9 - - 6 11 3 4 - <_> - 0 - - 2 27 1 3 - <_> - 5 - - 9 4 1 11 - <_> - 2 - - 3 25 8 2 - <_> - 4 - - 4 12 6 13 - <_> - 1 - - 7 23 2 6 - <_> - 1 - - 5 15 6 2 - <_> - 2 - - 10 19 1 10 - <_> - 2 - - 5 25 4 3 - <_> - 5 - - 9 5 4 13 - <_> - 1 - - 7 3 2 6 - <_> - 4 - - 4 28 8 2 - <_> - 0 - - 7 11 1 5 - <_> - 8 - - 8 6 1 2 - <_> - 1 - - 7 1 3 2 - <_> - 8 - - 10 4 1 4 - <_> - 3 - - 5 27 10 3 - <_> - 7 - - 2 28 9 1 - <_> - 2 - - 7 17 3 5 - <_> - 4 - - 0 30 5 1 - <_> - 2 - - 8 11 1 7 - <_> - 9 - - 6 16 1 3 - <_> - 9 - - 2 0 11 1 - <_> - 0 - - 6 3 5 1 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 7 29 1 2 - <_> - 5 - - 2 18 11 3 - <_> - 2 - - 3 8 3 1 - <_> - 3 - - 5 0 1 27 - <_> - 7 - - 12 11 2 1 - <_> - 5 - - 1 28 9 3 - <_> - 0 - - 6 19 2 12 - <_> - 2 - - 8 28 5 1 - <_> - 3 - - 0 5 3 23 - <_> - 4 - - 7 18 2 2 - <_> - 1 - - 4 17 8 2 - <_> - 4 - - 6 29 5 2 - <_> - 0 - - 4 7 2 4 - <_> - 9 - - 7 1 1 2 - <_> - 2 - - 10 0 1 19 - <_> - 9 - - 8 15 1 7 - <_> - 4 - - 6 22 4 3 - <_> - 1 - - 7 3 2 6 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 6 1 4 - <_> - 8 - - 1 10 1 6 - <_> - 1 - - 6 12 3 1 - <_> - 1 - - 3 3 7 3 - <_> - 8 - - 7 28 3 3 - <_> - 4 - - 9 18 2 4 - <_> - 1 - - 9 18 4 11 - <_> - 4 - - 6 21 4 1 - <_> - 5 - - 9 9 4 20 - <_> - 2 - - 13 21 2 5 - <_> - 0 - - 13 21 2 1 - <_> - 5 - - 6 28 5 2 - <_> - 2 - - 1 26 10 2 - <_> - 1 - - 4 3 2 19 - <_> - 9 - - 9 12 1 2 - <_> - 8 - - 6 6 2 2 - <_> - 3 - - 11 20 1 10 - <_> - 4 - - 6 4 5 3 - <_> - 7 - - 6 3 9 2 - <_> - 3 - - 3 1 6 14 - <_> - 4 - - 2 9 12 12 - <_> - 4 - - 7 10 2 10 - <_> - 7 - - 6 27 8 2 - <_> - 2 - - 6 10 3 1 - <_> - 2 - - 7 10 7 7 - <_> - 2 - - 5 30 10 1 - <_> - 5 - - 9 25 2 3 - <_> - 9 - - 3 28 12 1 - <_> - 2 - - 10 25 1 4 - <_> - 1 - - 5 20 2 1 - <_> - 5 - - 9 6 6 7 - <_> - 0 - - 11 10 1 12 - <_> - 3 - - 7 14 1 2 - <_> - 3 - - 3 10 5 4 - <_> - 3 - - 0 0 9 4 - <_> - 8 - - 2 21 5 1 - <_> - 8 - - 6 5 4 2 - <_> - 1 - - 7 28 4 1 - <_> - 4 - - 7 23 1 2 - <_> - 1 - - 7 24 2 4 - <_> - 2 - - 6 13 6 18 - <_> - 0 - - 5 28 8 1 - <_> - 0 - - 11 20 1 2 - <_> - 0 - - 7 8 2 3 - <_> - 2 - - 6 6 4 3 - <_> - 1 - - 9 10 1 3 - <_> - 1 - - 8 4 2 5 - <_> - 3 - - 2 21 7 6 - <_> - 3 - - 0 24 11 3 - <_> - 4 - - 3 28 7 2 - <_> - 2 - - 11 11 2 3 - <_> - 0 - - 9 3 3 2 - <_> - 5 - - 6 10 4 10 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 6 4 5 20 - <_> - 0 - - 6 24 7 3 - <_> - 8 - - 8 18 1 1 - <_> - 1 - - 2 2 5 14 - <_> - 0 - - 4 25 1 3 - <_> - 5 - - 8 3 4 11 - <_> - 7 - - 11 13 1 3 - <_> - 5 - - 3 0 12 1 - <_> - 4 - - 11 13 3 7 - <_> - 5 - - 4 28 10 2 - <_> - 2 - - 11 19 1 12 - <_> - 0 - - 5 20 1 3 - <_> - 5 - - 10 8 3 19 - <_> - 3 - - 0 26 6 1 - <_> - 2 - - 0 12 2 4 - <_> - 4 - - 7 8 5 6 - <_> - 5 - - 6 8 4 6 - <_> - 1 - - 4 7 6 1 - <_> - 9 - - 8 9 1 2 - <_> - 3 - - 4 11 11 5 - <_> - 8 - - 8 6 1 2 - <_> - 5 - - 0 14 2 15 - <_> - 0 - - 4 5 10 2 - <_> - 5 - - 7 12 1 3 - <_> - 3 - - 4 1 2 25 - <_> - 8 - - 12 18 2 2 - <_> - 3 - - 0 27 3 3 - <_> - 2 - - 6 17 3 11 - <_> - 1 - - 7 28 3 1 - <_> - 4 - - 5 18 5 2 - <_> - 0 - - 8 16 3 6 - <_> - 2 - - 7 23 2 2 - <_> - 0 - - 9 8 3 5 - <_> - 0 - - 7 19 6 4 - <_> - 0 - - 3 12 12 3 - <_> - 3 - - 8 18 1 1 - <_> - 1 - - 2 6 9 3 - <_> - 2 - - 7 2 5 2 - <_> - 1 - - 5 9 1 2 - <_> - 4 - - 0 0 11 14 - <_> - 2 - - 7 8 4 2 - <_> - 2 - - 8 9 2 1 - <_> - 2 - - 3 25 7 3 - <_> - 1 - - 5 27 5 1 - <_> - 0 - - 5 2 3 6 - <_> - 7 - - 0 19 7 2 - <_> - 2 - - 5 1 1 4 - <_> - 2 - - 3 22 1 2 - <_> - 5 - - 8 9 4 4 - <_> - 7 - - 4 30 3 1 - <_> - 4 - - 4 9 9 3 - <_> - 2 - - 7 11 2 3 - <_> - 0 - - 10 24 1 1 - <_> - 7 - - 1 27 4 2 - <_> - 1 - - 14 8 1 5 - <_> - 0 - - 12 22 3 7 - <_> - 4 - - 7 0 2 18 - <_> - 7 - - 8 20 1 2 - <_> - 8 - - 8 4 2 26 - <_> - 9 - - 8 15 1 3 - <_> - 1 - - 0 5 15 19 - <_> - 2 - - 4 9 4 1 - <_> - 8 - - 7 5 2 3 - <_> - 8 - - 5 6 3 1 - <_> - 8 - - 14 12 1 4 - <_> - 2 - - 1 6 10 1 - <_> - 0 - - 11 25 1 3 - <_> - 1 - - 6 19 4 8 - <_> - 7 - - 1 14 8 4 - <_> - 3 - - 0 25 11 2 - <_> - 9 - - 2 29 13 1 - <_> - 0 - - 3 27 1 4 - <_> - 1 - - 7 27 4 4 - <_> - 4 - - 5 4 7 3 - <_> - 0 - - 7 11 2 3 - <_> - 0 - - 8 17 4 4 - <_> - 2 - - 13 8 1 14 - <_> - 3 - - 13 26 2 4 - <_> - 0 - - 3 2 6 6 - <_> - 2 - - 5 5 7 16 - <_> - 2 - - 2 8 4 1 - <_> - 3 - - 4 0 1 14 - <_> - 9 - - 6 0 6 2 - <_> - 9 - - 5 14 2 4 - <_> - 1 - - 1 3 13 1 - <_> - 8 - - 6 6 2 2 - <_> - 8 - - 4 26 8 2 - <_> - 3 - - 8 17 4 1 - <_> - 4 - - 2 2 11 2 - <_> - 0 - - 6 16 6 10 - <_> - 9 - - 0 22 1 1 - <_> - 0 - - 4 29 3 2 - <_> - 4 - - 9 22 6 8 - <_> - 1 - - 8 26 4 3 - <_> - 3 - - 5 1 7 11 - <_> - 4 - - 7 29 3 1 - <_> - 4 - - 3 12 9 15 - <_> - 7 - - 0 28 14 3 - <_> - 2 - - 8 8 4 1 - <_> - 7 - - 6 9 3 1 - <_> - 7 - - 8 30 1 1 - <_> - 5 - - 4 30 11 1 - <_> - 5 - - 3 5 12 16 - <_> - 5 - - 12 13 1 6 - <_> - 0 - - 7 10 3 2 - <_> - 0 - - 3 0 4 14 - <_> - 2 - - 4 5 3 4 - <_> - 2 - - 5 19 4 1 - <_> - 1 - - 6 10 3 2 - <_> - 5 - - 1 1 12 1 - <_> - 9 - - 10 19 2 4 - <_> - 9 - - 1 0 13 27 - <_> - 8 - - 8 3 1 5 - <_> - 1 - - 7 28 3 1 - <_> - 9 - - 8 9 2 5 - <_> - 1 - - 5 4 6 9 - <_> - 7 - - 6 3 4 1 - <_> - 7 - - 14 24 1 5 - <_> - 3 - - 2 17 1 12 - <_> - 0 - - 4 14 7 16 - <_> - 1 - - 6 2 1 25 - <_> - 0 - - 0 13 4 16 - <_> - 4 - - 12 8 3 4 - <_> - 0 - - 0 18 13 4 - <_> - 8 - - 2 30 1 1 - <_> - 8 - - 7 7 3 1 - <_> - 9 - - 10 28 1 2 - <_> - 8 - - 11 1 3 10 - <_> - 4 - - 1 30 4 1 - <_> - 1 - - 2 22 5 8 - <_> - 9 - - 4 25 6 6 - <_> - 0 - - 4 6 1 6 - <_> - 5 - - 12 30 3 1 - <_> - 3 - - 7 10 1 1 - <_> - 2 - - 4 26 7 2 - <_> - 1 - - 5 1 4 3 - <_> - 4 - - 9 20 1 4 - <_> - 3 - - 2 2 7 9 - <_> - 7 - - 13 0 2 3 - <_> - 8 - - 6 6 1 2 - <_> - 3 - - 3 28 8 2 - <_> - 7 - - 13 24 1 3 - <_> - 2 - - 3 29 9 1 - <_> - 7 - - 7 13 3 1 - <_> - 7 - - 1 0 4 5 - <_> - 0 - - 5 5 6 3 - <_> - 0 - - 4 3 9 2 - <_> - 3 - - 2 17 2 2 - <_> - 0 - - 12 5 1 18 - <_> - 9 - - 7 10 1 1 - <_> - 9 - - 3 5 9 1 - <_> - 8 - - 8 12 4 1 - <_> - 3 - - 3 9 3 18 - <_> - 7 - - 8 26 1 1 - <_> - 1 - - 9 10 1 3 - <_> - 4 - - 5 10 5 21 - <_> - 1 - - 9 27 2 2 - <_> - 7 - - 6 9 3 1 - <_> - 2 - - 4 21 6 7 - <_> - 4 - - 2 18 9 8 - <_> - 5 - - 4 24 10 7 - <_> - 4 - - 6 4 5 3 - <_> - 2 - - 11 23 4 1 - <_> - 3 - - 5 3 1 28 - <_> - 9 - - 6 20 1 3 - <_> - 9 - - 4 25 5 2 - <_> - 4 - - 3 0 10 21 - <_> - 5 - - 9 11 6 17 - <_> - 0 - - 1 28 14 2 - <_> - 2 - - 6 10 3 1 - <_> - 0 - - 6 25 5 2 - <_> - 0 - - 6 27 7 1 - <_> - 8 - - 4 6 7 2 - <_> - 4 - - 12 15 3 5 - <_> - 3 - - 8 13 1 5 - <_> - 0 - - 6 22 2 5 - <_> - 4 - - 2 3 6 11 - <_> - 8 - - 1 17 6 10 - <_> - 9 - - 3 28 5 1 - <_> - 4 - - 0 30 10 1 - <_> - 1 - - 6 25 3 4 - <_> - 5 - - 10 8 3 8 - <_> - 7 - - 13 0 2 25 - <_> - 7 - - 5 30 8 1 - <_> - 3 - - 6 21 1 3 - <_> - 9 - - 6 8 3 4 - <_> - 9 - - 6 5 3 3 - <_> - 5 - - 4 29 10 1 - <_> - 1 - - 9 23 1 3 - <_> - 5 - - 9 11 4 20 - <_> - 9 - - 0 22 11 1 - <_> - 1 - - 5 9 1 2 - <_> - 5 - - 7 26 4 1 - <_> - 0 - - 6 23 1 7 - <_> - 3 - - 10 25 2 1 - <_> - 2 - - 3 29 6 2 - <_> - 1 - - 13 2 1 14 - <_> - 3 - - 6 26 8 2 - <_> - 1 - - 11 3 1 5 - <_> - 4 - - 3 12 12 19 - <_> - 1 - - 5 28 6 1 - <_> - 3 - - 10 30 5 1 - <_> - 7 - - 0 26 5 4 - <_> - 1 - - 5 11 3 2 - <_> - 0 - - 3 1 4 14 - <_> - 1 - - 7 4 2 4 - <_> - 3 - - 3 28 8 2 - <_> - 0 - - 7 19 3 7 - <_> - 4 - - 1 29 9 2 - <_> - 0 - - 6 10 3 2 - <_> - 5 - - 8 3 5 8 - <_> - 8 - - 7 4 1 10 - <_> - 1 - 1024 - - <_> - -9.1824179887771606e-01 - - 1 2 0 2.3365000000000000e+03 0 -1 1 8.3500000000000000e+01 - -2 -3 2 2.9050000000000000e+02 - - -1.9275911152362823e-01 -9.1824179887771606e-01 - 7.1353024244308472e-01 -4.2490604519844055e-01 - <_> - -1.3566842079162598e+00 - - 1 2 3 4.5500000000000000e+01 0 -1 4 5.6350000000000000e+02 - -2 -3 5 1.5150000000000000e+02 - - -5.7629632949829102e-01 -9.8518949747085571e-01 - 5.2551275491714478e-01 -4.3844240903854370e-01 - <_> - -1.6601251363754272e+00 - - 1 2 6 1.6500000000000000e+01 0 -1 7 1.3417500000000000e+04 - -2 -3 8 3.2850000000000000e+02 - - -1.4283974468708038e-01 -7.6407837867736816e-01 - 6.7369973659515381e-01 -3.0344095826148987e-01 - <_> - -1.7210527658462524e+00 - - 1 2 9 8.3500000000000000e+01 0 -1 10 5.7950000000000000e+02 - -2 -3 11 5.2165000000000000e+03 - - 2.7889367938041687e-01 -7.9177212715148926e-01 - -5.5426341295242310e-01 4.3222227692604065e-01 - <_> - -1.8265457153320312e+00 - - 1 2 12 1.0500000000000000e+01 0 -1 13 2.2500000000000000e+01 - -2 -3 14 2.4415000000000000e+03 - - -4.9315950274467468e-01 5.7787740230560303e-01 - -5.9864276647567749e-01 1.2489826977252960e-01 - <_> - -1.6793980598449707e+00 - - 1 2 15 1.8205000000000000e+03 0 -1 16 2.2445000000000000e+03 - -2 -3 17 2.5000000000000000e+00 - - 3.1089431140571833e-03 8.0035644769668579e-01 - 9.4315350055694580e-02 -5.7833504676818848e-01 - <_> - -1.5442515611648560e+00 - - 1 2 18 3.4500000000000000e+01 0 -1 19 4293. -2 -3 20 - 1.5545000000000000e+03 - - -6.1589881777763367e-02 -9.2765086889266968e-01 - 2.9719692468643188e-01 -6.1971640586853027e-01 - <_> - -1.8196758031845093e+00 - - 1 2 21 1.1500000000000000e+01 0 -1 22 2.1500000000000000e+01 - -2 -3 23 6.5500000000000000e+01 - - -4.4309207797050476e-01 4.5466747879981995e-01 - -6.7477458715438843e-01 -2.8885286301374435e-02 - <_> - -1.6610682010650635e+00 - - 1 2 24 5.0950000000000000e+02 0 -1 25 27777. -2 -3 26 - 2.4715000000000000e+03 - - 5.2616196870803833e-01 -4.0959128737449646e-01 - 5.7547372579574585e-01 -3.0137240886688232e-01 - <_> - -1.5959914922714233e+00 - - 1 2 27 5.0000000000000000e-01 0 -1 28 2.5000000000000000e+00 - -2 -3 29 1.7450000000000000e+02 - - -7.2784364223480225e-01 4.9311363697052002e-01 - -6.9787085056304932e-01 -1.9121825695037842e-02 - <_> - -1.1109679937362671e+00 - - 1 2 30 1.7500000000000000e+01 0 -1 31 1.0500000000000000e+01 - -2 -3 32 1.6835000000000000e+03 - - -6.9948041439056396e-01 4.8122453689575195e-01 - -3.8041490316390991e-01 7.8814607858657837e-01 - <_> - -1.3001022338867188e+00 - - 1 2 33 5.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 - -2 -3 35 4.3500000000000000e+01 - - -6.2981390953063965e-01 4.1833153367042542e-01 - -5.5634695291519165e-01 2.0092706382274628e-01 - <_> - -1.2552416324615479e+00 - - 1 2 36 1.5000000000000000e+00 0 -1 37 6.0500000000000000e+01 - -2 -3 38 3.5000000000000000e+00 - - -2.3229536414146423e-01 4.8632022738456726e-01 - 1.0821102559566498e-01 -5.4847836494445801e-01 - <_> - -9.5746147632598877e-01 - - 1 2 39 5.0000000000000000e-01 0 -1 40 5.5000000000000000e+00 - -2 -3 41 1.5500000000000000e+01 - - -9.0162736177444458e-01 3.7442612648010254e-01 - -1.9469287246465683e-02 -6.7447566986083984e-01 - <_> - -8.0001801252365112e-01 - - 1 2 42 3.7500000000000000e+01 0 -1 43 3.1595000000000000e+03 - -2 -3 44 1.2465000000000000e+03 - - 1.6209787130355835e-01 -9.0783798694610596e-01 - 2.1256938576698303e-01 -7.1468418836593628e-01 - <_> - -1.2121976613998413e+00 - - 1 2 45 5.2500000000000000e+01 0 -1 46 5.0000000000000000e-01 - -2 -3 47 7606. - - 3.2595899701118469e-01 -4.1217961907386780e-01 - -1.9886784255504608e-01 7.2802597284317017e-01 - <_> - -1.0095448493957520e+00 - - 1 2 48 1.2645000000000000e+03 0 -1 49 1.3995000000000000e+03 - -2 -3 50 17217. - - 1.4752689003944397e-01 -4.5374435186386108e-01 - 7.4328523874282837e-01 -3.0514815449714661e-01 - <_> - -8.2125085592269897e-01 - - 1 2 51 1.2450000000000000e+02 0 -1 52 4.5000000000000000e+00 - -2 -3 53 6.5500000000000000e+01 - - -9.2579865455627441e-01 1.8829397857189178e-01 - 6.2581911683082581e-02 -9.3276327848434448e-01 - <_> - -8.5726839303970337e-01 - - 1 2 54 1.2500000000000000e+01 0 -1 55 3.5000000000000000e+00 - -2 -3 56 2.4500000000000000e+01 - - -9.3079727888107300e-01 5.4834127426147461e-01 - -7.4245822429656982e-01 -3.6017529666423798e-02 - <_> - -3.7141740322113037e-01 - - 1 2 57 2.5000000000000000e+00 0 -1 58 9.0500000000000000e+01 - -2 -3 59 1.1450000000000000e+02 - - -2.6328250765800476e-01 4.8585096001625061e-01 - -4.2119786143302917e-01 3.4775453805923462e-01 - <_> - -2.9893672466278076e-01 - - 1 2 60 1.8150000000000000e+02 0 -1 61 1.6500000000000000e+01 - -2 -3 62 4.3500000000000000e+01 - - 3.9467984437942505e-01 -2.8166392445564270e-01 - -6.6281062364578247e-01 1.6430251300334930e-02 - <_> - -5.2570968866348267e-01 - - 1 2 63 2.8935000000000000e+03 0 -1 64 7.5000000000000000e+00 - -2 -3 65 10970. - - 2.7466580271720886e-01 -8.6028146743774414e-01 - 3.1712412834167480e-01 -2.8514662384986877e-01 - <_> - -3.3981230854988098e-01 - - 1 2 66 4.3500000000000000e+01 0 -1 67 5.0500000000000000e+01 - -2 -3 68 1.2950000000000000e+02 - - 1.5071904659271240e-01 -6.7942529916763306e-01 - 3.4536096453666687e-01 -5.4448747634887695e-01 - <_> - -3.2909783720970154e-01 - - 1 2 69 4.0500000000000000e+01 0 -1 70 9.8750000000000000e+02 - -2 -3 71 4.5000000000000000e+00 - - -2.0841991528868675e-02 -6.2886476516723633e-01 - 7.4424326419830322e-01 9.9408831447362900e-03 - <_> - -6.2298193573951721e-02 - - 1 2 72 4.6085000000000000e+03 0 -1 73 3.8500000000000000e+01 - -2 -3 74 5.7850000000000000e+02 - - -7.5020188093185425e-01 5.4516482353210449e-01 - 5.7250261306762695e-01 -9.2801190912723541e-02 - <_> - -1.5894679725170135e-01 - - 1 2 75 5.0000000000000000e-01 0 -1 76 1.5000000000000000e+00 - -2 -3 77 2.5750000000000000e+02 - - -7.4547845125198364e-01 4.9561309814453125e-01 - 5.8993577957153320e-01 -3.1674036383628845e-01 - <_> - 4.0653568506240845e-01 - - 1 2 78 2.5335000000000000e+03 0 -1 79 2.4500000000000000e+01 - -2 -3 80 8.9905000000000000e+03 - - 2.6614660024642944e-01 -3.2352310419082642e-01 - 6.4184278249740601e-01 -3.7356415390968323e-01 - <_> - -1.8076049163937569e-03 - - 1 2 81 5.0000000000000000e-01 0 -1 82 1.2500000000000000e+01 - -2 -3 83 2.4500000000000000e+01 - - -4.9844339489936829e-01 4.9451184272766113e-01 - -5.1162499189376831e-01 1.4680899679660797e-01 - <_> - 2.9161420464515686e-01 - - 1 2 84 1.3500000000000000e+01 0 -1 85 1.2500000000000000e+01 - -2 -3 86 1.5115000000000000e+03 - - -7.0512425899505615e-01 4.7449973225593567e-01 - -4.5257037878036499e-01 1.9849643111228943e-01 - <_> - 2.6676848530769348e-01 - - 1 2 87 5.0500000000000000e+01 0 -1 88 6.5500000000000000e+01 - -2 -3 89 1.4650000000000000e+02 - - -2.0592364668846130e-01 3.0830872058868408e-01 - -8.7131351232528687e-01 8.3726328611373901e-01 - <_> - 1.9189073145389557e-01 - - 1 2 90 3.6050000000000000e+02 0 -1 91 1.0350000000000000e+02 - -2 -3 92 7.4500000000000000e+01 - - -8.2260921597480774e-02 5.0565969944000244e-01 - -9.1390937566757202e-01 -1.8902081251144409e-01 - <_> - 5.3643327951431274e-01 - - 1 2 93 2.0500000000000000e+01 0 -1 94 4.4500000000000000e+01 - -2 -3 95 7.3785000000000000e+03 - - -8.0922812223434448e-01 3.4454253315925598e-01 - -1.5407036058604717e-02 -7.4269419908523560e-01 - <_> - 4.3825522065162659e-01 - - 1 2 96 1.0224500000000000e+04 0 -1 97 4.5000000000000000e+00 - -2 -3 98 4.0035000000000000e+03 - - 2.9326722025871277e-01 -3.9492443203926086e-01 - 6.2416630983352661e-01 -1.4834968745708466e-01 - <_> - 9.0073168277740479e-01 - - 1 2 99 2.5000000000000000e+00 0 -1 100 - 3.8395000000000000e+03 -2 -3 101 5.5000000000000000e+00 - - 6.1362767219543457e-01 -5.9424567967653275e-02 - -6.8450838327407837e-01 2.6574308052659035e-02 - <_> - 1.0332926511764526e+00 - - 1 2 102 5.4500000000000000e+01 0 -1 103 - 5.0000000000000000e-01 -2 -3 104 4.5000000000000000e+00 - - 1.4594553411006927e-01 -8.0310869216918945e-01 - 4.9081337451934814e-01 -1.0566046833992004e-01 - <_> - 1.2107890844345093e+00 - - 1 2 105 2.5000000000000000e+00 0 -1 106 608. -2 -3 107 - 1.0250000000000000e+02 - - -6.9540244340896606e-01 8.6690729856491089e-01 - 1.7749644815921783e-01 -8.1727051734924316e-01 - <_> - 1.1315129995346069e+00 - - 1 2 108 1.0450000000000000e+02 0 -1 109 106. -2 -3 110 - 4.7350000000000000e+02 - - -4.4595441222190857e-01 4.8524639010429382e-01 - 3.8998365402221680e-01 -4.3752849102020264e-01 - <_> - 1.3212180137634277e+00 - - 1 2 111 5.0000000000000000e-01 0 -1 112 - 3.1500000000000000e+01 -2 -3 113 8.5000000000000000e+00 - - -7.6347488164901733e-01 6.1377680301666260e-01 - 3.2435289025306702e-01 -3.2852920889854431e-01 - <_> - 1.5280661582946777e+00 - - 1 2 114 31599. 0 -1 115 8.7950000000000000e+02 -2 -3 116 - 1.4950000000000000e+02 - - -4.4413706660270691e-01 2.0684811472892761e-01 - -9.2896610498428345e-01 7.2677606344223022e-01 - <_> - 1.3401062488555908e+00 - - 1 2 117 4.5000000000000000e+00 0 -1 118 - 5.0000000000000000e-01 -2 -3 119 1.7500000000000000e+01 - - -8.9902228116989136e-01 7.3140519857406616e-01 - 2.5528132915496826e-01 -3.2260772585868835e-01 - <_> - 1.5880639553070068e+00 - - 1 2 120 2.3500000000000000e+01 0 -1 121 - 2.3415000000000000e+03 -2 -3 122 1.8500000000000000e+01 - - -7.2909480333328247e-01 -6.7116706632077694e-03 - -8.0022460222244263e-01 3.6795264482498169e-01 - <_> - 1.7455346584320068e+00 - - 1 2 123 1.9715000000000000e+03 0 -1 124 - 4.5635000000000000e+03 -2 -3 125 4.4850000000000000e+02 - - -6.1536699533462524e-01 3.9649611711502075e-01 - -5.3931379318237305e-01 1.9903500378131866e-01 - <_> - 1.4469091892242432e+00 - - 1 2 126 9.5000000000000000e+00 0 -1 127 - 1.0219500000000000e+04 -2 -3 128 4.0500000000000000e+01 - - 6.1238449811935425e-01 -1.6160279512405396e-01 - -5.3765082359313965e-01 2.1599884331226349e-01 - <_> - 1.6631983518600464e+00 - - 1 2 129 1.3050000000000000e+02 0 -1 130 - 1.2500000000000000e+01 -2 -3 131 48. - - -6.8314427137374878e-01 2.1628913283348083e-01 - 7.3021888732910156e-01 -8.3048707246780396e-01 - <_> - 1.3611874580383301e+00 - - 1 2 132 5691. 0 -1 133 1.4550000000000000e+02 -2 -3 134 - 6621. - - 6.3320666551589966e-02 -5.2526509761810303e-01 - 9.5597380399703979e-01 -8.6907690763473511e-01 - <_> - 1.6279634237289429e+00 - - 1 2 135 2.3500000000000000e+01 0 -1 136 - 2.5000000000000000e+00 -2 -3 137 5.0500000000000000e+01 - - 3.9147856831550598e-01 -8.5339552164077759e-01 - 2.6677599549293518e-01 -3.8106775283813477e-01 - <_> - 2.0351922512054443e+00 - - 1 2 138 4.9500000000000000e+01 0 -1 139 - 1.8500000000000000e+01 -2 -3 140 7.5000000000000000e+00 - - 4.8707169294357300e-01 -5.0664901733398438e-01 - 5.0869596004486084e-01 -1.1930328607559204e-01 - <_> - 2.1048190593719482e+00 - - 1 2 141 6.5000000000000000e+00 0 -1 142 - 2.0500000000000000e+01 -2 -3 143 2.8945000000000000e+03 - - 2.2332985699176788e-01 -6.0333216190338135e-01 - 3.1961753964424133e-01 -4.8080846667289734e-01 - <_> - 2.5272200107574463e+00 - - 1 2 144 1.2755000000000000e+03 0 -1 145 - 1.6450000000000000e+02 -2 -3 146 33. - - 8.7598457932472229e-02 -4.3963542580604553e-01 - -8.7583345174789429e-01 6.2399446964263916e-01 - <_> - 2.3983705043792725e+00 - - 1 2 147 5.5000000000000000e+00 0 -1 148 - 1.2500000000000000e+01 -2 -3 149 3.2715000000000000e+03 - - -6.9637626409530640e-01 3.5001280903816223e-01 - -6.8439531326293945e-01 5.0571694970130920e-02 - <_> - 2.1697113513946533e+00 - - 1 2 150 666. 0 -1 151 1.0675000000000000e+03 -2 -3 152 - 1.0650000000000000e+02 - - -2.1497508883476257e-01 7.4145573377609253e-01 - -4.1339716315269470e-01 1.7802318930625916e-01 - <_> - 2.3894040584564209e+00 - - 1 2 153 1.5000000000000000e+00 0 -1 154 - 4.2500000000000000e+01 -2 -3 155 1.0950000000000000e+02 - - -8.8204550743103027e-01 3.3967906236648560e-01 - -9.1087028384208679e-02 -8.9394873380661011e-01 - <_> - 2.2878415584564209e+00 - - 1 2 156 6.4500000000000000e+01 0 -1 157 11. -2 -3 158 - 4.4500000000000000e+01 - - 7.8926539421081543e-01 -8.1914222240447998e-01 - 5.7366627454757690e-01 -1.0156247764825821e-01 - <_> - 2.4907975196838379e+00 - - 1 2 159 5.8650000000000000e+02 0 -1 160 - 1.7625000000000000e+03 -2 -3 161 5.0000000000000000e-01 - - -5.2814042568206787e-01 2.0295590162277222e-01 - 4.9193066358566284e-01 -8.6553698778152466e-01 - <_> - 2.8328115940093994e+00 - - 1 2 162 1.1500000000000000e+01 0 -1 163 - 1.5045000000000000e+03 -2 -3 164 3.1500000000000000e+01 - - 5.6902194023132324e-01 -3.8489398360252380e-01 - 5.4847592115402222e-01 -9.3145422637462616e-02 - <_> - 2.9363400936126709e+00 - - 1 2 165 1.5500000000000000e+01 0 -1 166 - 1.2500000000000000e+01 -2 -3 167 1.5500000000000000e+01 - - 9.5472264289855957e-01 -9.1838270425796509e-01 - -1.0293316841125488e-01 4.3570974469184875e-01 - <_> - 2.8884809017181396e+00 - - 1 2 168 5.5000000000000000e+00 0 -1 169 - 3.2250000000000000e+02 -2 -3 170 3.3305000000000000e+03 - - 5.2823734283447266e-01 -6.2273854017257690e-01 - 2.4218171834945679e-01 -3.8004037737846375e-01 - <_> - 3.2581679821014404e+00 - - 1 2 171 1.1585000000000000e+03 0 -1 172 - 2.0525000000000000e+03 -2 -3 173 6.6950000000000000e+02 - - -7.3419857025146484e-01 5.7153469324111938e-01 - 7.6942658424377441e-01 -4.6774842776358128e-03 - <_> - 3.2552568912506104e+00 - - 1 2 174 4.7500000000000000e+01 0 -1 175 - 5.0000000000000000e-01 -2 -3 176 1.5550000000000000e+02 - - 1.8964821100234985e-01 -5.6353724002838135e-01 - -6.1556345224380493e-01 3.0847749114036560e-01 - <_> - 3.1983842849731445e+00 - - 1 2 177 4.3150000000000000e+02 0 -1 178 - 5.8500000000000000e+01 -2 -3 179 5.0000000000000000e-01 - - -5.6872483342885971e-02 5.8359992504119873e-01 - 4.7400984168052673e-01 -7.4053239822387695e-01 - <_> - 3.4817969799041748e+00 - - 1 2 180 9.5000000000000000e+00 0 -1 181 25. -2 -3 182 - 6.2500000000000000e+01 - - -6.4430248737335205e-01 3.9208996295928955e-01 - -4.2771559953689575e-01 3.0624631047248840e-01 - <_> - 3.0476233959197998e+00 - - 1 2 183 2.5000000000000000e+00 0 -1 184 - 1.3250000000000000e+02 -2 -3 185 3.4150000000000000e+02 - - 5.3614073991775513e-01 -5.6767416000366211e-01 - -3.0754956603050232e-01 8.0505007505416870e-01 - <_> - 3.4105541706085205e+00 - - 1 2 186 5.8500000000000000e+01 0 -1 187 - 5.2250000000000000e+02 -2 -3 188 8.4500000000000000e+01 - - -3.9508250355720520e-01 2.8085133433341980e-01 - 6.1845648288726807e-01 -2.1672628819942474e-01 - <_> - 3.4716253280639648e+00 - - 1 2 189 3238. 0 -1 190 7.6925000000000000e+03 -2 -3 191 - 1.4250000000000000e+02 - - 5.7400876283645630e-01 -6.7538954317569733e-02 - -8.3562213182449341e-01 6.1071071773767471e-02 - <_> - 3.3441829681396484e+00 - - 1 2 192 1.3500000000000000e+01 0 -1 193 - 1.3500000000000000e+01 -2 -3 194 5.5000000000000000e+00 - - -6.8424683809280396e-01 5.4655539989471436e-01 - 4.5958670973777771e-01 -1.2744228541851044e-01 - <_> - 3.2567305564880371e+00 - - 1 2 195 4.5050000000000000e+02 0 -1 196 - 7.5000000000000000e+00 -2 -3 197 102. - - 2.0710256695747375e-01 -4.7517296671867371e-01 - -2.6671493053436279e-01 5.8150058984756470e-01 - <_> - 3.5595970153808594e+00 - - 1 2 198 1.5500000000000000e+01 0 -1 199 - 1.6405000000000000e+03 -2 -3 200 3.2500000000000000e+01 - - -6.0164546966552734e-01 3.0286654829978943e-01 - 2.1122010052204132e-01 -5.7218044996261597e-01 - <_> - 3.7392544746398926e+00 - - 1 2 201 6.5000000000000000e+00 0 -1 202 - 3.5000000000000000e+00 -2 -3 203 1.6450000000000000e+02 - - 2.2506394982337952e-01 -8.6310726404190063e-01 - 1.7965751886367798e-01 -6.9324779510498047e-01 - <_> - 3.7078585624694824e+00 - - 1 2 204 8.1450000000000000e+02 0 -1 205 1890. -2 -3 206 - 8.1750000000000000e+02 - - -3.2595106959342957e-01 8.0182307958602905e-01 - 6.8428695201873779e-01 -2.1671128273010254e-01 - <_> - 4.0834798812866211e+00 - - 1 2 207 7524. 0 -1 208 29059. -2 -3 209 - 5.0000000000000000e-01 - - -9.4072461128234863e-02 6.2213033437728882e-01 - 4.1094872355461121e-01 -3.1383806467056274e-01 - <_> - 3.9115695953369141e+00 - - 1 2 210 1.8500000000000000e+01 0 -1 211 387. -2 -3 212 - 2.3750000000000000e+02 - - 4.2355090379714966e-01 -8.8622373342514038e-01 - 2.1309094130992889e-01 -5.3503811359405518e-01 - <_> - 4.2166790962219238e+00 - - 1 2 213 5.3500000000000000e+01 0 -1 214 1081. -2 -3 215 - 2.5000000000000000e+00 - - 8.1005847454071045e-01 -9.5809775590896606e-01 - 3.0510938167572021e-01 -2.3649103939533234e-01 - <_> - 4.2742543220520020e+00 - - 1 2 216 5.0000000000000000e-01 0 -1 217 - 3.5000000000000000e+00 -2 -3 218 1.9500000000000000e+01 - - -6.7842203378677368e-01 6.1577528715133667e-01 - -6.2877601385116577e-01 5.7575210928916931e-02 - <_> - 4.5262427330017090e+00 - - 1 2 219 2.3500000000000000e+01 0 -1 220 - 6.5500000000000000e+01 -2 -3 221 7200. - - -1.2643574178218842e-01 4.4764062762260437e-01 - 8.0391228199005127e-01 -5.6298023462295532e-01 - <_> - 4.3622655868530273e+00 - - 1 2 222 5.0000000000000000e-01 0 -1 223 - 5.0000000000000000e-01 -2 -3 224 8.5000000000000000e+00 - - -6.9282239675521851e-01 5.0668609142303467e-01 - 2.8447443246841431e-01 -3.2788425683975220e-01 - <_> - 4.3866205215454102e+00 - - 1 2 225 1.8500000000000000e+01 0 -1 226 - 3.0500000000000000e+01 -2 -3 227 3.5000000000000000e+00 - - 1.6534422338008881e-01 -6.7988771200180054e-01 - 5.8741343021392822e-01 -7.3899636045098305e-03 - <_> - 4.6229195594787598e+00 - - 1 2 228 3.5500000000000000e+01 0 -1 229 - 2.4250000000000000e+02 -2 -3 230 1.4995000000000000e+03 - - -2.7123320102691650e-01 4.3727341294288635e-01 - 6.2667381763458252e-01 -8.1948131322860718e-01 - <_> - 4.4684619903564453e+00 - - 1 2 231 1.3050000000000000e+02 0 -1 232 - 7.4500000000000000e+01 -2 -3 233 3.4250000000000000e+02 - - 4.2552286386489868e-01 -6.8802464008331299e-01 - -3.5543212294578552e-01 8.2571202516555786e-01 - <_> - 4.7353043556213379e+00 - - 1 2 234 2.4500000000000000e+01 0 -1 235 - 5.2500000000000000e+01 -2 -3 236 2.1500000000000000e+01 - - 1.4997267723083496e-01 -9.4012928009033203e-01 - -3.1085640192031860e-01 2.6684227585792542e-01 - <_> - 5.1284918785095215e+00 - - 1 2 237 1.5000000000000000e+00 0 -1 238 246. -2 -3 239 - 5.1500000000000000e+01 - - -1.4119525253772736e-01 8.4309184551239014e-01 - 8.1866653636097908e-03 -5.9627658128738403e-01 - <_> - 5.2100868225097656e+00 - - 1 2 240 1.2225000000000000e+03 0 -1 241 8510. -2 -3 242 - 4.1076500000000000e+04 - - -3.3349204063415527e-01 4.1161355376243591e-01 - 4.6106973290443420e-01 -8.5954028367996216e-01 - <_> - 5.1655635833740234e+00 - - 1 2 243 1.4225500000000000e+04 0 -1 244 - 5.6765000000000000e+03 -2 -3 245 3.5000000000000000e+00 - - -4.4523153454065323e-02 6.2628918886184692e-01 - 2.0545418560504913e-01 -5.4939305782318115e-01 - <_> - 5.3291592597961426e+00 - - 1 2 246 4.5000000000000000e+00 0 -1 247 5. -2 -3 248 - 4.5035000000000000e+03 - - -8.5104453563690186e-01 7.7873927354812622e-01 - -8.5507243871688843e-01 -6.3659679144620895e-03 - <_> - 5.4979724884033203e+00 - - 1 2 249 7.7350000000000000e+02 0 -1 250 - 5.0745000000000000e+03 -2 -3 251 6.5000000000000000e+00 - - 4.5453670620918274e-01 -6.6669577360153198e-01 - 1.7272062599658966e-01 -4.8215919733047485e-01 - <_> - 5.1418399810791016e+00 - - 1 2 252 3.3500000000000000e+01 0 -1 253 - 4.8500000000000000e+01 -2 -3 254 1.1625000000000000e+03 - - 5.2197024226188660e-02 -8.2986247539520264e-01 - -4.2942497134208679e-01 2.6862683892250061e-01 - <_> - 5.3069186210632324e+00 - - 1 2 255 7.3500000000000000e+01 0 -1 256 - 6.5000000000000000e+00 -2 -3 257 293. - - -8.3037430047988892e-01 1.6507858037948608e-01 - -8.6482697725296021e-01 5.6237572431564331e-01 - <_> - 5.8320169448852539e+00 - - 1 2 258 5.2500000000000000e+01 0 -1 259 - 5.0000000000000000e-01 -2 -3 260 483. - - 4.2582702636718750e-01 -3.5350418090820312e-01 - 5.2509862184524536e-01 -8.3165860176086426e-01 - <_> - 5.4062981605529785e+00 - - 1 2 261 7.2850000000000000e+02 0 -1 262 27703. -2 -3 263 - 1.1950000000000000e+02 - - 6.5644961595535278e-01 -9.5847475528717041e-01 - 2.1147368848323822e-01 -4.5759904384613037e-01 - <_> - 5.3856034278869629e+00 - - 1 2 264 2.1500000000000000e+01 0 -1 265 - 1.6105000000000000e+03 -2 -3 266 1.5000000000000000e+00 - - -2.0694794133305550e-02 -7.2058790922164917e-01 - 7.0882946252822876e-01 -9.4017720222473145e-01 - <_> - 5.3594450950622559e+00 - - 1 2 267 1.9500000000000000e+01 0 -1 268 - 1.5500000000000000e+01 -2 -3 269 5.0000000000000000e-01 - - 4.6942609548568726e-01 -4.7919079661369324e-01 - 5.4369747638702393e-01 -2.6158468797802925e-02 - <_> - 5.5568313598632812e+00 - - 1 2 270 3.8500000000000000e+01 0 -1 271 5311. -2 -3 272 - 1.0750000000000000e+02 - - 2.8408360481262207e-01 -9.0222167968750000e-01 - 1.9738645851612091e-01 -5.9748172760009766e-01 - <_> - 6.0750946998596191e+00 - - 1 2 273 3654. 0 -1 274 5.0000000000000000e-01 -2 -3 275 180. - - 1.3075743615627289e-01 -4.2956027388572693e-01 - -7.0136785507202148e-01 6.2402111291885376e-01 - <_> - 6.0776939392089844e+00 - - 1 2 276 2.5000000000000000e+00 0 -1 277 - 1.3500000000000000e+01 -2 -3 278 1.1750000000000000e+02 - - -9.0228682756423950e-01 1. 1.6657561063766479e-01 - -6.4917582273483276e-01 - <_> - 6.0489621162414551e+00 - - 1 2 279 1.2455000000000000e+03 0 -1 280 - 3.2550000000000000e+02 -2 -3 281 9.3250000000000000e+02 - - -2.8672853112220764e-01 6.7820680141448975e-01 - 6.3100266456604004e-01 -2.2533583641052246e-01 - <_> - 6.3533391952514648e+00 - - 1 2 282 1.8769500000000000e+04 0 -1 283 - 7.5450000000000000e+02 -2 -3 284 1.4500000000000000e+01 - - -7.3246711492538452e-01 4.0920761227607727e-01 - 9.1864340007305145e-02 -5.1933372020721436e-01 - <_> - 6.3807511329650879e+00 - - 1 2 285 4.9950000000000000e+02 0 -1 286 - 7.5000000000000000e+00 -2 -3 287 4.9500000000000000e+01 - - 2.5379750132560730e-01 -9.2118155956268311e-01 - -5.7641644030809402e-02 5.3151047229766846e-01 - <_> - 6.4591631889343262e+00 - - 1 2 288 2.5500000000000000e+01 0 -1 289 - 1.1500000000000000e+01 -2 -3 290 1.7405000000000000e+03 - - -9.0133595466613770e-01 2.3147261142730713e-01 - -5.1077365875244141e-01 7.7433860301971436e-01 - <_> - 6.7583456039428711e+00 - - 1 2 291 5.0000000000000000e-01 0 -1 292 - 3.6500000000000000e+01 -2 -3 293 6.5000000000000000e+00 - - -1.6842520236968994e-01 7.2404229640960693e-01 - 4.3139779567718506e-01 -3.6949115991592407e-01 - <_> - 6.6043167114257812e+00 - - 1 2 294 1.0500000000000000e+01 0 -1 295 - 2.5500000000000000e+01 -2 -3 296 1.0750000000000000e+02 - - 6.2449771165847778e-01 -6.7510235309600830e-01 - 3.5289931297302246e-01 -1.5402862429618835e-01 - <_> - 6.4769744873046875e+00 - - 1 2 297 1.6750000000000000e+02 0 -1 298 - 3.4500000000000000e+01 -2 -3 299 2.1500000000000000e+01 - - 1.1882825195789337e-01 -6.5167319774627686e-01 - -7.6285523176193237e-01 3.4674841165542603e-01 - <_> - 6.6450757980346680e+00 - - 1 2 300 8.5000000000000000e+00 0 -1 301 - 1.3500000000000000e+01 -2 -3 302 116. - - -5.9631282091140747e-01 2.7127423882484436e-01 - -5.6467700004577637e-01 3.7385278940200806e-01 - <_> - 6.8429255485534668e+00 - - 1 2 303 5.5500000000000000e+01 0 -1 304 - 3.5000000000000000e+00 -2 -3 305 3.3250000000000000e+02 - - -8.3910179138183594e-01 4.3193608522415161e-01 - -3.7392577528953552e-01 6.6540867090225220e-01 - <_> - 7.0322842597961426e+00 - - 1 2 306 6.3500000000000000e+01 0 -1 307 - 2.0845000000000000e+03 -2 -3 308 1.2500000000000000e+01 - - -5.9658832848072052e-02 -8.6379587650299072e-01 - 4.7707024216651917e-01 -1.4790077507495880e-01 - <_> - 6.9630532264709473e+00 - - 1 2 309 1.6150000000000000e+02 0 -1 310 29256. -2 -3 311 - 2.5000000000000000e+00 - - -8.2682120800018311e-01 4.9407878518104553e-01 - 5.2456849813461304e-01 -6.9230861961841583e-02 - <_> - 6.9075293540954590e+00 - - 1 2 312 5.0000000000000000e-01 0 -1 313 - 8.5000000000000000e+00 -2 -3 314 8.4975000000000000e+03 - - -7.3926454782485962e-01 4.6552142500877380e-01 - 5.8614385128021240e-01 -3.0694326758384705e-01 - <_> - 7.0862822532653809e+00 - - 1 2 315 8.2550000000000000e+02 0 -1 316 - 4.6500000000000000e+01 -2 -3 317 5.0695000000000000e+03 - - -2.9908904433250427e-01 5.3665381669998169e-01 - 6.0632449388504028e-01 -4.8383909463882446e-01 - <_> - 7.3064808845520020e+00 - - 1 2 318 1.2500000000000000e+01 0 -1 319 - 4.7350000000000000e+02 -2 -3 320 1.3500000000000000e+01 - - -1.4890976250171661e-01 5.1700884103775024e-01 - 2.2019901871681213e-01 -5.0205707550048828e-01 - <_> - 7.5856218338012695e+00 - - 1 2 321 4.5000000000000000e+00 0 -1 322 - 2.5000000000000000e+00 -2 -3 323 1.7875000000000000e+03 - - -6.5830785036087036e-01 5.2842289209365845e-01 - -4.4524073600769043e-01 1.5747387707233429e-01 - <_> - 7.5183806419372559e+00 - - 1 2 324 7.8500000000000000e+01 0 -1 325 - 2.1500000000000000e+01 -2 -3 326 283. - - 4.9533292651176453e-01 -3.2849147915840149e-01 - -8.8443028926849365e-01 -4.6591479331254959e-02 - <_> - 7.2458000183105469e+00 - - 1 2 327 2.9500000000000000e+01 0 -1 328 - 4.5000000000000000e+00 -2 -3 329 1.2500000000000000e+01 - - 3.8163262605667114e-01 -5.6158578395843506e-01 - -5.1157724857330322e-01 3.5844418406486511e-01 - <_> - 7.7198004722595215e+00 - - 1 2 330 1.7500000000000000e+01 0 -1 331 - 8.5000000000000000e+00 -2 -3 332 94. - - -1.6375185549259186e-01 4.7400090098381042e-01 - -8.1118392944335938e-01 -3.4891348332166672e-02 - <_> - 7.6042866706848145e+00 - - 1 2 333 1.5500000000000000e+01 0 -1 334 - 2.8500000000000000e+01 -2 -3 335 1.1255000000000000e+03 - - -2.7163597941398621e-01 4.8851761221885681e-01 - -4.1841214895248413e-01 5.2421635389328003e-01 - <_> - 7.8545336723327637e+00 - - 1 2 336 5.0000000000000000e-01 0 -1 337 - 6.5000000000000000e+00 -2 -3 338 1.5755000000000000e+03 - - -5.1451754570007324e-01 5.8292496204376221e-01 - 5.4736447334289551e-01 -2.9082155227661133e-01 - <_> - 8.2435092926025391e+00 - - 1 2 339 2.5000000000000000e+00 0 -1 340 298. -2 -3 341 - 3.4500000000000000e+01 - - 5.5548179149627686e-01 -4.2350277304649353e-01 - -4.2017799615859985e-01 3.3250615000724792e-01 - <_> - 8.1081476211547852e+00 - - 1 2 342 2306. 0 -1 343 4.8350000000000000e+02 -2 -3 344 - 2.0550000000000000e+02 - - -7.4824672937393188e-01 8.6650526523590088e-01 - 2.9151761531829834e-01 -3.6584287881851196e-01 - <_> - 7.9108762741088867e+00 - - 0 1 345 2758. 0 1 345 2758. -1 -2 346 2.1500000000000000e+01 - - -1. -1. 2.9584947228431702e-01 -1.9727160036563873e-01 - <_> - 8.1822175979614258e+00 - - 1 2 347 2.3500000000000000e+01 0 -1 348 282. -2 -3 349 - 4.5000000000000000e+00 - - 4.1519537568092346e-01 -7.7347069978713989e-01 - 2.7134174108505249e-01 -2.6304042339324951e-01 - <_> - 8.1136093139648438e+00 - - 1 2 350 6.6500000000000000e+01 0 -1 351 - 1.4500000000000000e+01 -2 -3 352 3.4500000000000000e+01 - - -8.0191783607006073e-02 -7.9695141315460205e-01 - 4.5921468734741211e-01 -4.6219456195831299e-01 - <_> - 8.4452056884765625e+00 - - 1 2 353 5.0000000000000000e-01 0 -1 354 - 1.1750000000000000e+02 -2 -3 355 1.4615000000000000e+03 - - 6.2617254257202148e-01 -6.0764908790588379e-01 - -2.9064002633094788e-01 7.1891576051712036e-01 - <_> - 8.4361963272094727e+00 - - 1 2 356 7.3500000000000000e+01 0 -1 357 825. -2 -3 358 - 6.5000000000000000e+00 - - 6.0967606306076050e-01 -7.7204084396362305e-01 - 6.0940122604370117e-01 -9.0096443891525269e-03 - <_> - 8.7065010070800781e+00 - - 1 2 359 3.1500000000000000e+01 0 -1 360 - 1.1475500000000000e+04 -2 -3 361 262. - - 4.0798941254615784e-01 -6.3121789693832397e-01 - -4.9538758397102356e-01 2.7030462026596069e-01 - <_> - 8.5846290588378906e+00 - - 1 2 362 1.4500000000000000e+01 0 -1 363 - 1.3524500000000000e+04 -2 -3 364 1.5650000000000000e+02 - - 6.1740058660507202e-01 -1.2187176942825317e-01 - -4.5620942115783691e-01 2.4483670294284821e-01 - <_> - 8.5813455581665039e+00 - - 1 2 365 1.9500000000000000e+01 0 -1 366 - 2.4550000000000000e+02 -2 -3 367 1.5150000000000000e+02 - - -3.2830052077770233e-03 -7.3917645215988159e-01 - 8.6923849582672119e-01 -3.4717652201652527e-01 - <_> - 8.3619909286499023e+00 - - 1 2 368 8.5000000000000000e+00 0 -1 369 915. -2 -3 370 - 5.0000000000000000e-01 - - -4.7836102545261383e-02 -8.9932316541671753e-01 - 3.6531907320022583e-01 -2.1935538947582245e-01 - <_> - 8.8194007873535156e+00 - - 1 2 371 5.3500000000000000e+01 0 -1 372 - 4.5000000000000000e+00 -2 -3 373 3.5000000000000000e+00 - - 1.0001569986343384e-01 -6.3893711566925049e-01 - 4.5741054415702820e-01 -1.3190703094005585e-01 - <_> - 8.5848417282104492e+00 - - 1 2 374 1.2185000000000000e+03 0 -1 375 - 5.6500000000000000e+01 -2 -3 376 7.8650000000000000e+02 - - -3.6798512935638428e-01 6.3582497835159302e-01 - 8.7271928787231445e-01 4.6488631516695023e-02 - <_> - 8.7026214599609375e+00 - - 1 2 377 3.7500000000000000e+01 0 -1 378 - 8.1500000000000000e+01 -2 -3 379 2.2350000000000000e+02 - - -1.1387371271848679e-01 4.8333024978637695e-01 - 5.4781770706176758e-01 -6.5416949987411499e-01 - <_> - 8.9529705047607422e+00 - - 1 2 380 2.0500000000000000e+01 0 -1 381 - 7.5000000000000000e+00 -2 -3 382 1.3235000000000000e+03 - - -7.0283526182174683e-01 2.5034907460212708e-01 - -7.6881372928619385e-01 1.7487525939941406e-01 - <_> - 9.0659570693969727e+00 - - 1 2 383 3.5000000000000000e+00 0 -1 384 - 6.5000000000000000e+00 -2 -3 385 7.0250000000000000e+02 - - -9.7807765007019043e-01 4.7183737158775330e-01 - 1.1298649013042450e-01 -4.7387996315956116e-01 - <_> - 9.2564897537231445e+00 - - 1 2 386 7.0650000000000000e+02 0 -1 387 - 2.7500000000000000e+01 -2 -3 388 3.8150000000000000e+02 - - -4.3204694986343384e-01 4.6149665117263794e-01 - -4.5656362175941467e-01 4.0426468849182129e-01 - <_> - 9.5633430480957031e+00 - - 1 2 389 1.7250000000000000e+02 0 -1 390 - 1.4350000000000000e+02 -2 -3 391 2168. - - 3.0685371160507202e-01 -6.7446005344390869e-01 - -5.6666123867034912e-01 5.7540327310562134e-01 - <_> - 9.4047651290893555e+00 - - 1 2 392 5.0000000000000000e-01 0 -1 393 36. -2 -3 394 - 6.5000000000000000e+00 - - -8.9199495315551758e-01 6.9151669740676880e-01 - 3.1148543953895569e-01 -3.2515323162078857e-01 - <_> - 9.8578929901123047e+00 - - 1 2 395 1.6500000000000000e+01 0 -1 396 - 8.5000000000000000e+00 -2 -3 397 6655. - - -6.3973349332809448e-01 -2.6324391365051270e-02 - 4.5312842726707458e-01 -7.6435673236846924e-01 - <_> - 1.0109946250915527e+01 - - 1 2 398 8.1850000000000000e+02 0 -1 399 5. -2 -3 400 - 1.5000000000000000e+00 - - 1. -9.7892904281616211e-01 2.5205332040786743e-01 - -2.3775234818458557e-01 - <_> - 1.0110588073730469e+01 - - 1 2 401 8.9500000000000000e+01 0 -1 402 - 1.9500000000000000e+01 -2 -3 403 3.3150000000000000e+02 - - 6.0288328677415848e-02 -5.5889946222305298e-01 - -6.6790217161178589e-01 4.9099177122116089e-01 - <_> - 1.0178493499755859e+01 - - 1 2 404 8.3500000000000000e+01 0 -1 405 - 5.0000000000000000e-01 -2 -3 406 4.5500000000000000e+01 - - 6.6644616425037384e-02 -4.7016331553459167e-01 - 6.9829040765762329e-01 -7.4734330177307129e-01 - <_> - 1.0367170333862305e+01 - - 1 2 407 3.1968500000000000e+04 0 -1 408 - 1.4500000000000000e+01 -2 -3 409 1.9650000000000000e+02 - - -8.8887441158294678e-01 1.8867671489715576e-01 - -6.9990497827529907e-01 7.3294508457183838e-01 - <_> - 1.0330060958862305e+01 - - 1 2 410 3.0500000000000000e+01 0 -1 411 - 4.5000000000000000e+00 -2 -3 412 2.2500000000000000e+01 - - 4.1319993138313293e-01 -1.7337587475776672e-01 - -6.1255306005477905e-01 5.2832174301147461e-01 - <_> - 1.0422311782836914e+01 - - 1 2 413 1.5750000000000000e+02 0 -1 414 2858. -2 -3 415 267. - - 9.2250838875770569e-02 -6.7853665351867676e-01 - -5.2487850189208984e-01 3.7964582443237305e-01 - <_> - 1.0936569213867188e+01 - - 1 2 416 5.5000000000000000e+00 0 -1 417 - 1.5000000000000000e+00 -2 -3 418 4.1500000000000000e+01 - - -7.1109032630920410e-01 5.2976405620574951e-01 - -7.1571081876754761e-01 -3.8149278610944748e-02 - <_> - 1.0785615921020508e+01 - - 1 2 419 5.5000000000000000e+00 0 -1 420 - 2.5000000000000000e+00 -2 -3 421 5.1050000000000000e+02 - - -7.9414331912994385e-01 5.1595968008041382e-01 - -5.1001089811325073e-01 2.4380905926227570e-01 - <_> - 1.1078557014465332e+01 - - 1 2 422 6.2045000000000000e+03 0 -1 423 - 2.1500000000000000e+01 -2 -3 424 7.3450000000000000e+02 - - -5.1469475030899048e-01 2.9294142127037048e-01 - 8.0896812677383423e-01 -6.5453553199768066e-01 - <_> - 1.1050524711608887e+01 - - 1 2 425 1.2500000000000000e+01 0 -1 426 - 3.1250000000000000e+02 -2 -3 427 2.7950000000000000e+02 - - 7.0064479112625122e-01 -3.8257476687431335e-01 - 1.9552476704120636e-01 -4.3830174207687378e-01 - <_> - 1.1334832191467285e+01 - - 1 2 428 1.8675000000000000e+03 0 -1 429 - 6.5000000000000000e+00 -2 -3 430 1.1475000000000000e+03 - - 3.7387716770172119e-01 -7.6267945766448975e-01 - -5.4317325353622437e-01 2.8430745005607605e-01 - <_> - 1.1113101959228516e+01 - - 1 2 431 1.4850000000000000e+02 0 -1 432 - 8.3500000000000000e+01 -2 -3 433 3.7500000000000000e+01 - - -3.8298897445201874e-02 -6.6938400268554688e-01 - 4.6958562731742859e-01 -2.8687629103660583e-01 - <_> - 1.0955561637878418e+01 - - 1 2 434 4.3500000000000000e+01 0 -1 435 - 5.5000000000000000e+00 -2 -3 436 1.9500000000000000e+01 - - 1.3246925175189972e-01 -5.9307396411895752e-01 - 4.5207285881042480e-01 -1.5754084289073944e-01 - <_> - 1.1154244422912598e+01 - - 1 2 437 3.5500000000000000e+01 0 -1 438 149. -2 -3 439 - 1.0764500000000000e+04 - - 1.6496022045612335e-01 -8.5004007816314697e-01 - 1.9868306815624237e-01 -7.6483601331710815e-01 - <_> - 1.1040904045104980e+01 - - 1 2 440 1.7500000000000000e+01 0 -1 441 - 2.7650000000000000e+02 -2 -3 442 6.0650000000000000e+02 - - 3.8257870078086853e-01 -8.7649303674697876e-01 - 5.6843882799148560e-01 -1.1334086209535599e-01 - <_> - 1.0785296440124512e+01 - - 1 2 443 2.0850000000000000e+02 0 -1 444 - 5.0000000000000000e-01 -2 -3 445 153. - - 2.4452392756938934e-01 -4.5549276471138000e-01 - 5.3557026386260986e-01 -2.5560736656188965e-01 - <_> - 1.1557132720947266e+01 - - 1 2 446 3.1695000000000000e+03 0 -1 447 17097. -2 -3 448 - 1.6791500000000000e+04 - - -8.1668007373809814e-01 8.2250398397445679e-01 - -3.6227312684059143e-01 1.6900251805782318e-01 - <_> - 1.1418401718139648e+01 - - 1 2 449 1.7705000000000000e+03 0 -1 450 - 4.6565000000000000e+03 -2 -3 451 4.5550000000000000e+02 - - -1.8939907848834991e-01 5.5706465244293213e-01 - 2.2822033613920212e-02 -6.7216074466705322e-01 - <_> - 1.1332237243652344e+01 - - 1 2 452 1.9500000000000000e+01 0 -1 453 - 5.0000000000000000e-01 -2 -3 454 168. - - 9.8821230232715607e-02 -9.9127775430679321e-01 - 2.8800103068351746e-01 -3.2348513603210449e-01 - <_> - 1.1800554275512695e+01 - - 1 2 455 9.6500000000000000e+01 0 -1 456 - 3.5000000000000000e+00 -2 -3 457 1.2085000000000000e+03 - - 1.2269663810729980e-01 -4.6963310241699219e-01 - 4.6831732988357544e-01 -7.5347024202346802e-01 - <_> - 1.1746677398681641e+01 - - 1 2 458 2.6500000000000000e+01 0 -1 459 - 1.2500000000000000e+01 -2 -3 460 6.2500000000000000e+01 - - 2.9853442311286926e-01 -6.0757899284362793e-01 - 4.3772074580192566e-01 -1.3283115625381470e-01 - <_> - 1.1710562705993652e+01 - - 1 2 461 3.4500000000000000e+01 0 -1 462 - 5.0000000000000000e-01 -2 -3 463 2.0950000000000000e+02 - - 3.1521999835968018e-01 -5.5736678838729858e-01 - 6.7748945951461792e-01 -3.6115031689405441e-02 - <_> - 1.1582207679748535e+01 - - 1 2 464 1.5000000000000000e+00 0 -1 465 - 1.4750000000000000e+02 -2 -3 466 5.0000000000000000e-01 - - -9.5662528276443481e-01 8.8448798656463623e-01 - 5.0583779811859131e-01 -1.2840148806571960e-01 - <_> - 1.1577805519104004e+01 - - 1 2 467 2.6250000000000000e+02 0 -1 468 - 8.5000000000000000e+00 -2 -3 469 2.7050000000000000e+02 - - 5.8746252208948135e-02 -5.1417016983032227e-01 - -4.4025536626577377e-03 7.2468632459640503e-01 - <_> - 1.1909842491149902e+01 - - 1 2 470 3.0500000000000000e+01 0 -1 471 - 9.1500000000000000e+01 -2 -3 472 3.2500000000000000e+01 - - 2.6228722929954529e-01 -8.3183318376541138e-01 - 3.3203727006912231e-01 -2.0215129852294922e-01 - <_> - 1.1820110321044922e+01 - - 1 2 473 3.6150000000000000e+02 0 -1 474 - 7.5500000000000000e+01 -2 -3 475 1.6500000000000000e+01 - - 3.4021586179733276e-02 -7.3799329996109009e-01 - 5.9181433916091919e-01 -8.9732393622398376e-02 - <_> - 1.2058867454528809e+01 - - 1 2 476 2.1850000000000000e+02 0 -1 477 - 1.3970500000000000e+04 -2 -3 478 3.5405000000000000e+03 - - 2.3875749111175537e-01 -3.4735745191574097e-01 - 8.4880095720291138e-01 -3.6369037628173828e-01 - <_> - 1.2003521919250488e+01 - - 1 2 479 1.2045000000000000e+03 0 -1 480 - 5.0000000000000000e-01 -2 -3 481 6.6500000000000000e+01 - - 1.9498512148857117e-01 -4.0264678001403809e-01 - 6.4470326900482178e-01 -4.2276349663734436e-01 - <_> - 1.2398437500000000e+01 - - 1 2 482 1.7500000000000000e+01 0 -1 483 13266. -2 -3 484 - 2.3500000000000000e+01 - - 1.0403804481029510e-01 -7.6852244138717651e-01 - 3.9491611719131470e-01 -1.4494727551937103e-01 - <_> - 1.2834873199462891e+01 - - 1 2 485 8.5000000000000000e+00 0 -1 486 - 1.9500000000000000e+01 -2 -3 487 2.5000000000000000e+00 - - 2.4885479360818863e-02 -6.1086690425872803e-01 - -3.8872721791267395e-01 4.3643516302108765e-01 - <_> - 1.2477423667907715e+01 - - 1 2 488 6.6500000000000000e+01 0 -1 489 - 2.9500000000000000e+01 -2 -3 490 4.4500000000000000e+01 - - -8.9354419708251953e-01 3.1559488177299500e-01 - -5.1763534545898438e-01 2.7538600564002991e-01 - <_> - 1.3054378509521484e+01 - - 1 2 491 8.2350000000000000e+02 0 -1 492 - 9.1500000000000000e+01 -2 -3 493 3.0550000000000000e+02 - - -5.0999827682971954e-02 5.7695519924163818e-01 - -8.2453000545501709e-01 2.1885833144187927e-01 - <_> - 1.3001498222351074e+01 - - 1 2 494 3.5000000000000000e+00 0 -1 495 - 4.5000000000000000e+00 -2 -3 496 1.2545000000000000e+03 - - -3.3553498983383179e-01 4.7332924604415894e-01 - -4.0103676915168762e-01 2.5861555337905884e-01 - <_> - 1.2748070716857910e+01 - - 1 2 497 7.2500000000000000e+01 0 -1 498 - 1.2078500000000000e+04 -2 -3 499 6.1500000000000000e+01 - - -5.6012886762619019e-01 5.0949209928512573e-01 - -3.8095393776893616e-01 3.5849356651306152e-01 - <_> - 1.3219707489013672e+01 - - 1 2 500 5.0000000000000000e-01 0 -1 501 - 4.5000000000000000e+00 -2 -3 502 2.5000000000000000e+00 - - -8.3156263828277588e-01 4.7163730859756470e-01 - 1.4885266125202179e-01 -4.8097932338714600e-01 - <_> - 1.3100829124450684e+01 - - 1 2 503 1.5500000000000000e+01 0 -1 504 - 6.5000000000000000e+00 -2 -3 505 1.6745000000000000e+03 - - 4.8601552844047546e-02 -8.4098070859909058e-01 - 4.4885209202766418e-01 -1.1887902766466141e-01 - <_> - 1.3153789520263672e+01 - - 1 2 506 1.9750000000000000e+02 0 -1 507 - 5.0000000000000000e-01 -2 -3 508 1.3850000000000000e+02 - - 3.5855168104171753e-01 -1.6984774172306061e-01 - -8.2890641689300537e-01 8.5591834783554077e-01 - <_> - 1.3473151206970215e+01 - - 1 2 509 2.0500000000000000e+01 0 -1 510 - 2.3500000000000000e+01 -2 -3 511 8.1050000000000000e+02 - - 3.1073799729347229e-01 -9.3193674087524414e-01 - -1.7174348235130310e-01 4.0613415837287903e-01 - <_> - 1.3465453147888184e+01 - - 1 2 512 2.1265000000000000e+03 0 -1 513 - 9.2950000000000000e+02 -2 -3 514 3.5000000000000000e+00 - - -7.6984455808997154e-03 7.1764069795608521e-01 - 2.0267011225223541e-01 -6.4554244279861450e-01 - <_> - 1.3577540397644043e+01 - - 1 2 515 2.7500000000000000e+01 0 -1 516 36. -2 -3 517 - 4.1350000000000000e+02 - - 1.5204006433486938e-01 -8.1754583120346069e-01 - -9.6264392137527466e-02 4.6634069085121155e-01 - <_> - 1.3565153121948242e+01 - - 1 2 518 8.2500000000000000e+01 0 -1 519 - 8.4500000000000000e+01 -2 -3 520 9545. - - 3.0989632010459900e-01 -6.6030853986740112e-01 - -6.4033728837966919e-01 -2.4311884772032499e-03 - <_> - 1.3631966590881348e+01 - - 1 2 521 2.3500000000000000e+01 0 -1 522 - 5.2500000000000000e+01 -2 -3 523 3.1500000000000000e+01 - - -3.1883838772773743e-01 2.8375336527824402e-01 - 6.9719344377517700e-01 -6.3891428709030151e-01 - <_> - 1.3900455474853516e+01 - - 1 2 524 5.1500000000000000e+01 0 -1 525 - 4.5000000000000000e+00 -2 -3 526 22871. - - -6.8288409709930420e-01 3.8537871837615967e-01 - 2.3610968887805939e-01 -4.6725943684577942e-01 - <_> - 1.3885604858398438e+01 - - 1 2 527 6.3917500000000000e+04 0 -1 528 - 6.5000000000000000e+00 -2 -3 529 9.7500000000000000e+01 - - 1.8357095122337341e-01 -8.4825068712234497e-01 - 4.4022575020790100e-01 -1.7257900536060333e-01 - <_> - 1.4077846527099609e+01 - - 1 2 530 1.9305000000000000e+03 0 -1 531 - 4.5000000000000000e+00 -2 -3 532 5275. - - 3.3539947867393494e-01 -2.5358977913856506e-01 - 8.1407654285430908e-01 -8.9784932136535645e-01 - <_> - 1.4307449340820312e+01 - - 1 2 533 4.2500000000000000e+01 0 -1 534 - 3.2250000000000000e+02 -2 -3 535 1.5000000000000000e+00 - - 8.7229333817958832e-02 -9.4649451971054077e-01 - -5.4333996772766113e-01 2.2960273921489716e-01 - <_> - 1.4230868339538574e+01 - - 1 2 536 4.7500000000000000e+01 0 -1 537 - 5.0000000000000000e-01 -2 -3 538 7.5500000000000000e+01 - - 5.4770493507385254e-01 -7.6581157743930817e-02 - -8.0993747711181641e-01 1. - <_> - 1.4503654479980469e+01 - - 1 2 539 2.1500000000000000e+01 0 -1 540 - 6.7525000000000000e+03 -2 -3 541 3.1500000000000000e+01 - - -1.3048166036605835e-01 -8.7906163930892944e-01 - 2.7278691530227661e-01 -4.8766756057739258e-01 - <_> - 1.4462507247924805e+01 - - 1 2 542 5.0950000000000000e+02 0 -1 543 - 4.8500000000000000e+01 -2 -3 544 2334. - - -4.5064944028854370e-01 1.7299294471740723e-01 - 7.4772566556930542e-01 -4.1147492825984955e-02 - <_> - 1.4535001754760742e+01 - - 1 2 545 3.5000000000000000e+00 0 -1 546 - 4.5000000000000000e+00 -2 -3 547 3.1500000000000000e+01 - - -9.2824006080627441e-01 5.8265477418899536e-01 - -3.6995452642440796e-01 2.3856091499328613e-01 - <_> - 1.4815734863281250e+01 - - 1 2 548 2.0500000000000000e+01 0 -1 549 - 4.5000000000000000e+00 -2 -3 550 5.2500000000000000e+01 - - -8.9162200689315796e-01 2.8073275089263916e-01 - 9.8183512687683105e-02 -7.3680752515792847e-01 - <_> - 1.4583820343017578e+01 - - 1 2 551 1.0500000000000000e+01 0 -1 552 10. -2 -3 553 - 9.0500000000000000e+01 - - -8.9265322685241699e-01 2.6653656363487244e-01 - -4.8498126864433289e-01 4.9194815754890442e-01 - <_> - 1.4590086936950684e+01 - - 1 2 554 1.4075000000000000e+03 0 -1 555 - 8.5000000000000000e+00 -2 -3 556 2.2350000000000000e+02 - - 7.2318482398986816e-01 -6.5714889764785767e-01 - 1.9554860889911652e-02 7.8212785720825195e-01 - <_> - 1.4370420455932617e+01 - - 1 2 557 1.3055000000000000e+03 0 -1 558 - 6.3615000000000000e+03 -2 -3 559 5.5050000000000000e+02 - - 6.6717378795146942e-02 7.7986842393875122e-01 - 4.8897069692611694e-01 -4.9088051915168762e-01 - <_> - 1.4557469367980957e+01 - - 1 2 560 2.0500000000000000e+01 0 -1 561 - 1.9500000000000000e+01 -2 -3 562 7.5000000000000000e+00 - - -6.0846841335296631e-01 7.7918326854705811e-01 - 4.8263064026832581e-01 -1.0205705463886261e-01 - <_> - 1.4732933044433594e+01 - - 1 2 563 9.5000000000000000e+00 0 -1 564 - 5.0000000000000000e-01 -2 -3 565 4.5000000000000000e+00 - - -8.2908272743225098e-01 4.2271518707275391e-01 - 3.5304966568946838e-01 -3.6941051483154297e-01 - <_> - 1.4693087577819824e+01 - - 1 2 566 1.7250000000000000e+02 0 -1 567 59. -2 -3 568 - 1.1475000000000000e+03 - - 1.8885573744773865e-01 -5.3026914596557617e-01 - 3.7803548574447632e-01 -4.6766680479049683e-01 - <_> - 1.4745432853698730e+01 - - 1 2 569 1.3495000000000000e+03 0 -1 570 - 1.8257500000000000e+04 -2 -3 571 2.3425000000000000e+03 - - 6.3086611032485962e-01 -8.6466968059539795e-01 - -5.3896957635879517e-01 5.2345264703035355e-02 - <_> - 1.4932119369506836e+01 - - 1 2 572 2.2500000000000000e+01 0 -1 573 - 1.5000000000000000e+00 -2 -3 574 201. - - 3.3922508358955383e-01 -2.9905751347541809e-01 - 6.2781113386154175e-01 -6.2289994955062866e-01 - <_> - 1.4913761138916016e+01 - - 1 2 575 5.5000000000000000e+00 0 -1 576 - 2.3500000000000000e+01 -2 -3 577 3.1500000000000000e+01 - - -1.2805154547095299e-02 -8.7636989355087280e-01 - 5.5972194671630859e-01 -1.8357984721660614e-02 - <_> - 1.5149147987365723e+01 - - 1 2 578 9.5500000000000000e+01 0 -1 579 - 1.7500000000000000e+01 -2 -3 580 2.3500000000000000e+01 - - 3.1609076261520386e-01 -7.7603405714035034e-01 - -5.4710090160369873e-01 2.3538668453693390e-01 - <_> - 1.5329943656921387e+01 - - 1 2 581 6.5000000000000000e+00 0 -1 582 - 1.2500000000000000e+01 -2 -3 583 1.1050000000000000e+02 - - -6.9671869277954102e-01 4.9136134982109070e-01 - -4.6433421969413757e-01 2.6395168900489807e-01 - <_> - 1.5564647674560547e+01 - - 1 2 584 5.6215000000000000e+03 0 -1 585 - 1.2250000000000000e+02 -2 -3 586 2.3500000000000000e+01 - - 2.3470385372638702e-01 -3.8976871967315674e-01 - -7.1197110414505005e-01 8.2057034969329834e-01 - <_> - 1.5355414390563965e+01 - - 1 2 587 38. 0 -1 588 5.0000000000000000e-01 -2 -3 589 538. - - 1.3751998543739319e-01 -5.2037465572357178e-01 - -5.0987344980239868e-01 4.1290232539176941e-01 - <_> - 1.5045125007629395e+01 - - 1 2 590 1.5645000000000000e+03 0 -1 591 - 5.4325000000000000e+03 -2 -3 592 1.2175000000000000e+03 - - -5.2137178182601929e-01 8.4993147850036621e-01 - -3.6553221940994263e-01 1.5015892684459686e-01 - <_> - 1.5401144027709961e+01 - - 1 2 593 4.9850000000000000e+02 0 -1 594 - 7.4750000000000000e+02 -2 -3 595 1.1765000000000000e+03 - - -6.4674472808837891e-01 3.5601863265037537e-01 - 4.2863798141479492e-01 -5.4054826498031616e-01 - <_> - 1.5869146347045898e+01 - - 1 2 596 1.7500000000000000e+01 0 -1 597 - 1.4500000000000000e+01 -2 -3 598 1.5500000000000000e+01 - - -6.3737052679061890e-01 4.6800240874290466e-01 - 2.9216369986534119e-01 -4.2118266224861145e-01 - <_> - 1.5621976852416992e+01 - - 1 2 599 1.2028050000000000e+05 0 -1 600 - 5.0000000000000000e-01 -2 -3 601 1.6150000000000000e+02 - - 5.1389163732528687e-01 -9.5765459537506104e-01 - -2.4716944992542267e-01 3.0435198545455933e-01 - <_> - 1.5864768028259277e+01 - - 1 2 602 805. 0 -1 603 9.9500000000000000e+01 -2 -3 604 142. - - 2.4279133975505829e-01 -5.3714054822921753e-01 - -7.2764933109283447e-01 9.6386188268661499e-01 - <_> - 1.6094741821289062e+01 - - 1 2 605 1.3500000000000000e+01 0 -1 606 - 3.8500000000000000e+01 -2 -3 607 6.3500000000000000e+01 - - -6.6710120439529419e-01 6.3659375905990601e-01 - 5.6683868169784546e-01 -7.7470704913139343e-02 - <_> - 1.6352821350097656e+01 - - 1 2 608 2.4500000000000000e+01 0 -1 609 321. -2 -3 610 - 2.1500000000000000e+01 - - 3.7493336200714111e-01 -4.8655620217323303e-01 - -3.4665739536285400e-01 4.6393311023712158e-01 - <_> - 1.6565885543823242e+01 - - 1 2 611 99. 0 -1 612 2.7500000000000000e+01 -2 -3 613 18. - - -4.0105590224266052e-01 2.1306316554546356e-01 - 9.1738814115524292e-01 -9.6910119056701660e-01 - <_> - 1.6171833038330078e+01 - - 1 2 614 6.2500000000000000e+01 0 -1 615 850. -2 -3 616 - 6.4350000000000000e+02 - - 3.9383631944656372e-01 -3.4801158308982849e-01 - -5.9990471601486206e-01 2.6293095946311951e-01 - <_> - 1.6745443344116211e+01 - - 1 2 617 1.2715000000000000e+03 0 -1 618 - 4.5000000000000000e+00 -2 -3 619 1.0584500000000000e+04 - - 3.5729202628135681e-01 -3.7123405933380127e-01 - 5.7361000776290894e-01 -7.0969957113265991e-01 - <_> - 1.6956495285034180e+01 - - 1 2 620 3.6500000000000000e+01 0 -1 621 - 1.5000000000000000e+00 -2 -3 622 3.2500000000000000e+01 - - 4.9200624227523804e-01 -8.8115519285202026e-01 - -6.2640070915222168e-01 2.1105219423770905e-01 - <_> - 1.6578645706176758e+01 - - 1 2 623 5.5850000000000000e+02 0 -1 624 - 1.2405000000000000e+03 -2 -3 625 6.2065000000000000e+03 - - -3.0536270141601562e-01 5.6700426340103149e-01 - 5.8548355102539062e-01 -3.8756856322288513e-01 - <_> - 1.6797395706176758e+01 - - 1 2 626 6.3500000000000000e+01 0 -1 627 - 2.6050000000000000e+02 -2 -3 628 3.4035000000000000e+03 - - 2.1875059604644775e-01 -8.0542641878128052e-01 - 7.2240287065505981e-01 -7.4785083532333374e-01 - <_> - 1.7109027862548828e+01 - - 1 2 629 3.8500000000000000e+01 0 -1 630 - 8.5000000000000000e+00 -2 -3 631 6.5000000000000000e+00 - - 6.9990634918212891e-01 -6.7117756605148315e-01 - 5.0323921442031860e-01 -9.7235314548015594e-02 - <_> - 1.7138694763183594e+01 - - 1 2 632 2.2500000000000000e+01 0 -1 633 - 3.5000000000000000e+00 -2 -3 634 2.5850000000000000e+02 - - 2.9667703434824944e-02 -6.7911773920059204e-01 - -3.2311308383941650e-01 3.8892340660095215e-01 - <_> - 1.7337394714355469e+01 - - 1 2 635 1.5450000000000000e+02 0 -1 636 - 2.5000000000000000e+00 -2 -3 637 3.1450000000000000e+02 - - -7.9533338546752930e-01 1.9869966804981232e-01 - -6.8889272212982178e-01 6.1526125669479370e-01 - <_> - 1.7321151733398438e+01 - - 1 2 638 1.0500000000000000e+01 0 -1 639 36. -2 -3 640 - 2.1500000000000000e+01 - - -8.3758604526519775e-01 3.5460218787193298e-01 - 2.2363138198852539e-01 -5.2678769826889038e-01 - <_> - 1.7182849884033203e+01 - - 1 2 641 4.6085000000000000e+03 0 -1 642 - 5.8500000000000000e+01 -2 -3 643 1.9495000000000000e+03 - - -7.5954502820968628e-01 4.3844437599182129e-01 - 5.2219676971435547e-01 -1.3830167055130005e-01 - <_> - 1.6850194931030273e+01 - - 1 2 644 1.5000000000000000e+00 0 -1 645 - 5.3500000000000000e+01 -2 -3 646 5.0000000000000000e-01 - - -3.6336588859558105e-01 3.9829358458518982e-01 - 1.3566142320632935e-01 -5.0935441255569458e-01 - <_> - 1.7548809051513672e+01 - - 1 2 647 5.0000000000000000e-01 0 -1 648 - 4.5000000000000000e+00 -2 -3 649 4.8150000000000000e+02 - - -6.3685965538024902e-01 6.9861376285552979e-01 - -2.4660472571849823e-01 5.1089668273925781e-01 - <_> - 1.7800493240356445e+01 - - 1 2 650 8.4115000000000000e+03 0 -1 651 - 3.5000000000000000e+00 -2 -3 652 1.0500000000000000e+01 - - -4.2067098617553711e-01 2.5168481469154358e-01 - 3.3256745338439941e-01 -8.4237796068191528e-01 - <_> - 1.7848138809204102e+01 - - 1 2 653 1.0500000000000000e+01 0 -1 654 69. -2 -3 655 - 9.5500000000000000e+01 - - -6.9294911623001099e-01 4.2984691262245178e-01 - -6.0193759202957153e-01 4.7644726932048798e-02 - <_> - 1.7507314682006836e+01 - - 1 2 656 8.5000000000000000e+00 0 -1 657 - 8.5000000000000000e+00 -2 -3 658 6.4500000000000000e+01 - - -1. 5.8663016557693481e-01 -3.4082308411598206e-01 - 3.3277565240859985e-01 - <_> - 1.7846509933471680e+01 - - 1 2 659 6.9500000000000000e+01 0 -1 660 - 1.5500000000000000e+01 -2 -3 661 1.5000000000000000e+00 - - 3.3919540047645569e-01 -2.3123474419116974e-01 - -6.8450891971588135e-01 1.9382451474666595e-01 - <_> - 1.7992757797241211e+01 - - 1 2 662 1.2135000000000000e+03 0 -1 663 - 5.5000000000000000e+00 -2 -3 664 9912. - - 1.4624653756618500e-01 -5.0702661275863647e-01 - 5.2294051647186279e-01 -3.3612698316574097e-01 - <_> - 1.8306097030639648e+01 - - 1 2 665 1.1150000000000000e+02 0 -1 666 - 2.9500000000000000e+01 -2 -3 667 131. - - 2.2407530248165131e-01 -4.9484744668006897e-01 - 4.4897791743278503e-01 -5.9033888578414917e-01 - <_> - 1.8481115341186523e+01 - - 1 2 668 5.4500000000000000e+01 0 -1 669 - 4.5000000000000000e+00 -2 -3 670 1.0450000000000000e+02 - - 9.0135312080383301e-01 -8.8288795948028564e-01 - 1.7501948773860931e-01 -5.7581090927124023e-01 - <_> - 1.8067760467529297e+01 - - 1 2 671 3.3500000000000000e+01 0 -1 672 - 5.0000000000000000e-01 -2 -3 673 9.3500000000000000e+01 - - 3.3020740747451782e-01 -5.1798826456069946e-01 - -4.4331407546997070e-01 3.4977889060974121e-01 - <_> - 1.8271715164184570e+01 - - 1 2 674 1.6950000000000000e+02 0 -1 675 - 5.5000000000000000e+00 -2 -3 676 1.5850000000000000e+02 - - -7.4128860235214233e-01 2.0395421981811523e-01 - -6.4517414569854736e-01 1. - <_> - 1.8107772827148438e+01 - - 1 2 677 3.4335000000000000e+03 0 -1 678 - 6.8955000000000000e+03 -2 -3 679 8.2335000000000000e+03 - - -1.0244774073362350e-01 7.3749846220016479e-01 - -4.6216171979904175e-01 7.2175997495651245e-01 - <_> - 1.8459823608398438e+01 - - 1 2 680 4.5000000000000000e+00 0 -1 681 149. -2 -3 682 - 3.5000000000000000e+00 - - -8.7881535291671753e-01 3.5205116868019104e-01 - 2.8036254644393921e-01 -4.4955471158027649e-01 - <_> - 1.8034639358520508e+01 - - 1 2 683 9.2500000000000000e+01 0 -1 684 - 6.0500000000000000e+01 -2 -3 685 1.0795000000000000e+03 - - 3.0652499198913574e-01 -4.2518511414527893e-01 - 4.2748662829399109e-01 -7.5712633132934570e-01 - <_> - 1.8265748977661133e+01 - - 1 2 686 4137. 0 -1 687 4.5000000000000000e+00 -2 -3 688 - 2.2500000000000000e+01 - - 2.6524448394775391e-01 -8.7384039163589478e-01 - 2.3110976815223694e-01 -4.6121290326118469e-01 - <_> - 1.8894989013671875e+01 - - 1 2 689 8.2650000000000000e+02 0 -1 690 - 3.0650000000000000e+02 -2 -3 691 5.6025000000000000e+03 - - -3.5010933876037598e-01 4.3205916881561279e-01 - 6.2924057245254517e-01 -4.4751787185668945e-01 - <_> - 1.9186059951782227e+01 - - 1 2 692 1.1500000000000000e+01 0 -1 693 10537. -2 -3 694 - 2.8500000000000000e+01 - - 7.5397258996963501e-01 -8.4067875146865845e-01 - 2.9107019305229187e-01 -2.9084861278533936e-01 - <_> - 1.9097457885742188e+01 - - 1 2 695 5.0000000000000000e-01 0 -1 696 - 2.3365000000000000e+03 -2 -3 697 53. - - -2.0022928714752197e-01 5.5956262350082397e-01 - -3.5728842020034790e-01 6.0947358608245850e-01 - <_> - 1.9231519699096680e+01 - - 1 2 698 2.9250000000000000e+02 0 -1 699 7389. -2 -3 700 - 7.1615000000000000e+03 - - 4.6205502748489380e-01 -3.7696495652198792e-01 - -5.6401371955871582e-01 1.2572592496871948e-01 - <_> - 1.9182878494262695e+01 - - 1 2 701 1.5000000000000000e+00 0 -1 702 2558. -2 -3 703 - 2.5000000000000000e+00 - - 5.7061773538589478e-01 -8.8573408126831055e-01 - 5.6795483827590942e-01 -4.8640340566635132e-02 - <_> - 1.9205448150634766e+01 - - 1 2 704 6.7250000000000000e+02 0 -1 705 - 4.5185000000000000e+03 -2 -3 706 1.6950000000000000e+02 - - 2.2569710388779640e-02 -5.9597754478454590e-01 -1. - 9.1055244207382202e-01 - <_> - 1.9722917556762695e+01 - - 1 2 707 5.2150000000000000e+02 0 -1 708 - 2.2500000000000000e+01 -2 -3 709 22. - - -3.8346976041793823e-01 1.7193076014518738e-01 - -7.7268058061599731e-01 5.1746833324432373e-01 - <_> - 1.9223962783813477e+01 - - 1 2 710 1.6450000000000000e+02 0 -1 711 - 6.0500000000000000e+01 -2 -3 712 4.4500000000000000e+01 - - 2.2410076856613159e-01 -6.7257648706436157e-01 - -6.6855657100677490e-01 8.4185588359832764e-01 - <_> - 1.9324115753173828e+01 - - 1 2 713 3.1500000000000000e+01 0 -1 714 885. -2 -3 715 458. - - 3.4352478384971619e-01 -6.2290155887603760e-01 - -1.5769523382186890e-01 4.6984970569610596e-01 - <_> - 1.9645074844360352e+01 - - 1 2 716 1.5000000000000000e+00 0 -1 717 - 2.7500000000000000e+01 -2 -3 718 5.0000000000000000e-01 - - -1.5117371082305908e-01 5.1611447334289551e-01 - 3.8312494754791260e-01 -4.8121353983879089e-01 - <_> - 1.9339143753051758e+01 - - 1 2 719 355. 0 -1 720 5.5000000000000000e+00 -2 -3 721 - 4.1500000000000000e+01 - - -3.9813804626464844e-01 2.2346007823944092e-01 1. - -8.0484783649444580e-01 - <_> - 1.9826204299926758e+01 - - 1 2 722 5.0000000000000000e-01 0 -1 723 - 1.4145000000000000e+03 -2 -3 724 2.2500000000000000e+01 - - 4.8705908656120300e-01 -4.7939151525497437e-01 - -4.1103795170783997e-01 3.4255331754684448e-01 - <_> - 2.0040077209472656e+01 - - 1 2 725 1.5585000000000000e+03 0 -1 726 - 7.5450000000000000e+02 -2 -3 727 7.0250000000000000e+02 - - -6.1711019277572632e-01 2.1387414634227753e-01 - 8.2314563915133476e-03 -8.8682103157043457e-01 - <_> - 1.9832237243652344e+01 - - 1 2 728 3.7250000000000000e+02 0 -1 729 - 1.2500000000000000e+01 -2 -3 730 5.0000000000000000e-01 - - 6.4650267362594604e-01 -6.3438403606414795e-01 - 8.2046084105968475e-02 -4.0398535132408142e-01 - <_> - 2.0015359878540039e+01 - - 1 2 731 616. 0 -1 732 5.3950000000000000e+02 -2 -3 733 - 1.6500000000000000e+01 - - 8.7944704294204712e-01 -8.7063318490982056e-01 - -7.1043938398361206e-01 1.8312272429466248e-01 - <_> - 1.9969459533691406e+01 - - 1 2 734 5.5500000000000000e+01 0 -1 735 - 1.8500000000000000e+01 -2 -3 736 463. - - -4.5961013436317444e-01 5.2103579044342041e-01 - -6.5900236368179321e-01 -4.5900702476501465e-02 - <_> - 1.9850994110107422e+01 - - 1 2 737 1.5000000000000000e+00 0 -1 738 - 3.5500000000000000e+01 -2 -3 739 1.3995000000000000e+03 - - -4.4971930980682373e-01 5.4433470964431763e-01 - 1.3450010120868683e-01 -4.4755488634109497e-01 - <_> - 1.9611703872680664e+01 - - 1 2 740 1.2185000000000000e+03 0 -1 741 - 2.5000000000000000e+00 -2 -3 742 2.0500000000000000e+01 - - -1.1004138737916946e-02 -6.4876526594161987e-01 - 5.7901018857955933e-01 -2.3929107189178467e-01 - <_> - 1.9846769332885742e+01 - - 1 2 743 9.5000000000000000e+00 0 -1 744 26. -2 -3 745 - 7.5000000000000000e+00 - - 2.8899505734443665e-01 -7.0432722568511963e-01 - 2.3506632447242737e-01 -6.7175412178039551e-01 - <_> - 1.9991693496704102e+01 - - 1 2 746 5.5000000000000000e+00 0 -1 747 119. -2 -3 748 - 1.2950000000000000e+02 - - 1. -9.5935773849487305e-01 1.4492283761501312e-01 - -6.2346059083938599e-01 - <_> - 2.0697137832641602e+01 - - 1 2 749 108. 0 -1 750 5.5000000000000000e+00 -2 -3 751 - 6.0050000000000000e+02 - - 2.0598402619361877e-01 -3.1419786810874939e-01 - 7.0544409751892090e-01 -9.1675537824630737e-01 - <_> - 2.0869754791259766e+01 - - 1 2 752 2.1500000000000000e+01 0 -1 753 - 8.5000000000000000e+00 -2 -3 754 5.2500000000000000e+01 - - -9.2930352687835693e-01 1. 1.7261737585067749e-01 - -7.1494102478027344e-01 - <_> - 2.0861036300659180e+01 - - 1 2 755 5.0000000000000000e-01 0 -1 756 - 6.5000000000000000e+00 -2 -3 757 36104. - - -9.8012816905975342e-01 3.0874124169349670e-01 - -4.9350947141647339e-01 1.4333745837211609e-01 - <_> - 2.0605552673339844e+01 - - 1 2 758 5.4500000000000000e+01 0 -1 759 - 5.6350000000000000e+02 -2 -3 760 1.5625000000000000e+03 - - 2.8180310130119324e-01 -3.0899211764335632e-01 - 6.7988240718841553e-01 -8.8957315683364868e-01 - <_> - 2.0792449951171875e+01 - - 1 2 761 7.4500000000000000e+01 0 -1 762 - 2.1350000000000000e+02 -2 -3 763 4.5000000000000000e+00 - - 7.5075513124465942e-01 -8.8623046875000000e-01 - 4.6418187022209167e-01 -9.8970189690589905e-02 - <_> - 2.0991796493530273e+01 - - 1 2 764 3985. 0 -1 765 5.5000000000000000e+00 -2 -3 766 - 5.5000000000000000e+00 - - 3.1011736392974854e-01 -2.7613282203674316e-01 -1. - 8.9613044261932373e-01 - <_> - 2.1320064544677734e+01 - - 1 2 767 2.8500000000000000e+01 0 -1 768 - 2.6250000000000000e+02 -2 -3 769 2.6500000000000000e+01 - - 7.0724177360534668e-01 -4.7540894150733948e-01 - 3.2826820015907288e-01 -6.3711547851562500e-01 - <_> - 2.1143175125122070e+01 - - 1 2 770 1.7500000000000000e+01 0 -1 771 - 5.8500000000000000e+01 -2 -3 772 7704. - - -6.2765136361122131e-02 4.9819609522819519e-01 - 1.8703785538673401e-01 -9.2927688360214233e-01 - <_> - 2.1136123657226562e+01 - - 1 2 773 4.5000000000000000e+00 0 -1 774 - 1.5000000000000000e+00 -2 -3 775 6.3500000000000000e+01 - - -8.5042881965637207e-01 3.7720718979835510e-01 - -6.6263186931610107e-01 -7.0531466044485569e-03 - <_> - 2.0957967758178711e+01 - - 1 2 776 2.3355000000000000e+03 0 -1 777 - 1.6655000000000000e+03 -2 -3 778 7.7950000000000000e+02 - - -5.8912044763565063e-01 7.2663074731826782e-01 - 7.1329838037490845e-01 -9.2555418610572815e-02 - <_> - 2.1328319549560547e+01 - - 1 2 779 4.5000000000000000e+00 0 -1 780 - 1.7500000000000000e+01 -2 -3 781 116. - - 5.8393400907516479e-01 -5.6582391262054443e-01 - -7.0427477359771729e-01 -3.2516807317733765e-02 - <_> - 2.1190340042114258e+01 - - 1 2 782 5.0000000000000000e-01 0 -1 783 - 5.5000000000000000e+00 -2 -3 784 2.2500000000000000e+01 - - -7.9387390613555908e-01 4.3818581104278564e-01 - -4.3716219067573547e-01 2.7609312534332275e-01 - <_> - 2.1414947509765625e+01 - - 1 2 785 1.7500000000000000e+01 0 -1 786 - 2.0500000000000000e+01 -2 -3 787 3.4500000000000000e+01 - - -3.2550397515296936e-01 2.9646944999694824e-01 - 3.9801727980375290e-02 -8.1744748353958130e-01 - <_> - 2.1027912139892578e+01 - - 1 2 788 3.5000000000000000e+00 0 -1 789 - 1.0500000000000000e+01 -2 -3 790 3.0015000000000000e+03 - - -5.8203905820846558e-01 3.9097124338150024e-01 - 4.4877341389656067e-01 -4.5889684557914734e-01 - <_> - 2.1614578247070312e+01 - - 1 2 791 1.2545000000000000e+03 0 -1 792 - 5.0000000000000000e-01 -2 -3 793 21. - - 3.3954218029975891e-01 -3.9357089996337891e-01 - -7.9993861913681030e-01 5.8666568994522095e-01 - <_> - 2.2001014709472656e+01 - - 1 2 794 1.5495000000000000e+03 0 -1 795 751. -2 -3 796 - 1.4500000000000000e+01 - - -6.1558878421783447e-01 4.7567668557167053e-01 - 3.8643726706504822e-01 -4.9177539348602295e-01 - <_> - 2.2125329971313477e+01 - - 1 2 797 3.5500000000000000e+01 0 -1 798 - 1.0450000000000000e+02 -2 -3 799 1.2500000000000000e+01 - - 1.7887133359909058e-01 -8.5177820920944214e-01 - 4.1519433259963989e-01 -1.6076141595840454e-01 - <_> - 2.2388074874877930e+01 - - 1 2 800 550. 0 -1 801 3445. -2 -3 802 2.1850000000000000e+02 - - 1. -8.8448894023895264e-01 -2.4786205589771271e-01 - 2.6274520158767700e-01 - <_> - 2.2539171218872070e+01 - - 1 2 803 116554. 0 -1 804 1.7350000000000000e+02 -2 -3 805 - 8.9500000000000000e+01 - - 2.4936345219612122e-01 -6.2610012292861938e-01 - -6.6242986917495728e-01 4.0655055642127991e-01 - <_> - 2.2177883148193359e+01 - - 1 2 806 4.5000000000000000e+00 0 -1 807 - 5.0000000000000000e-01 -2 -3 808 3.5065000000000000e+03 - - -7.4715948104858398e-01 3.9860600233078003e-01 - -5.3111910820007324e-01 1.2362924218177795e-01 - <_> - 2.2504861831665039e+01 - - 1 2 809 1.4865000000000000e+03 0 -1 810 - 5.0000000000000000e-01 -2 -3 811 29. - - 1.3726322352886200e-01 -6.5520441532135010e-01 - -7.5685930252075195e-01 3.2698005437850952e-01 - <_> - 2.2686376571655273e+01 - - 1 2 812 5.2500000000000000e+01 0 -1 813 - 2.6500000000000000e+01 -2 -3 814 3.0500000000000000e+01 - - -1.5744365751743317e-01 5.0805997848510742e-01 - -7.4109727144241333e-01 3.1853440403938293e-01 - <_> - 2.2791370391845703e+01 - - 1 2 815 2.3450000000000000e+02 0 -1 816 - 2.5000000000000000e+00 -2 -3 817 147638. - - -8.8153153657913208e-02 5.4080992937088013e-01 - 4.0426537394523621e-01 -6.1521077156066895e-01 - <_> - 2.2746583938598633e+01 - - 1 2 818 2.2500000000000000e+01 0 -1 819 - 3.7650000000000000e+02 -2 -3 820 3.5000000000000000e+00 - - 8.3446598052978516e-01 -8.2142156362533569e-01 - 6.4422589540481567e-01 -4.4787917286157608e-02 - <_> - 2.2948705673217773e+01 - - 1 2 821 1.0500000000000000e+01 0 -1 822 201. -2 -3 823 - 6.7500000000000000e+01 - - -2.8939151763916016e-01 3.3829051256179810e-01 - -5.8153116703033447e-01 3.8105338811874390e-01 - <_> - 2.2919631958007812e+01 - - 1 2 824 4.5000000000000000e+00 0 -1 825 - 5.2075000000000000e+03 -2 -3 826 3.8500000000000000e+01 - - 6.2978500127792358e-01 -1.7962990701198578e-01 - -6.0869598388671875e-01 -2.9075229540467262e-02 - <_> - 2.3112272262573242e+01 - - 1 2 827 456. 0 -1 828 2.1500000000000000e+01 -2 -3 829 271. - - -6.7311352491378784e-01 1.9264096021652222e-01 - -7.6656156778335571e-01 7.5126051902770996e-01 - <_> - 2.3314619064331055e+01 - - 1 2 830 9.5000000000000000e+00 0 -1 831 62. -2 -3 832 - 1.0250000000000000e+02 - - 5.3542816638946533e-01 -7.8225767612457275e-01 - -4.1664305329322815e-01 2.2309158742427826e-01 - <_> - 2.3092792510986328e+01 - - 1 2 833 1.6245000000000000e+03 0 -1 834 - 2.1405000000000000e+03 -2 -3 835 2.3500000000000000e+01 - - 7.6887971162796021e-01 -7.8312724828720093e-01 - 3.3704435825347900e-01 -2.2182606160640717e-01 - <_> - 2.3098850250244141e+01 - - 1 2 836 5.7500000000000000e+01 0 -1 837 30. -2 -3 838 - 1.1750000000000000e+02 - - -3.9047434926033020e-01 7.0053535699844360e-01 - 6.3777458667755127e-01 -1.5085510909557343e-01 - <_> - 2.3334737777709961e+01 - - 1 2 839 1.9350000000000000e+02 0 -1 840 20715. -2 -3 841 - 3.5000000000000000e+00 - - -1.6165058314800262e-01 5.8560174703598022e-01 - 6.2762081623077393e-02 -5.0060212612152100e-01 - <_> - 2.3548194885253906e+01 - - 1 2 842 1.5500000000000000e+01 0 -1 843 - 4.5000000000000000e+00 -2 -3 844 318. - - 6.7111068964004517e-01 -8.1105804443359375e-01 - 2.1345792710781097e-01 -6.4082610607147217e-01 - <_> - 2.3465780258178711e+01 - - 1 2 845 1.5000000000000000e+00 0 -1 846 - 9.6250000000000000e+02 -2 -3 847 1.0500000000000000e+01 - - 3.3311456441879272e-01 -7.9367685317993164e-01 - 5.8400928974151611e-01 -8.2414992153644562e-02 - <_> - 2.3698833465576172e+01 - - 1 2 848 2.5750000000000000e+02 0 -1 849 - 2.0622500000000000e+04 -2 -3 850 133. - - -2.1840496361255646e-01 6.1215102672576904e-01 - 7.2797334194183350e-01 -7.8106528520584106e-01 - <_> - 2.4240703582763672e+01 - - 1 2 851 62616. 0 -1 852 5.1750000000000000e+02 -2 -3 853 - 2.0985000000000000e+03 - - -7.3088161647319794e-02 5.4187005758285522e-01 - -9.7861820459365845e-01 8.4708303213119507e-01 - <_> - 2.4200925827026367e+01 - - 1 2 854 13008. 0 -1 855 1571. -2 -3 856 45. - - 6.6456145048141479e-01 -3.9776403456926346e-02 - -8.6307746171951294e-01 1. - <_> - 2.4082960128784180e+01 - - 1 2 857 3.5000000000000000e+00 0 -1 858 - 9.5000000000000000e+00 -2 -3 859 3.5000000000000000e+00 - - -1. 1. 2.9574161767959595e-01 -2.3182141780853271e-01 - <_> - 2.4084737777709961e+01 - - 1 2 860 3.7500000000000000e+01 0 -1 861 245. -2 -3 862 - 7.5000000000000000e+00 - - 4.1369399428367615e-01 -4.1193068027496338e-01 - 5.4411876201629639e-01 -1.9174022972583771e-01 - <_> - 2.3971153259277344e+01 - - 1 2 863 7.2500000000000000e+01 0 -1 864 - 2.5500000000000000e+01 -2 -3 865 5620. - - 4.0953439474105835e-01 -7.1287387609481812e-01 - 2.9135236144065857e-01 -4.4266882538795471e-01 - <_> - 2.4037570953369141e+01 - - 1 2 866 2.4500000000000000e+01 0 -1 867 - 2.1500000000000000e+01 -2 -3 868 1.3850000000000000e+02 - - -6.6728180646896362e-01 8.0503904819488525e-01 - 2.9000800848007202e-01 -3.3851844072341919e-01 - <_> - 2.4266254425048828e+01 - - 1 2 869 5.0000000000000000e-01 0 -1 870 - 1.7250000000000000e+02 -2 -3 871 2.2350000000000000e+02 - - 4.8248341679573059e-01 -3.8941776752471924e-01 - -3.1365787982940674e-01 5.1915067434310913e-01 - <_> - 2.4528257369995117e+01 - - 1 2 872 4.3500000000000000e+01 0 -1 873 38. -2 -3 874 - 1.8500000000000000e+01 - - 8.9310199022293091e-02 -7.2979074716567993e-01 - -8.7608027458190918e-01 2.6200246810913086e-01 - <_> - 2.4948534011840820e+01 - - 1 2 875 1.7500000000000000e+01 0 -1 876 - 5.0000000000000000e-01 -2 -3 877 1.9050000000000000e+02 - - 1.2763984501361847e-01 -6.1743724346160889e-01 - 4.2027613520622253e-01 -3.6524018645286560e-01 - <_> - 2.4699710845947266e+01 - - 1 2 878 1.5500000000000000e+01 0 -1 879 - 9.5000000000000000e+00 -2 -3 880 1.1950000000000000e+02 - - -7.6706290245056152e-01 4.8537570238113403e-01 - -5.4855662584304810e-01 8.2174651324748993e-02 - <_> - 2.4984062194824219e+01 - - 1 2 881 1.5000000000000000e+00 0 -1 882 - 1.4500000000000000e+01 -2 -3 883 7.4500000000000000e+01 - - -9.5929491519927979e-01 2.8435263037681580e-01 - -5.6600302457809448e-01 1.5080869197845459e-01 - <_> - 2.5305467605590820e+01 - - 1 2 884 1.5000000000000000e+00 0 -1 885 - 1.4500000000000000e+01 -2 -3 886 5.2150000000000000e+02 - - 3.2140514254570007e-01 -7.5512856245040894e-01 - -5.6036186218261719e-01 1.1670445650815964e-01 - <_> - 2.5274513244628906e+01 - - 1 2 887 1.9500000000000000e+01 0 -1 888 - 1.0650000000000000e+02 -2 -3 889 8.4050000000000000e+02 - - -8.7158387899398804e-01 4.3117862939834595e-01 - 1.4426548779010773e-01 -4.6586552262306213e-01 - <_> - 2.4883895874023438e+01 - - 1 2 890 3.0650000000000000e+02 0 -1 891 - 5.0000000000000000e-01 -2 -3 892 4.5500000000000000e+01 - - 1.8699711561203003e-01 -3.9061647653579712e-01 - -7.0082974433898926e-01 6.7297667264938354e-01 - <_> - 2.5504806518554688e+01 - - 1 2 893 5.0000000000000000e-01 0 -1 894 - 3.1151500000000000e+04 -2 -3 895 500. - - 6.5120726823806763e-01 -4.1004878282546997e-01 - -4.7606337070465088e-01 9.5995731651782990e-02 - <_> - 2.5152439117431641e+01 - - 1 2 896 5.5000000000000000e+00 0 -1 897 - 1.9500000000000000e+01 -2 -3 898 5.9500000000000000e+01 - - -1.2321064621210098e-01 6.1841166019439697e-01 - -3.6375361680984497e-01 5.2369672060012817e-01 - <_> - 2.5155344009399414e+01 - - 1 2 899 1.8674500000000000e+04 0 -1 900 - 2.1850000000000000e+02 -2 -3 901 8562. - - -1.6005823388695717e-02 6.5699905157089233e-01 - -9.5848602056503296e-01 5.1249152421951294e-01 - <_> - 2.5483896255493164e+01 - - 1 2 902 9.1500000000000000e+01 0 -1 903 - 5.4500000000000000e+01 -2 -3 904 1673. - - -1.8930622935295105e-01 3.2855287194252014e-01 - 3.8335686922073364e-01 -9.2048138380050659e-01 - <_> - 2.5274023056030273e+01 - - 1 2 905 9.0500000000000000e+01 0 -1 906 - 2.9500000000000000e+01 -2 -3 907 161. - - 1.9278690218925476e-01 -4.3163070082664490e-01 - -8.2271754741668701e-01 6.6138559579849243e-01 - <_> - 2.5197338104248047e+01 - - 1 2 908 6.0500000000000000e+01 0 -1 909 - 3.5000000000000000e+00 -2 -3 910 2.1500000000000000e+01 - - 1.6147840023040771e-01 -7.2664386034011841e-01 - 6.0210800170898438e-01 -7.6684340834617615e-02 - <_> - 2.5375751495361328e+01 - - 1 2 911 1.2500000000000000e+01 0 -1 912 - 1.0500000000000000e+01 -2 -3 913 3.5000000000000000e+00 - - 3.1757584214210510e-01 -9.6368086338043213e-01 - 3.0798566341400146e-01 -2.2424852848052979e-01 - <_> - 2.5239341735839844e+01 - - 1 2 914 2.0500000000000000e+01 0 -1 915 - 5.0000000000000000e-01 -2 -3 916 5.2500000000000000e+01 - - 5.4820358753204346e-01 -2.6598191261291504e-01 - 6.2160044908523560e-01 -6.1119222640991211e-01 - <_> - 2.5769451141357422e+01 - - 1 2 917 8.5000000000000000e+00 0 -1 918 - 3.5000000000000000e+00 -2 -3 919 785. - - -5.2361053228378296e-01 1.3663402758538723e-02 - 5.3010904788970947e-01 -5.6690508127212524e-01 - <_> - 2.6132120132446289e+01 - - 1 2 920 3.5000000000000000e+00 0 -1 921 - 5.5000000000000000e+00 -2 -3 922 2.7500000000000000e+01 - - -3.4756454825401306e-01 6.6776388883590698e-01 - -3.2966667413711548e-01 3.6266979575157166e-01 - <_> - 2.5398084640502930e+01 - - 1 2 923 3.7500000000000000e+01 0 -1 924 - 4.5450000000000000e+02 -2 -3 925 76. - - -5.9789156913757324e-01 2.5262823700904846e-01 - -7.3403567075729370e-01 2.0674343407154083e-01 - <_> - 2.5510837554931641e+01 - - 1 2 926 11321. 0 -1 927 2.5000000000000000e+00 -2 -3 928 - 1.1450000000000000e+02 - - -8.3973264694213867e-01 1.1275193840265274e-01 - -9.1843432188034058e-01 8.7821447849273682e-01 - <_> - 2.6130455017089844e+01 - - 1 2 929 6.5000000000000000e+00 0 -1 930 3083. -2 -3 931 - 3.0875000000000000e+03 - - 4.2603471875190735e-01 -3.6732077598571777e-01 - -4.1711282730102539e-01 6.1961770057678223e-01 - <_> - 2.6262090682983398e+01 - - 1 2 932 17935. 0 -1 933 425. -2 -3 934 - 2.7176500000000000e+04 - - 4.5509326457977295e-01 -6.6757386922836304e-01 - -5.3166776895523071e-01 1.3163578510284424e-01 - <_> - 2.6658596038818359e+01 - - 1 2 935 1.7500000000000000e+01 0 -1 936 - 1.1745000000000000e+03 -2 -3 937 5.0000000000000000e-01 - - 2.5388157367706299e-01 -7.9901087284088135e-01 - 4.5095619559288025e-01 -1.0241491347551346e-01 - <_> - 2.6969305038452148e+01 - - 1 2 938 3.0500000000000000e+01 0 -1 939 - 2.4500000000000000e+01 -2 -3 940 2.2500000000000000e+01 - - 5.1047235727310181e-02 -8.9242154359817505e-01 - 3.1070950627326965e-01 -2.6842564344406128e-01 - <_> - 2.6705583572387695e+01 - - 1 2 941 1.3050000000000000e+02 0 -1 942 - 3.4500000000000000e+01 -2 -3 943 2.2150000000000000e+02 - - -1.1592853814363480e-01 -7.7454018592834473e-01 - 4.5384824275970459e-01 -3.1817260384559631e-01 - <_> - 2.6782285690307617e+01 - - 1 2 944 1.7735000000000000e+03 0 -1 945 - 9.5000000000000000e+00 -2 -3 946 4.5705000000000000e+03 - - -3.9006590843200684e-02 -9.5107847452163696e-01 - -6.5736269950866699e-01 1.7125985026359558e-01 - <_> - 2.7105680465698242e+01 - - 1 2 947 1.7625000000000000e+03 0 -1 948 - 1.3850000000000000e+02 -2 -3 949 1.9750000000000000e+02 - - 3.6351567506790161e-01 -5.5703014135360718e-01 - 1.4079628884792328e-01 -5.2406501770019531e-01 - <_> - 2.7263711929321289e+01 - - 1 2 950 2.5000000000000000e+00 0 -1 951 - 5.1850000000000000e+02 -2 -3 952 1.0500000000000000e+01 - - 6.5141850709915161e-01 -9.1679638624191284e-01 - 2.9593178629875183e-01 -2.6542136073112488e-01 - <_> - 2.6919979095458984e+01 - - 1 2 953 1286. 0 -1 954 5.0500000000000000e+01 -2 -3 955 - 9549. - - 2.3069593310356140e-01 -3.4373316168785095e-01 - 7.6501649618148804e-01 -1.6475467383861542e-01 - <_> - 2.7302589416503906e+01 - - 1 2 956 3.0500000000000000e+01 0 -1 957 - 3.5000000000000000e+00 -2 -3 958 20. - - 4.2295122146606445e-01 -5.0685709714889526e-01 - -6.1503076553344727e-01 3.8261166214942932e-01 - <_> - 2.7030504226684570e+01 - - 1 2 959 1.5000000000000000e+00 0 -1 960 - 4.2500000000000000e+01 -2 -3 961 7879. - - -8.3279174566268921e-01 3.1151020526885986e-01 - 5.7181537151336670e-01 -4.0998581051826477e-01 - <_> - 2.7195131301879883e+01 - - 1 2 962 1.9550000000000000e+02 0 -1 963 - 9.7500000000000000e+01 -2 -3 964 1.7450000000000000e+02 - - 1.7131289839744568e-01 -7.6953160762786865e-01 - -8.5992205142974854e-01 9.4537514448165894e-01 - <_> - 2.7257419586181641e+01 - - 1 2 965 5.1150000000000000e+02 0 -1 966 - 2.3335000000000000e+03 -2 -3 967 37646. - - -5.3452479839324951e-01 5.5600736290216446e-02 - 9.5302796363830566e-01 -8.5994201898574829e-01 - <_> - 2.7456840515136719e+01 - - 1 2 968 2.7500000000000000e+01 0 -1 969 - 4.5000000000000000e+00 -2 -3 970 3.2250000000000000e+02 - - 2.6460289955139160e-01 -3.8417342305183411e-01 - 4.4693005084991455e-01 -8.1004393100738525e-01 - <_> - 2.7806034088134766e+01 - - 1 2 971 2.3500000000000000e+01 0 -1 972 - 7.6500000000000000e+01 -2 -3 973 1.2500000000000000e+01 - - -5.5745208263397217e-01 3.4919399023056030e-01 - 3.5557851195335388e-01 -5.3877633810043335e-01 - <_> - 2.7538705825805664e+01 - - 1 2 974 7.9500000000000000e+01 0 -1 975 - 1.4500000000000000e+01 -2 -3 976 87. - - 2.8678986430168152e-01 -2.9876446723937988e-01 - 8.6640423536300659e-01 -1. - <_> - 2.7824981689453125e+01 - - 1 2 977 2.5550000000000000e+02 0 -1 978 - 4.5000000000000000e+00 -2 -3 979 4.8500000000000000e+01 - - 2.7033209800720215e-01 -5.0700926780700684e-01 - -6.5432757139205933e-01 3.9897635579109192e-01 - <_> - 2.8039585113525391e+01 - - 1 2 980 8.5500000000000000e+01 0 -1 981 - 1.2500000000000000e+01 -2 -3 982 2.1150000000000000e+02 - - -9.3840378522872925e-01 2.1460363268852234e-01 - -7.5958758592605591e-01 3.2656311988830566e-01 - <_> - 2.8358228683471680e+01 - - 1 2 983 2.5000000000000000e+00 0 -1 984 154. -2 -3 985 - 5.5000000000000000e+00 - - 1.8448559939861298e-01 -8.2974767684936523e-01 - 3.1864368915557861e-01 -2.1115814149379730e-01 - <_> - 2.7895002365112305e+01 - - 1 2 986 1.5500000000000000e+01 0 -1 987 3760. -2 -3 988 - 7.4650000000000000e+02 - - 5.6718933582305908e-01 -4.6322652697563171e-01 - -1.5654714405536652e-01 4.8763912916183472e-01 - <_> - 2.8411203384399414e+01 - - 1 2 989 3.6500000000000000e+01 0 -1 990 - 5.5000000000000000e+00 -2 -3 991 177. - - 1.9065493345260620e-01 -4.4433963298797607e-01 - 5.1620143651962280e-01 -6.8428224325180054e-01 - <_> - 2.8243703842163086e+01 - - 1 2 992 2.2550000000000000e+02 0 -1 993 - 1.0702500000000000e+04 -2 -3 994 2.1500000000000000e+01 - - 9.7185559570789337e-02 -8.7033015489578247e-01 - 2.9659673571586609e-01 -4.0642136335372925e-01 - <_> - 2.8063882827758789e+01 - - 1 2 995 1.1500000000000000e+01 0 -1 996 29. -2 -3 997 - 6.5000000000000000e+00 - - -1. 1. 3.6489042639732361e-01 -1.7982187867164612e-01 - <_> - 2.8595172882080078e+01 - - 1 2 998 3.4500000000000000e+01 0 -1 999 - 3.2500000000000000e+01 -2 -3 1000 1.1750000000000000e+02 - - 7.5150117278099060e-02 -5.3011858463287354e-01 - -3.1684866547584534e-01 5.3129112720489502e-01 - <_> - 2.8468202590942383e+01 - - 1 2 1001 1.6628500000000000e+04 0 -1 1002 - 1.0500000000000000e+01 -2 -3 1003 3.3545000000000000e+03 - - 6.4890080690383911e-01 -6.3209486007690430e-01 - 6.6508811712265015e-01 -1.2697088718414307e-01 - <_> - 2.8374160766601562e+01 - - 1 2 1004 8.5000000000000000e+00 0 -1 1005 - 8.5000000000000000e+00 -2 -3 1006 1.5000000000000000e+00 - - 5.2094990015029907e-01 -9.4638687372207642e-01 - 4.4523945450782776e-01 -9.4041898846626282e-02 - <_> - 2.8551000595092773e+01 - - 1 2 1007 3.1950000000000000e+02 0 -1 1008 - 6.6500000000000000e+01 -2 -3 1009 9.5000000000000000e+00 - - 6.6274866461753845e-02 -9.6256363391876221e-01 - -4.5958206057548523e-01 1.7684090137481689e-01 - <_> - 2.8745084762573242e+01 - - 1 2 1010 1.2350000000000000e+02 0 -1 1011 - 5.5000000000000000e+00 -2 -3 1012 2.3500000000000000e+01 - - -8.1710654497146606e-01 1.9408319890499115e-01 - -6.5851712226867676e-01 6.5294885635375977e-01 - <_> - 2.8799137115478516e+01 - - 1 2 1013 1.5000000000000000e+00 0 -1 1014 6367. -2 -3 1015 - 4.7500000000000000e+01 - - -5.7579481601715088e-01 6.5927535295486450e-01 - 3.2614521682262421e-02 -5.5185180902481079e-01 - <_> - 2.9203039169311523e+01 - - 1 2 1016 4.8500000000000000e+01 0 -1 1017 1563. -2 -3 1018 - 174. - - -1.8832503259181976e-01 8.4307962656021118e-01 - 6.7039912939071655e-01 -9.4139146804809570e-01 - <_> - 2.8794641494750977e+01 - - 1 2 1019 3.3355000000000000e+03 0 -1 1020 - 6.6555000000000000e+03 -2 -3 1021 8.7150000000000000e+02 - - -9.0944504737854004e-01 4.4833663105964661e-01 - -4.0839809179306030e-01 1.7850229144096375e-01 - <_> - 2.8677459716796875e+01 - - 1 2 1022 1.2185000000000000e+03 0 -1 1023 - 8.2550000000000000e+02 -2 -3 1024 3.0550000000000000e+02 - - -3.4955474734306335e-01 6.4450144767761230e-01 - 6.0581982135772705e-01 -1.1718237400054932e-01 - <_> - 2.8913532257080078e+01 - - 1 2 1025 2.7500000000000000e+01 0 -1 1026 - 2.7500000000000000e+01 -2 -3 1027 4.3500000000000000e+01 - - -8.5049676895141602e-01 2.3607361316680908e-01 - 7.3098081350326538e-01 -6.9291877746582031e-01 - <_> - 2.9108362197875977e+01 - - 1 2 1028 7.5000000000000000e+00 0 -1 1029 - 9.5000000000000000e+00 -2 -3 1030 4.5000000000000000e+00 - - -8.3998674154281616e-01 3.6129420995712280e-01 - 9.7287259995937347e-02 -5.4456633329391479e-01 - <_> - 2.8601478576660156e+01 - - 1 2 1031 6.9500000000000000e+01 0 -1 1032 3194. -2 -3 1033 - 1194. - - 1.1185812205076218e-01 -5.0688385963439941e-01 - -5.2819758653640747e-01 4.6284502744674683e-01 - <_> - 2.8964368820190430e+01 - - 1 2 1034 2.5000000000000000e+00 0 -1 1035 - 3.5000000000000000e+00 -2 -3 1036 5.5000000000000000e+00 - - -6.3642036914825439e-01 3.6289060115814209e-01 - 7.4139624834060669e-01 -4.1967025399208069e-01 - <_> - 2.9433172225952148e+01 - - 1 2 1037 3.0500000000000000e+01 0 -1 1038 - 5.0000000000000000e-01 -2 -3 1039 7.9500000000000000e+01 - - 3.6465510725975037e-01 -3.9573243260383606e-01 - -6.1006444692611694e-01 4.6880471706390381e-01 - <_> - 2.9406284332275391e+01 - - 1 2 1040 850. 0 -1 1041 8.3500000000000000e+01 -2 -3 1042 - 503. - - -1.3215389847755432e-01 5.3341400623321533e-01 - -6.0456317663192749e-01 1.4337512850761414e-01 - <_> - 2.9681335449218750e+01 - - 1 2 1043 5.0000000000000000e-01 0 -1 1044 - 2.2500000000000000e+01 -2 -3 1045 7.1050000000000000e+02 - - -8.8528215885162354e-02 6.7735338211059570e-01 - -4.3227946758270264e-01 2.7505078911781311e-01 - <_> - 2.9964553833007812e+01 - - 1 2 1046 9.8500000000000000e+01 0 -1 1047 - 3.1500000000000000e+01 -2 -3 1048 2.7650000000000000e+02 - - 2.8321748971939087e-01 -3.9361628890037537e-01 - -8.2609468698501587e-01 2.6064848899841309e-01 - <_> - 2.9945455551147461e+01 - - 1 2 1049 8.7500000000000000e+01 0 -1 1050 - 2.2385000000000000e+03 -2 -3 1051 6.4500000000000000e+01 - - 6.9241017103195190e-01 -1.5301111340522766e-01 - -6.6095316410064697e-01 -1.9096992909908295e-02 - <_> - 3.0012765884399414e+01 - - 1 2 1052 1.2500000000000000e+01 0 -1 1053 - 9.5000000000000000e+00 -2 -3 1054 5.0750000000000000e+02 - - -8.3019262552261353e-01 6.7893797159194946e-01 - -1.2832325696945190e-01 4.3415006995201111e-01 - <_> - 2.9930473327636719e+01 - - 1 2 1055 1.8500000000000000e+01 0 -1 1056 - 1.2500000000000000e+01 -2 -3 1057 8.5000000000000000e+00 - - -3.6613929271697998e-01 4.8394933342933655e-01 - 1.7974837124347687e-01 -4.4913277029991150e-01 - <_> - 3.0477281570434570e+01 - - 1 2 1058 5.1950000000000000e+02 0 -1 1059 - 4.4500000000000000e+01 -2 -3 1060 114. - - -7.6940767467021942e-02 5.4680854082107544e-01 - -8.7260067462921143e-01 6.8811720609664917e-01 - <_> - 3.0773675918579102e+01 - - 1 2 1061 1.0450000000000000e+02 0 -1 1062 - 2.8150000000000000e+02 -2 -3 1063 1125. - - 5.4583191871643066e-01 -5.2532721310853958e-02 - -7.8279995918273926e-01 3.1823691725730896e-01 - <_> - 3.0351808547973633e+01 - - 1 2 1064 3.5000000000000000e+00 0 -1 1065 - 1.5500000000000000e+01 -2 -3 1066 55. - - -7.3623555898666382e-01 3.5894340276718140e-01 - -4.2186784744262695e-01 4.3861863017082214e-01 - <_> - 3.0537498474121094e+01 - - 1 2 1067 4307. 0 -1 1068 1160. -2 -3 1069 - 2.1660500000000000e+04 - - -7.8279590606689453e-01 4.5567861199378967e-01 - 1.8568974733352661e-01 -8.9434182643890381e-01 - <_> - 3.0696584701538086e+01 - - 1 2 1070 4.4285000000000000e+03 0 -1 1071 - 5.0000000000000000e-01 -2 -3 1072 3.1735000000000000e+03 - - 2.0552167296409607e-01 -4.5957171916961670e-01 - 7.2746735811233521e-01 -9.0351656079292297e-02 - <_> - 3.0743759155273438e+01 - - 1 2 1073 3.7500000000000000e+01 0 -1 1074 - 9.5000000000000000e+00 -2 -3 1075 1.6750000000000000e+02 - - -1.5780667960643768e-01 4.7251480817794800e-01 - -6.7792648077011108e-01 4.7175608575344086e-02 - <_> - 3.0970186233520508e+01 - - 1 2 1076 3.3550000000000000e+02 0 -1 1077 - 1.5850000000000000e+02 -2 -3 1078 6.7500000000000000e+01 - - 2.2642576694488525e-01 -7.5154268741607666e-01 - -7.6098370552062988e-01 -2.8098121285438538e-02 - <_> - 3.0785564422607422e+01 - - 1 2 1079 3.5000000000000000e+00 0 -1 1080 - 1.0750000000000000e+02 -2 -3 1081 5.5000000000000000e+00 - - -1. 1. 3.4101343154907227e-01 -1.8462051451206207e-01 - <_> - 3.0677804946899414e+01 - - 1 2 1082 1.8745000000000000e+03 0 -1 1083 8. -2 -3 1084 - 2.7950000000000000e+02 - - 3.8025709986686707e-01 -9.3898135423660278e-01 - 4.3168732523918152e-01 -1.0776055604219437e-01 - <_> - 3.1114505767822266e+01 - - 1 2 1085 1.2235000000000000e+03 0 -1 1086 502. -2 -3 1087 - 1.4500000000000000e+01 - - -3.4203383326530457e-01 8.8017475605010986e-01 - -6.2440735101699829e-01 4.3670186400413513e-01 - <_> - 3.0781503677368164e+01 - - 1 2 1088 1.0765000000000000e+03 0 -1 1089 - 1.4445000000000000e+03 -2 -3 1090 6.5000000000000000e+00 - - -1.0597463697195053e-01 5.4891431331634521e-01 - 2.9310002923011780e-01 -3.9375761151313782e-01 - <_> - 3.1352016448974609e+01 - - 1 2 1091 5.2500000000000000e+01 0 -1 1092 - 1.5000000000000000e+00 -2 -3 1093 272. - - 6.0849022865295410e-01 -2.5873470306396484e-01 - 5.7051157951354980e-01 -1. - <_> - 3.1657224655151367e+01 - - 1 2 1094 5.5000000000000000e+00 0 -1 1095 - 1.6500000000000000e+01 -2 -3 1096 30152. - - -9.6481657028198242e-01 8.0561167001724243e-01 - 4.4867545366287231e-01 -1.1930578947067261e-01 - <_> - 3.1797657012939453e+01 - - 1 2 1097 4.5000000000000000e+00 0 -1 1098 - 1.4500000000000000e+01 -2 -3 1099 3.4500000000000000e+01 - - -3.8230931758880615e-01 6.5411078929901123e-01 - 4.3631002306938171e-02 -7.3598957061767578e-01 - <_> - 3.1739580154418945e+01 - - 1 2 1100 6.5000000000000000e+00 0 -1 1101 - 3.5000000000000000e+00 -2 -3 1102 2.5500000000000000e+01 - - 2.6922503113746643e-01 -9.2841345071792603e-01 - -5.8075804263353348e-02 5.9674555063247681e-01 - <_> - 3.2161308288574219e+01 - - 1 2 1103 5.0000000000000000e-01 0 -1 1104 - 1.5500000000000000e+01 -2 -3 1105 1.5000000000000000e+00 - - -7.3271411657333374e-01 4.2172768712043762e-01 - 1.8879570066928864e-01 -4.8092129826545715e-01 - <_> - 3.1522403717041016e+01 - - 1 2 1106 1.7500000000000000e+01 0 -1 1107 - 3.5000000000000000e+00 -2 -3 1108 5.1500000000000000e+01 - - 4.1741237044334412e-01 -6.3890427350997925e-01 - -2.4483518302440643e-01 3.4861907362937927e-01 - <_> - 3.1028701782226562e+01 - - 1 2 1109 1.6500000000000000e+01 0 -1 1110 - 7.5500000000000000e+01 -2 -3 1111 1.5595000000000000e+03 - - 2.1001176536083221e-01 -5.4036855697631836e-01 - 8.2853209972381592e-01 -6.6984134912490845e-01 - <_> - 3.0648044586181641e+01 - - 1 2 1112 1.3500000000000000e+01 0 -1 1113 - 5.0000000000000000e-01 -2 -3 1114 5.5000000000000000e+00 - - 2.0337771624326706e-02 -6.9217932224273682e-01 - 3.1262809038162231e-01 -3.8065665960311890e-01 - <_> - 3.0457332611083984e+01 - - 1 2 1115 1.0425000000000000e+03 0 -1 1116 - 2.1105000000000000e+03 -2 -3 1117 5.0000000000000000e-01 - - 8.5383254289627075e-01 -9.4994091987609863e-01 - 3.6234918236732483e-01 -1.9071219861507416e-01 - <_> - 3.0355703353881836e+01 - - 1 2 1118 417. 0 -1 1119 47393. -2 -3 1120 - 1.3500000000000000e+01 - - 1.4608249068260193e-01 -7.7895587682723999e-01 - 5.4214590787887573e-01 -1.0162991285324097e-01 - <_> - 3.0591539382934570e+01 - - 1 2 1121 1.0505000000000000e+03 0 -1 1122 - 3.5000000000000000e+00 -2 -3 1123 1.2500000000000000e+01 - - 2.6039215922355652e-01 -8.2724225521087646e-01 - 2.3583582043647766e-01 -4.2682540416717529e-01 - <_> - 3.1194660186767578e+01 - - 1 2 1124 4.6185000000000000e+03 0 -1 1125 - 1.0500000000000000e+01 -2 -3 1126 1.9150000000000000e+02 - - -8.0647492408752441e-01 1.1079805344343185e-01 - 6.0312074422836304e-01 -8.1773541867733002e-02 - <_> - 3.0726728439331055e+01 - - 1 2 1127 1.3500000000000000e+01 0 -1 1128 - 4.5000000000000000e+00 -2 -3 1129 4.1550000000000000e+02 - - -6.2268900871276855e-01 3.8671565055847168e-01 - 2.8028538823127747e-01 -4.6793088316917419e-01 - <_> - 3.1088666915893555e+01 - - 1 2 1130 8.5000000000000000e+00 0 -1 1131 - 5.8445000000000000e+03 -2 -3 1132 2.8500000000000000e+01 - - -3.3040379639714956e-04 -9.1474950313568115e-01 - 3.6193940043449402e-01 -1.4911226928234100e-01 - <_> - 3.1474407196044922e+01 - - 1 2 1133 1.5500000000000000e+01 0 -1 1134 - 3.5000000000000000e+00 -2 -3 1135 1.2525000000000000e+03 - - 6.4907115697860718e-01 -5.0786149501800537e-01 - -2.0913411676883698e-01 3.8573962450027466e-01 - <_> - 3.1632471084594727e+01 - - 1 2 1136 6.5000000000000000e+00 0 -1 1137 - 3.7500000000000000e+01 -2 -3 1138 3.5500000000000000e+01 - - 6.3346821069717407e-01 -5.2402967214584351e-01 - -4.6075040102005005e-01 1.5806287527084351e-01 - <_> - 3.1587083816528320e+01 - - 1 2 1139 2.8950000000000000e+02 0 -1 1140 - 1.2865000000000000e+03 -2 -3 1141 8.0500000000000000e+01 - - -4.5387003570795059e-02 6.0369354486465454e-01 - -8.8128578662872314e-01 1.6069179773330688e-01 - <_> - 3.1416742324829102e+01 - - 1 2 1142 6.0500000000000000e+01 0 -1 1143 2554. -2 -3 1144 - 2.5000000000000000e+00 - - 5.8986186981201172e-01 -7.9697668552398682e-01 - 4.0921381115913391e-01 -1.7034149169921875e-01 - <_> - 3.1597267150878906e+01 - - 1 2 1145 7.5000000000000000e+00 0 -1 1146 - 1.2500000000000000e+01 -2 -3 1147 3.3500000000000000e+01 - - -7.0123994350433350e-01 9.0972447395324707e-01 - 1.8052530288696289e-01 -7.1117341518402100e-01 - <_> - 3.1853481292724609e+01 - - 1 2 1148 2.5000000000000000e+00 0 -1 1149 - 1.6500000000000000e+01 -2 -3 1150 50. - - -4.6300759911537170e-01 2.5621402263641357e-01 - -5.8134639263153076e-01 6.4391428232192993e-01 - <_> - 3.2041400909423828e+01 - - 1 2 1151 1.5000000000000000e+00 0 -1 1152 - 5.5000000000000000e+00 -2 -3 1153 6.6500000000000000e+01 - - 4.4350862503051758e-01 -6.5627163648605347e-01 - -4.0067231655120850e-01 3.3987161517143250e-01 - <_> - 3.2274913787841797e+01 - - 1 2 1154 2.2500000000000000e+01 0 -1 1155 121. -2 -3 1156 - 4.0750000000000000e+02 - - -5.6885540485382080e-01 2.3351371288299561e-01 - 6.7405563592910767e-01 -5.4761618375778198e-01 - <_> - 3.2459445953369141e+01 - - 1 2 1157 2.1500000000000000e+01 0 -1 1158 - 1.2500000000000000e+01 -2 -3 1159 1.9500000000000000e+01 - - -8.8360142707824707e-01 2.5230798125267029e-01 - 1.1890246719121933e-01 -5.4317802190780640e-01 - <_> - 3.2713863372802734e+01 - - 1 2 1160 3.9500000000000000e+01 0 -1 1161 - 4.5000000000000000e+00 -2 -3 1162 2.2635000000000000e+03 - - 4.9993959069252014e-01 -4.6222266554832458e-01 - -8.2206004858016968e-01 2.5441682338714600e-01 - <_> - 3.2391437530517578e+01 - - 1 2 1163 1.8500000000000000e+01 0 -1 1164 - 2.2500000000000000e+01 -2 -3 1165 1.1500000000000000e+01 - - -8.3650416135787964e-01 2.8401935100555420e-01 - 2.4446329474449158e-01 -5.4215461015701294e-01 - <_> - 3.2313743591308594e+01 - - 1 2 1166 2.1500000000000000e+01 0 -1 1167 - 4.4750000000000000e+02 -2 -3 1168 7.5000000000000000e+00 - - 2.8188237547874451e-01 -7.0770967006683350e-01 - 5.1904022693634033e-01 -7.7693074941635132e-02 - <_> - 3.2547096252441406e+01 - - 1 2 1169 3.8500000000000000e+01 0 -1 1170 - 1.0500000000000000e+01 -2 -3 1171 5.4500000000000000e+01 - - -5.1064568758010864e-01 2.3335392773151398e-01 - -7.8815060853958130e-01 1.9936113059520721e-01 - <_> - 3.2640663146972656e+01 - - 1 2 1172 2.5000000000000000e+00 0 -1 1173 - 5.5000000000000000e+00 -2 -3 1174 1330. - - -4.3339151144027710e-01 4.2221209406852722e-01 - -3.6630377173423767e-01 7.0252496004104614e-01 - <_> - 3.2781063079833984e+01 - - 1 2 1175 1.5000000000000000e+00 0 -1 1176 - 3.5000000000000000e+00 -2 -3 1177 5.0000000000000000e-01 - - 4.3612757325172424e-01 -8.5796296596527100e-01 - 2.6683306694030762e-01 -2.6626828312873840e-01 - <_> - 3.3000972747802734e+01 - - 1 2 1178 2.8150000000000000e+02 0 -1 1179 - 1.5500000000000000e+01 -2 -3 1180 4.6500000000000000e+01 - - 3.4552884101867676e-01 -5.2619069814682007e-01 - -3.2900866866111755e-01 4.3776753544807434e-01 - <_> - 3.3018821716308594e+01 - - 1 2 1181 5.0000000000000000e-01 0 -1 1182 - 1.0500000000000000e+01 -2 -3 1183 2.6450000000000000e+02 - - -4.9559688568115234e-01 7.7334856986999512e-01 - 5.2793127298355103e-01 -2.3107841610908508e-01 - <_> - 3.3071189880371094e+01 - - 1 2 1184 4.6025000000000000e+03 0 -1 1185 - 1.8500000000000000e+01 -2 -3 1186 6.8250000000000000e+02 - - -7.4181526899337769e-01 5.9372335672378540e-01 - 4.7619059681892395e-01 -1.1885309964418411e-01 - <_> - 3.3085533142089844e+01 - - 1 2 1187 1.6350000000000000e+02 0 -1 1188 - 2.7500000000000000e+01 -2 -3 1189 142. - - -4.1260236501693726e-01 2.7891275286674500e-01 - -7.0465636253356934e-01 7.5747251510620117e-01 - <_> - 3.3357414245605469e+01 - - 1 2 1190 5.0000000000000000e-01 0 -1 1191 - 5.6500000000000000e+01 -2 -3 1192 5.2150000000000000e+02 - - 6.4778029918670654e-01 -1.1932287365198135e-01 - -4.1650903224945068e-01 2.5428086519241333e-01 - <_> - 3.3322494506835938e+01 - - 1 2 1193 8.2350000000000000e+02 0 -1 1194 - 8.2650000000000000e+02 -2 -3 1195 1.3500000000000000e+01 - - 2.8512652497738600e-03 6.5731632709503174e-01 - 4.5999297499656677e-01 -6.2862813472747803e-01 - <_> - 3.3176986694335938e+01 - - 1 2 1196 1.3500000000000000e+01 0 -1 1197 70. -2 -3 1198 - 5.0000000000000000e-01 - - -6.6250026226043701e-01 7.0421558618545532e-01 - 3.7571212649345398e-01 -2.3801752924919128e-01 - <_> - 3.3435741424560547e+01 - - 1 2 1199 58282. 0 -1 1200 913. -2 -3 1201 - 1.0850000000000000e+02 - - -5.6440210342407227e-01 2.8217953443527222e-01 - -8.7045669555664062e-01 -8.5198663175106049e-02 - <_> - 3.3617641448974609e+01 - - 1 2 1202 1.5000000000000000e+00 0 -1 1203 - 1.5000000000000000e+00 -2 -3 1204 1.7675000000000000e+03 - - -7.3653697967529297e-01 7.6336652040481567e-01 - -2.4504181742668152e-01 5.5397576093673706e-01 - <_> - 3.3626171112060547e+01 - - 1 2 1205 3.5000000000000000e+00 0 -1 1206 - 1.5500000000000000e+01 -2 -3 1207 153. - - -2.8129413723945618e-01 5.9369409084320068e-01 - 8.5296230390667915e-03 -6.9582235813140869e-01 - <_> - 3.3975147247314453e+01 - - 1 2 1208 5.0000000000000000e-01 0 -1 1209 - 1.0500000000000000e+01 -2 -3 1210 2.0500000000000000e+01 - - -8.0083674192428589e-01 3.4897685050964355e-01 - -3.5385957360267639e-01 7.3448055982589722e-01 - <_> - 3.3426464080810547e+01 - - 1 2 1211 2.7950000000000000e+02 0 -1 1212 - 5.4975000000000000e+03 -2 -3 1213 7.5000000000000000e+00 - - -1.4607962965965271e-01 7.2142803668975830e-01 - 1.4154955744743347e-01 -5.4868251085281372e-01 - <_> - 3.3620513916015625e+01 - - 1 2 1214 1.1500000000000000e+01 0 -1 1215 - 2.5550000000000000e+02 -2 -3 1216 72. - - 5.8608335256576538e-01 -9.2741596698760986e-01 - 1.9404979050159454e-01 -6.2724816799163818e-01 - <_> - 3.3949718475341797e+01 - - 1 2 1217 1.9500000000000000e+01 0 -1 1218 - 2.6950000000000000e+02 -2 -3 1219 5.2500000000000000e+01 - - -8.2725256681442261e-02 -8.0563539266586304e-01 - -4.9098122119903564e-01 3.2920604944229126e-01 - <_> - 3.3907009124755859e+01 - - 1 2 1220 2.5500000000000000e+01 0 -1 1221 - 5.0000000000000000e-01 -2 -3 1222 5.0500000000000000e+01 - - 5.3421282768249512e-01 -4.2710851877927780e-02 - -8.4883642196655273e-01 -6.9108068943023682e-02 - <_> - 3.4569347381591797e+01 - - 1 2 1223 3.4500000000000000e+01 0 -1 1224 - 4.5000000000000000e+00 -2 -3 1225 4.2500000000000000e+01 - - 2.8448584675788879e-01 -3.0913567543029785e-01 - 6.9974571466445923e-01 -7.2145628929138184e-01 - <_> - 3.4406383514404297e+01 - - 1 2 1226 4.7500000000000000e+01 0 -1 1227 82. -2 -3 1228 - 476. - - -5.3745925426483154e-01 5.8132463693618774e-01 - 3.7321224808692932e-01 -6.0607558488845825e-01 - <_> - 3.4350345611572266e+01 - - 1 2 1229 4.5000000000000000e+00 0 -1 1230 161. -2 -3 1231 - 9.5000000000000000e+00 - - 5.7543116807937622e-01 -9.4070035219192505e-01 - 7.6428997516632080e-01 -5.6036282330751419e-02 - <_> - 3.4673534393310547e+01 - - 1 2 1232 1.2645000000000000e+03 0 -1 1233 1086. -2 -3 1234 - 9549. - - -2.5683671236038208e-01 8.2724517583847046e-01 - 7.0296716690063477e-01 -3.6435613036155701e-01 - <_> - 3.5003284454345703e+01 - - 1 2 1235 1.2850000000000000e+02 0 -1 1236 - 8.6235000000000000e+03 -2 -3 1237 2.6500000000000000e+01 - - 5.9038841724395752e-01 3.4432813990861177e-03 - -6.4016550779342651e-02 -9.3743759393692017e-01 - <_> - 3.5226799011230469e+01 - - 1 2 1238 9.3500000000000000e+01 0 -1 1239 13. -2 -3 1240 - 4.4500000000000000e+01 - - -6.7835944890975952e-01 3.3737751841545105e-01 - -7.8561329841613770e-01 -3.7122413516044617e-02 - <_> - 3.5086704254150391e+01 - - 1 2 1241 6.5000000000000000e+00 0 -1 1242 786. -2 -3 1243 - 4.6850000000000000e+02 - - -8.7093526124954224e-01 4.2933362722396851e-01 - -5.2467578649520874e-01 1.0233493894338608e-01 - <_> - 3.5434925079345703e+01 - - 1 2 1244 5.0650000000000000e+02 0 -1 1245 - 6.3500000000000000e+01 -2 -3 1246 2.5000000000000000e+00 - - -3.4057748317718506e-01 5.2575647830963135e-01 - -5.7031583786010742e-01 4.1367042064666748e-01 - <_> - 3.5402851104736328e+01 - - 1 2 1247 5.0000000000000000e-01 0 -1 1248 857. -2 -3 1249 - 1.3850000000000000e+02 - - 6.1650615930557251e-01 -2.0817196369171143e-01 - -2.5478323921561241e-02 -7.6659142971038818e-01 - <_> - 3.4968181610107422e+01 - - 1 2 1250 5.8500000000000000e+01 0 -1 1251 - 1.1500000000000000e+01 -2 -3 1252 5.5500000000000000e+01 - - 1.2099618464708328e-01 -4.4126412272453308e-01 - 6.0897779464721680e-01 -7.8737002611160278e-01 - <_> - 3.5193428039550781e+01 - - 1 2 1253 4.7500000000000000e+01 0 -1 1254 1423. -2 -3 1255 - 3.4500000000000000e+01 - - 4.8643037676811218e-02 -8.9261955022811890e-01 - 2.2524681687355042e-01 -6.2001824378967285e-01 - <_> - 3.5623695373535156e+01 - - 1 2 1256 2.0500000000000000e+01 0 -1 1257 - 5.5000000000000000e+00 -2 -3 1258 6.5000000000000000e+00 - - -8.9247786998748779e-01 7.9152870178222656e-01 - 4.3026548624038696e-01 -1.4470897614955902e-01 - <_> - 3.5538761138916016e+01 - - 1 2 1259 18647. 0 -1 1260 8.7850000000000000e+02 -2 -3 1261 - 50. - - 1.3848523795604706e-01 -6.2565112113952637e-01 - -3.0781137943267822e-01 5.9695762395858765e-01 - <_> - 3.5170146942138672e+01 - - 1 2 1262 2.0500000000000000e+01 0 -1 1263 - 9.5500000000000000e+01 -2 -3 1264 3.2450000000000000e+02 - - -1.9358770549297333e-01 5.9224104881286621e-01 - -3.6861309409141541e-01 7.9692333936691284e-01 - <_> - 3.5719684600830078e+01 - - 1 2 1265 1.5000000000000000e+00 0 -1 1266 - 3.4500000000000000e+01 -2 -3 1267 1.7725000000000000e+03 - - 5.4953765869140625e-01 -4.1827628016471863e-01 - 3.4924019128084183e-02 -6.3267588615417480e-01 - <_> - 3.6021175384521484e+01 - - 1 2 1268 1.3500000000000000e+01 0 -1 1269 - 5.0000000000000000e-01 -2 -3 1270 3476. - - 3.0730965733528137e-01 -7.1827191114425659e-01 - -3.3407485485076904e-01 3.0149033665657043e-01 - <_> - 3.6000087738037109e+01 - - 1 2 1271 2.1105000000000000e+03 0 -1 1272 - 1.2865000000000000e+03 -2 -3 1273 31. - - -6.6124044358730316e-02 6.6440200805664062e-01 - -7.0062541961669922e-01 8.8496291637420654e-01 - <_> - 3.6138973236083984e+01 - - 1 2 1274 6.5000000000000000e+00 0 -1 1275 - 4.0500000000000000e+01 -2 -3 1276 2.5000000000000000e+00 - - -1.8909309804439545e-01 4.3955674767494202e-01 - 8.3517062664031982e-01 -5.2926576137542725e-01 - <_> - 3.6462543487548828e+01 - - 1 2 1277 1.5000000000000000e+00 0 -1 1278 - 1.9500000000000000e+01 -2 -3 1279 2.9500000000000000e+01 - - 5.2272623777389526e-01 -5.3356873989105225e-01 - -4.3614375591278076e-01 1.6707921028137207e-01 - <_> - 3.6346103668212891e+01 - - 1 2 1280 5.4500000000000000e+01 0 -1 1281 3. -2 -3 1282 - 2.5000000000000000e+00 - - 9.2645227909088135e-01 -9.1626834869384766e-01 - 4.3882593512535095e-01 -1.1643892526626587e-01 - <_> - 3.6447643280029297e+01 - - 1 2 1283 4.3500000000000000e+01 0 -1 1284 - 4.5000000000000000e+00 -2 -3 1285 1.4250000000000000e+02 - - 2.8414136171340942e-01 -5.2052396535873413e-01 - 3.3975440263748169e-01 -4.2113724350929260e-01 - <_> - 3.6367126464843750e+01 - - 1 2 1286 2.2500000000000000e+01 0 -1 1287 - 1.0535000000000000e+03 -2 -3 1288 1.9500000000000000e+01 - - 4.4179165363311768e-01 -7.4734365940093994e-01 - 5.4282104969024658e-01 -8.0516710877418518e-02 - <_> - 3.6575954437255859e+01 - - 1 2 1289 2.5000000000000000e+00 0 -1 1290 - 1.5000000000000000e+00 -2 -3 1291 2.4500000000000000e+01 - - -3.8550149649381638e-02 -9.4949018955230713e-01 - 2.0882803201675415e-01 -4.6319213509559631e-01 - <_> - 3.6657161712646484e+01 - - 1 2 1292 1.6115000000000000e+03 0 -1 1293 3672. -2 -3 1294 - 545. - - 8.2763051986694336e-01 -4.8815292119979858e-01 - -5.2512788772583008e-01 8.1207208335399628e-02 - <_> - 3.6598300933837891e+01 - - 1 2 1295 6.0500000000000000e+01 0 -1 1296 - 1.1250000000000000e+02 -2 -3 1297 1.5350000000000000e+02 - - -5.8857690542936325e-02 4.7229456901550293e-01 - -8.1495660543441772e-01 7.3461961746215820e-01 - <_> - 3.6517520904541016e+01 - - 1 2 1298 9.4500000000000000e+01 0 -1 1299 - 4.8500000000000000e+01 -2 -3 1300 235. - - 4.8253452777862549e-01 -8.0779984593391418e-02 - -9.4696474075317383e-01 9.1954904794692993e-01 - <_> - 3.6136314392089844e+01 - - 1 2 1301 7.6150000000000000e+02 0 -1 1302 - 1.3500000000000000e+01 -2 -3 1303 3.7500000000000000e+01 - - 4.7050821781158447e-01 -6.8645346164703369e-01 - 1.8845686316490173e-01 -6.1942416429519653e-01 - <_> - 3.6255367279052734e+01 - - 1 2 1304 2.5500000000000000e+01 0 -1 1305 - 9.5000000000000000e+00 -2 -3 1306 2.4243500000000000e+04 - - -8.6751174926757812e-01 1. 1.1905297636985779e-01 - -7.7261626720428467e-01 - <_> - 3.6847282409667969e+01 - - 1 2 1307 2.5245000000000000e+03 0 -1 1308 - 1.2500000000000000e+01 -2 -3 1309 19. - - 1.8480798602104187e-01 -4.1162934899330139e-01 - -7.0126670598983765e-01 5.9191262722015381e-01 - <_> - 3.6736129760742188e+01 - - 1 2 1310 1.9500000000000000e+01 0 -1 1311 - 3.5000000000000000e+00 -2 -3 1312 9.9500000000000000e+01 - - -4.2743122577667236e-01 3.4077543020248413e-01 - -5.2904611825942993e-01 6.4898627996444702e-01 - <_> - 3.7165416717529297e+01 - - 1 2 1313 57. 0 -1 1314 7.5000000000000000e+00 -2 -3 1315 - 1.4750000000000000e+02 - - -2.9288327693939209e-01 4.2928928136825562e-01 - -5.1645982265472412e-01 3.7259963154792786e-01 - <_> - 3.6963829040527344e+01 - - 1 2 1316 1.5000000000000000e+00 0 -1 1317 - 1.5000000000000000e+00 -2 -3 1318 2.5550000000000000e+02 - - -4.8823645710945129e-01 6.1563092470169067e-01 - 6.7905879020690918e-01 -2.7743032574653625e-01 - <_> - 3.6947120666503906e+01 - - 1 2 1319 1.1545000000000000e+03 0 -1 1320 2066. -2 -3 1321 - 7.7350000000000000e+02 - - -7.2975975275039673e-01 6.6057509183883667e-01 - 6.6289925575256348e-01 -1.6708238050341606e-02 - <_> - 3.6795619964599609e+01 - - 1 2 1322 63. 0 -1 1323 5.7500000000000000e+01 -2 -3 1324 - 2.8500000000000000e+01 - - -1.5150213241577148e-01 3.7273296713829041e-01 - -8.2537877559661865e-01 8.6949664354324341e-01 - <_> - 3.7259391784667969e+01 - - 1 2 1325 1.0500000000000000e+01 0 -1 1326 - 1.6500000000000000e+01 -2 -3 1327 346. - - 4.6377313137054443e-01 -7.5801903009414673e-01 - -3.5662418603897095e-01 9.6071028709411621e-01 - <_> - 3.7495296478271484e+01 - - 1 2 1328 6.0500000000000000e+01 0 -1 1329 - 1.5500000000000000e+01 -2 -3 1330 2.6850000000000000e+02 - - 5.3055459260940552e-01 -6.3604164123535156e-01 - -6.7990607023239136e-01 2.4123270809650421e-01 - <_> - 3.7374149322509766e+01 - - 1 2 1331 2.5000000000000000e+00 0 -1 1332 - 1.3500000000000000e+01 -2 -3 1333 2.5000000000000000e+00 - - -9.0581423044204712e-01 5.8284395933151245e-01 - 3.0152860283851624e-01 -3.4942194819450378e-01 - <_> - 3.7766971588134766e+01 - - 1 2 1334 5.5000000000000000e+00 0 -1 1335 23. -2 -3 1336 - 3.0250000000000000e+02 - - -9.5462155342102051e-01 1. 3.9282312989234924e-01 - -1.1600174754858017e-01 - <_> - 3.8006900787353516e+01 - - 1 2 1337 3955. 0 -1 1338 1.6500000000000000e+01 -2 -3 1339 - 3.8500000000000000e+01 - - 3.4476998448371887e-01 -5.3807318210601807e-01 - -6.4139670133590698e-01 3.3075565099716187e-01 - <_> - 3.7836151123046875e+01 - - 1 2 1340 1.4500000000000000e+01 0 -1 1341 - 4.2050000000000000e+02 -2 -3 1342 4.5000000000000000e+00 - - 6.6126942634582520e-02 -8.9179468154907227e-01 - 2.5128620862960815e-01 -4.3012529611587524e-01 - <_> - 3.7504901885986328e+01 - - 1 2 1343 3.5000000000000000e+00 0 -1 1344 - 2.1500000000000000e+01 -2 -3 1345 3.6500000000000000e+01 - - -6.9118273258209229e-01 5.3941005468368530e-01 - 4.0820264816284180e-01 -3.3124980330467224e-01 - <_> - 3.7869743347167969e+01 - - 1 2 1346 8.5000000000000000e+00 0 -1 1347 8240. -2 -3 1348 - 1.8500000000000000e+01 - - -1.8303586402907968e-03 -7.9149729013442993e-01 - 3.6484044790267944e-01 -2.6800584793090820e-01 - <_> - 3.7688228607177734e+01 - - 1 2 1349 1.2135000000000000e+03 0 -1 1350 75. -2 -3 1351 - 5.6750000000000000e+02 - - -3.7686902284622192e-01 5.8311319351196289e-01 - 7.0945566892623901e-01 -1.8151518702507019e-01 - <_> - 3.7513351440429688e+01 - - 1 2 1352 3.5000000000000000e+00 0 -1 1353 35. -2 -3 1354 - 1.1500000000000000e+01 - - -9.6617668867111206e-01 1. 4.0123063325881958e-01 - -1.7487519979476929e-01 - <_> - 3.7691390991210938e+01 - - 1 2 1355 2.3050000000000000e+02 0 -1 1356 - 1.1500000000000000e+01 -2 -3 1357 2.8500000000000000e+01 - - -5.4078394174575806e-01 1.7803618311882019e-01 - 6.0750162601470947e-01 -9.6443849802017212e-01 - <_> - 3.8156455993652344e+01 - - 1 2 1358 6.5000000000000000e+00 0 -1 1359 - 1.0500000000000000e+01 -2 -3 1360 354. - - 4.6506500244140625e-01 -3.7838381528854370e-01 - -3.8703271746635437e-01 5.6163036823272705e-01 - <_> - 3.8427524566650391e+01 - - 1 2 1361 1.2500000000000000e+01 0 -1 1362 - 4.5000000000000000e+00 -2 -3 1363 449. - - 5.1386022567749023e-01 -6.1507451534271240e-01 - 3.0157905817031860e-01 -6.5344727039337158e-01 - <_> - 3.8548820495605469e+01 - - 1 2 1364 5.0000000000000000e-01 0 -1 1365 - 1.5000000000000000e+00 -2 -3 1366 3.8950000000000000e+02 - - -3.3223056793212891e-01 5.4063457250595093e-01 - 9.0788081288337708e-02 -5.4981482028961182e-01 - <_> - 3.8257041931152344e+01 - - 1 2 1367 1.6650000000000000e+02 0 -1 1368 - 5.0000000000000000e-01 -2 -3 1369 7.6500000000000000e+01 - - 2.8060472011566162e-01 -2.9178059101104736e-01 - -7.8990536928176880e-01 9.2143142223358154e-01 - <_> - 3.8675960540771484e+01 - - 1 2 1370 1.8500000000000000e+01 0 -1 1371 - 2.3500000000000000e+01 -2 -3 1372 4.5000000000000000e+00 - - -5.0728912465274334e-03 -8.4625685214996338e-01 - 4.8941537737846375e-01 -1.3043193519115448e-01 - <_> - 3.9024429321289062e+01 - - 1 2 1373 8.5000000000000000e+00 0 -1 1374 - 8.1295000000000000e+03 -2 -3 1375 1.1250000000000000e+02 - - 1.5426757931709290e-01 -7.5539046525955200e-01 - -3.0081889033317566e-01 3.4846922755241394e-01 - <_> - 3.8698005676269531e+01 - - 1 2 1376 9.5000000000000000e+00 0 -1 1377 - 5.5000000000000000e+00 -2 -3 1378 3.4500000000000000e+01 - - -7.7566885948181152e-01 5.3590404987335205e-01 - -3.2642310857772827e-01 3.3310726284980774e-01 - <_> - 3.8178993225097656e+01 - - 1 2 1379 2.6450000000000000e+02 0 -1 1380 - 4.6255000000000000e+03 -2 -3 1381 1.5000000000000000e+00 - - -3.2790592312812805e-01 3.8349342346191406e-01 - 3.5417640209197998e-01 -5.1901257038116455e-01 - <_> - 3.8603790283203125e+01 - - 1 2 1382 7.7450000000000000e+02 0 -1 1383 - 5.4450000000000000e+02 -2 -3 1384 4.9500000000000000e+01 - - 4.2479729652404785e-01 -6.4129936695098877e-01 - -3.8530099391937256e-01 4.2106175422668457e-01 - <_> - 3.9316322326660156e+01 - - 1 2 1385 1.2285000000000000e+03 0 -1 1386 19974. -2 -3 1387 - 2.0675000000000000e+03 - - -3.2134270668029785e-01 6.0310727357864380e-01 - 7.1253037452697754e-01 -1.8411901593208313e-01 - <_> - 3.8982051849365234e+01 - - 1 2 1388 2254. 0 -1 1389 23971. -2 -3 1390 - 2.5000000000000000e+00 - - 1.3044491410255432e-02 8.1400823593139648e-01 - 3.9543354511260986e-01 -4.9717214703559875e-01 - <_> - 3.9231285095214844e+01 - - 1 2 1391 7888. 0 -1 1392 1.2500000000000000e+01 -2 -3 1393 - 6.5000000000000000e+00 - - -9.9114888906478882e-01 1. 2.4923273921012878e-01 - -3.9778175950050354e-01 - <_> - 3.9200939178466797e+01 - - 1 2 1394 8.2500000000000000e+01 0 -1 1395 - 2.5000000000000000e+00 -2 -3 1396 2.7500000000000000e+01 - - 5.9092748165130615e-01 -6.6723209619522095e-01 - 4.0493550896644592e-01 -2.8249517083168030e-01 - <_> - 3.9109848022460938e+01 - - 1 2 1397 1.0500000000000000e+01 0 -1 1398 - 3.4150000000000000e+02 -2 -3 1399 1.5000000000000000e+00 - - 1.1704797297716141e-01 -7.8680926561355591e-01 - 5.4690092802047729e-01 -9.1091230511665344e-02 - <_> - 3.9430786132812500e+01 - - 1 2 1400 7.5000000000000000e+00 0 -1 1401 - 5.6350000000000000e+02 -2 -3 1402 9.5000000000000000e+00 - - 1. -1. 5.3584295511245728e-01 -1.1434395611286163e-01 - <_> - 3.9888351440429688e+01 - - 1 2 1403 576. 0 -1 1404 2.3765000000000000e+03 -2 -3 1405 - 1.8500000000000000e+01 - - 9.3801420927047729e-01 -7.2940248250961304e-01 - -9.7766503691673279e-02 4.5756503939628601e-01 - <_> - 3.9605831146240234e+01 - - 1 2 1406 5.5000000000000000e+00 0 -1 1407 - 6.5000000000000000e+00 -2 -3 1408 1.7500000000000000e+01 - - -9.3598860502243042e-01 6.3315272331237793e-01 - 1.0997077822685242e-01 -4.5688989758491516e-01 - <_> - 4.0259593963623047e+01 - - 1 2 1409 1.2785000000000000e+03 0 -1 1410 - 5.0000000000000000e-01 -2 -3 1411 1.0150000000000000e+02 - - 2.8614109754562378e-01 -3.0422577261924744e-01 - -5.3765338659286499e-01 7.5021845102310181e-01 - <_> - 4.0646686553955078e+01 - - 1 2 1412 9.3750000000000000e+02 0 -1 1413 - 2.5500000000000000e+01 -2 -3 1414 6.4650000000000000e+02 - - -1.8467088043689728e-01 3.8709565997123718e-01 -1. 1. - <_> - 4.0781440734863281e+01 - - 1 2 1415 5.0000000000000000e-01 0 -1 1416 62. -2 -3 1417 - 5.3500000000000000e+01 - - 6.4194250106811523e-01 -6.9881826639175415e-01 - -3.3652466535568237e-01 2.9932817816734314e-01 - <_> - 4.0840915679931641e+01 - - 1 2 1418 2.5000000000000000e+00 0 -1 1419 13192. -2 -3 1420 - 2.4950000000000000e+02 - - -9.9075198173522949e-01 8.7482362985610962e-01 - 2.9631823301315308e-01 -2.0155780017375946e-01 - <_> - 4.1011356353759766e+01 - - 1 2 1421 4.8150000000000000e+02 0 -1 1422 - 1.0450000000000000e+02 -2 -3 1423 8.5000000000000000e+00 - - -2.5319704785943031e-02 -7.4390411376953125e-01 - -8.1089955568313599e-01 7.6437503099441528e-01 - <_> - 4.0876789093017578e+01 - - 1 2 1424 5.5000000000000000e+00 0 -1 1425 - 2.5000000000000000e+00 -2 -3 1426 1.5000000000000000e+00 - - 1. -9.8024749755859375e-01 3.7663710117340088e-01 - -1.3456873595714569e-01 - <_> - 4.0677371978759766e+01 - - 1 2 1427 2.1500000000000000e+01 0 -1 1428 - 1.1125000000000000e+03 -2 -3 1429 2.3500000000000000e+01 - - 4.5568805187940598e-02 -8.6155319213867188e-01 - 3.0837088823318481e-01 -1.9941620528697968e-01 - <_> - 4.0941162109375000e+01 - - 1 2 1430 9.4500000000000000e+01 0 -1 1431 447. -2 -3 1432 - 8.9500000000000000e+01 - - 2.0531620085239410e-01 -6.4759564399719238e-01 - 2.6378956437110901e-01 -6.0503029823303223e-01 - <_> - 4.0695613861083984e+01 - - 1 2 1433 8.1450000000000000e+02 0 -1 1434 - 9.9250000000000000e+02 -2 -3 1435 2.1450000000000000e+02 - - -6.1355805397033691e-01 3.9234723895788193e-02 - 4.3808567523956299e-01 -7.3097014427185059e-01 - <_> - 4.1197418212890625e+01 - - 1 2 1436 1.8769500000000000e+04 0 -1 1437 1329. -2 -3 1438 - 5.4500000000000000e+01 - - 5.0180602073669434e-01 -3.4298053383827209e-01 - 6.9242316484451294e-01 -3.7215092778205872e-01 - <_> - 4.1157611846923828e+01 - - 1 2 1439 3.1500000000000000e+01 0 -1 1440 - 1.8500000000000000e+01 -2 -3 1441 1.5000000000000000e+00 - - 6.7518281936645508e-01 -7.6596146821975708e-01 - 5.7309043407440186e-01 -3.9805334061384201e-02 - <_> - 4.0718166351318359e+01 - - 1 2 1442 9.3500000000000000e+01 0 -1 1443 - 8.5000000000000000e+00 -2 -3 1444 1.6950000000000000e+02 - - 7.0507103204727173e-01 -4.3868264555931091e-01 - 4.2583593726158142e-01 -4.3944749236106873e-01 - <_> - 4.1168849945068359e+01 - - 1 2 1445 1.5000000000000000e+00 0 -1 1446 - 1.5500000000000000e+01 -2 -3 1447 5.0000000000000000e-01 - - -5.8355963230133057e-01 8.2266020774841309e-01 - 4.5068329572677612e-01 -1.3382685184478760e-01 - <_> - 4.1473163604736328e+01 - - 1 2 1448 5.6500000000000000e+01 0 -1 1449 - 3.3500000000000000e+01 -2 -3 1450 2.1550000000000000e+02 - - 2.5085982680320740e-01 -3.7931889295578003e-01 - 6.7997491359710693e-01 -1. - <_> - 4.1634220123291016e+01 - - 1 2 1451 5.4500000000000000e+01 0 -1 1452 - 9.5000000000000000e+00 -2 -3 1453 1.7250000000000000e+02 - - -7.9712128639221191e-01 8.5313194990158081e-01 - 1.6105654835700989e-01 -9.5611929893493652e-01 - <_> - 4.1978507995605469e+01 - - 1 2 1454 1.1615000000000000e+03 0 -1 1455 - 2.0525000000000000e+03 -2 -3 1456 5.8650000000000000e+02 - - -7.1788591146469116e-01 4.8950648307800293e-01 - 4.8551353812217712e-01 -1.9422738254070282e-01 - <_> - 4.2004768371582031e+01 - - 1 2 1457 4.6500000000000000e+01 0 -1 1458 - 3.5000000000000000e+00 -2 -3 1459 7.0350000000000000e+02 - - 3.9823031425476074e-01 -6.6477078199386597e-01 - -1.1496587097644806e-01 4.9930962920188904e-01 - <_> - 4.1885951995849609e+01 - - 1 2 1460 4.4500000000000000e+01 0 -1 1461 - 3.5000000000000000e+00 -2 -3 1462 4. - - 4.4042432308197021e-01 -1.1881566792726517e-01 - 8.4207451343536377e-01 -8.6268407106399536e-01 - <_> - 4.2072120666503906e+01 - - 1 2 1463 2.0500000000000000e+01 0 -1 1464 10. -2 -3 1465 - 5.5000000000000000e+00 - - -9.8040562868118286e-01 1. 3.3258756995201111e-01 - -1.7096966505050659e-01 - <_> - 4.2217323303222656e+01 - - 1 2 1466 1.3500000000000000e+01 0 -1 1467 47. -2 -3 1468 - 1.3325000000000000e+03 - - -6.6619759798049927e-01 5.1798510551452637e-01 - -1.2162621133029461e-03 7.3543995618820190e-01 - <_> - 4.2318325042724609e+01 - - 1 2 1469 4.5000000000000000e+00 0 -1 1470 - 1.9500000000000000e+01 -2 -3 1471 1.5585000000000000e+03 - - -9.6737003326416016e-01 6.0924607515335083e-01 - 5.8938968181610107e-01 -2.8636392951011658e-01 - <_> - 4.2444244384765625e+01 - - 1 2 1472 2.7500000000000000e+01 0 -1 1473 - 1.8247500000000000e+04 -2 -3 1474 6.5605000000000000e+03 - - -1.1921727657318115e-01 4.3995112180709839e-01 - -7.6667350530624390e-01 4.6777427196502686e-01 - <_> - 4.2317867279052734e+01 - - 1 2 1475 4.5000000000000000e+00 0 -1 1476 15. -2 -3 1477 - 3.2500000000000000e+01 - - -9.6039277315139771e-01 1. 3.9408209919929504e-01 - -1.2637579441070557e-01 - <_> - 4.2575748443603516e+01 - - 1 2 1478 367. 0 -1 1479 2578. -2 -3 1480 - 2.0050000000000000e+02 - - 5.2356463670730591e-01 -6.4678192138671875e-01 - 3.1403809785842896e-01 -3.7955451011657715e-01 - <_> - 4.2238155364990234e+01 - - 1 2 1481 5.4500000000000000e+01 0 -1 1482 - 1.8450000000000000e+02 -2 -3 1483 5.6550000000000000e+02 - - -7.5117689371109009e-01 3.9905190467834473e-01 - 1.0141634941101074e-01 -6.3857173919677734e-01 - <_> - 4.2032226562500000e+01 - - 1 2 1484 3.5500000000000000e+01 0 -1 1485 - 1.1500000000000000e+01 -2 -3 1486 4.2500000000000000e+01 - - -6.1570602655410767e-01 3.6179527640342712e-01 - 4.0053242444992065e-01 -2.0592956244945526e-01 - <_> - 4.2406646728515625e+01 - - 1 2 1487 3.6150000000000000e+02 0 -1 1488 - 7.6500000000000000e+01 -2 -3 1489 2.5000000000000000e+00 - - 2.1660387516021729e-01 -3.7647891044616699e-01 - 6.7929941415786743e-01 -8.0690664052963257e-01 - <_> - 4.2598564147949219e+01 - - 1 2 1490 3.2350000000000000e+02 0 -1 1491 - 9.5000000000000000e+00 -2 -3 1492 1.0350000000000000e+02 - - 2.8338834643363953e-01 -2.8749933838844299e-01 - -4.2244365811347961e-01 8.4098398685455322e-01 - <_> - 4.2448162078857422e+01 - - 1 2 1493 6.8500000000000000e+01 0 -1 1494 - 1.9500000000000000e+01 -2 -3 1495 2.8500000000000000e+01 - - 4.4642934203147888e-01 -8.8521170616149902e-01 - 3.8606628775596619e-01 -1.5039834380149841e-01 - <_> - 4.2684196472167969e+01 - - 1 2 1496 1.1350000000000000e+02 0 -1 1497 - 1.2195000000000000e+03 -2 -3 1498 465. - - -3.4444883465766907e-01 2.3603120446205139e-01 - 7.6531344652175903e-01 -3.9807590842247009e-01 - <_> - 4.2983776092529297e+01 - - 1 2 1499 1.5725000000000000e+03 0 -1 1500 - 7.6500000000000000e+01 -2 -3 1501 5.5000000000000000e+00 - - -3.2652869820594788e-01 2.9957908391952515e-01 - 3.3552268147468567e-01 -7.9458123445510864e-01 - <_> - 4.3334823608398438e+01 - - 1 2 1502 2.2500000000000000e+01 0 -1 1503 - 1.5000000000000000e+00 -2 -3 1504 9.5000000000000000e+00 - - -5.7209235429763794e-01 3.5104992985725403e-01 - 3.1476601958274841e-02 -5.8574450016021729e-01 - <_> - 4.3509834289550781e+01 - - 1 2 1505 51199. 0 -1 1506 5.5950000000000000e+02 -2 -3 1507 - 9.3125000000000000e+03 - - 3.0665323138237000e-01 -1.8138632178306580e-01 - -9.8618561029434204e-01 1. - <_> - 4.3432380676269531e+01 - - 1 2 1508 2.3365000000000000e+03 0 -1 1509 1614. -2 -3 1510 - 2.9285000000000000e+03 - - -6.6426819562911987e-01 5.2347922325134277e-01 - 6.3229858875274658e-01 -7.7455088496208191e-02 - <_> - 4.3682022094726562e+01 - - 1 2 1511 1.4850000000000000e+02 0 -1 1512 - 3.4500000000000000e+01 -2 -3 1513 4351. - - -4.1966313123703003e-01 2.4964161217212677e-01 - -9.2960160970687866e-01 -1.1052240431308746e-01 - <_> - 4.3838462829589844e+01 - - 1 2 1514 1.5000000000000000e+00 0 -1 1515 - 5.6150000000000000e+02 -2 -3 1516 2.5215000000000000e+03 - - -7.1278488636016846e-01 4.3191543221473694e-01 - -4.5729264616966248e-01 2.2259603440761566e-01 - <_> - 4.3913276672363281e+01 - - 1 2 1517 452. 0 -1 1518 1.5850000000000000e+02 -2 -3 1519 - 3.6500000000000000e+01 - - 2.7823349833488464e-01 -4.4655042886734009e-01 - -7.6742780208587646e-01 1.3798709213733673e-01 - <_> - 4.3755275726318359e+01 - - 1 2 1520 1.2150000000000000e+02 0 -1 1521 - 6.1500000000000000e+01 -2 -3 1522 2.4150000000000000e+02 - - 5.8016028255224228e-02 -5.8355945348739624e-01 - -6.6341340541839600e-01 4.4974878430366516e-01 - <_> - 4.3783382415771484e+01 - - 1 2 1523 1.0750000000000000e+02 0 -1 1524 - 4.5000000000000000e+00 -2 -3 1525 1080. - - 1.8615058064460754e-01 -4.8687478899955750e-01 - 4.3972969055175781e-01 -9.3779921531677246e-01 - <_> - 4.3861518859863281e+01 - - 1 2 1526 8.6500000000000000e+01 0 -1 1527 - 1.5000000000000000e+00 -2 -3 1528 1.1050000000000000e+02 - - 4.7667163610458374e-01 -4.0568494796752930e-01 - -6.4215010404586792e-01 2.9706746339797974e-02 - <_> - 4.4278926849365234e+01 - - 1 2 1529 1.7500000000000000e+01 0 -1 1530 - 1.4500000000000000e+01 -2 -3 1531 7.5500000000000000e+01 - - -6.9139021635055542e-01 6.4281481504440308e-01 - 1.8875285983085632e-02 8.0112278461456299e-01 - <_> - 4.4180038452148438e+01 - - 1 2 1532 1.3500000000000000e+01 0 -1 1533 - 3.7500000000000000e+01 -2 -3 1534 5.5000000000000000e+00 - - -5.8149468898773193e-01 3.6302325129508972e-01 - 2.1482136845588684e-01 -4.8260265588760376e-01 - <_> - 4.4126861572265625e+01 - - 1 2 1535 1.1500000000000000e+01 0 -1 1536 - 4.1450000000000000e+02 -2 -3 1537 448. - - 6.4174473285675049e-01 -5.1509088277816772e-01 - 3.2752755284309387e-01 -4.6536535024642944e-01 - <_> - 4.4402042388916016e+01 - - 1 2 1538 2.3500000000000000e+01 0 -1 1539 - 1.5000000000000000e+00 -2 -3 1540 1.2750000000000000e+02 - - 4.6208882704377174e-03 -7.9509699344635010e-01 - 2.7518290281295776e-01 -5.4167103767395020e-01 - <_> - 4.4075366973876953e+01 - - 1 2 1541 5.0000000000000000e-01 0 -1 1542 - 1.1500000000000000e+01 -2 -3 1543 1.1150000000000000e+02 - - -6.2465864419937134e-01 6.2209093570709229e-01 - -4.6270170807838440e-01 1.2467093765735626e-01 - <_> - 4.4579692840576172e+01 - - 1 2 1544 1.8500000000000000e+01 0 -1 1545 - 6.9500000000000000e+01 -2 -3 1546 4.0500000000000000e+01 - - 5.0432658195495605e-01 -1.5816394984722137e-01 - -6.3987523317337036e-01 1.9685916602611542e-01 - <_> - 4.4788379669189453e+01 - - 1 2 1547 1.2850000000000000e+02 0 -1 1548 - 1.3644850000000000e+05 -2 -3 1549 4.5000000000000000e+00 - - -1.3887935876846313e-01 -8.6476135253906250e-01 - 5.3407603502273560e-01 -1.0505830496549606e-01 - <_> - 4.4465953826904297e+01 - - 1 2 1550 1.0077500000000000e+04 0 -1 1551 - 1.9500000000000000e+01 -2 -3 1552 2.8365000000000000e+03 - - 1.8253329396247864e-01 -5.4899621009826660e-01 - 7.3290371894836426e-01 -1.2869638204574585e-01 - <_> - 4.4705356597900391e+01 - - 1 2 1553 7.0500000000000000e+01 0 -1 1554 - 2.6950000000000000e+02 -2 -3 1555 1.0050000000000000e+02 - - 1.6822533309459686e-01 -6.7410588264465332e-01 - 2.3940414190292358e-01 -7.4502784013748169e-01 - <_> - 4.4884269714355469e+01 - - 1 2 1556 1680. 0 -1 1557 7.5000000000000000e+00 -2 -3 1558 - 3.5850000000000000e+02 - - 2.8662183880805969e-01 -9.1832697391510010e-01 - 1.7891472578048706e-01 -5.9693121910095215e-01 - <_> - 4.4728557586669922e+01 - - 1 2 1559 1.7555000000000000e+03 0 -1 1560 19. -2 -3 1561 - 2332. - - -5.2603626251220703e-01 7.1634864807128906e-01 - -6.1052620410919189e-01 -4.9342345446348190e-03 - <_> - 4.4819171905517578e+01 - - 1 2 1562 1.3750000000000000e+02 0 -1 1563 - 1.5750000000000000e+02 -2 -3 1564 1.3050000000000000e+02 - - -6.0166075825691223e-02 5.8633291721343994e-01 - -8.1866687536239624e-01 1. - <_> - 4.4643035888671875e+01 - - 1 2 1565 6.3500000000000000e+01 0 -1 1566 - 1.9500000000000000e+01 -2 -3 1567 552. - - -7.2267347574234009e-01 2.3417486250400543e-01 - 4.9026021361351013e-01 -6.2466406822204590e-01 - <_> - 4.4639259338378906e+01 - - 1 2 1568 3.5000000000000000e+00 0 -1 1569 - 2.4500000000000000e+01 -2 -3 1570 8.2150000000000000e+02 - - -3.5061278939247131e-01 4.3918311595916748e-01 - 4.6116840094327927e-02 -6.6601943969726562e-01 - <_> - 4.4594688415527344e+01 - - 1 2 1571 1.3500000000000000e+01 0 -1 1572 - 8.5000000000000000e+00 -2 -3 1573 2.1500000000000000e+01 - - -2.5554552674293518e-02 -8.3599025011062622e-01 - 6.3880258798599243e-01 -4.4572211802005768e-02 - <_> - 4.4976432800292969e+01 - - 1 2 1574 9.0350000000000000e+02 0 -1 1575 - 2.0500000000000000e+01 -2 -3 1576 1.2615000000000000e+03 - - 3.8174423575401306e-01 -2.4711053073406219e-01 - -7.3085212707519531e-01 1.3097274303436279e-01 - <_> - 4.5154560089111328e+01 - - 1 2 1577 3.2500000000000000e+01 0 -1 1578 41. -2 -3 1579 - 1153. - - 1.3735578954219818e-01 -9.0119731426239014e-01 - -8.0212074518203735e-01 1.7812842130661011e-01 - <_> - 4.5438049316406250e+01 - - 1 2 1580 3.4500000000000000e+01 0 -1 1581 - 1.4500000000000000e+01 -2 -3 1582 1.8650000000000000e+02 - - 7.1418809890747070e-01 -4.1756910085678101e-01 - 3.2309561967849731e-01 -6.6359835863113403e-01 - <_> - 4.5376655578613281e+01 - - 1 2 1583 5.7500000000000000e+01 0 -1 1584 - 3.4835000000000000e+03 -2 -3 1585 1.6677500000000000e+04 - - 9.3545570969581604e-02 -6.6382712125778198e-01 - -6.0366630554199219e-01 3.5915172100067139e-01 - <_> - 4.5476417541503906e+01 - - 1 2 1586 1.2235000000000000e+03 0 -1 1587 - 5.0000000000000000e-01 -2 -3 1588 2.0550000000000000e+02 - - 9.9763244390487671e-02 -5.6198817491531372e-01 - 5.3732144832611084e-01 -2.9778870940208435e-01 - <_> - 4.5174198150634766e+01 - - 1 2 1589 2.5750000000000000e+02 0 -1 1590 - 3.4500000000000000e+01 -2 -3 1591 4.5000000000000000e+00 - - -5.3968584537506104e-01 9.1056388616561890e-01 - 2.8303310275077820e-01 -3.0222162604331970e-01 - <_> - 4.5571937561035156e+01 - - 1 2 1592 3.5500000000000000e+01 0 -1 1593 - 2.5000000000000000e+00 -2 -3 1594 9.5000000000000000e+00 - - 8.1757766008377075e-01 -9.3560528755187988e-01 - 4.8287272453308105e-01 -1.0781970620155334e-01 - <_> - 4.5820465087890625e+01 - - 1 2 1595 2.6500000000000000e+01 0 -1 1596 - 9.5000000000000000e+00 -2 -3 1597 64. - - 1.6339369118213654e-01 -4.8592147231101990e-01 - -8.0971640348434448e-01 4.2723599076271057e-01 - <_> - 4.5875530242919922e+01 - - 1 2 1598 4.8150000000000000e+02 0 -1 1599 - 1.9285000000000000e+03 -2 -3 1600 1.1625000000000000e+03 - - -7.9999005794525146e-01 1.8668703734874725e-01 - 6.2736529111862183e-01 -1.2364284694194794e-01 - <_> - 4.6327709197998047e+01 - - 1 2 1601 8.9450000000000000e+02 0 -1 1602 - 1.5000000000000000e+00 -2 -3 1603 6634. - - 1.7092481255531311e-02 -6.5232801437377930e-01 - 5.6317013502120972e-01 -4.4582167267799377e-01 - <_> - 4.6148258209228516e+01 - - 1 2 1604 43039. 0 -1 1605 1.5500000000000000e+01 -2 -3 1606 - 3.8225000000000000e+03 - - -1. 4.9083131551742554e-01 -3.1666326522827148e-01 - 6.4053624868392944e-01 - <_> - 4.6105995178222656e+01 - - 1 2 1607 3.5000000000000000e+00 0 -1 1608 21. -2 -3 1609 - 2.6500000000000000e+01 - - -9.7276186943054199e-01 1. 3.7125155329704285e-01 - -1.5020866692066193e-01 - <_> - 4.6445560455322266e+01 - - 1 2 1610 1.4450000000000000e+02 0 -1 1611 - 1.0500000000000000e+01 -2 -3 1612 6.4500000000000000e+01 - - 5.7516593486070633e-02 -5.1498800516128540e-01 - 8.0552762746810913e-01 -1. - <_> - 4.6819828033447266e+01 - - 1 2 1613 8.8500000000000000e+01 0 -1 1614 - 5.0000000000000000e-01 -2 -3 1615 3.1500000000000000e+01 - - 2.4280284345149994e-01 -5.9024065732955933e-01 - 4.4487208127975464e-01 -1.7842440307140350e-01 - <_> - 4.6427459716796875e+01 - - 1 2 1616 3.1500000000000000e+01 0 -1 1617 - 3.6500000000000000e+01 -2 -3 1618 1.1135000000000000e+03 - - -3.8508945703506470e-01 5.4531073570251465e-01 - -3.9237090945243835e-01 5.3639191389083862e-01 - <_> - 4.6388378143310547e+01 - - 1 2 1619 1.3495000000000000e+03 0 -1 1620 - 1.2865000000000000e+03 -2 -3 1621 1.5000000000000000e+00 - - -3.9079591631889343e-02 7.2226065397262573e-01 - 1.6772003471851349e-01 -8.0866611003875732e-01 - <_> - 4.6664485931396484e+01 - - 1 2 1622 5.7650000000000000e+02 0 -1 1623 38772. -2 -3 1624 - 3.5000000000000000e+00 - - -6.7578887939453125e-01 4.5766559243202209e-01 - 3.2720005512237549e-01 -3.8240414857864380e-01 - <_> - 4.6878482818603516e+01 - - 1 2 1625 1.6500000000000000e+01 0 -1 1626 - 3.1050000000000000e+02 -2 -3 1627 1.9500000000000000e+01 - - 3.3941693603992462e-02 -8.9211910963058472e-01 - -7.0304632186889648e-01 2.1399846673011780e-01 - <_> - 4.6925651550292969e+01 - - 1 2 1628 1.0285000000000000e+03 0 -1 1629 - 2.7950000000000000e+02 -2 -3 1630 9.5000000000000000e+00 - - 4.1127714514732361e-01 -1.3439148664474487e-01 - -7.5179332494735718e-01 3.4586694836616516e-01 - <_> - 4.7010379791259766e+01 - - 1 2 1631 2.4500000000000000e+01 0 -1 1632 - 1.1265000000000000e+03 -2 -3 1633 5.5000000000000000e+00 - - -5.5471497774124146e-01 8.4728397428989410e-02 - -6.6250604391098022e-01 5.0282490253448486e-01 - <_> - 4.7003398895263672e+01 - - 1 2 1634 5.5000000000000000e+00 0 -1 1635 - 1.3500000000000000e+01 -2 -3 1636 5.3500000000000000e+01 - - -6.1465358734130859e-01 5.2310514450073242e-01 - -6.9816145114600658e-03 -6.2556844949722290e-01 - <_> - 4.7450687408447266e+01 - - 1 2 1637 8.5000000000000000e+00 0 -1 1638 - 1.9500000000000000e+01 -2 -3 1639 7.3500000000000000e+01 - - 1.8994300067424774e-01 -5.1936614513397217e-01 - -5.1978632807731628e-02 5.4172980785369873e-01 - <_> - 4.7289505004882812e+01 - - 1 2 1640 4.5000000000000000e+00 0 -1 1641 - 5.0000000000000000e-01 -2 -3 1642 7.9500000000000000e+01 - - -9.3673211336135864e-01 4.2628908157348633e-01 - -6.1518812179565430e-01 3.8786195218563080e-02 - <_> - 4.7609291076660156e+01 - - 1 2 1643 9.0500000000000000e+01 0 -1 1644 - 1.7500000000000000e+01 -2 -3 1645 5.5500000000000000e+01 - - 2.5377960875630379e-02 8.4010601043701172e-01 - -5.5201697349548340e-01 9.3266852200031281e-02 - <_> - 4.6873203277587891e+01 - - 1 2 1646 181. 0 -1 1647 3.2500000000000000e+01 -2 -3 1648 - 1.5500000000000000e+01 - - -2.4539522826671600e-01 3.0167981982231140e-01 - -7.8757899999618530e-01 1. - <_> - 4.7333202362060547e+01 - - 1 2 1649 3.5000000000000000e+00 0 -1 1650 - 3.6450000000000000e+02 -2 -3 1651 131. - - 4.5999684929847717e-01 -8.5532951354980469e-01 - -7.6767379045486450e-01 -4.0166407823562622e-02 - <_> - 4.7809810638427734e+01 - - 1 2 1652 2.3415000000000000e+03 0 -1 1653 - 5.5550000000000000e+02 -2 -3 1654 7.8650000000000000e+02 - - 1.0606591403484344e-01 -7.2960245609283447e-01 - 4.7661080956459045e-01 -1.5633082389831543e-01 - <_> - 4.8187953948974609e+01 - - 1 2 1655 5.0500000000000000e+01 0 -1 1656 - 2.7500000000000000e+01 -2 -3 1657 4.6500000000000000e+01 - - -3.6588409543037415e-01 2.0847728848457336e-01 - 5.3038245439529419e-01 -9.1906154155731201e-01 - <_> - 4.8385017395019531e+01 - - 1 2 1658 2.5000000000000000e+00 0 -1 1659 - 5.0000000000000000e-01 -2 -3 1660 5.0000000000000000e-01 - - -8.3917874097824097e-01 3.5120227932929993e-01 - 4.4822514057159424e-02 -5.4643929004669189e-01 - <_> - 4.7983116149902344e+01 - - 1 2 1661 1.7500000000000000e+01 0 -1 1662 46. -2 -3 1663 - 4.8500000000000000e+01 - - -8.7424659729003906e-01 4.0549939870834351e-01 - -4.3008446693420410e-01 3.0111113190650940e-01 - <_> - 4.7767936706542969e+01 - - 1 2 1664 3.7250000000000000e+02 0 -1 1665 - 1.9500000000000000e+01 -2 -3 1666 1.7500000000000000e+01 - - -2.1517898142337799e-01 3.3102101087570190e-01 - -7.5989711284637451e-01 2.0524039864540100e-01 - <_> - 4.7636989593505859e+01 - - 1 2 1667 5.0000000000000000e-01 0 -1 1668 - 3.5000000000000000e+00 -2 -3 1669 2.2050000000000000e+02 - - -5.5064278841018677e-01 4.6156671643257141e-01 - -3.4933045506477356e-01 3.1964045763015747e-01 - <_> - 4.8035350799560547e+01 - - 1 2 1670 5.5000000000000000e+00 0 -1 1671 - 1.6500000000000000e+01 -2 -3 1672 1.5000000000000000e+00 - - 5.4588496685028076e-01 -5.2224334329366684e-02 1. - -9.5129132270812988e-01 - <_> - 4.8075088500976562e+01 - - 1 2 1673 5.8500000000000000e+01 0 -1 1674 - 1.7500000000000000e+01 -2 -3 1675 60. - - 3.9737168699502945e-02 -4.9285057187080383e-01 - 5.5449837446212769e-01 -5.8396834135055542e-01 - <_> - 4.8273761749267578e+01 - - 1 2 1676 5.5000000000000000e+00 0 -1 1677 - 2.4500000000000000e+01 -2 -3 1678 5.5450000000000000e+02 - - 1.7725417017936707e-01 -8.1391674280166626e-01 - -5.4412531852722168e-01 2.6674869656562805e-01 - <_> - 4.8013420104980469e+01 - - 1 2 1679 8.5000000000000000e+00 0 -1 1680 1955. -2 -3 1681 - 96. - - 1.7242313921451569e-01 -9.2252993583679199e-01 - 1.7602242529392242e-01 -6.7200791835784912e-01 - <_> - 4.8326412200927734e+01 - - 1 2 1682 3.0104500000000000e+04 0 -1 1683 - 2.8050000000000000e+02 -2 -3 1684 2.7154500000000000e+04 - - 3.1299278140068054e-01 -1.8952211737632751e-01 - -9.5317900180816650e-01 1. - <_> - 4.8304637908935547e+01 - - 1 2 1685 5.4500000000000000e+01 0 -1 1686 - 4.4650000000000000e+02 -2 -3 1687 3.5000000000000000e+00 - - 2.1255780756473541e-01 -8.1515192985534668e-01 - 6.9879400730133057e-01 -2.3700682446360588e-02 - <_> - 4.8183525085449219e+01 - - 1 2 1688 2.5000000000000000e+00 0 -1 1689 128. -2 -3 1690 - 3.5450000000000000e+02 - - -8.0286073684692383e-01 8.9803677797317505e-01 - 3.0971682071685791e-01 -2.6458665728569031e-01 - <_> - 4.8420330047607422e+01 - - 1 2 1691 4.5000000000000000e+00 0 -1 1692 1348. -2 -3 1693 - 1.6500000000000000e+01 - - 2.1627983450889587e-01 -9.3673717975616455e-01 - 2.7623519301414490e-01 -2.4342669546604156e-01 - <_> - 4.8284450531005859e+01 - - 1 2 1694 5.0350000000000000e+02 0 -1 1695 - 5.1950000000000000e+02 -2 -3 1696 7.8350000000000000e+02 - - -3.7904888391494751e-01 9.6044069528579712e-01 - 7.1280044317245483e-01 -2.8820293024182320e-02 - <_> - 4.8518047332763672e+01 - - 1 2 1697 7.3500000000000000e+01 0 -1 1698 - 1.0750000000000000e+02 -2 -3 1699 1.0508500000000000e+04 - - 2.3359699547290802e-01 -3.2509902119636536e-01 - -5.7240724563598633e-01 6.9403934478759766e-01 - <_> - 4.8881092071533203e+01 - - 1 2 1700 1.9500000000000000e+01 0 -1 1701 - 2.5000000000000000e+00 -2 -3 1702 5.7450000000000000e+02 - - 7.0620238780975342e-02 -6.4059627056121826e-01 - -5.6051510572433472e-01 3.6304420232772827e-01 - <_> - 4.8674976348876953e+01 - - 1 2 1703 1.6500000000000000e+01 0 -1 1704 2698. -2 -3 1705 - 1.8500000000000000e+01 - - -9.4122928380966187e-01 1. 3.0906781554222107e-01 - -2.2473946213722229e-01 - <_> - 4.8650527954101562e+01 - - 1 2 1706 285. 0 -1 1707 2.5000000000000000e+00 -2 -3 1708 - 2.9500000000000000e+01 - - -6.1351448297500610e-01 6.1334443092346191e-01 - -5.3962910175323486e-01 9.5953509211540222e-02 - <_> - 4.8581436157226562e+01 - - 1 2 1709 1.5000000000000000e+00 0 -1 1710 - 7.2500000000000000e+01 -2 -3 1711 2.5000000000000000e+00 - - -1.5018194913864136e-01 5.4274356365203857e-01 - 3.2649326324462891e-01 -4.6085461974143982e-01 - <_> - 4.8824050903320312e+01 - - 1 2 1712 7.5000000000000000e+00 0 -1 1713 - 1.3500000000000000e+01 -2 -3 1714 1.4750000000000000e+02 - - -9.4072926044464111e-01 4.9135723710060120e-01 - -3.6922344565391541e-01 2.8209823369979858e-01 - <_> - 4.9051761627197266e+01 - - 1 2 1715 1.2945000000000000e+03 0 -1 1716 - 2.5000000000000000e+00 -2 -3 1717 12557. - - 2.2771342098712921e-01 -3.0103012919425964e-01 - 8.6664509773254395e-01 -6.4184981584548950e-01 - <_> - 4.9400878906250000e+01 - - 1 2 1718 3.7500000000000000e+01 0 -1 1719 - 1.5000000000000000e+00 -2 -3 1720 1.7395000000000000e+03 - - 5.5372547358274460e-02 -6.4846998453140259e-01 - -5.1582384109497070e-01 3.7294328212738037e-01 - <_> - 4.9400951385498047e+01 - - 1 2 1721 1.9500000000000000e+01 0 -1 1722 - 2.7500000000000000e+01 -2 -3 1723 1.5500000000000000e+01 - - -1.0849715210497379e-02 -6.8436485528945923e-01 - -2.9969093203544617e-01 8.8249796628952026e-01 - <_> - 4.9150127410888672e+01 - - 1 2 1724 6695. 0 -1 1725 4.1995000000000000e+03 -2 -3 1726 - 3060. - - 6.0968101024627686e-01 -1.8973879516124725e-01 - 6.7397463321685791e-01 -2.9114890098571777e-01 - <_> - 4.9635650634765625e+01 - - 1 2 1727 1.2185000000000000e+03 0 -1 1728 - 6.7250000000000000e+02 -2 -3 1729 4.4500000000000000e+01 - - -3.2244133949279785e-01 8.5333442687988281e-01 - -6.7660027742385864e-01 4.8552277684211731e-01 - <_> - 4.9185047149658203e+01 - - 1 2 1730 4.6500000000000000e+01 0 -1 1731 - 1.7535000000000000e+03 -2 -3 1732 8.8500000000000000e+01 - - 1.1635149270296097e-01 -4.5060265064239502e-01 - -8.2891207933425903e-01 8.0917561054229736e-01 - <_> - 4.9572048187255859e+01 - - 1 2 1733 3.5000000000000000e+00 0 -1 1734 - 1.2500000000000000e+01 -2 -3 1735 4.4115000000000000e+03 - - -7.0214819908142090e-01 3.8700041174888611e-01 - -4.7868278622627258e-01 1.9085995852947235e-01 - <_> - 4.9520980834960938e+01 - - 1 2 1736 6.4500000000000000e+01 0 -1 1737 - 1.0850000000000000e+02 -2 -3 1738 9.5775000000000000e+03 - - -5.1066368818283081e-02 6.1802017688751221e-01 - -8.5373187065124512e-01 7.1274143457412720e-01 - <_> - 4.9744472503662109e+01 - - 1 2 1739 2.5000000000000000e+00 0 -1 1740 - 1.8500000000000000e+01 -2 -3 1741 8.5000000000000000e+00 - - -8.1709325313568115e-01 4.6844825148582458e-01 - 2.2349253296852112e-01 -4.7425210475921631e-01 - <_> - 5.0045192718505859e+01 - - 1 2 1742 1.2500000000000000e+01 0 -1 1743 - 7.5000000000000000e+00 -2 -3 1744 4.5000000000000000e+00 - - 4.9264114350080490e-02 -5.9978258609771729e-01 - 3.0072054266929626e-01 -7.8326350450515747e-01 - <_> - 5.0417678833007812e+01 - - 1 2 1745 4.1500000000000000e+01 0 -1 1746 - 3.5000000000000000e+00 -2 -3 1747 614. - - 4.2858477681875229e-02 -6.5439593791961670e-01 - 3.7248274683952332e-01 -6.0121566057205200e-01 - <_> - 5.0184413909912109e+01 - - 1 2 1748 1.8500000000000000e+01 0 -1 1749 - 1.9500000000000000e+01 -2 -3 1750 4.2335000000000000e+03 - - -3.9789116382598877e-01 3.3808970451354980e-01 - -6.7741900682449341e-01 -6.1766817234456539e-03 - <_> - 5.0395923614501953e+01 - - 1 2 1751 7.8500000000000000e+01 0 -1 1752 621. -2 -3 1753 - 1.1150000000000000e+02 - - -5.8525377511978149e-01 4.6244528889656067e-01 - -6.4186108112335205e-01 -1.5577160753309727e-02 - <_> - 5.0368152618408203e+01 - - 1 2 1754 7.4500000000000000e+01 0 -1 1755 - 8.0500000000000000e+01 -2 -3 1756 5.5000000000000000e+00 - - 2.7840653061866760e-01 -5.0665259361267090e-01 - 2.8003776073455811e-01 -6.6763132810592651e-01 - <_> - 5.0609447479248047e+01 - - 1 2 1757 4.5000000000000000e+00 0 -1 1758 - 5.0000000000000000e-01 -2 -3 1759 1.0050000000000000e+02 - - 1.4921510219573975e-01 -6.7458331584930420e-01 - 2.4129594862461090e-01 -7.1370732784271240e-01 - <_> - 5.0734519958496094e+01 - - 1 2 1760 8.1450000000000000e+02 0 -1 1761 - 3.1750000000000000e+02 -2 -3 1762 4.1450000000000000e+02 - - -3.4531843662261963e-01 5.5791461467742920e-01 - 5.3364270925521851e-01 -3.7804716825485229e-01 - <_> - 5.0482379913330078e+01 - - 1 2 1763 1.5500000000000000e+01 0 -1 1764 - 6.5000000000000000e+00 -2 -3 1765 2.7500000000000000e+01 - - -7.7612209320068359e-01 2.8200766444206238e-01 - -6.6070902347564697e-01 5.4497551918029785e-01 - <_> - 5.0946456909179688e+01 - - 1 2 1766 1.3055000000000000e+03 0 -1 1767 13080. -2 -3 1768 - 1.5000000000000000e+00 - - -1.6180552542209625e-02 6.9708949327468872e-01 - 1.5789812803268433e-01 -6.3250225782394409e-01 - <_> - 5.0942211151123047e+01 - - 1 2 1769 5.5000000000000000e+00 0 -1 1770 - 1.6500000000000000e+01 -2 -3 1771 1.1500000000000000e+01 - - -6.9032448530197144e-01 4.8323771357536316e-01 - -5.8806318044662476e-01 -4.2477925308048725e-03 - <_> - 5.0879100799560547e+01 - - 1 2 1772 3.2500000000000000e+01 0 -1 1773 - 1.5000000000000000e+00 -2 -3 1774 203. - - 7.2742664813995361e-01 -9.5186221599578857e-01 - 2.9152801632881165e-01 -2.9612061381340027e-01 - <_> - 5.1405494689941406e+01 - - 1 2 1775 5.9500000000000000e+01 0 -1 1776 - 5.0000000000000000e-01 -2 -3 1777 5.1500000000000000e+01 - - 2.0475186407566071e-01 -4.3729728460311890e-01 - 5.2639096975326538e-01 -5.4126620292663574e-01 - <_> - 5.1545295715332031e+01 - - 1 2 1778 5.1500000000000000e+01 0 -1 1779 113. -2 -3 1780 - 14. - - -8.7603360414505005e-01 1.3980150222778320e-01 1. - -9.8559749126434326e-01 - <_> - 5.1772174835205078e+01 - - 1 2 1781 5.0000000000000000e-01 0 -1 1782 - 5.0000000000000000e-01 -2 -3 1783 6.9500000000000000e+01 - - -8.5320812463760376e-01 5.4211145639419556e-01 - -4.2864811420440674e-01 1.9388379156589508e-01 - <_> - 5.1395809173583984e+01 - - 1 2 1784 4.1500000000000000e+01 0 -1 1785 - 2.4500000000000000e+01 -2 -3 1786 1.0350000000000000e+02 - - -3.6399099230766296e-01 2.9955938458442688e-01 - -6.9159519672393799e-01 4.9095645546913147e-01 - <_> - 5.1332057952880859e+01 - - 1 2 1787 1.1545000000000000e+03 0 -1 1788 - 1.0500000000000000e+01 -2 -3 1789 7.7350000000000000e+02 - - -8.4412866830825806e-01 2.4716804921627045e-01 - 6.3626372814178467e-01 -6.3753142952919006e-02 - <_> - 5.1058708190917969e+01 - - 1 2 1790 2.5000000000000000e+00 0 -1 1791 156. -2 -3 1792 - 667. - - 5.6390190124511719e-01 -7.4146884679794312e-01 - -2.7334854006767273e-01 6.9182580709457397e-01 - <_> - 5.1457290649414062e+01 - - 1 2 1793 1.8500000000000000e+01 0 -1 1794 125. -2 -3 1795 - 6.5000000000000000e+00 - - -5.9387379884719849e-01 8.3531779050827026e-01 - 6.5114057064056396e-01 -2.6395700871944427e-02 - <_> - 5.1741825103759766e+01 - - 1 2 1796 5.5000000000000000e+00 0 -1 1797 - 8.0500000000000000e+01 -2 -3 1798 6.5500000000000000e+01 - - 5.2819365262985229e-01 -3.8713422417640686e-01 - -6.3428682088851929e-01 3.1973972916603088e-02 - <_> - 5.1987751007080078e+01 - - 1 2 1799 9.2950000000000000e+02 0 -1 1800 - 1.7500000000000000e+01 -2 -3 1801 3.3500000000000000e+01 - - 2.9681459069252014e-01 -6.8903458118438721e-01 - -5.5376708507537842e-01 2.4592779576778412e-01 - <_> - 5.1639968872070312e+01 - - 1 2 1802 5.0000000000000000e-01 0 -1 1803 727. -2 -3 1804 - 1195. - - 4.7003021836280823e-01 -8.6940318346023560e-01 - -3.4778383374214172e-01 9.5309317111968994e-01 - <_> - 5.1864089965820312e+01 - - 1 2 1805 1.6500000000000000e+01 0 -1 1806 - 1.5500000000000000e+01 -2 -3 1807 1.4500000000000000e+01 - - -8.4845769405364990e-01 2.4072749912738800e-01 - 2.2412241995334625e-01 -5.8960992097854614e-01 - <_> - 5.1842327117919922e+01 - - 1 2 1808 1.3500000000000000e+01 0 -1 1809 - 1.1693500000000000e+04 -2 -3 1810 108. - - -2.1761292591691017e-02 -7.1312093734741211e-01 -1. - 7.1802109479904175e-01 - <_> - 5.2474052429199219e+01 - - 1 2 1811 5.6500000000000000e+01 0 -1 1812 - 2.7150000000000000e+02 -2 -3 1813 4.7050000000000000e+02 - - 4.8798479139804840e-02 -6.1629486083984375e-01 - 6.3172489404678345e-01 -7.8125256299972534e-01 - <_> - 5.2882488250732422e+01 - - 1 2 1814 2.7500000000000000e+01 0 -1 1815 - 2.7950000000000000e+02 -2 -3 1816 1.2500000000000000e+01 - - 1.4727012813091278e-01 -4.5306998491287231e-01 - -9.6783083677291870e-01 4.0843614935874939e-01 - <_> - 5.2590320587158203e+01 - - 1 2 1817 1.2500000000000000e+01 0 -1 1818 2332. -2 -3 1819 - 2.0500000000000000e+01 - - -4.0328302979469299e-01 3.9351496100425720e-01 - -4.5640042424201965e-01 7.0570003986358643e-01 - <_> - 5.2686405181884766e+01 - - 1 2 1820 2.8450000000000000e+02 0 -1 1821 - 5.1375000000000000e+03 -2 -3 1822 5524. - - -6.9284421205520630e-01 5.7867264747619629e-01 - -5.0904291868209839e-01 4.2930658906698227e-02 - <_> - 5.2665336608886719e+01 - - 1 2 1823 5.0000000000000000e-01 0 -1 1824 - 1.0500000000000000e+01 -2 -3 1825 3.1050000000000000e+02 - - -6.9999736547470093e-01 5.0521236658096313e-01 - -2.1066894754767418e-02 -6.7034846544265747e-01 - <_> - 5.2668560028076172e+01 - - 1 2 1826 1.5000000000000000e+00 0 -1 1827 - 4.5000000000000000e+00 -2 -3 1828 3.9500000000000000e+01 - - -8.5607993602752686e-01 2.3388290405273438e-01 - -4.7936838865280151e-01 6.4502292871475220e-01 - <_> - 5.2418178558349609e+01 - - 1 2 1829 2.5000000000000000e+00 0 -1 1830 - 1.2500000000000000e+01 -2 -3 1831 3.7450000000000000e+02 - - -2.5030246376991272e-01 4.1110610961914062e-01 - -4.8104089498519897e-01 2.8128054738044739e-01 - <_> - 5.2447761535644531e+01 - - 1 2 1832 1.4500000000000000e+01 0 -1 1833 - 1.6038500000000000e+04 -2 -3 1834 6.5000000000000000e+00 - - 6.2847787141799927e-01 -3.8954043388366699e-01 - 2.9580958187580109e-02 -6.1391896009445190e-01 - <_> - 5.2839599609375000e+01 - - 1 2 1835 8.0500000000000000e+01 0 -1 1836 - 1.4845000000000000e+03 -2 -3 1837 1.1500000000000000e+01 - - -4.2797079682350159e-01 7.2983002662658691e-01 - -4.2472079396247864e-01 3.9183807373046875e-01 - <_> - 5.3161972045898438e+01 - - 1 2 1838 169. 0 -1 1839 2.3500000000000000e+01 -2 -3 1840 - 3.0500000000000000e+01 - - 3.2237488031387329e-01 -2.9692310094833374e-01 - 5.2028205245733261e-02 -8.3673799037933350e-01 - <_> - 5.3484062194824219e+01 - - 1 2 1841 9.5000000000000000e+00 0 -1 1842 - 4.1565000000000000e+03 -2 -3 1843 924. - - 1.3346555642783642e-02 -7.3501825332641602e-01 - -5.0849604606628418e-01 3.2209011912345886e-01 - <_> - 5.3532875061035156e+01 - - 1 2 1844 5.0550000000000000e+02 0 -1 1845 - 5.5000000000000000e+00 -2 -3 1846 8.2500000000000000e+01 - - 3.6607748270034790e-01 -4.2199668288230896e-01 - -7.4034929275512695e-01 3.8815331459045410e-01 - <_> - 5.3596260070800781e+01 - - 1 2 1847 1.9550000000000000e+02 0 -1 1848 - 7.6850000000000000e+02 -2 -3 1849 7.7350000000000000e+02 - - -3.7186509370803833e-01 4.2454031109809875e-01 - 4.2895314097404480e-01 -4.3257468938827515e-01 - <_> - 5.3252147674560547e+01 - - 1 2 1850 4.2500000000000000e+01 0 -1 1851 - 4.5500000000000000e+01 -2 -3 1852 2.9500000000000000e+01 - - 3.5978814959526062e-01 -7.1406579017639160e-01 - -4.4595164060592651e-01 5.2671235799789429e-01 - <_> - 5.3540912628173828e+01 - - 1 2 1853 2.0500000000000000e+01 0 -1 1854 276. -2 -3 1855 - 1.2850000000000000e+02 - - 3.2382410764694214e-01 -6.7686492204666138e-01 - 2.8876608610153198e-01 -5.3703272342681885e-01 - <_> - 5.4058471679687500e+01 - - 1 2 1856 1.1065000000000000e+03 0 -1 1857 - 4.5000000000000000e+00 -2 -3 1858 1570. - - -4.9808049201965332e-01 5.8341735601425171e-01 - -4.8129281401634216e-01 1.1452827602624893e-01 - <_> - 5.3559310913085938e+01 - - 1 2 1859 5.0000000000000000e-01 0 -1 1860 - 9.0500000000000000e+01 -2 -3 1861 1.4250000000000000e+02 - - 4.2286753654479980e-01 -7.5187528133392334e-01 - -5.5336773395538330e-01 1.0487236082553864e-01 - <_> - 5.3792110443115234e+01 - - 1 2 1862 5.5000000000000000e+00 0 -1 1863 - 5.2850000000000000e+02 -2 -3 1864 6.5000000000000000e+00 - - -9.8098456859588623e-01 2.5169646739959717e-01 - 3.1981575489044189e-01 -2.3502953350543976e-01 - <_> - 5.4220581054687500e+01 - - 1 2 1865 1.4500000000000000e+01 0 -1 1866 - 2.4025000000000000e+03 -2 -3 1867 4.5000000000000000e+00 - - 2.7904801070690155e-02 -8.8576656579971313e-01 - 4.2847126722335815e-01 -1.1248188465833664e-01 - <_> - 5.4116458892822266e+01 - - 1 2 1868 3.0500000000000000e+01 0 -1 1869 - 1.0500000000000000e+01 -2 -3 1870 1.5000000000000000e+00 - - 2.2367130219936371e-01 -9.1485178470611572e-01 - 5.5012780427932739e-01 -1.0412286967039108e-01 - <_> - 5.4431377410888672e+01 - - 1 2 1871 1110. 0 -1 1872 2.4500000000000000e+01 -2 -3 1873 - 8.7500000000000000e+01 - - 6.6319614648818970e-02 -9.0293776988983154e-01 - -2.7686271071434021e-01 3.1491985917091370e-01 - <_> - 5.3841773986816406e+01 - - 1 2 1874 3.1500000000000000e+01 0 -1 1875 - 5.2950000000000000e+02 -2 -3 1876 2.8335000000000000e+03 - - 4.3545942753553391e-03 7.3121100664138794e-01 - 3.2255075871944427e-02 -6.5287035703659058e-01 - <_> - 5.3977920532226562e+01 - - 1 2 1877 4.4635000000000000e+03 0 -1 1878 - 3.5000000000000000e+00 -2 -3 1879 1.2150000000000000e+02 - - -8.3098447322845459e-01 1.3614629209041595e-01 -1. 1. - <_> - 5.4538074493408203e+01 - - 1 2 1880 2.0500000000000000e+01 0 -1 1881 - 7.8500000000000000e+01 -2 -3 1882 5.0500000000000000e+01 - - -7.4102438986301422e-02 6.1979264020919800e-01 - 8.4239649772644043e-01 -8.3167529106140137e-01 - <_> - 5.4199844360351562e+01 - - 0 1 1883 5.5000000000000000e+00 0 1 1883 5.5000000000000000e+00 -1 -2 1884 - 2.3500000000000000e+01 - - -1. -1. 1.8631875514984131e-01 -3.9786672592163086e-01 - <_> - 5.4321243286132812e+01 - - 1 2 1885 100108. 0 -1 1886 2.4450000000000000e+02 -2 -3 1887 - 9.5000000000000000e+00 - - -6.4501583576202393e-01 1.2139873951673508e-01 - -9.8769044876098633e-01 1. - <_> - 5.4476604461669922e+01 - - 1 2 1888 3.0500000000000000e+01 0 -1 1889 832. -2 -3 1890 - 3.8650000000000000e+02 - - 4.7927451133728027e-01 -3.6918625235557556e-01 - 4.3850061297416687e-01 -4.2658120393753052e-01 - <_> - 5.4880313873291016e+01 - - 1 2 1891 4.5000000000000000e+00 0 -1 1892 - 1.8500000000000000e+01 -2 -3 1893 9.5000000000000000e+00 - - -8.9552253484725952e-01 1. 4.0370723605155945e-01 - -1.3244532048702240e-01 - <_> - 5.4826488494873047e+01 - - 1 2 1894 3.3500000000000000e+01 0 -1 1895 - 5.0000000000000000e-01 -2 -3 1896 1.5000000000000000e+00 - - 5.2266705036163330e-01 -4.9189320206642151e-01 - 4.7518423199653625e-01 -1.8694840371608734e-01 - <_> - 5.4719253540039062e+01 - - 1 2 1897 1.3250000000000000e+02 0 -1 1898 197. -2 -3 1899 - 5.5000000000000000e+00 - - -2.5596961379051208e-02 -8.0278450250625610e-01 - 5.8479261398315430e-01 -1.0723467171192169e-01 - <_> - 5.4927463531494141e+01 - - 1 2 1900 3.5000000000000000e+00 0 -1 1901 - 2.7500000000000000e+01 -2 -3 1902 4.5000000000000000e+00 - - -9.8025721311569214e-01 1. 5.0813627243041992e-01 - -9.1872639954090118e-02 - <_> - 5.5091140747070312e+01 - - 1 2 1903 3.5500000000000000e+01 0 -1 1904 590. -2 -3 1905 - 9.5000000000000000e+00 - - 3.2067620754241943e-01 -8.1219708919525146e-01 - 3.9956301450729370e-01 -1.7662063241004944e-01 - <_> - 5.5048011779785156e+01 - - 1 2 1906 1.5500000000000000e+01 0 -1 1907 - 2.5000000000000000e+00 -2 -3 1908 1.1500000000000000e+01 - - 4.5108359307050705e-02 -5.7894098758697510e-01 - 5.1151078939437866e-01 -6.0667592287063599e-01 - <_> - 5.4623245239257812e+01 - - 1 2 1909 2.6500000000000000e+01 0 -1 1910 - 1.1500000000000000e+01 -2 -3 1911 2.0250000000000000e+02 - - 4.0922752022743225e-01 -6.0327196121215820e-01 - 3.5508340597152710e-01 -4.1403025388717651e-01 - <_> - 5.4938964843750000e+01 - - 1 2 1912 4.4450000000000000e+02 0 -1 1913 - 4.8075000000000000e+03 -2 -3 1914 5.0000000000000000e-01 - - 3.7132555246353149e-01 -9.4460356235504150e-01 - 3.1572005152702332e-01 -2.5736778974533081e-01 - <_> - 5.5008499145507812e+01 - - 1 2 1915 2.4350000000000000e+02 0 -1 1916 - 1.6500000000000000e+01 -2 -3 1917 98. - - 6.9533005356788635e-02 -5.5879753828048706e-01 - 5.2043431997299194e-01 -5.5762660503387451e-01 - <_> - 5.5581649780273438e+01 - - 1 2 1918 1.2755000000000000e+03 0 -1 1919 - 1.5000000000000000e+00 -2 -3 1920 1.4500000000000000e+01 - - 2.7316585183143616e-01 -3.9282438158988953e-01 - -8.5869687795639038e-01 5.7315075397491455e-01 - <_> - 5.5420215606689453e+01 - - 1 2 1921 3.7635000000000000e+03 0 -1 1922 - 1.0904500000000000e+04 -2 -3 1923 6.9750000000000000e+02 - - -8.7749630212783813e-02 7.8290265798568726e-01 - 3.7081098556518555e-01 -3.9786884188652039e-01 - <_> - 5.5134284973144531e+01 - - 1 2 1924 3.5000000000000000e+00 0 -1 1925 - 1.5000000000000000e+00 -2 -3 1926 1.3535000000000000e+03 - - -8.4669679403305054e-01 5.6518930196762085e-01 - -2.8593066334724426e-01 7.8882968425750732e-01 - <_> - 5.5399112701416016e+01 - - 1 2 1927 1.4500000000000000e+01 0 -1 1928 - 9.5000000000000000e+00 -2 -3 1929 2.1950000000000000e+02 - - 3.6673456430435181e-01 -8.0567514896392822e-01 - 2.6483070850372314e-01 -5.4888963699340820e-01 - <_> - 5.5665115356445312e+01 - - 1 2 1930 1.0500000000000000e+01 0 -1 1931 - 4.3500000000000000e+01 -2 -3 1932 2.2500000000000000e+01 - - -8.0224722623825073e-01 7.3296892642974854e-01 - 3.1390979886054993e-01 -2.7697941660881042e-01 - <_> - 5.5662361145019531e+01 - - 1 2 1933 5.0000000000000000e-01 0 -1 1934 - 1.0500000000000000e+01 -2 -3 1935 609. - - -4.6577224135398865e-01 3.6372005939483643e-01 - -6.7203342914581299e-02 -8.5283303260803223e-01 - <_> - 5.5597713470458984e+01 - - 1 2 1936 4.8150000000000000e+02 0 -1 1937 897. -2 -3 1938 - 6.0015000000000000e+03 - - -7.0950525999069214e-01 3.6562061309814453e-01 - 7.1085697412490845e-01 -6.4645722508430481e-02 - <_> - 5.5976200103759766e+01 - - 1 2 1939 1.7500000000000000e+01 0 -1 1940 - 2.6500000000000000e+01 -2 -3 1941 2.7195000000000000e+03 - - -6.9570225477218628e-01 3.7848454713821411e-01 - 3.8467934727668762e-01 -3.8020190596580505e-01 - <_> - 5.6158012390136719e+01 - - 1 2 1942 2.6002500000000000e+04 0 -1 1943 - 5.5000000000000000e+00 -2 -3 1944 933. - - 5.2110773324966431e-01 -7.8237217664718628e-01 - -8.0685955286026001e-01 1.8181376159191132e-01 - <_> - 5.6510974884033203e+01 - - 1 2 1945 6.5000000000000000e+00 0 -1 1946 - 7.7950000000000000e+02 -2 -3 1947 1.1350000000000000e+02 - - 8.0221951007843018e-01 -5.5787330865859985e-01 - -2.5150266289710999e-01 3.5296073555946350e-01 - <_> - 5.6669940948486328e+01 - - 1 2 1948 1.2500000000000000e+01 0 -1 1949 - 2.1500000000000000e+01 -2 -3 1950 3.7500000000000000e+01 - - -8.1347912549972534e-01 3.3844006061553955e-01 - -5.6976383924484253e-01 1.5896809101104736e-01 - <_> - 5.6639522552490234e+01 - - 1 2 1951 5.0000000000000000e-01 0 -1 1952 - 1.0350000000000000e+02 -2 -3 1953 979. - - 5.6548482179641724e-01 -7.8466528654098511e-01 - -4.1022753715515137e-01 1.7647762596607208e-01 - <_> - 5.6746051788330078e+01 - - 1 2 1954 4.7655500000000000e+04 0 -1 1955 1217. -2 -3 1956 - 2.6650000000000000e+02 - - -6.9296687841415405e-01 2.6075837016105652e-01 - -7.9774957895278931e-01 1.7970228567719460e-02 - <_> - 5.6479259490966797e+01 - - 1 2 1957 1.2650000000000000e+02 0 -1 1958 - 1.9500000000000000e+01 -2 -3 1959 491. - - -2.6678943634033203e-01 3.8788908720016479e-01 - 9.1776609420776367e-01 -4.6553900837898254e-01 - <_> - 5.6557636260986328e+01 - - 1 2 1960 4.7500000000000000e+01 0 -1 1961 - 9.6450000000000000e+02 -2 -3 1962 5.0000000000000000e-01 - - 3.0366006493568420e-01 -8.8815379142761230e-01 - 4.8105791211128235e-01 -8.4002502262592316e-02 - <_> - 5.6977615356445312e+01 - - 1 2 1963 1.9350000000000000e+02 0 -1 1964 - 1.0500000000000000e+01 -2 -3 1965 316. - - 1.2478869408369064e-01 -5.4758942127227783e-01 - 4.1997796297073364e-01 -2.8715902566909790e-01 - <_> - 5.6940200805664062e+01 - - 1 2 1966 1.3500000000000000e+01 0 -1 1967 - 9.5000000000000000e+00 -2 -3 1968 4.5000000000000000e+00 - - 5.6444692611694336e-01 -5.1318335533142090e-01 - 4.1364780068397522e-01 -2.3452880978584290e-01 - <_> - 5.7376541137695312e+01 - - 1 2 1969 6.5000000000000000e+00 0 -1 1970 - 5.2500000000000000e+01 -2 -3 1971 2.6500000000000000e+01 - - -3.1519573926925659e-01 4.3634009361267090e-01 - -5.3644794225692749e-01 3.0770981311798096e-01 - <_> - 5.7745677947998047e+01 - - 1 2 1972 9.5000000000000000e+00 0 -1 1973 - 1.7125000000000000e+03 -2 -3 1974 2095. - - -5.8112341910600662e-02 5.0887292623519897e-01 - 2.3396022617816925e-01 -5.9023892879486084e-01 - <_> - 5.7668346405029297e+01 - - 1 2 1975 1.3835000000000000e+03 0 -1 1976 - 2.3365000000000000e+03 -2 -3 1977 5.0000000000000000e-01 - - -2.2391898930072784e-01 4.7256642580032349e-01 - 4.1642077267169952e-03 -6.2670201063156128e-01 - <_> - 5.7691123962402344e+01 - - 1 2 1978 2.7250000000000000e+02 0 -1 1979 - 8.0950000000000000e+02 -2 -3 1980 1.4500000000000000e+01 - - -2.9949793219566345e-01 7.5373744964599609e-01 - 2.2777365520596504e-02 -5.4332214593887329e-01 - <_> - 5.7523948669433594e+01 - - 1 2 1981 2.5500000000000000e+01 0 -1 1982 - 3.5000000000000000e+00 -2 -3 1983 9.5000000000000000e+00 - - 2.7234396338462830e-01 -7.7871346473693848e-01 - 4.1143327951431274e-01 -1.6717562079429626e-01 - <_> - 5.7792133331298828e+01 - - 1 2 1984 3.0500000000000000e+01 0 -1 1985 - 6.5000000000000000e+00 -2 -3 1986 4.7850000000000000e+02 - - 4.2716450989246368e-02 -6.7291486263275146e-01 - 3.2022616267204285e-01 -6.1982798576354980e-01 - <_> - 5.8013004302978516e+01 - - 1 2 1987 3.4500000000000000e+01 0 -1 1988 - 9.5000000000000000e+00 -2 -3 1989 3.9350000000000000e+02 - - -5.1402336359024048e-01 2.2087192535400391e-01 - -7.2181683778762817e-01 1.9793330132961273e-01 - <_> - 5.8191169738769531e+01 - - 1 2 1990 9.7500000000000000e+01 0 -1 1991 - 6.2250000000000000e+02 -2 -3 1992 9.5500000000000000e+01 - - 1.7816618084907532e-01 -4.8832407593727112e-01 - -9.5159941911697388e-01 6.5016353130340576e-01 - <_> - 5.8067699432373047e+01 - - 1 2 1993 2.5000000000000000e+00 0 -1 1994 - 2.2500000000000000e+01 -2 -3 1995 1.4500000000000000e+01 - - 5.9863173961639404e-01 -1.2370918691158295e-01 - -5.3876280784606934e-01 2.5208535790443420e-01 - <_> - 5.8372417449951172e+01 - - 1 2 1996 1.8075000000000000e+03 0 -1 1997 - 4.5000000000000000e+00 -2 -3 1998 7.4500000000000000e+01 - - 3.9194607734680176e-01 -3.2276815176010132e-01 - 5.3963506221771240e-01 -6.4209002256393433e-01 - <_> - 5.8342327117919922e+01 - - 1 2 1999 7.5000000000000000e+00 0 -1 2000 - 1.3500000000000000e+01 -2 -3 2001 3.5000000000000000e+00 - - -9.3360573053359985e-01 1. 3.0816203355789185e-01 - -1.9820201396942139e-01 - <_> - 5.8525230407714844e+01 - - 1 2 2002 5.4500000000000000e+01 0 -1 2003 - 3.1500000000000000e+01 -2 -3 2004 5.5000000000000000e+00 - - -6.9942277669906616e-01 1. 2.0665432512760162e-01 - -4.8230728507041931e-01 - <_> - 5.8137825012207031e+01 - - 1 2 2005 5.0000000000000000e-01 0 -1 2006 - 6.5000000000000000e+00 -2 -3 2007 1.6255000000000000e+03 - - -9.1363656520843506e-01 3.4000685811042786e-01 - 3.6237233877182007e-01 -3.8740426301956177e-01 - <_> - 5.7477180480957031e+01 - - 1 2 2008 1.6500000000000000e+01 0 -1 2009 - 3.3050000000000000e+02 -2 -3 2010 1.8250000000000000e+02 - - 4.0280374884605408e-01 -6.6064602136611938e-01 - 2.3912283778190613e-01 -6.5312945842742920e-01 - <_> - 5.7596790313720703e+01 - - 1 2 2011 3.5000000000000000e+00 0 -1 2012 - 2.2850000000000000e+02 -2 -3 2013 6.7050000000000000e+02 - - -5.6311067193746567e-02 7.3480677604675293e-01 - -7.8913259506225586e-01 -5.2745390683412552e-02 - <_> - 5.7969238281250000e+01 - - 1 2 2014 1.2195000000000000e+03 0 -1 2015 - 1.5000000000000000e+00 -2 -3 2016 44231. - - 3.7240502238273621e-01 -3.7414985895156860e-01 - 5.3368985652923584e-01 -3.4466567635536194e-01 - <_> - 5.7981628417968750e+01 - - 1 2 2017 1.6650000000000000e+02 0 -1 2018 - 2.0500000000000000e+01 -2 -3 2019 1.3500000000000000e+01 - - -2.3047098517417908e-01 4.0283700823783875e-01 - -8.8833373785018921e-01 9.4913655519485474e-01 - <_> - 5.8304691314697266e+01 - - 1 2 2020 1.7500000000000000e+01 0 -1 2021 - 2.2500000000000000e+01 -2 -3 2022 1.3950000000000000e+02 - - -9.7246366739273071e-01 4.5725116133689880e-01 - -3.3056676387786865e-01 3.2306280732154846e-01 - <_> - 5.8687774658203125e+01 - - 1 2 2023 3.6050000000000000e+02 0 -1 2024 - 2.1500000000000000e+01 -2 -3 2025 5.7150000000000000e+02 - - -1.9407491385936737e-01 4.0379062294960022e-01 - -7.1832591295242310e-01 1.6718479990959167e-01 - <_> - 5.8403263092041016e+01 - - 1 2 2026 3.5000000000000000e+00 0 -1 2027 - 1.5000000000000000e+00 -2 -3 2028 1.1125000000000000e+03 - - -7.1120482683181763e-01 5.4733234643936157e-01 - -3.0521857738494873e-01 5.3309994935989380e-01 - <_> - 5.8206588745117188e+01 - - 1 2 2029 9.8550000000000000e+02 0 -1 2030 - 8.5000000000000000e+00 -2 -3 2031 6.5000000000000000e+00 - - -6.1662030220031738e-01 4.3150734901428223e-01 - 1.1408390849828720e-01 -5.7918250560760498e-01 - <_> - 5.8434097290039062e+01 - - 1 2 2032 1.2500000000000000e+01 0 -1 2033 - 9.7500000000000000e+01 -2 -3 2034 8574. - - 4.1095575690269470e-01 -6.6425901651382446e-01 - 2.2750854492187500e-01 -6.5870326757431030e-01 - <_> - 5.8159267425537109e+01 - - 1 2 2035 790. 0 -1 2036 26812. -2 -3 2037 - 5.2150000000000000e+02 - - -8.0263590812683105e-01 8.7009161710739136e-01 - -2.7483054995536804e-01 3.0290663242340088e-01 - <_> - 5.8559719085693359e+01 - - 1 2 2038 1.5550000000000000e+02 0 -1 2039 - 3.6500000000000000e+01 -2 -3 2040 1752. - - -1.1953184753656387e-01 4.0045145153999329e-01 - 8.7820923328399658e-01 -9.3850684165954590e-01 - <_> - 5.8625492095947266e+01 - - 1 2 2041 5.0000000000000000e-01 0 -1 2042 - 2.5000000000000000e+00 -2 -3 2043 6.5000000000000000e+00 - - -7.3991537094116211e-01 7.3110866546630859e-01 - 2.8890112042427063e-01 -2.9580232501029968e-01 - <_> - 5.8505027770996094e+01 - - 1 2 2044 6.7500000000000000e+01 0 -1 2045 - 5.6500000000000000e+01 -2 -3 2046 9.8500000000000000e+01 - - -4.7034713625907898e-01 6.4461517333984375e-01 - 3.4142866730690002e-01 -8.6112099885940552e-01 - <_> - 5.8600910186767578e+01 - - 1 2 2047 8.0500000000000000e+01 0 -1 2048 - 1.8650000000000000e+02 -2 -3 2049 590. - - -7.2916746139526367e-01 3.1004229187965393e-01 - -6.6359126567840576e-01 9.5881775021553040e-02 - <_> - 5.8711597442626953e+01 - - 1 2 2050 5.0000000000000000e-01 0 -1 2051 - 7.5450000000000000e+02 -2 -3 2052 3.2650000000000000e+02 - - -9.2816257476806641e-01 4.2444109916687012e-01 - -4.2585963010787964e-01 3.1073370575904846e-01 - <_> - 5.8032016754150391e+01 - - 1 2 2053 60937. 0 -1 2054 416. -2 -3 2055 - 4.5000000000000000e+00 - - 1.7063696682453156e-01 -6.7958027124404907e-01 - 8.7877064943313599e-01 -9.5674747228622437e-01 - <_> - 5.8740566253662109e+01 - - 1 2 2056 1.5000000000000000e+00 0 -1 2057 - 3.5000000000000000e+00 -2 -3 2058 4.6500000000000000e+01 - - -7.4752992391586304e-01 7.0855057239532471e-01 - -6.8028306961059570e-01 2.6557485107332468e-03 - <_> - 5.9213050842285156e+01 - - 1 2 2059 7.5000000000000000e+00 0 -1 2060 - 4.5000000000000000e+00 -2 -3 2061 2.9750000000000000e+02 - - -1.6750365495681763e-01 4.7248429059982300e-01 - 1.6587665677070618e-01 -5.7748597860336304e-01 - <_> - 5.9422805786132812e+01 - - 1 2 2062 9.5000000000000000e+00 0 -1 2063 - 2.4500000000000000e+01 -2 -3 2064 7.5000000000000000e+00 - - 2.3164252936840057e-01 -8.6614209413528442e-01 - -8.4939008951187134e-01 2.0975443720817566e-01 - <_> - 5.8884654998779297e+01 - - 1 2 2065 6.2500000000000000e+01 0 -1 2066 - 1.0500000000000000e+01 -2 -3 2067 252. - - 1.0844799689948559e-02 -5.3815227746963501e-01 - 7.5545585155487061e-01 -4.2718842625617981e-01 - <_> - 5.9134284973144531e+01 - - 1 2 2068 2.3365000000000000e+03 0 -1 2069 - 1.2850000000000000e+02 -2 -3 2070 3.4845000000000000e+03 - - 8.5452580451965332e-01 -5.0535249710083008e-01 - 7.7388888597488403e-01 -6.3630655407905579e-02 - <_> - 5.9335205078125000e+01 - - 1 2 2071 7.5000000000000000e+00 0 -1 2072 - 6.5000000000000000e+00 -2 -3 2073 2.1450000000000000e+02 - - -8.2057535648345947e-01 2.0091684162616730e-01 - -6.9147127866744995e-01 6.4241760969161987e-01 - <_> - 5.9819751739501953e+01 - - 1 2 2074 1.4500000000000000e+01 0 -1 2075 - 1.3500000000000000e+01 -2 -3 2076 4.9500000000000000e+01 - - -9.3421977758407593e-01 4.8454797267913818e-01 - -3.7337201833724976e-01 3.2126367092132568e-01 - <_> - 5.9756664276123047e+01 - - 1 2 2077 3.7550000000000000e+02 0 -1 2078 - 8.1500000000000000e+01 -2 -3 2079 14. - - -6.3086077570915222e-02 5.7233673334121704e-01 1. - -9.5777195692062378e-01 - <_> - 6.0291542053222656e+01 - - 1 2 2080 3.5000000000000000e+00 0 -1 2081 - 2.5000000000000000e+00 -2 -3 2082 1.7500000000000000e+01 - - -7.0069408416748047e-01 6.3710403442382812e-01 - -4.9769634008407593e-01 1.1464314162731171e-01 - <_> - 6.0335617065429688e+01 - - 1 2 2083 6.0500000000000000e+01 0 -1 2084 235. -2 -3 2085 - 6.5500000000000000e+01 - - 6.0332548618316650e-01 -4.5363491773605347e-01 - -7.2721785306930542e-01 2.7224572841078043e-03 - <_> - 5.9978572845458984e+01 - - 1 2 2086 2145. 0 -1 2087 5.0000000000000000e-01 -2 -3 2088 - 1.1500000000000000e+01 - - 6.9418591260910034e-01 -7.1563631296157837e-01 - -5.4690980911254883e-01 2.3341998457908630e-01 - <_> - 6.0145259857177734e+01 - - 1 2 2089 4.8350000000000000e+02 0 -1 2090 - 5.3500000000000000e+01 -2 -3 2091 5.0550000000000000e+02 - - 5.3724527359008789e-01 -1.2441903352737427e-01 - -6.5049791336059570e-01 2.5399866700172424e-01 - <_> - 6.0507656097412109e+01 - - 1 2 2092 2.7500000000000000e+01 0 -1 2093 - 5.5000000000000000e+00 -2 -3 2094 5.0500000000000000e+01 - - 1.4425510168075562e-01 -7.4231290817260742e-01 - -2.6776736974716187e-01 3.6239382624626160e-01 - <_> - 6.0473968505859375e+01 - - 1 2 2095 5.0000000000000000e-01 0 -1 2096 - 2.5500000000000000e+01 -2 -3 2097 1587. - - -7.2751653194427490e-01 4.5861607789993286e-01 - 5.5637544393539429e-01 -3.6810955405235291e-01 - <_> - 6.0842075347900391e+01 - - 1 2 2098 5.1150000000000000e+02 0 -1 2099 1169. -2 -3 2100 - 2.0150000000000000e+02 - - -3.0562120676040649e-01 8.1614106893539429e-01 - 7.2896146774291992e-01 -1.8503957986831665e-01 - <_> - 6.0462539672851562e+01 - - 1 2 2101 8.3500000000000000e+01 0 -1 2102 - 3.0500000000000000e+01 -2 -3 2103 2.9850000000000000e+02 - - -8.2488976418972015e-02 4.4352260231971741e-01 - 5.2298051118850708e-01 -8.3577710390090942e-01 - <_> - 6.1029483795166016e+01 - - 1 2 2104 5.0000000000000000e-01 0 -1 2105 - 1.6500000000000000e+01 -2 -3 2106 2.8650000000000000e+02 - - -6.2287323176860809e-02 5.6694161891937256e-01 - -5.0430041551589966e-01 2.6749575138092041e-01 - <_> - 6.0533782958984375e+01 - - 1 2 2107 1.5000000000000000e+00 0 -1 2108 86. -2 -3 2109 - 1.5000000000000000e+00 - - 4.6476197242736816e-01 -3.5366341471672058e-01 - 1.1941082775592804e-01 -4.9569913744926453e-01 - <_> - 6.1014225006103516e+01 - - 1 2 2110 8.5500000000000000e+01 0 -1 2111 - 7.1500000000000000e+01 -2 -3 2112 3.0050000000000000e+02 - - -3.2236501574516296e-01 5.3735041618347168e-01 - 4.8043999075889587e-01 -8.1549012660980225e-01 - <_> - 6.1214355468750000e+01 - - 1 2 2113 5.0000000000000000e-01 0 -1 2114 5423. -2 -3 2115 - 3.2500000000000000e+01 - - 6.3166511058807373e-01 -1.0317980498075485e-01 - -8.1713062524795532e-01 -4.8018395900726318e-02 - <_> - 6.1207153320312500e+01 - - 1 2 2116 6.9750000000000000e+02 0 -1 2117 - 2.3500000000000000e+01 -2 -3 2118 1299. - - -5.5850952863693237e-01 4.5436400175094604e-01 - -4.2946615815162659e-01 4.6700772643089294e-01 - <_> - 6.1372627258300781e+01 - - 1 2 2119 9.7500000000000000e+01 0 -1 2120 - 1.2500000000000000e+01 -2 -3 2121 8.8500000000000000e+01 - - -9.3579089641571045e-01 1.6547182202339172e-01 - -8.7968140840530396e-01 5.9617185592651367e-01 - <_> - 6.1535186767578125e+01 - - 1 2 2122 4.0550000000000000e+02 0 -1 2123 - 8.5000000000000000e+00 -2 -3 2124 5.5500000000000000e+01 - - -5.4796415567398071e-01 2.2591431438922882e-01 - -6.4731520414352417e-01 6.6429591178894043e-01 - <_> - 6.1438594818115234e+01 - - 1 2 2125 7.5000000000000000e+00 0 -1 2126 - 1.6500000000000000e+01 -2 -3 2127 2.0464500000000000e+04 - - -7.6974302530288696e-01 5.8108645677566528e-01 - 1.4914943277835846e-01 -4.0168645977973938e-01 - <_> - 6.1837162017822266e+01 - - 1 2 2128 1.9150000000000000e+02 0 -1 2129 - 2.5000000000000000e+00 -2 -3 2130 2.3500000000000000e+01 - - 3.0682370066642761e-01 -6.2734222412109375e-01 - -3.0841422080993652e-01 3.9856877923011780e-01 - <_> - 6.1491020202636719e+01 - - 1 2 2131 9.5000000000000000e+00 0 -1 2132 - 1.0286500000000000e+04 -2 -3 2133 1.5750000000000000e+02 - - 4.2527648806571960e-01 -3.4614086151123047e-01 - -6.1684650182723999e-01 1.9758818671107292e-02 - <_> - 6.1886714935302734e+01 - - 1 2 2134 1.7500000000000000e+01 0 -1 2135 - 9.2500000000000000e+01 -2 -3 2136 18. - - -1.2079064548015594e-01 3.9569309353828430e-01 - 3.3188980817794800e-01 -8.7485474348068237e-01 - <_> - 6.1790431976318359e+01 - - 1 2 2137 2.1500000000000000e+01 0 -1 2138 - 2.2500000000000000e+01 -2 -3 2139 4.5000000000000000e+00 - - -5.2500929683446884e-02 6.8664622306823730e-01 - 1.5717932581901550e-01 -6.7684161663055420e-01 - <_> - 6.2245330810546875e+01 - - 1 2 2140 1.2135000000000000e+03 0 -1 2141 - 4.5000000000000000e+00 -2 -3 2142 5.2865000000000000e+03 - - 3.3859279751777649e-01 -4.2644050717353821e-01 - 5.0935482978820801e-01 -4.1733506321907043e-01 - <_> - 6.2387325286865234e+01 - - 1 2 2143 4.5000000000000000e+00 0 -1 2144 - 1.0500000000000000e+01 -2 -3 2145 209. - - 1.3510234653949738e-01 -9.6185976266860962e-01 - 1.4199161529541016e-01 -8.5389542579650879e-01 - <_> - 6.2084945678710938e+01 - - 1 2 2146 11208. 0 -1 2147 5.0000000000000000e-01 -2 -3 2148 - 20248. - - 1.5907059609889984e-01 -3.8836613297462463e-01 - 8.0494099855422974e-01 -7.7658468484878540e-01 - <_> - 6.1984123229980469e+01 - - 1 2 2149 2.3500000000000000e+01 0 -1 2150 - 2.3650000000000000e+02 -2 -3 2151 5.0000000000000000e-01 - - 1. -1. 4.0856447815895081e-01 -1.0082300007343292e-01 - <_> - 6.2277572631835938e+01 - - 1 2 2152 1.2115000000000000e+03 0 -1 2153 - 1.5000000000000000e+00 -2 -3 2154 4.2995000000000000e+03 - - 4.2784088850021362e-01 -8.9822685718536377e-01 - 2.9345232248306274e-01 -2.5083908438682556e-01 - <_> - 6.2472473144531250e+01 - - 1 2 2155 9.4500000000000000e+01 0 -1 2156 - 1.0500000000000000e+01 -2 -3 2157 68. - - 6.5589077770709991e-02 -7.7099108695983887e-01 - -7.4427002668380737e-01 1.9490025937557220e-01 - <_> - 6.2016971588134766e+01 - - 1 2 2158 2.5000000000000000e+00 0 -1 2159 - 1.2500000000000000e+01 -2 -3 2160 5.5500000000000000e+01 - - 4.2139071226119995e-01 -5.5164831876754761e-01 - -4.5550110936164856e-01 3.6315539479255676e-01 - <_> - 6.2252468109130859e+01 - - 1 2 2161 1.5685000000000000e+03 0 -1 2162 - 4.5000000000000000e+00 -2 -3 2163 7.7500000000000000e+01 - - 4.6763184666633606e-01 -7.2583413124084473e-01 - -4.7358104586601257e-01 2.3549596965312958e-01 - <_> - 6.1926944732666016e+01 - - 1 2 2164 5.0000000000000000e-01 0 -1 2165 - 2.9500000000000000e+01 -2 -3 2166 1.5000000000000000e+00 - - -8.4635341167449951e-01 4.7176876664161682e-01 - 1.2360874563455582e-01 -4.4846296310424805e-01 - <_> - 6.2441539764404297e+01 - - 1 2 2167 1.3650000000000000e+02 0 -1 2168 - 7.5000000000000000e+00 -2 -3 2169 1.6500000000000000e+01 - - 3.0158129334449768e-01 -3.6455678939819336e-01 - -9.0578240156173706e-01 5.1459383964538574e-01 - <_> - 6.1964569091796875e+01 - - 1 2 2170 8.5000000000000000e+00 0 -1 2171 - 1.3226500000000000e+04 -2 -3 2172 6.4500000000000000e+01 - - -8.5410606861114502e-01 2.6482892036437988e-01 - -4.7696748375892639e-01 6.1308634281158447e-01 - <_> - 6.1803714752197266e+01 - - 1 2 2173 2.6500000000000000e+01 0 -1 2174 - 4.5000000000000000e+00 -2 -3 2175 5.0000000000000000e-01 - - 5.8156448602676392e-01 -8.6257112026214600e-01 - 4.0267577767372131e-01 -1.6085536777973175e-01 - <_> - 6.2505237579345703e+01 - - 1 2 2176 4.2500000000000000e+01 0 -1 2177 - 7.9662500000000000e+04 -2 -3 2178 2.2050000000000000e+02 - - 4.3292667716741562e-02 -8.7512964010238647e-01 - -2.3395214229822159e-02 7.0152431726455688e-01 - <_> - 6.2662498474121094e+01 - - 1 2 2179 2.2535000000000000e+03 0 -1 2180 5489. -2 -3 2181 - 6.5000000000000000e+00 - - -1.3394173979759216e-01 6.8779164552688599e-01 - 4.8814722895622253e-01 -3.9524573087692261e-01 - <_> - 6.2619869232177734e+01 - - 1 2 2182 3.0135000000000000e+03 0 -1 2183 4966. -2 -3 2184 - 5.5000000000000000e+00 - - -3.0220034718513489e-01 8.1261235475540161e-01 - 1.7436875402927399e-01 -3.7351670861244202e-01 - <_> - 6.2884567260742188e+01 - - 1 2 2185 2.5000000000000000e+00 0 -1 2186 286. -2 -3 2187 - 2.9500000000000000e+01 - - 8.4548860788345337e-01 -9.6311759948730469e-01 - -3.5037949681282043e-01 2.6469662785530090e-01 - <_> - 6.2971755981445312e+01 - - 1 2 2188 4.5000000000000000e+00 0 -1 2189 - 5.6350000000000000e+02 -2 -3 2190 1.7500000000000000e+01 - - 3.5842654109001160e-01 -7.6083594560623169e-01 - -6.3569843769073486e-01 1.1528482288122177e-01 - <_> - 6.2904327392578125e+01 - - 1 2 2191 19751. 0 -1 2192 5709. -2 -3 2193 - 5.0000000000000000e-01 - - 5.8615106344223022e-01 -6.7431032657623291e-02 - 8.1077980995178223e-01 -7.9040503501892090e-01 - <_> - 6.3428482055664062e+01 - - 1 2 2194 5.2150000000000000e+02 0 -1 2195 112. -2 -3 2196 - 4.8500000000000000e+01 - - -2.9560300707817078e-01 6.3393580913543701e-01 - -7.4229598045349121e-01 5.2415388822555542e-01 - <_> - 6.3408718109130859e+01 - - 1 2 2197 2.2850000000000000e+02 0 -1 2198 - 9.5000000000000000e+00 -2 -3 2199 8.5000000000000000e+00 - - -6.5528714656829834e-01 3.2386130094528198e-01 - -5.1321542263031006e-01 3.7662333250045776e-01 - <_> - 6.3479297637939453e+01 - - 1 2 2200 1.0500000000000000e+01 0 -1 2201 - 1.2875000000000000e+03 -2 -3 2202 1.1550000000000000e+02 - - -6.5136082470417023e-02 5.4068171977996826e-01 - -5.4428064823150635e-01 3.5270053148269653e-01 - <_> - 6.3459232330322266e+01 - - 1 2 2203 5.6350000000000000e+02 0 -1 2204 - 3.6500000000000000e+01 -2 -3 2205 2.7500000000000000e+01 - - -2.6665899157524109e-01 2.9732996225357056e-01 - 8.9094859361648560e-01 -7.8570848703384399e-01 - <_> - 6.3715244293212891e+01 - - 1 2 2206 1.3750000000000000e+02 0 -1 2207 - 5.5950000000000000e+02 -2 -3 2208 1.7350000000000000e+02 - - 8.2382661104202271e-01 -9.3905463814735413e-02 - -7.7598297595977783e-01 -6.1380777508020401e-02 - <_> - 6.4063674926757812e+01 - - 1 2 2209 1.5000000000000000e+00 0 -1 2210 - 1.1500000000000000e+01 -2 -3 2211 3.1850000000000000e+02 - - -8.9411342144012451e-01 3.4842905402183533e-01 - -4.4360893964767456e-01 4.8869660496711731e-01 - <_> - 6.4111953735351562e+01 - - 1 2 2212 2.5000000000000000e+00 0 -1 2213 - 4.1500000000000000e+01 -2 -3 2214 5.0000000000000000e-01 - - -2.3706158995628357e-01 4.4370284676551819e-01 - 5.4362642765045166e-01 -5.1952922344207764e-01 - <_> - 6.4159660339355469e+01 - - 1 2 2215 1.5000000000000000e+00 0 -1 2216 - 5.7500000000000000e+01 -2 -3 2217 1.0775000000000000e+03 - - -2.5581914931535721e-02 6.6174793243408203e-01 - 4.0115654468536377e-01 -3.5893636941909790e-01 - <_> - 6.4437599182128906e+01 - - 1 2 2218 921. 0 -1 2219 4.5000000000000000e+00 -2 -3 2220 - 2.9045000000000000e+03 - - 3.1526345014572144e-01 -7.0185899734497070e-01 - 2.7793204784393311e-01 -4.8113667964935303e-01 - <_> - 6.4332015991210938e+01 - - 1 2 2221 1.8985000000000000e+03 0 -1 2222 - 7.8250000000000000e+02 -2 -3 2223 2.1500000000000000e+01 - - -2.8789478540420532e-01 6.2446802854537964e-01 - -7.3467957973480225e-01 7.2612441144883633e-03 - <_> - 6.4401939392089844e+01 - - 1 2 2224 2.5000000000000000e+00 0 -1 2225 - 3.7500000000000000e+01 -2 -3 2226 5.4850000000000000e+02 - - -6.1204963922500610e-01 6.2827998399734497e-01 - -5.4985451698303223e-01 6.9924682378768921e-02 - <_> - 6.4601165771484375e+01 - - 1 2 2227 3.5000000000000000e+00 0 -1 2228 - 4.4500000000000000e+01 -2 -3 2229 6.5000000000000000e+00 - - -3.2580995559692383e-01 5.1435238122940063e-01 - 5.3874686360359192e-02 -5.6130063533782959e-01 - <_> - 6.4761596679687500e+01 - - 1 2 2230 7.5000000000000000e+00 0 -1 2231 - 3.5000000000000000e+00 -2 -3 2232 5.5500000000000000e+01 - - -7.5083559751510620e-01 3.6957365274429321e-01 - -4.0680039674043655e-02 -7.7190446853637695e-01 - <_> - 6.4306961059570312e+01 - - 1 2 2233 160. 0 -1 2234 127. -2 -3 2235 - 9.1500000000000000e+01 - - 2.1852338314056396e-01 -6.8148994445800781e-01 - -4.8492997884750366e-01 3.1643366813659668e-01 - <_> - 6.4767280578613281e+01 - - 1 2 2236 2.5000000000000000e+00 0 -1 2237 - 7.5250000000000000e+02 -2 -3 2238 4.5000000000000000e+00 - - 4.6031954884529114e-01 -6.2284696102142334e-01 - 4.7282892465591431e-01 -4.0902397036552429e-01 - <_> - 6.4466903686523438e+01 - - 1 2 2239 1.4250000000000000e+02 0 -1 2240 - 4.5000000000000000e+00 -2 -3 2241 1.5000000000000000e+00 - - 1.0185246169567108e-01 -5.8319956064224243e-01 - -6.2095612287521362e-01 4.2880809307098389e-01 - <_> - 6.4761924743652344e+01 - - 1 2 2242 1.1605000000000000e+03 0 -1 2243 2073. -2 -3 2244 - 4.6555000000000000e+03 - - -7.2359293699264526e-01 7.9880434274673462e-01 - 6.1722189188003540e-01 -1.1455553770065308e-01 - <_> - 6.5016494750976562e+01 - - 1 2 2245 1.0350000000000000e+02 0 -1 2246 - 4.4850000000000000e+02 -2 -3 2247 6.2550000000000000e+02 - - -6.7635171115398407e-02 4.6874949336051941e-01 - -8.0271768569946289e-01 3.7331908941268921e-01 - <_> - 6.5212265014648438e+01 - - 1 2 2248 6.2150000000000000e+02 0 -1 2249 326. -2 -3 2250 - 1.5000000000000000e+00 - - 1.9577379524707794e-01 -7.0703411102294922e-01 - 5.1214373111724854e-01 -7.2338587045669556e-01 - <_> - 6.5121826171875000e+01 - - 1 2 2251 9.7500000000000000e+01 0 -1 2252 - 2.3550000000000000e+02 -2 -3 2253 1.9500000000000000e+01 - - 4.6985685825347900e-01 -8.9037990570068359e-01 - 4.9876618385314941e-01 -9.0437032282352448e-02 - <_> - 6.5343742370605469e+01 - - 1 2 2254 1.9500000000000000e+01 0 -1 2255 1133. -2 -3 2256 - 1.0050000000000000e+02 - - 4.8251938819885254e-01 -6.2672054767608643e-01 - 2.2191496193408966e-01 -7.7584463357925415e-01 - <_> - 6.5446708679199219e+01 - - 1 2 2257 1.2555000000000000e+03 0 -1 2258 1315. -2 -3 2259 - 1.4525000000000000e+03 - - 5.0016152858734131e-01 -3.4823906421661377e-01 - 8.1143665313720703e-01 -3.6510743200778961e-02 - <_> - 6.5472305297851562e+01 - - 1 2 2260 5.8500000000000000e+01 0 -1 2261 - 9.2250000000000000e+02 -2 -3 2262 9.2500000000000000e+01 - - 2.5597516447305679e-02 -7.3596054315567017e-01 - 7.7482932806015015e-01 -2.4384480714797974e-01 - <_> - 6.5680641174316406e+01 - - 1 2 2263 2.8500000000000000e+01 0 -1 2264 - 1.9500000000000000e+01 -2 -3 2265 5.0000000000000000e-01 - - -5.1095438003540039e-01 2.7406066656112671e-01 - 4.7238901257514954e-02 -7.9554700851440430e-01 - <_> - 6.5828727722167969e+01 - - 1 2 2266 6.5000000000000000e+00 0 -1 2267 46. -2 -3 2268 - 2.3350000000000000e+02 - - 4.0098896622657776e-01 -3.0355367064476013e-01 - -5.7611280679702759e-01 2.4870538711547852e-01 - <_> - 6.6055801391601562e+01 - - 1 2 2269 1.1235000000000000e+03 0 -1 2270 1791. -2 -3 2271 - 2.2500000000000000e+01 - - 4.2222037911415100e-01 -5.7381504774093628e-01 - -5.7501715421676636e-01 2.7313375473022461e-01 - <_> - 6.5979278564453125e+01 - - 1 2 2272 1.6500000000000000e+01 0 -1 2273 - 1.1500000000000000e+01 -2 -3 2274 3.6500000000000000e+01 - - -1. 7.4951916933059692e-01 -2.2320111095905304e-01 - 6.2808310985565186e-01 - <_> - 6.5982803344726562e+01 - - 1 2 2275 8.8500000000000000e+01 0 -1 2276 - 5.0000000000000000e-01 -2 -3 2277 303. - - -4.2098733782768250e-01 4.7041663527488708e-01 - -8.3091259002685547e-01 3.5231374204158783e-03 - <_> - 6.5862815856933594e+01 - - 1 2 2278 5.0000000000000000e-01 0 -1 2279 - 7.5000000000000000e+00 -2 -3 2280 1.8500000000000000e+01 - - -3.1455779075622559e-01 6.9095128774642944e-01 - -3.3799609541893005e-01 3.8651108741760254e-01 - <_> - 6.5698982238769531e+01 - - 1 2 2281 2.5000000000000000e+00 0 -1 2282 - 6.5000000000000000e+00 -2 -3 2283 1.6500000000000000e+01 - - 1.1540318280458450e-01 -8.0706399679183960e-01 - 4.5586335659027100e-01 -1.6382929682731628e-01 - <_> - 6.5865753173828125e+01 - - 1 2 2284 4.1500000000000000e+01 0 -1 2285 322. -2 -3 2286 - 5.0000000000000000e-01 - - -7.6401643455028534e-02 7.0236140489578247e-01 - 8.3611255884170532e-01 -3.3973169326782227e-01 - <_> - 6.6324913024902344e+01 - - 1 2 2287 1180. 0 -1 2288 5.0000000000000000e-01 -2 -3 2289 - 4.9850000000000000e+02 - - 5.4826909303665161e-01 -6.1790186166763306e-01 - 4.9796470999717712e-01 -7.6435178518295288e-02 - <_> - 6.6116767883300781e+01 - - 1 2 2290 1.0086500000000000e+04 0 -1 2291 - 5.0000000000000000e-01 -2 -3 2292 1.4915000000000000e+03 - - 2.2847035527229309e-01 -5.0997734069824219e-01 - 5.6548178195953369e-01 -2.0814302563667297e-01 - <_> - 6.6620307922363281e+01 - - 1 2 2293 1.2195000000000000e+03 0 -1 2294 - 1.9055000000000000e+03 -2 -3 2295 2.0550000000000000e+02 - - -3.3149933815002441e-01 6.4176028966903687e-01 - 6.0821473598480225e-01 -3.0888804793357849e-01 - <_> - 6.6746444702148438e+01 - - 1 2 2296 2.5000000000000000e+00 0 -1 2297 - 1.0150000000000000e+02 -2 -3 2298 7.2585000000000000e+03 - - 5.9253281354904175e-01 -3.7904369831085205e-01 - 2.6760953664779663e-01 -4.0275105834007263e-01 - <_> - 6.6943595886230469e+01 - - 1 2 2299 1.1500000000000000e+01 0 -1 2300 - 2.4500000000000000e+01 -2 -3 2301 4.5000000000000000e+00 - - -9.8942744731903076e-01 1. -5.9422683715820312e-01 - 1.9715292751789093e-01 - <_> - 6.6331527709960938e+01 - - 1 2 2302 2.4500000000000000e+01 0 -1 2303 - 8.7500000000000000e+01 -2 -3 2304 3.4500000000000000e+01 - - -2.3940645158290863e-01 3.9157524704933167e-01 - 1.0247871279716492e-01 -7.5354349613189697e-01 - <_> - 6.6475265502929688e+01 - - 1 2 2305 6.5000000000000000e+00 0 -1 2306 - 2.3500000000000000e+01 -2 -3 2307 3.3500000000000000e+01 - - -7.6529741287231445e-01 4.5638066530227661e-01 - -5.1855069398880005e-01 1.4373423159122467e-01 - <_> - 6.6999214172363281e+01 - - 1 2 2308 9.4500000000000000e+01 0 -1 2309 - 2.0500000000000000e+01 -2 -3 2310 195. - - -7.4185177683830261e-02 5.2394580841064453e-01 - 3.7441125512123108e-01 -9.3662869930267334e-01 - <_> - 6.7006050109863281e+01 - - 1 2 2311 3026. 0 -1 2312 2.2500000000000000e+01 -2 -3 2313 - 2.8500000000000000e+01 - - -8.7473273277282715e-01 5.1518291234970093e-01 - -6.7311668395996094e-01 6.8403608165681362e-03 - <_> - 6.7129646301269531e+01 - - 1 2 2314 1.7500000000000000e+01 0 -1 2315 - 4.4500000000000000e+01 -2 -3 2316 2961. - - -2.2424821555614471e-01 3.6378455162048340e-01 - -7.0937103033065796e-01 1.6935887932777405e-01 - <_> - 6.7392829895019531e+01 - - 1 2 2317 5.5000000000000000e+00 0 -1 2318 - 1.0500000000000000e+01 -2 -3 2319 46. - - 6.3752532005310059e-01 -1.6769923269748688e-01 - -3.9633530378341675e-01 2.1741947531700134e-01 - <_> - 6.7652908325195312e+01 - - 1 2 2320 4.0500000000000000e+01 0 -1 2321 - 3.7750000000000000e+02 -2 -3 2322 288. - - 7.8108507394790649e-01 -8.9046698808670044e-01 - 2.6008096337318420e-01 -3.1209379434585571e-01 - <_> - 6.7522987365722656e+01 - - 1 2 2323 2.8450000000000000e+02 0 -1 2324 - 2.1500000000000000e+01 -2 -3 2325 3.1615000000000000e+03 - - -2.6827138662338257e-01 4.4363465905189514e-01 - -5.0426739454269409e-01 3.2839775085449219e-01 - <_> - 6.7682723999023438e+01 - - 1 2 2326 1.4550000000000000e+02 0 -1 2327 - 5.0000000000000000e-01 -2 -3 2328 187. - - 3.3854234218597412e-01 -1.9424141943454742e-01 - -7.8695666790008545e-01 1.0578002780675888e-01 - <_> - 6.7990608215332031e+01 - - 1 2 2329 1.4500000000000000e+01 0 -1 2330 55. -2 -3 2331 - 4.1500000000000000e+01 - - 9.3669831752777100e-01 -7.9035413265228271e-01 - 4.7996759414672852e-01 -1.4678025245666504e-01 - <_> - 6.7773666381835938e+01 - - 1 2 2332 4.4450000000000000e+02 0 -1 2333 - 6.5000000000000000e+00 -2 -3 2334 87. - - 3.0000856518745422e-01 -5.1463776826858521e-01 - -4.2596080899238586e-01 5.2854359149932861e-01 - <_> - 6.8242584228515625e+01 - - 1 2 2335 2.3325000000000000e+03 0 -1 2336 10142. -2 -3 2337 - 1.9550000000000000e+02 - - -6.1795878410339355e-01 7.2833043336868286e-01 - 5.5236649513244629e-01 -7.2167828679084778e-02 - <_> - 6.7640380859375000e+01 - - 1 2 2338 1.9500000000000000e+01 0 -1 2339 - 5.5000000000000000e+00 -2 -3 2340 3.7500000000000000e+01 - - -9.1623830795288086e-01 2.8547397255897522e-01 - 2.7238869667053223e-01 -6.8565303087234497e-01 - <_> - 6.8166297912597656e+01 - - 1 2 2341 887. 0 -1 2342 1.8950000000000000e+02 -2 -3 2343 - 1.6500000000000000e+01 - - 5.8323717117309570e-01 -8.4304898977279663e-01 - 5.2591782808303833e-01 -1.1249145865440369e-01 - <_> - 6.7966316223144531e+01 - - 1 2 2344 1.3500000000000000e+01 0 -1 2345 - 5.0500000000000000e+01 -2 -3 2346 5.5000000000000000e+00 - - -5.7582974433898926e-01 8.8582295179367065e-01 - 4.5189410448074341e-01 -1.9998365640640259e-01 - <_> - 6.8363616943359375e+01 - - 1 2 2347 9519. 0 -1 2348 9.9355000000000000e+03 -2 -3 2349 - 1.5000000000000000e+00 - - -5.6369476020336151e-02 5.6953996419906616e-01 - 6.4817821979522705e-01 -6.5638613700866699e-01 - <_> - 6.8680084228515625e+01 - - 1 2 2350 1.4500000000000000e+01 0 -1 2351 - 2.2500000000000000e+01 -2 -3 2352 4.9500000000000000e+01 - - -1.3236002624034882e-01 6.2589818239212036e-01 - -4.6971350908279419e-01 3.0481177568435669e-01 - <_> - 6.8636512756347656e+01 - - 1 2 2353 2.3491500000000000e+04 0 -1 2354 - 1.5000000000000000e+00 -2 -3 2355 31. - - 2.9175955057144165e-01 -2.0415711402893066e-01 -1. 1. - <_> - 6.8339431762695312e+01 - - 1 2 2356 2.1500000000000000e+01 0 -1 2357 - 5.0000000000000000e-01 -2 -3 2358 2.5000000000000000e+00 - - 4.2874211072921753e-01 -4.4592785835266113e-01 - -9.4336575269699097e-01 3.3847200870513916e-01 - <_> - 6.8127563476562500e+01 - - 1 2 2359 2.7500000000000000e+01 0 -1 2360 - 4.5000000000000000e+00 -2 -3 2361 1.2500000000000000e+01 - - 1.4308325946331024e-01 -5.4449397325515747e-01 - 5.8717787265777588e-01 -2.1186867356300354e-01 - <_> - 6.8410385131835938e+01 - - 1 2 2362 9.5000000000000000e+00 0 -1 2363 - 5.5000000000000000e+00 -2 -3 2364 1.2850000000000000e+02 - - -1.1505768448114395e-01 -9.6275746822357178e-01 - 2.8282612562179565e-01 -3.5639968514442444e-01 - <_> - 6.8815826416015625e+01 - - 1 2 2365 1.9125000000000000e+03 0 -1 2366 - 6.5000000000000000e+00 -2 -3 2367 1.2925000000000000e+03 - - 7.6003736257553101e-01 -1.8823170661926270e-01 - -3.1990632414817810e-01 3.2092514634132385e-01 - <_> - 6.8693199157714844e+01 - - 1 2 2368 1.5500000000000000e+01 0 -1 2369 - 4.0445000000000000e+03 -2 -3 2370 1.3500000000000000e+01 - - 2.2088183462619781e-01 -8.6471045017242432e-01 - 4.9937435984611511e-01 -1.2262738496065140e-01 - <_> - 6.9212486267089844e+01 - - 1 2 2371 1.1500000000000000e+01 0 -1 2372 - 1.2500000000000000e+01 -2 -3 2373 1.3250000000000000e+02 - - -5.8216619491577148e-01 7.6504099369049072e-01 - -4.9605194479227066e-02 5.4096341133117676e-01 - <_> - 6.9281822204589844e+01 - - 1 2 2374 3.4500000000000000e+01 0 -1 2375 - 6.5000000000000000e+00 -2 -3 2376 1.5000000000000000e+00 - - -7.0201843976974487e-01 3.5367730259895325e-01 1. - -3.9128544926643372e-01 - <_> - 6.9379959106445312e+01 - - 1 2 2377 8.7500000000000000e+01 0 -1 2378 - 7.5000000000000000e+00 -2 -3 2379 273. - - -5.3956866264343262e-01 3.2018893957138062e-01 - -5.9921985864639282e-01 2.5184553861618042e-01 - <_> - 6.9302131652832031e+01 - - 1 2 2380 5.0000000000000000e-01 0 -1 2381 - 4.4500000000000000e+01 -2 -3 2382 1.9204500000000000e+04 - - -5.0899110734462738e-02 6.8976759910583496e-01 - -7.7828548848628998e-02 -9.1394501924514771e-01 - <_> - 6.9691947937011719e+01 - - 1 2 2383 6.7500000000000000e+01 0 -1 2384 - 3.2850000000000000e+02 -2 -3 2385 1224. - - 1.1171031743288040e-02 7.3188757896423340e-01 - -8.6419099569320679e-01 2.1196028217673302e-02 - <_> - 6.9572067260742188e+01 - - 1 2 2386 1.1235000000000000e+03 0 -1 2387 - 8.4050000000000000e+02 -2 -3 2388 1.5500000000000000e+01 - - -1.5439936518669128e-01 6.1207121610641479e-01 - 1.9708819687366486e-01 -4.6194908022880554e-01 - <_> - 6.9861968994140625e+01 - - 1 2 2389 9.1500000000000000e+01 0 -1 2390 - 1.0500000000000000e+01 -2 -3 2391 4.1495000000000000e+03 - - 1.0701948404312134e-01 -5.6979161500930786e-01 - -9.6821188926696777e-02 7.0975506305694580e-01 - <_> - 7.0039260864257812e+01 - - 1 2 2392 1.1500000000000000e+01 0 -1 2393 2897. -2 -3 2394 - 2.4350000000000000e+02 - - -9.1259753704071045e-01 1. 1.7728993296623230e-01 - -7.3356288671493530e-01 - <_> - 6.9705703735351562e+01 - - 1 2 2395 5.0000000000000000e-01 0 -1 2396 - 2.0500000000000000e+01 -2 -3 2397 4.6500000000000000e+01 - - -5.2813202142715454e-01 4.4198977947235107e-01 - -4.8570594191551208e-01 1.9584445655345917e-01 - <_> - 6.9970062255859375e+01 - - 1 2 2398 5.0000000000000000e-01 0 -1 2399 - 3.1500000000000000e+01 -2 -3 2400 3831. - - -6.4685755968093872e-01 7.3702591657638550e-01 - -2.6504144072532654e-01 5.5941796302795410e-01 - <_> - 6.9949569702148438e+01 - - 1 2 2401 5.0000000000000000e-01 0 -1 2402 5. -2 -3 2403 - 4.5000000000000000e+00 - - -8.8435417413711548e-01 5.8749139308929443e-01 - 2.7166697382926941e-01 -3.1555649638175964e-01 - <_> - 7.0117141723632812e+01 - - 1 2 2404 2596. 0 -1 2405 9.1496500000000000e+04 -2 -3 2406 - 1.5000000000000000e+00 - - -7.8573900461196899e-01 1.6757574677467346e-01 - 8.5581427812576294e-01 -9.4101238250732422e-01 - <_> - 7.0224205017089844e+01 - - 1 2 2407 5749. 0 -1 2408 79. -2 -3 2409 208. - - 1. -1. 1.0706392675638199e-01 -7.7825403213500977e-01 - <_> - 7.0221618652343750e+01 - - 1 2 2410 5.1855000000000000e+03 0 -1 2411 - 4.6500000000000000e+01 -2 -3 2412 8.5000000000000000e+00 - - -3.6203452944755554e-01 3.4422519803047180e-01 - -2.5855610147118568e-03 -7.1835225820541382e-01 - <_> - 7.0728790283203125e+01 - - 1 2 2413 1.3500000000000000e+01 0 -1 2414 - 1.0950000000000000e+02 -2 -3 2415 5.3500000000000000e+01 - - 1.9084104895591736e-01 -8.0712783336639404e-01 - 5.5798757076263428e-01 -1.0734169185161591e-01 - <_> - 7.0351577758789062e+01 - - 1 2 2416 1.3405000000000000e+03 0 -1 2417 - 3.5000000000000000e+00 -2 -3 2418 342. - - 4.1194143891334534e-01 -3.7721332907676697e-01 - -5.5014234781265259e-01 5.2194917201995850e-01 - <_> - 7.0136901855468750e+01 - - 1 2 2419 3.7345000000000000e+03 0 -1 2420 - 3.2500000000000000e+01 -2 -3 2421 9.8500000000000000e+01 - - 3.2743006944656372e-01 -2.1467541158199310e-01 - -8.1029343605041504e-01 7.0203500986099243e-01 - <_> - 6.9686508178710938e+01 - - 1 2 2422 1.2185000000000000e+03 0 -1 2423 - 1.5000000000000000e+00 -2 -3 2424 4.8755000000000000e+03 - - 2.0333147048950195e-01 -4.5039632916450500e-01 - 4.4757398962974548e-01 -5.9627413749694824e-01 - <_> - 7.0005889892578125e+01 - - 1 2 2425 6.4500000000000000e+01 0 -1 2426 - 3.7150000000000000e+02 -2 -3 2427 6.7750000000000000e+02 - - 2.6681974530220032e-01 -5.9953171014785767e-01 - 3.1938493251800537e-01 -6.9817471504211426e-01 - <_> - 7.0428718566894531e+01 - - 1 2 2428 2.6500000000000000e+01 0 -1 2429 - 1.7650000000000000e+02 -2 -3 2430 1.0500000000000000e+01 - - -7.5495415367186069e-03 -6.1552453041076660e-01 - -5.8272439241409302e-01 7.1704763174057007e-01 - <_> - 7.0936927795410156e+01 - - 1 2 2431 1.0950000000000000e+02 0 -1 2432 - 1.2500000000000000e+01 -2 -3 2433 3.4500000000000000e+01 - - 6.7761175334453583e-02 -6.1159509420394897e-01 - 5.0820809602737427e-01 -1.4290602505207062e-01 - <_> - 7.1328254699707031e+01 - - 1 2 2434 37. 0 -1 2435 108. -2 -3 2436 - 7.5000000000000000e+00 - - 5.2559959888458252e-01 -9.0183192491531372e-01 - 3.9132472872734070e-01 -1.6153934597969055e-01 - <_> - 7.1377151489257812e+01 - - 1 2 2437 1.5000000000000000e+00 0 -1 2438 - 4.1500000000000000e+01 -2 -3 2439 136. - - -1.6022360324859619e-01 4.5697069168090820e-01 - -5.8138531446456909e-01 5.7625991106033325e-01 - <_> - 7.1590606689453125e+01 - - 1 2 2440 2.2950000000000000e+02 0 -1 2441 986. -2 -3 2442 - 2.5000000000000000e+00 - - -5.5947124958038330e-01 2.1345110237598419e-01 - 5.1724910736083984e-01 -7.9673564434051514e-01 - <_> - 7.1604888916015625e+01 - - 1 2 2443 9.5000000000000000e+00 0 -1 2444 - 2.3500000000000000e+01 -2 -3 2445 1.0550000000000000e+02 - - -4.6063753962516785e-01 3.1602507829666138e-01 - -5.2265387773513794e-01 6.4050400257110596e-01 - <_> - 7.1843421936035156e+01 - - 1 2 2446 2.3365000000000000e+03 0 -1 2447 - 1.3333500000000000e+04 -2 -3 2448 7.8250000000000000e+02 - - -5.7870197296142578e-01 9.2290049791336060e-01 - 6.9137138128280640e-01 -1.5123842656612396e-01 - <_> - 7.1939323425292969e+01 - - 1 2 2449 3.5000000000000000e+00 0 -1 2450 - 1.8500000000000000e+01 -2 -3 2451 6.1500000000000000e+01 - - -5.3932064771652222e-01 4.5498287677764893e-01 - -6.5867853164672852e-01 9.6776336431503296e-02 - <_> - 7.1796112060546875e+01 - - 1 2 2452 1.0050000000000000e+02 0 -1 2453 - 6.5000000000000000e+00 -2 -3 2454 9.9500000000000000e+01 - - 2.1488319337368011e-01 -3.8114818930625916e-01 - -9.3055361509323120e-01 9.2053020000457764e-01 - <_> - 7.1826210021972656e+01 - - 1 2 2455 5.3875000000000000e+03 0 -1 2456 - 4.0150000000000000e+02 -2 -3 2457 203. - - 3.6667090654373169e-01 -3.2799699902534485e-01 - -2.9070058465003967e-01 6.2547647953033447e-01 - <_> - 7.1566932678222656e+01 - - 1 2 2458 1164. 0 -1 2459 12122. -2 -3 2460 - 1.2565000000000000e+03 - - -8.4399074316024780e-01 8.6422222852706909e-01 - -2.5927615165710449e-01 3.1698527932167053e-01 - <_> - 7.2048255920410156e+01 - - 1 2 2461 7.0500000000000000e+01 0 -1 2462 - 5.0000000000000000e-01 -2 -3 2463 113. - - 4.2299839854240417e-01 -3.7696704268455505e-01 - 4.8132598400115967e-01 -8.4420484304428101e-01 - <_> - 7.2493713378906250e+01 - - 1 2 2464 1.5000000000000000e+00 0 -1 2465 24. -2 -3 2466 - 1.1650000000000000e+02 - - -7.3568606376647949e-01 4.4545513391494751e-01 - 4.5487869530916214e-02 -6.0882014036178589e-01 - <_> - 7.2295455932617188e+01 - - 1 2 2467 2.6500000000000000e+01 0 -1 2468 - 2.5000000000000000e+00 -2 -3 2469 1.9500000000000000e+01 - - 1.9328838586807251e-01 -9.2098551988601685e-01 - 2.8382617235183716e-01 -3.1953519582748413e-01 - <_> - 7.2064254760742188e+01 - - 1 2 2470 5.6500000000000000e+01 0 -1 2471 - 3.5000000000000000e+00 -2 -3 2472 2.2450000000000000e+02 - - 2.8244340419769287e-01 -2.9833537340164185e-01 -1. - 8.5370278358459473e-01 - <_> - 7.2284309387207031e+01 - - 1 2 2473 4.9500000000000000e+01 0 -1 2474 4038. -2 -3 2475 - 1.0500000000000000e+01 - - 3.4302046895027161e-01 -8.1761771440505981e-01 - -7.4983465671539307e-01 2.2005748748779297e-01 - <_> - 7.2424072265625000e+01 - - 1 2 2476 5.0000000000000000e-01 0 -1 2477 - 4.9525000000000000e+03 -2 -3 2478 1.2500000000000000e+01 - - 3.8115087151527405e-01 -6.6690814495086670e-01 - 1.3976120948791504e-01 -5.6789624691009521e-01 - <_> - 7.2313995361328125e+01 - - 1 2 2479 3.2500000000000000e+01 0 -1 2480 - 1.1926500000000000e+04 -2 -3 2481 6.0500000000000000e+01 - - -6.5613843500614166e-02 -7.5880628824234009e-01 - 2.2690546512603760e-01 -6.3682055473327637e-01 - <_> - 7.2143783569335938e+01 - - 1 2 2482 5.0000000000000000e-01 0 -1 2483 - 5.7535000000000000e+03 -2 -3 2484 5.5000000000000000e+00 - - -9.2257243394851685e-01 8.5957908630371094e-01 - 3.2697901129722595e-01 -1.7020969092845917e-01 - <_> - 7.2681999206542969e+01 - - 1 2 2485 7.1500000000000000e+01 0 -1 2486 188. -2 -3 2487 - 177. - - -2.7773711085319519e-01 6.7274010181427002e-01 - -3.3517399430274963e-01 7.5859177112579346e-01 - <_> - 7.2897277832031250e+01 - - 1 2 2488 6.7500000000000000e+01 0 -1 2489 - 2.1500000000000000e+01 -2 -3 2490 7.0500000000000000e+01 - - -7.9514396190643311e-01 2.1528589725494385e-01 1. - -7.2838509082794189e-01 - <_> - 7.2998519897460938e+01 - - 1 2 2491 6.5000000000000000e+00 0 -1 2492 161. -2 -3 2493 - 9578. - - 6.2451672554016113e-01 -1.9713717699050903e-01 - 1.0124062746763229e-01 -5.1373565196990967e-01 - <_> - 7.3003601074218750e+01 - - 1 2 2494 2.3415000000000000e+03 0 -1 2495 - 7.6500000000000000e+01 -2 -3 2496 1.4555000000000000e+03 - - -6.9544225931167603e-01 3.1051948666572571e-01 - 7.0642524957656860e-01 1.7271263524889946e-02 - <_> - 7.3047424316406250e+01 - - 1 2 2497 1.5500000000000000e+01 0 -1 2498 - 1.1500000000000000e+01 -2 -3 2499 5.7500000000000000e+01 - - 3.4771478176116943e-01 -8.5552608966827393e-01 - 3.6829981207847595e-01 -1.8874453008174896e-01 - <_> - 7.3427375793457031e+01 - - 1 2 2500 6.2500000000000000e+01 0 -1 2501 34698. -2 -3 2502 - 8.5000000000000000e+00 - - 1.6296713054180145e-01 -6.3167887926101685e-01 - 3.7994962930679321e-01 -4.6771416068077087e-01 - <_> - 7.3244293212890625e+01 - - 1 2 2503 2.3500000000000000e+01 0 -1 2504 - 3.8500000000000000e+01 -2 -3 2505 427. - - -2.9058054089546204e-01 5.2562189102172852e-01 - 6.4414465427398682e-01 -8.3316773176193237e-01 - <_> - 7.3628913879394531e+01 - - 1 2 2506 4.5000000000000000e+00 0 -1 2507 - 8.5000000000000000e+00 -2 -3 2508 1.6925000000000000e+03 - - -2.7814975380897522e-01 4.8170346021652222e-01 - -6.5349429845809937e-01 5.4887872189283371e-02 - <_> - 7.3769676208496094e+01 - - 1 2 2509 15430. 0 -1 2510 1.5950000000000000e+02 -2 -3 2511 - 1.2615000000000000e+03 - - 4.3867623805999756e-01 -7.6247996091842651e-01 - -4.5795723795890808e-01 2.0065939426422119e-01 - <_> - 7.3981689453125000e+01 - - 1 2 2512 7.3500000000000000e+01 0 -1 2513 - 2.6500000000000000e+01 -2 -3 2514 4.1500000000000000e+01 - - -6.2215524911880493e-01 2.1201618015766144e-01 - -7.7795881032943726e-01 7.5186353921890259e-01 - <_> - 7.3843399047851562e+01 - - 1 2 2515 3.5000000000000000e+00 0 -1 2516 9. -2 -3 2517 - 1.7500000000000000e+01 - - -1. 6.5247339010238647e-01 -5.3328835964202881e-01 - 6.5298572182655334e-02 - <_> - 7.3923049926757812e+01 - - 1 2 2518 5.2950000000000000e+02 0 -1 2519 - 1.8500000000000000e+01 -2 -3 2520 6.4500000000000000e+01 - - 2.7425521612167358e-01 -7.6726049184799194e-01 - 2.3897975683212280e-01 -5.1008826494216919e-01 - <_> - 7.3826148986816406e+01 - - 1 2 2521 7.0500000000000000e+01 0 -1 2522 - 2.8500000000000000e+01 -2 -3 2523 3.5000000000000000e+00 - - 1.1504331231117249e-01 -6.4958560466766357e-01 - 6.4581304788589478e-01 -9.6902929246425629e-02 - <_> - 7.4119972229003906e+01 - - 1 2 2524 163. 0 -1 2525 2.0450000000000000e+02 -2 -3 2526 - 1486. - - 7.2227291762828827e-02 -4.8131951689720154e-01 - 6.7641806602478027e-01 -1. - <_> - 7.4284828186035156e+01 - - 1 2 2527 9.5000000000000000e+00 0 -1 2528 - 5.4500000000000000e+01 -2 -3 2529 3.5000000000000000e+00 - - 2.1673867106437683e-01 -9.8935294151306152e-01 - -8.0995440483093262e-01 1.6485558450222015e-01 - <_> - 7.3767173767089844e+01 - - 1 2 2530 3.3500000000000000e+01 0 -1 2531 - 2.0500000000000000e+01 -2 -3 2532 326. - - 8.5764698684215546e-02 -5.1765644550323486e-01 - -3.3359569311141968e-01 5.3560173511505127e-01 - <_> - 7.4017349243164062e+01 - - 1 2 2533 1144. 0 -1 2534 1038. -2 -3 2535 227. - - -8.5851883888244629e-01 8.0733579397201538e-01 - 2.5017657876014709e-01 -4.6748492121696472e-01 - <_> - 7.4431625366210938e+01 - - 1 2 2536 8.6500000000000000e+01 0 -1 2537 7. -2 -3 2538 - 4.7500000000000000e+01 - - 5.0281429290771484e-01 -6.8806976079940796e-01 - 4.1427880525588989e-01 -1.3120372593402863e-01 - <_> - 7.4155914306640625e+01 - - 1 2 2539 2.8500000000000000e+01 0 -1 2540 - 1.2500000000000000e+01 -2 -3 2541 352. - - 4.0651530027389526e-01 -2.7571403980255127e-01 - 6.4302980899810791e-01 -6.1632806062698364e-01 - <_> - 7.4377723693847656e+01 - - 1 2 2542 4.5500000000000000e+01 0 -1 2543 - 4.5000000000000000e+00 -2 -3 2544 1.5000000000000000e+00 - - 2.1374966204166412e-01 -8.0584329366683960e-01 - -6.8813514709472656e-01 2.2180862724781036e-01 - <_> - 7.4892883300781250e+01 - - 1 2 2545 7.2450000000000000e+02 0 -1 2546 - 8.2650000000000000e+02 -2 -3 2547 2.5000000000000000e+00 - - -1.0470861941576004e-01 5.1516324281692505e-01 - 1.2213422358036041e-01 -7.9457265138626099e-01 - <_> - 7.4932922363281250e+01 - - 1 2 2548 1.4925000000000000e+03 0 -1 2549 - 2.5625000000000000e+03 -2 -3 2550 4.0125000000000000e+03 - - -1.9472637213766575e-03 8.4926861524581909e-01 - 4.0032647550106049e-02 -7.9371875524520874e-01 - <_> - 7.5366584777832031e+01 - - 1 2 2551 5.0000000000000000e-01 0 -1 2552 - 3.5150000000000000e+02 -2 -3 2553 7.6500000000000000e+01 - - -6.7581409215927124e-01 4.3366453051567078e-01 - -6.9250804185867310e-01 1.4782861806452274e-02 - <_> - 7.5361564636230469e+01 - - 1 2 2554 1.4550000000000000e+02 0 -1 2555 - 1.3500000000000000e+01 -2 -3 2556 3.7950000000000000e+02 - - -9.2167288064956665e-01 2.2473543882369995e-01 - -6.1316716670989990e-01 5.3515338897705078e-01 - <_> - 7.5602142333984375e+01 - - 1 2 2557 1.7500000000000000e+01 0 -1 2558 - 3.0150000000000000e+02 -2 -3 2559 5.9500000000000000e+01 - - -2.0176244899630547e-02 7.6716834306716919e-01 - -6.2594699859619141e-01 2.9301643371582031e-02 - <_> - 7.5772842407226562e+01 - - 1 2 2560 7.0205000000000000e+03 0 -1 2561 - 7.5000000000000000e+00 -2 -3 2562 182. - - -7.9505175352096558e-01 1.7069797217845917e-01 - -8.2258385419845581e-01 7.3946392536163330e-01 - <_> - 7.5877098083496094e+01 - - 1 2 2563 4.5500000000000000e+01 0 -1 2564 - 6.8445000000000000e+03 -2 -3 2565 7.9500000000000000e+01 - - 3.9029154181480408e-01 -1.7648826539516449e-01 - -5.5182862281799316e-01 4.6366956830024719e-01 - <_> - 7.5638267517089844e+01 - - 1 2 2566 5.1850000000000000e+02 0 -1 2567 - 4.5000000000000000e+00 -2 -3 2568 5.0500000000000000e+01 - - 2.6328665018081665e-01 -3.8584133982658386e-01 - -6.9626593589782715e-01 5.0637173652648926e-01 - <_> - 7.5725959777832031e+01 - - 1 2 2569 1.9950000000000000e+02 0 -1 2570 - 1.8500000000000000e+01 -2 -3 2571 3.6500000000000000e+01 - - -4.1137224435806274e-01 2.0416383445262909e-01 - -9.0335428714752197e-01 8.9813232421875000e-01 - <_> - 7.5224937438964844e+01 - - 1 2 2572 7.5000000000000000e+00 0 -1 2573 - 2.5500000000000000e+01 -2 -3 2574 2.8450000000000000e+02 - - -7.3831039667129517e-01 3.6077511310577393e-01 - 3.1331515312194824e-01 -5.0101745128631592e-01 - <_> - 7.5449661254882812e+01 - - 1 2 2575 5.0000000000000000e-01 0 -1 2576 - 3.7665000000000000e+03 -2 -3 2577 8.2500000000000000e+01 - - 7.5498217344284058e-01 -1.5097464621067047e-01 - -3.8953059911727905e-01 2.2472013533115387e-01 - <_> - 7.5411880493164062e+01 - - 1 2 2578 4493. 0 -1 2579 2.5500000000000000e+01 -2 -3 2580 - 2.4500000000000000e+01 - - 2.1087837219238281e-01 -2.8623789548873901e-01 -1. - 9.5196199417114258e-01 - <_> - 7.5614067077636719e+01 - - 1 2 2581 1.0500000000000000e+01 0 -1 2582 17. -2 -3 2583 - 103. - - -7.5117886066436768e-01 9.0265202522277832e-01 - 2.0218542218208313e-01 -7.3936897516250610e-01 - <_> - 7.5999168395996094e+01 - - 1 2 2584 3.8500000000000000e+01 0 -1 2585 5086. -2 -3 2586 - 5.4500000000000000e+01 - - 5.9127920866012573e-01 -5.5186152458190918e-01 - 6.0463196039199829e-01 -9.3399420380592346e-02 - <_> - 7.6240371704101562e+01 - - 1 2 2587 2.7500000000000000e+01 0 -1 2588 - 3.5000000000000000e+00 -2 -3 2589 91. - - -6.9810129702091217e-02 -8.4188365936279297e-01 - 2.4120073020458221e-01 -6.5708816051483154e-01 - <_> - 7.6235023498535156e+01 - - 1 2 2590 1.9500000000000000e+01 0 -1 2591 - 1.6500000000000000e+01 -2 -3 2592 4.5000000000000000e+00 - - 3.0514994263648987e-01 -3.2603117823600769e-01 - -4.3177062273025513e-01 8.1372964382171631e-01 - <_> - 7.6073257446289062e+01 - - 1 2 2593 1.2135000000000000e+03 0 -1 2594 - 1.5725000000000000e+03 -2 -3 2595 5.0650000000000000e+02 - - 4.9728196859359741e-01 -4.1840994358062744e-01 - 6.4058172702789307e-01 -1.6176456212997437e-01 - <_> - 7.6243354797363281e+01 - - 1 2 2596 2.5000000000000000e+00 0 -1 2597 - 4.2500000000000000e+01 -2 -3 2598 1.0500000000000000e+01 - - 2.2679857909679413e-01 -6.9367134571075439e-01 - 5.3237688541412354e-01 -5.3971223533153534e-02 - <_> - 7.6326980590820312e+01 - - 1 2 2599 5.0500000000000000e+01 0 -1 2600 - 3.5000000000000000e+00 -2 -3 2601 6.9315000000000000e+03 - - 2.1303455531597137e-01 -6.3557696342468262e-01 - -1.9230200350284576e-01 4.7144305706024170e-01 - <_> - 7.6166137695312500e+01 - - 1 2 2602 6905. 0 -1 2603 5.9785000000000000e+03 -2 -3 2604 - 2.5000000000000000e+00 - - -4.6545404940843582e-02 6.8220782279968262e-01 - 1.9928511977195740e-01 -5.4866182804107666e-01 - <_> - 7.6497024536132812e+01 - - 1 2 2605 3.5000000000000000e+00 0 -1 2606 - 1.5000000000000000e+00 -2 -3 2607 1.5500000000000000e+01 - - 1. -9.3044626712799072e-01 3.3089175820350647e-01 - -2.4615941941738129e-01 - <_> - 7.6440460205078125e+01 - - 1 2 2608 9.8500000000000000e+01 0 -1 2609 - 2.1950000000000000e+02 -2 -3 2610 1.5000000000000000e+00 - - -5.9206131845712662e-02 -7.2229409217834473e-01 - -7.6280659437179565e-01 4.8397278785705566e-01 - <_> - 7.6623970031738281e+01 - - 1 2 2611 6.5500000000000000e+01 0 -1 2612 - 5.0000000000000000e-01 -2 -3 2613 1.0050000000000000e+02 - - 3.7457340955734253e-01 -9.0597450733184814e-01 - 1.8351505696773529e-01 -5.7986891269683838e-01 - <_> - 7.6471252441406250e+01 - - 1 2 2614 1.1615000000000000e+03 0 -1 2615 - 2.0525000000000000e+03 -2 -3 2616 7.8150000000000000e+02 - - -7.5747263431549072e-01 8.2365345954895020e-01 - 4.9958717823028564e-01 -1.5272425115108490e-01 - <_> - 7.6615051269531250e+01 - - 1 2 2617 1.2950000000000000e+02 0 -1 2618 - 4.0500000000000000e+01 -2 -3 2619 2.5000000000000000e+00 - - -8.1159070134162903e-02 5.3420531749725342e-01 - 3.5195964574813843e-01 -8.9636689424514771e-01 - <_> - 7.6877807617187500e+01 - - 1 2 2620 2.2050000000000000e+02 0 -1 2621 - 9.5000000000000000e+00 -2 -3 2622 1.5500000000000000e+01 - - 1.3451068103313446e-01 -4.0673348307609558e-01 - -8.1775653362274170e-01 7.4299770593643188e-01 - <_> - 7.6823638916015625e+01 - - 1 2 2623 2.4500000000000000e+01 0 -1 2624 - 5.9500000000000000e+01 -2 -3 2625 5.1515000000000000e+03 - - -7.1872109174728394e-01 7.7110481262207031e-01 - 3.9283660054206848e-01 -1.6952608525753021e-01 - <_> - 7.6773773193359375e+01 - - 1 2 2626 8.5000000000000000e+00 0 -1 2627 - 3.5000000000000000e+00 -2 -3 2628 1.8450000000000000e+02 - - -6.7384725809097290e-01 6.7822283506393433e-01 - -3.4205380082130432e-01 2.1638515591621399e-01 - <_> - 7.6982254028320312e+01 - - 1 2 2629 2.8500000000000000e+01 0 -1 2630 245. -2 -3 2631 - 61. - - 2.0848464965820312e-01 -6.2569552659988403e-01 - -8.1863158941268921e-01 8.4820270538330078e-01 - <_> - 7.6841300964355469e+01 - - 1 2 2632 2.1500000000000000e+01 0 -1 2633 - 3.5000000000000000e+00 -2 -3 2634 5.0000000000000000e-01 - - -8.5113090276718140e-01 7.8649562597274780e-01 - 4.1131305694580078e-01 -1.4095856249332428e-01 - <_> - 7.7013679504394531e+01 - - 1 2 2635 7.4950000000000000e+02 0 -1 2636 - 9.5000000000000000e+00 -2 -3 2637 7.9500000000000000e+01 - - 1.7237815260887146e-01 -4.3325147032737732e-01 - -1.0799569636583328e-01 6.9663918018341064e-01 - <_> - 7.7435089111328125e+01 - - 1 2 2638 1.7500000000000000e+01 0 -1 2639 174. -2 -3 2640 - 12650. - - 2.8112256526947021e-01 -5.1195782423019409e-01 - 4.2141020298004150e-01 -5.3448003530502319e-01 - <_> - 7.7268295288085938e+01 - - 1 2 2641 503. 0 -1 2642 1.3950000000000000e+02 -2 -3 2643 - 5.5000000000000000e+00 - - 5.8834999799728394e-01 -8.3229357004165649e-01 - 3.7692824006080627e-01 -1.6679267585277557e-01 - <_> - 7.7178421020507812e+01 - - 1 2 2644 1.3500000000000000e+01 0 -1 2645 - 2.5000000000000000e+00 -2 -3 2646 4.5000000000000000e+00 - - -6.5913814306259155e-01 5.2206271886825562e-01 - 4.7852468490600586e-01 -8.9874200522899628e-02 - <_> - 7.7000297546386719e+01 - - 1 2 2647 2.6500000000000000e+01 0 -1 2648 - 9.5000000000000000e+00 -2 -3 2649 4.5000000000000000e+00 - - -8.1166177988052368e-01 4.6178385615348816e-01 - 3.5849693417549133e-01 -1.7812377214431763e-01 - <_> - 7.7597846984863281e+01 - - 1 2 2650 5.0000000000000000e-01 0 -1 2651 - 5.5000000000000000e+00 -2 -3 2652 6.2500000000000000e+01 - - -7.4793010950088501e-01 4.5227390527725220e-01 - -2.8616324067115784e-01 7.2525143623352051e-01 - <_> - 7.7900642395019531e+01 - - 1 2 2653 3.9500000000000000e+01 0 -1 2654 26. -2 -3 2655 - 5218. - - 5.8358985185623169e-01 -4.8778259754180908e-01 - 3.0279731750488281e-01 -8.5277533531188965e-01 - <_> - 7.7819618225097656e+01 - - 1 2 2656 9.5000000000000000e+00 0 -1 2657 6301. -2 -3 2658 - 6.5000000000000000e+00 - - 9.1035622358322144e-01 -9.4324058294296265e-01 - 4.2837977409362793e-01 -1.6642063856124878e-01 - <_> - 7.7973083496093750e+01 - - 1 2 2659 1.0500000000000000e+01 0 -1 2660 - 2.5595000000000000e+03 -2 -3 2661 3.0950000000000000e+02 - - -4.6133957803249359e-02 5.8160132169723511e-01 - -5.6929016113281250e-01 4.2342483997344971e-01 - <_> - 7.7966255187988281e+01 - - 1 2 2662 6.5000000000000000e+00 0 -1 2663 - 2.9250000000000000e+02 -2 -3 2664 4.7550000000000000e+02 - - -1.8533475697040558e-02 8.2740765810012817e-01 - -7.0250022411346436e-01 -6.8264966830611229e-03 - <_> - 7.7632484436035156e+01 - - 1 2 2665 2.5750000000000000e+02 0 -1 2666 - 3.7515000000000000e+03 -2 -3 2667 3.5000000000000000e+00 - - -9.5757788419723511e-01 8.6831378936767578e-01 - 2.1071645617485046e-01 -3.3376976847648621e-01 - <_> - 7.7842147827148438e+01 - - 1 2 2668 1.6650000000000000e+02 0 -1 2669 196. -2 -3 2670 - 2.5150000000000000e+02 - - 1.5279424190521240e-01 -6.0143697261810303e-01 - 5.7514303922653198e-01 -2.5379255414009094e-01 - <_> - 7.7947998046875000e+01 - - 1 2 2671 1.9500000000000000e+01 0 -1 2672 - 1.8850000000000000e+02 -2 -3 2673 3.5000000000000000e+00 - - -9.4067907333374023e-01 1. 4.1685935854911804e-01 - -1.3797542452812195e-01 - <_> - 7.8399063110351562e+01 - - 1 2 2674 2.5500000000000000e+01 0 -1 2675 - 2.5000000000000000e+00 -2 -3 2676 7.0765000000000000e+03 - - 2.0323142409324646e-01 -4.4056713581085205e-01 - -7.2788339853286743e-01 4.5106858015060425e-01 - <_> - 7.8570816040039062e+01 - - 1 2 2677 42. 0 -1 2678 1.8550000000000000e+02 -2 -3 2679 - 2.6500000000000000e+01 - - 8.6221927404403687e-01 -8.9485520124435425e-01 - -6.2209093570709229e-01 1.7175154387950897e-01 - <_> - 7.8441680908203125e+01 - - 1 2 2680 6.1500000000000000e+01 0 -1 2681 - 5.0000000000000000e-01 -2 -3 2682 1.9650000000000000e+02 - - 4.3466070294380188e-01 -1.2913754582405090e-01 - 3.0203801393508911e-01 -7.8498184680938721e-01 - <_> - 7.8473335266113281e+01 - - 1 2 2683 2.4500000000000000e+01 0 -1 2684 - 1.3505000000000000e+03 -2 -3 2685 1.1150000000000000e+02 - - 1.2745502591133118e-01 -5.3675878047943115e-01 - 7.7312016487121582e-01 3.1652595847845078e-02 - <_> - 7.8451828002929688e+01 - - 1 2 2686 2.3145000000000000e+03 0 -1 2687 267. -2 -3 2688 - 13841. - - -6.8013966083526611e-01 6.3926976919174194e-01 - 5.1043254137039185e-01 -5.8976538479328156e-02 - <_> - 7.8873893737792969e+01 - - 1 2 2689 2.3050000000000000e+02 0 -1 2690 - 8.5500000000000000e+01 -2 -3 2691 1.8500000000000000e+01 - - 1.5697926282882690e-01 -4.9062812328338623e-01 - -2.8371900320053101e-01 5.3703123331069946e-01 - <_> - 7.8867477416992188e+01 - - 1 2 2692 1.7500000000000000e+01 0 -1 2693 - 2.3500000000000000e+01 -2 -3 2694 2.9850000000000000e+02 - - -8.6949959397315979e-02 4.9665886163711548e-01 - 4.2928251624107361e-01 -7.4992567300796509e-01 - <_> - 7.9131950378417969e+01 - - 1 2 2695 8.7500000000000000e+01 0 -1 2696 - 1.9850000000000000e+02 -2 -3 2697 84. - - 2.6447936892509460e-01 -4.0403616428375244e-01 - -7.4564838409423828e-01 7.5660055875778198e-01 - <_> - 7.8859619140625000e+01 - - 1 2 2698 1.8500000000000000e+01 0 -1 2699 193. -2 -3 2700 - 3.5000000000000000e+00 - - 6.6051805019378662e-01 -6.8317562341690063e-01 - 4.0860527753829956e-01 -1.5469188988208771e-01 - <_> - 7.9192871093750000e+01 - - 1 2 2701 1.0450000000000000e+02 0 -1 2702 - 2.1250000000000000e+02 -2 -3 2703 368. - - 2.8573963046073914e-01 -5.1572942733764648e-01 - 3.3325448632240295e-01 -7.9736381769180298e-01 - <_> - 7.9073951721191406e+01 - - 1 2 2704 5.0000000000000000e-01 0 -1 2705 - 1.3350000000000000e+02 -2 -3 2706 8.5000000000000000e+00 - - -7.5674408674240112e-01 4.2235055565834045e-01 - -6.1476016044616699e-01 3.5760600119829178e-02 - <_> - 7.9772453308105469e+01 - - 1 2 2707 1622. 0 -1 2708 5.6850000000000000e+02 -2 -3 2709 - 2.3500000000000000e+01 - - 3.7303709983825684e-01 -2.6838380098342896e-01 - 8.5874927043914795e-01 -6.8010163307189941e-01 - <_> - 7.9616546630859375e+01 - - 1 2 2710 5.1150000000000000e+02 0 -1 2711 - 2.0500000000000000e+01 -2 -3 2712 6.2385000000000000e+03 - - -2.7740508317947388e-01 6.4964014291763306e-01 - 6.8416231870651245e-01 -1.4068825542926788e-01 - <_> - 7.9560432434082031e+01 - - 1 2 2713 2.0500000000000000e+01 0 -1 2714 152. -2 -3 2715 - 118. - - 3.3152368664741516e-01 -7.2081387042999268e-01 - -7.7464383840560913e-01 -7.1336306631565094e-02 - <_> - 7.9178382873535156e+01 - - 1 2 2716 5.0000000000000000e-01 0 -1 2717 - 5.0000000000000000e-01 -2 -3 2718 2.8550000000000000e+02 - - -8.7511628866195679e-01 4.4366469979286194e-01 - 2.7641782164573669e-01 -3.8205233216285706e-01 - <_> - 7.9044113159179688e+01 - - 1 2 2719 3.6758500000000000e+04 0 -1 2720 119. -2 -3 2721 - 9.8250000000000000e+02 - - -8.9374190568923950e-01 1. 4.1436728835105896e-01 - -1.3426418602466583e-01 - <_> - 7.8986122131347656e+01 - - 1 2 2722 5.0000000000000000e-01 0 -1 2723 - 2.2500000000000000e+01 -2 -3 2724 4.5000000000000000e+00 - - -8.2067567110061646e-01 3.4801307320594788e-01 - -6.9476479291915894e-01 -5.7994190603494644e-02 - <_> - 7.9108413696289062e+01 - - 1 2 2725 4.2500000000000000e+01 0 -1 2726 - 1.8500000000000000e+01 -2 -3 2727 3.0500000000000000e+01 - - -4.1990894079208374e-01 5.0099647045135498e-01 - -5.2207231521606445e-01 1.2229448556900024e-01 - <_> - 7.9801383972167969e+01 - - 1 2 2728 8.2550000000000000e+02 0 -1 2729 - 5.0000000000000000e-01 -2 -3 2730 6.1765000000000000e+03 - - 3.1118586659431458e-01 -3.7582796812057495e-01 - 6.9296795129776001e-01 -9.2976748943328857e-02 - <_> - 8.0057861328125000e+01 - - 1 2 2731 7.5350000000000000e+02 0 -1 2732 - 5.8500000000000000e+01 -2 -3 2733 1.5000000000000000e+00 - - -2.4525830149650574e-01 2.5647372007369995e-01 - 8.4999513626098633e-01 -9.9117010831832886e-01 - <_> - 7.9780632019042969e+01 - - 1 2 2734 5.0000000000000000e-01 0 -1 2735 108. -2 -3 2736 - 7.1500000000000000e+01 - - 6.9359833002090454e-01 -6.9194906949996948e-01 - -2.7722206711769104e-01 4.1715595126152039e-01 - <_> - 8.0145835876464844e+01 - - 1 2 2737 2.0500000000000000e+01 0 -1 2738 - 4.5000000000000000e+00 -2 -3 2739 7.6500000000000000e+01 - - -9.7951823472976685e-01 3.6520305275917053e-01 - -3.8517192006111145e-01 4.9779340624809265e-01 - <_> - 7.9998329162597656e+01 - - 1 2 2740 1.1165000000000000e+03 0 -1 2741 - 4.5500000000000000e+01 -2 -3 2742 7.7500000000000000e+01 - - -9.2406588792800903e-01 1. 3.6648508906364441e-01 - -1.4751173555850983e-01 - <_> - 8.0417495727539062e+01 - - 1 2 2743 7905. 0 -1 2744 1.4950000000000000e+02 -2 -3 2745 - 98. - - 3.2732751220464706e-02 -7.6812428236007690e-01 - -7.5380378961563110e-01 4.7367131710052490e-01 - <_> - 7.9864738464355469e+01 - - 1 2 2746 6.5000000000000000e+00 0 -1 2747 - 1.2235000000000000e+03 -2 -3 2748 27. - - 5.5213552713394165e-01 -6.3920162618160248e-02 - -9.2558085918426514e-01 -1.1656486988067627e-01 - <_> - 7.9995124816894531e+01 - - 1 2 2749 2.1150000000000000e+02 0 -1 2750 - 1.6500000000000000e+01 -2 -3 2751 34. - - 2.0876583456993103e-01 -3.5845145583152771e-01 - -7.5983208417892456e-01 6.1741626262664795e-01 - <_> - 8.0029579162597656e+01 - - 1 2 2752 1.0500000000000000e+01 0 -1 2753 - 3.0150000000000000e+02 -2 -3 2754 3.5000000000000000e+00 - - 1.8833340704441071e-01 -4.5257857441902161e-01 - -8.7599718570709229e-01 3.9588588476181030e-01 - <_> - 8.0429824829101562e+01 - - 1 2 2755 1.7500000000000000e+01 0 -1 2756 - 5.5950000000000000e+02 -2 -3 2757 3.8500000000000000e+01 - - 9.0497744083404541e-01 -3.4649524092674255e-01 - 4.0024894475936890e-01 -4.3823891878128052e-01 - <_> - 8.0367797851562500e+01 - - 1 2 2758 5.0000000000000000e-01 0 -1 2759 - 1.0032500000000000e+04 -2 -3 2760 1.4500000000000000e+01 - - -7.4333506822586060e-01 4.4759553670883179e-01 - -6.5220975875854492e-01 5.3118625655770302e-03 - <_> - 8.0484443664550781e+01 - - 1 2 2761 7.5500000000000000e+01 0 -1 2762 - 8.4500000000000000e+01 -2 -3 2763 51. - - -4.7128376364707947e-01 3.0099546909332275e-01 - -5.9575259685516357e-01 4.5461925864219666e-01 - <_> - 8.0230026245117188e+01 - - 1 2 2764 6.6250000000000000e+02 0 -1 2765 4812. -2 -3 2766 - 9.5000000000000000e+00 - - -8.2453155517578125e-01 8.0837249755859375e-01 - 3.8529312610626221e-01 -2.5441926717758179e-01 - <_> - 8.0529327392578125e+01 - - 1 2 2767 5.9500000000000000e+01 0 -1 2768 - 1.6050000000000000e+02 -2 -3 2769 1.5000000000000000e+00 - - 3.9788705110549927e-01 -9.0285009145736694e-01 - 2.9930576682090759e-01 -2.6814186573028564e-01 - <_> - 8.0221504211425781e+01 - - 1 2 2770 3.0500000000000000e+01 0 -1 2771 - 4.5000000000000000e+00 -2 -3 2772 1.4475000000000000e+03 - - -9.4630533456802368e-01 8.2679504156112671e-01 - 2.5290638208389282e-01 -3.0782324075698853e-01 - <_> - 8.0379684448242188e+01 - - 1 2 2773 5.0645000000000000e+03 0 -1 2774 - 3.2500000000000000e+01 -2 -3 2775 3.5325000000000000e+03 - - -6.8182122707366943e-01 2.9198646545410156e-01 - 5.7170498371124268e-01 -9.3514062464237213e-02 - <_> - 8.0165153503417969e+01 - - 1 2 2776 1.5500000000000000e+01 0 -1 2777 - 1.2765000000000000e+03 -2 -3 2778 2.5000000000000000e+00 - - -1.2029168428853154e-03 6.6435748338699341e-01 - 5.4809719324111938e-01 -6.2805855274200439e-01 - <_> - 8.0611167907714844e+01 - - 1 2 2779 2.5000000000000000e+00 0 -1 2780 - 2.1500000000000000e+01 -2 -3 2781 1.2050000000000000e+02 - - -2.4764390289783478e-01 4.4601744413375854e-01 - 1.6960276663303375e-01 -5.8656966686248779e-01 - <_> - 8.0892166137695312e+01 - - 1 2 2782 5.4500000000000000e+01 0 -1 2783 - 9.7350000000000000e+02 -2 -3 2784 1.0500000000000000e+01 - - 2.7698031067848206e-01 -8.4596508741378784e-01 - 2.8099426627159119e-01 -3.0595216155052185e-01 - <_> - 8.1190002441406250e+01 - - 1 2 2785 3.5000000000000000e+00 0 -1 2786 - 9.4500000000000000e+01 -2 -3 2787 15. - - -2.3588234186172485e-01 2.9783576726913452e-01 1. - -9.3145948648452759e-01 - <_> - 8.0872680664062500e+01 - - 1 2 2788 5.0000000000000000e-01 0 -1 2789 34. -2 -3 2790 - 404. - - -9.7627913951873779e-01 4.5835772156715393e-01 - 3.3686440438032150e-02 -6.0926121473312378e-01 - <_> - 8.1137512207031250e+01 - - 1 2 2791 4.2500000000000000e+01 0 -1 2792 - 7.5000000000000000e+00 -2 -3 2793 1.0500000000000000e+01 - - 4.3087863922119141e-01 -5.4735422134399414e-01 - -7.4202680587768555e-01 2.6482933759689331e-01 - <_> - 8.1074195861816406e+01 - - 1 2 2794 6045. 0 -1 2795 3582. -2 -3 2796 - 1.4355000000000000e+03 - - 5.6150436401367188e-01 -6.3314586877822876e-02 - -9.8905169963836670e-01 1. - <_> - 8.1611145019531250e+01 - - 1 2 2797 1.7500000000000000e+01 0 -1 2798 - 6.3500000000000000e+01 -2 -3 2799 2.5000000000000000e+00 - - -9.5531716942787170e-02 5.3694951534271240e-01 - 4.7020646929740906e-01 -5.0288665294647217e-01 - <_> - 8.1308403015136719e+01 - - 1 2 2800 5.5000000000000000e+00 0 -1 2801 110. -2 -3 2802 - 2.5000000000000000e+00 - - -9.1038602590560913e-01 7.3705679178237915e-01 - 2.4539317190647125e-01 -3.0274006724357605e-01 - <_> - 8.0943153381347656e+01 - - 1 2 2803 4.9550000000000000e+02 0 -1 2804 - 1.0500000000000000e+01 -2 -3 2805 1.7500000000000000e+01 - - 1.8987993896007538e-01 -3.6525547504425049e-01 -1. - 8.1189829111099243e-01 - <_> - 8.1049530029296875e+01 - - 1 2 2806 1.7050000000000000e+02 0 -1 2807 - 5.5000000000000000e+00 -2 -3 2808 6.3500000000000000e+01 - - 5.0011897087097168e-01 -2.4462732672691345e-01 - 6.2346208095550537e-01 -5.9039413928985596e-01 - <_> - 8.1308738708496094e+01 - - 1 2 2809 3.8500000000000000e+01 0 -1 2810 - 8.6500000000000000e+01 -2 -3 2811 8.8500000000000000e+01 - - -3.8746827840805054e-01 2.5921225547790527e-01 - 6.4567667245864868e-01 -3.9673528075218201e-01 - <_> - 8.1096168518066406e+01 - - 1 2 2812 4.5000000000000000e+00 0 -1 2813 - 3.6500000000000000e+01 -2 -3 2814 1.2500000000000000e+01 - - 8.4782302379608154e-01 -9.7110116481781006e-01 - 3.3998885750770569e-01 -2.1257449686527252e-01 - <_> - 8.1410560607910156e+01 - - 1 2 2815 4.5000000000000000e+00 0 -1 2816 - 7.5500000000000000e+01 -2 -3 2817 1.4500000000000000e+01 - - -1. 1. 3.1439647078514099e-01 -1.7778587341308594e-01 - <_> - 8.1814201354980469e+01 - - 1 2 2818 3.9500000000000000e+01 0 -1 2819 - 6.4750000000000000e+02 -2 -3 2820 9.5000000000000000e+00 - - 2.4708394706249237e-01 -9.2105174064636230e-01 - 4.0363448858261108e-01 -1.2905533611774445e-01 - <_> - 8.1573196411132812e+01 - - 1 2 2821 3.0500000000000000e+01 0 -1 2822 - 5.0000000000000000e-01 -2 -3 2823 5.0500000000000000e+01 - - 4.9701321125030518e-01 -5.6365805864334106e-01 - 2.8191345930099487e-01 -5.3536522388458252e-01 - <_> - 8.1956001281738281e+01 - - 1 2 2824 4.6085000000000000e+03 0 -1 2825 - 1.3250000000000000e+02 -2 -3 2826 1.9750000000000000e+02 - - -7.4937385320663452e-01 9.3439608812332153e-01 - 3.8280078768730164e-01 -2.6699417829513550e-01 - <_> - 8.1513214111328125e+01 - - 1 2 2827 3.0500000000000000e+01 0 -1 2828 - 5.5000000000000000e+00 -2 -3 2829 9.9235000000000000e+03 - - 2.1246223151683807e-01 -4.4278442859649658e-01 - -8.1646180152893066e-01 5.1293396949768066e-01 - <_> - 8.1699577331542969e+01 - - 1 2 2830 1.1650000000000000e+02 0 -1 2831 - 8.2500000000000000e+01 -2 -3 2832 3.5000000000000000e+00 - - 1.8636158108711243e-01 -4.9596223235130310e-01 - -8.9908498525619507e-01 1. - <_> - 8.2445182800292969e+01 - - 1 2 2833 1903. 0 -1 2834 2.5000000000000000e+00 -2 -3 2835 - 6.0445000000000000e+03 - - 1.8896391987800598e-01 -3.2746449112892151e-01 - 7.4561136960983276e-01 -7.9816836118698120e-01 - <_> - 8.2831352233886719e+01 - - 1 2 2836 2.7500000000000000e+01 0 -1 2837 469. -2 -3 2838 - 1.2175000000000000e+03 - - 7.7044230699539185e-01 -9.5174908638000488e-01 - -1.4690612256526947e-01 3.8616815209388733e-01 - <_> - 8.2686500549316406e+01 - - 1 2 2839 2895. 0 -1 2840 4.3500000000000000e+01 -2 -3 2841 - 34. - - -1.4485244452953339e-01 4.4888463616371155e-01 - 3.6486008763313293e-01 -8.1205248832702637e-01 - <_> - 8.2188568115234375e+01 - - 1 2 2842 3.5000000000000000e+00 0 -1 2843 2070. -2 -3 2844 - 4.7500000000000000e+01 - - -6.9201928377151489e-01 3.1747218966484070e-01 - -4.9793621897697449e-01 5.4417175054550171e-01 - <_> - 8.2745765686035156e+01 - - 1 2 2845 2.5000000000000000e+00 0 -1 2846 - 7.5000000000000000e+00 -2 -3 2847 1.8500000000000000e+01 - - -8.4509557485580444e-01 5.5719637870788574e-01 - 1.7902635037899017e-01 -4.2469331622123718e-01 - <_> - 8.2670654296875000e+01 - - 1 2 2848 1.3500000000000000e+01 0 -1 2849 - 9.4650000000000000e+02 -2 -3 2850 7.8500000000000000e+01 - - -3.3974867314100266e-02 -8.2525712251663208e-01 - -4.6273630857467651e-01 6.6797983646392822e-01 - <_> - 8.2877090454101562e+01 - - 1 2 2851 1.4500000000000000e+01 0 -1 2852 - 1.1915000000000000e+03 -2 -3 2853 3.9500000000000000e+01 - - 6.6358172893524170e-01 -7.2160053253173828e-01 - -6.6055583953857422e-01 2.0643877983093262e-01 - <_> - 8.2504707336425781e+01 - - 1 2 2854 4.5000000000000000e+00 0 -1 2855 - 1.6250000000000000e+02 -2 -3 2856 6.5000000000000000e+00 - - 1.9229575991630554e-02 6.7639851570129395e-01 - 7.7679026126861572e-01 -3.7238210439682007e-01 - <_> - 8.1991981506347656e+01 - - 1 2 2857 1.8500000000000000e+01 0 -1 2858 - 1.5500000000000000e+01 -2 -3 2859 7.5000000000000000e+00 - - -6.6943126916885376e-01 2.8580504655838013e-01 - 5.7573765516281128e-01 -5.1273131370544434e-01 - <_> - 8.2700317382812500e+01 - - 1 2 2860 2.5335000000000000e+03 0 -1 2861 - 5.5000000000000000e+00 -2 -3 2862 9017. - - 4.5291054248809814e-01 -3.1770652532577515e-01 - 7.0833772420883179e-01 -5.8668452501296997e-01 - <_> - 8.3036483764648438e+01 - - 1 2 2863 1.2665000000000000e+03 0 -1 2864 - 2.7950000000000000e+02 -2 -3 2865 1.6050000000000000e+02 - - 5.6190413236618042e-01 -9.4979606568813324e-02 - -5.6120347976684570e-01 6.9735217094421387e-01 - <_> - 8.3268234252929688e+01 - - 1 2 2866 3.1500000000000000e+01 0 -1 2867 - 2.2850000000000000e+02 -2 -3 2868 338. - - 2.9099774360656738e-01 -8.5712206363677979e-01 - -7.3761904239654541e-01 2.3174422979354858e-01 - <_> - 8.3142601013183594e+01 - - 1 2 2869 1.3500000000000000e+01 0 -1 2870 - 7.5500000000000000e+01 -2 -3 2871 7.5000000000000000e+00 - - -6.1628973484039307e-01 8.9499497413635254e-01 - 5.3249603509902954e-01 -1.2562887370586395e-01 - <_> - 8.3346061706542969e+01 - - 1 2 2872 5.8500000000000000e+01 0 -1 2873 - 1.4500000000000000e+01 -2 -3 2874 2.3655000000000000e+03 - - -5.8924037218093872e-01 2.0346269011497498e-01 - 6.8413233757019043e-01 -7.3724877834320068e-01 - <_> - 8.3734870910644531e+01 - - 1 2 2875 1.5500000000000000e+01 0 -1 2876 - 2.4500000000000000e+01 -2 -3 2877 842. - - -9.6514111757278442e-01 4.5274001359939575e-01 - -4.4388589262962341e-01 1.6307270526885986e-01 - <_> - 8.3378517150878906e+01 - - 1 2 2878 2.3415000000000000e+03 0 -1 2879 - 1.1135000000000000e+03 -2 -3 2880 1.4450000000000000e+02 - - -6.0065728425979614e-01 4.9152576923370361e-01 - 3.9019897580146790e-01 -3.5635352134704590e-01 - <_> - 8.3842796325683594e+01 - - 1 2 2881 7.7500000000000000e+01 0 -1 2882 - 1.5000000000000000e+00 -2 -3 2883 34. - - 3.0433416366577148e-01 -3.4621056914329529e-01 - -2.3730756342411041e-01 7.2603577375411987e-01 - <_> - 8.4082458496093750e+01 - - 1 2 2884 5.0000000000000000e-01 0 -1 2885 - 1.5000000000000000e+00 -2 -3 2886 2.4500000000000000e+01 - - -8.4981471300125122e-01 4.6478056907653809e-01 - -4.4265326857566833e-01 2.3966242372989655e-01 - <_> - 8.4403526306152344e+01 - - 1 2 2887 1.9735000000000000e+03 0 -1 2888 61716. -2 -3 2889 - 7.1250000000000000e+02 - - 3.2107087969779968e-01 -7.3176121711730957e-01 - -4.2035382986068726e-01 6.5387272834777832e-01 - <_> - 8.3859382629394531e+01 - - 1 2 2890 5.1500000000000000e+01 0 -1 2891 - 5.4500000000000000e+01 -2 -3 2892 9.4500000000000000e+01 - - -8.5267591476440430e-01 3.3089217543601990e-01 - -5.4414278268814087e-01 1.4185604453086853e-01 - <_> - 8.4165733337402344e+01 - - 1 2 2893 2.5000000000000000e+00 0 -1 2894 170. -2 -3 2895 - 5.0000000000000000e-01 - - -7.4921059608459473e-01 1. 3.0634912848472595e-01 - -2.8711661696434021e-01 - <_> - 8.4014938354492188e+01 - - 1 2 2896 5.0000000000000000e-01 0 -1 2897 - 4.5000000000000000e+00 -2 -3 2898 1.5000000000000000e+00 - - -4.4929865002632141e-01 7.1007603406906128e-01 - 5.1218295097351074e-01 -2.8127226233482361e-01 - <_> - 8.3658638000488281e+01 - - 1 2 2899 6.2500000000000000e+01 0 -1 2900 - 7.7500000000000000e+01 -2 -3 2901 5.4650000000000000e+02 - - 1.7899210751056671e-01 -3.5629883408546448e-01 - 6.6323882341384888e-01 -6.2932920455932617e-01 - <_> - 8.4031822204589844e+01 - - 1 2 2902 4.3500000000000000e+01 0 -1 2903 - 2.5000000000000000e+00 -2 -3 2904 1.4450000000000000e+02 - - 2.9303130507469177e-01 -7.2133332490921021e-01 - 3.7318074703216553e-01 -2.9929837584495544e-01 - <_> - 8.4148094177246094e+01 - - 1 2 2905 4.4500000000000000e+01 0 -1 2906 - 5.5000000000000000e+00 -2 -3 2907 1218. - - 1.1627596616744995e-01 -6.5344148874282837e-01 - -6.1276328563690186e-01 3.0713844299316406e-01 - <_> - 8.3736122131347656e+01 - - 1 2 2908 2.2500000000000000e+01 0 -1 2909 - 7.5000000000000000e+00 -2 -3 2910 4945. - - 2.0239315927028656e-01 -4.1197755932807922e-01 - -6.5554910898208618e-01 5.7477289438247681e-01 - <_> - 8.3684288024902344e+01 - - 1 2 2911 6.1500000000000000e+01 0 -1 2912 - 3.5000000000000000e+00 -2 -3 2913 3.6500000000000000e+01 - - 2.9327356815338135e-01 -5.5817484855651855e-01 - 7.1029824018478394e-01 -5.1831677556037903e-02 - <_> - 8.3512733459472656e+01 - - 1 2 2914 5.4500000000000000e+01 0 -1 2915 - 1.5000000000000000e+00 -2 -3 2916 6.5000000000000000e+00 - - -9.4946056604385376e-01 4.1890572756528854e-02 - 3.9327812194824219e-01 -1.7155566811561584e-01 - <_> - 8.4089424133300781e+01 - - 1 2 2917 9.3500000000000000e+01 0 -1 2918 2760. -2 -3 2919 - 1.1250000000000000e+02 - - -2.4497070908546448e-01 9.6521437168121338e-01 - 5.7669252157211304e-01 -7.6096898317337036e-01 - <_> - 8.4561004638671875e+01 - - 1 2 2920 5.0000000000000000e-01 0 -1 2921 - 6.5000000000000000e+00 -2 -3 2922 6.9750000000000000e+02 - - -5.3141713142395020e-01 4.7158041596412659e-01 - 2.2022259235382080e-01 -4.3360495567321777e-01 - <_> - 8.4944801330566406e+01 - - 1 2 2923 1.4050000000000000e+02 0 -1 2924 - 5.0000000000000000e-01 -2 -3 2925 7.4850000000000000e+02 - - 1.5521393716335297e-01 -5.1790440082550049e-01 - 3.8379338383674622e-01 -4.4605687260627747e-01 - <_> - 8.5207305908203125e+01 - - 1 2 2926 1.5500000000000000e+01 0 -1 2927 - 3.3500000000000000e+01 -2 -3 2928 255. - - -2.9250434041023254e-01 6.5829980373382568e-01 - -6.5028876066207886e-01 5.1617544889450073e-01 - <_> - 8.5524932861328125e+01 - - 1 2 2929 2.4500000000000000e+01 0 -1 2930 - 2.8500000000000000e+01 -2 -3 2931 4.2500000000000000e+01 - - -1. 3.1762468814849854e-01 3.0006918311119080e-01 - -5.6320971250534058e-01 - <_> - 8.5334136962890625e+01 - - 1 2 2932 3.5000000000000000e+00 0 -1 2933 - 1.5500000000000000e+01 -2 -3 2934 2457. - - -4.4446155428886414e-01 4.3577027320861816e-01 - 4.5368546247482300e-01 -4.4899699091911316e-01 - <_> - 8.5264480590820312e+01 - - 1 2 2935 5.0000000000000000e-01 0 -1 2936 115. -2 -3 2937 - 2.5000000000000000e+00 - - -9.1964131593704224e-01 4.9966832995414734e-01 - 5.8283418416976929e-01 -6.9656021893024445e-02 - <_> - 8.5903366088867188e+01 - - 1 2 2938 7.1500000000000000e+01 0 -1 2939 - 5.4500000000000000e+01 -2 -3 2940 143. - - 1.6550585627555847e-01 -4.3812391161918640e-01 - 6.3888710737228394e-01 -5.4803293943405151e-01 - <_> - 8.6248062133789062e+01 - - 1 2 2941 2.5000000000000000e+00 0 -1 2942 - 9.0500000000000000e+01 -2 -3 2943 1.0500000000000000e+01 - - 1.0908889025449753e-01 -8.8574463129043579e-01 - 3.4469136595726013e-01 -2.0632795989513397e-01 - <_> - 8.6533218383789062e+01 - - 1 2 2944 2.1500000000000000e+01 0 -1 2945 - 4.5000000000000000e+00 -2 -3 2946 4.4500000000000000e+01 - - -4.4494426250457764e-01 8.8365721702575684e-01 - 2.8515672683715820e-01 -8.1787091493606567e-01 - <_> - 8.7068389892578125e+01 - - 1 2 2947 8.2650000000000000e+02 0 -1 2948 - 4.5000000000000000e+00 -2 -3 2949 1.9675500000000000e+04 - - 3.3902516961097717e-01 -3.3688139915466309e-01 - 5.3517556190490723e-01 -6.7757689952850342e-01 - <_> - 8.6810844421386719e+01 - - 1 2 2950 2.5500000000000000e+01 0 -1 2951 - 2.5000000000000000e+00 -2 -3 2952 1.3035000000000000e+03 - - 9.1093343496322632e-01 -8.2202631235122681e-01 - 3.2981109619140625e-01 -2.5754809379577637e-01 - <_> - 8.6275955200195312e+01 - - 1 2 2953 2.2369500000000000e+04 0 -1 2954 - 1.5000000000000000e+00 -2 -3 2955 9.5285000000000000e+03 - - 1.4417627826333046e-02 -6.9124591350555420e-01 - 3.7811917066574097e-01 -5.3488659858703613e-01 - <_> - 8.6942420959472656e+01 - - 1 2 2956 1.0645000000000000e+03 0 -1 2957 - 3.5000000000000000e+00 -2 -3 2958 7.5000000000000000e+00 - - 1.4049446582794189e-01 -3.5957664251327515e-01 - 9.1249042749404907e-01 -1.7921762168407440e-01 - <_> - 8.7227539062500000e+01 - - 1 2 2959 9.5000000000000000e+00 0 -1 2960 199. -2 -3 2961 - 6.6465000000000000e+03 - - 8.8686686754226685e-01 -6.7846179008483887e-01 - -3.4822642803192139e-01 2.8511366248130798e-01 - <_> - 8.7103866577148438e+01 - - 1 2 2962 6.5000000000000000e+00 0 -1 2963 - 1.5000000000000000e+00 -2 -3 2964 4.3450000000000000e+02 - - 1.8375012278556824e-01 -5.8300310373306274e-01 - -7.8263854980468750e-01 5.0758910179138184e-01 - <_> - 8.7249404907226562e+01 - - 1 2 2965 1.8500000000000000e+01 0 -1 2966 - 8.5000000000000000e+00 -2 -3 2967 9.5000000000000000e+00 - - -9.1379207372665405e-01 1. -6.0623198747634888e-01 - 1.4554040133953094e-01 - <_> - 8.6942718505859375e+01 - - 1 2 2968 3.5000000000000000e+00 0 -1 2969 - 2.3355000000000000e+03 -2 -3 2970 2.5850000000000000e+02 - - 6.3676542043685913e-01 -4.5731505751609802e-01 - 4.5318025350570679e-01 -3.0669227242469788e-01 - <_> - 8.6748542785644531e+01 - - 1 2 2971 2.1500000000000000e+01 0 -1 2972 - 1.6500000000000000e+01 -2 -3 2973 4.3450000000000000e+02 - - -1.9417463243007660e-01 4.5977392792701721e-01 - 7.4417084455490112e-01 -9.2871183156967163e-01 - <_> - 8.6213851928710938e+01 - - 1 2 2974 4.6500000000000000e+01 0 -1 2975 6986. -2 -3 2976 - 1.0655000000000000e+03 - - -3.5974133014678955e-01 3.9904057979583740e-01 - -5.3468620777130127e-01 4.4506999850273132e-01 - <_> - 8.6651367187500000e+01 - - 1 2 2977 7.7450000000000000e+02 0 -1 2978 39564. -2 -3 2979 - 3.5000000000000000e+00 - - 4.3751135468482971e-01 -8.3221775293350220e-01 - 9.5911510288715363e-02 -5.8185952901840210e-01 - <_> - 8.7053947448730469e+01 - - 1 2 2980 1.3150000000000000e+02 0 -1 2981 - 1.8650000000000000e+02 -2 -3 2982 4.2550000000000000e+02 - - 4.1247457265853882e-01 -4.4629332423210144e-01 - 4.0258339047431946e-01 -6.6914594173431396e-01 - <_> - 8.7472679138183594e+01 - - 1 2 2983 6.9750000000000000e+02 0 -1 2984 - 1.0500000000000000e+01 -2 -3 2985 1.8735000000000000e+03 - - -7.6271665096282959e-01 4.1873174905776978e-01 - -6.8841624259948730e-01 -2.3577280342578888e-02 - <_> - 8.7495330810546875e+01 - - 1 2 2986 5.0000000000000000e-01 0 -1 2987 - 2.9500000000000000e+01 -2 -3 2988 1.4750000000000000e+02 - - -7.6370656490325928e-01 6.4419740438461304e-01 - -2.4485288560390472e-01 6.6281813383102417e-01 - <_> - 8.6983520507812500e+01 - - 1 2 2989 1.2135000000000000e+03 0 -1 2990 - 8.0250000000000000e+02 -2 -3 2991 1.0500000000000000e+01 - - -4.0576335787773132e-01 5.1596242189407349e-01 - 4.4931706786155701e-01 -5.1181161403656006e-01 - <_> - 8.7748497009277344e+01 - - 1 2 2992 1.4555000000000000e+03 0 -1 2993 - 2.3355000000000000e+03 -2 -3 2994 4.5000000000000000e+00 - - -8.6321972310543060e-02 7.6497226953506470e-01 - 3.1687757372856140e-01 -4.1308388113975525e-01 - <_> - 8.7668098449707031e+01 - - 1 2 2995 7.3500000000000000e+01 0 -1 2996 - 7.5000000000000000e+00 -2 -3 2997 1.8415000000000000e+03 - - -8.0395199358463287e-02 4.9477747082710266e-01 - 5.0139939785003662e-01 -9.4019854068756104e-01 - <_> - 8.7603317260742188e+01 - - 1 2 2998 1.0350000000000000e+02 0 -1 2999 - 5.0000000000000000e-01 -2 -3 3000 6.6500000000000000e+01 - - 5.5032008886337280e-01 -6.4781084656715393e-02 - -6.9391334056854248e-01 2.6454237103462219e-01 - <_> - 8.7899932861328125e+01 - - 1 2 3001 4.1850000000000000e+02 0 -1 3002 - 2.5000000000000000e+00 -2 -3 3003 4.4350000000000000e+02 - - 8.3208960294723511e-01 -9.7579640150070190e-01 - 4.5810779929161072e-01 -9.8539277911186218e-02 - <_> - 8.7558662414550781e+01 - - 1 2 3004 1.4500000000000000e+01 0 -1 3005 - 4.5000000000000000e+00 -2 -3 3006 4093. - - 1.3818612694740295e-01 -5.0276112556457520e-01 - 3.9290004968643188e-01 -9.0650981664657593e-01 - <_> - 8.7562660217285156e+01 - - 1 2 3007 3.0500000000000000e+01 0 -1 3008 15. -2 -3 3009 - 6.8500000000000000e+01 - - 5.8721613883972168e-01 -9.5952403545379639e-01 - 1.5953540802001953e-01 -7.3017132282257080e-01 - <_> - 8.7263595581054688e+01 - - 1 2 3010 4.6550000000000000e+02 0 -1 3011 - 8.5000000000000000e+00 -2 -3 3012 3.0500000000000000e+01 - - 2.5965842604637146e-01 -4.5460721850395203e-01 - -6.6170775890350342e-01 4.6810474991798401e-01 - <_> - 8.7385635375976562e+01 - - 1 2 3013 3.7500000000000000e+01 0 -1 3014 - 6.7500000000000000e+01 -2 -3 3015 9.0500000000000000e+01 - - -4.7775322198867798e-01 3.0159825086593628e-01 - -7.1135115623474121e-01 1.2204105406999588e-01 - <_> - 8.7448921203613281e+01 - - 1 2 3016 3.4500000000000000e+01 0 -1 3017 - 1.3500000000000000e+01 -2 -3 3018 2.9500000000000000e+01 - - -4.3366974592208862e-01 4.3953391909599304e-01 - -6.8973690271377563e-01 6.3285768032073975e-02 - <_> - 8.7470863342285156e+01 - - 1 2 3019 9.5000000000000000e+00 0 -1 3020 - 3.5750000000000000e+02 -2 -3 3021 2.1500000000000000e+01 - - 5.9902238845825195e-01 -4.9095529317855835e-01 - -6.0496187210083008e-01 2.1941423416137695e-02 - <_> - 8.8030609130859375e+01 - - 1 2 3022 7.5000000000000000e+00 0 -1 3023 - 1.4250000000000000e+02 -2 -3 3024 4.8500000000000000e+01 - - -1.1742883920669556e-01 5.5974942445755005e-01 - -6.6814047098159790e-01 1.0357101261615753e-01 - <_> - 8.8298561096191406e+01 - - 1 2 3025 5.0000000000000000e-01 0 -1 3026 - 2.5000000000000000e+00 -2 -3 3027 6.5000000000000000e+00 - - -7.9518532752990723e-01 3.9527121186256409e-01 - 2.6795190572738647e-01 -4.4711253046989441e-01 - <_> - 8.8873558044433594e+01 - - 1 2 3028 5.0650000000000000e+02 0 -1 3029 - 2.7150000000000000e+02 -2 -3 3030 5.1550000000000000e+02 - - 4.9458679556846619e-01 -3.8078719377517700e-01 - 5.7499361038208008e-01 -2.4514666199684143e-01 - <_> - 8.8112663269042969e+01 - - 1 2 3031 1.5500000000000000e+01 0 -1 3032 - 3.1500000000000000e+01 -2 -3 3033 511. - - -2.6782530546188354e-01 3.8774058222770691e-01 - 3.4897887706756592e-01 -7.6089125871658325e-01 - <_> - 8.8039482116699219e+01 - - 1 2 3034 230. 0 -1 3035 6.6500000000000000e+01 -2 -3 3036 - 4.0500000000000000e+01 - - -7.3185198009014130e-02 5.7667195796966553e-01 - 3.2658204436302185e-01 -8.0915856361389160e-01 - <_> - 8.8365722656250000e+01 - - 1 2 3037 5.0000000000000000e-01 0 -1 3038 - 2.9500000000000000e+01 -2 -3 3039 4.5000000000000000e+00 - - 3.2624712586402893e-01 -5.5316114425659180e-01 - -2.4152111727744341e-03 -6.9509941339492798e-01 - <_> - 8.8882514953613281e+01 - - 1 2 3040 3.0500000000000000e+01 0 -1 3041 - 1.1150000000000000e+02 -2 -3 3042 5.0000000000000000e-01 - - 5.2429902553558350e-01 -8.9993971586227417e-01 - 5.1678961515426636e-01 -8.6023628711700439e-02 - <_> - 8.8496650695800781e+01 - - 1 2 3043 2.8500000000000000e+01 0 -1 3044 - 1.1385000000000000e+03 -2 -3 3045 1.0500000000000000e+01 - - 5.3370710462331772e-02 -7.7716881036758423e-01 - 4.8879763484001160e-01 -1.4188981056213379e-01 - <_> - 8.8710388183593750e+01 - - 1 2 3046 3286. 0 -1 3047 1.8500000000000000e+01 -2 -3 3048 - 14770. - - 5.7567560672760010e-01 -7.7623206377029419e-01 - -8.3764082193374634e-01 2.1373493969440460e-01 - <_> - 8.8465957641601562e+01 - - 1 2 3049 4.5000000000000000e+00 0 -1 3050 - 6.8500000000000000e+01 -2 -3 3051 7.2550000000000000e+02 - - -9.8398631811141968e-01 1. 1.4620523154735565e-01 - -4.8840534687042236e-01 - <_> - 8.8379966735839844e+01 - - 1 2 3052 4.6350000000000000e+02 0 -1 3053 - 1.0005000000000000e+03 -2 -3 3054 12544. - - 1.2718398869037628e-01 -4.7662603855133057e-01 - 6.7666745185852051e-01 -9.6875000000000000e-01 - <_> - 8.8453712463378906e+01 - - 1 2 3055 6.2500000000000000e+01 0 -1 3056 - 2.5000000000000000e+00 -2 -3 3057 2.7450000000000000e+02 - - 7.3742903769016266e-02 -4.8088160157203674e-01 - 7.9391783475875854e-01 -9.5094847679138184e-01 - <_> - 8.8360649108886719e+01 - - 1 2 3058 5.1085000000000000e+03 0 -1 3059 - 1.5000000000000000e+00 -2 -3 3060 59. - - 4.7250562906265259e-01 -9.3059159815311432e-02 - -9.8921388387680054e-01 1. - <_> - 8.8759475708007812e+01 - - 1 2 3061 4.3500000000000000e+01 0 -1 3062 - 2.5000000000000000e+00 -2 -3 3063 9.5000000000000000e+00 - - 1.8726401031017303e-01 -9.5795679092407227e-01 - 3.9882484078407288e-01 -1.5403895080089569e-01 - <_> - 8.8777908325195312e+01 - - 1 2 3064 1.8150000000000000e+02 0 -1 3065 - 1.1500000000000000e+01 -2 -3 3066 4.0500000000000000e+01 - - 2.5865679979324341e-01 -5.4600328207015991e-01 - 6.9991689920425415e-01 1.8433349207043648e-02 - <_> - 8.9012145996093750e+01 - - 1 2 3067 2.6500000000000000e+01 0 -1 3068 - 2.0500000000000000e+01 -2 -3 3069 1.1550000000000000e+02 - - 7.8764355182647705e-01 -8.8436836004257202e-01 - 2.3423436284065247e-01 -3.8715034723281860e-01 - - <_> - 8 - - 12 12 8 3 - <_> - 7 - - 16 11 1 1 - <_> - 1 - - 14 19 7 32 - <_> - 5 - - 9 8 13 9 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 7 55 24 8 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 11 40 8 12 - <_> - 4 - - 11 32 9 31 - <_> - 2 - - 9 41 12 14 - <_> - 7 - - 14 33 5 5 - <_> - 7 - - 8 60 22 3 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 12 8 6 10 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 18 19 1 13 - <_> - 9 - - 14 3 16 1 - <_> - 1 - - 13 21 6 2 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 15 0 1 49 - <_> - 5 - - 1 1 18 48 - <_> - 2 - - 14 58 10 2 - <_> - 2 - - 7 51 11 5 - <_> - 1 - - 11 53 10 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 10 35 10 21 - <_> - 8 - - 11 54 12 2 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 11 50 5 6 - <_> - 3 - - 7 9 6 36 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 9 - - 29 48 1 10 - <_> - 2 - - 6 62 18 1 - <_> - 2 - - 9 49 11 7 - <_> - 5 - - 21 20 1 32 - <_> - 1 - - 11 19 1 4 - <_> - 1 - - 14 10 12 9 - <_> - 1 - - 12 24 6 2 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 4 - - 8 41 17 1 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 15 6 2 23 - <_> - 3 - - 16 3 13 48 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 11 19 11 1 - <_> - 7 - - 0 49 9 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 3 1 9 18 - <_> - 5 - - 8 56 19 4 - <_> - 1 - - 14 54 6 8 - <_> - 2 - - 19 52 10 6 - <_> - 4 - - 8 59 20 3 - <_> - 0 - - 18 51 12 9 - <_> - 4 - - 13 8 10 5 - <_> - 5 - - 26 35 3 2 - <_> - 0 - - 11 36 11 12 - <_> - 2 - - 19 18 4 13 - <_> - 4 - - 15 40 14 10 - <_> - 0 - - 10 57 7 3 - <_> - 2 - - 7 30 6 5 - <_> - 7 - - 2 61 22 2 - <_> - 0 - - 26 42 3 15 - <_> - 7 - - 12 5 7 12 - <_> - 5 - - 19 17 10 6 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 10 18 16 5 - <_> - 3 - - 10 8 1 50 - <_> - 9 - - 18 40 1 7 - <_> - 2 - - 14 25 3 9 - <_> - 8 - - 14 9 6 8 - <_> - 5 - - 22 39 2 10 - <_> - 8 - - 16 1 1 6 - <_> - 0 - - 17 19 2 2 - <_> - 2 - - 17 9 3 11 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 10 53 12 7 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 11 49 11 2 - <_> - 0 - - 29 43 2 17 - <_> - 0 - - 11 51 16 4 - <_> - 7 - - 25 51 2 6 - <_> - 2 - - 18 56 9 3 - <_> - 2 - - 8 49 16 5 - <_> - 4 - - 0 42 26 1 - <_> - 4 - - 2 16 11 24 - <_> - 1 - - 3 11 17 6 - <_> - 3 - - 11 6 8 10 - <_> - 0 - - 6 44 2 18 - <_> - 0 - - 1 7 12 21 - <_> - 9 - - 14 20 3 17 - <_> - 9 - - 14 0 10 7 - <_> - 1 - - 2 1 27 2 - <_> - 9 - - 14 18 3 9 - <_> - 4 - - 13 42 8 1 - <_> - 7 - - 28 3 2 22 - <_> - 3 - - 9 52 6 2 - <_> - 3 - - 6 11 9 11 - <_> - 1 - - 15 36 2 5 - <_> - 0 - - 18 21 2 5 - <_> - 1 - - 15 52 2 5 - <_> - 7 - - 15 62 3 1 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 20 12 4 28 - <_> - 2 - - 21 7 3 27 - <_> - 5 - - 25 10 6 50 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 4 26 10 17 - <_> - 2 - - 10 18 7 4 - <_> - 7 - - 11 9 17 11 - <_> - 7 - - 24 46 1 15 - <_> - 0 - - 13 35 3 16 - <_> - 4 - - 0 61 26 2 - <_> - 0 - - 10 58 16 4 - <_> - 3 - - 0 56 27 2 - <_> - 0 - - 11 42 11 2 - <_> - 8 - - 12 12 8 3 - <_> - 4 - - 18 8 3 19 - <_> - 8 - - 29 36 1 20 - <_> - 8 - - 14 9 6 8 - <_> - 9 - - 14 60 3 1 - <_> - 1 - - 18 17 2 9 - <_> - 9 - - 10 37 8 9 - <_> - 1 - - 8 56 21 1 - <_> - 3 - - 1 56 22 4 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 2 60 29 3 - <_> - 9 - - 11 57 11 3 - <_> - 1 - - 15 33 5 21 - <_> - 9 - - 13 16 6 7 - <_> - 1 - - 13 5 6 12 - <_> - 2 - - 13 26 8 4 - <_> - 4 - - 29 4 2 13 - <_> - 5 - - 17 9 5 10 - <_> - 0 - - 0 39 6 19 - <_> - 5 - - 14 24 3 4 - <_> - 2 - - 7 39 14 1 - <_> - 5 - - 27 14 2 35 - <_> - 8 - - 3 62 28 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 4 0 26 8 - <_> - 5 - - 9 8 13 9 - <_> - 2 - - 4 45 5 2 - <_> - 2 - - 9 28 5 14 - <_> - 7 - - 8 60 16 2 - <_> - 7 - - 17 30 3 4 - <_> - 7 - - 21 32 5 5 - <_> - 2 - - 16 17 8 9 - <_> - 2 - - 17 34 2 2 - <_> - 5 - - 19 16 10 22 - <_> - 4 - - 24 54 6 9 - <_> - 1 - - 10 53 20 9 - <_> - 5 - - 0 34 7 26 - <_> - 4 - - 0 58 22 5 - <_> - 1 - - 7 17 16 22 - <_> - 7 - - 0 51 9 4 - <_> - 3 - - 21 50 2 4 - <_> - 3 - - 10 21 1 13 - <_> - 7 - - 15 7 6 6 - <_> - 3 - - 13 26 4 9 - <_> - 0 - - 7 45 20 4 - <_> - 1 - - 22 5 1 54 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 8 57 15 2 - <_> - 4 - - 16 40 11 14 - <_> - 9 - - 15 18 6 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 9 1 7 - <_> - 1 - - 3 55 22 2 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 6 0 11 27 - <_> - 4 - - 12 4 11 22 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 10 62 14 1 - <_> - 0 - - 14 19 3 6 - <_> - 2 - - 11 4 8 13 - <_> - 2 - - 17 37 2 17 - <_> - 4 - - 12 47 11 1 - <_> - 2 - - 6 55 15 7 - <_> - 9 - - 28 22 1 2 - <_> - 2 - - 9 32 2 23 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 4 38 3 21 - <_> - 7 - - 14 12 1 28 - <_> - 9 - - 13 36 5 11 - <_> - 2 - - 5 11 17 8 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 16 45 5 1 - <_> - 1 - - 12 46 8 2 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 16 16 14 9 - <_> - 1 - - 18 20 3 7 - <_> - 7 - - 6 53 18 2 - <_> - 1 - - 7 19 18 3 - <_> - 1 - - 16 10 6 6 - <_> - 5 - - 10 29 1 33 - <_> - 5 - - 9 56 22 5 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 10 2 9 - <_> - 8 - - 8 7 1 8 - <_> - 9 - - 12 21 2 27 - <_> - 9 - - 9 2 19 11 - <_> - 1 - - 7 38 11 1 - <_> - 3 - - 4 14 6 18 - <_> - 7 - - 24 7 1 8 - <_> - 1 - - 20 46 11 8 - <_> - 2 - - 5 39 14 16 - <_> - 7 - - 9 3 7 9 - <_> - 0 - - 5 47 1 7 - <_> - 1 - - 13 21 6 2 - <_> - 5 - - 16 10 6 3 - <_> - 2 - - 11 12 12 2 - <_> - 5 - - 6 0 24 1 - <_> - 5 - - 2 18 22 3 - <_> - 9 - - 17 16 3 18 - <_> - 0 - - 14 32 2 3 - <_> - 2 - - 10 34 5 3 - <_> - 2 - - 14 25 3 9 - <_> - 1 - - 6 54 8 4 - <_> - 5 - - 4 31 15 5 - <_> - 0 - - 29 44 1 17 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 21 13 3 42 - <_> - 2 - - 1 24 30 23 - <_> - 4 - - 6 39 14 11 - <_> - 2 - - 11 59 20 3 - <_> - 9 - - 30 47 1 2 - <_> - 3 - - 5 48 13 6 - <_> - 1 - - 5 41 21 7 - <_> - 1 - - 26 8 2 22 - <_> - 5 - - 9 61 18 2 - <_> - 2 - - 9 22 16 24 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 23 9 7 8 - <_> - 9 - - 12 10 6 43 - <_> - 9 - - 11 14 11 9 - <_> - 9 - - 6 9 20 2 - <_> - 3 - - 24 44 1 17 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 17 3 4 15 - <_> - 9 - - 11 1 18 2 - <_> - 8 - - 16 2 2 4 - <_> - 7 - - 5 10 10 3 - <_> - 0 - - 0 48 3 7 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 16 11 1 1 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 19 20 3 15 - <_> - 5 - - 15 20 15 4 - <_> - 5 - - 19 19 4 43 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 6 44 20 9 - <_> - 7 - - 5 49 4 6 - <_> - 8 - - 17 41 13 22 - <_> - 5 - - 12 56 14 7 - <_> - 4 - - 14 8 5 1 - <_> - 7 - - 12 0 9 1 - <_> - 2 - - 19 61 1 1 - <_> - 0 - - 12 51 10 3 - <_> - 0 - - 4 4 23 4 - <_> - 5 - - 13 30 4 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 15 8 16 6 - <_> - 0 - - 2 53 9 7 - <_> - 7 - - 4 62 23 1 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 11 26 13 22 - <_> - 4 - - 8 14 3 16 - <_> - 0 - - 21 28 1 3 - <_> - 1 - - 17 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 30 22 1 2 - <_> - 8 - - 3 13 3 3 - <_> - 9 - - 12 29 7 19 - <_> - 8 - - 12 11 8 1 - <_> - 3 - - 2 56 24 1 - <_> - 7 - - 19 60 11 1 - <_> - 0 - - 26 42 3 15 - <_> - 5 - - 21 18 2 12 - <_> - 4 - - 4 43 26 1 - <_> - 0 - - 12 50 14 5 - <_> - 8 - - 13 17 5 3 - <_> - 0 - - 17 18 3 1 - <_> - 5 - - 19 8 4 10 - <_> - 4 - - 0 61 26 2 - <_> - 1 - - 14 53 3 9 - <_> - 7 - - 8 36 1 1 - <_> - 4 - - 26 30 3 30 - <_> - 2 - - 9 37 14 13 - <_> - 3 - - 0 20 2 43 - <_> - 4 - - 10 8 14 4 - <_> - 2 - - 19 61 7 2 - <_> - 2 - - 9 47 8 9 - <_> - 3 - - 10 4 1 53 - <_> - 5 - - 13 3 2 38 - <_> - 0 - - 11 7 4 10 - <_> - 9 - - 30 17 1 2 - <_> - 2 - - 17 13 6 14 - <_> - 7 - - 14 25 4 5 - <_> - 1 - - 11 22 11 2 - <_> - 7 - - 23 53 4 1 - <_> - 8 - - 2 4 19 15 - <_> - 5 - - 2 59 24 1 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 8 21 5 11 - <_> - 9 - - 12 28 8 8 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 16 45 3 6 - <_> - 8 - - 17 50 6 8 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 11 2 17 33 - <_> - 2 - - 30 27 1 34 - <_> - 5 - - 12 29 1 16 - <_> - 5 - - 19 42 5 5 - <_> - 7 - - 0 51 4 4 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 6 58 23 1 - <_> - 3 - - 7 8 15 28 - <_> - 1 - - 15 8 4 8 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 7 27 8 3 - <_> - 2 - - 11 39 19 6 - <_> - 5 - - 26 30 2 12 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 29 2 1 7 - <_> - 2 - - 19 39 2 3 - <_> - 0 - - 15 40 15 2 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 12 57 6 3 - <_> - 1 - - 11 39 7 24 - <_> - 1 - - 9 56 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 27 61 2 1 - <_> - 7 - - 2 55 28 3 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 8 45 5 12 - <_> - 7 - - 16 34 2 4 - <_> - 2 - - 2 50 5 1 - <_> - 5 - - 13 47 8 8 - <_> - 5 - - 21 56 5 5 - <_> - 5 - - 19 56 3 7 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 10 20 11 6 - <_> - 9 - - 23 23 1 9 - <_> - 5 - - 17 25 10 18 - <_> - 7 - - 7 23 3 8 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 10 8 1 50 - <_> - 8 - - 1 32 8 15 - <_> - 7 - - 14 59 4 1 - <_> - 3 - - 20 38 2 11 - <_> - 7 - - 0 4 22 6 - <_> - 0 - - 6 20 7 11 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 0 42 11 13 - <_> - 4 - - 10 9 3 28 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 18 2 4 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 14 8 6 11 - <_> - 5 - - 13 40 2 8 - <_> - 1 - - 13 21 6 2 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 17 39 3 7 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 12 58 15 2 - <_> - 2 - - 9 43 7 12 - <_> - 7 - - 17 25 1 5 - <_> - 4 - - 12 41 9 2 - <_> - 2 - - 17 3 4 15 - <_> - 7 - - 28 28 3 3 - <_> - 0 - - 25 44 5 3 - <_> - 0 - - 17 35 8 8 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 29 1 1 5 - <_> - 1 - - 13 55 3 2 - <_> - 5 - - 10 5 18 31 - <_> - 4 - - 3 18 3 44 - <_> - 2 - - 3 56 15 7 - <_> - 7 - - 30 44 1 13 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 11 0 8 24 - <_> - 5 - - 13 15 2 10 - <_> - 1 - - 10 15 13 1 - <_> - 4 - - 11 12 7 4 - <_> - 7 - - 10 10 20 2 - <_> - 7 - - 22 51 7 4 - <_> - 5 - - 14 17 6 8 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 18 21 6 5 - <_> - 7 - - 6 57 4 1 - <_> - 2 - - 17 17 4 10 - <_> - 2 - - 13 18 1 1 - <_> - 0 - - 10 54 5 4 - <_> - 7 - - 0 29 17 13 - <_> - 2 - - 8 46 12 8 - <_> - 2 - - 7 10 3 26 - <_> - 1 - - 30 38 1 18 - <_> - 2 - - 16 60 14 1 - <_> - 1 - - 2 43 1 8 - <_> - 2 - - 9 36 21 9 - <_> - 7 - - 4 47 18 2 - <_> - 7 - - 6 46 1 5 - <_> - 2 - - 5 37 2 11 - <_> - 1 - - 11 46 1 14 - <_> - 1 - - 26 8 5 20 - <_> - 2 - - 16 14 2 8 - <_> - 2 - - 11 12 12 2 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 6 54 15 4 - <_> - 2 - - 8 52 16 4 - <_> - 7 - - 18 40 4 7 - <_> - 3 - - 0 56 27 2 - <_> - 1 - - 5 31 15 18 - <_> - 9 - - 16 18 2 1 - <_> - 7 - - 4 59 24 1 - <_> - 5 - - 1 57 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 0 4 6 27 - <_> - 5 - - 29 19 2 43 - <_> - 2 - - 15 22 5 6 - <_> - 5 - - 18 48 11 7 - <_> - 0 - - 27 48 4 13 - <_> - 3 - - 6 4 20 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 41 23 14 - <_> - 7 - - 27 4 4 14 - <_> - 1 - - 10 52 10 5 - <_> - 9 - - 29 61 2 1 - <_> - 7 - - 14 25 4 3 - <_> - 1 - - 1 5 15 13 - <_> - 2 - - 19 35 2 3 - <_> - 4 - - 5 18 23 5 - <_> - 9 - - 15 18 6 4 - <_> - 9 - - 23 14 8 17 - <_> - 8 - - 12 8 6 28 - <_> - 8 - - 25 13 3 6 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 20 3 6 52 - <_> - 3 - - 5 49 21 4 - <_> - 1 - - 12 40 6 6 - <_> - 2 - - 11 54 20 9 - <_> - 0 - - 13 36 9 8 - <_> - 1 - - 10 62 13 1 - <_> - 0 - - 12 24 15 39 - <_> - 5 - - 14 9 9 4 - <_> - 0 - - 1 21 2 33 - <_> - 2 - - 28 7 3 23 - <_> - 1 - - 14 53 10 4 - <_> - 3 - - 29 42 2 9 - <_> - 4 - - 13 35 9 27 - <_> - 5 - - 18 19 6 5 - <_> - 0 - - 17 22 12 12 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 42 19 11 - <_> - 5 - - 19 56 6 4 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 5 6 12 - <_> - 5 - - 3 22 18 15 - <_> - 1 - - 15 21 6 7 - <_> - 2 - - 3 16 19 29 - <_> - 5 - - 13 15 5 40 - <_> - 3 - - 16 32 3 10 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 10 29 5 20 - <_> - 8 - - 18 34 3 11 - <_> - 9 - - 26 47 2 4 - <_> - 1 - - 8 18 1 4 - <_> - 3 - - 21 43 4 11 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 9 37 13 16 - <_> - 3 - - 5 56 17 2 - <_> - 3 - - 11 53 9 1 - <_> - 4 - - 10 39 2 12 - <_> - 1 - - 8 52 2 4 - <_> - 3 - - 0 20 2 43 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 22 6 3 - <_> - 5 - - 15 0 15 30 - <_> - 0 - - 21 30 7 8 - <_> - 5 - - 19 19 4 32 - <_> - 3 - - 21 45 1 10 - <_> - 0 - - 15 51 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 1 44 17 16 - <_> - 2 - - 18 13 2 12 - <_> - 0 - - 17 18 3 1 - <_> - 1 - - 11 55 7 5 - <_> - 2 - - 13 58 2 5 - <_> - 3 - - 10 15 1 42 - <_> - 5 - - 0 25 5 15 - <_> - 9 - - 16 17 2 6 - <_> - 2 - - 8 54 23 5 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 7 48 24 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 2 44 14 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 23 43 3 7 - <_> - 8 - - 13 12 1 9 - <_> - 3 - - 2 46 4 5 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 11 5 17 4 - <_> - 7 - - 22 57 3 1 - <_> - 4 - - 10 20 21 4 - <_> - 5 - - 12 57 18 3 - <_> - 9 - - 10 4 6 11 - <_> - 0 - - 13 45 3 4 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 8 45 18 1 - <_> - 4 - - 12 42 8 8 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 14 16 5 33 - <_> - 8 - - 15 10 13 52 - <_> - 3 - - 15 9 15 1 - <_> - 8 - - 27 61 1 1 - <_> - 9 - - 27 0 1 12 - <_> - 2 - - 14 16 4 5 - <_> - 9 - - 14 10 2 16 - <_> - 3 - - 8 11 6 20 - <_> - 7 - - 24 19 1 9 - <_> - 0 - - 14 43 6 2 - <_> - 1 - - 12 15 1 26 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 2 60 27 1 - <_> - 1 - - 2 14 21 2 - <_> - 7 - - 7 23 13 5 - <_> - 4 - - 24 56 2 7 - <_> - 8 - - 11 13 5 1 - <_> - 0 - - 10 42 12 3 - <_> - 8 - - 19 0 1 23 - <_> - 5 - - 9 61 20 2 - <_> - 0 - - 19 50 8 10 - <_> - 1 - - 16 55 9 2 - <_> - 0 - - 13 33 5 4 - <_> - 3 - - 18 27 8 9 - <_> - 3 - - 28 32 3 21 - <_> - 4 - - 15 42 4 4 - <_> - 2 - - 16 2 8 16 - <_> - 2 - - 7 2 1 47 - <_> - 7 - - 21 61 10 2 - <_> - 2 - - 29 31 2 32 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 30 15 1 43 - <_> - 9 - - 24 34 1 4 - <_> - 2 - - 7 51 11 5 - <_> - 0 - - 22 42 1 11 - <_> - 5 - - 3 62 20 1 - <_> - 1 - - 7 20 11 3 - <_> - 3 - - 2 21 9 2 - <_> - 2 - - 25 34 1 18 - <_> - 5 - - 19 14 5 33 - <_> - 7 - - 28 13 1 1 - <_> - 5 - - 1 0 15 44 - <_> - 9 - - 12 32 1 10 - <_> - 7 - - 1 40 14 8 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 11 8 13 1 - <_> - 0 - - 27 47 1 15 - <_> - 4 - - 8 16 14 7 - <_> - 1 - - 8 55 8 3 - <_> - 0 - - 0 55 28 4 - <_> - 4 - - 7 56 17 4 - <_> - 3 - - 5 13 20 8 - <_> - 1 - - 3 19 4 19 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 16 18 7 3 - <_> - 4 - - 1 17 26 3 - <_> - 1 - - 11 53 10 4 - <_> - 7 - - 29 2 2 16 - <_> - 2 - - 6 55 21 5 - <_> - 1 - - 29 25 2 3 - <_> - 2 - - 10 50 10 4 - <_> - 4 - - 13 38 2 4 - <_> - 7 - - 24 46 1 9 - <_> - 9 - - 12 17 4 3 - <_> - 9 - - 4 9 6 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 9 7 5 1 - <_> - 7 - - 27 41 2 10 - <_> - 8 - - 11 16 3 4 - <_> - 5 - - 14 29 5 7 - <_> - 3 - - 9 24 2 33 - <_> - 5 - - 23 27 4 10 - <_> - 8 - - 3 10 28 46 - <_> - 0 - - 23 46 2 5 - <_> - 5 - - 15 8 9 19 - <_> - 4 - - 10 13 14 37 - <_> - 0 - - 4 57 23 3 - <_> - 1 - - 4 42 26 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 5 61 24 1 - <_> - 4 - - 14 49 7 12 - <_> - 0 - - 11 49 11 2 - <_> - 7 - - 14 10 3 2 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 11 41 4 9 - <_> - 5 - - 21 2 1 52 - <_> - 1 - - 14 32 9 6 - <_> - 2 - - 10 55 15 5 - <_> - 1 - - 11 28 20 29 - <_> - 1 - - 7 22 20 24 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 15 16 2 10 - <_> - 9 - - 13 8 5 13 - <_> - 3 - - 1 49 18 7 - <_> - 1 - - 11 21 14 3 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 16 39 4 1 - <_> - 9 - - 16 11 3 3 - <_> - 9 - - 16 13 3 15 - <_> - 5 - - 10 0 13 3 - <_> - 3 - - 12 52 19 7 - <_> - 8 - - 8 45 12 3 - <_> - 0 - - 12 10 11 6 - <_> - 3 - - 19 42 9 13 - <_> - 5 - - 15 57 10 3 - <_> - 0 - - 17 51 7 5 - <_> - 1 - - 12 24 6 2 - <_> - 7 - - 11 61 3 1 - <_> - 1 - - 8 18 15 8 - <_> - 4 - - 15 13 6 5 - <_> - 3 - - 17 16 6 25 - <_> - 4 - - 15 42 4 5 - <_> - 4 - - 16 25 12 21 - <_> - 4 - - 11 37 3 11 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 27 49 4 6 - <_> - 8 - - 30 12 1 20 - <_> - 2 - - 0 21 1 6 - <_> - 3 - - 7 15 10 11 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 21 2 3 7 - <_> - 1 - - 15 8 4 8 - <_> - 9 - - 28 2 3 1 - <_> - 7 - - 15 10 13 4 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 8 34 11 3 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 14 30 9 27 - <_> - 1 - - 16 7 4 26 - <_> - 3 - - 28 45 3 16 - <_> - 0 - - 14 49 16 5 - <_> - 0 - - 11 15 1 41 - <_> - 0 - - 6 50 6 10 - <_> - 1 - - 11 22 11 2 - <_> - 3 - - 30 60 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 16 5 2 - <_> - 9 - - 7 35 11 6 - <_> - 2 - - 11 39 19 6 - <_> - 3 - - 18 40 5 17 - <_> - 5 - - 12 52 7 10 - <_> - 3 - - 3 47 24 8 - <_> - 3 - - 0 22 5 24 - <_> - 3 - - 22 43 5 10 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 8 1 - <_> - 4 - - 12 5 9 15 - <_> - 4 - - 18 14 3 38 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 6 4 23 2 - <_> - 9 - - 9 19 12 2 - <_> - 9 - - 5 10 24 2 - <_> - 8 - - 15 17 2 35 - <_> - 0 - - 3 43 1 9 - <_> - 7 - - 7 50 3 3 - <_> - 5 - - 15 29 5 3 - <_> - 0 - - 20 25 7 10 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 0 23 28 17 - <_> - 7 - - 6 60 21 3 - <_> - 1 - - 10 30 15 2 - <_> - 5 - - 21 57 3 6 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 5 54 18 3 - <_> - 2 - - 7 51 11 5 - <_> - 8 - - 1 0 19 6 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 13 44 1 4 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 18 41 2 10 - <_> - 8 - - 2 61 3 1 - <_> - 9 - - 18 2 1 50 - <_> - 9 - - 0 60 16 3 - <_> - 2 - - 19 25 10 2 - <_> - 7 - - 3 23 5 13 - <_> - 2 - - 14 23 3 6 - <_> - 9 - - 28 46 2 2 - <_> - 9 - - 8 50 5 6 - <_> - 2 - - 10 2 10 28 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 11 41 10 2 - <_> - 5 - - 20 0 2 32 - <_> - 5 - - 4 55 17 8 - <_> - 0 - - 21 0 8 3 - <_> - 3 - - 8 22 5 2 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 14 0 12 1 - <_> - 7 - - 20 58 4 1 - <_> - 2 - - 26 47 1 4 - <_> - 1 - - 2 55 27 1 - <_> - 2 - - 19 35 2 3 - <_> - 1 - - 9 13 7 27 - <_> - 3 - - 12 5 1 19 - <_> - 1 - - 12 15 1 26 - <_> - 2 - - 11 16 2 2 - <_> - 7 - - 13 12 10 1 - <_> - 0 - - 21 20 1 12 - <_> - 8 - - 0 62 15 1 - <_> - 8 - - 12 11 8 1 - <_> - 7 - - 11 60 6 1 - <_> - 8 - - 20 4 1 4 - <_> - 3 - - 11 62 9 1 - <_> - 0 - - 16 18 2 1 - <_> - 7 - - 2 62 13 1 - <_> - 9 - - 27 61 4 1 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 11 40 8 11 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 0 13 15 37 - <_> - 0 - - 8 50 2 5 - <_> - 3 - - 9 42 10 10 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 8 18 1 4 - <_> - 2 - - 21 56 3 6 - <_> - 1 - - 5 56 21 1 - <_> - 5 - - 1 25 5 24 - <_> - 5 - - 10 56 3 1 - <_> - 4 - - 0 17 15 7 - <_> - 7 - - 26 33 1 6 - <_> - 4 - - 10 18 16 5 - <_> - 2 - - 20 15 4 11 - <_> - 0 - - 19 17 3 7 - <_> - 5 - - 18 1 10 22 - <_> - 5 - - 18 16 8 12 - <_> - 5 - - 22 19 1 13 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 15 36 4 1 - <_> - 1 - - 8 51 17 4 - <_> - 7 - - 0 52 28 10 - <_> - 2 - - 14 16 8 3 - <_> - 7 - - 14 25 4 3 - <_> - 7 - - 27 12 1 8 - <_> - 0 - - 11 36 14 16 - <_> - 7 - - 30 21 1 11 - <_> - 0 - - 25 39 2 8 - <_> - 9 - - 0 1 24 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 9 5 2 13 - <_> - 2 - - 6 52 15 3 - <_> - 9 - - 24 44 2 1 - <_> - 4 - - 2 61 4 2 - <_> - 5 - - 19 54 3 3 - <_> - 5 - - 19 48 6 8 - <_> - 9 - - 15 37 5 11 - <_> - 0 - - 4 46 2 7 - <_> - 3 - - 4 23 7 6 - <_> - 4 - - 13 8 8 9 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 8 1 17 - <_> - 8 - - 14 17 4 2 - <_> - 1 - - 14 46 4 4 - <_> - 5 - - 7 60 20 1 - <_> - 2 - - 7 39 16 11 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 17 9 5 12 - <_> - 1 - - 9 56 8 1 - <_> - 5 - - 30 46 1 14 - <_> - 0 - - 10 37 20 2 - <_> - 0 - - 12 26 3 14 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 14 53 3 9 - <_> - 9 - - 16 15 1 22 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 11 19 11 1 - <_> - 5 - - 17 9 5 10 - <_> - 8 - - 9 3 8 2 - <_> - 8 - - 12 11 8 1 - <_> - 5 - - 26 42 3 19 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 14 41 12 19 - <_> - 4 - - 13 40 4 6 - <_> - 7 - - 6 55 7 2 - <_> - 8 - - 18 54 12 3 - <_> - 2 - - 1 38 25 11 - <_> - 7 - - 4 0 21 42 - <_> - 0 - - 12 0 8 11 - <_> - 4 - - 14 23 4 11 - <_> - 0 - - 18 21 2 5 - <_> - 5 - - 19 21 10 1 - <_> - 9 - - 12 0 2 12 - <_> - 7 - - 12 60 7 2 - <_> - 2 - - 26 45 3 1 - <_> - 3 - - 4 30 21 5 - <_> - 2 - - 6 57 23 2 - <_> - 5 - - 15 50 6 5 - <_> - 1 - - 23 44 2 7 - <_> - 1 - - 21 27 5 30 - <_> - 1 - - 15 55 2 1 - <_> - 9 - - 0 16 24 45 - <_> - 2 - - 11 11 12 6 - <_> - 7 - - 4 30 2 10 - <_> - 2 - - 23 8 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 1 - - 6 0 14 28 - <_> - 3 - - 6 38 3 12 - <_> - 0 - - 0 48 3 7 - <_> - 9 - - 12 14 3 12 - <_> - 0 - - 13 8 7 8 - <_> - 3 - - 11 41 14 17 - <_> - 0 - - 12 50 16 6 - <_> - 3 - - 15 47 7 11 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 11 46 10 4 - <_> - 0 - - 13 36 9 8 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 15 18 3 6 - <_> - 3 - - 14 34 5 5 - <_> - 3 - - 6 23 7 8 - <_> - 3 - - 11 26 6 3 - <_> - 0 - - 12 19 9 11 - <_> - 8 - - 19 41 2 1 - <_> - 8 - - 18 11 9 24 - <_> - 3 - - 15 28 2 3 - <_> - 3 - - 7 50 11 6 - <_> - 4 - - 20 6 5 10 - <_> - 4 - - 14 1 7 21 - <_> - 1 - - 16 54 2 4 - <_> - 9 - - 28 48 1 7 - <_> - 4 - - 14 56 7 4 - <_> - 5 - - 19 9 3 41 - <_> - 9 - - 0 52 14 9 - <_> - 2 - - 18 54 10 7 - <_> - 9 - - 11 8 8 49 - <_> - 8 - - 11 13 5 1 - <_> - 8 - - 29 12 2 9 - <_> - 7 - - 28 4 3 24 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 14 43 6 2 - <_> - 0 - - 11 7 4 10 - <_> - 0 - - 12 1 2 5 - <_> - 1 - - 12 24 6 2 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 2 - - 19 30 1 8 - <_> - 7 - - 20 61 1 1 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 16 51 6 9 - <_> - 2 - - 7 51 13 5 - <_> - 4 - - 16 19 4 2 - <_> - 1 - - 15 33 5 21 - <_> - 1 - - 20 19 3 2 - <_> - 5 - - 8 31 4 27 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 26 8 5 20 - <_> - 0 - - 6 3 21 5 - <_> - 0 - - 9 33 15 6 - <_> - 1 - - 14 56 14 1 - <_> - 2 - - 7 59 2 2 - <_> - 4 - - 2 54 12 8 - <_> - 0 - - 13 25 5 7 - <_> - 3 - - 7 20 9 7 - <_> - 2 - - 10 42 13 9 - <_> - 1 - - 29 36 1 3 - <_> - 3 - - 22 2 4 31 - <_> - 0 - - 19 32 4 15 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 0 47 1 7 - <_> - 8 - - 16 12 1 5 - <_> - 2 - - 8 56 9 7 - <_> - 2 - - 0 38 24 20 - <_> - 9 - - 17 31 1 6 - <_> - 9 - - 14 59 1 2 - <_> - 4 - - 17 38 1 4 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 3 10 26 10 - <_> - 0 - - 7 12 14 35 - <_> - 3 - - 20 42 2 6 - <_> - 0 - - 10 43 6 5 - <_> - 1 - - 10 55 14 1 - <_> - 8 - - 9 48 13 13 - <_> - 8 - - 17 11 1 2 - <_> - 8 - - 9 57 12 5 - <_> - 5 - - 6 1 21 2 - <_> - 5 - - 17 9 5 10 - <_> - 9 - - 9 43 12 1 - <_> - 3 - - 24 46 7 7 - <_> - 4 - - 29 29 2 8 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 10 53 15 5 - <_> - 5 - - 4 62 16 1 - <_> - 4 - - 25 52 4 8 - <_> - 0 - - 11 52 17 4 - <_> - 4 - - 9 0 1 43 - <_> - 5 - - 11 34 2 3 - <_> - 2 - - 9 41 11 1 - <_> - 4 - - 9 61 13 2 - <_> - 3 - - 28 25 1 34 - <_> - 2 - - 19 26 7 1 - <_> - 3 - - 8 18 8 1 - <_> - 5 - - 2 35 19 26 - <_> - 3 - - 15 25 3 7 - <_> - 5 - - 25 23 3 9 - <_> - 0 - - 14 41 1 18 - <_> - 2 - - 12 58 15 2 - <_> - 7 - - 26 60 3 3 - <_> - 0 - - 24 31 3 15 - <_> - 7 - - 5 7 6 10 - <_> - 1 - - 12 8 8 4 - <_> - 5 - - 20 42 4 11 - <_> - 1 - - 16 5 8 2 - <_> - 7 - - 15 6 2 12 - <_> - 9 - - 12 1 19 1 - <_> - 9 - - 10 16 4 32 - <_> - 3 - - 11 41 14 17 - <_> - 8 - - 9 12 10 27 - <_> - 3 - - 8 9 9 4 - <_> - 7 - - 7 2 3 8 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 13 5 6 12 - <_> - 0 - - 28 19 2 43 - <_> - 4 - - 3 23 1 16 - <_> - 5 - - 18 29 5 25 - <_> - 2 - - 25 55 5 8 - <_> - 4 - - 11 34 11 14 - <_> - 7 - - 6 59 9 4 - <_> - 5 - - 25 45 3 15 - <_> - 8 - - 14 9 6 8 - <_> - 8 - - 29 28 1 18 - <_> - 5 - - 21 1 5 13 - <_> - 8 - - 19 41 2 1 - <_> - 1 - - 13 54 6 3 - <_> - 9 - - 29 31 1 4 - <_> - 0 - - 5 61 9 2 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 19 32 1 1 - <_> - 8 - - 5 5 6 15 - <_> - 0 - - 13 49 9 4 - <_> - 4 - - 13 46 4 7 - <_> - 4 - - 14 13 9 7 - <_> - 0 - - 17 18 3 1 - <_> - 3 - - 8 36 16 11 - <_> - 9 - - 14 24 6 10 - <_> - 3 - - 0 54 31 4 - <_> - 1 - - 17 43 4 9 - <_> - 5 - - 20 16 3 22 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 14 17 6 39 - <_> - 0 - - 11 42 11 2 - <_> - 2 - - 17 17 1 20 - <_> - 2 - - 0 32 10 15 - <_> - 2 - - 16 57 7 6 - <_> - 5 - - 14 9 13 13 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 20 17 2 14 - <_> - 3 - - 23 35 3 14 - <_> - 2 - - 16 8 1 24 - <_> - 3 - - 3 19 10 27 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 6 13 6 23 - <_> - 1 - - 17 16 2 31 - <_> - 2 - - 13 10 13 7 - <_> - 5 - - 10 20 3 33 - <_> - 1 - - 15 52 2 5 - <_> - 2 - - 9 6 17 18 - <_> - 2 - - 30 20 1 11 - <_> - 3 - - 29 7 1 28 - <_> - 7 - - 6 5 20 4 - <_> - 7 - - 6 49 4 2 - <_> - 4 - - 13 7 5 4 - <_> - 3 - - 20 42 2 6 - <_> - 1 - - 12 5 2 49 - <_> - 3 - - 7 9 11 33 - <_> - 7 - - 0 5 22 6 - <_> - 3 - - 3 36 12 1 - <_> - 0 - - 17 33 9 11 - <_> - 0 - - 17 27 5 9 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 16 55 9 2 - <_> - 4 - - 10 41 8 7 - <_> - 4 - - 11 1 8 16 - <_> - 9 - - 10 6 15 8 - <_> - 2 - - 6 4 24 4 - <_> - 9 - - 9 19 12 2 - <_> - 5 - - 13 8 11 4 - <_> - 0 - - 1 19 2 38 - <_> - 5 - - 14 36 1 8 - <_> - 7 - - 22 53 9 1 - <_> - 5 - - 11 5 4 35 - <_> - 5 - - 18 19 6 5 - <_> - 1 - - 17 33 3 24 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 8 42 2 4 - <_> - 5 - - 16 57 4 6 - <_> - 8 - - 11 8 11 6 - <_> - 4 - - 9 18 5 8 - <_> - 2 - - 17 40 5 5 - <_> - 9 - - 29 19 1 9 - <_> - 0 - - 24 5 5 16 - <_> - 9 - - 18 35 2 12 - <_> - 9 - - 2 9 5 11 - <_> - 7 - - 24 49 2 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 14 5 1 3 - <_> - 5 - - 10 55 5 4 - <_> - 1 - - 9 52 11 10 - <_> - 0 - - 7 56 19 4 - <_> - 4 - - 9 37 17 1 - <_> - 0 - - 9 33 15 6 - <_> - 5 - - 13 31 1 10 - <_> - 5 - - 20 3 2 24 - <_> - 7 - - 9 43 18 2 - <_> - 7 - - 2 12 18 1 - <_> - 0 - - 14 26 2 3 - <_> - 3 - - 4 26 9 4 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 5 62 11 1 - <_> - 3 - - 2 9 18 8 - <_> - 4 - - 11 28 20 35 - <_> - 5 - - 15 43 10 10 - <_> - 7 - - 24 49 2 2 - <_> - 1 - - 13 20 1 4 - <_> - 1 - - 16 9 1 27 - <_> - 3 - - 11 20 19 26 - <_> - 2 - - 22 55 9 8 - <_> - 3 - - 0 40 2 15 - <_> - 3 - - 8 8 5 27 - <_> - 7 - - 18 11 1 1 - <_> - 9 - - 12 20 2 8 - <_> - 4 - - 12 9 13 5 - <_> - 3 - - 7 50 11 6 - <_> - 5 - - 22 45 1 10 - <_> - 8 - - 11 13 5 1 - <_> - 3 - - 20 38 2 17 - <_> - 5 - - 17 8 6 6 - <_> - 3 - - 15 25 3 7 - <_> - 4 - - 10 1 13 19 - <_> - 1 - - 13 14 17 2 - <_> - 1 - - 12 3 6 3 - <_> - 8 - - 5 61 1 1 - <_> - 8 - - 14 5 1 3 - <_> - 9 - - 21 62 7 1 - <_> - 4 - - 18 41 1 8 - <_> - 1 - - 12 54 11 7 - <_> - 2 - - 9 27 1 28 - <_> - 8 - - 8 12 15 3 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 14 11 3 45 - <_> - 9 - - 13 4 10 3 - <_> - 0 - - 22 3 1 7 - <_> - 9 - - 16 15 1 22 - <_> - 2 - - 12 60 19 3 - <_> - 2 - - 8 41 15 1 - <_> - 3 - - 3 50 25 6 - <_> - 4 - - 15 9 14 15 - <_> - 2 - - 12 5 5 14 - <_> - 2 - - 15 46 5 12 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 10 47 18 3 - <_> - 5 - - 6 35 1 17 - <_> - 9 - - 24 4 5 3 - <_> - 5 - - 14 1 15 5 - <_> - 9 - - 19 20 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 0 53 3 1 - <_> - 3 - - 10 8 5 8 - <_> - 8 - - 29 30 1 11 - <_> - 8 - - 13 26 15 1 - <_> - 3 - - 29 42 2 15 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 14 35 8 5 - <_> - 5 - - 10 47 11 11 - <_> - 2 - - 6 50 11 4 - <_> - 3 - - 6 49 4 5 - <_> - 9 - - 10 29 12 18 - <_> - 5 - - 9 60 18 3 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 17 20 6 5 - <_> - 4 - - 28 16 3 18 - <_> - 3 - - 19 41 1 21 - <_> - 0 - - 18 35 3 4 - <_> - 0 - - 13 18 3 1 - <_> - 0 - - 1 23 14 6 - <_> - 0 - - 28 49 3 2 - <_> - 1 - - 13 14 13 3 - <_> - 0 - - 11 27 8 3 - <_> - 0 - - 11 48 14 5 - <_> - 5 - - 14 62 12 1 - <_> - 4 - - 20 6 1 43 - <_> - 9 - - 12 17 4 3 - <_> - 0 - - 11 13 17 1 - <_> - 3 - - 30 43 1 3 - <_> - 0 - - 4 53 2 2 - <_> - 7 - - 2 55 14 2 - <_> - 8 - - 22 32 1 22 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 8 12 15 35 - <_> - 7 - - 8 1 13 46 - <_> - 5 - - 12 33 4 5 - <_> - 7 - - 9 62 16 1 - <_> - 5 - - 7 58 14 3 - <_> - 2 - - 15 0 10 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 2 55 6 1 - <_> - 8 - - 17 6 2 1 - <_> - 1 - - 15 36 1 17 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 13 15 1 3 - <_> - 0 - - 13 43 9 4 - <_> - 7 - - 0 14 2 41 - <_> - 5 - - 7 37 2 24 - <_> - 3 - - 10 1 1 27 - <_> - 4 - - 13 44 7 9 - <_> - 9 - - 30 3 1 9 - <_> - 1 - - 4 34 25 1 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 11 49 16 2 - <_> - 2 - - 8 52 17 11 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 1 2 2 32 - <_> - 5 - - 20 15 3 46 - <_> - 7 - - 7 14 3 26 - <_> - 3 - - 15 28 2 3 - <_> - 2 - - 6 51 8 6 - <_> - 3 - - 2 50 5 2 - <_> - 5 - - 3 47 14 1 - <_> - 1 - - 29 61 2 1 - <_> - 1 - - 20 47 3 14 - <_> - 2 - - 16 45 3 6 - <_> - 4 - - 0 61 3 2 - <_> - 1 - - 18 46 3 1 - <_> - 2 - - 13 38 2 18 - <_> - 3 - - 4 0 12 1 - <_> - 3 - - 5 10 9 31 - <_> - 9 - - 25 51 3 1 - <_> - 5 - - 26 33 2 13 - <_> - 5 - - 18 18 9 10 - <_> - 3 - - 13 23 2 16 - <_> - 1 - - 8 53 7 6 - <_> - 3 - - 27 38 3 21 - <_> - 7 - - 5 59 17 2 - <_> - 4 - - 0 23 2 8 - <_> - 7 - - 23 54 1 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 13 8 3 11 - <_> - 7 - - 14 20 3 3 - <_> - 1 - - 18 17 2 9 - <_> - 5 - - 19 56 4 7 - <_> - 5 - - 14 49 9 5 - <_> - 3 - - 8 22 3 10 - <_> - 4 - - 12 39 3 3 - <_> - 1 - - 16 49 11 3 - <_> - 9 - - 6 52 1 8 - <_> - 4 - - 27 23 2 13 - <_> - 4 - - 4 58 19 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 7 30 17 17 - <_> - 0 - - 2 38 3 21 - <_> - 4 - - 16 7 3 17 - <_> - 1 - - 8 6 15 1 - <_> - 2 - - 18 29 5 13 - <_> - 9 - - 15 27 2 1 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 3 53 5 1 - <_> - 8 - - 26 27 1 7 - <_> - 4 - - 11 5 2 48 - <_> - 3 - - 10 4 1 53 - <_> - 1 - - 4 42 26 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 12 39 8 10 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 9 62 8 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 23 36 3 22 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 3 59 18 2 - <_> - 4 - - 18 39 1 2 - <_> - 7 - - 8 8 22 20 - <_> - 7 - - 2 53 10 2 - <_> - 5 - - 16 26 7 15 - <_> - 4 - - 0 62 24 1 - <_> - 1 - - 4 56 7 7 - <_> - 9 - - 29 0 1 11 - <_> - 0 - - 12 33 5 2 - <_> - 5 - - 7 32 8 7 - <_> - 4 - - 5 18 23 5 - <_> - 3 - - 23 49 2 1 - <_> - 0 - - 11 49 11 6 - <_> - 5 - - 21 20 1 6 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 14 1 3 13 - <_> - 3 - - 19 48 1 15 - <_> - 4 - - 1 17 26 3 - <_> - 5 - - 0 24 30 26 - <_> - 5 - - 15 58 12 4 - <_> - 0 - - 11 49 11 2 - <_> - 1 - - 6 21 13 20 - <_> - 3 - - 11 9 15 7 - <_> - 2 - - 11 56 7 4 - <_> - 1 - - 16 23 2 5 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 2 15 17 1 - <_> - 2 - - 11 17 6 3 - <_> - 1 - - 20 13 1 22 - <_> - 5 - - 17 9 5 10 - <_> - 2 - - 16 13 8 8 - <_> - 5 - - 14 0 12 17 - <_> - 5 - - 10 38 14 3 - <_> - 7 - - 21 40 1 7 - <_> - 5 - - 12 34 7 6 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 22 5 2 - <_> - 8 - - 5 5 6 15 - <_> - 1 - - 10 15 4 20 - <_> - 9 - - 13 13 3 21 - <_> - 4 - - 28 20 1 16 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 8 52 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 1 - - 16 18 7 3 - <_> - 7 - - 1 51 12 2 - <_> - 7 - - 12 60 2 2 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 10 56 10 1 - <_> - 2 - - 29 1 2 21 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 19 41 1 6 - <_> - 4 - - 1 51 7 12 - <_> - 0 - - 22 19 1 33 - <_> - 5 - - 16 57 5 6 - <_> - 2 - - 5 37 2 11 - <_> - 2 - - 10 42 9 16 - <_> - 7 - - 2 53 10 2 - <_> - 4 - - 8 45 18 1 - <_> - 5 - - 17 15 9 10 - <_> - 3 - - 25 60 3 1 - <_> - 3 - - 29 22 2 11 - <_> - 9 - - 9 56 18 7 - <_> - 8 - - 27 60 3 3 - <_> - 0 - - 7 15 9 7 - <_> - 3 - - 13 21 3 10 - <_> - 3 - - 8 11 6 20 - <_> - 9 - - 30 17 1 2 - <_> - 5 - - 12 56 2 5 - <_> - 1 - - 30 41 1 20 - <_> - 9 - - 12 17 4 3 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 12 11 18 2 - <_> - 8 - - 10 55 5 4 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 19 40 1 12 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 8 10 5 - <_> - 1 - - 7 11 22 1 - <_> - 4 - - 18 41 1 8 - <_> - 3 - - 7 62 13 1 - <_> - 1 - - 9 56 16 1 - <_> - 0 - - 14 30 9 21 - <_> - 1 - - 19 2 10 11 - <_> - 3 - - 21 47 1 8 - <_> - 2 - - 9 48 9 6 - <_> - 1 - - 21 35 1 15 - <_> - 3 - - 4 26 3 29 - <_> - 0 - - 14 11 15 3 - <_> - 7 - - 2 46 21 1 - <_> - 2 - - 25 10 2 18 - <_> - 4 - - 12 14 4 5 - <_> - 3 - - 25 46 4 2 - <_> - 4 - - 9 12 1 11 - <_> - 9 - - 19 39 1 12 - <_> - 7 - - 14 11 9 3 - <_> - 7 - - 6 41 1 7 - <_> - 2 - - 5 58 21 2 - <_> - 5 - - 20 14 9 8 - <_> - 4 - - 3 31 27 3 - <_> - 5 - - 6 1 21 2 - <_> - 7 - - 16 11 1 1 - <_> - 4 - - 13 24 5 27 - <_> - 7 - - 22 60 6 2 - <_> - 4 - - 1 34 20 4 - <_> - 1 - - 15 33 2 8 - <_> - 5 - - 14 40 12 10 - <_> - 2 - - 15 48 2 3 - <_> - 9 - - 15 7 3 51 - <_> - 8 - - 12 12 8 3 - <_> - 3 - - 14 34 5 5 - <_> - 5 - - 17 9 5 10 - <_> - 1 - - 18 20 3 7 - <_> - 4 - - 15 6 3 4 - <_> - 5 - - 2 22 14 3 - <_> - 4 - - 10 29 3 19 - <_> - 1 - - 11 44 1 14 - <_> - 3 - - 6 39 5 16 - <_> - 0 - - 9 51 2 5 - <_> - 2 - - 9 50 4 5 - <_> - 9 - - 16 18 2 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 14 17 4 2 - <_> - 2 - - 26 53 5 7 - <_> - 5 - - 16 47 8 7 - <_> - 3 - - 7 50 8 1 - <_> - 4 - - 8 47 23 1 - <_> - 2 - - 5 59 14 1 - <_> - 9 - - 20 57 1 2 - <_> - 1 - - 23 8 8 22 - <_> - 3 - - 17 50 8 11 - <_> - 0 - - 8 19 21 25 - <_> - 2 - - 14 23 3 6 - <_> - 5 - - 8 22 20 6 - <_> - 4 - - 8 60 7 3 - <_> - 1 - - 12 51 3 12 - <_> - 5 - - 11 57 2 6 - <_> - 7 - - 26 0 3 1 - <_> - 7 - - 12 59 12 3 - <_> - 0 - - 25 50 6 11 - <_> - 0 - - 6 52 25 5 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 17 11 8 1 - <_> - 5 - - 24 56 1 4 - <_> - 0 - - 18 18 2 7 - <_> - 3 - - 6 22 14 7 - <_> - 0 - - 3 0 17 9 - <_> - 3 - - 11 12 2 9 - <_> - 7 - - 17 8 14 7 - <_> - 4 - - 8 41 17 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 22 38 3 10 - <_> - 9 - - 15 32 2 2 - <_> - 2 - - 21 27 9 10 - <_> - 3 - - 16 53 14 2 - <_> - 0 - - 13 24 3 7 - <_> - 1 - - 14 43 10 9 - <_> - 1 - - 14 53 3 9 - <_> - 1 - - 12 31 10 8 - <_> - 2 - - 10 57 19 1 - <_> - 1 - - 9 32 5 2 - <_> - 1 - - 0 34 13 14 - <_> - 5 - - 14 52 9 3 - <_> - 1 - - 4 1 23 5 - <_> - 2 - - 2 49 23 11 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 12 19 12 1 - <_> - 8 - - 10 39 2 2 - <_> - 9 - - 30 38 1 1 - <_> - 4 - - 13 44 1 4 - <_> - 1 - - 18 28 8 15 - <_> - 1 - - 28 5 2 23 - <_> - 5 - - 16 55 8 4 - <_> - 4 - - 20 18 2 4 - <_> - 2 - - 8 41 15 1 - <_> - 7 - - 15 2 2 56 - <_> - 4 - - 12 4 9 12 - <_> - 3 - - 4 56 15 3 - <_> - 2 - - 5 51 13 5 - <_> - 5 - - 21 25 1 18 - <_> - 4 - - 21 18 7 32 - <_> - 8 - - 14 9 6 8 - <_> - 1 - - 11 19 11 1 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 6 8 1 3 - <_> - 5 - - 13 46 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 6 10 11 18 - <_> - 8 - - 5 14 4 5 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 10 1 13 13 - <_> - 0 - - 5 47 1 16 - <_> - 7 - - 1 48 29 7 - <_> - 0 - - 0 4 1 5 - <_> - 2 - - 18 61 7 1 - <_> - 2 - - 18 15 8 18 - <_> - 1 - - 14 17 5 10 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 19 29 5 7 - <_> - 7 - - 12 15 5 1 - <_> - 4 - - 13 36 3 4 - <_> - 1 - - 13 5 6 12 - <_> - 8 - - 29 56 2 3 - <_> - 1 - - 11 45 8 5 - <_> - 7 - - 11 59 3 3 - <_> - 8 - - 21 55 5 5 - <_> - 3 - - 10 21 1 13 - <_> - 5 - - 15 24 4 7 - <_> - 2 - - 17 3 4 15 - <_> - 5 - - 7 2 10 2 - <_> - 8 - - 14 12 3 4 - <_> - 1 - - 13 21 6 2 - <_> - 2 - - 10 8 20 7 - <_> - 5 - - 0 33 27 15 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 9 17 11 9 - <_> - 5 - - 6 59 13 1 - <_> - 4 - - 11 46 10 4 - <_> - 1 - - 13 54 6 3 - <_> - 1 - - 5 50 11 4 - <_> - 9 - - 10 15 3 30 - <_> - 1 - - 4 30 22 11 - <_> - 9 - - 28 2 3 1 - <_> - 8 - - 28 62 1 1 - <_> - 1 - - 19 28 7 6 - <_> - 4 - - 28 9 3 26 - <_> - 1 - - 3 44 16 2 - <_> - 2 - - 30 36 1 8 - <_> - 2 - - 7 51 13 5 - <_> - 9 - - 17 19 2 4 - <_> - 2 - - 10 56 10 3 - <_> - 5 - - 16 16 14 9 - <_> - 7 - - 16 38 2 4 - <_> - 2 - - 15 0 7 6 - <_> - 8 - - 17 13 2 4 - <_> - 7 - - 23 49 4 3 - <_> - 1 - - 7 25 10 10 - <_> - 9 - - 12 29 7 19 - <_> - 7 - - 17 28 1 12 - <_> - 7 - - 18 6 1 2 - <_> - 5 - - 14 5 7 10 - <_> - 0 - - 0 2 3 60 - <_> - 5 - - 13 14 3 2 - <_> - 1 - - 16 7 4 26 - <_> - 0 - - 25 47 6 16 - <_> - 1 - - 8 18 15 8 - <_> - 1 - - 13 55 3 2 - <_> - 0 - - 14 54 1 5 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 8 24 3 9 - <_> - 1 - - 20 10 1 42 - <_> - 5 - - 4 31 15 5 - <_> - 3 - - 10 5 7 17 - <_> - 2 - - 9 52 3 1 - <_> - 4 - - 3 59 10 4 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 11 37 1 6 - <_> - 1 - - 11 53 14 4 - <_> - 5 - - 5 57 24 1 - <_> - 7 - - 24 50 2 3 - <_> - 5 - - 13 58 6 4 - <_> - 4 - - 13 43 2 6 - <_> - 3 - - 25 42 6 6 - <_> - 5 - - 14 40 12 10 - <_> - 4 - - 11 53 3 1 - <_> - 3 - - 20 42 2 6 - <_> - 2 - - 11 12 12 2 - <_> - 3 - - 12 42 2 9 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 11 17 6 3 - <_> - 2 - - 12 6 14 12 - <_> - 9 - - 16 17 2 6 - <_> - 5 - - 20 56 3 7 - <_> - 8 - - 9 20 14 13 - <_> - 7 - - 24 16 1 42 - <_> - 0 - - 18 52 8 6 - <_> - 5 - - 21 50 7 2 - <_> - 2 - - 12 20 7 8 - <_> - 2 - - 10 22 15 36 - <_> - 7 - - 13 6 9 7 - <_> - 4 - - 28 2 3 38 - <_> - 5 - - 10 56 20 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 15 32 2 2 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 16 7 2 2 - <_> - 1 - - 2 19 25 2 - <_> - 2 - - 18 14 5 44 - <_> - 7 - - 16 11 1 1 - <_> - 0 - - 28 32 1 1 - <_> - 9 - - 30 1 1 2 - <_> - 3 - - 24 45 6 4 - <_> - 3 - - 3 2 10 15 - <_> - 3 - - 1 43 18 12 - <_> - 0 - - 2 19 4 42 - <_> - 2 - - 4 42 5 8 - <_> - 0 - - 19 25 3 18 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 13 13 6 38 - <_> - 8 - - 22 52 3 5 - <_> - 7 - - 10 61 1 1 - <_> - 2 - - 16 23 3 13 - <_> - 1 - - 11 35 8 4 - <_> - 1 - - 10 55 12 1 - <_> - 1 - - 13 40 12 1 - <_> - 7 - - 6 29 19 16 - <_> - 9 - - 13 27 2 2 - <_> - 9 - - 30 3 1 55 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 43 2 8 - <_> - 8 - - 7 8 5 6 - <_> - 3 - - 11 53 20 5 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 30 4 1 31 - <_> - 0 - - 17 17 3 2 - <_> - 7 - - 22 56 4 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 17 34 13 21 - <_> - 4 - - 7 15 5 22 - <_> - 4 - - 25 13 1 21 - <_> - 5 - - 22 18 3 32 - <_> - 0 - - 15 17 10 7 - <_> - 3 - - 5 10 14 23 - <_> - 1 - - 11 53 14 4 - <_> - 2 - - 14 62 15 1 - <_> - 5 - - 0 28 18 28 - <_> - 7 - - 18 11 1 1 - <_> - 2 - - 13 32 2 1 - <_> - 4 - - 9 6 8 12 - <_> - 3 - - 3 49 10 6 - <_> - 2 - - 11 40 7 1 - <_> - 5 - - 7 18 2 15 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 9 8 13 9 - <_> - 4 - - 4 60 12 2 - <_> - 3 - - 8 18 9 2 - <_> - 5 - - 5 1 18 48 - <_> - 3 - - 0 13 18 13 - <_> - 2 - - 0 52 22 2 - <_> - 0 - - 5 47 1 7 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 12 24 6 2 - <_> - 2 - - 6 35 6 10 - <_> - 0 - - 7 12 13 7 - <_> - 3 - - 8 56 9 3 - <_> - 4 - - 13 38 8 11 - <_> - 4 - - 16 22 2 17 - <_> - 0 - - 15 33 8 24 - <_> - 7 - - 1 2 30 40 - <_> - 3 - - 20 37 2 5 - <_> - 9 - - 14 0 10 7 - <_> - 5 - - 14 29 5 7 - <_> - 9 - - 15 15 2 10 - <_> - 5 - - 13 14 12 10 - <_> - 7 - - 14 10 3 2 - <_> - 5 - - 20 1 7 5 - <_> - 7 - - 0 62 28 1 - <_> - 0 - - 26 42 3 15 - <_> - 1 - - 13 44 14 11 - <_> - 9 - - 20 29 1 13 - <_> - 4 - - 11 38 13 7 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 0 50 7 12 - <_> - 2 - - 15 37 4 25 - <_> - 5 - - 18 7 1 40 - <_> - 2 - - 21 55 9 7 - <_> - 5 - - 15 47 14 8 - <_> - 7 - - 14 25 4 3 - <_> - 4 - - 12 39 3 3 - <_> - 3 - - 10 8 1 50 - <_> - 4 - - 5 16 23 30 - <_> - 1 - - 15 53 7 4 - <_> - 5 - - 1 57 18 2 - <_> - 4 - - 14 58 12 5 - <_> - 8 - - 30 54 1 9 - <_> - 4 - - 0 26 3 5 - <_> - 7 - - 24 36 3 4 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 3 39 26 5 - <_> - 7 - - 5 50 5 7 - <_> - 5 - - 15 49 10 4 - <_> - 0 - - 0 38 9 15 - <_> - 3 - - 16 41 14 6 - <_> - 1 - - 11 55 10 5 - <_> - 7 - - 14 0 1 31 - <_> - 9 - - 28 0 2 62 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 16 18 2 1 - <_> - 8 - - 16 53 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 1 - - 13 18 18 6 - <_> - 5 - - 15 60 15 2 - <_> - 3 - - 5 38 19 9 - <_> - 0 - - 1 24 3 26 - <_> - 2 - - 30 25 1 26 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 11 35 8 4 - <_> - 4 - - 6 9 11 16 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 24 23 4 5 - <_> - 8 - - 28 12 1 12 - <_> - 9 - - 26 2 3 2 - <_> - 1 - - 18 23 3 1 - <_> - 9 - - 15 14 3 14 - <_> - 9 - - 0 31 22 14 - <_> - 2 - - 8 48 11 9 - <_> - 8 - - 6 20 5 7 - <_> - 1 - - 13 52 3 10 - <_> - 1 - - 24 36 4 1 - <_> - 4 - - 13 44 7 7 - <_> - 2 - - 18 16 4 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 1 40 29 1 - <_> - 2 - - 12 38 11 10 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 17 34 2 13 - <_> - 2 - - 12 20 7 7 - <_> - 2 - - 11 11 12 6 - <_> - 9 - - 21 62 7 1 - <_> - 8 - - 1 62 13 1 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 39 1 8 - <_> - 8 - - 17 3 3 2 - <_> - 8 - - 13 2 8 52 - <_> - 5 - - 30 37 1 22 - <_> - 0 - - 9 31 18 3 - <_> - 7 - - 20 11 4 1 - <_> - 1 - - 5 12 14 6 - <_> - 4 - - 8 3 14 46 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 20 33 2 2 - <_> - 4 - - 15 6 3 4 - <_> - 9 - - 30 1 1 8 - <_> - 2 - - 6 51 8 6 - <_> - 5 - - 9 58 17 2 - <_> - 5 - - 17 28 14 5 - <_> - 1 - - 19 20 3 15 - <_> - 3 - - 10 21 1 13 - <_> - 1 - - 8 17 6 13 - <_> - 0 - - 10 46 8 7 - <_> - 0 - - 13 25 2 6 - <_> - 2 - - 22 30 3 11 - <_> - 1 - - 16 7 4 26 - <_> - 1 - - 14 33 5 21 - <_> - 1 - - 16 53 2 4 - <_> - 0 - - 22 29 5 8 - <_> - 3 - - 4 53 21 5 - <_> - 0 - - 10 50 16 3 - <_> - 0 - - 20 49 2 1 - <_> - 0 - - 25 44 5 3 - <_> - 7 - - 28 41 2 1 - <_> - 7 - - 14 59 1 2 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 13 27 2 2 - <_> - 8 - - 20 39 2 4 - <_> - 1 - - 12 15 1 26 - <_> - 5 - - 21 2 1 52 - <_> - 4 - - 6 7 8 7 - <_> - 1 - - 13 21 6 2 - <_> - 1 - - 4 54 4 9 - <_> - 4 - - 18 39 1 2 - <_> - 0 - - 4 39 5 7 - <_> - 3 - - 7 23 7 30 - <_> - 1 - - 16 26 9 4 - <_> - 4 - - 18 5 6 41 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 3 43 11 1 - <_> - 0 - - 17 19 2 2 - <_> - 4 - - 11 12 7 4 - <_> - 8 - - 17 11 1 2 - <_> - 5 - - 30 0 1 2 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 27 49 4 9 - <_> - 5 - - 20 10 2 18 - <_> - 3 - - 1 7 16 1 - <_> - 5 - - 27 15 2 12 - <_> - 1 - - 20 52 1 11 - <_> - 5 - - 9 57 14 6 - <_> - 7 - - 26 51 3 4 - <_> - 2 - - 6 50 11 4 - <_> - 7 - - 11 24 16 2 - <_> - 5 - - 10 58 13 5 - <_> - 7 - - 10 9 17 10 - <_> - 9 - - 19 19 2 1 - <_> - 7 - - 11 18 13 9 - <_> - 3 - - 6 11 9 11 - <_> - 4 - - 1 8 26 39 - <_> - 5 - - 15 24 4 7 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 12 31 10 5 - <_> - 4 - - 23 32 8 31 - <_> - 4 - - 28 16 3 18 - <_> - 7 - - 10 47 7 4 - <_> - 1 - - 11 19 1 18 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 0 48 1 3 - <_> - 8 - - 10 29 1 8 - <_> - 1 - - 5 56 21 1 - <_> - 1 - - 13 46 8 15 - <_> - 7 - - 2 36 10 16 - <_> - 0 - - 11 49 11 2 - <_> - 5 - - 26 56 2 6 - <_> - 7 - - 11 59 3 3 - <_> - 0 - - 12 50 16 6 - <_> - 9 - - 2 61 17 1 - <_> - 0 - - 7 55 7 4 - <_> - 7 - - 15 29 2 3 - <_> - 0 - - 22 58 9 5 - <_> - 1 - - 15 8 4 8 - <_> - 5 - - 4 28 2 2 - <_> - 0 - - 5 27 8 13 - <_> - 1 - - 13 20 5 4 - <_> - 0 - - 26 48 5 6 - <_> - 0 - - 16 34 10 11 - <_> - 7 - - 30 57 1 1 - <_> - 9 - - 30 19 1 8 - <_> - 4 - - 18 41 1 8 - <_> - 9 - - 14 17 3 26 - <_> - 1 - - 13 55 12 3 - <_> - 5 - - 4 62 7 1 - <_> - 9 - - 12 7 13 1 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 21 55 10 2 - <_> - 3 - - 8 9 13 1 - <_> - 9 - - 13 34 8 6 - <_> - 7 - - 12 29 4 10 - <_> - 9 - - 24 31 2 11 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 29 38 2 2 - <_> - 2 - - 13 10 13 7 - <_> - 2 - - 8 27 3 6 - <_> - 9 - - 12 17 4 3 - <_> - 5 - - 16 10 12 13 - <_> - 0 - - 3 43 1 9 - <_> - 3 - - 6 50 12 7 - <_> - 9 - - 14 1 10 3 - <_> - 5 - - 10 2 10 3 - <_> - 2 - - 19 12 5 12 - <_> - 7 - - 12 15 8 7 - <_> - 5 - - 13 31 1 10 - <_> - 2 - - 9 7 2 47 - <_> - 2 - - 26 44 2 12 - <_> - 1 - - 10 54 7 2 - <_> - 2 - - 9 18 7 2 - <_> - 2 - - 30 58 1 2 - <_> - 2 - - 8 41 15 3 - <_> - 4 - - 14 58 1 5 - <_> - 3 - - 11 0 8 37 - <_> - 4 - - 0 26 3 5 - <_> - 5 - - 13 9 8 6 - <_> - 7 - - 6 36 2 19 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 8 59 7 2 - <_> - 3 - - 10 7 3 41 - <_> - 4 - - 9 20 17 4 - <_> - 1 - - 28 49 3 11 - <_> - 5 - - 12 57 7 5 - <_> - 4 - - 7 54 11 1 - <_> - 0 - - 12 38 1 6 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 17 13 2 4 - <_> - 8 - - 13 14 1 3 - <_> - 8 - - 22 53 4 1 - <_> - 2 - - 8 61 15 1 - <_> - 2 - - 4 53 19 3 - <_> - 4 - - 4 42 2 6 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 11 9 15 6 - <_> - 4 - - 23 61 7 1 - <_> - 0 - - 7 57 21 1 - <_> - 0 - - 8 50 14 10 - <_> - 1 - - 23 46 1 16 - <_> - 2 - - 19 11 12 14 - <_> - 0 - - 2 41 3 13 - <_> - 4 - - 22 23 6 28 - <_> - 0 - - 19 27 4 10 - <_> - 0 - - 6 42 2 2 - <_> - 3 - - 17 29 2 10 - <_> - 4 - - 6 60 4 3 - <_> - 7 - - 22 53 1 4 - <_> - 2 - - 9 16 6 6 - <_> - 2 - - 19 35 2 3 - <_> - 0 - - 15 36 11 1 - <_> - 3 - - 19 24 3 16 - <_> - 5 - - 0 47 13 2 - <_> - 2 - - 3 51 16 4 - <_> - 4 - - 3 26 2 21 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 6 51 7 1 - <_> - 8 - - 14 17 4 2 - <_> - 3 - - 22 45 1 13 - <_> - 4 - - 11 10 20 4 - <_> - 9 - - 29 47 2 2 - <_> - 3 - - 10 15 1 42 - <_> - 1 - - 25 16 6 7 - <_> - 3 - - 14 21 4 6 - <_> - 3 - - 5 56 6 4 - <_> - 4 - - 24 36 2 26 - <_> - 2 - - 9 48 19 4 - <_> - 7 - - 12 59 12 1 - <_> - 4 - - 2 59 28 3 - <_> - 0 - - 12 10 11 6 - <_> - 1 - - 13 20 1 4 - <_> - 3 - - 15 8 11 32 - <_> - 8 - - 18 25 2 5 - <_> - 1 - - 15 51 5 9 - <_> - 1 - - 6 59 5 4 - <_> - 5 - - 30 51 1 10 - <_> - 4 - - 16 7 2 2 - <_> - 7 - - 4 30 14 6 - <_> - 0 - - 9 28 12 22 - <_> - 2 - - 9 27 1 28 - <_> - 4 - - 17 19 6 35 - <_> - 2 - - 1 30 20 10 - <_> - 1 - - 9 15 11 2 - <_> - 9 - - 16 18 2 1 - <_> - 5 - - 6 18 7 10 - <_> - 4 - - 11 36 16 1 - <_> - 8 - - 12 12 8 3 - <_> - 0 - - 21 54 3 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 11 9 7 8 - <_> - 9 - - 14 1 3 13 - <_> - 0 - - 12 38 1 6 - <_> - 3 - - 5 36 21 5 - <_> - 8 - - 8 62 3 1 - <_> - 4 - - 16 51 2 1 - <_> - 1 - - 16 54 4 8 - <_> - 0 - - 9 15 4 3 - <_> - 0 - - 27 47 1 6 - <_> - 0 - - 12 37 14 2 - <_> - 3 - - 10 5 4 54 - <_> - 5 - - 12 29 6 7 - <_> - 7 - - 1 32 10 13 - <_> - 0 - - 6 58 7 1 - <_> - 2 - - 8 38 20 5 - <_> - 9 - - 28 14 1 9 - <_> - 1 - - 12 8 8 4 - <_> - 4 - - 18 14 3 38 - <_> - 3 - - 0 40 2 15 - <_> - 5 - - 16 24 2 15 - <_> - 1 - - 10 55 12 1 - <_> - 9 - - 7 22 1 29 - <_> - 7 - - 12 59 12 1 - <_> - 8 - - 11 13 5 1 - <_> - 1 - - 2 1 27 2 - <_> - 0 - - 1 8 13 17 - <_> - 8 - - 30 42 1 2 - <_> - 8 - - 12 11 8 1 - <_> - 8 - - 16 35 8 1 - <_> - 4 - - 10 41 8 7 - <_> - 2 - - 22 57 5 6 - <_> - 3 - - 15 49 3 4 - <_> - 5 - - 19 14 5 7 - <_> - 7 - - 14 10 3 2 - <_> - 4 - - 10 18 16 5 - <_> - 9 - - 19 39 2 4 - <_> - 2 - - 7 11 17 1 - <_> - 7 - - 26 33 1 16 - <_> - 4 - - 15 36 4 1 - <_> - 2 - - 7 57 13 4 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 5 21 10 5 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 16 19 2 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 15 0 13 3 - <_> - 3 - - 16 36 3 4 - <_> - 0 - - 13 37 15 7 - <_> - 2 - - 24 38 6 18 - <_> - 5 - - 13 39 1 8 - <_> - 7 - - 3 62 15 1 - <_> - 5 - - 29 28 2 25 - <_> - 2 - - 10 46 12 9 - <_> - 2 - - 12 59 14 4 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 15 24 2 10 - <_> - 7 - - 27 12 2 11 - <_> - 1 - - 11 55 7 5 - <_> - 0 - - 10 33 3 14 - <_> - 0 - - 25 44 1 9 - <_> - 2 - - 16 39 4 9 - <_> - 7 - - 19 25 1 2 - <_> - 1 - - 13 5 6 12 - <_> - 1 - - 11 19 1 18 - <_> - 7 - - 0 0 17 33 - <_> - 7 - - 25 52 4 2 - <_> - 3 - - 27 62 2 1 - <_> - 5 - - 18 17 6 4 - <_> - 7 - - 23 18 2 12 - <_> - 5 - - 22 12 9 23 - <_> - 2 - - 6 50 11 4 - <_> - 2 - - 18 52 7 2 - <_> - 4 - - 0 59 5 4 - <_> - 1 - - 9 54 5 6 - <_> - 2 - - 13 62 18 1 - <_> - 4 - - 25 62 2 1 - <_> - 3 - - 3 19 8 16 - <_> - 1 - - 24 29 4 34 - <_> - 2 - - 13 30 2 5 - <_> - 1 - - 13 7 9 6 - <_> - 4 - - 13 7 5 4 - <_> - 0 - - 16 17 4 5 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 12 44 1 11 - <_> - 0 - - 19 6 3 4 - <_> - 1 - - 11 8 12 1 - <_> - 2 - - 29 44 1 6 - <_> - 2 - - 24 57 2 4 - <_> - 3 - - 10 50 7 6 - <_> - 5 - - 27 14 2 26 - <_> - 0 - - 1 53 26 5 - <_> - 7 - - 6 62 9 1 - <_> - 8 - - 1 61 25 2 - <_> - 4 - - 18 39 1 2 - <_> - 5 - - 21 18 5 38 - <_> - 0 - - 0 39 3 11 - <_> - 5 - - 4 42 8 6 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 13 14 3 2 - <_> - 3 - - 8 9 9 4 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 13 4 11 7 - <_> - 9 - - 13 39 5 1 - <_> - 1 - - 8 6 15 1 - <_> - 4 - - 26 19 2 18 - <_> - 9 - - 25 18 4 2 - <_> - 2 - - 17 3 4 15 - <_> - 4 - - 5 44 19 4 - <_> - 1 - - 17 18 5 28 - <_> - 1 - - 14 52 5 6 - <_> - 3 - - 24 45 2 15 - <_> - 0 - - 6 58 16 2 - <_> - 5 - - 16 30 1 1 - <_> - 5 - - 12 42 15 2 - <_> - 8 - - 13 51 1 6 - <_> - 8 - - 16 12 1 5 - <_> - 8 - - 14 52 9 1 - <_> - 8 - - 12 0 7 9 - <_> - 4 - - 14 39 4 9 - <_> - 0 - - 3 5 7 24 - <_> - 9 - - 10 33 2 10 - <_> - 9 - - 4 3 16 12 - <_> - 1 - - 12 1 17 7 - <_> - 8 - - 15 55 2 5 - <_> - 2 - - 7 51 14 1 - <_> - 7 - - 15 9 11 2 - <_> - 1 - - 11 0 7 18 - <_> - 1 - - 7 21 21 1 - <_> - 5 - - 18 15 10 12 - <_> - 1 - - 11 56 19 1 - <_> - 3 - - 28 51 1 9 - <_> - 2 - - 12 55 11 7 - <_> - 7 - - 12 57 7 1 - <_> - 7 - - 12 1 7 53 - <_> - 7 - - 24 48 7 5 - <_> - 4 - - 9 22 14 16 - <_> - 1 - - 28 31 3 31 - <_> - 1 - - 20 54 9 5 - <_> - 9 - - 15 32 2 2 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 0 - - 17 19 2 2 - <_> - 0 - - 0 37 22 9 - <_> - 5 - - 8 57 19 3 - <_> - 3 - - 15 44 16 13 - <_> - 5 - - 17 52 9 3 - <_> - 1 - - 2 1 21 4 - <_> - 2 - - 11 16 2 2 - <_> - 4 - - 12 21 1 10 - <_> - 4 - - 10 9 11 9 - <_> - 5 - - 21 25 1 18 - <_> - 5 - - 18 57 7 2 - <_> - 8 - - 16 8 1 17 - <_> - 9 - - 11 49 3 5 - <_> - 8 - - 1 40 1 14 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 28 36 1 2 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 16 8 1 6 - <_> - 5 - - 29 38 1 12 - <_> - 2 - - 7 51 13 5 - <_> - 0 - - 6 37 2 20 - <_> - 5 - - 7 52 4 3 - <_> - 5 - - 14 9 9 4 - <_> - 2 - - 1 21 1 16 - <_> - 5 - - 14 0 12 17 - <_> - 1 - - 17 20 6 5 - <_> - 0 - - 21 11 1 41 - <_> - 1 - - 3 54 28 8 - <_> - 1 - - 17 43 4 9 - <_> - 8 - - 13 62 6 1 - <_> - 2 - - 22 16 8 4 - <_> - 2 - - 12 62 11 1 - <_> - 4 - - 19 57 8 6 - <_> - 1 - - 16 53 2 4 - <_> - 9 - - 10 59 4 3 - <_> - 0 - - 13 15 5 4 - <_> - 3 - - 2 54 10 5 - <_> - 2 - - 5 49 8 11 - <_> - 4 - - 11 53 3 2 - <_> - 5 - - 11 34 2 3 - <_> - 3 - - 6 13 9 14 - <_> - 0 - - 13 14 2 12 - <_> - 4 - - 7 60 1 3 - <_> - 4 - - 15 36 4 1 - <_> - 0 - - 16 31 11 7 - <_> - 9 - - 12 35 6 2 - <_> - 1 - - 13 14 13 3 - <_> - 7 - - 10 20 3 3 - <_> - 4 - - 14 8 6 11 - <_> - 2 - - 21 52 2 9 - <_> - 5 - - 19 16 7 39 - <_> - 7 - - 11 62 9 1 - <_> - 8 - - 13 14 4 3 - <_> - 0 - - 14 17 1 13 - <_> - 9 - - 6 8 6 48 - <_> - 9 - - 28 36 1 1 - <_> - 2 - - 9 41 11 1 - <_> - 1 - - 1 30 19 2 - <_> - 4 - - 13 40 6 7 - <_> - 1 - - 12 43 11 15 - <_> - 1 - - 3 14 24 3 - <_> - 4 - - 2 16 11 24 - <_> - 4 - - 5 26 12 4 - <_> - 7 - - 4 24 4 1 - <_> - 2 - - 16 21 3 6 - <_> - 3 - - 2 21 9 2 - <_> - 9 - - 29 2 1 7 - <_> - 9 - - 19 17 1 7 - <_> - 3 - - 6 52 18 2 - <_> - 0 - - 6 57 13 1 - <_> - 2 - - 11 11 8 3 - <_> - 7 - - 17 44 1 3 - <_> - 7 - - 15 10 13 4 - <_> - 9 - - 25 44 2 3 - <_> - 9 - - 23 27 8 27 - <_> - 8 - - 16 12 1 5 - <_> - 3 - - 1 53 25 3 - <_> - 0 - - 14 48 4 9 - <_> - 7 - - 19 23 2 15 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 16 1 3 13 - <_> - 2 - - 14 16 4 5 - <_> - 5 - - 15 18 14 5 - <_> - 2 - - 18 16 5 9 - <_> - 3 - - 3 1 21 2 - <_> - 2 - - 11 57 19 6 - <_> - 7 - - 7 55 5 1 - <_> - 9 - - 21 4 4 1 - <_> - 1 - - 18 19 1 5 - <_> - 8 - - 12 11 8 1 - <_> - 0 - - 10 8 4 49 - <_> - 9 - - 11 5 8 48 - <_> - 0 - - 0 30 10 18 - <_> - 2 - - 3 40 4 13 - <_> - 3 - - 29 34 1 22 - <_> - 2 - - 20 26 10 4 - <_> - 4 - - 12 8 7 12 - <_> - 1 - - 8 33 12 1 - <_> - 1 - - 20 55 2 4 - <_> - 4 - - 6 34 19 16 - <_> - 3 - - 1 52 26 1 - <_> - 1 - - 11 6 1 47 - <_> - 1 - - 5 44 5 11 - <_> - 2 - - 15 37 3 10 - <_> - 4 - - 10 21 2 5 - <_> - 3 - - 15 21 3 42 - <_> - 8 - - 12 12 8 3 - <_> - 9 - - 22 62 1 1 - <_> - 8 - - 0 14 12 3 - <_> - 2 - - 0 59 2 4 - <_> - 2 - - 6 35 11 5 - <_> - 2 - - 23 40 6 21 - <_> - 3 - - 23 35 3 14 - <_> - 0 - - 16 34 10 11 - <_> - 5 - - 21 18 2 12 - <_> - 5 - - 23 28 8 19 - <_> - 2 - - 21 17 2 20 - <_> - 0 - - 20 15 4 9 - <_> - 2 - - 14 25 3 9 - <_> - 0 - - 8 24 7 5 - <_> - 1 - - 12 11 3 7 - <_> - 7 - - 16 11 1 1 - <_> - 2 - - 23 14 8 24 - <_> - 3 - - 7 24 11 11 - <_> - 7 - - 1 62 30 1 - <_> - 2 - - 8 40 2 7 - <_> - 1 - - 15 53 7 4 - <_> - 4 - - 19 26 11 36 - <_> - 3 - - 2 56 20 6 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 8 50 7 8 - <_> - 4 - - 8 46 18 1 - <_> - 4 - - 10 8 14 4 - <_> - 1 - - 13 21 3 2 - <_> - 2 - - 11 4 8 13 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 11 13 5 1 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 57 20 3 - <_> - 1 - - 5 56 19 1 - <_> - 7 - - 17 26 2 3 - <_> - 4 - - 12 46 1 2 - <_> - 2 - - 3 25 18 1 - <_> - 7 - - 29 52 1 2 - <_> - 0 - - 13 26 4 1 - <_> - 1 - - 2 29 12 5 - <_> - 2 - - 14 3 5 1 - <_> - 0 - - 19 23 3 21 - <_> - 2 - - 16 39 4 9 - <_> - 5 - - 3 41 25 5 - <_> - 0 - - 28 49 3 1 - <_> - 7 - - 12 38 10 7 - <_> - 3 - - 6 12 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 0 - - 10 42 13 5 - <_> - 8 - - 14 12 3 4 - <_> - 4 - - 7 18 16 3 - <_> - 1 - - 28 14 3 42 - <_> - 1 - - 5 54 26 1 - <_> - 4 - - 17 17 8 38 - <_> - 2 - - 2 50 14 3 - <_> - 5 - - 20 24 2 10 - <_> - 3 - - 9 56 20 2 - <_> - 0 - - 11 50 16 10 - <_> - 7 - - 9 0 21 9 - <_> - 4 - - 3 15 22 14 - <_> - 2 - - 11 17 6 3 - <_> - 5 - - 14 50 6 6 - <_> - 0 - - 0 46 3 7 - <_> - 9 - - 14 7 3 23 - <_> - 5 - - 2 11 14 12 - <_> - 5 - - 19 54 3 3 - <_> - 3 - - 12 43 7 10 - <_> - 4 - - 25 54 3 9 - <_> - 1 - - 9 20 4 5 - <_> - 1 - - 10 15 13 1 - <_> - 5 - - 1 60 22 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 15 5 4 - <_> - 8 - - 8 54 10 5 - <_> - 0 - - 11 7 4 10 - <_> - 3 - - 23 39 6 12 - <_> - 0 - - 0 54 25 4 - <_> - 9 - - 14 0 10 7 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 12 1 4 31 - <_> - 5 - - 17 19 10 17 - <_> - 7 - - 4 26 1 18 - <_> - 1 - - 20 19 3 2 - <_> - 7 - - 6 53 6 4 - <_> - 2 - - 28 40 2 9 - <_> - 7 - - 11 6 1 35 - <_> - 3 - - 5 13 20 8 - <_> - 2 - - 7 2 1 37 - <_> - 4 - - 6 12 16 13 - <_> - 4 - - 13 22 2 4 - <_> - 2 - - 12 58 10 1 - <_> - 5 - - 14 50 6 6 - <_> - 7 - - 10 59 21 1 - <_> - 0 - - 26 43 3 14 - <_> - 0 - - 20 7 4 39 - <_> - 3 - - 15 48 1 4 - <_> - 3 - - 8 44 17 10 - <_> - 0 - - 26 21 2 2 - <_> - 3 - - 7 40 5 18 - <_> - 1 - - 4 34 25 1 - <_> - 1 - - 9 45 3 13 - <_> - 3 - - 20 41 1 8 - <_> - 8 - - 13 9 13 11 - <_> - 2 - - 15 46 2 10 - <_> - 2 - - 11 4 8 13 - <_> - 0 - - 0 28 6 15 - <_> - 0 - - 17 18 3 1 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 5 11 21 46 - <_> - 8 - - 17 11 1 2 - <_> - 9 - - 13 16 4 4 - <_> - 9 - - 14 1 3 13 - <_> - 2 - - 6 25 1 37 - <_> - 8 - - 15 5 8 4 - <_> - 8 - - 14 9 4 13 - <_> - 1 - - 12 46 8 2 - <_> - 5 - - 16 22 13 2 - <_> - 7 - - 25 22 2 8 - <_> - 2 - - 7 51 13 5 - <_> - 2 - - 20 61 7 2 - <_> - 3 - - 8 19 11 22 - <_> - 1 - - 10 55 12 1 - <_> - 7 - - 14 0 7 17 - <_> - 9 - - 14 12 2 21 - <_> - 4 - - 8 61 16 2 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 19 32 6 7 - <_> - 1 - - 22 27 6 29 - <_> - 4 - - 21 24 7 27 - <_> - 0 - - 15 40 12 4 - <_> - 4 - - 2 49 1 3 - <_> - 3 - - 8 57 14 1 - <_> - 7 - - 2 35 3 4 - <_> - 2 - - 19 18 4 13 - <_> - 5 - - 13 11 18 15 - <_> - 5 - - 12 50 10 6 - <_> - 2 - - 12 20 7 7 - <_> - 7 - - 14 40 3 1 - <_> - 9 - - 14 41 2 2 - <_> - 2 - - 16 10 7 47 - <_> - 5 - - 26 61 3 2 - <_> - 1 - - 12 53 10 7 - <_> - 9 - - 21 62 2 1 - <_> - 1 - - 18 19 1 5 - <_> - 1 - - 26 10 5 19 - <_> - 5 - - 30 36 1 12 - <_> - 4 - - 13 38 2 4 - <_> - 3 - - 12 7 5 9 - <_> - 9 - - 17 36 4 2 - <_> - 7 - - 6 61 6 2 - <_> - 5 - - 17 40 2 9 - <_> - 8 - - 17 61 14 2 - <_> - 7 - - 12 24 6 5 - <_> - 8 - - 12 11 8 1 - <_> - 1 - - 13 8 3 11 - <_> - 1 - - 16 1 12 2 - <_> - 2 - - 19 0 4 42 - <_> - 5 - - 16 7 13 45 - <_> - 3 - - 21 45 1 10 - <_> - 3 - - 8 49 19 7 - <_> - 0 - - 12 33 5 2 - <_> - 4 - - 15 42 4 4 - <_> - 1 - - 10 52 7 4 - <_> - 1 - - 7 19 18 3 - <_> - 3 - - 7 7 6 32 - <_> - 4 - - 1 9 9 26 - <_> - 4 - - 12 5 9 15 - <_> - 1 - - 12 24 6 2 - <_> - 3 - - 10 2 11 41 - <_> - 5 - - 7 59 24 3 - <_> - 2 - - 11 36 15 9 - <_> - 0 - - 4 46 2 7 - <_> - 4 - - 28 11 3 7 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 29 13 2 24 - <_> - 2 - - 7 55 21 3 - <_> - 9 - - 14 60 3 1 - <_> - 9 - - 21 61 4 1 - <_> - 8 - - 13 57 1 6 - <_> - 4 - - 8 43 14 10 - <_> - 5 - - 12 33 4 5 - <_> - 3 - - 3 7 12 22 - <_> - 1 - - 6 20 23 35 - <_> - 5 - - 14 17 6 8 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 21 17 6 6 - <_> - 5 - - 20 1 7 5 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 15 17 2 5 - <_> - 1 - - 13 54 6 3 - <_> - 4 - - 9 4 14 43 - <_> - 1 - - 21 51 7 4 - <_> - 4 - - 10 58 20 1 - <_> - 2 - - 5 51 13 5 - <_> - 4 - - 15 36 2 2 - <_> - 5 - - 5 62 14 1 - <_> - 4 - - 1 46 14 3 - <_> - 1 - - 10 55 17 7 - <_> - 7 - - 24 45 4 4 - <_> - 9 - - 30 45 1 13 - <_> - 0 - - 11 52 17 4 - <_> - 3 - - 23 34 7 15 - <_> - 0 - - 17 33 9 11 - <_> - 4 - - 6 31 7 2 - <_> - 7 - - 16 11 1 1 - <_> - 5 - - 17 21 7 1 - <_> - 3 - - 6 8 9 39 - <_> - 1 - - 13 21 6 2 - <_> - 4 - - 13 7 5 4 - <_> - 2 - - 20 16 2 4 - <_> - 1 - - 16 54 2 4 - <_> - 5 - - 2 30 1 28 - <_> - 1 - - 4 62 25 1 - <_> - 5 - - 25 4 1 51 - <_> - 5 - - 19 10 10 38 - <_> - 5 - - 9 61 15 2 - <_> - 7 - - 0 50 9 2 - <_> - 4 - - 19 37 2 8 - <_> - 7 - - 17 32 2 3 - <_> - 9 - - 14 0 10 7 - <_> - 2 - - 29 33 1 8 - <_> - 9 - - 15 17 2 5 - <_> - 8 - - 13 14 4 3 - <_> - 9 - - 27 48 2 6 - <_> - 8 - - 16 53 1 2 - <_> - 2 - - 29 42 1 12 - <_> - 0 - - 2 54 16 9 - <_> - 9 - - 15 17 2 26 - <_> - 0 - - 12 50 14 5 - <_> - 3 - - 24 36 1 26 - <_> - 2 - - 2 33 27 1 - <_> - 1 - - 11 19 1 18 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 29 28 2 25 - <_> - 1 - - 16 18 7 3 - <_> - 1 - - 10 12 21 7 - <_> - 1 - - 16 55 9 2 - <_> - 2 - - 24 53 7 7 - <_> - 0 - - 21 21 1 14 - <_> - 5 - - 1 44 27 8 - <_> - 7 - - 19 8 5 8 - <_> - 7 - - 23 54 1 1 - <_> - 5 - - 14 9 9 4 - <_> - 5 - - 11 35 11 1 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 25 59 5 4 - <_> - 2 - - 4 59 21 1 - <_> - 1 - - 18 46 3 5 - <_> - 2 - - 8 24 3 9 - <_> - 3 - - 7 43 11 16 - <_> - 8 - - 26 41 1 4 - <_> - 4 - - 0 52 16 11 - <_> - 9 - - 19 20 1 2 - <_> - 2 - - 12 49 15 2 - <_> - 8 - - 11 20 5 6 - <_> - 3 - - 0 56 31 4 - <_> - 4 - - 18 39 1 2 - <_> - 4 - - 10 24 18 8 - <_> - 5 - - 13 9 8 6 - <_> - 1 - - 11 21 14 32 - <_> - 5 - - 11 0 7 10 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 3 7 - <_> - 3 - - 8 16 4 29 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 12 14 8 13 - <_> - 8 - - 15 17 2 1 - <_> - 1 - - 18 20 3 7 - <_> - 2 - - 17 3 4 15 - <_> - 1 - - 0 19 21 3 - <_> - 7 - - 0 62 18 1 - <_> - 8 - - 18 30 1 2 - <_> - 4 - - 13 44 7 7 - <_> - 5 - - 16 46 10 3 - <_> - 1 - - 11 8 13 1 - <_> - 2 - - 21 56 3 4 - <_> - 8 - - 2 53 23 4 - <_> - 8 - - 15 10 2 49 - <_> - 2 - - 2 46 7 3 - <_> - 3 - - 20 38 2 11 - <_> - 1 - - 9 56 16 1 - <_> - 5 - - 21 18 2 12 - <_> - 7 - - 7 52 16 8 - <_> - 0 - - 13 18 3 1 - <_> - 3 - - 27 59 1 4 - <_> - 0 - - 11 42 11 2 - <_> - 1 - - 13 37 2 6 - <_> - 4 - - 6 14 5 9 - <_> - 2 - - 11 11 8 3 - <_> - 2 - - 17 21 1 16 - <_> - 2 - - 18 3 1 10 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 22 58 8 3 - <_> - 1 - - 17 33 3 24 - <_> - 9 - - 19 38 1 14 - <_> - 2 - - 14 62 15 1 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 17 29 8 7 - <_> - 7 - - 26 4 3 17 - <_> - 3 - - 16 32 4 7 - <_> - 1 - - 14 7 2 11 - <_> - 4 - - 14 8 5 1 - <_> - 2 - - 20 17 2 46 - <_> - 0 - - 2 61 29 2 - <_> - 2 - - 6 50 11 4 - <_> - 5 - - 3 60 14 3 - <_> - 4 - - 0 20 13 6 - <_> - 4 - - 10 13 4 13 - <_> - 7 - - 8 49 2 1 - <_> - 1 - - 13 21 3 2 - <_> - 1 - - 5 0 1 46 - <_> - 7 - - 14 1 7 17 - <_> - 3 - - 28 42 3 15 - <_> - 9 - - 30 36 1 2 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 17 19 2 4 - <_> - 9 - - 16 8 1 6 - <_> - 2 - - 22 47 5 7 - <_> - 1 - - 3 55 22 2 - <_> - 1 - - 13 41 1 13 - <_> - 7 - - 0 44 3 13 - <_> - 2 - - 7 35 8 10 - <_> - 8 - - 1 10 26 1 - <_> - 5 - - 9 53 19 8 - <_> - 4 - - 13 44 1 4 - <_> - 4 - - 6 28 7 18 - <_> - 2 - - 13 41 12 3 - <_> - 1 - - 8 6 15 1 - <_> - 0 - - 12 10 11 6 - <_> - 9 - - 27 1 2 12 - <_> - 0 - - 13 33 1 8 - <_> - 1 - - 9 8 8 8 - <_> - 0 - - 0 48 3 7 - <_> - 8 - - 8 55 12 2 - <_> - 8 - - 4 7 26 38 - <_> - 3 - - 16 33 4 7 - <_> - 7 - - 3 51 21 8 - <_> - 2 - - 14 9 10 50 - <_> - 3 - - 1 46 22 4 - <_> - 9 - - 16 28 2 18 - <_> - 3 - - 9 28 3 29 - <_> - 4 - - 0 52 1 8 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 6 13 9 25 - <_> - 4 - - 8 56 21 4 - <_> - 7 - - 24 48 3 4 - <_> - 2 - - 16 5 9 3 - <_> - 5 - - 11 6 17 27 - <_> - 7 - - 23 4 7 3 - <_> - 4 - - 13 40 6 7 - <_> - 0 - - 11 40 2 22 - <_> - 8 - - 14 12 3 4 - <_> - 5 - - 16 29 3 4 - <_> - 9 - - 12 11 6 5 - <_> - 5 - - 18 14 13 7 - <_> - 7 - - 7 0 1 6 - <_> - 4 - - 7 1 10 36 - <_> - 1 - - 11 8 12 1 - <_> - 5 - - 3 53 22 7 - <_> - 1 - - 9 55 15 1 - <_> - 0 - - 13 35 8 16 - <_> - 2 - - 9 16 6 6 - <_> - 0 - - 25 42 5 7 - <_> - 2 - - 4 6 16 10 - <_> - 5 - - 5 34 26 17 - <_> - 4 - - 9 37 17 1 - <_> - 1 - - 18 23 3 1 - <_> - 1 - - 15 53 7 4 - <_> - 0 - - 10 17 4 13 - <_> - 4 - - 6 53 24 4 - <_> - 7 - - 22 51 9 3 - <_> - 0 - - 0 47 1 15 - <_> - 5 - - 11 56 12 1 - <_> - 2 - - 6 51 12 7 - <_> - 1 - - 3 42 6 8 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 13 12 9 15 - <_> - 8 - - 14 17 4 2 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 2 29 11 8 - <_> - 2 - - 12 5 8 9 - <_> - 1 - - 17 43 4 9 - <_> - 0 - - 6 58 7 1 - <_> - 4 - - 26 19 1 36 - <_> - 9 - - 17 3 12 3 - <_> - 7 - - 10 20 3 3 - <_> - 3 - - 5 10 12 17 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 0 27 11 9 - <_> - 8 - - 14 12 3 4 - <_> - 0 - - 13 44 7 8 - <_> - 0 - - 4 39 1 10 - <_> - 5 - - 10 58 13 5 - <_> - 0 - - 17 17 3 2 - <_> - 3 - - 8 38 17 7 - <_> - 0 - - 11 1 19 5 - <_> - 1 - - 13 5 6 12 - <_> - 3 - - 17 27 6 3 - <_> - 1 - - 6 6 20 1 - <_> - 5 - - 20 24 2 10 - <_> - 1 - - 7 21 21 1 - <_> - 3 - - 8 7 8 47 - <_> - 7 - - 26 62 1 1 - <_> - 8 - - 0 61 21 2 - <_> - 5 - - 16 20 13 5 - <_> - 4 - - 15 36 4 1 - <_> - 9 - - 15 34 8 4 - <_> - 0 - - 24 39 3 8 - <_> - 3 - - 10 4 1 53 - <_> - 7 - - 24 8 4 31 - <_> - 1 - - 18 29 4 6 - <_> - 1 - - 19 48 1 11 - <_> - 8 - - 7 36 8 6 - <_> - 2 - - 30 19 1 13 - <_> - 5 - - 21 19 2 20 - <_> - 2 - - 20 16 5 16 - <_> - 4 - - 9 8 18 9 - <_> - 5 - - 5 42 7 5 - <_> - 5 - - 14 40 12 10 - <_> - 5 - - 3 41 7 10 - <_> - 3 - - 7 59 24 1 - <_> - 1 - - 25 31 6 23 - <_> - 8 - - 2 1 14 7 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 15 53 7 4 - <_> - 8 - - 13 17 5 3 - <_> - 3 - - 7 50 11 6 - <_> - 0 - - 1 21 4 37 - <_> - 4 - - 12 39 8 10 - <_> - 0 - - 12 10 11 6 - <_> - 7 - - 8 8 22 20 - <_> - 2 - - 15 32 3 2 - <_> - 2 - - 14 42 7 2 - <_> - 2 - - 21 25 1 19 - <_> - 3 - - 0 16 6 38 - <_> - 2 - - 21 51 1 9 - <_> - 1 - - 21 45 1 17 - <_> - 9 - - 29 0 2 6 - <_> - 9 - - 8 34 11 10 - <_> - 3 - - 3 45 25 3 - <_> - 8 - - 13 14 4 3 - <_> - 1 - - 19 20 3 15 - <_> - 1 - - 3 11 17 6 - <_> - 4 - - 25 46 5 2 - <_> - 1 - - 13 18 7 7 - <_> - 0 - - 14 49 16 5 - <_> - 2 - - 11 12 12 2 - <_> - 7 - - 5 54 3 3 - <_> - 4 - - 1 47 18 3 - <_> - 2 - - 9 59 15 3 - <_> - 0 - - 19 29 4 24 - <_> - 3 - - 4 56 27 4 - <_> - 3 - - 20 34 1 11 - <_> - 0 - - 10 30 3 31 - <_> - 4 - - 22 23 6 28 - <_> - 3 - - 4 24 23 25 - <_> - 3 - - 6 22 10 5 - <_> - 4 - - 1 20 15 15 - <_> - 1 - - 28 13 2 24 - <_> - 1 - - 9 56 16 1 - <_> - 3 - - 13 21 3 10 - <_> - 7 - - 7 62 3 1 - <_> - 8 - - 14 12 3 4 - <_> - 7 - - 16 46 2 3 - <_> - 1 - - 2 49 9 12 - <_> - 3 - - 8 7 6 23 - <_> - 1 - - 22 0 2 29 - <_> - 5 - - 0 1 30 2 - <_> - 0 - - 14 41 1 18 - <_> - 5 - - 27 36 3 27 - <_> - 3 - - 15 45 12 18 - <_> - 3 - - 8 49 19 7 - <_> - 1 - - 9 28 5 7 - <_> - 4 - - 27 24 3 10 - <_> - 8 - - 9 62 7 1 - <_> - 8 - - 17 13 2 4 - <_> - 2 - - 22 42 1 13 - <_> - 9 - - 15 17 2 5 - <_> - 9 - - 26 9 1 17 - <_> - 9 - - 6 35 3 9 - <_> - 5 - - 4 62 7 1 - <_> - 7 - - 18 53 11 1 - <_> - 7 - - 10 61 1 1 - <_> - 1 - - 15 33 5 21 - <_> - 0 - - 20 23 5 22 - <_> - 2 - - 10 2 4 50 - <_> - 0 - - 13 25 5 7 - <_> - 2 - - 11 25 16 21 - <_> - 1 - - 14 11 8 9 - <_> - 7 - - 5 1 3 13 - <_> - 1 - - 6 43 3 18 - <_> - 2 - - 8 44 12 6 - <_> - 4 - - 9 18 5 8 - <_> - 9 - - 10 41 12 4 - <_> - 2 - - 20 17 2 14 - <_> - 8 - - 16 12 1 5 - <_> - 0 - - 0 48 3 7 - <_> - 3 - - 11 9 15 7 - <_> - 3 - - 4 53 19 6 - <_> - 5 - - 13 9 8 5 - <_> - 4 - - 28 39 2 3 - <_> - 4 - - 15 42 4 4 - <_> - 3 - - 7 38 11 14 - <_> - 8 - - 14 5 1 3 - <_> - 1 - - 13 21 6 2 - <_> - 7 - - 12 24 9 6 - <_> - 1 - - 11 53 10 4 - <_> - 9 - - 3 32 3 9 - <_> - 4 - - 21 58 9 5 - <_> - 2 - - 8 12 19 2 - <_> - 1 - - 15 53 3 9 - <_> - 3 - - 19 58 3 2 - <_> - 1 - - 17 43 4 9 - <_> - 2 - - 0 42 30 2 - <_> - 7 - - 9 0 8 12 - <_> - 5 - - 1 39 8 11 - <_> - 5 - - 21 2 1 52 - <_> - 3 - - 27 37 4 5 - <_> - 2 - - 19 54 8 7 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 26 38 4 12 - <_> - 1 - - 22 45 1 13 - <_> - 8 - - 14 12 3 4 - <_> - 9 - - 12 17 4 3 - <_> - 8 - - 9 7 5 1 - <_> - 0 - - 13 42 7 1 - <_> - 2 - - 14 18 7 15 - <_> - 4 - - 11 38 10 3 - <_> - 4 - - 10 8 14 4 - <_> - 5 - - 11 45 2 7 - <_> - 9 - - 13 2 12 4 - <_> - 9 - - 15 16 8 6 - <_> - 9 - - 11 8 7 6 - <_> - 2 - - 15 60 15 1 - <_> - 2 - - 7 50 13 2 - <_> - 1 - - 1 33 29 2 - <_> - 5 - - 12 33 4 5 - <_> - 1 - - 11 53 10 4 - <_> - 4 - - 18 3 3 50 - <_> - 2 - - 6 59 20 3 - <_> - 2 - - 17 12 9 24 - <_> - 0 - - 3 34 1 14 - <_> - 3 - - 26 34 3 18 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 16 11 7 3 - <_> - 8 - - 20 39 2 4 - <_> - 4 - - 10 18 16 5 - <_> - 1 - - 16 11 4 7 - <_> - 5 - - 13 61 15 2 - <_> - 8 - - 17 11 1 2 - <_> - 1 - - 18 17 2 9 - <_> - 4 - - 6 53 19 3 - <_> - 3 - - 8 13 8 7 - <_> - 0 - - 7 15 9 7 - <_> - 9 - - 15 26 4 9 - <_> - 3 - - 23 39 2 24 - <_> - 0 - - 13 36 13 2 - <_> - 5 - - 17 40 8 16 - <_> - 5 - - 15 3 11 1 - <_> - 5 - - 5 53 22 8 - <_> - 5 - - 9 25 2 11 - <_> - 2 - - 2 51 17 6 - <_> - 2 - - 13 53 4 3 - <_> - 5 - - 13 30 4 1 - <_> - 9 - - 27 55 1 5 - <_> - 5 - - 1 58 17 2 - <_> - 0 - - 7 44 13 6 - <_> - 5 - - 19 19 7 3 - <_> - 7 - - 26 18 1 4 - <_> - 7 - - 25 1 4 18 - <_> - 7 - - 22 53 6 2 - <_> - 5 - - 6 37 20 18 - <_> - 1 - - 12 62 12 1 - <_> - 1 - - 15 53 7 4 - <_> - 1 - - 26 61 1 2 - <_> - 1 - - 14 46 4 4 - <_> - 3 - - 8 42 6 15 - <_> - 0 - - 12 43 2 6 - <_> - 2 - - 17 19 1 8 - <_> - 0 - - 17 19 2 2 - <_> - 3 - - 5 22 10 4 - <_> - 2 - - 13 36 1 19 - <_> - 2 - - 11 35 14 4 - <_> - 4 - - 3 57 27 6 - <_> - 8 - - 6 52 24 2 - <_> - 5 - - 13 9 8 6 - <_> - 9 - - 15 20 3 16 - <_> - 0 - - 21 6 4 4 - <_> - 5 - - 11 56 12 1 - <_> - 8 - - 15 5 1 25 - <_> - 9 - - 30 1 1 2 - <_> - 5 - - 13 15 2 10 - <_> - 5 - - 4 10 19 20 - <_> - 7 - - 11 60 2 3 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 24 28 3 10 - <_> - 1 - - 12 24 6 2 - <_> - 1 - - 14 5 6 28 - <_> - 7 - - 14 36 1 3 - <_> - 1 - - 18 5 4 40 - <_> - 0 - - 12 50 16 6 - <_> - 1 - - 2 0 11 5 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 14 49 10 2 - <_> - 2 - - 4 32 2 8 - <_> - 8 - - 29 25 2 38 - <_> - 4 - - 1 13 19 8 - <_> - 3 - - 0 37 25 24 - <_> - 0 - - 9 11 20 3 - <_> - 4 - - 7 34 14 3 - <_> - 3 - - 28 56 1 5 - <_> - 4 - - 10 20 17 14 - <_> - 1 - - 8 55 18 1 - <_> - 8 - - 16 61 7 2 - <_> - 4 - - 16 48 13 10 - <_> - 8 - - 12 12 8 3 - <_> - 5 - - 17 18 9 12 - <_> - 9 - - 12 35 9 11 - <_> - 3 - - 3 19 8 23 - <_> - 4 - - 28 15 3 36 - <_> - 1 - - 26 6 2 18 - <_> - 0 - - 3 54 3 4 - <_> - 0 - - 13 50 3 7 - <_> - 7 - - 17 32 2 3 - <_> - 5 - - 8 56 17 4 - <_> - 4 - - 0 29 13 10 - <_> - 1 - - 13 14 13 3 - <_> - 3 - - 10 15 1 42 - <_> - 7 - - 30 13 1 6 - <_> - 2 - - 17 28 1 9 - <_> - 5 - - 20 12 4 28 - <_> - 0 - - 4 45 26 18 - <_> - 5 - - 15 0 11 13 - <_> - 1 - - 13 20 1 4 - <_> - 0 - - 16 8 7 54 - <_> - 3 - - 8 53 12 1 - <_> - 9 - - 15 57 2 5 - <_> - 8 - - 29 37 1 6 - <_> - 0 - - 12 0 1 12 - <_> - 8 - - 11 13 5 1 - <_> - 2 - - 7 35 3 2 - <_> - 8 - - 4 15 10 6 - <_> - 5 - - 19 56 7 5 - <_> - 1 - - 20 49 9 5 - <_> - 5 - - 16 48 15 8 - <_> - 1 - - 17 45 2 3 - <_> - 1 - - 1 10 15 2 - <_> - 8 - - 14 5 1 3 - <_> - 8 - - 3 23 28 14 - <_> - 4 - - 16 51 10 4 - <_> - 9 - - 18 40 1 7 - <_> - 4 - - 15 36 4 1 - <_> - 5 - - 15 46 13 8 - <_> - 4 - - 7 54 11 1 - <_> - 3 - - 2 55 18 5 - <_> - 2 - - 9 52 10 8 - <_> - 4 - - 13 30 5 7 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 17 16 1 5 - <_> - 8 - - 22 6 5 12 - <_> - 3 - - 15 13 12 27 - <_> - 2 - - 11 11 12 6 - <_> - 1 - - 10 62 16 1 - <_> - 4 - - 12 47 11 1 - <_> - 1 - - 25 12 5 15 - <_> - 0 - - 21 26 4 8 - <_> - 3 - - 13 21 3 10 - <_> - 2 - - 17 3 4 15 - <_> - 2 - - 15 37 3 10 - <_> - 7 - - 2 55 14 2 - <_> - 2 - - 12 37 3 4 - <_> - 7 - - 16 11 1 1 - <_> - 7 - - 2 56 21 3 - <_> - 1 - - 4 20 20 8 - <_> - 3 - - 8 27 6 28 - <_> - 2 - - 16 58 1 5 - <_> - 9 - - 11 19 9 1 - <_> - 1 - - 28 45 2 9 - <_> - 8 - - 17 11 1 2 - <_> - 0 - - 3 39 4 10 - <_> - 3 - - 15 10 11 7 - <_> - 1 - - 11 8 12 1 - <_> - 4 - - 2 38 18 24 - <_> - 1 - - 12 54 17 1 - <_> - 1 - - 14 56 14 1 - <_> - 7 - - 25 18 2 14 - <_> - 4 - - 25 0 3 6 - <_> - 0 - - 17 18 3 1 - <_> - 9 - - 1 8 25 3 - <_> - 4 - - 8 14 7 4 - <_> - 4 - - 18 32 2 26 - <_> - 2 - - 12 41 13 15 - <_> - 2 - - 5 24 11 2 - <_> - 9 - - 13 39 5 1 - <_> - 9 - - 1 36 13 3 - <_> - 2 - - 21 8 4 8 - <_> - 5 - - 16 5 9 17 - <_> - 5 - - 6 37 22 26 - <_> - 0 - - 27 49 2 1 - <_> - 3 - - 6 37 15 10 - <_> - 5 - - 19 38 1 5 - <_> - 9 - - 13 24 2 5 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 10 38 12 2 - <_> - 8 - - 8 3 3 12 - <_> - 3 - - 2 56 12 1 - <_> - 8 - - 14 12 3 4 - <_> - 2 - - 14 23 3 6 - <_> - 1 - - 10 37 5 1 - <_> - 1 - - 6 53 7 4 - <_> - 4 - - 7 39 11 12 - <_> - 3 - - 6 11 9 11 - <_> - 7 - - 18 2 2 10 - <_> - 4 - - 10 21 2 5 - <_> - 0 - - 29 31 1 1 - <_> - 1 - - 16 7 4 26 - <_> - 5 - - 23 48 7 12 - <_> - 1 - - 18 19 1 5 - <_> - 4 - - 19 24 12 21 - <_> - 4 - - 20 5 8 39 - <_> - 1 - - 7 14 17 4 - <_> - 5 - - 7 44 3 17 - <_> - 1 - - 14 52 5 6 - <_> - 7 - - 15 24 2 18 - <_> - 9 - - 14 18 3 9 - <_> - 9 - - 11 61 8 1 - <_> - 5 - - 11 15 5 3 - <_> - 5 - - 2 18 22 3 - <_> - 4 - - 8 60 7 3 - <_> - 2 - - 6 50 11 4 - <_> - 1 - - 13 55 18 3 - <_> - 2 - - 20 58 2 2 - <_> - 9 - - 30 39 1 3 - <_> - 5 - - 13 26 5 4 - <_> - 0 - - 19 15 3 20 - <_> - 0 - - 14 6 2 52 - <_> - 4 - - 11 36 10 5 - <_> - 4 - - 22 31 1 27 - <_> - 4 - - 13 7 5 4 - <_> - 1 - - 13 5 6 12 - <_> - 4 - - 9 12 3 20 - <_> - 5 - - 10 38 14 3 - <_> - 4 - - 13 41 10 22 - <_> - 4 - - 10 41 11 2 - <_> - 1 - - 14 54 6 8 - <_> - 4 - - 19 3 1 51 - <_> - 0 - - 14 28 5 5 - <_> - 0 - - 10 28 18 6 - <_> - 4 - - 0 6 21 52 - <_> - 3 - - 16 33 4 4 - <_> - 3 - - 10 15 1 42 - <_> - 3 - - 28 33 2 10 - <_> - 5 - - 0 47 13 2 - <_> - 8 - - 14 9 6 8 - <_> - 4 - - 10 52 13 3 - <_> - 8 - - 19 41 2 1 - <_> - 2 - - 9 49 20 1 - <_> - 0 - - 13 57 18 1 - <_> - 7 - - 4 51 20 7 - <_> - 4 - - 22 29 6 7 - <_> - 3 - - 8 59 15 4 - <_> - 2 - - 29 59 1 1 - <_> - 9 - - 27 6 4 3 - <_> - 0 - - 14 18 2 4 - <_> - 9 - - 18 2 1 37 - <_> - 2 - - 11 4 8 13 - <_> - 8 - - 25 62 5 1 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 3 62 28 1 - <_> - 0 - - 5 48 17 2 - <_> - 4 - - 15 39 6 14 - <_> - 5 - - 5 62 10 1 - <_> - 7 - - 5 52 26 2 - <_> - 3 - - 19 20 3 7 - <_> - 2 - - 15 14 2 6 - <_> - 5 - - 6 24 4 22 - <_> - 4 - - 12 45 6 6 - <_> - 1 - - 18 55 2 2 - <_> - 4 - - 9 4 14 43 - <_> - 3 - - 10 8 10 12 - <_> - 5 - - 21 1 1 36 - <_> - 7 - - 7 24 2 14 - <_> - 0 - - 13 35 8 16 - <_> - 3 - - 21 45 1 10 - <_> - 2 - - 12 33 7 23 - <_> - 0 - - 22 40 4 9 - <_> - 1 - - 18 20 3 7 - <_> - 1 - - 2 12 20 4 - <_> - 1 - - 7 20 11 3 - <_> - 8 - - 12 12 8 3 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 11 51 7 12 - <_> - 7 - - 13 12 10 1 - <_> - 9 - - 16 18 2 1 - <_> - 9 - - 30 4 1 1 - <_> - 0 - - 12 10 11 6 - <_> - 4 - - 1 40 28 20 - <_> - 7 - - 5 62 8 1 - <_> - 1 - - 14 53 3 9 - <_> - 5 - - 7 50 5 7 - <_> - 0 - - 16 17 4 5 - <_> - 2 - - 19 54 8 5 - <_> - 3 - - 6 22 10 5 - <_> - 9 - - 10 38 2 9 - <_> - 0 - - 13 25 5 7 - <_> - 0 - - 16 24 11 19 - <_> - 7 - - 30 43 1 7 - <_> - 8 - - 12 12 8 3 - <_> - 8 - - 16 42 1 11 - <_> - 1 - - 27 37 4 23 - <_> - 3 - - 10 15 1 42 - <_> - 4 - - 11 22 1 10 - <_> - 1 - - 14 6 5 8 - <_> - 0 - - 1 48 3 1 - <_> - 0 - - 16 50 12 2 - <_> - 1 - - 3 45 5 5 - <_> - 8 - - 29 36 1 20 - <_> - 7 - - 3 26 21 19 - <_> - 8 - - 30 22 1 6 - <_> - 4 - - 12 42 8 8 - <_> - 5 - - 19 5 4 46 - <_> - 5 - - 23 36 4 20 - <_> - 1 - - 15 52 2 5 - <_> - 4 - - 9 29 11 7 - <_> - 0 - - 27 35 1 1 - <_> - 0 - - 13 33 1 8 - <_> - 3 - - 10 38 7 3 - <_> - 3 - - 23 45 4 4 - <_> - 2 - - 17 37 2 17 - <_> - 7 - - 16 11 1 1 - <_> - 3 - - 18 0 8 36 - <_> - 1 - - 26 8 5 20 - <_> - 4 - - 10 59 13 1 - <_> - 4 - - 24 7 6 14 - <_> - 4 - - 13 8 10 5 - <_> - 2 - - 0 42 2 10 - <_> - 7 - - 2 12 18 1 - <_> - 1 - - 9 56 8 1 - <_> - 1 - - 18 17 2 9 - <_> - 8 - - 14 9 4 13 - <_> - 2 - - 17 13 6 14 - <_> - 0 - - 10 35 1 23 - <_> - 2 - - 24 10 3 21 - <_> - 3 - - 6 19 5 34 - <_> - 1 - - 7 45 1 4 - <_> - 2 - - 16 19 2 6 - <_> - 3 - - 24 14 2 30 - <_> - 9 - - 12 61 16 1 - <_> - 5 - - 23 27 4 10 - <_> - 5 - - 4 62 7 1 - <_> - 3 - - 3 49 10 6 - <_> - 9 - - 17 32 1 5 - <_> - 9 - - 30 4 1 1 - <_> - 3 - - 27 18 1 4 - <_> - 4 - - 12 1 11 46 - <_> - 1 - - 11 8 13 1 - <_> - 1 - - 0 9 16 1 - <_> - 2 - - 9 22 16 24 - <_> - 3 - - 16 32 4 7 - <_> - 0 - - 17 25 8 21 - <_> - 0 - - 3 55 22 6 - <_> - 3 - - 17 1 1 6 - <_> - 5 - - 13 9 8 5 - <_> - 9 - - 19 28 1 18 - <_> - 1 - - 11 55 2 7 - <_> - 1 - - 13 13 12 5 - <_> - 4 - - 8 60 7 3 - <_> - 0 - - 11 38 4 12 - <_> - 4 - - 12 34 6 15 - <_> - 5 - - 8 40 4 22 - <_> - 1 - - 22 45 1 13 - <_> - 5 - - 3 33 10 19 - <_> - 0 - - 29 45 2 7 - <_> - 0 - - 17 51 7 5 - <_> - 3 - - 15 53 2 1 - <_> - 4 - - 5 59 3 4 - <_> - 8 - - 17 13 2 4 - <_> - 1 - - 2 1 27 2 - <_> - 8 - - 10 42 14 13 - <_> - 1 - - 10 4 7 14 - <_> - 4 - - 11 25 11 10 - <_> - 9 - - 11 19 9 1 - <_> - 9 - - 12 1 13 12 - <_> - 1 - - 11 19 1 4 - <_> - 9 - - 14 7 5 12 - <_> - 8 - - 10 23 2 5 - <_> - 5 - - 16 23 1 10 - <_> - 2 - - 8 62 20 1 - <_> - 4 - - 9 16 16 3 - <_> - 7 - - 29 27 1 11 - <_> - 7 - - 3 60 28 3 - <_> - 4 - - 15 44 2 2 - <_> - 5 - - 16 62 1 1 - <_> - 8 - - 17 21 1 4 - <_> - 0 - - 18 33 9 11 - <_> - 3 - - 17 35 3 5 - <_> - 2 - - 10 51 8 5 - <_> - 3 - - 28 40 3 7 - <_> - 7 - - 21 42 1 18 - <_> - 9 - - 16 18 2 1 - <_> - 2 - - 20 15 1 8 - <_> - 4 - - 14 8 5 1 - <_> - 5 - - 14 0 12 17 - <_> - 4 - - 9 18 5 8 - <_> - 8 - - 12 9 6 12 - <_> - 9 - - 26 32 1 7 - <_> - 8 - - 0 14 1 8 - <_> - 7 - - 4 1 14 16 - <_> - 2 - - 11 62 10 1 - <_> - 3 - - 2 18 12 10 - <_> - 7 - - 29 22 2 2 - <_> - 3 - - 13 15 13 15 - <_> - 9 - - 12 38 5 1 - <_> - 2 - - 8 35 6 11 - <_> - 7 - - 6 36 14 2 - <_> - 4 - - 13 36 3 4 - <_> - 0 - - 7 19 22 6 - <_> - 2 - - 15 41 4 15 - <_> - 8 - - 14 12 3 4 - <_> - 8 - - 12 24 8 1 - <_> - 0 - - 6 55 6 1 - <_> - 8 - - 13 17 5 3 - <_> - 8 - - 12 12 8 3 - <_> - 2 - - 24 44 3 7 - <_> - 0 - - 2 39 16 2 - <_> - 1 - - 15 54 1 3 - <_> - 9 - - 17 17 1 14 - <_> - 8 - - 13 56 1 1 - <_> - 1 - - 11 19 11 1 - <_> - 3 - - 30 3 1 43 - <_> - 7 - - 15 57 12 1 - <_> - 2 - - 29 32 2 26 - <_> - 7 - - 16 38 2 4 - <_> - 0 - - 21 25 1 16 - <_> - 0 - - 4 46 2 7 - <_> - 7 - - 26 13 5 4 - <_> - 3 - - 0 48 17 9 - <_> - 1 - - 12 32 5 20 - <_> - 2 - - 10 57 10 4 - <_> - 7 - - 24 49 2 2 - <_> - 3 - - 15 25 4 8 - <_> - 0 - - 11 11 9 6 - <_> - 4 - - 18 18 1 33 - <_> - 3 - - 10 0 5 29 - <_> - 2 - - 18 13 7 9 - <_> - 4 - - 2 59 13 4 - <_> - 1 - - 15 53 7 4 - <_> - 2 - - 11 49 16 2 - <_> - 3 - - 4 56 15 3 - <_> - 4 - - 19 21 6 38 - <_> - 1 - - 6 53 7 4 - <_> - 5 - - 14 19 1 9 - <_> - 2 - - 13 22 11 17 - <_> - 1 - - 14 7 3 12 - <_> - 1 - - 13 20 1 4 - <_> - 4 - - 5 19 4 14 - <_> - 4 - - 9 35 3 8 - <_> - 8 - - 16 12 1 5 - <_> - 9 - - 29 62 2 1 - <_> - 8 - - 18 51 1 5 - <_> - 2 - - 13 58 13 1 - <_> - 2 - - 6 50 16 3 - <_> - 7 - - 15 27 5 2 - <_> - 5 - - 0 43 11 13 - <_> - 2 - - 7 29 3 16 - <_> - 3 - - 11 42 7 6 - <_> - 4 - - 18 39 1 2 - <_> - 2 - - 21 55 10 2 - <_> - 0 - - 27 37 4 2 - <_> - 0 - - 13 37 15 7 - <_> - 1 - - 1 28 26 18 - <_> - 0 - - 12 38 1 6 - <_> - 5 - - 14 9 9 4 - <_> - 7 - - 18 8 7 2 - <_> - 2 - - 18 6 13 1 - <_> - 7 - - 8 59 23 2 - <_> - 5 - - 1 57 29 5 - <_> - 8 - - 6 20 23 7 - <_> - 1 - - 12 53 4 10 - <_> - 0 - - 13 14 2 12 - <_> - 8 - - 10 62 7 1 - <_> - 9 - - 30 33 1 3 - <_> - 7 - - 15 12 2 5 - <_> - 9 - - 17 14 2 38 - <_> - 5 - - 20 17 1 25 - <_> - 1 - - 11 0 5 1 - <_> - 0 - - 19 37 5 23 - <_> - 7 - - 2 5 1 27 - <_> - 2 - - 22 48 1 9 - <_> - 5 - - 18 25 2 13 - <_> - 3 - - 8 11 6 20 - <_> - 1 - - 0 29 27 1 - <_> - 3 - - 15 21 2 9 - <_> - 2 - - 16 37 13 18 - <_> - 0 - - 2 38 3 21 - <_> - 5 - - 14 31 3 21 - <_> - 4 - - 10 8 7 16 - <_> - 1 - - 7 29 21 12 - <_> - 1 - - 25 47 4 14 - - diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 1c284539ee..7dcc96f928 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -33,7 +33,7 @@ if(BUILD_DOCS AND HAVE_SPHINX) endif() endforeach() - set(FIXED_ORDER_MODULES core imgproc highgui video calib3d features2d objdetect ml flann photo stitching nonfree contrib legacy) + set(FIXED_ORDER_MODULES core imgproc imgcodecs videoio highgui video calib3d features2d objdetect ml flann photo stitching) list(REMOVE_ITEM BASE_MODULES ${FIXED_ORDER_MODULES}) @@ -105,8 +105,8 @@ if(BUILD_DOCS AND HAVE_SPHINX) COMMAND ${SPHINX_BUILD} ${BUILD_PLANTUML} -b latex -c "${CMAKE_CURRENT_SOURCE_DIR}" "${DOC_FAKE_ROOT}" . COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/pics ${CMAKE_CURRENT_BINARY_DIR}/doc/opencv1/pics COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/mymath.sty ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2refman.tex - COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2manager.tex + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2refman.tex + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/patch_refman_latex.py" opencv2manager.tex COMMAND ${CMAKE_COMMAND} -E echo "Generating opencv2refman.pdf" COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex COMMAND ${PDFLATEX_COMPILER} -interaction=batchmode opencv2refman.tex diff --git a/doc/check_docs.py b/doc/check_docs.py index 0290fc70f4..96f62f068d 100755 --- a/doc/check_docs.py +++ b/doc/check_docs.py @@ -14,6 +14,8 @@ opencv_hdr_list = [ "../modules/video/include/opencv2/video/tracking.hpp", "../modules/video/include/opencv2/video/background_segm.hpp", "../modules/objdetect/include/opencv2/objdetect.hpp", +"../modules/imgcodecs/include/opencv2/imgcodecs.hpp", +"../modules/videoio/include/opencv2/videoio.hpp", "../modules/highgui/include/opencv2/highgui.hpp", ] @@ -24,6 +26,8 @@ opencv_module_list = [ "features2d", "video", "objdetect", +"imgcodecs", +"videoio", "highgui", "ml" ] diff --git a/doc/conf.py b/doc/conf.py index a0c231c3b5..a30ee8aea4 100755 --- a/doc/conf.py +++ b/doc/conf.py @@ -302,14 +302,16 @@ man_pages = [ extlinks = { 'basicstructures' : ('http://docs.opencv.org/modules/core/doc/basic_structures.html#%s', None), 'oldbasicstructures' : ('http://docs.opencv.org/modules/core/doc/old_basic_structures.html#%s', None), - 'readwriteimagevideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None), + 'readwriteimage' : ('http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html#%s', None), + 'readwritevideo' : ('http://docs.opencv.org/modules/videoio/doc/reading_and_writing_video.html#%s', None), 'operationsonarrays' : ('http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#%s', None), 'utilitysystemfunctions' : ('http://docs.opencv.org/modules/core/doc/utility_and_system_functions_and_macros.html#%s', None), 'imgprocfilter' : ('http://docs.opencv.org/modules/imgproc/doc/filtering.html#%s', None), 'svms' : ('http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#%s', None), 'drawingfunc' : ('http://docs.opencv.org/modules/core/doc/drawing_functions.html#%s', None), 'xmlymlpers' : ('http://docs.opencv.org/modules/core/doc/xml_yaml_persistence.html#%s', None), - 'hgvideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None), + 'rwimg' : ('http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html#%s', None), + 'hgvideo' : ('http://docs.opencv.org/modules/videoio/doc/reading_and_writing_video.html#%s', None), 'gpuinit' : ('http://docs.opencv.org/modules/gpu/doc/initalization_and_information.html#%s', None), 'gpudatastructure' : ('http://docs.opencv.org/modules/gpu/doc/data_structures.html#%s', None), 'gpuopmatrices' : ('http://docs.opencv.org/modules/gpu/doc/operations_on_matrices.html#%s', None), @@ -329,8 +331,8 @@ extlinks = { 'how_to_contribute' : ('http://code.opencv.org/projects/opencv/wiki/How_to_contribute/%s', None), 'cvt_color' : ('http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html?highlight=cvtcolor#cvtcolor%s', None), - 'imread' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imread#imread%s', None), - 'imwrite' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite%s', None), + 'imread' : ('http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html?highlight=imread#imread%s', None), + 'imwrite' : ('http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html?highlight=imwrite#imwrite%s', None), 'imshow' : ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=imshow#imshow%s', None), 'named_window' : ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=namedwindow#namedwindow%s', None), 'wait_key' : ('http://docs.opencv.org/modules/highgui/doc/user_interface.html?highlight=waitkey#waitkey%s', None), @@ -418,7 +420,7 @@ extlinks = { 'background_subtractor' : ('http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=backgroundsubtractor#backgroundsubtractor%s', None), 'background_subtractor_mog' : ('http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=backgroundsubtractorMOG#backgroundsubtractormog%s', None), 'background_subtractor_mog_two' : ('http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=backgroundsubtractorMOG2#backgroundsubtractormog2%s', None), - 'video_capture' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=videocapture#videocapture%s', None), + 'video_capture' : ('http://docs.opencv.org/modules/videoio/doc/reading_and_writing_video.html?highlight=videocapture#videocapture%s', None), 'ippa_convert': ('http://docs.opencv.org/modules/core/doc/ipp_async_converters.html#%s', None), 'ptr':('http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=Ptr#Ptr%s', None) } diff --git a/doc/opencv_cheatsheet.tex b/doc/opencv_cheatsheet.tex index d6c339916d..01d5c275d9 100644 --- a/doc/opencv_cheatsheet.tex +++ b/doc/opencv_cheatsheet.tex @@ -522,9 +522,9 @@ samples on what are the contours and how to use them. \begin{tabbing} \textbf{Wr}\=\textbf{iting and reading raster images}\\ -\texttt{\href{http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html\#imwrite}{imwrite}("myimage.jpg", image);}\\ -\texttt{Mat image\_color\_copy = \href{http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html\#imread}{imread}("myimage.jpg", 1);}\\ -\texttt{Mat image\_grayscale\_copy = \href{http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html\#imread}{imread}("myimage.jpg", 0);}\\ +\texttt{\href{http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html\#imwrite}{imwrite}("myimage.jpg", image);}\\ +\texttt{Mat image\_color\_copy = \href{http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html\#imread}{imread}("myimage.jpg", 1);}\\ +\texttt{Mat image\_grayscale\_copy = \href{http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html\#imread}{imread}("myimage.jpg", 0);}\\ \end{tabbing} \emph{The functions can read/write images in the following formats: \textbf{BMP (.bmp), JPEG (.jpg, .jpeg), TIFF (.tif, .tiff), PNG (.png), PBM/PGM/PPM (.p?m), Sun Raster (.sr), JPEG 2000 (.jp2)}. Every format supports 8-bit, 1- or 3-channel images. Some formats (PNG, JPEG 2000) support 16 bits per channel.} diff --git a/doc/py_tutorials/py_gui/py_video_display/py_video_display.rst b/doc/py_tutorials/py_gui/py_video_display/py_video_display.rst index 56946bc5db..5bdf4fcb87 100644 --- a/doc/py_tutorials/py_gui/py_video_display/py_video_display.rst +++ b/doc/py_tutorials/py_gui/py_video_display/py_video_display.rst @@ -46,7 +46,7 @@ To capture a video, you need to create a **VideoCapture** object. Its argument c Sometimes, ``cap`` may not have initialized the capture. In that case, this code shows error. You can check whether it is initialized or not by the method **cap.isOpened()**. If it is True, OK. Otherwise open it using **cap.open()**. -You can also access some of the features of this video using **cap.get(propId)** method where propId is a number from 0 to 18. Each number denotes a property of the video (if it is applicable to that video) and full details can be seen here: `Property Identifier `_. Some of these values can be modified using **cap.set(propId, value)**. Value is the new value you want. +You can also access some of the features of this video using **cap.get(propId)** method where propId is a number from 0 to 18. Each number denotes a property of the video (if it is applicable to that video) and full details can be seen here: `Property Identifier `_. Some of these values can be modified using **cap.set(propId, value)**. Value is the new value you want. For example, I can check the frame width and height by ``cap.get(3)`` and ``cap.get(4)``. It gives me 640x480 by default. But I want to modify it to 320x240. Just use ``ret = cap.set(3,320)`` and ``ret = cap.set(4,240)``. diff --git a/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.rst b/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.rst index b7cf446687..ca3d75dca3 100644 --- a/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.rst +++ b/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.rst @@ -25,7 +25,7 @@ Here's a sample usage of :operationsonarrays:`dft() ` : :language: cpp :linenos: :tab-width: 4 - :lines: 1-3, 5, 19-20, 23-78 + :lines: 1-4, 6, 20-21, 24-79 Explanation =========== diff --git a/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst b/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst index b6a18fee88..6162985ddb 100644 --- a/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst +++ b/doc/tutorials/core/how_to_scan_images/how_to_scan_images.rst @@ -45,7 +45,7 @@ The final argument is optional. If given the image will be loaded in gray scale .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 48-60 + :lines: 49-61 Here we first use the C++ *stringstream* class to convert the third command line argument from text to an integer format. Then we use a simple look and the upper formula to calculate the lookup table. No OpenCV specific stuff here. @@ -99,7 +99,7 @@ When it comes to performance you cannot beat the classic C style operator[] (poi .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 125-152 + :lines: 126-153 Here we basically just acquire a pointer to the start of each row and go through it until it ends. In the special case that the matrix is stored in a continues manner we only need to request the pointer a single time and go all the way to the end. We need to look out for color images: we have three channels so we need to pass through three times more items in each row. @@ -122,7 +122,7 @@ In case of the efficient way making sure that you pass through the right amount .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 154-182 + :lines: 155-183 In case of color images we have three uchar items per column. This may be considered a short vector of uchar items, that has been baptized in OpenCV with the *Vec3b* name. To access the n-th sub column we use simple operator[] access. It's important to remember that OpenCV iterators go through the columns and automatically skip to the next row. Therefore in case of color images if you use a simple *uchar* iterator you'll be able to access only the blue channel values. @@ -134,7 +134,7 @@ The final method isn't recommended for scanning. It was made to acquire or modif .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 184-216 + :lines: 185-217 The functions takes your input type and coordinates and calculates on the fly the address of the queried item. Then returns a reference to that. This may be a constant when you *get* the value and non-constant when you *set* the value. As a safety step in **debug mode only*** there is performed a check that your input coordinates are valid and does exist. If this isn't the case you'll get a nice output message of this on the standard error output stream. Compared to the efficient way in release mode the only difference in using this is that for every element of the image you'll get a new row pointer for what we use the C operator[] to acquire the column element. @@ -148,14 +148,14 @@ This is a bonus method of achieving lookup table modification in an image. Becau .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 107-110 + :lines: 108-111 Finally call the function (I is our input image and J the output one): .. literalinclude:: ../../../../samples/cpp/tutorial_code/core/how_to_scan_images/how_to_scan_images.cpp :language: cpp :tab-width: 4 - :lines: 115 + :lines: 116 Performance Difference ====================== diff --git a/doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.rst b/doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.rst index 9285509b07..9d4189363f 100644 --- a/doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.rst +++ b/doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.rst @@ -77,7 +77,7 @@ Now that you have the basics done :download:`here's <../../../../samples/cpp/tut :language: cpp :linenos: :tab-width: 4 - :lines: 1-9, 22-25, 27-44 + :lines: 1-10, 23-26, 29-46 Here you can observe that with the new structure we have no pointer problems, although it is possible to use the old functions and in the end just transform the result to a *Mat* object. @@ -85,7 +85,7 @@ Here you can observe that with the new structure we have no pointer problems, al :language: cpp :linenos: :tab-width: 4 - :lines: 46-51 + :lines: 48-53 Because, we want to mess around with the images luma component we first convert from the default RGB to the YUV color space and then split the result up into separate planes. Here the program splits: in the first example it processes each plane using one of the three major image scanning algorithms in OpenCV (C [] operator, iterator, individual element access). In a second variant we add to the image some Gaussian noise and then mix together the channels according to some formula. @@ -95,7 +95,7 @@ The scanning version looks like: :language: cpp :linenos: :tab-width: 4 - :lines: 55-75 + :lines: 57-77 Here you can observe that we may go through all the pixels of an image in three fashions: an iterator, a C pointer and an individual element access style. You can read a more in-depth description of these in the :ref:`howToScanImagesOpenCV` tutorial. Converting from the old function names is easy. Just remove the cv prefix and use the new *Mat* data structure. Here's an example of this by using the weighted addition function: @@ -103,7 +103,7 @@ Here you can observe that we may go through all the pixels of an image in three :language: cpp :linenos: :tab-width: 4 - :lines: 79-112 + :lines: 81-113 As you may observe the *planes* variable is of type *Mat*. However, converting from *Mat* to *IplImage* is easy and made automatically with a simple assignment operator. @@ -111,7 +111,7 @@ As you may observe the *planes* variable is of type *Mat*. However, converting f :language: cpp :linenos: :tab-width: 4 - :lines: 115-127 + :lines: 117-129 The new *imshow* highgui function accepts both the *Mat* and *IplImage* data structures. Compile and run the program and if the first image below is your input you may get either the first or second as output: diff --git a/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst b/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst index 736aceb02d..67517d32f1 100644 --- a/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst +++ b/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.rst @@ -86,7 +86,7 @@ Each of the building components has their own valid domains. This leads to the d Creating a *Mat* object explicitly ================================== -In the :ref:`Load_Save_Image` tutorial you have already learned how to write a matrix to an image file by using the :readwriteimagevideo:`imwrite() ` function. However, for debugging purposes it's much more convenient to see the actual values. You can do this using the << operator of *Mat*. Be aware that this only works for two dimensional matrices. +In the :ref:`Load_Save_Image` tutorial you have already learned how to write a matrix to an image file by using the :readwriteimage:`imwrite() ` function. However, for debugging purposes it's much more convenient to see the actual values. You can do this using the << operator of *Mat*. Be aware that this only works for two dimensional matrices. Although *Mat* works really well as an image container, it is also a general matrix class. Therefore, it is possible to create and manipulate multidimensional matrices. You can create a Mat object in multiple ways: diff --git a/doc/tutorials/core/table_of_content_core/table_of_content_core.rst b/doc/tutorials/core/table_of_content_core/table_of_content_core.rst index 1fcf4ee2b1..ea5756da23 100644 --- a/doc/tutorials/core/table_of_content_core/table_of_content_core.rst +++ b/doc/tutorials/core/table_of_content_core/table_of_content_core.rst @@ -200,7 +200,6 @@ Here you will learn the about the basic building blocks of the library. A must r :height: 90pt :width: 90pt - =============== ====================================================== + .. tabularcolumns:: m{100pt} m{300pt} .. cssclass:: toctableopencv @@ -221,8 +220,6 @@ Here you will learn the about the basic building blocks of the library. A must r :width: 90pt .. |Author_ElenaG| unicode:: Elena U+0020 Gvozdeva - =============== ====================================================== - .. raw:: latex \pagebreak diff --git a/doc/tutorials/features2d/akaze_matching/akaze_matching.rst b/doc/tutorials/features2d/akaze_matching/akaze_matching.rst new file mode 100644 index 0000000000..3fe5df4f62 --- /dev/null +++ b/doc/tutorials/features2d/akaze_matching/akaze_matching.rst @@ -0,0 +1,161 @@ +.. _akazeMatching: + + +AKAZE local features matching +****************************** + +Introduction +------------------ + +In this tutorial we will learn how to use [AKAZE]_ local features to detect and match keypoints on two images. + +We will find keypoints on a pair of images with given homography matrix, +match them and count the number of inliers (i. e. matches that fit in the given homography). + +You can find expanded version of this example here: https://github.com/pablofdezalc/test_kaze_akaze_opencv + +.. [AKAZE] Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces. Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli. In British Machine Vision Conference (BMVC), Bristol, UK, September 2013. + +Data +------------------ +We are going to use images 1 and 3 from *Graffity* sequence of Oxford dataset. + +.. image:: images/graf.png + :height: 200pt + :width: 320pt + :alt: Graffity + :align: center + +Homography is given by a 3 by 3 matrix: + +.. code-block:: none + + 7.6285898e-01 -2.9922929e-01 2.2567123e+02 + 3.3443473e-01 1.0143901e+00 -7.6999973e+01 + 3.4663091e-04 -1.4364524e-05 1.0000000e+00 + +You can find the images (*graf1.png*, *graf3.png*) and homography (*H1to3p.xml*) in *opencv/samples/cpp*. + +Source Code +=========== +.. literalinclude:: ../../../../samples/cpp/tutorial_code/features2D/AKAZE_match.cpp + :language: cpp + :linenos: + :tab-width: 4 + +Explanation +=========== + +1. **Load images and homography** + + .. code-block:: cpp + + Mat img1 = imread("graf1.png", IMREAD_GRAYSCALE); + Mat img2 = imread("graf3.png", IMREAD_GRAYSCALE); + + Mat homography; + FileStorage fs("H1to3p.xml", FileStorage::READ); + fs.getFirstTopLevelNode() >> homography; + + We are loading grayscale images here. Homography is stored in the xml created with FileStorage. + +2. **Detect keypoints and compute descriptors using AKAZE** + + .. code-block:: cpp + + vector kpts1, kpts2; + Mat desc1, desc2; + + AKAZE akaze; + akaze(img1, noArray(), kpts1, desc1); + akaze(img2, noArray(), kpts2, desc2); + + We create AKAZE object and use it's *operator()* functionality. Since we don't need the *mask* parameter, *noArray()* is used. + +3. **Use brute-force matcher to find 2-nn matches** + + .. code-block:: cpp + + BFMatcher matcher(NORM_HAMMING); + vector< vector > nn_matches; + matcher.knnMatch(desc1, desc2, nn_matches, 2); + + We use Hamming distance, because AKAZE uses binary descriptor by default. + +4. **Use 2-nn matches to find correct keypoint matches** + + .. code-block:: cpp + + for(size_t i = 0; i < nn_matches.size(); i++) { + DMatch first = nn_matches[i][0]; + float dist1 = nn_matches[i][0].distance; + float dist2 = nn_matches[i][1].distance; + + if(dist1 < nn_match_ratio * dist2) { + matched1.push_back(kpts1[first.queryIdx]); + matched2.push_back(kpts2[first.trainIdx]); + } + } + + If the closest match is *ratio* closer than the second closest one, then the match is correct. + +5. **Check if our matches fit in the homography model** + + .. code-block:: cpp + + for(int i = 0; i < matched1.size(); i++) { + Mat col = Mat::ones(3, 1, CV_64F); + col.at(0) = matched1[i].pt.x; + col.at(1) = matched1[i].pt.y; + + col = homography * col; + col /= col.at(2); + float dist = sqrt( pow(col.at(0) - matched2[i].pt.x, 2) + + pow(col.at(1) - matched2[i].pt.y, 2)); + + if(dist < inlier_threshold) { + int new_i = inliers1.size(); + inliers1.push_back(matched1[i]); + inliers2.push_back(matched2[i]); + good_matches.push_back(DMatch(new_i, new_i, 0)); + } + } + + If the distance from first keypoint's projection to the second keypoint is less than threshold, then it it fits in the homography. + + We create a new set of matches for the inliers, because it is required by the drawing function. + +6. **Output results** + + .. code-block:: cpp + + Mat res; + drawMatches(img1, inliers1, img2, inliers2, good_matches, res); + imwrite("res.png", res); + ... + + Here we save the resulting image and print some statistics. + +Results +======= + +Found matches +-------------- + +.. image:: images/res.png + :height: 200pt + :width: 320pt + :alt: Matches + :align: center + +A-KAZE Matching Results +-------------------------- +Keypoints 1: 2943 + +Keypoints 2: 3511 + +Matches: 447 + +Inliers: 308 + +Inliers Ratio: 0.689038 diff --git a/doc/tutorials/features2d/akaze_matching/images/graf.png b/doc/tutorials/features2d/akaze_matching/images/graf.png new file mode 100644 index 0000000000..d9213bcdf9 Binary files /dev/null and b/doc/tutorials/features2d/akaze_matching/images/graf.png differ diff --git a/doc/tutorials/features2d/akaze_matching/images/res.png b/doc/tutorials/features2d/akaze_matching/images/res.png new file mode 100644 index 0000000000..23fd5bd48f Binary files /dev/null and b/doc/tutorials/features2d/akaze_matching/images/res.png differ diff --git a/doc/tutorials/features2d/feature_description/feature_description.rst b/doc/tutorials/features2d/feature_description/feature_description.rst index 967b32d716..17dee727e7 100644 --- a/doc/tutorials/features2d/feature_description/feature_description.rst +++ b/doc/tutorials/features2d/feature_description/feature_description.rst @@ -23,7 +23,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -32,9 +32,10 @@ This tutorial code's is shown lines below. You can also download it from `here < #include "opencv2/core.hpp" #include "opencv2/features2d.hpp" #include "opencv2/highgui.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); @@ -50,25 +51,19 @@ This tutorial code's is shown lines below. You can also download it from `here < if( !img_1.data || !img_2.data ) { return -1; } - //-- Step 1: Detect the keypoints using SURF Detector + //-- Step 1: Detect the keypoints using SURF Detector, compute the descriptors int minHessian = 400; - SurfFeatureDetector detector( minHessian ); + Ptr detector = SURF::create(); + detector->setMinHessian(minHessian); std::vector keypoints_1, keypoints_2; - - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); - - //-- Step 2: Calculate descriptors (feature vectors) - SurfDescriptorExtractor extractor; - Mat descriptors_1, descriptors_2; - extractor.compute( img_1, keypoints_1, descriptors_1 ); - extractor.compute( img_2, keypoints_2, descriptors_2 ); + detector->detectAndCompute( img_1, keypoints_1, descriptors_1 ); + detector->detectAndCompute( img_2, keypoints_2, descriptors_2 ); - //-- Step 3: Matching descriptor vectors with a brute force matcher + //-- Step 2: Matching descriptor vectors with a brute force matcher BFMatcher matcher(NORM_L2); std::vector< DMatch > matches; matcher.match( descriptors_1, descriptors_2, matches ); diff --git a/doc/tutorials/features2d/feature_detection/feature_detection.rst b/doc/tutorials/features2d/feature_detection/feature_detection.rst index 7705a13719..685a05878e 100644 --- a/doc/tutorials/features2d/feature_detection/feature_detection.rst +++ b/doc/tutorials/features2d/feature_detection/feature_detection.rst @@ -22,7 +22,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -30,11 +30,11 @@ This tutorial code's is shown lines below. You can also download it from `here < #include #include "opencv2/core.hpp" #include "opencv2/features2d.hpp" - #include "opencv2/nonfree/features2d.hpp" + #include "opencv2/xfeatures2d.hpp" #include "opencv2/highgui.hpp" - #include "opencv2/nonfree.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); @@ -53,12 +53,12 @@ This tutorial code's is shown lines below. You can also download it from `here < //-- Step 1: Detect the keypoints using SURF Detector int minHessian = 400; - SurfFeatureDetector detector( minHessian ); + Ptr detector = SURF::create( minHessian ); std::vector keypoints_1, keypoints_2; - detector.detect( img_1, keypoints_1 ); - detector.detect( img_2, keypoints_2 ); + detector->detect( img_1, keypoints_1 ); + detector->detect( img_2, keypoints_2 ); //-- Draw keypoints Mat img_keypoints_1; Mat img_keypoints_2; diff --git a/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst b/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst index e4630c97ae..6be334b9d7 100644 --- a/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst +++ b/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.rst @@ -19,10 +19,116 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. + +.. code-block:: cpp + + /** + * @file SURF_FlannMatcher + * @brief SURF detector + descriptor + FLANN Matcher + * @author A. Huaman + */ + + #include + #include + #include + #include + #include "opencv2/core.hpp" + #include "opencv2/features2d.hpp" + #include "opencv2/imgcodecs.hpp" + #include "opencv2/highgui.hpp" + #include "opencv2/xfeatures2d.hpp" + + using namespace std; + using namespace cv; + using namespace cv::xfeatures2d; + + void readme(); + + /** + * @function main + * @brief Main function + */ + int main( int argc, char** argv ) + { + if( argc != 3 ) + { readme(); return -1; } + + Mat img_1 = imread( argv[1], IMREAD_GRAYSCALE ); + Mat img_2 = imread( argv[2], IMREAD_GRAYSCALE ); + + if( !img_1.data || !img_2.data ) + { std::cout<< " --(!) Error reading images " << std::endl; return -1; } + + //-- Step 1: Detect the keypoints using SURF Detector + int minHessian = 400; + + SurfFeatureDetector detector( minHessian ); + + std::vector keypoints_1, keypoints_2; + + detector.detect( img_1, keypoints_1 ); + detector.detect( img_2, keypoints_2 ); + + //-- Step 2: Calculate descriptors (feature vectors) + SurfDescriptorExtractor extractor; + + Mat descriptors_1, descriptors_2; + + extractor.compute( img_1, keypoints_1, descriptors_1 ); + extractor.compute( img_2, keypoints_2, descriptors_2 ); + + //-- Step 3: Matching descriptor vectors using FLANN matcher + FlannBasedMatcher matcher; + std::vector< DMatch > matches; + matcher.match( descriptors_1, descriptors_2, matches ); + + double max_dist = 0; double min_dist = 100; + + //-- Quick calculation of max and min distances between keypoints + for( int i = 0; i < descriptors_1.rows; i++ ) + { double dist = matches[i].distance; + if( dist < min_dist ) min_dist = dist; + if( dist > max_dist ) max_dist = dist; + } + + printf("-- Max dist : %f \n", max_dist ); + printf("-- Min dist : %f \n", min_dist ); + + //-- Draw only "good" matches (i.e. whose distance is less than 2*min_dist, + //-- or a small arbitary value ( 0.02 ) in the event that min_dist is very + //-- small) + //-- PS.- radiusMatch can also be used here. + std::vector< DMatch > good_matches; + + for( int i = 0; i < descriptors_1.rows; i++ ) + { if( matches[i].distance <= max(2*min_dist, 0.02) ) + { good_matches.push_back( matches[i]); } + } + + //-- Draw only "good" matches + Mat img_matches; + drawMatches( img_1, keypoints_1, img_2, keypoints_2, + good_matches, img_matches, Scalar::all(-1), Scalar::all(-1), + vector(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS ); + + //-- Show detected matches + imshow( "Good Matches", img_matches ); + + for( int i = 0; i < (int)good_matches.size(); i++ ) + { printf( "-- Good Match [%d] Keypoint 1: %d -- Keypoint 2: %d \n", i, good_matches[i].queryIdx, good_matches[i].trainIdx ); } + + waitKey(0); + + return 0; + } + + /** + * @function readme + */ + void readme() + { std::cout << " Usage: ./SURF_FlannMatcher " << std::endl; } -.. literalinclude:: ../../../../samples/cpp/tutorial_code/features2D/SURF_FlannMatcher.cpp - :language: cpp Explanation ============ diff --git a/doc/tutorials/features2d/feature_homography/feature_homography.rst b/doc/tutorials/features2d/feature_homography/feature_homography.rst index 3040ed7d75..91e70c9a6a 100644 --- a/doc/tutorials/features2d/feature_homography/feature_homography.rst +++ b/doc/tutorials/features2d/feature_homography/feature_homography.rst @@ -20,7 +20,7 @@ Theory Code ==== -This tutorial code's is shown lines below. You can also download it from `here `_ +This tutorial code's is shown lines below. .. code-block:: cpp @@ -30,9 +30,10 @@ This tutorial code's is shown lines below. You can also download it from `here < #include "opencv2/features2d.hpp" #include "opencv2/highgui.hpp" #include "opencv2/calib3d.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" using namespace cv; + using namespace cv::xfeatures2d; void readme(); diff --git a/doc/tutorials/features2d/table_of_content_features2d/images/AKAZE_Match_Tutorial_Cover.png b/doc/tutorials/features2d/table_of_content_features2d/images/AKAZE_Match_Tutorial_Cover.png new file mode 100755 index 0000000000..fdf2007ba2 Binary files /dev/null and b/doc/tutorials/features2d/table_of_content_features2d/images/AKAZE_Match_Tutorial_Cover.png differ diff --git a/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.rst b/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.rst index f4107804bb..bb79ca32f9 100644 --- a/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.rst +++ b/doc/tutorials/features2d/table_of_content_features2d/table_of_content_features2d.rst @@ -183,6 +183,25 @@ Learn about how to use the feature points detectors, descriptors and matching f :height: 90pt :width: 90pt ++ + .. tabularcolumns:: m{100pt} m{300pt} + .. cssclass:: toctableopencv + + ===================== ============================================== + |AkazeMatch| **Title:** :ref:`akazeMatching` + + *Compatibility:* > OpenCV 3.0 + + *Author:* Fedor Morozov + + Use *AKAZE* local features to find correspondence between two images. + + ===================== ============================================== + + .. |AkazeMatch| image:: images/AKAZE_Match_Tutorial_Cover.png + :height: 90pt + :width: 90pt + .. raw:: latex \pagebreak @@ -201,3 +220,4 @@ Learn about how to use the feature points detectors, descriptors and matching f ../feature_flann_matcher/feature_flann_matcher ../feature_homography/feature_homography ../detection_of_planar_objects/detection_of_planar_objects + ../akaze_matching/akaze_matching diff --git a/doc/tutorials/highgui/video-input-psnr-ssim/video-input-psnr-ssim.rst b/doc/tutorials/highgui/video-input-psnr-ssim/video-input-psnr-ssim.rst index 6f5476cf05..8f63bf1a2e 100644 --- a/doc/tutorials/highgui/video-input-psnr-ssim/video-input-psnr-ssim.rst +++ b/doc/tutorials/highgui/video-input-psnr-ssim/video-input-psnr-ssim.rst @@ -22,7 +22,7 @@ As a test case where to show off these using OpenCV I've created a small program :language: cpp :linenos: :tab-width: 4 - :lines: 1-14, 28-29, 31-205 + :lines: 1-15, 29-31, 33-208 How to read a video stream (online-camera or offline-file)? =========================================================== diff --git a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst index 9545bee286..8c470925ff 100644 --- a/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst +++ b/doc/tutorials/introduction/android_binary_package/android_dev_intro.rst @@ -5,7 +5,7 @@ Introduction into Android Development ************************************* -This guide was designed to help you in learning Android development basics and seting up your +This guide was designed to help you in learning Android development basics and setting up your working environment quickly. It was written with Windows 7 in mind, though it would work with Linux (Ubuntu), Mac OS X and any other OS supported by Android SDK. diff --git a/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.rst b/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.rst index 248abdf6d2..0ad47863eb 100644 --- a/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.rst +++ b/doc/tutorials/introduction/clojure_dev_intro/clojure_dev_intro.rst @@ -656,7 +656,7 @@ classes we're going to use: Results: Stored in vars *1, *2, *3, an exception in *e user=> (import '[org.opencv.core Mat Size CvType] - '[org.opencv.highgui Highgui] + '[org.opencv.imgcodecs Imgcodecs] '[org.opencv.imgproc Imgproc]) org.opencv.imgproc.Imgproc diff --git a/doc/tutorials/introduction/desktop_java/java_dev_intro.rst b/doc/tutorials/introduction/desktop_java/java_dev_intro.rst index d5cb31f894..513f39d106 100644 --- a/doc/tutorials/introduction/desktop_java/java_dev_intro.rst +++ b/doc/tutorials/introduction/desktop_java/java_dev_intro.rst @@ -373,7 +373,7 @@ Now modify src/main/java/HelloOpenCV.java so it contains the following Java code import org.opencv.core.Point; import org.opencv.core.Rect; import org.opencv.core.Scalar; - import org.opencv.highgui.Highgui; + import org.opencv.imgcodecs.Imgcodecs; import org.opencv.objdetect.CascadeClassifier; // @@ -387,7 +387,7 @@ Now modify src/main/java/HelloOpenCV.java so it contains the following Java code // Create a face detector from the cascade file in the resources // directory. CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("/lbpcascade_frontalface.xml").getPath()); - Mat image = Highgui.imread(getClass().getResource("/lena.png").getPath()); + Mat image = Imgcodecs.imread(getClass().getResource("/lena.png").getPath()); // Detect faces in the image. // MatOfRect is a special container class for Rect. @@ -404,7 +404,7 @@ Now modify src/main/java/HelloOpenCV.java so it contains the following Java code // Save the visualized detection. String filename = "faceDetection.png"; System.out.println(String.format("Writing %s", filename)); - Highgui.imwrite(filename, image); + Imgcodecs.imwrite(filename, image); } } diff --git a/doc/tutorials/introduction/display_image/display_image.rst b/doc/tutorials/introduction/display_image/display_image.rst index 6b30b7c295..fc6e6ca5cc 100644 --- a/doc/tutorials/introduction/display_image/display_image.rst +++ b/doc/tutorials/introduction/display_image/display_image.rst @@ -39,28 +39,28 @@ You'll almost always end up using the: .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp :tab-width: 4 - :lines: 1-3 + :lines: 1-4 We also include the *iostream* to facilitate console line output and input. To avoid data structure and function name conflicts with other libraries, OpenCV has its own namespace: *cv*. To avoid the need appending prior each of these the *cv::* keyword you can import the namespace in the whole file by using the lines: .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp :tab-width: 4 - :lines: 5-6 + :lines: 6-7 This is true for the STL library too (used for console I/O). Now, let's analyze the *main* function. We start up assuring that we acquire a valid image name argument from the command line. .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp :tab-width: 4 - :lines: 10-14 + :lines: 11-15 Then create a *Mat* object that will store the data of the loaded image. .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp :tab-width: 4 - :lines: 16 + :lines: 17 Now we call the :imread:`imread <>` function which loads the image name specified by the first argument (*argv[1]*). The second argument specifies the format in what we want the image. This may be: @@ -73,7 +73,7 @@ Now we call the :imread:`imread <>` function which loads the image name specifie .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp :tab-width: 4 - :lines: 17 + :lines: 18 .. note:: @@ -88,21 +88,21 @@ After checking that the image data was loaded correctly, we want to display our .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp - :lines: 25 + :lines: 26 :tab-width: 4 Finally, to update the content of the OpenCV window with a new image use the :imshow:`imshow <>` function. Specify the OpenCV window name to update and the image to use during this operation: .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp - :lines: 26 + :lines: 27 :tab-width: 4 Because we want our window to be displayed until the user presses a key (otherwise the program would end far too quickly), we use the :wait_key:`waitKey <>` function whose only parameter is just how long should it wait for a user input (measured in milliseconds). Zero means to wait forever. .. literalinclude:: ../../../../samples/cpp/tutorial_code/introduction/display_image/display_image.cpp :language: cpp - :lines: 28 + :lines: 29 :tab-width: 4 Result diff --git a/doc/tutorials/introduction/how_to_write_a_tutorial/how_to_write_a_tutorial.rst b/doc/tutorials/introduction/how_to_write_a_tutorial/how_to_write_a_tutorial.rst index 5ae5062492..7696be4a13 100644 --- a/doc/tutorials/introduction/how_to_write_a_tutorial/how_to_write_a_tutorial.rst +++ b/doc/tutorials/introduction/how_to_write_a_tutorial/how_to_write_a_tutorial.rst @@ -349,7 +349,7 @@ Now here's our recommendation for the structure of the tutorial (although, remem :language: cpp :linenos: :tab-width: 4 - :lines: 1-8, 21-22, 24- + :lines: 1-8, 21-23, 25- After the directive you specify a relative path to the file from what to import. It has four options: the language to use, if you add the ``:linenos:`` the line numbers will be shown, you can specify the tab size with the ``:tab-width:`` and you do not need to load the whole file, you can show just the important lines. Use the *lines* option to do not show redundant information (such as the *help* function). Here basically you specify ranges, if the second range line number is missing than that means that until the end of the file. The ranges specified here do no need to be in an ascending order, you may even reorganize the structure of how you want to show your sample inside the tutorial. @@ -361,16 +361,16 @@ Now here's our recommendation for the structure of the tutorial (although, remem # ---- External links for tutorials ----------------- extlinks = { - 'hgvideo' : ('http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#%s', None) + 'rwimg' : ('http://docs.opencv.org/modules/imgcodecs/doc/reading_and_writing_images.html#%s', None) } - In short here we defined a new **hgvideo** directive that refers to an external webpage link. Its usage is: + In short here we defined a new **rwimg** directive that refers to an external webpage link. Its usage is: .. code-block:: rst - A sample function of the highgui modules image write and read page is the :hgvideo:`imread() function `. + A sample function of the highgui modules image write and read page is the :rwimg:`imread() function `. - Which turns to: A sample function of the highgui modules image write and read page is the :hgvideo:`imread() function `. The argument you give between the <> will be put in place of the ``%s`` in the upper definition, and as the link will anchor to the correct function. To find out the anchor of a given function just open up a web page, search for the function and click on it. In the address bar it should appear like: ``http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#imread`` . Look here for the name of the directives for each page of the OpenCV reference manual. If none present for one of them feel free to add one for it. + Which turns to: A sample function of the highgui modules image write and read page is the :rwimg:`imread() function `. The argument you give between the <> will be put in place of the ``%s`` in the upper definition, and as the link will anchor to the correct function. To find out the anchor of a given function just open up a web page, search for the function and click on it. In the address bar it should appear like: ``http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images.html#imread`` . Look here for the name of the directives for each page of the OpenCV reference manual. If none present for one of them feel free to add one for it. For formulas you can add LATEX code that will translate in the web pages into images. You do this by using the *math* directive. A usage tip: diff --git a/doc/tutorials/introduction/load_save_image/load_save_image.rst b/doc/tutorials/introduction/load_save_image/load_save_image.rst index dec75c1958..cde81e12b5 100644 --- a/doc/tutorials/introduction/load_save_image/load_save_image.rst +++ b/doc/tutorials/introduction/load_save_image/load_save_image.rst @@ -5,7 +5,7 @@ Load, Modify, and Save an Image .. note:: - We assume that by now you know how to load an image using :readwriteimagevideo:`imread ` and to display it in a window (using :user_interface:`imshow `). Read the :ref:`Display_Image` tutorial otherwise. + We assume that by now you know how to load an image using :readwriteimage:`imread ` and to display it in a window (using :user_interface:`imshow `). Read the :ref:`Display_Image` tutorial otherwise. Goals ====== @@ -14,9 +14,9 @@ In this tutorial you will learn how to: .. container:: enumeratevisibleitemswithsquare - * Load an image using :readwriteimagevideo:`imread ` + * Load an image using :readwriteimage:`imread ` * Transform an image from BGR to Grayscale format by using :miscellaneous_transformations:`cvtColor ` - * Save your transformed image in a file on disk (using :readwriteimagevideo:`imwrite `) + * Save your transformed image in a file on disk (using :readwriteimage:`imwrite `) Code ====== @@ -62,7 +62,7 @@ Here it is: Explanation ============ -#. We begin by loading an image using :readwriteimagevideo:`imread `, located in the path given by *imageName*. For this example, assume you are loading a RGB image. +#. We begin by loading an image using :readwriteimage:`imread `, located in the path given by *imageName*. For this example, assume you are loading a RGB image. #. Now we are going to convert our image from BGR to Grayscale format. OpenCV has a really nice function to do this kind of transformations: @@ -76,9 +76,9 @@ Explanation * a source image (*image*) * a destination image (*gray_image*), in which we will save the converted image. - * an additional parameter that indicates what kind of transformation will be performed. In this case we use **CV_BGR2GRAY** (because of :readwriteimagevideo:`imread ` has BGR default channel order in case of color images). + * an additional parameter that indicates what kind of transformation will be performed. In this case we use **CV_BGR2GRAY** (because of :readwriteimage:`imread ` has BGR default channel order in case of color images). -#. So now we have our new *gray_image* and want to save it on disk (otherwise it will get lost after the program ends). To save it, we will use a function analagous to :readwriteimagevideo:`imread `: :readwriteimagevideo:`imwrite ` +#. So now we have our new *gray_image* and want to save it on disk (otherwise it will get lost after the program ends). To save it, we will use a function analagous to :readwriteimage:`imread `: :readwriteimage:`imwrite ` .. code-block:: cpp diff --git a/doc/tutorials/introduction/windows_visual_studio_image_watch/windows_visual_studio_image_watch.rst b/doc/tutorials/introduction/windows_visual_studio_image_watch/windows_visual_studio_image_watch.rst index 5a68dad5c9..21f679c971 100644 --- a/doc/tutorials/introduction/windows_visual_studio_image_watch/windows_visual_studio_image_watch.rst +++ b/doc/tutorials/introduction/windows_visual_studio_image_watch/windows_visual_studio_image_watch.rst @@ -32,7 +32,7 @@ Image Watch works with any existing project that uses OpenCV image objects (for #include // std::cout #include // cv::Mat - #include // cv::imread() + #include // cv::imread() #include // cv::Canny() using namespace std; diff --git a/doc/tutorials/ios/video_processing/video_processing.rst b/doc/tutorials/ios/video_processing/video_processing.rst index 84ccfcf971..eb5da5b111 100644 --- a/doc/tutorials/ios/video_processing/video_processing.rst +++ b/doc/tutorials/ios/video_processing/video_processing.rst @@ -80,7 +80,7 @@ We add a camera controller to the view controller and initialize it when the vie .. code-block:: objc :linenos: - #import + #import using namespace cv; diff --git a/doc/tutorials/ml/non_linear_svms/non_linear_svms.rst b/doc/tutorials/ml/non_linear_svms/non_linear_svms.rst index 57e0b1b6ea..bd7fde8775 100644 --- a/doc/tutorials/ml/non_linear_svms/non_linear_svms.rst +++ b/doc/tutorials/ml/non_linear_svms/non_linear_svms.rst @@ -73,7 +73,7 @@ You may also find the source code and these video file in the :file:`samples/cpp :language: cpp :linenos: :tab-width: 4 - :lines: 1-11, 22-23, 26- + :lines: 1-12, 23-24, 27- Explanation =========== diff --git a/doc/user_guide/ug_traincascade.rst b/doc/user_guide/ug_traincascade.rst index 601f504382..20c1b1683d 100644 --- a/doc/user_guide/ug_traincascade.rst +++ b/doc/user_guide/ug_traincascade.rst @@ -200,6 +200,12 @@ Command line arguments of ``opencv_traincascade`` application grouped by purpose This argument is actual in case of Haar-like features. If it is specified, the cascade will be saved in the old format. + * ``-numThreads `` + + Maximum number of threads to use during training. Notice that + the actual number of used threads may be lower, depending on + your machine and compilation options. + #. Cascade parameters: diff --git a/include/opencv2/opencv.hpp b/include/opencv2/opencv.hpp index b7c290a49c..fd9ca5898e 100644 --- a/include/opencv2/opencv.hpp +++ b/include/opencv2/opencv.hpp @@ -50,6 +50,8 @@ #include "opencv2/features2d.hpp" #include "opencv2/objdetect.hpp" #include "opencv2/calib3d.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" #include "opencv2/highgui.hpp" #include "opencv2/ml.hpp" diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 400b2a8381..2c6c34304e 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -4,4 +4,4 @@ if(NOT OPENCV_MODULES_PATH) set(OPENCV_MODULES_PATH "${CMAKE_CURRENT_SOURCE_DIR}") endif() -ocv_glob_modules(${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH}) +ocv_glob_modules(${OPENCV_MODULES_PATH} EXTRA ${OPENCV_EXTRA_MODULES_PATH}) diff --git a/modules/androidcamera/camera_wrapper/CMakeLists.txt b/modules/androidcamera/camera_wrapper/CMakeLists.txt index d08e2c469d..c306db1de5 100644 --- a/modules/androidcamera/camera_wrapper/CMakeLists.txt +++ b/modules/androidcamera/camera_wrapper/CMakeLists.txt @@ -46,7 +46,7 @@ ADD_LIBRARY(${the_target} SHARED camera_wrapper.h camera_wrapper.cpp) string(REGEX REPLACE "[.]" "_" LIBRARY_DEF ${ANDROID_VERSION}) add_definitions(-DANDROID_r${LIBRARY_DEF}) -target_link_libraries(${the_target} c m dl utils camera_client binder log) +ocv_target_link_libraries(${the_target} c m dl utils camera_client binder log) if(NOT ANDROID_VERSION VERSION_LESS "3.0.0") target_link_libraries(${the_target} gui ) diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst index b484e8d03c..7a70f084b4 100644 --- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst +++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst @@ -760,6 +760,27 @@ They are :math:`[R_2, -t]`. By decomposing ``E``, you can only get the direction of the translation, so the function returns unit ``t``. +decomposeHomographyMat +-------------------------- +Decompose a homography matrix to rotation(s), translation(s) and plane normal(s). + +.. ocv:function:: int decomposeHomographyMat( InputArray H, InputArray K, OutputArrayOfArrays rotations, OutputArrayOfArrays translations, OutputArrayOfArrays normals) + + :param H: The input homography matrix between two images. + + :param K: The input intrinsic camera calibration matrix. + + :param rotations: Array of rotation matrices. + + :param translations: Array of translation matrices. + + :param normals: Array of plane normal matrices. + +This function extracts relative camera motion between two views observing a planar object from the homography ``H`` induced by the plane. +The intrinsic camera matrix ``K`` must also be provided. The function may return up to four mathematical solution sets. At least two of the +solutions may further be invalidated if point correspondences are available by applying positive depth constraint (all points must be in front of the camera). +The decomposition method is described in detail in [Malis]_. + recoverPose --------------- @@ -862,7 +883,7 @@ is minimized. If the parameter ``method`` is set to the default value 0, the fun uses all the point pairs to compute an initial homography estimate with a simple least-squares scheme. However, if not all of the point pairs ( -:math:`srcPoints_i`,:math:`dstPoints_i` ) fit the rigid perspective transformation (that is, there +:math:`srcPoints_i`, :math:`dstPoints_i` ) fit the rigid perspective transformation (that is, there are some outliers), this initial estimate will be poor. In this case, you can use one of the two robust methods. Both methods, ``RANSAC`` and ``LMeDS`` , try many different random subsets of the corresponding point pairs (of four pairs each), estimate @@ -885,7 +906,7 @@ if there are no outliers and the noise is rather small, use the default method ( The function is used to find initial intrinsic and extrinsic matrices. Homography matrix is determined up to a scale. Thus, it is normalized so that -:math:`h_{33}=1` . +:math:`h_{33}=1`. Note that whenever an H matrix cannot be estimated, an empty one will be returned. .. seealso:: @@ -1500,6 +1521,364 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u :ocv:func:`reprojectImageTo3D` +fisheye +---------- + +The methods in this namespace use a so-called fisheye camera model. :: + + namespace fisheye + { + //! projects 3D points using fisheye model + void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! projects points using fisheye model + void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! distorts 2D points using fisheye model + void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + + //! undistorts 2D points using fisheye model + void undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); + + //! computing undistortion and rectification maps for image transform by cv::remap() + //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used + void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); + + //! undistorts image, optionally changes resolution and camera matrix. + void undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); + + //! estimates new camera matrix for undistortion or rectification + void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + //! performs camera calibaration + double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + + //! stereo rectification estimation + void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0); + + //! performs stereo calibration + double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + }; + + +Definitions: +Let P be a point in 3D of coordinates X in the world reference frame (stored in the matrix X) +The coordinate vector of P in the camera reference frame is: + +.. class:: center +.. math:: + + Xc = R X + T + +where R is the rotation matrix corresponding to the rotation vector om: R = rodrigues(om); +call x, y and z the 3 coordinates of Xc: + +.. class:: center +.. math:: + x = Xc_1 \\ + y = Xc_2 \\ + z = Xc_3 + +The pinehole projection coordinates of P is [a; b] where + +.. class:: center +.. math:: + + a = x / z \ and \ b = y / z \\ + r^2 = a^2 + b^2 \\ + \theta = atan(r) + +Fisheye distortion: + +.. class:: center +.. math:: + + \theta_d = \theta (1 + k_1 \theta^2 + k_2 \theta^4 + k_3 \theta^6 + k_4 \theta^8) + +The distorted point coordinates are [x'; y'] where + +..class:: center +.. math:: + + x' = (\theta_d / r) x \\ + y' = (\theta_d / r) y + +Finally, convertion into pixel coordinates: The final pixel coordinates vector [u; v] where: + +.. class:: center +.. math:: + + u = f_x (x' + \alpha y') + c_x \\ + v = f_y yy + c_y + +fisheye::projectPoints +--------------------------- +Projects points using fisheye model + +.. ocv:function:: void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) + +.. ocv:function:: void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()) + + :param objectPoints: Array of object points, 1xN/Nx1 3-channel (or ``vector`` ), where N is the number of points in the view. + + :param rvec: Rotation vector. See :ocv:func:`Rodrigues` for details. + + :param tvec: Translation vector. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param alpha: The skew coefficient. + + :param imagePoints: Output array of image points, 2xN/Nx2 1-channel or 1xN/Nx1 2-channel, or ``vector``. + + :param jacobian: Optional output 2Nx15 jacobian matrix of derivatives of image points with respect to components of the focal lengths, coordinates of the principal point, distortion coefficients, rotation vector, translation vector, and the skew. In the old interface different components of the jacobian are returned via different output parameters. + +The function computes projections of 3D points to the image plane given intrinsic and extrinsic camera parameters. Optionally, the function computes Jacobians - matrices of partial derivatives of image points coordinates (as functions of all the input parameters) with respect to the particular parameters, intrinsic and/or extrinsic. + +fisheye::distortPoints +------------------------- +Distorts 2D points using fisheye model. + +.. ocv:function:: void fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0) + + :param undistorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param alpha: The skew coefficient. + + :param distorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . + +fisheye::undistortPoints +----------------------------- +Undistorts 2D points using fisheye model + +.. ocv:function:: void fisheye::undistortPoints(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()) + + :param distorted: Array of object points, 1xN/Nx1 2-channel (or ``vector`` ), where N is the number of points in the view. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param undistorted: Output array of image points, 1xN/Nx1 2-channel, or ``vector`` . + + +fisheye::initUndistortRectifyMap +------------------------------------- +Computes undistortion and rectification maps for image transform by cv::remap(). If D is empty zero distortion is used, if R or P is empty identity matrixes are used. + +.. ocv:function:: void fisheye::initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, const cv::Size& size, int m1type, OutputArray map1, OutputArray map2) + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param size: Undistorted image size. + + :param m1type: Type of the first output map that can be CV_32FC1 or CV_16SC2 . See convertMaps() for details. + + :param map1: The first output map. + + :param map2: The second output map. + +fisheye::undistortImage +----------------------- +Transforms an image to compensate for fisheye lens distortion. + +.. ocv:function:: void fisheye::undistortImage(InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()) + + :param distorted: image with fisheye lens distortion. + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param Knew: Camera matrix of the distorted image. By default, it is the identity matrix but you may additionally scale and shift the result by using a different matrix. + + :param undistorted: Output image with compensated fisheye lens distortion. + +The function transforms an image to compensate radial and tangential lens distortion. + +The function is simply a combination of +:ocv:func:`fisheye::initUndistortRectifyMap` (with unity ``R`` ) and +:ocv:func:`remap` (with bilinear interpolation). See the former function for details of the transformation being performed. + +See below the results of undistortImage. + * a\) result of :ocv:func:`undistort` of perspective camera model (all possible coefficients (k_1, k_2, k_3, k_4, k_5, k_6) of distortion were optimized under calibration) + * b\) result of :ocv:func:`fisheye::undistortImage` of fisheye camera model (all possible coefficients (k_1, k_2, k_3, k_4) of fisheye distortion were optimized under calibration) + * c\) original image was captured with fisheye lens + +Pictures a) and b) almost the same. But if we consider points of image located far from the center of image, we can notice that on image a) these points are distorted. + +.. image:: pics/fisheye_undistorted.jpg + + +fisheye::estimateNewCameraMatrixForUndistortRectify +---------------------------------------------------------- +Estimates new camera matrix for undistortion or rectification. + +.. ocv:function:: void fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0) + + :param K: Camera matrix :math:`K = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{_1}`. + + :param D: Input vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param R: Rectification transformation in the object space: 3x3 1-channel, or vector: 3x1/1x3 1-channel or 1x1 3-channel + + :param P: New camera matrix (3x3) or new projection matrix (3x4) + + :param balance: Sets the new focal length in range between the min focal length and the max focal length. Balance is in range of [0, 1]. + + :param fov_scale: Divisor for new focal length. + +fisheye::stereoRectify +------------------------------ +Stereo rectification for fisheye camera model + +.. ocv:function:: void fisheye::stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), double balance = 0.0, double fov_scale = 1.0) + + :param K1: First camera matrix. + + :param K2: Second camera matrix. + + :param D1: First camera distortion parameters. + + :param D2: Second camera distortion parameters. + + :param imageSize: Size of the image used for stereo calibration. + + :param rotation: Rotation matrix between the coordinate systems of the first and the second cameras. + + :param tvec: Translation vector between coordinate systems of the cameras. + + :param R1: Output 3x3 rectification transform (rotation matrix) for the first camera. + + :param R2: Output 3x3 rectification transform (rotation matrix) for the second camera. + + :param P1: Output 3x4 projection matrix in the new (rectified) coordinate systems for the first camera. + + :param P2: Output 3x4 projection matrix in the new (rectified) coordinate systems for the second camera. + + :param Q: Output :math:`4 \times 4` disparity-to-depth mapping matrix (see :ocv:func:`reprojectImageTo3D` ). + + :param flags: Operation flags that may be zero or ``CV_CALIB_ZERO_DISPARITY`` . If the flag is set, the function makes the principal points of each camera have the same pixel coordinates in the rectified views. And if the flag is not set, the function may still shift the images in the horizontal or vertical direction (depending on the orientation of epipolar lines) to maximize the useful image area. + + :param alpha: Free scaling parameter. If it is -1 or absent, the function performs the default scaling. Otherwise, the parameter should be between 0 and 1. ``alpha=0`` means that the rectified images are zoomed and shifted so that only valid pixels are visible (no black areas after rectification). ``alpha=1`` means that the rectified image is decimated and shifted so that all the pixels from the original images from the cameras are retained in the rectified images (no source image pixels are lost). Obviously, any intermediate value yields an intermediate result between those two extreme cases. + + :param newImageSize: New image resolution after rectification. The same size should be passed to :ocv:func:`initUndistortRectifyMap` (see the ``stereo_calib.cpp`` sample in OpenCV samples directory). When (0,0) is passed (default), it is set to the original ``imageSize`` . Setting it to larger value can help you preserve details in the original image, especially when there is a big radial distortion. + + :param roi1: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). + + :param roi2: Optional output rectangles inside the rectified images where all the pixels are valid. If ``alpha=0`` , the ROIs cover the whole images. Otherwise, they are likely to be smaller (see the picture below). + + :param balance: Sets the new focal length in range between the min focal length and the max focal length. Balance is in range of [0, 1]. + + :param fov_scale: Divisor for new focal length. + + + +fisheye::calibrate +---------------------------- +Performs camera calibaration + +.. ocv:function:: double fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) + + :param objectPoints: vector of vectors of calibration pattern points in the calibration pattern coordinate space. + + :param imagePoints: vector of vectors of the projections of calibration pattern points. ``imagePoints.size()`` and ``objectPoints.size()`` and ``imagePoints[i].size()`` must be equal to ``objectPoints[i].size()`` for each ``i``. + + :param image_size: Size of the image used only to initialize the intrinsic camera matrix. + + :param K: Output 3x3 floating-point camera matrix :math:`A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}` . If ``fisheye::CALIB_USE_INTRINSIC_GUESS``/ is specified, some or all of ``fx, fy, cx, cy`` must be initialized before calling the function. + + :param D: Output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)`. + + :param rvecs: Output vector of rotation vectors (see :ocv:func:`Rodrigues` ) estimated for each pattern view. That is, each k-th rotation vector together with the corresponding k-th translation vector (see the next output parameter description) brings the calibration pattern from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the calibration pattern in the k-th pattern view (k=0.. *M* -1). + + :param tvecs: Output vector of translation vectors estimated for each pattern view. + + :param flags: Different flags that may be zero or a combination of the following values: + + * **fisheye::CALIB_USE_INTRINSIC_GUESS** ``cameraMatrix`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center ( ``imageSize`` is used), and focal distances are computed in a least-squares fashion. + + * **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + + * **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + + * **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + + * **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + + :param criteria: Termination criteria for the iterative optimization algorithm. + + +fisheye::stereoCalibrate +---------------------------- +Performs stereo calibration + +.. ocv:function:: double fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)) + + :param objectPoints: Vector of vectors of the calibration pattern points. + + :param imagePoints1: Vector of vectors of the projections of the calibration pattern points, observed by the first camera. + + :param imagePoints2: Vector of vectors of the projections of the calibration pattern points, observed by the second camera. + + :param K1: Input/output first camera matrix: :math:`\vecthreethree{f_x^{(j)}}{0}{c_x^{(j)}}{0}{f_y^{(j)}}{c_y^{(j)}}{0}{0}{1}` , :math:`j = 0,\, 1` . If any of ``fisheye::CALIB_USE_INTRINSIC_GUESS`` , ``fisheye::CV_CALIB_FIX_INTRINSIC`` are specified, some or all of the matrix components must be initialized. + + :param D1: Input/output vector of distortion coefficients :math:`(k_1, k_2, k_3, k_4)` of 4 elements. + + :param K2: Input/output second camera matrix. The parameter is similar to ``K1`` . + + :param D2: Input/output lens distortion coefficients for the second camera. The parameter is similar to ``D1`` . + + :param imageSize: Size of the image used only to initialize intrinsic camera matrix. + + :param R: Output rotation matrix between the 1st and the 2nd camera coordinate systems. + + :param T: Output translation vector between the coordinate systems of the cameras. + + :param flags: Different flags that may be zero or a combination of the following values: + + * **fisheye::CV_CALIB_FIX_INTRINSIC** Fix ``K1, K2?`` and ``D1, D2?`` so that only ``R, T`` matrices are estimated. + + * **fisheye::CALIB_USE_INTRINSIC_GUESS** ``K1, K2`` contains valid initial values of ``fx, fy, cx, cy`` that are optimized further. Otherwise, ``(cx, cy)`` is initially set to the image center (``imageSize`` is used), and focal distances are computed in a least-squares fashion. + + * **fisheye::CALIB_RECOMPUTE_EXTRINSIC** Extrinsic will be recomputed after each iteration of intrinsic optimization. + + * **fisheye::CALIB_CHECK_COND** The functions will check validity of condition number. + + * **fisheye::CALIB_FIX_SKEW** Skew coefficient (alpha) is set to zero and stay zero. + + * **fisheye::CALIB_FIX_K1..4** Selected distortion coefficients are set to zeros and stay zero. + + :param criteria: Termination criteria for the iterative optimization algorithm. .. [BT98] Birchfield, S. and Tomasi, C. A pixel dissimilarity measure that is insensitive to image sampling. IEEE Transactions on Pattern Analysis and Machine Intelligence. 1998. @@ -1518,3 +1897,5 @@ The function reconstructs 3-dimensional points (in homogeneous coordinates) by u .. [Slabaugh] Slabaugh, G.G. Computing Euler angles from a rotation matrix. http://www.soi.city.ac.uk/~sbbh653/publications/euler.pdf (verified: 2013-04-15) .. [Zhang2000] Z. Zhang. A Flexible New Technique for Camera Calibration. IEEE Transactions on Pattern Analysis and Machine Intelligence, 22(11):1330-1334, 2000. + +.. [Malis] Malis, E. and Vargas, M. Deeper understanding of the homography decomposition for vision-based control, Research Report 6303, INRIA (2007) diff --git a/modules/calib3d/doc/pics/fisheye_undistorted.jpg b/modules/calib3d/doc/pics/fisheye_undistorted.jpg new file mode 100644 index 0000000000..bfdc9afd5c Binary files /dev/null and b/modules/calib3d/doc/pics/fisheye_undistorted.jpg differ diff --git a/modules/calib3d/include/opencv2/calib3d.hpp b/modules/calib3d/include/opencv2/calib3d.hpp index 8b9b69c3aa..fed8670e1a 100644 --- a/modules/calib3d/include/opencv2/calib3d.hpp +++ b/modules/calib3d/include/opencv2/calib3d.hpp @@ -46,6 +46,7 @@ #include "opencv2/core.hpp" #include "opencv2/features2d.hpp" +#include "opencv2/core/affine.hpp" namespace cv { @@ -314,6 +315,11 @@ CV_EXPORTS_W int estimateAffine3D(InputArray src, InputArray dst, double ransacThreshold = 3, double confidence = 0.99); +CV_EXPORTS_W int decomposeHomographyMat(InputArray H, + InputArray K, + OutputArrayOfArrays rotations, + OutputArrayOfArrays translations, + OutputArrayOfArrays normals); class CV_EXPORTS_W StereoMatcher : public Algorithm { @@ -411,6 +417,66 @@ CV_EXPORTS_W Ptr createStereoSGBM(int minDisparity, int numDispariti int speckleWindowSize = 0, int speckleRange = 0, int mode = StereoSGBM::MODE_SGBM); +namespace fisheye +{ + enum{ + CALIB_USE_INTRINSIC_GUESS = 1, + CALIB_RECOMPUTE_EXTRINSIC = 2, + CALIB_CHECK_COND = 4, + CALIB_FIX_SKEW = 8, + CALIB_FIX_K1 = 16, + CALIB_FIX_K2 = 32, + CALIB_FIX_K3 = 64, + CALIB_FIX_K4 = 128, + CALIB_FIX_INTRINSIC = 256 + }; + + //! projects 3D points using fisheye model + CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! projects points using fisheye model + CV_EXPORTS void projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, + InputArray K, InputArray D, double alpha = 0, OutputArray jacobian = noArray()); + + //! distorts 2D points using fisheye model + CV_EXPORTS void distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha = 0); + + //! undistorts 2D points using fisheye model + CV_EXPORTS void undistortPoints(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray R = noArray(), InputArray P = noArray()); + + //! computing undistortion and rectification maps for image transform by cv::remap() + //! If D is empty zero distortion is used, if R or P is empty identity matrixes are used + CV_EXPORTS void initUndistortRectifyMap(InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2); + + //! undistorts image, optionally changes resolution and camera matrix. If Knew zero identity matrix is used + CV_EXPORTS void undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew = cv::noArray(), const Size& new_size = Size()); + + //! estimates new camera matrix for undistortion or rectification + CV_EXPORTS void estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance = 0.0, const Size& new_size = Size(), double fov_scale = 1.0); + + //! performs camera calibaration + CV_EXPORTS double calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, int flags = 0, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + + //! stereo rectification estimation + CV_EXPORTS void stereoRectify(InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size &imageSize, InputArray R, InputArray tvec, + OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags, const Size &newImageSize = Size(), + double balance = 0.0, double fov_scale = 1.0); + + //! performs stereo calibaration + CV_EXPORTS double stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags = CALIB_FIX_INTRINSIC, + TermCriteria criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 100, DBL_EPSILON)); + +} + } // cv #endif diff --git a/modules/calib3d/perf/opencl/perf_stereobm.cpp b/modules/calib3d/perf/opencl/perf_stereobm.cpp index 8fca1b894f..1436eb9d94 100644 --- a/modules/calib3d/perf/opencl/perf_stereobm.cpp +++ b/modules/calib3d/perf/opencl/perf_stereobm.cpp @@ -40,7 +40,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/calib3d/perf/perf_precomp.hpp b/modules/calib3d/perf/perf_precomp.hpp index 86312de1b8..9c5ab997d1 100644 --- a/modules/calib3d/perf/perf_precomp.hpp +++ b/modules/calib3d/perf/perf_precomp.hpp @@ -11,7 +11,7 @@ #include "opencv2/ts.hpp" #include "opencv2/calib3d.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #include "opencv2/imgproc.hpp" #ifdef GTEST_CREATE_SHARED_LIBRARY diff --git a/modules/calib3d/src/circlesgrid.cpp b/modules/calib3d/src/circlesgrid.cpp index 0b89e181c2..ea169bdd72 100644 --- a/modules/calib3d/src/circlesgrid.cpp +++ b/modules/calib3d/src/circlesgrid.cpp @@ -40,6 +40,7 @@ // //M*/ +#include "precomp.hpp" #include "circlesgrid.hpp" #include //#define DEBUG_CIRCLES diff --git a/modules/calib3d/src/fisheye.cpp b/modules/calib3d/src/fisheye.cpp new file mode 100644 index 0000000000..ce4144bbb0 --- /dev/null +++ b/modules/calib3d/src/fisheye.cpp @@ -0,0 +1,1612 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not 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 Intel Corporation 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. +// +//M*/ + +#include "precomp.hpp" +#include "fisheye.hpp" + +namespace cv { namespace +{ + struct JacobianRow + { + Vec2d df, dc; + Vec4d dk; + Vec3d dom, dT; + double dalpha; + }; + + void subMatrix(const Mat& src, Mat& dst, const std::vector& cols, const std::vector& rows); +}} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::projectPoints + +void cv::fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, const Affine3d& affine, + InputArray K, InputArray D, double alpha, OutputArray jacobian) +{ + projectPoints(objectPoints, imagePoints, affine.rvec(), affine.translation(), K, D, alpha, jacobian); +} + +void cv::fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray _rvec, + InputArray _tvec, InputArray _K, InputArray _D, double alpha, OutputArray jacobian) +{ + // will support only 3-channel data now for points + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + imagePoints.create(objectPoints.size(), CV_MAKETYPE(objectPoints.depth(), 2)); + size_t n = objectPoints.total(); + + CV_Assert(_rvec.total() * _rvec.channels() == 3 && (_rvec.depth() == CV_32F || _rvec.depth() == CV_64F)); + CV_Assert(_tvec.total() * _tvec.channels() == 3 && (_tvec.depth() == CV_32F || _tvec.depth() == CV_64F)); + CV_Assert(_tvec.getMat().isContinuous() && _rvec.getMat().isContinuous()); + + Vec3d om = _rvec.depth() == CV_32F ? (Vec3d)*_rvec.getMat().ptr() : *_rvec.getMat().ptr(); + Vec3d T = _tvec.depth() == CV_32F ? (Vec3d)*_tvec.getMat().ptr() : *_tvec.getMat().ptr(); + + CV_Assert(_K.size() == Size(3,3) && (_K.type() == CV_32F || _K.type() == CV_64F) && _D.type() == _K.type() && _D.total() == 4); + + cv::Vec2d f, c; + if (_K.depth() == CV_32F) + { + + Matx33f K = _K.getMat(); + f = Vec2f(K(0, 0), K(1, 1)); + c = Vec2f(K(0, 2), K(1, 2)); + } + else + { + Matx33d K = _K.getMat(); + f = Vec2d(K(0, 0), K(1, 1)); + c = Vec2d(K(0, 2), K(1, 2)); + } + + Vec4d k = _D.depth() == CV_32F ? (Vec4d)*_D.getMat().ptr(): *_D.getMat().ptr(); + + JacobianRow *Jn = 0; + if (jacobian.needed()) + { + int nvars = 2 + 2 + 1 + 4 + 3 + 3; // f, c, alpha, k, om, T, + jacobian.create(2*(int)n, nvars, CV_64F); + Jn = jacobian.getMat().ptr(0); + } + + Matx33d R; + Matx dRdom; + Rodrigues(om, R, dRdom); + Affine3d aff(om, T); + + const Vec3f* Xf = objectPoints.getMat().ptr(); + const Vec3d* Xd = objectPoints.getMat().ptr(); + Vec2f *xpf = imagePoints.getMat().ptr(); + Vec2d *xpd = imagePoints.getMat().ptr(); + + for(size_t i = 0; i < n; ++i) + { + Vec3d Xi = objectPoints.depth() == CV_32F ? (Vec3d)Xf[i] : Xd[i]; + Vec3d Y = aff*Xi; + + Vec2d x(Y[0]/Y[2], Y[1]/Y[2]); + + double r2 = x.dot(x); + double r = std::sqrt(r2); + + // Angle of the incoming ray: + double theta = atan(r); + + double theta2 = theta*theta, theta3 = theta2*theta, theta4 = theta2*theta2, theta5 = theta4*theta, + theta6 = theta3*theta3, theta7 = theta6*theta, theta8 = theta4*theta4, theta9 = theta8*theta; + + double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + + double inv_r = r > 1e-8 ? 1.0/r : 1; + double cdist = r > 1e-8 ? theta_d * inv_r : 1; + + Vec2d xd1 = x * cdist; + Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec2d final_point(xd3[0] * f[0] + c[0], xd3[1] * f[1] + c[1]); + + if (objectPoints.depth() == CV_32F) + xpf[i] = final_point; + else + xpd[i] = final_point; + + if (jacobian.needed()) + { + //Vec3d Xi = pdepth == CV_32F ? (Vec3d)Xf[i] : Xd[i]; + //Vec3d Y = aff*Xi; + double dYdR[] = { Xi[0], Xi[1], Xi[2], 0, 0, 0, 0, 0, 0, + 0, 0, 0, Xi[0], Xi[1], Xi[2], 0, 0, 0, + 0, 0, 0, 0, 0, 0, Xi[0], Xi[1], Xi[2] }; + + Matx33d dYdom_data = Matx(dYdR) * dRdom.t(); + const Vec3d *dYdom = (Vec3d*)dYdom_data.val; + + Matx33d dYdT_data = Matx33d::eye(); + const Vec3d *dYdT = (Vec3d*)dYdT_data.val; + + //Vec2d x(Y[0]/Y[2], Y[1]/Y[2]); + Vec3d dxdom[2]; + dxdom[0] = (1.0/Y[2]) * dYdom[0] - x[0]/Y[2] * dYdom[2]; + dxdom[1] = (1.0/Y[2]) * dYdom[1] - x[1]/Y[2] * dYdom[2]; + + Vec3d dxdT[2]; + dxdT[0] = (1.0/Y[2]) * dYdT[0] - x[0]/Y[2] * dYdT[2]; + dxdT[1] = (1.0/Y[2]) * dYdT[1] - x[1]/Y[2] * dYdT[2]; + + //double r2 = x.dot(x); + Vec3d dr2dom = 2 * x[0] * dxdom[0] + 2 * x[1] * dxdom[1]; + Vec3d dr2dT = 2 * x[0] * dxdT[0] + 2 * x[1] * dxdT[1]; + + //double r = std::sqrt(r2); + double drdr2 = r > 1e-8 ? 1.0/(2*r) : 1; + Vec3d drdom = drdr2 * dr2dom; + Vec3d drdT = drdr2 * dr2dT; + + // Angle of the incoming ray: + //double theta = atan(r); + double dthetadr = 1.0/(1+r2); + Vec3d dthetadom = dthetadr * drdom; + Vec3d dthetadT = dthetadr * drdT; + + //double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + double dtheta_ddtheta = 1 + 3*k[0]*theta2 + 5*k[1]*theta4 + 7*k[2]*theta6 + 9*k[3]*theta8; + Vec3d dtheta_ddom = dtheta_ddtheta * dthetadom; + Vec3d dtheta_ddT = dtheta_ddtheta * dthetadT; + Vec4d dtheta_ddk = Vec4d(theta3, theta5, theta7, theta9); + + //double inv_r = r > 1e-8 ? 1.0/r : 1; + //double cdist = r > 1e-8 ? theta_d / r : 1; + Vec3d dcdistdom = inv_r * (dtheta_ddom - cdist*drdom); + Vec3d dcdistdT = inv_r * (dtheta_ddT - cdist*drdT); + Vec4d dcdistdk = inv_r * dtheta_ddk; + + //Vec2d xd1 = x * cdist; + Vec4d dxd1dk[2]; + Vec3d dxd1dom[2], dxd1dT[2]; + dxd1dom[0] = x[0] * dcdistdom + cdist * dxdom[0]; + dxd1dom[1] = x[1] * dcdistdom + cdist * dxdom[1]; + dxd1dT[0] = x[0] * dcdistdT + cdist * dxdT[0]; + dxd1dT[1] = x[1] * dcdistdT + cdist * dxdT[1]; + dxd1dk[0] = x[0] * dcdistdk; + dxd1dk[1] = x[1] * dcdistdk; + + //Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec4d dxd3dk[2]; + Vec3d dxd3dom[2], dxd3dT[2]; + dxd3dom[0] = dxd1dom[0] + alpha * dxd1dom[1]; + dxd3dom[1] = dxd1dom[1]; + dxd3dT[0] = dxd1dT[0] + alpha * dxd1dT[1]; + dxd3dT[1] = dxd1dT[1]; + dxd3dk[0] = dxd1dk[0] + alpha * dxd1dk[1]; + dxd3dk[1] = dxd1dk[1]; + + Vec2d dxd3dalpha(xd1[1], 0); + + //final jacobian + Jn[0].dom = f[0] * dxd3dom[0]; + Jn[1].dom = f[1] * dxd3dom[1]; + + Jn[0].dT = f[0] * dxd3dT[0]; + Jn[1].dT = f[1] * dxd3dT[1]; + + Jn[0].dk = f[0] * dxd3dk[0]; + Jn[1].dk = f[1] * dxd3dk[1]; + + Jn[0].dalpha = f[0] * dxd3dalpha[0]; + Jn[1].dalpha = 0; //f[1] * dxd3dalpha[1]; + + Jn[0].df = Vec2d(xd3[0], 0); + Jn[1].df = Vec2d(0, xd3[1]); + + Jn[0].dc = Vec2d(1, 0); + Jn[1].dc = Vec2d(0, 1); + + //step to jacobian rows for next point + Jn += 2; + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::distortPoints + +void cv::fisheye::distortPoints(InputArray undistorted, OutputArray distorted, InputArray K, InputArray D, double alpha) +{ + // will support only 2-channel data now for points + CV_Assert(undistorted.type() == CV_32FC2 || undistorted.type() == CV_64FC2); + distorted.create(undistorted.size(), undistorted.type()); + size_t n = undistorted.total(); + + CV_Assert(K.size() == Size(3,3) && (K.type() == CV_32F || K.type() == CV_64F) && D.total() == 4); + + cv::Vec2d f, c; + if (K.depth() == CV_32F) + { + Matx33f camMat = K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0 ,2), camMat(1, 2)); + } + + Vec4d k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); + + const Vec2f* Xf = undistorted.getMat().ptr(); + const Vec2d* Xd = undistorted.getMat().ptr(); + Vec2f *xpf = distorted.getMat().ptr(); + Vec2d *xpd = distorted.getMat().ptr(); + + for(size_t i = 0; i < n; ++i) + { + Vec2d x = undistorted.depth() == CV_32F ? (Vec2d)Xf[i] : Xd[i]; + + double r2 = x.dot(x); + double r = std::sqrt(r2); + + // Angle of the incoming ray: + double theta = atan(r); + + double theta2 = theta*theta, theta3 = theta2*theta, theta4 = theta2*theta2, theta5 = theta4*theta, + theta6 = theta3*theta3, theta7 = theta6*theta, theta8 = theta4*theta4, theta9 = theta8*theta; + + double theta_d = theta + k[0]*theta3 + k[1]*theta5 + k[2]*theta7 + k[3]*theta9; + + double inv_r = r > 1e-8 ? 1.0/r : 1; + double cdist = r > 1e-8 ? theta_d * inv_r : 1; + + Vec2d xd1 = x * cdist; + Vec2d xd3(xd1[0] + alpha*xd1[1], xd1[1]); + Vec2d final_point(xd3[0] * f[0] + c[0], xd3[1] * f[1] + c[1]); + + if (undistorted.depth() == CV_32F) + xpf[i] = final_point; + else + xpd[i] = final_point; + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::undistortPoints + +void cv::fisheye::undistortPoints( InputArray distorted, OutputArray undistorted, InputArray K, InputArray D, InputArray R, InputArray P) +{ + // will support only 2-channel data now for points + CV_Assert(distorted.type() == CV_32FC2 || distorted.type() == CV_64FC2); + undistorted.create(distorted.size(), distorted.type()); + + CV_Assert(P.empty() || P.size() == Size(3, 3) || P.size() == Size(4, 3)); + CV_Assert(R.empty() || R.size() == Size(3, 3) || R.total() * R.channels() == 3); + CV_Assert(D.total() == 4 && K.size() == Size(3, 3) && (K.depth() == CV_32F || K.depth() == CV_64F)); + + cv::Vec2d f, c; + if (K.depth() == CV_32F) + { + Matx33f camMat = K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0, 2), camMat(1, 2)); + } + + Vec4d k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); + + cv::Matx33d RR = cv::Matx33d::eye(); + if (!R.empty() && R.total() * R.channels() == 3) + { + cv::Vec3d rvec; + R.getMat().convertTo(rvec, CV_64F); + RR = cv::Affine3d(rvec).rotation(); + } + else if (!R.empty() && R.size() == Size(3, 3)) + R.getMat().convertTo(RR, CV_64F); + + if(!P.empty()) + { + cv::Matx33d PP; + P.getMat().colRange(0, 3).convertTo(PP, CV_64F); + RR = PP * RR; + } + + // start undistorting + const cv::Vec2f* srcf = distorted.getMat().ptr(); + const cv::Vec2d* srcd = distorted.getMat().ptr(); + cv::Vec2f* dstf = undistorted.getMat().ptr(); + cv::Vec2d* dstd = undistorted.getMat().ptr(); + + size_t n = distorted.total(); + int sdepth = distorted.depth(); + + for(size_t i = 0; i < n; i++ ) + { + Vec2d pi = sdepth == CV_32F ? (Vec2d)srcf[i] : srcd[i]; // image point + Vec2d pw((pi[0] - c[0])/f[0], (pi[1] - c[1])/f[1]); // world point + + double scale = 1.0; + + double theta_d = sqrt(pw[0]*pw[0] + pw[1]*pw[1]); + if (theta_d > 1e-8) + { + // compensate distortion iteratively + double theta = theta_d; + for(int j = 0; j < 10; j++ ) + { + double theta2 = theta*theta, theta4 = theta2*theta2, theta6 = theta4*theta2, theta8 = theta6*theta2; + theta = theta_d / (1 + k[0] * theta2 + k[1] * theta4 + k[2] * theta6 + k[3] * theta8); + } + + scale = std::tan(theta) / theta_d; + } + + Vec2d pu = pw * scale; //undistorted point + + // reproject + Vec3d pr = RR * Vec3d(pu[0], pu[1], 1.0); // rotated point optionally multiplied by new camera matrix + Vec2d fi(pr[0]/pr[2], pr[1]/pr[2]); // final + + if( sdepth == CV_32F ) + dstf[i] = fi; + else + dstd[i] = fi; + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::undistortPoints + +void cv::fisheye::initUndistortRectifyMap( InputArray K, InputArray D, InputArray R, InputArray P, + const cv::Size& size, int m1type, OutputArray map1, OutputArray map2 ) +{ + CV_Assert( m1type == CV_16SC2 || m1type == CV_32F || m1type <=0 ); + map1.create( size, m1type <= 0 ? CV_16SC2 : m1type ); + map2.create( size, map1.type() == CV_16SC2 ? CV_16UC1 : CV_32F ); + + CV_Assert((K.depth() == CV_32F || K.depth() == CV_64F) && (D.depth() == CV_32F || D.depth() == CV_64F)); + CV_Assert((P.depth() == CV_32F || P.depth() == CV_64F) && (R.depth() == CV_32F || R.depth() == CV_64F)); + CV_Assert(K.size() == Size(3, 3) && (D.empty() || D.total() == 4)); + CV_Assert(R.empty() || R.size() == Size(3, 3) || R.total() * R.channels() == 3); + CV_Assert(P.empty() || P.size() == Size(3, 3) || P.size() == Size(4, 3)); + + cv::Vec2d f, c; + if (K.depth() == CV_32F) + { + Matx33f camMat = K.getMat(); + f = Vec2f(camMat(0, 0), camMat(1, 1)); + c = Vec2f(camMat(0, 2), camMat(1, 2)); + } + else + { + Matx33d camMat = K.getMat(); + f = Vec2d(camMat(0, 0), camMat(1, 1)); + c = Vec2d(camMat(0, 2), camMat(1, 2)); + } + + Vec4d k = Vec4d::all(0); + if (!D.empty()) + k = D.depth() == CV_32F ? (Vec4d)*D.getMat().ptr(): *D.getMat().ptr(); + + cv::Matx33d RR = cv::Matx33d::eye(); + if (!R.empty() && R.total() * R.channels() == 3) + { + cv::Vec3d rvec; + R.getMat().convertTo(rvec, CV_64F); + RR = Affine3d(rvec).rotation(); + } + else if (!R.empty() && R.size() == Size(3, 3)) + R.getMat().convertTo(RR, CV_64F); + + cv::Matx33d PP = cv::Matx33d::eye(); + if (!P.empty()) + P.getMat().colRange(0, 3).convertTo(PP, CV_64F); + + cv::Matx33d iR = (PP * RR).inv(cv::DECOMP_SVD); + + for( int i = 0; i < size.height; ++i) + { + float* m1f = map1.getMat().ptr(i); + float* m2f = map2.getMat().ptr(i); + short* m1 = (short*)m1f; + ushort* m2 = (ushort*)m2f; + + double _x = i*iR(0, 1) + iR(0, 2), + _y = i*iR(1, 1) + iR(1, 2), + _w = i*iR(2, 1) + iR(2, 2); + + for( int j = 0; j < size.width; ++j) + { + double x = _x/_w, y = _y/_w; + + double r = sqrt(x*x + y*y); + double theta = atan(r); + + double theta2 = theta*theta, theta4 = theta2*theta2, theta6 = theta4*theta2, theta8 = theta4*theta4; + double theta_d = theta * (1 + k[0]*theta2 + k[1]*theta4 + k[2]*theta6 + k[3]*theta8); + + double scale = (r == 0) ? 1.0 : theta_d / r; + double u = f[0]*x*scale + c[0]; + double v = f[1]*y*scale + c[1]; + + if( m1type == CV_16SC2 ) + { + int iu = cv::saturate_cast(u*cv::INTER_TAB_SIZE); + int iv = cv::saturate_cast(v*cv::INTER_TAB_SIZE); + m1[j*2+0] = (short)(iu >> cv::INTER_BITS); + m1[j*2+1] = (short)(iv >> cv::INTER_BITS); + m2[j] = (ushort)((iv & (cv::INTER_TAB_SIZE-1))*cv::INTER_TAB_SIZE + (iu & (cv::INTER_TAB_SIZE-1))); + } + else if( m1type == CV_32FC1 ) + { + m1f[j] = (float)u; + m2f[j] = (float)v; + } + + _x += iR(0, 0); + _y += iR(1, 0); + _w += iR(2, 0); + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::undistortImage + +void cv::fisheye::undistortImage(InputArray distorted, OutputArray undistorted, + InputArray K, InputArray D, InputArray Knew, const Size& new_size) +{ + Size size = new_size.area() != 0 ? new_size : distorted.size(); + + cv::Mat map1, map2; + fisheye::initUndistortRectifyMap(K, D, cv::Matx33d::eye(), Knew, size, CV_16SC2, map1, map2 ); + cv::remap(distorted, undistorted, map1, map2, INTER_LINEAR, BORDER_CONSTANT); +} + + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::estimateNewCameraMatrixForUndistortRectify + +void cv::fisheye::estimateNewCameraMatrixForUndistortRectify(InputArray K, InputArray D, const Size &image_size, InputArray R, + OutputArray P, double balance, const Size& new_size, double fov_scale) +{ + CV_Assert( K.size() == Size(3, 3) && (K.depth() == CV_32F || K.depth() == CV_64F)); + CV_Assert((D.empty() || D.total() == 4) && (D.depth() == CV_32F || D.depth() == CV_64F || D.empty())); + + int w = image_size.width, h = image_size.height; + balance = std::min(std::max(balance, 0.0), 1.0); + + cv::Mat points(1, 4, CV_64FC2); + Vec2d* pptr = points.ptr(); + pptr[0] = Vec2d(w/2, 0); + pptr[1] = Vec2d(w, h/2); + pptr[2] = Vec2d(w/2, h); + pptr[3] = Vec2d(0, h/2); + +#if 0 + const int N = 10; + cv::Mat points(1, N * 4, CV_64FC2); + Vec2d* pptr = points.ptr(); + for(int i = 0, k = 0; i < 10; ++i) + { + pptr[k++] = Vec2d(w/2, 0) - Vec2d(w/8, 0) + Vec2d(w/4/N*i, 0); + pptr[k++] = Vec2d(w/2, h-1) - Vec2d(w/8, h-1) + Vec2d(w/4/N*i, h-1); + + pptr[k++] = Vec2d(0, h/2) - Vec2d(0, h/8) + Vec2d(0, h/4/N*i); + pptr[k++] = Vec2d(w-1, h/2) - Vec2d(w-1, h/8) + Vec2d(w-1, h/4/N*i); + } +#endif + + fisheye::undistortPoints(points, points, K, D, R); + cv::Scalar center_mass = mean(points); + cv::Vec2d cn(center_mass.val); + + double aspect_ratio = (K.depth() == CV_32F) ? K.getMat().at(0,0)/K.getMat().at (1,1) + : K.getMat().at(0,0)/K.getMat().at(1,1); + + // convert to identity ratio + cn[0] *= aspect_ratio; + for(size_t i = 0; i < points.total(); ++i) + pptr[i][1] *= aspect_ratio; + + double minx = DBL_MAX, miny = DBL_MAX, maxx = -DBL_MAX, maxy = -DBL_MAX; + for(size_t i = 0; i < points.total(); ++i) + { + miny = std::min(miny, pptr[i][1]); + maxy = std::max(maxy, pptr[i][1]); + minx = std::min(minx, pptr[i][0]); + maxx = std::max(maxx, pptr[i][0]); + } + +#if 0 + double minx = -DBL_MAX, miny = -DBL_MAX, maxx = DBL_MAX, maxy = DBL_MAX; + for(size_t i = 0; i < points.total(); ++i) + { + if (i % 4 == 0) miny = std::max(miny, pptr[i][1]); + if (i % 4 == 1) maxy = std::min(maxy, pptr[i][1]); + if (i % 4 == 2) minx = std::max(minx, pptr[i][0]); + if (i % 4 == 3) maxx = std::min(maxx, pptr[i][0]); + } +#endif + + double f1 = w * 0.5/(cn[0] - minx); + double f2 = w * 0.5/(maxx - cn[0]); + double f3 = h * 0.5 * aspect_ratio/(cn[1] - miny); + double f4 = h * 0.5 * aspect_ratio/(maxy - cn[1]); + + double fmin = std::min(f1, std::min(f2, std::min(f3, f4))); + double fmax = std::max(f1, std::max(f2, std::max(f3, f4))); + + double f = balance * fmin + (1.0 - balance) * fmax; + f *= fov_scale > 0 ? 1.0/fov_scale : 1.0; + + cv::Vec2d new_f(f, f), new_c = -cn * f + Vec2d(w, h * aspect_ratio) * 0.5; + + // restore aspect ratio + new_f[1] /= aspect_ratio; + new_c[1] /= aspect_ratio; + + if (new_size.area() > 0) + { + double rx = new_size.width /(double)image_size.width; + double ry = new_size.height/(double)image_size.height; + + new_f[0] *= rx; new_f[1] *= ry; + new_c[0] *= rx; new_c[1] *= ry; + } + + Mat(Matx33d(new_f[0], 0, new_c[0], + 0, new_f[1], new_c[1], + 0, 0, 1)).convertTo(P, P.empty() ? K.type() : P.type()); +} + + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::stereoRectify + +void cv::fisheye::stereoRectify( InputArray K1, InputArray D1, InputArray K2, InputArray D2, const Size& imageSize, + InputArray _R, InputArray _tvec, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, + OutputArray Q, int flags, const Size& newImageSize, double balance, double fov_scale) +{ + CV_Assert((_R.size() == Size(3, 3) || _R.total() * _R.channels() == 3) && (_R.depth() == CV_32F || _R.depth() == CV_64F)); + CV_Assert(_tvec.total() * _tvec.channels() == 3 && (_tvec.depth() == CV_32F || _tvec.depth() == CV_64F)); + + + cv::Mat aaa = _tvec.getMat().reshape(3, 1); + + Vec3d rvec; // Rodrigues vector + if (_R.size() == Size(3, 3)) + { + cv::Matx33d rmat; + _R.getMat().convertTo(rmat, CV_64F); + rvec = Affine3d(rmat).rvec(); + } + else if (_R.total() * _R.channels() == 3) + _R.getMat().convertTo(rvec, CV_64F); + + Vec3d tvec; + _tvec.getMat().convertTo(tvec, CV_64F); + + // rectification algorithm + rvec *= -0.5; // get average rotation + + Matx33d r_r; + Rodrigues(rvec, r_r); // rotate cameras to same orientation by averaging + + Vec3d t = r_r * tvec; + Vec3d uu(t[0] > 0 ? 1 : -1, 0, 0); + + // calculate global Z rotation + Vec3d ww = t.cross(uu); + double nw = norm(ww); + if (nw > 0.0) + ww *= acos(fabs(t[0])/cv::norm(t))/nw; + + Matx33d wr; + Rodrigues(ww, wr); + + // apply to both views + Matx33d ri1 = wr * r_r.t(); + Mat(ri1, false).convertTo(R1, R1.empty() ? CV_64F : R1.type()); + Matx33d ri2 = wr * r_r; + Mat(ri2, false).convertTo(R2, R2.empty() ? CV_64F : R2.type()); + Vec3d tnew = ri2 * tvec; + + // calculate projection/camera matrices. these contain the relevant rectified image internal params (fx, fy=fx, cx, cy) + Matx33d newK1, newK2; + estimateNewCameraMatrixForUndistortRectify(K1, D1, imageSize, R1, newK1, balance, newImageSize, fov_scale); + estimateNewCameraMatrixForUndistortRectify(K2, D2, imageSize, R2, newK2, balance, newImageSize, fov_scale); + + double fc_new = std::min(newK1(1,1), newK2(1,1)); + Point2d cc_new[2] = { Vec2d(newK1(0, 2), newK1(1, 2)), Vec2d(newK2(0, 2), newK2(1, 2)) }; + + // Vertical focal length must be the same for both images to keep the epipolar constraint use fy for fx also. + // For simplicity, set the principal points for both cameras to be the average + // of the two principal points (either one of or both x- and y- coordinates) + if( flags & cv::CALIB_ZERO_DISPARITY ) + cc_new[0] = cc_new[1] = (cc_new[0] + cc_new[1]) * 0.5; + else + cc_new[0].y = cc_new[1].y = (cc_new[0].y + cc_new[1].y)*0.5; + + Mat(Matx34d(fc_new, 0, cc_new[0].x, 0, + 0, fc_new, cc_new[0].y, 0, + 0, 0, 1, 0), false).convertTo(P1, P1.empty() ? CV_64F : P1.type()); + + Mat(Matx34d(fc_new, 0, cc_new[1].x, tnew[0]*fc_new, // baseline * focal length;, + 0, fc_new, cc_new[1].y, 0, + 0, 0, 1, 0), false).convertTo(P2, P2.empty() ? CV_64F : P2.type()); + + if (Q.needed()) + Mat(Matx44d(1, 0, 0, -cc_new[0].x, + 0, 1, 0, -cc_new[0].y, + 0, 0, 0, fc_new, + 0, 0, -1./tnew[0], (cc_new[0].x - cc_new[1].x)/tnew[0]), false).convertTo(Q, Q.empty() ? CV_64F : Q.depth()); +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::calibrate + +double cv::fisheye::calibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, const Size& image_size, + InputOutputArray K, InputOutputArray D, OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs, + int flags , cv::TermCriteria criteria) +{ + CV_Assert(!objectPoints.empty() && !imagePoints.empty() && objectPoints.total() == imagePoints.total()); + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + CV_Assert(imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2); + CV_Assert((!K.empty() && K.size() == Size(3,3)) || K.empty()); + CV_Assert((!D.empty() && D.total() == 4) || D.empty()); + CV_Assert((!rvecs.empty() && rvecs.channels() == 3) || rvecs.empty()); + CV_Assert((!tvecs.empty() && tvecs.channels() == 3) || tvecs.empty()); + + CV_Assert(((flags & CALIB_USE_INTRINSIC_GUESS) && !K.empty() && !D.empty()) || !(flags & CALIB_USE_INTRINSIC_GUESS)); + + using namespace cv::internal; + //-------------------------------Initialization + IntrinsicParams finalParam; + IntrinsicParams currentParam; + IntrinsicParams errors; + + finalParam.isEstimate[0] = 1; + finalParam.isEstimate[1] = 1; + finalParam.isEstimate[2] = 1; + finalParam.isEstimate[3] = 1; + finalParam.isEstimate[4] = flags & CALIB_FIX_SKEW ? 0 : 1; + finalParam.isEstimate[5] = flags & CALIB_FIX_K1 ? 0 : 1; + finalParam.isEstimate[6] = flags & CALIB_FIX_K2 ? 0 : 1; + finalParam.isEstimate[7] = flags & CALIB_FIX_K3 ? 0 : 1; + finalParam.isEstimate[8] = flags & CALIB_FIX_K4 ? 0 : 1; + + const int recompute_extrinsic = flags & CALIB_RECOMPUTE_EXTRINSIC ? 1: 0; + const int check_cond = flags & CALIB_CHECK_COND ? 1 : 0; + + const double alpha_smooth = 0.4; + const double thresh_cond = 1e6; + double change = 1; + Vec2d err_std; + + Matx33d _K; + Vec4d _D; + if (flags & CALIB_USE_INTRINSIC_GUESS) + { + K.getMat().convertTo(_K, CV_64FC1); + D.getMat().convertTo(_D, CV_64FC1); + finalParam.Init(Vec2d(_K(0,0), _K(1, 1)), + Vec2d(_K(0,2), _K(1, 2)), + Vec4d(flags & CALIB_FIX_K1 ? 0 : _D[0], + flags & CALIB_FIX_K2 ? 0 : _D[1], + flags & CALIB_FIX_K3 ? 0 : _D[2], + flags & CALIB_FIX_K4 ? 0 : _D[3]), + _K(0, 1) / _K(0, 0)); + } + else + { + finalParam.Init(Vec2d(max(image_size.width, image_size.height) / CV_PI, max(image_size.width, image_size.height) / CV_PI), + Vec2d(image_size.width / 2.0 - 0.5, image_size.height / 2.0 - 0.5)); + } + + errors.isEstimate = finalParam.isEstimate; + + std::vector omc(objectPoints.total()), Tc(objectPoints.total()); + + CalibrateExtrinsics(objectPoints, imagePoints, finalParam, check_cond, thresh_cond, omc, Tc); + + + //-------------------------------Optimization + for(int iter = 0; ; ++iter) + { + if ((criteria.type == 1 && iter >= criteria.maxCount) || + (criteria.type == 2 && change <= criteria.epsilon) || + (criteria.type == 3 && (change <= criteria.epsilon || iter >= criteria.maxCount))) + break; + + double alpha_smooth2 = 1 - std::pow(1 - alpha_smooth, iter + 1.0); + + Mat JJ2_inv, ex3; + ComputeJacobians(objectPoints, imagePoints, finalParam, omc, Tc, check_cond,thresh_cond, JJ2_inv, ex3); + + Mat G = alpha_smooth2 * JJ2_inv * ex3; + + currentParam = finalParam + G; + + change = norm(Vec4d(currentParam.f[0], currentParam.f[1], currentParam.c[0], currentParam.c[1]) - + Vec4d(finalParam.f[0], finalParam.f[1], finalParam.c[0], finalParam.c[1])) + / norm(Vec4d(currentParam.f[0], currentParam.f[1], currentParam.c[0], currentParam.c[1])); + + finalParam = currentParam; + + if (recompute_extrinsic) + { + CalibrateExtrinsics(objectPoints, imagePoints, finalParam, check_cond, + thresh_cond, omc, Tc); + } + } + + //-------------------------------Validation + double rms; + EstimateUncertainties(objectPoints, imagePoints, finalParam, omc, Tc, errors, err_std, thresh_cond, + check_cond, rms); + + //------------------------------- + _K = Matx33d(finalParam.f[0], finalParam.f[0] * finalParam.alpha, finalParam.c[0], + 0, finalParam.f[1], finalParam.c[1], + 0, 0, 1); + + if (K.needed()) cv::Mat(_K).convertTo(K, K.empty() ? CV_64FC1 : K.type()); + if (D.needed()) cv::Mat(finalParam.k).convertTo(D, D.empty() ? CV_64FC1 : D.type()); + if (rvecs.needed()) cv::Mat(omc).convertTo(rvecs, rvecs.empty() ? CV_64FC3 : rvecs.type()); + if (tvecs.needed()) cv::Mat(Tc).convertTo(tvecs, tvecs.empty() ? CV_64FC3 : tvecs.type()); + + return rms; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::fisheye::stereoCalibrate + +double cv::fisheye::stereoCalibrate(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints1, InputArrayOfArrays imagePoints2, + InputOutputArray K1, InputOutputArray D1, InputOutputArray K2, InputOutputArray D2, Size imageSize, + OutputArray R, OutputArray T, int flags, TermCriteria criteria) +{ + CV_Assert(!objectPoints.empty() && !imagePoints1.empty() && !imagePoints2.empty()); + CV_Assert(objectPoints.total() == imagePoints1.total() || imagePoints1.total() == imagePoints2.total()); + CV_Assert(objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3); + CV_Assert(imagePoints1.type() == CV_32FC2 || imagePoints1.type() == CV_64FC2); + CV_Assert(imagePoints2.type() == CV_32FC2 || imagePoints2.type() == CV_64FC2); + + CV_Assert((!K1.empty() && K1.size() == Size(3,3)) || K1.empty()); + CV_Assert((!D1.empty() && D1.total() == 4) || D1.empty()); + CV_Assert((!K2.empty() && K1.size() == Size(3,3)) || K2.empty()); + CV_Assert((!D2.empty() && D1.total() == 4) || D2.empty()); + + CV_Assert(((flags & CALIB_FIX_INTRINSIC) && !K1.empty() && !K2.empty() && !D1.empty() && !D2.empty()) || !(flags & CALIB_FIX_INTRINSIC)); + + //-------------------------------Initialization + + const int threshold = 50; + const double thresh_cond = 1e6; + const int check_cond = 1; + + int n_points = (int)objectPoints.getMat(0).total(); + int n_images = (int)objectPoints.total(); + + double change = 1; + + cv::internal::IntrinsicParams intrinsicLeft; + cv::internal::IntrinsicParams intrinsicRight; + + cv::internal::IntrinsicParams intrinsicLeft_errors; + cv::internal::IntrinsicParams intrinsicRight_errors; + + Matx33d _K1, _K2; + Vec4d _D1, _D2; + if (!K1.empty()) K1.getMat().convertTo(_K1, CV_64FC1); + if (!D1.empty()) D1.getMat().convertTo(_D1, CV_64FC1); + if (!K2.empty()) K2.getMat().convertTo(_K2, CV_64FC1); + if (!D2.empty()) D2.getMat().convertTo(_D2, CV_64FC1); + + std::vector rvecs1(n_images), tvecs1(n_images), rvecs2(n_images), tvecs2(n_images); + + if (!(flags & CALIB_FIX_INTRINSIC)) + { + calibrate(objectPoints, imagePoints1, imageSize, _K1, _D1, rvecs1, tvecs1, flags, TermCriteria(3, 20, 1e-6)); + calibrate(objectPoints, imagePoints2, imageSize, _K2, _D2, rvecs2, tvecs2, flags, TermCriteria(3, 20, 1e-6)); + } + + intrinsicLeft.Init(Vec2d(_K1(0,0), _K1(1, 1)), Vec2d(_K1(0,2), _K1(1, 2)), + Vec4d(_D1[0], _D1[1], _D1[2], _D1[3]), _K1(0, 1) / _K1(0, 0)); + + intrinsicRight.Init(Vec2d(_K2(0,0), _K2(1, 1)), Vec2d(_K2(0,2), _K2(1, 2)), + Vec4d(_D2[0], _D2[1], _D2[2], _D2[3]), _K2(0, 1) / _K2(0, 0)); + + if ((flags & CALIB_FIX_INTRINSIC)) + { + internal::CalibrateExtrinsics(objectPoints, imagePoints1, intrinsicLeft, check_cond, thresh_cond, rvecs1, tvecs1); + internal::CalibrateExtrinsics(objectPoints, imagePoints2, intrinsicRight, check_cond, thresh_cond, rvecs2, tvecs2); + } + + intrinsicLeft.isEstimate[0] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[1] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[2] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[3] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicLeft.isEstimate[4] = flags & (CALIB_FIX_SKEW | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[5] = flags & (CALIB_FIX_K1 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[6] = flags & (CALIB_FIX_K2 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[7] = flags & (CALIB_FIX_K3 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicLeft.isEstimate[8] = flags & (CALIB_FIX_K4 | CALIB_FIX_INTRINSIC) ? 0 : 1; + + intrinsicRight.isEstimate[0] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[1] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[2] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[3] = flags & CALIB_FIX_INTRINSIC ? 0 : 1; + intrinsicRight.isEstimate[4] = flags & (CALIB_FIX_SKEW | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[5] = flags & (CALIB_FIX_K1 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[6] = flags & (CALIB_FIX_K2 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[7] = flags & (CALIB_FIX_K3 | CALIB_FIX_INTRINSIC) ? 0 : 1; + intrinsicRight.isEstimate[8] = flags & (CALIB_FIX_K4 | CALIB_FIX_INTRINSIC) ? 0 : 1; + + intrinsicLeft_errors.isEstimate = intrinsicLeft.isEstimate; + intrinsicRight_errors.isEstimate = intrinsicRight.isEstimate; + + std::vector selectedParams; + std::vector tmp(6 * (n_images + 1), 1); + selectedParams.insert(selectedParams.end(), intrinsicLeft.isEstimate.begin(), intrinsicLeft.isEstimate.end()); + selectedParams.insert(selectedParams.end(), intrinsicRight.isEstimate.begin(), intrinsicRight.isEstimate.end()); + selectedParams.insert(selectedParams.end(), tmp.begin(), tmp.end()); + + //Init values for rotation and translation between two views + cv::Mat om_list(1, n_images, CV_64FC3), T_list(1, n_images, CV_64FC3); + cv::Mat om_ref, R_ref, T_ref, R1, R2; + for (int image_idx = 0; image_idx < n_images; ++image_idx) + { + cv::Rodrigues(rvecs1[image_idx], R1); + cv::Rodrigues(rvecs2[image_idx], R2); + R_ref = R2 * R1.t(); + T_ref = cv::Mat(tvecs2[image_idx]) - R_ref * cv::Mat(tvecs1[image_idx]); + cv::Rodrigues(R_ref, om_ref); + om_ref.reshape(3, 1).copyTo(om_list.col(image_idx)); + T_ref.reshape(3, 1).copyTo(T_list.col(image_idx)); + } + cv::Vec3d omcur = internal::median3d(om_list); + cv::Vec3d Tcur = internal::median3d(T_list); + + cv::Mat J = cv::Mat::zeros(4 * n_points * n_images, 18 + 6 * (n_images + 1), CV_64FC1), + e = cv::Mat::zeros(4 * n_points * n_images, 1, CV_64FC1), Jkk, ekk; + cv::Mat J2_inv; + + for(int iter = 0; ; ++iter) + { + if ((criteria.type == 1 && iter >= criteria.maxCount) || + (criteria.type == 2 && change <= criteria.epsilon) || + (criteria.type == 3 && (change <= criteria.epsilon || iter >= criteria.maxCount))) + break; + + J.create(4 * n_points * n_images, 18 + 6 * (n_images + 1), CV_64FC1); + e.create(4 * n_points * n_images, 1, CV_64FC1); + Jkk.create(4 * n_points, 18 + 6 * (n_images + 1), CV_64FC1); + ekk.create(4 * n_points, 1, CV_64FC1); + + cv::Mat omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT; + + for (int image_idx = 0; image_idx < n_images; ++image_idx) + { + Jkk = cv::Mat::zeros(4 * n_points, 18 + 6 * (n_images + 1), CV_64FC1); + + cv::Mat object = objectPoints.getMat(image_idx).clone(); + cv::Mat imageLeft = imagePoints1.getMat(image_idx).clone(); + cv::Mat imageRight = imagePoints2.getMat(image_idx).clone(); + cv::Mat jacobians, projected; + + //left camera jacobian + cv::Mat rvec = cv::Mat(rvecs1[image_idx]); + cv::Mat tvec = cv::Mat(tvecs1[image_idx]); + cv::internal::projectPoints(object, projected, rvec, tvec, intrinsicLeft, jacobians); + cv::Mat(cv::Mat((imageLeft - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(0, 2 * n_points)); + jacobians.colRange(8, 11).copyTo(Jkk.colRange(24 + image_idx * 6, 27 + image_idx * 6).rowRange(0, 2 * n_points)); + jacobians.colRange(11, 14).copyTo(Jkk.colRange(27 + image_idx * 6, 30 + image_idx * 6).rowRange(0, 2 * n_points)); + jacobians.colRange(0, 2).copyTo(Jkk.colRange(0, 2).rowRange(0, 2 * n_points)); + jacobians.colRange(2, 4).copyTo(Jkk.colRange(2, 4).rowRange(0, 2 * n_points)); + jacobians.colRange(4, 8).copyTo(Jkk.colRange(5, 9).rowRange(0, 2 * n_points)); + jacobians.col(14).copyTo(Jkk.col(4).rowRange(0, 2 * n_points)); + + //right camera jacobian + internal::compose_motion(rvec, tvec, omcur, Tcur, omr, Tr, domrdomckk, domrdTckk, domrdom, domrdT, dTrdomckk, dTrdTckk, dTrdom, dTrdT); + rvec = cv::Mat(rvecs2[image_idx]); + tvec = cv::Mat(tvecs2[image_idx]); + + cv::internal::projectPoints(object, projected, omr, Tr, intrinsicRight, jacobians); + cv::Mat(cv::Mat((imageRight - projected).t()).reshape(1, 1).t()).copyTo(ekk.rowRange(2 * n_points, 4 * n_points)); + cv::Mat dxrdom = jacobians.colRange(8, 11) * domrdom + jacobians.colRange(11, 14) * dTrdom; + cv::Mat dxrdT = jacobians.colRange(8, 11) * domrdT + jacobians.colRange(11, 14)* dTrdT; + cv::Mat dxrdomckk = jacobians.colRange(8, 11) * domrdomckk + jacobians.colRange(11, 14) * dTrdomckk; + cv::Mat dxrdTckk = jacobians.colRange(8, 11) * domrdTckk + jacobians.colRange(11, 14) * dTrdTckk; + + dxrdom.copyTo(Jkk.colRange(18, 21).rowRange(2 * n_points, 4 * n_points)); + dxrdT.copyTo(Jkk.colRange(21, 24).rowRange(2 * n_points, 4 * n_points)); + dxrdomckk.copyTo(Jkk.colRange(24 + image_idx * 6, 27 + image_idx * 6).rowRange(2 * n_points, 4 * n_points)); + dxrdTckk.copyTo(Jkk.colRange(27 + image_idx * 6, 30 + image_idx * 6).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(0, 2).copyTo(Jkk.colRange(9 + 0, 9 + 2).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(2, 4).copyTo(Jkk.colRange(9 + 2, 9 + 4).rowRange(2 * n_points, 4 * n_points)); + jacobians.colRange(4, 8).copyTo(Jkk.colRange(9 + 5, 9 + 9).rowRange(2 * n_points, 4 * n_points)); + jacobians.col(14).copyTo(Jkk.col(9 + 4).rowRange(2 * n_points, 4 * n_points)); + + //check goodness of sterepair + double abs_max = 0; + for (int i = 0; i < 4 * n_points; i++) + { + if (fabs(ekk.at(i)) > abs_max) + { + abs_max = fabs(ekk.at(i)); + } + } + + CV_Assert(abs_max < threshold); // bad stereo pair + + Jkk.copyTo(J.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); + ekk.copyTo(e.rowRange(image_idx * 4 * n_points, (image_idx + 1) * 4 * n_points)); + } + + cv::Vec6d oldTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); + + //update all parameters + cv::subMatrix(J, J, selectedParams, std::vector(J.rows, 1)); + cv::Mat J2 = J.t() * J; + J2_inv = J2.inv(); + int a = cv::countNonZero(intrinsicLeft.isEstimate); + int b = cv::countNonZero(intrinsicRight.isEstimate); + cv::Mat deltas = J2_inv * J.t() * e; + intrinsicLeft = intrinsicLeft + deltas.rowRange(0, a); + intrinsicRight = intrinsicRight + deltas.rowRange(a, a + b); + omcur = omcur + cv::Vec3d(deltas.rowRange(a + b, a + b + 3)); + Tcur = Tcur + cv::Vec3d(deltas.rowRange(a + b + 3, a + b + 6)); + for (int image_idx = 0; image_idx < n_images; ++image_idx) + { + rvecs1[image_idx] = cv::Mat(cv::Mat(rvecs1[image_idx]) + deltas.rowRange(a + b + 6 + image_idx * 6, a + b + 9 + image_idx * 6)); + tvecs1[image_idx] = cv::Mat(cv::Mat(tvecs1[image_idx]) + deltas.rowRange(a + b + 9 + image_idx * 6, a + b + 12 + image_idx * 6)); + } + + cv::Vec6d newTom(Tcur[0], Tcur[1], Tcur[2], omcur[0], omcur[1], omcur[2]); + change = cv::norm(newTom - oldTom) / cv::norm(newTom); + } + + double rms = 0; + const Vec2d* ptr_e = e.ptr(); + for (size_t i = 0; i < e.total() / 2; i++) + { + rms += ptr_e[i][0] * ptr_e[i][0] + ptr_e[i][1] * ptr_e[i][1]; + } + + rms /= ((double)e.total() / 2.0); + rms = sqrt(rms); + + _K1 = Matx33d(intrinsicLeft.f[0], intrinsicLeft.f[0] * intrinsicLeft.alpha, intrinsicLeft.c[0], + 0, intrinsicLeft.f[1], intrinsicLeft.c[1], + 0, 0, 1); + + _K2 = Matx33d(intrinsicRight.f[0], intrinsicRight.f[0] * intrinsicRight.alpha, intrinsicRight.c[0], + 0, intrinsicRight.f[1], intrinsicRight.c[1], + 0, 0, 1); + + Mat _R; + Rodrigues(omcur, _R); + + if (K1.needed()) cv::Mat(_K1).convertTo(K1, K1.empty() ? CV_64FC1 : K1.type()); + if (K2.needed()) cv::Mat(_K2).convertTo(K2, K2.empty() ? CV_64FC1 : K2.type()); + if (D1.needed()) cv::Mat(intrinsicLeft.k).convertTo(D1, D1.empty() ? CV_64FC1 : D1.type()); + if (D2.needed()) cv::Mat(intrinsicRight.k).convertTo(D2, D2.empty() ? CV_64FC1 : D2.type()); + if (R.needed()) _R.convertTo(R, R.empty() ? CV_64FC1 : R.type()); + if (T.needed()) cv::Mat(Tcur).convertTo(T, T.empty() ? CV_64FC1 : T.type()); + + return rms; +} + +namespace cv{ namespace { +void subMatrix(const Mat& src, Mat& dst, const std::vector& cols, const std::vector& rows) +{ + CV_Assert(src.type() == CV_64FC1); + + int nonzeros_cols = cv::countNonZero(cols); + Mat tmp(src.rows, nonzeros_cols, CV_64FC1); + + for (int i = 0, j = 0; i < (int)cols.size(); i++) + { + if (cols[i]) + { + src.col(i).copyTo(tmp.col(j++)); + } + } + + int nonzeros_rows = cv::countNonZero(rows); + Mat tmp1(nonzeros_rows, nonzeros_cols, CV_64FC1); + for (int i = 0, j = 0; i < (int)rows.size(); i++) + { + if (rows[i]) + { + tmp.row(i).copyTo(tmp1.row(j++)); + } + } + + dst = tmp1.clone(); +} + +}} + +cv::internal::IntrinsicParams::IntrinsicParams(): + f(Vec2d::all(0)), c(Vec2d::all(0)), k(Vec4d::all(0)), alpha(0), isEstimate(9,0) +{ +} + +cv::internal::IntrinsicParams::IntrinsicParams(Vec2d _f, Vec2d _c, Vec4d _k, double _alpha): + f(_f), c(_c), k(_k), alpha(_alpha), isEstimate(9,0) +{ +} + +cv::internal::IntrinsicParams cv::internal::IntrinsicParams::operator+(const Mat& a) +{ + CV_Assert(a.type() == CV_64FC1); + IntrinsicParams tmp; + const double* ptr = a.ptr(); + + int j = 0; + tmp.f[0] = this->f[0] + (isEstimate[0] ? ptr[j++] : 0); + tmp.f[1] = this->f[1] + (isEstimate[1] ? ptr[j++] : 0); + tmp.c[0] = this->c[0] + (isEstimate[2] ? ptr[j++] : 0); + tmp.alpha = this->alpha + (isEstimate[4] ? ptr[j++] : 0); + tmp.c[1] = this->c[1] + (isEstimate[3] ? ptr[j++] : 0); + tmp.k[0] = this->k[0] + (isEstimate[5] ? ptr[j++] : 0); + tmp.k[1] = this->k[1] + (isEstimate[6] ? ptr[j++] : 0); + tmp.k[2] = this->k[2] + (isEstimate[7] ? ptr[j++] : 0); + tmp.k[3] = this->k[3] + (isEstimate[8] ? ptr[j++] : 0); + + tmp.isEstimate = isEstimate; + return tmp; +} + +cv::internal::IntrinsicParams& cv::internal::IntrinsicParams::operator =(const Mat& a) +{ + CV_Assert(a.type() == CV_64FC1); + const double* ptr = a.ptr(); + + int j = 0; + + this->f[0] = isEstimate[0] ? ptr[j++] : 0; + this->f[1] = isEstimate[1] ? ptr[j++] : 0; + this->c[0] = isEstimate[2] ? ptr[j++] : 0; + this->c[1] = isEstimate[3] ? ptr[j++] : 0; + this->alpha = isEstimate[4] ? ptr[j++] : 0; + this->k[0] = isEstimate[5] ? ptr[j++] : 0; + this->k[1] = isEstimate[6] ? ptr[j++] : 0; + this->k[2] = isEstimate[7] ? ptr[j++] : 0; + this->k[3] = isEstimate[8] ? ptr[j++] : 0; + + return *this; +} + +void cv::internal::IntrinsicParams::Init(const cv::Vec2d& _f, const cv::Vec2d& _c, const cv::Vec4d& _k, const double& _alpha) +{ + this->c = _c; + this->f = _f; + this->k = _k; + this->alpha = _alpha; +} + +void cv::internal::projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, + cv::InputArray _rvec,cv::InputArray _tvec, + const IntrinsicParams& param, cv::OutputArray jacobian) +{ + CV_Assert(!objectPoints.empty() && objectPoints.type() == CV_64FC3); + Matx33d K(param.f[0], param.f[0] * param.alpha, param.c[0], + 0, param.f[1], param.c[1], + 0, 0, 1); + fisheye::projectPoints(objectPoints, imagePoints, _rvec, _tvec, K, param.k, param.alpha, jacobian); +} + +void cv::internal::ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, + Mat& tvec, Mat& J, const int MaxIter, + const IntrinsicParams& param, const double thresh_cond) +{ + CV_Assert(!objectPoints.empty() && objectPoints.type() == CV_64FC3); + CV_Assert(!imagePoints.empty() && imagePoints.type() == CV_64FC2); + Vec6d extrinsics(rvec.at(0), rvec.at(1), rvec.at(2), + tvec.at(0), tvec.at(1), tvec.at(2)); + double change = 1; + int iter = 0; + + while (change > 1e-10 && iter < MaxIter) + { + std::vector x; + Mat jacobians; + projectPoints(objectPoints, x, rvec, tvec, param, jacobians); + + Mat ex = imagePoints - Mat(x).t(); + ex = ex.reshape(1, 2); + + J = jacobians.colRange(8, 14).clone(); + + SVD svd(J, SVD::NO_UV); + double condJJ = svd.w.at(0)/svd.w.at(5); + + if (condJJ > thresh_cond) + change = 0; + else + { + Vec6d param_innov; + solve(J, ex.reshape(1, (int)ex.total()), param_innov, DECOMP_SVD + DECOMP_NORMAL); + + Vec6d param_up = extrinsics + param_innov; + change = norm(param_innov)/norm(param_up); + extrinsics = param_up; + iter = iter + 1; + + rvec = Mat(Vec3d(extrinsics.val)); + tvec = Mat(Vec3d(extrinsics.val+3)); + } + } +} + +cv::Mat cv::internal::ComputeHomography(Mat m, Mat M) +{ + int Np = m.cols; + + if (m.rows < 3) + { + vconcat(m, Mat::ones(1, Np, CV_64FC1), m); + } + if (M.rows < 3) + { + vconcat(M, Mat::ones(1, Np, CV_64FC1), M); + } + + divide(m, Mat::ones(3, 1, CV_64FC1) * m.row(2), m); + divide(M, Mat::ones(3, 1, CV_64FC1) * M.row(2), M); + + Mat ax = m.row(0).clone(); + Mat ay = m.row(1).clone(); + + double mxx = mean(ax)[0]; + double myy = mean(ay)[0]; + + ax = ax - mxx; + ay = ay - myy; + + double scxx = mean(abs(ax))[0]; + double scyy = mean(abs(ay))[0]; + + Mat Hnorm (Matx33d( 1/scxx, 0.0, -mxx/scxx, + 0.0, 1/scyy, -myy/scyy, + 0.0, 0.0, 1.0 )); + + Mat inv_Hnorm (Matx33d( scxx, 0, mxx, + 0, scyy, myy, + 0, 0, 1 )); + Mat mn = Hnorm * m; + + Mat L = Mat::zeros(2*Np, 9, CV_64FC1); + + for (int i = 0; i < Np; ++i) + { + for (int j = 0; j < 3; j++) + { + L.at(2 * i, j) = M.at(j, i); + L.at(2 * i + 1, j + 3) = M.at(j, i); + L.at(2 * i, j + 6) = -mn.at(0,i) * M.at(j, i); + L.at(2 * i + 1, j + 6) = -mn.at(1,i) * M.at(j, i); + } + } + + if (Np > 4) L = L.t() * L; + SVD svd(L); + Mat hh = svd.vt.row(8) / svd.vt.row(8).at(8); + Mat Hrem = hh.reshape(1, 3); + Mat H = inv_Hnorm * Hrem; + + if (Np > 4) + { + Mat hhv = H.reshape(1, 9)(Rect(0, 0, 1, 8)).clone(); + for (int iter = 0; iter < 10; iter++) + { + Mat mrep = H * M; + Mat J = Mat::zeros(2 * Np, 8, CV_64FC1); + Mat MMM; + divide(M, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 2, mrep.cols, 1)), MMM); + divide(mrep, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 2, mrep.cols, 1)), mrep); + Mat m_err = m(Rect(0,0, m.cols, 2)) - mrep(Rect(0,0, mrep.cols, 2)); + m_err = Mat(m_err.t()).reshape(1, m_err.cols * m_err.rows); + Mat MMM2, MMM3; + multiply(Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 0, mrep.cols, 1)), MMM, MMM2); + multiply(Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0, 1, mrep.cols, 1)), MMM, MMM3); + + for (int i = 0; i < Np; ++i) + { + for (int j = 0; j < 3; ++j) + { + J.at(2 * i, j) = -MMM.at(j, i); + J.at(2 * i + 1, j + 3) = -MMM.at(j, i); + } + + for (int j = 0; j < 2; ++j) + { + J.at(2 * i, j + 6) = MMM2.at(j, i); + J.at(2 * i + 1, j + 6) = MMM3.at(j, i); + } + } + divide(M, Mat::ones(3, 1, CV_64FC1) * mrep(Rect(0,2,mrep.cols,1)), MMM); + Mat hh_innov = (J.t() * J).inv() * (J.t()) * m_err; + Mat hhv_up = hhv - hh_innov; + Mat tmp; + vconcat(hhv_up, Mat::ones(1,1,CV_64FC1), tmp); + Mat H_up = tmp.reshape(1,3); + hhv = hhv_up; + H = H_up; + } + } + return H; +} + +cv::Mat cv::internal::NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param) +{ + CV_Assert(!imagePoints.empty() && imagePoints.type() == CV_64FC2); + + Mat distorted((int)imagePoints.total(), 1, CV_64FC2), undistorted; + const Vec2d* ptr = imagePoints.ptr(0); + Vec2d* ptr_d = distorted.ptr(0); + for (size_t i = 0; i < imagePoints.total(); ++i) + { + ptr_d[i] = (ptr[i] - param.c).mul(Vec2d(1.0 / param.f[0], 1.0 / param.f[1])); + ptr_d[i][0] = ptr_d[i][0] - param.alpha * ptr_d[i][1]; + } + cv::fisheye::undistortPoints(distorted, undistorted, Matx33d::eye(), param.k); + return undistorted; +} + +void cv::internal::InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk) +{ + + CV_Assert(!_objectPoints.empty() && _objectPoints.type() == CV_64FC3); + CV_Assert(!_imagePoints.empty() && _imagePoints.type() == CV_64FC2); + + Mat imagePointsNormalized = NormalizePixels(_imagePoints.t(), param).reshape(1).t(); + Mat objectPoints = Mat(_objectPoints.t()).reshape(1).t(); + Mat objectPointsMean, covObjectPoints; + Mat Rckk; + int Np = imagePointsNormalized.cols; + calcCovarMatrix(objectPoints, covObjectPoints, objectPointsMean, COVAR_NORMAL | COVAR_COLS); + SVD svd(covObjectPoints); + Mat R(svd.vt); + if (norm(R(Rect(2, 0, 1, 2))) < 1e-6) + R = Mat::eye(3,3, CV_64FC1); + if (determinant(R) < 0) + R = -R; + Mat T = -R * objectPointsMean; + Mat X_new = R * objectPoints + T * Mat::ones(1, Np, CV_64FC1); + Mat H = ComputeHomography(imagePointsNormalized, X_new(Rect(0,0,X_new.cols,2))); + double sc = .5 * (norm(H.col(0)) + norm(H.col(1))); + H = H / sc; + Mat u1 = H.col(0).clone(); + u1 = u1 / norm(u1); + Mat u2 = H.col(1).clone() - u1.dot(H.col(1).clone()) * u1; + u2 = u2 / norm(u2); + Mat u3 = u1.cross(u2); + Mat RRR; + hconcat(u1, u2, RRR); + hconcat(RRR, u3, RRR); + Rodrigues(RRR, omckk); + Rodrigues(omckk, Rckk); + Tckk = H.col(2).clone(); + Tckk = Tckk + Rckk * T; + Rckk = Rckk * R; + Rodrigues(Rckk, omckk); +} + +void cv::internal::CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, const int check_cond, + const double thresh_cond, InputOutputArray omc, InputOutputArray Tc) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + CV_Assert(omc.type() == CV_64FC3 || Tc.type() == CV_64FC3); + + if (omc.empty()) omc.create(1, (int)objectPoints.total(), CV_64FC3); + if (Tc.empty()) Tc.create(1, (int)objectPoints.total(), CV_64FC3); + + const int maxIter = 20; + + for(int image_idx = 0; image_idx < (int)imagePoints.total(); ++image_idx) + { + Mat omckk, Tckk, JJ_kk; + Mat image, object; + + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + InitExtrinsics(image, object, param, omckk, Tckk); + + ComputeExtrinsicRefine(image, object, omckk, Tckk, JJ_kk, maxIter, param, thresh_cond); + if (check_cond) + { + SVD svd(JJ_kk, SVD::NO_UV); + CV_Assert(svd.w.at(0) / svd.w.at((int)svd.w.total() - 1) < thresh_cond); + } + omckk.reshape(3,1).copyTo(omc.getMat().col(image_idx)); + Tckk.reshape(3,1).copyTo(Tc.getMat().col(image_idx)); + } +} + + +void cv::internal::ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, InputArray omc, InputArray Tc, + const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + + CV_Assert(!omc.empty() && omc.type() == CV_64FC3); + CV_Assert(!Tc.empty() && Tc.type() == CV_64FC3); + + int n = (int)objectPoints.total(); + + Mat JJ3 = Mat::zeros(9 + 6 * n, 9 + 6 * n, CV_64FC1); + ex3 = Mat::zeros(9 + 6 * n, 1, CV_64FC1 ); + + for (int image_idx = 0; image_idx < n; ++image_idx) + { + Mat image, object; + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + Mat om(omc.getMat().col(image_idx)), T(Tc.getMat().col(image_idx)); + + std::vector x; + Mat jacobians; + projectPoints(object, x, om, T, param, jacobians); + Mat exkk = image.t() - Mat(x); + + Mat A(jacobians.rows, 9, CV_64FC1); + jacobians.colRange(0, 4).copyTo(A.colRange(0, 4)); + jacobians.col(14).copyTo(A.col(4)); + jacobians.colRange(4, 8).copyTo(A.colRange(5, 9)); + + A = A.t(); + + Mat B = jacobians.colRange(8, 14).clone(); + B = B.t(); + + JJ3(Rect(0, 0, 9, 9)) = JJ3(Rect(0, 0, 9, 9)) + A * A.t(); + JJ3(Rect(9 + 6 * image_idx, 9 + 6 * image_idx, 6, 6)) = B * B.t(); + + Mat AB = A * B.t(); + AB.copyTo(JJ3(Rect(9 + 6 * image_idx, 0, 6, 9))); + + JJ3(Rect(0, 9 + 6 * image_idx, 9, 6)) = AB.t(); + ex3(Rect(0,0,1,9)) = ex3(Rect(0,0,1,9)) + A * exkk.reshape(1, 2 * exkk.rows); + + ex3(Rect(0, 9 + 6 * image_idx, 1, 6)) = B * exkk.reshape(1, 2 * exkk.rows); + + if (check_cond) + { + Mat JJ_kk = B.t(); + SVD svd(JJ_kk, SVD::NO_UV); + CV_Assert(svd.w.at(0) / svd.w.at(svd.w.rows - 1) < thresh_cond); + } + } + + std::vector idxs(param.isEstimate); + idxs.insert(idxs.end(), 6 * n, 1); + + subMatrix(JJ3, JJ3, idxs, idxs); + subMatrix(ex3, ex3, std::vector(1, 1), idxs); + JJ2_inv = JJ3.inv(); +} + +void cv::internal::EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& params, InputArray omc, InputArray Tc, + IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms) +{ + CV_Assert(!objectPoints.empty() && (objectPoints.type() == CV_32FC3 || objectPoints.type() == CV_64FC3)); + CV_Assert(!imagePoints.empty() && (imagePoints.type() == CV_32FC2 || imagePoints.type() == CV_64FC2)); + + CV_Assert(!omc.empty() && omc.type() == CV_64FC3); + CV_Assert(!Tc.empty() && Tc.type() == CV_64FC3); + + Mat ex((int)(objectPoints.getMat(0).total() * objectPoints.total()), 1, CV_64FC2); + + for (int image_idx = 0; image_idx < (int)objectPoints.total(); ++image_idx) + { + Mat image, object; + objectPoints.getMat(image_idx).convertTo(object, CV_64FC3); + imagePoints.getMat (image_idx).convertTo(image, CV_64FC2); + + Mat om(omc.getMat().col(image_idx)), T(Tc.getMat().col(image_idx)); + + std::vector x; + projectPoints(object, x, om, T, params, noArray()); + Mat ex_ = image.t() - Mat(x); + ex_.copyTo(ex.rowRange(ex_.rows * image_idx, ex_.rows * (image_idx + 1))); + } + + meanStdDev(ex, noArray(), std_err); + std_err *= sqrt((double)ex.total()/((double)ex.total() - 1.0)); + + Mat sigma_x; + meanStdDev(ex.reshape(1, 1), noArray(), sigma_x); + sigma_x *= sqrt(2.0 * (double)ex.total()/(2.0 * (double)ex.total() - 1.0)); + + Mat _JJ2_inv, ex3; + ComputeJacobians(objectPoints, imagePoints, params, omc, Tc, check_cond, thresh_cond, _JJ2_inv, ex3); + + Mat_& JJ2_inv = (Mat_&)_JJ2_inv; + + sqrt(JJ2_inv, JJ2_inv); + + double s = sigma_x.at(0); + Mat r = 3 * s * JJ2_inv.diag(); + errors = r; + + rms = 0; + const Vec2d* ptr_ex = ex.ptr(); + for (size_t i = 0; i < ex.total(); i++) + { + rms += ptr_ex[i][0] * ptr_ex[i][0] + ptr_ex[i][1] * ptr_ex[i][1]; + } + + rms /= (double)ex.total(); + rms = sqrt(rms); +} + +void cv::internal::dAB(InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB) +{ + CV_Assert(A.getMat().cols == B.getMat().rows); + CV_Assert(A.type() == CV_64FC1 && B.type() == CV_64FC1); + + int p = A.getMat().rows; + int n = A.getMat().cols; + int q = B.getMat().cols; + + dABdA.create(p * q, p * n, CV_64FC1); + dABdB.create(p * q, q * n, CV_64FC1); + + dABdA.getMat() = Mat::zeros(p * q, p * n, CV_64FC1); + dABdB.getMat() = Mat::zeros(p * q, q * n, CV_64FC1); + + for (int i = 0; i < q; ++i) + { + for (int j = 0; j < p; ++j) + { + int ij = j + i * p; + for (int k = 0; k < n; ++k) + { + int kj = j + k * p; + dABdA.getMat().at(ij, kj) = B.getMat().at(k, i); + } + } + } + + for (int i = 0; i < q; ++i) + { + A.getMat().copyTo(dABdB.getMat().rowRange(i * p, i * p + p).colRange(i * n, i * n + n)); + } +} + +void cv::internal::JRodriguesMatlab(const Mat& src, Mat& dst) +{ + Mat tmp(src.cols, src.rows, src.type()); + if (src.rows == 9) + { + Mat(src.row(0).t()).copyTo(tmp.col(0)); + Mat(src.row(1).t()).copyTo(tmp.col(3)); + Mat(src.row(2).t()).copyTo(tmp.col(6)); + Mat(src.row(3).t()).copyTo(tmp.col(1)); + Mat(src.row(4).t()).copyTo(tmp.col(4)); + Mat(src.row(5).t()).copyTo(tmp.col(7)); + Mat(src.row(6).t()).copyTo(tmp.col(2)); + Mat(src.row(7).t()).copyTo(tmp.col(5)); + Mat(src.row(8).t()).copyTo(tmp.col(8)); + } + else + { + Mat(src.col(0).t()).copyTo(tmp.row(0)); + Mat(src.col(1).t()).copyTo(tmp.row(3)); + Mat(src.col(2).t()).copyTo(tmp.row(6)); + Mat(src.col(3).t()).copyTo(tmp.row(1)); + Mat(src.col(4).t()).copyTo(tmp.row(4)); + Mat(src.col(5).t()).copyTo(tmp.row(7)); + Mat(src.col(6).t()).copyTo(tmp.row(2)); + Mat(src.col(7).t()).copyTo(tmp.row(5)); + Mat(src.col(8).t()).copyTo(tmp.row(8)); + } + dst = tmp.clone(); +} + +void cv::internal::compose_motion(InputArray _om1, InputArray _T1, InputArray _om2, InputArray _T2, + Mat& om3, Mat& T3, Mat& dom3dom1, Mat& dom3dT1, Mat& dom3dom2, + Mat& dom3dT2, Mat& dT3dom1, Mat& dT3dT1, Mat& dT3dom2, Mat& dT3dT2) +{ + Mat om1 = _om1.getMat(); + Mat om2 = _om2.getMat(); + Mat T1 = _T1.getMat().reshape(1, 3); + Mat T2 = _T2.getMat().reshape(1, 3); + + //% Rotations: + Mat R1, R2, R3, dR1dom1(9, 3, CV_64FC1), dR2dom2; + Rodrigues(om1, R1, dR1dom1); + Rodrigues(om2, R2, dR2dom2); + JRodriguesMatlab(dR1dom1, dR1dom1); + JRodriguesMatlab(dR2dom2, dR2dom2); + R3 = R2 * R1; + Mat dR3dR2, dR3dR1; + dAB(R2, R1, dR3dR2, dR3dR1); + Mat dom3dR3; + Rodrigues(R3, om3, dom3dR3); + JRodriguesMatlab(dom3dR3, dom3dR3); + dom3dom1 = dom3dR3 * dR3dR1 * dR1dom1; + dom3dom2 = dom3dR3 * dR3dR2 * dR2dom2; + dom3dT1 = Mat::zeros(3, 3, CV_64FC1); + dom3dT2 = Mat::zeros(3, 3, CV_64FC1); + + //% Translations: + Mat T3t = R2 * T1; + Mat dT3tdR2, dT3tdT1; + dAB(R2, T1, dT3tdR2, dT3tdT1); + Mat dT3tdom2 = dT3tdR2 * dR2dom2; + T3 = T3t + T2; + dT3dT1 = dT3tdT1; + dT3dT2 = Mat::eye(3, 3, CV_64FC1); + dT3dom2 = dT3tdom2; + dT3dom1 = Mat::zeros(3, 3, CV_64FC1); +} + +double cv::internal::median(const Mat& row) +{ + CV_Assert(row.type() == CV_64FC1); + CV_Assert(!row.empty() && row.rows == 1); + Mat tmp = row.clone(); + sort(tmp, tmp, 0); + if ((int)tmp.total() % 2) return tmp.at((int)tmp.total() / 2); + else return 0.5 *(tmp.at((int)tmp.total() / 2) + tmp.at((int)tmp.total() / 2 - 1)); +} + +cv::Vec3d cv::internal::median3d(InputArray m) +{ + CV_Assert(m.depth() == CV_64F && m.getMat().rows == 1); + Mat M = Mat(m.getMat().t()).reshape(1).t(); + return Vec3d(median(M.row(0)), median(M.row(1)), median(M.row(2))); +} diff --git a/modules/calib3d/src/fisheye.hpp b/modules/calib3d/src/fisheye.hpp new file mode 100644 index 0000000000..82c9f34598 --- /dev/null +++ b/modules/calib3d/src/fisheye.hpp @@ -0,0 +1,61 @@ +#ifndef FISHEYE_INTERNAL_H +#define FISHEYE_INTERNAL_H +#include "precomp.hpp" + +namespace cv { namespace internal { + +struct CV_EXPORTS IntrinsicParams +{ + Vec2d f; + Vec2d c; + Vec4d k; + double alpha; + std::vector isEstimate; + + IntrinsicParams(); + IntrinsicParams(Vec2d f, Vec2d c, Vec4d k, double alpha = 0); + IntrinsicParams operator+(const Mat& a); + IntrinsicParams& operator =(const Mat& a); + void Init(const cv::Vec2d& f, const cv::Vec2d& c, const cv::Vec4d& k = Vec4d(0,0,0,0), const double& alpha = 0); +}; + +void projectPoints(cv::InputArray objectPoints, cv::OutputArray imagePoints, + cv::InputArray _rvec,cv::InputArray _tvec, + const IntrinsicParams& param, cv::OutputArray jacobian); + +void ComputeExtrinsicRefine(const Mat& imagePoints, const Mat& objectPoints, Mat& rvec, + Mat& tvec, Mat& J, const int MaxIter, + const IntrinsicParams& param, const double thresh_cond); +CV_EXPORTS Mat ComputeHomography(Mat m, Mat M); + +CV_EXPORTS Mat NormalizePixels(const Mat& imagePoints, const IntrinsicParams& param); + +void InitExtrinsics(const Mat& _imagePoints, const Mat& _objectPoints, const IntrinsicParams& param, Mat& omckk, Mat& Tckk); + +void CalibrateExtrinsics(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, const int check_cond, + const double thresh_cond, InputOutputArray omc, InputOutputArray Tc); + +void ComputeJacobians(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& param, InputArray omc, InputArray Tc, + const int& check_cond, const double& thresh_cond, Mat& JJ2_inv, Mat& ex3); + +CV_EXPORTS void EstimateUncertainties(InputArrayOfArrays objectPoints, InputArrayOfArrays imagePoints, + const IntrinsicParams& params, InputArray omc, InputArray Tc, + IntrinsicParams& errors, Vec2d& std_err, double thresh_cond, int check_cond, double& rms); + +void dAB(cv::InputArray A, InputArray B, OutputArray dABdA, OutputArray dABdB); + +void JRodriguesMatlab(const Mat& src, Mat& dst); + +void compose_motion(InputArray _om1, InputArray _T1, InputArray _om2, InputArray _T2, + Mat& om3, Mat& T3, Mat& dom3dom1, Mat& dom3dT1, Mat& dom3dom2, + Mat& dom3dT2, Mat& dT3dom1, Mat& dT3dT1, Mat& dT3dom2, Mat& dT3dT2); + +double median(const Mat& row); + +Vec3d median3d(InputArray m); + +}} + +#endif diff --git a/modules/calib3d/src/homography_decomp.cpp b/modules/calib3d/src/homography_decomp.cpp new file mode 100644 index 0000000000..1a642612f0 --- /dev/null +++ b/modules/calib3d/src/homography_decomp.cpp @@ -0,0 +1,482 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // This is a homography decomposition implementation contributed to OpenCV + // by Samson Yilma. It implements the homography decomposition algorithm + // descriped in the research report: + // Malis, E and Vargas, M, "Deeper understanding of the homography decomposition + // for vision-based control", Research Report 6303, INRIA (2007) + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved. + // + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's 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. + // + // * The name of the copyright holders may not 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 Intel Corporation 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. + // + //M*/ + +#include "precomp.hpp" +#include + +namespace cv +{ + +namespace HomographyDecomposition +{ + +//struct to hold solutions of homography decomposition +typedef struct _CameraMotion { + cv::Matx33d R; //!< rotation matrix + cv::Vec3d n; //!< normal of the plane the camera is looking at + cv::Vec3d t; //!< translation vector +} CameraMotion; + +inline int signd(const double x) +{ + return ( x >= 0 ? 1 : -1 ); +} + +class HomographyDecomp { + +public: + HomographyDecomp() {} + virtual ~HomographyDecomp() {} + virtual void decomposeHomography(const cv::Matx33d& H, const cv::Matx33d& K, + std::vector& camMotions); + bool isRotationValid(const cv::Matx33d& R, const double epsilon=0.01); + +protected: + bool passesSameSideOfPlaneConstraint(CameraMotion& motion); + virtual void decompose(std::vector& camMotions) = 0; + const cv::Matx33d& getHnorm() const { + return _Hnorm; + } + +private: + cv::Matx33d normalize(const cv::Matx33d& H, const cv::Matx33d& K); + void removeScale(); + cv::Matx33d _Hnorm; +}; + +class HomographyDecompZhang : public HomographyDecomp { + +public: + HomographyDecompZhang():HomographyDecomp() {} + virtual ~HomographyDecompZhang() {} + +private: + virtual void decompose(std::vector& camMotions); + bool findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion); +}; + +class HomographyDecompInria : public HomographyDecomp { + +public: + HomographyDecompInria():HomographyDecomp() {} + virtual ~HomographyDecompInria() {} + +private: + virtual void decompose(std::vector& camMotions); + double oppositeOfMinor(const cv::Matx33d& M, const int row, const int col); + void findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R); +}; + +// normalizes homography with intrinsic camera parameters +Matx33d HomographyDecomp::normalize(const Matx33d& H, const Matx33d& K) +{ + return K.inv() * H * K; +} + +void HomographyDecomp::removeScale() +{ + Mat W; + SVD::compute(_Hnorm, W); + _Hnorm = _Hnorm * (1.0/W.at(1)); +} + +/*! This checks that the input is a pure rotation matrix 'm'. + * The conditions for this are: R' * R = I and det(R) = 1 (proper rotation matrix) + */ +bool HomographyDecomp::isRotationValid(const Matx33d& R, const double epsilon) +{ + Matx33d RtR = R.t() * R; + Matx33d I(1,0,0, 0,1,0, 0,0,1); + if (norm(RtR, I, NORM_INF) > epsilon) + return false; + return (fabs(determinant(R) - 1.0) < epsilon); +} + +bool HomographyDecomp::passesSameSideOfPlaneConstraint(CameraMotion& motion) +{ + typedef Matx Matx11d; + Matx31d t = Matx31d(motion.t); + Matx31d n = Matx31d(motion.n); + Matx11d proj = n.t() * motion.R.t() * t; + if ( (1 + proj(0, 0) ) <= 0 ) + return false; + return true; +} + +//!main routine to decompose homography +void HomographyDecomp::decomposeHomography(const Matx33d& H, const cv::Matx33d& K, + std::vector& camMotions) +{ + //normalize homography matrix with intrinsic camera matrix + _Hnorm = normalize(H, K); + //remove scale of the normalized homography + removeScale(); + //apply decomposition + decompose(camMotions); +} + +/* function computes R&t from tstar, and plane normal(n) using + R = H * inv(I + tstar*transpose(n) ); + t = R * tstar; + returns true if computed R&t is a valid solution + */ +bool HomographyDecompZhang::findMotionFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, CameraMotion& motion) +{ + Matx31d tstar_m = Mat(tstar); + Matx31d n_m = Mat(n); + Matx33d temp = tstar_m * n_m.t(); + temp(0, 0) += 1.0; + temp(1, 1) += 1.0; + temp(2, 2) += 1.0; + motion.R = getHnorm() * temp.inv(); + motion.t = motion.R * tstar; + motion.n = n; + return passesSameSideOfPlaneConstraint(motion); +} + +void HomographyDecompZhang::decompose(std::vector& camMotions) +{ + Mat W, U, Vt; + SVD::compute(getHnorm(), W, U, Vt); + double lambda1=W.at(0); + double lambda3=W.at(2); + double lambda1m3 = (lambda1-lambda3); + double lambda1m3_2 = lambda1m3*lambda1m3; + double lambda1t3 = lambda1*lambda3; + + double t1 = 1.0/(2.0*lambda1t3); + double t2 = sqrt(1.0+4.0*lambda1t3/lambda1m3_2); + double t12 = t1*t2; + + double e1 = -t1 + t12; //t1*(-1.0f + t2 ); + double e3 = -t1 - t12; //t1*(-1.0f - t2); + double e1_2 = e1*e1; + double e3_2 = e3*e3; + + double nv1p = sqrt(e1_2*lambda1m3_2 + 2*e1*(lambda1t3-1) + 1.0); + double nv3p = sqrt(e3_2*lambda1m3_2 + 2*e3*(lambda1t3-1) + 1.0); + double v1p[3], v3p[3]; + + v1p[0]=Vt.at(0)*nv1p, v1p[1]=Vt.at(1)*nv1p, v1p[2]=Vt.at(2)*nv1p; + v3p[0]=Vt.at(6)*nv3p, v3p[1]=Vt.at(7)*nv3p, v3p[2]=Vt.at(8)*nv3p; + + /*The eight solutions are + (A): tstar = +- (v1p - v3p)/(e1 -e3), n = +- (e1*v3p - e3*v1p)/(e1-e3) + (B): tstar = +- (v1p + v3p)/(e1 -e3), n = +- (e1*v3p + e3*v1p)/(e1-e3) + */ + double v1pmv3p[3], v1ppv3p[3]; + double e1v3me3v1[3], e1v3pe3v1[3]; + double inv_e1me3 = 1.0/(e1-e3); + + for(int kk=0;kk<3;++kk){ + v1pmv3p[kk] = v1p[kk]-v3p[kk]; + v1ppv3p[kk] = v1p[kk]+v3p[kk]; + } + + for(int kk=0; kk<3; ++kk){ + double e1v3 = e1*v3p[kk]; + double e3v1=e3*v1p[kk]; + e1v3me3v1[kk] = e1v3-e3v1; + e1v3pe3v1[kk] = e1v3+e3v1; + } + + Vec3d tstar_p, tstar_n; + Vec3d n_p, n_n; + + ///Solution group A + for(int kk=0; kk<3; ++kk) { + tstar_p[kk] = v1pmv3p[kk]*inv_e1me3; + tstar_n[kk] = -tstar_p[kk]; + n_p[kk] = e1v3me3v1[kk]*inv_e1me3; + n_n[kk] = -n_p[kk]; + } + + CameraMotion cmotion; + //(A) Four different combinations for solution A + // (i) (+, +) + if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (ii) (+, -) + if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion)) + camMotions.push_back(cmotion); + + // (iii) (-, +) + if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (iv) (-, -) + if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion)) + camMotions.push_back(cmotion); + ////////////////////////////////////////////////////////////////// + ///Solution group B + for(int kk=0;kk<3;++kk){ + tstar_p[kk] = v1ppv3p[kk]*inv_e1me3; + tstar_n[kk] = -tstar_p[kk]; + n_p[kk] = e1v3pe3v1[kk]*inv_e1me3; + n_n[kk] = -n_p[kk]; + } + + //(B) Four different combinations for solution B + // (i) (+, +) + if (findMotionFrom_tstar_n(tstar_p, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (ii) (+, -) + if (findMotionFrom_tstar_n(tstar_p, n_n, cmotion)) + camMotions.push_back(cmotion); + + // (iii) (-, +) + if (findMotionFrom_tstar_n(tstar_n, n_p, cmotion)) + camMotions.push_back(cmotion); + + // (iv) (-, -) + if (findMotionFrom_tstar_n(tstar_n, n_n, cmotion)) + camMotions.push_back(cmotion); +} + +double HomographyDecompInria::oppositeOfMinor(const Matx33d& M, const int row, const int col) +{ + int x1 = col == 0 ? 1 : 0; + int x2 = col == 2 ? 1 : 2; + int y1 = row == 0 ? 1 : 0; + int y2 = row == 2 ? 1 : 2; + + return (M(y1, x2) * M(y2, x1) - M(y1, x1) * M(y2, x2)); +} + +//computes R = H( I - (2/v)*te_star*ne_t ) +void HomographyDecompInria::findRmatFrom_tstar_n(const cv::Vec3d& tstar, const cv::Vec3d& n, const double v, cv::Matx33d& R) +{ + Matx31d tstar_m = Matx31d(tstar); + Matx31d n_m = Matx31d(n); + Matx33d I(1.0, 0.0, 0.0, + 0.0, 1.0, 0.0, + 0.0, 0.0, 1.0); + + R = getHnorm() * (I - (2/v) * tstar_m * n_m.t() ); +} + +void HomographyDecompInria::decompose(std::vector& camMotions) +{ + const double epsilon = 0.001; + Matx33d S; + + //S = H'H - I + S = getHnorm().t() * getHnorm(); + S(0, 0) -= 1.0; + S(1, 1) -= 1.0; + S(2, 2) -= 1.0; + + //check if H is rotation matrix + if( norm(S, NORM_INF) < epsilon) { + CameraMotion motion; + motion.R = Matx33d(getHnorm()); + motion.t = Vec3d(0, 0, 0); + motion.n = Vec3d(0, 0, 0); + camMotions.push_back(motion); + return; + } + + //! Compute nvectors + Vec3d npa, npb; + + double M00 = oppositeOfMinor(S, 0, 0); + double M11 = oppositeOfMinor(S, 1, 1); + double M22 = oppositeOfMinor(S, 2, 2); + + double rtM00 = sqrt(M00); + double rtM11 = sqrt(M11); + double rtM22 = sqrt(M22); + + double M01 = oppositeOfMinor(S, 0, 1); + double M12 = oppositeOfMinor(S, 1, 2); + double M02 = oppositeOfMinor(S, 0, 2); + + int e12 = signd(M12); + int e02 = signd(M02); + int e01 = signd(M01); + + double nS00 = abs(S(0, 0)); + double nS11 = abs(S(1, 1)); + double nS22 = abs(S(2, 2)); + + //find max( |Sii| ), i=0, 1, 2 + int indx = 0; + if(nS00 < nS11){ + indx = 1; + if( nS11 < nS22 ) + indx = 2; + } + else { + if(nS00 < nS22 ) + indx = 2; + } + + switch (indx) { + case 0: + npa[0] = S(0, 0), npb[0] = S(0, 0); + npa[1] = S(0, 1) + rtM22, npb[1] = S(0, 1) - rtM22; + npa[2] = S(0, 2) + e12 * rtM11, npb[2] = S(0, 2) - e12 * rtM11; + break; + case 1: + npa[0] = S(0, 1) + rtM22, npb[0] = S(0, 1) - rtM22; + npa[1] = S(1, 1), npb[1] = S(1, 1); + npa[2] = S(1, 2) - e02 * rtM00, npb[2] = S(1, 2) + e02 * rtM00; + break; + case 2: + npa[0] = S(0, 2) + e01 * rtM11, npb[0] = S(0, 2) - e01 * rtM11; + npa[1] = S(1, 2) + rtM00, npb[1] = S(1, 2) - rtM00; + npa[2] = S(2, 2), npb[2] = S(2, 2); + break; + default: + break; + } + + double traceS = S(0, 0) + S(1, 1) + S(2, 2); + double v = 2.0 * sqrt(1 + traceS - M00 - M11 - M22); + + double ESii = signd(S(indx, indx)) ; + double r_2 = 2 + traceS + v; + double nt_2 = 2 + traceS - v; + + double r = sqrt(r_2); + double n_t = sqrt(nt_2); + + Vec3d na = npa / norm(npa); + Vec3d nb = npb / norm(npb); + + double half_nt = 0.5 * n_t; + double esii_t_r = ESii * r; + + Vec3d ta_star = half_nt * (esii_t_r * nb - n_t * na); + Vec3d tb_star = half_nt * (esii_t_r * na - n_t * nb); + + camMotions.resize(4); + + Matx33d Ra, Rb; + Vec3d ta, tb; + + //Ra, ta, na + findRmatFrom_tstar_n(ta_star, na, v, Ra); + ta = Ra * ta_star; + + camMotions[0].R = Ra; + camMotions[0].t = ta; + camMotions[0].n = na; + + //Ra, -ta, -na + camMotions[1].R = Ra; + camMotions[1].t = -ta; + camMotions[1].n = -na; + + //Rb, tb, nb + findRmatFrom_tstar_n(tb_star, nb, v, Rb); + tb = Rb * tb_star; + + camMotions[2].R = Rb; + camMotions[2].t = tb; + camMotions[2].n = nb; + + //Rb, -tb, -nb + camMotions[3].R = Rb; + camMotions[3].t = -tb; + camMotions[3].n = -nb; +} + +} //namespace HomographyDecomposition + +// function decomposes image-to-image homography to rotation and translation matrices +int decomposeHomographyMat(InputArray _H, + InputArray _K, + OutputArrayOfArrays _rotations, + OutputArrayOfArrays _translations, + OutputArrayOfArrays _normals) +{ + using namespace std; + using namespace HomographyDecomposition; + + Mat H = _H.getMat().reshape(1, 3); + CV_Assert(H.cols == 3 && H.rows == 3); + + Mat K = _K.getMat().reshape(1, 3); + CV_Assert(K.cols == 3 && K.rows == 3); + + auto_ptr hdecomp(new HomographyDecompInria); + + vector motions; + hdecomp->decomposeHomography(H, K, motions); + + int nsols = static_cast(motions.size()); + int depth = CV_64F; //double precision matrices used in CameraMotion struct + + if (_rotations.needed()) { + _rotations.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _rotations.getMatRef(k) = Mat(motions[k].R); + } + } + + if (_translations.needed()) { + _translations.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _translations.getMatRef(k) = Mat(motions[k].t); + } + } + + if (_normals.needed()) { + _normals.create(nsols, 1, depth); + for (int k = 0; k < nsols; ++k ) { + _normals.getMatRef(k) = Mat(motions[k].n); + } + } + + return nsols; +} + +} //namespace cv diff --git a/modules/calib3d/src/solvepnp.cpp b/modules/calib3d/src/solvepnp.cpp index 2b2d1bdf34..20e2899737 100644 --- a/modules/calib3d/src/solvepnp.cpp +++ b/modules/calib3d/src/solvepnp.cpp @@ -139,11 +139,13 @@ namespace cv CameraParameters camera; }; + template static void pnpTask(const std::vector& pointsMask, const Mat& objectPoints, const Mat& imagePoints, const Parameters& params, std::vector& inliers, Mat& rvec, Mat& tvec, const Mat& rvecInit, const Mat& tvecInit, Mutex& resultsMutex) { - Mat modelObjectPoints(1, MIN_POINTS_COUNT, CV_32FC3), modelImagePoints(1, MIN_POINTS_COUNT, CV_32FC2); + Mat modelObjectPoints(1, MIN_POINTS_COUNT, CV_MAKETYPE(DataDepth::value, 3)); + Mat modelImagePoints(1, MIN_POINTS_COUNT, CV_MAKETYPE(DataDepth::value, 2)); for (int i = 0, colIndex = 0; i < (int)pointsMask.size(); i++) { if (pointsMask[i]) @@ -162,7 +164,7 @@ namespace cv for (int i = 0; i < MIN_POINTS_COUNT; i++) for (int j = i + 1; j < MIN_POINTS_COUNT; j++) { - if (norm(modelObjectPoints.at(0, i) - modelObjectPoints.at(0, j)) < eps) + if (norm(modelObjectPoints.at >(0, i) - modelObjectPoints.at >(0, j)) < eps) num_same_points++; } if (num_same_points > 0) @@ -176,7 +178,7 @@ namespace cv params.useExtrinsicGuess, params.flags); - std::vector projected_points; + std::vector > projected_points; projected_points.resize(objectPoints.cols); projectPoints(objectPoints, localRvec, localTvec, params.camera.intrinsics, params.camera.distortion, projected_points); @@ -186,9 +188,11 @@ namespace cv std::vector localInliers; for (int i = 0; i < objectPoints.cols; i++) { - Point2f p(imagePoints.at(0, i)[0], imagePoints.at(0, i)[1]); + //Although p is a 2D point it needs the same type as the object points to enable the norm calculation + Point_ p((OpointType)imagePoints.at >(0, i)[0], + (OpointType)imagePoints.at >(0, i)[1]); if ((norm(p - projected_points[i]) < params.reprojectionError) - && (rotatedPoints.at(0, i)[2] > 0)) //hack + && (rotatedPoints.at >(0, i)[2] > 0)) //hack { localInliers.push_back(i); } @@ -208,6 +212,30 @@ namespace cv } } + static void pnpTask(const std::vector& pointsMask, const Mat& objectPoints, const Mat& imagePoints, + const Parameters& params, std::vector& inliers, Mat& rvec, Mat& tvec, + const Mat& rvecInit, const Mat& tvecInit, Mutex& resultsMutex) + { + CV_Assert(objectPoints.depth() == CV_64F || objectPoints.depth() == CV_32F); + CV_Assert(imagePoints.depth() == CV_64F || imagePoints.depth() == CV_32F); + const bool objectDoublePrecision = objectPoints.depth() == CV_64F; + const bool imageDoublePrecision = imagePoints.depth() == CV_64F; + if(objectDoublePrecision) + { + if(imageDoublePrecision) + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + else + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + } + else + { + if(imageDoublePrecision) + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + else + pnpTask(pointsMask, objectPoints, imagePoints, params, inliers, rvec, tvec, rvecInit, tvecInit, resultsMutex); + } + } + class PnPSolver { public: @@ -283,10 +311,10 @@ void cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints, Mat cameraMatrix = _cameraMatrix.getMat(), distCoeffs = _distCoeffs.getMat(); CV_Assert(opoints.isContinuous()); - CV_Assert(opoints.depth() == CV_32F); + CV_Assert(opoints.depth() == CV_32F || opoints.depth() == CV_64F); CV_Assert((opoints.rows == 1 && opoints.channels() == 3) || opoints.cols*opoints.channels() == 3); CV_Assert(ipoints.isContinuous()); - CV_Assert(ipoints.depth() == CV_32F); + CV_Assert(ipoints.depth() == CV_32F || ipoints.depth() == CV_64F); CV_Assert((ipoints.rows == 1 && ipoints.channels() == 2) || ipoints.cols*ipoints.channels() == 2); _rvec.create(3, 1, CV_64FC1); @@ -322,7 +350,7 @@ void cv::solvePnPRansac(InputArray _opoints, InputArray _ipoints, if (flags != P3P) { int i, pointsCount = (int)localInliers.size(); - Mat inlierObjectPoints(1, pointsCount, CV_32FC3), inlierImagePoints(1, pointsCount, CV_32FC2); + Mat inlierObjectPoints(1, pointsCount, CV_MAKE_TYPE(opoints.depth(), 3)), inlierImagePoints(1, pointsCount, CV_MAKE_TYPE(ipoints.depth(), 2)); for (i = 0; i < pointsCount; i++) { int index = localInliers[i]; diff --git a/modules/calib3d/src/stereobm.cpp b/modules/calib3d/src/stereobm.cpp index 7c06debcb3..676202d129 100644 --- a/modules/calib3d/src/stereobm.cpp +++ b/modules/calib3d/src/stereobm.cpp @@ -48,7 +48,7 @@ #include "precomp.hpp" #include #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_calib3d.hpp" namespace cv { diff --git a/modules/calib3d/test/opencl/test_stereobm.cpp b/modules/calib3d/test/opencl/test_stereobm.cpp index 636d76cb27..e64fe415e7 100644 --- a/modules/calib3d/test/opencl/test_stereobm.cpp +++ b/modules/calib3d/test/opencl/test_stereobm.cpp @@ -40,7 +40,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/calib3d/test/test_fisheye.cpp b/modules/calib3d/test/test_fisheye.cpp new file mode 100644 index 0000000000..553b81c39b --- /dev/null +++ b/modules/calib3d/test/test_fisheye.cpp @@ -0,0 +1,613 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not 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 Intel Corporation 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. +// +//M*/ + +#include "test_precomp.hpp" +#include +#include "../src/fisheye.hpp" + +class fisheyeTest : public ::testing::Test { + +protected: + const static cv::Size imageSize; + const static cv::Matx33d K; + const static cv::Vec4d D; + const static cv::Matx33d R; + const static cv::Vec3d T; + std::string datasets_repository_path; + + virtual void SetUp() { + datasets_repository_path = combine(cvtest::TS::ptr()->get_data_path(), "cv/cameracalibration/fisheye"); + } + +protected: + std::string combine(const std::string& _item1, const std::string& _item2); + cv::Mat mergeRectification(const cv::Mat& l, const cv::Mat& r); +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// TESTS:: + +TEST_F(fisheyeTest, projectPoints) +{ + double cols = this->imageSize.width, + rows = this->imageSize.height; + + const int N = 20; + cv::Mat distorted0(1, N*N, CV_64FC2), undist1, undist2, distorted1, distorted2; + undist2.create(distorted0.size(), CV_MAKETYPE(distorted0.depth(), 3)); + cv::Vec2d* pts = distorted0.ptr(); + + cv::Vec2d c(this->K(0, 2), this->K(1, 2)); + for(int y = 0, k = 0; y < N; ++y) + for(int x = 0; x < N; ++x) + { + cv::Vec2d point(x*cols/(N-1.f), y*rows/(N-1.f)); + pts[k++] = (point - c) * 0.85 + c; + } + + cv::fisheye::undistortPoints(distorted0, undist1, this->K, this->D); + + cv::Vec2d* u1 = undist1.ptr(); + cv::Vec3d* u2 = undist2.ptr(); + for(int i = 0; i < (int)distorted0.total(); ++i) + u2[i] = cv::Vec3d(u1[i][0], u1[i][1], 1.0); + + cv::fisheye::distortPoints(undist1, distorted1, this->K, this->D); + cv::fisheye::projectPoints(undist2, distorted2, cv::Vec3d::all(0), cv::Vec3d::all(0), this->K, this->D); + + EXPECT_MAT_NEAR(distorted0, distorted1, 1e-10); + EXPECT_MAT_NEAR(distorted0, distorted2, 1e-10); +} + +TEST_F(fisheyeTest, DISABLED_undistortImage) +{ + cv::Matx33d K = this->K; + cv::Mat D = cv::Mat(this->D); + std::string file = combine(datasets_repository_path, "/calib-3_stereo_from_JY/left/stereo_pair_014.jpg"); + cv::Matx33d newK = K; + cv::Mat distorted = cv::imread(file), undistorted; + { + newK(0, 0) = 100; + newK(1, 1) = 100; + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "new_f_100.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "new_f_100.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); + } + { + double balance = 1.0; + cv::fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_1.0.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_1.0.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); + } + + { + double balance = 0.0; + cv::fisheye::estimateNewCameraMatrixForUndistortRectify(K, D, distorted.size(), cv::noArray(), newK, balance); + cv::fisheye::undistortImage(distorted, undistorted, K, D, newK); + cv::Mat correct = cv::imread(combine(datasets_repository_path, "balance_0.0.png")); + if (correct.empty()) + CV_Assert(cv::imwrite(combine(datasets_repository_path, "balance_0.0.png"), undistorted)); + else + EXPECT_MAT_NEAR(correct, undistorted, 1e-10); + } +} + +TEST_F(fisheyeTest, jacobians) +{ + int n = 10; + cv::Mat X(1, n, CV_64FC3); + cv::Mat om(3, 1, CV_64F), T(3, 1, CV_64F); + cv::Mat f(2, 1, CV_64F), c(2, 1, CV_64F); + cv::Mat k(4, 1, CV_64F); + double alpha; + + cv::RNG r; + + r.fill(X, cv::RNG::NORMAL, 2, 1); + X = cv::abs(X) * 10; + + r.fill(om, cv::RNG::NORMAL, 0, 1); + om = cv::abs(om); + + r.fill(T, cv::RNG::NORMAL, 0, 1); + T = cv::abs(T); T.at(2) = 4; T *= 10; + + r.fill(f, cv::RNG::NORMAL, 0, 1); + f = cv::abs(f) * 1000; + + r.fill(c, cv::RNG::NORMAL, 0, 1); + c = cv::abs(c) * 1000; + + r.fill(k, cv::RNG::NORMAL, 0, 1); + k*= 0.5; + + alpha = 0.01*r.gaussian(1); + + cv::Mat x1, x2, xpred; + cv::Matx33d K(f.at(0), alpha * f.at(0), c.at(0), + 0, f.at(1), c.at(1), + 0, 0, 1); + + cv::Mat jacobians; + cv::fisheye::projectPoints(X, x1, om, T, K, k, alpha, jacobians); + + //test on T: + cv::Mat dT(3, 1, CV_64FC1); + r.fill(dT, cv::RNG::NORMAL, 0, 1); + dT *= 1e-9*cv::norm(T); + cv::Mat T2 = T + dT; + cv::fisheye::projectPoints(X, x2, om, T2, K, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(11,14) * dT).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); + + //test on om: + cv::Mat dom(3, 1, CV_64FC1); + r.fill(dom, cv::RNG::NORMAL, 0, 1); + dom *= 1e-9*cv::norm(om); + cv::Mat om2 = om + dom; + cv::fisheye::projectPoints(X, x2, om2, T, K, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(8,11) * dom).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); + + //test on f: + cv::Mat df(2, 1, CV_64FC1); + r.fill(df, cv::RNG::NORMAL, 0, 1); + df *= 1e-9*cv::norm(f); + cv::Matx33d K2 = K + cv::Matx33d(df.at(0), df.at(0) * alpha, 0, 0, df.at(1), 0, 0, 0, 0); + cv::fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(0,2) * df).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); + + //test on c: + cv::Mat dc(2, 1, CV_64FC1); + r.fill(dc, cv::RNG::NORMAL, 0, 1); + dc *= 1e-9*cv::norm(c); + K2 = K + cv::Matx33d(0, 0, dc.at(0), 0, 0, dc.at(1), 0, 0, 0); + cv::fisheye::projectPoints(X, x2, om, T, K2, k, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(2,4) * dc).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); + + //test on k: + cv::Mat dk(4, 1, CV_64FC1); + r.fill(dk, cv::RNG::NORMAL, 0, 1); + dk *= 1e-9*cv::norm(k); + cv::Mat k2 = k + dk; + cv::fisheye::projectPoints(X, x2, om, T, K, k2, alpha, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.colRange(4,8) * dk).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); + + //test on alpha: + cv::Mat dalpha(1, 1, CV_64FC1); + r.fill(dalpha, cv::RNG::NORMAL, 0, 1); + dalpha *= 1e-9*cv::norm(f); + double alpha2 = alpha + dalpha.at(0); + K2 = K + cv::Matx33d(0, f.at(0) * dalpha.at(0), 0, 0, 0, 0, 0, 0, 0); + cv::fisheye::projectPoints(X, x2, om, T, K, k, alpha2, cv::noArray()); + xpred = x1 + cv::Mat(jacobians.col(14) * dalpha).reshape(2, 1); + CV_Assert (cv::norm(x2 - xpred) < 1e-10); +} + +TEST_F(fisheyeTest, Calibration) +{ + const int n_images = 34; + + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + int flag = 0; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + + cv::Matx33d K; + cv::Vec4d D; + + cv::fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + cv::noArray(), cv::noArray(), flag, cv::TermCriteria(3, 20, 1e-6)); + + EXPECT_MAT_NEAR(K, this->K, 1e-10); + EXPECT_MAT_NEAR(D, this->D, 1e-10); +} + +TEST_F(fisheyeTest, Homography) +{ + const int n_images = 1; + + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + cv::internal::IntrinsicParams param; + param.Init(cv::Vec2d(cv::max(imageSize.width, imageSize.height) / CV_PI, cv::max(imageSize.width, imageSize.height) / CV_PI), + cv::Vec2d(imageSize.width / 2.0 - 0.5, imageSize.height / 2.0 - 0.5)); + + cv::Mat _imagePoints (imagePoints[0]); + cv::Mat _objectPoints(objectPoints[0]); + + cv::Mat imagePointsNormalized = NormalizePixels(_imagePoints, param).reshape(1).t(); + _objectPoints = _objectPoints.reshape(1).t(); + cv::Mat objectPointsMean, covObjectPoints; + + int Np = imagePointsNormalized.cols; + cv::calcCovarMatrix(_objectPoints, covObjectPoints, objectPointsMean, cv::COVAR_NORMAL | cv::COVAR_COLS); + cv::SVD svd(covObjectPoints); + cv::Mat R(svd.vt); + + if (cv::norm(R(cv::Rect(2, 0, 1, 2))) < 1e-6) + R = cv::Mat::eye(3,3, CV_64FC1); + if (cv::determinant(R) < 0) + R = -R; + + cv::Mat T = -R * objectPointsMean; + cv::Mat X_new = R * _objectPoints + T * cv::Mat::ones(1, Np, CV_64FC1); + cv::Mat H = cv::internal::ComputeHomography(imagePointsNormalized, X_new.rowRange(0, 2)); + + cv::Mat M = cv::Mat::ones(3, X_new.cols, CV_64FC1); + X_new.rowRange(0, 2).copyTo(M.rowRange(0, 2)); + cv::Mat mrep = H * M; + + cv::divide(mrep, cv::Mat::ones(3,1, CV_64FC1) * mrep.row(2).clone(), mrep); + + cv::Mat merr = (mrep.rowRange(0, 2) - imagePointsNormalized).t(); + + cv::Vec2d std_err; + cv::meanStdDev(merr.reshape(2), cv::noArray(), std_err); + std_err *= sqrt((double)merr.reshape(2).total() / (merr.reshape(2).total() - 1)); + + cv::Vec2d correct_std_err(0.00516740156010384, 0.00644205331553901); + EXPECT_MAT_NEAR(std_err, correct_std_err, 1e-12); +} + +TEST_F(fisheyeTest, EtimateUncertainties) +{ + const int n_images = 34; + + std::vector > imagePoints(n_images); + std::vector > objectPoints(n_images); + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> imagePoints[i]; + fs_left.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + int flag = 0; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + + cv::Matx33d K; + cv::Vec4d D; + std::vector rvec; + std::vector tvec; + + cv::fisheye::calibrate(objectPoints, imagePoints, imageSize, K, D, + rvec, tvec, flag, cv::TermCriteria(3, 20, 1e-6)); + + cv::internal::IntrinsicParams param, errors; + cv::Vec2d err_std; + double thresh_cond = 1e6; + int check_cond = 1; + param.Init(cv::Vec2d(K(0,0), K(1,1)), cv::Vec2d(K(0,2), K(1, 2)), D); + param.isEstimate = std::vector(9, 1); + param.isEstimate[4] = 0; + + errors.isEstimate = param.isEstimate; + + double rms; + + cv::internal::EstimateUncertainties(objectPoints, imagePoints, param, rvec, tvec, + errors, err_std, thresh_cond, check_cond, rms); + + EXPECT_MAT_NEAR(errors.f, cv::Vec2d(1.29837104202046, 1.31565641071524), 1e-10); + EXPECT_MAT_NEAR(errors.c, cv::Vec2d(0.890439368129246, 0.816096854937896), 1e-10); + EXPECT_MAT_NEAR(errors.k, cv::Vec4d(0.00516248605191506, 0.0168181467500934, 0.0213118690274604, 0.00916010877545648), 1e-10); + EXPECT_MAT_NEAR(err_std, cv::Vec2d(0.187475975266883, 0.185678953263995), 1e-10); + CV_Assert(abs(rms - 0.263782587133546) < 1e-10); + CV_Assert(errors.alpha == 0); +} + +TEST_F(fisheyeTest, rectify) +{ + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + cv::Size calibration_size = this->imageSize, requested_size = calibration_size; + cv::Matx33d K1 = this->K, K2 = K1; + cv::Mat D1 = cv::Mat(this->D), D2 = D1; + + cv::Vec3d T = this->T; + cv::Matx33d R = this->R; + + double balance = 0.0, fov_scale = 1.1; + cv::Mat R1, R2, P1, P2, Q; + cv::fisheye::stereoRectify(K1, D1, K2, D2, calibration_size, R, T, R1, R2, P1, P2, Q, + cv::CALIB_ZERO_DISPARITY, requested_size, balance, fov_scale); + + cv::Mat lmapx, lmapy, rmapx, rmapy; + //rewrite for fisheye + cv::fisheye::initUndistortRectifyMap(K1, D1, R1, P1, requested_size, CV_32F, lmapx, lmapy); + cv::fisheye::initUndistortRectifyMap(K2, D2, R2, P2, requested_size, CV_32F, rmapx, rmapy); + + cv::Mat l, r, lundist, rundist; + cv::VideoCapture lcap(combine(folder, "left/stereo_pair_%03d.jpg")), + rcap(combine(folder, "right/stereo_pair_%03d.jpg")); + + for(int i = 0;; ++i) + { + lcap >> l; rcap >> r; + if (l.empty() || r.empty()) + break; + + int ndisp = 128; + cv::rectangle(l, cv::Rect(255, 0, 829, l.rows-1), cv::Scalar(0, 0, 255)); + cv::rectangle(r, cv::Rect(255, 0, 829, l.rows-1), cv::Scalar(0, 0, 255)); + cv::rectangle(r, cv::Rect(255-ndisp, 0, 829+ndisp ,l.rows-1), cv::Scalar(0, 0, 255)); + cv::remap(l, lundist, lmapx, lmapy, cv::INTER_LINEAR); + cv::remap(r, rundist, rmapx, rmapy, cv::INTER_LINEAR); + + cv::Mat rectification = mergeRectification(lundist, rundist); + + cv::Mat correct = cv::imread(combine(datasets_repository_path, cv::format("rectification_AB_%03d.png", i))); + + if (correct.empty()) + cv::imwrite(combine(datasets_repository_path, cv::format("rectification_AB_%03d.png", i)), rectification); + else + EXPECT_MAT_NEAR(correct, rectification, 1e-10); + } +} + +TEST_F(fisheyeTest, stereoCalibrate) +{ + const int n_images = 34; + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + std::vector > leftPoints(n_images); + std::vector > rightPoints(n_images); + std::vector > objectPoints(n_images); + + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> leftPoints[i]; + fs_left.release(); + + cv::FileStorage fs_right(combine(folder, "right.xml"), cv::FileStorage::READ); + CV_Assert(fs_right.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_right[cv::format("image_%d", i )] >> rightPoints[i]; + fs_right.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + cv::Matx33d K1, K2, R; + cv::Vec3d T; + cv::Vec4d D1, D2; + + int flag = 0; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + // flag |= cv::fisheye::CALIB_FIX_INTRINSIC; + + cv::fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + K1, D1, K2, D2, imageSize, R, T, flag, + cv::TermCriteria(3, 12, 0)); + + cv::Matx33d R_correct( 0.9975587205950972, 0.06953016383322372, 0.006492709911733523, + -0.06956823121068059, 0.9975601387249519, 0.005833595226966235, + -0.006071257768382089, -0.006271040135405457, 0.9999619062167968); + cv::Vec3d T_correct(-0.099402724724121, 0.00270812139265413, 0.00129330292472699); + cv::Matx33d K1_correct (561.195925927249, 0, 621.282400272412, + 0, 562.849402029712, 380.555455380889, + 0, 0, 1); + + cv::Matx33d K2_correct (560.395452535348, 0, 678.971652040359, + 0, 561.90171021422, 380.401340535339, + 0, 0, 1); + + cv::Vec4d D1_correct (-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771); + cv::Vec4d D2_correct (-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222); + + EXPECT_MAT_NEAR(R, R_correct, 1e-10); + EXPECT_MAT_NEAR(T, T_correct, 1e-10); + + EXPECT_MAT_NEAR(K1, K1_correct, 1e-10); + EXPECT_MAT_NEAR(K2, K2_correct, 1e-10); + + EXPECT_MAT_NEAR(D1, D1_correct, 1e-10); + EXPECT_MAT_NEAR(D2, D2_correct, 1e-10); + +} + +TEST_F(fisheyeTest, stereoCalibrateFixIntrinsic) +{ + const int n_images = 34; + + const std::string folder =combine(datasets_repository_path, "calib-3_stereo_from_JY"); + + std::vector > leftPoints(n_images); + std::vector > rightPoints(n_images); + std::vector > objectPoints(n_images); + + cv::FileStorage fs_left(combine(folder, "left.xml"), cv::FileStorage::READ); + CV_Assert(fs_left.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_left[cv::format("image_%d", i )] >> leftPoints[i]; + fs_left.release(); + + cv::FileStorage fs_right(combine(folder, "right.xml"), cv::FileStorage::READ); + CV_Assert(fs_right.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_right[cv::format("image_%d", i )] >> rightPoints[i]; + fs_right.release(); + + cv::FileStorage fs_object(combine(folder, "object.xml"), cv::FileStorage::READ); + CV_Assert(fs_object.isOpened()); + for(int i = 0; i < n_images; ++i) + fs_object[cv::format("image_%d", i )] >> objectPoints[i]; + fs_object.release(); + + cv::Matx33d R; + cv::Vec3d T; + + int flag = 0; + flag |= cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC; + flag |= cv::fisheye::CALIB_CHECK_COND; + flag |= cv::fisheye::CALIB_FIX_SKEW; + flag |= cv::fisheye::CALIB_FIX_INTRINSIC; + + cv::Matx33d K1 (561.195925927249, 0, 621.282400272412, + 0, 562.849402029712, 380.555455380889, + 0, 0, 1); + + cv::Matx33d K2 (560.395452535348, 0, 678.971652040359, + 0, 561.90171021422, 380.401340535339, + 0, 0, 1); + + cv::Vec4d D1 (-7.44253716539556e-05, -0.00702662033932424, 0.00737569823650885, -0.00342230256441771); + cv::Vec4d D2 (-0.0130785435677431, 0.0284434505383497, -0.0360333869900506, 0.0144724062347222); + + cv::fisheye::stereoCalibrate(objectPoints, leftPoints, rightPoints, + K1, D1, K2, D2, imageSize, R, T, flag, + cv::TermCriteria(3, 12, 0)); + + cv::Matx33d R_correct( 0.9975587205950972, 0.06953016383322372, 0.006492709911733523, + -0.06956823121068059, 0.9975601387249519, 0.005833595226966235, + -0.006071257768382089, -0.006271040135405457, 0.9999619062167968); + cv::Vec3d T_correct(-0.099402724724121, 0.00270812139265413, 0.00129330292472699); + + + EXPECT_MAT_NEAR(R, R_correct, 1e-10); + EXPECT_MAT_NEAR(T, T_correct, 1e-10); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// fisheyeTest:: + +const cv::Size fisheyeTest::imageSize(1280, 800); + +const cv::Matx33d fisheyeTest::K(558.478087865323, 0, 620.458515360843, + 0, 560.506767351568, 381.939424848348, + 0, 0, 1); + +const cv::Vec4d fisheyeTest::D(-0.0014613319981768, -0.00329861110580401, 0.00605760088590183, -0.00374209380722371); + +const cv::Matx33d fisheyeTest::R ( 9.9756700084424932e-01, 6.9698277640183867e-02, 1.4929569991321144e-03, + -6.9711825162322980e-02, 9.9748249845531767e-01, 1.2997180766418455e-02, + -5.8331736398316541e-04,-1.3069635393884985e-02, 9.9991441852366736e-01); + +const cv::Vec3d fisheyeTest::T(-9.9217369356044638e-02, 3.1741831972356663e-03, 1.8551007952921010e-04); + +std::string fisheyeTest::combine(const std::string& _item1, const std::string& _item2) +{ + std::string item1 = _item1, item2 = _item2; + std::replace(item1.begin(), item1.end(), '\\', '/'); + std::replace(item2.begin(), item2.end(), '\\', '/'); + + if (item1.empty()) + return item2; + + if (item2.empty()) + return item1; + + char last = item1[item1.size()-1]; + return item1 + (last != '/' ? "/" : "") + item2; +} + +cv::Mat fisheyeTest::mergeRectification(const cv::Mat& l, const cv::Mat& r) +{ + CV_Assert(l.type() == r.type() && l.size() == r.size()); + cv::Mat merged(l.rows, l.cols * 2, l.type()); + cv::Mat lpart = merged.colRange(0, l.cols); + cv::Mat rpart = merged.colRange(l.cols, merged.cols); + l.copyTo(lpart); + r.copyTo(rpart); + + for(int i = 0; i < l.rows; i+=20) + cv::line(merged, cv::Point(0, i), cv::Point(merged.cols, i), cv::Scalar(0, 255, 0)); + + return merged; +} diff --git a/modules/calib3d/test/test_homography_decomp.cpp b/modules/calib3d/test/test_homography_decomp.cpp new file mode 100644 index 0000000000..7e1c8ea503 --- /dev/null +++ b/modules/calib3d/test/test_homography_decomp.cpp @@ -0,0 +1,138 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // This is a test file for the function decomposeHomography contributed to OpenCV + // by Samson Yilma. + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2014, Samson Yilma¸ (samson_yilma@yahoo.com), all rights reserved. + // + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's 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. + // + // * The name of the copyright holders may not 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 Intel Corporation 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. + // + //M*/ + +#include "test_precomp.hpp" +#include "opencv2/calib3d.hpp" +#include + +using namespace cv; +using namespace std; + +class CV_HomographyDecompTest: public cvtest::BaseTest { + +public: + CV_HomographyDecompTest() + { + buildTestDataSet(); + } + +protected: + void run(int) + { + vector rotations; + vector translations; + vector normals; + + decomposeHomographyMat(_H, _K, rotations, translations, normals); + + //there should be at least 1 solution + ASSERT_GT(static_cast(rotations.size()), 0); + ASSERT_GT(static_cast(translations.size()), 0); + ASSERT_GT(static_cast(normals.size()), 0); + + ASSERT_EQ(rotations.size(), normals.size()); + ASSERT_EQ(translations.size(), normals.size()); + + ASSERT_TRUE(containsValidMotion(rotations, translations, normals)); + + decomposeHomographyMat(_H, _K, rotations, noArray(), noArray()); + ASSERT_GT(static_cast(rotations.size()), 0); + } + +private: + + void buildTestDataSet() + { + _K = Matx33d(640, 0.0, 320, + 0, 640, 240, + 0, 0, 1); + + _H = Matx33d(2.649157564634028, 4.583875997496426, 70.694447785121326, + -1.072756858861583, 3.533262150437228, 1513.656999614321649, + 0.001303887589576, 0.003042206876298, 1.000000000000000 + ); + + //expected solution for the given homography and intrinsic matrices + _R = Matx33d(0.43307983549125, 0.545749113549648, -0.717356090899523, + -0.85630229674426, 0.497582023798831, -0.138414255706431, + 0.281404038139784, 0.67421809131173, 0.682818960388909); + + _t = Vec3d(1.826751712278038, 1.264718492450820, 0.195080809998819); + _n = Vec3d(0.244875830334816, 0.480857890778889, 0.841909446789566); + } + + bool containsValidMotion(std::vector& rotations, + std::vector& translations, + std::vector& normals + ) + { + double max_error = 1.0e-3; + + vector::iterator riter = rotations.begin(); + vector::iterator titer = translations.begin(); + vector::iterator niter = normals.begin(); + + for (; + riter != rotations.end() && titer != translations.end() && niter != normals.end(); + ++riter, ++titer, ++niter) { + + double rdist = norm(*riter, _R, NORM_INF); + double tdist = norm(*titer, _t, NORM_INF); + double ndist = norm(*niter, _n, NORM_INF); + + if ( rdist < max_error + && tdist < max_error + && ndist < max_error ) + return true; + } + + return false; + } + + Matx33d _R, _K, _H; + Vec3d _t, _n; +}; + +TEST(Calib3d_DecomposeHomography, regression) { CV_HomographyDecompTest test; test.safe_run(); } diff --git a/modules/calib3d/test/test_precomp.hpp b/modules/calib3d/test/test_precomp.hpp index d670a4c220..ac3371cef3 100644 --- a/modules/calib3d/test/test_precomp.hpp +++ b/modules/calib3d/test/test_precomp.hpp @@ -13,7 +13,7 @@ #include "opencv2/ts.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/calib3d.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" namespace cvtest { diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt index e5898023f2..5158dec5f4 100644 --- a/modules/core/CMakeLists.txt +++ b/modules/core/CMakeLists.txt @@ -1,6 +1,5 @@ set(the_description "The Core Functionality") ocv_add_module(core PRIVATE_REQUIRED ${ZLIB_LIBRARIES} "${OPENCL_LIBRARIES}" OPTIONAL opencv_cudev) -ocv_module_include_directories(${ZLIB_INCLUDE_DIRS}) if(HAVE_WINRT_CX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") @@ -19,11 +18,11 @@ file(GLOB lib_cuda_hdrs_detail "include/opencv2/${name}/cuda/detail/*.hpp" "incl source_group("Cuda Headers" FILES ${lib_cuda_hdrs}) source_group("Cuda Headers\\Detail" FILES ${lib_cuda_hdrs_detail}) -ocv_glob_module_sources(SOURCES "${opencv_core_BINARY_DIR}/version_string.inc" +ocv_glob_module_sources(SOURCES "${OPENCV_MODULE_opencv_core_BINARY_DIR}/version_string.inc" HEADERS ${lib_cuda_hdrs} ${lib_cuda_hdrs_detail}) +ocv_module_include_directories(${the_module} ${ZLIB_INCLUDE_DIRS}) ocv_create_module() -ocv_add_precompiled_headers(${the_module}) ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/core/doc/basic_structures.rst b/modules/core/doc/basic_structures.rst index 459a6a9c98..ce66c7d88e 100644 --- a/modules/core/doc/basic_structures.rst +++ b/modules/core/doc/basic_structures.rst @@ -845,7 +845,6 @@ For convenience, the following types from the OpenCV C API already have such a s that calls the appropriate release function: * ``CvCapture`` -* :ocv:struct:`CvDTreeSplit` * :ocv:struct:`CvFileStorage` * ``CvHaarClassifierCascade`` * :ocv:struct:`CvMat` @@ -2326,6 +2325,69 @@ Returns the matrix iterator and sets it to the after-last matrix element. The methods return the matrix read-only or read-write iterators, set to the point following the last matrix element. + +Mat::forEach +------------ +Invoke with arguments functor, and runs the functor over all matrix element. + +.. ocv:function:: template void Mat::forEach(Functor operation) + +.. ocv:function:: template void Mat::forEach(Functor operation) const + +The methos runs operation in parallel. Operation is passed by arguments. Operation have to be a function pointer, a function object or a lambda(C++11). + +All of below operation is equal. Put 0xFF to first channel of all matrix elements. :: + + Mat image(1920, 1080, CV_8UC3); + typedef cv::Point3_ Pixel; + + // first. raw pointer access. + for (int r = 0; r < image.rows; ++r) { + Pixel* ptr = image.ptr(0, r); + const Pixel* ptr_end = ptr + image.cols; + for (; ptr != ptr_end; ++ptr) { + ptr->x = 255; + } + } + + + // Using MatIterator. (Simple but there are a Iterator's overhead) + for (Pixel &p : cv::Mat_(image)) { + p.x = 255; + } + + + // Parallel execution with function object. + struct Operator { + void operator ()(Pixel &pixel, const int * position) { + pixel.x = 255; + } + }; + image.forEach(Operator()); + + + // Parallel execution using C++11 lambda. + image.forEach([](Pixel &p, const int * position) -> void { + p.x = 255; + }); + +position parameter is index of current pixel. :: + + // Creating 3D matrix (255 x 255 x 255) typed uint8_t, + // and initialize all elements by the value which equals elements position. + // i.e. pixels (x,y,z) = (1,2,3) is (b,g,r) = (1,2,3). + + int sizes[] = { 255, 255, 255 }; + typedef cv::Point3_ Pixel; + + Mat_ image = Mat::zeros(3, sizes, CV_8UC3); + + image.forEachWithPosition([&](Pixel& pixel, const int position[]) -> void{ + pixel.x = position[0]; + pixel.y = position[1]; + pixel.z = position[2]; + }); + Mat\_ ----- .. ocv:class:: Mat_ @@ -2981,20 +3043,20 @@ The class provides the following features for all derived classes: * so called "virtual constructor". That is, each Algorithm derivative is registered at program start and you can get the list of registered algorithms and create instance of a particular algorithm by its name (see ``Algorithm::create``). If you plan to add your own algorithms, it is good practice to add a unique prefix to your algorithms to distinguish them from other algorithms. - * setting/retrieving algorithm parameters by name. If you used video capturing functionality from OpenCV highgui module, you are probably familar with ``cvSetCaptureProperty()``, ``cvGetCaptureProperty()``, ``VideoCapture::set()`` and ``VideoCapture::get()``. ``Algorithm`` provides similar method where instead of integer id's you specify the parameter names as text strings. See ``Algorithm::set`` and ``Algorithm::get`` for details. + * setting/retrieving algorithm parameters by name. If you used video capturing functionality from OpenCV videoio module, you are probably familar with ``cvSetCaptureProperty()``, ``cvGetCaptureProperty()``, ``VideoCapture::set()`` and ``VideoCapture::get()``. ``Algorithm`` provides similar method where instead of integer id's you specify the parameter names as text strings. See ``Algorithm::set`` and ``Algorithm::get`` for details. * reading and writing parameters from/to XML or YAML files. Every Algorithm derivative can store all its parameters and then read them back. There is no need to re-implement it each time. Here is example of SIFT use in your application via Algorithm interface: :: #include "opencv2/opencv.hpp" - #include "opencv2/nonfree.hpp" + #include "opencv2/xfeatures2d.hpp" + + using namespace cv::xfeatures2d; ... - initModule_nonfree(); // to load SURF/SIFT etc. - - Ptr sift = Algorithm::create("Feature2D.SIFT"); + Ptr sift = SIFT::create(); FileStorage fs("sift_params.xml", FileStorage::READ); if( fs.isOpened() ) // if we have file with parameters, read them @@ -3004,7 +3066,7 @@ Here is example of SIFT use in your application via Algorithm interface: :: } else // else modify the parameters and store them; user can later edit the file to use different parameters { - sift->set("contrastThreshold", 0.01f); // lower the contrast threshold, compared to the default value + sift->setContrastThreshold(0.01f); // lower the contrast threshold, compared to the default value { WriteStructContext ws(fs, "sift_params", CV_NODE_MAP); @@ -3014,7 +3076,7 @@ Here is example of SIFT use in your application via Algorithm interface: :: Mat image = imread("myimage.png", 0), descriptors; vector keypoints; - (*sift)(image, noArray(), keypoints, descriptors); + sift->detectAndCompute(image, noArray(), keypoints, descriptors); Algorithm::name --------------- diff --git a/modules/core/doc/drawing_functions.rst b/modules/core/doc/drawing_functions.rst index 60b744f6df..e4f6d2f230 100644 --- a/modules/core/doc/drawing_functions.rst +++ b/modules/core/doc/drawing_functions.rst @@ -361,6 +361,37 @@ The function ``line`` draws the line segment between ``pt1`` and ``pt2`` points Antialiased lines are drawn using Gaussian filtering. +arrowedLine +---------------- +Draws a arrow segment pointing from the first point to the second one. + +.. ocv:function:: void arrowedLine(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0, double tipLength=0.1) + + :param img: Image. + + :param pt1: The point the arrow starts from. + + :param pt2: The point the arrow points to. + + :param color: Line color. + + :param thickness: Line thickness. + + :param lineType: Type of the line: + + * **8** (or omitted) - 8-connected line. + + * **4** - 4-connected line. + + * **CV_AA** - antialiased line. + + :param shift: Number of fractional bits in the point coordinates. + + :param tipLength: The length of the arrow tip in relation to the arrow length + +The function ``arrowedLine`` draws an arrow between ``pt1`` and ``pt2`` points in the image. See also :ocv:func:`line`. + + LineIterator ------------ .. ocv:class:: LineIterator diff --git a/modules/core/doc/intro.rst b/modules/core/doc/intro.rst index 6d9fdfca5e..032e7453a5 100644 --- a/modules/core/doc/intro.rst +++ b/modules/core/doc/intro.rst @@ -14,7 +14,8 @@ OpenCV has a modular structure, which means that the package includes several sh * **calib3d** - basic multiple-view geometry algorithms, single and stereo camera calibration, object pose estimation, stereo correspondence algorithms, and elements of 3D reconstruction. * **features2d** - salient feature detectors, descriptors, and descriptor matchers. * **objdetect** - detection of objects and instances of the predefined classes (for example, faces, eyes, mugs, people, cars, and so on). - * **highgui** - an easy-to-use interface to video capturing, image and video codecs, as well as simple UI capabilities. + * **highgui** - an easy-to-use interface to simple UI capabilities. + * **videoio** - an easy-to-use interface to video capturing and video codecs. * **gpu** - GPU-accelerated algorithms from different OpenCV modules. * ... some other helper modules, such as FLANN and Google test wrappers, Python bindings, and others. diff --git a/modules/core/include/opencv2/core.hpp b/modules/core/include/opencv2/core.hpp index a5b9235152..773ee82d64 100644 --- a/modules/core/include/opencv2/core.hpp +++ b/modules/core/include/opencv2/core.hpp @@ -510,6 +510,10 @@ CV_EXPORTS_W void randShuffle(InputOutputArray dst, double iterFactor = 1., RNG* CV_EXPORTS_W void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); +//! draws an arrow from pt1 to pt2 in the image +CV_EXPORTS_W void arrowedLine(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, + int thickness=1, int line_type=8, int shift=0, double tipLength=0.1); + //! draws the rectangle outline or a solid rectangle with the opposite corners pt1 and pt2 in the image CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, @@ -686,7 +690,61 @@ public: Mat mean; //!< mean value subtracted before the projection and added after the back projection }; +// Linear Discriminant Analysis +class CV_EXPORTS LDA +{ +public: + // Initializes a LDA with num_components (default 0) and specifies how + // samples are aligned (default dataAsRow=true). + explicit LDA(int num_components = 0); + // Initializes and performs a Discriminant Analysis with Fisher's + // Optimization Criterion on given data in src and corresponding labels + // in labels. If 0 (or less) number of components are given, they are + // automatically determined for given data in computation. + LDA(InputArrayOfArrays src, InputArray labels, int num_components = 0); + + // Serializes this object to a given filename. + void save(const String& filename) const; + + // Deserializes this object from a given filename. + void load(const String& filename); + + // Serializes this object to a given cv::FileStorage. + void save(FileStorage& fs) const; + + // Deserializes this object from a given cv::FileStorage. + void load(const FileStorage& node); + + // Destructor. + ~LDA(); + + //! Compute the discriminants for data in src and labels. + void compute(InputArrayOfArrays src, InputArray labels); + + // Projects samples into the LDA subspace. + Mat project(InputArray src); + + // Reconstructs projections from the LDA subspace. + Mat reconstruct(InputArray src); + + // Returns the eigenvectors of this LDA. + Mat eigenvectors() const { return _eigenvectors; } + + // Returns the eigenvalues of this LDA. + Mat eigenvalues() const { return _eigenvalues; } + + static Mat subspaceProject(InputArray W, InputArray mean, InputArray src); + static Mat subspaceReconstruct(InputArray W, InputArray mean, InputArray src); + +protected: + bool _dataAsRow; + int _num_components; + Mat _eigenvectors; + Mat _eigenvalues; + + void lda(InputArrayOfArrays src, InputArray labels); +}; /*! Singular Value Decomposition class diff --git a/modules/core/include/opencv2/core/core_c.h b/modules/core/include/opencv2/core/core_c.h index df25e73fbb..81720fa2dc 100644 --- a/modules/core/include/opencv2/core/core_c.h +++ b/modules/core/include/opencv2/core/core_c.h @@ -1122,7 +1122,7 @@ CV_INLINE CvSetElem* cvSetNew( CvSet* set_header ) set_header->active_count++; } else - cvSetAdd( set_header, NULL, (CvSetElem**)&elem ); + cvSetAdd( set_header, NULL, &elem ); return elem; } diff --git a/modules/core/include/opencv2/core/cuda.hpp b/modules/core/include/opencv2/core/cuda.hpp index bc6dd31438..fe7c0a8c48 100644 --- a/modules/core/include/opencv2/core/cuda.hpp +++ b/modules/core/include/opencv2/core/cuda.hpp @@ -261,8 +261,8 @@ public: int* refcount; //! helper fields used in locateROI and adjustROI - uchar* datastart; - uchar* dataend; + const uchar* datastart; + const uchar* dataend; //! allocator Allocator* allocator; @@ -349,8 +349,8 @@ public: uchar* data; int* refcount; - uchar* datastart; - uchar* dataend; + const uchar* datastart; + const uchar* dataend; AllocType alloc_type; }; diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h index 8108a61e60..1f64cd2ace 100644 --- a/modules/core/include/opencv2/core/cvdef.h +++ b/modules/core/include/opencv2/core/cvdef.h @@ -244,6 +244,7 @@ typedef signed char schar; /* fundamental constants */ #define CV_PI 3.1415926535897932384626433832795 +#define CV_2PI 6.283185307179586476925286766559 #define CV_LOG2 0.69314718055994530941723212145818 /****************************************************************************************\ diff --git a/modules/core/include/opencv2/core/mat.hpp b/modules/core/include/opencv2/core/mat.hpp index d399265b0b..6e9863a5d2 100644 --- a/modules/core/include/opencv2/core/mat.hpp +++ b/modules/core/include/opencv2/core/mat.hpp @@ -360,7 +360,7 @@ struct CV_EXPORTS UMatData { enum { COPY_ON_MAP=1, HOST_COPY_OBSOLETE=2, DEVICE_COPY_OBSOLETE=4, TEMP_UMAT=8, TEMP_COPIED_UMAT=24, - USER_ALLOCATED=32 }; + USER_ALLOCATED=32, DEVICE_MEM_MAPPED=64}; UMatData(const MatAllocator* allocator); ~UMatData(); @@ -370,11 +370,13 @@ struct CV_EXPORTS UMatData bool hostCopyObsolete() const; bool deviceCopyObsolete() const; + bool deviceMemMapped() const; bool copyOnMap() const; bool tempUMat() const; bool tempCopiedUMat() const; void markHostCopyObsolete(bool flag); void markDeviceCopyObsolete(bool flag); + void markDeviceMemMapped(bool flag); const MatAllocator* prevAllocator; const MatAllocator* currAllocator; @@ -393,7 +395,7 @@ struct CV_EXPORTS UMatData struct CV_EXPORTS UMatDataAutoLock { - UMatDataAutoLock(UMatData* u); + explicit UMatDataAutoLock(UMatData* u); ~UMatDataAutoLock(); UMatData* u; }; @@ -401,7 +403,7 @@ struct CV_EXPORTS UMatDataAutoLock struct CV_EXPORTS MatSize { - MatSize(int* _p); + explicit MatSize(int* _p); Size operator()() const; const int& operator[](int i) const; int& operator[](int i); @@ -415,7 +417,7 @@ struct CV_EXPORTS MatSize struct CV_EXPORTS MatStep { MatStep(); - MatStep(size_t s); + explicit MatStep(size_t s); const size_t& operator[](int i) const; size_t& operator[](int i); operator size_t() const; @@ -898,6 +900,11 @@ public: template MatConstIterator_<_Tp> begin() const; template MatConstIterator_<_Tp> end() const; + //! template methods for for operation over all matrix elements. + // the operations take care of skipping gaps in the end of rows (if any) + template void forEach(const Functor& operation); + template void forEach(const Functor& operation) const; + enum { MAGIC_VAL = 0x42FF0000, AUTO_STEP = 0, CONTINUOUS_FLAG = CV_MAT_CONT_FLAG, SUBMATRIX_FLAG = CV_SUBMAT_FLAG }; enum { MAGIC_MASK = 0xFFFF0000, TYPE_MASK = 0x00000FFF, DEPTH_MASK = 7 }; @@ -916,9 +923,9 @@ public: uchar* data; //! helper fields used in locateROI and adjustROI - uchar* datastart; - uchar* dataend; - uchar* datalimit; + const uchar* datastart; + const uchar* dataend; + const uchar* datalimit; //! custom allocator MatAllocator* allocator; @@ -932,6 +939,7 @@ public: MatStep step; protected: + template void forEach_impl(const Functor& operation); }; @@ -1041,6 +1049,11 @@ public: const_iterator begin() const; const_iterator end() const; + //! template methods for for operation over all matrix elements. + // the operations take care of skipping gaps in the end of rows (if any) + template void forEach(const Functor& operation); + template void forEach(const Functor& operation) const; + //! equivalent to Mat::create(_rows, _cols, DataType<_Tp>::type) void create(int _rows, int _cols); //! equivalent to Mat::create(_size, DataType<_Tp>::type) @@ -1802,9 +1815,9 @@ public: //! copy operator MatConstIterator& operator = (const MatConstIterator& it); //! returns the current matrix element - uchar* operator *() const; + const uchar* operator *() const; //! returns the i-th matrix element, relative to the current - uchar* operator [](ptrdiff_t i) const; + const uchar* operator [](ptrdiff_t i) const; //! shifts the iterator forward by the specified number of elements MatConstIterator& operator += (ptrdiff_t ofs); @@ -1829,9 +1842,9 @@ public: const Mat* m; size_t elemSize; - uchar* ptr; - uchar* sliceStart; - uchar* sliceEnd; + const uchar* ptr; + const uchar* sliceStart; + const uchar* sliceEnd; }; @@ -1915,9 +1928,9 @@ public: //! constructor that sets the iterator to the specified element of the matrix MatIterator_(Mat_<_Tp>* _m, int _row, int _col=0); //! constructor that sets the iterator to the specified element of the matrix - MatIterator_(const Mat_<_Tp>* _m, Point _pt); + MatIterator_(Mat_<_Tp>* _m, Point _pt); //! constructor that sets the iterator to the specified element of the matrix - MatIterator_(const Mat_<_Tp>* _m, const int* _idx); + MatIterator_(Mat_<_Tp>* _m, const int* _idx); //! copy constructor MatIterator_(const MatIterator_& it); //! copy operator diff --git a/modules/core/include/opencv2/core/mat.inl.hpp b/modules/core/include/opencv2/core/mat.inl.hpp index d463eec671..5bc67edaa2 100644 --- a/modules/core/include/opencv2/core/mat.inl.hpp +++ b/modules/core/include/opencv2/core/mat.inl.hpp @@ -438,7 +438,7 @@ Mat::Mat(const std::vector<_Tp>& vec, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&vec[0]; + datastart = data = (uchar*)&vec[0]; datalimit = dataend = datastart + rows * step[0]; } else @@ -453,7 +453,7 @@ Mat::Mat(const Vec<_Tp, n>& vec, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)vec.val; + datastart = data = (uchar*)vec.val; datalimit = dataend = datastart + rows * step[0]; } else @@ -470,7 +470,7 @@ Mat::Mat(const Matx<_Tp,m,n>& M, bool copyData) { step[0] = cols * sizeof(_Tp); step[1] = sizeof(_Tp); - data = datastart = (uchar*)M.val; + datastart = data = (uchar*)M.val; datalimit = dataend = datastart + rows * step[0]; } else @@ -485,7 +485,7 @@ Mat::Mat(const Point_<_Tp>& pt, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&pt.x; + datastart = data = (uchar*)&pt.x; datalimit = dataend = datastart + rows * step[0]; } else @@ -504,7 +504,7 @@ Mat::Mat(const Point3_<_Tp>& pt, bool copyData) if( !copyData ) { step[0] = step[1] = sizeof(_Tp); - data = datastart = (uchar*)&pt.x; + datastart = data = (uchar*)&pt.x; datalimit = dataend = datastart + rows * step[0]; } else @@ -642,8 +642,9 @@ inline void Mat::release() if( u && CV_XADD(&u->refcount, -1) == 1 ) deallocate(); u = NULL; - data = datastart = dataend = datalimit = 0; - size.p[0] = 0; + datastart = dataend = datalimit = data = 0; + for(int i = 0; i < dims; i++) + size.p[i] = 0; } inline @@ -999,6 +1000,17 @@ MatIterator_<_Tp> Mat::end() return it; } +template inline +void Mat::forEach(const Functor& operation) { + this->forEach_impl<_Tp>(operation); +}; + +template inline +void Mat::forEach(const Functor& operation) const { + // call as not const + (const_cast(this))->forEach(operation); +}; + template inline Mat::operator std::vector<_Tp>() const { @@ -1044,7 +1056,7 @@ void Mat::push_back(const _Tp& elem) } CV_Assert(DataType<_Tp>::type == type() && cols == 1 /* && dims == 2 (cols == 1 implies dims == 2) */); - uchar* tmp = dataend + step[0]; + const uchar* tmp = dataend + step[0]; if( !isSubmatrix() && isContinuous() && tmp <= datalimit ) { *(_Tp*)(data + (size.p[0]++) * step.p[0]) = elem; @@ -1584,6 +1596,15 @@ MatIterator_<_Tp> Mat_<_Tp>::end() return Mat::end<_Tp>(); } +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) { + Mat::forEach<_Tp, Functor>(operation); +} + +template template inline +void Mat_<_Tp>::forEach(const Functor& operation) const { + Mat::forEach<_Tp, Functor>(operation); +} ///////////////////////////// SparseMat ///////////////////////////// @@ -2148,7 +2169,7 @@ MatConstIterator& MatConstIterator::operator = (const MatConstIterator& it ) } inline -uchar* MatConstIterator::operator *() const +const uchar* MatConstIterator::operator *() const { return ptr; } @@ -2281,7 +2302,7 @@ MatConstIterator operator - (const MatConstIterator& a, ptrdiff_t ofs) inline -uchar* MatConstIterator::operator [](ptrdiff_t i) const +const uchar* MatConstIterator::operator [](ptrdiff_t i) const { return *(*this + i); } @@ -2453,12 +2474,12 @@ MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, int _row, int _col) {} template inline -MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, Point _pt) +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, Point _pt) : MatConstIterator_<_Tp>(_m, _pt) {} template inline -MatIterator_<_Tp>::MatIterator_(const Mat_<_Tp>* _m, const int* _idx) +MatIterator_<_Tp>::MatIterator_(Mat_<_Tp>* _m, const int* _idx) : MatConstIterator_<_Tp>(_m, _idx) {} @@ -2592,7 +2613,7 @@ inline SparseMatConstIterator& SparseMatConstIterator::operator = (const SparseM template inline const _Tp& SparseMatConstIterator::value() const { - return *(_Tp*)ptr; + return *(const _Tp*)ptr; } inline @@ -2733,7 +2754,7 @@ SparseMatConstIterator_<_Tp>& SparseMatConstIterator_<_Tp>::operator ++() template inline SparseMatConstIterator_<_Tp> SparseMatConstIterator_<_Tp>::operator ++(int) { - SparseMatConstIterator it = *this; + SparseMatConstIterator_<_Tp> it = *this; SparseMatConstIterator::operator ++(); return it; } @@ -2785,7 +2806,7 @@ SparseMatIterator_<_Tp>& SparseMatIterator_<_Tp>::operator ++() template inline SparseMatIterator_<_Tp> SparseMatIterator_<_Tp>::operator ++(int) { - SparseMatIterator it = *this; + SparseMatIterator_<_Tp> it = *this; SparseMatConstIterator::operator ++(); return it; } @@ -3350,10 +3371,19 @@ size_t UMat::total() const inline bool UMatData::hostCopyObsolete() const { return (flags & HOST_COPY_OBSOLETE) != 0; } inline bool UMatData::deviceCopyObsolete() const { return (flags & DEVICE_COPY_OBSOLETE) != 0; } +inline bool UMatData::deviceMemMapped() const { return (flags & DEVICE_MEM_MAPPED) != 0; } inline bool UMatData::copyOnMap() const { return (flags & COPY_ON_MAP) != 0; } inline bool UMatData::tempUMat() const { return (flags & TEMP_UMAT) != 0; } inline bool UMatData::tempCopiedUMat() const { return (flags & TEMP_COPIED_UMAT) == TEMP_COPIED_UMAT; } +inline void UMatData::markDeviceMemMapped(bool flag) +{ + if(flag) + flags |= DEVICE_MEM_MAPPED; + else + flags &= ~DEVICE_MEM_MAPPED; +} + inline void UMatData::markHostCopyObsolete(bool flag) { if(flag) diff --git a/modules/core/include/opencv2/core/ocl.hpp b/modules/core/include/opencv2/core/ocl.hpp index 99fa83a98d..5ab0d49b92 100644 --- a/modules/core/include/opencv2/core/ocl.hpp +++ b/modules/core/include/opencv2/core/ocl.hpp @@ -636,6 +636,9 @@ protected: CV_EXPORTS MatAllocator* getOpenCLAllocator(); +CV_EXPORTS_W bool isPerformanceCheckBypassed(); +#define OCL_PERFORMANCE_CHECK(condition) (cv::ocl::isPerformanceCheckBypassed() || (condition)) + }} #endif diff --git a/modules/core/include/opencv2/core/types_c.h b/modules/core/include/opencv2/core/types_c.h index 161a4bd100..ecf5f597c7 100644 --- a/modules/core/include/opencv2/core/types_c.h +++ b/modules/core/include/opencv2/core/types_c.h @@ -548,7 +548,7 @@ CV_INLINE void cvmSet( CvMat* mat, int row, int col, double value ) else { assert( type == CV_64FC1 ); - ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = (double)value; + ((double*)(void*)(mat->data.ptr + (size_t)mat->step*row))[col] = value; } } diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index 3e844ccf4f..b0552c6474 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -274,6 +274,102 @@ public: CV_EXPORTS void parallel_for_(const Range& range, const ParallelLoopBody& body, double nstripes=-1.); +/////////////////////////////// forEach method of cv::Mat //////////////////////////// +template inline +void Mat::forEach_impl(const Functor& operation) { + if (false) { + operation(*reinterpret_cast<_Tp*>(0), reinterpret_cast(NULL)); + // If your compiler fail in this line. + // Please check that your functor signature is + // (_Tp&, const int*) <- multidimential + // or (_Tp&, void*) <- in case of you don't need current idx. + } + + CV_Assert(this->total() / this->size[this->dims - 1] <= INT_MAX); + const int LINES = static_cast(this->total() / this->size[this->dims - 1]); + + class PixelOperationWrapper :public ParallelLoopBody + { + public: + PixelOperationWrapper(Mat_<_Tp>* const frame, const Functor& _operation) + : mat(frame), op(_operation) {}; + virtual ~PixelOperationWrapper(){}; + // ! Overloaded virtual operator + // convert range call to row call. + virtual void operator()(const Range &range) const { + const int DIMS = mat->dims; + const int COLS = mat->size[DIMS - 1]; + if (DIMS <= 2) { + for (int row = range.start; row < range.end; ++row) { + this->rowCall2(row, COLS); + } + } else { + std::vector idx(COLS); /// idx is modified in this->rowCall + idx[DIMS - 2] = range.start - 1; + + for (int line_num = range.start; line_num < range.end; ++line_num) { + idx[DIMS - 2]++; + for (int i = DIMS - 2; i >= 0; --i) { + if (idx[i] >= mat->size[i]) { + idx[i - 1] += idx[i] / mat->size[i]; + idx[i] %= mat->size[i]; + continue; // carry-over; + } + else { + break; + } + } + this->rowCall(&idx[0], COLS, DIMS); + } + } + }; + private: + Mat_<_Tp>* const mat; + const Functor op; + // ! Call operator for each elements in this row. + inline void rowCall(int* const idx, const int COLS, const int DIMS) const { + int &col = idx[DIMS - 1]; + col = 0; + _Tp* pixel = &(mat->template at<_Tp>(idx)); + + while (col < COLS) { + op(*pixel, const_cast(idx)); + pixel++; col++; + } + col = 0; + } + // ! Call operator for each elements in this row. 2d mat special version. + inline void rowCall2(const int row, const int COLS) const { + union Index{ + int body[2]; + operator const int*() const { + return reinterpret_cast(this); + } + int& operator[](const int i) { + return body[i]; + } + } idx = {{row, 0}}; + // Special union is needed to avoid + // "error: array subscript is above array bounds [-Werror=array-bounds]" + // when call the functor `op` such that access idx[3]. + + _Tp* pixel = &(mat->template at<_Tp>(idx)); + const _Tp* const pixel_end = pixel + COLS; + while(pixel < pixel_end) { + op(*pixel++, static_cast(idx)); + idx[1]++; + } + }; + PixelOperationWrapper& operator=(const PixelOperationWrapper &) { + CV_Assert(false); + // We can not remove this implementation because Visual Studio warning C4822. + return *this; + }; + }; + + parallel_for_(cv::Range(0, LINES), PixelOperationWrapper(reinterpret_cast*>(this), operation)); +}; + /////////////////////////// Synchronization Primitives /////////////////////////////// class CV_EXPORTS Mutex diff --git a/modules/core/perf/opencl/perf_arithm.cpp b/modules/core/perf/opencl/perf_arithm.cpp index 17badca765..9cb5ac9821 100644 --- a/modules/core/perf/opencl/perf_arithm.cpp +++ b/modules/core/perf/opencl/perf_arithm.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_bufferpool.cpp b/modules/core/perf/opencl/perf_bufferpool.cpp index 2e01db4045..3d241a6a56 100644 --- a/modules/core/perf/opencl/perf_bufferpool.cpp +++ b/modules/core/perf/opencl/perf_bufferpool.cpp @@ -4,7 +4,7 @@ // // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_channels.cpp b/modules/core/perf/opencl/perf_channels.cpp index 1dbad51a06..62d6b822b7 100644 --- a/modules/core/perf/opencl/perf_channels.cpp +++ b/modules/core/perf/opencl/perf_channels.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_dxt.cpp b/modules/core/perf/opencl/perf_dxt.cpp index d0219913b5..0bed186c44 100644 --- a/modules/core/perf/opencl/perf_dxt.cpp +++ b/modules/core/perf/opencl/perf_dxt.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL @@ -54,23 +54,42 @@ namespace ocl { ///////////// dft //////////////////////// -typedef tuple DftParams; +enum OCL_FFT_TYPE +{ + R2R = 0, + C2R = 1, + R2C = 2, + C2C = 3 +}; + +typedef tuple DftParams; typedef TestBaseWithParam DftFixture; -OCL_PERF_TEST_P(DftFixture, Dft, ::testing::Combine(Values(OCL_SIZE_1, OCL_SIZE_2, OCL_SIZE_3), - Values((int)DFT_ROWS, (int)DFT_SCALE, (int)DFT_INVERSE, - (int)DFT_INVERSE | DFT_SCALE, (int)DFT_ROWS | DFT_INVERSE))) +OCL_PERF_TEST_P(DftFixture, Dft, ::testing::Combine(Values(C2C, R2R, C2R, R2C), + Values(OCL_SIZE_1, OCL_SIZE_2, OCL_SIZE_3, Size(512, 512), Size(1024, 1024), Size(2048, 2048)), + Values((int) 0, (int)DFT_ROWS, (int)DFT_SCALE, (int)DFT_INVERSE, + (int)DFT_INVERSE | DFT_SCALE, (int)DFT_ROWS | DFT_INVERSE))) { const DftParams params = GetParam(); - const Size srcSize = get<0>(params); - const int flags = get<1>(params); + const int dft_type = get<0>(params); + const Size srcSize = get<1>(params); + int flags = get<2>(params); - UMat src(srcSize, CV_32FC2), dst(srcSize, CV_32FC2); + int in_cn = 0, out_cn = 0; + switch (dft_type) + { + case R2R: flags |= cv::DFT_REAL_OUTPUT; in_cn = 1; out_cn = 1; break; + case C2R: flags |= cv::DFT_REAL_OUTPUT; in_cn = 2; out_cn = 2; break; + case R2C: flags |= cv::DFT_COMPLEX_OUTPUT; in_cn = 1; out_cn = 2; break; + case C2C: flags |= cv::DFT_COMPLEX_OUTPUT; in_cn = 2; out_cn = 2; break; + } + + UMat src(srcSize, CV_MAKE_TYPE(CV_32F, in_cn)), dst(srcSize, CV_MAKE_TYPE(CV_32F, out_cn)); declare.in(src, WARMUP_RNG).out(dst); - OCL_TEST_CYCLE() cv::dft(src, dst, flags | DFT_COMPLEX_OUTPUT); + OCL_TEST_CYCLE() cv::dft(src, dst, flags); - SANITY_CHECK(dst, 1e-3); + SANITY_CHECK(dst, 1e-5, ERROR_RELATIVE); } ///////////// MulSpectrums //////////////////////// diff --git a/modules/core/perf/opencl/perf_gemm.cpp b/modules/core/perf/opencl/perf_gemm.cpp index 700f380492..205062dacb 100644 --- a/modules/core/perf/opencl/perf_gemm.cpp +++ b/modules/core/perf/opencl/perf_gemm.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/perf/opencl/perf_matop.cpp b/modules/core/perf/opencl/perf_matop.cpp index 9bb375587f..0fd5d437c4 100644 --- a/modules/core/perf/opencl/perf_matop.cpp +++ b/modules/core/perf/opencl/perf_matop.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL @@ -139,6 +139,7 @@ OCL_PERF_TEST_P(CopyToFixture, CopyToWithMaskUninit, dst.release(); startTimer(); src.copyTo(dst, mask); + cv::ocl::finish(); stopTimer(); } diff --git a/modules/core/perf/opencl/perf_usage_flags.cpp b/modules/core/perf/opencl/perf_usage_flags.cpp index 3f59fec8be..b140e3a046 100644 --- a/modules/core/perf/opencl/perf_usage_flags.cpp +++ b/modules/core/perf/opencl/perf_usage_flags.cpp @@ -4,7 +4,7 @@ // // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/src/arithm.cpp b/modules/core/src/arithm.cpp index 751659684c..277270d14b 100644 --- a/modules/core/src/arithm.cpp +++ b/modules/core/src/arithm.cpp @@ -47,28 +47,30 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { struct NOP {}; -#if CV_SSE2 +#if CV_SSE2 || CV_NEON #define FUNCTOR_TEMPLATE(name) \ template struct name {} FUNCTOR_TEMPLATE(VLoadStore128); +#if CV_SSE2 FUNCTOR_TEMPLATE(VLoadStore64); FUNCTOR_TEMPLATE(VLoadStore128Aligned); +#endif #endif template void vBinOp(const T* src1, size_t step1, const T* src2, size_t step2, T* dst, size_t step, Size sz) { -#if CV_SSE2 +#if CV_SSE2 || CV_NEON VOp vop; #endif Op op; @@ -79,9 +81,11 @@ void vBinOp(const T* src1, size_t step1, const T* src2, size_t step2, T* dst, si { int x = 0; +#if CV_NEON || CV_SSE2 #if CV_SSE2 if( USE_SSE2 ) { +#endif for( ; x <= sz.width - 32/(int)sizeof(T); x += 32/sizeof(T) ) { typename VLoadStore128::reg_type r0 = VLoadStore128::load(src1 + x ); @@ -91,8 +95,10 @@ void vBinOp(const T* src1, size_t step1, const T* src2, size_t step2, T* dst, si VLoadStore128::store(dst + x , r0); VLoadStore128::store(dst + x + 16/sizeof(T), r1); } +#if CV_SSE2 } #endif +#endif #if CV_SSE2 if( USE_SSE2 ) { @@ -125,7 +131,7 @@ template void vBinOp32(const T* src1, size_t step1, const T* src2, size_t step2, T* dst, size_t step, Size sz) { -#if CV_SSE2 +#if CV_SSE2 || CV_NEON Op32 op32; #endif Op op; @@ -153,9 +159,11 @@ void vBinOp32(const T* src1, size_t step1, const T* src2, size_t step2, } } #endif +#if CV_NEON || CV_SSE2 #if CV_SSE2 if( USE_SSE2 ) { +#endif for( ; x <= sz.width - 8; x += 8 ) { typename VLoadStore128::reg_type r0 = VLoadStore128::load(src1 + x ); @@ -165,8 +173,10 @@ void vBinOp32(const T* src1, size_t step1, const T* src2, size_t step2, VLoadStore128::store(dst + x , r0); VLoadStore128::store(dst + x + 4, r1); } +#if CV_SSE2 } #endif +#endif #if CV_ENABLE_UNROLLED for( ; x <= sz.width - 4; x += 4 ) { @@ -383,7 +393,98 @@ FUNCTOR_TEMPLATE(VNot); FUNCTOR_CLOSURE_1arg(VNot, uchar, return _mm_xor_si128(_mm_set1_epi32(-1), a)); #endif -#if CV_SSE2 +#if CV_NEON + +#define FUNCTOR_LOADSTORE(name, template_arg, register_type, load_body, store_body)\ + template <> \ + struct name{ \ + typedef register_type reg_type; \ + static reg_type load(const template_arg * p) { return load_body (p);}; \ + static void store(template_arg * p, reg_type v) { store_body (p, v);}; \ + } + +#define FUNCTOR_CLOSURE_2arg(name, template_arg, body)\ + template<> \ + struct name \ + { \ + VLoadStore128::reg_type operator()( \ + VLoadStore128::reg_type a, \ + VLoadStore128::reg_type b) const \ + { \ + return body; \ + }; \ + } + +#define FUNCTOR_CLOSURE_1arg(name, template_arg, body)\ + template<> \ + struct name \ + { \ + VLoadStore128::reg_type operator()( \ + VLoadStore128::reg_type a, \ + VLoadStore128::reg_type ) const \ + { \ + return body; \ + }; \ + } + +FUNCTOR_LOADSTORE(VLoadStore128, uchar, uint8x16_t, vld1q_u8 , vst1q_u8 ); +FUNCTOR_LOADSTORE(VLoadStore128, schar, int8x16_t, vld1q_s8 , vst1q_s8 ); +FUNCTOR_LOADSTORE(VLoadStore128, ushort, uint16x8_t, vld1q_u16, vst1q_u16); +FUNCTOR_LOADSTORE(VLoadStore128, short, int16x8_t, vld1q_s16, vst1q_s16); +FUNCTOR_LOADSTORE(VLoadStore128, int, int32x4_t, vld1q_s32, vst1q_s32); +FUNCTOR_LOADSTORE(VLoadStore128, float, float32x4_t, vld1q_f32, vst1q_f32); + +FUNCTOR_TEMPLATE(VAdd); +FUNCTOR_CLOSURE_2arg(VAdd, uchar, vqaddq_u8 (a, b)); +FUNCTOR_CLOSURE_2arg(VAdd, schar, vqaddq_s8 (a, b)); +FUNCTOR_CLOSURE_2arg(VAdd, ushort, vqaddq_u16(a, b)); +FUNCTOR_CLOSURE_2arg(VAdd, short, vqaddq_s16(a, b)); +FUNCTOR_CLOSURE_2arg(VAdd, int, vaddq_s32 (a, b)); +FUNCTOR_CLOSURE_2arg(VAdd, float, vaddq_f32 (a, b)); + +FUNCTOR_TEMPLATE(VSub); +FUNCTOR_CLOSURE_2arg(VSub, uchar, vqsubq_u8 (a, b)); +FUNCTOR_CLOSURE_2arg(VSub, schar, vqsubq_s8 (a, b)); +FUNCTOR_CLOSURE_2arg(VSub, ushort, vqsubq_u16(a, b)); +FUNCTOR_CLOSURE_2arg(VSub, short, vqsubq_s16(a, b)); +FUNCTOR_CLOSURE_2arg(VSub, int, vsubq_s32 (a, b)); +FUNCTOR_CLOSURE_2arg(VSub, float, vsubq_f32 (a, b)); + +FUNCTOR_TEMPLATE(VMin); +FUNCTOR_CLOSURE_2arg(VMin, uchar, vminq_u8 (a, b)); +FUNCTOR_CLOSURE_2arg(VMin, schar, vminq_s8 (a, b)); +FUNCTOR_CLOSURE_2arg(VMin, ushort, vminq_u16(a, b)); +FUNCTOR_CLOSURE_2arg(VMin, short, vminq_s16(a, b)); +FUNCTOR_CLOSURE_2arg(VMin, int, vminq_s32(a, b)); +FUNCTOR_CLOSURE_2arg(VMin, float, vminq_f32(a, b)); + +FUNCTOR_TEMPLATE(VMax); +FUNCTOR_CLOSURE_2arg(VMax, uchar, vmaxq_u8 (a, b)); +FUNCTOR_CLOSURE_2arg(VMax, schar, vmaxq_s8 (a, b)); +FUNCTOR_CLOSURE_2arg(VMax, ushort, vmaxq_u16(a, b)); +FUNCTOR_CLOSURE_2arg(VMax, short, vmaxq_s16(a, b)); +FUNCTOR_CLOSURE_2arg(VMax, int, vmaxq_s32(a, b)); +FUNCTOR_CLOSURE_2arg(VMax, float, vmaxq_f32(a, b)); + +FUNCTOR_TEMPLATE(VAbsDiff); +FUNCTOR_CLOSURE_2arg(VAbsDiff, uchar, vabdq_u8 (a, b)); +FUNCTOR_CLOSURE_2arg(VAbsDiff, schar, vqabsq_s8 (vqsubq_s8(a, b))); +FUNCTOR_CLOSURE_2arg(VAbsDiff, ushort, vabdq_u16 (a, b)); +FUNCTOR_CLOSURE_2arg(VAbsDiff, short, vqabsq_s16(vqsubq_s16(a, b))); +FUNCTOR_CLOSURE_2arg(VAbsDiff, int, vabdq_s32 (a, b)); +FUNCTOR_CLOSURE_2arg(VAbsDiff, float, vabdq_f32 (a, b)); + +FUNCTOR_TEMPLATE(VAnd); +FUNCTOR_CLOSURE_2arg(VAnd, uchar, vandq_u8(a, b)); +FUNCTOR_TEMPLATE(VOr); +FUNCTOR_CLOSURE_2arg(VOr , uchar, vorrq_u8(a, b)); +FUNCTOR_TEMPLATE(VXor); +FUNCTOR_CLOSURE_2arg(VXor, uchar, veorq_u8(a, b)); +FUNCTOR_TEMPLATE(VNot); +FUNCTOR_CLOSURE_1arg(VNot, uchar, vmvnq_u8(a )); +#endif + +#if CV_SSE2 || CV_NEON #define IF_SIMD(op) op #else #define IF_SIMD(op) NOP @@ -1503,7 +1604,7 @@ static void arithm_op(InputArray _src1, InputArray _src2, OutputArray _dst, Size sz1 = dims1 <= 2 ? psrc1->size() : Size(); Size sz2 = dims2 <= 2 ? psrc2->size() : Size(); #ifdef HAVE_OPENCL - bool use_opencl = _dst.isUMat() && dims1 <= 2 && dims2 <= 2; + bool use_opencl = OCL_PERFORMANCE_CHECK(_dst.isUMat()) && dims1 <= 2 && dims2 <= 2; #endif bool src1Scalar = checkScalar(*psrc1, type2, kind1, kind2); bool src2Scalar = checkScalar(*psrc2, type1, kind2, kind1); @@ -2336,6 +2437,34 @@ addWeighted8u( const uchar* src1, size_t step1, _mm_storel_epi64((__m128i*)(dst + x), u); } } +#elif CV_NEON + float32x4_t g = vdupq_n_f32 (gamma); + + for( ; x <= size.width - 8; x += 8 ) + { + uint8x8_t in1 = vld1_u8(src1+x); + uint16x8_t in1_16 = vmovl_u8(in1); + float32x4_t in1_f_l = vcvtq_f32_u32(vmovl_u16(vget_low_u16(in1_16))); + float32x4_t in1_f_h = vcvtq_f32_u32(vmovl_u16(vget_high_u16(in1_16))); + + uint8x8_t in2 = vld1_u8(src2+x); + uint16x8_t in2_16 = vmovl_u8(in2); + float32x4_t in2_f_l = vcvtq_f32_u32(vmovl_u16(vget_low_u16(in2_16))); + float32x4_t in2_f_h = vcvtq_f32_u32(vmovl_u16(vget_high_u16(in2_16))); + + float32x4_t out_f_l = vaddq_f32(vmulq_n_f32(in1_f_l, alpha), vmulq_n_f32(in2_f_l, beta)); + float32x4_t out_f_h = vaddq_f32(vmulq_n_f32(in1_f_h, alpha), vmulq_n_f32(in2_f_h, beta)); + out_f_l = vaddq_f32(out_f_l, g); + out_f_h = vaddq_f32(out_f_h, g); + + uint16x4_t out_16_l = vqmovun_s32(vcvtq_s32_f32(out_f_l)); + uint16x4_t out_16_h = vqmovun_s32(vcvtq_s32_f32(out_f_h)); + + uint16x8_t out_16 = vcombine_u16(out_16_l, out_16_h); + uint8x8_t out = vqmovn_u16(out_16); + + vst1_u8(dst+x, out); + } #endif #if CV_ENABLE_UNROLLED for( ; x <= size.width - 4; x += 4 ) @@ -2546,6 +2675,14 @@ static void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t ste } } + #elif CV_NEON + uint8x16_t mask = code == CMP_GT ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + vst1q_u8(dst+x, veorq_u8(vcgtq_u8(vld1q_u8(src1+x), vld1q_u8(src2+x)), mask)); + } + #endif for( ; x < size.width; x++ ){ @@ -2570,6 +2707,13 @@ static void cmp8u(const uchar* src1, size_t step1, const uchar* src2, size_t ste _mm_storeu_si128((__m128i*)(dst + x), r00); } } + #elif CV_NEON + uint8x16_t mask = code == CMP_EQ ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + vst1q_u8(dst+x, veorq_u8(vceqq_u8(vld1q_u8(src1+x), vld1q_u8(src2+x)), mask)); + } #endif for( ; x < size.width; x++ ) dst[x] = (uchar)(-(src1[x] == src2[x]) ^ m); @@ -2655,6 +2799,22 @@ static void cmp16s(const short* src1, size_t step1, const short* src2, size_t st x += 8; } } + #elif CV_NEON + uint8x16_t mask = code == CMP_GT ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + int16x8_t in1 = vld1q_s16(src1 + x); + int16x8_t in2 = vld1q_s16(src2 + x); + uint8x8_t t1 = vmovn_u16(vcgtq_s16(in1, in2)); + + in1 = vld1q_s16(src1 + x + 8); + in2 = vld1q_s16(src2 + x + 8); + uint8x8_t t2 = vmovn_u16(vcgtq_s16(in1, in2)); + + vst1q_u8(dst+x, veorq_u8(vcombine_u8(t1, t2), mask)); + } + #endif for( ; x < size.width; x++ ){ @@ -2693,6 +2853,21 @@ static void cmp16s(const short* src1, size_t step1, const short* src2, size_t st x += 8; } } + #elif CV_NEON + uint8x16_t mask = code == CMP_EQ ? vdupq_n_u8(0) : vdupq_n_u8(255); + + for( ; x <= size.width - 16; x += 16 ) + { + int16x8_t in1 = vld1q_s16(src1 + x); + int16x8_t in2 = vld1q_s16(src2 + x); + uint8x8_t t1 = vmovn_u16(vceqq_s16(in1, in2)); + + in1 = vld1q_s16(src1 + x + 8); + in2 = vld1q_s16(src2 + x + 8); + uint8x8_t t2 = vmovn_u16(vceqq_s16(in1, in2)); + + vst1q_u8(dst+x, veorq_u8(vcombine_u8(t1, t2), mask)); + } #endif for( ; x < size.width; x++ ) dst[x] = (uchar)(-(src1[x] == src2[x]) ^ m); @@ -2878,7 +3053,7 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op) haveScalar = true; } - CV_OCL_RUN(_src1.dims() <= 2 && _src2.dims() <= 2 && _dst.isUMat(), + CV_OCL_RUN(_src1.dims() <= 2 && _src2.dims() <= 2 && OCL_PERFORMANCE_CHECK(_dst.isUMat()), ocl_compare(_src1, _src2, _dst, op, haveScalar)) int kind1 = _src1.kind(), kind2 = _src2.kind(); @@ -2980,8 +3155,341 @@ void cv::compare(InputArray _src1, InputArray _src2, OutputArray _dst, int op) namespace cv { -template static void -inRange_(const T* src1, size_t step1, const T* src2, size_t step2, +template +struct InRange_SIMD +{ + int operator () (const T *, const T *, const T *, uchar *, int) const + { + return 0; + } +}; + +#if CV_SSE2 + +template <> +struct InRange_SIMD +{ + int operator () (const uchar * src1, const uchar * src2, const uchar * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_full = _mm_set1_epi8(-1), v_128 = _mm_set1_epi8(-128); + + for ( ; x <= len - 16; x += 16 ) + { + __m128i v_src = _mm_add_epi8(_mm_loadu_si128((const __m128i *)(src1 + x)), v_128); + __m128i v_mask1 = _mm_cmpgt_epi8(_mm_add_epi8(_mm_loadu_si128((const __m128i *)(src2 + x)), v_128), v_src); + __m128i v_mask2 = _mm_cmpgt_epi8(v_src, _mm_add_epi8(_mm_loadu_si128((const __m128i *)(src3 + x)), v_128)); + _mm_storeu_si128((__m128i *)(dst + x), _mm_andnot_si128(_mm_or_si128(v_mask1, v_mask2), v_full)); + } + } + + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const schar * src1, const schar * src2, const schar * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_full = _mm_set1_epi8(-1); + + for ( ; x <= len - 16; x += 16 ) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src1 + x)); + __m128i v_mask1 = _mm_cmpgt_epi8(_mm_loadu_si128((const __m128i *)(src2 + x)), v_src); + __m128i v_mask2 = _mm_cmpgt_epi8(v_src, _mm_loadu_si128((const __m128i *)(src3 + x))); + _mm_storeu_si128((__m128i *)(dst + x), _mm_andnot_si128(_mm_or_si128(v_mask1, v_mask2), v_full)); + } + } + + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const ushort * src1, const ushort * src2, const ushort * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_zero = _mm_setzero_si128(), v_full = _mm_set1_epi16(-1), v_32768 = _mm_set1_epi16(-32768); + + for ( ; x <= len - 8; x += 8 ) + { + __m128i v_src = _mm_add_epi16(_mm_loadu_si128((const __m128i *)(src1 + x)), v_32768); + __m128i v_mask1 = _mm_cmpgt_epi16(_mm_add_epi16(_mm_loadu_si128((const __m128i *)(src2 + x)), v_32768), v_src); + __m128i v_mask2 = _mm_cmpgt_epi16(v_src, _mm_add_epi16(_mm_loadu_si128((const __m128i *)(src3 + x)), v_32768)); + __m128i v_res = _mm_andnot_si128(_mm_or_si128(v_mask1, v_mask2), v_full); + _mm_storel_epi64((__m128i *)(dst + x), _mm_packus_epi16(_mm_srli_epi16(v_res, 8), v_zero)); + } + } + + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const short * src1, const short * src2, const short * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_zero = _mm_setzero_si128(), v_full = _mm_set1_epi16(-1); + + for ( ; x <= len - 8; x += 8 ) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src1 + x)); + __m128i v_mask1 = _mm_cmpgt_epi16(_mm_loadu_si128((const __m128i *)(src2 + x)), v_src); + __m128i v_mask2 = _mm_cmpgt_epi16(v_src, _mm_loadu_si128((const __m128i *)(src3 + x))); + __m128i v_res = _mm_andnot_si128(_mm_or_si128(v_mask1, v_mask2), v_full); + _mm_storel_epi64((__m128i *)(dst + x), _mm_packus_epi16(_mm_srli_epi16(v_res, 8), v_zero)); + } + } + + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const int * src1, const int * src2, const int * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_zero = _mm_setzero_si128(), v_full = _mm_set1_epi32(-1); + + for ( ; x <= len - 8; x += 8 ) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src1 + x)); + __m128i v_res1 = _mm_or_si128(_mm_cmpgt_epi32(_mm_loadu_si128((const __m128i *)(src2 + x)), v_src), + _mm_cmpgt_epi32(v_src, _mm_loadu_si128((const __m128i *)(src3 + x)))); + + v_src = _mm_loadu_si128((const __m128i *)(src1 + x + 4)); + __m128i v_res2 = _mm_or_si128(_mm_cmpgt_epi32(_mm_loadu_si128((const __m128i *)(src2 + x + 4)), v_src), + _mm_cmpgt_epi32(v_src, _mm_loadu_si128((const __m128i *)(src3 + x + 4)))); + + __m128i v_res = _mm_packs_epi32(_mm_srli_epi32(_mm_andnot_si128(v_res1, v_full), 16), + _mm_srli_epi32(_mm_andnot_si128(v_res2, v_full), 16)); + _mm_storel_epi64((__m128i *)(dst + x), _mm_packus_epi16(v_res, v_zero)); + } + } + + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const float * src1, const float * src2, const float * src3, + uchar * dst, int len) const + { + int x = 0; + + if (USE_SSE2) + { + __m128i v_zero = _mm_setzero_si128(); + + for ( ; x <= len - 8; x += 8 ) + { + __m128 v_src = _mm_loadu_ps(src1 + x); + __m128 v_res1 = _mm_and_ps(_mm_cmple_ps(_mm_loadu_ps(src2 + x), v_src), + _mm_cmple_ps(v_src, _mm_loadu_ps(src3 + x))); + + v_src = _mm_loadu_ps(src1 + x + 4); + __m128 v_res2 = _mm_and_ps(_mm_cmple_ps(_mm_loadu_ps(src2 + x + 4), v_src), + _mm_cmple_ps(v_src, _mm_loadu_ps(src3 + x + 4))); + + __m128i v_res1i = _mm_cvtps_epi32(v_res1), v_res2i = _mm_cvtps_epi32(v_res2); + __m128i v_res = _mm_packs_epi32(_mm_srli_epi32(v_res1i, 16), _mm_srli_epi32(v_res2i, 16)); + _mm_storel_epi64((__m128i *)(dst + x), _mm_packus_epi16(v_res, v_zero)); + } + } + + return x; + } +}; + +#elif CV_NEON + +template <> +struct InRange_SIMD +{ + int operator () (const uchar * src1, const uchar * src2, const uchar * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + uint8x16_t values = vld1q_u8(src1 + x); + uint8x16_t low = vld1q_u8(src2 + x); + uint8x16_t high = vld1q_u8(src3 + x); + + vst1q_u8(dst + x, vandq_u8(vcgeq_u8(values, low), vcgeq_u8(high, values))); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const schar * src1, const schar * src2, const schar * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + int8x16_t values = vld1q_s8(src1 + x); + int8x16_t low = vld1q_s8(src2 + x); + int8x16_t high = vld1q_s8(src3 + x); + + vst1q_u8(dst + x, vandq_u8(vcgeq_s8(values, low), vcgeq_s8(high, values))); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const ushort * src1, const ushort * src2, const ushort * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + uint16x8_t values = vld1q_u16((const uint16_t*)(src1 + x)); + uint16x8_t low = vld1q_u16((const uint16_t*)(src2 + x)); + uint16x8_t high = vld1q_u16((const uint16_t*)(src3 + x)); + uint8x8_t r1 = vmovn_u16(vandq_u16(vcgeq_u16(values, low), vcgeq_u16(high, values))); + + values = vld1q_u16((const uint16_t*)(src1 + x + 8)); + low = vld1q_u16((const uint16_t*)(src2 + x + 8)); + high = vld1q_u16((const uint16_t*)(src3 + x + 8)); + uint8x8_t r2 = vmovn_u16(vandq_u16(vcgeq_u16(values, low), vcgeq_u16(high, values))); + + vst1q_u8(dst + x, vcombine_u8(r1, r2)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const short * src1, const short * src2, const short * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 16; x += 16 ) + { + int16x8_t values = vld1q_s16((const int16_t*)(src1 + x)); + int16x8_t low = vld1q_s16((const int16_t*)(src2 + x)); + int16x8_t high = vld1q_s16((const int16_t*)(src3 + x)); + uint8x8_t r1 = vmovn_u16(vandq_u16(vcgeq_s16(values, low), vcgeq_s16(high, values))); + + values = vld1q_s16((const int16_t*)(src1 + x + 8)); + low = vld1q_s16((const int16_t*)(src2 + x + 8)); + high = vld1q_s16((const int16_t*)(src3 + x + 8)); + uint8x8_t r2 = vmovn_u16(vandq_u16(vcgeq_s16(values, low), vcgeq_s16(high, values))); + + vst1q_u8(dst + x, vcombine_u8(r1, r2)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const int * src1, const int * src2, const int * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 8; x += 8 ) + { + int32x4_t values = vld1q_s32((const int32_t*)(src1 + x)); + int32x4_t low = vld1q_s32((const int32_t*)(src2 + x)); + int32x4_t high = vld1q_s32((const int32_t*)(src3 + x)); + + uint16x4_t r1 = vmovn_u32(vandq_u32(vcgeq_s32(values, low), vcgeq_s32(high, values))); + + values = vld1q_s32((const int32_t*)(src1 + x + 4)); + low = vld1q_s32((const int32_t*)(src2 + x + 4)); + high = vld1q_s32((const int32_t*)(src3 + x + 4)); + + uint16x4_t r2 = vmovn_u32(vandq_u32(vcgeq_s32(values, low), vcgeq_s32(high, values))); + + uint16x8_t res_16 = vcombine_u16(r1, r2); + + vst1_u8(dst + x, vmovn_u16(res_16)); + } + return x; + } +}; + +template <> +struct InRange_SIMD +{ + int operator () (const float * src1, const float * src2, const float * src3, + uchar * dst, int len) const + { + int x = 0; + + for ( ; x <= len - 8; x += 8 ) + { + float32x4_t values = vld1q_f32((const float32_t*)(src1 + x)); + float32x4_t low = vld1q_f32((const float32_t*)(src2 + x)); + float32x4_t high = vld1q_f32((const float32_t*)(src3 + x)); + + uint16x4_t r1 = vmovn_u32(vandq_u32(vcgeq_f32(values, low), vcgeq_f32(high, values))); + + values = vld1q_f32((const float32_t*)(src1 + x + 4)); + low = vld1q_f32((const float32_t*)(src2 + x + 4)); + high = vld1q_f32((const float32_t*)(src3 + x + 4)); + + uint16x4_t r2 = vmovn_u32(vandq_u32(vcgeq_f32(values, low), vcgeq_f32(high, values))); + + uint16x8_t res_16 = vcombine_u16(r1, r2); + + vst1_u8(dst + x, vmovn_u16(res_16)); + } + return x; + } +}; + +#endif + +template +static void inRange_(const T* src1, size_t step1, const T* src2, size_t step2, const T* src3, size_t step3, uchar* dst, size_t step, Size size) { @@ -2989,9 +3497,11 @@ inRange_(const T* src1, size_t step1, const T* src2, size_t step2, step2 /= sizeof(src2[0]); step3 /= sizeof(src3[0]); + InRange_SIMD vop; + for( ; size.height--; src1 += step1, src2 += step2, src3 += step3, dst += step ) { - int x = 0; + int x = vop(src1, src2, src3, dst, size.width); #if CV_ENABLE_UNROLLED for( ; x <= size.width - 4; x += 4 ) { @@ -3215,7 +3725,7 @@ void cv::inRange(InputArray _src, InputArray _lowerb, InputArray _upperb, OutputArray _dst) { CV_OCL_RUN(_src.dims() <= 2 && _lowerb.dims() <= 2 && - _upperb.dims() <= 2 && _dst.isUMat(), + _upperb.dims() <= 2 && OCL_PERFORMANCE_CHECK(_dst.isUMat()), ocl_inRange(_src, _lowerb, _upperb, _dst)) int skind = _src.kind(), lkind = _lowerb.kind(), ukind = _upperb.kind(); diff --git a/modules/core/src/convert.cpp b/modules/core/src/convert.cpp index 64d24304cd..61499b39ab 100644 --- a/modules/core/src/convert.cpp +++ b/modules/core/src/convert.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { @@ -50,6 +50,71 @@ namespace cv * split & merge * \****************************************************************************************/ +#if CV_NEON +template struct VSplit2; +template struct VSplit3; +template struct VSplit4; + +#define SPLIT2_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + } \ + } + +#define SPLIT3_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1, \ + data_type* dst2){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + store_func(dst2, r.val[2]); \ + } \ + } + +#define SPLIT4_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src, data_type* dst0, data_type* dst1, \ + data_type* dst2, data_type* dst3){ \ + reg_type r = load_func(src); \ + store_func(dst0, r.val[0]); \ + store_func(dst1, r.val[1]); \ + store_func(dst2, r.val[2]); \ + store_func(dst3, r.val[3]); \ + } \ + } + +SPLIT2_KERNEL_TEMPLATE(VSplit2, uchar , uint8x16x2_t, vld2q_u8 , vst1q_u8 ); +SPLIT2_KERNEL_TEMPLATE(VSplit2, schar , int8x16x2_t, vld2q_s8 , vst1q_s8 ); +SPLIT2_KERNEL_TEMPLATE(VSplit2, ushort, uint16x8x2_t, vld2q_u16, vst1q_u16); +SPLIT2_KERNEL_TEMPLATE(VSplit2, short , int16x8x2_t, vld2q_s16, vst1q_s16); +SPLIT2_KERNEL_TEMPLATE(VSplit2, int , int32x4x2_t, vld2q_s32, vst1q_s32); +SPLIT2_KERNEL_TEMPLATE(VSplit2, float , float32x4x2_t, vld2q_f32, vst1q_f32); +SPLIT2_KERNEL_TEMPLATE(VSplit2, int64 , int64x1x2_t, vld2_s64 , vst1_s64 ); + +SPLIT3_KERNEL_TEMPLATE(VSplit3, uchar , uint8x16x3_t, vld3q_u8 , vst1q_u8 ); +SPLIT3_KERNEL_TEMPLATE(VSplit3, schar , int8x16x3_t, vld3q_s8 , vst1q_s8 ); +SPLIT3_KERNEL_TEMPLATE(VSplit3, ushort, uint16x8x3_t, vld3q_u16, vst1q_u16); +SPLIT3_KERNEL_TEMPLATE(VSplit3, short , int16x8x3_t, vld3q_s16, vst1q_s16); +SPLIT3_KERNEL_TEMPLATE(VSplit3, int , int32x4x3_t, vld3q_s32, vst1q_s32); +SPLIT3_KERNEL_TEMPLATE(VSplit3, float , float32x4x3_t, vld3q_f32, vst1q_f32); +SPLIT3_KERNEL_TEMPLATE(VSplit3, int64 , int64x1x3_t, vld3_s64 , vst1_s64 ); + +SPLIT4_KERNEL_TEMPLATE(VSplit4, uchar , uint8x16x4_t, vld4q_u8 , vst1q_u8 ); +SPLIT4_KERNEL_TEMPLATE(VSplit4, schar , int8x16x4_t, vld4q_s8 , vst1q_s8 ); +SPLIT4_KERNEL_TEMPLATE(VSplit4, ushort, uint16x8x4_t, vld4q_u16, vst1q_u16); +SPLIT4_KERNEL_TEMPLATE(VSplit4, short , int16x8x4_t, vld4q_s16, vst1q_s16); +SPLIT4_KERNEL_TEMPLATE(VSplit4, int , int32x4x4_t, vld4q_s32, vst1q_s32); +SPLIT4_KERNEL_TEMPLATE(VSplit4, float , float32x4x4_t, vld4q_f32, vst1q_f32); +SPLIT4_KERNEL_TEMPLATE(VSplit4, int64 , int64x1x4_t, vld4_s64 , vst1_s64 ); +#endif + template static void split_( const T* src, T** dst, int len, int cn ) { @@ -58,13 +123,34 @@ split_( const T* src, T** dst, int len, int cn ) if( k == 1 ) { T* dst0 = dst[0]; - for( i = j = 0; i < len; i++, j += cn ) - dst0[i] = src[j]; + + if(cn == 1) + { + memcpy(dst0, src, len * sizeof(T)); + } + else + { + for( i = 0, j = 0 ; i < len; i++, j += cn ) + dst0[i] = src[j]; + } } else if( k == 2 ) { T *dst0 = dst[0], *dst1 = dst[1]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 2) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 2 * inc_i; + + VSplit2 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; @@ -73,7 +159,20 @@ split_( const T* src, T** dst, int len, int cn ) else if( k == 3 ) { T *dst0 = dst[0], *dst1 = dst[1], *dst2 = dst[2]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 3) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 3 * inc_i; + + VSplit3 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i, dst2 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; @@ -83,7 +182,20 @@ split_( const T* src, T** dst, int len, int cn ) else { T *dst0 = dst[0], *dst1 = dst[1], *dst2 = dst[2], *dst3 = dst[3]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; + +#if CV_NEON + if(cn == 4) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 4 * inc_i; + + VSplit4 vsplit; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vsplit(src + j, dst0 + i, dst1 + i, dst2 + i, dst3 + i); + } +#endif + for( ; i < len; i++, j += cn ) { dst0[i] = src[j]; dst1[i] = src[j+1]; dst2[i] = src[j+2]; dst3[i] = src[j+3]; @@ -101,6 +213,77 @@ split_( const T* src, T** dst, int len, int cn ) } } + +#if CV_NEON +template struct VMerge2; +template struct VMerge3; +template struct VMerge4; + +#define MERGE2_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + store_func(dst, r); \ + } \ + } + +#define MERGE3_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + const data_type* src2, data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + r.val[2] = load_func(src2); \ + store_func(dst, r); \ + } \ + } + +#define MERGE4_KERNEL_TEMPLATE(name, data_type, reg_type, load_func, store_func) \ + template<> \ + struct name{ \ + void operator()(const data_type* src0, const data_type* src1, \ + const data_type* src2, const data_type* src3, \ + data_type* dst){ \ + reg_type r; \ + r.val[0] = load_func(src0); \ + r.val[1] = load_func(src1); \ + r.val[2] = load_func(src2); \ + r.val[3] = load_func(src3); \ + store_func(dst, r); \ + } \ + } + +MERGE2_KERNEL_TEMPLATE(VMerge2, uchar , uint8x16x2_t, vld1q_u8 , vst2q_u8 ); +MERGE2_KERNEL_TEMPLATE(VMerge2, schar , int8x16x2_t, vld1q_s8 , vst2q_s8 ); +MERGE2_KERNEL_TEMPLATE(VMerge2, ushort, uint16x8x2_t, vld1q_u16, vst2q_u16); +MERGE2_KERNEL_TEMPLATE(VMerge2, short , int16x8x2_t, vld1q_s16, vst2q_s16); +MERGE2_KERNEL_TEMPLATE(VMerge2, int , int32x4x2_t, vld1q_s32, vst2q_s32); +MERGE2_KERNEL_TEMPLATE(VMerge2, float , float32x4x2_t, vld1q_f32, vst2q_f32); +MERGE2_KERNEL_TEMPLATE(VMerge2, int64 , int64x1x2_t, vld1_s64 , vst2_s64 ); + +MERGE3_KERNEL_TEMPLATE(VMerge3, uchar , uint8x16x3_t, vld1q_u8 , vst3q_u8 ); +MERGE3_KERNEL_TEMPLATE(VMerge3, schar , int8x16x3_t, vld1q_s8 , vst3q_s8 ); +MERGE3_KERNEL_TEMPLATE(VMerge3, ushort, uint16x8x3_t, vld1q_u16, vst3q_u16); +MERGE3_KERNEL_TEMPLATE(VMerge3, short , int16x8x3_t, vld1q_s16, vst3q_s16); +MERGE3_KERNEL_TEMPLATE(VMerge3, int , int32x4x3_t, vld1q_s32, vst3q_s32); +MERGE3_KERNEL_TEMPLATE(VMerge3, float , float32x4x3_t, vld1q_f32, vst3q_f32); +MERGE3_KERNEL_TEMPLATE(VMerge3, int64 , int64x1x3_t, vld1_s64 , vst3_s64 ); + +MERGE4_KERNEL_TEMPLATE(VMerge4, uchar , uint8x16x4_t, vld1q_u8 , vst4q_u8 ); +MERGE4_KERNEL_TEMPLATE(VMerge4, schar , int8x16x4_t, vld1q_s8 , vst4q_s8 ); +MERGE4_KERNEL_TEMPLATE(VMerge4, ushort, uint16x8x4_t, vld1q_u16, vst4q_u16); +MERGE4_KERNEL_TEMPLATE(VMerge4, short , int16x8x4_t, vld1q_s16, vst4q_s16); +MERGE4_KERNEL_TEMPLATE(VMerge4, int , int32x4x4_t, vld1q_s32, vst4q_s32); +MERGE4_KERNEL_TEMPLATE(VMerge4, float , float32x4x4_t, vld1q_f32, vst4q_f32); +MERGE4_KERNEL_TEMPLATE(VMerge4, int64 , int64x1x4_t, vld1_s64 , vst4_s64 ); +#endif + template static void merge_( const T** src, T* dst, int len, int cn ) { @@ -115,7 +298,19 @@ merge_( const T** src, T* dst, int len, int cn ) else if( k == 2 ) { const T *src0 = src[0], *src1 = src[1]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 2) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 2 * inc_i; + + VMerge2 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; @@ -124,7 +319,19 @@ merge_( const T** src, T* dst, int len, int cn ) else if( k == 3 ) { const T *src0 = src[0], *src1 = src[1], *src2 = src[2]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 3) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 3 * inc_i; + + VMerge3 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, src2 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; @@ -134,7 +341,19 @@ merge_( const T** src, T* dst, int len, int cn ) else { const T *src0 = src[0], *src1 = src[1], *src2 = src[2], *src3 = src[3]; - for( i = j = 0; i < len; i++, j += cn ) + i = j = 0; +#if CV_NEON + if(cn == 4) + { + int inc_i = (sizeof(T) == 8)? 1: 16/sizeof(T); + int inc_j = 4 * inc_i; + + VMerge4 vmerge; + for( ; i < len - inc_i; i += inc_i, j += inc_j) + vmerge(src0 + i, src1 + i, src2 + i, src3 + i, dst + j); + } +#endif + for( ; i < len; i++, j += cn ) { dst[j] = src0[i]; dst[j+1] = src1[i]; dst[j+2] = src2[i]; dst[j+3] = src3[i]; @@ -851,6 +1070,175 @@ void cv::insertChannel(InputArray _src, InputOutputArray _dst, int coi) namespace cv { +template +struct cvtScaleAbs_SSE2 +{ + int operator () (const T *, DT *, int, WT, WT) const + { + return 0; + } +}; + +#if CV_SSE2 + +template <> +struct cvtScaleAbs_SSE2 +{ + int operator () (const uchar * src, uchar * dst, int width, + float scale, float shift) const + { + int x = 0; + + if (USE_SSE2) + { + __m128 v_scale = _mm_set1_ps(scale), v_shift = _mm_set1_ps(shift), + v_zero_f = _mm_setzero_ps(); + __m128i v_zero_i = _mm_setzero_si128(); + + for ( ; x <= width - 16; x += 16) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src + x)); + __m128i v_src12 = _mm_unpacklo_epi8(v_src, v_zero_i), v_src_34 = _mm_unpackhi_epi8(v_src, v_zero_i); + __m128 v_dst1 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpacklo_epi16(v_src12, v_zero_i)), v_scale), v_shift); + v_dst1 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst1), v_dst1); + __m128 v_dst2 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpackhi_epi16(v_src12, v_zero_i)), v_scale), v_shift); + v_dst2 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst2), v_dst2); + __m128 v_dst3 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpacklo_epi16(v_src_34, v_zero_i)), v_scale), v_shift); + v_dst3 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst3), v_dst3); + __m128 v_dst4 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpackhi_epi16(v_src_34, v_zero_i)), v_scale), v_shift); + v_dst4 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst4), v_dst4); + + __m128i v_dst_i = _mm_packus_epi16(_mm_packs_epi32(_mm_cvtps_epi32(v_dst1), _mm_cvtps_epi32(v_dst2)), + _mm_packs_epi32(_mm_cvtps_epi32(v_dst3), _mm_cvtps_epi32(v_dst4))); + _mm_storeu_si128((__m128i *)(dst + x), v_dst_i); + } + } + + return x; + } +}; + +template <> +struct cvtScaleAbs_SSE2 +{ + int operator () (const ushort * src, uchar * dst, int width, + float scale, float shift) const + { + int x = 0; + + if (USE_SSE2) + { + __m128 v_scale = _mm_set1_ps(scale), v_shift = _mm_set1_ps(shift), + v_zero_f = _mm_setzero_ps(); + __m128i v_zero_i = _mm_setzero_si128(); + + for ( ; x <= width - 8; x += 8) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src + x)); + __m128 v_dst1 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpacklo_epi16(v_src, v_zero_i)), v_scale), v_shift); + v_dst1 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst1), v_dst1); + __m128 v_dst2 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_unpackhi_epi16(v_src, v_zero_i)), v_scale), v_shift); + v_dst2 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst2), v_dst2); + + __m128i v_dst_i = _mm_packus_epi16(_mm_packs_epi32(_mm_cvtps_epi32(v_dst1), _mm_cvtps_epi32(v_dst2)), v_zero_i); + _mm_storel_epi64((__m128i *)(dst + x), v_dst_i); + } + } + + return x; + } +}; + +template <> +struct cvtScaleAbs_SSE2 +{ + int operator () (const short * src, uchar * dst, int width, + float scale, float shift) const + { + int x = 0; + + if (USE_SSE2) + { + __m128 v_scale = _mm_set1_ps(scale), v_shift = _mm_set1_ps(shift), + v_zero_f = _mm_setzero_ps(); + __m128i v_zero_i = _mm_setzero_si128(); + + for ( ; x <= width - 8; x += 8) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src + x)); + __m128 v_dst1 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_srai_epi32(_mm_unpacklo_epi16(v_src, v_src), 16)), v_scale), v_shift); + v_dst1 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst1), v_dst1); + __m128 v_dst2 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(_mm_srai_epi32(_mm_unpackhi_epi16(v_src, v_src), 16)), v_scale), v_shift); + v_dst2 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst2), v_dst2); + + __m128i v_dst_i = _mm_packus_epi16(_mm_packs_epi32(_mm_cvtps_epi32(v_dst1), _mm_cvtps_epi32(v_dst2)), v_zero_i); + _mm_storel_epi64((__m128i *)(dst + x), v_dst_i); + } + } + + return x; + } +}; + +template <> +struct cvtScaleAbs_SSE2 +{ + int operator () (const int * src, uchar * dst, int width, + float scale, float shift) const + { + int x = 0; + + if (USE_SSE2) + { + __m128 v_scale = _mm_set1_ps(scale), v_shift = _mm_set1_ps(shift), + v_zero_f = _mm_setzero_ps(); + __m128i v_zero_i = _mm_setzero_si128(); + + for ( ; x <= width - 8; x += 4) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(src + x)); + __m128 v_dst1 = _mm_add_ps(_mm_mul_ps(_mm_cvtepi32_ps(v_src), v_scale), v_shift); + v_dst1 = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst1), v_dst1); + + __m128i v_dst_i = _mm_packus_epi16(_mm_packs_epi32(_mm_cvtps_epi32(v_dst1), v_zero_i), v_zero_i); + _mm_storel_epi64((__m128i *)(dst + x), v_dst_i); + } + } + + return x; + } +}; + +template <> +struct cvtScaleAbs_SSE2 +{ + int operator () (const float * src, uchar * dst, int width, + float scale, float shift) const + { + int x = 0; + + if (USE_SSE2) + { + __m128 v_scale = _mm_set1_ps(scale), v_shift = _mm_set1_ps(shift), + v_zero_f = _mm_setzero_ps(); + __m128i v_zero_i = _mm_setzero_si128(); + + for ( ; x <= width - 8; x += 4) + { + __m128 v_dst = _mm_add_ps(_mm_mul_ps(_mm_loadu_ps(src + x), v_scale), v_shift); + v_dst = _mm_max_ps(_mm_sub_ps(v_zero_f, v_dst), v_dst); + + __m128i v_dst_i = _mm_packs_epi32(_mm_cvtps_epi32(v_dst), v_zero_i); + _mm_storel_epi64((__m128i *)(dst + x), _mm_packus_epi16(v_dst_i, v_zero_i)); + } + } + + return x; + } +}; + +#endif + template static void cvtScaleAbs_( const T* src, size_t sstep, DT* dst, size_t dstep, Size size, @@ -858,10 +1246,12 @@ cvtScaleAbs_( const T* src, size_t sstep, { sstep /= sizeof(src[0]); dstep /= sizeof(dst[0]); + cvtScaleAbs_SSE2 vop; for( ; size.height--; src += sstep, dst += dstep ) { - int x = 0; + int x = vop(src, dst, size.width, scale, shift); + #if CV_ENABLE_UNROLLED for( ; x <= size.width - 4; x += 4 ) { @@ -879,7 +1269,6 @@ cvtScaleAbs_( const T* src, size_t sstep, } } - template static void cvtScale_( const T* src, size_t sstep, DT* dst, size_t dstep, Size size, @@ -1230,7 +1619,7 @@ DEF_CVT_FUNC_F(8u16s, uchar, short, 8u16s_C1R) DEF_CVT_FUNC_F(8s16s, schar, short, 8s16s_C1R) DEF_CVT_FUNC_F2(16u16s, ushort, short, 16u16s_C1RSfs) DEF_CVT_FUNC_F2(32s16s, int, short, 32s16s_C1RSfs) -DEF_CVT_FUNC_F2(32f16s, float, short, 32f16s_C1RSfs) +DEF_CVT_FUNC(32f16s, float, short) DEF_CVT_FUNC(64f16s, double, short) DEF_CVT_FUNC_F(8u32s, uchar, int, 8u32s_C1R) @@ -1371,7 +1760,7 @@ static bool ocl_convertScaleAbs( InputArray _src, OutputArray _dst, double alpha kercn = ocl::predictOptimalVectorWidth(_src, _dst), rowsPerWI = d.isIntel() ? 4 : 1; bool doubleSupport = d.doubleFPConfig() > 0; - if (!doubleSupport && depth == CV_64F) + if (depth == CV_32F || depth == CV_64F) return false; char cvt[2][50]; @@ -1559,22 +1948,18 @@ static bool ocl_LUT(InputArray _src, InputArray _lut, OutputArray _dst) UMat src = _src.getUMat(), lut = _lut.getUMat(); _dst.create(src.size(), CV_MAKETYPE(ddepth, dcn)); UMat dst = _dst.getUMat(); - bool bAligned = (1 == lcn) && (0 == (src.offset % 4)) && (0 == ((dcn * src.cols) % 4)); - // dst.cols == src.cols by params of dst.create + int kercn = lcn == 1 ? std::min(4, ocl::predictOptimalVectorWidth(_src, _dst)) : dcn; ocl::Kernel k("LUT", ocl::core::lut_oclsrc, - format("-D dcn=%d -D lcn=%d -D srcT=%s -D dstT=%s", bAligned ? 4 : dcn, lcn, - ocl::typeToStr(src.depth()), ocl::memopTypeToStr(ddepth) - )); + format("-D dcn=%d -D lcn=%d -D srcT=%s -D dstT=%s", kercn, lcn, + ocl::typeToStr(src.depth()), ocl::memopTypeToStr(ddepth))); if (k.empty()) return false; - int cols = bAligned ? dcn * dst.cols / 4 : dst.cols; - k.args(ocl::KernelArg::ReadOnlyNoSize(src), ocl::KernelArg::ReadOnlyNoSize(lut), - ocl::KernelArg::WriteOnlyNoSize(dst), dst.rows, cols); + ocl::KernelArg::WriteOnly(dst, dcn, kercn)); - size_t globalSize[2] = { cols, (dst.rows + 3) / 4 }; + size_t globalSize[2] = { dst.cols * dcn / kercn, (dst.rows + 3) / 4 }; return k.run(2, globalSize, NULL, false); } diff --git a/modules/core/src/copy.cpp b/modules/core/src/copy.cpp index 6900b51803..3003c81157 100644 --- a/modules/core/src/copy.cpp +++ b/modules/core/src/copy.cpp @@ -46,7 +46,7 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { @@ -432,7 +432,7 @@ Mat& Mat::setTo(InputArray _value, InputArray _mask) IppStatus status = (IppStatus)-1; IppiSize roisize = { cols, rows }; - int mstep = (int)mask.step, dstep = (int)step; + int mstep = (int)mask.step[0], dstep = (int)step[0]; if (isContinuous() && mask.isContinuous()) { @@ -616,7 +616,7 @@ static bool ocl_flip(InputArray _src, OutputArray _dst, int flipCode ) { CV_Assert(flipCode >= -1 && flipCode <= 1); int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), - flipType, kercn = std::min(ocl::predictOptimalVectorWidth(_src, _dst), 4);; + flipType, kercn = std::min(ocl::predictOptimalVectorWidth(_src, _dst), 4); if (cn > 4) return false; @@ -631,7 +631,7 @@ static bool ocl_flip(InputArray _src, OutputArray _dst, int flipCode ) ocl::Device dev = ocl::Device::getDefault(); int pxPerWIy = (dev.isIntel() && (dev.type() & ocl::Device::TYPE_GPU)) ? 4 : 1; - kercn = std::max(kercn, cn); + kercn = (cn!=3 || flipType == FLIP_ROWS) ? std::max(kercn, cn) : cn; ocl::Kernel k(kernelName, ocl::core::flip_oclsrc, format( "-D T=%s -D T1=%s -D cn=%d -D PIX_PER_WI_Y=%d -D kercn=%d", @@ -762,7 +762,7 @@ void flip( InputArray _src, OutputArray _dst, int flip_mode ) flipHoriz( dst.data, dst.step, dst.data, dst.step, dst.size(), esz ); } -#ifdef HAVE_OPENCL +#if defined HAVE_OPENCL && !defined __APPLE__ static bool ocl_repeat(InputArray _src, int ny, int nx, OutputArray _dst) { @@ -800,8 +800,10 @@ void repeat(InputArray _src, int ny, int nx, OutputArray _dst) Size ssize = _src.size(); _dst.create(ssize.height*ny, ssize.width*nx, _src.type()); +#if !defined __APPLE__ CV_OCL_RUN(_dst.isUMat(), ocl_repeat(_src, ny, nx, _dst)) +#endif Mat src = _src.getMat(), dst = _dst.getMat(); Size dsize = dst.size(); diff --git a/modules/core/src/cuda_buffer_pool.cpp b/modules/core/src/cuda_buffer_pool.cpp index ea060a7c20..e5caf6ef25 100644 --- a/modules/core/src/cuda_buffer_pool.cpp +++ b/modules/core/src/cuda_buffer_pool.cpp @@ -207,7 +207,6 @@ namespace MemoryStack* MemoryPool::getFreeMemStack() { AutoLock lock(mtx_); - if (!initialized_) initilizeImpl(); @@ -256,22 +255,31 @@ namespace namespace { + Mutex mtx_; + bool memory_pool_manager_initialized; + class MemoryPoolManager { public: MemoryPoolManager(); ~MemoryPoolManager(); + void Init(); MemoryPool* getPool(int deviceId); private: std::vector pools_; - }; + } manager; + + //MemoryPoolManager ; MemoryPoolManager::MemoryPoolManager() { - int deviceCount = getCudaEnabledDeviceCount(); + } + void MemoryPoolManager::Init() + { + int deviceCount = getCudaEnabledDeviceCount(); if (deviceCount > 0) pools_.resize(deviceCount); } @@ -280,7 +288,7 @@ namespace { for (size_t i = 0; i < pools_.size(); ++i) { - cudaSetDevice(i); + cudaSetDevice(static_cast(i)); pools_[i].release(); } } @@ -293,7 +301,14 @@ namespace MemoryPool* memPool(int deviceId) { - static MemoryPoolManager manager; + { + AutoLock lock(mtx_); + if (!memory_pool_manager_initialized) + { + memory_pool_manager_initialized = true; + manager.Init(); + } + } return manager.getPool(deviceId); } } @@ -311,8 +326,10 @@ cv::cuda::StackAllocator::StackAllocator(cudaStream_t stream) : stream_(stream), if (enableMemoryPool) { const int deviceId = getDevice(); - memStack_ = memPool(deviceId)->getFreeMemStack(); - + { + AutoLock lock(mtx_); + memStack_ = memPool(deviceId)->getFreeMemStack(); + } DeviceInfo devInfo(deviceId); alignment_ = devInfo.textureAlignment(); } diff --git a/modules/core/src/cuda_stream.cpp b/modules/core/src/cuda_stream.cpp index 9f190c3fab..98a29df19b 100644 --- a/modules/core/src/cuda_stream.cpp +++ b/modules/core/src/cuda_stream.cpp @@ -190,10 +190,22 @@ void cv::cuda::Stream::enqueueHostCallback(StreamCallback callback, void* userDa #endif } +namespace +{ + bool default_stream_is_initialized; + Mutex mtx; + Ptr default_stream; +} + Stream& cv::cuda::Stream::Null() { - static Stream s(Ptr(new Impl(0))); - return s; + AutoLock lock(mtx); + if (!default_stream_is_initialized) + { + default_stream = Ptr(new Stream(Ptr(new Impl(0)))); + default_stream_is_initialized = true; + } + return *default_stream; } cv::cuda::Stream::operator bool_type() const diff --git a/modules/core/src/drawing.cpp b/modules/core/src/drawing.cpp index 0ba932163d..0b11aea7ea 100644 --- a/modules/core/src/drawing.cpp +++ b/modules/core/src/drawing.cpp @@ -1584,6 +1584,24 @@ void line( InputOutputArray _img, Point pt1, Point pt2, const Scalar& color, ThickLine( img, pt1, pt2, buf, thickness, line_type, 3, shift ); } +void arrowedLine(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, + int thickness, int line_type, int shift, double tipLength) +{ + const double tipSize = norm(pt1-pt2)*tipLength; // Factor to normalize the size of the tip depending on the length of the arrow + + line(img, pt1, pt2, color, thickness, line_type, shift); + + const double angle = atan2( (double) pt1.y - pt2.y, (double) pt1.x - pt2.x ); + + Point p(cvRound(pt2.x + tipSize * cos(angle + CV_PI / 4)), + cvRound(pt2.y + tipSize * sin(angle + CV_PI / 4))); + line(img, p, pt2, color, thickness, line_type, shift); + + p.x = cvRound(pt2.x + tipSize * cos(angle - CV_PI / 4)); + p.y = cvRound(pt2.y + tipSize * sin(angle - CV_PI / 4)); + line(img, p, pt2, color, thickness, line_type, shift); +} + void rectangle( InputOutputArray _img, Point pt1, Point pt2, const Scalar& color, int thickness, int lineType, int shift ) diff --git a/modules/core/src/dxt.cpp b/modules/core/src/dxt.cpp index 2a08899167..ed96a0b80c 100644 --- a/modules/core/src/dxt.cpp +++ b/modules/core/src/dxt.cpp @@ -42,7 +42,8 @@ #include "precomp.hpp" #include "opencv2/core/opencl/runtime/opencl_clamdfft.hpp" #include "opencv2/core/opencl/runtime/opencl_core.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" +#include namespace cv { @@ -1781,6 +1782,375 @@ static bool ippi_DFT_R_32F(const Mat& src, Mat& dst, bool inv, int norm_flag) #endif } +#ifdef HAVE_OPENCL + +namespace cv +{ + +enum FftType +{ + R2R = 0, // real to CCS in case forward transform, CCS to real otherwise + C2R = 1, // complex to real in case inverse transform + R2C = 2, // real to complex in case forward transform + C2C = 3 // complex to complex +}; + +struct OCL_FftPlan +{ +private: + UMat twiddles; + String buildOptions; + int thread_count; + int dft_size; + bool status; + +public: + OCL_FftPlan(int _size) : dft_size(_size), status(true) + { + int min_radix; + std::vector radixes, blocks; + ocl_getRadixes(dft_size, radixes, blocks, min_radix); + thread_count = dft_size / min_radix; + + if (thread_count > (int) ocl::Device::getDefault().maxWorkGroupSize()) + { + status = false; + return; + } + + // generate string with radix calls + String radix_processing; + int n = 1, twiddle_size = 0; + for (size_t i=0; i 1) + radix_processing += format("fft_radix%d_B%d(smem,twiddles+%d,ind,%d,%d);", radix, block, twiddle_size, n, dft_size/radix); + else + radix_processing += format("fft_radix%d(smem,twiddles+%d,ind,%d,%d);", radix, twiddle_size, n, dft_size/radix); + twiddle_size += (radix-1)*n; + n *= radix; + } + + Mat tw(1, twiddle_size, CV_32FC2); + float* ptr = tw.ptr(); + int ptr_index = 0; + + n = 1; + for (size_t i=0; i& radixes, std::vector& blocks, int& min_radix) + { + int factors[34]; + int nf = DFTFactorize(cols, factors); + + int n = 1; + int factor_index = 0; + min_radix = INT_MAX; + + // 2^n transforms + if ((factors[factor_index] & 1) == 0) + { + for( ; n < factors[factor_index];) + { + int radix = 2, block = 1; + if (8*n <= factors[0]) + radix = 8; + else if (4*n <= factors[0]) + { + radix = 4; + if (cols % 12 == 0) + block = 3; + else if (cols % 8 == 0) + block = 2; + } + else + { + if (cols % 10 == 0) + block = 5; + else if (cols % 8 == 0) + block = 4; + else if (cols % 6 == 0) + block = 3; + else if (cols % 4 == 0) + block = 2; + } + + radixes.push_back(radix); + blocks.push_back(block); + min_radix = min(min_radix, block*radix); + n *= radix; + } + factor_index++; + } + + // all the other transforms + for( ; factor_index < nf; factor_index++) + { + int radix = factors[factor_index], block = 1; + if (radix == 3) + { + if (cols % 12 == 0) + block = 4; + else if (cols % 9 == 0) + block = 3; + else if (cols % 6 == 0) + block = 2; + } + else if (radix == 5) + { + if (cols % 10 == 0) + block = 2; + } + radixes.push_back(radix); + blocks.push_back(block); + min_radix = min(min_radix, block*radix); + } + } +}; + +class OCL_FftPlanCache +{ +public: + static OCL_FftPlanCache & getInstance() + { + static OCL_FftPlanCache planCache; + return planCache; + } + + Ptr getFftPlan(int dft_size) + { + std::map >::iterator f = planStorage.find(dft_size); + if (f != planStorage.end()) + { + return f->second; + } + else + { + Ptr newPlan = Ptr(new OCL_FftPlan(dft_size)); + planStorage[dft_size] = newPlan; + return newPlan; + } + } + + ~OCL_FftPlanCache() + { + planStorage.clear(); + } + +protected: + OCL_FftPlanCache() : + planStorage() + { + } + std::map > planStorage; +}; + +static bool ocl_dft_rows(InputArray _src, OutputArray _dst, int nonzero_rows, int flags, int fftType) +{ + Ptr plan = OCL_FftPlanCache::getInstance().getFftPlan(_src.cols()); + return plan->enqueueTransform(_src, _dst, nonzero_rows, flags, fftType, true); +} + +static bool ocl_dft_cols(InputArray _src, OutputArray _dst, int nonzero_cols, int flags, int fftType) +{ + Ptr plan = OCL_FftPlanCache::getInstance().getFftPlan(_src.rows()); + return plan->enqueueTransform(_src, _dst, nonzero_cols, flags, fftType, false); +} + +static bool ocl_dft(InputArray _src, OutputArray _dst, int flags, int nonzero_rows) +{ + int type = _src.type(), cn = CV_MAT_CN(type); + Size ssize = _src.size(); + if ( !(type == CV_32FC1 || type == CV_32FC2) ) + return false; + + // if is not a multiplication of prime numbers { 2, 3, 5 } + if (ssize.area() != getOptimalDFTSize(ssize.area())) + return false; + + UMat src = _src.getUMat(); + int complex_input = cn == 2 ? 1 : 0; + int complex_output = (flags & DFT_COMPLEX_OUTPUT) != 0; + int real_input = cn == 1 ? 1 : 0; + int real_output = (flags & DFT_REAL_OUTPUT) != 0; + bool inv = (flags & DFT_INVERSE) != 0 ? 1 : 0; + + if( nonzero_rows <= 0 || nonzero_rows > _src.rows() ) + nonzero_rows = _src.rows(); + bool is1d = (flags & DFT_ROWS) != 0 || nonzero_rows == 1; + + // if output format is not specified + if (complex_output + real_output == 0) + { + if (real_input) + real_output = 1; + else + complex_output = 1; + } + + FftType fftType = (FftType)(complex_input << 0 | complex_output << 1); + + // Forward Complex to CCS not supported + if (fftType == C2R && !inv) + fftType = C2C; + + // Inverse CCS to Complex not supported + if (fftType == R2C && inv) + fftType = R2R; + + UMat output; + if (fftType == C2C || fftType == R2C) + { + // complex output + _dst.create(src.size(), CV_32FC2); + output = _dst.getUMat(); + } + else + { + // real output + if (is1d) + { + _dst.create(src.size(), CV_32FC1); + output = _dst.getUMat(); + } + else + { + _dst.create(src.size(), CV_32FC1); + output.create(src.size(), CV_32FC2); + } + } + + if (!inv) + { + if (!ocl_dft_rows(src, output, nonzero_rows, flags, fftType)) + return false; + + if (!is1d) + { + int nonzero_cols = fftType == R2R ? output.cols/2 + 1 : output.cols; + if (!ocl_dft_cols(output, _dst, nonzero_cols, flags, fftType)) + return false; + } + } + else + { + if (fftType == C2C) + { + // complex output + if (!ocl_dft_rows(src, output, nonzero_rows, flags, fftType)) + return false; + + if (!is1d) + { + if (!ocl_dft_cols(output, output, output.cols, flags, fftType)) + return false; + } + } + else + { + if (is1d) + { + if (!ocl_dft_rows(src, output, nonzero_rows, flags, fftType)) + return false; + } + else + { + int nonzero_cols = src.cols/2 + 1; + if (!ocl_dft_cols(src, output, nonzero_cols, flags, fftType)) + return false; + + if (!ocl_dft_rows(output, _dst, nonzero_rows, flags, fftType)) + return false; + } + } + } + return true; +} + +} // namespace cv; + +#endif + #ifdef HAVE_CLAMDFFT namespace cv { @@ -1791,14 +2161,6 @@ namespace cv { CV_Assert(s == CLFFT_SUCCESS); \ } -enum FftType -{ - R2R = 0, // real to real - C2R = 1, // opencl HERMITIAN_INTERLEAVED to real - R2C = 2, // real to opencl HERMITIAN_INTERLEAVED - C2C = 3 // complex to complex -}; - class PlanCache { struct FftPlan @@ -1923,7 +2285,7 @@ public: } // no baked plan is found, so let's create a new one - FftPlan * newPlan = new FftPlan(dft_size, src_step, dst_step, doubleFP, inplace, flags, fftType); + Ptr newPlan = Ptr(new FftPlan(dft_size, src_step, dst_step, doubleFP, inplace, flags, fftType)); planStorage.push_back(newPlan); return newPlan->plHandle; @@ -1931,8 +2293,6 @@ public: ~PlanCache() { - for (std::vector::iterator i = planStorage.begin(), end = planStorage.end(); i != end; ++i) - delete (*i); planStorage.clear(); } @@ -1942,7 +2302,7 @@ protected: { } - std::vector planStorage; + std::vector > planStorage; }; extern "C" { @@ -1960,7 +2320,7 @@ static void CL_CALLBACK oclCleanupCallback(cl_event e, cl_int, void *p) } -static bool ocl_dft(InputArray _src, OutputArray _dst, int flags) +static bool ocl_dft_amdfft(InputArray _src, OutputArray _dst, int flags) { int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); Size ssize = _src.size(); @@ -2019,7 +2379,6 @@ static bool ocl_dft(InputArray _src, OutputArray _dst, int flags) tmpBuffer.addref(); clSetEventCallback(e, CL_COMPLETE, oclCleanupCallback, tmpBuffer.u); - return true; } @@ -2034,7 +2393,12 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) #ifdef HAVE_CLAMDFFT CV_OCL_RUN(ocl::haveAmdFft() && ocl::Device::getDefault().type() != ocl::Device::TYPE_CPU && _dst.isUMat() && _src0.dims() <= 2 && nonzero_rows == 0, - ocl_dft(_src0, _dst, flags)) + ocl_dft_amdfft(_src0, _dst, flags)) +#endif + +#ifdef HAVE_OPENCL + CV_OCL_RUN(_dst.isUMat() && _src0.dims() <= 2, + ocl_dft(_src0, _dst, flags, nonzero_rows)) #endif static DFTFunc dft_tbl[6] = @@ -2046,10 +2410,8 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) (DFTFunc)RealDFT_64f, (DFTFunc)CCSIDFT_64f }; - AutoBuffer buf; void *spec = 0; - Mat src0 = _src0.getMat(), src = src0; int prev_len = 0, stage = 0; bool inv = (flags & DFT_INVERSE) != 0; @@ -2080,32 +2442,32 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) { if ((flags & DFT_ROWS) == 0) { - if (!real_transform) + if (src.channels() == 2 && !(inv && (flags & DFT_REAL_OUTPUT))) { - if (ippi_DFT_C_32F(src,dst, inv, ipp_norm_flag)) + if (ippi_DFT_C_32F(src, dst, inv, ipp_norm_flag)) return; setIppErrorStatus(); } - else if (inv || !(flags & DFT_COMPLEX_OUTPUT)) + if (src.channels() == 1 && (inv || !(flags & DFT_COMPLEX_OUTPUT))) { - if (ippi_DFT_R_32F(src,dst, inv, ipp_norm_flag)) + if (ippi_DFT_R_32F(src, dst, inv, ipp_norm_flag)) return; setIppErrorStatus(); } } else { - if (!real_transform) + if (src.channels() == 2 && !(inv && (flags & DFT_REAL_OUTPUT))) { ippiDFT_C_Func ippiFunc = inv ? (ippiDFT_C_Func)ippiDFTInv_CToC_32fc_C1R : (ippiDFT_C_Func)ippiDFTFwd_CToC_32fc_C1R; - if (Dft_C_IPPLoop(src,dst, IPPDFT_C_Functor(ippiFunc),ipp_norm_flag)) + if (Dft_C_IPPLoop(src, dst, IPPDFT_C_Functor(ippiFunc),ipp_norm_flag)) return; setIppErrorStatus(); } - else if (inv || !(flags & DFT_COMPLEX_OUTPUT)) + if (src.channels() == 1 && (inv || !(flags & DFT_COMPLEX_OUTPUT))) { ippiDFT_R_Func ippiFunc = inv ? (ippiDFT_R_Func)ippiDFTInv_PackToR_32f_C1R : (ippiDFT_R_Func)ippiDFTFwd_RToPack_32f_C1R; - if (Dft_R_IPPLoop(src,dst, IPPDFT_R_Functor(ippiFunc),ipp_norm_flag)) + if (Dft_R_IPPLoop(src, dst, IPPDFT_R_Functor(ippiFunc),ipp_norm_flag)) return; setIppErrorStatus(); } @@ -2273,8 +2635,8 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) for( i = 0; i < nonzero_rows; i++ ) { - uchar* sptr = src.data + i*src.step; - uchar* dptr0 = dst.data + i*dst.step; + const uchar* sptr = src.ptr(i); + uchar* dptr0 = dst.ptr(i); uchar* dptr = dptr0; if( tmp_buf ) @@ -2287,7 +2649,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) for( ; i < count; i++ ) { - uchar* dptr0 = dst.data + i*dst.step; + uchar* dptr0 = dst.ptr(i); memset( dptr0, 0, dst_full_len ); } @@ -2299,7 +2661,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) { int a = 0, b = count; uchar *buf0, *buf1, *dbuf0, *dbuf1; - uchar* sptr0 = src.data; + const uchar* sptr0 = src.data; uchar* dptr0 = dst.data; buf0 = ptr; ptr += len*complex_elem_size; @@ -2438,7 +2800,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) int n = dst.cols; if( elem_size == (int)sizeof(float) ) { - float* p0 = (float*)dst.data; + float* p0 = dst.ptr(); size_t dstep = dst.step/sizeof(p0[0]); for( i = 0; i < len; i++ ) { @@ -2454,7 +2816,7 @@ void cv::dft( InputArray _src0, OutputArray _dst, int flags, int nonzero_rows ) } else { - double* p0 = (double*)dst.data; + double* p0 = dst.ptr(); size_t dstep = dst.step/sizeof(p0[0]); for( i = 0; i < len; i++ ) { diff --git a/modules/core/src/lapack.cpp b/modules/core/src/lapack.cpp index f6bc7c88c9..45881c3d55 100644 --- a/modules/core/src/lapack.cpp +++ b/modules/core/src/lapack.cpp @@ -955,10 +955,10 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) SVD::compute(src, w, u, vt); SVD::backSubst(w, u, vt, Mat(), _dst); return type == CV_32F ? - (((float*)w.data)[0] >= FLT_EPSILON ? - ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) : - (((double*)w.data)[0] >= DBL_EPSILON ? - ((double*)w.data)[n-1]/((double*)w.data)[0] : 0); + (w.ptr()[0] >= FLT_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0) : + (w.ptr()[0] >= DBL_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0); } CV_Assert( m == n ); @@ -975,10 +975,10 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) transpose(vt, u); SVD::backSubst(w, u, vt, Mat(), _dst); return type == CV_32F ? - (((float*)w.data)[0] >= FLT_EPSILON ? - ((float*)w.data)[n-1]/((float*)w.data)[0] : 0) : - (((double*)w.data)[0] >= DBL_EPSILON ? - ((double*)w.data)[n-1]/((double*)w.data)[0] : 0); + (w.ptr()[0] >= FLT_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0) : + (w.ptr()[0] >= DBL_EPSILON ? + w.ptr()[n-1]/w.ptr()[0] : 0); } CV_Assert( method == DECOMP_LU || method == DECOMP_CHOLESKY ); @@ -988,7 +988,7 @@ double cv::invert( InputArray _src, OutputArray _dst, int method ) if( n <= 3 ) { - uchar* srcdata = src.data; + const uchar* srcdata = src.data; uchar* dstdata = dst.data; size_t srcstep = src.step; size_t dststep = dst.step; @@ -1212,8 +1212,8 @@ bool cv::solve( InputArray _src, InputArray _src2arg, OutputArray _dst, int meth #define bf(y) ((float*)(bdata + y*src2step))[0] #define bd(y) ((double*)(bdata + y*src2step))[0] - uchar* srcdata = src.data; - uchar* bdata = _src2.data; + const uchar* srcdata = src.data; + const uchar* bdata = _src2.data; uchar* dstdata = dst.data; size_t srcstep = src.step; size_t src2step = _src2.step; @@ -1557,13 +1557,17 @@ static void _SVDcompute( InputArray _aarr, OutputArray _w, { if( !at ) { - transpose(temp_u, _u); - temp_v.copyTo(_vt); + if( _u.needed() ) + transpose(temp_u, _u); + if( _vt.needed() ) + temp_v.copyTo(_vt); } else { - transpose(temp_v, _u); - temp_u.copyTo(_vt); + if( _u.needed() ) + transpose(temp_v, _u); + if( _vt.needed() ) + temp_u.copyTo(_vt); } } } @@ -1705,7 +1709,7 @@ cvEigenVV( CvArr* srcarr, CvArr* evectsarr, CvArr* evalsarr, double, eigen(src, evals, evects); if( evects0.data != evects.data ) { - uchar* p = evects0.data; + const uchar* p = evects0.data; evects.convertTo(evects0, evects0.type()); CV_Assert( p == evects0.data ); } @@ -1714,7 +1718,7 @@ cvEigenVV( CvArr* srcarr, CvArr* evectsarr, CvArr* evalsarr, double, eigen(src, evals); if( evals0.data != evals.data ) { - uchar* p = evals0.data; + const uchar* p = evals0.data; if( evals0.size() == evals.size() ) evals.convertTo(evals0, evals0.type()); else if( evals0.type() == evals.type() ) diff --git a/modules/core/src/lda.cpp b/modules/core/src/lda.cpp new file mode 100644 index 0000000000..5e20b5e6a1 --- /dev/null +++ b/modules/core/src/lda.cpp @@ -0,0 +1,1119 @@ +/* + * Copyright (c) 2011. Philipp Wagner . + * Released to public domain under terms of the BSD Simplified license. + * + * 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 the organization nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * See + */ + +#include "precomp.hpp" +#include +#include +#include + +namespace cv +{ + +// Removes duplicate elements in a given vector. +template +inline std::vector<_Tp> remove_dups(const std::vector<_Tp>& src) { + typedef typename std::set<_Tp>::const_iterator constSetIterator; + typedef typename std::vector<_Tp>::const_iterator constVecIterator; + std::set<_Tp> set_elems; + for (constVecIterator it = src.begin(); it != src.end(); ++it) + set_elems.insert(*it); + std::vector<_Tp> elems; + for (constSetIterator it = set_elems.begin(); it != set_elems.end(); ++it) + elems.push_back(*it); + return elems; +} + +static Mat argsort(InputArray _src, bool ascending=true) +{ + Mat src = _src.getMat(); + if (src.rows != 1 && src.cols != 1) { + String error_message = "Wrong shape of input matrix! Expected a matrix with one row or column."; + CV_Error(Error::StsBadArg, error_message); + } + int flags = SORT_EVERY_ROW | (ascending ? SORT_ASCENDING : SORT_DESCENDING); + Mat sorted_indices; + sortIdx(src.reshape(1,1),sorted_indices,flags); + return sorted_indices; +} + +static Mat asRowMatrix(InputArrayOfArrays src, int rtype, double alpha=1, double beta=0) { + // make sure the input data is a vector of matrices or vector of vector + if(src.kind() != _InputArray::STD_VECTOR_MAT && src.kind() != _InputArray::STD_VECTOR_VECTOR) { + String error_message = "The data is expected as InputArray::STD_VECTOR_MAT (a std::vector) or _InputArray::STD_VECTOR_VECTOR (a std::vector< std::vector<...> >)."; + CV_Error(Error::StsBadArg, error_message); + } + // number of samples + size_t n = src.total(); + // return empty matrix if no matrices given + if(n == 0) + return Mat(); + // dimensionality of (reshaped) samples + size_t d = src.getMat(0).total(); + // create data matrix + Mat data((int)n, (int)d, rtype); + // now copy data + for(int i = 0; i < (int)n; i++) { + // make sure data can be reshaped, throw exception if not! + if(src.getMat(i).total() != d) { + String error_message = format("Wrong number of elements in matrix #%d! Expected %d was %d.", i, (int)d, (int)src.getMat(i).total()); + CV_Error(Error::StsBadArg, error_message); + } + // get a hold of the current row + Mat xi = data.row(i); + // make reshape happy by cloning for non-continuous matrices + if(src.getMat(i).isContinuous()) { + src.getMat(i).reshape(1, 1).convertTo(xi, rtype, alpha, beta); + } else { + src.getMat(i).clone().reshape(1, 1).convertTo(xi, rtype, alpha, beta); + } + } + return data; +} + +static void sortMatrixColumnsByIndices(InputArray _src, InputArray _indices, OutputArray _dst) { + if(_indices.getMat().type() != CV_32SC1) { + CV_Error(Error::StsUnsupportedFormat, "cv::sortColumnsByIndices only works on integer indices!"); + } + Mat src = _src.getMat(); + std::vector indices = _indices.getMat(); + _dst.create(src.rows, src.cols, src.type()); + Mat dst = _dst.getMat(); + for(size_t idx = 0; idx < indices.size(); idx++) { + Mat originalCol = src.col(indices[idx]); + Mat sortedCol = dst.col((int)idx); + originalCol.copyTo(sortedCol); + } +} + +static Mat sortMatrixColumnsByIndices(InputArray src, InputArray indices) { + Mat dst; + sortMatrixColumnsByIndices(src, indices, dst); + return dst; +} + + +template static bool +isSymmetric_(InputArray src) { + Mat _src = src.getMat(); + if(_src.cols != _src.rows) + return false; + for (int i = 0; i < _src.rows; i++) { + for (int j = 0; j < _src.cols; j++) { + _Tp a = _src.at<_Tp> (i, j); + _Tp b = _src.at<_Tp> (j, i); + if (a != b) { + return false; + } + } + } + return true; +} + +template static bool +isSymmetric_(InputArray src, double eps) { + Mat _src = src.getMat(); + if(_src.cols != _src.rows) + return false; + for (int i = 0; i < _src.rows; i++) { + for (int j = 0; j < _src.cols; j++) { + _Tp a = _src.at<_Tp> (i, j); + _Tp b = _src.at<_Tp> (j, i); + if (std::abs(a - b) > eps) { + return false; + } + } + } + return true; +} + +static bool isSymmetric(InputArray src, double eps=1e-16) +{ + Mat m = src.getMat(); + switch (m.type()) { + case CV_8SC1: return isSymmetric_(m); break; + case CV_8UC1: + return isSymmetric_(m); break; + case CV_16SC1: + return isSymmetric_(m); break; + case CV_16UC1: + return isSymmetric_(m); break; + case CV_32SC1: + return isSymmetric_(m); break; + case CV_32FC1: + return isSymmetric_(m, eps); break; + case CV_64FC1: + return isSymmetric_(m, eps); break; + default: + break; + } + return false; +} + + +//------------------------------------------------------------------------------ +// cv::subspaceProject +//------------------------------------------------------------------------------ +Mat LDA::subspaceProject(InputArray _W, InputArray _mean, InputArray _src) { + // get data matrices + Mat W = _W.getMat(); + Mat mean = _mean.getMat(); + Mat src = _src.getMat(); + // get number of samples and dimension + int n = src.rows; + int d = src.cols; + // make sure the data has the correct shape + if(W.rows != d) { + String error_message = format("Wrong shapes for given matrices. Was size(src) = (%d,%d), size(W) = (%d,%d).", src.rows, src.cols, W.rows, W.cols); + CV_Error(Error::StsBadArg, error_message); + } + // make sure mean is correct if not empty + if(!mean.empty() && (mean.total() != (size_t) d)) { + String error_message = format("Wrong mean shape for the given data matrix. Expected %d, but was %d.", d, mean.total()); + CV_Error(Error::StsBadArg, error_message); + } + // create temporary matrices + Mat X, Y; + // make sure you operate on correct type + src.convertTo(X, W.type()); + // safe to do, because of above assertion + if(!mean.empty()) { + for(int i=0; i + _Tp *alloc_1d(int m) { + return new _Tp[m]; + } + + // Allocates memory. + template + _Tp *alloc_1d(int m, _Tp val) { + _Tp *arr = alloc_1d<_Tp> (m); + for (int i = 0; i < m; i++) + arr[i] = val; + return arr; + } + + // Allocates memory. + template + _Tp **alloc_2d(int m, int _n) { + _Tp **arr = new _Tp*[m]; + for (int i = 0; i < m; i++) + arr[i] = new _Tp[_n]; + return arr; + } + + // Allocates memory. + template + _Tp **alloc_2d(int m, int _n, _Tp val) { + _Tp **arr = alloc_2d<_Tp> (m, _n); + for (int i = 0; i < m; i++) { + for (int j = 0; j < _n; j++) { + arr[i][j] = val; + } + } + return arr; + } + + void cdiv(double xr, double xi, double yr, double yi) { + double r, dv; + if (std::abs(yr) > std::abs(yi)) { + r = yi / yr; + dv = yr + r * yi; + cdivr = (xr + r * xi) / dv; + cdivi = (xi - r * xr) / dv; + } else { + r = yr / yi; + dv = yi + r * yr; + cdivr = (r * xr + xi) / dv; + cdivi = (r * xi - xr) / dv; + } + } + + // Nonsymmetric reduction from Hessenberg to real Schur form. + + void hqr2() { + + // This is derived from the Algol procedure hqr2, + // by Martin and Wilkinson, Handbook for Auto. Comp., + // Vol.ii-Linear Algebra, and the corresponding + // Fortran subroutine in EISPACK. + + // Initialize + int nn = this->n; + int n1 = nn - 1; + int low = 0; + int high = nn - 1; + double eps = std::pow(2.0, -52.0); + double exshift = 0.0; + double p = 0, q = 0, r = 0, s = 0, z = 0, t, w, x, y; + + // Store roots isolated by balanc and compute matrix norm + + double norm = 0.0; + for (int i = 0; i < nn; i++) { + if (i < low || i > high) { + d[i] = H[i][i]; + e[i] = 0.0; + } + for (int j = std::max(i - 1, 0); j < nn; j++) { + norm = norm + std::abs(H[i][j]); + } + } + + // Outer loop over eigenvalue index + int iter = 0; + while (n1 >= low) { + + // Look for single small sub-diagonal element + int l = n1; + while (l > low) { + s = std::abs(H[l - 1][l - 1]) + std::abs(H[l][l]); + if (s == 0.0) { + s = norm; + } + if (std::abs(H[l][l - 1]) < eps * s) { + break; + } + l--; + } + + // Check for convergence + // One root found + + if (l == n1) { + H[n1][n1] = H[n1][n1] + exshift; + d[n1] = H[n1][n1]; + e[n1] = 0.0; + n1--; + iter = 0; + + // Two roots found + + } else if (l == n1 - 1) { + w = H[n1][n1 - 1] * H[n1 - 1][n1]; + p = (H[n1 - 1][n1 - 1] - H[n1][n1]) / 2.0; + q = p * p + w; + z = std::sqrt(std::abs(q)); + H[n1][n1] = H[n1][n1] + exshift; + H[n1 - 1][n1 - 1] = H[n1 - 1][n1 - 1] + exshift; + x = H[n1][n1]; + + // Real pair + + if (q >= 0) { + if (p >= 0) { + z = p + z; + } else { + z = p - z; + } + d[n1 - 1] = x + z; + d[n1] = d[n1 - 1]; + if (z != 0.0) { + d[n1] = x - w / z; + } + e[n1 - 1] = 0.0; + e[n1] = 0.0; + x = H[n1][n1 - 1]; + s = std::abs(x) + std::abs(z); + p = x / s; + q = z / s; + r = std::sqrt(p * p + q * q); + p = p / r; + q = q / r; + + // Row modification + + for (int j = n1 - 1; j < nn; j++) { + z = H[n1 - 1][j]; + H[n1 - 1][j] = q * z + p * H[n1][j]; + H[n1][j] = q * H[n1][j] - p * z; + } + + // Column modification + + for (int i = 0; i <= n1; i++) { + z = H[i][n1 - 1]; + H[i][n1 - 1] = q * z + p * H[i][n1]; + H[i][n1] = q * H[i][n1] - p * z; + } + + // Accumulate transformations + + for (int i = low; i <= high; i++) { + z = V[i][n1 - 1]; + V[i][n1 - 1] = q * z + p * V[i][n1]; + V[i][n1] = q * V[i][n1] - p * z; + } + + // Complex pair + + } else { + d[n1 - 1] = x + p; + d[n1] = x + p; + e[n1 - 1] = z; + e[n1] = -z; + } + n1 = n1 - 2; + iter = 0; + + // No convergence yet + + } else { + + // Form shift + + x = H[n1][n1]; + y = 0.0; + w = 0.0; + if (l < n1) { + y = H[n1 - 1][n1 - 1]; + w = H[n1][n1 - 1] * H[n1 - 1][n1]; + } + + // Wilkinson's original ad hoc shift + + if (iter == 10) { + exshift += x; + for (int i = low; i <= n1; i++) { + H[i][i] -= x; + } + s = std::abs(H[n1][n1 - 1]) + std::abs(H[n1 - 1][n1 - 2]); + x = y = 0.75 * s; + w = -0.4375 * s * s; + } + + // MATLAB's new ad hoc shift + + if (iter == 30) { + s = (y - x) / 2.0; + s = s * s + w; + if (s > 0) { + s = std::sqrt(s); + if (y < x) { + s = -s; + } + s = x - w / ((y - x) / 2.0 + s); + for (int i = low; i <= n1; i++) { + H[i][i] -= s; + } + exshift += s; + x = y = w = 0.964; + } + } + + iter = iter + 1; // (Could check iteration count here.) + + // Look for two consecutive small sub-diagonal elements + int m = n1 - 2; + while (m >= l) { + z = H[m][m]; + r = x - z; + s = y - z; + p = (r * s - w) / H[m + 1][m] + H[m][m + 1]; + q = H[m + 1][m + 1] - z - r - s; + r = H[m + 2][m + 1]; + s = std::abs(p) + std::abs(q) + std::abs(r); + p = p / s; + q = q / s; + r = r / s; + if (m == l) { + break; + } + if (std::abs(H[m][m - 1]) * (std::abs(q) + std::abs(r)) < eps * (std::abs(p) + * (std::abs(H[m - 1][m - 1]) + std::abs(z) + std::abs( + H[m + 1][m + 1])))) { + break; + } + m--; + } + + for (int i = m + 2; i <= n1; i++) { + H[i][i - 2] = 0.0; + if (i > m + 2) { + H[i][i - 3] = 0.0; + } + } + + // Double QR step involving rows l:n and columns m:n + + for (int k = m; k <= n1 - 1; k++) { + bool notlast = (k != n1 - 1); + if (k != m) { + p = H[k][k - 1]; + q = H[k + 1][k - 1]; + r = (notlast ? H[k + 2][k - 1] : 0.0); + x = std::abs(p) + std::abs(q) + std::abs(r); + if (x != 0.0) { + p = p / x; + q = q / x; + r = r / x; + } + } + if (x == 0.0) { + break; + } + s = std::sqrt(p * p + q * q + r * r); + if (p < 0) { + s = -s; + } + if (s != 0) { + if (k != m) { + H[k][k - 1] = -s * x; + } else if (l != m) { + H[k][k - 1] = -H[k][k - 1]; + } + p = p + s; + x = p / s; + y = q / s; + z = r / s; + q = q / p; + r = r / p; + + // Row modification + + for (int j = k; j < nn; j++) { + p = H[k][j] + q * H[k + 1][j]; + if (notlast) { + p = p + r * H[k + 2][j]; + H[k + 2][j] = H[k + 2][j] - p * z; + } + H[k][j] = H[k][j] - p * x; + H[k + 1][j] = H[k + 1][j] - p * y; + } + + // Column modification + + for (int i = 0; i <= std::min(n1, k + 3); i++) { + p = x * H[i][k] + y * H[i][k + 1]; + if (notlast) { + p = p + z * H[i][k + 2]; + H[i][k + 2] = H[i][k + 2] - p * r; + } + H[i][k] = H[i][k] - p; + H[i][k + 1] = H[i][k + 1] - p * q; + } + + // Accumulate transformations + + for (int i = low; i <= high; i++) { + p = x * V[i][k] + y * V[i][k + 1]; + if (notlast) { + p = p + z * V[i][k + 2]; + V[i][k + 2] = V[i][k + 2] - p * r; + } + V[i][k] = V[i][k] - p; + V[i][k + 1] = V[i][k + 1] - p * q; + } + } // (s != 0) + } // k loop + } // check convergence + } // while (n1 >= low) + + // Backsubstitute to find vectors of upper triangular form + + if (norm == 0.0) { + return; + } + + for (n1 = nn - 1; n1 >= 0; n1--) { + p = d[n1]; + q = e[n1]; + + // Real vector + + if (q == 0) { + int l = n1; + H[n1][n1] = 1.0; + for (int i = n1 - 1; i >= 0; i--) { + w = H[i][i] - p; + r = 0.0; + for (int j = l; j <= n1; j++) { + r = r + H[i][j] * H[j][n1]; + } + if (e[i] < 0.0) { + z = w; + s = r; + } else { + l = i; + if (e[i] == 0.0) { + if (w != 0.0) { + H[i][n1] = -r / w; + } else { + H[i][n1] = -r / (eps * norm); + } + + // Solve real equations + + } else { + x = H[i][i + 1]; + y = H[i + 1][i]; + q = (d[i] - p) * (d[i] - p) + e[i] * e[i]; + t = (x * s - z * r) / q; + H[i][n1] = t; + if (std::abs(x) > std::abs(z)) { + H[i + 1][n1] = (-r - w * t) / x; + } else { + H[i + 1][n1] = (-s - y * t) / z; + } + } + + // Overflow control + + t = std::abs(H[i][n1]); + if ((eps * t) * t > 1) { + for (int j = i; j <= n1; j++) { + H[j][n1] = H[j][n1] / t; + } + } + } + } + // Complex vector + } else if (q < 0) { + int l = n1 - 1; + + // Last vector component imaginary so matrix is triangular + + if (std::abs(H[n1][n1 - 1]) > std::abs(H[n1 - 1][n1])) { + H[n1 - 1][n1 - 1] = q / H[n1][n1 - 1]; + H[n1 - 1][n1] = -(H[n1][n1] - p) / H[n1][n1 - 1]; + } else { + cdiv(0.0, -H[n1 - 1][n1], H[n1 - 1][n1 - 1] - p, q); + H[n1 - 1][n1 - 1] = cdivr; + H[n1 - 1][n1] = cdivi; + } + H[n1][n1 - 1] = 0.0; + H[n1][n1] = 1.0; + for (int i = n1 - 2; i >= 0; i--) { + double ra, sa, vr, vi; + ra = 0.0; + sa = 0.0; + for (int j = l; j <= n1; j++) { + ra = ra + H[i][j] * H[j][n1 - 1]; + sa = sa + H[i][j] * H[j][n1]; + } + w = H[i][i] - p; + + if (e[i] < 0.0) { + z = w; + r = ra; + s = sa; + } else { + l = i; + if (e[i] == 0) { + cdiv(-ra, -sa, w, q); + H[i][n1 - 1] = cdivr; + H[i][n1] = cdivi; + } else { + + // Solve complex equations + + x = H[i][i + 1]; + y = H[i + 1][i]; + vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q; + vi = (d[i] - p) * 2.0 * q; + if (vr == 0.0 && vi == 0.0) { + vr = eps * norm * (std::abs(w) + std::abs(q) + std::abs(x) + + std::abs(y) + std::abs(z)); + } + cdiv(x * r - z * ra + q * sa, + x * s - z * sa - q * ra, vr, vi); + H[i][n1 - 1] = cdivr; + H[i][n1] = cdivi; + if (std::abs(x) > (std::abs(z) + std::abs(q))) { + H[i + 1][n1 - 1] = (-ra - w * H[i][n1 - 1] + q + * H[i][n1]) / x; + H[i + 1][n1] = (-sa - w * H[i][n1] - q * H[i][n1 + - 1]) / x; + } else { + cdiv(-r - y * H[i][n1 - 1], -s - y * H[i][n1], z, + q); + H[i + 1][n1 - 1] = cdivr; + H[i + 1][n1] = cdivi; + } + } + + // Overflow control + + t = std::max(std::abs(H[i][n1 - 1]), std::abs(H[i][n1])); + if ((eps * t) * t > 1) { + for (int j = i; j <= n1; j++) { + H[j][n1 - 1] = H[j][n1 - 1] / t; + H[j][n1] = H[j][n1] / t; + } + } + } + } + } + } + + // Vectors of isolated roots + + for (int i = 0; i < nn; i++) { + if (i < low || i > high) { + for (int j = i; j < nn; j++) { + V[i][j] = H[i][j]; + } + } + } + + // Back transformation to get eigenvectors of original matrix + + for (int j = nn - 1; j >= low; j--) { + for (int i = low; i <= high; i++) { + z = 0.0; + for (int k = low; k <= std::min(j, high); k++) { + z = z + V[i][k] * H[k][j]; + } + V[i][j] = z; + } + } + } + + // Nonsymmetric reduction to Hessenberg form. + void orthes() { + // This is derived from the Algol procedures orthes and ortran, + // by Martin and Wilkinson, Handbook for Auto. Comp., + // Vol.ii-Linear Algebra, and the corresponding + // Fortran subroutines in EISPACK. + int low = 0; + int high = n - 1; + + for (int m = low + 1; m <= high - 1; m++) { + + // Scale column. + + double scale = 0.0; + for (int i = m; i <= high; i++) { + scale = scale + std::abs(H[i][m - 1]); + } + if (scale != 0.0) { + + // Compute Householder transformation. + + double h = 0.0; + for (int i = high; i >= m; i--) { + ort[i] = H[i][m - 1] / scale; + h += ort[i] * ort[i]; + } + double g = std::sqrt(h); + if (ort[m] > 0) { + g = -g; + } + h = h - ort[m] * g; + ort[m] = ort[m] - g; + + // Apply Householder similarity transformation + // H = (I-u*u'/h)*H*(I-u*u')/h) + + for (int j = m; j < n; j++) { + double f = 0.0; + for (int i = high; i >= m; i--) { + f += ort[i] * H[i][j]; + } + f = f / h; + for (int i = m; i <= high; i++) { + H[i][j] -= f * ort[i]; + } + } + + for (int i = 0; i <= high; i++) { + double f = 0.0; + for (int j = high; j >= m; j--) { + f += ort[j] * H[i][j]; + } + f = f / h; + for (int j = m; j <= high; j++) { + H[i][j] -= f * ort[j]; + } + } + ort[m] = scale * ort[m]; + H[m][m - 1] = scale * g; + } + } + + // Accumulate transformations (Algol's ortran). + + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + V[i][j] = (i == j ? 1.0 : 0.0); + } + } + + for (int m = high - 1; m >= low + 1; m--) { + if (H[m][m - 1] != 0.0) { + for (int i = m + 1; i <= high; i++) { + ort[i] = H[i][m - 1]; + } + for (int j = m; j <= high; j++) { + double g = 0.0; + for (int i = m; i <= high; i++) { + g += ort[i] * V[i][j]; + } + // Double division avoids possible underflow + g = (g / ort[m]) / H[m][m - 1]; + for (int i = m; i <= high; i++) { + V[i][j] += g * ort[i]; + } + } + } + } + } + + // Releases all internal working memory. + void release() { + // releases the working data + delete[] d; + delete[] e; + delete[] ort; + for (int i = 0; i < n; i++) { + delete[] H[i]; + delete[] V[i]; + } + delete[] H; + delete[] V; + } + + // Computes the Eigenvalue Decomposition for a matrix given in H. + void compute() { + // Allocate memory for the working data. + V = alloc_2d (n, n, 0.0); + d = alloc_1d (n); + e = alloc_1d (n); + ort = alloc_1d (n); + // Reduce to Hessenberg form. + orthes(); + // Reduce Hessenberg to real Schur form. + hqr2(); + // Copy eigenvalues to OpenCV Matrix. + _eigenvalues.create(1, n, CV_64FC1); + for (int i = 0; i < n; i++) { + _eigenvalues.at (0, i) = d[i]; + } + // Copy eigenvectors to OpenCV Matrix. + _eigenvectors.create(n, n, CV_64FC1); + for (int i = 0; i < n; i++) + for (int j = 0; j < n; j++) + _eigenvectors.at (i, j) = V[i][j]; + // Deallocate the memory by releasing all internal working data. + release(); + } + +public: + EigenvalueDecomposition() + : n(0) { } + + // Initializes & computes the Eigenvalue Decomposition for a general matrix + // given in src. This function is a port of the EigenvalueSolver in JAMA, + // which has been released to public domain by The MathWorks and the + // National Institute of Standards and Technology (NIST). + EigenvalueDecomposition(InputArray src) { + compute(src); + } + + // This function computes the Eigenvalue Decomposition for a general matrix + // given in src. This function is a port of the EigenvalueSolver in JAMA, + // which has been released to public domain by The MathWorks and the + // National Institute of Standards and Technology (NIST). + void compute(InputArray src) + { + if(isSymmetric(src)) { + // Fall back to OpenCV for a symmetric matrix! + cv::eigen(src, _eigenvalues, _eigenvectors); + } else { + Mat tmp; + // Convert the given input matrix to double. Is there any way to + // prevent allocating the temporary memory? Only used for copying + // into working memory and deallocated after. + src.getMat().convertTo(tmp, CV_64FC1); + // Get dimension of the matrix. + this->n = tmp.cols; + // Allocate the matrix data to work on. + this->H = alloc_2d (n, n); + // Now safely copy the data. + for (int i = 0; i < tmp.rows; i++) { + for (int j = 0; j < tmp.cols; j++) { + this->H[i][j] = tmp.at(i, j); + } + } + // Deallocates the temporary matrix before computing. + tmp.release(); + // Performs the eigenvalue decomposition of H. + compute(); + } + } + + ~EigenvalueDecomposition() {} + + // Returns the eigenvalues of the Eigenvalue Decomposition. + Mat eigenvalues() { return _eigenvalues; } + // Returns the eigenvectors of the Eigenvalue Decomposition. + Mat eigenvectors() { return _eigenvectors; } +}; + + +//------------------------------------------------------------------------------ +// Linear Discriminant Analysis implementation +//------------------------------------------------------------------------------ + +LDA::LDA(int num_components) : _num_components(num_components) { } + +LDA::LDA(InputArrayOfArrays src, InputArray labels, int num_components) : _num_components(num_components) +{ + this->compute(src, labels); //! compute eigenvectors and eigenvalues +} + +LDA::~LDA() {} + +void LDA::save(const String& filename) const +{ + FileStorage fs(filename, FileStorage::WRITE); + if (!fs.isOpened()) { + CV_Error(Error::StsError, "File can't be opened for writing!"); + } + this->save(fs); + fs.release(); +} + +// Deserializes this object from a given filename. +void LDA::load(const String& filename) { + FileStorage fs(filename, FileStorage::READ); + if (!fs.isOpened()) + CV_Error(Error::StsError, "File can't be opened for writing!"); + this->load(fs); + fs.release(); +} + +// Serializes this object to a given FileStorage. +void LDA::save(FileStorage& fs) const { + // write matrices + fs << "num_components" << _num_components; + fs << "eigenvalues" << _eigenvalues; + fs << "eigenvectors" << _eigenvectors; +} + +// Deserializes this object from a given FileStorage. +void LDA::load(const FileStorage& fs) { + //read matrices + fs["num_components"] >> _num_components; + fs["eigenvalues"] >> _eigenvalues; + fs["eigenvectors"] >> _eigenvectors; +} + +void LDA::lda(InputArrayOfArrays _src, InputArray _lbls) { + // get data + Mat src = _src.getMat(); + std::vector labels; + // safely copy the labels + { + Mat tmp = _lbls.getMat(); + for(unsigned int i = 0; i < tmp.total(); i++) { + labels.push_back(tmp.at(i)); + } + } + // turn into row sampled matrix + Mat data; + // ensure working matrix is double precision + src.convertTo(data, CV_64FC1); + // maps the labels, so they're ascending: [0,1,...,C] + std::vector mapped_labels(labels.size()); + std::vector num2label = remove_dups(labels); + std::map label2num; + for (int i = 0; i < (int)num2label.size(); i++) + label2num[num2label[i]] = i; + for (size_t i = 0; i < labels.size(); i++) + mapped_labels[i] = label2num[labels[i]]; + // get sample size, dimension + int N = data.rows; + int D = data.cols; + // number of unique labels + int C = (int)num2label.size(); + // we can't do a LDA on one class, what do you + // want to separate from each other then? + if(C == 1) { + String error_message = "At least two classes are needed to perform a LDA. Reason: Only one class was given!"; + CV_Error(Error::StsBadArg, error_message); + } + // throw error if less labels, than samples + if (labels.size() != static_cast(N)) { + String error_message = format("The number of samples must equal the number of labels. Given %d labels, %d samples. ", labels.size(), N); + CV_Error(Error::StsBadArg, error_message); + } + // warn if within-classes scatter matrix becomes singular + if (N < D) { + std::cout << "Warning: Less observations than feature dimension given!" + << "Computation will probably fail." + << std::endl; + } + // clip number of components to be a valid number + if ((_num_components <= 0) || (_num_components > (C - 1))) { + _num_components = (C - 1); + } + // holds the mean over all classes + Mat meanTotal = Mat::zeros(1, D, data.type()); + // holds the mean for each class + std::vector meanClass(C); + std::vector numClass(C); + // initialize + for (int i = 0; i < C; i++) { + numClass[i] = 0; + meanClass[i] = Mat::zeros(1, D, data.type()); //! Dx1 image vector + } + // calculate sums + for (int i = 0; i < N; i++) { + Mat instance = data.row(i); + int classIdx = mapped_labels[i]; + add(meanTotal, instance, meanTotal); + add(meanClass[classIdx], instance, meanClass[classIdx]); + numClass[classIdx]++; + } + // calculate total mean + meanTotal.convertTo(meanTotal, meanTotal.type(), 1.0 / static_cast (N)); + // calculate class means + for (int i = 0; i < C; i++) { + meanClass[i].convertTo(meanClass[i], meanClass[i].type(), 1.0 / static_cast (numClass[i])); + } + // subtract class means + for (int i = 0; i < N; i++) { + int classIdx = mapped_labels[i]; + Mat instance = data.row(i); + subtract(instance, meanClass[classIdx], instance); + } + // calculate within-classes scatter + Mat Sw = Mat::zeros(D, D, data.type()); + mulTransposed(data, Sw, true); + // calculate between-classes scatter + Mat Sb = Mat::zeros(D, D, data.type()); + for (int i = 0; i < C; i++) { + Mat tmp; + subtract(meanClass[i], meanTotal, tmp); + mulTransposed(tmp, tmp, true); + add(Sb, tmp, Sb); + } + // invert Sw + Mat Swi = Sw.inv(); + // M = inv(Sw)*Sb + Mat M; + gemm(Swi, Sb, 1.0, Mat(), 0.0, M); + EigenvalueDecomposition es(M); + _eigenvalues = es.eigenvalues(); + _eigenvectors = es.eigenvectors(); + // reshape eigenvalues, so they are stored by column + _eigenvalues = _eigenvalues.reshape(1, 1); + // get sorted indices descending by their eigenvalue + std::vector sorted_indices = argsort(_eigenvalues, false); + // now sort eigenvalues and eigenvectors accordingly + _eigenvalues = sortMatrixColumnsByIndices(_eigenvalues, sorted_indices); + _eigenvectors = sortMatrixColumnsByIndices(_eigenvectors, sorted_indices); + // and now take only the num_components and we're out! + _eigenvalues = Mat(_eigenvalues, Range::all(), Range(0, _num_components)); + _eigenvectors = Mat(_eigenvectors, Range::all(), Range(0, _num_components)); +} + +void LDA::compute(InputArrayOfArrays _src, InputArray _lbls) { + switch(_src.kind()) { + case _InputArray::STD_VECTOR_MAT: + lda(asRowMatrix(_src, CV_64FC1), _lbls); + break; + case _InputArray::MAT: + lda(_src.getMat(), _lbls); + break; + default: + String error_message= format("InputArray Datatype %d is not supported.", _src.kind()); + CV_Error(Error::StsBadArg, error_message); + break; + } +} + +// Projects samples into the LDA subspace. +Mat LDA::project(InputArray src) { + return subspaceProject(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t()); +} + +// Reconstructs projections from the LDA subspace. +Mat LDA::reconstruct(InputArray src) { + return subspaceReconstruct(_eigenvectors, Mat(), _dataAsRow ? src : src.getMat().t()); +} + +} diff --git a/modules/core/src/mathfuncs.cpp b/modules/core/src/mathfuncs.cpp index 7a02bd6d72..6c6ed6b1c8 100644 --- a/modules/core/src/mathfuncs.cpp +++ b/modules/core/src/mathfuncs.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { @@ -348,7 +348,18 @@ static void InvSqrt_32f(const float* src, float* dst, int len) static void InvSqrt_64f(const double* src, double* dst, int len) { - for( int i = 0; i < len; i++ ) + int i = 0; + +#if CV_SSE2 + if (USE_SSE2) + { + __m128d v_1 = _mm_set1_pd(1.0); + for ( ; i <= len - 2; i += 2) + _mm_storeu_pd(dst + i, _mm_div_pd(v_1, _mm_sqrt_pd(_mm_loadu_pd(src + i)))); + } +#endif + + for( ; i < len; i++ ) dst[i] = 1/std::sqrt(src[i]); } @@ -2543,12 +2554,33 @@ void patchNaNs( InputOutputArray _a, double _val ) NAryMatIterator it(arrays, (uchar**)ptrs); size_t len = it.size*a.channels(); Cv32suf val; - val.f = (float)_val; + float fval = (float)_val; + val.f = fval; + +#if CV_SSE2 + __m128i v_mask1 = _mm_set1_epi32(0x7fffffff), v_mask2 = _mm_set1_epi32(0x7f800000); + __m128i v_val = _mm_set1_epi32(val.i); +#endif for( size_t i = 0; i < it.nplanes; i++, ++it ) { int* tptr = ptrs[0]; - for( size_t j = 0; j < len; j++ ) + size_t j = 0; + +#if CV_SSE2 + if (USE_SSE2) + { + for ( ; j < len; j += 4) + { + __m128i v_src = _mm_loadu_si128((__m128i const *)(tptr + j)); + __m128i v_cmp_mask = _mm_cmplt_epi32(v_mask2, _mm_and_si128(v_src, v_mask1)); + __m128i v_res = _mm_or_si128(_mm_andnot_si128(v_cmp_mask, v_src), _mm_and_si128(v_cmp_mask, v_val)); + _mm_storeu_si128((__m128i *)(tptr + j), v_res); + } + } +#endif + + for( ; j < len; j++ ) if( (tptr[j] & 0x7fffffff) > 0x7f800000 ) tptr[j] = val.i; } diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index 2ef44179d8..5f5e43896c 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" #include "opencv2/core/opencl/runtime/opencl_clamdblas.hpp" namespace cv @@ -781,8 +781,9 @@ void cv::gemm( InputArray matA, InputArray matB, double alpha, InputArray matC, double beta, OutputArray _matD, int flags ) { #ifdef HAVE_CLAMDBLAS - CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat(), - ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags)) + CV_OCL_RUN(ocl::haveAmdBlas() && matA.dims() <= 2 && matB.dims() <= 2 && matC.dims() <= 2 && _matD.isUMat() && + matA.cols() > 20 && matA.rows() > 20 && matB.cols() > 20, // since it works incorrect for small sizes + ocl_gemm(matA, matB, alpha, matC, beta, _matD, flags)) #endif const int block_lin_size = 128; @@ -3295,7 +3296,6 @@ void cv::PCABackProject(InputArray data, InputArray mean, pca.backProject(data, result); } - /****************************************************************************************\ * Earlier API * \****************************************************************************************/ diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index f199cb2534..392b6ad2ea 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" #include "bufferpool.impl.hpp" @@ -346,7 +346,7 @@ static void finalizeHdr(Mat& m) if( d > 2 ) m.rows = m.cols = -1; if(m.u) - m.data = m.datastart = m.u->data; + m.datastart = m.data = m.u->data; if( m.data ) { m.datalimit = m.datastart + m.size[0]*m.step[0]; @@ -510,7 +510,7 @@ Mat::Mat(int _dims, const int* _sizes, int _type, void* _data, const size_t* _st datalimit(0), allocator(0), u(0), size(&rows) { flags |= CV_MAT_TYPE(_type); - data = datastart = (uchar*)_data; + datastart = data = (uchar*)_data; setSize(*this, _dims, _sizes, _steps, true); finalizeHdr(*this); } @@ -549,7 +549,7 @@ static Mat cvMatNDToMat(const CvMatND* m, bool copyData) if( !m ) return thiz; - thiz.data = thiz.datastart = m->data.ptr; + thiz.datastart = thiz.data = m->data.ptr; thiz.flags |= CV_MAT_TYPE(m->type); int _sizes[CV_MAX_DIM]; size_t _steps[CV_MAX_DIM]; @@ -587,7 +587,7 @@ static Mat cvMatToMat(const CvMat* m, bool copyData) thiz.dims = 2; thiz.rows = m->rows; thiz.cols = m->cols; - thiz.data = thiz.datastart = m->data.ptr; + thiz.datastart = thiz.data = m->data.ptr; size_t esz = CV_ELEM_SIZE(m->type), minstep = thiz.cols*esz, _step = m->step; if( _step == 0 ) _step = minstep; @@ -597,7 +597,7 @@ static Mat cvMatToMat(const CvMat* m, bool copyData) } else { - thiz.data = thiz.datastart = thiz.dataend = 0; + thiz.datastart = thiz.dataend = thiz.data = 0; Mat(m->rows, m->cols, m->type, m->data.ptr, m->step).copyTo(thiz); } @@ -636,7 +636,7 @@ static Mat iplImageToMat(const IplImage* img, bool copyData) m.rows = img->roi->height; m.cols = img->roi->width; esz = CV_ELEM_SIZE(m.flags); - m.data = m.datastart = (uchar*)img->imageData + + m.datastart = m.data = (uchar*)img->imageData + (selectedPlane ? (img->roi->coi - 1)*m.step*img->height : 0) + img->roi->yOffset*m.step[0] + img->roi->xOffset*esz; } @@ -2758,21 +2758,33 @@ namespace cv { static bool ocl_setIdentity( InputOutputArray _m, const Scalar& s ) { - int type = _m.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), - sctype = CV_MAKE_TYPE(depth, cn == 3 ? 4 : cn), - rowsPerWI = ocl::Device::getDefault().isIntel() ? 4 : 1; + int type = _m.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), kercn = cn, rowsPerWI = 1; + int sctype = CV_MAKE_TYPE(depth, cn == 3 ? 4 : cn); + if (ocl::Device::getDefault().isIntel()) + { + rowsPerWI = 4; + if (cn == 1) + { + kercn = std::min(ocl::predictOptimalVectorWidth(_m), 4); + if (kercn != 4) + kercn = 1; + } + } ocl::Kernel k("setIdentity", ocl::core::set_identity_oclsrc, - format("-D T=%s -D T1=%s -D cn=%d -D ST=%s", ocl::memopTypeToStr(type), - ocl::memopTypeToStr(depth), cn, ocl::memopTypeToStr(sctype))); + format("-D T=%s -D T1=%s -D cn=%d -D ST=%s -D kercn=%d -D rowsPerWI=%d", + ocl::memopTypeToStr(CV_MAKE_TYPE(depth, kercn)), + ocl::memopTypeToStr(depth), cn, + ocl::memopTypeToStr(sctype), + kercn, rowsPerWI)); if (k.empty()) return false; UMat m = _m.getUMat(); - k.args(ocl::KernelArg::WriteOnly(m), ocl::KernelArg::Constant(Mat(1, 1, sctype, s)), - rowsPerWI); + k.args(ocl::KernelArg::WriteOnly(m, cn, kercn), + ocl::KernelArg::Constant(Mat(1, 1, sctype, s))); - size_t globalsize[2] = { m.cols, (m.rows + rowsPerWI - 1) / rowsPerWI }; + size_t globalsize[2] = { m.cols * cn / kercn, (m.rows + rowsPerWI - 1) / rowsPerWI }; return k.run(2, globalsize, NULL, false); } @@ -2990,6 +3002,13 @@ static bool ocl_transpose( InputArray _src, OutputArray _dst ) CV_Assert(dst.cols == dst.rows); kernelName += "_inplace"; } + else + { + // check required local memory size + size_t required_local_memory = (size_t) TILE_DIM*(TILE_DIM+1)*CV_ELEM_SIZE(type); + if (required_local_memory > ocl::Device::getDefault().localMemSize()) + return false; + } ocl::Kernel k(kernelName.c_str(), ocl::core::transpose_oclsrc, format("-D T=%s -D T1=%s -D cn=%d -D TILE_DIM=%d -D BLOCK_ROWS=%d -D rowsPerWI=%d", @@ -3327,7 +3346,7 @@ static inline void reduceSumC_8u16u16s32f_64f(const cv::Mat& srcmat, cv::Mat& ds stype == CV_32FC3 ? (ippiSumHint)ippiSum_32f_C3R : stype == CV_32FC4 ? (ippiSumHint)ippiSum_32f_C4R : 0; func = - sdepth == CV_8U ? (cv::ReduceFunc)cv::reduceC_ > : + sdepth == CV_8U ? (cv::ReduceFunc)cv::reduceC_ > : sdepth == CV_16U ? (cv::ReduceFunc)cv::reduceC_ > : sdepth == CV_16S ? (cv::ReduceFunc)cv::reduceC_ > : sdepth == CV_32F ? (cv::ReduceFunc)cv::reduceC_ > : 0; @@ -3441,12 +3460,18 @@ static bool ocl_reduce(InputArray _src, OutputArray _dst, const int min_opt_cols = 128, buf_cols = 32; int sdepth = CV_MAT_DEPTH(stype), cn = CV_MAT_CN(stype), ddepth = CV_MAT_DEPTH(dtype), ddepth0 = ddepth; - bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0, - useOptimized = 1 == dim && _src.cols() > min_opt_cols; + const ocl::Device &defDev = ocl::Device::getDefault(); + bool doubleSupport = defDev.doubleFPConfig() > 0; + + size_t wgs = defDev.maxWorkGroupSize(); + bool useOptimized = 1 == dim && _src.cols() > min_opt_cols && (wgs >= buf_cols); if (!doubleSupport && (sdepth == CV_64F || ddepth == CV_64F)) return false; + if ((op == CV_REDUCE_SUM && sdepth == CV_32F) || op == CV_REDUCE_MIN || op == CV_REDUCE_MAX) + return false; + if (op == CV_REDUCE_AVG) { if (sdepth < CV_32S && ddepth < CV_32S) @@ -3455,78 +3480,80 @@ static bool ocl_reduce(InputArray _src, OutputArray _dst, const char * const ops[4] = { "OCL_CV_REDUCE_SUM", "OCL_CV_REDUCE_AVG", "OCL_CV_REDUCE_MAX", "OCL_CV_REDUCE_MIN" }; - char cvt[2][40]; - int wdepth = std::max(ddepth, CV_32F); - cv::String build_opt = format("-D %s -D dim=%d -D cn=%d -D ddepth=%d" - " -D srcT=%s -D dstT=%s -D dstT0=%s -D convertToWT=%s" - " -D convertToDT=%s -D convertToDT0=%s%s", - ops[op], dim, cn, ddepth, ocl::typeToStr(useOptimized ? ddepth : sdepth), - ocl::typeToStr(ddepth), ocl::typeToStr(ddepth0), - ocl::convertTypeStr(ddepth, wdepth, 1, cvt[0]), - ocl::convertTypeStr(sdepth, ddepth, 1, cvt[0]), - ocl::convertTypeStr(wdepth, ddepth0, 1, cvt[1]), - doubleSupport ? " -D DOUBLE_SUPPORT" : ""); - if (useOptimized) { - cv::String build_opt_pre = format("-D OP_REDUCE_PRE -D BUF_COLS=%d -D %s -D dim=1" - " -D cn=%d -D ddepth=%d -D srcT=%s -D dstT=%s -D convertToDT=%s%s", - buf_cols, ops[op], cn, ddepth, ocl::typeToStr(sdepth), ocl::typeToStr(ddepth), - ocl::convertTypeStr(sdepth, ddepth, 1, cvt[0]), - doubleSupport ? " -D DOUBLE_SUPPORT" : ""); - ocl::Kernel kpre("reduce_horz_pre", ocl::core::reduce2_oclsrc, build_opt_pre); - if (kpre.empty()) + size_t tileHeight = (size_t)(wgs / buf_cols); + if (defDev.isIntel()) + { + static const size_t maxItemInGroupCount = 16; + tileHeight = min(tileHeight, defDev.localMemSize() / buf_cols / CV_ELEM_SIZE(CV_MAKETYPE(wdepth, cn)) / maxItemInGroupCount); + } + char cvt[3][40]; + cv::String build_opt = format("-D OP_REDUCE_PRE -D BUF_COLS=%d -D TILE_HEIGHT=%d -D %s -D dim=1" + " -D cn=%d -D ddepth=%d" + " -D srcT=%s -D bufT=%s -D dstT=%s" + " -D convertToWT=%s -D convertToBufT=%s -D convertToDT=%s%s", + buf_cols, tileHeight, ops[op], cn, ddepth, + ocl::typeToStr(sdepth), + ocl::typeToStr(ddepth), + ocl::typeToStr(ddepth0), + ocl::convertTypeStr(ddepth, wdepth, 1, cvt[0]), + ocl::convertTypeStr(sdepth, ddepth, 1, cvt[1]), + ocl::convertTypeStr(wdepth, ddepth0, 1, cvt[2]), + doubleSupport ? " -D DOUBLE_SUPPORT" : ""); + ocl::Kernel k("reduce_horz_opt", ocl::core::reduce2_oclsrc, build_opt); + if (k.empty()) return false; - - ocl::Kernel kmain("reduce", ocl::core::reduce2_oclsrc, build_opt); - if (kmain.empty()) - return false; - UMat src = _src.getUMat(); Size dsize(1, src.rows); _dst.create(dsize, dtype); UMat dst = _dst.getUMat(); - UMat buf(src.rows, buf_cols, dst.type()); - - kpre.args(ocl::KernelArg::ReadOnly(src), - ocl::KernelArg::WriteOnlyNoSize(buf)); + if (op0 == CV_REDUCE_AVG) + k.args(ocl::KernelArg::ReadOnly(src), + ocl::KernelArg::WriteOnlyNoSize(dst), 1.0f / src.cols); + else + k.args(ocl::KernelArg::ReadOnly(src), + ocl::KernelArg::WriteOnlyNoSize(dst)); + size_t localSize[2] = { buf_cols, tileHeight}; size_t globalSize[2] = { buf_cols, src.rows }; - if (!kpre.run(2, globalSize, NULL, false)) + return k.run(2, globalSize, localSize, false); + } + else + { + char cvt[2][40]; + cv::String build_opt = format("-D %s -D dim=%d -D cn=%d -D ddepth=%d" + " -D srcT=%s -D dstT=%s -D dstT0=%s -D convertToWT=%s" + " -D convertToDT=%s -D convertToDT0=%s%s", + ops[op], dim, cn, ddepth, ocl::typeToStr(useOptimized ? ddepth : sdepth), + ocl::typeToStr(ddepth), ocl::typeToStr(ddepth0), + ocl::convertTypeStr(ddepth, wdepth, 1, cvt[0]), + ocl::convertTypeStr(sdepth, ddepth, 1, cvt[0]), + ocl::convertTypeStr(wdepth, ddepth0, 1, cvt[1]), + doubleSupport ? " -D DOUBLE_SUPPORT" : ""); + + ocl::Kernel k("reduce", ocl::core::reduce2_oclsrc, build_opt); + if (k.empty()) return false; + UMat src = _src.getUMat(); + Size dsize(dim == 0 ? src.cols : 1, dim == 0 ? 1 : src.rows); + _dst.create(dsize, dtype); + UMat dst = _dst.getUMat(); + + ocl::KernelArg srcarg = ocl::KernelArg::ReadOnly(src), + temparg = ocl::KernelArg::WriteOnlyNoSize(dst); + if (op0 == CV_REDUCE_AVG) - kmain.args(ocl::KernelArg::ReadOnly(buf), - ocl::KernelArg::WriteOnlyNoSize(dst), 1.0f / src.cols); + k.args(srcarg, temparg, 1.0f / (dim == 0 ? src.rows : src.cols)); else - kmain.args(ocl::KernelArg::ReadOnly(buf), - ocl::KernelArg::WriteOnlyNoSize(dst)); + k.args(srcarg, temparg); - globalSize[0] = src.rows; - return kmain.run(1, globalSize, NULL, false); + size_t globalsize = std::max(dsize.width, dsize.height); + return k.run(1, &globalsize, NULL, false); } - - ocl::Kernel k("reduce", ocl::core::reduce2_oclsrc, build_opt); - if (k.empty()) - return false; - - UMat src = _src.getUMat(); - Size dsize(dim == 0 ? src.cols : 1, dim == 0 ? 1 : src.rows); - _dst.create(dsize, dtype); - UMat dst = _dst.getUMat(); - - ocl::KernelArg srcarg = ocl::KernelArg::ReadOnly(src), - temparg = ocl::KernelArg::WriteOnlyNoSize(dst); - - if (op0 == CV_REDUCE_AVG) - k.args(srcarg, temparg, 1.0f / (dim == 0 ? src.rows : src.cols)); - else - k.args(srcarg, temparg); - - size_t globalsize = std::max(dsize.width, dsize.height); - return k.run(1, &globalsize, NULL, false); } } @@ -5512,14 +5539,14 @@ double norm( const SparseMat& src, int normType ) { if( normType == NORM_INF ) for( i = 0; i < N; i++, ++it ) - result = std::max(result, std::abs((double)*(const float*)it.ptr)); + result = std::max(result, std::abs((double)it.value())); else if( normType == NORM_L1 ) for( i = 0; i < N; i++, ++it ) - result += std::abs(*(const float*)it.ptr); + result += std::abs(it.value()); else for( i = 0; i < N; i++, ++it ) { - double v = *(const float*)it.ptr; + double v = it.value(); result += v*v; } } @@ -5527,14 +5554,14 @@ double norm( const SparseMat& src, int normType ) { if( normType == NORM_INF ) for( i = 0; i < N; i++, ++it ) - result = std::max(result, std::abs(*(const double*)it.ptr)); + result = std::max(result, std::abs(it.value())); else if( normType == NORM_L1 ) for( i = 0; i < N; i++, ++it ) - result += std::abs(*(const double*)it.ptr); + result += std::abs(it.value()); else for( i = 0; i < N; i++, ++it ) { - double v = *(const double*)it.ptr; + double v = it.value(); result += v*v; } } @@ -5558,7 +5585,7 @@ void minMaxLoc( const SparseMat& src, double* _minval, double* _maxval, int* _mi float minval = FLT_MAX, maxval = -FLT_MAX; for( i = 0; i < N; i++, ++it ) { - float v = *(const float*)it.ptr; + float v = it.value(); if( v < minval ) { minval = v; @@ -5580,7 +5607,7 @@ void minMaxLoc( const SparseMat& src, double* _minval, double* _maxval, int* _mi double minval = DBL_MAX, maxval = -DBL_MAX; for( i = 0; i < N; i++, ++it ) { - double v = *(const double*)it.ptr; + double v = it.value(); if( v < minval ) { minval = v; diff --git a/modules/core/src/ocl.cpp b/modules/core/src/ocl.cpp index 24ca6ee4d3..837d16ee83 100644 --- a/modules/core/src/ocl.cpp +++ b/modules/core/src/ocl.cpp @@ -57,6 +57,28 @@ # endif #endif + +// TODO Move to some common place +static bool getBoolParameter(const char* name, bool defaultValue) +{ + const char* envValue = getenv(name); + if (envValue == NULL) + { + return defaultValue; + } + cv::String value = envValue; + if (value == "1" || value == "True" || value == "true" || value == "TRUE") + { + return true; + } + if (value == "0" || value == "False" || value == "false" || value == "FALSE") + { + return false; + } + CV_ErrorNoReturn(cv::Error::StsBadArg, cv::format("Invalid value for %s parameter: %s", name, value.c_str())); +} + + // TODO Move to some common place static size_t getConfigurationParameterForSize(const char* name, size_t defaultValue) { @@ -1305,7 +1327,18 @@ OCL_FUNC(cl_int, clReleaseEvent, (cl_event event), (event)) #ifdef _DEBUG #define CV_OclDbgAssert CV_DbgAssert #else -#define CV_OclDbgAssert(expr) (void)(expr) +static bool isRaiseError() +{ + static bool initialized = false; + static bool value = false; + if (!initialized) + { + value = getBoolParameter("OPENCV_OPENCL_RAISE_ERROR", false); + initialized = true; + } + return value; +} +#define CV_OclDbgAssert(expr) do { if (isRaiseError()) { CV_Assert(expr); } else { (void)(expr); } } while ((void)0, 0) #endif namespace cv { namespace ocl { @@ -1416,7 +1449,16 @@ bool useOpenCL() { CoreTLSData* data = coreTlsData.get(); if( data->useOpenCL < 0 ) - data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() != NULL; + { + try + { + data->useOpenCL = (int)haveOpenCL() && Device::getDefault().ptr() != NULL; + } + catch (...) + { + data->useOpenCL = 0; + } + } return data->useOpenCL > 0; } @@ -2228,7 +2270,8 @@ static cl_device_id selectOpenCLDevice() if (!isID) { deviceTypes.push_back("GPU"); - deviceTypes.push_back("CPU"); + if (configuration) + deviceTypes.push_back("CPU"); } else deviceTypes.push_back("ALL"); @@ -3484,9 +3527,8 @@ public: OpenCLBufferPoolImpl() : currentReservedSize(0), maxReservedSize(0) { - // Note: Buffer pool is disabled by default, - // because we didn't receive significant performance improvement - maxReservedSize = getConfigurationParameterForSize("OPENCV_OPENCL_BUFFERPOOL_LIMIT", 0); + int poolSize = ocl::Device::getDefault().isIntel() ? 1 << 27 : 0; + maxReservedSize = getConfigurationParameterForSize("OPENCV_OPENCL_BUFFERPOOL_LIMIT", poolSize); } virtual ~OpenCLBufferPoolImpl() { @@ -3729,6 +3771,7 @@ public: u->handle = clCreateBuffer(ctx_handle, CL_MEM_COPY_HOST_PTR|CL_MEM_READ_WRITE|createFlags, u->size, u->origdata, &retval); tempUMatFlags = UMatData::TEMP_COPIED_UMAT; + } if(!u->handle || retval != CL_SUCCESS) return false; @@ -3870,6 +3913,7 @@ public: if(u->data && retval == CL_SUCCESS) { u->markHostCopyObsolete(false); + u->markDeviceMemMapped(true); return; } @@ -3898,6 +3942,7 @@ public: if(!u) return; + CV_Assert(u->handle != 0); UMatDataAutoLock autolock(u); @@ -3908,8 +3953,10 @@ public: cl_command_queue q = (cl_command_queue)Queue::getDefault().ptr(); cl_int retval = 0; - if( !u->copyOnMap() && u->data ) + if( !u->copyOnMap() && u->deviceMemMapped() ) { + CV_Assert(u->data != NULL); + u->markDeviceMemMapped(false); CV_Assert( (retval = clEnqueueUnmapMemObject(q, (cl_mem)u->handle, u->data, 0, 0, 0)) == CL_SUCCESS ); CV_OclDbgAssert(clFinish(q) == CL_SUCCESS); @@ -4427,11 +4474,13 @@ int predictOptimalVectorWidth(InputArray src1, InputArray src2, InputArray src3, d.preferredVectorWidthShort(), d.preferredVectorWidthShort(), d.preferredVectorWidthInt(), d.preferredVectorWidthFloat(), d.preferredVectorWidthDouble(), -1 }, kercn = vectorWidths[depth]; - if (d.isIntel()) + + // if the device says don't use vectors + if (vectorWidths[0] == 1) { // it's heuristic - int vectorWidthsIntel[] = { 16, 16, 8, 8, 1, 1, 1, -1 }; - kercn = vectorWidthsIntel[depth]; + int vectorWidthsOthers[] = { 16, 16, 8, 8, 1, 1, 1, -1 }; + kercn = vectorWidthsOthers[depth]; } if (ssize.width * cn < kercn || kercn <= 0) @@ -4695,4 +4744,16 @@ void* Image2D::ptr() const return p ? p->handle : 0; } +bool isPerformanceCheckBypassed() +{ + static bool initialized = false; + static bool value = false; + if (!initialized) + { + value = getBoolParameter("OPENCV_OPENCL_PERF_CHECK_BYPASS", false); + initialized = true; + } + return value; +} + }} diff --git a/modules/core/src/opencl/fft.cl b/modules/core/src/opencl/fft.cl new file mode 100644 index 0000000000..b56f5c1dc2 --- /dev/null +++ b/modules/core/src/opencl/fft.cl @@ -0,0 +1,864 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +// Copyright (C) 2014, Itseez, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. + +#define SQRT_2 0.707106781188f +#define sin_120 0.866025403784f +#define fft5_2 0.559016994374f +#define fft5_3 -0.951056516295f +#define fft5_4 -1.538841768587f +#define fft5_5 0.363271264002f + +__attribute__((always_inline)) +float2 mul_float2(float2 a, float2 b) { + return (float2)(fma(a.x, b.x, -a.y * b.y), fma(a.x, b.y, a.y * b.x)); +} + +__attribute__((always_inline)) +float2 twiddle(float2 a) { + return (float2)(a.y, -a.x); +} + +__attribute__((always_inline)) +void butterfly2(float2 a0, float2 a1, __local float2* smem, __global const float2* twiddles, + const int x, const int block_size) +{ + const int k = x & (block_size - 1); + a1 = mul_float2(twiddles[k], a1); + const int dst_ind = (x << 1) - k; + + smem[dst_ind] = a0 + a1; + smem[dst_ind+block_size] = a0 - a1; +} + +__attribute__((always_inline)) +void butterfly4(float2 a0, float2 a1, float2 a2, float2 a3, __local float2* smem, __global const float2* twiddles, + const int x, const int block_size) +{ + const int k = x & (block_size - 1); + a1 = mul_float2(twiddles[k], a1); + a2 = mul_float2(twiddles[k + block_size], a2); + a3 = mul_float2(twiddles[k + 2*block_size], a3); + + const int dst_ind = ((x - k) << 2) + k; + + float2 b0 = a0 + a2; + a2 = a0 - a2; + float2 b1 = a1 + a3; + a3 = twiddle(a1 - a3); + + smem[dst_ind] = b0 + b1; + smem[dst_ind + block_size] = a2 + a3; + smem[dst_ind + 2*block_size] = b0 - b1; + smem[dst_ind + 3*block_size] = a2 - a3; +} + +__attribute__((always_inline)) +void butterfly3(float2 a0, float2 a1, float2 a2, __local float2* smem, __global const float2* twiddles, + const int x, const int block_size) +{ + const int k = x % block_size; + a1 = mul_float2(twiddles[k], a1); + a2 = mul_float2(twiddles[k+block_size], a2); + const int dst_ind = ((x - k) * 3) + k; + + float2 b1 = a1 + a2; + a2 = twiddle(sin_120*(a1 - a2)); + float2 b0 = a0 - (float2)(0.5f)*b1; + + smem[dst_ind] = a0 + b1; + smem[dst_ind + block_size] = b0 + a2; + smem[dst_ind + 2*block_size] = b0 - a2; +} + +__attribute__((always_inline)) +void butterfly5(float2 a0, float2 a1, float2 a2, float2 a3, float2 a4, __local float2* smem, __global const float2* twiddles, + const int x, const int block_size) +{ + const int k = x % block_size; + a1 = mul_float2(twiddles[k], a1); + a2 = mul_float2(twiddles[k + block_size], a2); + a3 = mul_float2(twiddles[k+2*block_size], a3); + a4 = mul_float2(twiddles[k+3*block_size], a4); + + const int dst_ind = ((x - k) * 5) + k; + __local float2* dst = smem + dst_ind; + + float2 b0, b1, b5; + + b1 = a1 + a4; + a1 -= a4; + + a4 = a3 + a2; + a3 -= a2; + + a2 = b1 + a4; + b0 = a0 - (float2)0.25f * a2; + + b1 = fft5_2 * (b1 - a4); + a4 = fft5_3 * (float2)(-a1.y - a3.y, a1.x + a3.x); + b5 = (float2)(a4.x - fft5_5 * a1.y, a4.y + fft5_5 * a1.x); + + a4.x += fft5_4 * a3.y; + a4.y -= fft5_4 * a3.x; + + a1 = b0 + b1; + b0 -= b1; + + dst[0] = a0 + a2; + dst[block_size] = a1 + a4; + dst[2 * block_size] = b0 + b5; + dst[3 * block_size] = b0 - b5; + dst[4 * block_size] = a1 - a4; +} + +__attribute__((always_inline)) +void fft_radix2(__local float2* smem, __global const float2* twiddles, const int x, const int block_size, const int t) +{ + float2 a0, a1; + + if (x < t) + { + a0 = smem[x]; + a1 = smem[x+t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x < t) + butterfly2(a0, a1, smem, twiddles, x, block_size); + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix2_B2(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/2; + float2 a0, a1, a2, a3; + + if (x1 < t/2) + { + a0 = smem[x1]; a1 = smem[x1+t]; + a2 = smem[x2]; a3 = smem[x2+t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/2) + { + butterfly2(a0, a1, smem, twiddles, x1, block_size); + butterfly2(a2, a3, smem, twiddles, x2, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix2_B3(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/3; + const int x3 = x1 + 2*t/3; + float2 a0, a1, a2, a3, a4, a5; + + if (x1 < t/3) + { + a0 = smem[x1]; a1 = smem[x1+t]; + a2 = smem[x2]; a3 = smem[x2+t]; + a4 = smem[x3]; a5 = smem[x3+t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/3) + { + butterfly2(a0, a1, smem, twiddles, x1, block_size); + butterfly2(a2, a3, smem, twiddles, x2, block_size); + butterfly2(a4, a5, smem, twiddles, x3, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix2_B4(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int thread_block = t/4; + const int x2 = x1 + thread_block; + const int x3 = x1 + 2*thread_block; + const int x4 = x1 + 3*thread_block; + float2 a0, a1, a2, a3, a4, a5, a6, a7; + + if (x1 < t/4) + { + a0 = smem[x1]; a1 = smem[x1+t]; + a2 = smem[x2]; a3 = smem[x2+t]; + a4 = smem[x3]; a5 = smem[x3+t]; + a6 = smem[x4]; a7 = smem[x4+t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/4) + { + butterfly2(a0, a1, smem, twiddles, x1, block_size); + butterfly2(a2, a3, smem, twiddles, x2, block_size); + butterfly2(a4, a5, smem, twiddles, x3, block_size); + butterfly2(a6, a7, smem, twiddles, x4, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix2_B5(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int thread_block = t/5; + const int x2 = x1 + thread_block; + const int x3 = x1 + 2*thread_block; + const int x4 = x1 + 3*thread_block; + const int x5 = x1 + 4*thread_block; + float2 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; + + if (x1 < t/5) + { + a0 = smem[x1]; a1 = smem[x1+t]; + a2 = smem[x2]; a3 = smem[x2+t]; + a4 = smem[x3]; a5 = smem[x3+t]; + a6 = smem[x4]; a7 = smem[x4+t]; + a8 = smem[x5]; a9 = smem[x5+t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/5) + { + butterfly2(a0, a1, smem, twiddles, x1, block_size); + butterfly2(a2, a3, smem, twiddles, x2, block_size); + butterfly2(a4, a5, smem, twiddles, x3, block_size); + butterfly2(a6, a7, smem, twiddles, x4, block_size); + butterfly2(a8, a9, smem, twiddles, x5, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix4(__local float2* smem, __global const float2* twiddles, const int x, const int block_size, const int t) +{ + float2 a0, a1, a2, a3; + + if (x < t) + { + a0 = smem[x]; a1 = smem[x+t]; a2 = smem[x+2*t]; a3 = smem[x+3*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x < t) + butterfly4(a0, a1, a2, a3, smem, twiddles, x, block_size); + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix4_B2(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/2; + float2 a0, a1, a2, a3, a4, a5, a6, a7; + + if (x1 < t/2) + { + a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; a3 = smem[x1+3*t]; + a4 = smem[x2]; a5 = smem[x2+t]; a6 = smem[x2+2*t]; a7 = smem[x2+3*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/2) + { + butterfly4(a0, a1, a2, a3, smem, twiddles, x1, block_size); + butterfly4(a4, a5, a6, a7, smem, twiddles, x2, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix4_B3(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/3; + const int x3 = x2 + t/3; + float2 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11; + + if (x1 < t/3) + { + a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; a3 = smem[x1+3*t]; + a4 = smem[x2]; a5 = smem[x2+t]; a6 = smem[x2+2*t]; a7 = smem[x2+3*t]; + a8 = smem[x3]; a9 = smem[x3+t]; a10 = smem[x3+2*t]; a11 = smem[x3+3*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/3) + { + butterfly4(a0, a1, a2, a3, smem, twiddles, x1, block_size); + butterfly4(a4, a5, a6, a7, smem, twiddles, x2, block_size); + butterfly4(a8, a9, a10, a11, smem, twiddles, x3, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix8(__local float2* smem, __global const float2* twiddles, const int x, const int block_size, const int t) +{ + const int k = x % block_size; + float2 a0, a1, a2, a3, a4, a5, a6, a7; + + if (x < t) + { + int tw_ind = block_size / 8; + + a0 = smem[x]; + a1 = mul_float2(twiddles[k], smem[x + t]); + a2 = mul_float2(twiddles[k + block_size],smem[x+2*t]); + a3 = mul_float2(twiddles[k+2*block_size],smem[x+3*t]); + a4 = mul_float2(twiddles[k+3*block_size],smem[x+4*t]); + a5 = mul_float2(twiddles[k+4*block_size],smem[x+5*t]); + a6 = mul_float2(twiddles[k+5*block_size],smem[x+6*t]); + a7 = mul_float2(twiddles[k+6*block_size],smem[x+7*t]); + + float2 b0, b1, b6, b7; + + b0 = a0 + a4; + a4 = a0 - a4; + b1 = a1 + a5; + a5 = a1 - a5; + a5 = (float2)(SQRT_2) * (float2)(a5.x + a5.y, -a5.x + a5.y); + b6 = twiddle(a2 - a6); + a2 = a2 + a6; + b7 = a3 - a7; + b7 = (float2)(SQRT_2) * (float2)(-b7.x + b7.y, -b7.x - b7.y); + a3 = a3 + a7; + + a0 = b0 + a2; + a2 = b0 - a2; + a1 = b1 + a3; + a3 = twiddle(b1 - a3); + a6 = a4 - b6; + a4 = a4 + b6; + a7 = twiddle(a5 - b7); + a5 = a5 + b7; + + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x < t) + { + const int dst_ind = ((x - k) << 3) + k; + __local float2* dst = smem + dst_ind; + + dst[0] = a0 + a1; + dst[block_size] = a4 + a5; + dst[2 * block_size] = a2 + a3; + dst[3 * block_size] = a6 + a7; + dst[4 * block_size] = a0 - a1; + dst[5 * block_size] = a4 - a5; + dst[6 * block_size] = a2 - a3; + dst[7 * block_size] = a6 - a7; + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix3(__local float2* smem, __global const float2* twiddles, const int x, const int block_size, const int t) +{ + float2 a0, a1, a2; + + if (x < t) + { + a0 = smem[x]; a1 = smem[x+t]; a2 = smem[x+2*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x < t) + butterfly3(a0, a1, a2, smem, twiddles, x, block_size); + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix3_B2(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/2; + float2 a0, a1, a2, a3, a4, a5; + + if (x1 < t/2) + { + a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; + a3 = smem[x2]; a4 = smem[x2+t]; a5 = smem[x2+2*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/2) + { + butterfly3(a0, a1, a2, smem, twiddles, x1, block_size); + butterfly3(a3, a4, a5, smem, twiddles, x2, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix3_B3(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1 + t/3; + const int x3 = x2 + t/3; + float2 a0, a1, a2, a3, a4, a5, a6, a7, a8; + + if (x1 < t/3) + { + a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; + a3 = smem[x2]; a4 = smem[x2+t]; a5 = smem[x2+2*t]; + a6 = smem[x3]; a7 = smem[x3+t]; a8 = smem[x3+2*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/3) + { + butterfly3(a0, a1, a2, smem, twiddles, x1, block_size); + butterfly3(a3, a4, a5, smem, twiddles, x2, block_size); + butterfly3(a6, a7, a8, smem, twiddles, x3, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix3_B4(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int thread_block = t/4; + const int x2 = x1 + thread_block; + const int x3 = x1 + 2*thread_block; + const int x4 = x1 + 3*thread_block; + float2 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11; + + if (x1 < t/4) + { + a0 = smem[x1]; a1 = smem[x1+t]; a2 = smem[x1+2*t]; + a3 = smem[x2]; a4 = smem[x2+t]; a5 = smem[x2+2*t]; + a6 = smem[x3]; a7 = smem[x3+t]; a8 = smem[x3+2*t]; + a9 = smem[x4]; a10 = smem[x4+t]; a11 = smem[x4+2*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/4) + { + butterfly3(a0, a1, a2, smem, twiddles, x1, block_size); + butterfly3(a3, a4, a5, smem, twiddles, x2, block_size); + butterfly3(a6, a7, a8, smem, twiddles, x3, block_size); + butterfly3(a9, a10, a11, smem, twiddles, x4, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix5(__local float2* smem, __global const float2* twiddles, const int x, const int block_size, const int t) +{ + const int k = x % block_size; + float2 a0, a1, a2, a3, a4; + + if (x < t) + { + a0 = smem[x]; a1 = smem[x + t]; a2 = smem[x+2*t]; a3 = smem[x+3*t]; a4 = smem[x+4*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x < t) + butterfly5(a0, a1, a2, a3, a4, smem, twiddles, x, block_size); + + barrier(CLK_LOCAL_MEM_FENCE); +} + +__attribute__((always_inline)) +void fft_radix5_B2(__local float2* smem, __global const float2* twiddles, const int x1, const int block_size, const int t) +{ + const int x2 = x1+t/2; + float2 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; + + if (x1 < t/2) + { + a0 = smem[x1]; a1 = smem[x1 + t]; a2 = smem[x1+2*t]; a3 = smem[x1+3*t]; a4 = smem[x1+4*t]; + a5 = smem[x2]; a6 = smem[x2 + t]; a7 = smem[x2+2*t]; a8 = smem[x2+3*t]; a9 = smem[x2+4*t]; + } + + barrier(CLK_LOCAL_MEM_FENCE); + + if (x1 < t/2) + { + butterfly5(a0, a1, a2, a3, a4, smem, twiddles, x1, block_size); + butterfly5(a5, a6, a7, a8, a9, smem, twiddles, x2, block_size); + } + + barrier(CLK_LOCAL_MEM_FENCE); +} + +#ifdef DFT_SCALE +#define SCALE_VAL(x, scale) x*scale +#else +#define SCALE_VAL(x, scale) x +#endif + +__kernel void fft_multi_radix_rows(__global const uchar* src_ptr, int src_step, int src_offset, int src_rows, int src_cols, + __global uchar* dst_ptr, int dst_step, int dst_offset, int dst_rows, int dst_cols, + __global float2* twiddles_ptr, const int t, const int nz) +{ + const int x = get_global_id(0); + const int y = get_group_id(1); + const int block_size = LOCAL_SIZE/kercn; + if (y < nz) + { + __local float2 smem[LOCAL_SIZE]; + __global const float2* twiddles = (__global float2*) twiddles_ptr; + const int ind = x; +#ifdef IS_1D + float scale = 1.f/dst_cols; +#else + float scale = 1.f/(dst_cols*dst_rows); +#endif + +#ifdef COMPLEX_INPUT + __global const float2* src = (__global const float2*)(src_ptr + mad24(y, src_step, mad24(x, (int)(sizeof(float)*2), src_offset))); + #pragma unroll + for (int i=0; i> 8) & 0xff];\ - dst[2] = lut_l[(idx >> 16) & 0xff];\ + #define LUT_OP \ + int idx = *(__global const int *)(srcptr + src_index); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx & 0xff]; \ + dst[1] = lut_l[(idx >> 8) & 0xff]; \ + dst[2] = lut_l[(idx >> 16) & 0xff]; \ dst[3] = lut_l[(idx >> 24) & 0xff]; #elif dcn == 3 - #define LUT_OP(num)\ - uchar3 idx = vload3(0, srcptr + mad24(num, src_step, src_index));\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - dst[0] = lut_l[idx.x];\ - dst[1] = lut_l[idx.y];\ + #define LUT_OP \ + uchar3 idx = vload3(0, srcptr + src_index); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx.x]; \ + dst[1] = lut_l[idx.y]; \ dst[2] = lut_l[idx.z]; #elif dcn == 2 - #define LUT_OP(num)\ - short idx = *(__global const short *)(srcptr + mad24(num, src_step, src_index));\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - dst[0] = lut_l[idx & 0xff];\ + #define LUT_OP \ + short idx = *(__global const short *)(srcptr + src_index); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx & 0xff]; \ dst[1] = lut_l[(idx >> 8) & 0xff]; #elif dcn == 1 - #define LUT_OP(num)\ - uchar idx = (srcptr + mad24(num, src_step, src_index))[0];\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ + #define LUT_OP \ + uchar idx = (srcptr + src_index)[0]; \ + dst = (__global dstT *)(dstptr + dst_index); \ dst[0] = lut_l[idx]; #else - #define LUT_OP(num)\ - __global const srcT * src = (__global const srcT *)(srcptr + mad24(num, src_step, src_index));\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - for (int cn = 0; cn < dcn; ++cn)\ + #define LUT_OP \ + __global const srcT * src = (__global const srcT *)(srcptr + src_index); \ + dst = (__global dstT *)(dstptr + dst_index); \ + for (int cn = 0; cn < dcn; ++cn) \ dst[cn] = lut_l[src[cn]]; #endif #else #if dcn == 4 - #define LUT_OP(num)\ - __global const uchar4 *src_pixel = (__global const uchar4 *)(srcptr + mad24(num, src_step, src_index));\ - int4 idx = convert_int4(src_pixel[0]) * lcn + (int4)(0, 1, 2, 3);\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - dst[0] = lut_l[idx.x];\ - dst[1] = lut_l[idx.y];\ - dst[2] = lut_l[idx.z];\ + #define LUT_OP \ + __global const uchar4 * src_pixel = (__global const uchar4 *)(srcptr + src_index); \ + int4 idx = mad24(convert_int4(src_pixel[0]), (int4)(lcn), (int4)(0, 1, 2, 3)); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx.x]; \ + dst[1] = lut_l[idx.y]; \ + dst[2] = lut_l[idx.z]; \ dst[3] = lut_l[idx.w]; #elif dcn == 3 - #define LUT_OP(num)\ - uchar3 src_pixel = vload3(0, srcptr + mad24(num, src_step, src_index));\ - int3 idx = convert_int3(src_pixel) * lcn + (int3)(0, 1, 2);\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - dst[0] = lut_l[idx.x];\ - dst[1] = lut_l[idx.y];\ + #define LUT_OP \ + uchar3 src_pixel = vload3(0, srcptr + src_index); \ + int3 idx = mad24(convert_int3(src_pixel), (int3)(lcn), (int3)(0, 1, 2)); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx.x]; \ + dst[1] = lut_l[idx.y]; \ dst[2] = lut_l[idx.z]; #elif dcn == 2 - #define LUT_OP(num)\ - __global const uchar2 *src_pixel = (__global const uchar2 *)(srcptr + mad24(num, src_step, src_index));\ - int2 idx = convert_int2(src_pixel[0]) * lcn + (int2)(0, 1);\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - dst[0] = lut_l[idx.x];\ + #define LUT_OP \ + __global const uchar2 * src_pixel = (__global const uchar2 *)(srcptr + src_index); \ + int2 idx = mad24(convert_int2(src_pixel[0]), lcn, (int2)(0, 1)); \ + dst = (__global dstT *)(dstptr + dst_index); \ + dst[0] = lut_l[idx.x]; \ dst[1] = lut_l[idx.y]; #elif dcn == 1 //error case (1 < lcn) ==> lcn == scn == dcn - #define LUT_OP(num)\ - uchar idx = (srcptr + mad24(num, src_step, src_index))[0];\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ + #define LUT_OP \ + uchar idx = (srcptr + src_index)[0]; \ + dst = (__global dstT *)(dstptr + dst_index); \ dst[0] = lut_l[idx]; #else - #define LUT_OP(num)\ - __global const srcT *src = (__global const srcT *)(srcptr + mad24(num, src_step, src_index));\ - dst = (__global dstT *)(dstptr + mad24(num, dst_step, dst_index));\ - for (int cn = 0; cn < dcn; ++cn)\ + #define LUT_OP \ + __global const srcT * src = (__global const srcT *)(srcptr + src_index); \ + dst = (__global dstT *)(dstptr + dst_index); \ + for (int cn = 0; cn < dcn; ++cn) \ dst[cn] = lut_l[mad24(src[cn], lcn, cn)]; #endif #endif -#define LOCAL_LUT_INIT\ - {\ - __global const dstT * lut = (__global const dstT *)(lutptr + lut_offset);\ - int init = mad24((int)get_local_id(1), (int)get_local_size(0), (int)get_local_id(0));\ - int step = get_local_size(0) * get_local_size(1);\ - for (int i = init; i < 256 * lcn; i += step)\ - {\ - lut_l[i] = lut[i];\ - }\ - barrier(CLK_LOCAL_MEM_FENCE);\ - } - __kernel void LUT(__global const uchar * srcptr, int src_step, int src_offset, __global const uchar * lutptr, int lut_step, int lut_offset, __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols) { - __local dstT lut_l[256 * lcn]; - LOCAL_LUT_INIT; - int x = get_global_id(0); - int y = 4 * get_global_id(1); + int y = get_global_id(1) << 2; + + __local dstT lut_l[256 * lcn]; + __global const dstT * lut = (__global const dstT *)(lutptr + lut_offset); + + for (int i = mad24((int)get_local_id(1), (int)get_local_size(0), (int)get_local_id(0)), + step = get_local_size(0) * get_local_size(1); i < 256 * lcn; i += step) + lut_l[i] = lut[i]; + barrier(CLK_LOCAL_MEM_FENCE); if (x < cols && y < rows) { int src_index = mad24(y, src_step, mad24(x, (int)sizeof(srcT) * dcn, src_offset)); int dst_index = mad24(y, dst_step, mad24(x, (int)sizeof(dstT) * dcn, dst_offset)); + __global dstT * dst; - LUT_OP(0); + + LUT_OP; + if (y < rows - 1) { - LUT_OP(1); + src_index += src_step; + dst_index += dst_step; + LUT_OP; + if (y < rows - 2) { - LUT_OP(2); + src_index += src_step; + dst_index += dst_step; + LUT_OP; + if (y < rows - 3) { - LUT_OP(3); + src_index += src_step; + dst_index += dst_step; + LUT_OP; } } } diff --git a/modules/core/src/opencl/meanstddev.cl b/modules/core/src/opencl/meanstddev.cl index 39e917e96d..ed68c64538 100644 --- a/modules/core/src/opencl/meanstddev.cl +++ b/modules/core/src/opencl/meanstddev.cl @@ -59,7 +59,7 @@ __kernel void meanStdDev(__global const uchar * srcptr, int src_step, int src_of for (int grain = groups * WGS; id < total; id += grain) { #ifdef HAVE_MASK -#ifdef HAVE_SRC_CONT +#ifdef HAVE_MASK_CONT int mask_index = id; #else int mask_index = mad24(id / cols, mask_step, id % cols); diff --git a/modules/core/src/opencl/minmaxloc.cl b/modules/core/src/opencl/minmaxloc.cl index a51c5d93a3..cb72a4ec11 100644 --- a/modules/core/src/opencl/minmaxloc.cl +++ b/modules/core/src/opencl/minmaxloc.cl @@ -42,9 +42,13 @@ #if wdepth <= 4 #define MIN_ABS(a) convertFromU(abs(a)) #define MIN_ABS2(a, b) convertFromU(abs_diff(a, b)) +#define MIN(a, b) min(a, b) +#define MAX(a, b) max(a, b) #else #define MIN_ABS(a) fabs(a) #define MIN_ABS2(a, b) fabs(a - b) +#define MIN(a, b) fmin(a, b) +#define MAX(a, b) fmax(a, b) #endif #if kercn != 3 @@ -60,44 +64,41 @@ #define srcTSIZE (int)sizeof(srcT1) #endif -#ifdef NEED_MINLOC -#define CALC_MINLOC(inc) minloc = id + inc -#else -#define CALC_MINLOC(inc) -#endif - -#ifdef NEED_MAXLOC -#define CALC_MAXLOC(inc) maxloc = id + inc -#else -#define CALC_MAXLOC(inc) -#endif - #ifdef NEED_MINVAL +#ifdef NEED_MINLOC #define CALC_MIN(p, inc) \ if (minval > temp.p) \ { \ minval = temp.p; \ - CALC_MINLOC(inc); \ + minloc = id + inc; \ } #else +#define CALC_MIN(p, inc) \ + minval = MIN(minval, temp.p); +#endif +#else #define CALC_MIN(p, inc) #endif #ifdef NEED_MAXVAL +#ifdef NEED_MAXLOC #define CALC_MAX(p, inc) \ if (maxval < temp.p) \ { \ maxval = temp.p; \ - CALC_MAXLOC(inc); \ + maxloc = id + inc; \ } #else +#define CALC_MAX(p, inc) \ + maxval = MAX(maxval, temp.p); +#endif +#else #define CALC_MAX(p, inc) #endif #ifdef OP_CALC2 #define CALC_MAX2(p) \ - if (maxval2 < temp.p) \ - maxval2 = temp.p; + maxval2 = MAX(maxval2, temp.p); #else #define CALC_MAX2(p) #endif @@ -184,7 +185,7 @@ __kernel void minmaxloc(__global const uchar * srcptr, int src_step, int src_off #endif { #ifdef HAVE_SRC_CONT - src_index = mul24(id, srcTSIZE); + src_index = id * srcTSIZE;//mul24(id, srcTSIZE); #else src_index = mad24(id / cols, src_step, mul24(id % cols, srcTSIZE)); #endif @@ -208,25 +209,28 @@ __kernel void minmaxloc(__global const uchar * srcptr, int src_step, int src_off #if kercn == 1 #ifdef NEED_MINVAL +#ifdef NEED_MINLOC if (minval > temp) { minval = temp; -#ifdef NEED_MINLOC minloc = id; -#endif } +#else + minval = MIN(minval, temp); +#endif #endif #ifdef NEED_MAXVAL +#ifdef NEED_MAXLOC if (maxval < temp) { maxval = temp; -#ifdef NEED_MAXLOC maxloc = id; -#endif } +#else + maxval = MAX(maxval, temp); +#endif #ifdef OP_CALC2 - if (maxval2 < temp2) - maxval2 = temp2; + maxval2 = MAX(maxval2, temp2); #endif #endif #elif kercn >= 2 @@ -282,32 +286,35 @@ __kernel void minmaxloc(__global const uchar * srcptr, int src_step, int src_off { int lid3 = lid - WGS2_ALIGNED; #ifdef NEED_MINVAL +#ifdef NEED_MINLOC if (localmem_min[lid3] >= minval) { -#ifdef NEED_MINLOC if (localmem_min[lid3] == minval) localmem_minloc[lid3] = min(localmem_minloc[lid3], minloc); else localmem_minloc[lid3] = minloc, -#endif - localmem_min[lid3] = minval; + localmem_min[lid3] = minval; } +#else + localmem_min[lid3] = MIN(localmem_min[lid3], minval); +#endif #endif #ifdef NEED_MAXVAL +#ifdef NEED_MAXLOC if (localmem_max[lid3] <= maxval) { -#ifdef NEED_MAXLOC if (localmem_max[lid3] == maxval) localmem_maxloc[lid3] = min(localmem_maxloc[lid3], maxloc); else localmem_maxloc[lid3] = maxloc, -#endif - localmem_max[lid3] = maxval; + localmem_max[lid3] = maxval; } +#else + localmem_max[lid3] = MAX(localmem_max[lid3], maxval); +#endif #endif #ifdef OP_CALC2 - if (localmem_max2[lid3] < maxval2) - localmem_max2[lid3] = maxval2; + localmem_max2[lid3] = MAX(localmem_max2[lid3], maxval2); #endif } barrier(CLK_LOCAL_MEM_FENCE); @@ -319,32 +326,35 @@ __kernel void minmaxloc(__global const uchar * srcptr, int src_step, int src_off int lid2 = lsize + lid; #ifdef NEED_MINVAL +#ifdef NEED_MINLOC if (localmem_min[lid] >= localmem_min[lid2]) { -#ifdef NEED_MINLOC if (localmem_min[lid] == localmem_min[lid2]) localmem_minloc[lid] = min(localmem_minloc[lid2], localmem_minloc[lid]); else localmem_minloc[lid] = localmem_minloc[lid2], -#endif - localmem_min[lid] = localmem_min[lid2]; + localmem_min[lid] = localmem_min[lid2]; } +#else + localmem_min[lid] = MIN(localmem_min[lid], localmem_min[lid2]); +#endif #endif #ifdef NEED_MAXVAL +#ifdef NEED_MAXLOC if (localmem_max[lid] <= localmem_max[lid2]) { -#ifdef NEED_MAXLOC if (localmem_max[lid] == localmem_max[lid2]) localmem_maxloc[lid] = min(localmem_maxloc[lid2], localmem_maxloc[lid]); else localmem_maxloc[lid] = localmem_maxloc[lid2], -#endif - localmem_max[lid] = localmem_max[lid2]; + localmem_max[lid] = localmem_max[lid2]; } +#else + localmem_max[lid] = MAX(localmem_max[lid], localmem_max[lid2]); +#endif #endif #ifdef OP_CALC2 - if (localmem_max2[lid] < localmem_max2[lid2]) - localmem_max2[lid] = localmem_max2[lid2]; + localmem_max2[lid] = MAX(localmem_max2[lid], localmem_max2[lid2]); #endif } barrier(CLK_LOCAL_MEM_FENCE); diff --git a/modules/core/src/opencl/reduce.cl b/modules/core/src/opencl/reduce.cl index f16a742e54..c89f1cf005 100644 --- a/modules/core/src/opencl/reduce.cl +++ b/modules/core/src/opencl/reduce.cl @@ -379,7 +379,7 @@ #define REDUCE_GLOBAL \ dstTK temp = convertToDT(loadpix(srcptr + src_index)); \ dstTK temp2 = convertToDT(loadpix(src2ptr + src2_index)); \ - temp = SUM_ABS2(temp, temp2)); \ + temp = SUM_ABS2(temp, temp2); \ FUNC(accumulator, temp.s0); \ FUNC(accumulator, temp.s1); \ FUNC(accumulator, temp.s2); \ diff --git a/modules/core/src/opencl/reduce2.cl b/modules/core/src/opencl/reduce2.cl index 7800e7a743..457378cc13 100644 --- a/modules/core/src/opencl/reduce2.cl +++ b/modules/core/src/opencl/reduce2.cl @@ -81,29 +81,34 @@ #define PROCESS_ELEM(acc, value) acc += value #elif defined OCL_CV_REDUCE_MAX #define INIT_VALUE MIN_VAL -#define PROCESS_ELEM(acc, value) acc = value > acc ? value : acc +#define PROCESS_ELEM(acc, value) acc = max(value, acc) #elif defined OCL_CV_REDUCE_MIN #define INIT_VALUE MAX_VAL -#define PROCESS_ELEM(acc, value) acc = value < acc ? value : acc +#define PROCESS_ELEM(acc, value) acc = min(value, acc) #else #error "No operation is specified" #endif #ifdef OP_REDUCE_PRE -__kernel void reduce_horz_pre(__global const uchar * srcptr, int src_step, int src_offset, int rows, int cols, - __global uchar * bufptr, int buf_step, int buf_offset) +__kernel void reduce_horz_opt(__global const uchar * srcptr, int src_step, int src_offset, int rows, int cols, + __global uchar * dstptr, int dst_step, int dst_offset +#ifdef OCL_CV_REDUCE_AVG + , float fscale +#endif + ) { + __local bufT lsmem[TILE_HEIGHT][BUF_COLS][cn]; + int x = get_global_id(0); int y = get_global_id(1); - if (x < BUF_COLS) + int liy = get_local_id(1); + if ((x < BUF_COLS) && (y < rows)) { int src_index = mad24(y, src_step, mad24(x, (int)sizeof(srcT) * cn, src_offset)); - int buf_index = mad24(y, buf_step, mad24(x, (int)sizeof(dstT) * cn, buf_offset)); __global const srcT * src = (__global const srcT *)(srcptr + src_index); - __global dstT * buf = (__global dstT *)(bufptr + buf_index); - dstT tmp[cn] = { INIT_VALUE }; + bufT tmp[cn] = { INIT_VALUE }; int src_step_mul = BUF_COLS * cn; for (int idx = x; idx < cols; idx += BUF_COLS, src += src_step_mul) @@ -111,14 +116,49 @@ __kernel void reduce_horz_pre(__global const uchar * srcptr, int src_step, int s #pragma unroll for (int c = 0; c < cn; ++c) { - dstT value = convertToDT(src[c]); + bufT value = convertToBufT(src[c]); PROCESS_ELEM(tmp[c], value); } } #pragma unroll for (int c = 0; c < cn; ++c) - buf[c] = tmp[c]; + lsmem[liy][x][c] = tmp[c]; + } + barrier(CLK_LOCAL_MEM_FENCE); + if ((x < BUF_COLS / 2) && (y < rows)) + { + #pragma unroll + for (int c = 0; c < cn; ++c) + { + PROCESS_ELEM(lsmem[liy][x][c], lsmem[liy][x + BUF_COLS / 2][c]); + } + } + barrier(CLK_LOCAL_MEM_FENCE); + if ((x == 0) && (y < rows)) + { + int dst_index = mad24(y, dst_step, dst_offset); + + __global dstT * dst = (__global dstT *)(dstptr + dst_index); + bufT tmp[cn] = { INIT_VALUE }; + + #pragma unroll + for (int xin = 0; xin < BUF_COLS / 2; xin ++) + { + #pragma unroll + for (int c = 0; c < cn; ++c) + { + PROCESS_ELEM(tmp[c], lsmem[liy][xin][c]); + } + } + + #pragma unroll + for (int c = 0; c < cn; ++c) +#ifdef OCL_CV_REDUCE_AVG + dst[c] = convertToDT(convertToWT(tmp[c]) * fscale); +#else + dst[c] = convertToDT(tmp[c]); +#endif } } diff --git a/modules/core/src/opencl/runtime/opencl_clamdblas.cpp b/modules/core/src/opencl/runtime/opencl_clamdblas.cpp index 420fdb97d3..379929993f 100644 --- a/modules/core/src/opencl/runtime/opencl_clamdblas.cpp +++ b/modules/core/src/opencl/runtime/opencl_clamdblas.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #ifdef HAVE_CLAMDBLAS diff --git a/modules/core/src/opencl/runtime/opencl_clamdfft.cpp b/modules/core/src/opencl/runtime/opencl_clamdfft.cpp index 36a9ed2a71..255bcd826a 100644 --- a/modules/core/src/opencl/runtime/opencl_clamdfft.cpp +++ b/modules/core/src/opencl/runtime/opencl_clamdfft.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #ifdef HAVE_CLAMDFFT diff --git a/modules/core/src/opencl/runtime/opencl_core.cpp b/modules/core/src/opencl/runtime/opencl_core.cpp index 5dbc85ec10..93f6aae5de 100644 --- a/modules/core/src/opencl/runtime/opencl_core.cpp +++ b/modules/core/src/opencl/runtime/opencl_core.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "precomp.hpp" +#include "../../precomp.hpp" #if defined(HAVE_OPENCL) && !defined(HAVE_OPENCL_STATIC) diff --git a/modules/core/src/opencl/set_identity.cl b/modules/core/src/opencl/set_identity.cl index 6b277fe0e4..952204d3ff 100644 --- a/modules/core/src/opencl/set_identity.cl +++ b/modules/core/src/opencl/set_identity.cl @@ -43,20 +43,18 @@ // //M*/ -#if cn != 3 -#define loadpix(addr) *(__global const T *)(addr) +#if kercn != 3 #define storepix(val, addr) *(__global T *)(addr) = val #define TSIZE (int)sizeof(T) #define scalar scalar_ #else -#define loadpix(addr) vload3(0, (__global const T1 *)(addr)) #define storepix(val, addr) vstore3(val, 0, (__global T1 *)(addr)) #define TSIZE ((int)sizeof(T1)*3) #define scalar (T)(scalar_.x, scalar_.y, scalar_.z) #endif __kernel void setIdentity(__global uchar * srcptr, int src_step, int src_offset, int rows, int cols, - ST scalar_, int rowsPerWI) + ST scalar_) { int x = get_global_id(0); int y0 = get_global_id(1) * rowsPerWI; @@ -65,7 +63,35 @@ __kernel void setIdentity(__global uchar * srcptr, int src_step, int src_offset, { int src_index = mad24(y0, src_step, mad24(x, TSIZE, src_offset)); - for (int y = y0, y1 = min(rows, y0 + rowsPerWI); y < y1; ++y, src_index += src_step) - storepix(x == y ? scalar : (T)(0), srcptr + src_index); +#if kercn == cn + #pragma unroll + for (int y = y0, i = 0, y1 = min(rows, y0 + rowsPerWI); i < rowsPerWI; ++y, ++i, src_index += src_step) + if (y < y1) + storepix(x == y ? scalar : (T)(0), srcptr + src_index); +#elif kercn == 4 && cn == 1 + if (y0 < rows) + { + storepix(x == y0 >> 2 ? (T)(scalar, 0, 0, 0) : (T)(0), srcptr + src_index); + if (++y0 < rows) + { + src_index += src_step; + storepix(x == y0 >> 2 ? (T)(0, scalar, 0, 0) : (T)(0), srcptr + src_index); + + if (++y0 < rows) + { + src_index += src_step; + storepix(x == y0 >> 2 ? (T)(0, 0, scalar, 0) : (T)(0), srcptr + src_index); + + if (++y0 < rows) + { + src_index += src_step; + storepix(x == y0 >> 2 ? (T)(0, 0, 0, scalar) : (T)(0), srcptr + src_index); + } + } + } + } +#else +#error "Incorrect combination of cn && kercn" +#endif } } diff --git a/modules/core/src/stat.cpp b/modules/core/src/stat.cpp index 3dd042860d..e42f8224ff 100644 --- a/modules/core/src/stat.cpp +++ b/modules/core/src/stat.cpp @@ -44,7 +44,7 @@ #include #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" namespace cv { @@ -479,9 +479,10 @@ static bool ocl_sum( InputArray _src, Scalar & res, int sum_op, InputArray _mask haveMask = _mask.kind() != _InputArray::NONE, haveSrc2 = _src2.kind() != _InputArray::NONE; int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), - kercn = cn == 1 && !haveMask ? ocl::predictOptimalVectorWidth(_src) : 1, + kercn = cn == 1 && !haveMask ? ocl::predictOptimalVectorWidth(_src, _src2) : 1, mcn = std::max(cn, kercn); CV_Assert(!haveSrc2 || _src2.type() == type); + int convert_cn = haveSrc2 ? mcn : cn; if ( (!doubleSupport && depth == CV_64F) || cn > 4 ) return false; @@ -513,7 +514,7 @@ static bool ocl_sum( InputArray _src, Scalar & res, int sum_op, InputArray _mask haveMask && _mask.isContinuous() ? " -D HAVE_MASK_CONT" : "", kercn, haveSrc2 ? " -D HAVE_SRC2" : "", calc2 ? " -D OP_CALC2" : "", haveSrc2 && _src2.isContinuous() ? " -D HAVE_SRC2_CONT" : "", - depth <= CV_32S && ddepth == CV_32S ? ocl::convertTypeStr(CV_8U, ddepth, mcn, cvt[1]) : "noconvert"); + depth <= CV_32S && ddepth == CV_32S ? ocl::convertTypeStr(CV_8U, ddepth, convert_cn, cvt[1]) : "noconvert"); ocl::Kernel k("reduce", ocl::core::reduce_oclsrc, opts); if (k.empty()) @@ -567,7 +568,7 @@ cv::Scalar cv::sum( InputArray _src ) { #ifdef HAVE_OPENCL Scalar _res; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_sum(_src, _res, OCL_OP_SUM), _res) #endif @@ -718,7 +719,7 @@ int cv::countNonZero( InputArray _src ) #ifdef HAVE_OPENCL int res = -1; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_countNonZero(_src, res), res) #endif @@ -781,7 +782,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask ) int type = src.type(); if( !mask.empty() ) { - typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *); ippiMaskMeanFuncC1 ippFuncC1 = type == CV_8UC1 ? (ippiMaskMeanFuncC1)ippiMean_8u_C1MR : type == CV_16UC1 ? (ippiMaskMeanFuncC1)ippiMean_16u_C1MR : @@ -794,7 +795,7 @@ cv::Scalar cv::mean( InputArray _src, InputArray _mask ) return Scalar(res); setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskMeanFuncC3 ippFuncC3 = type == CV_8UC3 ? (ippiMaskMeanFuncC3)ippiMean_8u_C3CMR : type == CV_16UC3 ? (ippiMaskMeanFuncC3)ippiMean_16u_C3CMR : @@ -917,9 +918,16 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv { int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0, - isContinuous = _src.isContinuous(); - int groups = ocl::Device::getDefault().maxComputeUnits(); - size_t wgs = ocl::Device::getDefault().maxWorkGroupSize(); + isContinuous = _src.isContinuous(), + isMaskContinuous = _mask.isContinuous(); + const ocl::Device &defDev = ocl::Device::getDefault(); + int groups = defDev.maxComputeUnits(); + if (defDev.isIntel()) + { + static const int subSliceEUCount = 10; + groups = (groups / subSliceEUCount) * 2; + } + size_t wgs = defDev.maxWorkGroupSize(); int ddepth = std::max(CV_32S, depth), sqddepth = std::max(CV_32F, depth), dtype = CV_MAKE_TYPE(ddepth, cn), @@ -936,13 +944,14 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv char cvt[2][40]; String opts = format("-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D sqddepth=%d" - " -D sqdstT=%s -D sqdstT1=%s -D convertToSDT=%s -D cn=%d%s" + " -D sqdstT=%s -D sqdstT1=%s -D convertToSDT=%s -D cn=%d%s%s" " -D convertToDT=%s -D WGS=%d -D WGS2_ALIGNED=%d%s%s", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(dtype), ocl::typeToStr(ddepth), sqddepth, ocl::typeToStr(sqdtype), ocl::typeToStr(sqddepth), ocl::convertTypeStr(depth, sqddepth, cn, cvt[0]), cn, isContinuous ? " -D HAVE_SRC_CONT" : "", + isMaskContinuous ? " -D HAVE_MASK_CONT" : "", ocl::convertTypeStr(depth, ddepth, cn, cvt[1]), (int)wgs, wgs2_aligned, haveMask ? " -D HAVE_MASK" : "", doubleSupport ? " -D DOUBLE_SUPPORT" : ""); @@ -1018,7 +1027,7 @@ static bool ocl_meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, InputArray _mask ) { - CV_OCL_RUN(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_meanStdDev(_src, _mean, _sdv, _mask)) Mat src = _src.getMat(), mask = _mask.getMat(); @@ -1062,7 +1071,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input int type = src.type(); if( !mask.empty() ) { - typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, void *, int, IppiSize, Ipp64f *, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC1)(const void *, int, const void *, int, IppiSize, Ipp64f *, Ipp64f *); ippiMaskMeanStdDevFuncC1 ippFuncC1 = type == CV_8UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_8u_C1MR : type == CV_16UC1 ? (ippiMaskMeanStdDevFuncC1)ippiMean_StdDev_16u_C1MR : @@ -1074,7 +1083,7 @@ void cv::meanStdDev( InputArray _src, OutputArray _mean, OutputArray _sdv, Input return; setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, void *, int, IppiSize, int, Ipp64f *, Ipp64f *); + typedef IppStatus (CV_STDCALL* ippiMaskMeanStdDevFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *, Ipp64f *); ippiMaskMeanStdDevFuncC3 ippFuncC3 = type == CV_8UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_8u_C3CMR : type == CV_16UC3 ? (ippiMaskMeanStdDevFuncC3)ippiMean_StdDev_16u_C3CMR : @@ -1445,6 +1454,9 @@ static bool ocl_minMaxIdx( InputArray _src, double* minVal, double* maxVal, int* CV_Assert(!haveSrc2 || _src2.type() == type); + if (depth == CV_32S) + return false; + if ((depth == CV_64F || ddepth == CV_64F) && !doubleSupport) return false; @@ -1561,7 +1573,7 @@ void cv::minMaxIdx(InputArray _src, double* minVal, CV_Assert( (cn == 1 && (_mask.empty() || _mask.type() == CV_8U)) || (cn > 1 && _mask.empty() && !minIdx && !maxIdx) ); - CV_OCL_RUN(_src.isUMat() && _src.dims() <= 2 && (_mask.empty() || _src.size() == _mask.size()), + CV_OCL_RUN(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2 && (_mask.empty() || _src.size() == _mask.size()), ocl_minMaxIdx(_src, minVal, maxVal, minIdx, maxIdx, _mask)) Mat src = _src.getMat(), mask = _mask.getMat(); @@ -2178,6 +2190,9 @@ static bool ocl_norm( InputArray _src, int normType, InputArray _mask, double & (!doubleSupport && depth == CV_64F)) return false; + if( depth == CV_32F && (!_mask.empty() || normType == NORM_INF) ) + return false; + UMat src = _src.getUMat(); if (normType == NORM_INF) @@ -2221,7 +2236,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) #ifdef HAVE_OPENCL double _result = 0; - CV_OCL_RUN_(_src.isUMat() && _src.dims() <= 2, + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src.isUMat()) && _src.dims() <= 2, ocl_norm(_src, normType, _mask, _result), _result) #endif @@ -2270,7 +2285,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); + /*typedef IppStatus (CV_STDCALL* ippiMaskNormFuncC3)(const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskNormFuncC3 ippFuncC3 = normType == NORM_INF ? (type == CV_8UC3 ? (ippiMaskNormFuncC3)ippiNorm_Inf_8u_C3CMR : @@ -2305,7 +2320,7 @@ double cv::norm( InputArray _src, int normType, InputArray _mask ) return normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm; } setIppErrorStatus(); - } + }*/ } else { @@ -2533,7 +2548,7 @@ static bool ocl_norm( InputArray _src1, InputArray _src2, int normType, InputArr normType &= ~NORM_RELATIVE; bool normsum = normType == NORM_L1 || normType == NORM_L2 || normType == NORM_L2SQR; - if ( !(normType == NORM_INF || normsum) ) + if ( !normsum || !_mask.empty() ) return false; if (normsum) @@ -2581,7 +2596,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m #ifdef HAVE_OPENCL double _result = 0; - CV_OCL_RUN_(_src1.isUMat(), + CV_OCL_RUN_(OCL_PERFORMANCE_CHECK(_src1.isUMat()), ocl_norm(_src1, _src2, normType, _mask, _result), _result) #endif @@ -2711,7 +2726,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m 0) : normType == NORM_L1 ? (type == CV_8UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_8u_C1MR : - type == CV_8SC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_8s_C1MR : + //type == CV_8SC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_8s_C1MR : type == CV_16UC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_16u_C1MR : type == CV_32FC1 ? (ippiMaskNormDiffFuncC1)ippiNormDiff_L1_32f_C1MR : 0) : @@ -2728,7 +2743,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m return normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm; setIppErrorStatus(); } - typedef IppStatus (CV_STDCALL* ippiMaskNormDiffFuncC3)(const void *, int, const void *, int, const void *, int, IppiSize, int, Ipp64f *); + /*typedef IppStatus (CV_STDCALL* ippiMaskNormDiffFuncC3)(const void *, int, const void *, int, const void *, int, IppiSize, int, Ipp64f *); ippiMaskNormDiffFuncC3 ippFuncC3 = normType == NORM_INF ? (type == CV_8UC3 ? (ippiMaskNormDiffFuncC3)ippiNormDiff_Inf_8u_C3CMR : @@ -2763,7 +2778,7 @@ double cv::norm( InputArray _src1, InputArray _src2, int normType, InputArray _m return normType == NORM_L2SQR ? (double)(norm * norm) : (double)norm; } setIppErrorStatus(); - } + }*/ } else { diff --git a/modules/core/src/umatrix.cpp b/modules/core/src/umatrix.cpp index 60f547794c..a128bcd01d 100644 --- a/modules/core/src/umatrix.cpp +++ b/modules/core/src/umatrix.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_core.hpp" ///////////////////////////////// UMat implementation /////////////////////////////// @@ -582,7 +582,7 @@ Mat UMat::getMat(int accessFlags) const hdr.flags = flags; hdr.u = u; hdr.datastart = u->data; - hdr.data = hdr.datastart + offset; + hdr.data = u->data + offset; hdr.datalimit = hdr.dataend = u->data + u->size; CV_XADD(&hdr.u->refcount, 1); return hdr; @@ -593,15 +593,16 @@ void* UMat::handle(int accessFlags) const if( !u ) return 0; - if ((accessFlags & ACCESS_WRITE) != 0) - u->markHostCopyObsolete(true); - // check flags: if CPU copy is newer, copy it back to GPU. if( u->deviceCopyObsolete() ) { CV_Assert(u->refcount == 0); u->currAllocator->unmap(u); } + + if ((accessFlags & ACCESS_WRITE) != 0) + u->markHostCopyObsolete(true); + return u->handle; } diff --git a/modules/core/test/ocl/test_arithm.cpp b/modules/core/test/ocl/test_arithm.cpp index a7a09cabb7..6e0884cb13 100644 --- a/modules/core/test/ocl/test_arithm.cpp +++ b/modules/core/test/ocl/test_arithm.cpp @@ -39,7 +39,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #include @@ -157,6 +157,7 @@ PARAM_TEST_CASE(ArithmTestBase, MatDepth, Channels, bool) Border maskBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(mask, mask_roi, roiSize, maskBorder, CV_8UC1, 0, 2); cv::threshold(mask, mask, 0.5, 255., CV_8UC1); + *mask.ptr(0) = 255; // prevent test case with mask filled 0 only val = cv::Scalar(rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0), rng.uniform(-100.0, 100.0)); @@ -340,7 +341,7 @@ OCL_TEST_P(Mul, Mat_Scalar_Scale) OCL_OFF(cv::multiply(src1_roi, val, dst1_roi, val[0])); OCL_ON(cv::multiply(usrc1_roi, val, udst1_roi, val[0])); - Near(udst1_roi.depth() >= CV_32F ? 1e-2 : 1); + Near(udst1_roi.depth() >= CV_32F ? 2e-2 : 1); } } @@ -396,7 +397,7 @@ OCL_TEST_P(Div, Mat_Scale) OCL_OFF(cv::divide(src1_roi, src2_roi, dst1_roi, val[0])); OCL_ON(cv::divide(usrc1_roi, usrc2_roi, udst1_roi, val[0])); - Near(udst1_roi.depth() >= CV_32F ? 4e-3 : 1); + Near(udst1_roi.depth() >= CV_32F ? 2e-2 : 1); } } @@ -829,7 +830,7 @@ OCL_TEST_P(Pow, Mat) { static const double pows[] = { -4, -1, -2.5, 0, 1, 2, 3.7, 4 }; - for (int j = 0; j < test_loop_times; j++) + for (int j = 0; j < 1/*test_loop_times*/; j++) for (int k = 0, size = sizeof(pows) / sizeof(double); k < size; ++k) { SCOPED_TRACE(pows[k]); @@ -1203,7 +1204,7 @@ OCL_TEST_P(MinMaxIdx_Mask, Mat) static bool relativeError(double actual, double expected, double eps) { - return std::abs(actual - expected) / actual < eps; + return std::abs(actual - expected) < eps*(1 + std::abs(actual)); } typedef ArithmTestBase Norm; @@ -1230,7 +1231,7 @@ OCL_TEST_P(Norm, NORM_INF_1arg_mask) OCL_OFF(const double cpuRes = cv::norm(src1_roi, NORM_INF, mask_roi)); OCL_ON(const double gpuRes = cv::norm(usrc1_roi, NORM_INF, umask_roi)); - EXPECT_NEAR(cpuRes, gpuRes, 0.1); + EXPECT_NEAR(cpuRes, gpuRes, 0.2); } } @@ -1302,7 +1303,7 @@ OCL_TEST_P(Norm, NORM_INF_2args) OCL_OFF(const double cpuRes = cv::norm(src1_roi, src2_roi, type)); OCL_ON(const double gpuRes = cv::norm(usrc1_roi, usrc2_roi, type)); - EXPECT_NEAR(cpuRes, gpuRes, 0.1); + EXPECT_NEAR(cpuRes, gpuRes, 0.2); } } @@ -1419,7 +1420,7 @@ OCL_TEST_P(UMatDot, Mat) OCL_OFF(const double cpuRes = src1_roi.dot(src2_roi)); OCL_ON(const double gpuRes = usrc1_roi.dot(usrc2_roi)); - EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-6); + EXPECT_PRED3(relativeError, cpuRes, gpuRes, 1e-5); } } @@ -1749,7 +1750,7 @@ OCL_TEST_P(ReduceAvg, Mat) OCL_OFF(cv::reduce(src_roi, dst_roi, dim, CV_REDUCE_AVG, dtype)); OCL_ON(cv::reduce(usrc_roi, udst_roi, dim, CV_REDUCE_AVG, dtype)); - double eps = ddepth <= CV_32S ? 1 : 5e-6; + double eps = ddepth <= CV_32S ? 1 : 6e-6; OCL_EXPECT_MATS_NEAR(dst, eps); } } diff --git a/modules/core/test/ocl/test_channels.cpp b/modules/core/test/ocl/test_channels.cpp index 7565273e7a..2a07bc1085 100644 --- a/modules/core/test/ocl/test_channels.cpp +++ b/modules/core/test/ocl/test_channels.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -105,6 +105,7 @@ PARAM_TEST_CASE(Merge, MatDepth, int, bool) UMAT_UPLOAD_INPUT_PARAMETER(src3); UMAT_UPLOAD_INPUT_PARAMETER(src4); + src_roi.clear(); usrc_roi.clear(); // for test_loop_times > 1 src_roi.push_back(src1_roi), usrc_roi.push_back(usrc1_roi); if (nsrc >= 2) src_roi.push_back(src2_roi), usrc_roi.push_back(usrc2_roi); diff --git a/modules/core/test/ocl/test_dft.cpp b/modules/core/test/ocl/test_dft.cpp index 1f0e43b20e..afad19613f 100644 --- a/modules/core/test/ocl/test_dft.cpp +++ b/modules/core/test/ocl/test_dft.cpp @@ -43,22 +43,31 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL +enum OCL_FFT_TYPE +{ + R2R = 0, + C2R = 1, + R2C = 2, + C2C = 3 +}; + namespace cvtest { namespace ocl { //////////////////////////////////////////////////////////////////////////// // Dft -PARAM_TEST_CASE(Dft, cv::Size, MatDepth, bool, bool, bool, bool) +PARAM_TEST_CASE(Dft, cv::Size, OCL_FFT_TYPE, bool, bool, bool, bool) { cv::Size dft_size; - int dft_flags, depth; - bool inplace; + int dft_flags, depth, cn, dft_type; + bool hint; + bool is1d; TEST_DECLARE_INPUT_PARAMETER(src); TEST_DECLARE_OUTPUT_PARAMETER(dst); @@ -66,34 +75,50 @@ PARAM_TEST_CASE(Dft, cv::Size, MatDepth, bool, bool, bool, bool) virtual void SetUp() { dft_size = GET_PARAM(0); - depth = GET_PARAM(1); - inplace = GET_PARAM(2); + dft_type = GET_PARAM(1); + depth = CV_32F; dft_flags = 0; + switch (dft_type) + { + case R2R: dft_flags |= cv::DFT_REAL_OUTPUT; cn = 1; break; + case C2R: dft_flags |= cv::DFT_REAL_OUTPUT; cn = 2; break; + case R2C: dft_flags |= cv::DFT_COMPLEX_OUTPUT; cn = 1; break; + case C2C: dft_flags |= cv::DFT_COMPLEX_OUTPUT; cn = 2; break; + } + + if (GET_PARAM(2)) + dft_flags |= cv::DFT_INVERSE; if (GET_PARAM(3)) dft_flags |= cv::DFT_ROWS; if (GET_PARAM(4)) dft_flags |= cv::DFT_SCALE; - if (GET_PARAM(5)) - dft_flags |= cv::DFT_INVERSE; + hint = GET_PARAM(5); + is1d = (dft_flags & DFT_ROWS) != 0 || dft_size.height == 1; } - void generateTestData(int cn = 2) + void generateTestData() { src = randomMat(dft_size, CV_MAKE_TYPE(depth, cn), 0.0, 100.0); usrc = src.getUMat(ACCESS_READ); - - if (inplace) - dst = src, udst = usrc; } }; -OCL_TEST_P(Dft, C2C) +OCL_TEST_P(Dft, Mat) { generateTestData(); - OCL_OFF(cv::dft(src, dst, dft_flags | cv::DFT_COMPLEX_OUTPUT)); - OCL_ON(cv::dft(usrc, udst, dft_flags | cv::DFT_COMPLEX_OUTPUT)); + int nonzero_rows = hint ? src.rows - randomInt(1, src.rows-1) : 0; + OCL_OFF(cv::dft(src, dst, dft_flags, nonzero_rows)); + OCL_ON(cv::dft(usrc, udst, dft_flags, nonzero_rows)); + + // In case forward R2C 1d tranform dst contains only half of output + // without complex conjugate + if (dft_type == R2C && is1d && (dft_flags & cv::DFT_INVERSE) == 0) + { + dst = dst(cv::Range(0, dst.rows), cv::Range(0, dst.cols/2 + 1)); + udst = udst(cv::Range(0, udst.rows), cv::Range(0, udst.cols/2 + 1)); + } double eps = src.size().area() * 1e-4; EXPECT_MAT_NEAR(dst, udst, eps); @@ -150,15 +175,15 @@ OCL_TEST_P(MulSpectrums, Mat) OCL_INSTANTIATE_TEST_CASE_P(OCL_ImgProc, MulSpectrums, testing::Combine(Bool(), Bool())); -OCL_INSTANTIATE_TEST_CASE_P(Core, Dft, Combine(Values(cv::Size(2, 3), cv::Size(5, 4), cv::Size(25, 20), - cv::Size(512, 1), cv::Size(1024, 768)), - Values(CV_32F, CV_64F), - Bool(), // inplace +OCL_INSTANTIATE_TEST_CASE_P(Core, Dft, Combine(Values(cv::Size(45, 72), cv::Size(36, 36), cv::Size(512, 1), cv::Size(1280, 768)), + Values((OCL_FFT_TYPE) R2C, (OCL_FFT_TYPE) C2C, (OCL_FFT_TYPE) R2R, (OCL_FFT_TYPE) C2R), + Bool(), // DFT_INVERSE Bool(), // DFT_ROWS Bool(), // DFT_SCALE - Bool()) // DFT_INVERSE + Bool() // hint + ) ); } } // namespace cvtest::ocl -#endif // HAVE_OPENCL +#endif // HAVE_OPENCL \ No newline at end of file diff --git a/modules/core/test/ocl/test_gemm.cpp b/modules/core/test/ocl/test_gemm.cpp index e92fc2a1c9..493b6cdbb9 100644 --- a/modules/core/test/ocl/test_gemm.cpp +++ b/modules/core/test/ocl/test_gemm.cpp @@ -42,7 +42,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -90,14 +90,15 @@ PARAM_TEST_CASE(Gemm, void generateTestData() { - Size ARoiSize = randomSize(1, MAX_VALUE); + // set minimum size to 20, since testing less sizes doesn't make sense + Size ARoiSize = randomSize(20, MAX_VALUE); Border ABorder = randomBorder(0, use_roi ? MAX_VALUE : 0); randomSubMat(A, A_roi, ARoiSize, ABorder, type, -11, 11); if (atrans) ARoiSize = Size(ARoiSize.height, ARoiSize.width); - Size BRoiSize = randomSize(1, MAX_VALUE); + Size BRoiSize = randomSize(20, MAX_VALUE); if (btrans) BRoiSize.width = ARoiSize.width; else diff --git a/modules/core/test/ocl/test_matrix_expr.cpp b/modules/core/test/ocl/test_matrix_expr.cpp index 167026d8cd..b8448fb50c 100644 --- a/modules/core/test/ocl/test_matrix_expr.cpp +++ b/modules/core/test/ocl/test_matrix_expr.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/core/test/ocl/test_matrix_operation.cpp b/modules/core/test/ocl/test_matrix_operation.cpp index ee591e9bd9..b19b74f543 100644 --- a/modules/core/test/ocl/test_matrix_operation.cpp +++ b/modules/core/test/ocl/test_matrix_operation.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -96,7 +96,7 @@ OCL_TEST_P(ConvertTo, Accuracy) OCL_OFF(src_roi.convertTo(dst_roi, dstType, alpha, beta)); OCL_ON(usrc_roi.convertTo(udst_roi, dstType, alpha, beta)); - double eps = src_depth >= CV_32F || CV_MAT_DEPTH(dstType) >= CV_32F ? 1e-4 : 1; + double eps = CV_MAT_DEPTH(dstType) >= CV_32F ? 2e-4 : 1; OCL_EXPECT_MATS_NEAR(dst, eps); } } @@ -121,7 +121,7 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) use_mask = GET_PARAM(3); } - void generateTestData() + void generateTestData(bool one_cn_mask = false) { const int type = CV_MAKE_TYPE(depth, cn); @@ -132,9 +132,11 @@ PARAM_TEST_CASE(CopyTo, MatDepth, Channels, bool, bool) if (use_mask) { Border maskBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); - int mask_cn = randomDouble(0.0, 2.0) > 1.0 ? cn : 1; + int mask_cn = 1; + if (!one_cn_mask && randomDouble(0.0, 2.0) > 1.0) + mask_cn = cn; randomSubMat(mask, mask_roi, roiSize, maskBorder, CV_8UC(mask_cn), 0, 2); - cv::threshold(mask, mask, 0.5, 255., CV_8UC1); + cv::threshold(mask, mask, 0.5, 255., THRESH_BINARY); } Border dstBorder = randomBorder(0, use_roi ? MAX_VALUE : 0); @@ -177,7 +179,7 @@ OCL_TEST_P(SetTo, Accuracy) { for (int j = 0; j < test_loop_times; j++) { - generateTestData(); + generateTestData(true); // see modules/core/src/umatrix.cpp Ln:791 => CV_Assert( mask.size() == size() && mask.type() == CV_8UC1 ); if (use_mask) { diff --git a/modules/core/test/test_eigen.cpp b/modules/core/test/test_eigen.cpp index 671378443e..7a119257a6 100644 --- a/modules/core/test/test_eigen.cpp +++ b/modules/core/test/test_eigen.cpp @@ -164,7 +164,7 @@ void Core_EigenTest_32::run(int) { check_full(CV_32FC1); } void Core_EigenTest_64::run(int) { check_full(CV_64FC1); } Core_EigenTest::Core_EigenTest() -: eps_val_32(1e-3f), eps_vec_32(1e-2f), +: eps_val_32(1e-3f), eps_vec_32(12e-3f), eps_val_64(1e-4f), eps_vec_64(1e-3f), ntests(100) {} Core_EigenTest::~Core_EigenTest() {} diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index ac27bd7b53..18a93cd2b1 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -649,6 +649,16 @@ static void setValue(SparseMat& M, const int* idx, double value, RNG& rng) CV_Error(CV_StsUnsupportedFormat, ""); } +template +struct InitializerFunctor{ + /// Initializer for cv::Mat::forEach test + void operator()(Pixel & pixel, const int * idx) const { + pixel.x = idx[0]; + pixel.y = idx[1]; + pixel.z = idx[2]; + } +}; + void Core_ArrayOpTest::run( int /* start_from */) { int errcount = 0; @@ -686,6 +696,45 @@ void Core_ArrayOpTest::run( int /* start_from */) errcount++; } } + // test cv::Mat::forEach + { + const int dims[3] = { 101, 107, 7 }; + typedef cv::Point3i Pixel; + + cv::Mat a = cv::Mat::zeros(3, dims, CV_32SC3); + InitializerFunctor initializer; + + a.forEach(initializer); + + uint64 total = 0; + bool error_reported = false; + for (int i0 = 0; i0 < dims[0]; ++i0) { + for (int i1 = 0; i1 < dims[1]; ++i1) { + for (int i2 = 0; i2 < dims[2]; ++i2) { + Pixel& pixel = a.at(i0, i1, i2); + if (pixel.x != i0 || pixel.y != i1 || pixel.z != i2) { + if (!error_reported) { + ts->printf(cvtest::TS::LOG, "forEach is not correct.\n" + "First error detected at (%d, %d, %d).\n", pixel.x, pixel.y, pixel.z); + error_reported = true; + } + errcount++; + } + total += pixel.x; + total += pixel.y; + total += pixel.z; + } + } + } + uint64 total2 = 0; + for (size_t i = 0; i < sizeof(dims) / sizeof(dims[0]); ++i) { + total2 += ((dims[i] - 1) * dims[i] / 2) * dims[0] * dims[1] * dims[2] / dims[i]; + } + if (total != total2) { + ts->printf(cvtest::TS::LOG, "forEach is not correct because total is invalid.\n"); + errcount++; + } + } RNG rng; const int MAX_DIM = 5, MAX_DIM_SZ = 10; diff --git a/modules/core/test/test_umat.cpp b/modules/core/test/test_umat.cpp index d7ae7a9385..8e51aadad2 100644 --- a/modules/core/test/test_umat.cpp +++ b/modules/core/test/test_umat.cpp @@ -745,6 +745,24 @@ TEST(UMat, Sync) EXPECT_EQ(0, cvtest::norm(um.getMat(ACCESS_READ), cv::Mat(um.size(), um.type(), 19), NORM_INF)); } +TEST(UMat, CopyToIfDeviceCopyIsObsolete) +{ + UMat um(7, 2, CV_8UC1); + Mat m(um.size(), um.type()); + m.setTo(Scalar::all(0)); + + { + // make obsolete device copy of UMat + Mat temp = um.getMat(ACCESS_WRITE); + temp.setTo(Scalar::all(10)); + } + + m.copyTo(um); + um.setTo(Scalar::all(17)); + + EXPECT_EQ(0, cvtest::norm(um.getMat(ACCESS_READ), Mat(um.size(), um.type(), 17), NORM_INF)); +} + TEST(UMat, setOpenCL) { // save the current state diff --git a/modules/cudaarithm/CMakeLists.txt b/modules/cudaarithm/CMakeLists.txt index c819ec928d..b4708e723a 100644 --- a/modules/cudaarithm/CMakeLists.txt +++ b/modules/cudaarithm/CMakeLists.txt @@ -23,7 +23,5 @@ endif() ocv_create_module(${extra_libs}) -ocv_add_precompiled_headers(${the_module}) - ocv_add_accuracy_tests(DEPENDS_ON opencv_imgproc) ocv_add_perf_tests(DEPENDS_ON opencv_imgproc) diff --git a/modules/cudabgsegm/CMakeLists.txt b/modules/cudabgsegm/CMakeLists.txt index 3a882824b1..41517b6c69 100644 --- a/modules/cudabgsegm/CMakeLists.txt +++ b/modules/cudabgsegm/CMakeLists.txt @@ -6,4 +6,4 @@ set(the_description "CUDA-accelerated Background Segmentation") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef -Wmissing-declarations) -ocv_define_module(cudabgsegm opencv_video OPTIONAL opencv_legacy opencv_imgproc opencv_cudaarithm opencv_cudafilters opencv_cudaimgproc) +ocv_define_module(cudabgsegm opencv_video OPTIONAL opencv_imgproc opencv_cudaarithm opencv_cudafilters opencv_cudaimgproc) diff --git a/modules/cudabgsegm/perf/perf_bgsegm.cpp b/modules/cudabgsegm/perf/perf_bgsegm.cpp index 9d3da2927f..6e1ab46788 100644 --- a/modules/cudabgsegm/perf/perf_bgsegm.cpp +++ b/modules/cudabgsegm/perf/perf_bgsegm.cpp @@ -42,10 +42,6 @@ #include "perf_precomp.hpp" -#ifdef HAVE_OPENCV_LEGACY -# include "opencv2/legacy.hpp" -#endif - #ifdef HAVE_OPENCV_CUDAIMGPROC # include "opencv2/cudaimgproc.hpp" #endif @@ -72,18 +68,6 @@ using namespace perf; #if BUILD_WITH_VIDEO_INPUT_SUPPORT -#ifdef HAVE_OPENCV_LEGACY - -namespace cv -{ - template<> void DefaultDeleter::operator ()(CvBGStatModel* obj) const - { - cvReleaseBGStatModel(&obj); - } -} - -#endif - DEF_PARAM_TEST_1(Video, string); PERF_TEST_P(Video, FGDStatModel, @@ -150,48 +134,7 @@ PERF_TEST_P(Video, FGDStatModel, } else { -#ifdef HAVE_OPENCV_LEGACY - IplImage ipl_frame = frame; - cv::Ptr model(cvCreateFGDStatModel(&ipl_frame)); - - int i = 0; - - // collect performance data - for (; i < numIters; ++i) - { - cap >> frame; - ASSERT_FALSE(frame.empty()); - - ipl_frame = frame; - - startTimer(); - if(!next()) - break; - - cvUpdateBGStatModel(&ipl_frame, model); - - stopTimer(); - } - - // process last frame in sequence to get data for sanity test - for (; i < numIters; ++i) - { - cap >> frame; - ASSERT_FALSE(frame.empty()); - - ipl_frame = frame; - - cvUpdateBGStatModel(&ipl_frame, model); - } - - const cv::Mat background = cv::cvarrToMat(model->background); - const cv::Mat foreground = cv::cvarrToMat(model->foreground); - - CPU_SANITY_CHECK(background); - CPU_SANITY_CHECK(foreground); -#else FAIL_NO_CPU(); -#endif } } diff --git a/modules/cudabgsegm/test/test_bgsegm.cpp b/modules/cudabgsegm/test/test_bgsegm.cpp index 75d6d73a3f..89fd69474c 100644 --- a/modules/cudabgsegm/test/test_bgsegm.cpp +++ b/modules/cudabgsegm/test/test_bgsegm.cpp @@ -42,10 +42,6 @@ #include "test_precomp.hpp" -#ifdef HAVE_OPENCV_LEGACY -# include "opencv2/legacy.hpp" -#endif - #ifdef HAVE_CUDA using namespace cvtest; @@ -63,80 +59,6 @@ using namespace cvtest; # define BUILD_WITH_VIDEO_INPUT_SUPPORT 0 #endif -////////////////////////////////////////////////////// -// FGDStatModel - -#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined(HAVE_OPENCV_LEGACY) - -namespace cv -{ - template<> void DefaultDeleter::operator ()(CvBGStatModel* obj) const - { - cvReleaseBGStatModel(&obj); - } -} - -PARAM_TEST_CASE(FGDStatModel, cv::cuda::DeviceInfo, std::string) -{ - cv::cuda::DeviceInfo devInfo; - std::string inputFile; - - virtual void SetUp() - { - devInfo = GET_PARAM(0); - cv::cuda::setDevice(devInfo.deviceID()); - - inputFile = std::string(cvtest::TS::ptr()->get_data_path()) + "video/" + GET_PARAM(1); - } -}; - -CUDA_TEST_P(FGDStatModel, Update) -{ - cv::VideoCapture cap(inputFile); - ASSERT_TRUE(cap.isOpened()); - - cv::Mat frame; - cap >> frame; - ASSERT_FALSE(frame.empty()); - - IplImage ipl_frame = frame; - cv::Ptr model(cvCreateFGDStatModel(&ipl_frame)); - - cv::cuda::GpuMat d_frame(frame); - cv::Ptr d_fgd = cv::cuda::createBackgroundSubtractorFGD(); - cv::cuda::GpuMat d_foreground, d_background; - std::vector< std::vector > foreground_regions; - d_fgd->apply(d_frame, d_foreground); - - for (int i = 0; i < 5; ++i) - { - cap >> frame; - ASSERT_FALSE(frame.empty()); - - ipl_frame = frame; - int gold_count = cvUpdateBGStatModel(&ipl_frame, model); - - d_frame.upload(frame); - d_fgd->apply(d_frame, d_foreground); - d_fgd->getBackgroundImage(d_background); - d_fgd->getForegroundRegions(foreground_regions); - int count = (int) foreground_regions.size(); - - cv::Mat gold_background = cv::cvarrToMat(model->background); - cv::Mat gold_foreground = cv::cvarrToMat(model->foreground); - - ASSERT_MAT_NEAR(gold_background, d_background, 1.0); - ASSERT_MAT_NEAR(gold_foreground, d_foreground, 0.0); - ASSERT_EQ(gold_count, count); - } -} - -INSTANTIATE_TEST_CASE_P(CUDA_BgSegm, FGDStatModel, testing::Combine( - ALL_DEVICES, - testing::Values(std::string("768x576.avi")))); - -#endif - ////////////////////////////////////////////////////// // MOG diff --git a/modules/cudacodec/CMakeLists.txt b/modules/cudacodec/CMakeLists.txt index ace7cb3763..90599766ad 100644 --- a/modules/cudacodec/CMakeLists.txt +++ b/modules/cudacodec/CMakeLists.txt @@ -6,7 +6,7 @@ set(the_description "CUDA-accelerated Video Encoding/Decoding") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef) -ocv_add_module(cudacodec opencv_highgui OPTIONAL opencv_cudev) +ocv_add_module(cudacodec opencv_core opencv_videoio OPTIONAL opencv_cudev) ocv_module_include_directories() ocv_glob_module_sources() @@ -23,7 +23,5 @@ endif() ocv_create_module(${extra_libs}) -ocv_add_precompiled_headers(${the_module}) - ocv_add_accuracy_tests() ocv_add_perf_tests() diff --git a/modules/cudaoptflow/CMakeLists.txt b/modules/cudaoptflow/CMakeLists.txt index b7a2109fbb..f2d3e3da0b 100644 --- a/modules/cudaoptflow/CMakeLists.txt +++ b/modules/cudaoptflow/CMakeLists.txt @@ -6,4 +6,4 @@ set(the_description "CUDA-accelerated Optical Flow") ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127 /wd4324 /wd4512 -Wundef -Wmissing-declarations) -ocv_define_module(cudaoptflow opencv_video opencv_legacy opencv_cudaarithm opencv_cudawarping opencv_cudaimgproc OPTIONAL opencv_cudalegacy) +ocv_define_module(cudaoptflow opencv_video opencv_cudaarithm opencv_cudawarping opencv_cudaimgproc OPTIONAL opencv_cudalegacy) diff --git a/modules/cudaoptflow/perf/perf_optflow.cpp b/modules/cudaoptflow/perf/perf_optflow.cpp index 6c312ad0be..71ab895082 100644 --- a/modules/cudaoptflow/perf/perf_optflow.cpp +++ b/modules/cudaoptflow/perf/perf_optflow.cpp @@ -41,7 +41,6 @@ //M*/ #include "perf_precomp.hpp" -#include "opencv2/legacy.hpp" using namespace std; using namespace testing; @@ -389,24 +388,6 @@ PERF_TEST_P(ImagePair, OpticalFlowDual_TVL1, ////////////////////////////////////////////////////// // OpticalFlowBM -void calcOpticalFlowBM(const cv::Mat& prev, const cv::Mat& curr, - cv::Size bSize, cv::Size shiftSize, cv::Size maxRange, int usePrevious, - cv::Mat& velx, cv::Mat& vely) -{ - cv::Size sz((curr.cols - bSize.width + shiftSize.width)/shiftSize.width, (curr.rows - bSize.height + shiftSize.height)/shiftSize.height); - - velx.create(sz, CV_32FC1); - vely.create(sz, CV_32FC1); - - CvMat cvprev = prev; - CvMat cvcurr = curr; - - CvMat cvvelx = velx; - CvMat cvvely = vely; - - cvCalcOpticalFlowBM(&cvprev, &cvcurr, bSize, shiftSize, maxRange, usePrevious, &cvvelx, &cvvely); -} - PERF_TEST_P(ImagePair, OpticalFlowBM, Values(make_pair("gpu/opticalflow/frame0.png", "gpu/opticalflow/frame1.png"))) { @@ -435,12 +416,7 @@ PERF_TEST_P(ImagePair, OpticalFlowBM, } else { - cv::Mat u, v; - - TEST_CYCLE() calcOpticalFlowBM(frame0, frame1, block_size, shift_size, max_range, false, u, v); - - CPU_SANITY_CHECK(u); - CPU_SANITY_CHECK(v); + FAIL_NO_CPU(); } } diff --git a/modules/cudaoptflow/test/test_optflow.cpp b/modules/cudaoptflow/test/test_optflow.cpp index 110fed0339..1de40510dd 100644 --- a/modules/cudaoptflow/test/test_optflow.cpp +++ b/modules/cudaoptflow/test/test_optflow.cpp @@ -41,7 +41,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/legacy.hpp" #ifdef HAVE_CUDA @@ -370,65 +369,6 @@ INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowDual_TVL1, testing::Combine( ALL_DEVICES, WHOLE_SUBMAT)); -////////////////////////////////////////////////////// -// OpticalFlowBM - -namespace -{ - void calcOpticalFlowBM(const cv::Mat& prev, const cv::Mat& curr, - cv::Size bSize, cv::Size shiftSize, cv::Size maxRange, int usePrevious, - cv::Mat& velx, cv::Mat& vely) - { - cv::Size sz((curr.cols - bSize.width + shiftSize.width)/shiftSize.width, (curr.rows - bSize.height + shiftSize.height)/shiftSize.height); - - velx.create(sz, CV_32FC1); - vely.create(sz, CV_32FC1); - - CvMat cvprev = prev; - CvMat cvcurr = curr; - - CvMat cvvelx = velx; - CvMat cvvely = vely; - - cvCalcOpticalFlowBM(&cvprev, &cvcurr, bSize, shiftSize, maxRange, usePrevious, &cvvelx, &cvvely); - } -} - -struct OpticalFlowBM : testing::TestWithParam -{ -}; - -CUDA_TEST_P(OpticalFlowBM, Accuracy) -{ - cv::cuda::DeviceInfo devInfo = GetParam(); - cv::cuda::setDevice(devInfo.deviceID()); - - cv::Mat frame0 = readImage("opticalflow/rubberwhale1.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(frame0.empty()); - cv::resize(frame0, frame0, cv::Size(), 0.5, 0.5); - - cv::Mat frame1 = readImage("opticalflow/rubberwhale2.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(frame1.empty()); - cv::resize(frame1, frame1, cv::Size(), 0.5, 0.5); - - cv::Size block_size(8, 8); - cv::Size shift_size(1, 1); - cv::Size max_range(8, 8); - - cv::cuda::GpuMat d_velx, d_vely, buf; - cv::cuda::calcOpticalFlowBM(loadMat(frame0), loadMat(frame1), - block_size, shift_size, max_range, false, - d_velx, d_vely, buf); - - cv::Mat velx, vely; - calcOpticalFlowBM(frame0, frame1, block_size, shift_size, max_range, false, velx, vely); - - EXPECT_MAT_NEAR(velx, d_velx, 0); - EXPECT_MAT_NEAR(vely, d_vely, 0); -} - -INSTANTIATE_TEST_CASE_P(CUDA_OptFlow, OpticalFlowBM, ALL_DEVICES); - ////////////////////////////////////////////////////// // FastOpticalFlowBM diff --git a/modules/cudastereo/src/cuda/disparity_bilateral_filter.cu b/modules/cudastereo/src/cuda/disparity_bilateral_filter.cu index b5de989ae7..a9f2d2650c 100644 --- a/modules/cudastereo/src/cuda/disparity_bilateral_filter.cu +++ b/modules/cudastereo/src/cuda/disparity_bilateral_filter.cu @@ -45,34 +45,12 @@ #include "opencv2/core/cuda/common.hpp" #include "opencv2/core/cuda/limits.hpp" +#include "cuda/disparity_bilateral_filter.hpp" + namespace cv { namespace cuda { namespace device { namespace disp_bilateral_filter { - __constant__ float* ctable_color; - __constant__ float* ctable_space; - __constant__ size_t ctable_space_step; - - __constant__ int cndisp; - __constant__ int cradius; - - __constant__ short cedge_disc; - __constant__ short cmax_disc; - - void disp_load_constants(float* table_color, PtrStepSzf table_space, int ndisp, int radius, short edge_disc, short max_disc) - { - cudaSafeCall( cudaMemcpyToSymbol(ctable_color, &table_color, sizeof(table_color)) ); - cudaSafeCall( cudaMemcpyToSymbol(ctable_space, &table_space.data, sizeof(table_space.data)) ); - size_t table_space_step = table_space.step / sizeof(float); - cudaSafeCall( cudaMemcpyToSymbol(ctable_space_step, &table_space_step, sizeof(size_t)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cndisp, &ndisp, sizeof(int)) ); - cudaSafeCall( cudaMemcpyToSymbol(cradius, &radius, sizeof(int)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cedge_disc, &edge_disc, sizeof(short)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmax_disc, &max_disc, sizeof(short)) ); - } - template struct DistRgbMax { @@ -95,7 +73,11 @@ namespace cv { namespace cuda { namespace device }; template - __global__ void disp_bilateral_filter(int t, T* disp, size_t disp_step, const uchar* img, size_t img_step, int h, int w) + __global__ void disp_bilateral_filter(int t, T* disp, size_t disp_step, + const uchar* img, size_t img_step, int h, int w, + const float* ctable_color, const float * ctable_space, size_t ctable_space_step, + int cradius, + short cedge_disc, short cmax_disc) { const int y = blockIdx.y * blockDim.y + threadIdx.y; const int x = ((blockIdx.x * blockDim.x + threadIdx.x) << 1) + ((y + t) & 1); @@ -178,7 +160,7 @@ namespace cv { namespace cuda { namespace device } template - void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, cudaStream_t stream) + void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, const float *table_color, const float* table_space, size_t table_step, int radius, short edge_disc, short max_disc, cudaStream_t stream) { dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -190,20 +172,20 @@ namespace cv { namespace cuda { namespace device case 1: for (int i = 0; i < iters; ++i) { - disp_bilateral_filter<1><<>>(0, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols); + disp_bilateral_filter<1><<>>(0, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols, table_color, table_space, table_step, radius, edge_disc, max_disc); cudaSafeCall( cudaGetLastError() ); - disp_bilateral_filter<1><<>>(1, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols); + disp_bilateral_filter<1><<>>(1, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols, table_color, table_space, table_step, radius, edge_disc, max_disc); cudaSafeCall( cudaGetLastError() ); } break; case 3: for (int i = 0; i < iters; ++i) { - disp_bilateral_filter<3><<>>(0, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols); + disp_bilateral_filter<3><<>>(0, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols, table_color, table_space, table_step, radius, edge_disc, max_disc); cudaSafeCall( cudaGetLastError() ); - disp_bilateral_filter<3><<>>(1, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols); + disp_bilateral_filter<3><<>>(1, disp.data, disp.step/sizeof(T), img.data, img.step, disp.rows, disp.cols, table_color, table_space, table_step, radius, edge_disc, max_disc); cudaSafeCall( cudaGetLastError() ); } break; @@ -215,8 +197,8 @@ namespace cv { namespace cuda { namespace device cudaSafeCall( cudaDeviceSynchronize() ); } - template void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, cudaStream_t stream); - template void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, cudaStream_t stream); + template void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, const float *table_color, const float *table_space, size_t table_step, int radius, short, short, cudaStream_t stream); + template void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, const float *table_color, const float *table_space, size_t table_step, int radius, short, short, cudaStream_t stream); } // namespace bilateral_filter }}} // namespace cv { namespace cuda { namespace cudev diff --git a/modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp b/modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp new file mode 100644 index 0000000000..95be834573 --- /dev/null +++ b/modules/cudastereo/src/cuda/disparity_bilateral_filter.hpp @@ -0,0 +1,8 @@ +namespace cv { namespace cuda { namespace device +{ + namespace disp_bilateral_filter + { + template + void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, const float *, const float *, size_t, int radius, short edge_disc, short max_disc, cudaStream_t stream); + } +}}} diff --git a/modules/cudastereo/src/cuda/stereocsbp.cu b/modules/cudastereo/src/cuda/stereocsbp.cu index b1426607dd..dd535e8b20 100644 --- a/modules/cudastereo/src/cuda/stereocsbp.cu +++ b/modules/cudastereo/src/cuda/stereocsbp.cu @@ -48,109 +48,61 @@ #include "opencv2/core/cuda/reduce.hpp" #include "opencv2/core/cuda/functional.hpp" +#include "cuda/stereocsbp.hpp" + namespace cv { namespace cuda { namespace device { namespace stereocsbp { - /////////////////////////////////////////////////////////////// - /////////////////////// load constants //////////////////////// - /////////////////////////////////////////////////////////////// - - __constant__ int cndisp; - - __constant__ float cmax_data_term; - __constant__ float cdata_weight; - __constant__ float cmax_disc_term; - __constant__ float cdisc_single_jump; - - __constant__ int cth; - - __constant__ size_t cimg_step; - __constant__ size_t cmsg_step; - __constant__ size_t cdisp_step1; - __constant__ size_t cdisp_step2; - - __constant__ uchar* cleft; - __constant__ uchar* cright; - __constant__ uchar* ctemp; - - - void load_constants(int ndisp, float max_data_term, float data_weight, float max_disc_term, float disc_single_jump, int min_disp_th, - const PtrStepSzb& left, const PtrStepSzb& right, const PtrStepSzb& temp) - { - cudaSafeCall( cudaMemcpyToSymbol(cndisp, &ndisp, sizeof(int)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cmax_data_term, &max_data_term, sizeof(float)) ); - cudaSafeCall( cudaMemcpyToSymbol(cdata_weight, &data_weight, sizeof(float)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmax_disc_term, &max_disc_term, sizeof(float)) ); - cudaSafeCall( cudaMemcpyToSymbol(cdisc_single_jump, &disc_single_jump, sizeof(float)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cth, &min_disp_th, sizeof(int)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cimg_step, &left.step, sizeof(size_t)) ); - - cudaSafeCall( cudaMemcpyToSymbol(cleft, &left.data, sizeof(left.data)) ); - cudaSafeCall( cudaMemcpyToSymbol(cright, &right.data, sizeof(right.data)) ); - cudaSafeCall( cudaMemcpyToSymbol(ctemp, &temp.data, sizeof(temp.data)) ); - } - /////////////////////////////////////////////////////////////// /////////////////////// init data cost //////////////////////// /////////////////////////////////////////////////////////////// - template struct DataCostPerPixel; - template <> struct DataCostPerPixel<1> + template static float __device__ pixeldiff(const uchar* left, const uchar* right, float max_data_term); + template<> __device__ __forceinline__ static float pixeldiff<1>(const uchar* left, const uchar* right, float max_data_term) { - static __device__ __forceinline__ float compute(const uchar* left, const uchar* right) - { - return fmin(cdata_weight * ::abs((int)*left - *right), cdata_weight * cmax_data_term); - } - }; - template <> struct DataCostPerPixel<3> + return fmin( ::abs((int)*left - *right), max_data_term); + } + template<> __device__ __forceinline__ static float pixeldiff<3>(const uchar* left, const uchar* right, float max_data_term) { - static __device__ __forceinline__ float compute(const uchar* left, const uchar* right) - { - float tb = 0.114f * ::abs((int)left[0] - right[0]); - float tg = 0.587f * ::abs((int)left[1] - right[1]); - float tr = 0.299f * ::abs((int)left[2] - right[2]); + float tb = 0.114f * ::abs((int)left[0] - right[0]); + float tg = 0.587f * ::abs((int)left[1] - right[1]); + float tr = 0.299f * ::abs((int)left[2] - right[2]); - return fmin(cdata_weight * (tr + tg + tb), cdata_weight * cmax_data_term); - } - }; - template <> struct DataCostPerPixel<4> + return fmin(tr + tg + tb, max_data_term); + } + template<> __device__ __forceinline__ static float pixeldiff<4>(const uchar* left, const uchar* right, float max_data_term) { - static __device__ __forceinline__ float compute(const uchar* left, const uchar* right) - { - uchar4 l = *((const uchar4*)left); - uchar4 r = *((const uchar4*)right); + uchar4 l = *((const uchar4*)left); + uchar4 r = *((const uchar4*)right); - float tb = 0.114f * ::abs((int)l.x - r.x); - float tg = 0.587f * ::abs((int)l.y - r.y); - float tr = 0.299f * ::abs((int)l.z - r.z); + float tb = 0.114f * ::abs((int)l.x - r.x); + float tg = 0.587f * ::abs((int)l.y - r.y); + float tr = 0.299f * ::abs((int)l.z - r.z); - return fmin(cdata_weight * (tr + tg + tb), cdata_weight * cmax_data_term); - } - }; + return fmin(tr + tg + tb, max_data_term); + } template - __global__ void get_first_k_initial_global(T* data_cost_selected_, T *selected_disp_pyr, int h, int w, int nr_plane) + __global__ void get_first_k_initial_global(uchar *ctemp, T* data_cost_selected_, T *selected_disp_pyr, int h, int w, int nr_plane, int ndisp, + size_t msg_step, size_t disp_step) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; if (y < h && x < w) { - T* selected_disparity = selected_disp_pyr + y * cmsg_step + x; - T* data_cost_selected = data_cost_selected_ + y * cmsg_step + x; - T* data_cost = (T*)ctemp + y * cmsg_step + x; + T* selected_disparity = selected_disp_pyr + y * msg_step + x; + T* data_cost_selected = data_cost_selected_ + y * msg_step + x; + T* data_cost = (T*)ctemp + y * msg_step + x; for(int i = 0; i < nr_plane; i++) { T minimum = device::numeric_limits::max(); int id = 0; - for(int d = 0; d < cndisp; d++) + for(int d = 0; d < ndisp; d++) { - T cur = data_cost[d * cdisp_step1]; + T cur = data_cost[d * disp_step]; if(cur < minimum) { minimum = cur; @@ -158,46 +110,47 @@ namespace cv { namespace cuda { namespace device } } - data_cost_selected[i * cdisp_step1] = minimum; - selected_disparity[i * cdisp_step1] = id; - data_cost [id * cdisp_step1] = numeric_limits::max(); + data_cost_selected[i * disp_step] = minimum; + selected_disparity[i * disp_step] = id; + data_cost [id * disp_step] = numeric_limits::max(); } } } template - __global__ void get_first_k_initial_local(T* data_cost_selected_, T* selected_disp_pyr, int h, int w, int nr_plane) + __global__ void get_first_k_initial_local(uchar *ctemp, T* data_cost_selected_, T* selected_disp_pyr, int h, int w, int nr_plane, int ndisp, + size_t msg_step, size_t disp_step) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; if (y < h && x < w) { - T* selected_disparity = selected_disp_pyr + y * cmsg_step + x; - T* data_cost_selected = data_cost_selected_ + y * cmsg_step + x; - T* data_cost = (T*)ctemp + y * cmsg_step + x; + T* selected_disparity = selected_disp_pyr + y * msg_step + x; + T* data_cost_selected = data_cost_selected_ + y * msg_step + x; + T* data_cost = (T*)ctemp + y * msg_step + x; int nr_local_minimum = 0; - T prev = data_cost[0 * cdisp_step1]; - T cur = data_cost[1 * cdisp_step1]; - T next = data_cost[2 * cdisp_step1]; + T prev = data_cost[0 * disp_step]; + T cur = data_cost[1 * disp_step]; + T next = data_cost[2 * disp_step]; - for (int d = 1; d < cndisp - 1 && nr_local_minimum < nr_plane; d++) + for (int d = 1; d < ndisp - 1 && nr_local_minimum < nr_plane; d++) { if (cur < prev && cur < next) { - data_cost_selected[nr_local_minimum * cdisp_step1] = cur; - selected_disparity[nr_local_minimum * cdisp_step1] = d; + data_cost_selected[nr_local_minimum * disp_step] = cur; + selected_disparity[nr_local_minimum * disp_step] = d; - data_cost[d * cdisp_step1] = numeric_limits::max(); + data_cost[d * disp_step] = numeric_limits::max(); nr_local_minimum++; } prev = cur; cur = next; - next = data_cost[(d + 1) * cdisp_step1]; + next = data_cost[(d + 1) * disp_step]; } for (int i = nr_local_minimum; i < nr_plane; i++) @@ -205,25 +158,27 @@ namespace cv { namespace cuda { namespace device T minimum = numeric_limits::max(); int id = 0; - for (int d = 0; d < cndisp; d++) + for (int d = 0; d < ndisp; d++) { - cur = data_cost[d * cdisp_step1]; + cur = data_cost[d * disp_step]; if (cur < minimum) { minimum = cur; id = d; } } - data_cost_selected[i * cdisp_step1] = minimum; - selected_disparity[i * cdisp_step1] = id; + data_cost_selected[i * disp_step] = minimum; + selected_disparity[i * disp_step] = id; - data_cost[id * cdisp_step1] = numeric_limits::max(); + data_cost[id * disp_step] = numeric_limits::max(); } } } template - __global__ void init_data_cost(int h, int w, int level) + __global__ void init_data_cost(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, + int h, int w, int level, int ndisp, float data_weight, float max_data_term, + int min_disp, size_t msg_step, size_t disp_step) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; @@ -236,9 +191,9 @@ namespace cv { namespace cuda { namespace device int x0 = x << level; int xt = (x + 1) << level; - T* data_cost = (T*)ctemp + y * cmsg_step + x; + T* data_cost = (T*)ctemp + y * msg_step + x; - for(int d = 0; d < cndisp; ++d) + for(int d = 0; d < ndisp; ++d) { float val = 0.0f; for(int yi = y0; yi < yt; yi++) @@ -246,24 +201,26 @@ namespace cv { namespace cuda { namespace device for(int xi = x0; xi < xt; xi++) { int xr = xi - d; - if(d < cth || xr < 0) - val += cdata_weight * cmax_data_term; + if(d < min_disp || xr < 0) + val += data_weight * max_data_term; else { const uchar* lle = cleft + yi * cimg_step + xi * channels; const uchar* lri = cright + yi * cimg_step + xr * channels; - val += DataCostPerPixel::compute(lle, lri); + val += data_weight * pixeldiff(lle, lri, max_data_term); } } } - data_cost[cdisp_step1 * d] = saturate_cast(val); + data_cost[disp_step * d] = saturate_cast(val); } } } template - __global__ void init_data_cost_reduce(int level, int rows, int cols, int h) + __global__ void init_data_cost_reduce(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, + int level, int rows, int cols, int h, int ndisp, float data_weight, float max_data_term, + int min_disp, size_t msg_step, size_t disp_step) { int x_out = blockIdx.x; int y_out = blockIdx.y % h; @@ -271,7 +228,7 @@ namespace cv { namespace cuda { namespace device int tid = threadIdx.x; - if (d < cndisp) + if (d < ndisp) { int x0 = x_out << level; int y0 = y_out << level; @@ -281,8 +238,8 @@ namespace cv { namespace cuda { namespace device float val = 0.0f; if (x0 + tid < cols) { - if (x0 + tid - d < 0 || d < cth) - val = cdata_weight * cmax_data_term * len; + if (x0 + tid - d < 0 || d < min_disp) + val = data_weight * max_data_term * len; else { const uchar* lle = cleft + y0 * cimg_step + channels * (x0 + tid ); @@ -290,7 +247,7 @@ namespace cv { namespace cuda { namespace device for(int y = 0; y < len; ++y) { - val += DataCostPerPixel::compute(lle, lri); + val += data_weight * pixeldiff(lle, lri, max_data_term); lle += cimg_step; lri += cimg_step; @@ -302,16 +259,16 @@ namespace cv { namespace cuda { namespace device reduce(smem + winsz * threadIdx.z, val, tid, plus()); - T* data_cost = (T*)ctemp + y_out * cmsg_step + x_out; + T* data_cost = (T*)ctemp + y_out * msg_step + x_out; if (tid == 0) - data_cost[cdisp_step1 * d] = saturate_cast(val); + data_cost[disp_step * d] = saturate_cast(val); } } template - void init_data_cost_caller_(int /*rows*/, int /*cols*/, int h, int w, int level, int /*ndisp*/, int channels, cudaStream_t stream) + void init_data_cost_caller_(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int /*rows*/, int /*cols*/, int h, int w, int level, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step, cudaStream_t stream) { dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -321,15 +278,15 @@ namespace cv { namespace cuda { namespace device switch (channels) { - case 1: init_data_cost<<>>(h, w, level); break; - case 3: init_data_cost<<>>(h, w, level); break; - case 4: init_data_cost<<>>(h, w, level); break; + case 1: init_data_cost<<>>(cleft, cright, ctemp, cimg_step, h, w, level, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; + case 3: init_data_cost<<>>(cleft, cright, ctemp, cimg_step, h, w, level, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; + case 4: init_data_cost<<>>(cleft, cright, ctemp, cimg_step, h, w, level, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; default: CV_Error(cv::Error::BadNumChannels, "Unsupported channels count"); } } template - void init_data_cost_reduce_caller_(int rows, int cols, int h, int w, int level, int ndisp, int channels, cudaStream_t stream) + void init_data_cost_reduce_caller_(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int rows, int cols, int h, int w, int level, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step, cudaStream_t stream) { const int threadsNum = 256; const size_t smem_size = threadsNum * sizeof(float); @@ -340,19 +297,19 @@ namespace cv { namespace cuda { namespace device switch (channels) { - case 1: init_data_cost_reduce<<>>(level, rows, cols, h); break; - case 3: init_data_cost_reduce<<>>(level, rows, cols, h); break; - case 4: init_data_cost_reduce<<>>(level, rows, cols, h); break; + case 1: init_data_cost_reduce<<>>(cleft, cright, ctemp, cimg_step, level, rows, cols, h, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; + case 3: init_data_cost_reduce<<>>(cleft, cright, ctemp, cimg_step, level, rows, cols, h, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; + case 4: init_data_cost_reduce<<>>(cleft, cright, ctemp, cimg_step, level, rows, cols, h, ndisp, data_weight, max_data_term, min_disp, msg_step, disp_step); break; default: CV_Error(cv::Error::BadNumChannels, "Unsupported channels count"); } } template - void init_data_cost(int rows, int cols, T* disp_selected_pyr, T* data_cost_selected, size_t msg_step, - int h, int w, int level, int nr_plane, int ndisp, int channels, bool use_local_init_data_cost, cudaStream_t stream) + void init_data_cost(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int rows, int cols, T* disp_selected_pyr, T* data_cost_selected, size_t msg_step, + int h, int w, int level, int nr_plane, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, bool use_local_init_data_cost, cudaStream_t stream) { - typedef void (*InitDataCostCaller)(int cols, int rows, int w, int h, int level, int ndisp, int channels, cudaStream_t stream); + typedef void (*InitDataCostCaller)(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int cols, int rows, int w, int h, int level, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step, cudaStream_t stream); static const InitDataCostCaller init_data_cost_callers[] = { @@ -362,10 +319,8 @@ namespace cv { namespace cuda { namespace device }; size_t disp_step = msg_step * h; - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step1, &disp_step, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmsg_step, &msg_step, sizeof(size_t)) ); - init_data_cost_callers[level](rows, cols, h, w, level, ndisp, channels, stream); + init_data_cost_callers[level](cleft, cright, ctemp, cimg_step, rows, cols, h, w, level, ndisp, channels, data_weight, max_data_term, min_disp, msg_step, disp_step, stream); cudaSafeCall( cudaGetLastError() ); if (stream == 0) @@ -378,9 +333,9 @@ namespace cv { namespace cuda { namespace device grid.y = divUp(h, threads.y); if (use_local_init_data_cost == true) - get_first_k_initial_local<<>> (data_cost_selected, disp_selected_pyr, h, w, nr_plane); + get_first_k_initial_local<<>> (ctemp, data_cost_selected, disp_selected_pyr, h, w, nr_plane, ndisp, msg_step, disp_step); else - get_first_k_initial_global<<>>(data_cost_selected, disp_selected_pyr, h, w, nr_plane); + get_first_k_initial_global<<>>(ctemp, data_cost_selected, disp_selected_pyr, h, w, nr_plane, ndisp, msg_step, disp_step); cudaSafeCall( cudaGetLastError() ); @@ -388,18 +343,18 @@ namespace cv { namespace cuda { namespace device cudaSafeCall( cudaDeviceSynchronize() ); } - template void init_data_cost(int rows, int cols, short* disp_selected_pyr, short* data_cost_selected, size_t msg_step, - int h, int w, int level, int nr_plane, int ndisp, int channels, bool use_local_init_data_cost, cudaStream_t stream); + template void init_data_cost(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int rows, int cols, short* disp_selected_pyr, short* data_cost_selected, size_t msg_step, + int h, int w, int level, int nr_plane, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, bool use_local_init_data_cost, cudaStream_t stream); - template void init_data_cost(int rows, int cols, float* disp_selected_pyr, float* data_cost_selected, size_t msg_step, - int h, int w, int level, int nr_plane, int ndisp, int channels, bool use_local_init_data_cost, cudaStream_t stream); + template void init_data_cost(const uchar *cleft, const uchar *cright, uchar *ctemp, size_t cimg_step, int rows, int cols, float* disp_selected_pyr, float* data_cost_selected, size_t msg_step, + int h, int w, int level, int nr_plane, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, bool use_local_init_data_cost, cudaStream_t stream); /////////////////////////////////////////////////////////////// ////////////////////// compute data cost ////////////////////// /////////////////////////////////////////////////////////////// template - __global__ void compute_data_cost(const T* selected_disp_pyr, T* data_cost_, int h, int w, int level, int nr_plane) + __global__ void compute_data_cost(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* selected_disp_pyr, T* data_cost_, int h, int w, int level, int nr_plane, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step1, size_t disp_step2) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; @@ -412,8 +367,8 @@ namespace cv { namespace cuda { namespace device int x0 = x << level; int xt = (x + 1) << level; - const T* selected_disparity = selected_disp_pyr + y/2 * cmsg_step + x/2; - T* data_cost = data_cost_ + y * cmsg_step + x; + const T* selected_disparity = selected_disp_pyr + y/2 * msg_step + x/2; + T* data_cost = data_cost_ + y * msg_step + x; for(int d = 0; d < nr_plane; d++) { @@ -422,27 +377,27 @@ namespace cv { namespace cuda { namespace device { for(int xi = x0; xi < xt; xi++) { - int sel_disp = selected_disparity[d * cdisp_step2]; + int sel_disp = selected_disparity[d * disp_step2]; int xr = xi - sel_disp; - if (xr < 0 || sel_disp < cth) - val += cdata_weight * cmax_data_term; + if (xr < 0 || sel_disp < min_disp) + val += data_weight * max_data_term; else { const uchar* left_x = cleft + yi * cimg_step + xi * channels; const uchar* right_x = cright + yi * cimg_step + xr * channels; - val += DataCostPerPixel::compute(left_x, right_x); + val += data_weight * pixeldiff(left_x, right_x, max_data_term); } } } - data_cost[cdisp_step1 * d] = saturate_cast(val); + data_cost[disp_step1 * d] = saturate_cast(val); } } } template - __global__ void compute_data_cost_reduce(const T* selected_disp_pyr, T* data_cost_, int level, int rows, int cols, int h, int nr_plane) + __global__ void compute_data_cost_reduce(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* selected_disp_pyr, T* data_cost_, int level, int rows, int cols, int h, int nr_plane, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step1, size_t disp_step2) { int x_out = blockIdx.x; int y_out = blockIdx.y % h; @@ -450,12 +405,12 @@ namespace cv { namespace cuda { namespace device int tid = threadIdx.x; - const T* selected_disparity = selected_disp_pyr + y_out/2 * cmsg_step + x_out/2; - T* data_cost = data_cost_ + y_out * cmsg_step + x_out; + const T* selected_disparity = selected_disp_pyr + y_out/2 * msg_step + x_out/2; + T* data_cost = data_cost_ + y_out * msg_step + x_out; if (d < nr_plane) { - int sel_disp = selected_disparity[d * cdisp_step2]; + int sel_disp = selected_disparity[d * disp_step2]; int x0 = x_out << level; int y0 = y_out << level; @@ -465,8 +420,8 @@ namespace cv { namespace cuda { namespace device float val = 0.0f; if (x0 + tid < cols) { - if (x0 + tid - sel_disp < 0 || sel_disp < cth) - val = cdata_weight * cmax_data_term * len; + if (x0 + tid - sel_disp < 0 || sel_disp < min_disp) + val = data_weight * max_data_term * len; else { const uchar* lle = cleft + y0 * cimg_step + channels * (x0 + tid ); @@ -474,7 +429,7 @@ namespace cv { namespace cuda { namespace device for(int y = 0; y < len; ++y) { - val += DataCostPerPixel::compute(lle, lri); + val += data_weight * pixeldiff(lle, lri, max_data_term); lle += cimg_step; lri += cimg_step; @@ -487,13 +442,13 @@ namespace cv { namespace cuda { namespace device reduce(smem + winsz * threadIdx.z, val, tid, plus()); if (tid == 0) - data_cost[cdisp_step1 * d] = saturate_cast(val); + data_cost[disp_step1 * d] = saturate_cast(val); } } template - void compute_data_cost_caller_(const T* disp_selected_pyr, T* data_cost, int /*rows*/, int /*cols*/, - int h, int w, int level, int nr_plane, int channels, cudaStream_t stream) + void compute_data_cost_caller_(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* disp_selected_pyr, T* data_cost, int /*rows*/, int /*cols*/, + int h, int w, int level, int nr_plane, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step1, size_t disp_step2, cudaStream_t stream) { dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -503,16 +458,16 @@ namespace cv { namespace cuda { namespace device switch(channels) { - case 1: compute_data_cost<<>>(disp_selected_pyr, data_cost, h, w, level, nr_plane); break; - case 3: compute_data_cost<<>>(disp_selected_pyr, data_cost, h, w, level, nr_plane); break; - case 4: compute_data_cost<<>>(disp_selected_pyr, data_cost, h, w, level, nr_plane); break; + case 1: compute_data_cost<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, h, w, level, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; + case 3: compute_data_cost<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, h, w, level, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; + case 4: compute_data_cost<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, h, w, level, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; default: CV_Error(cv::Error::BadNumChannels, "Unsupported channels count"); } } template - void compute_data_cost_reduce_caller_(const T* disp_selected_pyr, T* data_cost, int rows, int cols, - int h, int w, int level, int nr_plane, int channels, cudaStream_t stream) + void compute_data_cost_reduce_caller_(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* disp_selected_pyr, T* data_cost, int rows, int cols, + int h, int w, int level, int nr_plane, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step1, size_t disp_step2, cudaStream_t stream) { const int threadsNum = 256; const size_t smem_size = threadsNum * sizeof(float); @@ -523,19 +478,20 @@ namespace cv { namespace cuda { namespace device switch (channels) { - case 1: compute_data_cost_reduce<<>>(disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane); break; - case 3: compute_data_cost_reduce<<>>(disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane); break; - case 4: compute_data_cost_reduce<<>>(disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane); break; + case 1: compute_data_cost_reduce<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; + case 3: compute_data_cost_reduce<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; + case 4: compute_data_cost_reduce<<>>(cleft, cright, cimg_step, disp_selected_pyr, data_cost, level, rows, cols, h, nr_plane, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2); break; default: CV_Error(cv::Error::BadNumChannels, "Unsupported channels count"); } } template - void compute_data_cost(const T* disp_selected_pyr, T* data_cost, size_t msg_step, - int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, cudaStream_t stream) + void compute_data_cost(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* disp_selected_pyr, T* data_cost, size_t msg_step, + int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, float data_weight, float max_data_term, + int min_disp, cudaStream_t stream) { - typedef void (*ComputeDataCostCaller)(const T* disp_selected_pyr, T* data_cost, int rows, int cols, - int h, int w, int level, int nr_plane, int channels, cudaStream_t stream); + typedef void (*ComputeDataCostCaller)(const uchar *cleft, const uchar *cright, size_t cimg_step, const T* disp_selected_pyr, T* data_cost, int rows, int cols, + int h, int w, int level, int nr_plane, int channels, float data_weight, float max_data_term, int min_disp, size_t msg_step, size_t disp_step1, size_t disp_step2, cudaStream_t stream); static const ComputeDataCostCaller callers[] = { @@ -546,22 +502,19 @@ namespace cv { namespace cuda { namespace device size_t disp_step1 = msg_step * h; size_t disp_step2 = msg_step * h2; - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step1, &disp_step1, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step2, &disp_step2, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmsg_step, &msg_step, sizeof(size_t)) ); - callers[level](disp_selected_pyr, data_cost, rows, cols, h, w, level, nr_plane, channels, stream); + callers[level](cleft, cright, cimg_step, disp_selected_pyr, data_cost, rows, cols, h, w, level, nr_plane, channels, data_weight, max_data_term, min_disp, msg_step, disp_step1, disp_step2, stream); cudaSafeCall( cudaGetLastError() ); if (stream == 0) cudaSafeCall( cudaDeviceSynchronize() ); } - template void compute_data_cost(const short* disp_selected_pyr, short* data_cost, size_t msg_step, - int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, cudaStream_t stream); + template void compute_data_cost(const uchar *cleft, const uchar *cright, size_t cimg_step, const short* disp_selected_pyr, short* data_cost, size_t msg_step, + int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, float data_weight, float max_data_term, int min_disp, cudaStream_t stream); - template void compute_data_cost(const float* disp_selected_pyr, float* data_cost, size_t msg_step, - int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, cudaStream_t stream); + template void compute_data_cost(const uchar *cleft, const uchar *cright, size_t cimg_step, const float* disp_selected_pyr, float* data_cost, size_t msg_step, + int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, float data_weight, float max_data_term, int min_disp, cudaStream_t stream); /////////////////////////////////////////////////////////////// @@ -574,7 +527,7 @@ namespace cv { namespace cuda { namespace device const T* u_cur, const T* d_cur, const T* l_cur, const T* r_cur, T* data_cost_selected, T* disparity_selected_new, T* data_cost_new, const T* data_cost_cur, const T* disparity_selected_cur, - int nr_plane, int nr_plane2) + int nr_plane, int nr_plane2, size_t disp_step1, size_t disp_step2) { for(int i = 0; i < nr_plane; i++) { @@ -582,7 +535,7 @@ namespace cv { namespace cuda { namespace device int id = 0; for(int j = 0; j < nr_plane2; j++) { - T cur = data_cost_new[j * cdisp_step1]; + T cur = data_cost_new[j * disp_step1]; if(cur < minimum) { minimum = cur; @@ -590,70 +543,72 @@ namespace cv { namespace cuda { namespace device } } - data_cost_selected[i * cdisp_step1] = data_cost_cur[id * cdisp_step1]; - disparity_selected_new[i * cdisp_step1] = disparity_selected_cur[id * cdisp_step2]; + data_cost_selected[i * disp_step1] = data_cost_cur[id * disp_step1]; + disparity_selected_new[i * disp_step1] = disparity_selected_cur[id * disp_step2]; - u_new[i * cdisp_step1] = u_cur[id * cdisp_step2]; - d_new[i * cdisp_step1] = d_cur[id * cdisp_step2]; - l_new[i * cdisp_step1] = l_cur[id * cdisp_step2]; - r_new[i * cdisp_step1] = r_cur[id * cdisp_step2]; + u_new[i * disp_step1] = u_cur[id * disp_step2]; + d_new[i * disp_step1] = d_cur[id * disp_step2]; + l_new[i * disp_step1] = l_cur[id * disp_step2]; + r_new[i * disp_step1] = r_cur[id * disp_step2]; - data_cost_new[id * cdisp_step1] = numeric_limits::max(); + data_cost_new[id * disp_step1] = numeric_limits::max(); } } template - __global__ void init_message(T* u_new_, T* d_new_, T* l_new_, T* r_new_, + __global__ void init_message(uchar *ctemp, T* u_new_, T* d_new_, T* l_new_, T* r_new_, const T* u_cur_, const T* d_cur_, const T* l_cur_, const T* r_cur_, T* selected_disp_pyr_new, const T* selected_disp_pyr_cur, T* data_cost_selected_, const T* data_cost_, - int h, int w, int nr_plane, int h2, int w2, int nr_plane2) + int h, int w, int nr_plane, int h2, int w2, int nr_plane2, + size_t msg_step, size_t disp_step1, size_t disp_step2) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; if (y < h && x < w) { - const T* u_cur = u_cur_ + ::min(h2-1, y/2 + 1) * cmsg_step + x/2; - const T* d_cur = d_cur_ + ::max(0, y/2 - 1) * cmsg_step + x/2; - const T* l_cur = l_cur_ + (y/2) * cmsg_step + ::min(w2-1, x/2 + 1); - const T* r_cur = r_cur_ + (y/2) * cmsg_step + ::max(0, x/2 - 1); + const T* u_cur = u_cur_ + ::min(h2-1, y/2 + 1) * msg_step + x/2; + const T* d_cur = d_cur_ + ::max(0, y/2 - 1) * msg_step + x/2; + const T* l_cur = l_cur_ + (y/2) * msg_step + ::min(w2-1, x/2 + 1); + const T* r_cur = r_cur_ + (y/2) * msg_step + ::max(0, x/2 - 1); - T* data_cost_new = (T*)ctemp + y * cmsg_step + x; + T* data_cost_new = (T*)ctemp + y * msg_step + x; - const T* disparity_selected_cur = selected_disp_pyr_cur + y/2 * cmsg_step + x/2; - const T* data_cost = data_cost_ + y * cmsg_step + x; + const T* disparity_selected_cur = selected_disp_pyr_cur + y/2 * msg_step + x/2; + const T* data_cost = data_cost_ + y * msg_step + x; for(int d = 0; d < nr_plane2; d++) { - int idx2 = d * cdisp_step2; + int idx2 = d * disp_step2; - T val = data_cost[d * cdisp_step1] + u_cur[idx2] + d_cur[idx2] + l_cur[idx2] + r_cur[idx2]; - data_cost_new[d * cdisp_step1] = val; + T val = data_cost[d * disp_step1] + u_cur[idx2] + d_cur[idx2] + l_cur[idx2] + r_cur[idx2]; + data_cost_new[d * disp_step1] = val; } - T* data_cost_selected = data_cost_selected_ + y * cmsg_step + x; - T* disparity_selected_new = selected_disp_pyr_new + y * cmsg_step + x; + T* data_cost_selected = data_cost_selected_ + y * msg_step + x; + T* disparity_selected_new = selected_disp_pyr_new + y * msg_step + x; - T* u_new = u_new_ + y * cmsg_step + x; - T* d_new = d_new_ + y * cmsg_step + x; - T* l_new = l_new_ + y * cmsg_step + x; - T* r_new = r_new_ + y * cmsg_step + x; + T* u_new = u_new_ + y * msg_step + x; + T* d_new = d_new_ + y * msg_step + x; + T* l_new = l_new_ + y * msg_step + x; + T* r_new = r_new_ + y * msg_step + x; - u_cur = u_cur_ + y/2 * cmsg_step + x/2; - d_cur = d_cur_ + y/2 * cmsg_step + x/2; - l_cur = l_cur_ + y/2 * cmsg_step + x/2; - r_cur = r_cur_ + y/2 * cmsg_step + x/2; + u_cur = u_cur_ + y/2 * msg_step + x/2; + d_cur = d_cur_ + y/2 * msg_step + x/2; + l_cur = l_cur_ + y/2 * msg_step + x/2; + r_cur = r_cur_ + y/2 * msg_step + x/2; get_first_k_element_increase(u_new, d_new, l_new, r_new, u_cur, d_cur, l_cur, r_cur, data_cost_selected, disparity_selected_new, data_cost_new, - data_cost, disparity_selected_cur, nr_plane, nr_plane2); + data_cost, disparity_selected_cur, nr_plane, nr_plane2, + disp_step1, disp_step2); } } template - void init_message(T* u_new, T* d_new, T* l_new, T* r_new, + void init_message(uchar *ctemp, T* u_new, T* d_new, T* l_new, T* r_new, const T* u_cur, const T* d_cur, const T* l_cur, const T* r_cur, T* selected_disp_pyr_new, const T* selected_disp_pyr_cur, T* data_cost_selected, const T* data_cost, size_t msg_step, @@ -662,9 +617,6 @@ namespace cv { namespace cuda { namespace device size_t disp_step1 = msg_step * h; size_t disp_step2 = msg_step * h2; - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step1, &disp_step1, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step2, &disp_step2, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmsg_step, &msg_step, sizeof(size_t)) ); dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -672,11 +624,12 @@ namespace cv { namespace cuda { namespace device grid.x = divUp(w, threads.x); grid.y = divUp(h, threads.y); - init_message<<>>(u_new, d_new, l_new, r_new, + init_message<<>>(ctemp, u_new, d_new, l_new, r_new, u_cur, d_cur, l_cur, r_cur, selected_disp_pyr_new, selected_disp_pyr_cur, data_cost_selected, data_cost, - h, w, nr_plane, h2, w2, nr_plane2); + h, w, nr_plane, h2, w2, nr_plane2, + msg_step, disp_step1, disp_step2); cudaSafeCall( cudaGetLastError() ); if (stream == 0) @@ -684,13 +637,13 @@ namespace cv { namespace cuda { namespace device } - template void init_message(short* u_new, short* d_new, short* l_new, short* r_new, + template void init_message(uchar *ctemp, short* u_new, short* d_new, short* l_new, short* r_new, const short* u_cur, const short* d_cur, const short* l_cur, const short* r_cur, short* selected_disp_pyr_new, const short* selected_disp_pyr_cur, short* data_cost_selected, const short* data_cost, size_t msg_step, int h, int w, int nr_plane, int h2, int w2, int nr_plane2, cudaStream_t stream); - template void init_message(float* u_new, float* d_new, float* l_new, float* r_new, + template void init_message(uchar *ctemp, float* u_new, float* d_new, float* l_new, float* r_new, const float* u_cur, const float* d_cur, const float* l_cur, const float* r_cur, float* selected_disp_pyr_new, const float* selected_disp_pyr_cur, float* data_cost_selected, const float* data_cost, size_t msg_step, @@ -702,13 +655,14 @@ namespace cv { namespace cuda { namespace device template __device__ void message_per_pixel(const T* data, T* msg_dst, const T* msg1, const T* msg2, const T* msg3, - const T* dst_disp, const T* src_disp, int nr_plane, volatile T* temp) + const T* dst_disp, const T* src_disp, int nr_plane, int max_disc_term, float disc_single_jump, volatile T* temp, + size_t disp_step) { T minimum = numeric_limits::max(); for(int d = 0; d < nr_plane; d++) { - int idx = d * cdisp_step1; + int idx = d * disp_step; T val = data[idx] + msg1[idx] + msg2[idx] + msg3[idx]; if(val < minimum) @@ -720,55 +674,53 @@ namespace cv { namespace cuda { namespace device float sum = 0; for(int d = 0; d < nr_plane; d++) { - float cost_min = minimum + cmax_disc_term; - T src_disp_reg = src_disp[d * cdisp_step1]; + float cost_min = minimum + max_disc_term; + T src_disp_reg = src_disp[d * disp_step]; for(int d2 = 0; d2 < nr_plane; d2++) - cost_min = fmin(cost_min, msg_dst[d2 * cdisp_step1] + cdisc_single_jump * ::abs(dst_disp[d2 * cdisp_step1] - src_disp_reg)); + cost_min = fmin(cost_min, msg_dst[d2 * disp_step] + disc_single_jump * ::abs(dst_disp[d2 * disp_step] - src_disp_reg)); - temp[d * cdisp_step1] = saturate_cast(cost_min); + temp[d * disp_step] = saturate_cast(cost_min); sum += cost_min; } sum /= nr_plane; for(int d = 0; d < nr_plane; d++) - msg_dst[d * cdisp_step1] = saturate_cast(temp[d * cdisp_step1] - sum); + msg_dst[d * disp_step] = saturate_cast(temp[d * disp_step] - sum); } template - __global__ void compute_message(T* u_, T* d_, T* l_, T* r_, const T* data_cost_selected, const T* selected_disp_pyr_cur, int h, int w, int nr_plane, int i) + __global__ void compute_message(uchar *ctemp, T* u_, T* d_, T* l_, T* r_, const T* data_cost_selected, const T* selected_disp_pyr_cur, int h, int w, int nr_plane, int i, int max_disc_term, float disc_single_jump, size_t msg_step, size_t disp_step) { int y = blockIdx.y * blockDim.y + threadIdx.y; int x = ((blockIdx.x * blockDim.x + threadIdx.x) << 1) + ((y + i) & 1); if (y > 0 && y < h - 1 && x > 0 && x < w - 1) { - const T* data = data_cost_selected + y * cmsg_step + x; + const T* data = data_cost_selected + y * msg_step + x; - T* u = u_ + y * cmsg_step + x; - T* d = d_ + y * cmsg_step + x; - T* l = l_ + y * cmsg_step + x; - T* r = r_ + y * cmsg_step + x; + T* u = u_ + y * msg_step + x; + T* d = d_ + y * msg_step + x; + T* l = l_ + y * msg_step + x; + T* r = r_ + y * msg_step + x; - const T* disp = selected_disp_pyr_cur + y * cmsg_step + x; + const T* disp = selected_disp_pyr_cur + y * msg_step + x; - T* temp = (T*)ctemp + y * cmsg_step + x; + T* temp = (T*)ctemp + y * msg_step + x; - message_per_pixel(data, u, r - 1, u + cmsg_step, l + 1, disp, disp - cmsg_step, nr_plane, temp); - message_per_pixel(data, d, d - cmsg_step, r - 1, l + 1, disp, disp + cmsg_step, nr_plane, temp); - message_per_pixel(data, l, u + cmsg_step, d - cmsg_step, l + 1, disp, disp - 1, nr_plane, temp); - message_per_pixel(data, r, u + cmsg_step, d - cmsg_step, r - 1, disp, disp + 1, nr_plane, temp); + message_per_pixel(data, u, r - 1, u + msg_step, l + 1, disp, disp - msg_step, nr_plane, max_disc_term, disc_single_jump, temp, disp_step); + message_per_pixel(data, d, d - msg_step, r - 1, l + 1, disp, disp + msg_step, nr_plane, max_disc_term, disc_single_jump, temp, disp_step); + message_per_pixel(data, l, u + msg_step, d - msg_step, l + 1, disp, disp - 1, nr_plane, max_disc_term, disc_single_jump, temp, disp_step); + message_per_pixel(data, r, u + msg_step, d - msg_step, r - 1, disp, disp + 1, nr_plane, max_disc_term, disc_single_jump, temp, disp_step); } } template - void calc_all_iterations(T* u, T* d, T* l, T* r, const T* data_cost_selected, - const T* selected_disp_pyr_cur, size_t msg_step, int h, int w, int nr_plane, int iters, cudaStream_t stream) + void calc_all_iterations(uchar *ctemp, T* u, T* d, T* l, T* r, const T* data_cost_selected, + const T* selected_disp_pyr_cur, size_t msg_step, int h, int w, int nr_plane, int iters, int max_disc_term, float disc_single_jump, cudaStream_t stream) { size_t disp_step = msg_step * h; - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step1, &disp_step, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmsg_step, &msg_step, sizeof(size_t)) ); dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -778,18 +730,18 @@ namespace cv { namespace cuda { namespace device for(int t = 0; t < iters; ++t) { - compute_message<<>>(u, d, l, r, data_cost_selected, selected_disp_pyr_cur, h, w, nr_plane, t & 1); + compute_message<<>>(ctemp, u, d, l, r, data_cost_selected, selected_disp_pyr_cur, h, w, nr_plane, t & 1, max_disc_term, disc_single_jump, msg_step, disp_step); cudaSafeCall( cudaGetLastError() ); } if (stream == 0) cudaSafeCall( cudaDeviceSynchronize() ); }; - template void calc_all_iterations(short* u, short* d, short* l, short* r, const short* data_cost_selected, const short* selected_disp_pyr_cur, size_t msg_step, - int h, int w, int nr_plane, int iters, cudaStream_t stream); + template void calc_all_iterations(uchar *ctemp, short* u, short* d, short* l, short* r, const short* data_cost_selected, const short* selected_disp_pyr_cur, size_t msg_step, + int h, int w, int nr_plane, int iters, int max_disc_term, float disc_single_jump, cudaStream_t stream); - template void calc_all_iterations(float* u, float* d, float* l, float* r, const float* data_cost_selected, const float* selected_disp_pyr_cur, size_t msg_step, - int h, int w, int nr_plane, int iters, cudaStream_t stream); + template void calc_all_iterations(uchar *ctemp, float* u, float* d, float* l, float* r, const float* data_cost_selected, const float* selected_disp_pyr_cur, size_t msg_step, + int h, int w, int nr_plane, int iters, int max_disc_term, float disc_single_jump, cudaStream_t stream); /////////////////////////////////////////////////////////////// @@ -800,26 +752,26 @@ namespace cv { namespace cuda { namespace device template __global__ void compute_disp(const T* u_, const T* d_, const T* l_, const T* r_, const T* data_cost_selected, const T* disp_selected_pyr, - PtrStepSz disp, int nr_plane) + PtrStepSz disp, int nr_plane, size_t msg_step, size_t disp_step) { int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y; if (y > 0 && y < disp.rows - 1 && x > 0 && x < disp.cols - 1) { - const T* data = data_cost_selected + y * cmsg_step + x; - const T* disp_selected = disp_selected_pyr + y * cmsg_step + x; + const T* data = data_cost_selected + y * msg_step + x; + const T* disp_selected = disp_selected_pyr + y * msg_step + x; - const T* u = u_ + (y+1) * cmsg_step + (x+0); - const T* d = d_ + (y-1) * cmsg_step + (x+0); - const T* l = l_ + (y+0) * cmsg_step + (x+1); - const T* r = r_ + (y+0) * cmsg_step + (x-1); + const T* u = u_ + (y+1) * msg_step + (x+0); + const T* d = d_ + (y-1) * msg_step + (x+0); + const T* l = l_ + (y+0) * msg_step + (x+1); + const T* r = r_ + (y+0) * msg_step + (x-1); int best = 0; T best_val = numeric_limits::max(); for (int i = 0; i < nr_plane; ++i) { - int idx = i * cdisp_step1; + int idx = i * disp_step; T val = data[idx]+ u[idx] + d[idx] + l[idx] + r[idx]; if (val < best_val) @@ -837,8 +789,6 @@ namespace cv { namespace cuda { namespace device const PtrStepSz& disp, int nr_plane, cudaStream_t stream) { size_t disp_step = disp.rows * msg_step; - cudaSafeCall( cudaMemcpyToSymbol(cdisp_step1, &disp_step, sizeof(size_t)) ); - cudaSafeCall( cudaMemcpyToSymbol(cmsg_step, &msg_step, sizeof(size_t)) ); dim3 threads(32, 8, 1); dim3 grid(1, 1, 1); @@ -846,7 +796,7 @@ namespace cv { namespace cuda { namespace device grid.x = divUp(disp.cols, threads.x); grid.y = divUp(disp.rows, threads.y); - compute_disp<<>>(u, d, l, r, data_cost_selected, disp_selected, disp, nr_plane); + compute_disp<<>>(u, d, l, r, data_cost_selected, disp_selected, disp, nr_plane, msg_step, disp_step); cudaSafeCall( cudaGetLastError() ); if (stream == 0) diff --git a/modules/cudastereo/src/cuda/stereocsbp.hpp b/modules/cudastereo/src/cuda/stereocsbp.hpp new file mode 100644 index 0000000000..305497292d --- /dev/null +++ b/modules/cudastereo/src/cuda/stereocsbp.hpp @@ -0,0 +1,29 @@ +namespace cv { namespace cuda { namespace device +{ + namespace stereocsbp + { + template + void init_data_cost(const uchar *left, const uchar *right, uchar *ctemp, size_t cimg_step, int rows, int cols, T* disp_selected_pyr, T* data_cost_selected, size_t msg_step, + int h, int w, int level, int nr_plane, int ndisp, int channels, float data_weight, float max_data_term, int min_disp, bool use_local_init_data_cost, cudaStream_t stream); + + template + void compute_data_cost(const uchar *left, const uchar *right, size_t cimg_step, const T* disp_selected_pyr, T* data_cost, size_t msg_step, + int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, float data_weight, float max_data_term, + int min_disp, cudaStream_t stream); + + template + void init_message(uchar *ctemp, T* u_new, T* d_new, T* l_new, T* r_new, + const T* u_cur, const T* d_cur, const T* l_cur, const T* r_cur, + T* selected_disp_pyr_new, const T* selected_disp_pyr_cur, + T* data_cost_selected, const T* data_cost, size_t msg_step, + int h, int w, int nr_plane, int h2, int w2, int nr_plane2, cudaStream_t stream); + + template + void calc_all_iterations(uchar *ctemp, T* u, T* d, T* l, T* r, const T* data_cost_selected, + const T* selected_disp_pyr_cur, size_t msg_step, int h, int w, int nr_plane, int iters, int max_disc_term, float disc_single_jump, cudaStream_t stream); + + template + void compute_disp(const T* u, const T* d, const T* l, const T* r, const T* data_cost_selected, const T* disp_selected, size_t msg_step, + const PtrStepSz& disp, int nr_plane, cudaStream_t stream); + } +}}} diff --git a/modules/cudastereo/src/disparity_bilateral_filter.cpp b/modules/cudastereo/src/disparity_bilateral_filter.cpp index 75cbce48a9..c59e3b2cb4 100644 --- a/modules/cudastereo/src/disparity_bilateral_filter.cpp +++ b/modules/cudastereo/src/disparity_bilateral_filter.cpp @@ -51,16 +51,7 @@ Ptr cv::cuda::createDisparityBilateralFilter(int #else /* !defined (HAVE_CUDA) */ -namespace cv { namespace cuda { namespace device -{ - namespace disp_bilateral_filter - { - void disp_load_constants(float* table_color, PtrStepSzf table_space, int ndisp, int radius, short edge_disc, short max_disc); - - template - void disp_bilateral_filter(PtrStepSz disp, PtrStepSzb img, int channels, int iters, cudaStream_t stream); - } -}}} +#include "cuda/disparity_bilateral_filter.hpp" namespace { @@ -165,7 +156,7 @@ namespace const short edge_disc = std::max(short(1), short(ndisp * edge_threshold + 0.5)); const short max_disc = short(ndisp * max_disc_threshold + 0.5); - disp_load_constants(table_color.ptr(), table_space, ndisp, radius, edge_disc, max_disc); + size_t table_space_step = table_space.step / sizeof(float); _dst.create(disp.size(), disp.type()); GpuMat dst = _dst.getGpuMat(); @@ -173,7 +164,7 @@ namespace if (dst.data != disp.data) disp.copyTo(dst, stream); - disp_bilateral_filter(dst, img, img.channels(), iters, StreamAccessor::getStream(stream)); + disp_bilateral_filter(dst, img, img.channels(), iters, table_color.ptr(), (float *)table_space.data, table_space_step, radius, edge_disc, max_disc, StreamAccessor::getStream(stream)); } void DispBilateralFilterImpl::apply(InputArray _disp, InputArray _image, OutputArray dst, Stream& stream) diff --git a/modules/cudastereo/src/stereocsbp.cpp b/modules/cudastereo/src/stereocsbp.cpp index 474562baf2..ded5fa20e1 100644 --- a/modules/cudastereo/src/stereocsbp.cpp +++ b/modules/cudastereo/src/stereocsbp.cpp @@ -53,37 +53,7 @@ Ptr cv::cuda::createStereoConstantSpaceBP(int, int, #else /* !defined (HAVE_CUDA) */ -namespace cv { namespace cuda { namespace device -{ - namespace stereocsbp - { - void load_constants(int ndisp, float max_data_term, float data_weight, float max_disc_term, float disc_single_jump, int min_disp_th, - const PtrStepSzb& left, const PtrStepSzb& right, const PtrStepSzb& temp); - - template - void init_data_cost(int rows, int cols, T* disp_selected_pyr, T* data_cost_selected, size_t msg_step, - int h, int w, int level, int nr_plane, int ndisp, int channels, bool use_local_init_data_cost, cudaStream_t stream); - - template - void compute_data_cost(const T* disp_selected_pyr, T* data_cost, size_t msg_step, - int rows, int cols, int h, int w, int h2, int level, int nr_plane, int channels, cudaStream_t stream); - - template - void init_message(T* u_new, T* d_new, T* l_new, T* r_new, - const T* u_cur, const T* d_cur, const T* l_cur, const T* r_cur, - T* selected_disp_pyr_new, const T* selected_disp_pyr_cur, - T* data_cost_selected, const T* data_cost, size_t msg_step, - int h, int w, int nr_plane, int h2, int w2, int nr_plane2, cudaStream_t stream); - - template - void calc_all_iterations(T* u, T* d, T* l, T* r, const T* data_cost_selected, - const T* selected_disp_pyr_cur, size_t msg_step, int h, int w, int nr_plane, int iters, cudaStream_t stream); - - template - void compute_disp(const T* u, const T* d, const T* l, const T* r, const T* data_cost_selected, const T* disp_selected, size_t msg_step, - const PtrStepSz& disp, int nr_plane, cudaStream_t stream); - } -}}} +#include "cuda/stereocsbp.hpp" namespace { @@ -252,8 +222,6 @@ namespace //////////////////////////////////////////////////////////////////////////// // Compute - load_constants(ndisp_, max_data_term_, data_weight_, max_disc_term_, disc_single_jump_, min_disp_th_, left, right, temp_); - l[0].setTo(0, _stream); d[0].setTo(0, _stream); r[0].setTo(0, _stream); @@ -275,17 +243,18 @@ namespace { if (i == levels_ - 1) { - init_data_cost(left.rows, left.cols, disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), - elem_step, rows_pyr[i], cols_pyr[i], i, nr_plane_pyr[i], ndisp_, left.channels(), use_local_init_data_cost_, stream); + init_data_cost(left.ptr(), right.ptr(), temp_.ptr(), left.step, left.rows, left.cols, disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), + elem_step, rows_pyr[i], cols_pyr[i], i, nr_plane_pyr[i], ndisp_, left.channels(), data_weight_, max_data_term_, min_disp_th_, use_local_init_data_cost_, stream); } else { - compute_data_cost(disp_selected_pyr[cur_idx].ptr(), data_cost.ptr(), elem_step, - left.rows, left.cols, rows_pyr[i], cols_pyr[i], rows_pyr[i+1], i, nr_plane_pyr[i+1], left.channels(), stream); + compute_data_cost(left.ptr(), right.ptr(), left.step, disp_selected_pyr[cur_idx].ptr(), data_cost.ptr(), elem_step, + left.rows, left.cols, rows_pyr[i], cols_pyr[i], rows_pyr[i+1], i, nr_plane_pyr[i+1], left.channels(), data_weight_, max_data_term_, min_disp_th_, stream); int new_idx = (cur_idx + 1) & 1; - init_message(u[new_idx].ptr(), d[new_idx].ptr(), l[new_idx].ptr(), r[new_idx].ptr(), + init_message(temp_.ptr(), + u[new_idx].ptr(), d[new_idx].ptr(), l[new_idx].ptr(), r[new_idx].ptr(), u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), disp_selected_pyr[new_idx].ptr(), disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), data_cost.ptr(), elem_step, rows_pyr[i], @@ -294,9 +263,9 @@ namespace cur_idx = new_idx; } - calc_all_iterations(u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), + calc_all_iterations(temp_.ptr(), u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), data_cost_selected.ptr(), disp_selected_pyr[cur_idx].ptr(), elem_step, - rows_pyr[i], cols_pyr[i], nr_plane_pyr[i], iters_, stream); + rows_pyr[i], cols_pyr[i], nr_plane_pyr[i], iters_, max_disc_term_, disc_single_jump_, stream); } } else @@ -305,17 +274,18 @@ namespace { if (i == levels_ - 1) { - init_data_cost(left.rows, left.cols, disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), - elem_step, rows_pyr[i], cols_pyr[i], i, nr_plane_pyr[i], ndisp_, left.channels(), use_local_init_data_cost_, stream); + init_data_cost(left.ptr(), right.ptr(), temp_.ptr(), left.step, left.rows, left.cols, disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), + elem_step, rows_pyr[i], cols_pyr[i], i, nr_plane_pyr[i], ndisp_, left.channels(), data_weight_, max_data_term_, min_disp_th_, use_local_init_data_cost_, stream); } else { - compute_data_cost(disp_selected_pyr[cur_idx].ptr(), data_cost.ptr(), elem_step, - left.rows, left.cols, rows_pyr[i], cols_pyr[i], rows_pyr[i+1], i, nr_plane_pyr[i+1], left.channels(), stream); + compute_data_cost(left.ptr(), right.ptr(), left.step, disp_selected_pyr[cur_idx].ptr(), data_cost.ptr(), elem_step, + left.rows, left.cols, rows_pyr[i], cols_pyr[i], rows_pyr[i+1], i, nr_plane_pyr[i+1], left.channels(), data_weight_, max_data_term_, min_disp_th_, stream); int new_idx = (cur_idx + 1) & 1; - init_message(u[new_idx].ptr(), d[new_idx].ptr(), l[new_idx].ptr(), r[new_idx].ptr(), + init_message(temp_.ptr(), + u[new_idx].ptr(), d[new_idx].ptr(), l[new_idx].ptr(), r[new_idx].ptr(), u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), disp_selected_pyr[new_idx].ptr(), disp_selected_pyr[cur_idx].ptr(), data_cost_selected.ptr(), data_cost.ptr(), elem_step, rows_pyr[i], @@ -324,9 +294,9 @@ namespace cur_idx = new_idx; } - calc_all_iterations(u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), + calc_all_iterations(temp_.ptr(), u[cur_idx].ptr(), d[cur_idx].ptr(), l[cur_idx].ptr(), r[cur_idx].ptr(), data_cost_selected.ptr(), disp_selected_pyr[cur_idx].ptr(), elem_step, - rows_pyr[i], cols_pyr[i], nr_plane_pyr[i], iters_, stream); + rows_pyr[i], cols_pyr[i], nr_plane_pyr[i], iters_, max_disc_term_, disc_single_jump_, stream); } } diff --git a/modules/cudev/test/CMakeLists.txt b/modules/cudev/test/CMakeLists.txt index 438e0a64c0..89213e236d 100644 --- a/modules/cudev/test/CMakeLists.txt +++ b/modules/cudev/test/CMakeLists.txt @@ -1,4 +1,4 @@ -set(test_deps opencv_cudev opencv_core opencv_imgproc opencv_highgui opencv_ts ${OPENCV_MODULE_opencv_ts_DEPS}) +set(test_deps opencv_cudev opencv_core opencv_imgproc opencv_imgcodecs opencv_videoio opencv_highgui opencv_ts ${OPENCV_MODULE_opencv_ts_DEPS}) ocv_check_dependencies(${test_deps}) @@ -29,7 +29,7 @@ if(OCV_DEPENDENCIES_FOUND) endforeach() CUDA_ADD_EXECUTABLE(${the_target} ${OPENCV_TEST_${the_module}_SOURCES}) - target_link_libraries(${the_target} ${test_deps} ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES}) + ocv_target_link_libraries(${the_target} ${test_deps} ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES}) add_dependencies(opencv_tests ${the_target}) # Additional target properties diff --git a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst index 4bb2ba1593..9c8b4ba081 100644 --- a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst +++ b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst @@ -84,38 +84,5 @@ Creates a descriptor extractor by name. The current implementation supports the following types of a descriptor extractor: - * ``"SIFT"`` -- :ocv:class:`SIFT` - * ``"SURF"`` -- :ocv:class:`SURF` - * ``"BRIEF"`` -- :ocv:class:`BriefDescriptorExtractor` * ``"BRISK"`` -- :ocv:class:`BRISK` - * ``"ORB"`` -- :ocv:class:`ORB` - * ``"FREAK"`` -- :ocv:class:`FREAK` - -A combined format is also supported: descriptor extractor adapter name ( ``"Opponent"`` -- -:ocv:class:`OpponentColorDescriptorExtractor` ) + descriptor extractor name (see above), -for example: ``"OpponentSIFT"`` . - - -OpponentColorDescriptorExtractor --------------------------------- -.. ocv:class:: OpponentColorDescriptorExtractor : public DescriptorExtractor - -Class adapting a descriptor extractor to compute descriptors in the Opponent Color Space -(refer to Van de Sande et al., CGIV 2008 *Color Descriptors for Object Category Recognition*). -Input RGB image is transformed in the Opponent Color Space. Then, an unadapted descriptor extractor -(set in the constructor) computes descriptors on each of three channels and concatenates -them into a single color descriptor. :: - - class OpponentColorDescriptorExtractor : public DescriptorExtractor - { - public: - OpponentColorDescriptorExtractor( const Ptr& dextractor ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - protected: - ... - }; + * ``"ORB"`` -- :ocv:class:`ORB` \ No newline at end of file diff --git a/modules/features2d/doc/common_interfaces_of_feature_detectors.rst b/modules/features2d/doc/common_interfaces_of_feature_detectors.rst index 62a99073bb..f4e4244457 100644 --- a/modules/features2d/doc/common_interfaces_of_feature_detectors.rst +++ b/modules/features2d/doc/common_interfaces_of_feature_detectors.rst @@ -72,22 +72,13 @@ Creates a feature detector by its name. The following detector types are supported: * ``"FAST"`` -- :ocv:class:`FastFeatureDetector` -* ``"STAR"`` -- :ocv:class:`StarFeatureDetector` -* ``"SIFT"`` -- :ocv:class:`SIFT` (nonfree module) -* ``"SURF"`` -- :ocv:class:`SURF` (nonfree module) * ``"ORB"`` -- :ocv:class:`ORB` * ``"BRISK"`` -- :ocv:class:`BRISK` * ``"MSER"`` -- :ocv:class:`MSER` * ``"GFTT"`` -- :ocv:class:`GoodFeaturesToTrackDetector` * ``"HARRIS"`` -- :ocv:class:`GoodFeaturesToTrackDetector` with Harris detector enabled -* ``"Dense"`` -- :ocv:class:`DenseFeatureDetector` * ``"SimpleBlob"`` -- :ocv:class:`SimpleBlobDetector` -Also a combined format is supported: feature detector adapter name ( ``"Grid"`` -- -:ocv:class:`GridAdaptedFeatureDetector`, ``"Pyramid"`` -- -:ocv:class:`PyramidAdaptedFeatureDetector` ) + feature detector name (see above), -for example: ``"GridFAST"``, ``"PyramidSTAR"`` . - FastFeatureDetector ------------------- .. ocv:class:: FastFeatureDetector : public FeatureDetector @@ -164,55 +155,6 @@ Wrapping class for feature detection using the ... }; - -StarFeatureDetector -------------------- -.. ocv:class:: StarFeatureDetector : public FeatureDetector - -The class implements the keypoint detector introduced by [Agrawal08]_, synonym of ``StarDetector``. :: - - class StarFeatureDetector : public FeatureDetector - { - public: - StarFeatureDetector( int maxSize=16, int responseThreshold=30, - int lineThresholdProjected = 10, - int lineThresholdBinarized=8, int suppressNonmaxSize=5 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - -.. [Agrawal08] Agrawal, M., Konolige, K., & Blas, M. R. (2008). Censure: Center surround extremas for realtime feature detection and matching. In Computer Vision–ECCV 2008 (pp. 102-115). Springer Berlin Heidelberg. - - -DenseFeatureDetector --------------------- -.. ocv:class:: DenseFeatureDetector : public FeatureDetector - -Class for generation of image features which are distributed densely and regularly over the image. :: - - class DenseFeatureDetector : public FeatureDetector - { - public: - DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1, - float featureScaleMul=0.1f, - int initXyStep=6, int initImgBound=0, - bool varyXyStepWithScale=true, - bool varyImgBoundWithScale=false ); - protected: - ... - }; - -The detector generates several levels (in the amount of ``featureScaleLevels``) of features. Features of each level are located in the nodes of a regular grid over the image (excluding the image boundary of given size). The level parameters (a feature scale, a node size, a size of boundary) are multiplied by ``featureScaleMul`` with level index growing depending on input flags, viz.: - -* Feature scale is multiplied always. - -* The grid node size is multiplied if ``varyXyStepWithScale`` is ``true``. - -* Size of image boundary is multiplied if ``varyImgBoundWithScale`` is ``true``. - - SimpleBlobDetector ------------------- .. ocv:class:: SimpleBlobDetector : public FeatureDetector @@ -277,226 +219,3 @@ This class performs several filtrations of returned blobs. You should set ``filt Default values of parameters are tuned to extract dark circular blobs. - -GridAdaptedFeatureDetector --------------------------- -.. ocv:class:: GridAdaptedFeatureDetector : public FeatureDetector - -Class adapting a detector to partition the source image into a grid and detect points in each cell. :: - - class GridAdaptedFeatureDetector : public FeatureDetector - { - public: - /* - * detector Detector that will be adapted. - * maxTotalKeypoints Maximum count of keypoints detected on the image. - * Only the strongest keypoints will be kept. - * gridRows Grid row count. - * gridCols Grid column count. - */ - GridAdaptedFeatureDetector( const Ptr& detector, - int maxTotalKeypoints, int gridRows=4, - int gridCols=4 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - -PyramidAdaptedFeatureDetector ------------------------------ -.. ocv:class:: PyramidAdaptedFeatureDetector : public FeatureDetector - -Class adapting a detector to detect points over multiple levels of a Gaussian pyramid. Consider using this class for detectors that are not inherently scaled. :: - - class PyramidAdaptedFeatureDetector : public FeatureDetector - { - public: - PyramidAdaptedFeatureDetector( const Ptr& detector, - int levels=2 ); - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - protected: - ... - }; - - -DynamicAdaptedFeatureDetector ------------------------------ -.. ocv:class:: DynamicAdaptedFeatureDetector : public FeatureDetector - -Adaptively adjusting detector that iteratively detects features until the desired number is found. :: - - class DynamicAdaptedFeatureDetector: public FeatureDetector - { - public: - DynamicAdaptedFeatureDetector( const Ptr& adjuster, - int min_features=400, int max_features=500, int max_iters=5 ); - ... - }; - -If the detector is persisted, it "remembers" the parameters -used for the last detection. In this case, the detector may be used for consistent numbers -of keypoints in a set of temporally related images, such as video streams or -panorama series. - -``DynamicAdaptedFeatureDetector`` uses another detector, such as FAST or SURF, to do the dirty work, -with the help of ``AdjusterAdapter`` . -If the detected number of features is not large enough, -``AdjusterAdapter`` adjusts the detection parameters so that the next detection -results in a bigger or smaller number of features. This is repeated until either the number of desired features are found -or the parameters are maxed out. - -Adapters can be easily implemented for any detector via the -``AdjusterAdapter`` interface. - -Beware that this is not thread-safe since the adjustment of parameters requires modification of the feature detector class instance. - -Example of creating ``DynamicAdaptedFeatureDetector`` : :: - - //sample usage: - //will create a detector that attempts to find - //100 - 110 FAST Keypoints, and will at most run - //FAST feature detection 10 times until that - //number of keypoints are found - Ptr detector(new DynamicAdaptedFeatureDetector (100, 110, 10, - new FastAdjuster(20,true))); - - -DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector ------------------------------------------------------------- -The constructor - -.. ocv:function:: DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector( const Ptr& adjuster, int min_features=400, int max_features=500, int max_iters=5 ) - - :param adjuster: :ocv:class:`AdjusterAdapter` that detects features and adjusts parameters. - - :param min_features: Minimum desired number of features. - - :param max_features: Maximum desired number of features. - - :param max_iters: Maximum number of times to try adjusting the feature detector parameters. For :ocv:class:`FastAdjuster` , this number can be high, but with ``Star`` or ``Surf`` many iterations can be time-consuming. At each iteration the detector is rerun. - -AdjusterAdapter ---------------- -.. ocv:class:: AdjusterAdapter : public FeatureDetector - -Class providing an interface for adjusting parameters of a feature detector. This interface is used by :ocv:class:`DynamicAdaptedFeatureDetector` . It is a wrapper for :ocv:class:`FeatureDetector` that enables adjusting parameters after feature detection. :: - - class AdjusterAdapter: public FeatureDetector - { - public: - virtual ~AdjusterAdapter() {} - virtual void tooFew(int min, int n_detected) = 0; - virtual void tooMany(int max, int n_detected) = 0; - virtual bool good() const = 0; - virtual Ptr clone() const = 0; - static Ptr create( const String& detectorType ); - }; - - -See -:ocv:class:`FastAdjuster`, -:ocv:class:`StarAdjuster`, and -:ocv:class:`SurfAdjuster` for concrete implementations. - -AdjusterAdapter::tooFew ---------------------------- -Adjusts the detector parameters to detect more features. - -.. ocv:function:: void AdjusterAdapter::tooFew(int min, int n_detected) - - :param min: Minimum desired number of features. - - :param n_detected: Number of features detected during the latest run. - -Example: :: - - void FastAdjuster::tooFew(int min, int n_detected) - { - thresh_--; - } - -AdjusterAdapter::tooMany ----------------------------- -Adjusts the detector parameters to detect less features. - -.. ocv:function:: void AdjusterAdapter::tooMany(int max, int n_detected) - - :param max: Maximum desired number of features. - - :param n_detected: Number of features detected during the latest run. - -Example: :: - - void FastAdjuster::tooMany(int min, int n_detected) - { - thresh_++; - } - - -AdjusterAdapter::good ---------------------- -Returns false if the detector parameters cannot be adjusted any more. - -.. ocv:function:: bool AdjusterAdapter::good() const - -Example: :: - - bool FastAdjuster::good() const - { - return (thresh_ > 1) && (thresh_ < 200); - } - -AdjusterAdapter::create ------------------------ -Creates an adjuster adapter by name - -.. ocv:function:: Ptr AdjusterAdapter::create( const String& detectorType ) - - Creates an adjuster adapter by name ``detectorType``. The detector name is the same as in :ocv:func:`FeatureDetector::create`, but now supports ``"FAST"``, ``"STAR"``, and ``"SURF"`` only. - -FastAdjuster ------------- -.. ocv:class:: FastAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for :ocv:class:`FastFeatureDetector`. This class decreases or increases the threshold value by 1. :: - - class FastAdjuster FastAdjuster: public AdjusterAdapter - { - public: - FastAdjuster(int init_thresh = 20, bool nonmax = true); - ... - }; - -StarAdjuster ------------- -.. ocv:class:: StarAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for :ocv:class:`StarFeatureDetector`. This class adjusts the ``responseThreshhold`` of ``StarFeatureDetector``. :: - - class StarAdjuster: public AdjusterAdapter - { - StarAdjuster(double initial_thresh = 30.0); - ... - }; - -SurfAdjuster ------------- -.. ocv:class:: SurfAdjuster : public AdjusterAdapter - -:ocv:class:`AdjusterAdapter` for ``SurfFeatureDetector``. :: - - class CV_EXPORTS SurfAdjuster: public AdjusterAdapter - { - public: - SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 ); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - - ... - }; diff --git a/modules/features2d/doc/common_interfaces_of_generic_descriptor_matchers.rst b/modules/features2d/doc/common_interfaces_of_generic_descriptor_matchers.rst deleted file mode 100644 index 5806b82285..0000000000 --- a/modules/features2d/doc/common_interfaces_of_generic_descriptor_matchers.rst +++ /dev/null @@ -1,276 +0,0 @@ -Common Interfaces of Generic Descriptor Matchers -================================================ - -.. highlight:: cpp - -Matchers of keypoint descriptors in OpenCV have wrappers with a common interface that enables you to easily switch -between different algorithms solving the same problem. This section is devoted to matching descriptors -that cannot be represented as vectors in a multidimensional space. ``GenericDescriptorMatcher`` is a more generic interface for descriptors. It does not make any assumptions about descriptor representation. -Every descriptor with the -:ocv:class:`DescriptorExtractor` interface has a wrapper with the ``GenericDescriptorMatcher`` interface (see -:ocv:class:`VectorDescriptorMatcher` ). -There are descriptors such as the One-way descriptor and Ferns that have the ``GenericDescriptorMatcher`` interface implemented but do not support ``DescriptorExtractor``. - -.. note:: - - * An example explaining keypoint description can be found at opencv_source_code/samples/cpp/descriptor_extractor_matcher.cpp - * An example on descriptor matching evaluation can be found at opencv_source_code/samples/cpp/detector_descriptor_matcher_evaluation.cpp - * An example on one to many image matching can be found at opencv_source_code/samples/cpp/matching_to_many_images.cpp - -GenericDescriptorMatcher ------------------------- -.. ocv:class:: GenericDescriptorMatcher - -Abstract interface for extracting and matching a keypoint descriptor. There are also :ocv:class:`DescriptorExtractor` and :ocv:class:`DescriptorMatcher` for these purposes but their interfaces are intended for descriptors represented as vectors in a multidimensional space. ``GenericDescriptorMatcher`` is a more generic interface for descriptors. ``DescriptorMatcher`` and ``GenericDescriptorMatcher`` have two groups of match methods: for matching keypoints of an image with another image or with an image set. :: - - class GenericDescriptorMatcher - { - public: - GenericDescriptorMatcher(); - virtual ~GenericDescriptorMatcher(); - - virtual void add( InputArrayOfArrays images, - vector >& keypoints ); - - const vector& getTrainImages() const; - const vector >& getTrainKeypoints() const; - virtual void clear(); - - virtual void train() = 0; - - virtual bool isMaskSupported() = 0; - - void classify( InputArray queryImage, - vector& queryKeypoints, - InputArray trainImage, - vector& trainKeypoints ) const; - void classify( InputArray queryImage, - vector& queryKeypoints ); - - /* - * Group of methods to match keypoints from an image pair. - */ - void match( InputArray queryImage, vector& queryKeypoints, - InputArray trainImage, vector& trainKeypoints, - vector& matches, InputArray mask=noArray() ) const; - void knnMatch( InputArray queryImage, vector& queryKeypoints, - InputArray trainImage, vector& trainKeypoints, - vector >& matches, int k, - InputArray mask=noArray(), bool compactResult=false ) const; - void radiusMatch( InputArray queryImage, vector& queryKeypoints, - InputArray trainImage, vector& trainKeypoints, - vector >& matches, float maxDistance, - InputArray mask=noArray(), bool compactResult=false ) const; - /* - * Group of methods to match keypoints from one image to an image set. - */ - void match( InputArray queryImage, vector& queryKeypoints, - vector& matches, InputArrayOfArrays masks=noArray() ); - void knnMatch( InputArray queryImage, vector& queryKeypoints, - vector >& matches, int k, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - void radiusMatch( InputArray queryImage, vector& queryKeypoints, - vector >& matches, float maxDistance, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - - virtual Ptr clone( bool emptyTrainData=false ) const = 0; - - protected: - ... - }; - - - - -GenericDescriptorMatcher::add ---------------------------------- -Adds images and their keypoints to the training collection stored in the class instance. - -.. ocv:function:: void GenericDescriptorMatcher::add( InputArrayOfArrays images, vector >& keypoints ) - - :param images: Image collection. - - :param keypoints: Point collection. It is assumed that ``keypoints[i]`` are keypoints detected in the image ``images[i]`` . - - - -GenericDescriptorMatcher::getTrainImages --------------------------------------------- -Returns a train image collection. - -.. ocv:function:: const vector& GenericDescriptorMatcher::getTrainImages() const - - - -GenericDescriptorMatcher::getTrainKeypoints ------------------------------------------------ -Returns a train keypoints collection. - -.. ocv:function:: const vector >& GenericDescriptorMatcher::getTrainKeypoints() const - - - -GenericDescriptorMatcher::clear ------------------------------------ -Clears a train collection (images and keypoints). - -.. ocv:function:: void GenericDescriptorMatcher::clear() - - - -GenericDescriptorMatcher::train ------------------------------------ -Trains descriptor matcher - -.. ocv:function:: void GenericDescriptorMatcher::train() - -Prepares descriptor matcher, for example, creates a tree-based structure, to extract descriptors or to optimize descriptors matching. - - -GenericDescriptorMatcher::isMaskSupported ---------------------------------------------- -Returns ``true`` if a generic descriptor matcher supports masking permissible matches. - -.. ocv:function:: bool GenericDescriptorMatcher::isMaskSupported() - - - -GenericDescriptorMatcher::classify --------------------------------------- -Classifies keypoints from a query set. - -.. ocv:function:: void GenericDescriptorMatcher::classify( InputArray queryImage, vector& queryKeypoints, InputArray trainImage, vector& trainKeypoints ) const - -.. ocv:function:: void GenericDescriptorMatcher::classify( InputArray queryImage, vector& queryKeypoints ) - - :param queryImage: Query image. - - :param queryKeypoints: Keypoints from a query image. - - :param trainImage: Train image. - - :param trainKeypoints: Keypoints from a train image. - -The method classifies each keypoint from a query set. The first variant of the method takes a train image and its keypoints as an input argument. The second variant uses the internally stored training collection that can be built using the ``GenericDescriptorMatcher::add`` method. - -The methods do the following: - -#. - Call the ``GenericDescriptorMatcher::match`` method to find correspondence between the query set and the training set. - -#. - Set the ``class_id`` field of each keypoint from the query set to ``class_id`` of the corresponding keypoint from the training set. - - - -GenericDescriptorMatcher::match ------------------------------------ -Finds the best match in the training set for each keypoint from the query set. - -.. ocv:function:: void GenericDescriptorMatcher::match(InputArray queryImage, vector& queryKeypoints, InputArray trainImage, vector& trainKeypoints, vector& matches, InputArray mask=noArray() ) const - -.. ocv:function:: void GenericDescriptorMatcher::match( InputArray queryImage, vector& queryKeypoints, vector& matches, InputArrayOfArrays masks=noArray() ) - - :param queryImage: Query image. - - :param queryKeypoints: Keypoints detected in ``queryImage`` . - - :param trainImage: Train image. It is not added to a train image collection stored in the class object. - - :param trainKeypoints: Keypoints detected in ``trainImage`` . They are not added to a train points collection stored in the class object. - - :param matches: Matches. If a query descriptor (keypoint) is masked out in ``mask`` , match is added for this descriptor. So, ``matches`` size may be smaller than the query keypoints count. - - :param mask: Mask specifying permissible matches between an input query and train keypoints. - - :param masks: Set of masks. Each ``masks[i]`` specifies permissible matches between input query keypoints and stored train keypoints from the i-th image. - -The methods find the best match for each query keypoint. In the first variant of the method, a train image and its keypoints are the input arguments. In the second variant, query keypoints are matched to the internally stored training collection that can be built using the ``GenericDescriptorMatcher::add`` method. Optional mask (or masks) can be passed to specify which query and training descriptors can be matched. Namely, ``queryKeypoints[i]`` can be matched with ``trainKeypoints[j]`` only if ``mask.at(i,j)`` is non-zero. - - - -GenericDescriptorMatcher::knnMatch --------------------------------------- -Finds the ``k`` best matches for each query keypoint. - -.. ocv:function:: void GenericDescriptorMatcher::knnMatch( InputArray queryImage, vector& queryKeypoints, InputArray trainImage, vector& trainKeypoints, vector >& matches, int k, InputArray mask=noArray(), bool compactResult=false ) const - -.. ocv:function:: void GenericDescriptorMatcher::knnMatch( InputArray queryImage, vector& queryKeypoints, vector >& matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false ) - -The methods are extended variants of ``GenericDescriptorMatch::match``. The parameters are similar, and the semantics is similar to ``DescriptorMatcher::knnMatch``. But this class does not require explicitly computed keypoint descriptors. - - - -GenericDescriptorMatcher::radiusMatch ------------------------------------------ -For each query keypoint, finds the training keypoints not farther than the specified distance. - -.. ocv:function:: void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, vector& queryKeypoints, InputArray trainImage, vector& trainKeypoints, vector >& matches, float maxDistance, InputArray mask=noArray(), bool compactResult=false ) const - -.. ocv:function:: void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, vector& queryKeypoints, vector >& matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false ) - -The methods are similar to ``DescriptorMatcher::radius``. But this class does not require explicitly computed keypoint descriptors. - - - -GenericDescriptorMatcher::read ----------------------------------- -Reads a matcher object from a file node. - -.. ocv:function:: void GenericDescriptorMatcher::read( const FileNode& fn ) - - - -GenericDescriptorMatcher::write ------------------------------------ -Writes a match object to a file storage. - -.. ocv:function:: void GenericDescriptorMatcher::write( FileStorage& fs ) const - - -GenericDescriptorMatcher::clone ------------------------------------ -Clones the matcher. - -.. ocv:function:: Ptr GenericDescriptorMatcher::clone( bool emptyTrainData=false ) const - - :param emptyTrainData: If ``emptyTrainData`` is false, the method creates a deep copy of the object, that is, copies - both parameters and train data. If ``emptyTrainData`` is true, the method creates an object copy with the current parameters - but with empty train data. - - -VectorDescriptorMatcher ------------------------ -.. ocv:class:: VectorDescriptorMatcher : public GenericDescriptorMatcher - -Class used for matching descriptors that can be described as vectors in a finite-dimensional space. :: - - class CV_EXPORTS VectorDescriptorMatcher : public GenericDescriptorMatcher - { - public: - VectorDescriptorMatcher( const Ptr& extractor, const Ptr& matcher ); - virtual ~VectorDescriptorMatcher(); - - virtual void add( InputArrayOfArrays imgCollection, - vector >& pointCollection ); - virtual void clear(); - virtual void train(); - virtual bool isMaskSupported(); - - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - - virtual Ptr clone( bool emptyTrainData=false ) const; - - protected: - ... - }; - - -Example: :: - - VectorDescriptorMatcher matcher( new SurfDescriptorExtractor, - new BruteForceMatcher > ); diff --git a/modules/features2d/doc/feature_detection_and_description.rst b/modules/features2d/doc/feature_detection_and_description.rst index 409fe54b7a..ab7cdecf96 100644 --- a/modules/features2d/doc/feature_detection_and_description.rst +++ b/modules/features2d/doc/feature_detection_and_description.rst @@ -31,43 +31,11 @@ Detects corners using the FAST algorithm Detects corners using the FAST algorithm by [Rosten06]_. -..note:: In Python API, types are given as ``cv2.FAST_FEATURE_DETECTOR_TYPE_5_8``, ``cv2.FAST_FEATURE_DETECTOR_TYPE_7_12`` and ``cv2.FAST_FEATURE_DETECTOR_TYPE_9_16``. For corner detection, use ``cv2.FAST.detect()`` method. +.. note:: In Python API, types are given as ``cv2.FAST_FEATURE_DETECTOR_TYPE_5_8``, ``cv2.FAST_FEATURE_DETECTOR_TYPE_7_12`` and ``cv2.FAST_FEATURE_DETECTOR_TYPE_9_16``. For corner detection, use ``cv2.FAST.detect()`` method. .. [Rosten06] E. Rosten. Machine Learning for High-speed Corner Detection, 2006. - -BriefDescriptorExtractor ------------------------- -.. ocv:class:: BriefDescriptorExtractor : public DescriptorExtractor - -Class for computing BRIEF descriptors described in a paper of Calonder M., Lepetit V., -Strecha C., Fua P. *BRIEF: Binary Robust Independent Elementary Features* , -11th European Conference on Computer Vision (ECCV), Heraklion, Crete. LNCS Springer, September 2010. :: - - class BriefDescriptorExtractor : public DescriptorExtractor - { - public: - static const int PATCH_SIZE = 48; - static const int KERNEL_SIZE = 9; - - // bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes. - BriefDescriptorExtractor( int bytes = 32 ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - protected: - ... - }; - -.. note:: - - * A complete BRIEF extractor sample can be found at opencv_source_code/samples/cpp/brief_match_test.cpp - - MSER ---- .. ocv:class:: MSER : public FeatureDetector @@ -213,48 +181,21 @@ Finds keypoints in an image and computes their descriptors :param useProvidedKeypoints: If it is true, then the method will use the provided vector of keypoints instead of detecting them. -FREAK ------ -.. ocv:class:: FREAK : public DescriptorExtractor - -Class implementing the FREAK (*Fast Retina Keypoint*) keypoint descriptor, described in [AOV12]_. The algorithm propose a novel keypoint descriptor inspired by the human visual system and more precisely the retina, coined Fast Retina Key- point (FREAK). A cascade of binary strings is computed by efficiently comparing image intensities over a retinal sampling pattern. FREAKs are in general faster to compute with lower memory load and also more robust than SIFT, SURF or BRISK. They are competitive alternatives to existing keypoints in particular for embedded applications. - -.. [AOV12] A. Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast Retina Keypoint. In IEEE Conference on Computer Vision and Pattern Recognition, 2012. CVPR 2012 Open Source Award Winner. - -.. note:: - - * An example on how to use the FREAK descriptor can be found at opencv_source_code/samples/cpp/freak_demo.cpp - -FREAK::FREAK ------------- -The FREAK constructor - -.. ocv:function:: FREAK::FREAK( bool orientationNormalized=true, bool scaleNormalized=true, float patternScale=22.0f, int nOctaves=4, const vector& selectedPairs=vector() ) - - :param orientationNormalized: Enable orientation normalization. - :param scaleNormalized: Enable scale normalization. - :param patternScale: Scaling of the description pattern. - :param nOctaves: Number of octaves covered by the detected keypoints. - :param selectedPairs: (Optional) user defined selected pairs indexes, - -FREAK::selectPairs ------------------- -Select the 512 best description pair indexes from an input (grayscale) image set. FREAK is available with a set of pairs learned off-line. Researchers can run a training process to learn their own set of pair. For more details read section 4.2 in: A. Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast Retina Keypoint. In IEEE Conference on Computer Vision and Pattern Recognition, 2012. - -We notice that for keypoint matching applications, image content has little effect on the selected pairs unless very specific what does matter is the detector type (blobs, corners,...) and the options used (scale/rotation invariance,...). Reduce corrThresh if not enough pairs are selected (43 points --> 903 possible pairs) - -.. ocv:function:: vector FREAK::selectPairs(const vector& images, vector >& keypoints, const double corrThresh = 0.7, bool verbose = true) - - :param images: Grayscale image input set. - :param keypoints: Set of detected keypoints - :param corrThresh: Correlation threshold. - :param verbose: Prints pair selection informations. - KAZE ---- .. ocv:class:: KAZE : public Feature2D -Class implementing the KAZE keypoint detector and descriptor extractor, described in [ABD12]_. +Class implementing the KAZE keypoint detector and descriptor extractor, described in [ABD12]_. :: + + class CV_EXPORTS_W KAZE : public Feature2D + { + public: + CV_WRAP KAZE(); + CV_WRAP explicit KAZE(bool extended, bool upright, float threshold = 0.001f, + int octaves = 4, int sublevels = 4, int diffusivity = DIFF_PM_G2); + }; + +.. note:: AKAZE descriptor can only be used with KAZE or AKAZE keypoints .. [ABD12] KAZE Features. Pablo F. Alcantarilla, Adrien Bartoli and Andrew J. Davison. In European Conference on Computer Vision (ECCV), Fiorenze, Italy, October 2012. @@ -262,12 +203,14 @@ KAZE::KAZE ---------- The KAZE constructor -.. ocv:function:: KAZE::KAZE(bool extended, bool upright) +.. ocv:function:: KAZE::KAZE(bool extended, bool upright, float threshold, int octaves, int sublevels, int diffusivity) :param extended: Set to enable extraction of extended (128-byte) descriptor. :param upright: Set to enable use of upright descriptors (non rotation-invariant). - - + :param threshold: Detector response threshold to accept point + :param octaves: Maximum octave evolution of the image + :param sublevels: Default number of sublevels per scale level + :param diffusivity: Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or DIFF_CHARBONNIER AKAZE ----- @@ -278,25 +221,32 @@ Class implementing the AKAZE keypoint detector and descriptor extractor, describ class CV_EXPORTS_W AKAZE : public Feature2D { public: - /// AKAZE Descriptor Type - enum DESCRIPTOR_TYPE { - DESCRIPTOR_KAZE_UPRIGHT = 2, ///< Upright descriptors, not invariant to rotation - DESCRIPTOR_KAZE = 3, - DESCRIPTOR_MLDB_UPRIGHT = 4, ///< Upright descriptors, not invariant to rotation - DESCRIPTOR_MLDB = 5 - }; CV_WRAP AKAZE(); - explicit AKAZE(DESCRIPTOR_TYPE descriptor_type, int descriptor_size = 0, int descriptor_channels = 3); + CV_WRAP explicit AKAZE(int descriptor_type, int descriptor_size = 0, int descriptor_channels = 3, + float threshold = 0.001f, int octaves = 4, int sublevels = 4, int diffusivity = DIFF_PM_G2); }; +.. note:: AKAZE descriptor can only be used with KAZE or AKAZE keypoints + .. [ANB13] Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces. Pablo F. Alcantarilla, Jesús Nuevo and Adrien Bartoli. In British Machine Vision Conference (BMVC), Bristol, UK, September 2013. AKAZE::AKAZE ------------ The AKAZE constructor -.. ocv:function:: AKAZE::AKAZE(DESCRIPTOR_TYPE descriptor_type, int descriptor_size = 0, int descriptor_channels = 3) +.. ocv:function:: AKAZE::AKAZE(int descriptor_type, int descriptor_size, int descriptor_channels, float threshold, int octaves, int sublevels, int diffusivity) - :param descriptor_type: Type of the extracted descriptor. + :param descriptor_type: Type of the extracted descriptor: DESCRIPTOR_KAZE, DESCRIPTOR_KAZE_UPRIGHT, DESCRIPTOR_MLDB or DESCRIPTOR_MLDB_UPRIGHT. :param descriptor_size: Size of the descriptor in bits. 0 -> Full size - :param descriptor_channels: Number of channels in the descriptor (1, 2, 3). + :param descriptor_channels: Number of channels in the descriptor (1, 2, 3) + :param threshold: Detector response threshold to accept point + :param octaves: Maximum octave evolution of the image + :param sublevels: Default number of sublevels per scale level + :param diffusivity: Diffusivity type. DIFF_PM_G1, DIFF_PM_G2, DIFF_WEICKERT or DIFF_CHARBONNIER + +SIFT +---- + +.. ocv:class:: SIFT : public Feature2D + +The SIFT algorithm has been moved to opencv_contrib/xfeatures2d module. \ No newline at end of file diff --git a/modules/features2d/doc/features2d.rst b/modules/features2d/doc/features2d.rst index 781f1ddea1..2f1b39faff 100644 --- a/modules/features2d/doc/features2d.rst +++ b/modules/features2d/doc/features2d.rst @@ -11,6 +11,5 @@ features2d. 2D Features Framework common_interfaces_of_feature_detectors common_interfaces_of_descriptor_extractors common_interfaces_of_descriptor_matchers - common_interfaces_of_generic_descriptor_matchers drawing_function_of_keypoints_and_matches object_categorization diff --git a/modules/features2d/include/opencv2/features2d.hpp b/modules/features2d/include/opencv2/features2d.hpp index 9f46ee23ef..5e9c4c45c9 100644 --- a/modules/features2d/include/opencv2/features2d.hpp +++ b/modules/features2d/include/opencv2/features2d.hpp @@ -49,7 +49,7 @@ namespace cv { -CV_EXPORTS bool initModule_features2d(); +CV_EXPORTS bool initModule_features2d(void); // //! writes vector of keypoints to the file storage // CV_EXPORTS void write(FileStorage& fs, const String& name, const std::vector& keypoints); @@ -353,107 +353,6 @@ protected: typedef ORB OrbFeatureDetector; typedef ORB OrbDescriptorExtractor; -/*! - FREAK implementation -*/ -class CV_EXPORTS FREAK : public DescriptorExtractor -{ -public: - /** Constructor - * @param orientationNormalized enable orientation normalization - * @param scaleNormalized enable scale normalization - * @param patternScale scaling of the description pattern - * @param nbOctave number of octaves covered by the detected keypoints - * @param selectedPairs (optional) user defined selected pairs - */ - explicit FREAK( bool orientationNormalized = true, - bool scaleNormalized = true, - float patternScale = 22.0f, - int nOctaves = 4, - const std::vector& selectedPairs = std::vector()); - FREAK( const FREAK& rhs ); - FREAK& operator=( const FREAK& ); - - virtual ~FREAK(); - - /** returns the descriptor length in bytes */ - virtual int descriptorSize() const; - - /** returns the descriptor type */ - virtual int descriptorType() const; - - /** returns the default norm type */ - virtual int defaultNorm() const; - - /** select the 512 "best description pairs" - * @param images grayscale images set - * @param keypoints set of detected keypoints - * @param corrThresh correlation threshold - * @param verbose print construction information - * @return list of best pair indexes - */ - std::vector selectPairs( const std::vector& images, std::vector >& keypoints, - const double corrThresh = 0.7, bool verbose = true ); - - AlgorithmInfo* info() const; - - enum - { - NB_SCALES = 64, NB_PAIRS = 512, NB_ORIENPAIRS = 45 - }; - -protected: - virtual void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - void buildPattern(); - - template - imgType meanIntensity( InputArray image, InputArray integral, const float kp_x, const float kp_y, - const unsigned int scale, const unsigned int rot, const unsigned int point ) const; - - template - void computeDescriptors( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - template - void extractDescriptor(srcMatType *pointsValue, void ** ptr) const; - - bool orientationNormalized; //true if the orientation is normalized, false otherwise - bool scaleNormalized; //true if the scale is normalized, false otherwise - double patternScale; //scaling of the pattern - int nOctaves; //number of octaves - bool extAll; // true if all pairs need to be extracted for pairs selection - - double patternScale0; - int nOctaves0; - std::vector selectedPairs0; - - struct PatternPoint - { - float x; // x coordinate relative to center - float y; // x coordinate relative to center - float sigma; // Gaussian smoothing sigma - }; - - struct DescriptionPair - { - uchar i; // index of the first point - uchar j; // index of the second point - }; - - struct OrientationPair - { - uchar i; // index of the first point - uchar j; // index of the second point - int weight_dx; // dx/(norm_sq))*4096 - int weight_dy; // dy/(norm_sq))*4096 - }; - - std::vector patternLookup; // look-up table for the pattern points (position+sigma of all points at all scales and orientation) - int patternSizes[NB_SCALES]; // size of the pattern at a specific scale (used to check if a point is within image boundaries) - DescriptionPair descriptionPairs[NB_PAIRS]; - OrientationPair orientationPairs[NB_ORIENPAIRS]; -}; - - /*! Maximal Stable Extremal Regions class. @@ -493,36 +392,6 @@ protected: typedef MSER MserFeatureDetector; -/*! - The "Star" Detector. - - The class implements the keypoint detector introduced by K. Konolige. -*/ -class CV_EXPORTS_W StarDetector : public FeatureDetector -{ -public: - //! the full constructor - CV_WRAP StarDetector(int _maxSize=45, int _responseThreshold=30, - int _lineThresholdProjected=10, - int _lineThresholdBinarized=8, - int _suppressNonmaxSize=5); - - //! finds the keypoints in the image - CV_WRAP_AS(detect) void operator()(const Mat& image, - CV_OUT std::vector& keypoints) const; - - AlgorithmInfo* info() const; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - int maxSize; - int responseThreshold; - int lineThresholdProjected; - int lineThresholdBinarized; - int suppressNonmaxSize; -}; - //! detects corners using FAST algorithm by E. Rosten CV_EXPORTS void FAST( InputArray image, CV_OUT std::vector& keypoints, int threshold, bool nonmaxSuppression=true ); @@ -570,7 +439,6 @@ protected: }; typedef GFTTDetector GoodFeaturesToTrackDetector; -typedef StarDetector StarFeatureDetector; class CV_EXPORTS_W SimpleBlobDetector : public FeatureDetector { @@ -624,275 +492,20 @@ protected: }; -class CV_EXPORTS_W DenseFeatureDetector : public FeatureDetector -{ -public: - CV_WRAP explicit DenseFeatureDetector( float initFeatureScale=1.f, int featureScaleLevels=1, - float featureScaleMul=0.1f, - int initXyStep=6, int initImgBound=0, - bool varyXyStepWithScale=true, - bool varyImgBoundWithScale=false ); - AlgorithmInfo* info() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double initFeatureScale; - int featureScaleLevels; - double featureScaleMul; - - int initXyStep; - int initImgBound; - - bool varyXyStepWithScale; - bool varyImgBoundWithScale; +// KAZE/AKAZE diffusivity +enum { + DIFF_PM_G1 = 0, + DIFF_PM_G2 = 1, + DIFF_WEICKERT = 2, + DIFF_CHARBONNIER = 3 }; -/* - * Adapts a detector to partition the source image into a grid and detect - * points in each cell. - */ -class CV_EXPORTS_W GridAdaptedFeatureDetector : public FeatureDetector -{ -public: - /* - * detector Detector that will be adapted. - * maxTotalKeypoints Maximum count of keypoints detected on the image. Only the strongest keypoints - * will be keeped. - * gridRows Grid rows count. - * gridCols Grid column count. - */ - CV_WRAP GridAdaptedFeatureDetector( const Ptr& detector=Ptr(), - int maxTotalKeypoints=1000, - int gridRows=4, int gridCols=4 ); - - // TODO implement read/write - virtual bool empty() const; - - AlgorithmInfo* info() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - Ptr detector; - int maxTotalKeypoints; - int gridRows; - int gridCols; -}; - -/* - * Adapts a detector to detect points over multiple levels of a Gaussian - * pyramid. Useful for detectors that are not inherently scaled. - */ -class CV_EXPORTS_W PyramidAdaptedFeatureDetector : public FeatureDetector -{ -public: - // maxLevel - The 0-based index of the last pyramid layer - CV_WRAP PyramidAdaptedFeatureDetector( const Ptr& detector, int maxLevel=2 ); - - // TODO implement read/write - virtual bool empty() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - Ptr detector; - int maxLevel; -}; - -/** \brief A feature detector parameter adjuster, this is used by the DynamicAdaptedFeatureDetector - * and is a wrapper for FeatureDetector that allow them to be adjusted after a detection - */ -class CV_EXPORTS AdjusterAdapter: public FeatureDetector -{ -public: - /** pure virtual interface - */ - virtual ~AdjusterAdapter() {} - /** too few features were detected so, adjust the detector params accordingly - * \param min the minimum number of desired features - * \param n_detected the number previously detected - */ - virtual void tooFew(int min, int n_detected) = 0; - /** too many features were detected so, adjust the detector params accordingly - * \param max the maximum number of desired features - * \param n_detected the number previously detected - */ - virtual void tooMany(int max, int n_detected) = 0; - /** are params maxed out or still valid? - * \return false if the parameters can't be adjusted any more - */ - virtual bool good() const = 0; - - virtual Ptr clone() const = 0; - - static Ptr create( const String& detectorType ); -}; -/** \brief an adaptively adjusting detector that iteratively detects until the desired number - * of features are detected. - * Beware that this is not thread safe - as the adjustment of parameters breaks the const - * of the detection routine... - * /TODO Make this const correct and thread safe - * - * sample usage: - //will create a detector that attempts to find 100 - 110 FAST Keypoints, and will at most run - //FAST feature detection 10 times until that number of keypoints are found - Ptr detector(new DynamicAdaptedFeatureDetector(new FastAdjuster(20,true),100, 110, 10)); - - */ -class CV_EXPORTS DynamicAdaptedFeatureDetector: public FeatureDetector -{ -public: - - /** \param adjuster an AdjusterAdapter that will do the detection and parameter adjustment - * \param max_features the maximum desired number of features - * \param max_iters the maximum number of times to try to adjust the feature detector params - * for the FastAdjuster this can be high, but with Star or Surf this can get time consuming - * \param min_features the minimum desired features - */ - DynamicAdaptedFeatureDetector( const Ptr& adjuster, int min_features=400, int max_features=500, int max_iters=5 ); - - virtual bool empty() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - -private: - DynamicAdaptedFeatureDetector& operator=(const DynamicAdaptedFeatureDetector&); - DynamicAdaptedFeatureDetector(const DynamicAdaptedFeatureDetector&); - - int escape_iters_; - int min_features_, max_features_; - const Ptr adjuster_; -}; - -/**\brief an adjust for the FAST detector. This will basically decrement or increment the - * threshold by 1 - */ -class CV_EXPORTS FastAdjuster: public AdjusterAdapter -{ -public: - /**\param init_thresh the initial threshold to start with, default = 20 - * \param nonmax whether to use non max or not for fast feature detection - */ - FastAdjuster(int init_thresh=20, bool nonmax=true, int min_thresh=1, int max_thresh=200); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - int thresh_; - bool nonmax_; - int init_thresh_, min_thresh_, max_thresh_; -}; - - -/** An adjuster for StarFeatureDetector, this one adjusts the responseThreshold for now - * TODO find a faster way to converge the parameters for Star - use CvStarDetectorParams - */ -class CV_EXPORTS StarAdjuster: public AdjusterAdapter -{ -public: - StarAdjuster(double initial_thresh=30.0, double min_thresh=2., double max_thresh=200.); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl(InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double thresh_, init_thresh_, min_thresh_, max_thresh_; -}; - -class CV_EXPORTS SurfAdjuster: public AdjusterAdapter -{ -public: - SurfAdjuster( double initial_thresh=400.f, double min_thresh=2, double max_thresh=1000 ); - - virtual void tooFew(int minv, int n_detected); - virtual void tooMany(int maxv, int n_detected); - virtual bool good() const; - - virtual Ptr clone() const; - -protected: - virtual void detectImpl( InputArray image, std::vector& keypoints, InputArray mask=noArray() ) const; - - double thresh_, init_thresh_, min_thresh_, max_thresh_; -}; - -CV_EXPORTS Mat windowedMatchingMask( const std::vector& keypoints1, const std::vector& keypoints2, - float maxDeltaX, float maxDeltaY ); - - - -/* - * OpponentColorDescriptorExtractor - * - * Adapts a descriptor extractor to compute descriptors in Opponent Color Space - * (refer to van de Sande et al., CGIV 2008 "Color Descriptors for Object Category Recognition"). - * Input RGB image is transformed in Opponent Color Space. Then unadapted descriptor extractor - * (set in constructor) computes descriptors on each of the three channel and concatenate - * them into a single color descriptor. - */ -class CV_EXPORTS OpponentColorDescriptorExtractor : public DescriptorExtractor -{ -public: - OpponentColorDescriptorExtractor( const Ptr& descriptorExtractor ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - - virtual bool empty() const; - -protected: - virtual void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - Ptr descriptorExtractor; -}; - -/* - * BRIEF Descriptor - */ -class CV_EXPORTS BriefDescriptorExtractor : public DescriptorExtractor -{ -public: - static const int PATCH_SIZE = 48; - static const int KERNEL_SIZE = 9; - - // bytes is a length of descriptor in bytes. It can be equal 16, 32 or 64 bytes. - BriefDescriptorExtractor( int bytes = 32 ); - - virtual void read( const FileNode& ); - virtual void write( FileStorage& ) const; - - virtual int descriptorSize() const; - virtual int descriptorType() const; - virtual int defaultNorm() const; - - /// @todo read and write for brief - - AlgorithmInfo* info() const; - -protected: - virtual void computeImpl(InputArray image, std::vector& keypoints, OutputArray descriptors) const; - - typedef void(*PixelTestFn)(InputArray, const std::vector&, OutputArray); - - int bytes_; - PixelTestFn test_fn_; +// AKAZE descriptor type +enum { + DESCRIPTOR_KAZE_UPRIGHT = 2, ///< Upright descriptors, not invariant to rotation + DESCRIPTOR_KAZE = 3, + DESCRIPTOR_MLDB_UPRIGHT = 4, ///< Upright descriptors, not invariant to rotation + DESCRIPTOR_MLDB = 5 }; /*! @@ -902,7 +515,8 @@ class CV_EXPORTS_W KAZE : public Feature2D { public: CV_WRAP KAZE(); - CV_WRAP explicit KAZE(bool extended, bool upright); + CV_WRAP explicit KAZE(bool extended, bool upright, float threshold = 0.001f, + int octaves = 4, int sublevels = 4, int diffusivity = DIFF_PM_G2); virtual ~KAZE(); @@ -928,6 +542,10 @@ protected: CV_PROP bool extended; CV_PROP bool upright; + CV_PROP float threshold; + CV_PROP int octaves; + CV_PROP int sublevels; + CV_PROP int diffusivity; }; /*! @@ -936,16 +554,9 @@ AKAZE implementation class CV_EXPORTS_W AKAZE : public Feature2D { public: - /// AKAZE Descriptor Type - enum DESCRIPTOR_TYPE { - DESCRIPTOR_KAZE_UPRIGHT = 2, ///< Upright descriptors, not invariant to rotation - DESCRIPTOR_KAZE = 3, - DESCRIPTOR_MLDB_UPRIGHT = 4, ///< Upright descriptors, not invariant to rotation - DESCRIPTOR_MLDB = 5 - }; - CV_WRAP AKAZE(); - explicit AKAZE(DESCRIPTOR_TYPE descriptor_type, int descriptor_size = 0, int descriptor_channels = 3); + CV_WRAP explicit AKAZE(int descriptor_type, int descriptor_size = 0, int descriptor_channels = 3, + float threshold = 0.001f, int octaves = 4, int sublevels = 4, int diffusivity = DIFF_PM_G2); virtual ~AKAZE(); @@ -973,7 +584,10 @@ protected: CV_PROP int descriptor; CV_PROP int descriptor_channels; CV_PROP int descriptor_size; - + CV_PROP float threshold; + CV_PROP int octaves; + CV_PROP int sublevels; + CV_PROP int diffusivity; }; /****************************************************************************************\ * Distance * @@ -1276,208 +890,6 @@ protected: int addedDescCount; }; -/****************************************************************************************\ -* GenericDescriptorMatcher * -\****************************************************************************************/ -/* - * Abstract interface for a keypoint descriptor and matcher - */ -class GenericDescriptorMatcher; -typedef GenericDescriptorMatcher GenericDescriptorMatch; - -class CV_EXPORTS GenericDescriptorMatcher -{ -public: - GenericDescriptorMatcher(); - virtual ~GenericDescriptorMatcher(); - - /* - * Add train collection: images and keypoints from them. - * images A set of train images. - * ketpoints Keypoint collection that have been detected on train images. - * - * Keypoints for which a descriptor cannot be computed are removed. Such keypoints - * must be filtered in this method befor adding keypoints to train collection "trainPointCollection". - * If inheritor class need perform such prefiltering the method add() must be overloaded. - * In the other class methods programmer has access to the train keypoints by a constant link. - */ - virtual void add( InputArrayOfArrays images, - std::vector >& keypoints ); - - const std::vector& getTrainImages() const; - const std::vector >& getTrainKeypoints() const; - - /* - * Clear images and keypoints storing in train collection. - */ - virtual void clear(); - /* - * Returns true if matcher supports mask to match descriptors. - */ - virtual bool isMaskSupported() = 0; - /* - * Train some inner structures (e.g. flann index or decision trees). - * train() methods is run every time in matching methods. So the method implementation - * should has a check whether these inner structures need be trained/retrained or not. - */ - virtual void train(); - - /* - * Classifies query keypoints. - * queryImage The query image - * queryKeypoints Keypoints from the query image - * trainImage The train image - * trainKeypoints Keypoints from the train image - */ - // Classify keypoints from query image under one train image. - void classify( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints ) const; - // Classify keypoints from query image under train image collection. - void classify( InputArray queryImage, std::vector& queryKeypoints ); - - /* - * Group of methods to match keypoints from image pair. - * Keypoints for which a descriptor cannot be computed are removed. - * train() method is called here. - */ - // Find one best match for each query descriptor (if mask is empty). - void match( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector& matches, InputArray mask=noArray() ) const; - // Find k best matches for each query keypoint (in increasing order of distances). - // compactResult is used when mask is not empty. If compactResult is false matches - // vector will have the same size as queryDescriptors rows. - // If compactResult is true matches vector will not contain matches for fully masked out query descriptors. - void knnMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector >& matches, int k, - InputArray mask=noArray(), bool compactResult=false ) const; - // Find best matches for each query descriptor which have distance less than maxDistance (in increasing order of distances). - void radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints, - std::vector >& matches, float maxDistance, - InputArray mask=noArray(), bool compactResult=false ) const; - /* - * Group of methods to match keypoints from one image to image set. - * See description of similar methods for matching image pair above. - */ - void match( InputArray queryImage, std::vector& queryKeypoints, - std::vector& matches, InputArrayOfArrays masks=noArray() ); - void knnMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - void radiusMatch(InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks=noArray(), bool compactResult=false ); - - // Reads matcher object from a file node - virtual void read( const FileNode& fn ); - // Writes matcher object to a file storage - virtual void write( FileStorage& fs ) const; - - // Return true if matching object is empty (e.g. feature detector or descriptor matcher are empty) - virtual bool empty() const; - - // Clone the matcher. If emptyTrainData is false the method create deep copy of the object, i.e. copies - // both parameters and train data. If emptyTrainData is true the method create object copy with current parameters - // but with empty train data. - virtual Ptr clone( bool emptyTrainData=false ) const = 0; - - static Ptr create( const String& genericDescritptorMatcherType, - const String ¶msFilename=String() ); - -protected: - // In fact the matching is implemented only by the following two methods. These methods suppose - // that the class object has been trained already. Public match methods call these methods - // after calling train(). - virtual void knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks, bool compactResult ) = 0; - virtual void radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) = 0; - /* - * A storage for sets of keypoints together with corresponding images and class IDs - */ - class CV_EXPORTS KeyPointCollection - { - public: - KeyPointCollection(); - KeyPointCollection( const KeyPointCollection& collection ); - void add( const std::vector& images, const std::vector >& keypoints ); - void clear(); - - // Returns the total number of keypoints in the collection - size_t keypointCount() const; - size_t imageCount() const; - - const std::vector >& getKeypoints() const; - const std::vector& getKeypoints( int imgIdx ) const; - const KeyPoint& getKeyPoint( int imgIdx, int localPointIdx ) const; - const KeyPoint& getKeyPoint( int globalPointIdx ) const; - void getLocalIdx( int globalPointIdx, int& imgIdx, int& localPointIdx ) const; - - const std::vector& getImages() const; - const Mat& getImage( int imgIdx ) const; - - protected: - int pointCount; - - std::vector images; - std::vector > keypoints; - // global indices of the first points in each image, startIndices.size() = keypoints.size() - std::vector startIndices; - - private: - static Mat clone_op( Mat m ) { return m.clone(); } - }; - - KeyPointCollection trainPointCollection; -}; - - -/****************************************************************************************\ -* VectorDescriptorMatcher * -\****************************************************************************************/ - -/* - * A class used for matching descriptors that can be described as vectors in a finite-dimensional space - */ -class VectorDescriptorMatcher; -typedef VectorDescriptorMatcher VectorDescriptorMatch; - -class CV_EXPORTS VectorDescriptorMatcher : public GenericDescriptorMatcher -{ -public: - VectorDescriptorMatcher( const Ptr& extractor, const Ptr& matcher ); - virtual ~VectorDescriptorMatcher(); - - virtual void add( InputArrayOfArrays imgCollection, - std::vector >& pointCollection ); - - virtual void clear(); - - virtual void train(); - - virtual bool isMaskSupported(); - - virtual void read( const FileNode& fn ); - virtual void write( FileStorage& fs ) const; - virtual bool empty() const; - - virtual Ptr clone( bool emptyTrainData=false ) const; - -protected: - virtual void knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int k, - InputArrayOfArrays masks, bool compactResult ); - virtual void radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ); - - Ptr extractor; - Ptr matcher; -}; /****************************************************************************************\ * Drawing functions * @@ -1530,30 +942,23 @@ CV_EXPORTS void computeRecallPrecisionCurve( const std::vector& recallPrecisionCurve, float l_precision ); CV_EXPORTS int getNearestPoint( const std::vector& recallPrecisionCurve, float l_precision ); -CV_EXPORTS void evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& img2, const Mat& H1to2, - std::vector& keypoints1, std::vector& keypoints2, - std::vector >* matches1to2, std::vector >* correctMatches1to2Mask, - std::vector& recallPrecisionCurve, - const Ptr& dmatch=Ptr() ); - - /****************************************************************************************\ * Bag of visual words * \****************************************************************************************/ /* * Abstract base class for training of a 'bag of visual words' vocabulary from a set of descriptors */ -class CV_EXPORTS BOWTrainer +class CV_EXPORTS_W BOWTrainer { public: BOWTrainer(); virtual ~BOWTrainer(); - void add( const Mat& descriptors ); - const std::vector& getDescriptors() const; - int descriptorsCount() const; + CV_WRAP void add( const Mat& descriptors ); + CV_WRAP const std::vector& getDescriptors() const; + CV_WRAP int descriptorsCount() const; - virtual void clear(); + CV_WRAP virtual void clear(); /* * Train visual words vocabulary, that is cluster training descriptors and @@ -1562,8 +967,8 @@ public: * * descriptors Training descriptors computed on images keypoints. */ - virtual Mat cluster() const = 0; - virtual Mat cluster( const Mat& descriptors ) const = 0; + CV_WRAP virtual Mat cluster() const = 0; + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const = 0; protected: std::vector descriptors; @@ -1573,16 +978,16 @@ protected: /* * This is BOWTrainer using cv::kmeans to get vocabulary. */ -class CV_EXPORTS BOWKMeansTrainer : public BOWTrainer +class CV_EXPORTS_W BOWKMeansTrainer : public BOWTrainer { public: - BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), + CV_WRAP BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), int attempts=3, int flags=KMEANS_PP_CENTERS ); virtual ~BOWKMeansTrainer(); // Returns trained vocabulary (i.e. cluster centers). - virtual Mat cluster() const; - virtual Mat cluster( const Mat& descriptors ) const; + CV_WRAP virtual Mat cluster() const; + CV_WRAP virtual Mat cluster( const Mat& descriptors ) const; protected: @@ -1595,24 +1000,27 @@ protected: /* * Class to compute image descriptor using bag of visual words. */ -class CV_EXPORTS BOWImgDescriptorExtractor +class CV_EXPORTS_W BOWImgDescriptorExtractor { public: - BOWImgDescriptorExtractor( const Ptr& dextractor, + CV_WRAP BOWImgDescriptorExtractor( const Ptr& dextractor, const Ptr& dmatcher ); BOWImgDescriptorExtractor( const Ptr& dmatcher ); virtual ~BOWImgDescriptorExtractor(); - void setVocabulary( const Mat& vocabulary ); - const Mat& getVocabulary() const; + CV_WRAP void setVocabulary( const Mat& vocabulary ); + CV_WRAP const Mat& getVocabulary() const; void compute( InputArray image, std::vector& keypoints, OutputArray imgDescriptor, std::vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); void compute( InputArray keypointDescriptors, OutputArray imgDescriptor, std::vector >* pointIdxsOfClusters=0 ); // compute() is not constant because DescriptorMatcher::match is not constant - int descriptorSize() const; - int descriptorType() const; + CV_WRAP_AS(compute) void compute2( const Mat& image, std::vector& keypoints, CV_OUT Mat& imgDescriptor ) + { compute(image,keypoints,imgDescriptor); } + + CV_WRAP int descriptorSize() const; + CV_WRAP int descriptorType() const; protected: Mat vocabulary; diff --git a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp index 2e6e574160..2cb8daabfb 100644 --- a/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp +++ b/modules/features2d/perf/opencl/perf_brute_force_matcher.cpp @@ -43,7 +43,7 @@ // the use of this software, even if advised of the possibility of such damage. // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/perf/opencl/perf_fast.cpp b/modules/features2d/perf/opencl/perf_fast.cpp index 7816da7b10..c4a8e078c0 100644 --- a/modules/features2d/perf/opencl/perf_fast.cpp +++ b/modules/features2d/perf/opencl/perf_fast.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/perf/opencl/perf_orb.cpp b/modules/features2d/perf/opencl/perf_orb.cpp index f40b5f4b92..c551dee88a 100644 --- a/modules/features2d/perf/opencl/perf_orb.cpp +++ b/modules/features2d/perf/opencl/perf_orb.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/features2d/perf/perf_precomp.hpp b/modules/features2d/perf/perf_precomp.hpp index 30607daaf6..f5280a84e8 100644 --- a/modules/features2d/perf/perf_precomp.hpp +++ b/modules/features2d/perf/perf_precomp.hpp @@ -10,7 +10,7 @@ #define __OPENCV_PERF_PRECOMP_HPP__ #include "opencv2/ts.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #include "opencv2/features2d.hpp" #ifdef GTEST_CREATE_SHARED_LIBRARY diff --git a/modules/features2d/src/akaze.cpp b/modules/features2d/src/akaze.cpp index 4b1eb196a2..1d09d06158 100644 --- a/modules/features2d/src/akaze.cpp +++ b/modules/features2d/src/akaze.cpp @@ -49,7 +49,10 @@ http://www.robesafe.com/personal/pablo.alcantarilla/papers/Alcantarilla13bmvc.pd */ #include "precomp.hpp" -#include "akaze/AKAZEFeatures.h" +#include "kaze/AKAZEFeatures.h" + +#include +using namespace std; namespace cv { @@ -57,13 +60,22 @@ namespace cv : descriptor(DESCRIPTOR_MLDB) , descriptor_channels(3) , descriptor_size(0) + , threshold(0.001f) + , octaves(4) + , sublevels(4) + , diffusivity(DIFF_PM_G2) { } - AKAZE::AKAZE(DESCRIPTOR_TYPE _descriptor_type, int _descriptor_size, int _descriptor_channels) + AKAZE::AKAZE(int _descriptor_type, int _descriptor_size, int _descriptor_channels, + float _threshold, int _octaves, int _sublevels, int _diffusivity) : descriptor(_descriptor_type) , descriptor_channels(_descriptor_channels) , descriptor_size(_descriptor_size) + , threshold(_threshold) + , octaves(_octaves) + , sublevels(_sublevels) + , diffusivity(_diffusivity) { } @@ -78,12 +90,12 @@ namespace cv { switch (descriptor) { - case cv::AKAZE::DESCRIPTOR_KAZE: - case cv::AKAZE::DESCRIPTOR_KAZE_UPRIGHT: + case cv::DESCRIPTOR_KAZE: + case cv::DESCRIPTOR_KAZE_UPRIGHT: return 64; - case cv::AKAZE::DESCRIPTOR_MLDB: - case cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT: + case cv::DESCRIPTOR_MLDB: + case cv::DESCRIPTOR_MLDB_UPRIGHT: // We use the full length binary descriptor -> 486 bits if (descriptor_size == 0) { @@ -106,12 +118,12 @@ namespace cv { switch (descriptor) { - case cv::AKAZE::DESCRIPTOR_KAZE: - case cv::AKAZE::DESCRIPTOR_KAZE_UPRIGHT: + case cv::DESCRIPTOR_KAZE: + case cv::DESCRIPTOR_KAZE_UPRIGHT: return CV_32F; - case cv::AKAZE::DESCRIPTOR_MLDB: - case cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT: + case cv::DESCRIPTOR_MLDB: + case cv::DESCRIPTOR_MLDB_UPRIGHT: return CV_8U; default: @@ -124,12 +136,12 @@ namespace cv { switch (descriptor) { - case cv::AKAZE::DESCRIPTOR_KAZE: - case cv::AKAZE::DESCRIPTOR_KAZE_UPRIGHT: + case cv::DESCRIPTOR_KAZE: + case cv::DESCRIPTOR_KAZE_UPRIGHT: return cv::NORM_L2; - case cv::AKAZE::DESCRIPTOR_MLDB: - case cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT: + case cv::DESCRIPTOR_MLDB: + case cv::DESCRIPTOR_MLDB_UPRIGHT: return cv::NORM_HAMMING; default: @@ -153,11 +165,15 @@ namespace cv cv::Mat& desc = descriptors.getMatRef(); AKAZEOptions options; - options.descriptor = static_cast(descriptor); + options.descriptor = descriptor; options.descriptor_channels = descriptor_channels; options.descriptor_size = descriptor_size; options.img_width = img.cols; options.img_height = img.rows; + options.dthreshold = threshold; + options.omax = octaves; + options.nsublevels = sublevels; + options.diffusivity = diffusivity; AKAZEFeatures impl(options); impl.Create_Nonlinear_Scale_Space(img1_32); @@ -188,7 +204,7 @@ namespace cv img.convertTo(img1_32, CV_32F, 1.0 / 255.0, 0); AKAZEOptions options; - options.descriptor = static_cast(descriptor); + options.descriptor = descriptor; options.descriptor_channels = descriptor_channels; options.descriptor_size = descriptor_size; options.img_width = img.cols; @@ -216,7 +232,7 @@ namespace cv cv::Mat& desc = descriptors.getMatRef(); AKAZEOptions options; - options.descriptor = static_cast(descriptor); + options.descriptor = descriptor; options.descriptor_channels = descriptor_channels; options.descriptor_size = descriptor_size; options.img_width = img.cols; @@ -229,4 +245,4 @@ namespace cv CV_Assert((!desc.rows || desc.cols == descriptorSize())); CV_Assert((!desc.rows || (desc.type() == descriptorType()))); } -} \ No newline at end of file +} diff --git a/modules/features2d/src/akaze/AKAZEFeatures.cpp b/modules/features2d/src/akaze/AKAZEFeatures.cpp deleted file mode 100644 index e5955b21c2..0000000000 --- a/modules/features2d/src/akaze/AKAZEFeatures.cpp +++ /dev/null @@ -1,1941 +0,0 @@ -/** - * @file AKAZEFeatures.cpp - * @brief Main class for detecting and describing binary features in an - * accelerated nonlinear scale space - * @date Sep 15, 2013 - * @author Pablo F. Alcantarilla, Jesus Nuevo - */ - -#include "AKAZEFeatures.h" -#include "../kaze/fed.h" -#include "../kaze/nldiffusion_functions.h" - -using namespace std; -using namespace cv; -using namespace cv::details::kaze; - -/* ************************************************************************* */ -/** - * @brief AKAZEFeatures constructor with input options - * @param options AKAZEFeatures configuration options - * @note This constructor allocates memory for the nonlinear scale space - */ -AKAZEFeatures::AKAZEFeatures(const AKAZEOptions& options) : options_(options) { - - ncycles_ = 0; - reordering_ = true; - - if (options_.descriptor_size > 0 && options_.descriptor >= cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT) - { - generateDescriptorSubsample(descriptorSamples_, descriptorBits_, options_.descriptor_size, - options_.descriptor_pattern_size, options_.descriptor_channels); - } - - Allocate_Memory_Evolution(); -} - -/* ************************************************************************* */ -/** - * @brief This method allocates the memory for the nonlinear diffusion evolution - */ -void AKAZEFeatures::Allocate_Memory_Evolution(void) { - - float rfactor = 0.0f; - int level_height = 0, level_width = 0; - - // Allocate the dimension of the matrices for the evolution - for (int i = 0; i <= options_.omax - 1; i++) { - rfactor = 1.0f / pow(2.f, i); - level_height = (int)(options_.img_height*rfactor); - level_width = (int)(options_.img_width*rfactor); - - // Smallest possible octave and allow one scale if the image is small - if ((level_width < 80 || level_height < 40) && i != 0) { - options_.omax = i; - break; - } - - for (int j = 0; j < options_.nsublevels; j++) { - TEvolution step; - step.Lx = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Ly = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lxx = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lxy = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lyy = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lt = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Ldet = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lflow = cv::Mat::zeros(level_height, level_width, CV_32F); - step.Lstep = cv::Mat::zeros(level_height, level_width, CV_32F); - step.esigma = options_.soffset*pow(2.f, (float)(j) / (float)(options_.nsublevels) + i); - step.sigma_size = fRound(step.esigma); - step.etime = 0.5f*(step.esigma*step.esigma); - step.octave = i; - step.sublevel = j; - evolution_.push_back(step); - } - } - - // Allocate memory for the number of cycles and time steps - for (size_t i = 1; i < evolution_.size(); i++) { - int naux = 0; - vector tau; - float ttime = 0.0f; - ttime = evolution_[i].etime - evolution_[i - 1].etime; - naux = fed_tau_by_process_time(ttime, 1, 0.25f, reordering_, tau); - nsteps_.push_back(naux); - tsteps_.push_back(tau); - ncycles_++; - } -} - -/* ************************************************************************* */ -/** - * @brief This method creates the nonlinear scale space for a given image - * @param img Input image for which the nonlinear scale space needs to be created - * @return 0 if the nonlinear scale space was created successfully, -1 otherwise - */ -int AKAZEFeatures::Create_Nonlinear_Scale_Space(const cv::Mat& img) -{ - CV_Assert(evolution_.size() > 0); - - // Copy the original image to the first level of the evolution - img.copyTo(evolution_[0].Lt); - gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lt, 0, 0, options_.soffset); - evolution_[0].Lt.copyTo(evolution_[0].Lsmooth); - - // First compute the kcontrast factor - options_.kcontrast = compute_k_percentile(img, options_.kcontrast_percentile, 1.0f, options_.kcontrast_nbins, 0, 0); - - // Now generate the rest of evolution levels - for (size_t i = 1; i < evolution_.size(); i++) { - - if (evolution_[i].octave > evolution_[i - 1].octave) { - halfsample_image(evolution_[i - 1].Lt, evolution_[i].Lt); - options_.kcontrast = options_.kcontrast*0.75f; - } - else { - evolution_[i - 1].Lt.copyTo(evolution_[i].Lt); - } - - gaussian_2D_convolution(evolution_[i].Lt, evolution_[i].Lsmooth, 0, 0, 1.0f); - - // Compute the Gaussian derivatives Lx and Ly - image_derivatives_scharr(evolution_[i].Lsmooth, evolution_[i].Lx, 1, 0); - image_derivatives_scharr(evolution_[i].Lsmooth, evolution_[i].Ly, 0, 1); - - // Compute the conductivity equation - switch (options_.diffusivity) { - case AKAZEOptions::PM_G1: - pm_g1(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options_.kcontrast); - break; - case AKAZEOptions::PM_G2: - pm_g2(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options_.kcontrast); - break; - case AKAZEOptions::WEICKERT: - weickert_diffusivity(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options_.kcontrast); - break; - case AKAZEOptions::CHARBONNIER: - charbonnier_diffusivity(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options_.kcontrast); - break; - default: - CV_Error(options_.diffusivity, "Diffusivity is not supported"); - break; - } - - // Perform FED n inner steps - for (int j = 0; j < nsteps_[i - 1]; j++) { - cv::details::kaze::nld_step_scalar(evolution_[i].Lt, evolution_[i].Lflow, evolution_[i].Lstep, tsteps_[i - 1][j]); - } - } - - return 0; -} - -/* ************************************************************************* */ -/** - * @brief This method selects interesting keypoints through the nonlinear scale space - * @param kpts Vector of detected keypoints - */ -void AKAZEFeatures::Feature_Detection(std::vector& kpts) -{ - kpts.clear(); - - Compute_Determinant_Hessian_Response(); - Find_Scale_Space_Extrema(kpts); - Do_Subpixel_Refinement(kpts); -} - -/* ************************************************************************* */ - -class MultiscaleDerivativesInvoker : public cv::ParallelLoopBody -{ -public: - explicit MultiscaleDerivativesInvoker(std::vector& ev, const AKAZEOptions& opt) - : evolution_(&ev) - , options_(opt) - { - } - - - void operator()(const cv::Range& range) const - { - std::vector& evolution = *evolution_; - - for (int i = range.start; i < range.end; i++) - { - float ratio = pow(2.f, (float)evolution[i].octave); - int sigma_size_ = fRound(evolution[i].esigma * options_.derivative_factor / ratio); - - compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Lx, 1, 0, sigma_size_); - compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Ly, 0, 1, sigma_size_); - compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxx, 1, 0, sigma_size_); - compute_scharr_derivatives(evolution[i].Ly, evolution[i].Lyy, 0, 1, sigma_size_); - compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxy, 0, 1, sigma_size_); - - evolution[i].Lx = evolution[i].Lx*((sigma_size_)); - evolution[i].Ly = evolution[i].Ly*((sigma_size_)); - evolution[i].Lxx = evolution[i].Lxx*((sigma_size_)*(sigma_size_)); - evolution[i].Lxy = evolution[i].Lxy*((sigma_size_)*(sigma_size_)); - evolution[i].Lyy = evolution[i].Lyy*((sigma_size_)*(sigma_size_)); - } - } - -private: - std::vector* evolution_; - AKAZEOptions options_; -}; - -/** - * @brief This method computes the multiscale derivatives for the nonlinear scale space - */ -void AKAZEFeatures::Compute_Multiscale_Derivatives(void) -{ - cv::parallel_for_(cv::Range(0, (int)evolution_.size()), - MultiscaleDerivativesInvoker(evolution_, options_)); -} - -/* ************************************************************************* */ -/** - * @brief This method computes the feature detector response for the nonlinear scale space - * @note We use the Hessian determinant as the feature detector response - */ -void AKAZEFeatures::Compute_Determinant_Hessian_Response(void) { - - // Firstly compute the multiscale derivatives - Compute_Multiscale_Derivatives(); - - for (size_t i = 0; i < evolution_.size(); i++) - { - for (int ix = 0; ix < evolution_[i].Ldet.rows; ix++) - { - for (int jx = 0; jx < evolution_[i].Ldet.cols; jx++) - { - float lxx = *(evolution_[i].Lxx.ptr(ix)+jx); - float lxy = *(evolution_[i].Lxy.ptr(ix)+jx); - float lyy = *(evolution_[i].Lyy.ptr(ix)+jx); - *(evolution_[i].Ldet.ptr(ix)+jx) = (lxx*lyy - lxy*lxy); - } - } - } -} - -/* ************************************************************************* */ -/** - * @brief This method finds extrema in the nonlinear scale space - * @param kpts Vector of detected keypoints - */ -void AKAZEFeatures::Find_Scale_Space_Extrema(std::vector& kpts) -{ - - float value = 0.0; - float dist = 0.0, ratio = 0.0, smax = 0.0; - int npoints = 0, id_repeated = 0; - int sigma_size_ = 0, left_x = 0, right_x = 0, up_y = 0, down_y = 0; - bool is_extremum = false, is_repeated = false, is_out = false; - cv::KeyPoint point; - vector kpts_aux; - - // Set maximum size - if (options_.descriptor == cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT || options_.descriptor == cv::AKAZE::DESCRIPTOR_MLDB) { - smax = 10.0f*sqrtf(2.0f); - } - else if (options_.descriptor == cv::AKAZE::DESCRIPTOR_KAZE_UPRIGHT || options_.descriptor == cv::AKAZE::DESCRIPTOR_KAZE) { - smax = 12.0f*sqrtf(2.0f); - } - - for (size_t i = 0; i < evolution_.size(); i++) { - for (int ix = 1; ix < evolution_[i].Ldet.rows - 1; ix++) { - for (int jx = 1; jx < evolution_[i].Ldet.cols - 1; jx++) { - is_extremum = false; - is_repeated = false; - is_out = false; - value = *(evolution_[i].Ldet.ptr(ix)+jx); - - // Filter the points with the detector threshold - if (value > options_.dthreshold && value >= options_.min_dthreshold && - value > *(evolution_[i].Ldet.ptr(ix)+jx - 1) && - value > *(evolution_[i].Ldet.ptr(ix)+jx + 1) && - value > *(evolution_[i].Ldet.ptr(ix - 1) + jx - 1) && - value > *(evolution_[i].Ldet.ptr(ix - 1) + jx) && - value > *(evolution_[i].Ldet.ptr(ix - 1) + jx + 1) && - value > *(evolution_[i].Ldet.ptr(ix + 1) + jx - 1) && - value > *(evolution_[i].Ldet.ptr(ix + 1) + jx) && - value > *(evolution_[i].Ldet.ptr(ix + 1) + jx + 1)) { - - is_extremum = true; - point.response = fabs(value); - point.size = evolution_[i].esigma*options_.derivative_factor; - point.octave = (int)evolution_[i].octave; - point.class_id = (int)i; - ratio = pow(2.f, point.octave); - sigma_size_ = fRound(point.size / ratio); - point.pt.x = static_cast(jx); - point.pt.y = static_cast(ix); - - // Compare response with the same and lower scale - for (size_t ik = 0; ik < kpts_aux.size(); ik++) { - - if ((point.class_id - 1) == kpts_aux[ik].class_id || - point.class_id == kpts_aux[ik].class_id) { - dist = sqrt(pow(point.pt.x*ratio - kpts_aux[ik].pt.x, 2) + pow(point.pt.y*ratio - kpts_aux[ik].pt.y, 2)); - if (dist <= point.size) { - if (point.response > kpts_aux[ik].response) { - id_repeated = (int)ik; - is_repeated = true; - } - else { - is_extremum = false; - } - break; - } - } - } - - // Check out of bounds - if (is_extremum == true) { - - // Check that the point is under the image limits for the descriptor computation - left_x = fRound(point.pt.x - smax*sigma_size_) - 1; - right_x = fRound(point.pt.x + smax*sigma_size_) + 1; - up_y = fRound(point.pt.y - smax*sigma_size_) - 1; - down_y = fRound(point.pt.y + smax*sigma_size_) + 1; - - if (left_x < 0 || right_x >= evolution_[i].Ldet.cols || - up_y < 0 || down_y >= evolution_[i].Ldet.rows) { - is_out = true; - } - - if (is_out == false) { - if (is_repeated == false) { - point.pt.x *= ratio; - point.pt.y *= ratio; - kpts_aux.push_back(point); - npoints++; - } - else { - point.pt.x *= ratio; - point.pt.y *= ratio; - kpts_aux[id_repeated] = point; - } - } // if is_out - } //if is_extremum - } - } // for jx - } // for ix - } // for i - - // Now filter points with the upper scale level - for (size_t i = 0; i < kpts_aux.size(); i++) { - - is_repeated = false; - const cv::KeyPoint& pt = kpts_aux[i]; - for (size_t j = i + 1; j < kpts_aux.size(); j++) { - - // Compare response with the upper scale - if ((pt.class_id + 1) == kpts_aux[j].class_id) { - dist = sqrt(pow(pt.pt.x - kpts_aux[j].pt.x, 2) + pow(pt.pt.y - kpts_aux[j].pt.y, 2)); - if (dist <= pt.size) { - if (pt.response < kpts_aux[j].response) { - is_repeated = true; - break; - } - } - } - } - - if (is_repeated == false) - kpts.push_back(pt); - } -} - -/* ************************************************************************* */ -/** - * @brief This method performs subpixel refinement of the detected keypoints - * @param kpts Vector of detected keypoints - */ -void AKAZEFeatures::Do_Subpixel_Refinement(std::vector& kpts) -{ - float Dx = 0.0, Dy = 0.0, ratio = 0.0; - float Dxx = 0.0, Dyy = 0.0, Dxy = 0.0; - int x = 0, y = 0; - cv::Mat A = cv::Mat::zeros(2, 2, CV_32F); - cv::Mat b = cv::Mat::zeros(2, 1, CV_32F); - cv::Mat dst = cv::Mat::zeros(2, 1, CV_32F); - - for (size_t i = 0; i < kpts.size(); i++) { - ratio = pow(2.f, kpts[i].octave); - x = fRound(kpts[i].pt.x / ratio); - y = fRound(kpts[i].pt.y / ratio); - - // Compute the gradient - Dx = (0.5f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x + 1) - - *(evolution_[kpts[i].class_id].Ldet.ptr(y)+x - 1)); - Dy = (0.5f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x) - - *(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x)); - - // Compute the Hessian - Dxx = (*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x + 1) - + *(evolution_[kpts[i].class_id].Ldet.ptr(y)+x - 1) - - 2.0f*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x))); - - Dyy = (*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x) - + *(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x) - - 2.0f*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x))); - - Dxy = (0.25f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x + 1) - + (*(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x - 1))) - - (0.25f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x + 1) - + (*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x - 1))); - - // Solve the linear system - *(A.ptr(0)) = Dxx; - *(A.ptr(1) + 1) = Dyy; - *(A.ptr(0) + 1) = *(A.ptr(1)) = Dxy; - *(b.ptr(0)) = -Dx; - *(b.ptr(1)) = -Dy; - - cv::solve(A, b, dst, DECOMP_LU); - - if (fabs(*(dst.ptr(0))) <= 1.0f && fabs(*(dst.ptr(1))) <= 1.0f) { - kpts[i].pt.x = x + (*(dst.ptr(0))); - kpts[i].pt.y = y + (*(dst.ptr(1))); - kpts[i].pt.x *= powf(2.f, (float)evolution_[kpts[i].class_id].octave); - kpts[i].pt.y *= powf(2.f, (float)evolution_[kpts[i].class_id].octave); - kpts[i].angle = 0.0; - - // In OpenCV the size of a keypoint its the diameter - kpts[i].size *= 2.0f; - } - // Delete the point since its not stable - else { - kpts.erase(kpts.begin() + i); - i--; - } - } -} - -/* ************************************************************************* */ - -class SURF_Descriptor_Upright_64_Invoker : public cv::ParallelLoopBody -{ -public: - SURF_Descriptor_Upright_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - Get_SURF_Descriptor_Upright_64((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_SURF_Descriptor_Upright_64(const cv::KeyPoint& kpt, float* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; -}; - -class SURF_Descriptor_64_Invoker : public cv::ParallelLoopBody -{ -public: - SURF_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - { - } - - void operator()(const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); - Get_SURF_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_SURF_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; -}; - -class MSURF_Upright_Descriptor_64_Invoker : public cv::ParallelLoopBody -{ -public: - MSURF_Upright_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - { - } - - void operator()(const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - Get_MSURF_Upright_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_MSURF_Upright_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; -}; - -class MSURF_Descriptor_64_Invoker : public cv::ParallelLoopBody -{ -public: - MSURF_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); - Get_MSURF_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_MSURF_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; -}; - -class Upright_MLDB_Full_Descriptor_Invoker : public cv::ParallelLoopBody -{ -public: - Upright_MLDB_Full_Descriptor_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution, AKAZEOptions& options) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - , options_(&options) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - Get_Upright_MLDB_Full_Descriptor((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_Upright_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; - AKAZEOptions* options_; -}; - -class Upright_MLDB_Descriptor_Subset_Invoker : public cv::ParallelLoopBody -{ -public: - Upright_MLDB_Descriptor_Subset_Invoker(std::vector& kpts, - cv::Mat& desc, - std::vector& evolution, - AKAZEOptions& options, - cv::Mat descriptorSamples, - cv::Mat descriptorBits) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - , options_(&options) - , descriptorSamples_(descriptorSamples) - , descriptorBits_(descriptorBits) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - Get_Upright_MLDB_Descriptor_Subset((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_Upright_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; - AKAZEOptions* options_; - - cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. - cv::Mat descriptorBits_; -}; - -class MLDB_Full_Descriptor_Invoker : public cv::ParallelLoopBody -{ -public: - MLDB_Full_Descriptor_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution, AKAZEOptions& options) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - , options_(&options) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); - Get_MLDB_Full_Descriptor((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; - AKAZEOptions* options_; -}; - -class MLDB_Descriptor_Subset_Invoker : public cv::ParallelLoopBody -{ -public: - MLDB_Descriptor_Subset_Invoker(std::vector& kpts, - cv::Mat& desc, - std::vector& evolution, - AKAZEOptions& options, - cv::Mat descriptorSamples, - cv::Mat descriptorBits) - : keypoints_(&kpts) - , descriptors_(&desc) - , evolution_(&evolution) - , options_(&options) - , descriptorSamples_(descriptorSamples) - , descriptorBits_(descriptorBits) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; i++) - { - AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); - Get_MLDB_Descriptor_Subset((*keypoints_)[i], descriptors_->ptr(i)); - } - } - - void Get_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char* desc) const; - -private: - std::vector* keypoints_; - cv::Mat* descriptors_; - std::vector* evolution_; - AKAZEOptions* options_; - - cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. - cv::Mat descriptorBits_; -}; - -/** - * @brief This method computes the set of descriptors through the nonlinear scale space - * @param kpts Vector of detected keypoints - * @param desc Matrix to store the descriptors - */ -void AKAZEFeatures::Compute_Descriptors(std::vector& kpts, cv::Mat& desc) -{ - // Allocate memory for the matrix with the descriptors - if (options_.descriptor < cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT) { - desc = cv::Mat::zeros((int)kpts.size(), 64, CV_32FC1); - } - else { - // We use the full length binary descriptor -> 486 bits - if (options_.descriptor_size == 0) { - int t = (6 + 36 + 120)*options_.descriptor_channels; - desc = cv::Mat::zeros((int)kpts.size(), (int)ceil(t / 8.), CV_8UC1); - } - else { - // We use the random bit selection length binary descriptor - desc = cv::Mat::zeros((int)kpts.size(), (int)ceil(options_.descriptor_size / 8.), CV_8UC1); - } - } - - switch (options_.descriptor) - { - case cv::AKAZE::DESCRIPTOR_KAZE_UPRIGHT: // Upright descriptors, not invariant to rotation - { - cv::parallel_for_(cv::Range(0, (int)kpts.size()), MSURF_Upright_Descriptor_64_Invoker(kpts, desc, evolution_)); - } - break; - case cv::AKAZE::DESCRIPTOR_KAZE: - { - cv::parallel_for_(cv::Range(0, (int)kpts.size()), MSURF_Descriptor_64_Invoker(kpts, desc, evolution_)); - } - break; - case cv::AKAZE::DESCRIPTOR_MLDB_UPRIGHT: // Upright descriptors, not invariant to rotation - { - if (options_.descriptor_size == 0) - cv::parallel_for_(cv::Range(0, (int)kpts.size()), Upright_MLDB_Full_Descriptor_Invoker(kpts, desc, evolution_, options_)); - else - cv::parallel_for_(cv::Range(0, (int)kpts.size()), Upright_MLDB_Descriptor_Subset_Invoker(kpts, desc, evolution_, options_, descriptorSamples_, descriptorBits_)); - } - break; - case cv::AKAZE::DESCRIPTOR_MLDB: - { - if (options_.descriptor_size == 0) - cv::parallel_for_(cv::Range(0, (int)kpts.size()), MLDB_Full_Descriptor_Invoker(kpts, desc, evolution_, options_)); - else - cv::parallel_for_(cv::Range(0, (int)kpts.size()), MLDB_Descriptor_Subset_Invoker(kpts, desc, evolution_, options_, descriptorSamples_, descriptorBits_)); - } - break; - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the main orientation for a given keypoint - * @param kpt Input keypoint - * @note The orientation is computed using a similar approach as described in the - * original SURF method. See Bay et al., Speeded Up Robust Features, ECCV 2006 - */ -void AKAZEFeatures::Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector& evolution_) { - - int ix = 0, iy = 0, idx = 0, s = 0, level = 0; - float xf = 0.0, yf = 0.0, gweight = 0.0, ratio = 0.0; - std::vector resX(109), resY(109), Ang(109); - const int id[] = { 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6 }; - - // Variables for computing the dominant direction - float sumX = 0.0, sumY = 0.0, max = 0.0, ang1 = 0.0, ang2 = 0.0; - - // Get the information from the keypoint - level = kpt.class_id; - ratio = (float)(1 << evolution_[level].octave); - s = fRound(0.5f*kpt.size / ratio); - xf = kpt.pt.x / ratio; - yf = kpt.pt.y / ratio; - - // Calculate derivatives responses for points within radius of 6*scale - for (int i = -6; i <= 6; ++i) { - for (int j = -6; j <= 6; ++j) { - if (i*i + j*j < 36) { - iy = fRound(yf + j*s); - ix = fRound(xf + i*s); - - gweight = gauss25[id[i + 6]][id[j + 6]]; - resX[idx] = gweight*(*(evolution_[level].Lx.ptr(iy)+ix)); - resY[idx] = gweight*(*(evolution_[level].Ly.ptr(iy)+ix)); - - Ang[idx] = get_angle(resX[idx], resY[idx]); - ++idx; - } - } - } - - // Loop slides pi/3 window around feature point - for (ang1 = 0; ang1 < (float)(2.0 * CV_PI); ang1 += 0.15f) { - ang2 = (ang1 + (float)(CV_PI / 3.0) >(float)(2.0*CV_PI) ? ang1 - (float)(5.0*CV_PI / 3.0) : ang1 + (float)(CV_PI / 3.0)); - sumX = sumY = 0.f; - - for (size_t k = 0; k < Ang.size(); ++k) { - // Get angle from the x-axis of the sample point - const float & ang = Ang[k]; - - // Determine whether the point is within the window - if (ang1 < ang2 && ang1 < ang && ang < ang2) { - sumX += resX[k]; - sumY += resY[k]; - } - else if (ang2 < ang1 && - ((ang > 0 && ang < ang2) || (ang > ang1 && ang < 2.0f*CV_PI))) { - sumX += resX[k]; - sumY += resY[k]; - } - } - - // if the vector produced from this window is longer than all - // previous vectors then this forms the new dominant direction - if (sumX*sumX + sumY*sumY > max) { - // store largest orientation - max = sumX*sumX + sumY*sumY; - kpt.angle = get_angle(sumX, sumY); - } - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the upright descriptor (not rotation invariant) of - * the provided keypoint - * @param kpt Input keypoint - * @param desc Descriptor vector - * @note Rectangular grid of 24 s x 24 s. Descriptor Length 64. The descriptor is inspired - * from Agrawal et al., CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching, - * ECCV 2008 - */ -void MSURF_Upright_Descriptor_64_Invoker::Get_MSURF_Upright_Descriptor_64(const cv::KeyPoint& kpt, float *desc) const { - - float dx = 0.0, dy = 0.0, mdx = 0.0, mdy = 0.0, gauss_s1 = 0.0, gauss_s2 = 0.0; - float rx = 0.0, ry = 0.0, len = 0.0, xf = 0.0, yf = 0.0, ys = 0.0, xs = 0.0; - float sample_x = 0.0, sample_y = 0.0; - int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; - int x2 = 0, y2 = 0, kx = 0, ky = 0, i = 0, j = 0, dcount = 0; - float fx = 0.0, fy = 0.0, ratio = 0.0, res1 = 0.0, res2 = 0.0, res3 = 0.0, res4 = 0.0; - int scale = 0, dsize = 0, level = 0; - - // Subregion centers for the 4x4 gaussian weighting - float cx = -0.5f, cy = 0.5f; - - const std::vector& evolution = *evolution_; - - // Set the descriptor size and the sample and pattern sizes - dsize = 64; - sample_step = 5; - pattern_size = 12; - - // Get the information from the keypoint - ratio = (float)(1 << kpt.octave); - scale = fRound(0.5f*kpt.size / ratio); - level = kpt.class_id; - yf = kpt.pt.y / ratio; - xf = kpt.pt.x / ratio; - - i = -8; - - // Calculate descriptor for this interest point - // Area of size 24 s x 24 s - while (i < pattern_size) { - j = -8; - i = i - 4; - - cx += 1.0f; - cy = -0.5f; - - while (j < pattern_size) { - dx = dy = mdx = mdy = 0.0; - cy += 1.0f; - j = j - 4; - - ky = i + sample_step; - kx = j + sample_step; - - ys = yf + (ky*scale); - xs = xf + (kx*scale); - - for (int k = i; k < i + 9; k++) { - for (int l = j; l < j + 9; l++) { - sample_y = k*scale + yf; - sample_x = l*scale + xf; - - //Get the gaussian weighted x and y responses - gauss_s1 = gaussian(xs - sample_x, ys - sample_y, 2.50f*scale); - - y1 = (int)(sample_y - .5); - x1 = (int)(sample_x - .5); - - y2 = (int)(sample_y + .5); - x2 = (int)(sample_x + .5); - - fx = sample_x - x1; - fy = sample_y - y1; - - res1 = *(evolution[level].Lx.ptr(y1)+x1); - res2 = *(evolution[level].Lx.ptr(y1)+x2); - res3 = *(evolution[level].Lx.ptr(y2)+x1); - res4 = *(evolution[level].Lx.ptr(y2)+x2); - rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - - res1 = *(evolution[level].Ly.ptr(y1)+x1); - res2 = *(evolution[level].Ly.ptr(y1)+x2); - res3 = *(evolution[level].Ly.ptr(y2)+x1); - res4 = *(evolution[level].Ly.ptr(y2)+x2); - ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - - rx = gauss_s1*rx; - ry = gauss_s1*ry; - - // Sum the derivatives to the cumulative descriptor - dx += rx; - dy += ry; - mdx += fabs(rx); - mdy += fabs(ry); - } - } - - // Add the values to the descriptor vector - gauss_s2 = gaussian(cx - 2.0f, cy - 2.0f, 1.5f); - - desc[dcount++] = dx*gauss_s2; - desc[dcount++] = dy*gauss_s2; - desc[dcount++] = mdx*gauss_s2; - desc[dcount++] = mdy*gauss_s2; - - len += (dx*dx + dy*dy + mdx*mdx + mdy*mdy)*gauss_s2*gauss_s2; - - j += 9; - } - - i += 9; - } - - // convert to unit vector - len = sqrt(len); - - for (i = 0; i < dsize; i++) { - desc[i] /= len; - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the descriptor of the provided keypoint given the - * main orientation of the keypoint - * @param kpt Input keypoint - * @param desc Descriptor vector - * @note Rectangular grid of 24 s x 24 s. Descriptor Length 64. The descriptor is inspired - * from Agrawal et al., CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching, - * ECCV 2008 - */ -void MSURF_Descriptor_64_Invoker::Get_MSURF_Descriptor_64(const cv::KeyPoint& kpt, float *desc) const { - - float dx = 0.0, dy = 0.0, mdx = 0.0, mdy = 0.0, gauss_s1 = 0.0, gauss_s2 = 0.0; - float rx = 0.0, ry = 0.0, rrx = 0.0, rry = 0.0, len = 0.0, xf = 0.0, yf = 0.0, ys = 0.0, xs = 0.0; - float sample_x = 0.0, sample_y = 0.0, co = 0.0, si = 0.0, angle = 0.0; - float fx = 0.0, fy = 0.0, ratio = 0.0, res1 = 0.0, res2 = 0.0, res3 = 0.0, res4 = 0.0; - int x1 = 0, y1 = 0, x2 = 0, y2 = 0, sample_step = 0, pattern_size = 0; - int kx = 0, ky = 0, i = 0, j = 0, dcount = 0; - int scale = 0, dsize = 0, level = 0; - - // Subregion centers for the 4x4 gaussian weighting - float cx = -0.5f, cy = 0.5f; - - const std::vector& evolution = *evolution_; - - // Set the descriptor size and the sample and pattern sizes - dsize = 64; - sample_step = 5; - pattern_size = 12; - - // Get the information from the keypoint - ratio = (float)(1 << kpt.octave); - scale = fRound(0.5f*kpt.size / ratio); - angle = kpt.angle; - level = kpt.class_id; - yf = kpt.pt.y / ratio; - xf = kpt.pt.x / ratio; - co = cos(angle); - si = sin(angle); - - i = -8; - - // Calculate descriptor for this interest point - // Area of size 24 s x 24 s - while (i < pattern_size) { - j = -8; - i = i - 4; - - cx += 1.0f; - cy = -0.5f; - - while (j < pattern_size) { - dx = dy = mdx = mdy = 0.0; - cy += 1.0f; - j = j - 4; - - ky = i + sample_step; - kx = j + sample_step; - - xs = xf + (-kx*scale*si + ky*scale*co); - ys = yf + (kx*scale*co + ky*scale*si); - - for (int k = i; k < i + 9; ++k) { - for (int l = j; l < j + 9; ++l) { - // Get coords of sample point on the rotated axis - sample_y = yf + (l*scale*co + k*scale*si); - sample_x = xf + (-l*scale*si + k*scale*co); - - // Get the gaussian weighted x and y responses - gauss_s1 = gaussian(xs - sample_x, ys - sample_y, 2.5f*scale); - - y1 = fRound(sample_y - 0.5f); - x1 = fRound(sample_x - 0.5f); - - y2 = fRound(sample_y + 0.5f); - x2 = fRound(sample_x + 0.5f); - - fx = sample_x - x1; - fy = sample_y - y1; - - res1 = *(evolution[level].Lx.ptr(y1)+x1); - res2 = *(evolution[level].Lx.ptr(y1)+x2); - res3 = *(evolution[level].Lx.ptr(y2)+x1); - res4 = *(evolution[level].Lx.ptr(y2)+x2); - rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - - res1 = *(evolution[level].Ly.ptr(y1)+x1); - res2 = *(evolution[level].Ly.ptr(y1)+x2); - res3 = *(evolution[level].Ly.ptr(y2)+x1); - res4 = *(evolution[level].Ly.ptr(y2)+x2); - ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - - // Get the x and y derivatives on the rotated axis - rry = gauss_s1*(rx*co + ry*si); - rrx = gauss_s1*(-rx*si + ry*co); - - // Sum the derivatives to the cumulative descriptor - dx += rrx; - dy += rry; - mdx += fabs(rrx); - mdy += fabs(rry); - } - } - - // Add the values to the descriptor vector - gauss_s2 = gaussian(cx - 2.0f, cy - 2.0f, 1.5f); - desc[dcount++] = dx*gauss_s2; - desc[dcount++] = dy*gauss_s2; - desc[dcount++] = mdx*gauss_s2; - desc[dcount++] = mdy*gauss_s2; - - len += (dx*dx + dy*dy + mdx*mdx + mdy*mdy)*gauss_s2*gauss_s2; - - j += 9; - } - - i += 9; - } - - // convert to unit vector - len = sqrt(len); - - for (i = 0; i < dsize; i++) { - desc[i] /= len; - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the rupright descriptor (not rotation invariant) of - * the provided keypoint - * @param kpt Input keypoint - * @param desc Descriptor vector - */ -void Upright_MLDB_Full_Descriptor_Invoker::Get_Upright_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char *desc) const { - - float di = 0.0, dx = 0.0, dy = 0.0; - float ri = 0.0, rx = 0.0, ry = 0.0, xf = 0.0, yf = 0.0; - float sample_x = 0.0, sample_y = 0.0, ratio = 0.0; - int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; - int level = 0, nsamples = 0, scale = 0; - int dcount1 = 0, dcount2 = 0; - - const AKAZEOptions & options = *options_; - const std::vector& evolution = *evolution_; - - // Matrices for the M-LDB descriptor - cv::Mat values_1 = cv::Mat::zeros(4, options.descriptor_channels, CV_32FC1); - cv::Mat values_2 = cv::Mat::zeros(9, options.descriptor_channels, CV_32FC1); - cv::Mat values_3 = cv::Mat::zeros(16, options.descriptor_channels, CV_32FC1); - - // Get the information from the keypoint - ratio = (float)(1 << kpt.octave); - scale = fRound(0.5f*kpt.size / ratio); - level = kpt.class_id; - yf = kpt.pt.y / ratio; - xf = kpt.pt.x / ratio; - - // First 2x2 grid - pattern_size = options_->descriptor_pattern_size; - sample_step = pattern_size; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - di = dx = dy = 0.0; - nsamples = 0; - - for (int k = i; k < i + sample_step; k++) { - for (int l = j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + l*scale; - sample_x = xf + k*scale; - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - di += ri; - dx += rx; - dy += ry; - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_1.ptr(dcount2)) = di; - *(values_1.ptr(dcount2)+1) = dx; - *(values_1.ptr(dcount2)+2) = dy; - dcount2++; - } - } - - // Do binary comparison first level - for (int i = 0; i < 4; i++) { - for (int j = i + 1; j < 4; j++) { - if (*(values_1.ptr(i)) > *(values_1.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_1.ptr(i)+1) > *(values_1.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_1.ptr(i)+2) > *(values_1.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - - // Second 3x3 grid - sample_step = static_cast(ceil(pattern_size*2. / 3.)); - dcount2 = 0; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - di = dx = dy = 0.0; - nsamples = 0; - - for (int k = i; k < i + sample_step; k++) { - for (int l = j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + l*scale; - sample_x = xf + k*scale; - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - di += ri; - dx += rx; - dy += ry; - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_2.ptr(dcount2)) = di; - *(values_2.ptr(dcount2)+1) = dx; - *(values_2.ptr(dcount2)+2) = dy; - dcount2++; - } - } - - //Do binary comparison second level - dcount2 = 0; - for (int i = 0; i < 9; i++) { - for (int j = i + 1; j < 9; j++) { - if (*(values_2.ptr(i)) > *(values_2.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_2.ptr(i)+1) > *(values_2.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_2.ptr(i)+2) > *(values_2.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - - // Third 4x4 grid - sample_step = pattern_size / 2; - dcount2 = 0; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - di = dx = dy = 0.0; - nsamples = 0; - - for (int k = i; k < i + sample_step; k++) { - for (int l = j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + l*scale; - sample_x = xf + k*scale; - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - di += ri; - dx += rx; - dy += ry; - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_3.ptr(dcount2)) = di; - *(values_3.ptr(dcount2)+1) = dx; - *(values_3.ptr(dcount2)+2) = dy; - dcount2++; - } - } - - //Do binary comparison third level - dcount2 = 0; - for (int i = 0; i < 16; i++) { - for (int j = i + 1; j < 16; j++) { - if (*(values_3.ptr(i)) > *(values_3.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_3.ptr(i)+1) > *(values_3.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - - if (*(values_3.ptr(i)+2) > *(values_3.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the descriptor of the provided keypoint given the - * main orientation of the keypoint - * @param kpt Input keypoint - * @param desc Descriptor vector - */ -void MLDB_Full_Descriptor_Invoker::Get_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char *desc) const { - - float di = 0.0, dx = 0.0, dy = 0.0, ratio = 0.0; - float ri = 0.0, rx = 0.0, ry = 0.0, rrx = 0.0, rry = 0.0, xf = 0.0, yf = 0.0; - float sample_x = 0.0, sample_y = 0.0, co = 0.0, si = 0.0, angle = 0.0; - int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; - int level = 0, nsamples = 0, scale = 0; - int dcount1 = 0, dcount2 = 0; - - const AKAZEOptions & options = *options_; - const std::vector& evolution = *evolution_; - - // Matrices for the M-LDB descriptor - cv::Mat values_1 = cv::Mat::zeros(4, options.descriptor_channels, CV_32FC1); - cv::Mat values_2 = cv::Mat::zeros(9, options.descriptor_channels, CV_32FC1); - cv::Mat values_3 = cv::Mat::zeros(16, options.descriptor_channels, CV_32FC1); - - // Get the information from the keypoint - ratio = (float)(1 << kpt.octave); - scale = fRound(0.5f*kpt.size / ratio); - angle = kpt.angle; - level = kpt.class_id; - yf = kpt.pt.y / ratio; - xf = kpt.pt.x / ratio; - co = cos(angle); - si = sin(angle); - - // First 2x2 grid - pattern_size = options.descriptor_pattern_size; - sample_step = pattern_size; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - - di = dx = dy = 0.0; - nsamples = 0; - - for (float k = (float)i; k < i + sample_step; k++) { - for (float l = (float)j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + (l*scale*co + k*scale*si); - sample_x = xf + (-l*scale*si + k*scale*co); - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - di += ri; - - if (options.descriptor_channels == 2) { - dx += sqrtf(rx*rx + ry*ry); - } - else if (options.descriptor_channels == 3) { - // Get the x and y derivatives on the rotated axis - rry = rx*co + ry*si; - rrx = -rx*si + ry*co; - dx += rrx; - dy += rry; - } - - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_1.ptr(dcount2)) = di; - if (options.descriptor_channels > 1) { - *(values_1.ptr(dcount2)+1) = dx; - } - - if (options.descriptor_channels > 2) { - *(values_1.ptr(dcount2)+2) = dy; - } - - dcount2++; - } - } - - // Do binary comparison first level - for (int i = 0; i < 4; i++) { - for (int j = i + 1; j < 4; j++) { - if (*(values_1.ptr(i)) > *(values_1.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - - if (options.descriptor_channels > 1) { - for (int i = 0; i < 4; i++) { - for (int j = i + 1; j < 4; j++) { - if (*(values_1.ptr(i)+1) > *(values_1.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - - dcount1++; - } - } - } - - if (options.descriptor_channels > 2) { - for (int i = 0; i < 4; i++) { - for (int j = i + 1; j < 4; j++) { - if (*(values_1.ptr(i)+2) > *(values_1.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - } - - // Second 3x3 grid - sample_step = static_cast(ceil(pattern_size*2. / 3.)); - dcount2 = 0; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - - di = dx = dy = 0.0; - nsamples = 0; - - for (int k = i; k < i + sample_step; k++) { - for (int l = j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + (l*scale*co + k*scale*si); - sample_x = xf + (-l*scale*si + k*scale*co); - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - di += ri; - - if (options.descriptor_channels == 2) { - dx += sqrtf(rx*rx + ry*ry); - } - else if (options.descriptor_channels == 3) { - // Get the x and y derivatives on the rotated axis - rry = rx*co + ry*si; - rrx = -rx*si + ry*co; - dx += rrx; - dy += rry; - } - - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_2.ptr(dcount2)) = di; - if (options.descriptor_channels > 1) { - *(values_2.ptr(dcount2)+1) = dx; - } - - if (options.descriptor_channels > 2) { - *(values_2.ptr(dcount2)+2) = dy; - } - - dcount2++; - } - } - - // Do binary comparison second level - for (int i = 0; i < 9; i++) { - for (int j = i + 1; j < 9; j++) { - if (*(values_2.ptr(i)) > *(values_2.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - - if (options.descriptor_channels > 1) { - for (int i = 0; i < 9; i++) { - for (int j = i + 1; j < 9; j++) { - if (*(values_2.ptr(i)+1) > *(values_2.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - } - - if (options.descriptor_channels > 2) { - for (int i = 0; i < 9; i++) { - for (int j = i + 1; j < 9; j++) { - if (*(values_2.ptr(i)+2) > *(values_2.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - } - - // Third 4x4 grid - sample_step = pattern_size / 2; - dcount2 = 0; - - for (int i = -pattern_size; i < pattern_size; i += sample_step) { - for (int j = -pattern_size; j < pattern_size; j += sample_step) { - di = dx = dy = 0.0; - nsamples = 0; - - for (int k = i; k < i + sample_step; k++) { - for (int l = j; l < j + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + (l*scale*co + k*scale*si); - sample_x = xf + (-l*scale*si + k*scale*co); - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - ri = *(evolution[level].Lt.ptr(y1)+x1); - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - di += ri; - - if (options.descriptor_channels == 2) { - dx += sqrtf(rx*rx + ry*ry); - } - else if (options.descriptor_channels == 3) { - // Get the x and y derivatives on the rotated axis - rry = rx*co + ry*si; - rrx = -rx*si + ry*co; - dx += rrx; - dy += rry; - } - - nsamples++; - } - } - - di /= nsamples; - dx /= nsamples; - dy /= nsamples; - - *(values_3.ptr(dcount2)) = di; - if (options.descriptor_channels > 1) - *(values_3.ptr(dcount2)+1) = dx; - - if (options.descriptor_channels > 2) - *(values_3.ptr(dcount2)+2) = dy; - - dcount2++; - } - } - - // Do binary comparison third level - for (int i = 0; i < 16; i++) { - for (int j = i + 1; j < 16; j++) { - if (*(values_3.ptr(i)) > *(values_3.ptr(j))) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - - if (options.descriptor_channels > 1) { - for (int i = 0; i < 16; i++) { - for (int j = i + 1; j < 16; j++) { - if (*(values_3.ptr(i)+1) > *(values_3.ptr(j)+1)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - } - - if (options.descriptor_channels > 2) { - for (int i = 0; i < 16; i++) { - for (int j = i + 1; j < 16; j++) { - if (*(values_3.ptr(i)+2) > *(values_3.ptr(j)+2)) { - desc[dcount1 / 8] |= (1 << (dcount1 % 8)); - } - dcount1++; - } - } - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the M-LDB descriptor of the provided keypoint given the - * main orientation of the keypoint. The descriptor is computed based on a subset of - * the bits of the whole descriptor - * @param kpt Input keypoint - * @param desc Descriptor vector - */ -void MLDB_Descriptor_Subset_Invoker::Get_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char *desc) const { - - float di = 0.f, dx = 0.f, dy = 0.f; - float rx = 0.f, ry = 0.f; - float sample_x = 0.f, sample_y = 0.f; - int x1 = 0, y1 = 0; - - const AKAZEOptions & options = *options_; - const std::vector& evolution = *evolution_; - - // Get the information from the keypoint - float ratio = (float)(1 << kpt.octave); - int scale = fRound(0.5f*kpt.size / ratio); - float angle = kpt.angle; - int level = kpt.class_id; - float yf = kpt.pt.y / ratio; - float xf = kpt.pt.x / ratio; - float co = cos(angle); - float si = sin(angle); - - // Allocate memory for the matrix of values - cv::Mat values = cv::Mat_::zeros((4 + 9 + 16)*options.descriptor_channels, 1); - - // Sample everything, but only do the comparisons - vector steps(3); - steps.at(0) = options.descriptor_pattern_size; - steps.at(1) = (int)ceil(2.f*options.descriptor_pattern_size / 3.f); - steps.at(2) = options.descriptor_pattern_size / 2; - - for (int i = 0; i < descriptorSamples_.rows; i++) { - const int *coords = descriptorSamples_.ptr(i); - int sample_step = steps.at(coords[0]); - di = 0.0f; - dx = 0.0f; - dy = 0.0f; - - for (int k = coords[1]; k < coords[1] + sample_step; k++) { - for (int l = coords[2]; l < coords[2] + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + (l*scale*co + k*scale*si); - sample_x = xf + (-l*scale*si + k*scale*co); - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - - di += *(evolution[level].Lt.ptr(y1)+x1); - - if (options.descriptor_channels > 1) { - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - if (options.descriptor_channels == 2) { - dx += sqrtf(rx*rx + ry*ry); - } - else if (options.descriptor_channels == 3) { - // Get the x and y derivatives on the rotated axis - dx += rx*co + ry*si; - dy += -rx*si + ry*co; - } - } - } - } - - *(values.ptr(options.descriptor_channels*i)) = di; - - if (options.descriptor_channels == 2) { - *(values.ptr(options.descriptor_channels*i + 1)) = dx; - } - else if (options.descriptor_channels == 3) { - *(values.ptr(options.descriptor_channels*i + 1)) = dx; - *(values.ptr(options.descriptor_channels*i + 2)) = dy; - } - } - - // Do the comparisons - const float *vals = values.ptr(0); - const int *comps = descriptorBits_.ptr(0); - - for (int i = 0; i vals[comps[2 * i + 1]]) { - desc[i / 8] |= (1 << (i % 8)); - } - } -} - -/* ************************************************************************* */ -/** - * @brief This method computes the upright (not rotation invariant) M-LDB descriptor - * of the provided keypoint given the main orientation of the keypoint. - * The descriptor is computed based on a subset of the bits of the whole descriptor - * @param kpt Input keypoint - * @param desc Descriptor vector - */ -void Upright_MLDB_Descriptor_Subset_Invoker::Get_Upright_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char *desc) const { - - float di = 0.0f, dx = 0.0f, dy = 0.0f; - float rx = 0.0f, ry = 0.0f; - float sample_x = 0.0f, sample_y = 0.0f; - int x1 = 0, y1 = 0; - - const AKAZEOptions & options = *options_; - const std::vector& evolution = *evolution_; - - // Get the information from the keypoint - float ratio = (float)(1 << kpt.octave); - int scale = fRound(0.5f*kpt.size / ratio); - int level = kpt.class_id; - float yf = kpt.pt.y / ratio; - float xf = kpt.pt.x / ratio; - - // Allocate memory for the matrix of values - Mat values = cv::Mat_::zeros((4 + 9 + 16)*options.descriptor_channels, 1); - - vector steps(3); - steps.at(0) = options.descriptor_pattern_size; - steps.at(1) = static_cast(ceil(2.f*options.descriptor_pattern_size / 3.f)); - steps.at(2) = options.descriptor_pattern_size / 2; - - for (int i = 0; i < descriptorSamples_.rows; i++) { - const int *coords = descriptorSamples_.ptr(i); - int sample_step = steps.at(coords[0]); - di = 0.0f, dx = 0.0f, dy = 0.0f; - - for (int k = coords[1]; k < coords[1] + sample_step; k++) { - for (int l = coords[2]; l < coords[2] + sample_step; l++) { - - // Get the coordinates of the sample point - sample_y = yf + l*scale; - sample_x = xf + k*scale; - - y1 = fRound(sample_y); - x1 = fRound(sample_x); - di += *(evolution[level].Lt.ptr(y1)+x1); - - if (options.descriptor_channels > 1) { - rx = *(evolution[level].Lx.ptr(y1)+x1); - ry = *(evolution[level].Ly.ptr(y1)+x1); - - if (options.descriptor_channels == 2) { - dx += sqrtf(rx*rx + ry*ry); - } - else if (options.descriptor_channels == 3) { - dx += rx; - dy += ry; - } - } - } - } - - *(values.ptr(options.descriptor_channels*i)) = di; - - if (options.descriptor_channels == 2) { - *(values.ptr(options.descriptor_channels*i + 1)) = dx; - } - else if (options.descriptor_channels == 3) { - *(values.ptr(options.descriptor_channels*i + 1)) = dx; - *(values.ptr(options.descriptor_channels*i + 2)) = dy; - } - } - - // Do the comparisons - const float *vals = values.ptr(0); - const int *comps = descriptorBits_.ptr(0); - - for (int i = 0; i vals[comps[2 * i + 1]]) { - desc[i / 8] |= (1 << (i % 8)); - } - } -} - -/* ************************************************************************* */ -/** - * @brief This function computes a (quasi-random) list of bits to be taken - * from the full descriptor. To speed the extraction, the function creates - * a list of the samples that are involved in generating at least a bit (sampleList) - * and a list of the comparisons between those samples (comparisons) - * @param sampleList - * @param comparisons The matrix with the binary comparisons - * @param nbits The number of bits of the descriptor - * @param pattern_size The pattern size for the binary descriptor - * @param nchannels Number of channels to consider in the descriptor (1-3) - * @note The function keeps the 18 bits (3-channels by 6 comparisons) of the - * coarser grid, since it provides the most robust estimations - */ -void generateDescriptorSubsample(cv::Mat& sampleList, cv::Mat& comparisons, int nbits, - int pattern_size, int nchannels) { - - int ssz = 0; - for (int i = 0; i < 3; i++) { - int gz = (i + 2)*(i + 2); - ssz += gz*(gz - 1) / 2; - } - ssz *= nchannels; - - CV_Assert(nbits <= ssz); // Descriptor size can't be bigger than full descriptor - - // Since the full descriptor is usually under 10k elements, we pick - // the selection from the full matrix. We take as many samples per - // pick as the number of channels. For every pick, we - // take the two samples involved and put them in the sampling list - - Mat_ fullM(ssz / nchannels, 5); - for (int i = 0, c = 0; i < 3; i++) { - int gdiv = i + 2; //grid divisions, per row - int gsz = gdiv*gdiv; - int psz = (int)ceil(2.f*pattern_size / (float)gdiv); - - for (int j = 0; j < gsz; j++) { - for (int k = j + 1; k < gsz; k++, c++) { - fullM(c, 0) = i; - fullM(c, 1) = psz*(j % gdiv) - pattern_size; - fullM(c, 2) = psz*(j / gdiv) - pattern_size; - fullM(c, 3) = psz*(k % gdiv) - pattern_size; - fullM(c, 4) = psz*(k / gdiv) - pattern_size; - } - } - } - - srand(1024); - Mat_ comps = Mat_(nchannels * (int)ceil(nbits / (float)nchannels), 2); - comps = 1000; - - // Select some samples. A sample includes all channels - int count = 0; - int npicks = (int)ceil(nbits / (float)nchannels); - Mat_ samples(29, 3); - Mat_ fullcopy = fullM.clone(); - samples = -1; - - for (int i = 0; i < npicks; i++) { - int k = rand() % (fullM.rows - i); - if (i < 6) { - // Force use of the coarser grid values and comparisons - k = i; - } - - bool n = true; - - for (int j = 0; j < count; j++) { - if (samples(j, 0) == fullcopy(k, 0) && samples(j, 1) == fullcopy(k, 1) && samples(j, 2) == fullcopy(k, 2)) { - n = false; - comps(i*nchannels, 0) = nchannels*j; - comps(i*nchannels + 1, 0) = nchannels*j + 1; - comps(i*nchannels + 2, 0) = nchannels*j + 2; - break; - } - } - - if (n) { - samples(count, 0) = fullcopy(k, 0); - samples(count, 1) = fullcopy(k, 1); - samples(count, 2) = fullcopy(k, 2); - comps(i*nchannels, 0) = nchannels*count; - comps(i*nchannels + 1, 0) = nchannels*count + 1; - comps(i*nchannels + 2, 0) = nchannels*count + 2; - count++; - } - - n = true; - for (int j = 0; j < count; j++) { - if (samples(j, 0) == fullcopy(k, 0) && samples(j, 1) == fullcopy(k, 3) && samples(j, 2) == fullcopy(k, 4)) { - n = false; - comps(i*nchannels, 1) = nchannels*j; - comps(i*nchannels + 1, 1) = nchannels*j + 1; - comps(i*nchannels + 2, 1) = nchannels*j + 2; - break; - } - } - - if (n) { - samples(count, 0) = fullcopy(k, 0); - samples(count, 1) = fullcopy(k, 3); - samples(count, 2) = fullcopy(k, 4); - comps(i*nchannels, 1) = nchannels*count; - comps(i*nchannels + 1, 1) = nchannels*count + 1; - comps(i*nchannels + 2, 1) = nchannels*count + 2; - count++; - } - - Mat tmp = fullcopy.row(k); - fullcopy.row(fullcopy.rows - i - 1).copyTo(tmp); - } - - sampleList = samples.rowRange(0, count).clone(); - comparisons = comps.rowRange(0, nbits).clone(); -} - -/* ************************************************************************* */ -/** - * @brief This function computes the angle from the vector given by (X Y). From 0 to 2*Pi - */ -inline float get_angle(float x, float y) { - - if (x >= 0 && y >= 0) { - return atanf(y / x); - } - - if (x < 0 && y >= 0) { - return static_cast(CV_PI)-atanf(-y / x); - } - - if (x < 0 && y < 0) { - return static_cast(CV_PI)+atanf(y / x); - } - - if (x >= 0 && y < 0) { - return static_cast(2.0 * CV_PI) - atanf(-y / x); - } - - return 0; -} - -/* ************************************************************************* */ -/** - * @brief This function computes the value of a 2D Gaussian function - * @param x X Position - * @param y Y Position - * @param sig Standard Deviation - */ -inline float gaussian(float x, float y, float sigma) { - return expf(-(x*x + y*y) / (2.0f*sigma*sigma)); -} - -/* ************************************************************************* */ -/** - * @brief This function checks descriptor limits - * @param x X Position - * @param y Y Position - * @param width Image width - * @param height Image height - */ -inline void check_descriptor_limits(int &x, int &y, int width, int height) { - - if (x < 0) { - x = 0; - } - - if (y < 0) { - y = 0; - } - - if (x > width - 1) { - x = width - 1; - } - - if (y > height - 1) { - y = height - 1; - } -} - -/* ************************************************************************* */ -/** - * @brief This funtion rounds float to nearest integer - * @param flt Input float - * @return dst Nearest integer - */ -inline int fRound(float flt) { - return (int)(flt + 0.5f); -} \ No newline at end of file diff --git a/modules/features2d/src/akaze/AKAZEFeatures.h b/modules/features2d/src/akaze/AKAZEFeatures.h deleted file mode 100644 index 302ef0d06d..0000000000 --- a/modules/features2d/src/akaze/AKAZEFeatures.h +++ /dev/null @@ -1,65 +0,0 @@ -/** - * @file AKAZE.h - * @brief Main class for detecting and computing binary descriptors in an - * accelerated nonlinear scale space - * @date Mar 27, 2013 - * @author Pablo F. Alcantarilla, Jesus Nuevo - */ - -#pragma once - -/* ************************************************************************* */ -// Includes -#include "precomp.hpp" -#include "AKAZEConfig.h" - -/* ************************************************************************* */ -// AKAZE Class Declaration -class AKAZEFeatures { - -private: - - AKAZEOptions options_; ///< Configuration options for AKAZE - std::vector evolution_; ///< Vector of nonlinear diffusion evolution - - /// FED parameters - int ncycles_; ///< Number of cycles - bool reordering_; ///< Flag for reordering time steps - std::vector > tsteps_; ///< Vector of FED dynamic time steps - std::vector nsteps_; ///< Vector of number of steps per cycle - - /// Matrices for the M-LDB descriptor computation - cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. - cv::Mat descriptorBits_; - cv::Mat bitMask_; - -public: - - /// Constructor with input arguments - AKAZEFeatures(const AKAZEOptions& options); - - /// Scale Space methods - void Allocate_Memory_Evolution(); - int Create_Nonlinear_Scale_Space(const cv::Mat& img); - void Feature_Detection(std::vector& kpts); - void Compute_Determinant_Hessian_Response(void); - void Compute_Multiscale_Derivatives(void); - void Find_Scale_Space_Extrema(std::vector& kpts); - void Do_Subpixel_Refinement(std::vector& kpts); - - // Feature description methods - void Compute_Descriptors(std::vector& kpts, cv::Mat& desc); - - static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector& evolution_); -}; - -/* ************************************************************************* */ -// Inline functions - -// Inline functions -void generateDescriptorSubsample(cv::Mat& sampleList, cv::Mat& comparisons, - int nbits, int pattern_size, int nchannels); -float get_angle(float x, float y); -float gaussian(float x, float y, float sigma); -void check_descriptor_limits(int& x, int& y, int width, int height); -int fRound(float flt); diff --git a/modules/features2d/src/brief.cpp b/modules/features2d/src/brief.cpp deleted file mode 100644 index 0226ffb1e5..0000000000 --- a/modules/features2d/src/brief.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009-2010, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "precomp.hpp" -#include -#include - -#include -#include - -using namespace cv; - -inline int smoothedSum(const Mat& sum, const KeyPoint& pt, int y, int x) -{ - static const int HALF_KERNEL = BriefDescriptorExtractor::KERNEL_SIZE / 2; - - int img_y = (int)(pt.pt.y + 0.5) + y; - int img_x = (int)(pt.pt.x + 0.5) + x; - return sum.at(img_y + HALF_KERNEL + 1, img_x + HALF_KERNEL + 1) - - sum.at(img_y + HALF_KERNEL + 1, img_x - HALF_KERNEL) - - sum.at(img_y - HALF_KERNEL, img_x + HALF_KERNEL + 1) - + sum.at(img_y - HALF_KERNEL, img_x - HALF_KERNEL); -} - -static void pixelTests16(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; -#include "generated_16.i" - } -} - -static void pixelTests32(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; - -#include "generated_32.i" - } -} - -static void pixelTests64(InputArray _sum, const std::vector& keypoints, OutputArray _descriptors) -{ - Mat sum = _sum.getMat(), descriptors = _descriptors.getMat(); - for (int i = 0; i < (int)keypoints.size(); ++i) - { - uchar* desc = descriptors.ptr(i); - const KeyPoint& pt = keypoints[i]; - -#include "generated_64.i" - } -} - -namespace cv -{ - -BriefDescriptorExtractor::BriefDescriptorExtractor(int bytes) : - bytes_(bytes), test_fn_(NULL) -{ - switch (bytes) - { - case 16: - test_fn_ = pixelTests16; - break; - case 32: - test_fn_ = pixelTests32; - break; - case 64: - test_fn_ = pixelTests64; - break; - default: - CV_Error(Error::StsBadArg, "bytes must be 16, 32, or 64"); - } -} - -int BriefDescriptorExtractor::descriptorSize() const -{ - return bytes_; -} - -int BriefDescriptorExtractor::descriptorType() const -{ - return CV_8UC1; -} - -int BriefDescriptorExtractor::defaultNorm() const -{ - return NORM_HAMMING; -} - -void BriefDescriptorExtractor::read( const FileNode& fn) -{ - int dSize = fn["descriptorSize"]; - switch (dSize) - { - case 16: - test_fn_ = pixelTests16; - break; - case 32: - test_fn_ = pixelTests32; - break; - case 64: - test_fn_ = pixelTests64; - break; - default: - CV_Error(Error::StsBadArg, "descriptorSize must be 16, 32, or 64"); - } - bytes_ = dSize; -} - -void BriefDescriptorExtractor::write( FileStorage& fs) const -{ - fs << "descriptorSize" << bytes_; -} - -void BriefDescriptorExtractor::computeImpl(InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - // Construct integral image for fast smoothing (box filter) - Mat sum; - - Mat grayImage = image.getMat(); - if( image.type() != CV_8U ) cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - ///TODO allow the user to pass in a precomputed integral image - //if(image.type() == CV_32S) - // sum = image; - //else - - integral( grayImage, sum, CV_32S); - - //Remove keypoints very close to the border - KeyPointsFilter::runByImageBorder(keypoints, image.size(), PATCH_SIZE/2 + KERNEL_SIZE/2); - - descriptors.create((int)keypoints.size(), bytes_, CV_8U); - descriptors.setTo(Scalar::all(0)); - test_fn_(sum, keypoints, descriptors); -} - -} // namespace cv diff --git a/modules/features2d/src/brisk.cpp b/modules/features2d/src/brisk.cpp index f4690eb170..213dd60413 100644 --- a/modules/features2d/src/brisk.cpp +++ b/modules/features2d/src/brisk.cpp @@ -427,7 +427,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl if (dx + dy > 2) { // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first the corners: ret_val = A * int(*ptr); ptr += dx + 1; @@ -475,7 +475,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl } // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first row: ret_val = A * int(*ptr); ptr++; @@ -487,7 +487,7 @@ BRISK::smoothedIntensity(const cv::Mat& image, const cv::Mat& integral, const fl ret_val += B * int(*ptr); // middle ones: ptr += imagecols - dx - 1; - uchar* end_j = ptr + dy * imagecols; + const uchar* end_j = ptr + dy * imagecols; for (; ptr < end_j; ptr += imagecols - dx - 1) { ret_val += r_x_1_i * int(*ptr); @@ -607,7 +607,7 @@ BRISK::computeDescriptorsAndOrOrientation(InputArray _image, InputArray _mask, s int t2; // the feature orientation - uchar* ptr = descriptors.data; + const uchar* ptr = descriptors.data; for (size_t k = 0; k < ksize; k++) { cv::KeyPoint& kp = keypoints[k]; @@ -1070,7 +1070,7 @@ BriskScaleSpace::isMax2D(const int layer, const int x_layer, const int y_layer) { const cv::Mat& scores = pyramid_[layer].scores(); const int scorescols = scores.cols; - uchar* data = scores.data + y_layer * scorescols + x_layer; + const uchar* data = scores.data + y_layer * scorescols + x_layer; // decision tree: const uchar center = (*data); data--; @@ -2140,7 +2140,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const const int r_y = (int)((yf - y) * 1024); const int r_x_1 = (1024 - r_x); const int r_y_1 = (1024 - r_y); - uchar* ptr = image.data + x + y * imagecols; + const uchar* ptr = image.data + x + y * imagecols; // just interpolate: ret_val = (r_x_1 * r_y_1 * int(*ptr)); ptr++; @@ -2186,7 +2186,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const const int r_y1_i = (int)(r_y1 * scaling); // now the calculation: - uchar* ptr = image.data + x_left + imagecols * y_top; + const uchar* ptr = image.data + x_left + imagecols * y_top; // first row: ret_val = A * int(*ptr); ptr++; @@ -2198,7 +2198,7 @@ BriskLayer::value(const cv::Mat& mat, float xf, float yf, float scale_in) const ret_val += B * int(*ptr); // middle ones: ptr += imagecols - dx - 1; - uchar* end_j = ptr + dy * imagecols; + const uchar* end_j = ptr + dy * imagecols; for (; ptr < end_j; ptr += imagecols - dx - 1) { ret_val += r_x_1_i * int(*ptr); diff --git a/modules/features2d/src/descriptors.cpp b/modules/features2d/src/descriptors.cpp index c453190624..23d9fbbc9b 100644 --- a/modules/features2d/src/descriptors.cpp +++ b/modules/features2d/src/descriptors.cpp @@ -98,13 +98,6 @@ void DescriptorExtractor::removeBorderKeypoints( std::vector& keypoint Ptr DescriptorExtractor::create(const String& descriptorExtractorType) { - if( descriptorExtractorType.find("Opponent") == 0 ) - { - size_t pos = String("Opponent").size(); - String type = descriptorExtractorType.substr(pos); - return makePtr(DescriptorExtractor::create(type)); - } - return Algorithm::create("Feature2D." + descriptorExtractorType); } @@ -114,151 +107,4 @@ CV_WRAP void Feature2D::compute( InputArray image, CV_OUT CV_IN_OUT std::vector< DescriptorExtractor::compute(image, keypoints, descriptors); } -///////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/****************************************************************************************\ -* OpponentColorDescriptorExtractor * -\****************************************************************************************/ -OpponentColorDescriptorExtractor::OpponentColorDescriptorExtractor( const Ptr& _descriptorExtractor ) : - descriptorExtractor(_descriptorExtractor) -{ - CV_Assert( descriptorExtractor ); -} - -static void convertBGRImageToOpponentColorSpace( const Mat& bgrImage, std::vector& opponentChannels ) -{ - if( bgrImage.type() != CV_8UC3 ) - CV_Error( Error::StsBadArg, "input image must be an BGR image of type CV_8UC3" ); - - // Prepare opponent color space storage matrices. - opponentChannels.resize( 3 ); - opponentChannels[0] = cv::Mat(bgrImage.size(), CV_8UC1); // R-G RED-GREEN - opponentChannels[1] = cv::Mat(bgrImage.size(), CV_8UC1); // R+G-2B YELLOW-BLUE - opponentChannels[2] = cv::Mat(bgrImage.size(), CV_8UC1); // R+G+B - - for(int y = 0; y < bgrImage.rows; ++y) - for(int x = 0; x < bgrImage.cols; ++x) - { - Vec3b v = bgrImage.at(y, x); - uchar& b = v[0]; - uchar& g = v[1]; - uchar& r = v[2]; - - opponentChannels[0].at(y, x) = saturate_cast(0.5f * (255 + g - r)); // (R - G)/sqrt(2), but converted to the destination data type - opponentChannels[1].at(y, x) = saturate_cast(0.25f * (510 + r + g - 2*b)); // (R + G - 2B)/sqrt(6), but converted to the destination data type - opponentChannels[2].at(y, x) = saturate_cast(1.f/3.f * (r + g + b)); // (R + G + B)/sqrt(3), but converted to the destination data type - } -} - -struct KP_LessThan -{ - KP_LessThan(const std::vector& _kp) : kp(&_kp) {} - bool operator()(int i, int j) const - { - return (*kp)[i].class_id < (*kp)[j].class_id; - } - const std::vector* kp; -}; - -void OpponentColorDescriptorExtractor::computeImpl( InputArray _bgrImage, std::vector& keypoints, OutputArray descriptors ) const -{ - Mat bgrImage = _bgrImage.getMat(); - std::vector opponentChannels; - convertBGRImageToOpponentColorSpace( bgrImage, opponentChannels ); - - const int N = 3; // channels count - std::vector channelKeypoints[N]; - Mat channelDescriptors[N]; - std::vector idxs[N]; - - // Compute descriptors three times, once for each Opponent channel to concatenate into a single color descriptor - int maxKeypointsCount = 0; - for( int ci = 0; ci < N; ci++ ) - { - channelKeypoints[ci].insert( channelKeypoints[ci].begin(), keypoints.begin(), keypoints.end() ); - // Use class_id member to get indices into initial keypoints vector - for( size_t ki = 0; ki < channelKeypoints[ci].size(); ki++ ) - channelKeypoints[ci][ki].class_id = (int)ki; - - descriptorExtractor->compute( opponentChannels[ci], channelKeypoints[ci], channelDescriptors[ci] ); - idxs[ci].resize( channelKeypoints[ci].size() ); - for( size_t ki = 0; ki < channelKeypoints[ci].size(); ki++ ) - { - idxs[ci][ki] = (int)ki; - } - std::sort( idxs[ci].begin(), idxs[ci].end(), KP_LessThan(channelKeypoints[ci]) ); - maxKeypointsCount = std::max( maxKeypointsCount, (int)channelKeypoints[ci].size()); - } - - std::vector outKeypoints; - outKeypoints.reserve( keypoints.size() ); - - int dSize = descriptorExtractor->descriptorSize(); - Mat mergedDescriptors( maxKeypointsCount, 3*dSize, descriptorExtractor->descriptorType() ); - int mergedCount = 0; - // cp - current channel position - size_t cp[] = {0, 0, 0}; - while( cp[0] < channelKeypoints[0].size() && - cp[1] < channelKeypoints[1].size() && - cp[2] < channelKeypoints[2].size() ) - { - const int maxInitIdx = std::max( 0, std::max( channelKeypoints[0][idxs[0][cp[0]]].class_id, - std::max( channelKeypoints[1][idxs[1][cp[1]]].class_id, - channelKeypoints[2][idxs[2][cp[2]]].class_id ) ) ); - - while( channelKeypoints[0][idxs[0][cp[0]]].class_id < maxInitIdx && cp[0] < channelKeypoints[0].size() ) { cp[0]++; } - while( channelKeypoints[1][idxs[1][cp[1]]].class_id < maxInitIdx && cp[1] < channelKeypoints[1].size() ) { cp[1]++; } - while( channelKeypoints[2][idxs[2][cp[2]]].class_id < maxInitIdx && cp[2] < channelKeypoints[2].size() ) { cp[2]++; } - if( cp[0] >= channelKeypoints[0].size() || cp[1] >= channelKeypoints[1].size() || cp[2] >= channelKeypoints[2].size() ) - break; - - if( channelKeypoints[0][idxs[0][cp[0]]].class_id == maxInitIdx && - channelKeypoints[1][idxs[1][cp[1]]].class_id == maxInitIdx && - channelKeypoints[2][idxs[2][cp[2]]].class_id == maxInitIdx ) - { - outKeypoints.push_back( keypoints[maxInitIdx] ); - // merge descriptors - for( int ci = 0; ci < N; ci++ ) - { - Mat dst = mergedDescriptors(Range(mergedCount, mergedCount+1), Range(ci*dSize, (ci+1)*dSize)); - channelDescriptors[ci].row( idxs[ci][cp[ci]] ).copyTo( dst ); - cp[ci]++; - } - mergedCount++; - } - } - mergedDescriptors.rowRange(0, mergedCount).copyTo( descriptors ); - std::swap( outKeypoints, keypoints ); -} - -void OpponentColorDescriptorExtractor::read( const FileNode& fn ) -{ - descriptorExtractor->read(fn); -} - -void OpponentColorDescriptorExtractor::write( FileStorage& fs ) const -{ - descriptorExtractor->write(fs); -} - -int OpponentColorDescriptorExtractor::descriptorSize() const -{ - return 3*descriptorExtractor->descriptorSize(); -} - -int OpponentColorDescriptorExtractor::descriptorType() const -{ - return descriptorExtractor->descriptorType(); -} - -int OpponentColorDescriptorExtractor::defaultNorm() const -{ - return descriptorExtractor->defaultNorm(); -} - -bool OpponentColorDescriptorExtractor::empty() const -{ - return !descriptorExtractor || descriptorExtractor->empty(); -} - } diff --git a/modules/features2d/src/detectors.cpp b/modules/features2d/src/detectors.cpp index d3c1f3f200..866d24d106 100644 --- a/modules/features2d/src/detectors.cpp +++ b/modules/features2d/src/detectors.cpp @@ -106,24 +106,6 @@ void FeatureDetector::removeInvalidPoints( const Mat& mask, std::vector FeatureDetector::create( const String& detectorType ) { - if( detectorType.find("Grid") == 0 ) - { - return makePtr(FeatureDetector::create( - detectorType.substr(strlen("Grid")))); - } - - if( detectorType.find("Pyramid") == 0 ) - { - return makePtr(FeatureDetector::create( - detectorType.substr(strlen("Pyramid")))); - } - - if( detectorType.find("Dynamic") == 0 ) - { - return makePtr(AdjusterAdapter::create( - detectorType.substr(strlen("Dynamic")))); - } - if( detectorType.compare( "HARRIS" ) == 0 ) { Ptr fd = FeatureDetector::create("GFTT"); @@ -176,212 +158,4 @@ void GFTTDetector::detectImpl( InputArray _image, std::vector& keypoin } -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -/* - * DenseFeatureDetector - */ -DenseFeatureDetector::DenseFeatureDetector( float _initFeatureScale, int _featureScaleLevels, - float _featureScaleMul, int _initXyStep, - int _initImgBound, bool _varyXyStepWithScale, - bool _varyImgBoundWithScale ) : - initFeatureScale(_initFeatureScale), featureScaleLevels(_featureScaleLevels), - featureScaleMul(_featureScaleMul), initXyStep(_initXyStep), initImgBound(_initImgBound), - varyXyStepWithScale(_varyXyStepWithScale), varyImgBoundWithScale(_varyImgBoundWithScale) -{} - - -void DenseFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - - float curScale = static_cast(initFeatureScale); - int curStep = initXyStep; - int curBound = initImgBound; - for( int curLevel = 0; curLevel < featureScaleLevels; curLevel++ ) - { - for( int x = curBound; x < image.cols - curBound; x += curStep ) - { - for( int y = curBound; y < image.rows - curBound; y += curStep ) - { - keypoints.push_back( KeyPoint(static_cast(x), static_cast(y), curScale) ); - } - } - - curScale = static_cast(curScale * featureScaleMul); - if( varyXyStepWithScale ) curStep = static_cast( curStep * featureScaleMul + 0.5f ); - if( varyImgBoundWithScale ) curBound = static_cast( curBound * featureScaleMul + 0.5f ); - } - - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - -/* - * GridAdaptedFeatureDetector - */ -GridAdaptedFeatureDetector::GridAdaptedFeatureDetector( const Ptr& _detector, - int _maxTotalKeypoints, int _gridRows, int _gridCols ) - : detector(_detector), maxTotalKeypoints(_maxTotalKeypoints), gridRows(_gridRows), gridCols(_gridCols) -{} - -bool GridAdaptedFeatureDetector::empty() const -{ - return !detector || detector->empty(); -} - -struct ResponseComparator -{ - bool operator() (const KeyPoint& a, const KeyPoint& b) - { - return std::abs(a.response) > std::abs(b.response); - } -}; - -static void keepStrongest( int N, std::vector& keypoints ) -{ - if( (int)keypoints.size() > N ) - { - std::vector::iterator nth = keypoints.begin() + N; - std::nth_element( keypoints.begin(), nth, keypoints.end(), ResponseComparator() ); - keypoints.erase( nth, keypoints.end() ); - } -} - -namespace { -class GridAdaptedFeatureDetectorInvoker : public ParallelLoopBody -{ -private: - int gridRows_, gridCols_; - int maxPerCell_; - std::vector& keypoints_; - const Mat& image_; - const Mat& mask_; - const Ptr& detector_; - Mutex* kptLock_; - - GridAdaptedFeatureDetectorInvoker& operator=(const GridAdaptedFeatureDetectorInvoker&); // to quiet MSVC - -public: - - GridAdaptedFeatureDetectorInvoker(const Ptr& detector, const Mat& image, const Mat& mask, - std::vector& keypoints, int maxPerCell, int gridRows, int gridCols, - cv::Mutex* kptLock) - : gridRows_(gridRows), gridCols_(gridCols), maxPerCell_(maxPerCell), - keypoints_(keypoints), image_(image), mask_(mask), detector_(detector), - kptLock_(kptLock) - { - } - - void operator() (const Range& range) const - { - for (int i = range.start; i < range.end; ++i) - { - int celly = i / gridCols_; - int cellx = i - celly * gridCols_; - - Range row_range((celly*image_.rows)/gridRows_, ((celly+1)*image_.rows)/gridRows_); - Range col_range((cellx*image_.cols)/gridCols_, ((cellx+1)*image_.cols)/gridCols_); - - Mat sub_image = image_(row_range, col_range); - Mat sub_mask; - if (!mask_.empty()) sub_mask = mask_(row_range, col_range); - - std::vector sub_keypoints; - sub_keypoints.reserve(maxPerCell_); - - detector_->detect( sub_image, sub_keypoints, sub_mask ); - keepStrongest( maxPerCell_, sub_keypoints ); - - std::vector::iterator it = sub_keypoints.begin(), - end = sub_keypoints.end(); - for( ; it != end; ++it ) - { - it->pt.x += col_range.start; - it->pt.y += row_range.start; - } - - cv::AutoLock join_keypoints(*kptLock_); - keypoints_.insert( keypoints_.end(), sub_keypoints.begin(), sub_keypoints.end() ); - } - } -}; -} // namepace - -void GridAdaptedFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - if (_image.empty() || maxTotalKeypoints < gridRows * gridCols) - { - keypoints.clear(); - return; - } - keypoints.reserve(maxTotalKeypoints); - int maxPerCell = maxTotalKeypoints / (gridRows * gridCols); - - Mat image = _image.getMat(), mask = _mask.getMat(); - - cv::Mutex kptLock; - cv::parallel_for_(cv::Range(0, gridRows * gridCols), - GridAdaptedFeatureDetectorInvoker(detector, image, mask, keypoints, maxPerCell, gridRows, gridCols, &kptLock)); -} - -/* - * PyramidAdaptedFeatureDetector - */ -PyramidAdaptedFeatureDetector::PyramidAdaptedFeatureDetector( const Ptr& _detector, int _maxLevel ) - : detector(_detector), maxLevel(_maxLevel) -{} - -bool PyramidAdaptedFeatureDetector::empty() const -{ - return !detector || detector->empty(); -} - -void PyramidAdaptedFeatureDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - Mat src = image; - Mat src_mask = mask; - - Mat dilated_mask; - if( !mask.empty() ) - { - dilate( mask, dilated_mask, Mat() ); - Mat mask255( mask.size(), CV_8UC1, Scalar(0) ); - mask255.setTo( Scalar(255), dilated_mask != 0 ); - dilated_mask = mask255; - } - - for( int l = 0, multiplier = 1; l <= maxLevel; ++l, multiplier *= 2 ) - { - // Detect on current level of the pyramid - std::vector new_pts; - detector->detect( src, new_pts, src_mask ); - std::vector::iterator it = new_pts.begin(), - end = new_pts.end(); - for( ; it != end; ++it) - { - it->pt.x *= multiplier; - it->pt.y *= multiplier; - it->size *= multiplier; - it->octave = l; - } - keypoints.insert( keypoints.end(), new_pts.begin(), new_pts.end() ); - - // Downsample - if( l < maxLevel ) - { - Mat dst; - pyrDown( src, dst ); - src = dst; - - if( !mask.empty() ) - resize( dilated_mask, src_mask, src.size(), 0, 0, INTER_AREA ); - } - } - - if( !mask.empty() ) - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - - } diff --git a/modules/features2d/src/dynamic.cpp b/modules/features2d/src/dynamic.cpp index 560005fba0..1806a273fd 100644 --- a/modules/features2d/src/dynamic.cpp +++ b/modules/features2d/src/dynamic.cpp @@ -44,181 +44,4 @@ namespace cv { -DynamicAdaptedFeatureDetector::DynamicAdaptedFeatureDetector(const Ptr& a, - int min_features, int max_features, int max_iters ) : - escape_iters_(max_iters), min_features_(min_features), max_features_(max_features), adjuster_(a) -{} - -bool DynamicAdaptedFeatureDetector::empty() const -{ - return !adjuster_ || adjuster_->empty(); -} - -void DynamicAdaptedFeatureDetector::detectImpl(InputArray _image, std::vector& keypoints, InputArray _mask) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(); - - //for oscillation testing - bool down = false; - bool up = false; - - //flag for whether the correct threshhold has been reached - bool thresh_good = false; - - Ptr adjuster = adjuster_->clone(); - - //break if the desired number hasn't been reached. - int iter_count = escape_iters_; - - while( iter_count > 0 && !(down && up) && !thresh_good && adjuster->good() ) - { - keypoints.clear(); - - //the adjuster takes care of calling the detector with updated parameters - adjuster->detect(image, keypoints,mask); - - if( int(keypoints.size()) < min_features_ ) - { - down = true; - adjuster->tooFew(min_features_, (int)keypoints.size()); - } - else if( int(keypoints.size()) > max_features_ ) - { - up = true; - adjuster->tooMany(max_features_, (int)keypoints.size()); - } - else - thresh_good = true; - - iter_count--; - } - -} - -FastAdjuster::FastAdjuster( int init_thresh, bool nonmax, int min_thresh, int max_thresh ) : - thresh_(init_thresh), nonmax_(nonmax), init_thresh_(init_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void FastAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - FastFeatureDetector(thresh_, nonmax_).detect(image, keypoints, mask); -} - -void FastAdjuster::tooFew(int, int) -{ - //fast is easy to adjust - thresh_--; -} - -void FastAdjuster::tooMany(int, int) -{ - //fast is easy to adjust - thresh_++; -} - -//return whether or not the threshhold is beyond -//a useful point -bool FastAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr FastAdjuster::clone() const -{ - Ptr cloned_obj(new FastAdjuster( init_thresh_, nonmax_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -StarAdjuster::StarAdjuster(double initial_thresh, double min_thresh, double max_thresh) : - thresh_(initial_thresh), init_thresh_(initial_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void StarAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - StarFeatureDetector detector_tmp(16, cvRound(thresh_), 10, 8, 3); - detector_tmp.detect(image, keypoints, mask); -} - -void StarAdjuster::tooFew(int, int) -{ - thresh_ *= 0.9; - if (thresh_ < 1.1) - thresh_ = 1.1; -} - -void StarAdjuster::tooMany(int, int) -{ - thresh_ *= 1.1; -} - -bool StarAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr StarAdjuster::clone() const -{ - Ptr cloned_obj(new StarAdjuster( init_thresh_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -SurfAdjuster::SurfAdjuster( double initial_thresh, double min_thresh, double max_thresh ) : - thresh_(initial_thresh), init_thresh_(initial_thresh), - min_thresh_(min_thresh), max_thresh_(max_thresh) -{} - -void SurfAdjuster::detectImpl(InputArray image, std::vector& keypoints, InputArray mask) const -{ - Ptr surf = FeatureDetector::create("SURF"); - surf->set("hessianThreshold", thresh_); - surf->detect(image, keypoints, mask); -} - -void SurfAdjuster::tooFew(int, int) -{ - thresh_ *= 0.9; - if (thresh_ < 1.1) - thresh_ = 1.1; -} - -void SurfAdjuster::tooMany(int, int) -{ - thresh_ *= 1.1; -} - -//return whether or not the threshhold is beyond -//a useful point -bool SurfAdjuster::good() const -{ - return (thresh_ > min_thresh_) && (thresh_ < max_thresh_); -} - -Ptr SurfAdjuster::clone() const -{ - Ptr cloned_obj(new SurfAdjuster( init_thresh_, min_thresh_, max_thresh_ )); - return cloned_obj; -} - -Ptr AdjusterAdapter::create( const String& detectorType ) -{ - Ptr adapter; - - if( !detectorType.compare( "FAST" ) ) - { - adapter = makePtr(); - } - else if( !detectorType.compare( "STAR" ) ) - { - adapter = makePtr(); - } - else if( !detectorType.compare( "SURF" ) ) - { - adapter = makePtr(); - } - - return adapter; -} - } diff --git a/modules/features2d/src/evaluation.cpp b/modules/features2d/src/evaluation.cpp index 2afc57bd3e..3863203df7 100644 --- a/modules/features2d/src/evaluation.cpp +++ b/modules/features2d/src/evaluation.cpp @@ -556,56 +556,3 @@ int cv::getNearestPoint( const std::vector& recallPrecisionCurve, float return nearestPointIndex; } - -void cv::evaluateGenericDescriptorMatcher( const Mat& img1, const Mat& img2, const Mat& H1to2, - std::vector& keypoints1, std::vector& keypoints2, - std::vector >* _matches1to2, std::vector >* _correctMatches1to2Mask, - std::vector& recallPrecisionCurve, - const Ptr& _dmatcher ) -{ - Ptr dmatcher = _dmatcher; - dmatcher->clear(); - - std::vector > *matches1to2, buf1; - matches1to2 = _matches1to2 != 0 ? _matches1to2 : &buf1; - - std::vector > *correctMatches1to2Mask, buf2; - correctMatches1to2Mask = _correctMatches1to2Mask != 0 ? _correctMatches1to2Mask : &buf2; - - if( keypoints1.empty() ) - CV_Error( Error::StsBadArg, "keypoints1 must not be empty" ); - - if( matches1to2->empty() && !dmatcher ) - CV_Error( Error::StsBadArg, "dmatch must not be empty when matches1to2 is empty" ); - - bool computeKeypoints2ByPrj = keypoints2.empty(); - if( computeKeypoints2ByPrj ) - { - CV_Error(Error::StsNotImplemented, ""); - // TODO: add computing keypoints2 from keypoints1 using H1to2 - } - - if( matches1to2->empty() || computeKeypoints2ByPrj ) - { - dmatcher->clear(); - dmatcher->radiusMatch( img1, keypoints1, img2, keypoints2, *matches1to2, std::numeric_limits::max() ); - } - float repeatability; - int correspCount; - Mat thresholdedOverlapMask; // thresholded allOverlapErrors - calculateRepeatability( img1, img2, H1to2, keypoints1, keypoints2, repeatability, correspCount, &thresholdedOverlapMask ); - - correctMatches1to2Mask->resize(matches1to2->size()); - for( size_t i = 0; i < matches1to2->size(); i++ ) - { - (*correctMatches1to2Mask)[i].resize((*matches1to2)[i].size()); - for( size_t j = 0;j < (*matches1to2)[i].size(); j++ ) - { - int indexQuery = (*matches1to2)[i][j].queryIdx; - int indexTrain = (*matches1to2)[i][j].trainIdx; - (*correctMatches1to2Mask)[i][j] = thresholdedOverlapMask.at( indexQuery, indexTrain ); - } - } - - computeRecallPrecisionCurve( *matches1to2, *correctMatches1to2Mask, recallPrecisionCurve ); -} diff --git a/modules/features2d/src/fast.cpp b/modules/features2d/src/fast.cpp index c01cbba698..79b6d6cef3 100644 --- a/modules/features2d/src/fast.cpp +++ b/modules/features2d/src/fast.cpp @@ -43,7 +43,7 @@ The references are: #include "precomp.hpp" #include "fast_score.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #if defined _MSC_VER # pragma warning( disable : 4127) diff --git a/modules/features2d/src/features2d_init.cpp b/modules/features2d/src/features2d_init.cpp index eb7145697b..470cb3c54e 100644 --- a/modules/features2d/src/features2d_init.cpp +++ b/modules/features2d/src/features2d_init.cpp @@ -62,24 +62,11 @@ CV_INIT_ALGORITHM(BRISK, "Feature2D.BRISK", /////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(BriefDescriptorExtractor, "Feature2D.BRIEF", - obj.info()->addParam(obj, "bytes", obj.bytes_)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(FastFeatureDetector, "Feature2D.FAST", obj.info()->addParam(obj, "threshold", obj.threshold); obj.info()->addParam(obj, "nonmaxSuppression", obj.nonmaxSuppression); obj.info()->addParam(obj, "type", obj.type)) -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - -CV_INIT_ALGORITHM(StarDetector, "Feature2D.STAR", - obj.info()->addParam(obj, "maxSize", obj.maxSize); - obj.info()->addParam(obj, "responseThreshold", obj.responseThreshold); - obj.info()->addParam(obj, "lineThresholdProjected", obj.lineThresholdProjected); - obj.info()->addParam(obj, "lineThresholdBinarized", obj.lineThresholdBinarized); - obj.info()->addParam(obj, "suppressNonmaxSize", obj.suppressNonmaxSize)) /////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -108,14 +95,6 @@ CV_INIT_ALGORITHM(ORB, "Feature2D.ORB", /////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(FREAK, "Feature2D.FREAK", - obj.info()->addParam(obj, "orientationNormalized", obj.orientationNormalized); - obj.info()->addParam(obj, "scaleNormalized", obj.scaleNormalized); - obj.info()->addParam(obj, "patternScale", obj.patternScale); - obj.info()->addParam(obj, "nbOctave", obj.nOctaves)) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(GFTTDetector, "Feature2D.GFTT", obj.info()->addParam(obj, "nfeatures", obj.nfeatures); obj.info()->addParam(obj, "qualityLevel", obj.qualityLevel); @@ -181,23 +160,6 @@ CV_INIT_ALGORITHM(HarrisDetector, "Feature2D.HARRIS", //////////////////////////////////////////////////////////////////////////////////////////////////////////// -CV_INIT_ALGORITHM(DenseFeatureDetector, "Feature2D.Dense", - obj.info()->addParam(obj, "initFeatureScale", obj.initFeatureScale); - obj.info()->addParam(obj, "featureScaleLevels", obj.featureScaleLevels); - obj.info()->addParam(obj, "featureScaleMul", obj.featureScaleMul); - obj.info()->addParam(obj, "initXyStep", obj.initXyStep); - obj.info()->addParam(obj, "initImgBound", obj.initImgBound); - obj.info()->addParam(obj, "varyXyStepWithScale", obj.varyXyStepWithScale); - obj.info()->addParam(obj, "varyImgBoundWithScale", obj.varyImgBoundWithScale)) - -CV_INIT_ALGORITHM(GridAdaptedFeatureDetector, "Feature2D.Grid", - obj.info()->addParam(obj, "detector", obj.detector, false, 0, 0); // Extra params added to avoid VS2013 fatal error in opencv2/core.hpp (decl. of addParam) - obj.info()->addParam(obj, "maxTotalKeypoints", obj.maxTotalKeypoints); - obj.info()->addParam(obj, "gridRows", obj.gridRows); - obj.info()->addParam(obj, "gridCols", obj.gridCols)) - -//////////////////////////////////////////////////////////////////////////////////////////////////////////// - CV_INIT_ALGORITHM(BFMatcher, "DescriptorMatcher.BFMatcher", obj.info()->addParam(obj, "normType", obj.normType); obj.info()->addParam(obj, "crossCheck", obj.crossCheck)) @@ -209,19 +171,14 @@ CV_INIT_ALGORITHM(FlannBasedMatcher, "DescriptorMatcher.FlannBasedMatcher",) bool cv::initModule_features2d(void) { bool all = true; - all &= !BriefDescriptorExtractor_info_auto.name().empty(); all &= !BRISK_info_auto.name().empty(); all &= !FastFeatureDetector_info_auto.name().empty(); - all &= !StarDetector_info_auto.name().empty(); all &= !MSER_info_auto.name().empty(); - all &= !FREAK_info_auto.name().empty(); all &= !ORB_info_auto.name().empty(); all &= !GFTTDetector_info_auto.name().empty(); all &= !KAZE_info_auto.name().empty(); all &= !AKAZE_info_auto.name().empty(); - all &= !HarrisDetector_info_auto.name().empty(); - all &= !DenseFeatureDetector_info_auto.name().empty(); - all &= !GridAdaptedFeatureDetector_info_auto.name().empty(); + all &= !HarrisDetector_info_auto.name().empty(); all &= !BFMatcher_info_auto.name().empty(); all &= !FlannBasedMatcher_info_auto.name().empty(); diff --git a/modules/features2d/src/freak.cpp b/modules/features2d/src/freak.cpp deleted file mode 100644 index 00c0e35ae8..0000000000 --- a/modules/features2d/src/freak.cpp +++ /dev/null @@ -1,734 +0,0 @@ -// freak.cpp -// -// Copyright (C) 2011-2012 Signal processing laboratory 2, EPFL, -// Kirell Benzi (kirell.benzi@epfl.ch), -// Raphael Ortiz (raphael.ortiz@a3.epfl.ch) -// Alexandre Alahi (alexandre.alahi@epfl.ch) -// and Pierre Vandergheynst (pierre.vandergheynst@epfl.ch) -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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 "precomp.hpp" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace cv -{ - -static const double FREAK_SQRT2 = 1.4142135623731; -static const double FREAK_INV_SQRT2 = 1.0 / FREAK_SQRT2; -static const double FREAK_LOG2 = 0.693147180559945; -static const int FREAK_NB_ORIENTATION = 256; -static const int FREAK_NB_POINTS = 43; -static const int FREAK_SMALLEST_KP_SIZE = 7; // smallest size of keypoints -static const int FREAK_NB_SCALES = FREAK::NB_SCALES; -static const int FREAK_NB_PAIRS = FREAK::NB_PAIRS; -static const int FREAK_NB_ORIENPAIRS = FREAK::NB_ORIENPAIRS; - -// default pairs -static const int FREAK_DEF_PAIRS[FREAK::NB_PAIRS] = -{ - 404,431,818,511,181,52,311,874,774,543,719,230,417,205,11, - 560,149,265,39,306,165,857,250,8,61,15,55,717,44,412, - 592,134,761,695,660,782,625,487,549,516,271,665,762,392,178, - 796,773,31,672,845,548,794,677,654,241,831,225,238,849,83, - 691,484,826,707,122,517,583,731,328,339,571,475,394,472,580, - 381,137,93,380,327,619,729,808,218,213,459,141,806,341,95, - 382,568,124,750,193,749,706,843,79,199,317,329,768,198,100, - 466,613,78,562,783,689,136,838,94,142,164,679,219,419,366, - 418,423,77,89,523,259,683,312,555,20,470,684,123,458,453,833, - 72,113,253,108,313,25,153,648,411,607,618,128,305,232,301,84, - 56,264,371,46,407,360,38,99,176,710,114,578,66,372,653, - 129,359,424,159,821,10,323,393,5,340,891,9,790,47,0,175,346, - 236,26,172,147,574,561,32,294,429,724,755,398,787,288,299, - 769,565,767,722,757,224,465,723,498,467,235,127,802,446,233, - 544,482,800,318,16,532,801,441,554,173,60,530,713,469,30, - 212,630,899,170,266,799,88,49,512,399,23,500,107,524,90, - 194,143,135,192,206,345,148,71,119,101,563,870,158,254,214, - 276,464,332,725,188,385,24,476,40,231,620,171,258,67,109, - 844,244,187,388,701,690,50,7,850,479,48,522,22,154,12,659, - 736,655,577,737,830,811,174,21,237,335,353,234,53,270,62, - 182,45,177,245,812,673,355,556,612,166,204,54,248,365,226, - 242,452,700,685,573,14,842,481,468,781,564,416,179,405,35, - 819,608,624,367,98,643,448,2,460,676,440,240,130,146,184, - 185,430,65,807,377,82,121,708,239,310,138,596,730,575,477, - 851,797,247,27,85,586,307,779,326,494,856,324,827,96,748, - 13,397,125,688,702,92,293,716,277,140,112,4,80,855,839,1, - 413,347,584,493,289,696,19,751,379,76,73,115,6,590,183,734, - 197,483,217,344,330,400,186,243,587,220,780,200,793,246,824, - 41,735,579,81,703,322,760,720,139,480,490,91,814,813,163, - 152,488,763,263,425,410,576,120,319,668,150,160,302,491,515, - 260,145,428,97,251,395,272,252,18,106,358,854,485,144,550, - 131,133,378,68,102,104,58,361,275,209,697,582,338,742,589, - 325,408,229,28,304,191,189,110,126,486,211,547,533,70,215, - 670,249,36,581,389,605,331,518,442,822 -}; - -// used to sort pairs during pairs selection -struct PairStat -{ - double mean; - int idx; -}; - -struct sortMean -{ - bool operator()( const PairStat& a, const PairStat& b ) const - { - return a.mean < b.mean; - } -}; - -void FREAK::buildPattern() -{ - if( patternScale == patternScale0 && nOctaves == nOctaves0 && !patternLookup.empty() ) - return; - - nOctaves0 = nOctaves; - patternScale0 = patternScale; - - patternLookup.resize(FREAK_NB_SCALES*FREAK_NB_ORIENTATION*FREAK_NB_POINTS); - double scaleStep = std::pow(2.0, (double)(nOctaves)/FREAK_NB_SCALES ); // 2 ^ ( (nOctaves-1) /nbScales) - double scalingFactor, alpha, beta, theta = 0; - - // pattern definition, radius normalized to 1.0 (outer point position+sigma=1.0) - const int n[8] = {6,6,6,6,6,6,6,1}; // number of points on each concentric circle (from outer to inner) - const double bigR(2.0/3.0); // bigger radius - const double smallR(2.0/24.0); // smaller radius - const double unitSpace( (bigR-smallR)/21.0 ); // define spaces between concentric circles (from center to outer: 1,2,3,4,5,6) - // radii of the concentric cirles (from outer to inner) - const double radius[8] = {bigR, bigR-6*unitSpace, bigR-11*unitSpace, bigR-15*unitSpace, bigR-18*unitSpace, bigR-20*unitSpace, smallR, 0.0}; - // sigma of pattern points (each group of 6 points on a concentric cirle has the same sigma) - const double sigma[8] = {radius[0]/2.0, radius[1]/2.0, radius[2]/2.0, - radius[3]/2.0, radius[4]/2.0, radius[5]/2.0, - radius[6]/2.0, radius[6]/2.0 - }; - // fill the lookup table - for( int scaleIdx=0; scaleIdx < FREAK_NB_SCALES; ++scaleIdx ) - { - patternSizes[scaleIdx] = 0; // proper initialization - scalingFactor = std::pow(scaleStep,scaleIdx); //scale of the pattern, scaleStep ^ scaleIdx - - for( int orientationIdx = 0; orientationIdx < FREAK_NB_ORIENTATION; ++orientationIdx ) - { - theta = double(orientationIdx)* 2*CV_PI/double(FREAK_NB_ORIENTATION); // orientation of the pattern - int pointIdx = 0; - - PatternPoint* patternLookupPtr = &patternLookup[0]; - for( size_t i = 0; i < 8; ++i ) - { - for( int k = 0 ; k < n[i]; ++k ) - { - beta = CV_PI/n[i] * (i%2); // orientation offset so that groups of points on each circles are staggered - alpha = double(k)* 2*CV_PI/double(n[i])+beta+theta; - - // add the point to the look-up table - PatternPoint& point = patternLookupPtr[ scaleIdx*FREAK_NB_ORIENTATION*FREAK_NB_POINTS+orientationIdx*FREAK_NB_POINTS+pointIdx ]; - point.x = static_cast(radius[i] * cos(alpha) * scalingFactor * patternScale); - point.y = static_cast(radius[i] * sin(alpha) * scalingFactor * patternScale); - point.sigma = static_cast(sigma[i] * scalingFactor * patternScale); - - // adapt the sizeList if necessary - const int sizeMax = static_cast(ceil((radius[i]+sigma[i])*scalingFactor*patternScale)) + 1; - if( patternSizes[scaleIdx] < sizeMax ) - patternSizes[scaleIdx] = sizeMax; - - ++pointIdx; - } - } - } - } - - // build the list of orientation pairs - orientationPairs[0].i=0; orientationPairs[0].j=3; orientationPairs[1].i=1; orientationPairs[1].j=4; orientationPairs[2].i=2; orientationPairs[2].j=5; - orientationPairs[3].i=0; orientationPairs[3].j=2; orientationPairs[4].i=1; orientationPairs[4].j=3; orientationPairs[5].i=2; orientationPairs[5].j=4; - orientationPairs[6].i=3; orientationPairs[6].j=5; orientationPairs[7].i=4; orientationPairs[7].j=0; orientationPairs[8].i=5; orientationPairs[8].j=1; - - orientationPairs[9].i=6; orientationPairs[9].j=9; orientationPairs[10].i=7; orientationPairs[10].j=10; orientationPairs[11].i=8; orientationPairs[11].j=11; - orientationPairs[12].i=6; orientationPairs[12].j=8; orientationPairs[13].i=7; orientationPairs[13].j=9; orientationPairs[14].i=8; orientationPairs[14].j=10; - orientationPairs[15].i=9; orientationPairs[15].j=11; orientationPairs[16].i=10; orientationPairs[16].j=6; orientationPairs[17].i=11; orientationPairs[17].j=7; - - orientationPairs[18].i=12; orientationPairs[18].j=15; orientationPairs[19].i=13; orientationPairs[19].j=16; orientationPairs[20].i=14; orientationPairs[20].j=17; - orientationPairs[21].i=12; orientationPairs[21].j=14; orientationPairs[22].i=13; orientationPairs[22].j=15; orientationPairs[23].i=14; orientationPairs[23].j=16; - orientationPairs[24].i=15; orientationPairs[24].j=17; orientationPairs[25].i=16; orientationPairs[25].j=12; orientationPairs[26].i=17; orientationPairs[26].j=13; - - orientationPairs[27].i=18; orientationPairs[27].j=21; orientationPairs[28].i=19; orientationPairs[28].j=22; orientationPairs[29].i=20; orientationPairs[29].j=23; - orientationPairs[30].i=18; orientationPairs[30].j=20; orientationPairs[31].i=19; orientationPairs[31].j=21; orientationPairs[32].i=20; orientationPairs[32].j=22; - orientationPairs[33].i=21; orientationPairs[33].j=23; orientationPairs[34].i=22; orientationPairs[34].j=18; orientationPairs[35].i=23; orientationPairs[35].j=19; - - orientationPairs[36].i=24; orientationPairs[36].j=27; orientationPairs[37].i=25; orientationPairs[37].j=28; orientationPairs[38].i=26; orientationPairs[38].j=29; - orientationPairs[39].i=30; orientationPairs[39].j=33; orientationPairs[40].i=31; orientationPairs[40].j=34; orientationPairs[41].i=32; orientationPairs[41].j=35; - orientationPairs[42].i=36; orientationPairs[42].j=39; orientationPairs[43].i=37; orientationPairs[43].j=40; orientationPairs[44].i=38; orientationPairs[44].j=41; - - for( unsigned m = FREAK_NB_ORIENPAIRS; m--; ) - { - const float dx = patternLookup[orientationPairs[m].i].x-patternLookup[orientationPairs[m].j].x; - const float dy = patternLookup[orientationPairs[m].i].y-patternLookup[orientationPairs[m].j].y; - const float norm_sq = (dx*dx+dy*dy); - orientationPairs[m].weight_dx = int((dx/(norm_sq))*4096.0+0.5); - orientationPairs[m].weight_dy = int((dy/(norm_sq))*4096.0+0.5); - } - - // build the list of description pairs - std::vector allPairs; - for( unsigned int i = 1; i < (unsigned int)FREAK_NB_POINTS; ++i ) - { - // (generate all the pairs) - for( unsigned int j = 0; (unsigned int)j < i; ++j ) - { - DescriptionPair pair = {(uchar)i,(uchar)j}; - allPairs.push_back(pair); - } - } - // Input vector provided - if( !selectedPairs0.empty() ) - { - if( (int)selectedPairs0.size() == FREAK_NB_PAIRS ) - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - descriptionPairs[i] = allPairs[selectedPairs0.at(i)]; - } - else - { - CV_Error(Error::StsVecLengthErr, "Input vector does not match the required size"); - } - } - else // default selected pairs - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - descriptionPairs[i] = allPairs[FREAK_DEF_PAIRS[i]]; - } -} - -void FREAK::computeImpl( InputArray _image, std::vector& keypoints, OutputArray _descriptors ) const -{ - Mat image = _image.getMat(); - if( image.empty() ) - return; - if( keypoints.empty() ) - return; - - ((FREAK*)this)->buildPattern(); - - // Convert to gray if not already - Mat grayImage = image; -// if( image.channels() > 1 ) -// cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - // Use 32-bit integers if we won't overflow in the integral image - if ((image.depth() == CV_8U || image.depth() == CV_8S) && - (image.rows * image.cols) < 8388608 ) // 8388608 = 2 ^ (32 - 8(bit depth) - 1(sign bit)) - { - // Create the integral image appropriate for our type & usage - if (image.depth() == CV_8U) - computeDescriptors(grayImage, keypoints, _descriptors); - else if (image.depth() == CV_8S) - computeDescriptors(grayImage, keypoints, _descriptors); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - } else { - // Create the integral image appropriate for our type & usage - if ( image.depth() == CV_8U ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_8S ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_16U ) - computeDescriptors(grayImage, keypoints, _descriptors); - else if ( image.depth() == CV_16S ) - computeDescriptors(grayImage, keypoints, _descriptors); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - } -} - -template -void FREAK::extractDescriptor(srcMatType *pointsValue, void ** ptr) const -{ - std::bitset** ptrScalar = (std::bitset**) ptr; - - // extracting descriptor preserving the order of SSE version - int cnt = 0; - for( int n = 7; n < FREAK_NB_PAIRS; n += 128) - { - for( int m = 8; m--; ) - { - int nm = n-m; - for(int kk = nm+15*8; kk >= nm; kk-=8, ++cnt) - { - (*ptrScalar)->set(kk, pointsValue[descriptionPairs[cnt].i] >= pointsValue[descriptionPairs[cnt].j]); - } - } - } - --(*ptrScalar); -} - -#if CV_SSE2 -template <> -void FREAK::extractDescriptor(uchar *pointsValue, void ** ptr) const -{ - __m128i** ptrSSE = (__m128i**) ptr; - - // note that comparisons order is modified in each block (but first 128 comparisons remain globally the same-->does not affect the 128,384 bits segmanted matching strategy) - int cnt = 0; - for( int n = FREAK_NB_PAIRS/128; n-- ; ) - { - __m128i result128 = _mm_setzero_si128(); - for( int m = 128/16; m--; cnt += 16 ) - { - __m128i operand1 = _mm_set_epi8(pointsValue[descriptionPairs[cnt+0].i], - pointsValue[descriptionPairs[cnt+1].i], - pointsValue[descriptionPairs[cnt+2].i], - pointsValue[descriptionPairs[cnt+3].i], - pointsValue[descriptionPairs[cnt+4].i], - pointsValue[descriptionPairs[cnt+5].i], - pointsValue[descriptionPairs[cnt+6].i], - pointsValue[descriptionPairs[cnt+7].i], - pointsValue[descriptionPairs[cnt+8].i], - pointsValue[descriptionPairs[cnt+9].i], - pointsValue[descriptionPairs[cnt+10].i], - pointsValue[descriptionPairs[cnt+11].i], - pointsValue[descriptionPairs[cnt+12].i], - pointsValue[descriptionPairs[cnt+13].i], - pointsValue[descriptionPairs[cnt+14].i], - pointsValue[descriptionPairs[cnt+15].i]); - - __m128i operand2 = _mm_set_epi8(pointsValue[descriptionPairs[cnt+0].j], - pointsValue[descriptionPairs[cnt+1].j], - pointsValue[descriptionPairs[cnt+2].j], - pointsValue[descriptionPairs[cnt+3].j], - pointsValue[descriptionPairs[cnt+4].j], - pointsValue[descriptionPairs[cnt+5].j], - pointsValue[descriptionPairs[cnt+6].j], - pointsValue[descriptionPairs[cnt+7].j], - pointsValue[descriptionPairs[cnt+8].j], - pointsValue[descriptionPairs[cnt+9].j], - pointsValue[descriptionPairs[cnt+10].j], - pointsValue[descriptionPairs[cnt+11].j], - pointsValue[descriptionPairs[cnt+12].j], - pointsValue[descriptionPairs[cnt+13].j], - pointsValue[descriptionPairs[cnt+14].j], - pointsValue[descriptionPairs[cnt+15].j]); - - __m128i workReg = _mm_min_epu8(operand1, operand2); // emulated "not less than" for 8-bit UNSIGNED integers - workReg = _mm_cmpeq_epi8(workReg, operand2); // emulated "not less than" for 8-bit UNSIGNED integers - - workReg = _mm_and_si128(_mm_set1_epi16(short(0x8080 >> m)), workReg); // merge the last 16 bits with the 128bits std::vector until full - result128 = _mm_or_si128(result128, workReg); - } - (**ptrSSE) = result128; - ++(*ptrSSE); - } - (*ptrSSE) -= 8; -} -#endif - -template -void FREAK::computeDescriptors( InputArray _image, std::vector& keypoints, OutputArray _descriptors ) const { - - Mat image = _image.getMat(); - Mat imgIntegral; - integral(image, imgIntegral, DataType::type); - std::vector kpScaleIdx(keypoints.size()); // used to save pattern scale index corresponding to each keypoints - const std::vector::iterator ScaleIdxBegin = kpScaleIdx.begin(); // used in std::vector erase function - const std::vector::iterator kpBegin = keypoints.begin(); // used in std::vector erase function - const float sizeCst = static_cast(FREAK_NB_SCALES/(FREAK_LOG2* nOctaves)); - srcMatType pointsValue[FREAK_NB_POINTS]; - int thetaIdx = 0; - int direction0; - int direction1; - - // compute the scale index corresponding to the keypoint size and remove keypoints close to the border - if( scaleNormalized ) - { - for( size_t k = keypoints.size(); k--; ) - { - //Is k non-zero? If so, decrement it and continue" - kpScaleIdx[k] = std::max( (int)(std::log(keypoints[k].size/FREAK_SMALLEST_KP_SIZE)*sizeCst+0.5) ,0); - if( kpScaleIdx[k] >= FREAK_NB_SCALES ) - kpScaleIdx[k] = FREAK_NB_SCALES-1; - - if( keypoints[k].pt.x <= patternSizes[kpScaleIdx[k]] || //check if the description at this specific position and scale fits inside the image - keypoints[k].pt.y <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.x >= image.cols-patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y >= image.rows-patternSizes[kpScaleIdx[k]] - ) - { - keypoints.erase(kpBegin+k); - kpScaleIdx.erase(ScaleIdxBegin+k); - } - } - } - else - { - const int scIdx = std::max( (int)(1.0986122886681*sizeCst+0.5) ,0); - for( size_t k = keypoints.size(); k--; ) - { - kpScaleIdx[k] = scIdx; // equivalent to the formule when the scale is normalized with a constant size of keypoints[k].size=3*SMALLEST_KP_SIZE - if( kpScaleIdx[k] >= FREAK_NB_SCALES ) - { - kpScaleIdx[k] = FREAK_NB_SCALES-1; - } - if( keypoints[k].pt.x <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y <= patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.x >= image.cols-patternSizes[kpScaleIdx[k]] || - keypoints[k].pt.y >= image.rows-patternSizes[kpScaleIdx[k]] - ) - { - keypoints.erase(kpBegin+k); - kpScaleIdx.erase(ScaleIdxBegin+k); - } - } - } - - // allocate descriptor memory, estimate orientations, extract descriptors - if( !extAll ) - { - // extract the best comparisons only - _descriptors.create((int)keypoints.size(), FREAK_NB_PAIRS/8, CV_8U); - _descriptors.setTo(Scalar::all(0)); - Mat descriptors = _descriptors.getMat(); - - void *ptr = descriptors.data+(keypoints.size()-1)*descriptors.step[0]; - - for( size_t k = keypoints.size(); k--; ) { - // estimate orientation (gradient) - if( !orientationNormalized ) - { - thetaIdx = 0; // assign 0° to all keypoints - keypoints[k].angle = 0.0; - } - else - { - // get the points intensity value in the un-rotated pattern - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], 0, i); - } - direction0 = 0; - direction1 = 0; - for( int m = 45; m--; ) - { - //iterate through the orientation pairs - const int delta = (pointsValue[ orientationPairs[m].i ]-pointsValue[ orientationPairs[m].j ]); - direction0 += delta*(orientationPairs[m].weight_dx)/2048; - direction1 += delta*(orientationPairs[m].weight_dy)/2048; - } - - keypoints[k].angle = static_cast(atan2((float)direction1,(float)direction0)*(180.0/CV_PI));//estimate orientation - thetaIdx = int(FREAK_NB_ORIENTATION*keypoints[k].angle*(1/360.0)+0.5); - if( thetaIdx < 0 ) - thetaIdx += FREAK_NB_ORIENTATION; - - if( thetaIdx >= FREAK_NB_ORIENTATION ) - thetaIdx -= FREAK_NB_ORIENTATION; - } - // extract descriptor at the computed orientation - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], thetaIdx, i); - } - - // Extract descriptor - extractDescriptor(pointsValue, &ptr); - } - } - else // extract all possible comparisons for selection - { - _descriptors.create((int)keypoints.size(), 128, CV_8U); - _descriptors.setTo(Scalar::all(0)); - Mat descriptors = _descriptors.getMat(); - std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); - - for( size_t k = keypoints.size(); k--; ) - { - //estimate orientation (gradient) - if( !orientationNormalized ) - { - thetaIdx = 0;//assign 0° to all keypoints - keypoints[k].angle = 0.0; - } - else - { - //get the points intensity value in the un-rotated pattern - for( int i = FREAK_NB_POINTS;i--; ) - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x,keypoints[k].pt.y, - kpScaleIdx[k], 0, i); - - direction0 = 0; - direction1 = 0; - for( int m = 45; m--; ) - { - //iterate through the orientation pairs - const int delta = (pointsValue[ orientationPairs[m].i ]-pointsValue[ orientationPairs[m].j ]); - direction0 += delta*(orientationPairs[m].weight_dx)/2048; - direction1 += delta*(orientationPairs[m].weight_dy)/2048; - } - - keypoints[k].angle = static_cast(atan2((float)direction1,(float)direction0)*(180.0/CV_PI)); //estimate orientation - thetaIdx = int(FREAK_NB_ORIENTATION*keypoints[k].angle*(1/360.0)+0.5); - - if( thetaIdx < 0 ) - thetaIdx += FREAK_NB_ORIENTATION; - - if( thetaIdx >= FREAK_NB_ORIENTATION ) - thetaIdx -= FREAK_NB_ORIENTATION; - } - // get the points intensity value in the rotated pattern - for( int i = FREAK_NB_POINTS; i--; ) { - pointsValue[i] = meanIntensity(image, imgIntegral, - keypoints[k].pt.x, keypoints[k].pt.y, - kpScaleIdx[k], thetaIdx, i); - } - - int cnt(0); - for( int i = 1; i < FREAK_NB_POINTS; ++i ) - { - //(generate all the pairs) - for( int j = 0; j < i; ++j ) - { - ptr->set(cnt, pointsValue[i] >= pointsValue[j] ); - ++cnt; - } - } - --ptr; - } - } -} - -// simply take average on a square patch, not even gaussian approx -template -imgType FREAK::meanIntensity( InputArray _image, InputArray _integral, - const float kp_x, - const float kp_y, - const unsigned int scale, - const unsigned int rot, - const unsigned int point) const { - Mat image = _image.getMat(), integral = _integral.getMat(); - // get point position in image - const PatternPoint& FreakPoint = patternLookup[scale*FREAK_NB_ORIENTATION*FREAK_NB_POINTS + rot*FREAK_NB_POINTS + point]; - const float xf = FreakPoint.x+kp_x; - const float yf = FreakPoint.y+kp_y; - const int x = int(xf); - const int y = int(yf); - - // get the sigma: - const float radius = FreakPoint.sigma; - - // calculate output: - if( radius < 0.5 ) - { - // interpolation multipliers: - const int r_x = static_cast((xf-x)*1024); - const int r_y = static_cast((yf-y)*1024); - const int r_x_1 = (1024-r_x); - const int r_y_1 = (1024-r_y); - unsigned int ret_val; - // linear interpolation: - ret_val = r_x_1*r_y_1*int(image.at(y , x )) - + r_x *r_y_1*int(image.at(y , x+1)) - + r_x_1*r_y *int(image.at(y+1, x )) - + r_x *r_y *int(image.at(y+1, x+1)); - //return the rounded mean - ret_val += 2 * 1024 * 1024; - return static_cast(ret_val / (4 * 1024 * 1024)); - } - - // expected case: - - // calculate borders - const int x_left = int(xf-radius+0.5); - const int y_top = int(yf-radius+0.5); - const int x_right = int(xf+radius+1.5);//integral image is 1px wider - const int y_bottom = int(yf+radius+1.5);//integral image is 1px higher - iiType ret_val; - - ret_val = integral.at(y_bottom,x_right);//bottom right corner - ret_val -= integral.at(y_bottom,x_left); - ret_val += integral.at(y_top,x_left); - ret_val -= integral.at(y_top,x_right); - ret_val = ret_val/( (x_right-x_left)* (y_bottom-y_top) ); - //~ std::cout<(ret_val); -} - -// pair selection algorithm from a set of training images and corresponding keypoints -std::vector FREAK::selectPairs(const std::vector& images - , std::vector >& keypoints - , const double corrTresh - , bool verbose ) -{ - extAll = true; - // compute descriptors with all pairs - Mat descriptors; - - if( verbose ) - std::cout << "Number of images: " << images.size() << std::endl; - - for( size_t i = 0;i < images.size(); ++i ) - { - Mat descriptorsTmp; - computeImpl(images[i],keypoints[i],descriptorsTmp); - descriptors.push_back(descriptorsTmp); - } - - if( verbose ) - std::cout << "number of keypoints: " << descriptors.rows << std::endl; - - //descriptor in floating point format (each bit is a float) - Mat descriptorsFloat = Mat::zeros(descriptors.rows, 903, CV_32F); - - std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(descriptors.rows-1)*descriptors.step[0]); - for( int m = descriptors.rows; m--; ) - { - for( int n = 903; n--; ) - { - if( ptr->test(n) == true ) - descriptorsFloat.at(m,n)=1.0f; - } - --ptr; - } - - std::vector pairStat; - for( int n = 903; n--; ) - { - // the higher the variance, the better --> mean = 0.5 - PairStat tmp = { fabs( mean(descriptorsFloat.col(n))[0]-0.5 ) ,n}; - pairStat.push_back(tmp); - } - - std::sort( pairStat.begin(),pairStat.end(), sortMean() ); - - std::vector bestPairs; - for( int m = 0; m < 903; ++m ) - { - if( verbose ) - std::cout << m << ":" << bestPairs.size() << " " << std::flush; - double corrMax(0); - - for( size_t n = 0; n < bestPairs.size(); ++n ) - { - int idxA = bestPairs[n].idx; - int idxB = pairStat[m].idx; - double corr(0); - // compute correlation between 2 pairs - corr = fabs(compareHist(descriptorsFloat.col(idxA), descriptorsFloat.col(idxB), HISTCMP_CORREL)); - - if( corr > corrMax ) - { - corrMax = corr; - if( corrMax >= corrTresh ) - break; - } - } - - if( corrMax < corrTresh/*0.7*/ ) - bestPairs.push_back(pairStat[m]); - - if( bestPairs.size() >= 512 ) - { - if( verbose ) - std::cout << m << std::endl; - break; - } - } - - std::vector idxBestPairs; - if( (int)bestPairs.size() >= FREAK_NB_PAIRS ) - { - for( int i = 0; i < FREAK_NB_PAIRS; ++i ) - idxBestPairs.push_back(bestPairs[i].idx); - } - else - { - if( verbose ) - std::cout << "correlation threshold too small (restrictive)" << std::endl; - CV_Error(Error::StsError, "correlation threshold too small (restrictive)"); - } - extAll = false; - return idxBestPairs; -} - - -/* -// create an image showing the brisk pattern -void FREAKImpl::drawPattern() -{ - Mat pattern = Mat::zeros(1000, 1000, CV_8UC3) + Scalar(255,255,255); - int sFac = 500 / patternScale; - for( int n = 0; n < kNB_POINTS; ++n ) - { - PatternPoint& pt = patternLookup[n]; - circle(pattern, Point( pt.x*sFac,pt.y*sFac)+Point(500,500), pt.sigma*sFac, Scalar(0,0,255),2); - // rectangle(pattern, Point( (pt.x-pt.sigma)*sFac,(pt.y-pt.sigma)*sFac)+Point(500,500), Point( (pt.x+pt.sigma)*sFac,(pt.y+pt.sigma)*sFac)+Point(500,500), Scalar(0,0,255),2); - - circle(pattern, Point( pt.x*sFac,pt.y*sFac)+Point(500,500), 1, Scalar(0,0,0),3); - std::ostringstream oss; - oss << n; - putText( pattern, oss.str(), Point( pt.x*sFac,pt.y*sFac)+Point(500,500), FONT_HERSHEY_SIMPLEX,0.5, Scalar(0,0,0), 1); - } - imshow( "FreakDescriptorExtractor pattern", pattern ); - waitKey(0); -} -*/ - -// ------------------------------------------------- -/* FREAK interface implementation */ -FREAK::FREAK( bool _orientationNormalized, bool _scaleNormalized - , float _patternScale, int _nOctaves, const std::vector& _selectedPairs ) - : orientationNormalized(_orientationNormalized), scaleNormalized(_scaleNormalized), - patternScale(_patternScale), nOctaves(_nOctaves), extAll(false), nOctaves0(0), selectedPairs0(_selectedPairs) -{ -} - -FREAK::~FREAK() -{ -} - -int FREAK::descriptorSize() const -{ - return FREAK_NB_PAIRS / 8; // descriptor length in bytes -} - -int FREAK::descriptorType() const -{ - return CV_8U; -} - -int FREAK::defaultNorm() const -{ - return NORM_HAMMING; -} - -} // END NAMESPACE CV diff --git a/modules/features2d/src/generated_16.i b/modules/features2d/src/generated_16.i deleted file mode 100644 index b85bf06d9e..0000000000 --- a/modules/features2d/src/generated_16.i +++ /dev/null @@ -1,19 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 16' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/generated_32.i b/modules/features2d/src/generated_32.i deleted file mode 100644 index 19952d2f75..0000000000 --- a/modules/features2d/src/generated_32.i +++ /dev/null @@ -1,35 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 32' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); - desc[16] = (uchar)(((SMOOTHED(-9, 1) < SMOOTHED(-18, 0)) << 7) + ((SMOOTHED(4, 0) < SMOOTHED(1, 12)) << 6) + ((SMOOTHED(0, 9) < SMOOTHED(-14, -10)) << 5) + ((SMOOTHED(-13, -9) < SMOOTHED(-2, 6)) << 4) + ((SMOOTHED(1, 5) < SMOOTHED(10, 10)) << 3) + ((SMOOTHED(-3, -6) < SMOOTHED(-16, -5)) << 2) + ((SMOOTHED(11, 6) < SMOOTHED(-5, 0)) << 1) + ((SMOOTHED(-23, 10) < SMOOTHED(1, 2)) << 0)); - desc[17] = (uchar)(((SMOOTHED(13, -5) < SMOOTHED(-3, 9)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-13, -5)) << 6) + ((SMOOTHED(10, 13) < SMOOTHED(-11, 8)) << 5) + ((SMOOTHED(19, 20) < SMOOTHED(-9, 2)) << 4) + ((SMOOTHED(4, -8) < SMOOTHED(0, -9)) << 3) + ((SMOOTHED(-14, 10) < SMOOTHED(15, 19)) << 2) + ((SMOOTHED(-14, -12) < SMOOTHED(-10, -3)) << 1) + ((SMOOTHED(-23, -3) < SMOOTHED(17, -2)) << 0)); - desc[18] = (uchar)(((SMOOTHED(-3, -11) < SMOOTHED(6, -14)) << 7) + ((SMOOTHED(19, -2) < SMOOTHED(-4, 2)) << 6) + ((SMOOTHED(-5, 5) < SMOOTHED(3, -13)) << 5) + ((SMOOTHED(2, -2) < SMOOTHED(-5, 4)) << 4) + ((SMOOTHED(17, 4) < SMOOTHED(17, -11)) << 3) + ((SMOOTHED(-7, -2) < SMOOTHED(1, 23)) << 2) + ((SMOOTHED(8, 13) < SMOOTHED(1, -16)) << 1) + ((SMOOTHED(-13, -5) < SMOOTHED(1, -17)) << 0)); - desc[19] = (uchar)(((SMOOTHED(4, 6) < SMOOTHED(-8, -3)) << 7) + ((SMOOTHED(-5, -9) < SMOOTHED(-2, -10)) << 6) + ((SMOOTHED(-9, 0) < SMOOTHED(-7, -2)) << 5) + ((SMOOTHED(5, 0) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-4, -16) < SMOOTHED(6, 3)) << 3) + ((SMOOTHED(2, -15) < SMOOTHED(-2, 12)) << 2) + ((SMOOTHED(4, -1) < SMOOTHED(6, 2)) << 1) + ((SMOOTHED(1, 1) < SMOOTHED(-2, -8)) << 0)); - desc[20] = (uchar)(((SMOOTHED(-2, 12) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, 8) < SMOOTHED(-9, 9)) << 6) + ((SMOOTHED(2, -10) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-4, 10) < SMOOTHED(-9, 4)) << 4) + ((SMOOTHED(6, 12) < SMOOTHED(2, 5)) << 3) + ((SMOOTHED(-3, -8) < SMOOTHED(0, 5)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-7, 2)) << 1) + ((SMOOTHED(-1, -10) < SMOOTHED(7, -18)) << 0)); - desc[21] = (uchar)(((SMOOTHED(-1, 8) < SMOOTHED(-9, -10)) << 7) + ((SMOOTHED(-23, -1) < SMOOTHED(6, 2)) << 6) + ((SMOOTHED(-5, -3) < SMOOTHED(3, 2)) << 5) + ((SMOOTHED(0, 11) < SMOOTHED(-4, -7)) << 4) + ((SMOOTHED(15, 2) < SMOOTHED(-10, -3)) << 3) + ((SMOOTHED(-20, -8) < SMOOTHED(-13, 3)) << 2) + ((SMOOTHED(-19, -12) < SMOOTHED(5, -11)) << 1) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 0)); - desc[22] = (uchar)(((SMOOTHED(7, 4) < SMOOTHED(-12, 0)) << 7) + ((SMOOTHED(5, -1) < SMOOTHED(-14, -6)) << 6) + ((SMOOTHED(-4, 11) < SMOOTHED(0, -4)) << 5) + ((SMOOTHED(3, 10) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(13, 21) < SMOOTHED(-11, 6)) << 3) + ((SMOOTHED(-12, 24) < SMOOTHED(-7, -4)) << 2) + ((SMOOTHED(4, 16) < SMOOTHED(3, -14)) << 1) + ((SMOOTHED(-3, 5) < SMOOTHED(-7, -12)) << 0)); - desc[23] = (uchar)(((SMOOTHED(0, -4) < SMOOTHED(7, -5)) << 7) + ((SMOOTHED(-17, -9) < SMOOTHED(13, -7)) << 6) + ((SMOOTHED(22, -6) < SMOOTHED(-11, 5)) << 5) + ((SMOOTHED(2, -8) < SMOOTHED(23, -11)) << 4) + ((SMOOTHED(7, -10) < SMOOTHED(-1, 14)) << 3) + ((SMOOTHED(-3, -10) < SMOOTHED(8, 3)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-6, 0)) << 1) + ((SMOOTHED(-7, -21) < SMOOTHED(6, -14)) << 0)); - desc[24] = (uchar)(((SMOOTHED(18, 19) < SMOOTHED(-4, -6)) << 7) + ((SMOOTHED(10, 7) < SMOOTHED(-1, -4)) << 6) + ((SMOOTHED(-1, 21) < SMOOTHED(1, -5)) << 5) + ((SMOOTHED(-10, 6) < SMOOTHED(-11, -2)) << 4) + ((SMOOTHED(18, -3) < SMOOTHED(-1, 7)) << 3) + ((SMOOTHED(-3, -9) < SMOOTHED(-5, 10)) << 2) + ((SMOOTHED(-13, 14) < SMOOTHED(17, -3)) << 1) + ((SMOOTHED(11, -19) < SMOOTHED(-1, -18)) << 0)); - desc[25] = (uchar)(((SMOOTHED(8, -2) < SMOOTHED(-18, -23)) << 7) + ((SMOOTHED(0, -5) < SMOOTHED(-2, -9)) << 6) + ((SMOOTHED(-4, -11) < SMOOTHED(2, -8)) << 5) + ((SMOOTHED(14, 6) < SMOOTHED(-3, -6)) << 4) + ((SMOOTHED(-3, 0) < SMOOTHED(-15, 0)) << 3) + ((SMOOTHED(-9, 4) < SMOOTHED(-15, -9)) << 2) + ((SMOOTHED(-1, 11) < SMOOTHED(3, 11)) << 1) + ((SMOOTHED(-10, -16) < SMOOTHED(-7, 7)) << 0)); - desc[26] = (uchar)(((SMOOTHED(-2, -10) < SMOOTHED(-10, -2)) << 7) + ((SMOOTHED(-5, -3) < SMOOTHED(5, -23)) << 6) + ((SMOOTHED(13, -8) < SMOOTHED(-15, -11)) << 5) + ((SMOOTHED(-15, 11) < SMOOTHED(6, -6)) << 4) + ((SMOOTHED(-16, -3) < SMOOTHED(-2, 2)) << 3) + ((SMOOTHED(6, 12) < SMOOTHED(-16, 24)) << 2) + ((SMOOTHED(-10, 0) < SMOOTHED(8, 11)) << 1) + ((SMOOTHED(-7, 7) < SMOOTHED(-19, -7)) << 0)); - desc[27] = (uchar)(((SMOOTHED(5, 16) < SMOOTHED(9, -3)) << 7) + ((SMOOTHED(9, 7) < SMOOTHED(-7, -16)) << 6) + ((SMOOTHED(3, 2) < SMOOTHED(-10, 9)) << 5) + ((SMOOTHED(21, 1) < SMOOTHED(8, 7)) << 4) + ((SMOOTHED(7, 0) < SMOOTHED(1, 17)) << 3) + ((SMOOTHED(-8, 12) < SMOOTHED(9, 6)) << 2) + ((SMOOTHED(11, -7) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(19, 0) < SMOOTHED(9, 3)) << 0)); - desc[28] = (uchar)(((SMOOTHED(1, -7) < SMOOTHED(-5, -11)) << 7) + ((SMOOTHED(0, 8) < SMOOTHED(-2, 14)) << 6) + ((SMOOTHED(12, -2) < SMOOTHED(-15, -6)) << 5) + ((SMOOTHED(4, 12) < SMOOTHED(0, -21)) << 4) + ((SMOOTHED(17, -4) < SMOOTHED(-6, -7)) << 3) + ((SMOOTHED(-10, -9) < SMOOTHED(-14, -7)) << 2) + ((SMOOTHED(-15, -10) < SMOOTHED(-15, -14)) << 1) + ((SMOOTHED(-7, -5) < SMOOTHED(5, -12)) << 0)); - desc[29] = (uchar)(((SMOOTHED(-4, 0) < SMOOTHED(15, -4)) << 7) + ((SMOOTHED(5, 2) < SMOOTHED(-6, -23)) << 6) + ((SMOOTHED(-4, -21) < SMOOTHED(-6, 4)) << 5) + ((SMOOTHED(-10, 5) < SMOOTHED(-15, 6)) << 4) + ((SMOOTHED(4, -3) < SMOOTHED(-1, 5)) << 3) + ((SMOOTHED(-4, 19) < SMOOTHED(-23, -4)) << 2) + ((SMOOTHED(-4, 17) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(1, 12) < SMOOTHED(4, -14)) << 0)); - desc[30] = (uchar)(((SMOOTHED(-11, -6) < SMOOTHED(-20, 10)) << 7) + ((SMOOTHED(4, 5) < SMOOTHED(3, 20)) << 6) + ((SMOOTHED(-8, -20) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-19, 9) < SMOOTHED(9, -3)) << 4) + ((SMOOTHED(18, 15) < SMOOTHED(11, -4)) << 3) + ((SMOOTHED(12, 16) < SMOOTHED(8, 7)) << 2) + ((SMOOTHED(-14, -8) < SMOOTHED(-3, 9)) << 1) + ((SMOOTHED(-6, 0) < SMOOTHED(2, -4)) << 0)); - desc[31] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-1, 2)) << 7) + ((SMOOTHED(8, -7) < SMOOTHED(-6, 18)) << 6) + ((SMOOTHED(9, 12) < SMOOTHED(-7, -23)) << 5) + ((SMOOTHED(8, -6) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-9, 6) < SMOOTHED(-12, -7)) << 3) + ((SMOOTHED(-1, -2) < SMOOTHED(-7, 2)) << 2) + ((SMOOTHED(9, 9) < SMOOTHED(7, 15)) << 1) + ((SMOOTHED(6, 2) < SMOOTHED(-6, 6)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/generated_64.i b/modules/features2d/src/generated_64.i deleted file mode 100644 index 2262e2d412..0000000000 --- a/modules/features2d/src/generated_64.i +++ /dev/null @@ -1,67 +0,0 @@ -// Code generated with '$ scripts/generate_code.py src/test_pairs.txt 64' -#define SMOOTHED(y,x) smoothedSum(sum, pt, y, x) - desc[0] = (uchar)(((SMOOTHED(-2, -1) < SMOOTHED(7, -1)) << 7) + ((SMOOTHED(-14, -1) < SMOOTHED(-3, 3)) << 6) + ((SMOOTHED(1, -2) < SMOOTHED(11, 2)) << 5) + ((SMOOTHED(1, 6) < SMOOTHED(-10, -7)) << 4) + ((SMOOTHED(13, 2) < SMOOTHED(-1, 0)) << 3) + ((SMOOTHED(-14, 5) < SMOOTHED(5, -3)) << 2) + ((SMOOTHED(-2, 8) < SMOOTHED(2, 4)) << 1) + ((SMOOTHED(-11, 8) < SMOOTHED(-15, 5)) << 0)); - desc[1] = (uchar)(((SMOOTHED(-6, -23) < SMOOTHED(8, -9)) << 7) + ((SMOOTHED(-12, 6) < SMOOTHED(-10, 8)) << 6) + ((SMOOTHED(-3, -1) < SMOOTHED(8, 1)) << 5) + ((SMOOTHED(3, 6) < SMOOTHED(5, 6)) << 4) + ((SMOOTHED(-7, -6) < SMOOTHED(5, -5)) << 3) + ((SMOOTHED(22, -2) < SMOOTHED(-11, -8)) << 2) + ((SMOOTHED(14, 7) < SMOOTHED(8, 5)) << 1) + ((SMOOTHED(-1, 14) < SMOOTHED(-5, -14)) << 0)); - desc[2] = (uchar)(((SMOOTHED(-14, 9) < SMOOTHED(2, 0)) << 7) + ((SMOOTHED(7, -3) < SMOOTHED(22, 6)) << 6) + ((SMOOTHED(-6, 6) < SMOOTHED(-8, -5)) << 5) + ((SMOOTHED(-5, 9) < SMOOTHED(7, -1)) << 4) + ((SMOOTHED(-3, -7) < SMOOTHED(-10, -18)) << 3) + ((SMOOTHED(4, -5) < SMOOTHED(0, 11)) << 2) + ((SMOOTHED(2, 3) < SMOOTHED(9, 10)) << 1) + ((SMOOTHED(-10, 3) < SMOOTHED(4, 9)) << 0)); - desc[3] = (uchar)(((SMOOTHED(0, 12) < SMOOTHED(-3, 19)) << 7) + ((SMOOTHED(1, 15) < SMOOTHED(-11, -5)) << 6) + ((SMOOTHED(14, -1) < SMOOTHED(7, 8)) << 5) + ((SMOOTHED(7, -23) < SMOOTHED(-5, 5)) << 4) + ((SMOOTHED(0, -6) < SMOOTHED(-10, 17)) << 3) + ((SMOOTHED(13, -4) < SMOOTHED(-3, -4)) << 2) + ((SMOOTHED(-12, 1) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(0, 8) < SMOOTHED(3, 22)) << 0)); - desc[4] = (uchar)(((SMOOTHED(-13, 13) < SMOOTHED(3, -1)) << 7) + ((SMOOTHED(-16, 17) < SMOOTHED(6, 10)) << 6) + ((SMOOTHED(7, 15) < SMOOTHED(-5, 0)) << 5) + ((SMOOTHED(2, -12) < SMOOTHED(19, -2)) << 4) + ((SMOOTHED(3, -6) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(8, 3) < SMOOTHED(0, 14)) << 2) + ((SMOOTHED(4, -11) < SMOOTHED(5, 5)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(7, 1)) << 0)); - desc[5] = (uchar)(((SMOOTHED(6, 12) < SMOOTHED(21, 3)) << 7) + ((SMOOTHED(-3, 2) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(5, 1) < SMOOTHED(-5, 11)) << 5) + ((SMOOTHED(3, -17) < SMOOTHED(-6, 2)) << 4) + ((SMOOTHED(6, 8) < SMOOTHED(5, -10)) << 3) + ((SMOOTHED(-14, -2) < SMOOTHED(0, 4)) << 2) + ((SMOOTHED(5, -7) < SMOOTHED(-6, 5)) << 1) + ((SMOOTHED(10, 4) < SMOOTHED(4, -7)) << 0)); - desc[6] = (uchar)(((SMOOTHED(22, 0) < SMOOTHED(7, -18)) << 7) + ((SMOOTHED(-1, -3) < SMOOTHED(0, 18)) << 6) + ((SMOOTHED(-4, 22) < SMOOTHED(-5, 3)) << 5) + ((SMOOTHED(1, -7) < SMOOTHED(2, -3)) << 4) + ((SMOOTHED(19, -20) < SMOOTHED(17, -2)) << 3) + ((SMOOTHED(3, -10) < SMOOTHED(-8, 24)) << 2) + ((SMOOTHED(-5, -14) < SMOOTHED(7, 5)) << 1) + ((SMOOTHED(-2, 12) < SMOOTHED(-4, -15)) << 0)); - desc[7] = (uchar)(((SMOOTHED(4, 12) < SMOOTHED(0, -19)) << 7) + ((SMOOTHED(20, 13) < SMOOTHED(3, 5)) << 6) + ((SMOOTHED(-8, -12) < SMOOTHED(5, 0)) << 5) + ((SMOOTHED(-5, 6) < SMOOTHED(-7, -11)) << 4) + ((SMOOTHED(6, -11) < SMOOTHED(-3, -22)) << 3) + ((SMOOTHED(15, 4) < SMOOTHED(10, 1)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(15, -6)) << 1) + ((SMOOTHED(5, 10) < SMOOTHED(0, 24)) << 0)); - desc[8] = (uchar)(((SMOOTHED(3, 6) < SMOOTHED(22, -2)) << 7) + ((SMOOTHED(-13, 14) < SMOOTHED(4, -4)) << 6) + ((SMOOTHED(-13, 8) < SMOOTHED(-18, -22)) << 5) + ((SMOOTHED(-1, -1) < SMOOTHED(-7, 3)) << 4) + ((SMOOTHED(-19, -12) < SMOOTHED(4, 3)) << 3) + ((SMOOTHED(8, 10) < SMOOTHED(13, -2)) << 2) + ((SMOOTHED(-6, -1) < SMOOTHED(-6, -5)) << 1) + ((SMOOTHED(2, -21) < SMOOTHED(-3, 2)) << 0)); - desc[9] = (uchar)(((SMOOTHED(4, -7) < SMOOTHED(0, 16)) << 7) + ((SMOOTHED(-6, -5) < SMOOTHED(-12, -1)) << 6) + ((SMOOTHED(1, -1) < SMOOTHED(9, 18)) << 5) + ((SMOOTHED(-7, 10) < SMOOTHED(-11, 6)) << 4) + ((SMOOTHED(4, 3) < SMOOTHED(19, -7)) << 3) + ((SMOOTHED(-18, 5) < SMOOTHED(-4, 5)) << 2) + ((SMOOTHED(4, 0) < SMOOTHED(-20, 4)) << 1) + ((SMOOTHED(7, -11) < SMOOTHED(18, 12)) << 0)); - desc[10] = (uchar)(((SMOOTHED(-20, 17) < SMOOTHED(-18, 7)) << 7) + ((SMOOTHED(2, 15) < SMOOTHED(19, -11)) << 6) + ((SMOOTHED(-18, 6) < SMOOTHED(-7, 3)) << 5) + ((SMOOTHED(-4, 1) < SMOOTHED(-14, 13)) << 4) + ((SMOOTHED(17, 3) < SMOOTHED(2, -8)) << 3) + ((SMOOTHED(-7, 2) < SMOOTHED(1, 6)) << 2) + ((SMOOTHED(17, -9) < SMOOTHED(-2, 8)) << 1) + ((SMOOTHED(-8, -6) < SMOOTHED(-1, 12)) << 0)); - desc[11] = (uchar)(((SMOOTHED(-2, 4) < SMOOTHED(-1, 6)) << 7) + ((SMOOTHED(-2, 7) < SMOOTHED(6, 8)) << 6) + ((SMOOTHED(-8, -1) < SMOOTHED(-7, -9)) << 5) + ((SMOOTHED(8, -9) < SMOOTHED(15, 0)) << 4) + ((SMOOTHED(0, 22) < SMOOTHED(-4, -15)) << 3) + ((SMOOTHED(-14, -1) < SMOOTHED(3, -2)) << 2) + ((SMOOTHED(-7, -4) < SMOOTHED(17, -7)) << 1) + ((SMOOTHED(-8, -2) < SMOOTHED(9, -4)) << 0)); - desc[12] = (uchar)(((SMOOTHED(5, -7) < SMOOTHED(7, 7)) << 7) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 11)) << 6) + ((SMOOTHED(11, -4) < SMOOTHED(0, 8)) << 5) + ((SMOOTHED(5, -11) < SMOOTHED(-9, -6)) << 4) + ((SMOOTHED(2, -6) < SMOOTHED(3, -20)) << 3) + ((SMOOTHED(-6, 2) < SMOOTHED(6, 10)) << 2) + ((SMOOTHED(-6, -6) < SMOOTHED(-15, 7)) << 1) + ((SMOOTHED(-6, -3) < SMOOTHED(2, 1)) << 0)); - desc[13] = (uchar)(((SMOOTHED(11, 0) < SMOOTHED(-3, 2)) << 7) + ((SMOOTHED(7, -12) < SMOOTHED(14, 5)) << 6) + ((SMOOTHED(0, -7) < SMOOTHED(-1, -1)) << 5) + ((SMOOTHED(-16, 0) < SMOOTHED(6, 8)) << 4) + ((SMOOTHED(22, 11) < SMOOTHED(0, -3)) << 3) + ((SMOOTHED(19, 0) < SMOOTHED(5, -17)) << 2) + ((SMOOTHED(-23, -14) < SMOOTHED(-13, -19)) << 1) + ((SMOOTHED(-8, 10) < SMOOTHED(-11, -2)) << 0)); - desc[14] = (uchar)(((SMOOTHED(-11, 6) < SMOOTHED(-10, 13)) << 7) + ((SMOOTHED(1, -7) < SMOOTHED(14, 0)) << 6) + ((SMOOTHED(-12, 1) < SMOOTHED(-5, -5)) << 5) + ((SMOOTHED(4, 7) < SMOOTHED(8, -1)) << 4) + ((SMOOTHED(-1, -5) < SMOOTHED(15, 2)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(7, -10)) << 2) + ((SMOOTHED(3, -6) < SMOOTHED(10, -18)) << 1) + ((SMOOTHED(-7, -13) < SMOOTHED(-13, 10)) << 0)); - desc[15] = (uchar)(((SMOOTHED(1, -1) < SMOOTHED(13, -10)) << 7) + ((SMOOTHED(-19, 14) < SMOOTHED(8, -14)) << 6) + ((SMOOTHED(-4, -13) < SMOOTHED(7, 1)) << 5) + ((SMOOTHED(1, -2) < SMOOTHED(12, -7)) << 4) + ((SMOOTHED(3, -5) < SMOOTHED(1, -5)) << 3) + ((SMOOTHED(-2, -2) < SMOOTHED(8, -10)) << 2) + ((SMOOTHED(2, 14) < SMOOTHED(8, 7)) << 1) + ((SMOOTHED(3, 9) < SMOOTHED(8, 2)) << 0)); - desc[16] = (uchar)(((SMOOTHED(-9, 1) < SMOOTHED(-18, 0)) << 7) + ((SMOOTHED(4, 0) < SMOOTHED(1, 12)) << 6) + ((SMOOTHED(0, 9) < SMOOTHED(-14, -10)) << 5) + ((SMOOTHED(-13, -9) < SMOOTHED(-2, 6)) << 4) + ((SMOOTHED(1, 5) < SMOOTHED(10, 10)) << 3) + ((SMOOTHED(-3, -6) < SMOOTHED(-16, -5)) << 2) + ((SMOOTHED(11, 6) < SMOOTHED(-5, 0)) << 1) + ((SMOOTHED(-23, 10) < SMOOTHED(1, 2)) << 0)); - desc[17] = (uchar)(((SMOOTHED(13, -5) < SMOOTHED(-3, 9)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-13, -5)) << 6) + ((SMOOTHED(10, 13) < SMOOTHED(-11, 8)) << 5) + ((SMOOTHED(19, 20) < SMOOTHED(-9, 2)) << 4) + ((SMOOTHED(4, -8) < SMOOTHED(0, -9)) << 3) + ((SMOOTHED(-14, 10) < SMOOTHED(15, 19)) << 2) + ((SMOOTHED(-14, -12) < SMOOTHED(-10, -3)) << 1) + ((SMOOTHED(-23, -3) < SMOOTHED(17, -2)) << 0)); - desc[18] = (uchar)(((SMOOTHED(-3, -11) < SMOOTHED(6, -14)) << 7) + ((SMOOTHED(19, -2) < SMOOTHED(-4, 2)) << 6) + ((SMOOTHED(-5, 5) < SMOOTHED(3, -13)) << 5) + ((SMOOTHED(2, -2) < SMOOTHED(-5, 4)) << 4) + ((SMOOTHED(17, 4) < SMOOTHED(17, -11)) << 3) + ((SMOOTHED(-7, -2) < SMOOTHED(1, 23)) << 2) + ((SMOOTHED(8, 13) < SMOOTHED(1, -16)) << 1) + ((SMOOTHED(-13, -5) < SMOOTHED(1, -17)) << 0)); - desc[19] = (uchar)(((SMOOTHED(4, 6) < SMOOTHED(-8, -3)) << 7) + ((SMOOTHED(-5, -9) < SMOOTHED(-2, -10)) << 6) + ((SMOOTHED(-9, 0) < SMOOTHED(-7, -2)) << 5) + ((SMOOTHED(5, 0) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-4, -16) < SMOOTHED(6, 3)) << 3) + ((SMOOTHED(2, -15) < SMOOTHED(-2, 12)) << 2) + ((SMOOTHED(4, -1) < SMOOTHED(6, 2)) << 1) + ((SMOOTHED(1, 1) < SMOOTHED(-2, -8)) << 0)); - desc[20] = (uchar)(((SMOOTHED(-2, 12) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, 8) < SMOOTHED(-9, 9)) << 6) + ((SMOOTHED(2, -10) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-4, 10) < SMOOTHED(-9, 4)) << 4) + ((SMOOTHED(6, 12) < SMOOTHED(2, 5)) << 3) + ((SMOOTHED(-3, -8) < SMOOTHED(0, 5)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-7, 2)) << 1) + ((SMOOTHED(-1, -10) < SMOOTHED(7, -18)) << 0)); - desc[21] = (uchar)(((SMOOTHED(-1, 8) < SMOOTHED(-9, -10)) << 7) + ((SMOOTHED(-23, -1) < SMOOTHED(6, 2)) << 6) + ((SMOOTHED(-5, -3) < SMOOTHED(3, 2)) << 5) + ((SMOOTHED(0, 11) < SMOOTHED(-4, -7)) << 4) + ((SMOOTHED(15, 2) < SMOOTHED(-10, -3)) << 3) + ((SMOOTHED(-20, -8) < SMOOTHED(-13, 3)) << 2) + ((SMOOTHED(-19, -12) < SMOOTHED(5, -11)) << 1) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 0)); - desc[22] = (uchar)(((SMOOTHED(7, 4) < SMOOTHED(-12, 0)) << 7) + ((SMOOTHED(5, -1) < SMOOTHED(-14, -6)) << 6) + ((SMOOTHED(-4, 11) < SMOOTHED(0, -4)) << 5) + ((SMOOTHED(3, 10) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(13, 21) < SMOOTHED(-11, 6)) << 3) + ((SMOOTHED(-12, 24) < SMOOTHED(-7, -4)) << 2) + ((SMOOTHED(4, 16) < SMOOTHED(3, -14)) << 1) + ((SMOOTHED(-3, 5) < SMOOTHED(-7, -12)) << 0)); - desc[23] = (uchar)(((SMOOTHED(0, -4) < SMOOTHED(7, -5)) << 7) + ((SMOOTHED(-17, -9) < SMOOTHED(13, -7)) << 6) + ((SMOOTHED(22, -6) < SMOOTHED(-11, 5)) << 5) + ((SMOOTHED(2, -8) < SMOOTHED(23, -11)) << 4) + ((SMOOTHED(7, -10) < SMOOTHED(-1, 14)) << 3) + ((SMOOTHED(-3, -10) < SMOOTHED(8, 3)) << 2) + ((SMOOTHED(-13, 1) < SMOOTHED(-6, 0)) << 1) + ((SMOOTHED(-7, -21) < SMOOTHED(6, -14)) << 0)); - desc[24] = (uchar)(((SMOOTHED(18, 19) < SMOOTHED(-4, -6)) << 7) + ((SMOOTHED(10, 7) < SMOOTHED(-1, -4)) << 6) + ((SMOOTHED(-1, 21) < SMOOTHED(1, -5)) << 5) + ((SMOOTHED(-10, 6) < SMOOTHED(-11, -2)) << 4) + ((SMOOTHED(18, -3) < SMOOTHED(-1, 7)) << 3) + ((SMOOTHED(-3, -9) < SMOOTHED(-5, 10)) << 2) + ((SMOOTHED(-13, 14) < SMOOTHED(17, -3)) << 1) + ((SMOOTHED(11, -19) < SMOOTHED(-1, -18)) << 0)); - desc[25] = (uchar)(((SMOOTHED(8, -2) < SMOOTHED(-18, -23)) << 7) + ((SMOOTHED(0, -5) < SMOOTHED(-2, -9)) << 6) + ((SMOOTHED(-4, -11) < SMOOTHED(2, -8)) << 5) + ((SMOOTHED(14, 6) < SMOOTHED(-3, -6)) << 4) + ((SMOOTHED(-3, 0) < SMOOTHED(-15, 0)) << 3) + ((SMOOTHED(-9, 4) < SMOOTHED(-15, -9)) << 2) + ((SMOOTHED(-1, 11) < SMOOTHED(3, 11)) << 1) + ((SMOOTHED(-10, -16) < SMOOTHED(-7, 7)) << 0)); - desc[26] = (uchar)(((SMOOTHED(-2, -10) < SMOOTHED(-10, -2)) << 7) + ((SMOOTHED(-5, -3) < SMOOTHED(5, -23)) << 6) + ((SMOOTHED(13, -8) < SMOOTHED(-15, -11)) << 5) + ((SMOOTHED(-15, 11) < SMOOTHED(6, -6)) << 4) + ((SMOOTHED(-16, -3) < SMOOTHED(-2, 2)) << 3) + ((SMOOTHED(6, 12) < SMOOTHED(-16, 24)) << 2) + ((SMOOTHED(-10, 0) < SMOOTHED(8, 11)) << 1) + ((SMOOTHED(-7, 7) < SMOOTHED(-19, -7)) << 0)); - desc[27] = (uchar)(((SMOOTHED(5, 16) < SMOOTHED(9, -3)) << 7) + ((SMOOTHED(9, 7) < SMOOTHED(-7, -16)) << 6) + ((SMOOTHED(3, 2) < SMOOTHED(-10, 9)) << 5) + ((SMOOTHED(21, 1) < SMOOTHED(8, 7)) << 4) + ((SMOOTHED(7, 0) < SMOOTHED(1, 17)) << 3) + ((SMOOTHED(-8, 12) < SMOOTHED(9, 6)) << 2) + ((SMOOTHED(11, -7) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(19, 0) < SMOOTHED(9, 3)) << 0)); - desc[28] = (uchar)(((SMOOTHED(1, -7) < SMOOTHED(-5, -11)) << 7) + ((SMOOTHED(0, 8) < SMOOTHED(-2, 14)) << 6) + ((SMOOTHED(12, -2) < SMOOTHED(-15, -6)) << 5) + ((SMOOTHED(4, 12) < SMOOTHED(0, -21)) << 4) + ((SMOOTHED(17, -4) < SMOOTHED(-6, -7)) << 3) + ((SMOOTHED(-10, -9) < SMOOTHED(-14, -7)) << 2) + ((SMOOTHED(-15, -10) < SMOOTHED(-15, -14)) << 1) + ((SMOOTHED(-7, -5) < SMOOTHED(5, -12)) << 0)); - desc[29] = (uchar)(((SMOOTHED(-4, 0) < SMOOTHED(15, -4)) << 7) + ((SMOOTHED(5, 2) < SMOOTHED(-6, -23)) << 6) + ((SMOOTHED(-4, -21) < SMOOTHED(-6, 4)) << 5) + ((SMOOTHED(-10, 5) < SMOOTHED(-15, 6)) << 4) + ((SMOOTHED(4, -3) < SMOOTHED(-1, 5)) << 3) + ((SMOOTHED(-4, 19) < SMOOTHED(-23, -4)) << 2) + ((SMOOTHED(-4, 17) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(1, 12) < SMOOTHED(4, -14)) << 0)); - desc[30] = (uchar)(((SMOOTHED(-11, -6) < SMOOTHED(-20, 10)) << 7) + ((SMOOTHED(4, 5) < SMOOTHED(3, 20)) << 6) + ((SMOOTHED(-8, -20) < SMOOTHED(3, 1)) << 5) + ((SMOOTHED(-19, 9) < SMOOTHED(9, -3)) << 4) + ((SMOOTHED(18, 15) < SMOOTHED(11, -4)) << 3) + ((SMOOTHED(12, 16) < SMOOTHED(8, 7)) << 2) + ((SMOOTHED(-14, -8) < SMOOTHED(-3, 9)) << 1) + ((SMOOTHED(-6, 0) < SMOOTHED(2, -4)) << 0)); - desc[31] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-1, 2)) << 7) + ((SMOOTHED(8, -7) < SMOOTHED(-6, 18)) << 6) + ((SMOOTHED(9, 12) < SMOOTHED(-7, -23)) << 5) + ((SMOOTHED(8, -6) < SMOOTHED(5, 2)) << 4) + ((SMOOTHED(-9, 6) < SMOOTHED(-12, -7)) << 3) + ((SMOOTHED(-1, -2) < SMOOTHED(-7, 2)) << 2) + ((SMOOTHED(9, 9) < SMOOTHED(7, 15)) << 1) + ((SMOOTHED(6, 2) < SMOOTHED(-6, 6)) << 0)); - desc[32] = (uchar)(((SMOOTHED(16, 12) < SMOOTHED(0, 19)) << 7) + ((SMOOTHED(4, 3) < SMOOTHED(6, 0)) << 6) + ((SMOOTHED(-2, -1) < SMOOTHED(2, 17)) << 5) + ((SMOOTHED(8, 1) < SMOOTHED(3, 1)) << 4) + ((SMOOTHED(-12, -1) < SMOOTHED(-11, 0)) << 3) + ((SMOOTHED(-11, 2) < SMOOTHED(7, 9)) << 2) + ((SMOOTHED(-1, 3) < SMOOTHED(-19, 4)) << 1) + ((SMOOTHED(-1, -11) < SMOOTHED(-1, 3)) << 0)); - desc[33] = (uchar)(((SMOOTHED(1, -10) < SMOOTHED(-10, -4)) << 7) + ((SMOOTHED(-2, 3) < SMOOTHED(6, 11)) << 6) + ((SMOOTHED(3, 7) < SMOOTHED(-9, -8)) << 5) + ((SMOOTHED(24, -14) < SMOOTHED(-2, -10)) << 4) + ((SMOOTHED(-3, -3) < SMOOTHED(-18, -6)) << 3) + ((SMOOTHED(-13, -10) < SMOOTHED(-7, -1)) << 2) + ((SMOOTHED(2, -7) < SMOOTHED(9, -6)) << 1) + ((SMOOTHED(2, -4) < SMOOTHED(6, -13)) << 0)); - desc[34] = (uchar)(((SMOOTHED(4, -4) < SMOOTHED(-2, 3)) << 7) + ((SMOOTHED(-4, 2) < SMOOTHED(9, 13)) << 6) + ((SMOOTHED(-11, 5) < SMOOTHED(-6, -11)) << 5) + ((SMOOTHED(4, -2) < SMOOTHED(11, -9)) << 4) + ((SMOOTHED(-19, 0) < SMOOTHED(-23, -5)) << 3) + ((SMOOTHED(-5, -7) < SMOOTHED(-3, -6)) << 2) + ((SMOOTHED(-6, -4) < SMOOTHED(12, 14)) << 1) + ((SMOOTHED(12, -11) < SMOOTHED(-8, -16)) << 0)); - desc[35] = (uchar)(((SMOOTHED(-21, 15) < SMOOTHED(-12, 6)) << 7) + ((SMOOTHED(-2, -1) < SMOOTHED(-8, 16)) << 6) + ((SMOOTHED(6, -1) < SMOOTHED(-8, -2)) << 5) + ((SMOOTHED(1, -1) < SMOOTHED(-9, 8)) << 4) + ((SMOOTHED(3, -4) < SMOOTHED(-2, -2)) << 3) + ((SMOOTHED(-7, 0) < SMOOTHED(4, -8)) << 2) + ((SMOOTHED(11, -11) < SMOOTHED(-12, 2)) << 1) + ((SMOOTHED(2, 3) < SMOOTHED(11, 7)) << 0)); - desc[36] = (uchar)(((SMOOTHED(-7, -4) < SMOOTHED(-9, -6)) << 7) + ((SMOOTHED(3, -7) < SMOOTHED(-5, 0)) << 6) + ((SMOOTHED(3, -7) < SMOOTHED(-10, -5)) << 5) + ((SMOOTHED(-3, -1) < SMOOTHED(8, -10)) << 4) + ((SMOOTHED(0, 8) < SMOOTHED(5, 1)) << 3) + ((SMOOTHED(9, 0) < SMOOTHED(1, 16)) << 2) + ((SMOOTHED(8, 4) < SMOOTHED(-11, -3)) << 1) + ((SMOOTHED(-15, 9) < SMOOTHED(8, 17)) << 0)); - desc[37] = (uchar)(((SMOOTHED(0, 2) < SMOOTHED(-9, 17)) << 7) + ((SMOOTHED(-6, -11) < SMOOTHED(-10, -3)) << 6) + ((SMOOTHED(1, 1) < SMOOTHED(15, -8)) << 5) + ((SMOOTHED(-12, -13) < SMOOTHED(-2, 4)) << 4) + ((SMOOTHED(-6, 4) < SMOOTHED(-6, -10)) << 3) + ((SMOOTHED(5, -7) < SMOOTHED(7, -5)) << 2) + ((SMOOTHED(10, 6) < SMOOTHED(8, 9)) << 1) + ((SMOOTHED(-5, 7) < SMOOTHED(-18, -3)) << 0)); - desc[38] = (uchar)(((SMOOTHED(-6, 3) < SMOOTHED(5, 4)) << 7) + ((SMOOTHED(-10, -13) < SMOOTHED(-5, -3)) << 6) + ((SMOOTHED(-11, 2) < SMOOTHED(-16, 0)) << 5) + ((SMOOTHED(7, -21) < SMOOTHED(-5, -13)) << 4) + ((SMOOTHED(-14, -14) < SMOOTHED(-4, -4)) << 3) + ((SMOOTHED(4, 9) < SMOOTHED(7, -3)) << 2) + ((SMOOTHED(4, 11) < SMOOTHED(10, -4)) << 1) + ((SMOOTHED(6, 17) < SMOOTHED(9, 17)) << 0)); - desc[39] = (uchar)(((SMOOTHED(-10, 8) < SMOOTHED(0, -11)) << 7) + ((SMOOTHED(-6, -16) < SMOOTHED(-6, 8)) << 6) + ((SMOOTHED(-13, 5) < SMOOTHED(10, -5)) << 5) + ((SMOOTHED(3, 2) < SMOOTHED(12, 16)) << 4) + ((SMOOTHED(13, -8) < SMOOTHED(0, -6)) << 3) + ((SMOOTHED(10, 0) < SMOOTHED(4, -11)) << 2) + ((SMOOTHED(8, 5) < SMOOTHED(10, -2)) << 1) + ((SMOOTHED(11, -7) < SMOOTHED(-13, 3)) << 0)); - desc[40] = (uchar)(((SMOOTHED(2, 4) < SMOOTHED(-7, -3)) << 7) + ((SMOOTHED(-14, -2) < SMOOTHED(-11, 16)) << 6) + ((SMOOTHED(11, -6) < SMOOTHED(7, 6)) << 5) + ((SMOOTHED(-3, 15) < SMOOTHED(8, -10)) << 4) + ((SMOOTHED(-3, 8) < SMOOTHED(12, -12)) << 3) + ((SMOOTHED(-13, 6) < SMOOTHED(-14, 7)) << 2) + ((SMOOTHED(-11, -5) < SMOOTHED(-8, -6)) << 1) + ((SMOOTHED(7, -6) < SMOOTHED(6, 3)) << 0)); - desc[41] = (uchar)(((SMOOTHED(-4, 10) < SMOOTHED(5, 1)) << 7) + ((SMOOTHED(9, 16) < SMOOTHED(10, 13)) << 6) + ((SMOOTHED(-17, 10) < SMOOTHED(2, 8)) << 5) + ((SMOOTHED(-5, 1) < SMOOTHED(4, -4)) << 4) + ((SMOOTHED(-14, 8) < SMOOTHED(-5, 2)) << 3) + ((SMOOTHED(4, -9) < SMOOTHED(-6, -3)) << 2) + ((SMOOTHED(3, -7) < SMOOTHED(-10, 0)) << 1) + ((SMOOTHED(-2, -8) < SMOOTHED(-10, 4)) << 0)); - desc[42] = (uchar)(((SMOOTHED(-8, 5) < SMOOTHED(-9, 24)) << 7) + ((SMOOTHED(2, -8) < SMOOTHED(8, -9)) << 6) + ((SMOOTHED(-4, 17) < SMOOTHED(-5, 2)) << 5) + ((SMOOTHED(14, 0) < SMOOTHED(-9, 9)) << 4) + ((SMOOTHED(11, 15) < SMOOTHED(-6, 5)) << 3) + ((SMOOTHED(-8, 1) < SMOOTHED(-3, 4)) << 2) + ((SMOOTHED(9, -21) < SMOOTHED(10, 2)) << 1) + ((SMOOTHED(2, -1) < SMOOTHED(4, 11)) << 0)); - desc[43] = (uchar)(((SMOOTHED(24, 3) < SMOOTHED(2, -2)) << 7) + ((SMOOTHED(-8, 17) < SMOOTHED(-14, -10)) << 6) + ((SMOOTHED(6, 5) < SMOOTHED(-13, 7)) << 5) + ((SMOOTHED(11, 10) < SMOOTHED(0, -1)) << 4) + ((SMOOTHED(4, 6) < SMOOTHED(-10, 6)) << 3) + ((SMOOTHED(-12, -2) < SMOOTHED(5, 6)) << 2) + ((SMOOTHED(3, -1) < SMOOTHED(8, -15)) << 1) + ((SMOOTHED(1, -4) < SMOOTHED(-7, 11)) << 0)); - desc[44] = (uchar)(((SMOOTHED(1, 11) < SMOOTHED(5, 0)) << 7) + ((SMOOTHED(6, -12) < SMOOTHED(10, 1)) << 6) + ((SMOOTHED(-3, -2) < SMOOTHED(-1, 4)) << 5) + ((SMOOTHED(-2, -11) < SMOOTHED(-1, 12)) << 4) + ((SMOOTHED(7, -8) < SMOOTHED(-20, -18)) << 3) + ((SMOOTHED(2, 0) < SMOOTHED(-9, 2)) << 2) + ((SMOOTHED(-13, -1) < SMOOTHED(-16, 2)) << 1) + ((SMOOTHED(3, -1) < SMOOTHED(-5, -17)) << 0)); - desc[45] = (uchar)(((SMOOTHED(15, 8) < SMOOTHED(3, -14)) << 7) + ((SMOOTHED(-13, -12) < SMOOTHED(6, 15)) << 6) + ((SMOOTHED(2, -8) < SMOOTHED(2, 6)) << 5) + ((SMOOTHED(6, 22) < SMOOTHED(-3, -23)) << 4) + ((SMOOTHED(-2, -7) < SMOOTHED(-6, 0)) << 3) + ((SMOOTHED(13, -10) < SMOOTHED(-6, 6)) << 2) + ((SMOOTHED(6, 7) < SMOOTHED(-10, 12)) << 1) + ((SMOOTHED(-6, 7) < SMOOTHED(-2, 11)) << 0)); - desc[46] = (uchar)(((SMOOTHED(0, -22) < SMOOTHED(-2, -17)) << 7) + ((SMOOTHED(-4, -1) < SMOOTHED(-11, -14)) << 6) + ((SMOOTHED(-2, -8) < SMOOTHED(7, 12)) << 5) + ((SMOOTHED(12, -5) < SMOOTHED(7, -13)) << 4) + ((SMOOTHED(2, -2) < SMOOTHED(-7, 6)) << 3) + ((SMOOTHED(0, 8) < SMOOTHED(-3, 23)) << 2) + ((SMOOTHED(6, 12) < SMOOTHED(13, -11)) << 1) + ((SMOOTHED(-21, -10) < SMOOTHED(10, 8)) << 0)); - desc[47] = (uchar)(((SMOOTHED(-3, 0) < SMOOTHED(7, 15)) << 7) + ((SMOOTHED(7, -6) < SMOOTHED(-5, -12)) << 6) + ((SMOOTHED(-21, -10) < SMOOTHED(12, -11)) << 5) + ((SMOOTHED(-5, -11) < SMOOTHED(8, -11)) << 4) + ((SMOOTHED(5, 0) < SMOOTHED(-11, -1)) << 3) + ((SMOOTHED(8, -9) < SMOOTHED(7, -1)) << 2) + ((SMOOTHED(11, -23) < SMOOTHED(21, -5)) << 1) + ((SMOOTHED(0, -5) < SMOOTHED(-8, 6)) << 0)); - desc[48] = (uchar)(((SMOOTHED(-6, 8) < SMOOTHED(8, 12)) << 7) + ((SMOOTHED(-7, 5) < SMOOTHED(3, -2)) << 6) + ((SMOOTHED(-5, -20) < SMOOTHED(-12, 9)) << 5) + ((SMOOTHED(-6, 12) < SMOOTHED(-11, 3)) << 4) + ((SMOOTHED(4, 5) < SMOOTHED(13, 11)) << 3) + ((SMOOTHED(2, 12) < SMOOTHED(13, -12)) << 2) + ((SMOOTHED(-4, -13) < SMOOTHED(4, 7)) << 1) + ((SMOOTHED(0, 15) < SMOOTHED(-3, -16)) << 0)); - desc[49] = (uchar)(((SMOOTHED(-3, 2) < SMOOTHED(-2, 14)) << 7) + ((SMOOTHED(4, -14) < SMOOTHED(16, -11)) << 6) + ((SMOOTHED(-13, 3) < SMOOTHED(23, 10)) << 5) + ((SMOOTHED(9, -19) < SMOOTHED(2, 5)) << 4) + ((SMOOTHED(5, 3) < SMOOTHED(14, -7)) << 3) + ((SMOOTHED(19, -13) < SMOOTHED(-11, 15)) << 2) + ((SMOOTHED(14, 0) < SMOOTHED(-2, -5)) << 1) + ((SMOOTHED(11, -4) < SMOOTHED(0, -6)) << 0)); - desc[50] = (uchar)(((SMOOTHED(-2, 5) < SMOOTHED(-13, -8)) << 7) + ((SMOOTHED(-11, -15) < SMOOTHED(-7, -17)) << 6) + ((SMOOTHED(1, 3) < SMOOTHED(-10, -8)) << 5) + ((SMOOTHED(-13, -10) < SMOOTHED(7, -12)) << 4) + ((SMOOTHED(0, -13) < SMOOTHED(23, -6)) << 3) + ((SMOOTHED(2, -17) < SMOOTHED(-7, -3)) << 2) + ((SMOOTHED(1, 3) < SMOOTHED(4, -10)) << 1) + ((SMOOTHED(13, 4) < SMOOTHED(14, -6)) << 0)); - desc[51] = (uchar)(((SMOOTHED(-19, -2) < SMOOTHED(-1, 5)) << 7) + ((SMOOTHED(9, -8) < SMOOTHED(10, -5)) << 6) + ((SMOOTHED(7, -1) < SMOOTHED(5, 7)) << 5) + ((SMOOTHED(9, -10) < SMOOTHED(19, 0)) << 4) + ((SMOOTHED(7, 5) < SMOOTHED(-4, -7)) << 3) + ((SMOOTHED(-11, 1) < SMOOTHED(-1, -11)) << 2) + ((SMOOTHED(2, -1) < SMOOTHED(-4, 11)) << 1) + ((SMOOTHED(-1, 7) < SMOOTHED(2, -2)) << 0)); - desc[52] = (uchar)(((SMOOTHED(1, -20) < SMOOTHED(-9, -6)) << 7) + ((SMOOTHED(-4, -18) < SMOOTHED(8, -18)) << 6) + ((SMOOTHED(-16, -2) < SMOOTHED(7, -6)) << 5) + ((SMOOTHED(-3, -6) < SMOOTHED(-1, -4)) << 4) + ((SMOOTHED(0, -16) < SMOOTHED(24, -5)) << 3) + ((SMOOTHED(-4, -2) < SMOOTHED(-1, 9)) << 2) + ((SMOOTHED(-8, 2) < SMOOTHED(-6, 15)) << 1) + ((SMOOTHED(11, 4) < SMOOTHED(0, -3)) << 0)); - desc[53] = (uchar)(((SMOOTHED(7, 6) < SMOOTHED(2, -10)) << 7) + ((SMOOTHED(-7, -9) < SMOOTHED(12, -6)) << 6) + ((SMOOTHED(24, 15) < SMOOTHED(-8, -1)) << 5) + ((SMOOTHED(15, -9) < SMOOTHED(-3, -15)) << 4) + ((SMOOTHED(17, -5) < SMOOTHED(11, -10)) << 3) + ((SMOOTHED(-2, 13) < SMOOTHED(-15, 4)) << 2) + ((SMOOTHED(-2, -1) < SMOOTHED(4, -23)) << 1) + ((SMOOTHED(-16, 3) < SMOOTHED(-7, -14)) << 0)); - desc[54] = (uchar)(((SMOOTHED(-3, -5) < SMOOTHED(-10, -9)) << 7) + ((SMOOTHED(-5, 3) < SMOOTHED(-2, -1)) << 6) + ((SMOOTHED(-1, 4) < SMOOTHED(1, 8)) << 5) + ((SMOOTHED(12, 9) < SMOOTHED(9, -14)) << 4) + ((SMOOTHED(-9, 17) < SMOOTHED(-3, 0)) << 3) + ((SMOOTHED(5, 4) < SMOOTHED(13, -6)) << 2) + ((SMOOTHED(-1, -8) < SMOOTHED(19, 10)) << 1) + ((SMOOTHED(8, -5) < SMOOTHED(-15, 2)) << 0)); - desc[55] = (uchar)(((SMOOTHED(-12, -9) < SMOOTHED(-4, -5)) << 7) + ((SMOOTHED(12, 0) < SMOOTHED(24, 4)) << 6) + ((SMOOTHED(8, -2) < SMOOTHED(14, 4)) << 5) + ((SMOOTHED(8, -4) < SMOOTHED(-7, 16)) << 4) + ((SMOOTHED(5, -1) < SMOOTHED(-8, -4)) << 3) + ((SMOOTHED(-2, 18) < SMOOTHED(-5, 17)) << 2) + ((SMOOTHED(8, -2) < SMOOTHED(-9, -2)) << 1) + ((SMOOTHED(3, -7) < SMOOTHED(1, -6)) << 0)); - desc[56] = (uchar)(((SMOOTHED(-5, -22) < SMOOTHED(-5, -2)) << 7) + ((SMOOTHED(-8, -10) < SMOOTHED(14, 1)) << 6) + ((SMOOTHED(-3, -13) < SMOOTHED(3, 9)) << 5) + ((SMOOTHED(-4, -1) < SMOOTHED(-1, 0)) << 4) + ((SMOOTHED(-7, -21) < SMOOTHED(12, -19)) << 3) + ((SMOOTHED(-8, 8) < SMOOTHED(24, 8)) << 2) + ((SMOOTHED(12, -6) < SMOOTHED(-2, 3)) << 1) + ((SMOOTHED(-5, -11) < SMOOTHED(-22, -4)) << 0)); - desc[57] = (uchar)(((SMOOTHED(-3, 5) < SMOOTHED(-4, 4)) << 7) + ((SMOOTHED(-16, 24) < SMOOTHED(7, -9)) << 6) + ((SMOOTHED(-10, 23) < SMOOTHED(-9, 18)) << 5) + ((SMOOTHED(1, 12) < SMOOTHED(17, 21)) << 4) + ((SMOOTHED(24, -6) < SMOOTHED(-3, -11)) << 3) + ((SMOOTHED(-7, 17) < SMOOTHED(1, -6)) << 2) + ((SMOOTHED(4, 4) < SMOOTHED(2, -7)) << 1) + ((SMOOTHED(14, 6) < SMOOTHED(-12, 3)) << 0)); - desc[58] = (uchar)(((SMOOTHED(-6, 0) < SMOOTHED(-16, 13)) << 7) + ((SMOOTHED(-10, 5) < SMOOTHED(7, 12)) << 6) + ((SMOOTHED(5, 2) < SMOOTHED(6, -3)) << 5) + ((SMOOTHED(7, 0) < SMOOTHED(-23, 1)) << 4) + ((SMOOTHED(15, -5) < SMOOTHED(1, 14)) << 3) + ((SMOOTHED(-3, -1) < SMOOTHED(6, 6)) << 2) + ((SMOOTHED(6, -9) < SMOOTHED(-9, 12)) << 1) + ((SMOOTHED(4, -2) < SMOOTHED(-4, 7)) << 0)); - desc[59] = (uchar)(((SMOOTHED(-4, -5) < SMOOTHED(4, 4)) << 7) + ((SMOOTHED(-13, 0) < SMOOTHED(6, -10)) << 6) + ((SMOOTHED(2, -12) < SMOOTHED(-6, -3)) << 5) + ((SMOOTHED(16, 0) < SMOOTHED(-3, 3)) << 4) + ((SMOOTHED(5, -14) < SMOOTHED(6, 11)) << 3) + ((SMOOTHED(5, 11) < SMOOTHED(0, -13)) << 2) + ((SMOOTHED(7, 5) < SMOOTHED(-1, -5)) << 1) + ((SMOOTHED(12, 4) < SMOOTHED(6, 10)) << 0)); - desc[60] = (uchar)(((SMOOTHED(-10, 4) < SMOOTHED(-1, -11)) << 7) + ((SMOOTHED(4, 10) < SMOOTHED(-14, 5)) << 6) + ((SMOOTHED(11, -14) < SMOOTHED(-13, 0)) << 5) + ((SMOOTHED(2, 8) < SMOOTHED(12, 24)) << 4) + ((SMOOTHED(-1, 3) < SMOOTHED(-1, 2)) << 3) + ((SMOOTHED(9, -14) < SMOOTHED(-23, 3)) << 2) + ((SMOOTHED(-8, -6) < SMOOTHED(0, 9)) << 1) + ((SMOOTHED(-15, 14) < SMOOTHED(10, -10)) << 0)); - desc[61] = (uchar)(((SMOOTHED(-10, -6) < SMOOTHED(-7, -5)) << 7) + ((SMOOTHED(11, 5) < SMOOTHED(-3, -15)) << 6) + ((SMOOTHED(1, 0) < SMOOTHED(1, 8)) << 5) + ((SMOOTHED(-11, -6) < SMOOTHED(-4, -18)) << 4) + ((SMOOTHED(9, 0) < SMOOTHED(22, -4)) << 3) + ((SMOOTHED(-5, -1) < SMOOTHED(-9, 4)) << 2) + ((SMOOTHED(-20, 2) < SMOOTHED(1, 6)) << 1) + ((SMOOTHED(1, 2) < SMOOTHED(-9, -12)) << 0)); - desc[62] = (uchar)(((SMOOTHED(5, 15) < SMOOTHED(4, -6)) << 7) + ((SMOOTHED(19, 4) < SMOOTHED(4, 11)) << 6) + ((SMOOTHED(17, -4) < SMOOTHED(-8, -1)) << 5) + ((SMOOTHED(-8, -12) < SMOOTHED(7, -3)) << 4) + ((SMOOTHED(11, 9) < SMOOTHED(8, 1)) << 3) + ((SMOOTHED(9, 22) < SMOOTHED(-15, 15)) << 2) + ((SMOOTHED(-7, -7) < SMOOTHED(1, -23)) << 1) + ((SMOOTHED(-5, 13) < SMOOTHED(-8, 2)) << 0)); - desc[63] = (uchar)(((SMOOTHED(3, -5) < SMOOTHED(11, -11)) << 7) + ((SMOOTHED(3, -18) < SMOOTHED(14, -5)) << 6) + ((SMOOTHED(-20, 7) < SMOOTHED(-10, -23)) << 5) + ((SMOOTHED(-2, -5) < SMOOTHED(6, 0)) << 4) + ((SMOOTHED(-17, -13) < SMOOTHED(-3, 2)) << 3) + ((SMOOTHED(-6, -1) < SMOOTHED(14, -2)) << 2) + ((SMOOTHED(-12, -16) < SMOOTHED(15, 6)) << 1) + ((SMOOTHED(-12, -2) < SMOOTHED(3, -19)) << 0)); -#undef SMOOTHED diff --git a/modules/features2d/src/kaze.cpp b/modules/features2d/src/kaze.cpp index 88fb999d5f..910ec271f6 100644 --- a/modules/features2d/src/kaze.cpp +++ b/modules/features2d/src/kaze.cpp @@ -55,12 +55,21 @@ namespace cv KAZE::KAZE() : extended(false) , upright(false) + , threshold(0.001f) + , octaves(4) + , sublevels(4) + , diffusivity(DIFF_PM_G2) { } - KAZE::KAZE(bool _extended, bool _upright) + KAZE::KAZE(bool _extended, bool _upright, float _threshold, int _octaves, + int _sublevels, int _diffusivity) : extended(_extended) , upright(_upright) + , threshold(_threshold) + , octaves(_octaves) + , sublevels(_sublevels) + , diffusivity(_diffusivity) { } @@ -111,6 +120,10 @@ namespace cv options.img_height = img.rows; options.extended = extended; options.upright = upright; + options.dthreshold = threshold; + options.omax = octaves; + options.nsublevels = sublevels; + options.diffusivity = diffusivity; KAZEFeatures impl(options); impl.Create_Nonlinear_Scale_Space(img1_32); @@ -180,4 +193,4 @@ namespace cv CV_Assert((!desc.rows || desc.cols == descriptorSize())); CV_Assert((!desc.rows || (desc.type() == descriptorType()))); } -} \ No newline at end of file +} diff --git a/modules/features2d/src/akaze/AKAZEConfig.h b/modules/features2d/src/kaze/AKAZEConfig.h similarity index 70% rename from modules/features2d/src/akaze/AKAZEConfig.h rename to modules/features2d/src/kaze/AKAZEConfig.h index 1c1203f574..e2ba51c531 100644 --- a/modules/features2d/src/akaze/AKAZEConfig.h +++ b/modules/features2d/src/kaze/AKAZEConfig.h @@ -5,11 +5,12 @@ * @author Pablo F. Alcantarilla, Jesus Nuevo */ -#pragma once +#ifndef __OPENCV_FEATURES_2D_AKAZE_CONFIG_H__ +#define __OPENCV_FEATURES_2D_AKAZE_CONFIG_H__ /* ************************************************************************* */ // OpenCV -#include "precomp.hpp" +#include "../precomp.hpp" #include /* ************************************************************************* */ @@ -28,14 +29,6 @@ const float gauss25[7][7] = { /// AKAZE configuration options structure struct AKAZEOptions { - /// AKAZE Diffusivities - enum DIFFUSIVITY_TYPE { - PM_G1 = 0, - PM_G2 = 1, - WEICKERT = 2, - CHARBONNIER = 3 - }; - AKAZEOptions() : omax(4) , nsublevels(4) @@ -44,12 +37,12 @@ struct AKAZEOptions { , soffset(1.6f) , derivative_factor(1.5f) , sderivatives(1.0) - , diffusivity(PM_G2) + , diffusivity(cv::DIFF_PM_G2) , dthreshold(0.001f) , min_dthreshold(0.00001f) - , descriptor(cv::AKAZE::DESCRIPTOR_MLDB) + , descriptor(cv::DESCRIPTOR_MLDB) , descriptor_size(0) , descriptor_channels(3) , descriptor_pattern_size(10) @@ -67,12 +60,12 @@ struct AKAZEOptions { float soffset; ///< Base scale offset (sigma units) float derivative_factor; ///< Factor for the multiscale derivatives float sderivatives; ///< Smoothing factor for the derivatives - DIFFUSIVITY_TYPE diffusivity; ///< Diffusivity type + int diffusivity; ///< Diffusivity type float dthreshold; ///< Detector response threshold to accept point float min_dthreshold; ///< Minimum detector threshold to accept a point - cv::AKAZE::DESCRIPTOR_TYPE descriptor; ///< Type of descriptor + int descriptor; ///< Type of descriptor int descriptor_size; ///< Size of the descriptor in bits. 0->Full size int descriptor_channels; ///< Number of channels in the descriptor (1, 2, 3) int descriptor_pattern_size; ///< Actual patch size is 2*pattern_size*point.scale @@ -82,28 +75,4 @@ struct AKAZEOptions { int kcontrast_nbins; ///< Number of bins for the contrast factor histogram }; -/* ************************************************************************* */ -/// AKAZE nonlinear diffusion filtering evolution -struct TEvolution { - - TEvolution() { - etime = 0.0f; - esigma = 0.0f; - octave = 0; - sublevel = 0; - sigma_size = 0; - } - - cv::Mat Lx, Ly; // First order spatial derivatives - cv::Mat Lxx, Lxy, Lyy; // Second order spatial derivatives - cv::Mat Lflow; // Diffusivity image - cv::Mat Lt; // Evolution image - cv::Mat Lsmooth; // Smoothed image - cv::Mat Lstep; // Evolution step update - cv::Mat Ldet; // Detector response - float etime; // Evolution time - float esigma; // Evolution sigma. For linear diffusion t = sigma^2 / 2 - size_t octave; // Image octave - size_t sublevel; // Image sublevel in each octave - size_t sigma_size; // Integer sigma. For computing the feature detector responses -}; \ No newline at end of file +#endif diff --git a/modules/features2d/src/kaze/AKAZEFeatures.cpp b/modules/features2d/src/kaze/AKAZEFeatures.cpp new file mode 100644 index 0000000000..97222dfa4f --- /dev/null +++ b/modules/features2d/src/kaze/AKAZEFeatures.cpp @@ -0,0 +1,1880 @@ +/** + * @file AKAZEFeatures.cpp + * @brief Main class for detecting and describing binary features in an + * accelerated nonlinear scale space + * @date Sep 15, 2013 + * @author Pablo F. Alcantarilla, Jesus Nuevo + */ + +#include "AKAZEFeatures.h" +#include "fed.h" +#include "nldiffusion_functions.h" +#include "utils.h" + +#include + +// Namespaces +using namespace std; +using namespace cv; +using namespace cv::details::kaze; + +/* ************************************************************************* */ +/** + * @brief AKAZEFeatures constructor with input options + * @param options AKAZEFeatures configuration options + * @note This constructor allocates memory for the nonlinear scale space + */ +AKAZEFeatures::AKAZEFeatures(const AKAZEOptions& options) : options_(options) { + + ncycles_ = 0; + reordering_ = true; + + if (options_.descriptor_size > 0 && options_.descriptor >= cv::DESCRIPTOR_MLDB_UPRIGHT) { + generateDescriptorSubsample(descriptorSamples_, descriptorBits_, options_.descriptor_size, + options_.descriptor_pattern_size, options_.descriptor_channels); + } + + Allocate_Memory_Evolution(); +} + +/* ************************************************************************* */ +/** + * @brief This method allocates the memory for the nonlinear diffusion evolution + */ +void AKAZEFeatures::Allocate_Memory_Evolution(void) { + + float rfactor = 0.0f; + int level_height = 0, level_width = 0; + + // Allocate the dimension of the matrices for the evolution + for (int i = 0; i <= options_.omax - 1; i++) { + rfactor = 1.0f / pow(2.f, i); + level_height = (int)(options_.img_height*rfactor); + level_width = (int)(options_.img_width*rfactor); + + // Smallest possible octave and allow one scale if the image is small + if ((level_width < 80 || level_height < 40) && i != 0) { + options_.omax = i; + break; + } + + for (int j = 0; j < options_.nsublevels; j++) { + TEvolution step; + step.Lx = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Ly = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Lxx = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Lxy = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Lyy = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Lt = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Ldet = cv::Mat::zeros(level_height, level_width, CV_32F); + step.Lsmooth = cv::Mat::zeros(level_height, level_width, CV_32F); + step.esigma = options_.soffset*pow(2.f, (float)(j) / (float)(options_.nsublevels) + i); + step.sigma_size = fRound(step.esigma); + step.etime = 0.5f*(step.esigma*step.esigma); + step.octave = i; + step.sublevel = j; + evolution_.push_back(step); + } + } + + // Allocate memory for the number of cycles and time steps + for (size_t i = 1; i < evolution_.size(); i++) { + int naux = 0; + vector tau; + float ttime = 0.0f; + ttime = evolution_[i].etime - evolution_[i - 1].etime; + naux = fed_tau_by_process_time(ttime, 1, 0.25f, reordering_, tau); + nsteps_.push_back(naux); + tsteps_.push_back(tau); + ncycles_++; + } +} + +/* ************************************************************************* */ +/** + * @brief This method creates the nonlinear scale space for a given image + * @param img Input image for which the nonlinear scale space needs to be created + * @return 0 if the nonlinear scale space was created successfully, -1 otherwise + */ +int AKAZEFeatures::Create_Nonlinear_Scale_Space(const cv::Mat& img) +{ + CV_Assert(evolution_.size() > 0); + + // Copy the original image to the first level of the evolution + img.copyTo(evolution_[0].Lt); + gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lt, 0, 0, options_.soffset); + evolution_[0].Lt.copyTo(evolution_[0].Lsmooth); + + // Allocate memory for the flow and step images + cv::Mat Lflow = cv::Mat::zeros(evolution_[0].Lt.rows, evolution_[0].Lt.cols, CV_32F); + cv::Mat Lstep = cv::Mat::zeros(evolution_[0].Lt.rows, evolution_[0].Lt.cols, CV_32F); + + // First compute the kcontrast factor + options_.kcontrast = compute_k_percentile(img, options_.kcontrast_percentile, 1.0f, options_.kcontrast_nbins, 0, 0); + + // Now generate the rest of evolution levels + for (size_t i = 1; i < evolution_.size(); i++) { + + if (evolution_[i].octave > evolution_[i - 1].octave) { + halfsample_image(evolution_[i - 1].Lt, evolution_[i].Lt); + options_.kcontrast = options_.kcontrast*0.75f; + + // Allocate memory for the resized flow and step images + Lflow = cv::Mat::zeros(evolution_[i].Lt.rows, evolution_[i].Lt.cols, CV_32F); + Lstep = cv::Mat::zeros(evolution_[i].Lt.rows, evolution_[i].Lt.cols, CV_32F); + } + else { + evolution_[i - 1].Lt.copyTo(evolution_[i].Lt); + } + + gaussian_2D_convolution(evolution_[i].Lt, evolution_[i].Lsmooth, 0, 0, 1.0f); + + // Compute the Gaussian derivatives Lx and Ly + image_derivatives_scharr(evolution_[i].Lsmooth, evolution_[i].Lx, 1, 0); + image_derivatives_scharr(evolution_[i].Lsmooth, evolution_[i].Ly, 0, 1); + + // Compute the conductivity equation + switch (options_.diffusivity) { + case cv::DIFF_PM_G1: + pm_g1(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); + break; + case cv::DIFF_PM_G2: + pm_g2(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); + break; + case cv::DIFF_WEICKERT: + weickert_diffusivity(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); + break; + case cv::DIFF_CHARBONNIER: + charbonnier_diffusivity(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); + break; + default: + CV_Error(options_.diffusivity, "Diffusivity is not supported"); + break; + } + + // Perform FED n inner steps + for (int j = 0; j < nsteps_[i - 1]; j++) { + cv::details::kaze::nld_step_scalar(evolution_[i].Lt, Lflow, Lstep, tsteps_[i - 1][j]); + } + } + + return 0; +} + +/* ************************************************************************* */ +/** + * @brief This method selects interesting keypoints through the nonlinear scale space + * @param kpts Vector of detected keypoints + */ +void AKAZEFeatures::Feature_Detection(std::vector& kpts) +{ + kpts.clear(); + Compute_Determinant_Hessian_Response(); + Find_Scale_Space_Extrema(kpts); + Do_Subpixel_Refinement(kpts); +} + +/* ************************************************************************* */ +class MultiscaleDerivativesAKAZEInvoker : public cv::ParallelLoopBody +{ +public: + explicit MultiscaleDerivativesAKAZEInvoker(std::vector& ev, const AKAZEOptions& opt) + : evolution_(&ev) + , options_(opt) + { + } + + void operator()(const cv::Range& range) const + { + std::vector& evolution = *evolution_; + + for (int i = range.start; i < range.end; i++) + { + float ratio = pow(2.f, (float)evolution[i].octave); + int sigma_size_ = fRound(evolution[i].esigma * options_.derivative_factor / ratio); + + compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Lx, 1, 0, sigma_size_); + compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Ly, 0, 1, sigma_size_); + compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxx, 1, 0, sigma_size_); + compute_scharr_derivatives(evolution[i].Ly, evolution[i].Lyy, 0, 1, sigma_size_); + compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxy, 0, 1, sigma_size_); + + evolution[i].Lx = evolution[i].Lx*((sigma_size_)); + evolution[i].Ly = evolution[i].Ly*((sigma_size_)); + evolution[i].Lxx = evolution[i].Lxx*((sigma_size_)*(sigma_size_)); + evolution[i].Lxy = evolution[i].Lxy*((sigma_size_)*(sigma_size_)); + evolution[i].Lyy = evolution[i].Lyy*((sigma_size_)*(sigma_size_)); + } + } + +private: + std::vector* evolution_; + AKAZEOptions options_; +}; + +/* ************************************************************************* */ +/** + * @brief This method computes the multiscale derivatives for the nonlinear scale space + */ +void AKAZEFeatures::Compute_Multiscale_Derivatives(void) +{ + cv::parallel_for_(cv::Range(0, (int)evolution_.size()), + MultiscaleDerivativesAKAZEInvoker(evolution_, options_)); +} + +/* ************************************************************************* */ +/** + * @brief This method computes the feature detector response for the nonlinear scale space + * @note We use the Hessian determinant as the feature detector response + */ +void AKAZEFeatures::Compute_Determinant_Hessian_Response(void) { + + // Firstly compute the multiscale derivatives + Compute_Multiscale_Derivatives(); + + for (size_t i = 0; i < evolution_.size(); i++) + { + for (int ix = 0; ix < evolution_[i].Ldet.rows; ix++) + { + for (int jx = 0; jx < evolution_[i].Ldet.cols; jx++) + { + float lxx = *(evolution_[i].Lxx.ptr(ix)+jx); + float lxy = *(evolution_[i].Lxy.ptr(ix)+jx); + float lyy = *(evolution_[i].Lyy.ptr(ix)+jx); + *(evolution_[i].Ldet.ptr(ix)+jx) = (lxx*lyy - lxy*lxy); + } + } + } +} + +/* ************************************************************************* */ +/** + * @brief This method finds extrema in the nonlinear scale space + * @param kpts Vector of detected keypoints + */ +void AKAZEFeatures::Find_Scale_Space_Extrema(std::vector& kpts) +{ + + float value = 0.0; + float dist = 0.0, ratio = 0.0, smax = 0.0; + int npoints = 0, id_repeated = 0; + int sigma_size_ = 0, left_x = 0, right_x = 0, up_y = 0, down_y = 0; + bool is_extremum = false, is_repeated = false, is_out = false; + cv::KeyPoint point; + vector kpts_aux; + + // Set maximum size + if (options_.descriptor == cv::DESCRIPTOR_MLDB_UPRIGHT || options_.descriptor == cv::DESCRIPTOR_MLDB) { + smax = 10.0f*sqrtf(2.0f); + } + else if (options_.descriptor == cv::DESCRIPTOR_KAZE_UPRIGHT || options_.descriptor == cv::DESCRIPTOR_KAZE) { + smax = 12.0f*sqrtf(2.0f); + } + + for (size_t i = 0; i < evolution_.size(); i++) { + for (int ix = 1; ix < evolution_[i].Ldet.rows - 1; ix++) { + for (int jx = 1; jx < evolution_[i].Ldet.cols - 1; jx++) { + is_extremum = false; + is_repeated = false; + is_out = false; + value = *(evolution_[i].Ldet.ptr(ix)+jx); + + // Filter the points with the detector threshold + if (value > options_.dthreshold && value >= options_.min_dthreshold && + value > *(evolution_[i].Ldet.ptr(ix)+jx - 1) && + value > *(evolution_[i].Ldet.ptr(ix)+jx + 1) && + value > *(evolution_[i].Ldet.ptr(ix - 1) + jx - 1) && + value > *(evolution_[i].Ldet.ptr(ix - 1) + jx) && + value > *(evolution_[i].Ldet.ptr(ix - 1) + jx + 1) && + value > *(evolution_[i].Ldet.ptr(ix + 1) + jx - 1) && + value > *(evolution_[i].Ldet.ptr(ix + 1) + jx) && + value > *(evolution_[i].Ldet.ptr(ix + 1) + jx + 1)) { + + is_extremum = true; + point.response = fabs(value); + point.size = evolution_[i].esigma*options_.derivative_factor; + point.octave = (int)evolution_[i].octave; + point.class_id = (int)i; + ratio = pow(2.f, point.octave); + sigma_size_ = fRound(point.size / ratio); + point.pt.x = static_cast(jx); + point.pt.y = static_cast(ix); + + // Compare response with the same and lower scale + for (size_t ik = 0; ik < kpts_aux.size(); ik++) { + + if ((point.class_id - 1) == kpts_aux[ik].class_id || + point.class_id == kpts_aux[ik].class_id) { + dist = sqrt(pow(point.pt.x*ratio - kpts_aux[ik].pt.x, 2) + pow(point.pt.y*ratio - kpts_aux[ik].pt.y, 2)); + if (dist <= point.size) { + if (point.response > kpts_aux[ik].response) { + id_repeated = (int)ik; + is_repeated = true; + } + else { + is_extremum = false; + } + break; + } + } + } + + // Check out of bounds + if (is_extremum == true) { + + // Check that the point is under the image limits for the descriptor computation + left_x = fRound(point.pt.x - smax*sigma_size_) - 1; + right_x = fRound(point.pt.x + smax*sigma_size_) + 1; + up_y = fRound(point.pt.y - smax*sigma_size_) - 1; + down_y = fRound(point.pt.y + smax*sigma_size_) + 1; + + if (left_x < 0 || right_x >= evolution_[i].Ldet.cols || + up_y < 0 || down_y >= evolution_[i].Ldet.rows) { + is_out = true; + } + + if (is_out == false) { + if (is_repeated == false) { + point.pt.x *= ratio; + point.pt.y *= ratio; + kpts_aux.push_back(point); + npoints++; + } + else { + point.pt.x *= ratio; + point.pt.y *= ratio; + kpts_aux[id_repeated] = point; + } + } // if is_out + } //if is_extremum + } + } // for jx + } // for ix + } // for i + + // Now filter points with the upper scale level + for (size_t i = 0; i < kpts_aux.size(); i++) { + + is_repeated = false; + const cv::KeyPoint& pt = kpts_aux[i]; + for (size_t j = i + 1; j < kpts_aux.size(); j++) { + + // Compare response with the upper scale + if ((pt.class_id + 1) == kpts_aux[j].class_id) { + dist = sqrt(pow(pt.pt.x - kpts_aux[j].pt.x, 2) + pow(pt.pt.y - kpts_aux[j].pt.y, 2)); + if (dist <= pt.size) { + if (pt.response < kpts_aux[j].response) { + is_repeated = true; + break; + } + } + } + } + + if (is_repeated == false) + kpts.push_back(pt); + } +} + +/* ************************************************************************* */ +/** + * @brief This method performs subpixel refinement of the detected keypoints + * @param kpts Vector of detected keypoints + */ +void AKAZEFeatures::Do_Subpixel_Refinement(std::vector& kpts) +{ + float Dx = 0.0, Dy = 0.0, ratio = 0.0; + float Dxx = 0.0, Dyy = 0.0, Dxy = 0.0; + int x = 0, y = 0; + cv::Mat A = cv::Mat::zeros(2, 2, CV_32F); + cv::Mat b = cv::Mat::zeros(2, 1, CV_32F); + cv::Mat dst = cv::Mat::zeros(2, 1, CV_32F); + + for (size_t i = 0; i < kpts.size(); i++) { + ratio = pow(2.f, kpts[i].octave); + x = fRound(kpts[i].pt.x / ratio); + y = fRound(kpts[i].pt.y / ratio); + + // Compute the gradient + Dx = (0.5f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x + 1) + - *(evolution_[kpts[i].class_id].Ldet.ptr(y)+x - 1)); + Dy = (0.5f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x) + - *(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x)); + + // Compute the Hessian + Dxx = (*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x + 1) + + *(evolution_[kpts[i].class_id].Ldet.ptr(y)+x - 1) + - 2.0f*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x))); + + Dyy = (*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x) + + *(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x) + - 2.0f*(*(evolution_[kpts[i].class_id].Ldet.ptr(y)+x))); + + Dxy = (0.25f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x + 1) + + (*(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x - 1))) + - (0.25f)*(*(evolution_[kpts[i].class_id].Ldet.ptr(y - 1) + x + 1) + + (*(evolution_[kpts[i].class_id].Ldet.ptr(y + 1) + x - 1))); + + // Solve the linear system + *(A.ptr(0)) = Dxx; + *(A.ptr(1) + 1) = Dyy; + *(A.ptr(0) + 1) = *(A.ptr(1)) = Dxy; + *(b.ptr(0)) = -Dx; + *(b.ptr(1)) = -Dy; + + cv::solve(A, b, dst, DECOMP_LU); + + if (fabs(*(dst.ptr(0))) <= 1.0f && fabs(*(dst.ptr(1))) <= 1.0f) { + kpts[i].pt.x = x + (*(dst.ptr(0))); + kpts[i].pt.y = y + (*(dst.ptr(1))); + kpts[i].pt.x *= powf(2.f, (float)evolution_[kpts[i].class_id].octave); + kpts[i].pt.y *= powf(2.f, (float)evolution_[kpts[i].class_id].octave); + kpts[i].angle = 0.0; + + // In OpenCV the size of a keypoint its the diameter + kpts[i].size *= 2.0f; + } + // Delete the point since its not stable + else { + kpts.erase(kpts.begin() + i); + i--; + } + } +} + +/* ************************************************************************* */ + +class SURF_Descriptor_Upright_64_Invoker : public cv::ParallelLoopBody +{ +public: + SURF_Descriptor_Upright_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + Get_SURF_Descriptor_Upright_64((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_SURF_Descriptor_Upright_64(const cv::KeyPoint& kpt, float* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; +}; + +class SURF_Descriptor_64_Invoker : public cv::ParallelLoopBody +{ +public: + SURF_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + { + } + + void operator()(const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); + Get_SURF_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_SURF_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; +}; + +class MSURF_Upright_Descriptor_64_Invoker : public cv::ParallelLoopBody +{ +public: + MSURF_Upright_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + { + } + + void operator()(const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + Get_MSURF_Upright_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_MSURF_Upright_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; +}; + +class MSURF_Descriptor_64_Invoker : public cv::ParallelLoopBody +{ +public: + MSURF_Descriptor_64_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); + Get_MSURF_Descriptor_64((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_MSURF_Descriptor_64(const cv::KeyPoint& kpt, float* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; +}; + +class Upright_MLDB_Full_Descriptor_Invoker : public cv::ParallelLoopBody +{ +public: + Upright_MLDB_Full_Descriptor_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution, AKAZEOptions& options) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + , options_(&options) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + Get_Upright_MLDB_Full_Descriptor((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_Upright_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; + AKAZEOptions* options_; +}; + +class Upright_MLDB_Descriptor_Subset_Invoker : public cv::ParallelLoopBody +{ +public: + Upright_MLDB_Descriptor_Subset_Invoker(std::vector& kpts, + cv::Mat& desc, + std::vector& evolution, + AKAZEOptions& options, + cv::Mat descriptorSamples, + cv::Mat descriptorBits) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + , options_(&options) + , descriptorSamples_(descriptorSamples) + , descriptorBits_(descriptorBits) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + Get_Upright_MLDB_Descriptor_Subset((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_Upright_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; + AKAZEOptions* options_; + + cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. + cv::Mat descriptorBits_; +}; + +class MLDB_Full_Descriptor_Invoker : public cv::ParallelLoopBody +{ +public: + MLDB_Full_Descriptor_Invoker(std::vector& kpts, cv::Mat& desc, std::vector& evolution, AKAZEOptions& options) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + , options_(&options) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); + Get_MLDB_Full_Descriptor((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; + AKAZEOptions* options_; +}; + +class MLDB_Descriptor_Subset_Invoker : public cv::ParallelLoopBody +{ +public: + MLDB_Descriptor_Subset_Invoker(std::vector& kpts, + cv::Mat& desc, + std::vector& evolution, + AKAZEOptions& options, + cv::Mat descriptorSamples, + cv::Mat descriptorBits) + : keypoints_(&kpts) + , descriptors_(&desc) + , evolution_(&evolution) + , options_(&options) + , descriptorSamples_(descriptorSamples) + , descriptorBits_(descriptorBits) + { + } + + void operator() (const Range& range) const + { + for (int i = range.start; i < range.end; i++) + { + AKAZEFeatures::Compute_Main_Orientation((*keypoints_)[i], *evolution_); + Get_MLDB_Descriptor_Subset((*keypoints_)[i], descriptors_->ptr(i)); + } + } + + void Get_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char* desc) const; + +private: + std::vector* keypoints_; + cv::Mat* descriptors_; + std::vector* evolution_; + AKAZEOptions* options_; + + cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. + cv::Mat descriptorBits_; +}; + +/** + * @brief This method computes the set of descriptors through the nonlinear scale space + * @param kpts Vector of detected keypoints + * @param desc Matrix to store the descriptors + */ +void AKAZEFeatures::Compute_Descriptors(std::vector& kpts, cv::Mat& desc) +{ + for(size_t i = 0; i < kpts.size(); i++) + { + CV_Assert(0 <= kpts[i].class_id && kpts[i].class_id < static_cast(evolution_.size())); + } + + // Allocate memory for the matrix with the descriptors + if (options_.descriptor < cv::DESCRIPTOR_MLDB_UPRIGHT) { + desc = cv::Mat::zeros((int)kpts.size(), 64, CV_32FC1); + } + else { + // We use the full length binary descriptor -> 486 bits + if (options_.descriptor_size == 0) { + int t = (6 + 36 + 120)*options_.descriptor_channels; + desc = cv::Mat::zeros((int)kpts.size(), (int)ceil(t / 8.), CV_8UC1); + } + else { + // We use the random bit selection length binary descriptor + desc = cv::Mat::zeros((int)kpts.size(), (int)ceil(options_.descriptor_size / 8.), CV_8UC1); + } + } + + switch (options_.descriptor) + { + case cv::DESCRIPTOR_KAZE_UPRIGHT: // Upright descriptors, not invariant to rotation + { + cv::parallel_for_(cv::Range(0, (int)kpts.size()), MSURF_Upright_Descriptor_64_Invoker(kpts, desc, evolution_)); + } + break; + case cv::DESCRIPTOR_KAZE: + { + cv::parallel_for_(cv::Range(0, (int)kpts.size()), MSURF_Descriptor_64_Invoker(kpts, desc, evolution_)); + } + break; + case cv::DESCRIPTOR_MLDB_UPRIGHT: // Upright descriptors, not invariant to rotation + { + if (options_.descriptor_size == 0) + cv::parallel_for_(cv::Range(0, (int)kpts.size()), Upright_MLDB_Full_Descriptor_Invoker(kpts, desc, evolution_, options_)); + else + cv::parallel_for_(cv::Range(0, (int)kpts.size()), Upright_MLDB_Descriptor_Subset_Invoker(kpts, desc, evolution_, options_, descriptorSamples_, descriptorBits_)); + } + break; + case cv::DESCRIPTOR_MLDB: + { + if (options_.descriptor_size == 0) + cv::parallel_for_(cv::Range(0, (int)kpts.size()), MLDB_Full_Descriptor_Invoker(kpts, desc, evolution_, options_)); + else + cv::parallel_for_(cv::Range(0, (int)kpts.size()), MLDB_Descriptor_Subset_Invoker(kpts, desc, evolution_, options_, descriptorSamples_, descriptorBits_)); + } + break; + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the main orientation for a given keypoint + * @param kpt Input keypoint + * @note The orientation is computed using a similar approach as described in the + * original SURF method. See Bay et al., Speeded Up Robust Features, ECCV 2006 + */ +void AKAZEFeatures::Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector& evolution_) { + + int ix = 0, iy = 0, idx = 0, s = 0, level = 0; + float xf = 0.0, yf = 0.0, gweight = 0.0, ratio = 0.0; + std::vector resX(109), resY(109), Ang(109); + const int id[] = { 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6 }; + + // Variables for computing the dominant direction + float sumX = 0.0, sumY = 0.0, max = 0.0, ang1 = 0.0, ang2 = 0.0; + + // Get the information from the keypoint + level = kpt.class_id; + ratio = (float)(1 << evolution_[level].octave); + s = fRound(0.5f*kpt.size / ratio); + xf = kpt.pt.x / ratio; + yf = kpt.pt.y / ratio; + + // Calculate derivatives responses for points within radius of 6*scale + for (int i = -6; i <= 6; ++i) { + for (int j = -6; j <= 6; ++j) { + if (i*i + j*j < 36) { + iy = fRound(yf + j*s); + ix = fRound(xf + i*s); + + gweight = gauss25[id[i + 6]][id[j + 6]]; + resX[idx] = gweight*(*(evolution_[level].Lx.ptr(iy)+ix)); + resY[idx] = gweight*(*(evolution_[level].Ly.ptr(iy)+ix)); + + Ang[idx] = getAngle(resX[idx], resY[idx]); + ++idx; + } + } + } + // Loop slides pi/3 window around feature point + for (ang1 = 0; ang1 < (float)(2.0 * CV_PI); ang1 += 0.15f) { + ang2 = (ang1 + (float)(CV_PI / 3.0) >(float)(2.0*CV_PI) ? ang1 - (float)(5.0*CV_PI / 3.0) : ang1 + (float)(CV_PI / 3.0)); + sumX = sumY = 0.f; + + for (size_t k = 0; k < Ang.size(); ++k) { + // Get angle from the x-axis of the sample point + const float & ang = Ang[k]; + + // Determine whether the point is within the window + if (ang1 < ang2 && ang1 < ang && ang < ang2) { + sumX += resX[k]; + sumY += resY[k]; + } + else if (ang2 < ang1 && + ((ang > 0 && ang < ang2) || (ang > ang1 && ang < 2.0f*CV_PI))) { + sumX += resX[k]; + sumY += resY[k]; + } + } + + // if the vector produced from this window is longer than all + // previous vectors then this forms the new dominant direction + if (sumX*sumX + sumY*sumY > max) { + // store largest orientation + max = sumX*sumX + sumY*sumY; + kpt.angle = getAngle(sumX, sumY); + } + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the upright descriptor (not rotation invariant) of + * the provided keypoint + * @param kpt Input keypoint + * @param desc Descriptor vector + * @note Rectangular grid of 24 s x 24 s. Descriptor Length 64. The descriptor is inspired + * from Agrawal et al., CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching, + * ECCV 2008 + */ +void MSURF_Upright_Descriptor_64_Invoker::Get_MSURF_Upright_Descriptor_64(const cv::KeyPoint& kpt, float *desc) const { + + float dx = 0.0, dy = 0.0, mdx = 0.0, mdy = 0.0, gauss_s1 = 0.0, gauss_s2 = 0.0; + float rx = 0.0, ry = 0.0, len = 0.0, xf = 0.0, yf = 0.0, ys = 0.0, xs = 0.0; + float sample_x = 0.0, sample_y = 0.0; + int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; + int x2 = 0, y2 = 0, kx = 0, ky = 0, i = 0, j = 0, dcount = 0; + float fx = 0.0, fy = 0.0, ratio = 0.0, res1 = 0.0, res2 = 0.0, res3 = 0.0, res4 = 0.0; + int scale = 0, dsize = 0, level = 0; + + // Subregion centers for the 4x4 gaussian weighting + float cx = -0.5f, cy = 0.5f; + + const std::vector& evolution = *evolution_; + + // Set the descriptor size and the sample and pattern sizes + dsize = 64; + sample_step = 5; + pattern_size = 12; + + // Get the information from the keypoint + ratio = (float)(1 << kpt.octave); + scale = fRound(0.5f*kpt.size / ratio); + level = kpt.class_id; + yf = kpt.pt.y / ratio; + xf = kpt.pt.x / ratio; + + i = -8; + + // Calculate descriptor for this interest point + // Area of size 24 s x 24 s + while (i < pattern_size) { + j = -8; + i = i - 4; + + cx += 1.0f; + cy = -0.5f; + + while (j < pattern_size) { + dx = dy = mdx = mdy = 0.0; + cy += 1.0f; + j = j - 4; + + ky = i + sample_step; + kx = j + sample_step; + + ys = yf + (ky*scale); + xs = xf + (kx*scale); + + for (int k = i; k < i + 9; k++) { + for (int l = j; l < j + 9; l++) { + sample_y = k*scale + yf; + sample_x = l*scale + xf; + + //Get the gaussian weighted x and y responses + gauss_s1 = gaussian(xs - sample_x, ys - sample_y, 2.50f*scale); + + y1 = (int)(sample_y - .5); + x1 = (int)(sample_x - .5); + + y2 = (int)(sample_y + .5); + x2 = (int)(sample_x + .5); + + fx = sample_x - x1; + fy = sample_y - y1; + + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); + rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; + + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); + ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; + + rx = gauss_s1*rx; + ry = gauss_s1*ry; + + // Sum the derivatives to the cumulative descriptor + dx += rx; + dy += ry; + mdx += fabs(rx); + mdy += fabs(ry); + } + } + + // Add the values to the descriptor vector + gauss_s2 = gaussian(cx - 2.0f, cy - 2.0f, 1.5f); + + desc[dcount++] = dx*gauss_s2; + desc[dcount++] = dy*gauss_s2; + desc[dcount++] = mdx*gauss_s2; + desc[dcount++] = mdy*gauss_s2; + + len += (dx*dx + dy*dy + mdx*mdx + mdy*mdy)*gauss_s2*gauss_s2; + + j += 9; + } + + i += 9; + } + + // convert to unit vector + len = sqrt(len); + + for (i = 0; i < dsize; i++) { + desc[i] /= len; + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the descriptor of the provided keypoint given the + * main orientation of the keypoint + * @param kpt Input keypoint + * @param desc Descriptor vector + * @note Rectangular grid of 24 s x 24 s. Descriptor Length 64. The descriptor is inspired + * from Agrawal et al., CenSurE: Center Surround Extremas for Realtime Feature Detection and Matching, + * ECCV 2008 + */ +void MSURF_Descriptor_64_Invoker::Get_MSURF_Descriptor_64(const cv::KeyPoint& kpt, float *desc) const { + + float dx = 0.0, dy = 0.0, mdx = 0.0, mdy = 0.0, gauss_s1 = 0.0, gauss_s2 = 0.0; + float rx = 0.0, ry = 0.0, rrx = 0.0, rry = 0.0, len = 0.0, xf = 0.0, yf = 0.0, ys = 0.0, xs = 0.0; + float sample_x = 0.0, sample_y = 0.0, co = 0.0, si = 0.0, angle = 0.0; + float fx = 0.0, fy = 0.0, ratio = 0.0, res1 = 0.0, res2 = 0.0, res3 = 0.0, res4 = 0.0; + int x1 = 0, y1 = 0, x2 = 0, y2 = 0, sample_step = 0, pattern_size = 0; + int kx = 0, ky = 0, i = 0, j = 0, dcount = 0; + int scale = 0, dsize = 0, level = 0; + + // Subregion centers for the 4x4 gaussian weighting + float cx = -0.5f, cy = 0.5f; + + const std::vector& evolution = *evolution_; + + // Set the descriptor size and the sample and pattern sizes + dsize = 64; + sample_step = 5; + pattern_size = 12; + + // Get the information from the keypoint + ratio = (float)(1 << kpt.octave); + scale = fRound(0.5f*kpt.size / ratio); + angle = kpt.angle; + level = kpt.class_id; + yf = kpt.pt.y / ratio; + xf = kpt.pt.x / ratio; + co = cos(angle); + si = sin(angle); + + i = -8; + + // Calculate descriptor for this interest point + // Area of size 24 s x 24 s + while (i < pattern_size) { + j = -8; + i = i - 4; + + cx += 1.0f; + cy = -0.5f; + + while (j < pattern_size) { + dx = dy = mdx = mdy = 0.0; + cy += 1.0f; + j = j - 4; + + ky = i + sample_step; + kx = j + sample_step; + + xs = xf + (-kx*scale*si + ky*scale*co); + ys = yf + (kx*scale*co + ky*scale*si); + + for (int k = i; k < i + 9; ++k) { + for (int l = j; l < j + 9; ++l) { + // Get coords of sample point on the rotated axis + sample_y = yf + (l*scale*co + k*scale*si); + sample_x = xf + (-l*scale*si + k*scale*co); + + // Get the gaussian weighted x and y responses + gauss_s1 = gaussian(xs - sample_x, ys - sample_y, 2.5f*scale); + + y1 = fRound(sample_y - 0.5f); + x1 = fRound(sample_x - 0.5f); + + y2 = fRound(sample_y + 0.5f); + x2 = fRound(sample_x + 0.5f); + + fx = sample_x - x1; + fy = sample_y - y1; + + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); + rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; + + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); + ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; + + // Get the x and y derivatives on the rotated axis + rry = gauss_s1*(rx*co + ry*si); + rrx = gauss_s1*(-rx*si + ry*co); + + // Sum the derivatives to the cumulative descriptor + dx += rrx; + dy += rry; + mdx += fabs(rrx); + mdy += fabs(rry); + } + } + + // Add the values to the descriptor vector + gauss_s2 = gaussian(cx - 2.0f, cy - 2.0f, 1.5f); + desc[dcount++] = dx*gauss_s2; + desc[dcount++] = dy*gauss_s2; + desc[dcount++] = mdx*gauss_s2; + desc[dcount++] = mdy*gauss_s2; + + len += (dx*dx + dy*dy + mdx*mdx + mdy*mdy)*gauss_s2*gauss_s2; + + j += 9; + } + + i += 9; + } + + // convert to unit vector + len = sqrt(len); + + for (i = 0; i < dsize; i++) { + desc[i] /= len; + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the rupright descriptor (not rotation invariant) of + * the provided keypoint + * @param kpt Input keypoint + * @param desc Descriptor vector + */ +void Upright_MLDB_Full_Descriptor_Invoker::Get_Upright_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char *desc) const { + + float di = 0.0, dx = 0.0, dy = 0.0; + float ri = 0.0, rx = 0.0, ry = 0.0, xf = 0.0, yf = 0.0; + float sample_x = 0.0, sample_y = 0.0, ratio = 0.0; + int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; + int level = 0, nsamples = 0, scale = 0; + int dcount1 = 0, dcount2 = 0; + + const AKAZEOptions & options = *options_; + const std::vector& evolution = *evolution_; + + // Matrices for the M-LDB descriptor + cv::Mat values_1 = cv::Mat::zeros(4, options.descriptor_channels, CV_32FC1); + cv::Mat values_2 = cv::Mat::zeros(9, options.descriptor_channels, CV_32FC1); + cv::Mat values_3 = cv::Mat::zeros(16, options.descriptor_channels, CV_32FC1); + + // Get the information from the keypoint + ratio = (float)(1 << kpt.octave); + scale = fRound(0.5f*kpt.size / ratio); + level = kpt.class_id; + yf = kpt.pt.y / ratio; + xf = kpt.pt.x / ratio; + + // First 2x2 grid + pattern_size = options_->descriptor_pattern_size; + sample_step = pattern_size; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + di = dx = dy = 0.0; + nsamples = 0; + + for (int k = i; k < i + sample_step; k++) { + for (int l = j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + l*scale; + sample_x = xf + k*scale; + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + di += ri; + dx += rx; + dy += ry; + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_1.ptr(dcount2)) = di; + *(values_1.ptr(dcount2)+1) = dx; + *(values_1.ptr(dcount2)+2) = dy; + dcount2++; + } + } + + // Do binary comparison first level + for (int i = 0; i < 4; i++) { + for (int j = i + 1; j < 4; j++) { + if (*(values_1.ptr(i)) > *(values_1.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_1.ptr(i)+1) > *(values_1.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_1.ptr(i)+2) > *(values_1.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + + // Second 3x3 grid + sample_step = static_cast(ceil(pattern_size*2. / 3.)); + dcount2 = 0; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + di = dx = dy = 0.0; + nsamples = 0; + + for (int k = i; k < i + sample_step; k++) { + for (int l = j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + l*scale; + sample_x = xf + k*scale; + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + di += ri; + dx += rx; + dy += ry; + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_2.ptr(dcount2)) = di; + *(values_2.ptr(dcount2)+1) = dx; + *(values_2.ptr(dcount2)+2) = dy; + dcount2++; + } + } + + //Do binary comparison second level + dcount2 = 0; + for (int i = 0; i < 9; i++) { + for (int j = i + 1; j < 9; j++) { + if (*(values_2.ptr(i)) > *(values_2.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_2.ptr(i)+1) > *(values_2.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_2.ptr(i)+2) > *(values_2.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + + // Third 4x4 grid + sample_step = pattern_size / 2; + dcount2 = 0; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + di = dx = dy = 0.0; + nsamples = 0; + + for (int k = i; k < i + sample_step; k++) { + for (int l = j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + l*scale; + sample_x = xf + k*scale; + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + di += ri; + dx += rx; + dy += ry; + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_3.ptr(dcount2)) = di; + *(values_3.ptr(dcount2)+1) = dx; + *(values_3.ptr(dcount2)+2) = dy; + dcount2++; + } + } + + //Do binary comparison third level + dcount2 = 0; + for (int i = 0; i < 16; i++) { + for (int j = i + 1; j < 16; j++) { + if (*(values_3.ptr(i)) > *(values_3.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_3.ptr(i)+1) > *(values_3.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + + if (*(values_3.ptr(i)+2) > *(values_3.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the descriptor of the provided keypoint given the + * main orientation of the keypoint + * @param kpt Input keypoint + * @param desc Descriptor vector + */ +void MLDB_Full_Descriptor_Invoker::Get_MLDB_Full_Descriptor(const cv::KeyPoint& kpt, unsigned char *desc) const { + + float di = 0.0, dx = 0.0, dy = 0.0, ratio = 0.0; + float ri = 0.0, rx = 0.0, ry = 0.0, rrx = 0.0, rry = 0.0, xf = 0.0, yf = 0.0; + float sample_x = 0.0, sample_y = 0.0, co = 0.0, si = 0.0, angle = 0.0; + int x1 = 0, y1 = 0, sample_step = 0, pattern_size = 0; + int level = 0, nsamples = 0, scale = 0; + int dcount1 = 0, dcount2 = 0; + + const AKAZEOptions & options = *options_; + const std::vector& evolution = *evolution_; + + // Matrices for the M-LDB descriptor + cv::Mat values_1 = cv::Mat::zeros(4, options.descriptor_channels, CV_32FC1); + cv::Mat values_2 = cv::Mat::zeros(9, options.descriptor_channels, CV_32FC1); + cv::Mat values_3 = cv::Mat::zeros(16, options.descriptor_channels, CV_32FC1); + + // Get the information from the keypoint + ratio = (float)(1 << kpt.octave); + scale = fRound(0.5f*kpt.size / ratio); + angle = kpt.angle; + level = kpt.class_id; + yf = kpt.pt.y / ratio; + xf = kpt.pt.x / ratio; + co = cos(angle); + si = sin(angle); + + // First 2x2 grid + pattern_size = options.descriptor_pattern_size; + sample_step = pattern_size; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + + di = dx = dy = 0.0; + nsamples = 0; + + for (float k = (float)i; k < i + sample_step; k++) { + for (float l = (float)j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + (l*scale*co + k*scale*si); + sample_x = xf + (-l*scale*si + k*scale*co); + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + di += ri; + + if (options.descriptor_channels == 2) { + dx += sqrtf(rx*rx + ry*ry); + } + else if (options.descriptor_channels == 3) { + // Get the x and y derivatives on the rotated axis + rry = rx*co + ry*si; + rrx = -rx*si + ry*co; + dx += rrx; + dy += rry; + } + + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_1.ptr(dcount2)) = di; + if (options.descriptor_channels > 1) { + *(values_1.ptr(dcount2)+1) = dx; + } + + if (options.descriptor_channels > 2) { + *(values_1.ptr(dcount2)+2) = dy; + } + + dcount2++; + } + } + + // Do binary comparison first level + for (int i = 0; i < 4; i++) { + for (int j = i + 1; j < 4; j++) { + if (*(values_1.ptr(i)) > *(values_1.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + + if (options.descriptor_channels > 1) { + for (int i = 0; i < 4; i++) { + for (int j = i + 1; j < 4; j++) { + if (*(values_1.ptr(i)+1) > *(values_1.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + + dcount1++; + } + } + } + + if (options.descriptor_channels > 2) { + for (int i = 0; i < 4; i++) { + for (int j = i + 1; j < 4; j++) { + if (*(values_1.ptr(i)+2) > *(values_1.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + } + + // Second 3x3 grid + sample_step = static_cast(ceil(pattern_size*2. / 3.)); + dcount2 = 0; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + + di = dx = dy = 0.0; + nsamples = 0; + + for (int k = i; k < i + sample_step; k++) { + for (int l = j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + (l*scale*co + k*scale*si); + sample_x = xf + (-l*scale*si + k*scale*co); + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + di += ri; + + if (options.descriptor_channels == 2) { + dx += sqrtf(rx*rx + ry*ry); + } + else if (options.descriptor_channels == 3) { + // Get the x and y derivatives on the rotated axis + rry = rx*co + ry*si; + rrx = -rx*si + ry*co; + dx += rrx; + dy += rry; + } + + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_2.ptr(dcount2)) = di; + if (options.descriptor_channels > 1) { + *(values_2.ptr(dcount2)+1) = dx; + } + + if (options.descriptor_channels > 2) { + *(values_2.ptr(dcount2)+2) = dy; + } + + dcount2++; + } + } + + // Do binary comparison second level + for (int i = 0; i < 9; i++) { + for (int j = i + 1; j < 9; j++) { + if (*(values_2.ptr(i)) > *(values_2.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + + if (options.descriptor_channels > 1) { + for (int i = 0; i < 9; i++) { + for (int j = i + 1; j < 9; j++) { + if (*(values_2.ptr(i)+1) > *(values_2.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + } + + if (options.descriptor_channels > 2) { + for (int i = 0; i < 9; i++) { + for (int j = i + 1; j < 9; j++) { + if (*(values_2.ptr(i)+2) > *(values_2.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + } + + // Third 4x4 grid + sample_step = pattern_size / 2; + dcount2 = 0; + + for (int i = -pattern_size; i < pattern_size; i += sample_step) { + for (int j = -pattern_size; j < pattern_size; j += sample_step) { + di = dx = dy = 0.0; + nsamples = 0; + + for (int k = i; k < i + sample_step; k++) { + for (int l = j; l < j + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + (l*scale*co + k*scale*si); + sample_x = xf + (-l*scale*si + k*scale*co); + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + ri = *(evolution[level].Lt.ptr(y1)+x1); + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + di += ri; + + if (options.descriptor_channels == 2) { + dx += sqrtf(rx*rx + ry*ry); + } + else if (options.descriptor_channels == 3) { + // Get the x and y derivatives on the rotated axis + rry = rx*co + ry*si; + rrx = -rx*si + ry*co; + dx += rrx; + dy += rry; + } + + nsamples++; + } + } + + di /= nsamples; + dx /= nsamples; + dy /= nsamples; + + *(values_3.ptr(dcount2)) = di; + if (options.descriptor_channels > 1) + *(values_3.ptr(dcount2)+1) = dx; + + if (options.descriptor_channels > 2) + *(values_3.ptr(dcount2)+2) = dy; + + dcount2++; + } + } + + // Do binary comparison third level + for (int i = 0; i < 16; i++) { + for (int j = i + 1; j < 16; j++) { + if (*(values_3.ptr(i)) > *(values_3.ptr(j))) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + + if (options.descriptor_channels > 1) { + for (int i = 0; i < 16; i++) { + for (int j = i + 1; j < 16; j++) { + if (*(values_3.ptr(i)+1) > *(values_3.ptr(j)+1)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + } + + if (options.descriptor_channels > 2) { + for (int i = 0; i < 16; i++) { + for (int j = i + 1; j < 16; j++) { + if (*(values_3.ptr(i)+2) > *(values_3.ptr(j)+2)) { + desc[dcount1 / 8] |= (1 << (dcount1 % 8)); + } + dcount1++; + } + } + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the M-LDB descriptor of the provided keypoint given the + * main orientation of the keypoint. The descriptor is computed based on a subset of + * the bits of the whole descriptor + * @param kpt Input keypoint + * @param desc Descriptor vector + */ +void MLDB_Descriptor_Subset_Invoker::Get_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char *desc) const { + + float di = 0.f, dx = 0.f, dy = 0.f; + float rx = 0.f, ry = 0.f; + float sample_x = 0.f, sample_y = 0.f; + int x1 = 0, y1 = 0; + + const AKAZEOptions & options = *options_; + const std::vector& evolution = *evolution_; + + // Get the information from the keypoint + float ratio = (float)(1 << kpt.octave); + int scale = fRound(0.5f*kpt.size / ratio); + float angle = kpt.angle; + int level = kpt.class_id; + float yf = kpt.pt.y / ratio; + float xf = kpt.pt.x / ratio; + float co = cos(angle); + float si = sin(angle); + + // Allocate memory for the matrix of values + cv::Mat values = cv::Mat_::zeros((4 + 9 + 16)*options.descriptor_channels, 1); + + // Sample everything, but only do the comparisons + vector steps(3); + steps.at(0) = options.descriptor_pattern_size; + steps.at(1) = (int)ceil(2.f*options.descriptor_pattern_size / 3.f); + steps.at(2) = options.descriptor_pattern_size / 2; + + for (int i = 0; i < descriptorSamples_.rows; i++) { + const int *coords = descriptorSamples_.ptr(i); + int sample_step = steps.at(coords[0]); + di = 0.0f; + dx = 0.0f; + dy = 0.0f; + + for (int k = coords[1]; k < coords[1] + sample_step; k++) { + for (int l = coords[2]; l < coords[2] + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + (l*scale*co + k*scale*si); + sample_x = xf + (-l*scale*si + k*scale*co); + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + + di += *(evolution[level].Lt.ptr(y1)+x1); + + if (options.descriptor_channels > 1) { + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + if (options.descriptor_channels == 2) { + dx += sqrtf(rx*rx + ry*ry); + } + else if (options.descriptor_channels == 3) { + // Get the x and y derivatives on the rotated axis + dx += rx*co + ry*si; + dy += -rx*si + ry*co; + } + } + } + } + + *(values.ptr(options.descriptor_channels*i)) = di; + + if (options.descriptor_channels == 2) { + *(values.ptr(options.descriptor_channels*i + 1)) = dx; + } + else if (options.descriptor_channels == 3) { + *(values.ptr(options.descriptor_channels*i + 1)) = dx; + *(values.ptr(options.descriptor_channels*i + 2)) = dy; + } + } + + // Do the comparisons + const float *vals = values.ptr(0); + const int *comps = descriptorBits_.ptr(0); + + for (int i = 0; i vals[comps[2 * i + 1]]) { + desc[i / 8] |= (1 << (i % 8)); + } + } +} + +/* ************************************************************************* */ +/** + * @brief This method computes the upright (not rotation invariant) M-LDB descriptor + * of the provided keypoint given the main orientation of the keypoint. + * The descriptor is computed based on a subset of the bits of the whole descriptor + * @param kpt Input keypoint + * @param desc Descriptor vector + */ +void Upright_MLDB_Descriptor_Subset_Invoker::Get_Upright_MLDB_Descriptor_Subset(const cv::KeyPoint& kpt, unsigned char *desc) const { + + float di = 0.0f, dx = 0.0f, dy = 0.0f; + float rx = 0.0f, ry = 0.0f; + float sample_x = 0.0f, sample_y = 0.0f; + int x1 = 0, y1 = 0; + + const AKAZEOptions & options = *options_; + const std::vector& evolution = *evolution_; + + // Get the information from the keypoint + float ratio = (float)(1 << kpt.octave); + int scale = fRound(0.5f*kpt.size / ratio); + int level = kpt.class_id; + float yf = kpt.pt.y / ratio; + float xf = kpt.pt.x / ratio; + + // Allocate memory for the matrix of values + Mat values = cv::Mat_::zeros((4 + 9 + 16)*options.descriptor_channels, 1); + + vector steps(3); + steps.at(0) = options.descriptor_pattern_size; + steps.at(1) = static_cast(ceil(2.f*options.descriptor_pattern_size / 3.f)); + steps.at(2) = options.descriptor_pattern_size / 2; + + for (int i = 0; i < descriptorSamples_.rows; i++) { + const int *coords = descriptorSamples_.ptr(i); + int sample_step = steps.at(coords[0]); + di = 0.0f, dx = 0.0f, dy = 0.0f; + + for (int k = coords[1]; k < coords[1] + sample_step; k++) { + for (int l = coords[2]; l < coords[2] + sample_step; l++) { + + // Get the coordinates of the sample point + sample_y = yf + l*scale; + sample_x = xf + k*scale; + + y1 = fRound(sample_y); + x1 = fRound(sample_x); + di += *(evolution[level].Lt.ptr(y1)+x1); + + if (options.descriptor_channels > 1) { + rx = *(evolution[level].Lx.ptr(y1)+x1); + ry = *(evolution[level].Ly.ptr(y1)+x1); + + if (options.descriptor_channels == 2) { + dx += sqrtf(rx*rx + ry*ry); + } + else if (options.descriptor_channels == 3) { + dx += rx; + dy += ry; + } + } + } + } + + *(values.ptr(options.descriptor_channels*i)) = di; + + if (options.descriptor_channels == 2) { + *(values.ptr(options.descriptor_channels*i + 1)) = dx; + } + else if (options.descriptor_channels == 3) { + *(values.ptr(options.descriptor_channels*i + 1)) = dx; + *(values.ptr(options.descriptor_channels*i + 2)) = dy; + } + } + + // Do the comparisons + const float *vals = values.ptr(0); + const int *comps = descriptorBits_.ptr(0); + + for (int i = 0; i vals[comps[2 * i + 1]]) { + desc[i / 8] |= (1 << (i % 8)); + } + } +} + +/* ************************************************************************* */ +/** + * @brief This function computes a (quasi-random) list of bits to be taken + * from the full descriptor. To speed the extraction, the function creates + * a list of the samples that are involved in generating at least a bit (sampleList) + * and a list of the comparisons between those samples (comparisons) + * @param sampleList + * @param comparisons The matrix with the binary comparisons + * @param nbits The number of bits of the descriptor + * @param pattern_size The pattern size for the binary descriptor + * @param nchannels Number of channels to consider in the descriptor (1-3) + * @note The function keeps the 18 bits (3-channels by 6 comparisons) of the + * coarser grid, since it provides the most robust estimations + */ +void generateDescriptorSubsample(cv::Mat& sampleList, cv::Mat& comparisons, int nbits, + int pattern_size, int nchannels) { + + int ssz = 0; + for (int i = 0; i < 3; i++) { + int gz = (i + 2)*(i + 2); + ssz += gz*(gz - 1) / 2; + } + ssz *= nchannels; + + CV_Assert(nbits <= ssz); // Descriptor size can't be bigger than full descriptor + + // Since the full descriptor is usually under 10k elements, we pick + // the selection from the full matrix. We take as many samples per + // pick as the number of channels. For every pick, we + // take the two samples involved and put them in the sampling list + + Mat_ fullM(ssz / nchannels, 5); + for (int i = 0, c = 0; i < 3; i++) { + int gdiv = i + 2; //grid divisions, per row + int gsz = gdiv*gdiv; + int psz = (int)ceil(2.f*pattern_size / (float)gdiv); + + for (int j = 0; j < gsz; j++) { + for (int k = j + 1; k < gsz; k++, c++) { + fullM(c, 0) = i; + fullM(c, 1) = psz*(j % gdiv) - pattern_size; + fullM(c, 2) = psz*(j / gdiv) - pattern_size; + fullM(c, 3) = psz*(k % gdiv) - pattern_size; + fullM(c, 4) = psz*(k / gdiv) - pattern_size; + } + } + } + + srand(1024); + Mat_ comps = Mat_(nchannels * (int)ceil(nbits / (float)nchannels), 2); + comps = 1000; + + // Select some samples. A sample includes all channels + int count = 0; + int npicks = (int)ceil(nbits / (float)nchannels); + Mat_ samples(29, 3); + Mat_ fullcopy = fullM.clone(); + samples = -1; + + for (int i = 0; i < npicks; i++) { + int k = rand() % (fullM.rows - i); + if (i < 6) { + // Force use of the coarser grid values and comparisons + k = i; + } + + bool n = true; + + for (int j = 0; j < count; j++) { + if (samples(j, 0) == fullcopy(k, 0) && samples(j, 1) == fullcopy(k, 1) && samples(j, 2) == fullcopy(k, 2)) { + n = false; + comps(i*nchannels, 0) = nchannels*j; + comps(i*nchannels + 1, 0) = nchannels*j + 1; + comps(i*nchannels + 2, 0) = nchannels*j + 2; + break; + } + } + + if (n) { + samples(count, 0) = fullcopy(k, 0); + samples(count, 1) = fullcopy(k, 1); + samples(count, 2) = fullcopy(k, 2); + comps(i*nchannels, 0) = nchannels*count; + comps(i*nchannels + 1, 0) = nchannels*count + 1; + comps(i*nchannels + 2, 0) = nchannels*count + 2; + count++; + } + + n = true; + for (int j = 0; j < count; j++) { + if (samples(j, 0) == fullcopy(k, 0) && samples(j, 1) == fullcopy(k, 3) && samples(j, 2) == fullcopy(k, 4)) { + n = false; + comps(i*nchannels, 1) = nchannels*j; + comps(i*nchannels + 1, 1) = nchannels*j + 1; + comps(i*nchannels + 2, 1) = nchannels*j + 2; + break; + } + } + + if (n) { + samples(count, 0) = fullcopy(k, 0); + samples(count, 1) = fullcopy(k, 3); + samples(count, 2) = fullcopy(k, 4); + comps(i*nchannels, 1) = nchannels*count; + comps(i*nchannels + 1, 1) = nchannels*count + 1; + comps(i*nchannels + 2, 1) = nchannels*count + 2; + count++; + } + + Mat tmp = fullcopy.row(k); + fullcopy.row(fullcopy.rows - i - 1).copyTo(tmp); + } + + sampleList = samples.rowRange(0, count).clone(); + comparisons = comps.rowRange(0, nbits).clone(); +} diff --git a/modules/features2d/src/kaze/AKAZEFeatures.h b/modules/features2d/src/kaze/AKAZEFeatures.h new file mode 100644 index 0000000000..9119c97f2f --- /dev/null +++ b/modules/features2d/src/kaze/AKAZEFeatures.h @@ -0,0 +1,62 @@ +/** + * @file AKAZE.h + * @brief Main class for detecting and computing binary descriptors in an + * accelerated nonlinear scale space + * @date Mar 27, 2013 + * @author Pablo F. Alcantarilla, Jesus Nuevo + */ + +#ifndef __OPENCV_FEATURES_2D_AKAZE_FEATURES_H__ +#define __OPENCV_FEATURES_2D_AKAZE_FEATURES_H__ + +/* ************************************************************************* */ +// Includes +#include "../precomp.hpp" +#include "AKAZEConfig.h" +#include "TEvolution.h" + +/* ************************************************************************* */ +// AKAZE Class Declaration +class AKAZEFeatures { + +private: + + AKAZEOptions options_; ///< Configuration options for AKAZE + std::vector evolution_; ///< Vector of nonlinear diffusion evolution + + /// FED parameters + int ncycles_; ///< Number of cycles + bool reordering_; ///< Flag for reordering time steps + std::vector > tsteps_; ///< Vector of FED dynamic time steps + std::vector nsteps_; ///< Vector of number of steps per cycle + + /// Matrices for the M-LDB descriptor computation + cv::Mat descriptorSamples_; // List of positions in the grids to sample LDB bits from. + cv::Mat descriptorBits_; + cv::Mat bitMask_; + +public: + + /// Constructor with input arguments + AKAZEFeatures(const AKAZEOptions& options); + + /// Scale Space methods + void Allocate_Memory_Evolution(); + int Create_Nonlinear_Scale_Space(const cv::Mat& img); + void Feature_Detection(std::vector& kpts); + void Compute_Determinant_Hessian_Response(void); + void Compute_Multiscale_Derivatives(void); + void Find_Scale_Space_Extrema(std::vector& kpts); + void Do_Subpixel_Refinement(std::vector& kpts); + + /// Feature description methods + void Compute_Descriptors(std::vector& kpts, cv::Mat& desc); + static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector& evolution_); +}; + +/* ************************************************************************* */ +/// Inline functions +void generateDescriptorSubsample(cv::Mat& sampleList, cv::Mat& comparisons, + int nbits, int pattern_size, int nchannels); + +#endif diff --git a/modules/features2d/src/kaze/KAZEConfig.h b/modules/features2d/src/kaze/KAZEConfig.h index 988e247372..546ee36579 100644 --- a/modules/features2d/src/kaze/KAZEConfig.h +++ b/modules/features2d/src/kaze/KAZEConfig.h @@ -5,24 +5,19 @@ * @author Pablo F. Alcantarilla */ -#pragma once +#ifndef __OPENCV_FEATURES_2D_AKAZE_CONFIG_H__ +#define __OPENCV_FEATURES_2D_AKAZE_CONFIG_H__ // OpenCV Includes -#include "precomp.hpp" +#include "../precomp.hpp" #include //************************************************************************************* struct KAZEOptions { - enum DIFFUSIVITY_TYPE { - PM_G1 = 0, - PM_G2 = 1, - WEICKERT = 2 - }; - KAZEOptions() - : diffusivity(PM_G2) + : diffusivity(cv::DIFF_PM_G2) , soffset(1.60f) , omax(4) @@ -33,20 +28,13 @@ struct KAZEOptions { , dthreshold(0.001f) , kcontrast(0.01f) , kcontrast_percentille(0.7f) - , kcontrast_bins(300) - - , use_fed(true) + , kcontrast_bins(300) , upright(false) , extended(false) - - , use_clipping_normalilzation(false) - , clipping_normalization_ratio(1.6f) - , clipping_normalization_niter(5) { } - DIFFUSIVITY_TYPE diffusivity; - + int diffusivity; float soffset; int omax; int nsublevels; @@ -57,27 +45,8 @@ struct KAZEOptions { float kcontrast; float kcontrast_percentille; int kcontrast_bins; - - bool use_fed; bool upright; bool extended; - - bool use_clipping_normalilzation; - float clipping_normalization_ratio; - int clipping_normalization_niter; }; -struct TEvolution { - cv::Mat Lx, Ly; // First order spatial derivatives - cv::Mat Lxx, Lxy, Lyy; // Second order spatial derivatives - cv::Mat Lflow; // Diffusivity image - cv::Mat Lt; // Evolution image - cv::Mat Lsmooth; // Smoothed image - cv::Mat Lstep; // Evolution step update - cv::Mat Ldet; // Detector response - float etime; // Evolution time - float esigma; // Evolution sigma. For linear diffusion t = sigma^2 / 2 - float octave; // Image octave - float sublevel; // Image sublevel in each octave - int sigma_size; // Integer esigma. For computing the feature detector responses -}; +#endif diff --git a/modules/features2d/src/kaze/KAZEFeatures.cpp b/modules/features2d/src/kaze/KAZEFeatures.cpp index 634f68da80..69e9a4b69f 100644 --- a/modules/features2d/src/kaze/KAZEFeatures.cpp +++ b/modules/features2d/src/kaze/KAZEFeatures.cpp @@ -22,22 +22,21 @@ */ #include "KAZEFeatures.h" +#include "utils.h" // Namespaces using namespace std; using namespace cv; using namespace cv::details::kaze; -//******************************************************************************* -//******************************************************************************* - +/* ************************************************************************* */ /** * @brief KAZE constructor with input options * @param options KAZE configuration options * @note The constructor allocates memory for the nonlinear scale space */ -KAZEFeatures::KAZEFeatures(KAZEOptions& _options) - : options(_options) +KAZEFeatures::KAZEFeatures(KAZEOptions& options) + : options_(options) { ncycles_ = 0; reordering_ = true; @@ -46,70 +45,48 @@ KAZEFeatures::KAZEFeatures(KAZEOptions& _options) Allocate_Memory_Evolution(); } -//******************************************************************************* -//******************************************************************************* - +/* ************************************************************************* */ /** * @brief This method allocates the memory for the nonlinear diffusion evolution */ void KAZEFeatures::Allocate_Memory_Evolution(void) { // Allocate the dimension of the matrices for the evolution - for (int i = 0; i <= options.omax - 1; i++) { - for (int j = 0; j <= options.nsublevels - 1; j++) { + for (int i = 0; i <= options_.omax - 1; i++) { + for (int j = 0; j <= options_.nsublevels - 1; j++) { TEvolution aux; - aux.Lx = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Ly = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lxx = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lxy = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lyy = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lflow = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lt = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lsmooth = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Lstep = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.Ldet = cv::Mat::zeros(options.img_height, options.img_width, CV_32F); - aux.esigma = options.soffset*pow((float)2.0f, (float)(j) / (float)(options.nsublevels)+i); + aux.Lx = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Ly = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Lxx = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Lxy = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Lyy = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Lt = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Lsmooth = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.Ldet = cv::Mat::zeros(options_.img_height, options_.img_width, CV_32F); + aux.esigma = options_.soffset*pow((float)2.0f, (float)(j) / (float)(options_.nsublevels)+i); aux.etime = 0.5f*(aux.esigma*aux.esigma); aux.sigma_size = fRound(aux.esigma); - aux.octave = (float)i; - aux.sublevel = (float)j; + aux.octave = i; + aux.sublevel = j; evolution_.push_back(aux); } } // Allocate memory for the FED number of cycles and time steps - if (options.use_fed) { - for (size_t i = 1; i < evolution_.size(); i++) { - int naux = 0; - vector tau; - float ttime = 0.0; - ttime = evolution_[i].etime - evolution_[i - 1].etime; - naux = fed_tau_by_process_time(ttime, 1, 0.25f, reordering_, tau); - nsteps_.push_back(naux); - tsteps_.push_back(tau); - ncycles_++; - } + for (size_t i = 1; i < evolution_.size(); i++) { + int naux = 0; + vector tau; + float ttime = 0.0; + ttime = evolution_[i].etime - evolution_[i - 1].etime; + naux = fed_tau_by_process_time(ttime, 1, 0.25f, reordering_, tau); + nsteps_.push_back(naux); + tsteps_.push_back(tau); + ncycles_++; } - else { - // Allocate memory for the auxiliary variables that are used in the AOS scheme - Ltx_ = Mat::zeros(options.img_width, options.img_height, CV_32F); // TODO? IS IT A BUG??? - Lty_ = Mat::zeros(options.img_height, options.img_width, CV_32F); - px_ = Mat::zeros(options.img_height, options.img_width, CV_32F); - py_ = Mat::zeros(options.img_height, options.img_width, CV_32F); - ax_ = Mat::zeros(options.img_height, options.img_width, CV_32F); - ay_ = Mat::zeros(options.img_height, options.img_width, CV_32F); - bx_ = Mat::zeros(options.img_height - 1, options.img_width, CV_32F); - by_ = Mat::zeros(options.img_height - 1, options.img_width, CV_32F); - qr_ = Mat::zeros(options.img_height - 1, options.img_width, CV_32F); - qc_ = Mat::zeros(options.img_height, options.img_width - 1, CV_32F); - } - } -//******************************************************************************* -//******************************************************************************* - +/* ************************************************************************* */ /** * @brief This method creates the nonlinear scale space for a given image * @param img Input image for which the nonlinear scale space needs to be created @@ -121,52 +98,47 @@ int KAZEFeatures::Create_Nonlinear_Scale_Space(const cv::Mat &img) // Copy the original image to the first level of the evolution img.copyTo(evolution_[0].Lt); - gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lt, 0, 0, options.soffset); - gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lsmooth, 0, 0, options.sderivatives); + gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lt, 0, 0, options_.soffset); + gaussian_2D_convolution(evolution_[0].Lt, evolution_[0].Lsmooth, 0, 0, options_.sderivatives); // Firstly compute the kcontrast factor - Compute_KContrast(evolution_[0].Lt, options.kcontrast_percentille); + Compute_KContrast(evolution_[0].Lt, options_.kcontrast_percentille); + + // Allocate memory for the flow and step images + cv::Mat Lflow = cv::Mat::zeros(evolution_[0].Lt.rows, evolution_[0].Lt.cols, CV_32F); + cv::Mat Lstep = cv::Mat::zeros(evolution_[0].Lt.rows, evolution_[0].Lt.cols, CV_32F); // Now generate the rest of evolution levels for (size_t i = 1; i < evolution_.size(); i++) { evolution_[i - 1].Lt.copyTo(evolution_[i].Lt); - gaussian_2D_convolution(evolution_[i - 1].Lt, evolution_[i].Lsmooth, 0, 0, options.sderivatives); + gaussian_2D_convolution(evolution_[i - 1].Lt, evolution_[i].Lsmooth, 0, 0, options_.sderivatives); // Compute the Gaussian derivatives Lx and Ly Scharr(evolution_[i].Lsmooth, evolution_[i].Lx, CV_32F, 1, 0, 1, 0, BORDER_DEFAULT); Scharr(evolution_[i].Lsmooth, evolution_[i].Ly, CV_32F, 0, 1, 1, 0, BORDER_DEFAULT); // Compute the conductivity equation - if (options.diffusivity == KAZEOptions::PM_G1) { - pm_g1(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options.kcontrast); + if (options_.diffusivity == cv::DIFF_PM_G1) { + pm_g1(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); } - else if (options.diffusivity == KAZEOptions::PM_G2) { - pm_g2(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options.kcontrast); + else if (options_.diffusivity == cv::DIFF_PM_G2) { + pm_g2(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); } - else if (options.diffusivity == KAZEOptions::WEICKERT) { - weickert_diffusivity(evolution_[i].Lx, evolution_[i].Ly, evolution_[i].Lflow, options.kcontrast); + else if (options_.diffusivity == cv::DIFF_WEICKERT) { + weickert_diffusivity(evolution_[i].Lx, evolution_[i].Ly, Lflow, options_.kcontrast); } // Perform FED n inner steps - if (options.use_fed) { - for (int j = 0; j < nsteps_[i - 1]; j++) { - nld_step_scalar(evolution_[i].Lt, evolution_[i].Lflow, evolution_[i].Lstep, tsteps_[i - 1][j]); - } - } - else { - // Perform the evolution step with AOS - AOS_Step_Scalar(evolution_[i].Lt, evolution_[i - 1].Lt, evolution_[i].Lflow, - evolution_[i].etime - evolution_[i - 1].etime); + for (int j = 0; j < nsteps_[i - 1]; j++) { + nld_step_scalar(evolution_[i].Lt, Lflow, Lstep, tsteps_[i - 1][j]); } } return 0; } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the k contrast factor * @param img Input image @@ -174,38 +146,10 @@ int KAZEFeatures::Create_Nonlinear_Scale_Space(const cv::Mat &img) */ void KAZEFeatures::Compute_KContrast(const cv::Mat &img, const float &kpercentile) { - options.kcontrast = compute_k_percentile(img, kpercentile, options.sderivatives, options.kcontrast_bins, 0, 0); + options_.kcontrast = compute_k_percentile(img, kpercentile, options_.sderivatives, options_.kcontrast_bins, 0, 0); } -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method computes the multiscale derivatives for the nonlinear scale space - */ -void KAZEFeatures::Compute_Multiscale_Derivatives(void) -{ - // TODO: use cv::parallel_for_ - for (size_t i = 0; i < evolution_.size(); i++) - { - // Compute multiscale derivatives for the detector - compute_scharr_derivatives(evolution_[i].Lsmooth, evolution_[i].Lx, 1, 0, evolution_[i].sigma_size); - compute_scharr_derivatives(evolution_[i].Lsmooth, evolution_[i].Ly, 0, 1, evolution_[i].sigma_size); - compute_scharr_derivatives(evolution_[i].Lx, evolution_[i].Lxx, 1, 0, evolution_[i].sigma_size); - compute_scharr_derivatives(evolution_[i].Ly, evolution_[i].Lyy, 0, 1, evolution_[i].sigma_size); - compute_scharr_derivatives(evolution_[i].Lx, evolution_[i].Lxy, 0, 1, evolution_[i].sigma_size); - - evolution_[i].Lx = evolution_[i].Lx*((evolution_[i].sigma_size)); - evolution_[i].Ly = evolution_[i].Ly*((evolution_[i].sigma_size)); - evolution_[i].Lxx = evolution_[i].Lxx*((evolution_[i].sigma_size)*(evolution_[i].sigma_size)); - evolution_[i].Lxy = evolution_[i].Lxy*((evolution_[i].sigma_size)*(evolution_[i].sigma_size)); - evolution_[i].Lyy = evolution_[i].Lyy*((evolution_[i].sigma_size)*(evolution_[i].sigma_size)); - } -} - -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the feature detector response for the nonlinear scale space * @note We use the Hessian determinant as feature detector @@ -219,9 +163,9 @@ void KAZEFeatures::Compute_Detector_Response(void) for (size_t i = 0; i < evolution_.size(); i++) { - for (int ix = 0; ix < options.img_height; ix++) + for (int ix = 0; ix < options_.img_height; ix++) { - for (int jx = 0; jx < options.img_width; jx++) + for (int jx = 0; jx < options_.img_width; jx++) { lxx = *(evolution_[i].Lxx.ptr(ix)+jx); lxy = *(evolution_[i].Lxy.ptr(ix)+jx); @@ -232,9 +176,7 @@ void KAZEFeatures::Compute_Detector_Response(void) } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method selects interesting keypoints through the nonlinear scale space * @param kpts Vector of keypoints @@ -242,27 +184,127 @@ void KAZEFeatures::Compute_Detector_Response(void) void KAZEFeatures::Feature_Detection(std::vector& kpts) { kpts.clear(); - - // Firstly compute the detector response for each pixel and scale level - Compute_Detector_Response(); - - // Find scale space extrema - Determinant_Hessian_Parallel(kpts); - - // Perform some subpixel refinement + Compute_Detector_Response(); + Determinant_Hessian(kpts); Do_Subpixel_Refinement(kpts); } -//************************************************************************************* -//************************************************************************************* +/* ************************************************************************* */ +class MultiscaleDerivativesKAZEInvoker : public cv::ParallelLoopBody +{ +public: + explicit MultiscaleDerivativesKAZEInvoker(std::vector& ev) : evolution_(&ev) + { + } + void operator()(const cv::Range& range) const + { + std::vector& evolution = *evolution_; + for (int i = range.start; i < range.end; i++) + { + compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Lx, 1, 0, evolution[i].sigma_size); + compute_scharr_derivatives(evolution[i].Lsmooth, evolution[i].Ly, 0, 1, evolution[i].sigma_size); + compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxx, 1, 0, evolution[i].sigma_size); + compute_scharr_derivatives(evolution[i].Ly, evolution[i].Lyy, 0, 1, evolution[i].sigma_size); + compute_scharr_derivatives(evolution[i].Lx, evolution[i].Lxy, 0, 1, evolution[i].sigma_size); + + evolution[i].Lx = evolution[i].Lx*((evolution[i].sigma_size)); + evolution[i].Ly = evolution[i].Ly*((evolution[i].sigma_size)); + evolution[i].Lxx = evolution[i].Lxx*((evolution[i].sigma_size)*(evolution[i].sigma_size)); + evolution[i].Lxy = evolution[i].Lxy*((evolution[i].sigma_size)*(evolution[i].sigma_size)); + evolution[i].Lyy = evolution[i].Lyy*((evolution[i].sigma_size)*(evolution[i].sigma_size)); + } + } + +private: + std::vector* evolution_; +}; + +/* ************************************************************************* */ +/** + * @brief This method computes the multiscale derivatives for the nonlinear scale space + */ +void KAZEFeatures::Compute_Multiscale_Derivatives(void) +{ + cv::parallel_for_(cv::Range(0, (int)evolution_.size()), + MultiscaleDerivativesKAZEInvoker(evolution_)); +} + + +/* ************************************************************************* */ +class FindExtremumKAZEInvoker : public cv::ParallelLoopBody +{ +public: + explicit FindExtremumKAZEInvoker(std::vector& ev, std::vector >& kpts_par, + const KAZEOptions& options) : evolution_(&ev), kpts_par_(&kpts_par), options_(options) + { + } + + void operator()(const cv::Range& range) const + { + std::vector& evolution = *evolution_; + std::vector >& kpts_par = *kpts_par_; + for (int i = range.start; i < range.end; i++) + { + float value = 0.0; + bool is_extremum = false; + + for (int ix = 1; ix < options_.img_height - 1; ix++) { + for (int jx = 1; jx < options_.img_width - 1; jx++) { + + is_extremum = false; + value = *(evolution[i].Ldet.ptr(ix)+jx); + + // Filter the points with the detector threshold + if (value > options_.dthreshold) { + if (value >= *(evolution[i].Ldet.ptr(ix)+jx - 1)) { + // First check on the same scale + if (check_maximum_neighbourhood(evolution[i].Ldet, 1, value, ix, jx, 1)) { + // Now check on the lower scale + if (check_maximum_neighbourhood(evolution[i - 1].Ldet, 1, value, ix, jx, 0)) { + // Now check on the upper scale + if (check_maximum_neighbourhood(evolution[i + 1].Ldet, 1, value, ix, jx, 0)) { + is_extremum = true; + } + } + } + } + } + + // Add the point of interest!! + if (is_extremum == true) { + cv::KeyPoint point; + point.pt.x = (float)jx; + point.pt.y = (float)ix; + point.response = fabs(value); + point.size = evolution[i].esigma; + point.octave = (int)evolution[i].octave; + point.class_id = i; + + // We use the angle field for the sublevel value + // Then, we will replace this angle field with the main orientation + point.angle = static_cast(evolution[i].sublevel); + kpts_par[i - 1].push_back(point); + } + } + } + } + } + +private: + std::vector* evolution_; + std::vector >* kpts_par_; + KAZEOptions options_; +}; + +/* ************************************************************************* */ /** * @brief This method performs the detection of keypoints by using the normalized * score of the Hessian determinant through the nonlinear scale space * @param kpts Vector of keypoints * @note We compute features for each of the nonlinear scale space level in a different processing thread */ -void KAZEFeatures::Determinant_Hessian_Parallel(std::vector& kpts) +void KAZEFeatures::Determinant_Hessian(std::vector& kpts) { int level = 0; float dist = 0.0, smax = 3.0; @@ -283,10 +325,8 @@ void KAZEFeatures::Determinant_Hessian_Parallel(std::vector& kpts) kpts_par_.push_back(aux); } - // TODO: Use cv::parallel_for_ - for (int i = 1; i < (int)evolution_.size() - 1; i++) { - Find_Extremum_Threading(i); - } + cv::parallel_for_(cv::Range(1, (int)evolution_.size()-1), + FindExtremumKAZEInvoker(evolution_, kpts_par_, options_)); // Now fill the vector of keypoints!!! for (int i = 0; i < (int)kpts_par_.size(); i++) { @@ -343,63 +383,7 @@ void KAZEFeatures::Determinant_Hessian_Parallel(std::vector& kpts) } } -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method is called by the thread which is responsible of finding extrema - * at a given nonlinear scale level - * @param level Index in the nonlinear scale space evolution - */ -void KAZEFeatures::Find_Extremum_Threading(const int& level) { - - float value = 0.0; - bool is_extremum = false; - - for (int ix = 1; ix < options.img_height - 1; ix++) { - for (int jx = 1; jx < options.img_width - 1; jx++) { - - is_extremum = false; - value = *(evolution_[level].Ldet.ptr(ix)+jx); - - // Filter the points with the detector threshold - if (value > options.dthreshold) { - if (value >= *(evolution_[level].Ldet.ptr(ix)+jx - 1)) { - // First check on the same scale - if (check_maximum_neighbourhood(evolution_[level].Ldet, 1, value, ix, jx, 1)) { - // Now check on the lower scale - if (check_maximum_neighbourhood(evolution_[level - 1].Ldet, 1, value, ix, jx, 0)) { - // Now check on the upper scale - if (check_maximum_neighbourhood(evolution_[level + 1].Ldet, 1, value, ix, jx, 0)) { - is_extremum = true; - } - } - } - } - } - - // Add the point of interest!! - if (is_extremum == true) { - KeyPoint point; - point.pt.x = (float)jx; - point.pt.y = (float)ix; - point.response = fabs(value); - point.size = evolution_[level].esigma; - point.octave = (int)evolution_[level].octave; - point.class_id = level; - - // We use the angle field for the sublevel value - // Then, we will replace this angle field with the main orientation - point.angle = evolution_[level].sublevel; - kpts_par_[level - 1].push_back(point); - } - } - } -} - -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method performs subpixel refinement of the detected keypoints * @param kpts Vector of detected keypoints @@ -475,10 +459,10 @@ void KAZEFeatures::Do_Subpixel_Refinement(std::vector &kpts) { if (fabs(*(dst.ptr(0))) <= 1.0f && fabs(*(dst.ptr(1))) <= 1.0f && fabs(*(dst.ptr(2))) <= 1.0f) { kpts_[i].pt.x += *(dst.ptr(0)); kpts_[i].pt.y += *(dst.ptr(1)); - dsc = kpts_[i].octave + (kpts_[i].angle + *(dst.ptr(2))) / ((float)(options.nsublevels)); + dsc = kpts_[i].octave + (kpts_[i].angle + *(dst.ptr(2))) / ((float)(options_.nsublevels)); // In OpenCV the size of a keypoint is the diameter!! - kpts_[i].size = 2.0f*options.soffset*pow((float)2.0f, dsc); + kpts_[i].size = 2.0f*options_.soffset*pow((float)2.0f, dsc); kpts_[i].angle = 0.0; } // Set the points to be deleted after the for loop @@ -497,17 +481,15 @@ void KAZEFeatures::Do_Subpixel_Refinement(std::vector &kpts) { } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ class KAZE_Descriptor_Invoker : public cv::ParallelLoopBody { public: - KAZE_Descriptor_Invoker(std::vector &kpts, cv::Mat &desc, std::vector& evolution, const KAZEOptions& _options) - : _kpts(&kpts) - , _desc(&desc) - , _evolution(&evolution) - , options(_options) + KAZE_Descriptor_Invoker(std::vector &kpts, cv::Mat &desc, std::vector& evolution, const KAZEOptions& options) + : kpts_(&kpts) + , desc_(&desc) + , evolution_(&evolution) + , options_(options) { } @@ -517,26 +499,26 @@ public: void operator() (const cv::Range& range) const { - std::vector &kpts = *_kpts; - cv::Mat &desc = *_desc; - std::vector &evolution = *_evolution; + std::vector &kpts = *kpts_; + cv::Mat &desc = *desc_; + std::vector &evolution = *evolution_; for (int i = range.start; i < range.end; i++) { kpts[i].angle = 0.0; - if (options.upright) + if (options_.upright) { kpts[i].angle = 0.0; - if (options.extended) + if (options_.extended) Get_KAZE_Upright_Descriptor_128(kpts[i], desc.ptr((int)i)); else Get_KAZE_Upright_Descriptor_64(kpts[i], desc.ptr((int)i)); } else { - KAZEFeatures::Compute_Main_Orientation(kpts[i], evolution, options); + KAZEFeatures::Compute_Main_Orientation(kpts[i], evolution, options_); - if (options.extended) + if (options_.extended) Get_KAZE_Descriptor_128(kpts[i], desc.ptr((int)i)); else Get_KAZE_Descriptor_64(kpts[i], desc.ptr((int)i)); @@ -549,12 +531,13 @@ private: void Get_KAZE_Upright_Descriptor_128(const cv::KeyPoint& kpt, float* desc) const; void Get_KAZE_Descriptor_128(const cv::KeyPoint& kpt, float *desc) const; - std::vector * _kpts; - cv::Mat * _desc; - std::vector * _evolution; - KAZEOptions options; + std::vector * kpts_; + cv::Mat * desc_; + std::vector * evolution_; + KAZEOptions options_; }; +/* ************************************************************************* */ /** * @brief This method computes the set of descriptors through the nonlinear scale space * @param kpts Vector of keypoints @@ -562,20 +545,23 @@ private: */ void KAZEFeatures::Feature_Description(std::vector &kpts, cv::Mat &desc) { + for(size_t i = 0; i < kpts.size(); i++) + { + CV_Assert(0 <= kpts[i].class_id && kpts[i].class_id < static_cast(evolution_.size())); + } + // Allocate memory for the matrix of descriptors - if (options.extended == true) { + if (options_.extended == true) { desc = Mat::zeros((int)kpts.size(), 128, CV_32FC1); } else { desc = Mat::zeros((int)kpts.size(), 64, CV_32FC1); } - cv::parallel_for_(cv::Range(0, (int)kpts.size()), KAZE_Descriptor_Invoker(kpts, desc, evolution_, options)); + cv::parallel_for_(cv::Range(0, (int)kpts.size()), KAZE_Descriptor_Invoker(kpts, desc, evolution_, options_)); } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the main orientation for a given keypoint * @param kpt Input keypoint @@ -651,9 +637,7 @@ void KAZEFeatures::Compute_Main_Orientation(cv::KeyPoint &kpt, const std::vector } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the upright descriptor (not rotation invariant) of * the provided keypoint @@ -673,7 +657,7 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_64(const cv::KeyPoint float fx = 0.0, fy = 0.0, res1 = 0.0, res2 = 0.0, res3 = 0.0, res4 = 0.0; int dsize = 0, scale = 0, level = 0; - std::vector& evolution_ = *_evolution; + std::vector& evolution = *evolution_; // Subregion centers for the 4x4 gaussian weighting float cx = -0.5f, cy = 0.5f; @@ -724,26 +708,26 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_64(const cv::KeyPoint y1 = (int)(sample_y - 0.5f); x1 = (int)(sample_x - 0.5f); - checkDescriptorLimits(x1, y1, options.img_width, options.img_height); + checkDescriptorLimits(x1, y1, options_.img_width, options_.img_height); y2 = (int)(sample_y + 0.5f); x2 = (int)(sample_x + 0.5f); - checkDescriptorLimits(x2, y2, options.img_width, options.img_height); + checkDescriptorLimits(x2, y2, options_.img_width, options_.img_height); fx = sample_x - x1; fy = sample_y - y1; - res1 = *(evolution_[level].Lx.ptr(y1)+x1); - res2 = *(evolution_[level].Lx.ptr(y1)+x2); - res3 = *(evolution_[level].Lx.ptr(y2)+x1); - res4 = *(evolution_[level].Lx.ptr(y2)+x2); + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - res1 = *(evolution_[level].Ly.ptr(y1)+x1); - res2 = *(evolution_[level].Ly.ptr(y1)+x2); - res3 = *(evolution_[level].Ly.ptr(y2)+x1); - res4 = *(evolution_[level].Ly.ptr(y2)+x2); + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; rx = gauss_s1*rx; @@ -779,15 +763,9 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_64(const cv::KeyPoint for (i = 0; i < dsize; i++) { desc[i] /= len; } - - if (options.use_clipping_normalilzation) { - clippingDescriptor(desc, dsize, options.clipping_normalization_niter, options.clipping_normalization_ratio); - } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the descriptor of the provided keypoint given the * main orientation of the keypoint @@ -807,7 +785,7 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_64(const cv::KeyPoint &kpt, fl int kx = 0, ky = 0, i = 0, j = 0, dcount = 0; int dsize = 0, scale = 0, level = 0; - std::vector& evolution_ = *_evolution; + std::vector& evolution = *evolution_; // Subregion centers for the 4x4 gaussian weighting float cx = -0.5f, cy = 0.5f; @@ -862,26 +840,26 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_64(const cv::KeyPoint &kpt, fl y1 = fRound(sample_y - 0.5f); x1 = fRound(sample_x - 0.5f); - checkDescriptorLimits(x1, y1, options.img_width, options.img_height); + checkDescriptorLimits(x1, y1, options_.img_width, options_.img_height); y2 = (int)(sample_y + 0.5f); x2 = (int)(sample_x + 0.5f); - checkDescriptorLimits(x2, y2, options.img_width, options.img_height); + checkDescriptorLimits(x2, y2, options_.img_width, options_.img_height); fx = sample_x - x1; fy = sample_y - y1; - res1 = *(evolution_[level].Lx.ptr(y1)+x1); - res2 = *(evolution_[level].Lx.ptr(y1)+x2); - res3 = *(evolution_[level].Lx.ptr(y2)+x1); - res4 = *(evolution_[level].Lx.ptr(y2)+x2); + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - res1 = *(evolution_[level].Ly.ptr(y1)+x1); - res2 = *(evolution_[level].Ly.ptr(y1)+x2); - res3 = *(evolution_[level].Ly.ptr(y2)+x1); - res4 = *(evolution_[level].Ly.ptr(y2)+x2); + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; // Get the x and y derivatives on the rotated axis @@ -914,15 +892,9 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_64(const cv::KeyPoint &kpt, fl for (i = 0; i < dsize; i++) { desc[i] /= len; } - - if (options.use_clipping_normalilzation) { - clippingDescriptor(desc, dsize, options.clipping_normalization_niter, options.clipping_normalization_ratio); - } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the extended upright descriptor (not rotation invariant) of * the provided keypoint @@ -947,7 +919,7 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_128(const cv::KeyPoint // Subregion centers for the 4x4 gaussian weighting float cx = -0.5f, cy = 0.5f; - std::vector& evolution_ = *_evolution; + std::vector& evolution = *evolution_; // Set the descriptor size and the sample and pattern sizes dsize = 128; @@ -998,26 +970,26 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_128(const cv::KeyPoint y1 = (int)(sample_y - 0.5f); x1 = (int)(sample_x - 0.5f); - checkDescriptorLimits(x1, y1, options.img_width, options.img_height); + checkDescriptorLimits(x1, y1, options_.img_width, options_.img_height); y2 = (int)(sample_y + 0.5f); x2 = (int)(sample_x + 0.5f); - checkDescriptorLimits(x2, y2, options.img_width, options.img_height); + checkDescriptorLimits(x2, y2, options_.img_width, options_.img_height); fx = sample_x - x1; fy = sample_y - y1; - res1 = *(evolution_[level].Lx.ptr(y1)+x1); - res2 = *(evolution_[level].Lx.ptr(y1)+x2); - res3 = *(evolution_[level].Lx.ptr(y2)+x1); - res4 = *(evolution_[level].Lx.ptr(y2)+x2); + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - res1 = *(evolution_[level].Ly.ptr(y1)+x1); - res2 = *(evolution_[level].Ly.ptr(y1)+x2); - res3 = *(evolution_[level].Ly.ptr(y2)+x1); - res4 = *(evolution_[level].Ly.ptr(y2)+x2); + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; rx = gauss_s1*rx; @@ -1072,15 +1044,9 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Upright_Descriptor_128(const cv::KeyPoint for (i = 0; i < dsize; i++) { desc[i] /= len; } - - if (options.use_clipping_normalilzation) { - clippingDescriptor(desc, dsize, options.clipping_normalization_niter, options.clipping_normalization_ratio); - } } -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ /** * @brief This method computes the extended G-SURF descriptor of the provided keypoint * given the main orientation of the keypoint @@ -1102,7 +1068,7 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_128(const cv::KeyPoint &kpt, f int kx = 0, ky = 0, i = 0, j = 0, dcount = 0; int dsize = 0, scale = 0, level = 0; - std::vector& evolution_ = *_evolution; + std::vector& evolution = *evolution_; // Subregion centers for the 4x4 gaussian weighting float cx = -0.5f, cy = 0.5f; @@ -1160,26 +1126,26 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_128(const cv::KeyPoint &kpt, f y1 = fRound(sample_y - 0.5f); x1 = fRound(sample_x - 0.5f); - checkDescriptorLimits(x1, y1, options.img_width, options.img_height); + checkDescriptorLimits(x1, y1, options_.img_width, options_.img_height); y2 = (int)(sample_y + 0.5f); x2 = (int)(sample_x + 0.5f); - checkDescriptorLimits(x2, y2, options.img_width, options.img_height); + checkDescriptorLimits(x2, y2, options_.img_width, options_.img_height); fx = sample_x - x1; fy = sample_y - y1; - res1 = *(evolution_[level].Lx.ptr(y1)+x1); - res2 = *(evolution_[level].Lx.ptr(y1)+x2); - res3 = *(evolution_[level].Lx.ptr(y2)+x1); - res4 = *(evolution_[level].Lx.ptr(y2)+x2); + res1 = *(evolution[level].Lx.ptr(y1)+x1); + res2 = *(evolution[level].Lx.ptr(y1)+x2); + res3 = *(evolution[level].Lx.ptr(y2)+x1); + res4 = *(evolution[level].Lx.ptr(y2)+x2); rx = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; - res1 = *(evolution_[level].Ly.ptr(y1)+x1); - res2 = *(evolution_[level].Ly.ptr(y1)+x2); - res3 = *(evolution_[level].Ly.ptr(y2)+x1); - res4 = *(evolution_[level].Ly.ptr(y2)+x2); + res1 = *(evolution[level].Ly.ptr(y1)+x1); + res2 = *(evolution[level].Ly.ptr(y1)+x2); + res3 = *(evolution[level].Ly.ptr(y2)+x1); + res4 = *(evolution[level].Ly.ptr(y2)+x2); ry = (1.0f - fx)*(1.0f - fy)*res1 + fx*(1.0f - fy)*res2 + (1.0f - fx)*fy*res3 + fx*fy*res4; // Get the x and y derivatives on the rotated axis @@ -1235,298 +1201,4 @@ void KAZE_Descriptor_Invoker::Get_KAZE_Descriptor_128(const cv::KeyPoint &kpt, f for (i = 0; i < dsize; i++) { desc[i] /= len; } - - if (options.use_clipping_normalilzation) { - clippingDescriptor(desc, dsize, options.clipping_normalization_niter, options.clipping_normalization_ratio); - } -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method performs a scalar non-linear diffusion step using AOS schemes - * @param Ld Image at a given evolution step - * @param Ldprev Image at a previous evolution step - * @param c Conductivity image - * @param stepsize Stepsize for the nonlinear diffusion evolution - * @note If c is constant, the diffusion will be linear - * If c is a matrix of the same size as Ld, the diffusion will be nonlinear - * The stepsize can be arbitrarily large - */ -void KAZEFeatures::AOS_Step_Scalar(cv::Mat &Ld, const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize) { - - AOS_Rows(Ldprev, c, stepsize); - AOS_Columns(Ldprev, c, stepsize); - - Ld = 0.5f*(Lty_ + Ltx_.t()); -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method performs performs 1D-AOS for the image rows - * @param Ldprev Image at a previous evolution step - * @param c Conductivity image - * @param stepsize Stepsize for the nonlinear diffusion evolution - */ -void KAZEFeatures::AOS_Rows(const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize) { - - // Operate on rows - for (int i = 0; i < qr_.rows; i++) { - for (int j = 0; j < qr_.cols; j++) { - *(qr_.ptr(i)+j) = *(c.ptr(i)+j) + *(c.ptr(i + 1) + j); - } - } - - for (int j = 0; j < py_.cols; j++) { - *(py_.ptr(0) + j) = *(qr_.ptr(0) + j); - } - - for (int j = 0; j < py_.cols; j++) { - *(py_.ptr(py_.rows - 1) + j) = *(qr_.ptr(qr_.rows - 1) + j); - } - - for (int i = 1; i < py_.rows - 1; i++) { - for (int j = 0; j < py_.cols; j++) { - *(py_.ptr(i)+j) = *(qr_.ptr(i - 1) + j) + *(qr_.ptr(i)+j); - } - } - - // a = 1 + t.*p; (p is -1*p) - // b = -t.*q; - ay_ = 1.0f + stepsize*py_; // p is -1*p - by_ = -stepsize*qr_; - - // Do Thomas algorithm to solve the linear system of equations - Thomas(ay_, by_, Ldprev, Lty_); -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method performs performs 1D-AOS for the image columns - * @param Ldprev Image at a previous evolution step - * @param c Conductivity image - * @param stepsize Stepsize for the nonlinear diffusion evolution - */ -void KAZEFeatures::AOS_Columns(const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize) { - - // Operate on columns - for (int j = 0; j < qc_.cols; j++) { - for (int i = 0; i < qc_.rows; i++) { - *(qc_.ptr(i)+j) = *(c.ptr(i)+j) + *(c.ptr(i)+j + 1); - } - } - - for (int i = 0; i < px_.rows; i++) { - *(px_.ptr(i)) = *(qc_.ptr(i)); - } - - for (int i = 0; i < px_.rows; i++) { - *(px_.ptr(i)+px_.cols - 1) = *(qc_.ptr(i)+qc_.cols - 1); - } - - for (int j = 1; j < px_.cols - 1; j++) { - for (int i = 0; i < px_.rows; i++) { - *(px_.ptr(i)+j) = *(qc_.ptr(i)+j - 1) + *(qc_.ptr(i)+j); - } - } - - // a = 1 + t.*p'; - ax_ = 1.0f + stepsize*px_.t(); - - // b = -t.*q'; - bx_ = -stepsize*qc_.t(); - - // But take care since we need to transpose the solution!! - Mat Ldprevt = Ldprev.t(); - - // Do Thomas algorithm to solve the linear system of equations - Thomas(ax_, bx_, Ldprevt, Ltx_); -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This method does the Thomas algorithm for solving a tridiagonal linear system - * @note The matrix A must be strictly diagonally dominant for a stable solution - */ -void KAZEFeatures::Thomas(const cv::Mat &a, const cv::Mat &b, const cv::Mat &Ld, cv::Mat &x) { - - // Auxiliary variables - int n = a.rows; - Mat m = cv::Mat::zeros(a.rows, a.cols, CV_32F); - Mat l = cv::Mat::zeros(b.rows, b.cols, CV_32F); - Mat y = cv::Mat::zeros(Ld.rows, Ld.cols, CV_32F); - - /** A*x = d; */ - /** / a1 b1 0 0 0 ... 0 \ / x1 \ = / d1 \ */ - /** | c1 a2 b2 0 0 ... 0 | | x2 | = | d2 | */ - /** | 0 c2 a3 b3 0 ... 0 | | x3 | = | d3 | */ - /** | : : : : 0 ... 0 | | : | = | : | */ - /** | : : : : 0 cn-1 an | | xn | = | dn | */ - - /** 1. LU decomposition - / L = / 1 \ U = / m1 r1 \ - / | l1 1 | | m2 r2 | - / | l2 1 | | m3 r3 | - / | : : : | | : : : | - / \ ln-1 1 / \ mn / */ - - for (int j = 0; j < m.cols; j++) { - *(m.ptr(0) + j) = *(a.ptr(0) + j); - } - - for (int j = 0; j < y.cols; j++) { - *(y.ptr(0) + j) = *(Ld.ptr(0) + j); - } - - // 1. Forward substitution L*y = d for y - for (int k = 1; k < n; k++) { - for (int j = 0; j < l.cols; j++) { - *(l.ptr(k - 1) + j) = *(b.ptr(k - 1) + j) / *(m.ptr(k - 1) + j); - } - - for (int j = 0; j < m.cols; j++) { - *(m.ptr(k)+j) = *(a.ptr(k)+j) - *(l.ptr(k - 1) + j)*(*(b.ptr(k - 1) + j)); - } - - for (int j = 0; j < y.cols; j++) { - *(y.ptr(k)+j) = *(Ld.ptr(k)+j) - *(l.ptr(k - 1) + j)*(*(y.ptr(k - 1) + j)); - } - } - - // 2. Backward substitution U*x = y - for (int j = 0; j < y.cols; j++) { - *(x.ptr(n - 1) + j) = (*(y.ptr(n - 1) + j)) / (*(m.ptr(n - 1) + j)); - } - - for (int i = n - 2; i >= 0; i--) { - for (int j = 0; j < x.cols; j++) { - *(x.ptr(i)+j) = (*(y.ptr(i)+j) - (*(b.ptr(i)+j))*(*(x.ptr(i + 1) + j))) / (*(m.ptr(i)+j)); - } - } -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This function computes the angle from the vector given by (X Y). From 0 to 2*Pi - */ -inline float getAngle(const float& x, const float& y) { - - if (x >= 0 && y >= 0) - { - return atan(y / x); - } - - if (x < 0 && y >= 0) { - return (float)CV_PI - atan(-y / x); - } - - if (x < 0 && y < 0) { - return (float)CV_PI + atan(y / x); - } - - if (x >= 0 && y < 0) { - return 2.0f * (float)CV_PI - atan(-y / x); - } - - return 0; -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This function performs descriptor clipping - * @param desc_ Pointer to the descriptor vector - * @param dsize Size of the descriptor vector - * @param iter Number of iterations - * @param ratio Clipping ratio - */ -inline void clippingDescriptor(float *desc, const int& dsize, const int& niter, const float& ratio) { - - float cratio = ratio / sqrtf(static_cast(dsize)); - float len = 0.0; - - for (int i = 0; i < niter; i++) { - len = 0.0; - for (int j = 0; j < dsize; j++) { - if (desc[j] > cratio) { - desc[j] = cratio; - } - else if (desc[j] < -cratio) { - desc[j] = -cratio; - } - len += desc[j] * desc[j]; - } - - // Normalize again - len = sqrt(len); - - for (int j = 0; j < dsize; j++) { - desc[j] = desc[j] / len; - } - } -} - -//************************************************************************************** -//************************************************************************************** - -/** - * @brief This function computes the value of a 2D Gaussian function - * @param x X Position - * @param y Y Position - * @param sig Standard Deviation - */ -inline float gaussian(const float& x, const float& y, const float& sig) { - return exp(-(x*x + y*y) / (2.0f*sig*sig)); -} - -//************************************************************************************** -//************************************************************************************** - -/** - * @brief This function checks descriptor limits - * @param x X Position - * @param y Y Position - * @param width Image width - * @param height Image height - */ -inline void checkDescriptorLimits(int &x, int &y, const int& width, const int& height) { - - if (x < 0) { - x = 0; - } - - if (y < 0) { - y = 0; - } - - if (x > width - 1) { - x = width - 1; - } - - if (y > height - 1) { - y = height - 1; - } -} - -//************************************************************************************* -//************************************************************************************* - -/** - * @brief This funtion rounds float to nearest integer - * @param flt Input float - * @return dst Nearest integer - */ -inline int fRound(const float& flt) -{ - return (int)(flt + 0.5f); } diff --git a/modules/features2d/src/kaze/KAZEFeatures.h b/modules/features2d/src/kaze/KAZEFeatures.h index 81509c47d9..b62f94831e 100644 --- a/modules/features2d/src/kaze/KAZEFeatures.h +++ b/modules/features2d/src/kaze/KAZEFeatures.h @@ -7,84 +7,53 @@ * @author Pablo F. Alcantarilla */ -#ifndef KAZE_H_ -#define KAZE_H_ - -//************************************************************************************* -//************************************************************************************* +#ifndef __OPENCV_FEATURES_2D_KAZE_FEATURES_H__ +#define __OPENCV_FEATURES_2D_KAZE_FEATURES_H__ +/* ************************************************************************* */ // Includes #include "KAZEConfig.h" #include "nldiffusion_functions.h" #include "fed.h" +#include "TEvolution.h" -//************************************************************************************* -//************************************************************************************* - +/* ************************************************************************* */ // KAZE Class Declaration class KAZEFeatures { private: - KAZEOptions options; + /// Parameters of the Nonlinear diffusion class + KAZEOptions options_; ///< Configuration options for KAZE + std::vector evolution_; ///< Vector of nonlinear diffusion evolution - // Parameters of the Nonlinear diffusion class - std::vector evolution_; // Vector of nonlinear diffusion evolution - - // Vector of keypoint vectors for finding extrema in multiple threads + /// Vector of keypoint vectors for finding extrema in multiple threads std::vector > kpts_par_; - // FED parameters - int ncycles_; // Number of cycles - bool reordering_; // Flag for reordering time steps - std::vector > tsteps_; // Vector of FED dynamic time steps - std::vector nsteps_; // Vector of number of steps per cycle - - // Some auxiliary variables used in the AOS step - cv::Mat Ltx_, Lty_, px_, py_, ax_, ay_, bx_, by_, qr_, qc_; + /// FED parameters + int ncycles_; ///< Number of cycles + bool reordering_; ///< Flag for reordering time steps + std::vector > tsteps_; ///< Vector of FED dynamic time steps + std::vector nsteps_; ///< Vector of number of steps per cycle public: - // Constructor + /// Constructor KAZEFeatures(KAZEOptions& options); - // Public methods for KAZE interface + /// Public methods for KAZE interface void Allocate_Memory_Evolution(void); int Create_Nonlinear_Scale_Space(const cv::Mat& img); void Feature_Detection(std::vector& kpts); void Feature_Description(std::vector& kpts, cv::Mat& desc); - static void Compute_Main_Orientation(cv::KeyPoint& kpt, const std::vector& evolution_, const KAZEOptions& options); -private: - - // Feature Detection Methods + /// Feature Detection Methods void Compute_KContrast(const cv::Mat& img, const float& kper); void Compute_Multiscale_Derivatives(void); void Compute_Detector_Response(void); - void Determinant_Hessian_Parallel(std::vector& kpts); - void Find_Extremum_Threading(const int& level); + void Determinant_Hessian(std::vector& kpts); void Do_Subpixel_Refinement(std::vector& kpts); - - // AOS Methods - void AOS_Step_Scalar(cv::Mat &Ld, const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize); - void AOS_Rows(const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize); - void AOS_Columns(const cv::Mat &Ldprev, const cv::Mat &c, const float& stepsize); - void Thomas(const cv::Mat &a, const cv::Mat &b, const cv::Mat &Ld, cv::Mat &x); - }; -//************************************************************************************* -//************************************************************************************* - -// Inline functions -float getAngle(const float& x, const float& y); -float gaussian(const float& x, const float& y, const float& sig); -void checkDescriptorLimits(int &x, int &y, const int& width, const int& height); -void clippingDescriptor(float *desc, const int& dsize, const int& niter, const float& ratio); -int fRound(const float& flt); - -//************************************************************************************* -//************************************************************************************* - -#endif // KAZE_H_ +#endif diff --git a/modules/features2d/src/kaze/TEvolution.h b/modules/features2d/src/kaze/TEvolution.h new file mode 100644 index 0000000000..bc7654ef05 --- /dev/null +++ b/modules/features2d/src/kaze/TEvolution.h @@ -0,0 +1,35 @@ +/** + * @file TEvolution.h + * @brief Header file with the declaration of the TEvolution struct + * @date Jun 02, 2014 + * @author Pablo F. Alcantarilla + */ + +#ifndef __OPENCV_FEATURES_2D_TEVOLUTION_H__ +#define __OPENCV_FEATURES_2D_TEVOLUTION_H__ + +/* ************************************************************************* */ +/// KAZE/A-KAZE nonlinear diffusion filtering evolution +struct TEvolution { + + TEvolution() { + etime = 0.0f; + esigma = 0.0f; + octave = 0; + sublevel = 0; + sigma_size = 0; + } + + cv::Mat Lx, Ly; ///< First order spatial derivatives + cv::Mat Lxx, Lxy, Lyy; ///< Second order spatial derivatives + cv::Mat Lt; ///< Evolution image + cv::Mat Lsmooth; ///< Smoothed image + cv::Mat Ldet; ///< Detector response + float etime; ///< Evolution time + float esigma; ///< Evolution sigma. For linear diffusion t = sigma^2 / 2 + int octave; ///< Image octave + int sublevel; ///< Image sublevel in each octave + int sigma_size; ///< Integer esigma. For computing the feature detector responses +}; + +#endif diff --git a/modules/features2d/src/kaze/fed.cpp b/modules/features2d/src/kaze/fed.cpp index 7c2588559d..cb47628e03 100644 --- a/modules/features2d/src/kaze/fed.cpp +++ b/modules/features2d/src/kaze/fed.cpp @@ -28,7 +28,7 @@ * DAGM, 2010 * */ -#include "precomp.hpp" +#include "../precomp.hpp" #include "fed.h" using namespace std; diff --git a/modules/features2d/src/kaze/fed.h b/modules/features2d/src/kaze/fed.h index c313b8134d..0cfa4005c8 100644 --- a/modules/features2d/src/kaze/fed.h +++ b/modules/features2d/src/kaze/fed.h @@ -1,5 +1,5 @@ -#ifndef FED_H -#define FED_H +#ifndef __OPENCV_FEATURES_2D_FED_H__ +#define __OPENCV_FEATURES_2D_FED_H__ //****************************************************************************** //****************************************************************************** @@ -22,4 +22,4 @@ bool fed_is_prime_internal(const int& number); //************************************************************************************* //************************************************************************************* -#endif // FED_H +#endif // __OPENCV_FEATURES_2D_FED_H__ diff --git a/modules/features2d/src/kaze/nldiffusion_functions.h b/modules/features2d/src/kaze/nldiffusion_functions.h index 773f7e4619..6665e54270 100644 --- a/modules/features2d/src/kaze/nldiffusion_functions.h +++ b/modules/features2d/src/kaze/nldiffusion_functions.h @@ -8,12 +8,12 @@ * @author Pablo F. Alcantarilla */ -#ifndef KAZE_NLDIFFUSION_FUNCTIONS_H -#define KAZE_NLDIFFUSION_FUNCTIONS_H +#ifndef __OPENCV_FEATURES_2D_NLDIFFUSION_FUNCTIONS_H__ +#define __OPENCV_FEATURES_2D_NLDIFFUSION_FUNCTIONS_H__ /* ************************************************************************* */ // Includes -#include "precomp.hpp" +#include "../precomp.hpp" /* ************************************************************************* */ // Declaration of functions diff --git a/modules/features2d/src/kaze/utils.h b/modules/features2d/src/kaze/utils.h new file mode 100644 index 0000000000..13ae352474 --- /dev/null +++ b/modules/features2d/src/kaze/utils.h @@ -0,0 +1,77 @@ +#ifndef __OPENCV_FEATURES_2D_KAZE_UTILS_H__ +#define __OPENCV_FEATURES_2D_KAZE_UTILS_H__ + +/* ************************************************************************* */ +/** + * @brief This function computes the angle from the vector given by (X Y). From 0 to 2*Pi + */ +inline float getAngle(float x, float y) { + + if (x >= 0 && y >= 0) { + return atanf(y / x); + } + + if (x < 0 && y >= 0) { + return static_cast(CV_PI)-atanf(-y / x); + } + + if (x < 0 && y < 0) { + return static_cast(CV_PI)+atanf(y / x); + } + + if (x >= 0 && y < 0) { + return static_cast(2.0 * CV_PI) - atanf(-y / x); + } + + return 0; +} + +/* ************************************************************************* */ +/** + * @brief This function computes the value of a 2D Gaussian function + * @param x X Position + * @param y Y Position + * @param sig Standard Deviation + */ +inline float gaussian(float x, float y, float sigma) { + return expf(-(x*x + y*y) / (2.0f*sigma*sigma)); +} + +/* ************************************************************************* */ +/** + * @brief This function checks descriptor limits + * @param x X Position + * @param y Y Position + * @param width Image width + * @param height Image height + */ +inline void checkDescriptorLimits(int &x, int &y, int width, int height) { + + if (x < 0) { + x = 0; + } + + if (y < 0) { + y = 0; + } + + if (x > width - 1) { + x = width - 1; + } + + if (y > height - 1) { + y = height - 1; + } +} + +/* ************************************************************************* */ +/** + * @brief This funtion rounds float to nearest integer + * @param flt Input float + * @return dst Nearest integer + */ +inline int fRound(float flt) { + return (int)(flt + 0.5f); +} + +#endif diff --git a/modules/features2d/src/matchers.cpp b/modules/features2d/src/matchers.cpp index 2b5605031a..363bea3a1d 100644 --- a/modules/features2d/src/matchers.cpp +++ b/modules/features2d/src/matchers.cpp @@ -41,7 +41,7 @@ #include "precomp.hpp" #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #if defined(HAVE_EIGEN) && EIGEN_WORLD_VERSION == 2 #include @@ -50,26 +50,7 @@ namespace cv { -Mat windowedMatchingMask( const std::vector& keypoints1, const std::vector& keypoints2, - float maxDeltaX, float maxDeltaY ) -{ - if( keypoints1.empty() || keypoints2.empty() ) - return Mat(); - - int n1 = (int)keypoints1.size(), n2 = (int)keypoints2.size(); - Mat mask( n1, n2, CV_8UC1 ); - for( int i = 0; i < n1; i++ ) - { - for( int j = 0; j < n2; j++ ) - { - Point2f diff = keypoints2[j].pt - keypoints1[i].pt; - mask.at(i, j) = std::abs(diff.x) < maxDeltaX && std::abs(diff.y) < maxDeltaY; - } - } - return mask; -} - -//////////////////////////////////////////////////////////////////ocl functions for BFMatcher /////////////////////////////////////////////////////////////// +/////////////////////// ocl functions for BFMatcher /////////////////////////// static void ensureSizeIsEnough(int rows, int cols, int type, UMat &m) { @@ -1507,382 +1488,4 @@ void FlannBasedMatcher::radiusMatchImpl( InputArray _queryDescriptors, std::vect convertToDMatches( mergedDescriptors, indices, dists, matches ); } -/****************************************************************************************\ -* GenericDescriptorMatcher * -\****************************************************************************************/ -/* - * KeyPointCollection - */ -GenericDescriptorMatcher::KeyPointCollection::KeyPointCollection() : pointCount(0) -{} - -GenericDescriptorMatcher::KeyPointCollection::KeyPointCollection( const KeyPointCollection& collection ) -{ - pointCount = collection.pointCount; - - std::transform( collection.images.begin(), collection.images.end(), images.begin(), clone_op ); - - keypoints.resize( collection.keypoints.size() ); - for( size_t i = 0; i < keypoints.size(); i++ ) - std::copy( collection.keypoints[i].begin(), collection.keypoints[i].end(), keypoints[i].begin() ); - - std::copy( collection.startIndices.begin(), collection.startIndices.end(), startIndices.begin() ); -} - -void GenericDescriptorMatcher::KeyPointCollection::add( const std::vector& _images, - const std::vector >& _points ) -{ - CV_Assert( !_images.empty() ); - CV_Assert( _images.size() == _points.size() ); - - images.insert( images.end(), _images.begin(), _images.end() ); - keypoints.insert( keypoints.end(), _points.begin(), _points.end() ); - for( size_t i = 0; i < _points.size(); i++ ) - pointCount += (int)_points[i].size(); - - size_t prevSize = startIndices.size(), addSize = _images.size(); - startIndices.resize( prevSize + addSize ); - - if( prevSize == 0 ) - startIndices[prevSize] = 0; //first - else - startIndices[prevSize] = (int)(startIndices[prevSize-1] + keypoints[prevSize-1].size()); - - for( size_t i = prevSize + 1; i < prevSize + addSize; i++ ) - { - startIndices[i] = (int)(startIndices[i - 1] + keypoints[i - 1].size()); - } -} - -void GenericDescriptorMatcher::KeyPointCollection::clear() -{ - pointCount = 0; - - images.clear(); - keypoints.clear(); - startIndices.clear(); -} - -size_t GenericDescriptorMatcher::KeyPointCollection::keypointCount() const -{ - return pointCount; -} - -size_t GenericDescriptorMatcher::KeyPointCollection::imageCount() const -{ - return images.size(); -} - -const std::vector >& GenericDescriptorMatcher::KeyPointCollection::getKeypoints() const -{ - return keypoints; -} - -const std::vector& GenericDescriptorMatcher::KeyPointCollection::getKeypoints( int imgIdx ) const -{ - CV_Assert( imgIdx < (int)imageCount() ); - return keypoints[imgIdx]; -} - -const KeyPoint& GenericDescriptorMatcher::KeyPointCollection::getKeyPoint( int imgIdx, int localPointIdx ) const -{ - CV_Assert( imgIdx < (int)images.size() ); - CV_Assert( localPointIdx < (int)keypoints[imgIdx].size() ); - return keypoints[imgIdx][localPointIdx]; -} - -const KeyPoint& GenericDescriptorMatcher::KeyPointCollection::getKeyPoint( int globalPointIdx ) const -{ - int imgIdx, localPointIdx; - getLocalIdx( globalPointIdx, imgIdx, localPointIdx ); - return keypoints[imgIdx][localPointIdx]; -} - -void GenericDescriptorMatcher::KeyPointCollection::getLocalIdx( int globalPointIdx, int& imgIdx, int& localPointIdx ) const -{ - imgIdx = -1; - CV_Assert( globalPointIdx < (int)keypointCount() ); - for( size_t i = 1; i < startIndices.size(); i++ ) - { - if( globalPointIdx < startIndices[i] ) - { - imgIdx = (int)(i - 1); - break; - } - } - imgIdx = imgIdx == -1 ? (int)(startIndices.size() - 1) : imgIdx; - localPointIdx = globalPointIdx - startIndices[imgIdx]; -} - -const std::vector& GenericDescriptorMatcher::KeyPointCollection::getImages() const -{ - return images; -} - -const Mat& GenericDescriptorMatcher::KeyPointCollection::getImage( int imgIdx ) const -{ - CV_Assert( imgIdx < (int)imageCount() ); - return images[imgIdx]; -} - -/* - * GenericDescriptorMatcher - */ -GenericDescriptorMatcher::GenericDescriptorMatcher() -{} - -GenericDescriptorMatcher::~GenericDescriptorMatcher() -{} - -void GenericDescriptorMatcher::add( InputArrayOfArrays _images, - std::vector >& keypoints ) -{ - std::vector images; - _images.getMatVector(images); - CV_Assert( !images.empty() ); - CV_Assert( images.size() == keypoints.size() ); - - for( size_t i = 0; i < images.size(); i++ ) - { - CV_Assert( !images[i].empty() ); - KeyPointsFilter::runByImageBorder( keypoints[i], images[i].size(), 0 ); - KeyPointsFilter::runByKeypointSize( keypoints[i], std::numeric_limits::epsilon() ); - } - - trainPointCollection.add( images, keypoints ); -} - -const std::vector& GenericDescriptorMatcher::getTrainImages() const -{ - return trainPointCollection.getImages(); -} - -const std::vector >& GenericDescriptorMatcher::getTrainKeypoints() const -{ - return trainPointCollection.getKeypoints(); -} - -void GenericDescriptorMatcher::clear() -{ - trainPointCollection.clear(); -} - -void GenericDescriptorMatcher::train() -{} - -void GenericDescriptorMatcher::classify( InputArray queryImage, std::vector& queryKeypoints, - InputArray trainImage, std::vector& trainKeypoints ) const -{ - std::vector matches; - match( queryImage, queryKeypoints, trainImage, trainKeypoints, matches ); - - // remap keypoint indices to descriptors - for( size_t i = 0; i < matches.size(); i++ ) - queryKeypoints[matches[i].queryIdx].class_id = trainKeypoints[matches[i].trainIdx].class_id; -} - -void GenericDescriptorMatcher::classify( InputArray queryImage, std::vector& queryKeypoints ) -{ - std::vector matches; - match( queryImage, queryKeypoints, matches ); - - // remap keypoint indices to descriptors - for( size_t i = 0; i < matches.size(); i++ ) - queryKeypoints[matches[i].queryIdx].class_id = trainPointCollection.getKeyPoint( matches[i].trainIdx, matches[i].trainIdx ).class_id; -} - -void GenericDescriptorMatcher::match( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector& matches, InputArray mask ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->match( queryImage, queryKeypoints, matches, std::vector(1, mask.getMat()) ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::knnMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector >& matches, int knn, InputArray mask, bool compactResult ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->knnMatch( queryImage, queryKeypoints, matches, knn, std::vector(1, mask.getMat()), compactResult ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - InputArray _trainImage, std::vector& trainKeypoints, - std::vector >& matches, float maxDistance, - InputArray mask, bool compactResult ) const -{ - Mat trainImage = _trainImage.getMat(); - Ptr tempMatcher = clone( true ); - std::vector > vecTrainPoints(1, trainKeypoints); - tempMatcher->add( std::vector(1, trainImage), vecTrainPoints ); - tempMatcher->radiusMatch( queryImage, queryKeypoints, matches, maxDistance, std::vector(1, mask.getMat()), compactResult ); - vecTrainPoints[0].swap( trainKeypoints ); -} - -void GenericDescriptorMatcher::match( InputArray queryImage, std::vector& queryKeypoints, - std::vector& matches, InputArrayOfArrays masks ) -{ - std::vector > knnMatches; - knnMatch( queryImage, queryKeypoints, knnMatches, 1, masks, false ); - convertMatches( knnMatches, matches ); -} - -void GenericDescriptorMatcher::knnMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int knn, - InputArrayOfArrays masks, bool compactResult ) -{ - matches.clear(); - - if( queryImage.empty() || queryKeypoints.empty() ) - return; - - KeyPointsFilter::runByImageBorder( queryKeypoints, queryImage.size(), 0 ); - KeyPointsFilter::runByKeypointSize( queryKeypoints, std::numeric_limits::epsilon() ); - - train(); - knnMatchImpl( queryImage, queryKeypoints, matches, knn, masks, compactResult ); -} - -void GenericDescriptorMatcher::radiusMatch( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) -{ - matches.clear(); - - if( queryImage.empty() || queryKeypoints.empty() ) - return; - - KeyPointsFilter::runByImageBorder( queryKeypoints, queryImage.size(), 0 ); - KeyPointsFilter::runByKeypointSize( queryKeypoints, std::numeric_limits::epsilon() ); - - train(); - radiusMatchImpl( queryImage, queryKeypoints, matches, maxDistance, masks, compactResult ); -} - -void GenericDescriptorMatcher::read( const FileNode& ) -{} - -void GenericDescriptorMatcher::write( FileStorage& ) const -{} - -bool GenericDescriptorMatcher::empty() const -{ - return true; -} - -/* - * Factory function for GenericDescriptorMatch creating - */ -Ptr GenericDescriptorMatcher::create( const String& genericDescritptorMatcherType, - const String ¶msFilename ) -{ - Ptr descriptorMatcher = - Algorithm::create("DescriptorMatcher." + genericDescritptorMatcherType); - - if( !paramsFilename.empty() && descriptorMatcher ) - { - FileStorage fs = FileStorage( paramsFilename, FileStorage::READ ); - if( fs.isOpened() ) - { - descriptorMatcher->read( fs.root() ); - fs.release(); - } - } - return descriptorMatcher; -} - - -/****************************************************************************************\ -* VectorDescriptorMatcher * -\****************************************************************************************/ -VectorDescriptorMatcher::VectorDescriptorMatcher( const Ptr& _extractor, - const Ptr& _matcher ) - : extractor( _extractor ), matcher( _matcher ) -{ - CV_Assert( extractor && matcher ); -} - -VectorDescriptorMatcher::~VectorDescriptorMatcher() -{} - -void VectorDescriptorMatcher::add( InputArrayOfArrays _imgCollection, - std::vector >& pointCollection ) -{ - std::vector imgCollection, descriptors; - _imgCollection.getMatVector(imgCollection); - extractor->compute( imgCollection, pointCollection, descriptors ); - - matcher->add( descriptors ); - - trainPointCollection.add( imgCollection, pointCollection ); -} - -void VectorDescriptorMatcher::clear() -{ - //extractor->clear(); - matcher->clear(); - GenericDescriptorMatcher::clear(); -} - -void VectorDescriptorMatcher::train() -{ - matcher->train(); -} - -bool VectorDescriptorMatcher::isMaskSupported() -{ - return matcher->isMaskSupported(); -} - -void VectorDescriptorMatcher::knnMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, int knn, - InputArrayOfArrays masks, bool compactResult ) -{ - Mat queryDescriptors; - extractor->compute( queryImage, queryKeypoints, queryDescriptors ); - matcher->knnMatch( queryDescriptors, matches, knn, masks, compactResult ); -} - -void VectorDescriptorMatcher::radiusMatchImpl( InputArray queryImage, std::vector& queryKeypoints, - std::vector >& matches, float maxDistance, - InputArrayOfArrays masks, bool compactResult ) -{ - Mat queryDescriptors; - extractor->compute( queryImage, queryKeypoints, queryDescriptors ); - matcher->radiusMatch( queryDescriptors, matches, maxDistance, masks, compactResult ); -} - -void VectorDescriptorMatcher::read( const FileNode& fn ) -{ - GenericDescriptorMatcher::read(fn); - extractor->read(fn); -} - -void VectorDescriptorMatcher::write (FileStorage& fs) const -{ - GenericDescriptorMatcher::write(fs); - extractor->write (fs); -} - -bool VectorDescriptorMatcher::empty() const -{ - return !extractor || extractor->empty() || - !matcher || matcher->empty(); -} - -Ptr VectorDescriptorMatcher::clone( bool emptyTrainData ) const -{ - // TODO clone extractor - return makePtr( extractor, matcher->clone(emptyTrainData) ); -} - } diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 4fe9cbc237..57bce1ce4e 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -35,7 +35,7 @@ /** Authors: Ethan Rublee, Vincent Rabaud, Gary Bradski */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_features2d.hpp" #include //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/modules/features2d/src/stardetector.cpp b/modules/features2d/src/stardetector.cpp deleted file mode 100644 index 0b09b8678b..0000000000 --- a/modules/features2d/src/stardetector.cpp +++ /dev/null @@ -1,472 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "precomp.hpp" - -namespace cv -{ - -template static void -computeIntegralImages( const Mat& matI, Mat& matS, Mat& matT, Mat& _FT, - int iiType ) -{ - int x, y, rows = matI.rows, cols = matI.cols; - - matS.create(rows + 1, cols + 1, iiType ); - matT.create(rows + 1, cols + 1, iiType ); - _FT.create(rows + 1, cols + 1, iiType ); - - const inMatType* I = matI.ptr(); - - outMatType *S = matS.ptr(); - outMatType *T = matT.ptr(); - outMatType *FT = _FT.ptr(); - - int istep = (int)(matI.step/matI.elemSize()); - int step = (int)(matS.step/matS.elemSize()); - - for( x = 0; x <= cols; x++ ) - S[x] = T[x] = FT[x] = 0; - - S += step; T += step; FT += step; - S[0] = T[0] = 0; - FT[0] = I[0]; - for( x = 1; x < cols; x++ ) - { - S[x] = S[x-1] + I[x-1]; - T[x] = I[x-1]; - FT[x] = I[x] + I[x-1]; - } - S[cols] = S[cols-1] + I[cols-1]; - T[cols] = FT[cols] = I[cols-1]; - - for( y = 2; y <= rows; y++ ) - { - I += istep, S += step, T += step, FT += step; - - S[0] = S[-step]; S[1] = S[-step+1] + I[0]; - T[0] = T[-step + 1]; - T[1] = FT[0] = T[-step + 2] + I[-istep] + I[0]; - FT[1] = FT[-step + 2] + I[-istep] + I[1] + I[0]; - - for( x = 2; x < cols; x++ ) - { - S[x] = S[x - 1] + S[-step + x] - S[-step + x - 1] + I[x - 1]; - T[x] = T[-step + x - 1] + T[-step + x + 1] - T[-step*2 + x] + I[-istep + x - 1] + I[x - 1]; - FT[x] = FT[-step + x - 1] + FT[-step + x + 1] - FT[-step*2 + x] + I[x] + I[x-1]; - } - - S[cols] = S[cols - 1] + S[-step + cols] - S[-step + cols - 1] + I[cols - 1]; - T[cols] = FT[cols] = T[-step + cols - 1] + I[-istep + cols - 1] + I[cols - 1]; - } -} - -template static int -StarDetectorComputeResponses( const Mat& img, Mat& responses, Mat& sizes, - int maxSize, int iiType ) -{ - const int MAX_PATTERN = 17; - static const int sizes0[] = {1, 2, 3, 4, 6, 8, 11, 12, 16, 22, 23, 32, 45, 46, 64, 90, 128, -1}; - static const int pairs[][2] = {{1, 0}, {3, 1}, {4, 2}, {5, 3}, {7, 4}, {8, 5}, {9, 6}, - {11, 8}, {13, 10}, {14, 11}, {15, 12}, {16, 14}, {-1, -1}}; - float invSizes[MAX_PATTERN][2]; - int sizes1[MAX_PATTERN]; - -#if CV_SSE2 - __m128 invSizes4[MAX_PATTERN][2]; - __m128 sizes1_4[MAX_PATTERN]; - union { int i; float f; } absmask; - absmask.i = 0x7fffffff; - volatile bool useSIMD = cv::checkHardwareSupport(CV_CPU_SSE2) && iiType == CV_32S; -#endif - - struct StarFeature - { - int area; - iiMatType* p[8]; - }; - - StarFeature f[MAX_PATTERN]; - - Mat sum, tilted, flatTilted; - int y, rows = img.rows, cols = img.cols; - int border, npatterns=0, maxIdx=0; - - responses.create( img.size(), CV_32F ); - sizes.create( img.size(), CV_16S ); - - while( pairs[npatterns][0] >= 0 && ! - ( sizes0[pairs[npatterns][0]] >= maxSize - || sizes0[pairs[npatterns+1][0]] + sizes0[pairs[npatterns+1][0]]/2 >= std::min(rows, cols) ) ) - { - ++npatterns; - } - - npatterns += (pairs[npatterns-1][0] >= 0); - maxIdx = pairs[npatterns-1][0]; - - // Create the integral image appropriate for our type & usage - if ( img.type() == CV_8U ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_8S ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_16U ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else if ( img.type() == CV_16S ) - computeIntegralImages( img, sum, tilted, flatTilted, iiType ); - else - CV_Error( Error::StsUnsupportedFormat, "" ); - - int step = (int)(sum.step/sum.elemSize()); - - for(int i = 0; i <= maxIdx; i++ ) - { - int ur_size = sizes0[i], t_size = sizes0[i] + sizes0[i]/2; - int ur_area = (2*ur_size + 1)*(2*ur_size + 1); - int t_area = t_size*t_size + (t_size + 1)*(t_size + 1); - - f[i].p[0] = sum.ptr() + (ur_size + 1)*step + ur_size + 1; - f[i].p[1] = sum.ptr() - ur_size*step + ur_size + 1; - f[i].p[2] = sum.ptr() + (ur_size + 1)*step - ur_size; - f[i].p[3] = sum.ptr() - ur_size*step - ur_size; - - f[i].p[4] = tilted.ptr() + (t_size + 1)*step + 1; - f[i].p[5] = flatTilted.ptr() - t_size; - f[i].p[6] = flatTilted.ptr() + t_size + 1; - f[i].p[7] = tilted.ptr() - t_size*step + 1; - - f[i].area = ur_area + t_area; - sizes1[i] = sizes0[i]; - } - // negate end points of the size range - // for a faster rejection of very small or very large features in non-maxima suppression. - sizes1[0] = -sizes1[0]; - sizes1[1] = -sizes1[1]; - sizes1[maxIdx] = -sizes1[maxIdx]; - border = sizes0[maxIdx] + sizes0[maxIdx]/2; - - for(int i = 0; i < npatterns; i++ ) - { - int innerArea = f[pairs[i][1]].area; - int outerArea = f[pairs[i][0]].area - innerArea; - invSizes[i][0] = 1.f/outerArea; - invSizes[i][1] = 1.f/innerArea; - } - -#if CV_SSE2 - if( useSIMD ) - { - for(int i = 0; i < npatterns; i++ ) - { - _mm_store_ps((float*)&invSizes4[i][0], _mm_set1_ps(invSizes[i][0])); - _mm_store_ps((float*)&invSizes4[i][1], _mm_set1_ps(invSizes[i][1])); - } - - for(int i = 0; i <= maxIdx; i++ ) - _mm_store_ps((float*)&sizes1_4[i], _mm_set1_ps((float)sizes1[i])); - } -#endif - - for( y = 0; y < border; y++ ) - { - float* r_ptr = responses.ptr(y); - float* r_ptr2 = responses.ptr(rows - 1 - y); - short* s_ptr = sizes.ptr(y); - short* s_ptr2 = sizes.ptr(rows - 1 - y); - - memset( r_ptr, 0, cols*sizeof(r_ptr[0])); - memset( r_ptr2, 0, cols*sizeof(r_ptr2[0])); - memset( s_ptr, 0, cols*sizeof(s_ptr[0])); - memset( s_ptr2, 0, cols*sizeof(s_ptr2[0])); - } - - for( y = border; y < rows - border; y++ ) - { - int x = border; - float* r_ptr = responses.ptr(y); - short* s_ptr = sizes.ptr(y); - - memset( r_ptr, 0, border*sizeof(r_ptr[0])); - memset( s_ptr, 0, border*sizeof(s_ptr[0])); - memset( r_ptr + cols - border, 0, border*sizeof(r_ptr[0])); - memset( s_ptr + cols - border, 0, border*sizeof(s_ptr[0])); - -#if CV_SSE2 - if( useSIMD ) - { - __m128 absmask4 = _mm_set1_ps(absmask.f); - for( ; x <= cols - border - 4; x += 4 ) - { - int ofs = y*step + x; - __m128 vals[MAX_PATTERN]; - __m128 bestResponse = _mm_setzero_ps(); - __m128 bestSize = _mm_setzero_ps(); - - for(int i = 0; i <= maxIdx; i++ ) - { - const iiMatType** p = (const iiMatType**)&f[i].p[0]; - __m128i r0 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[0]+ofs)), - _mm_loadu_si128((const __m128i*)(p[1]+ofs))); - __m128i r1 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[3]+ofs)), - _mm_loadu_si128((const __m128i*)(p[2]+ofs))); - __m128i r2 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[4]+ofs)), - _mm_loadu_si128((const __m128i*)(p[5]+ofs))); - __m128i r3 = _mm_sub_epi32(_mm_loadu_si128((const __m128i*)(p[7]+ofs)), - _mm_loadu_si128((const __m128i*)(p[6]+ofs))); - r0 = _mm_add_epi32(_mm_add_epi32(r0,r1), _mm_add_epi32(r2,r3)); - _mm_store_ps((float*)&vals[i], _mm_cvtepi32_ps(r0)); - } - - for(int i = 0; i < npatterns; i++ ) - { - __m128 inner_sum = vals[pairs[i][1]]; - __m128 outer_sum = _mm_sub_ps(vals[pairs[i][0]], inner_sum); - __m128 response = _mm_sub_ps(_mm_mul_ps(inner_sum, invSizes4[i][1]), - _mm_mul_ps(outer_sum, invSizes4[i][0])); - __m128 swapmask = _mm_cmpgt_ps(_mm_and_ps(response,absmask4), - _mm_and_ps(bestResponse,absmask4)); - bestResponse = _mm_xor_ps(bestResponse, - _mm_and_ps(_mm_xor_ps(response,bestResponse), swapmask)); - bestSize = _mm_xor_ps(bestSize, - _mm_and_ps(_mm_xor_ps(sizes1_4[pairs[i][0]], bestSize), swapmask)); - } - - _mm_storeu_ps(r_ptr + x, bestResponse); - _mm_storel_epi64((__m128i*)(s_ptr + x), - _mm_packs_epi32(_mm_cvtps_epi32(bestSize),_mm_setzero_si128())); - } - } -#endif - for( ; x < cols - border; x++ ) - { - int ofs = y*step + x; - int vals[MAX_PATTERN]; - float bestResponse = 0; - int bestSize = 0; - - for(int i = 0; i <= maxIdx; i++ ) - { - const iiMatType** p = (const iiMatType**)&f[i].p[0]; - vals[i] = (int)(p[0][ofs] - p[1][ofs] - p[2][ofs] + p[3][ofs] + - p[4][ofs] - p[5][ofs] - p[6][ofs] + p[7][ofs]); - } - for(int i = 0; i < npatterns; i++ ) - { - int inner_sum = vals[pairs[i][1]]; - int outer_sum = vals[pairs[i][0]] - inner_sum; - float response = inner_sum*invSizes[i][1] - outer_sum*invSizes[i][0]; - if( fabs(response) > fabs(bestResponse) ) - { - bestResponse = response; - bestSize = sizes1[pairs[i][0]]; - } - } - - r_ptr[x] = bestResponse; - s_ptr[x] = (short)bestSize; - } - } - - return border; -} - - -static bool StarDetectorSuppressLines( const Mat& responses, const Mat& sizes, Point pt, - int lineThresholdProjected, int lineThresholdBinarized ) -{ - const float* r_ptr = responses.ptr(); - int rstep = (int)(responses.step/sizeof(r_ptr[0])); - const short* s_ptr = sizes.ptr(); - int sstep = (int)(sizes.step/sizeof(s_ptr[0])); - int sz = s_ptr[pt.y*sstep + pt.x]; - int x, y, delta = sz/4, radius = delta*4; - float Lxx = 0, Lyy = 0, Lxy = 0; - int Lxxb = 0, Lyyb = 0, Lxyb = 0; - - for( y = pt.y - radius; y <= pt.y + radius; y += delta ) - for( x = pt.x - radius; x <= pt.x + radius; x += delta ) - { - float Lx = r_ptr[y*rstep + x + 1] - r_ptr[y*rstep + x - 1]; - float Ly = r_ptr[(y+1)*rstep + x] - r_ptr[(y-1)*rstep + x]; - Lxx += Lx*Lx; Lyy += Ly*Ly; Lxy += Lx*Ly; - } - - if( (Lxx + Lyy)*(Lxx + Lyy) >= lineThresholdProjected*(Lxx*Lyy - Lxy*Lxy) ) - return true; - - for( y = pt.y - radius; y <= pt.y + radius; y += delta ) - for( x = pt.x - radius; x <= pt.x + radius; x += delta ) - { - int Lxb = (s_ptr[y*sstep + x + 1] == sz) - (s_ptr[y*sstep + x - 1] == sz); - int Lyb = (s_ptr[(y+1)*sstep + x] == sz) - (s_ptr[(y-1)*sstep + x] == sz); - Lxxb += Lxb * Lxb; Lyyb += Lyb * Lyb; Lxyb += Lxb * Lyb; - } - - if( (Lxxb + Lyyb)*(Lxxb + Lyyb) >= lineThresholdBinarized*(Lxxb*Lyyb - Lxyb*Lxyb) ) - return true; - - return false; -} - - -static void -StarDetectorSuppressNonmax( const Mat& responses, const Mat& sizes, - std::vector& keypoints, int border, - int responseThreshold, - int lineThresholdProjected, - int lineThresholdBinarized, - int suppressNonmaxSize ) -{ - int x, y, x1, y1, delta = suppressNonmaxSize/2; - int rows = responses.rows, cols = responses.cols; - const float* r_ptr = responses.ptr(); - int rstep = (int)(responses.step/sizeof(r_ptr[0])); - const short* s_ptr = sizes.ptr(); - int sstep = (int)(sizes.step/sizeof(s_ptr[0])); - short featureSize = 0; - - for( y = border; y < rows - border; y += delta+1 ) - for( x = border; x < cols - border; x += delta+1 ) - { - float maxResponse = (float)responseThreshold; - float minResponse = (float)-responseThreshold; - Point maxPt(-1, -1), minPt(-1, -1); - int tileEndY = MIN(y + delta, rows - border - 1); - int tileEndX = MIN(x + delta, cols - border - 1); - - for( y1 = y; y1 <= tileEndY; y1++ ) - for( x1 = x; x1 <= tileEndX; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( maxResponse < val ) - { - maxResponse = val; - maxPt = Point(x1, y1); - } - else if( minResponse > val ) - { - minResponse = val; - minPt = Point(x1, y1); - } - } - - if( maxPt.x >= 0 ) - { - for( y1 = maxPt.y - delta; y1 <= maxPt.y + delta; y1++ ) - for( x1 = maxPt.x - delta; x1 <= maxPt.x + delta; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( val >= maxResponse && (y1 != maxPt.y || x1 != maxPt.x)) - goto skip_max; - } - - if( (featureSize = s_ptr[maxPt.y*sstep + maxPt.x]) >= 4 && - !StarDetectorSuppressLines( responses, sizes, maxPt, lineThresholdProjected, - lineThresholdBinarized )) - { - KeyPoint kpt((float)maxPt.x, (float)maxPt.y, featureSize, -1, maxResponse); - keypoints.push_back(kpt); - } - } - skip_max: - if( minPt.x >= 0 ) - { - for( y1 = minPt.y - delta; y1 <= minPt.y + delta; y1++ ) - for( x1 = minPt.x - delta; x1 <= minPt.x + delta; x1++ ) - { - float val = r_ptr[y1*rstep + x1]; - if( val <= minResponse && (y1 != minPt.y || x1 != minPt.x)) - goto skip_min; - } - - if( (featureSize = s_ptr[minPt.y*sstep + minPt.x]) >= 4 && - !StarDetectorSuppressLines( responses, sizes, minPt, - lineThresholdProjected, lineThresholdBinarized)) - { - KeyPoint kpt((float)minPt.x, (float)minPt.y, featureSize, -1, maxResponse); - keypoints.push_back(kpt); - } - } - skip_min: - ; - } -} - -StarDetector::StarDetector(int _maxSize, int _responseThreshold, - int _lineThresholdProjected, - int _lineThresholdBinarized, - int _suppressNonmaxSize) -: maxSize(_maxSize), responseThreshold(_responseThreshold), - lineThresholdProjected(_lineThresholdProjected), - lineThresholdBinarized(_lineThresholdBinarized), - suppressNonmaxSize(_suppressNonmaxSize) -{} - - -void StarDetector::detectImpl( InputArray _image, std::vector& keypoints, InputArray _mask ) const -{ - Mat image = _image.getMat(), mask = _mask.getMat(), grayImage = image; - if( image.channels() > 1 ) cvtColor( image, grayImage, COLOR_BGR2GRAY ); - - (*this)(grayImage, keypoints); - KeyPointsFilter::runByPixelsMask( keypoints, mask ); -} - -void StarDetector::operator()(const Mat& img, std::vector& keypoints) const -{ - Mat responses, sizes; - int border; - - // Use 32-bit integers if we won't overflow in the integral image - if ((img.depth() == CV_8U || img.depth() == CV_8S) && - (img.rows * img.cols) < 8388608 ) // 8388608 = 2 ^ (32 - 8(bit depth) - 1(sign bit)) - border = StarDetectorComputeResponses( img, responses, sizes, maxSize, CV_32S ); - else - border = StarDetectorComputeResponses( img, responses, sizes, maxSize, CV_64F ); - - keypoints.clear(); - if( border >= 0 ) - StarDetectorSuppressNonmax( responses, sizes, keypoints, border, - responseThreshold, lineThresholdProjected, - lineThresholdBinarized, suppressNonmaxSize ); -} - -} diff --git a/modules/features2d/test/ocl/test_brute_force_matcher.cpp b/modules/features2d/test/ocl/test_brute_force_matcher.cpp index 0e1df784f2..635953307c 100644 --- a/modules/features2d/test/ocl/test_brute_force_matcher.cpp +++ b/modules/features2d/test/ocl/test_brute_force_matcher.cpp @@ -48,7 +48,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/features2d/test/test_descriptors_regression.cpp b/modules/features2d/test/test_descriptors_regression.cpp index 7119d590ef..944f297bb2 100644 --- a/modules/features2d/test/test_descriptors_regression.cpp +++ b/modules/features2d/test/test_descriptors_regression.cpp @@ -40,7 +40,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/highgui.hpp" using namespace std; using namespace cv; @@ -102,8 +101,14 @@ public: typedef typename Distance::ResultType DistanceType; CV_DescriptorExtractorTest( const string _name, DistanceType _maxDist, const Ptr& _dextractor, - Distance d = Distance() ): - name(_name), maxDist(_maxDist), dextractor(_dextractor), distance(d) {} + Distance d = Distance(), Ptr _detector = Ptr()): + name(_name), maxDist(_maxDist), dextractor(_dextractor), distance(d) , detector(_detector) {} + + ~CV_DescriptorExtractorTest() + { + if(!detector.empty()) + detector.release(); + } protected: virtual void createDescriptorExtractor() {} @@ -190,7 +195,6 @@ protected: // Read the test image. string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - Mat img = imread( imgFilename ); if( img.empty() ) { @@ -198,13 +202,15 @@ protected: ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); return; } - vector keypoints; FileStorage fs( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::READ ); - if( fs.isOpened() ) - { + if(!detector.empty()) { + detector->detect(img, keypoints); + } else { read( fs.getFirstTopLevelNode(), keypoints ); - + } + if(!keypoints.empty()) + { Mat calcDescriptors; double t = (double)getTickCount(); dextractor->compute( img, keypoints, calcDescriptors ); @@ -245,7 +251,7 @@ protected: } } } - else + if(!fs.isOpened()) { ts->printf( cvtest::TS::LOG, "Compute and write keypoints.\n" ); fs.open( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::WRITE ); @@ -296,6 +302,7 @@ protected: const DistanceType maxDist; Ptr dextractor; Distance distance; + Ptr detector; private: CV_DescriptorExtractorTest& operator=(const CV_DescriptorExtractorTest&) { return *this; } @@ -320,24 +327,18 @@ TEST( Features2d_DescriptorExtractor_ORB, regression ) test.safe_run(); } -TEST( Features2d_DescriptorExtractor_FREAK, regression ) +TEST( Features2d_DescriptorExtractor_KAZE, regression ) { - // TODO adjust the parameters below - CV_DescriptorExtractorTest test( "descriptor-freak", (CV_DescriptorExtractorTest::DistanceType)12.f, - DescriptorExtractor::create("FREAK") ); + CV_DescriptorExtractorTest< L2 > test( "descriptor-kaze", 0.03f, + DescriptorExtractor::create("KAZE"), + L2(), FeatureDetector::create("KAZE")); test.safe_run(); } -TEST( Features2d_DescriptorExtractor_BRIEF, regression ) +TEST( Features2d_DescriptorExtractor_AKAZE, regression ) { - CV_DescriptorExtractorTest test( "descriptor-brief", 1, - DescriptorExtractor::create("BRIEF") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_OpponentBRIEF, regression ) -{ - CV_DescriptorExtractorTest test( "descriptor-opponent-brief", 1, - DescriptorExtractor::create("OpponentBRIEF") ); + CV_DescriptorExtractorTest test( "descriptor-akaze", (CV_DescriptorExtractorTest::DistanceType)12.f, + DescriptorExtractor::create("AKAZE"), + Hamming(), FeatureDetector::create("AKAZE")); test.safe_run(); } diff --git a/modules/features2d/test/test_detectors_regression.cpp b/modules/features2d/test/test_detectors_regression.cpp index 8f34913a9a..1a7d09a853 100644 --- a/modules/features2d/test/test_detectors_regression.cpp +++ b/modules/features2d/test/test_detectors_regression.cpp @@ -277,26 +277,20 @@ TEST( Features2d_Detector_MSER, DISABLED_regression ) test.safe_run(); } -TEST( Features2d_Detector_STAR, regression ) -{ - CV_FeatureDetectorTest test( "detector-star", FeatureDetector::create("STAR") ); - test.safe_run(); -} - TEST( Features2d_Detector_ORB, regression ) { CV_FeatureDetectorTest test( "detector-orb", FeatureDetector::create("ORB") ); test.safe_run(); } -TEST( Features2d_Detector_GridFAST, regression ) +TEST( Features2d_Detector_KAZE, regression ) { - CV_FeatureDetectorTest test( "detector-grid-fast", FeatureDetector::create("GridFAST") ); + CV_FeatureDetectorTest test( "detector-kaze", FeatureDetector::create("KAZE") ); test.safe_run(); } -TEST( Features2d_Detector_PyramidFAST, regression ) +TEST( Features2d_Detector_AKAZE, regression ) { - CV_FeatureDetectorTest test( "detector-pyramid-fast", FeatureDetector::create("PyramidFAST") ); + CV_FeatureDetectorTest test( "detector-akaze", FeatureDetector::create("AKAZE") ); test.safe_run(); } diff --git a/modules/features2d/test/test_keypoints.cpp b/modules/features2d/test/test_keypoints.cpp index 6f9a7e1ed3..349c03ed49 100644 --- a/modules/features2d/test/test_keypoints.cpp +++ b/modules/features2d/test/test_keypoints.cpp @@ -155,31 +155,17 @@ TEST(Features2d_Detector_Keypoints_ORB, validation) test.safe_run(); } -TEST(Features2d_Detector_Keypoints_Star, validation) -{ - CV_FeatureDetectorKeypointsTest test(Algorithm::create("Feature2D.STAR")); - test.safe_run(); -} - -TEST(Features2d_Detector_Keypoints_Dense, validation) -{ - CV_FeatureDetectorKeypointsTest test(Algorithm::create("Feature2D.Dense")); - test.safe_run(); -} - -// FIXIT #2807 Crash on Windows 7 x64 MSVS 2012, Linux Fedora 19 x64 with GCC 4.8.2, Linux Ubuntu 14.04 LTS x64 with GCC 4.8.2 -TEST(Features2d_Detector_Keypoints_KAZE, DISABLED_validation) +TEST(Features2d_Detector_Keypoints_KAZE, validation) { CV_FeatureDetectorKeypointsTest test(Algorithm::create("Feature2D.KAZE")); test.safe_run(); } -// FIXIT #2807 Crash on Windows 7 x64 MSVS 2012, Linux Fedora 19 x64 with GCC 4.8.2, Linux Ubuntu 14.04 LTS x64 with GCC 4.8.2 -TEST(Features2d_Detector_Keypoints_AKAZE, DISABLED_validation) +TEST(Features2d_Detector_Keypoints_AKAZE, validation) { - CV_FeatureDetectorKeypointsTest test_kaze(cv::Ptr(new cv::AKAZE(cv::AKAZE::DESCRIPTOR_KAZE))); + CV_FeatureDetectorKeypointsTest test_kaze(cv::Ptr(new cv::AKAZE(cv::DESCRIPTOR_KAZE))); test_kaze.safe_run(); - CV_FeatureDetectorKeypointsTest test_mldb(cv::Ptr(new cv::AKAZE(cv::AKAZE::DESCRIPTOR_MLDB))); + CV_FeatureDetectorKeypointsTest test_mldb(cv::Ptr(new cv::AKAZE(cv::DESCRIPTOR_MLDB))); test_mldb.safe_run(); } diff --git a/modules/features2d/test/test_precomp.hpp b/modules/features2d/test/test_precomp.hpp index 49bc1dfd18..bce72f7296 100644 --- a/modules/features2d/test/test_precomp.hpp +++ b/modules/features2d/test/test_precomp.hpp @@ -12,7 +12,7 @@ #include "opencv2/ts.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/features2d.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #include #endif diff --git a/modules/features2d/test/test_rotation_and_scale_invariance.cpp b/modules/features2d/test/test_rotation_and_scale_invariance.cpp index 69ba6f0525..fa6a136f34 100644 --- a/modules/features2d/test/test_rotation_and_scale_invariance.cpp +++ b/modules/features2d/test/test_rotation_and_scale_invariance.cpp @@ -652,8 +652,7 @@ TEST(Features2d_ScaleInvariance_Detector_BRISK, regression) test.safe_run(); } -// FIXIT #2807 Crash on Windows 7 x64 MSVS 2012, Linux Fedora 19 x64 with GCC 4.8.2, Linux Ubuntu 14.04 LTS x64 with GCC 4.8.2 -TEST(Features2d_ScaleInvariance_Detector_KAZE, DISABLED_regression) +TEST(Features2d_ScaleInvariance_Detector_KAZE, regression) { DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.KAZE"), 0.08f, @@ -661,8 +660,7 @@ TEST(Features2d_ScaleInvariance_Detector_KAZE, DISABLED_regression) test.safe_run(); } -// FIXIT #2807 Crash on Windows 7 x64 MSVS 2012, Linux Fedora 19 x64 with GCC 4.8.2, Linux Ubuntu 14.04 LTS x64 with GCC 4.8.2 -TEST(Features2d_ScaleInvariance_Detector_AKAZE, DISABLED_regression) +TEST(Features2d_ScaleInvariance_Detector_AKAZE, regression) { DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.AKAZE"), 0.08f, diff --git a/modules/flann/include/opencv2/flann/dist.h b/modules/flann/include/opencv2/flann/dist.h index 6a03b48a12..9dbe5278d9 100644 --- a/modules/flann/include/opencv2/flann/dist.h +++ b/modules/flann/include/opencv2/flann/dist.h @@ -595,7 +595,7 @@ struct HellingerDistance typedef typename Accumulator::Type ResultType; /** - * Compute the histogram intersection distance + * Compute the Hellinger distance */ template ResultType operator()(Iterator1 a, Iterator2 b, size_t size, ResultType /*worst_dist*/ = -1) const @@ -628,7 +628,8 @@ struct HellingerDistance template inline ResultType accum_dist(const U& a, const V& b, int) const { - return sqrt(static_cast(a)) - sqrt(static_cast(b)); + ResultType diff = sqrt(static_cast(a)) - sqrt(static_cast(b)); + return diff * diff; } }; @@ -729,9 +730,11 @@ struct KL_Divergence inline ResultType accum_dist(const U& a, const V& b, int) const { ResultType result = ResultType(); - ResultType ratio = (ResultType)(a / b); - if (ratio>0) { - result = a * log(ratio); + if( *b != 0 ) { + ResultType ratio = (ResultType)(a / b); + if (ratio>0) { + result = a * log(ratio); + } } return result; } @@ -837,6 +840,66 @@ typename Distance::ResultType ensureSquareDistance( typename Distance::ResultTyp return dummy( dist ); } + +/* + * ...and a template to ensure the user that he will process the normal distance, + * and not squared distance, without loosing processing time calling sqrt(ensureSquareDistance) + * that will result in doing actually sqrt(dist*dist) for L1 distance for instance. + */ +template +struct simpleDistance +{ + typedef typename Distance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return dist; } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename L2_Simple::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename L2::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +struct simpleDistance, ElementType> +{ + typedef typename MinkowskiDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename HellingerDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + +template +struct simpleDistance, ElementType> +{ + typedef typename ChiSquareDistance::ResultType ResultType; + ResultType operator()( ResultType dist ) { return sqrt(dist); } +}; + + +template +typename Distance::ResultType ensureSimpleDistance( typename Distance::ResultType dist ) +{ + typedef typename Distance::ElementType ElementType; + + simpleDistance dummy; + return dummy( dist ); +} + } #endif //OPENCV_FLANN_DIST_H_ diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt index 71975ce488..de8c27ba33 100644 --- a/modules/highgui/CMakeLists.txt +++ b/modules/highgui/CMakeLists.txt @@ -1,5 +1,5 @@ set(the_description "High-level GUI and Media I/O") -ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_androidcamera) +ocv_add_module(highgui opencv_imgproc opencv_imgcodecs opencv_videoio OPTIONAL opencv_androidcamera) # ---------------------------------------------------------------------------- # CMake file for highgui. See root CMakeLists.txt @@ -7,86 +7,37 @@ ocv_add_module(highgui opencv_imgproc OPTIONAL opencv_androidcamera) # Jose Luis Blanco, 2008 # ---------------------------------------------------------------------------- -ocv_clear_vars(GRFMT_LIBS) - if(HAVE_WINRT_CX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") endif() -if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR) +if(APPLE) ocv_include_directories(${ZLIB_INCLUDE_DIRS}) - list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES}) + list(APPEND HIGHGUI_LIBRARIES ${ZLIB_LIBRARIES}) endif() -if(HAVE_JPEG) - ocv_include_directories(${JPEG_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES}) -endif() - -if(WITH_WEBP) - add_definitions(-DHAVE_WEBP) - ocv_include_directories(${WEBP_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES}) -endif() - -if(HAVE_PNG) - add_definitions(${PNG_DEFINITIONS}) - ocv_include_directories(${PNG_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${PNG_LIBRARIES}) -endif() - -if(HAVE_TIFF) - ocv_include_directories(${TIFF_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES}) -endif() - -if(HAVE_JASPER) - ocv_include_directories(${JASPER_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES}) -endif() - -if(HAVE_OPENEXR) - include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS}) - list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) -endif() - -if(HAVE_GDAL) - include_directories(SYSTEM ${GDAL_INCLUDE_DIR}) - list(APPEND GRFMT_LIBS ${GDAL_LIBRARY}) -endif() - -file(GLOB grfmt_hdrs src/grfmt*.hpp) -file(GLOB grfmt_srcs src/grfmt*.cpp) -list(APPEND grfmt_hdrs src/bitstrm.hpp) -list(APPEND grfmt_srcs src/bitstrm.cpp) -list(APPEND grfmt_hdrs src/rgbe.hpp) -list(APPEND grfmt_srcs src/rgbe.cpp) - -source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) - set(highgui_hdrs - src/precomp.hpp - src/utils.hpp - src/cap_ffmpeg_impl.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp ) set(highgui_srcs - src/cap.cpp - src/cap_images.cpp - src/cap_ffmpeg.cpp - src/loadsave.cpp - src/utils.cpp - src/window.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/window.cpp ) -file(GLOB highgui_ext_hdrs "include/opencv2/*.hpp" "include/opencv2/${name}/*.hpp" "include/opencv2/${name}/*.h") +file(GLOB highgui_ext_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h") if(HAVE_QT5) set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) - QT5_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) - list(APPEND highgui_srcs src/window_QT.cpp src/window_QT.h ${_RCC_OUTFILES}) + QT5_ADD_RESOURCES(_RCC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.qrc) + list(APPEND highgui_srcs + ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.h + ${_RCC_OUTFILES}) foreach(dt5_dep Core Gui Widgets Test Concurrent) add_definitions(${Qt5${dt5_dep}_DEFINITIONS}) @@ -106,149 +57,27 @@ elseif(HAVE_QT) endif() include(${QT_USE_FILE}) - QT4_ADD_RESOURCES(_RCC_OUTFILES src/window_QT.qrc) - QT4_WRAP_CPP(_MOC_OUTFILES src/window_QT.h) + QT4_ADD_RESOURCES(_RCC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.qrc) + QT4_WRAP_CPP(_MOC_OUTFILES ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.h) list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES}) - list(APPEND highgui_srcs src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES}) ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag) if(${_have_flag}) set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations) endif() elseif(HAVE_WIN32UI) - list(APPEND highgui_srcs src/window_w32.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_w32.cpp) elseif(HAVE_GTK OR HAVE_GTK3) - list(APPEND highgui_srcs src/window_gtk.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_gtk.cpp) elseif(HAVE_CARBON) - list(APPEND highgui_srcs src/window_carbon.cpp) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_carbon.cpp) list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime") elseif(HAVE_COCOA) - list(APPEND highgui_srcs src/window_cocoa.mm) + list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_cocoa.mm) list(APPEND HIGHGUI_LIBRARIES "-framework Cocoa") endif() -if(WIN32 AND NOT ARM) - list(APPEND highgui_srcs src/cap_cmu.cpp) -endif() - -if (WIN32 AND HAVE_DSHOW) - list(APPEND highgui_srcs src/cap_dshow.cpp) -endif() - -if (WIN32 AND HAVE_MSMF) - list(APPEND highgui_srcs src/cap_msmf.cpp) -endif() - -if (WIN32 AND HAVE_VFW) - list(APPEND highgui_srcs src/cap_vfw.cpp) -endif() - -if(HAVE_XINE) - list(APPEND highgui_srcs src/cap_xine.cpp) -endif(HAVE_XINE) - -if(HAVE_DC1394_2) - list(APPEND highgui_srcs src/cap_dc1394_v2.cpp) -endif(HAVE_DC1394_2) - -if(HAVE_DC1394) - list(APPEND highgui_srcs src/cap_dc1394.cpp) -endif(HAVE_DC1394) - -if(HAVE_GSTREAMER) - list(APPEND highgui_srcs src/cap_gstreamer.cpp) -endif(HAVE_GSTREAMER) - -if(HAVE_UNICAP) - list(APPEND highgui_srcs src/cap_unicap.cpp) -endif(HAVE_UNICAP) - -if(HAVE_LIBV4L) - list(APPEND highgui_srcs src/cap_libv4l.cpp) -elseif(HAVE_CAMV4L OR HAVE_CAMV4L2 OR HAVE_VIDEOIO) - list(APPEND highgui_srcs src/cap_v4l.cpp) -endif() - -if(HAVE_OPENNI) - list(APPEND highgui_srcs src/cap_openni.cpp) - ocv_include_directories(${OPENNI_INCLUDE_DIR}) - list(APPEND HIGHGUI_LIBRARIES ${OPENNI_LIBRARY}) -endif(HAVE_OPENNI) - -if(HAVE_opencv_androidcamera) - list(APPEND highgui_srcs src/cap_android.cpp) - add_definitions(-DHAVE_ANDROID_NATIVE_CAMERA)#TODO: remove this line -endif(HAVE_opencv_androidcamera) - -if(HAVE_XIMEA) - list(APPEND highgui_srcs src/cap_ximea.cpp) - ocv_include_directories(${XIMEA_PATH}) - if(XIMEA_LIBRARY_DIR) - link_directories("${XIMEA_LIBRARY_DIR}") - endif() - if(X86_64) - list(APPEND HIGHGUI_LIBRARIES m3apiX64) - else() - list(APPEND HIGHGUI_LIBRARIES m3api) - endif() -endif(HAVE_XIMEA) - -if(HAVE_FFMPEG) - if(UNIX AND BZIP2_LIBRARIES) - list(APPEND HIGHGUI_LIBRARIES ${BZIP2_LIBRARIES}) - endif() - if(APPLE) - list(APPEND HIGHGUI_LIBRARIES "-framework VideoDecodeAcceleration" bz2) - endif() -endif(HAVE_FFMPEG) - -if(HAVE_PVAPI) - add_definitions(-DHAVE_PVAPI) - add_definitions(${PVAPI_DEFINITIONS}) - ocv_include_directories(${PVAPI_INCLUDE_PATH}) - set(highgui_srcs src/cap_pvapi.cpp ${highgui_srcs}) - list(APPEND HIGHGUI_LIBRARIES ${PVAPI_LIBRARY}) -endif() - -if(HAVE_GIGE_API) - add_definitions(-DHAVE_GIGE_API) - ocv_include_directories(${GIGEAPI_INCLUDE_PATH}) - set(highgui_srcs src/cap_giganetix.cpp ${highgui_srcs}) - list(APPEND HIGHGUI_LIBRARIES ${GIGEAPI_LIBRARIES}) - list(APPEND highgui_srcs src/cap_giganetix.cpp) -endif(HAVE_GIGE_API) - -if(HAVE_AVFOUNDATION) - list(APPEND highgui_srcs src/cap_avfoundation.mm) - list(APPEND HIGHGUI_LIBRARIES "-framework AVFoundation" "-framework QuartzCore") -endif() - -if(HAVE_QUICKTIME) - list(APPEND highgui_srcs src/cap_qt.cpp) - list(APPEND HIGHGUI_LIBRARIES "-framework Carbon" "-framework QuickTime" "-framework CoreFoundation" "-framework QuartzCore") -elseif(HAVE_QTKIT) - list(APPEND highgui_srcs src/cap_qtkit.mm) - list(APPEND HIGHGUI_LIBRARIES "-framework QTKit" "-framework QuartzCore" "-framework AppKit") -endif() - -if(HAVE_INTELPERC) - list(APPEND highgui_srcs src/cap_intelperc.cpp) - ocv_include_directories(${INTELPERC_INCLUDE_DIR}) - list(APPEND HIGHGUI_LIBRARIES ${INTELPERC_LIBRARIES}) -endif(HAVE_INTELPERC) - -if(IOS) - add_definitions(-DHAVE_IOS=1) - list(APPEND highgui_srcs src/ios_conversions.mm src/cap_ios_abstract_camera.mm src/cap_ios_photo_camera.mm src/cap_ios_video_camera.mm) - list(APPEND HIGHGUI_LIBRARIES "-framework Accelerate" "-framework AVFoundation" "-framework CoreGraphics" "-framework CoreImage" "-framework CoreMedia" "-framework CoreVideo" "-framework QuartzCore" "-framework AssetsLibrary") -endif() - -if(WIN32) - link_directories("${OpenCV_SOURCE_DIR}/3rdparty/lib") # for ffmpeg wrapper only - include_directories(AFTER SYSTEM "${OpenCV_SOURCE_DIR}/3rdparty/include") # for directshow in VS2005 and multi-monitor support on MinGW - include_directories(AFTER SYSTEM "${OpenCV_SOURCE_DIR}/3rdparty/include/ffmpeg_") # for tests -endif() - if(UNIX) #these variables are set by CHECK_MODULE macro foreach(P ${HIGHGUI_INCLUDE_DIRS}) @@ -262,11 +91,12 @@ endif() source_group("Src" FILES ${highgui_srcs} ${highgui_hdrs}) source_group("Include" FILES ${highgui_ext_hdrs}) -ocv_set_module_sources(HEADERS ${highgui_ext_hdrs} SOURCES ${highgui_srcs} ${highgui_hdrs} ${grfmt_srcs} ${grfmt_hdrs}) +ocv_set_module_sources(HEADERS ${highgui_ext_hdrs} SOURCES ${highgui_srcs} ${highgui_hdrs}) ocv_module_include_directories() -ocv_create_module(${GRFMT_LIBS} ${HIGHGUI_LIBRARIES}) +ocv_create_module(${HIGHGUI_LIBRARIES}) +macro(ocv_highgui_configure_target) if(APPLE) ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS) if(HAVE_OBJC_EXCEPTIONS) @@ -293,38 +123,16 @@ if(MSVC) set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") endif() -#stop automatic dependencies propagation for this module -set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +if(NOT BUILD_opencv_world) + #stop automatic dependencies propagation for this module + set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") +endif() -ocv_add_precompiled_headers(${the_module}) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) +endmacro() -if(WIN32 AND WITH_FFMPEG) - #copy ffmpeg dll to the output folder - if(MSVC64 OR MINGW64) - set(FFMPEG_SUFFIX _64) - endif() - - set(ffmpeg_bare_name "opencv_ffmpeg${FFMPEG_SUFFIX}.dll") - set(ffmpeg_bare_name_ver "opencv_ffmpeg${OPENCV_DLLVERSION}${FFMPEG_SUFFIX}.dll") - set(ffmpeg_path "${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/${ffmpeg_bare_name}") - - if(MSVC_IDE) - add_custom_command(TARGET ${the_module} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Release/${ffmpeg_bare_name_ver}" - COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/Debug/${ffmpeg_bare_name_ver}" - COMMENT "Copying ${ffmpeg_path} to the output directory") - elseif(MSVC AND (CMAKE_GENERATOR MATCHES "Visual")) - add_custom_command(TARGET ${the_module} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/${ffmpeg_bare_name_ver}" - COMMENT "Copying ${ffmpeg_path} to the output directory") - else() - add_custom_command(TARGET ${the_module} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy "${ffmpeg_path}" "${EXECUTABLE_OUTPUT_PATH}/${ffmpeg_bare_name_ver}" - COMMENT "Copying ${ffmpeg_path} to the output directory") - endif() - - install(FILES "${ffmpeg_path}" DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT libs RENAME "${ffmpeg_bare_name_ver}") +if(NOT BUILD_opencv_world) + ocv_highgui_configure_target() endif() ocv_add_accuracy_tests() diff --git a/modules/highgui/doc/highgui.rst b/modules/highgui/doc/highgui.rst index 02beddbafb..b42ac7a8ef 100644 --- a/modules/highgui/doc/highgui.rst +++ b/modules/highgui/doc/highgui.rst @@ -9,12 +9,9 @@ It provides easy interface to: * Create and manipulate windows that can display images and "remember" their content (no need to handle repaint events from OS). * Add trackbars to the windows, handle simple mouse events as well as keyboard commands. -* Read and write images to/from disk or memory. -* Read video from camera or file and write video to a file. .. toctree:: :maxdepth: 2 user_interface - reading_and_writing_images_and_video qt_new_functions diff --git a/modules/highgui/doc/user_interface.rst b/modules/highgui/doc/user_interface.rst index 0d0ccde946..565ea6d449 100644 --- a/modules/highgui/doc/user_interface.rst +++ b/modules/highgui/doc/user_interface.rst @@ -83,6 +83,9 @@ If window was created with OpenGL support, ``imshow`` also support :ocv:class:`o .. note:: This function should be followed by ``waitKey`` function which displays the image for specified milliseconds. Otherwise, it won't display the image. For example, ``waitKey(0)`` will display the window infinitely until any keypress (it is suitable for image display). ``waitKey(25)`` will display a frame for 25 ms, after which display will be automatically closed. (If you put it in a loop to read videos, it will display the video frame-by-frame) +.. note:: + + [Windows Backend Only] Pressing Ctrl+C will copy the image to the clipboard. namedWindow --------------- diff --git a/modules/highgui/include/opencv2/highgui.hpp b/modules/highgui/include/opencv2/highgui.hpp index f1ca5e0c1d..aef9105f74 100644 --- a/modules/highgui/include/opencv2/highgui.hpp +++ b/modules/highgui/include/opencv2/highgui.hpp @@ -44,6 +44,8 @@ #define __OPENCV_HIGHGUI_HPP__ #include "opencv2/core.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/videoio.hpp" ///////////////////////// graphical user interface ////////////////////////// @@ -201,393 +203,4 @@ CV_EXPORTS int createButton( const String& bar_name, ButtonCallback on_change, bool initial_button_state = false); } // cv - - - -//////////////////////////////// image codec //////////////////////////////// -namespace cv -{ - -enum { IMREAD_UNCHANGED = -1, // 8bit, color or not - IMREAD_GRAYSCALE = 0, // 8bit, gray - IMREAD_COLOR = 1, // ?, color - IMREAD_ANYDEPTH = 2, // any depth, ? - IMREAD_ANYCOLOR = 4, // ?, any color - IMREAD_LOAD_GDAL = 8 // Use gdal driver - }; - -enum { IMWRITE_JPEG_QUALITY = 1, - IMWRITE_JPEG_PROGRESSIVE = 2, - IMWRITE_JPEG_OPTIMIZE = 3, - IMWRITE_PNG_COMPRESSION = 16, - IMWRITE_PNG_STRATEGY = 17, - IMWRITE_PNG_BILEVEL = 18, - IMWRITE_PXM_BINARY = 32, - IMWRITE_WEBP_QUALITY = 64 - }; - -enum { IMWRITE_PNG_STRATEGY_DEFAULT = 0, - IMWRITE_PNG_STRATEGY_FILTERED = 1, - IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, - IMWRITE_PNG_STRATEGY_RLE = 3, - IMWRITE_PNG_STRATEGY_FIXED = 4 - }; - -CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); - -CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, - const std::vector& params = std::vector()); - -CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); - -CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); - -CV_EXPORTS_W bool imencode( const String& ext, InputArray img, - CV_OUT std::vector& buf, - const std::vector& params = std::vector()); - -} // cv - - - -////////////////////////////////// video io ///////////////////////////////// - -typedef struct CvCapture CvCapture; -typedef struct CvVideoWriter CvVideoWriter; - -namespace cv -{ - -// Camera API -enum { CAP_ANY = 0, // autodetect - CAP_VFW = 200, // platform native - CAP_V4L = 200, - CAP_V4L2 = CAP_V4L, - CAP_FIREWARE = 300, // IEEE 1394 drivers - CAP_FIREWIRE = CAP_FIREWARE, - CAP_IEEE1394 = CAP_FIREWARE, - CAP_DC1394 = CAP_FIREWARE, - CAP_CMU1394 = CAP_FIREWARE, - CAP_QT = 500, // QuickTime - CAP_UNICAP = 600, // Unicap drivers - CAP_DSHOW = 700, // DirectShow (via videoInput) - CAP_PVAPI = 800, // PvAPI, Prosilica GigE SDK - CAP_OPENNI = 900, // OpenNI (for Kinect) - CAP_OPENNI_ASUS = 910, // OpenNI (for Asus Xtion) - CAP_ANDROID = 1000, // Android - CAP_XIAPI = 1100, // XIMEA Camera API - CAP_AVFOUNDATION = 1200, // AVFoundation framework for iOS (OS X Lion will have the same API) - CAP_GIGANETIX = 1300, // Smartek Giganetix GigEVisionSDK - CAP_MSMF = 1400, // Microsoft Media Foundation (via videoInput) - CAP_INTELPERC = 1500 // Intel Perceptual Computing SDK - }; - -// generic properties (based on DC1394 properties) -enum { CAP_PROP_POS_MSEC =0, - CAP_PROP_POS_FRAMES =1, - CAP_PROP_POS_AVI_RATIO =2, - CAP_PROP_FRAME_WIDTH =3, - CAP_PROP_FRAME_HEIGHT =4, - CAP_PROP_FPS =5, - CAP_PROP_FOURCC =6, - CAP_PROP_FRAME_COUNT =7, - CAP_PROP_FORMAT =8, - CAP_PROP_MODE =9, - CAP_PROP_BRIGHTNESS =10, - CAP_PROP_CONTRAST =11, - CAP_PROP_SATURATION =12, - CAP_PROP_HUE =13, - CAP_PROP_GAIN =14, - CAP_PROP_EXPOSURE =15, - CAP_PROP_CONVERT_RGB =16, - CAP_PROP_WHITE_BALANCE_BLUE_U =17, - CAP_PROP_RECTIFICATION =18, - CAP_PROP_MONOCROME =19, - CAP_PROP_SHARPNESS =20, - CAP_PROP_AUTO_EXPOSURE =21, // DC1394: exposure control done by camera, user can adjust refernce level using this feature - CAP_PROP_GAMMA =22, - CAP_PROP_TEMPERATURE =23, - CAP_PROP_TRIGGER =24, - CAP_PROP_TRIGGER_DELAY =25, - CAP_PROP_WHITE_BALANCE_RED_V =26, - CAP_PROP_ZOOM =27, - CAP_PROP_FOCUS =28, - CAP_PROP_GUID =29, - CAP_PROP_ISO_SPEED =30, - CAP_PROP_BACKLIGHT =32, - CAP_PROP_PAN =33, - CAP_PROP_TILT =34, - CAP_PROP_ROLL =35, - CAP_PROP_IRIS =36, - CAP_PROP_SETTINGS =37 - }; - - -// DC1394 only -// modes of the controlling registers (can be: auto, manual, auto single push, absolute Latter allowed with any other mode) -// every feature can have only one mode turned on at a time -enum { CAP_PROP_DC1394_OFF = -4, //turn the feature off (not controlled manually nor automatically) - CAP_PROP_DC1394_MODE_MANUAL = -3, //set automatically when a value of the feature is set by the user - CAP_PROP_DC1394_MODE_AUTO = -2, - CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1, - CAP_PROP_DC1394_MAX = 31 - }; - - -// OpenNI map generators -enum { CAP_OPENNI_DEPTH_GENERATOR = 1 << 31, - CAP_OPENNI_IMAGE_GENERATOR = 1 << 30, - CAP_OPENNI_GENERATORS_MASK = CAP_OPENNI_DEPTH_GENERATOR + CAP_OPENNI_IMAGE_GENERATOR - }; - -// Properties of cameras available through OpenNI interfaces -enum { CAP_PROP_OPENNI_OUTPUT_MODE = 100, - CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, // in mm - CAP_PROP_OPENNI_BASELINE = 102, // in mm - CAP_PROP_OPENNI_FOCAL_LENGTH = 103, // in pixels - CAP_PROP_OPENNI_REGISTRATION = 104, // flag that synchronizes the remapping depth map to image map - // by changing depth generator's view point (if the flag is "on") or - // sets this view point to its normal one (if the flag is "off"). - CAP_PROP_OPENNI_REGISTRATION_ON = CAP_PROP_OPENNI_REGISTRATION, - CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105, - CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106, - CAP_PROP_OPENNI_CIRCLE_BUFFER = 107, - CAP_PROP_OPENNI_MAX_TIME_DURATION = 108, - CAP_PROP_OPENNI_GENERATOR_PRESENT = 109 - }; - -// OpenNI shortcats -enum { CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT, - CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_OUTPUT_MODE, - CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_BASELINE, - CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_FOCAL_LENGTH, - CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_REGISTRATION, - CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION - }; - -// OpenNI data given from depth generator -enum { CAP_OPENNI_DEPTH_MAP = 0, // Depth values in mm (CV_16UC1) - CAP_OPENNI_POINT_CLOUD_MAP = 1, // XYZ in meters (CV_32FC3) - CAP_OPENNI_DISPARITY_MAP = 2, // Disparity in pixels (CV_8UC1) - CAP_OPENNI_DISPARITY_MAP_32F = 3, // Disparity in pixels (CV_32FC1) - CAP_OPENNI_VALID_DEPTH_MASK = 4, // CV_8UC1 - - // Data given from RGB image generator - CAP_OPENNI_BGR_IMAGE = 5, - CAP_OPENNI_GRAY_IMAGE = 6 - }; - -// Supported output modes of OpenNI image generator -enum { CAP_OPENNI_VGA_30HZ = 0, - CAP_OPENNI_SXGA_15HZ = 1, - CAP_OPENNI_SXGA_30HZ = 2, - CAP_OPENNI_QVGA_30HZ = 3, - CAP_OPENNI_QVGA_60HZ = 4 - }; - - -// GStreamer -enum { CAP_PROP_GSTREAMER_QUEUE_LENGTH = 200 // default is 1 - }; - - -// PVAPI -enum { CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast - CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301 // FrameStartTriggerMode: Determines how a frame is initiated - }; - -// PVAPI: FrameStartTriggerMode -enum { CAP_PVAPI_FSTRIGMODE_FREERUN = 0, // Freerun - CAP_PVAPI_FSTRIGMODE_SYNCIN1 = 1, // SyncIn1 - CAP_PVAPI_FSTRIGMODE_SYNCIN2 = 2, // SyncIn2 - CAP_PVAPI_FSTRIGMODE_FIXEDRATE = 3, // FixedRate - CAP_PVAPI_FSTRIGMODE_SOFTWARE = 4 // Software - }; - -// Properties of cameras available through XIMEA SDK interface -enum { CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. - CAP_PROP_XI_DATA_FORMAT = 401, // Output data format. - CAP_PROP_XI_OFFSET_X = 402, // Horizontal offset from the origin to the area of interest (in pixels). - CAP_PROP_XI_OFFSET_Y = 403, // Vertical offset from the origin to the area of interest (in pixels). - CAP_PROP_XI_TRG_SOURCE = 404, // Defines source of trigger. - CAP_PROP_XI_TRG_SOFTWARE = 405, // Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. - CAP_PROP_XI_GPI_SELECTOR = 406, // Selects general purpose input - CAP_PROP_XI_GPI_MODE = 407, // Set general purpose input mode - CAP_PROP_XI_GPI_LEVEL = 408, // Get general purpose level - CAP_PROP_XI_GPO_SELECTOR = 409, // Selects general purpose output - CAP_PROP_XI_GPO_MODE = 410, // Set general purpose output mode - CAP_PROP_XI_LED_SELECTOR = 411, // Selects camera signalling LED - CAP_PROP_XI_LED_MODE = 412, // Define camera signalling LED functionality - CAP_PROP_XI_MANUAL_WB = 413, // Calculates White Balance(must be called during acquisition) - CAP_PROP_XI_AUTO_WB = 414, // Automatic white balance - CAP_PROP_XI_AEAG = 415, // Automatic exposure/gain - CAP_PROP_XI_EXP_PRIORITY = 416, // Exposure priority (0.5 - exposure 50%, gain 50%). - CAP_PROP_XI_AE_MAX_LIMIT = 417, // Maximum limit of exposure in AEAG procedure - CAP_PROP_XI_AG_MAX_LIMIT = 418, // Maximum limit of gain in AEAG procedure - CAP_PROP_XI_AEAG_LEVEL = 419, // Average intensity of output signal AEAG should achieve(in %) - CAP_PROP_XI_TIMEOUT = 420 // Image capture timeout in milliseconds - }; - - -// Properties for Android cameras -enum { CAP_PROP_ANDROID_AUTOGRAB = 1024, - CAP_PROP_ANDROID_PREVIEW_SIZES_STRING = 1025, // readonly, tricky property, returns const char* indeed - CAP_PROP_ANDROID_PREVIEW_FORMAT = 1026, // readonly, tricky property, returns const char* indeed - CAP_PROP_ANDROID_FLASH_MODE = 8001, - CAP_PROP_ANDROID_FOCUS_MODE = 8002, - CAP_PROP_ANDROID_WHITE_BALANCE = 8003, - CAP_PROP_ANDROID_ANTIBANDING = 8004, - CAP_PROP_ANDROID_FOCAL_LENGTH = 8005, - CAP_PROP_ANDROID_FOCUS_DISTANCE_NEAR = 8006, - CAP_PROP_ANDROID_FOCUS_DISTANCE_OPTIMAL = 8007, - CAP_PROP_ANDROID_FOCUS_DISTANCE_FAR = 8008 - }; - - -// Android camera output formats -enum { CAP_ANDROID_COLOR_FRAME_BGR = 0, //BGR - CAP_ANDROID_COLOR_FRAME = CAP_ANDROID_COLOR_FRAME_BGR, - CAP_ANDROID_GREY_FRAME = 1, //Y - CAP_ANDROID_COLOR_FRAME_RGB = 2, - CAP_ANDROID_COLOR_FRAME_BGRA = 3, - CAP_ANDROID_COLOR_FRAME_RGBA = 4 - }; - - -// Android camera flash modes -enum { CAP_ANDROID_FLASH_MODE_AUTO = 0, - CAP_ANDROID_FLASH_MODE_OFF = 1, - CAP_ANDROID_FLASH_MODE_ON = 2, - CAP_ANDROID_FLASH_MODE_RED_EYE = 3, - CAP_ANDROID_FLASH_MODE_TORCH = 4 - }; - - -// Android camera focus modes -enum { CAP_ANDROID_FOCUS_MODE_AUTO = 0, - CAP_ANDROID_FOCUS_MODE_CONTINUOUS_VIDEO = 1, - CAP_ANDROID_FOCUS_MODE_EDOF = 2, - CAP_ANDROID_FOCUS_MODE_FIXED = 3, - CAP_ANDROID_FOCUS_MODE_INFINITY = 4, - CAP_ANDROID_FOCUS_MODE_MACRO = 5 - }; - - -// Android camera white balance modes -enum { CAP_ANDROID_WHITE_BALANCE_AUTO = 0, - CAP_ANDROID_WHITE_BALANCE_CLOUDY_DAYLIGHT = 1, - CAP_ANDROID_WHITE_BALANCE_DAYLIGHT = 2, - CAP_ANDROID_WHITE_BALANCE_FLUORESCENT = 3, - CAP_ANDROID_WHITE_BALANCE_INCANDESCENT = 4, - CAP_ANDROID_WHITE_BALANCE_SHADE = 5, - CAP_ANDROID_WHITE_BALANCE_TWILIGHT = 6, - CAP_ANDROID_WHITE_BALANCE_WARM_FLUORESCENT = 7 - }; - - -// Android camera antibanding modes -enum { CAP_ANDROID_ANTIBANDING_50HZ = 0, - CAP_ANDROID_ANTIBANDING_60HZ = 1, - CAP_ANDROID_ANTIBANDING_AUTO = 2, - CAP_ANDROID_ANTIBANDING_OFF = 3 - }; - - -// Properties of cameras available through AVFOUNDATION interface -enum { CAP_PROP_IOS_DEVICE_FOCUS = 9001, - CAP_PROP_IOS_DEVICE_EXPOSURE = 9002, - CAP_PROP_IOS_DEVICE_FLASH = 9003, - CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004, - CAP_PROP_IOS_DEVICE_TORCH = 9005 - }; - - -// Properties of cameras available through Smartek Giganetix Ethernet Vision interface -/* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */ -enum { CAP_PROP_GIGA_FRAME_OFFSET_X = 10001, - CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002, - CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003, - CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004, - CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005, - CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006 - }; - -enum { CAP_PROP_INTELPERC_PROFILE_COUNT = 11001, - CAP_PROP_INTELPERC_PROFILE_IDX = 11002, - CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003, - CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004, - CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005, - CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006, - CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007 - }; - -// Intel PerC streams -enum { CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29, - CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28, - CAP_INTELPERC_GENERATORS_MASK = CAP_INTELPERC_DEPTH_GENERATOR + CAP_INTELPERC_IMAGE_GENERATOR - }; - -enum { CAP_INTELPERC_DEPTH_MAP = 0, // Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth. - CAP_INTELPERC_UVDEPTH_MAP = 1, // Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates. - CAP_INTELPERC_IR_MAP = 2, // Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam. - CAP_INTELPERC_IMAGE = 3 - }; - - -class IVideoCapture; -class CV_EXPORTS_W VideoCapture -{ -public: - CV_WRAP VideoCapture(); - CV_WRAP VideoCapture(const String& filename); - CV_WRAP VideoCapture(int device); - - virtual ~VideoCapture(); - CV_WRAP virtual bool open(const String& filename); - CV_WRAP virtual bool open(int device); - CV_WRAP virtual bool isOpened() const; - CV_WRAP virtual void release(); - - CV_WRAP virtual bool grab(); - CV_WRAP virtual bool retrieve(OutputArray image, int flag = 0); - virtual VideoCapture& operator >> (CV_OUT Mat& image); - virtual VideoCapture& operator >> (CV_OUT UMat& image); - CV_WRAP virtual bool read(OutputArray image); - - CV_WRAP virtual bool set(int propId, double value); - CV_WRAP virtual double get(int propId); - -protected: - Ptr cap; - Ptr icap; -private: - static Ptr createCameraCapture(int index); -}; - -class CV_EXPORTS_W VideoWriter -{ -public: - CV_WRAP VideoWriter(); - CV_WRAP VideoWriter(const String& filename, int fourcc, double fps, - Size frameSize, bool isColor = true); - - virtual ~VideoWriter(); - CV_WRAP virtual bool open(const String& filename, int fourcc, double fps, - Size frameSize, bool isColor = true); - CV_WRAP virtual bool isOpened() const; - CV_WRAP virtual void release(); - virtual VideoWriter& operator << (const Mat& image); - CV_WRAP virtual void write(const Mat& image); - - CV_WRAP static int fourcc(char c1, char c2, char c3, char c4); - -protected: - Ptr writer; -}; - -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvCapture* obj) const; -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvVideoWriter* obj) const; - -} // cv - #endif diff --git a/modules/highgui/include/opencv2/highgui/highgui_c.h b/modules/highgui/include/opencv2/highgui/highgui_c.h index 130302150f..b6b56ceb02 100644 --- a/modules/highgui/include/opencv2/highgui/highgui_c.h +++ b/modules/highgui/include/opencv2/highgui/highgui_c.h @@ -43,6 +43,8 @@ #define __OPENCV_HIGHGUI_H__ #include "opencv2/core/core_c.h" +#include "opencv2/imgcodecs/imgcodecs_c.h" +#include "opencv2/videoio/videoio_c.h" #ifdef __cplusplus extern "C" { @@ -194,67 +196,6 @@ typedef void (CV_CDECL *CvMouseCallback )(int event, int x, int y, int flags, vo CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param CV_DEFAULT(NULL)); -enum -{ -/* 8bit, color or not */ - CV_LOAD_IMAGE_UNCHANGED =-1, -/* 8bit, gray */ - CV_LOAD_IMAGE_GRAYSCALE =0, -/* ?, color */ - CV_LOAD_IMAGE_COLOR =1, -/* any depth, ? */ - CV_LOAD_IMAGE_ANYDEPTH =2, -/* ?, any color */ - CV_LOAD_IMAGE_ANYCOLOR =4 -}; - -/* load image from file - iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED - overrides the other flags - using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED - unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit -*/ -CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); -CVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); - -enum -{ - CV_IMWRITE_JPEG_QUALITY =1, - CV_IMWRITE_JPEG_PROGRESSIVE =2, - CV_IMWRITE_JPEG_OPTIMIZE =3, - CV_IMWRITE_PNG_COMPRESSION =16, - CV_IMWRITE_PNG_STRATEGY =17, - CV_IMWRITE_PNG_BILEVEL =18, - CV_IMWRITE_PNG_STRATEGY_DEFAULT =0, - CV_IMWRITE_PNG_STRATEGY_FILTERED =1, - CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY =2, - CV_IMWRITE_PNG_STRATEGY_RLE =3, - CV_IMWRITE_PNG_STRATEGY_FIXED =4, - CV_IMWRITE_PXM_BINARY =32, - CV_IMWRITE_WEBP_QUALITY =64 -}; - -/* save image to file */ -CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, - const int* params CV_DEFAULT(0) ); - -/* decode image stored in the buffer */ -CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); -CVAPI(CvMat*) cvDecodeImageM( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); - -/* encode image and store the result as a byte vector (single-row 8uC1 matrix) */ -CVAPI(CvMat*) cvEncodeImage( const char* ext, const CvArr* image, - const int* params CV_DEFAULT(0) ); - -enum -{ - CV_CVTIMG_FLIP =1, - CV_CVTIMG_SWAP_RB =2 -}; - -/* utility function: convert one image to another with optional vertical flip */ -CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0)); - /* wait for key event infinitely (delay<=0) or for "delay" milliseconds */ CVAPI(int) cvWaitKey(int delay CV_DEFAULT(0)); @@ -268,363 +209,10 @@ CVAPI(void) cvUpdateWindow(const char* window_name); /****************************************************************************************\ -* Working with Video Files and Cameras * -\****************************************************************************************/ -/* "black box" capture structure */ -typedef struct CvCapture CvCapture; - -/* start capturing frames from video file */ -CVAPI(CvCapture*) cvCreateFileCapture( const char* filename ); - -enum -{ - CV_CAP_ANY =0, // autodetect - - CV_CAP_MIL =100, // MIL proprietary drivers - - CV_CAP_VFW =200, // platform native - CV_CAP_V4L =200, - CV_CAP_V4L2 =200, - - CV_CAP_FIREWARE =300, // IEEE 1394 drivers - CV_CAP_FIREWIRE =300, - CV_CAP_IEEE1394 =300, - CV_CAP_DC1394 =300, - CV_CAP_CMU1394 =300, - - CV_CAP_STEREO =400, // TYZX proprietary drivers - CV_CAP_TYZX =400, - CV_TYZX_LEFT =400, - CV_TYZX_RIGHT =401, - CV_TYZX_COLOR =402, - CV_TYZX_Z =403, - - CV_CAP_QT =500, // QuickTime - - CV_CAP_UNICAP =600, // Unicap drivers - - CV_CAP_DSHOW =700, // DirectShow (via videoInput) - CV_CAP_MSMF =1400, // Microsoft Media Foundation (via videoInput) - - CV_CAP_PVAPI =800, // PvAPI, Prosilica GigE SDK - - CV_CAP_OPENNI =900, // OpenNI (for Kinect) - CV_CAP_OPENNI_ASUS =910, // OpenNI (for Asus Xtion) - - CV_CAP_ANDROID =1000, // Android - CV_CAP_ANDROID_BACK =CV_CAP_ANDROID+99, // Android back camera - CV_CAP_ANDROID_FRONT =CV_CAP_ANDROID+98, // Android front camera - - CV_CAP_XIAPI =1100, // XIMEA Camera API - - CV_CAP_AVFOUNDATION = 1200, // AVFoundation framework for iOS (OS X Lion will have the same API) - - CV_CAP_GIGANETIX = 1300, // Smartek Giganetix GigEVisionSDK - - CV_CAP_INTELPERC = 1500 // Intel Perceptual Computing SDK -}; - -/* start capturing frames from camera: index = camera_index + domain_offset (CV_CAP_*) */ -CVAPI(CvCapture*) cvCreateCameraCapture( int index ); - -/* grab a frame, return 1 on success, 0 on fail. - this function is thought to be fast */ -CVAPI(int) cvGrabFrame( CvCapture* capture ); - -/* get the frame grabbed with cvGrabFrame(..) - This function may apply some frame processing like - frame decompression, flipping etc. - !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ -CVAPI(IplImage*) cvRetrieveFrame( CvCapture* capture, int streamIdx CV_DEFAULT(0) ); - -/* Just a combination of cvGrabFrame and cvRetrieveFrame - !!!DO NOT RELEASE or MODIFY the retrieved frame!!! */ -CVAPI(IplImage*) cvQueryFrame( CvCapture* capture ); - -/* stop capturing/reading and free resources */ -CVAPI(void) cvReleaseCapture( CvCapture** capture ); - -enum -{ - // modes of the controlling registers (can be: auto, manual, auto single push, absolute Latter allowed with any other mode) - // every feature can have only one mode turned on at a time - CV_CAP_PROP_DC1394_OFF = -4, //turn the feature off (not controlled manually nor automatically) - CV_CAP_PROP_DC1394_MODE_MANUAL = -3, //set automatically when a value of the feature is set by the user - CV_CAP_PROP_DC1394_MODE_AUTO = -2, - CV_CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1, - CV_CAP_PROP_POS_MSEC =0, - CV_CAP_PROP_POS_FRAMES =1, - CV_CAP_PROP_POS_AVI_RATIO =2, - CV_CAP_PROP_FRAME_WIDTH =3, - CV_CAP_PROP_FRAME_HEIGHT =4, - CV_CAP_PROP_FPS =5, - CV_CAP_PROP_FOURCC =6, - CV_CAP_PROP_FRAME_COUNT =7, - CV_CAP_PROP_FORMAT =8, - CV_CAP_PROP_MODE =9, - CV_CAP_PROP_BRIGHTNESS =10, - CV_CAP_PROP_CONTRAST =11, - CV_CAP_PROP_SATURATION =12, - CV_CAP_PROP_HUE =13, - CV_CAP_PROP_GAIN =14, - CV_CAP_PROP_EXPOSURE =15, - CV_CAP_PROP_CONVERT_RGB =16, - CV_CAP_PROP_WHITE_BALANCE_BLUE_U =17, - CV_CAP_PROP_RECTIFICATION =18, - CV_CAP_PROP_MONOCROME =19, - CV_CAP_PROP_SHARPNESS =20, - CV_CAP_PROP_AUTO_EXPOSURE =21, // exposure control done by camera, - // user can adjust refernce level - // using this feature - CV_CAP_PROP_GAMMA =22, - CV_CAP_PROP_TEMPERATURE =23, - CV_CAP_PROP_TRIGGER =24, - CV_CAP_PROP_TRIGGER_DELAY =25, - CV_CAP_PROP_WHITE_BALANCE_RED_V =26, - CV_CAP_PROP_ZOOM =27, - CV_CAP_PROP_FOCUS =28, - CV_CAP_PROP_GUID =29, - CV_CAP_PROP_ISO_SPEED =30, - CV_CAP_PROP_MAX_DC1394 =31, - CV_CAP_PROP_BACKLIGHT =32, - CV_CAP_PROP_PAN =33, - CV_CAP_PROP_TILT =34, - CV_CAP_PROP_ROLL =35, - CV_CAP_PROP_IRIS =36, - CV_CAP_PROP_SETTINGS =37, - - CV_CAP_PROP_AUTOGRAB =1024, // property for highgui class CvCapture_Android only - CV_CAP_PROP_SUPPORTED_PREVIEW_SIZES_STRING=1025, // readonly, tricky property, returns cpnst char* indeed - CV_CAP_PROP_PREVIEW_FORMAT=1026, // readonly, tricky property, returns cpnst char* indeed - - // OpenNI map generators - CV_CAP_OPENNI_DEPTH_GENERATOR = 1 << 31, - CV_CAP_OPENNI_IMAGE_GENERATOR = 1 << 30, - CV_CAP_OPENNI_GENERATORS_MASK = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_OPENNI_IMAGE_GENERATOR, - - // Properties of cameras available through OpenNI interfaces - CV_CAP_PROP_OPENNI_OUTPUT_MODE = 100, - CV_CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, // in mm - CV_CAP_PROP_OPENNI_BASELINE = 102, // in mm - CV_CAP_PROP_OPENNI_FOCAL_LENGTH = 103, // in pixels - CV_CAP_PROP_OPENNI_REGISTRATION = 104, // flag - CV_CAP_PROP_OPENNI_REGISTRATION_ON = CV_CAP_PROP_OPENNI_REGISTRATION, // flag that synchronizes the remapping depth map to image map - // by changing depth generator's view point (if the flag is "on") or - // sets this view point to its normal one (if the flag is "off"). - CV_CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105, - CV_CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106, - CV_CAP_PROP_OPENNI_CIRCLE_BUFFER = 107, - CV_CAP_PROP_OPENNI_MAX_TIME_DURATION = 108, - - CV_CAP_PROP_OPENNI_GENERATOR_PRESENT = 109, - - CV_CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_GENERATOR_PRESENT, - CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_OUTPUT_MODE, - CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_BASELINE, - CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_FOCAL_LENGTH, - CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_REGISTRATION, - CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION, - - // Properties of cameras available through GStreamer interface - CV_CAP_GSTREAMER_QUEUE_LENGTH = 200, // default is 1 - - // PVAPI - CV_CAP_PROP_PVAPI_MULTICASTIP = 300, // ip for anable multicast master mode. 0 for disable multicast - CV_CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, // FrameStartTriggerMode: Determines how a frame is initiated - - // Properties of cameras available through XIMEA SDK interface - CV_CAP_PROP_XI_DOWNSAMPLING = 400, // Change image resolution by binning or skipping. - CV_CAP_PROP_XI_DATA_FORMAT = 401, // Output data format. - CV_CAP_PROP_XI_OFFSET_X = 402, // Horizontal offset from the origin to the area of interest (in pixels). - CV_CAP_PROP_XI_OFFSET_Y = 403, // Vertical offset from the origin to the area of interest (in pixels). - CV_CAP_PROP_XI_TRG_SOURCE = 404, // Defines source of trigger. - CV_CAP_PROP_XI_TRG_SOFTWARE = 405, // Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE. - CV_CAP_PROP_XI_GPI_SELECTOR = 406, // Selects general purpose input - CV_CAP_PROP_XI_GPI_MODE = 407, // Set general purpose input mode - CV_CAP_PROP_XI_GPI_LEVEL = 408, // Get general purpose level - CV_CAP_PROP_XI_GPO_SELECTOR = 409, // Selects general purpose output - CV_CAP_PROP_XI_GPO_MODE = 410, // Set general purpose output mode - CV_CAP_PROP_XI_LED_SELECTOR = 411, // Selects camera signalling LED - CV_CAP_PROP_XI_LED_MODE = 412, // Define camera signalling LED functionality - CV_CAP_PROP_XI_MANUAL_WB = 413, // Calculates White Balance(must be called during acquisition) - CV_CAP_PROP_XI_AUTO_WB = 414, // Automatic white balance - CV_CAP_PROP_XI_AEAG = 415, // Automatic exposure/gain - CV_CAP_PROP_XI_EXP_PRIORITY = 416, // Exposure priority (0.5 - exposure 50%, gain 50%). - CV_CAP_PROP_XI_AE_MAX_LIMIT = 417, // Maximum limit of exposure in AEAG procedure - CV_CAP_PROP_XI_AG_MAX_LIMIT = 418, // Maximum limit of gain in AEAG procedure - CV_CAP_PROP_XI_AEAG_LEVEL = 419, // Average intensity of output signal AEAG should achieve(in %) - CV_CAP_PROP_XI_TIMEOUT = 420, // Image capture timeout in milliseconds - - // Properties for Android cameras - CV_CAP_PROP_ANDROID_FLASH_MODE = 8001, - CV_CAP_PROP_ANDROID_FOCUS_MODE = 8002, - CV_CAP_PROP_ANDROID_WHITE_BALANCE = 8003, - CV_CAP_PROP_ANDROID_ANTIBANDING = 8004, - CV_CAP_PROP_ANDROID_FOCAL_LENGTH = 8005, - CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_NEAR = 8006, - CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_OPTIMAL = 8007, - CV_CAP_PROP_ANDROID_FOCUS_DISTANCE_FAR = 8008, - CV_CAP_PROP_ANDROID_EXPOSE_LOCK = 8009, - CV_CAP_PROP_ANDROID_WHITEBALANCE_LOCK = 8010, - - // Properties of cameras available through AVFOUNDATION interface - CV_CAP_PROP_IOS_DEVICE_FOCUS = 9001, - CV_CAP_PROP_IOS_DEVICE_EXPOSURE = 9002, - CV_CAP_PROP_IOS_DEVICE_FLASH = 9003, - CV_CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004, - CV_CAP_PROP_IOS_DEVICE_TORCH = 9005, - - // Properties of cameras available through Smartek Giganetix Ethernet Vision interface - /* --- Vladimir Litvinenko (litvinenko.vladimir@gmail.com) --- */ - CV_CAP_PROP_GIGA_FRAME_OFFSET_X = 10001, - CV_CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002, - CV_CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003, - CV_CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004, - CV_CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005, - CV_CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006, - - CV_CAP_PROP_INTELPERC_PROFILE_COUNT = 11001, - CV_CAP_PROP_INTELPERC_PROFILE_IDX = 11002, - CV_CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003, - CV_CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004, - CV_CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005, - CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006, - CV_CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007, - - // Intel PerC streams - CV_CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29, - CV_CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28, - CV_CAP_INTELPERC_GENERATORS_MASK = CV_CAP_INTELPERC_DEPTH_GENERATOR + CV_CAP_INTELPERC_IMAGE_GENERATOR -}; - -enum -{ - // Data given from depth generator. - CV_CAP_OPENNI_DEPTH_MAP = 0, // Depth values in mm (CV_16UC1) - CV_CAP_OPENNI_POINT_CLOUD_MAP = 1, // XYZ in meters (CV_32FC3) - CV_CAP_OPENNI_DISPARITY_MAP = 2, // Disparity in pixels (CV_8UC1) - CV_CAP_OPENNI_DISPARITY_MAP_32F = 3, // Disparity in pixels (CV_32FC1) - CV_CAP_OPENNI_VALID_DEPTH_MASK = 4, // CV_8UC1 - - // Data given from RGB image generator. - CV_CAP_OPENNI_BGR_IMAGE = 5, - CV_CAP_OPENNI_GRAY_IMAGE = 6 -}; - -// Supported output modes of OpenNI image generator -enum -{ - CV_CAP_OPENNI_VGA_30HZ = 0, - CV_CAP_OPENNI_SXGA_15HZ = 1, - CV_CAP_OPENNI_SXGA_30HZ = 2, - CV_CAP_OPENNI_QVGA_30HZ = 3, - CV_CAP_OPENNI_QVGA_60HZ = 4 -}; - -//supported by Android camera output formats -enum -{ - CV_CAP_ANDROID_COLOR_FRAME_BGR = 0, //BGR - CV_CAP_ANDROID_COLOR_FRAME = CV_CAP_ANDROID_COLOR_FRAME_BGR, - CV_CAP_ANDROID_GREY_FRAME = 1, //Y - CV_CAP_ANDROID_COLOR_FRAME_RGB = 2, - CV_CAP_ANDROID_COLOR_FRAME_BGRA = 3, - CV_CAP_ANDROID_COLOR_FRAME_RGBA = 4 -}; - -// supported Android camera flash modes -enum -{ - CV_CAP_ANDROID_FLASH_MODE_AUTO = 0, - CV_CAP_ANDROID_FLASH_MODE_OFF, - CV_CAP_ANDROID_FLASH_MODE_ON, - CV_CAP_ANDROID_FLASH_MODE_RED_EYE, - CV_CAP_ANDROID_FLASH_MODE_TORCH -}; - -// supported Android camera focus modes -enum -{ - CV_CAP_ANDROID_FOCUS_MODE_AUTO = 0, - CV_CAP_ANDROID_FOCUS_MODE_CONTINUOUS_PICTURE, - CV_CAP_ANDROID_FOCUS_MODE_CONTINUOUS_VIDEO, - CV_CAP_ANDROID_FOCUS_MODE_EDOF, - CV_CAP_ANDROID_FOCUS_MODE_FIXED, - CV_CAP_ANDROID_FOCUS_MODE_INFINITY, - CV_CAP_ANDROID_FOCUS_MODE_MACRO -}; - -// supported Android camera white balance modes -enum -{ - CV_CAP_ANDROID_WHITE_BALANCE_AUTO = 0, - CV_CAP_ANDROID_WHITE_BALANCE_CLOUDY_DAYLIGHT, - CV_CAP_ANDROID_WHITE_BALANCE_DAYLIGHT, - CV_CAP_ANDROID_WHITE_BALANCE_FLUORESCENT, - CV_CAP_ANDROID_WHITE_BALANCE_INCANDESCENT, - CV_CAP_ANDROID_WHITE_BALANCE_SHADE, - CV_CAP_ANDROID_WHITE_BALANCE_TWILIGHT, - CV_CAP_ANDROID_WHITE_BALANCE_WARM_FLUORESCENT -}; - -// supported Android camera antibanding modes -enum -{ - CV_CAP_ANDROID_ANTIBANDING_50HZ = 0, - CV_CAP_ANDROID_ANTIBANDING_60HZ, - CV_CAP_ANDROID_ANTIBANDING_AUTO, - CV_CAP_ANDROID_ANTIBANDING_OFF -}; - -enum -{ - CV_CAP_INTELPERC_DEPTH_MAP = 0, // Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth. - CV_CAP_INTELPERC_UVDEPTH_MAP = 1, // Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates. - CV_CAP_INTELPERC_IR_MAP = 2, // Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam. - CV_CAP_INTELPERC_IMAGE = 3 -}; - -/* retrieve or set capture properties */ -CVAPI(double) cvGetCaptureProperty( CvCapture* capture, int property_id ); -CVAPI(int) cvSetCaptureProperty( CvCapture* capture, int property_id, double value ); - -// Return the type of the capturer (eg, CV_CAP_V4W, CV_CAP_UNICAP), which is unknown if created with CV_CAP_ANY -CVAPI(int) cvGetCaptureDomain( CvCapture* capture); - -/* "black box" video file writer structure */ -typedef struct CvVideoWriter CvVideoWriter; - -#define CV_FOURCC_MACRO(c1, c2, c3, c4) (((c1) & 255) + (((c2) & 255) << 8) + (((c3) & 255) << 16) + (((c4) & 255) << 24)) - -CV_INLINE int CV_FOURCC(char c1, char c2, char c3, char c4) -{ - return CV_FOURCC_MACRO(c1, c2, c3, c4); -} - -#define CV_FOURCC_PROMPT -1 /* Open Codec Selection Dialog (Windows only) */ -#define CV_FOURCC_DEFAULT CV_FOURCC('I', 'Y', 'U', 'V') /* Use default codec for specified filename (Linux only) */ - -/* initialize video file writer */ -CVAPI(CvVideoWriter*) cvCreateVideoWriter( const char* filename, int fourcc, - double fps, CvSize frame_size, - int is_color CV_DEFAULT(1)); - -/* write frame to video file */ -CVAPI(int) cvWriteFrame( CvVideoWriter* writer, const IplImage* image ); - -/* close video file writer */ -CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer ); - -/****************************************************************************************\ * Obsolete functions/synonyms * \****************************************************************************************/ -#define cvCaptureFromFile cvCreateFileCapture -#define cvCaptureFromCAM cvCreateCameraCapture -#define cvCaptureFromAVI cvCaptureFromFile -#define cvCreateAVIWriter cvCreateVideoWriter -#define cvWriteToAVI cvWriteFrame #define cvAddSearchPath(path) #define cvvInitSystem cvInitSystem #define cvvNamedWindow cvNamedWindow @@ -632,12 +220,9 @@ CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer ); #define cvvResizeWindow cvResizeWindow #define cvvDestroyWindow cvDestroyWindow #define cvvCreateTrackbar cvCreateTrackbar -#define cvvLoadImage(name) cvLoadImage((name),1) -#define cvvSaveImage cvSaveImage #define cvvAddSearchPath cvAddSearchPath #define cvvWaitKey(name) cvWaitKey(0) #define cvvWaitKeyEx(name,delay) cvWaitKey(delay) -#define cvvConvertImage cvConvertImage #define HG_AUTOSIZE CV_WINDOW_AUTOSIZE #define set_preprocess_func cvSetPreprocessFuncWin32 #define set_postprocess_func cvSetPostprocessFuncWin32 diff --git a/modules/highgui/src/precomp.hpp b/modules/highgui/src/precomp.hpp index bb4ed8ede5..c9517783f9 100644 --- a/modules/highgui/src/precomp.hpp +++ b/modules/highgui/src/precomp.hpp @@ -47,7 +47,10 @@ #include "opencv2/core/utility.hpp" #include "opencv2/core/private.hpp" +#include "opencv2/imgcodecs.hpp" + #include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/imgcodecs/imgcodecs_c.h" #include "opencv2/highgui/highgui_c.h" #include @@ -92,90 +95,6 @@ #define CV_WINDOW_MAGIC_VAL 0x00420042 #define CV_TRACKBAR_MAGIC_VAL 0x00420043 -/***************************** CvCapture structure ******************************/ - -struct CvCapture -{ - virtual ~CvCapture() {} - virtual double getProperty(int) { return 0; } - virtual bool setProperty(int, double) { return 0; } - virtual bool grabFrame() { return true; } - virtual IplImage* retrieveFrame(int) { return 0; } - virtual int getCaptureDomain() { return CV_CAP_ANY; } // Return the type of the capture object: CV_CAP_VFW, etc... -}; - -/*************************** CvVideoWriter structure ****************************/ - -struct CvVideoWriter -{ - virtual ~CvVideoWriter() {} - virtual bool writeFrame(const IplImage*) { return false; } -}; - -CvCapture * cvCreateCameraCapture_V4L( int index ); -CvCapture * cvCreateCameraCapture_DC1394( int index ); -CvCapture * cvCreateCameraCapture_DC1394_2( int index ); -CvCapture* cvCreateCameraCapture_MIL( int index ); -CvCapture* cvCreateCameraCapture_Giganetix( int index ); -CvCapture * cvCreateCameraCapture_CMU( int index ); -CV_IMPL CvCapture * cvCreateCameraCapture_TYZX( int index ); -CvCapture* cvCreateFileCapture_Win32( const char* filename ); -CvCapture* cvCreateCameraCapture_VFW( int index ); -CvCapture* cvCreateFileCapture_VFW( const char* filename ); -CvVideoWriter* cvCreateVideoWriter_Win32( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); -CvVideoWriter* cvCreateVideoWriter_VFW( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); -CvCapture* cvCreateCameraCapture_DShow( int index ); -CvCapture* cvCreateCameraCapture_MSMF( int index ); -CvCapture* cvCreateFileCapture_MSMF (const char* filename); -CvVideoWriter* cvCreateVideoWriter_MSMF( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); -CvCapture* cvCreateCameraCapture_OpenNI( int index ); -CvCapture* cvCreateFileCapture_OpenNI( const char* filename ); -CvCapture* cvCreateCameraCapture_Android( int index ); -CvCapture* cvCreateCameraCapture_XIMEA( int index ); -CvCapture* cvCreateCameraCapture_AVFoundation(int index); - -CVAPI(int) cvHaveImageReader(const char* filename); -CVAPI(int) cvHaveImageWriter(const char* filename); - -CvCapture* cvCreateFileCapture_Images(const char* filename); -CvVideoWriter* cvCreateVideoWriter_Images(const char* filename); - -CvCapture* cvCreateFileCapture_XINE (const char* filename); - - - - -#define CV_CAP_GSTREAMER_1394 0 -#define CV_CAP_GSTREAMER_V4L 1 -#define CV_CAP_GSTREAMER_V4L2 2 -#define CV_CAP_GSTREAMER_FILE 3 - -CvCapture* cvCreateCapture_GStreamer(int type, const char *filename); -CvCapture* cvCreateFileCapture_FFMPEG_proxy(const char* filename); - - -CvVideoWriter* cvCreateVideoWriter_FFMPEG_proxy( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); - -CvCapture * cvCreateFileCapture_QT (const char * filename); -CvCapture * cvCreateCameraCapture_QT (const int index); - -CvVideoWriter* cvCreateVideoWriter_QT ( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); - -CvCapture* cvCreateFileCapture_AVFoundation (const char * filename); -CvVideoWriter* cvCreateVideoWriter_AVFoundation( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); - - -CvCapture * cvCreateCameraCapture_Unicap (const int index); -CvCapture * cvCreateCameraCapture_PvAPI (const int index); -CvVideoWriter* cvCreateVideoWriter_GStreamer( const char* filename, int fourcc, - double fps, CvSize frameSize, int is_color ); - //Yannick Verdie 2010 void cvSetModeWindow_W32(const char* name, double prop_value); void cvSetModeWindow_GTK(const char* name, double prop_value); @@ -196,20 +115,6 @@ double cvGetRatioWindow_GTK(const char* name); double cvGetOpenGlProp_W32(const char* name); double cvGetOpenGlProp_GTK(const char* name); -namespace cv -{ - class IVideoCapture - { - public: - virtual ~IVideoCapture() {} - virtual double getProperty(int) { return 0; } - virtual bool setProperty(int, double) { return 0; } - virtual bool grabFrame() = 0; - virtual bool retrieveFrame(int, cv::OutputArray) = 0; - virtual int getCaptureDomain() { return CAP_ANY; } // Return the type of the capture object: CAP_VFW, etc... - }; -}; - //for QT #if defined (HAVE_QT) double cvGetModeWindow_QT(const char* name); diff --git a/modules/highgui/src/window_QT.cpp b/modules/highgui/src/window_QT.cpp index 1433f744de..d4dfc989f5 100644 --- a/modules/highgui/src/window_QT.cpp +++ b/modules/highgui/src/window_QT.cpp @@ -401,7 +401,7 @@ static CvTrackbar* icvFindTrackBarByName(const char* name_trackbar, const char* { QString nameQt(name_trackbar); - if (!name_window && global_control_panel) //window name is null and we have a control panel + if ((!name_window || !name_window[0]) && global_control_panel) //window name is null and we have a control panel layout = global_control_panel->myLayout; if (!layout) diff --git a/modules/highgui/src/window_w32.cpp b/modules/highgui/src/window_w32.cpp index 8b317dff71..bcf1bae8be 100644 --- a/modules/highgui/src/window_w32.cpp +++ b/modules/highgui/src/window_w32.cpp @@ -1286,6 +1286,10 @@ MainWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) switch(uMsg) { + case WM_COPY: + ::WindowProc(hwnd, uMsg, wParam, lParam); // call highgui proc. There may be a better way to do this. + break; + case WM_DESTROY: icvRemoveWindow(window); @@ -1448,6 +1452,81 @@ static LRESULT CALLBACK HighGUIProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM // Process the message switch(uMsg) { + case WM_COPY: + { + if (!::OpenClipboard(hwnd) ) + break; + + HDC hDC = 0; + HDC memDC = 0; + HBITMAP memBM = 0; + + // We'll use a do-while(0){} scope as a single-run breakable scope + // Upon any error we can jump out of the single-time while scope to clean up the resources. + do + { + if (!::EmptyClipboard()) + break; + + if(!window->image) + break; + + // Get window device context + if (0 == (hDC = ::GetDC(hwnd))) + break; + + // Create another DC compatible with hDC + if (0 == (memDC = ::CreateCompatibleDC( hDC ))) + break; + + // Determine the bitmap's dimensions + int nchannels = 3; + SIZE size = {0,0}; + icvGetBitmapData( window, &size, &nchannels, 0 ); + + // Create bitmap to draw on and it in the new DC + if (0 == (memBM = ::CreateCompatibleBitmap ( hDC, size.cx, size.cy))) + break; + + if (!::SelectObject( memDC, memBM )) + break; + + // Begin drawing to DC + if (!::SetStretchBltMode(memDC, COLORONCOLOR)) + break; + + RGBQUAD table[256]; + if( 1 == nchannels ) + { + for(int i = 0; i < 256; ++i) + { + table[i].rgbBlue = (unsigned char)i; + table[i].rgbGreen = (unsigned char)i; + table[i].rgbRed = (unsigned char)i; + } + if (!::SetDIBColorTable(window->dc, 0, 255, table)) + break; + } + + // The image copied to the clipboard will be in its original size, regardless if the window itself was resized. + + // Render the image to the dc/bitmap (at original size). + if (!::BitBlt( memDC, 0, 0, size.cx, size.cy, window->dc, 0, 0, SRCCOPY )) + break; + + // Finally, set bitmap to clipboard + ::SetClipboardData(CF_BITMAP, memBM); + } while (0,0); // (0,0) instead of (0) to avoid MSVC compiler warning C4127: "conditional expression is constant" + + ////////////////////////////////////////////////////////////////////////// + // if handle is allocated (i.e. != 0) then clean-up. + if (memBM) ::DeleteObject(memBM); + if (memDC) ::DeleteDC(memDC); + if (hDC) ::ReleaseDC(hwnd, hDC); + ::CloseClipboard(); + break; + } + case WM_WINDOWPOSCHANGING: { LPWINDOWPOS pos = (LPWINDOWPOS)lParam; @@ -1798,6 +1877,11 @@ cvWaitKey( int delay ) is_processed = 1; return (int)(message.wParam << 16); } + + // Intercept Ctrl+C for copy to clipboard + if ('C' == message.wParam && (::GetKeyState(VK_CONTROL)>>15)) + ::PostMessage(message.hwnd, WM_COPY, 0, 0); + default: DispatchMessage(&message); is_processed = 1; diff --git a/modules/highgui/test/test_precomp.hpp b/modules/highgui/test/test_precomp.hpp index 826d165749..e4d7797158 100644 --- a/modules/highgui/test/test_precomp.hpp +++ b/modules/highgui/test/test_precomp.hpp @@ -11,80 +11,11 @@ #include #include "opencv2/ts.hpp" -#include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" -#include "opencv2/imgproc/imgproc_c.h" +//#include "opencv2/imgproc.hpp" +//#include "opencv2/imgcodecs.hpp" +//#include "opencv2/highgui.hpp" +//#include "opencv2/imgproc/imgproc_c.h" -#include "opencv2/core/private.hpp" - -#if defined(HAVE_DSHOW) || \ - defined(HAVE_TYZX) || \ - defined(HAVE_VFW) || \ - defined(HAVE_LIBV4L) || \ - (defined(HAVE_CAMV4L) && defined(HAVE_CAMV4L2)) || \ - defined(HAVE_GSTREAMER) || \ - defined(HAVE_DC1394_2) || \ - defined(HAVE_DC1394) || \ - defined(HAVE_CMU1394) || \ - defined(HAVE_MIL) || \ - defined(HAVE_QUICKTIME) || \ - defined(HAVE_QTKIT) || \ - defined(HAVE_UNICAP) || \ - defined(HAVE_PVAPI) || \ - defined(HAVE_OPENNI) || \ - defined(HAVE_XIMEA) || \ - defined(HAVE_AVFOUNDATION) || \ - defined(HAVE_GIGE_API) || \ - defined(HAVE_INTELPERC) || \ - (0) - //defined(HAVE_ANDROID_NATIVE_CAMERA) || - enable after #1193 -# define BUILD_WITH_CAMERA_SUPPORT 1 -#else -# define BUILD_WITH_CAMERA_SUPPORT 0 -#endif - -#if defined(HAVE_XINE) || \ - defined(HAVE_GSTREAMER) || \ - defined(HAVE_QUICKTIME) || \ - defined(HAVE_QTKIT) || \ - defined(HAVE_AVFOUNDATION) || \ - /*defined(HAVE_OPENNI) || too specialized */ \ - defined(HAVE_FFMPEG) || \ - defined(HAVE_MSMF) -# define BUILD_WITH_VIDEO_INPUT_SUPPORT 1 -#else -# define BUILD_WITH_VIDEO_INPUT_SUPPORT 0 -#endif - -#if /*defined(HAVE_XINE) || */\ - defined(HAVE_GSTREAMER) || \ - defined(HAVE_QUICKTIME) || \ - defined(HAVE_QTKIT) || \ - defined(HAVE_AVFOUNDATION) || \ - defined(HAVE_FFMPEG) || \ - defined(HAVE_MSMF) -# define BUILD_WITH_VIDEO_OUTPUT_SUPPORT 1 -#else -# define BUILD_WITH_VIDEO_OUTPUT_SUPPORT 0 -#endif - -namespace cvtest -{ - -string fourccToString(int fourcc); - -struct VideoFormat -{ - VideoFormat() { fourcc = -1; } - VideoFormat(const string& _ext, int _fourcc) : ext(_ext), fourcc(_fourcc) {} - bool empty() const { return ext.empty(); } - - string ext; - int fourcc; -}; - -extern const VideoFormat g_specific_fmt_list[]; - -} +//#include "opencv2/core/private.hpp" #endif diff --git a/modules/imgcodecs/CMakeLists.txt b/modules/imgcodecs/CMakeLists.txt new file mode 100644 index 0000000000..67054053cd --- /dev/null +++ b/modules/imgcodecs/CMakeLists.txt @@ -0,0 +1,145 @@ +set(the_description "Image codecs") +ocv_add_module(imgcodecs opencv_imgproc) + +# ---------------------------------------------------------------------------- +# CMake file for imgcodecs. See root CMakeLists.txt +# Some parts taken from version of Hartmut Seichter, HIT Lab NZ. +# Jose Luis Blanco, 2008 +# ---------------------------------------------------------------------------- + +ocv_clear_vars(GRFMT_LIBS) + +if(HAVE_WINRT_CX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW") +endif() + +if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR) + ocv_include_directories(${ZLIB_INCLUDE_DIRS}) + list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES}) +endif() + +if(HAVE_JPEG) + ocv_include_directories(${JPEG_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES}) +endif() + +if(WITH_WEBP) + add_definitions(-DHAVE_WEBP) + ocv_include_directories(${WEBP_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES}) +endif() + +if(HAVE_PNG) + add_definitions(${PNG_DEFINITIONS}) + ocv_include_directories(${PNG_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${PNG_LIBRARIES}) +endif() + +if(HAVE_TIFF) + ocv_include_directories(${TIFF_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES}) +endif() + +if(HAVE_JASPER) + ocv_include_directories(${JASPER_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES}) +endif() + +if(HAVE_OPENEXR) + include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS}) + list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES}) +endif() + +if(HAVE_GDAL) + include_directories(SYSTEM ${GDAL_INCLUDE_DIR}) + list(APPEND GRFMT_LIBS ${GDAL_LIBRARY}) +endif() + +file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp) +file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp) +list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.hpp) +list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.cpp) +list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.hpp) +list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.cpp) + +source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs}) + +set(imgcodecs_hdrs + ${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp + ${CMAKE_CURRENT_LIST_DIR}/src/utils.hpp + ) + +set(imgcodecs_srcs + ${CMAKE_CURRENT_LIST_DIR}/src/loadsave.cpp + ${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp + ) + +file(GLOB imgcodecs_ext_hdrs + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp" + "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h" + ) + +if(IOS) + add_definitions(-DHAVE_IOS=1) + list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm) + list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework CoreImage" "-framework QuartzCore" "-framework AssetsLibrary") +endif() + +if(UNIX) + #these variables are set by CHECK_MODULE macro + foreach(P ${IMGCODECS_INCLUDE_DIRS}) + ocv_include_directories(${P}) + endforeach() + + foreach(P ${IMGCODECS_LIBRARY_DIRS}) + link_directories(${P}) + endforeach() +endif() + +source_group("Src" FILES ${imgcodecs_srcs} ${imgcodecs_hdrs}) +source_group("Include" FILES ${imgcodecs_ext_hdrs}) +ocv_set_module_sources(HEADERS ${imgcodecs_ext_hdrs} SOURCES ${imgcodecs_srcs} ${imgcodecs_hdrs} ${grfmt_srcs} ${grfmt_hdrs}) +ocv_module_include_directories() + +ocv_create_module(${GRFMT_LIBS} ${IMGCODECS_LIBRARIES}) + +macro(ocv_imgcodecs_configure_target) +if(APPLE) + ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS) + if(HAVE_OBJC_EXCEPTIONS) + foreach(source ${OPENCV_MODULE_${the_module}_SOURCES}) + if("${source}" MATCHES "\\.mm$") + get_source_file_property(flags "${source}" COMPILE_FLAGS) + if(flags) + set(flags "${_flags} -fobjc-exceptions") + else() + set(flags "-fobjc-exceptions") + endif() + + set_source_files_properties("${source}" PROPERTIES COMPILE_FLAGS "${flags}") + endif() + endforeach() + endif() +endif() + +if(BUILD_SHARED_LIBS) + add_definitions(-DIMGCODECS_EXPORTS) +endif() + +if(MSVC) + set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG") +endif() + +#stop automatic dependencies propagation for this module +set_target_properties(${the_module} PROPERTIES LINK_INTERFACE_LIBRARIES "") + +ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations) +endmacro() + +if(NOT BUILD_opencv_world) + ocv_imgcodecs_configure_target() +endif() + +ocv_add_accuracy_tests() +ocv_add_perf_tests() diff --git a/modules/imgcodecs/doc/imgcodecs.rst b/modules/imgcodecs/doc/imgcodecs.rst new file mode 100644 index 0000000000..bcb3131f56 --- /dev/null +++ b/modules/imgcodecs/doc/imgcodecs.rst @@ -0,0 +1,10 @@ +***************************************** +imgcodecs. Image file reading and writing +***************************************** + +This module of the OpenCV help you read and write images to/from disk or memory. + +.. toctree:: + :maxdepth: 2 + + reading_and_writing_images diff --git a/modules/imgcodecs/doc/reading_and_writing_images.rst b/modules/imgcodecs/doc/reading_and_writing_images.rst new file mode 100644 index 0000000000..9f8dcaafef --- /dev/null +++ b/modules/imgcodecs/doc/reading_and_writing_images.rst @@ -0,0 +1,187 @@ +Reading and Writing Images +========================== + +.. highlight:: cpp + +imdecode +-------- +Reads an image from a buffer in memory. + +.. ocv:function:: Mat imdecode( InputArray buf, int flags ) + +.. ocv:function:: Mat imdecode( InputArray buf, int flags, Mat* dst ) + +.. ocv:cfunction:: IplImage* cvDecodeImage( const CvMat* buf, int iscolor=CV_LOAD_IMAGE_COLOR) + +.. ocv:cfunction:: CvMat* cvDecodeImageM( const CvMat* buf, int iscolor=CV_LOAD_IMAGE_COLOR) + +.. ocv:pyfunction:: cv2.imdecode(buf, flags) -> retval + + :param buf: Input array or vector of bytes. + + :param flags: The same flags as in :ocv:func:`imread` . + + :param dst: The optional output placeholder for the decoded matrix. It can save the image reallocations when the function is called repeatedly for images of the same size. + +The function reads an image from the specified buffer in the memory. +If the buffer is too short or contains invalid data, the empty matrix/image is returned. + +See +:ocv:func:`imread` for the list of supported formats and flags description. + +.. note:: In the case of color images, the decoded images will have the channels stored in ``B G R`` order. + +imencode +-------- +Encodes an image into a memory buffer. + +.. ocv:function:: bool imencode( const String& ext, InputArray img, vector& buf, const vector& params=vector()) + +.. ocv:cfunction:: CvMat* cvEncodeImage( const char* ext, const CvArr* image, const int* params=0 ) + +.. ocv:pyfunction:: cv2.imencode(ext, img[, params]) -> retval, buf + + :param ext: File extension that defines the output format. + + :param img: Image to be written. + + :param buf: Output buffer resized to fit the compressed image. + + :param params: Format-specific parameters. See :ocv:func:`imwrite` . + +The function compresses the image and stores it in the memory buffer that is resized to fit the result. +See +:ocv:func:`imwrite` for the list of supported formats and flags description. + +.. note:: ``cvEncodeImage`` returns single-row matrix of type ``CV_8UC1`` that contains encoded image as array of bytes. + +imread +------ +Loads an image from a file. + +.. ocv:function:: Mat imread( const String& filename, int flags=IMREAD_COLOR ) + +.. ocv:pyfunction:: cv2.imread(filename[, flags]) -> retval + +.. ocv:cfunction:: IplImage* cvLoadImage( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR ) + +.. ocv:cfunction:: CvMat* cvLoadImageM( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR ) + + :param filename: Name of file to be loaded. + + :param flags: Flags specifying the color type of a loaded image: + + * CV_LOAD_IMAGE_ANYDEPTH - If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. + + * CV_LOAD_IMAGE_COLOR - If set, always convert image to the color one + + * CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one + + * **>0** Return a 3-channel color image. + .. note:: In the current implementation the alpha channel, if any, is stripped from the output image. Use negative value if you need the alpha channel. + + * **=0** Return a grayscale image. + + * **<0** Return the loaded image as is (with alpha channel). + +The function ``imread`` loads an image from the specified file and returns it. If the image cannot be read (because of missing file, improper permissions, unsupported or invalid format), the function returns an empty matrix ( ``Mat::data==NULL`` ). Currently, the following file formats are supported: + + * Windows bitmaps - ``*.bmp, *.dib`` (always supported) + + * JPEG files - ``*.jpeg, *.jpg, *.jpe`` (see the *Notes* section) + + * JPEG 2000 files - ``*.jp2`` (see the *Notes* section) + + * Portable Network Graphics - ``*.png`` (see the *Notes* section) + + * WebP - ``*.webp`` (see the *Notes* section) + + * Portable image format - ``*.pbm, *.pgm, *.ppm`` (always supported) + + * Sun rasters - ``*.sr, *.ras`` (always supported) + + * TIFF files - ``*.tiff, *.tif`` (see the *Notes* section) + +.. note:: + + * The function determines the type of an image by the content, not by the file extension. + + * On Microsoft Windows* OS and MacOSX*, the codecs shipped with an OpenCV image (libjpeg, libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs, and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware that currently these native image loaders give images with different pixel values because of the color management embedded into MacOSX. + + * On Linux*, BSD flavors and other Unix-like open-source operating systems, OpenCV looks for codecs supplied with an OS image. Install the relevant packages (do not forget the development files, for example, "libjpeg-dev", in Debian* and Ubuntu*) to get the codec support or turn on the ``OPENCV_BUILD_3RDPARTY_LIBS`` flag in CMake. + +.. note:: In the case of color images, the decoded images will have the channels stored in ``B G R`` order. + +imwrite +----------- +Saves an image to a specified file. + +.. ocv:function:: bool imwrite( const String& filename, InputArray img, const vector& params=vector() ) + +.. ocv:pyfunction:: cv2.imwrite(filename, img[, params]) -> retval + +.. ocv:cfunction:: int cvSaveImage( const char* filename, const CvArr* image, const int* params=0 ) + + :param filename: Name of the file. + + :param image: Image to be saved. + + :param params: Format-specific save parameters encoded as pairs ``paramId_1, paramValue_1, paramId_2, paramValue_2, ...`` . The following parameters are currently supported: + + * For JPEG, it can be a quality ( ``CV_IMWRITE_JPEG_QUALITY`` ) from 0 to 100 (the higher is the better). Default value is 95. + + * For WEBP, it can be a quality ( CV_IMWRITE_WEBP_QUALITY ) from 1 to 100 (the higher is the better). + By default (without any parameter) and for quality above 100 the lossless compression is used. + + * For PNG, it can be the compression level ( ``CV_IMWRITE_PNG_COMPRESSION`` ) from 0 to 9. A higher value means a smaller size and longer compression time. Default value is 3. + + * For PPM, PGM, or PBM, it can be a binary format flag ( ``CV_IMWRITE_PXM_BINARY`` ), 0 or 1. Default value is 1. + +The function ``imwrite`` saves the image to the specified file. The image format is chosen based on the ``filename`` extension (see +:ocv:func:`imread` for the list of extensions). Only 8-bit (or 16-bit unsigned (``CV_16U``) in case of PNG, JPEG 2000, and TIFF) single-channel or 3-channel (with 'BGR' channel order) images can be saved using this function. If the format, depth or channel order is different, use +:ocv:func:`Mat::convertTo` , and +:ocv:func:`cvtColor` to convert it before saving. Or, use the universal :ocv:class:`FileStorage` I/O functions to save the image to XML or YAML format. + +It is possible to store PNG images with an alpha channel using this function. To do this, create 8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535. The sample below shows how to create such a BGRA image and store to PNG file. It also demonstrates how to set custom compression parameters :: + + #include + #include + #include + + using namespace cv; + using namespace std; + + void createAlphaMat(Mat &mat) + { + for (int i = 0; i < mat.rows; ++i) { + for (int j = 0; j < mat.cols; ++j) { + Vec4b& rgba = mat.at(i, j); + rgba[0] = UCHAR_MAX; + rgba[1] = saturate_cast((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); + rgba[2] = saturate_cast((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); + rgba[3] = saturate_cast(0.5 * (rgba[1] + rgba[2])); + } + } + } + + int main(int argv, char **argc) + { + // Create mat with alpha channel + Mat mat(480, 640, CV_8UC4); + createAlphaMat(mat); + + vector compression_params; + compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION); + compression_params.push_back(9); + + try { + imwrite("alpha.png", mat, compression_params); + } + catch (runtime_error& ex) { + fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what()); + return 1; + } + + fprintf(stdout, "Saved PNG file with alpha data.\n"); + return 0; + } diff --git a/modules/imgcodecs/include/opencv2/imgcodecs.hpp b/modules/imgcodecs/include/opencv2/imgcodecs.hpp new file mode 100644 index 0000000000..fd5c08a933 --- /dev/null +++ b/modules/imgcodecs/include/opencv2/imgcodecs.hpp @@ -0,0 +1,95 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not 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 Intel Corporation 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. +// +//M*/ + +#ifndef __OPENCV_IMGCODECS_HPP__ +#define __OPENCV_IMGCODECS_HPP__ + +#include "opencv2/core.hpp" + +//////////////////////////////// image codec //////////////////////////////// +namespace cv +{ + +enum { IMREAD_UNCHANGED = -1, // 8bit, color or not + IMREAD_GRAYSCALE = 0, // 8bit, gray + IMREAD_COLOR = 1, // ?, color + IMREAD_ANYDEPTH = 2, // any depth, ? + IMREAD_ANYCOLOR = 4, // ?, any color + IMREAD_LOAD_GDAL = 8 // Use gdal driver + }; + +enum { IMWRITE_JPEG_QUALITY = 1, + IMWRITE_JPEG_PROGRESSIVE = 2, + IMWRITE_JPEG_OPTIMIZE = 3, + IMWRITE_JPEG_RST_INTERVAL = 4, + IMWRITE_JPEG_LUMA_QUALITY = 5, + IMWRITE_JPEG_CHROMA_QUALITY = 6, + IMWRITE_PNG_COMPRESSION = 16, + IMWRITE_PNG_STRATEGY = 17, + IMWRITE_PNG_BILEVEL = 18, + IMWRITE_PXM_BINARY = 32, + IMWRITE_WEBP_QUALITY = 64 + }; + +enum { IMWRITE_PNG_STRATEGY_DEFAULT = 0, + IMWRITE_PNG_STRATEGY_FILTERED = 1, + IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY = 2, + IMWRITE_PNG_STRATEGY_RLE = 3, + IMWRITE_PNG_STRATEGY_FIXED = 4 + }; + +CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); + +CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, + const std::vector& params = std::vector()); + +CV_EXPORTS_W Mat imdecode( InputArray buf, int flags ); + +CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst); + +CV_EXPORTS_W bool imencode( const String& ext, InputArray img, + CV_OUT std::vector& buf, + const std::vector& params = std::vector()); + +} // cv + +#endif //__OPENCV_IMGCODECS_HPP__ diff --git a/modules/nonfree/include/opencv2/nonfree.hpp b/modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs.hpp similarity index 86% rename from modules/nonfree/include/opencv2/nonfree.hpp rename to modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs.hpp index da8e535a87..a3cd232645 100644 --- a/modules/nonfree/include/opencv2/nonfree.hpp +++ b/modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs.hpp @@ -7,11 +7,12 @@ // copy or use the software. // // -// License Agreement +// License Agreement // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -40,18 +41,8 @@ // //M*/ -#ifndef __OPENCV_NONFREE_HPP__ -#define __OPENCV_NONFREE_HPP__ - -#include "opencv2/nonfree/features2d.hpp" - -namespace cv -{ - -CV_EXPORTS bool initModule_nonfree(); - -} - +#ifdef __OPENCV_BUILD +#error this is a compatibility header which should not be used inside the OpenCV library #endif -/* End of file. */ +#include "opencv2/imgcodecs.hpp" diff --git a/modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h b/modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h new file mode 100644 index 0000000000..ccd29a7c1c --- /dev/null +++ b/modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h @@ -0,0 +1,132 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// Intel License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000, Intel Corporation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of Intel Corporation may not 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 Intel Corporation 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. +// +//M*/ + +#ifndef __OPENCV_IMGCODECS_H__ +#define __OPENCV_IMGCODECS_H__ + +#include "opencv2/core/core_c.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +enum +{ +/* 8bit, color or not */ + CV_LOAD_IMAGE_UNCHANGED =-1, +/* 8bit, gray */ + CV_LOAD_IMAGE_GRAYSCALE =0, +/* ?, color */ + CV_LOAD_IMAGE_COLOR =1, +/* any depth, ? */ + CV_LOAD_IMAGE_ANYDEPTH =2, +/* ?, any color */ + CV_LOAD_IMAGE_ANYCOLOR =4 +}; + +/* load image from file + iscolor can be a combination of above flags where CV_LOAD_IMAGE_UNCHANGED + overrides the other flags + using CV_LOAD_IMAGE_ANYCOLOR alone is equivalent to CV_LOAD_IMAGE_UNCHANGED + unless CV_LOAD_IMAGE_ANYDEPTH is specified images are converted to 8bit +*/ +CVAPI(IplImage*) cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); +CVAPI(CvMat*) cvLoadImageM( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); + +enum +{ + CV_IMWRITE_JPEG_QUALITY =1, + CV_IMWRITE_JPEG_PROGRESSIVE =2, + CV_IMWRITE_JPEG_OPTIMIZE =3, + CV_IMWRITE_JPEG_RST_INTERVAL =4, + CV_IMWRITE_JPEG_LUMA_QUALITY =5, + CV_IMWRITE_JPEG_CHROMA_QUALITY =6, + CV_IMWRITE_PNG_COMPRESSION =16, + CV_IMWRITE_PNG_STRATEGY =17, + CV_IMWRITE_PNG_BILEVEL =18, + CV_IMWRITE_PNG_STRATEGY_DEFAULT =0, + CV_IMWRITE_PNG_STRATEGY_FILTERED =1, + CV_IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY =2, + CV_IMWRITE_PNG_STRATEGY_RLE =3, + CV_IMWRITE_PNG_STRATEGY_FIXED =4, + CV_IMWRITE_PXM_BINARY =32, + CV_IMWRITE_WEBP_QUALITY =64 +}; + +/* save image to file */ +CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, + const int* params CV_DEFAULT(0) ); + +/* decode image stored in the buffer */ +CVAPI(IplImage*) cvDecodeImage( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); +CVAPI(CvMat*) cvDecodeImageM( const CvMat* buf, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR)); + +/* encode image and store the result as a byte vector (single-row 8uC1 matrix) */ +CVAPI(CvMat*) cvEncodeImage( const char* ext, const CvArr* image, + const int* params CV_DEFAULT(0) ); + +enum +{ + CV_CVTIMG_FLIP =1, + CV_CVTIMG_SWAP_RB =2 +}; + +/* utility function: convert one image to another with optional vertical flip */ +CVAPI(void) cvConvertImage( const CvArr* src, CvArr* dst, int flags CV_DEFAULT(0)); + +CVAPI(int) cvHaveImageReader(const char* filename); +CVAPI(int) cvHaveImageWriter(const char* filename); + + +/****************************************************************************************\ +* Obsolete functions/synonyms * +\****************************************************************************************/ + +#define cvvLoadImage(name) cvLoadImage((name),1) +#define cvvSaveImage cvSaveImage +#define cvvConvertImage cvConvertImage + + +#ifdef __cplusplus +} +#endif + +#endif // __OPENCV_IMGCODECS_H__ diff --git a/modules/highgui/include/opencv2/highgui/ios.h b/modules/imgcodecs/include/opencv2/imgcodecs/ios.h similarity index 94% rename from modules/highgui/include/opencv2/highgui/ios.h rename to modules/imgcodecs/include/opencv2/imgcodecs/ios.h index a7f0395d71..8ec1356053 100644 --- a/modules/highgui/include/opencv2/highgui/ios.h +++ b/modules/imgcodecs/include/opencv2/imgcodecs/ios.h @@ -41,8 +41,11 @@ // //M*/ +#import +#import +#import +#import #include "opencv2/core/core.hpp" -#import "opencv2/highgui/cap_ios.h" UIImage* MatToUIImage(const cv::Mat& image); void UIImageToMat(const UIImage* image, diff --git a/modules/imgcodecs/perf/perf_main.cpp b/modules/imgcodecs/perf/perf_main.cpp new file mode 100644 index 0000000000..403402112d --- /dev/null +++ b/modules/imgcodecs/perf/perf_main.cpp @@ -0,0 +1,3 @@ +#include "perf_precomp.hpp" + +CV_PERF_TEST_MAIN(imgcodecs) diff --git a/modules/nonfree/perf/perf_precomp.hpp b/modules/imgcodecs/perf/perf_precomp.hpp similarity index 64% rename from modules/nonfree/perf/perf_precomp.hpp rename to modules/imgcodecs/perf/perf_precomp.hpp index 45478eb8a3..e6e34b40c6 100644 --- a/modules/nonfree/perf/perf_precomp.hpp +++ b/modules/imgcodecs/perf/perf_precomp.hpp @@ -9,21 +9,8 @@ #ifndef __OPENCV_PERF_PRECOMP_HPP__ #define __OPENCV_PERF_PRECOMP_HPP__ -#include "cvconfig.h" - #include "opencv2/ts.hpp" -#include "opencv2/nonfree.hpp" -#include "opencv2/highgui.hpp" - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_OCL -# include "opencv2/nonfree/ocl.hpp" -#endif - -#ifdef HAVE_CUDA -# include "opencv2/nonfree/cuda.hpp" -#endif +#include "opencv2/imgcodecs.hpp" #ifdef GTEST_CREATE_SHARED_LIBRARY #error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined diff --git a/modules/highgui/src/bitstrm.cpp b/modules/imgcodecs/src/bitstrm.cpp similarity index 100% rename from modules/highgui/src/bitstrm.cpp rename to modules/imgcodecs/src/bitstrm.cpp diff --git a/modules/highgui/src/bitstrm.hpp b/modules/imgcodecs/src/bitstrm.hpp similarity index 100% rename from modules/highgui/src/bitstrm.hpp rename to modules/imgcodecs/src/bitstrm.hpp diff --git a/modules/highgui/src/grfmt_base.cpp b/modules/imgcodecs/src/grfmt_base.cpp similarity index 100% rename from modules/highgui/src/grfmt_base.cpp rename to modules/imgcodecs/src/grfmt_base.cpp diff --git a/modules/highgui/src/grfmt_base.hpp b/modules/imgcodecs/src/grfmt_base.hpp similarity index 100% rename from modules/highgui/src/grfmt_base.hpp rename to modules/imgcodecs/src/grfmt_base.hpp diff --git a/modules/highgui/src/grfmt_bmp.cpp b/modules/imgcodecs/src/grfmt_bmp.cpp similarity index 100% rename from modules/highgui/src/grfmt_bmp.cpp rename to modules/imgcodecs/src/grfmt_bmp.cpp diff --git a/modules/highgui/src/grfmt_bmp.hpp b/modules/imgcodecs/src/grfmt_bmp.hpp similarity index 100% rename from modules/highgui/src/grfmt_bmp.hpp rename to modules/imgcodecs/src/grfmt_bmp.hpp diff --git a/modules/highgui/src/grfmt_exr.cpp b/modules/imgcodecs/src/grfmt_exr.cpp similarity index 100% rename from modules/highgui/src/grfmt_exr.cpp rename to modules/imgcodecs/src/grfmt_exr.cpp diff --git a/modules/highgui/src/grfmt_exr.hpp b/modules/imgcodecs/src/grfmt_exr.hpp similarity index 100% rename from modules/highgui/src/grfmt_exr.hpp rename to modules/imgcodecs/src/grfmt_exr.hpp diff --git a/modules/highgui/src/grfmt_gdal.cpp b/modules/imgcodecs/src/grfmt_gdal.cpp similarity index 100% rename from modules/highgui/src/grfmt_gdal.cpp rename to modules/imgcodecs/src/grfmt_gdal.cpp diff --git a/modules/highgui/src/grfmt_gdal.hpp b/modules/imgcodecs/src/grfmt_gdal.hpp similarity index 100% rename from modules/highgui/src/grfmt_gdal.hpp rename to modules/imgcodecs/src/grfmt_gdal.hpp diff --git a/modules/highgui/src/grfmt_hdr.cpp b/modules/imgcodecs/src/grfmt_hdr.cpp similarity index 100% rename from modules/highgui/src/grfmt_hdr.cpp rename to modules/imgcodecs/src/grfmt_hdr.cpp diff --git a/modules/highgui/src/grfmt_hdr.hpp b/modules/imgcodecs/src/grfmt_hdr.hpp similarity index 100% rename from modules/highgui/src/grfmt_hdr.hpp rename to modules/imgcodecs/src/grfmt_hdr.hpp diff --git a/modules/highgui/src/grfmt_jpeg.cpp b/modules/imgcodecs/src/grfmt_jpeg.cpp similarity index 91% rename from modules/highgui/src/grfmt_jpeg.cpp rename to modules/imgcodecs/src/grfmt_jpeg.cpp index 147f185e4c..ec1793287f 100644 --- a/modules/highgui/src/grfmt_jpeg.cpp +++ b/modules/imgcodecs/src/grfmt_jpeg.cpp @@ -600,6 +600,9 @@ bool JpegEncoder::write( const Mat& img, const std::vector& params ) int quality = 95; int progressive = 0; int optimize = 0; + int rst_interval = 0; + int luma_quality = -1; + int chroma_quality = -1; for( size_t i = 0; i < params.size(); i += 2 ) { @@ -618,15 +621,64 @@ bool JpegEncoder::write( const Mat& img, const std::vector& params ) { optimize = params[i+1]; } + + if( params[i] == CV_IMWRITE_JPEG_LUMA_QUALITY ) + { + if (params[i+1] >= 0) + { + luma_quality = MIN(MAX(params[i+1], 0), 100); + + quality = luma_quality; + + if (chroma_quality < 0) + { + chroma_quality = luma_quality; + } + } + } + + if( params[i] == CV_IMWRITE_JPEG_CHROMA_QUALITY ) + { + if (params[i+1] >= 0) + { + chroma_quality = MIN(MAX(params[i+1], 0), 100); + } + } + + if( params[i] == CV_IMWRITE_JPEG_RST_INTERVAL ) + { + rst_interval = params[i+1]; + rst_interval = MIN(MAX(rst_interval, 0), 65535L); + } } jpeg_set_defaults( &cinfo ); + cinfo.restart_interval = rst_interval; + jpeg_set_quality( &cinfo, quality, TRUE /* limit to baseline-JPEG values */ ); if( progressive ) jpeg_simple_progression( &cinfo ); if( optimize ) cinfo.optimize_coding = TRUE; + +#if JPEG_LIB_VERSION >= 70 + if (luma_quality >= 0 && chroma_quality >= 0) + { + cinfo.q_scale_factor[0] = jpeg_quality_scaling(luma_quality); + cinfo.q_scale_factor[1] = jpeg_quality_scaling(chroma_quality); + if ( luma_quality != chroma_quality ) + { + /* disable subsampling - ref. Libjpeg.txt */ + cinfo.comp_info[0].v_samp_factor = 1; + cinfo.comp_info[0].h_samp_factor = 1; + cinfo.comp_info[1].v_samp_factor = 1; + cinfo.comp_info[1].h_samp_factor = 1; + } + jpeg_default_qtables( &cinfo, TRUE ); + } +#endif // #if JPEG_LIB_VERSION >= 70 + jpeg_start_compress( &cinfo, TRUE ); if( channels > 1 ) diff --git a/modules/highgui/src/grfmt_jpeg.hpp b/modules/imgcodecs/src/grfmt_jpeg.hpp similarity index 100% rename from modules/highgui/src/grfmt_jpeg.hpp rename to modules/imgcodecs/src/grfmt_jpeg.hpp diff --git a/modules/highgui/src/grfmt_jpeg2000.cpp b/modules/imgcodecs/src/grfmt_jpeg2000.cpp similarity index 99% rename from modules/highgui/src/grfmt_jpeg2000.cpp rename to modules/imgcodecs/src/grfmt_jpeg2000.cpp index d711846ce8..83fd55a594 100644 --- a/modules/highgui/src/grfmt_jpeg2000.cpp +++ b/modules/imgcodecs/src/grfmt_jpeg2000.cpp @@ -154,7 +154,7 @@ bool Jpeg2KDecoder::readData( Mat& img ) { bool result = false; int color = img.channels() > 1; - uchar* data = img.data; + uchar* data = img.ptr(); int step = (int)img.step; jas_stream_t* stream = (jas_stream_t*)m_stream; jas_image_t* image = (jas_image_t*)m_image; @@ -478,7 +478,7 @@ bool Jpeg2KEncoder::writeComponent8u( void *__img, const Mat& _img ) for( int y = 0; y < h; y++ ) { - uchar* data = _img.data + _img.step*y; + const uchar* data = _img.ptr(y); for( int i = 0; i < ncmpts; i++ ) { for( int x = 0; x < w; x++) @@ -502,7 +502,7 @@ bool Jpeg2KEncoder::writeComponent16u( void *__img, const Mat& _img ) for( int y = 0; y < h; y++ ) { - uchar* data = _img.data + _img.step*y; + const uchar* data = _img.ptr(y); for( int i = 0; i < ncmpts; i++ ) { for( int x = 0; x < w; x++) diff --git a/modules/highgui/src/grfmt_jpeg2000.hpp b/modules/imgcodecs/src/grfmt_jpeg2000.hpp similarity index 100% rename from modules/highgui/src/grfmt_jpeg2000.hpp rename to modules/imgcodecs/src/grfmt_jpeg2000.hpp diff --git a/modules/highgui/src/grfmt_png.cpp b/modules/imgcodecs/src/grfmt_png.cpp similarity index 100% rename from modules/highgui/src/grfmt_png.cpp rename to modules/imgcodecs/src/grfmt_png.cpp diff --git a/modules/highgui/src/grfmt_png.hpp b/modules/imgcodecs/src/grfmt_png.hpp similarity index 100% rename from modules/highgui/src/grfmt_png.hpp rename to modules/imgcodecs/src/grfmt_png.hpp diff --git a/modules/highgui/src/grfmt_pxm.cpp b/modules/imgcodecs/src/grfmt_pxm.cpp similarity index 100% rename from modules/highgui/src/grfmt_pxm.cpp rename to modules/imgcodecs/src/grfmt_pxm.cpp diff --git a/modules/highgui/src/grfmt_pxm.hpp b/modules/imgcodecs/src/grfmt_pxm.hpp similarity index 100% rename from modules/highgui/src/grfmt_pxm.hpp rename to modules/imgcodecs/src/grfmt_pxm.hpp diff --git a/modules/highgui/src/grfmt_sunras.cpp b/modules/imgcodecs/src/grfmt_sunras.cpp similarity index 100% rename from modules/highgui/src/grfmt_sunras.cpp rename to modules/imgcodecs/src/grfmt_sunras.cpp diff --git a/modules/highgui/src/grfmt_sunras.hpp b/modules/imgcodecs/src/grfmt_sunras.hpp similarity index 100% rename from modules/highgui/src/grfmt_sunras.hpp rename to modules/imgcodecs/src/grfmt_sunras.hpp diff --git a/modules/highgui/src/grfmt_tiff.cpp b/modules/imgcodecs/src/grfmt_tiff.cpp similarity index 96% rename from modules/highgui/src/grfmt_tiff.cpp rename to modules/imgcodecs/src/grfmt_tiff.cpp index 9013c39d11..06b2ab6a15 100644 --- a/modules/highgui/src/grfmt_tiff.cpp +++ b/modules/imgcodecs/src/grfmt_tiff.cpp @@ -158,7 +158,7 @@ bool TiffDecoder::readHeader() m_type = CV_MAKETYPE(CV_8U, photometric > 1 ? wanted_channels : 1); break; case 16: - m_type = CV_MAKETYPE(CV_16U, photometric > 1 ? 3 : 1); + m_type = CV_MAKETYPE(CV_16U, photometric > 1 ? wanted_channels : 1); break; case 32: @@ -326,6 +326,21 @@ bool TiffDecoder::readData( Mat& img ) (ushort*)(data + img.step*i) + x*3, 0, cvSize(tile_width,1) ); } + else if (ncn == 4) + { + if (wanted_channels == 4) + { + icvCvt_BGRA2RGBA_16u_C4R(buffer16 + i*tile_width0*ncn, 0, + (ushort*)(data + img.step*i) + x * 4, 0, + cvSize(tile_width, 1)); + } + else + { + icvCvt_BGRA2BGR_16u_C4C3R(buffer16 + i*tile_width0*ncn, 0, + (ushort*)(data + img.step*i) + x * 3, 0, + cvSize(tile_width, 1), 2); + } + } else { icvCvt_BGRA2BGR_16u_C4C3R(buffer16 + i*tile_width0*ncn, 0, diff --git a/modules/highgui/src/grfmt_tiff.hpp b/modules/imgcodecs/src/grfmt_tiff.hpp similarity index 100% rename from modules/highgui/src/grfmt_tiff.hpp rename to modules/imgcodecs/src/grfmt_tiff.hpp diff --git a/modules/highgui/src/grfmt_webp.cpp b/modules/imgcodecs/src/grfmt_webp.cpp similarity index 100% rename from modules/highgui/src/grfmt_webp.cpp rename to modules/imgcodecs/src/grfmt_webp.cpp diff --git a/modules/highgui/src/grfmt_webp.hpp b/modules/imgcodecs/src/grfmt_webp.hpp similarity index 100% rename from modules/highgui/src/grfmt_webp.hpp rename to modules/imgcodecs/src/grfmt_webp.hpp diff --git a/modules/highgui/src/grfmts.hpp b/modules/imgcodecs/src/grfmts.hpp similarity index 100% rename from modules/highgui/src/grfmts.hpp rename to modules/imgcodecs/src/grfmts.hpp diff --git a/modules/highgui/src/ios_conversions.mm b/modules/imgcodecs/src/ios_conversions.mm similarity index 97% rename from modules/highgui/src/ios_conversions.mm rename to modules/imgcodecs/src/ios_conversions.mm index fa6208a17f..af522900c8 100644 --- a/modules/highgui/src/ios_conversions.mm +++ b/modules/imgcodecs/src/ios_conversions.mm @@ -40,7 +40,11 @@ // //M*/ -#import "opencv2/highgui/cap_ios.h" +#import +#import +#import +#import +#include "opencv2/core.hpp" #include "precomp.hpp" UIImage* MatToUIImage(const cv::Mat& image) { diff --git a/modules/highgui/src/loadsave.cpp b/modules/imgcodecs/src/loadsave.cpp similarity index 99% rename from modules/highgui/src/loadsave.cpp rename to modules/imgcodecs/src/loadsave.cpp index bb00869ee1..bd5adccc15 100644 --- a/modules/highgui/src/loadsave.cpp +++ b/modules/imgcodecs/src/loadsave.cpp @@ -169,9 +169,9 @@ static ImageDecoder findDecoder( const Mat& buf ) maxlen = std::max(maxlen, len); } + String signature(maxlen, ' '); size_t bufSize = buf.rows*buf.cols*buf.elemSize(); maxlen = std::min(maxlen, bufSize); - String signature(maxlen, ' '); memcpy( (void*)signature.c_str(), buf.data, maxlen ); for( i = 0; i < codecs.decoders.size(); i++ ) @@ -532,7 +532,7 @@ bool imencode( const String& ext, InputArray _image, } /****************************************************************************************\ -* HighGUI loading & saving function implementation * +* Imgcodecs loading & saving function implementation * \****************************************************************************************/ CV_IMPL int diff --git a/modules/nonfree/src/precomp.hpp b/modules/imgcodecs/src/precomp.hpp similarity index 66% rename from modules/nonfree/src/precomp.hpp rename to modules/imgcodecs/src/precomp.hpp index 001b5003c5..19e6fb9e3c 100644 --- a/modules/nonfree/src/precomp.hpp +++ b/modules/imgcodecs/src/precomp.hpp @@ -7,11 +7,10 @@ // copy or use the software. // // -// License Agreement +// Intel License Agreement // For Open Source Computer Vision Library // -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. +// Copyright (C) 2000, Intel Corporation, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -24,7 +23,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of the copyright holders may not be used to endorse or promote products +// * The name of Intel Corporation may not 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 @@ -40,26 +39,46 @@ // //M*/ -#ifndef __OPENCV_PRECOMP_H__ -#define __OPENCV_PRECOMP_H__ +#ifndef __IMGCODECS_H_ +#define __IMGCODECS_H_ -#include "opencv2/nonfree.hpp" -#include "opencv2/imgproc.hpp" +#include "opencv2/imgcodecs.hpp" #include "opencv2/core/utility.hpp" #include "opencv2/core/private.hpp" -#include "opencv2/nonfree/cuda.hpp" -#include "opencv2/core/private.cuda.hpp" +#include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/imgcodecs/imgcodecs_c.h" -#include "opencv2/core/ocl.hpp" +#include +#include +#include +#include +#include +#include -#include "opencv2/opencv_modules.hpp" +#if defined WIN32 || defined WINCE + #if !defined _WIN32_WINNT + #ifdef HAVE_MSMF + #define _WIN32_WINNT 0x0600 // Windows Vista + #else + #define _WIN32_WINNT 0x0500 // Windows 2000 + #endif + #endif -#ifdef HAVE_OPENCV_CUDAARITHM -# include "opencv2/cudaarithm.hpp" + #include + #undef small + #undef min + #undef max + #undef abs #endif -#include "opencv2/core/private.hpp" - +#ifdef HAVE_TEGRA_OPTIMIZATION +#include "opencv2/imgcodecs/imgcodecs_tegra.hpp" #endif + +#define __BEGIN__ __CV_BEGIN__ +#define __END__ __CV_END__ +#define EXIT __CV_EXIT__ + +#endif /* __IMGCODECS_H_ */ diff --git a/modules/highgui/src/rgbe.cpp b/modules/imgcodecs/src/rgbe.cpp similarity index 100% rename from modules/highgui/src/rgbe.cpp rename to modules/imgcodecs/src/rgbe.cpp diff --git a/modules/highgui/src/rgbe.hpp b/modules/imgcodecs/src/rgbe.hpp similarity index 100% rename from modules/highgui/src/rgbe.hpp rename to modules/imgcodecs/src/rgbe.hpp diff --git a/modules/highgui/src/utils.cpp b/modules/imgcodecs/src/utils.cpp similarity index 100% rename from modules/highgui/src/utils.cpp rename to modules/imgcodecs/src/utils.cpp diff --git a/modules/highgui/src/utils.hpp b/modules/imgcodecs/src/utils.hpp similarity index 100% rename from modules/highgui/src/utils.hpp rename to modules/imgcodecs/src/utils.hpp diff --git a/modules/highgui/test/test_drawing.cpp b/modules/imgcodecs/test/test_drawing.cpp similarity index 98% rename from modules/highgui/test/test_drawing.cpp rename to modules/imgcodecs/test/test_drawing.cpp index 9d9e17dde2..e4936f63a0 100644 --- a/modules/highgui/test/test_drawing.cpp +++ b/modules/imgcodecs/test/test_drawing.cpp @@ -41,7 +41,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/highgui.hpp" using namespace std; using namespace cv; @@ -408,8 +407,8 @@ int CV_DrawingTest_C::checkLineIterator( Mat& _img ) } #ifdef HAVE_JPEG -TEST(Highgui_Drawing, cpp_regression) { CV_DrawingTest_CPP test; test.safe_run(); } -TEST(Highgui_Drawing, c_regression) { CV_DrawingTest_C test; test.safe_run(); } +TEST(Imgcodecs_Drawing, cpp_regression) { CV_DrawingTest_CPP test; test.safe_run(); } +TEST(Imgcodecs_Drawing, c_regression) { CV_DrawingTest_C test; test.safe_run(); } #endif class CV_FillConvexPolyTest : public cvtest::BaseTest @@ -444,4 +443,4 @@ protected: } }; -TEST(Highgui_Drawing, fillconvexpoly_clipping) { CV_FillConvexPolyTest test; test.safe_run(); } +TEST(Imgcodecs_Drawing, fillconvexpoly_clipping) { CV_FillConvexPolyTest test; test.safe_run(); } diff --git a/modules/highgui/test/test_grfmt.cpp b/modules/imgcodecs/test/test_grfmt.cpp similarity index 92% rename from modules/highgui/test/test_grfmt.cpp rename to modules/imgcodecs/test/test_grfmt.cpp index e4d3e70461..ed991a6f31 100644 --- a/modules/highgui/test/test_grfmt.cpp +++ b/modules/imgcodecs/test/test_grfmt.cpp @@ -41,7 +41,6 @@ //M*/ #include "test_precomp.hpp" -#include "opencv2/highgui.hpp" using namespace cv; using namespace std; @@ -140,9 +139,6 @@ public: string filename = cv::tempfile(".jpg"); imwrite(filename, img); - img = imread(filename, IMREAD_UNCHANGED); - - filename = string(ts->get_data_path() + "readwrite/test_" + char(k + 48) + "_c" + char(num_channels + 48) + ".jpg"); ts->printf(ts->LOG, "reading test image : %s\n", filename.c_str()); Mat img_test = imread(filename, IMREAD_UNCHANGED); @@ -161,8 +157,9 @@ public: #endif #ifdef HAVE_TIFF - for (int num_channels = 1; num_channels <= 3; num_channels+=2) + for (int num_channels = 1; num_channels <= 4; num_channels++) { + if (num_channels == 2) continue; // tiff ts->printf(ts->LOG, "image type depth:%d channels:%d ext: %s\n", CV_16U, num_channels, ".tiff"); Mat img(img_r * k, img_c * k, CV_MAKETYPE(CV_16U, num_channels), Scalar::all(0)); @@ -223,12 +220,12 @@ public: #ifdef HAVE_PNG -TEST(Highgui_Image, write_big) { CV_GrfmtWriteBigImageTest test; test.safe_run(); } +TEST(Imgcodecs_Image, write_big) { CV_GrfmtWriteBigImageTest test; test.safe_run(); } #endif -TEST(Highgui_Image, write_imageseq) { CV_GrfmtWriteSequenceImageTest test; test.safe_run(); } +TEST(Imgcodecs_Image, write_imageseq) { CV_GrfmtWriteSequenceImageTest test; test.safe_run(); } -TEST(Highgui_Image, read_bmp_rle8) { CV_GrfmtReadBMPRLE8Test test; test.safe_run(); } +TEST(Imgcodecs_Image, read_bmp_rle8) { CV_GrfmtReadBMPRLE8Test test; test.safe_run(); } #ifdef HAVE_PNG class CV_GrfmtPNGEncodeTest : public cvtest::BaseTest @@ -257,9 +254,9 @@ public: } }; -TEST(Highgui_Image, encode_png) { CV_GrfmtPNGEncodeTest test; test.safe_run(); } +TEST(Imgcodecs_Image, encode_png) { CV_GrfmtPNGEncodeTest test; test.safe_run(); } -TEST(Highgui_ImreadVSCvtColor, regression) +TEST(Imgcodecs_ImreadVSCvtColor, regression) { cvtest::TS& ts = *cvtest::TS::ptr(); @@ -375,11 +372,11 @@ public: } }; -TEST(Highgui_Image, read_png_color_palette_with_alpha) { CV_GrfmtReadPNGColorPaletteWithAlphaTest test; test.safe_run(); } +TEST(Imgcodecs_Image, read_png_color_palette_with_alpha) { CV_GrfmtReadPNGColorPaletteWithAlphaTest test; test.safe_run(); } #endif #ifdef HAVE_JPEG -TEST(Highgui_Jpeg, encode_empty) +TEST(Imgcodecs_Jpeg, encode_empty) { cv::Mat img; std::vector jpegImg; @@ -387,7 +384,7 @@ TEST(Highgui_Jpeg, encode_empty) ASSERT_THROW(cv::imencode(".jpg", img, jpegImg), cv::Exception); } -TEST(Highgui_Jpeg, encode_decode_progressive_jpeg) +TEST(Imgcodecs_Jpeg, encode_decode_progressive_jpeg) { cvtest::TS& ts = *cvtest::TS::ptr(); string input = string(ts.get_data_path()) + "../cv/shared/lena.png"; @@ -411,7 +408,7 @@ TEST(Highgui_Jpeg, encode_decode_progressive_jpeg) remove(output_progressive.c_str()); } -TEST(Highgui_Jpeg, encode_decode_optimize_jpeg) +TEST(Imgcodecs_Jpeg, encode_decode_optimize_jpeg) { cvtest::TS& ts = *cvtest::TS::ptr(); string input = string(ts.get_data_path()) + "../cv/shared/lena.png"; @@ -434,6 +431,31 @@ TEST(Highgui_Jpeg, encode_decode_optimize_jpeg) remove(output_optimized.c_str()); } + +TEST(Imgcodecs_Jpeg, encode_decode_rst_jpeg) +{ + cvtest::TS& ts = *cvtest::TS::ptr(); + string input = string(ts.get_data_path()) + "../cv/shared/lena.png"; + cv::Mat img = cv::imread(input); + ASSERT_FALSE(img.empty()); + + std::vector params; + params.push_back(IMWRITE_JPEG_RST_INTERVAL); + params.push_back(1); + + string output_rst = cv::tempfile(".jpg"); + EXPECT_NO_THROW(cv::imwrite(output_rst, img, params)); + cv::Mat img_jpg_rst = cv::imread(output_rst); + + string output_normal = cv::tempfile(".jpg"); + EXPECT_NO_THROW(cv::imwrite(output_normal, img)); + cv::Mat img_jpg_normal = cv::imread(output_normal); + + EXPECT_EQ(0, cvtest::norm(img_jpg_rst, img_jpg_normal, NORM_INF)); + + remove(output_rst.c_str()); +} + #endif @@ -447,9 +469,9 @@ TEST(Highgui_Jpeg, encode_decode_optimize_jpeg) #ifdef ANDROID // Test disabled as it uses a lot of memory. // It is killed with SIGKILL by out of memory killer. -TEST(Highgui_Tiff, DISABLED_decode_tile16384x16384) +TEST(Imgcodecs_Tiff, DISABLED_decode_tile16384x16384) #else -TEST(Highgui_Tiff, decode_tile16384x16384) +TEST(Imgcodecs_Tiff, decode_tile16384x16384) #endif { // see issue #2161 @@ -478,7 +500,7 @@ TEST(Highgui_Tiff, decode_tile16384x16384) remove(file4.c_str()); } -TEST(Highgui_Tiff, write_read_16bit_big_little_endian) +TEST(Imgcodecs_Tiff, write_read_16bit_big_little_endian) { // see issue #2601 "16-bit Grayscale TIFF Load Failures Due to Buffer Underflow and Endianness" @@ -561,7 +583,7 @@ public: } }; -TEST(Highgui_Tiff, decode_tile_remainder) +TEST(Imgcodecs_Tiff, decode_tile_remainder) { CV_GrfmtReadTifTiledWithNotFullTiles test; test.safe_run(); } @@ -570,7 +592,7 @@ TEST(Highgui_Tiff, decode_tile_remainder) #ifdef HAVE_WEBP -TEST(Highgui_WebP, encode_decode_lossless_webp) +TEST(Imgcodecs_WebP, encode_decode_lossless_webp) { cvtest::TS& ts = *cvtest::TS::ptr(); string input = string(ts.get_data_path()) + "../cv/shared/lena.png"; @@ -619,7 +641,7 @@ TEST(Highgui_WebP, encode_decode_lossless_webp) EXPECT_TRUE(cvtest::norm(img, img_webp, NORM_INF) == 0); } -TEST(Highgui_WebP, encode_decode_lossy_webp) +TEST(Imgcodecs_WebP, encode_decode_lossy_webp) { cvtest::TS& ts = *cvtest::TS::ptr(); std::string input = std::string(ts.get_data_path()) + "../cv/shared/lena.png"; @@ -643,7 +665,7 @@ TEST(Highgui_WebP, encode_decode_lossy_webp) } } -TEST(Highgui_WebP, encode_decode_with_alpha_webp) +TEST(Imgcodecs_WebP, encode_decode_with_alpha_webp) { cvtest::TS& ts = *cvtest::TS::ptr(); std::string input = std::string(ts.get_data_path()) + "../cv/shared/lena.png"; @@ -669,7 +691,7 @@ TEST(Highgui_WebP, encode_decode_with_alpha_webp) #endif -TEST(Highgui_Hdr, regression) +TEST(Imgcodecs_Hdr, regression) { string folder = string(cvtest::TS::ptr()->get_data_path()) + "/readwrite/"; string name_rle = folder + "rle.hdr"; diff --git a/modules/imgcodecs/test/test_main.cpp b/modules/imgcodecs/test/test_main.cpp new file mode 100644 index 0000000000..461e7fac7f --- /dev/null +++ b/modules/imgcodecs/test/test_main.cpp @@ -0,0 +1,3 @@ +#include "test_precomp.hpp" + +CV_TEST_MAIN("imgcodecs") diff --git a/modules/nonfree/test/test_precomp.hpp b/modules/imgcodecs/test/test_precomp.hpp similarity index 54% rename from modules/nonfree/test/test_precomp.hpp rename to modules/imgcodecs/test/test_precomp.hpp index ba289b17c4..2aed614337 100644 --- a/modules/nonfree/test/test_precomp.hpp +++ b/modules/imgcodecs/test/test_precomp.hpp @@ -11,22 +11,10 @@ #include #include "opencv2/ts.hpp" -#include "opencv2/ts/cuda_test.hpp" #include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" -#include "opencv2/nonfree.hpp" +#include "opencv2/imgcodecs.hpp" +#include "opencv2/imgproc/imgproc_c.h" -#include "opencv2/ts/cuda_test.hpp" - -#include "opencv2/opencv_modules.hpp" -#include "cvconfig.h" - -#ifdef HAVE_OPENCV_OCL -# include "opencv2/nonfree/ocl.hpp" -#endif - -#ifdef HAVE_CUDA -# include "opencv2/nonfree/cuda.hpp" -#endif +#include "opencv2/core/private.hpp" #endif diff --git a/modules/imgproc/doc/colormaps.rst b/modules/imgproc/doc/colormaps.rst new file mode 100644 index 0000000000..9881d84ff2 --- /dev/null +++ b/modules/imgproc/doc/colormaps.rst @@ -0,0 +1,107 @@ +ColorMaps in OpenCV +=================== + +applyColorMap +--------------------- + +Applies a GNU Octave/MATLAB equivalent colormap on a given image. + +.. ocv:function:: void applyColorMap(InputArray src, OutputArray dst, int colormap) + + :param src: The source image, grayscale or colored does not matter. + :param dst: The result is the colormapped source image. Note: :ocv:func:`Mat::create` is called on dst. + :param colormap: The colormap to apply, see the list of available colormaps below. + +Currently the following GNU Octave/MATLAB equivalent colormaps are implemented: + +.. code-block:: cpp + + enum + { + COLORMAP_AUTUMN = 0, + COLORMAP_BONE = 1, + COLORMAP_JET = 2, + COLORMAP_WINTER = 3, + COLORMAP_RAINBOW = 4, + COLORMAP_OCEAN = 5, + COLORMAP_SUMMER = 6, + COLORMAP_SPRING = 7, + COLORMAP_COOL = 8, + COLORMAP_HSV = 9, + COLORMAP_PINK = 10, + COLORMAP_HOT = 11 + } + + +Description +----------- + +The human perception isn't built for observing fine changes in grayscale images. Human eyes are more sensitive to observing changes between colors, so you often need to recolor your grayscale images to get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your computer vision application. + +In OpenCV 2.4 you only need :ocv:func:`applyColorMap` to apply a colormap on a given image. The following sample code reads the path to an image from command line, applies a Jet colormap on it and shows the result: + +.. code-block:: cpp + + #include + #include + #include + + using namespace cv; + + int main(int argc, const char *argv[]) { + // Get the path to the image, if it was given + // if no arguments were given. + String filename; + if (argc > 1) { + filename = String(argv[1]); + } + // The following lines show how to apply a colormap on a given image + // and show it with cv::imshow example with an image. An exception is + // thrown if the path to the image is invalid. + if(!filename.empty()) { + Mat img0 = imread(filename); + // Throw an exception, if the image can't be read: + if(img0.empty()) { + CV_Error(CV_StsBadArg, "Sample image is empty. Please adjust your path, so it points to a valid input image!"); + } + // Holds the colormap version of the image: + Mat cm_img0; + // Apply the colormap: + applyColorMap(img0, cm_img0, COLORMAP_JET); + // Show the result: + imshow("cm_img0", cm_img0); + waitKey(0); + } + + return 0; + } + +And here are the color scales for each of the available colormaps: + ++-----------------------+---------------------------------------------------+ +| Class | Scale | ++=======================+===================================================+ +| COLORMAP_AUTUMN | .. image:: pics/colormaps/colorscale_autumn.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_BONE | .. image:: pics/colormaps/colorscale_bone.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_COOL | .. image:: pics/colormaps/colorscale_cool.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_HOT | .. image:: pics/colormaps/colorscale_hot.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_HSV | .. image:: pics/colormaps/colorscale_hsv.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_JET | .. image:: pics/colormaps/colorscale_jet.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_OCEAN | .. image:: pics/colormaps/colorscale_ocean.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_PINK | .. image:: pics/colormaps/colorscale_pink.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_RAINBOW | .. image:: pics/colormaps/colorscale_rainbow.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_SPRING | .. image:: pics/colormaps/colorscale_spring.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_SUMMER | .. image:: pics/colormaps/colorscale_summer.jpg | ++-----------------------+---------------------------------------------------+ +| COLORMAP_WINTER | .. image:: pics/colormaps/colorscale_winter.jpg | ++-----------------------+---------------------------------------------------+ diff --git a/modules/imgproc/doc/filtering.rst b/modules/imgproc/doc/filtering.rst index a055b129fc..3906594be2 100755 --- a/modules/imgproc/doc/filtering.rst +++ b/modules/imgproc/doc/filtering.rst @@ -504,6 +504,8 @@ Constructs the Gaussian pyramid for an image. :param maxlevel: 0-based index of the last (the smallest) pyramid layer. It must be non-negative. + :param borderType: Pixel extrapolation method (BORDER_CONSTANT don't supported). See :ocv:func:`borderInterpolate` for details. + The function constructs a vector of images and builds the Gaussian pyramid by recursively applying :ocv:func:`pyrDown` to the previously built pyramid layers, starting from ``dst[0]==src`` . @@ -1256,12 +1258,16 @@ Blurs an image and downsamples it. :param dst: output image; it has the specified size and the same type as ``src``. - :param dstsize: size of the output image; by default, it is computed as ``Size((src.cols+1)/2, (src.rows+1)/2)``, but in any case, the following conditions should be satisfied: + :param dstsize: size of the output image. - .. math:: + :param borderType: Pixel extrapolation method (BORDER_CONSTANT don't supported). See :ocv:func:`borderInterpolate` for details. - \begin{array}{l} - | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array} +By default, size of the output image is computed as ``Size((src.cols+1)/2, (src.rows+1)/2)``, but in any case, the following conditions should be satisfied: + +.. math:: + + \begin{array}{l} + | \texttt{dstsize.width} *2-src.cols| \leq 2 \\ | \texttt{dstsize.height} *2-src.rows| \leq 2 \end{array} The function performs the downsampling step of the Gaussian pyramid construction. First, it convolves the source image with the kernel: @@ -1271,8 +1277,6 @@ The function performs the downsampling step of the Gaussian pyramid construction Then, it downsamples the image by rejecting even rows and columns. - - pyrUp ----- Upsamples an image and then blurs it. @@ -1287,12 +1291,16 @@ Upsamples an image and then blurs it. :param dst: output image. It has the specified size and the same type as ``src`` . - :param dstsize: size of the output image; by default, it is computed as ``Size(src.cols*2, (src.rows*2)``, but in any case, the following conditions should be satisfied: + :param dstsize: size of the output image. - .. math:: + :param borderType: Pixel extrapolation method (only BORDER_DEFAULT supported). See :ocv:func:`borderInterpolate` for details. - \begin{array}{l} - | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array} +By default, size of the output image is computed as ``Size(src.cols*2, (src.rows*2)``, but in any case, the following conditions should be satisfied: + +.. math:: + + \begin{array}{l} + | \texttt{dstsize.width} -src.cols*2| \leq ( \texttt{dstsize.width} \mod 2) \\ | \texttt{dstsize.height} -src.rows*2| \leq ( \texttt{dstsize.height} \mod 2) \end{array} The function performs the upsampling step of the Gaussian pyramid construction, though it can actually be used to construct the Laplacian pyramid. First, it upsamples the source image by injecting even zero rows and columns and then convolves the result with the same kernel as in :ocv:func:`pyrDown` multiplied by 4. diff --git a/modules/imgproc/doc/histograms.rst b/modules/imgproc/doc/histograms.rst index 91199f3781..5ebf168611 100644 --- a/modules/imgproc/doc/histograms.rst +++ b/modules/imgproc/doc/histograms.rst @@ -181,6 +181,8 @@ Compares two histograms. * **CV_COMP_HELLINGER** Synonym for ``CV_COMP_BHATTACHARYYA`` + * **CV_COMP_KL_DIV** Kullback-Leibler divergence + The functions ``compareHist`` compare two dense or two sparse histograms using the specified method: * Correlation (``method=CV_COMP_CORREL``) @@ -224,6 +226,12 @@ The functions ``compareHist`` compare two dense or two sparse histograms using t d(H_1,H_2) = \sqrt{1 - \frac{1}{\sqrt{\bar{H_1} \bar{H_2} N^2}} \sum_I \sqrt{H_1(I) \cdot H_2(I)}} +* Kullback-Leibler divergence (``method=CV_COMP_KL_DIV``). + + .. math:: + + d(H_1,H_2) = \sum _I H_1(I) \log \left(\frac{H_1(I)}{H_2(I)}\right) + The function returns :math:`d(H_1, H_2)` . diff --git a/modules/imgproc/doc/imgproc.rst b/modules/imgproc/doc/imgproc.rst index acaebc4753..93b1cd9f6e 100644 --- a/modules/imgproc/doc/imgproc.rst +++ b/modules/imgproc/doc/imgproc.rst @@ -10,6 +10,7 @@ imgproc. Image Processing filtering geometric_transformations miscellaneous_transformations + colormaps histograms structural_analysis_and_shape_descriptors motion_analysis_and_object_tracking diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg new file mode 100644 index 0000000000..0c1c8a29b8 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_autumn.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_bone.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_bone.jpg new file mode 100644 index 0000000000..7dbf766359 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_bone.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg new file mode 100644 index 0000000000..4253efb99d Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_cool.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_hot.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_hot.jpg new file mode 100644 index 0000000000..cf7870085b Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_hot.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_hsv.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_hsv.jpg new file mode 100644 index 0000000000..6032b87578 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_hsv.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg new file mode 100644 index 0000000000..ea273a5705 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_jet.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg new file mode 100644 index 0000000000..d7e936397f Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_mkpj1.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_mkpj2.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_mkpj2.jpg new file mode 100644 index 0000000000..40b067afe5 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_mkpj2.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg new file mode 100644 index 0000000000..11d771f71d Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_ocean.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_pink.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_pink.jpg new file mode 100644 index 0000000000..8fad88c3f2 Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_pink.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg new file mode 100644 index 0000000000..9565527aec Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_rainbow.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg new file mode 100644 index 0000000000..ada03a160d Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_spring.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_summer.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_summer.jpg new file mode 100644 index 0000000000..10cb35cfec Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_summer.jpg differ diff --git a/modules/imgproc/doc/pics/colormaps/colorscale_winter.jpg b/modules/imgproc/doc/pics/colormaps/colorscale_winter.jpg new file mode 100644 index 0000000000..f7753548fc Binary files /dev/null and b/modules/imgproc/doc/pics/colormaps/colorscale_winter.jpg differ diff --git a/modules/imgproc/include/opencv2/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc.hpp index 7928ae0fe8..286938cdd2 100644 --- a/modules/imgproc/include/opencv2/imgproc.hpp +++ b/modules/imgproc/include/opencv2/imgproc.hpp @@ -204,7 +204,8 @@ enum { HISTCMP_CORREL = 0, HISTCMP_INTERSECT = 2, HISTCMP_BHATTACHARYYA = 3, HISTCMP_HELLINGER = HISTCMP_BHATTACHARYYA, - HISTCMP_CHISQR_ALT = 4 + HISTCMP_CHISQR_ALT = 4, + HISTCMP_KL_DIV = 5 }; //! the color conversion code @@ -1517,6 +1518,24 @@ CV_EXPORTS Ptr createGeneralizedHoughGuil(); //! Performs linear blending of two images CV_EXPORTS void blendLinear(InputArray src1, InputArray src2, InputArray weights1, InputArray weights2, OutputArray dst); +enum +{ + COLORMAP_AUTUMN = 0, + COLORMAP_BONE = 1, + COLORMAP_JET = 2, + COLORMAP_WINTER = 3, + COLORMAP_RAINBOW = 4, + COLORMAP_OCEAN = 5, + COLORMAP_SUMMER = 6, + COLORMAP_SPRING = 7, + COLORMAP_COOL = 8, + COLORMAP_HSV = 9, + COLORMAP_PINK = 10, + COLORMAP_HOT = 11 +}; + +CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap); + } // cv #endif diff --git a/modules/imgproc/include/opencv2/imgproc/types_c.h b/modules/imgproc/include/opencv2/imgproc/types_c.h index dd0d8b8a6e..de8fb62038 100644 --- a/modules/imgproc/include/opencv2/imgproc/types_c.h +++ b/modules/imgproc/include/opencv2/imgproc/types_c.h @@ -509,7 +509,8 @@ enum CV_COMP_INTERSECT =2, CV_COMP_BHATTACHARYYA =3, CV_COMP_HELLINGER =CV_COMP_BHATTACHARYYA, - CV_COMP_CHISQR_ALT =4 + CV_COMP_CHISQR_ALT =4, + CV_COMP_KL_DIV =5 }; /* Mask size for distance transform */ diff --git a/modules/imgproc/perf/opencl/perf_3vs4.cpp b/modules/imgproc/perf/opencl/perf_3vs4.cpp index f6601e1233..940a5ff63b 100644 --- a/modules/imgproc/perf/opencl/perf_3vs4.cpp +++ b/modules/imgproc/perf/opencl/perf_3vs4.cpp @@ -5,7 +5,7 @@ // Copyright (C) 2014, Advanced Micro Devices, Inc., all rights reserved. // Third party copyrights are property of their respective owners. -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_accumulate.cpp b/modules/imgproc/perf/opencl/perf_accumulate.cpp index 5b7ac4c75d..e0ba471b9c 100644 --- a/modules/imgproc/perf/opencl/perf_accumulate.cpp +++ b/modules/imgproc/perf/opencl/perf_accumulate.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_blend.cpp b/modules/imgproc/perf/opencl/perf_blend.cpp index f595069bde..6396fef7e2 100644 --- a/modules/imgproc/perf/opencl/perf_blend.cpp +++ b/modules/imgproc/perf/opencl/perf_blend.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_color.cpp b/modules/imgproc/perf/opencl/perf_color.cpp index 4a30f3a1f9..14dd614904 100644 --- a/modules/imgproc/perf/opencl/perf_color.cpp +++ b/modules/imgproc/perf/opencl/perf_color.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_filters.cpp b/modules/imgproc/perf/opencl/perf_filters.cpp index 9667b8f907..ede98c308e 100644 --- a/modules/imgproc/perf/opencl/perf_filters.cpp +++ b/modules/imgproc/perf/opencl/perf_filters.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_gftt.cpp b/modules/imgproc/perf/opencl/perf_gftt.cpp index 29626c62e3..b6c3b2c369 100644 --- a/modules/imgproc/perf/opencl/perf_gftt.cpp +++ b/modules/imgproc/perf/opencl/perf_gftt.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #include diff --git a/modules/imgproc/perf/opencl/perf_imgproc.cpp b/modules/imgproc/perf/opencl/perf_imgproc.cpp index 7f0770853d..f441bd9b32 100644 --- a/modules/imgproc/perf/opencl/perf_imgproc.cpp +++ b/modules/imgproc/perf/opencl/perf_imgproc.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_imgwarp.cpp b/modules/imgproc/perf/opencl/perf_imgwarp.cpp index b5a5138e20..d6832aec54 100644 --- a/modules/imgproc/perf/opencl/perf_imgwarp.cpp +++ b/modules/imgproc/perf/opencl/perf_imgwarp.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_matchTemplate.cpp b/modules/imgproc/perf/opencl/perf_matchTemplate.cpp index db9199b878..d230f90465 100644 --- a/modules/imgproc/perf/opencl/perf_matchTemplate.cpp +++ b/modules/imgproc/perf/opencl/perf_matchTemplate.cpp @@ -1,4 +1,4 @@ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_moments.cpp b/modules/imgproc/perf/opencl/perf_moments.cpp index e77b76850d..69a3e6835c 100644 --- a/modules/imgproc/perf/opencl/perf_moments.cpp +++ b/modules/imgproc/perf/opencl/perf_moments.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/opencl/perf_pyramid.cpp b/modules/imgproc/perf/opencl/perf_pyramid.cpp index 8bbc3184fc..f26fd1940e 100644 --- a/modules/imgproc/perf/opencl/perf_pyramid.cpp +++ b/modules/imgproc/perf/opencl/perf_pyramid.cpp @@ -44,7 +44,7 @@ // //M*/ -#include "perf_precomp.hpp" +#include "../perf_precomp.hpp" #include "opencv2/ts/ocl_perf.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/perf/perf_moments.cpp b/modules/imgproc/perf/perf_moments.cpp new file mode 100644 index 0000000000..9b3c5428f3 --- /dev/null +++ b/modules/imgproc/perf/perf_moments.cpp @@ -0,0 +1,38 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +// Copyright (C) 2014, Itseez, Inc., all rights reserved. +// Third party copyrights are property of their respective owners. + +#include "perf_precomp.hpp" + +using namespace std; +using namespace cv; +using namespace perf; +using namespace testing; +using std::tr1::make_tuple; +using std::tr1::get; + +typedef std::tr1::tuple MomentsParams_t; +typedef perf::TestBaseWithParam MomentsFixture_val; + +PERF_TEST_P(MomentsFixture_val, Moments1, + ::testing::Combine( + testing::Values(TYPICAL_MAT_SIZES), + testing::Values(CV_16U, CV_16S, CV_32F, CV_64F), + testing::Bool())) +{ + const MomentsParams_t params = GetParam(); + const Size srcSize = get<0>(params); + const MatDepth srcDepth = get<1>(params); + const bool binaryImage = get<2>(params); + + cv::Moments m; + Mat src(srcSize, srcDepth); + declare.in(src, WARMUP_RNG); + + TEST_CYCLE() m = cv::moments(src, binaryImage); + + SANITY_CHECK_MOMENTS(m, 1e-4, ERROR_RELATIVE); +} diff --git a/modules/imgproc/perf/perf_precomp.hpp b/modules/imgproc/perf/perf_precomp.hpp index 19f62712c1..5bede78db8 100644 --- a/modules/imgproc/perf/perf_precomp.hpp +++ b/modules/imgproc/perf/perf_precomp.hpp @@ -11,7 +11,7 @@ #include "opencv2/ts.hpp" #include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #ifdef GTEST_CREATE_SHARED_LIBRARY #error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined diff --git a/modules/imgproc/src/accum.cpp b/modules/imgproc/src/accum.cpp index 04a70128bb..1a4b4080e1 100644 --- a/modules/imgproc/src/accum.cpp +++ b/modules/imgproc/src/accum.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/blend.cpp b/modules/imgproc/src/blend.cpp index 4fbdff9c3d..7a2e57d520 100644 --- a/modules/imgproc/src/blend.cpp +++ b/modules/imgproc/src/blend.cpp @@ -44,7 +44,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/src/canny.cpp b/modules/imgproc/src/canny.cpp index 3590e290db..09898a539e 100644 --- a/modules/imgproc/src/canny.cpp +++ b/modules/imgproc/src/canny.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) @@ -348,6 +348,10 @@ void cv::Canny( InputArray _src, OutputArray _dst, #define CANNY_PUSH(d) *(d) = uchar(2), *stack_top++ = (d) #define CANNY_POP(d) (d) = *--stack_top +#if CV_SSE2 + bool haveSSE2 = checkHardwareSupport(CV_CPU_SSE2); +#endif + // calculate magnitude and angle of gradient, perform non-maxima suppression. // fill the map with one of the following values: // 0 - the pixel might belong to an edge @@ -363,12 +367,52 @@ void cv::Canny( InputArray _src, OutputArray _dst, if (!L2gradient) { - for (int j = 0; j < src.cols*cn; j++) + int j = 0, width = src.cols * cn; +#if CV_SSE2 + if (haveSSE2) + { + __m128i v_zero = _mm_setzero_si128(); + for ( ; j <= width - 8; j += 8) + { + __m128i v_dx = _mm_loadu_si128((const __m128i *)(_dx + j)); + __m128i v_dy = _mm_loadu_si128((const __m128i *)(_dy + j)); + v_dx = _mm_max_epi16(v_dx, _mm_sub_epi16(v_zero, v_dx)); + v_dy = _mm_max_epi16(v_dy, _mm_sub_epi16(v_zero, v_dy)); + + __m128i v_norm = _mm_add_epi32(_mm_unpacklo_epi16(v_dx, v_zero), _mm_unpacklo_epi16(v_dy, v_zero)); + _mm_storeu_si128((__m128i *)(_norm + j), v_norm); + + v_norm = _mm_add_epi32(_mm_unpackhi_epi16(v_dx, v_zero), _mm_unpackhi_epi16(v_dy, v_zero)); + _mm_storeu_si128((__m128i *)(_norm + j + 4), v_norm); + } + } +#endif + for ( ; j < width; ++j) _norm[j] = std::abs(int(_dx[j])) + std::abs(int(_dy[j])); } else { - for (int j = 0; j < src.cols*cn; j++) + int j = 0, width = src.cols * cn; +#if CV_SSE2 + if (haveSSE2) + { + for ( ; j <= width - 8; j += 8) + { + __m128i v_dx = _mm_loadu_si128((const __m128i *)(_dx + j)); + __m128i v_dy = _mm_loadu_si128((const __m128i *)(_dy + j)); + + __m128i v_dx_ml = _mm_mullo_epi16(v_dx, v_dx), v_dx_mh = _mm_mulhi_epi16(v_dx, v_dx); + __m128i v_dy_ml = _mm_mullo_epi16(v_dy, v_dy), v_dy_mh = _mm_mulhi_epi16(v_dy, v_dy); + + __m128i v_norm = _mm_add_epi32(_mm_unpacklo_epi16(v_dx_ml, v_dx_mh), _mm_unpacklo_epi16(v_dy_ml, v_dy_mh)); + _mm_storeu_si128((__m128i *)(_norm + j), v_norm); + + v_norm = _mm_add_epi32(_mm_unpackhi_epi16(v_dx_ml, v_dx_mh), _mm_unpackhi_epi16(v_dy_ml, v_dy_mh)); + _mm_storeu_si128((__m128i *)(_norm + j + 4), v_norm); + } + } +#endif + for ( ; j < width; ++j) _norm[j] = int(_dx[j])*_dx[j] + int(_dy[j])*_dy[j]; } diff --git a/modules/imgproc/src/clahe.cpp b/modules/imgproc/src/clahe.cpp index f19f192430..c329148f24 100644 --- a/modules/imgproc/src/clahe.cpp +++ b/modules/imgproc/src/clahe.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" // ---------------------------------------------------------------------- // CLAHE @@ -126,10 +126,11 @@ namespace clahe namespace { + template class CLAHE_CalcLut_Body : public cv::ParallelLoopBody { public: - CLAHE_CalcLut_Body(const cv::Mat& src, cv::Mat& lut, cv::Size tileSize, int tilesX, int clipLimit, float lutScale) : + CLAHE_CalcLut_Body(const cv::Mat& src, const cv::Mat& lut, const cv::Size& tileSize, const int& tilesX, const int& clipLimit, const float& lutScale) : src_(src), lut_(lut), tileSize_(tileSize), tilesX_(tilesX), clipLimit_(clipLimit), lutScale_(lutScale) { } @@ -146,12 +147,11 @@ namespace float lutScale_; }; - void CLAHE_CalcLut_Body::operator ()(const cv::Range& range) const + template + void CLAHE_CalcLut_Body::operator ()(const cv::Range& range) const { - const int histSize = 256; - - uchar* tileLut = lut_.ptr(range.start); - const size_t lut_step = lut_.step; + T* tileLut = lut_.ptr(range.start); + const size_t lut_step = lut_.step / sizeof(T); for (int k = range.start; k < range.end; ++k, tileLut += lut_step) { @@ -173,20 +173,20 @@ namespace int tileHist[histSize] = {0, }; int height = tileROI.height; - const size_t sstep = tile.step; - for (const uchar* ptr = tile.ptr(0); height--; ptr += sstep) + const size_t sstep = src_.step / sizeof(T); + for (const T* ptr = tile.ptr(0); height--; ptr += sstep) { int x = 0; for (; x <= tileROI.width - 4; x += 4) { int t0 = ptr[x], t1 = ptr[x+1]; - tileHist[t0]++; tileHist[t1]++; + tileHist[t0 >> shift]++; tileHist[t1 >> shift]++; t0 = ptr[x+2]; t1 = ptr[x+3]; - tileHist[t0]++; tileHist[t1]++; + tileHist[t0 >> shift]++; tileHist[t1 >> shift]++; } for (; x < tileROI.width; ++x) - tileHist[ptr[x]]++; + tileHist[ptr[x] >> shift]++; } // clip histogram @@ -221,15 +221,16 @@ namespace for (int i = 0; i < histSize; ++i) { sum += tileHist[i]; - tileLut[i] = cv::saturate_cast(sum * lutScale_); + tileLut[i] = cv::saturate_cast(sum * lutScale_); } } } + template class CLAHE_Interpolation_Body : public cv::ParallelLoopBody { public: - CLAHE_Interpolation_Body(const cv::Mat& src, cv::Mat& dst, const cv::Mat& lut, cv::Size tileSize, int tilesX, int tilesY) : + CLAHE_Interpolation_Body(const cv::Mat& src, const cv::Mat& dst, const cv::Mat& lut, const cv::Size& tileSize, const int& tilesX, const int& tilesY) : src_(src), dst_(dst), lut_(lut), tileSize_(tileSize), tilesX_(tilesX), tilesY_(tilesY) { } @@ -246,14 +247,15 @@ namespace int tilesY_; }; - void CLAHE_Interpolation_Body::operator ()(const cv::Range& range) const + template + void CLAHE_Interpolation_Body::operator ()(const cv::Range& range) const { - const size_t lut_step = lut_.step; + const size_t lut_step = lut_.step / sizeof(T); for (int y = range.start; y < range.end; ++y) { - const uchar* srcRow = src_.ptr(y); - uchar* dstRow = dst_.ptr(y); + const T* srcRow = src_.ptr(y); + T* dstRow = dst_.ptr(y); const float tyf = (static_cast(y) / tileSize_.height) - 0.5f; @@ -265,8 +267,8 @@ namespace ty1 = std::max(ty1, 0); ty2 = std::min(ty2, tilesY_ - 1); - const uchar* lutPlane1 = lut_.ptr(ty1 * tilesX_); - const uchar* lutPlane2 = lut_.ptr(ty2 * tilesX_); + const T* lutPlane1 = lut_.ptr(ty1 * tilesX_); + const T* lutPlane2 = lut_.ptr(ty2 * tilesX_); for (int x = 0; x < src_.cols; ++x) { @@ -292,7 +294,7 @@ namespace res += lutPlane2[ind1] * ((1.0f - xa) * (ya)); res += lutPlane2[ind2] * ((xa) * (ya)); - dstRow[x] = cv::saturate_cast(res); + dstRow[x] = cv::saturate_cast(res); } } } @@ -340,13 +342,13 @@ namespace void CLAHE_Impl::apply(cv::InputArray _src, cv::OutputArray _dst) { - CV_Assert( _src.type() == CV_8UC1 ); + CV_Assert( _src.type() == CV_8UC1 || _src.type() == CV_16UC1 ); #ifdef HAVE_OPENCL - bool useOpenCL = cv::ocl::useOpenCL() && _src.isUMat() && _src.dims()<=2; + bool useOpenCL = cv::ocl::useOpenCL() && _src.isUMat() && _src.dims()<=2 && _src.type() == CV_8UC1; #endif - const int histSize = 256; + int histSize = _src.type() == CV_8UC1 ? 256 : 4096; cv::Size tileSize; cv::_InputArray _srcForLut; @@ -394,13 +396,23 @@ namespace _dst.create( src.size(), src.type() ); cv::Mat dst = _dst.getMat(); cv::Mat srcForLut = _srcForLut.getMat(); - lut_.create(tilesX_ * tilesY_, histSize, CV_8UC1); + lut_.create(tilesX_ * tilesY_, histSize, _src.type()); - CLAHE_CalcLut_Body calcLutBody(srcForLut, lut_, tileSize, tilesX_, clipLimit, lutScale); - cv::parallel_for_(cv::Range(0, tilesX_ * tilesY_), calcLutBody); + cv::Ptr calcLutBody; + if (_src.type() == CV_8UC1) + calcLutBody = cv::makePtr >(srcForLut, lut_, tileSize, tilesX_, clipLimit, lutScale); + else if (_src.type() == CV_16UC1) + calcLutBody = cv::makePtr >(srcForLut, lut_, tileSize, tilesX_, clipLimit, lutScale); + CV_Assert(!calcLutBody.empty()); + cv::parallel_for_(cv::Range(0, tilesX_ * tilesY_), *calcLutBody); - CLAHE_Interpolation_Body interpolationBody(src, dst, lut_, tileSize, tilesX_, tilesY_); - cv::parallel_for_(cv::Range(0, src.rows), interpolationBody); + cv::Ptr interpolationBody; + if (_src.type() == CV_8UC1) + interpolationBody = cv::makePtr >(src, dst, lut_, tileSize, tilesX_, tilesY_); + else if (_src.type() == CV_16UC1) + interpolationBody = cv::makePtr >(src, dst, lut_, tileSize, tilesX_, tilesY_); + CV_Assert(!interpolationBody.empty()); + cv::parallel_for_(cv::Range(0, src.rows), *interpolationBody); } void CLAHE_Impl::setClipLimit(double clipLimit) diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index fe460ee75a..71f163bbae 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -90,7 +90,7 @@ \**********************************************************************************/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #include #define CV_DESCALE(x,n) (((x) + (1 << ((n)-1))) >> (n)) @@ -2038,6 +2038,10 @@ struct Luv2RGB_f float G = X*C3 + Y*C4 + Z*C5; float B = X*C6 + Y*C7 + Z*C8; + R = std::min(std::max(R, 0.f), 1.f); + G = std::min(std::max(G, 0.f), 1.f); + B = std::min(std::max(B, 0.f), 1.f); + if( gammaTab ) { R = splineInterpolate(R*gscale, gammaTab, GAMMA_TAB_SIZE); @@ -3377,18 +3381,16 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) _dst.create(sz, CV_8UC2); dst = _dst.getMat(); -#ifdef HAVE_IPP +#if defined(HAVE_IPP) && 0 // breaks OCL accuracy tests CV_SUPPRESS_DEPRECATED_START -#if 0 + if (code == CV_BGR2BGR565 && scn == 3) { if (CvtColorIPPLoop(src, dst, IPPGeneralFunctor((ippiGeneralFunc)ippiBGRToBGR565_8u16u_C3R))) return; setIppErrorStatus(); } - else -#endif - if (code == CV_BGRA2BGR565 && scn == 4) + else if (code == CV_BGRA2BGR565 && scn == 4) { if (CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], @@ -3783,6 +3785,7 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) if( depth == CV_8U || depth == CV_16U ) { +#if 0 // breaks OCL accuracy tests if( code == CV_BGR2HSV_FULL && scn == 3 ) { if( CvtColorIPPLoopCopy(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC3RTab[depth], ippiRGB2HSVTab[depth], 2, 1, 0, depth)) ) @@ -3795,17 +3798,18 @@ void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) return; setIppErrorStatus(); } - else if( code == CV_RGB2HSV_FULL && scn == 3 && depth == CV_16U ) - { - if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HSVTab[depth])) ) - return; - setIppErrorStatus(); - } else if( code == CV_RGB2HSV_FULL && scn == 4 ) { if( CvtColorIPPLoop(src, dst, IPPReorderGeneralFunctor(ippiSwapChannelsC4C3RTab[depth], ippiRGB2HSVTab[depth], 0, 1, 2, depth)) ) return; setIppErrorStatus(); + } else +#endif + if( code == CV_RGB2HSV_FULL && scn == 3 && depth == CV_16U ) + { + if( CvtColorIPPLoopCopy(src, dst, IPPGeneralFunctor(ippiRGB2HSVTab[depth])) ) + return; + setIppErrorStatus(); } else if( code == CV_BGR2HLS_FULL && scn == 3 ) { diff --git a/modules/imgproc/src/colormap.cpp b/modules/imgproc/src/colormap.cpp new file mode 100644 index 0000000000..08ff44a5c6 --- /dev/null +++ b/modules/imgproc/src/colormap.cpp @@ -0,0 +1,530 @@ +/* + * Copyright (c) 2011. Philipp Wagner . + * Released to public domain under terms of the BSD Simplified license. + * + * 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 the organization nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * See + */ +#include "precomp.hpp" +#include + +#ifdef _MSC_VER +#pragma warning( disable: 4305 ) +#endif + +namespace cv +{ + +static Mat linspace(float x0, float x1, int n) +{ + Mat pts(n, 1, CV_32FC1); + float step = (x1-x0)/(n-1); + for(int i = 0; i < n; i++) + pts.at(i,0) = x0+i*step; + return pts; +} + +//------------------------------------------------------------------------------ +// cv::sortMatrixRowsByIndices +//------------------------------------------------------------------------------ +static void sortMatrixRowsByIndices(InputArray _src, InputArray _indices, OutputArray _dst) +{ + if(_indices.getMat().type() != CV_32SC1) + CV_Error(Error::StsUnsupportedFormat, "cv::sortRowsByIndices only works on integer indices!"); + Mat src = _src.getMat(); + std::vector indices = _indices.getMat(); + _dst.create(src.rows, src.cols, src.type()); + Mat dst = _dst.getMat(); + for(size_t idx = 0; idx < indices.size(); idx++) { + Mat originalRow = src.row(indices[idx]); + Mat sortedRow = dst.row((int)idx); + originalRow.copyTo(sortedRow); + } +} + +static Mat sortMatrixRowsByIndices(InputArray src, InputArray indices) +{ + Mat dst; + sortMatrixRowsByIndices(src, indices, dst); + return dst; +} + + +static Mat argsort(InputArray _src, bool ascending=true) +{ + Mat src = _src.getMat(); + if (src.rows != 1 && src.cols != 1) + CV_Error(Error::StsBadArg, "cv::argsort only sorts 1D matrices."); + int flags = SORT_EVERY_ROW | (ascending ? SORT_ASCENDING : SORT_DESCENDING); + Mat sorted_indices; + sortIdx(src.reshape(1,1),sorted_indices,flags); + return sorted_indices; +} + +template static +Mat interp1_(const Mat& X_, const Mat& Y_, const Mat& XI) +{ + int n = XI.rows; + // sort input table + std::vector sort_indices = argsort(X_); + + Mat X = sortMatrixRowsByIndices(X_,sort_indices); + Mat Y = sortMatrixRowsByIndices(Y_,sort_indices); + // interpolated values + Mat yi = Mat::zeros(XI.size(), XI.type()); + for(int i = 0; i < n; i++) { + int c = 0; + int low = 0; + int high = X.rows - 1; + // set bounds + if(XI.at<_Tp>(i,0) < X.at<_Tp>(low, 0)) + high = 1; + if(XI.at<_Tp>(i,0) > X.at<_Tp>(high, 0)) + low = high - 1; + // binary search + while((high-low)>1) { + c = low + ((high - low) >> 1); + if(XI.at<_Tp>(i,0) > X.at<_Tp>(c,0)) { + low = c; + } else { + high = c; + } + } + // linear interpolation + yi.at<_Tp>(i,0) += Y.at<_Tp>(low,0) + + (XI.at<_Tp>(i,0) - X.at<_Tp>(low,0)) + * (Y.at<_Tp>(high,0) - Y.at<_Tp>(low,0)) + / (X.at<_Tp>(high,0) - X.at<_Tp>(low,0)); + } + return yi; +} + +static Mat interp1(InputArray _x, InputArray _Y, InputArray _xi) +{ + // get matrices + Mat x = _x.getMat(); + Mat Y = _Y.getMat(); + Mat xi = _xi.getMat(); + // check types & alignment + CV_Assert((x.type() == Y.type()) && (Y.type() == xi.type())); + CV_Assert((x.cols == 1) && (x.rows == Y.rows) && (x.cols == Y.cols)); + // call templated interp1 + switch(x.type()) { + case CV_8SC1: return interp1_(x,Y,xi); break; + case CV_8UC1: return interp1_(x,Y,xi); break; + case CV_16SC1: return interp1_(x,Y,xi); break; + case CV_16UC1: return interp1_(x,Y,xi); break; + case CV_32SC1: return interp1_(x,Y,xi); break; + case CV_32FC1: return interp1_(x,Y,xi); break; + case CV_64FC1: return interp1_(x,Y,xi); break; + default: CV_Error(Error::StsUnsupportedFormat, ""); break; + } + return Mat(); +} + +namespace colormap +{ + + class ColorMap { + + protected: + Mat _lut; + + public: + virtual ~ColorMap() {} + + // Applies the colormap on a given image. + // + // This function expects BGR-aligned data of type CV_8UC1 or + // CV_8UC3. If the wrong image type is given, the original image + // will be returned. + // + // Throws an error for wrong-aligned lookup table, which must be + // of size 256 in the latest OpenCV release (2.3.1). + void operator()(InputArray src, OutputArray dst) const; + + // Setup base map to interpolate from. + virtual void init(int n) = 0; + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + int n) { + return linear_colormap(X,r,g,b,linspace(0,1,n)); + } + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + float begin, float end, float n) { + return linear_colormap(X,r,g,b,linspace(begin,end, cvRound(n))); + } + + // Interpolates from a base colormap. + static Mat linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + InputArray xi); + }; + + // Equals the GNU Octave colormap "autumn". + class Autumn : public ColorMap { + public: + Autumn() : ColorMap() { + init(256); + } + + Autumn(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "bone". + class Bone : public ColorMap { + public: + Bone() : ColorMap() { + init(256); + } + + Bone(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01388888888888889, 0.02777777777777778, 0.04166666666666666, 0.05555555555555555, 0.06944444444444445, 0.08333333333333333, 0.09722222222222221, 0.1111111111111111, 0.125, 0.1388888888888889, 0.1527777777777778, 0.1666666666666667, 0.1805555555555556, 0.1944444444444444, 0.2083333333333333, 0.2222222222222222, 0.2361111111111111, 0.25, 0.2638888888888889, 0.2777777777777778, 0.2916666666666666, 0.3055555555555555, 0.3194444444444444, 0.3333333333333333, 0.3472222222222222, 0.3611111111111111, 0.375, 0.3888888888888888, 0.4027777777777777, 0.4166666666666666, 0.4305555555555555, 0.4444444444444444, 0.4583333333333333, 0.4722222222222222, 0.4861111111111112, 0.5, 0.5138888888888888, 0.5277777777777778, 0.5416666666666667, 0.5555555555555556, 0.5694444444444444, 0.5833333333333333, 0.5972222222222222, 0.611111111111111, 0.6249999999999999, 0.6388888888888888, 0.6527777777777778, 0.6726190476190474, 0.6944444444444442, 0.7162698412698412, 0.7380952380952381, 0.7599206349206349, 0.7817460317460316, 0.8035714285714286, 0.8253968253968254, 0.8472222222222221, 0.8690476190476188, 0.8908730158730158, 0.9126984126984128, 0.9345238095238095, 0.9563492063492063, 0.978174603174603, 1}; + float g[] = { 0, 0.01388888888888889, 0.02777777777777778, 0.04166666666666666, 0.05555555555555555, 0.06944444444444445, 0.08333333333333333, 0.09722222222222221, 0.1111111111111111, 0.125, 0.1388888888888889, 0.1527777777777778, 0.1666666666666667, 0.1805555555555556, 0.1944444444444444, 0.2083333333333333, 0.2222222222222222, 0.2361111111111111, 0.25, 0.2638888888888889, 0.2777777777777778, 0.2916666666666666, 0.3055555555555555, 0.3194444444444444, 0.3353174603174602, 0.3544973544973544, 0.3736772486772486, 0.3928571428571428, 0.412037037037037, 0.4312169312169312, 0.4503968253968254, 0.4695767195767195, 0.4887566137566137, 0.5079365079365078, 0.5271164021164021, 0.5462962962962963, 0.5654761904761904, 0.5846560846560845, 0.6038359788359787, 0.623015873015873, 0.6421957671957671, 0.6613756613756612, 0.6805555555555555, 0.6997354497354497, 0.7189153439153438, 0.7380952380952379, 0.7572751322751322, 0.7764550264550264, 0.7916666666666666, 0.8055555555555555, 0.8194444444444444, 0.8333333333333334, 0.8472222222222222, 0.861111111111111, 0.875, 0.8888888888888888, 0.9027777777777777, 0.9166666666666665, 0.9305555555555555, 0.9444444444444444, 0.9583333333333333, 0.9722222222222221, 0.986111111111111, 1}; + float b[] = { 0, 0.01917989417989418, 0.03835978835978836, 0.05753968253968253, 0.07671957671957672, 0.09589947089947089, 0.1150793650793651, 0.1342592592592592, 0.1534391534391534, 0.1726190476190476, 0.1917989417989418, 0.210978835978836, 0.2301587301587301, 0.2493386243386243, 0.2685185185185185, 0.2876984126984127, 0.3068783068783069, 0.326058201058201, 0.3452380952380952, 0.3644179894179894, 0.3835978835978835, 0.4027777777777777, 0.4219576719576719, 0.4411375661375661, 0.4583333333333333, 0.4722222222222222, 0.4861111111111111, 0.5, 0.5138888888888888, 0.5277777777777777, 0.5416666666666666, 0.5555555555555556, 0.5694444444444444, 0.5833333333333333, 0.5972222222222222, 0.6111111111111112, 0.625, 0.6388888888888888, 0.6527777777777778, 0.6666666666666667, 0.6805555555555556, 0.6944444444444444, 0.7083333333333333, 0.7222222222222222, 0.736111111111111, 0.7499999999999999, 0.7638888888888888, 0.7777777777777778, 0.7916666666666666, 0.8055555555555555, 0.8194444444444444, 0.8333333333333334, 0.8472222222222222, 0.861111111111111, 0.875, 0.8888888888888888, 0.9027777777777777, 0.9166666666666665, 0.9305555555555555, 0.9444444444444444, 0.9583333333333333, 0.9722222222222221, 0.986111111111111, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + + + + // Equals the GNU Octave colormap "jet". + class Jet : public ColorMap { + + public: + Jet() { + init(256); + } + Jet(int n) : ColorMap() { + init(n); + } + + void init(int n) { + // breakpoints + Mat X = linspace(0,1,256); + // define the basemap + float r[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.00588235294117645,0.02156862745098032,0.03725490196078418,0.05294117647058827,0.06862745098039214,0.084313725490196,0.1000000000000001,0.115686274509804,0.1313725490196078,0.1470588235294117,0.1627450980392156,0.1784313725490196,0.1941176470588235,0.2098039215686274,0.2254901960784315,0.2411764705882353,0.2568627450980392,0.2725490196078431,0.2882352941176469,0.303921568627451,0.3196078431372549,0.3352941176470587,0.3509803921568628,0.3666666666666667,0.3823529411764706,0.3980392156862744,0.4137254901960783,0.4294117647058824,0.4450980392156862,0.4607843137254901,0.4764705882352942,0.4921568627450981,0.5078431372549019,0.5235294117647058,0.5392156862745097,0.5549019607843135,0.5705882352941174,0.5862745098039217,0.6019607843137256,0.6176470588235294,0.6333333333333333,0.6490196078431372,0.664705882352941,0.6803921568627449,0.6960784313725492,0.7117647058823531,0.7274509803921569,0.7431372549019608,0.7588235294117647,0.7745098039215685,0.7901960784313724,0.8058823529411763,0.8215686274509801,0.8372549019607844,0.8529411764705883,0.8686274509803922,0.884313725490196,0.8999999999999999,0.9156862745098038,0.9313725490196076,0.947058823529412,0.9627450980392158,0.9784313725490197,0.9941176470588236,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9862745098039216,0.9705882352941178,0.9549019607843139,0.93921568627451,0.9235294117647062,0.9078431372549018,0.892156862745098,0.8764705882352941,0.8607843137254902,0.8450980392156864,0.8294117647058825,0.8137254901960786,0.7980392156862743,0.7823529411764705,0.7666666666666666,0.7509803921568627,0.7352941176470589,0.719607843137255,0.7039215686274511,0.6882352941176473,0.6725490196078434,0.6568627450980391,0.6411764705882352,0.6254901960784314,0.6098039215686275,0.5941176470588236,0.5784313725490198,0.5627450980392159,0.5470588235294116,0.5313725490196077,0.5156862745098039,0.5}; + float g[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001960784313725483,0.01764705882352935,0.03333333333333333,0.0490196078431373,0.06470588235294117,0.08039215686274503,0.09607843137254901,0.111764705882353,0.1274509803921569,0.1431372549019607,0.1588235294117647,0.1745098039215687,0.1901960784313725,0.2058823529411764,0.2215686274509804,0.2372549019607844,0.2529411764705882,0.2686274509803921,0.2843137254901961,0.3,0.3156862745098039,0.3313725490196078,0.3470588235294118,0.3627450980392157,0.3784313725490196,0.3941176470588235,0.4098039215686274,0.4254901960784314,0.4411764705882353,0.4568627450980391,0.4725490196078431,0.4882352941176471,0.503921568627451,0.5196078431372548,0.5352941176470587,0.5509803921568628,0.5666666666666667,0.5823529411764705,0.5980392156862746,0.6137254901960785,0.6294117647058823,0.6450980392156862,0.6607843137254901,0.6764705882352942,0.692156862745098,0.7078431372549019,0.723529411764706,0.7392156862745098,0.7549019607843137,0.7705882352941176,0.7862745098039214,0.8019607843137255,0.8176470588235294,0.8333333333333333,0.8490196078431373,0.8647058823529412,0.8803921568627451,0.8960784313725489,0.9117647058823528,0.9274509803921569,0.9431372549019608,0.9588235294117646,0.9745098039215687,0.9901960784313726,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9901960784313726,0.9745098039215687,0.9588235294117649,0.943137254901961,0.9274509803921571,0.9117647058823528,0.8960784313725489,0.8803921568627451,0.8647058823529412,0.8490196078431373,0.8333333333333335,0.8176470588235296,0.8019607843137253,0.7862745098039214,0.7705882352941176,0.7549019607843137,0.7392156862745098,0.723529411764706,0.7078431372549021,0.6921568627450982,0.6764705882352944,0.6607843137254901,0.6450980392156862,0.6294117647058823,0.6137254901960785,0.5980392156862746,0.5823529411764707,0.5666666666666669,0.5509803921568626,0.5352941176470587,0.5196078431372548,0.503921568627451,0.4882352941176471,0.4725490196078432,0.4568627450980394,0.4411764705882355,0.4254901960784316,0.4098039215686273,0.3941176470588235,0.3784313725490196,0.3627450980392157,0.3470588235294119,0.331372549019608,0.3156862745098041,0.2999999999999998,0.284313725490196,0.2686274509803921,0.2529411764705882,0.2372549019607844,0.2215686274509805,0.2058823529411766,0.1901960784313728,0.1745098039215689,0.1588235294117646,0.1431372549019607,0.1274509803921569,0.111764705882353,0.09607843137254912,0.08039215686274526,0.06470588235294139,0.04901960784313708,0.03333333333333321,0.01764705882352935,0.001960784313725483,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + float b[] = {0.5,0.5156862745098039,0.5313725490196078,0.5470588235294118,0.5627450980392157,0.5784313725490196,0.5941176470588235,0.6098039215686275,0.6254901960784314,0.6411764705882352,0.6568627450980392,0.6725490196078432,0.6882352941176471,0.7039215686274509,0.7196078431372549,0.7352941176470589,0.7509803921568627,0.7666666666666666,0.7823529411764706,0.7980392156862746,0.8137254901960784,0.8294117647058823,0.8450980392156863,0.8607843137254902,0.8764705882352941,0.892156862745098,0.907843137254902,0.9235294117647059,0.9392156862745098,0.9549019607843137,0.9705882352941176,0.9862745098039216,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.9941176470588236,0.9784313725490197,0.9627450980392158,0.9470588235294117,0.9313725490196079,0.915686274509804,0.8999999999999999,0.884313725490196,0.8686274509803922,0.8529411764705883,0.8372549019607844,0.8215686274509804,0.8058823529411765,0.7901960784313726,0.7745098039215685,0.7588235294117647,0.7431372549019608,0.7274509803921569,0.7117647058823531,0.696078431372549,0.6803921568627451,0.6647058823529413,0.6490196078431372,0.6333333333333333,0.6176470588235294,0.6019607843137256,0.5862745098039217,0.5705882352941176,0.5549019607843138,0.5392156862745099,0.5235294117647058,0.5078431372549019,0.4921568627450981,0.4764705882352942,0.4607843137254903,0.4450980392156865,0.4294117647058826,0.4137254901960783,0.3980392156862744,0.3823529411764706,0.3666666666666667,0.3509803921568628,0.335294117647059,0.3196078431372551,0.3039215686274508,0.2882352941176469,0.2725490196078431,0.2568627450980392,0.2411764705882353,0.2254901960784315,0.2098039215686276,0.1941176470588237,0.1784313725490199,0.1627450980392156,0.1470588235294117,0.1313725490196078,0.115686274509804,0.1000000000000001,0.08431372549019622,0.06862745098039236,0.05294117647058805,0.03725490196078418,0.02156862745098032,0.00588235294117645,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + // now build lookup table + this->_lut = ColorMap::linear_colormap(X, + Mat(256,1, CV_32FC1, r).clone(), // red + Mat(256,1, CV_32FC1, g).clone(), // green + Mat(256,1, CV_32FC1, b).clone(), // blue + n); + } + }; + + // Equals the GNU Octave colormap "winter". + class Winter : public ColorMap { + public: + Winter() : ColorMap() { + init(256); + } + + Winter(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + float g[] = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; + float b[] = {1.0, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65, 0.6, 0.55, 0.5}; + Mat X = linspace(0,1,11); + this->_lut = ColorMap::linear_colormap(X, + Mat(11,1, CV_32FC1, r).clone(), // red + Mat(11,1, CV_32FC1, g).clone(), // green + Mat(11,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "rainbow". + class Rainbow : public ColorMap { + public: + Rainbow() : ColorMap() { + init(256); + } + + Rainbow(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9365079365079367, 0.8571428571428572, 0.7777777777777777, 0.6984126984126986, 0.6190476190476191, 0.53968253968254, 0.4603174603174605, 0.3809523809523814, 0.3015873015873018, 0.2222222222222223, 0.1428571428571432, 0.06349206349206415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03174603174603208, 0.08465608465608465, 0.1375661375661377, 0.1904761904761907, 0.2433862433862437, 0.2962962962962963, 0.3492063492063493, 0.4021164021164023, 0.4550264550264553, 0.5079365079365079, 0.5608465608465609, 0.6137566137566139, 0.666666666666667}; + float g[] = { 0, 0.03968253968253968, 0.07936507936507936, 0.119047619047619, 0.1587301587301587, 0.1984126984126984, 0.2380952380952381, 0.2777777777777778, 0.3174603174603174, 0.3571428571428571, 0.3968253968253968, 0.4365079365079365, 0.4761904761904762, 0.5158730158730158, 0.5555555555555556, 0.5952380952380952, 0.6349206349206349, 0.6746031746031745, 0.7142857142857142, 0.753968253968254, 0.7936507936507936, 0.8333333333333333, 0.873015873015873, 0.9126984126984127, 0.9523809523809523, 0.992063492063492, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9841269841269842, 0.9047619047619047, 0.8253968253968256, 0.7460317460317465, 0.666666666666667, 0.587301587301587, 0.5079365079365079, 0.4285714285714288, 0.3492063492063493, 0.2698412698412698, 0.1904761904761907, 0.1111111111111116, 0.03174603174603208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01587301587301582, 0.09523809523809534, 0.1746031746031744, 0.2539682539682535, 0.333333333333333, 0.412698412698413, 0.4920634920634921, 0.5714285714285712, 0.6507936507936507, 0.7301587301587302, 0.8095238095238093, 0.8888888888888884, 0.9682539682539679, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "ocean". + class Ocean : public ColorMap { + public: + Ocean() : ColorMap() { + init(256); + } + + Ocean(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04761904761904762, 0.09523809523809523, 0.1428571428571428, 0.1904761904761905, 0.2380952380952381, 0.2857142857142857, 0.3333333333333333, 0.3809523809523809, 0.4285714285714285, 0.4761904761904762, 0.5238095238095238, 0.5714285714285714, 0.6190476190476191, 0.6666666666666666, 0.7142857142857143, 0.7619047619047619, 0.8095238095238095, 0.8571428571428571, 0.9047619047619048, 0.9523809523809523, 1}; + float g[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.02380952380952381, 0.04761904761904762, 0.07142857142857142, 0.09523809523809523, 0.119047619047619, 0.1428571428571428, 0.1666666666666667, 0.1904761904761905, 0.2142857142857143, 0.2380952380952381, 0.2619047619047619, 0.2857142857142857, 0.3095238095238095, 0.3333333333333333, 0.3571428571428572, 0.3809523809523809, 0.4047619047619048, 0.4285714285714285, 0.4523809523809524, 0.4761904761904762, 0.5, 0.5238095238095238, 0.5476190476190477, 0.5714285714285714, 0.5952380952380952, 0.6190476190476191, 0.6428571428571429, 0.6666666666666666, 0.6904761904761905, 0.7142857142857143, 0.7380952380952381, 0.7619047619047619, 0.7857142857142857, 0.8095238095238095, 0.8333333333333334, 0.8571428571428571, 0.8809523809523809, 0.9047619047619048, 0.9285714285714286, 0.9523809523809523, 0.9761904761904762, 1}; + float b[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "summer". + class Summer : public ColorMap { + public: + Summer() : ColorMap() { + init(256); + } + + Summer(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float g[] = { 0.5, 0.5079365079365079, 0.5158730158730158, 0.5238095238095238, 0.5317460317460317, 0.5396825396825397, 0.5476190476190477, 0.5555555555555556, 0.5634920634920635, 0.5714285714285714, 0.5793650793650793, 0.5873015873015873, 0.5952380952380952, 0.6031746031746031, 0.6111111111111112, 0.6190476190476191, 0.626984126984127, 0.6349206349206349, 0.6428571428571428, 0.6507936507936508, 0.6587301587301587, 0.6666666666666666, 0.6746031746031746, 0.6825396825396826, 0.6904761904761905, 0.6984126984126984, 0.7063492063492063, 0.7142857142857143, 0.7222222222222222, 0.7301587301587301, 0.7380952380952381, 0.746031746031746, 0.753968253968254, 0.7619047619047619, 0.7698412698412698, 0.7777777777777778, 0.7857142857142857, 0.7936507936507937, 0.8015873015873016, 0.8095238095238095, 0.8174603174603174, 0.8253968253968254, 0.8333333333333333, 0.8412698412698413, 0.8492063492063492, 0.8571428571428572, 0.8650793650793651, 0.873015873015873, 0.8809523809523809, 0.8888888888888888, 0.8968253968253967, 0.9047619047619048, 0.9126984126984127, 0.9206349206349207, 0.9285714285714286, 0.9365079365079365, 0.9444444444444444, 0.9523809523809523, 0.9603174603174602, 0.9682539682539683, 0.9761904761904762, 0.9841269841269842, 0.9920634920634921, 1}; + float b[] = { 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "spring". + class Spring : public ColorMap { + public: + Spring() : ColorMap() { + init(256); + } + + Spring(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float b[] = { 1, 0.9841269841269842, 0.9682539682539683, 0.9523809523809523, 0.9365079365079365, 0.9206349206349207, 0.9047619047619048, 0.8888888888888888, 0.873015873015873, 0.8571428571428572, 0.8412698412698413, 0.8253968253968254, 0.8095238095238095, 0.7936507936507937, 0.7777777777777778, 0.7619047619047619, 0.746031746031746, 0.7301587301587302, 0.7142857142857143, 0.6984126984126984, 0.6825396825396826, 0.6666666666666667, 0.6507936507936508, 0.6349206349206349, 0.6190476190476191, 0.6031746031746033, 0.5873015873015873, 0.5714285714285714, 0.5555555555555556, 0.5396825396825398, 0.5238095238095238, 0.5079365079365079, 0.4920634920634921, 0.4761904761904762, 0.4603174603174603, 0.4444444444444444, 0.4285714285714286, 0.4126984126984127, 0.3968253968253969, 0.3809523809523809, 0.3650793650793651, 0.3492063492063492, 0.3333333333333334, 0.3174603174603174, 0.3015873015873016, 0.2857142857142857, 0.2698412698412699, 0.253968253968254, 0.2380952380952381, 0.2222222222222222, 0.2063492063492064, 0.1904761904761905, 0.1746031746031746, 0.1587301587301587, 0.1428571428571429, 0.126984126984127, 0.1111111111111112, 0.09523809523809523, 0.07936507936507942, 0.06349206349206349, 0.04761904761904767, 0.03174603174603174, 0.01587301587301593, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "cool". + class Cool : public ColorMap { + public: + Cool() : ColorMap() { + init(256); + } + + Cool(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.01587301587301587, 0.03174603174603174, 0.04761904761904762, 0.06349206349206349, 0.07936507936507936, 0.09523809523809523, 0.1111111111111111, 0.126984126984127, 0.1428571428571428, 0.1587301587301587, 0.1746031746031746, 0.1904761904761905, 0.2063492063492063, 0.2222222222222222, 0.2380952380952381, 0.253968253968254, 0.2698412698412698, 0.2857142857142857, 0.3015873015873016, 0.3174603174603174, 0.3333333333333333, 0.3492063492063492, 0.3650793650793651, 0.3809523809523809, 0.3968253968253968, 0.4126984126984127, 0.4285714285714285, 0.4444444444444444, 0.4603174603174603, 0.4761904761904762, 0.492063492063492, 0.5079365079365079, 0.5238095238095238, 0.5396825396825397, 0.5555555555555556, 0.5714285714285714, 0.5873015873015873, 0.6031746031746031, 0.6190476190476191, 0.6349206349206349, 0.6507936507936508, 0.6666666666666666, 0.6825396825396826, 0.6984126984126984, 0.7142857142857143, 0.7301587301587301, 0.746031746031746, 0.7619047619047619, 0.7777777777777778, 0.7936507936507936, 0.8095238095238095, 0.8253968253968254, 0.8412698412698413, 0.8571428571428571, 0.873015873015873, 0.8888888888888888, 0.9047619047619048, 0.9206349206349206, 0.9365079365079365, 0.9523809523809523, 0.9682539682539683, 0.9841269841269841, 1}; + float g[] = { 1, 0.9841269841269842, 0.9682539682539683, 0.9523809523809523, 0.9365079365079365, 0.9206349206349207, 0.9047619047619048, 0.8888888888888888, 0.873015873015873, 0.8571428571428572, 0.8412698412698413, 0.8253968253968254, 0.8095238095238095, 0.7936507936507937, 0.7777777777777778, 0.7619047619047619, 0.746031746031746, 0.7301587301587302, 0.7142857142857143, 0.6984126984126984, 0.6825396825396826, 0.6666666666666667, 0.6507936507936508, 0.6349206349206349, 0.6190476190476191, 0.6031746031746033, 0.5873015873015873, 0.5714285714285714, 0.5555555555555556, 0.5396825396825398, 0.5238095238095238, 0.5079365079365079, 0.4920634920634921, 0.4761904761904762, 0.4603174603174603, 0.4444444444444444, 0.4285714285714286, 0.4126984126984127, 0.3968253968253969, 0.3809523809523809, 0.3650793650793651, 0.3492063492063492, 0.3333333333333334, 0.3174603174603174, 0.3015873015873016, 0.2857142857142857, 0.2698412698412699, 0.253968253968254, 0.2380952380952381, 0.2222222222222222, 0.2063492063492064, 0.1904761904761905, 0.1746031746031746, 0.1587301587301587, 0.1428571428571429, 0.126984126984127, 0.1111111111111112, 0.09523809523809523, 0.07936507936507942, 0.06349206349206349, 0.04761904761904767, 0.03174603174603174, 0.01587301587301593, 0}; + float b[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "hsv". + class HSV : public ColorMap { + public: + HSV() : ColorMap() { + init(256); + } + + HSV(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428568, 0.7619047619047614, 0.6666666666666665, 0.5714285714285716, 0.4761904761904763, 0.3809523809523805, 0.2857142857142856, 0.1904761904761907, 0.0952380952380949, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09523809523809557, 0.1904761904761905, 0.2857142857142854, 0.3809523809523809, 0.4761904761904765, 0.5714285714285714, 0.6666666666666663, 0.7619047619047619, 0.8571428571428574, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0.09523809523809523, 0.1904761904761905, 0.2857142857142857, 0.3809523809523809, 0.4761904761904762, 0.5714285714285714, 0.6666666666666666, 0.7619047619047619, 0.8571428571428571, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428577, 0.7619047619047619, 0.6666666666666665, 0.5714285714285716, 0.4761904761904767, 0.3809523809523814, 0.2857142857142856, 0.1904761904761907, 0.09523809523809579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.09523809523809523, 0.1904761904761905, 0.2857142857142857, 0.3809523809523809, 0.4761904761904762, 0.5714285714285714, 0.6666666666666666, 0.7619047619047619, 0.8571428571428571, 0.9523809523809523, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9523809523809526, 0.8571428571428577, 0.7619047619047614, 0.6666666666666665, 0.5714285714285716, 0.4761904761904767, 0.3809523809523805, 0.2857142857142856, 0.1904761904761907, 0.09523809523809579, 0}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "pink". + class Pink : public ColorMap { + public: + Pink() : ColorMap() { + init(256); + } + + Pink(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.1571348402636772, 0.2222222222222222, 0.2721655269759087, 0.3142696805273544, 0.3513641844631533, 0.3849001794597505, 0.415739709641549, 0.4444444444444444, 0.4714045207910317, 0.4969039949999532, 0.5211573066470477, 0.5443310539518174, 0.5665577237325317, 0.5879447357921312, 0.6085806194501846, 0.6285393610547089, 0.6478835438717, 0.6666666666666666, 0.6849348892187751, 0.7027283689263065, 0.7200822998230956, 0.7370277311900888, 0.753592220347252, 0.7663560447348133, 0.7732293307186413, 0.7800420555749596, 0.7867957924694432, 0.7934920476158722, 0.8001322641986387, 0.8067178260046388, 0.8132500607904444, 0.8197302434079591, 0.8261595987094034, 0.8325393042503717, 0.8388704928078611, 0.8451542547285166, 0.8513916401208816, 0.8575836609041332, 0.8637312927246217, 0.8698354767504924, 0.8758971213537393, 0.8819171036881968, 0.8878962711712378, 0.8938354428762595, 0.8997354108424372, 0.9055969413076769, 0.9114207758701963, 0.9172076325837248, 0.9229582069908971, 0.9286731730990523, 0.9343531843023135, 0.9399988742535192, 0.9456108576893002, 0.9511897312113418, 0.9567360740266436, 0.9622504486493763, 0.9677334015667416, 0.9731854638710686, 0.9786071518602129, 0.9839989676081821, 0.9893613995077727, 0.9946949227868761, 1}; + float g[] = { 0, 0.1028688999747279, 0.1454785934906616, 0.1781741612749496, 0.2057377999494559, 0.2300218531141181, 0.2519763153394848, 0.2721655269759087, 0.2909571869813232, 0.3086066999241838, 0.3253000243161777, 0.3411775438127727, 0.3563483225498992, 0.3708990935094579, 0.3849001794597505, 0.3984095364447979, 0.4114755998989117, 0.4241393401869012, 0.4364357804719847, 0.4483951394230328, 0.4600437062282361, 0.4714045207910317, 0.4824979096371639, 0.4933419132673033, 0.5091750772173156, 0.5328701692569688, 0.5555555555555556, 0.5773502691896257, 0.5983516452371671, 0.6186404847588913, 0.6382847385042254, 0.6573421981221795, 0.6758625033664688, 0.6938886664887108, 0.7114582486036499, 0.7286042804780002, 0.7453559924999299, 0.7617394000445604, 0.7777777777777778, 0.7934920476158723, 0.8089010988089465, 0.8240220541217402, 0.8388704928078611, 0.8534606386520677, 0.8678055195451838, 0.8819171036881968, 0.8958064164776166, 0.9094836413191612, 0.9172076325837248, 0.9229582069908971, 0.9286731730990523, 0.9343531843023135, 0.9399988742535192, 0.9456108576893002, 0.9511897312113418, 0.9567360740266436, 0.9622504486493763, 0.9677334015667416, 0.9731854638710686, 0.9786071518602129, 0.9839989676081821, 0.9893613995077727, 0.9946949227868761, 1}; + float b[] = { 0, 0.1028688999747279, 0.1454785934906616, 0.1781741612749496, 0.2057377999494559, 0.2300218531141181, 0.2519763153394848, 0.2721655269759087, 0.2909571869813232, 0.3086066999241838, 0.3253000243161777, 0.3411775438127727, 0.3563483225498992, 0.3708990935094579, 0.3849001794597505, 0.3984095364447979, 0.4114755998989117, 0.4241393401869012, 0.4364357804719847, 0.4483951394230328, 0.4600437062282361, 0.4714045207910317, 0.4824979096371639, 0.4933419132673033, 0.5039526306789697, 0.5143444998736397, 0.5245305283129621, 0.5345224838248488, 0.5443310539518174, 0.5539659798925444, 0.563436169819011, 0.5727497953228163, 0.5819143739626463, 0.5909368402852788, 0.5998236072282915, 0.6085806194501846, 0.6172133998483676, 0.6257270902992705, 0.6341264874742278, 0.642416074439621, 0.6506000486323554, 0.6586823467062358, 0.6666666666666666, 0.6745564876468501, 0.6823550876255453, 0.6900655593423541, 0.6976908246297114, 0.7052336473499384, 0.7237468644557459, 0.7453559924999298, 0.7663560447348133, 0.7867957924694432, 0.8067178260046388, 0.8261595987094034, 0.8451542547285166, 0.8637312927246217, 0.8819171036881968, 0.8997354108424372, 0.9172076325837248, 0.9343531843023135, 0.9511897312113418, 0.9677334015667416, 0.9839989676081821, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + // Equals the GNU Octave colormap "hot". + class Hot : public ColorMap { + public: + Hot() : ColorMap() { + init(256); + } + + Hot(int n) : ColorMap() { + init(n); + } + + void init(int n) { + float r[] = { 0, 0.03968253968253968, 0.07936507936507936, 0.119047619047619, 0.1587301587301587, 0.1984126984126984, 0.2380952380952381, 0.2777777777777778, 0.3174603174603174, 0.3571428571428571, 0.3968253968253968, 0.4365079365079365, 0.4761904761904762, 0.5158730158730158, 0.5555555555555556, 0.5952380952380952, 0.6349206349206349, 0.6746031746031745, 0.7142857142857142, 0.753968253968254, 0.7936507936507936, 0.8333333333333333, 0.873015873015873, 0.9126984126984127, 0.9523809523809523, 0.992063492063492, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float g[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.03174603174603163, 0.0714285714285714, 0.1111111111111112, 0.1507936507936507, 0.1904761904761905, 0.23015873015873, 0.2698412698412698, 0.3095238095238093, 0.3492063492063491, 0.3888888888888888, 0.4285714285714284, 0.4682539682539679, 0.5079365079365079, 0.5476190476190477, 0.5873015873015872, 0.6269841269841268, 0.6666666666666665, 0.7063492063492065, 0.746031746031746, 0.7857142857142856, 0.8253968253968254, 0.8650793650793651, 0.9047619047619047, 0.9444444444444442, 0.984126984126984, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; + float b[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.04761904761904745, 0.1269841269841265, 0.2063492063492056, 0.2857142857142856, 0.3650793650793656, 0.4444444444444446, 0.5238095238095237, 0.6031746031746028, 0.6825396825396828, 0.7619047619047619, 0.8412698412698409, 0.92063492063492, 1}; + Mat X = linspace(0,1,64); + this->_lut = ColorMap::linear_colormap(X, + Mat(64,1, CV_32FC1, r).clone(), // red + Mat(64,1, CV_32FC1, g).clone(), // green + Mat(64,1, CV_32FC1, b).clone(), // blue + n); // number of sample points + } + }; + + void ColorMap::operator()(InputArray _src, OutputArray _dst) const + { + if(_lut.total() != 256) + CV_Error(Error::StsAssert, "cv::LUT only supports tables of size 256."); + Mat src = _src.getMat(); + // Return original matrix if wrong type is given (is fail loud better here?) + if(src.type() != CV_8UC1 && src.type() != CV_8UC3) + { + src.copyTo(_dst); + return; + } + // Turn into a BGR matrix into its grayscale representation. + if(src.type() == CV_8UC3) + cvtColor(src.clone(), src, COLOR_BGR2GRAY); + cvtColor(src.clone(), src, COLOR_GRAY2BGR); + // Apply the ColorMap. + LUT(src, _lut, _dst); + } + + Mat ColorMap::linear_colormap(InputArray X, + InputArray r, InputArray g, InputArray b, + InputArray xi) { + Mat lut, lut8; + Mat planes[] = { + interp1(X, b, xi), + interp1(X, g, xi), + interp1(X, r, xi)}; + merge(planes, 3, lut); + lut.convertTo(lut8, CV_8U, 255.); + return lut8; + } + + } + + void applyColorMap(InputArray src, OutputArray dst, int colormap) + { + colormap::ColorMap* cm = + colormap == COLORMAP_AUTUMN ? (colormap::ColorMap*)(new colormap::Autumn) : + colormap == COLORMAP_BONE ? (colormap::ColorMap*)(new colormap::Bone) : + colormap == COLORMAP_COOL ? (colormap::ColorMap*)(new colormap::Cool) : + colormap == COLORMAP_HOT ? (colormap::ColorMap*)(new colormap::Hot) : + colormap == COLORMAP_HSV ? (colormap::ColorMap*)(new colormap::HSV) : + colormap == COLORMAP_JET ? (colormap::ColorMap*)(new colormap::Jet) : + colormap == COLORMAP_OCEAN ? (colormap::ColorMap*)(new colormap::Ocean) : + colormap == COLORMAP_PINK ? (colormap::ColorMap*)(new colormap::Pink) : + colormap == COLORMAP_RAINBOW ? (colormap::ColorMap*)(new colormap::Rainbow) : + colormap == COLORMAP_SPRING ? (colormap::ColorMap*)(new colormap::Spring) : + colormap == COLORMAP_SUMMER ? (colormap::ColorMap*)(new colormap::Summer) : + colormap == COLORMAP_WINTER ? (colormap::ColorMap*)(new colormap::Winter) : 0; + + if( !cm ) + CV_Error( Error::StsBadArg, "Unknown colormap id; use one of COLORMAP_*"); + + (*cm)(src, dst); + + delete cm; + } +} diff --git a/modules/imgproc/src/contours.cpp b/modules/imgproc/src/contours.cpp index 5ea4a07c61..ee7f21ac88 100644 --- a/modules/imgproc/src/contours.cpp +++ b/modules/imgproc/src/contours.cpp @@ -1704,8 +1704,10 @@ void cv::findContours( InputOutputArray _image, OutputArrayOfArrays _contours, OutputArray _hierarchy, int mode, int method, Point offset ) { // Sanity check: output must be of type vector> - CV_Assert( _contours.kind() == _InputArray::STD_VECTOR_VECTOR && - _contours.channels() == 2 && _contours.depth() == CV_32S ); + CV_Assert((_contours.kind() == _InputArray::STD_VECTOR_VECTOR || _contours.kind() == _InputArray::STD_VECTOR_MAT || + _contours.kind() == _InputArray::STD_VECTOR_UMAT)); + + CV_Assert(_contours.empty() || (_contours.channels() == 2 && _contours.depth() == CV_32S)); Mat image = _image.getMat(); MemStorage storage(cvCreateMemStorage()); diff --git a/modules/imgproc/src/corner.cpp b/modules/imgproc/src/corner.cpp index eeb20fbc16..1fdd047cd1 100644 --- a/modules/imgproc/src/corner.cpp +++ b/modules/imgproc/src/corner.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { @@ -608,6 +608,11 @@ void cv::preCornerDetect( InputArray _src, OutputArray _dst, int ksize, int bord factor *= 255; factor = 1./(factor * factor * factor); +#if CV_SSE2 + volatile bool haveSSE2 = cv::checkHardwareSupport(CV_CPU_SSE2); + __m128 v_factor = _mm_set1_ps((float)factor), v_m2 = _mm_set1_ps(-2.0f); +#endif + Size size = src.size(); int i, j; for( i = 0; i < size.height; i++ ) @@ -619,7 +624,26 @@ void cv::preCornerDetect( InputArray _src, OutputArray _dst, int ksize, int bord const float* d2ydata = (const float*)(D2y.data + i*D2y.step); const float* dxydata = (const float*)(Dxy.data + i*Dxy.step); - for( j = 0; j < size.width; j++ ) + j = 0; + +#if CV_SSE2 + if (haveSSE2) + { + for( ; j <= size.width - 4; j += 4 ) + { + __m128 v_dx = _mm_loadu_ps((const float *)(dxdata + j)); + __m128 v_dy = _mm_loadu_ps((const float *)(dydata + j)); + + __m128 v_s1 = _mm_mul_ps(_mm_mul_ps(v_dx, v_dx), _mm_loadu_ps((const float *)(d2ydata + j))); + __m128 v_s2 = _mm_mul_ps(_mm_mul_ps(v_dy, v_dy), _mm_loadu_ps((const float *)(d2xdata + j))); + __m128 v_s3 = _mm_mul_ps(_mm_mul_ps(v_dx, v_dy), _mm_loadu_ps((const float *)(dxydata + j))); + v_s1 = _mm_mul_ps(v_factor, _mm_add_ps(v_s1, _mm_add_ps(v_s2, _mm_mul_ps(v_s3, v_m2)))); + _mm_storeu_ps(dstdata + j, v_s1); + } + } +#endif + + for( ; j < size.width; j++ ) { float dx = dxdata[j]; float dy = dydata[j]; diff --git a/modules/imgproc/src/demosaicing.cpp b/modules/imgproc/src/demosaicing.cpp index 9326fa1932..ff730ee941 100644 --- a/modules/imgproc/src/demosaicing.cpp +++ b/modules/imgproc/src/demosaicing.cpp @@ -66,6 +66,11 @@ public: return 0; } + int bayer2RGBA(const T*, int, T*, int, int) const + { + return 0; + } + int bayer2RGB_EA(const T*, int, T*, int, int) const { return 0; @@ -218,6 +223,11 @@ public: return (int)(bayer - (bayer_end - width)); } + int bayer2RGBA(const uchar*, int, uchar*, int, int) const + { + return 0; + } + int bayer2RGB_EA(const uchar* bayer, int bayer_step, uchar* dst, int width, int blue) const { if (!use_simd) @@ -323,6 +333,165 @@ public: bool use_simd; }; +#elif CV_NEON +class SIMDBayerInterpolator_8u +{ +public: + SIMDBayerInterpolator_8u() + { + } + + int bayer2Gray(const uchar* bayer, int bayer_step, uchar* dst, + int width, int bcoeff, int gcoeff, int rcoeff) const + { + /* + B G B G | B G B G | B G B G | B G B G + G R G R | G R G R | G R G R | G R G R + B G B G | B G B G | B G B G | B G B G + */ + + uint16x8_t masklo = vdupq_n_u16(255); + const uchar* bayer_end = bayer + width; + + for( ; bayer <= bayer_end - 18; bayer += 14, dst += 14 ) + { + uint16x8_t r0 = vld1q_u16((const ushort*)bayer); + uint16x8_t r1 = vld1q_u16((const ushort*)(bayer + bayer_step)); + uint16x8_t r2 = vld1q_u16((const ushort*)(bayer + bayer_step*2)); + + uint16x8_t b1_ = vaddq_u16(vandq_u16(r0, masklo), vandq_u16(r2, masklo)); + uint16x8_t b1 = vextq_u16(b1_, b1_, 1); + uint16x8_t b0 = vaddq_u16(b1_, b1); + // b0 = b0 b2 b4 ... + // b1 = b1 b3 b5 ... + + uint16x8_t g0 = vaddq_u16(vshrq_n_u16(r0, 8), vshrq_n_u16(r2, 8)); + uint16x8_t g1 = vandq_u16(r1, masklo); + g0 = vaddq_u16(g0, vaddq_u16(g1, vextq_u16(g1, g1, 1))); + g1 = vshlq_n_u16(vextq_u16(g1, g1, 1), 2); + // g0 = b0 b2 b4 ... + // g1 = b1 b3 b5 ... + + r0 = vshrq_n_u16(r1, 8); + r1 = vaddq_u16(r0, vextq_u16(r0, r0, 1)); + r0 = vshlq_n_u16(r0, 2); + // r0 = r0 r2 r4 ... + // r1 = r1 r3 r5 ... + + b0 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(b0), (short)(rcoeff*2))); + b1 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(b1), (short)(rcoeff*4))); + + g0 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(g0), (short)(gcoeff*2))); + g1 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(g1), (short)(gcoeff*2))); + + r0 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(r0), (short)(bcoeff*2))); + r1 = vreinterpretq_u16_s16(vqdmulhq_n_s16(vreinterpretq_s16_u16(r1), (short)(bcoeff*4))); + + g0 = vaddq_u16(vaddq_u16(g0, b0), r0); + g1 = vaddq_u16(vaddq_u16(g1, b1), r1); + + uint8x8x2_t p = vzip_u8(vrshrn_n_u16(g0, 2), vrshrn_n_u16(g1, 2)); + vst1_u8(dst, p.val[0]); + vst1_u8(dst + 8, p.val[1]); + } + + return (int)(bayer - (bayer_end - width)); + } + + int bayer2RGB(const uchar* bayer, int bayer_step, uchar* dst, int width, int blue) const + { + /* + B G B G | B G B G | B G B G | B G B G + G R G R | G R G R | G R G R | G R G R + B G B G | B G B G | B G B G | B G B G + */ + uint16x8_t masklo = vdupq_n_u16(255); + uint8x16x3_t pix; + const uchar* bayer_end = bayer + width; + + for( ; bayer <= bayer_end - 18; bayer += 14, dst += 42 ) + { + uint16x8_t r0 = vld1q_u16((const ushort*)bayer); + uint16x8_t r1 = vld1q_u16((const ushort*)(bayer + bayer_step)); + uint16x8_t r2 = vld1q_u16((const ushort*)(bayer + bayer_step*2)); + + uint16x8_t b1 = vaddq_u16(vandq_u16(r0, masklo), vandq_u16(r2, masklo)); + uint16x8_t nextb1 = vextq_u16(b1, b1, 1); + uint16x8_t b0 = vaddq_u16(b1, nextb1); + // b0 b1 b2 ... + uint8x8x2_t bb = vzip_u8(vrshrn_n_u16(b0, 2), vrshrn_n_u16(nextb1, 1)); + pix.val[1-blue] = vcombine_u8(bb.val[0], bb.val[1]); + + uint16x8_t g0 = vaddq_u16(vshrq_n_u16(r0, 8), vshrq_n_u16(r2, 8)); + uint16x8_t g1 = vandq_u16(r1, masklo); + g0 = vaddq_u16(g0, vaddq_u16(g1, vextq_u16(g1, g1, 1))); + g1 = vextq_u16(g1, g1, 1); + // g0 g1 g2 ... + uint8x8x2_t gg = vzip_u8(vrshrn_n_u16(g0, 2), vmovn_u16(g1)); + pix.val[1] = vcombine_u8(gg.val[0], gg.val[1]); + + r0 = vshrq_n_u16(r1, 8); + r1 = vaddq_u16(r0, vextq_u16(r0, r0, 1)); + // r0 r1 r2 ... + uint8x8x2_t rr = vzip_u8(vmovn_u16(r0), vrshrn_n_u16(r1, 1)); + pix.val[1+blue] = vcombine_u8(rr.val[0], rr.val[1]); + + vst3q_u8(dst-1, pix); + } + + return (int)(bayer - (bayer_end - width)); + } + + int bayer2RGBA(const uchar* bayer, int bayer_step, uchar* dst, int width, int blue) const + { + /* + B G B G | B G B G | B G B G | B G B G + G R G R | G R G R | G R G R | G R G R + B G B G | B G B G | B G B G | B G B G + */ + uint16x8_t masklo = vdupq_n_u16(255); + uint8x16x4_t pix; + const uchar* bayer_end = bayer + width; + pix.val[3] = vdupq_n_u8(255); + + for( ; bayer <= bayer_end - 18; bayer += 14, dst += 56 ) + { + uint16x8_t r0 = vld1q_u16((const ushort*)bayer); + uint16x8_t r1 = vld1q_u16((const ushort*)(bayer + bayer_step)); + uint16x8_t r2 = vld1q_u16((const ushort*)(bayer + bayer_step*2)); + + uint16x8_t b1 = vaddq_u16(vandq_u16(r0, masklo), vandq_u16(r2, masklo)); + uint16x8_t nextb1 = vextq_u16(b1, b1, 1); + uint16x8_t b0 = vaddq_u16(b1, nextb1); + // b0 b1 b2 ... + uint8x8x2_t bb = vzip_u8(vrshrn_n_u16(b0, 2), vrshrn_n_u16(nextb1, 1)); + pix.val[1-blue] = vcombine_u8(bb.val[0], bb.val[1]); + + uint16x8_t g0 = vaddq_u16(vshrq_n_u16(r0, 8), vshrq_n_u16(r2, 8)); + uint16x8_t g1 = vandq_u16(r1, masklo); + g0 = vaddq_u16(g0, vaddq_u16(g1, vextq_u16(g1, g1, 1))); + g1 = vextq_u16(g1, g1, 1); + // g0 g1 g2 ... + uint8x8x2_t gg = vzip_u8(vrshrn_n_u16(g0, 2), vmovn_u16(g1)); + pix.val[1] = vcombine_u8(gg.val[0], gg.val[1]); + + r0 = vshrq_n_u16(r1, 8); + r1 = vaddq_u16(r0, vextq_u16(r0, r0, 1)); + // r0 r1 r2 ... + uint8x8x2_t rr = vzip_u8(vmovn_u16(r0), vrshrn_n_u16(r1, 1)); + pix.val[1+blue] = vcombine_u8(rr.val[0], rr.val[1]); + + vst4q_u8(dst-1, pix); + } + + return (int)(bayer - (bayer_end - width)); + } + + int bayer2RGB_EA(const uchar*, int, uchar*, int, int) const + { + return 0; + } +}; #else typedef SIMDBayerStubInterpolator_ SIMDBayerInterpolator_8u; #endif @@ -559,7 +728,9 @@ public: } // simd optimization only for dcn == 3 - int delta = dcn == 4 ? 0 : vecOp.bayer2RGB(bayer, bayer_step, dst, size.width, blue); + int delta = dcn == 4 ? + vecOp.bayer2RGBA(bayer, bayer_step, dst, size.width, blue) : + vecOp.bayer2RGB(bayer, bayer_step, dst, size.width, blue); bayer += delta; dst += delta*dcn; diff --git a/modules/imgproc/src/deriv.cpp b/modules/imgproc/src/deriv.cpp index 5e920ec0b8..80b1e9b33c 100644 --- a/modules/imgproc/src/deriv.cpp +++ b/modules/imgproc/src/deriv.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); @@ -702,7 +702,7 @@ void cv::Laplacian( InputArray _src, OutputArray _dst, int ddepth, int ksize, #ifdef HAVE_IPP if ((ksize == 3 || ksize == 5) && ((borderType & BORDER_ISOLATED) != 0 || !_src.isSubmatrix()) && - ((stype == CV_8UC1 && ddepth == CV_16S) || (ddepth == CV_32F && stype == CV_32FC1))) + ((stype == CV_8UC1 && ddepth == CV_16S) || (ddepth == CV_32F && stype == CV_32FC1)) && !ocl::useOpenCL()) { int iscale = saturate_cast(scale), idelta = saturate_cast(delta); bool floatScale = std::fabs(scale - iscale) > DBL_EPSILON, needScale = iscale != 1; diff --git a/modules/imgproc/src/featureselect.cpp b/modules/imgproc/src/featureselect.cpp index 54bb65fffa..a50b704e8a 100644 --- a/modules/imgproc/src/featureselect.cpp +++ b/modules/imgproc/src/featureselect.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #include #include diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index e51986c394..4928a16d28 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /****************************************************************************************\ Base Image Filter @@ -3471,7 +3471,8 @@ static bool ocl_sepColFilter2D(const UMat & buf, UMat & dst, const Mat & kernelY return k.run(2, globalsize, localsize, false); } -const int optimizedSepFilterLocalSize = 16; +const int optimizedSepFilterLocalWidth = 16; +const int optimizedSepFilterLocalHeight = 8; static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, Mat row_kernel, Mat col_kernel, @@ -3491,8 +3492,8 @@ static bool ocl_sepFilter2D_SinglePass(InputArray _src, OutputArray _dst, borderType == BORDER_REFLECT_101)) return false; - size_t lt2[2] = { optimizedSepFilterLocalSize, optimizedSepFilterLocalSize }; - size_t gt2[2] = { lt2[0] * (1 + (size.width - 1) / lt2[0]), lt2[1] * (1 + (size.height - 1) / lt2[1]) }; + size_t lt2[2] = { optimizedSepFilterLocalWidth, optimizedSepFilterLocalHeight }; + size_t gt2[2] = { lt2[0] * (1 + (size.width - 1) / lt2[0]), lt2[1]}; char cvt[2][40]; const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", @@ -3584,8 +3585,8 @@ static bool ocl_sepFilter2D( InputArray _src, OutputArray _dst, int ddepth, } CV_OCL_RUN_(kernelY.cols <= 21 && kernelX.cols <= 21 && - imgSize.width > optimizedSepFilterLocalSize + anchor.x && - imgSize.height > optimizedSepFilterLocalSize + anchor.y && + imgSize.width > optimizedSepFilterLocalWidth + anchor.x && + imgSize.height > optimizedSepFilterLocalHeight + anchor.y && (!(borderType & BORDER_ISOLATED) || _src.offset() == 0) && anchor == Point(kernelX.cols >> 1, kernelY.cols >> 1) && (d.isIntel() || (d.isAMD() && !d.hostUnifiedMemory())), diff --git a/modules/imgproc/src/histogram.cpp b/modules/imgproc/src/histogram.cpp index 441d2226b8..1006897e4e 100644 --- a/modules/imgproc/src/histogram.cpp +++ b/modules/imgproc/src/histogram.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { @@ -2325,6 +2325,21 @@ double cv::compareHist( InputArray _H1, InputArray _H2, int method ) s2 += b; } } + else if( method == CV_COMP_KL_DIV ) + { + for( j = 0; j < len; j++ ) + { + double p = h1[j]; + double q = h2[j]; + if( fabs(p) <= DBL_EPSILON ) { + continue; + } + if( fabs(q) <= DBL_EPSILON ) { + q = 1e-10; + } + result += p * std::log( p / q ); + } + } else CV_Error( CV_StsBadArg, "Unknown comparison method" ); } @@ -2360,7 +2375,7 @@ double cv::compareHist( const SparseMat& H1, const SparseMat& H2, int method ) CV_Assert( H1.size(i) == H2.size(i) ); const SparseMat *PH1 = &H1, *PH2 = &H2; - if( PH1->nzcount() > PH2->nzcount() && method != CV_COMP_CHISQR && method != CV_COMP_CHISQR_ALT) + if( PH1->nzcount() > PH2->nzcount() && method != CV_COMP_CHISQR && method != CV_COMP_CHISQR_ALT && method != CV_COMP_KL_DIV ) std::swap(PH1, PH2); SparseMatConstIterator it = PH1->begin(); @@ -2440,6 +2455,18 @@ double cv::compareHist( const SparseMat& H1, const SparseMat& H2, int method ) s1 = fabs(s1) > FLT_EPSILON ? 1./std::sqrt(s1) : 1.; result = std::sqrt(std::max(1. - result*s1, 0.)); } + else if( method == CV_COMP_KL_DIV ) + { + for( i = 0; i < N1; i++, ++it ) + { + double v1 = it.value(); + const SparseMat::Node* node = it.node(); + double v2 = PH2->value(node->idx, (size_t*)&node->hashval); + if( !v2 ) + v2 = 1e-10; + result += v1 * std::log( v1 / v2 ); + } + } else CV_Error( CV_StsBadArg, "Unknown comparison method" ); @@ -2785,7 +2812,7 @@ cvCompareHist( const CvHistogram* hist1, CvSparseMatIterator iterator; CvSparseNode *node1, *node2; - if( mat1->heap->active_count > mat2->heap->active_count && method != CV_COMP_CHISQR && method != CV_COMP_CHISQR_ALT) + if( mat1->heap->active_count > mat2->heap->active_count && method != CV_COMP_CHISQR && method != CV_COMP_CHISQR_ALT && method != CV_COMP_KL_DIV ) { CvSparseMat* t; CV_SWAP( mat1, mat2, t ); @@ -2887,6 +2914,13 @@ cvCompareHist( const CvHistogram* hist1, result = 1. - result*s1; result = sqrt(MAX(result,0.)); } + else if( method == CV_COMP_KL_DIV ) + { + cv::SparseMat sH1, sH2; + ((const CvSparseMat*)hist1->bins)->copyToSparseMat(sH1); + ((const CvSparseMat*)hist2->bins)->copyToSparseMat(sH2); + result = cv::compareHist( sH1, sH2, CV_COMP_KL_DIV ); + } else CV_Error( CV_StsBadArg, "Unknown comparison method" ); diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index b69d75d6d4..b2619883e0 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -47,7 +47,7 @@ // */ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); @@ -2074,7 +2074,8 @@ static bool ocl_resize( InputArray _src, OutputArray _dst, Size dsize, // datatypes because the observed error is low. bool useSampler = (interpolation == INTER_LINEAR && ocl::Device::getDefault().imageSupport() && ocl::Image2D::canCreateAlias(src) && depth <= 4 && - ocl::Image2D::isFormatSupported(depth, cn, true)); + ocl::Image2D::isFormatSupported(depth, cn, true) && + src.offset==0); if (useSampler) { int wdepth = std::max(depth, CV_32S); @@ -2380,7 +2381,7 @@ void cv::resize( InputArray _src, OutputArray _dst, Size dsize, inv_scale_y = (double)dsize.height/ssize.height; } - CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(), + CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat() && _src.cols() > 10 && _src.rows() > 10, ocl_resize(_src, _dst, dsize, inv_scale_x, inv_scale_y, interpolation)) Mat src = _src.getMat(); @@ -3582,7 +3583,9 @@ private: static bool ocl_remap(InputArray _src, OutputArray _dst, InputArray _map1, InputArray _map2, int interpolation, int borderType, const Scalar& borderValue) { - int cn = _src.channels(), type = _src.type(), depth = _src.depth(); + const ocl::Device & dev = ocl::Device::getDefault(); + int cn = _src.channels(), type = _src.type(), depth = _src.depth(), + rowsPerWI = dev.isIntel() ? 4 : 1; if (borderType == BORDER_TRANSPARENT || !(interpolation == INTER_LINEAR || interpolation == INTER_NEAREST) || _map1.type() == CV_16SC1 || _map2.type() == CV_16SC1) @@ -3619,12 +3622,14 @@ static bool ocl_remap(InputArray _src, OutputArray _dst, InputArray _map1, Input static const char * const interMap[] = { "INTER_NEAREST", "INTER_LINEAR", "INTER_CUBIC", "INTER_LINEAR", "INTER_LANCZOS" }; static const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", "BORDER_REFLECT_101", "BORDER_TRANSPARENT" }; - String buildOptions = format("-D %s -D %s -D T=%s", interMap[interpolation], borderMap[borderType], ocl::typeToStr(type)); + String buildOptions = format("-D %s -D %s -D T=%s -D rowsPerWI=%d", + interMap[interpolation], borderMap[borderType], + ocl::typeToStr(type), rowsPerWI); if (interpolation != INTER_NEAREST) { char cvt[3][40]; - int wdepth = std::max(CV_32F, dst.depth()); + int wdepth = std::max(CV_32F, depth); buildOptions = buildOptions + format(" -D WT=%s -D convertToT=%s -D convertToWT=%s" " -D convertToWT2=%s -D WT2=%s", @@ -3636,10 +3641,9 @@ static bool ocl_remap(InputArray _src, OutputArray _dst, InputArray _map1, Input } int scalarcn = cn == 3 ? 4 : cn; int sctype = CV_MAKETYPE(depth, scalarcn); - buildOptions += format(" -D T=%s -D T1=%s" - " -D cn=%d -D ST=%s", + buildOptions += format(" -D T=%s -D T1=%s -D cn=%d -D ST=%s -D depth=%d", ocl::typeToStr(type), ocl::typeToStr(depth), - cn, ocl::typeToStr(sctype)); + cn, ocl::typeToStr(sctype), depth); ocl::Kernel k(kernelName.c_str(), ocl::imgproc::remap_oclsrc, buildOptions); @@ -3653,7 +3657,7 @@ static bool ocl_remap(InputArray _src, OutputArray _dst, InputArray _map1, Input else k.args(srcarg, dstarg, map1arg, ocl::KernelArg::ReadOnlyNoSize(map2), scalararg); - size_t globalThreads[2] = { dst.cols, dst.rows }; + size_t globalThreads[2] = { dst.cols, (dst.rows + rowsPerWI - 1) / rowsPerWI }; return k.run(2, globalThreads, NULL, false); } @@ -4188,7 +4192,7 @@ static bool ocl_warpTransform(InputArray _src, OutputArray _dst, InputArray _M0, const char * const kernelName = op_type == OCL_OP_AFFINE ? "warpAffine" : "warpPerspective"; int scalarcn = cn == 3 ? 4 : cn; - bool is32f = !dev.isAMD() && (interpolation == INTER_CUBIC || interpolation == INTER_LINEAR); + bool is32f = !dev.isAMD() && (interpolation == INTER_CUBIC || interpolation == INTER_LINEAR) && op_type == OCL_OP_AFFINE; int wdepth = interpolation == INTER_NEAREST ? depth : std::max(is32f ? CV_32F : CV_32S, depth); int sctype = CV_MAKETYPE(wdepth, scalarcn); diff --git a/modules/imgproc/src/moments.cpp b/modules/imgproc/src/moments.cpp index 61fff29852..b114264e31 100644 --- a/modules/imgproc/src/moments.cpp +++ b/modules/imgproc/src/moments.cpp @@ -39,7 +39,7 @@ // //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { @@ -202,6 +202,128 @@ static Moments contourMoments( const Mat& contour ) * Spatial Raster Moments * \****************************************************************************************/ +template +struct MomentsInTile_SSE +{ + int operator() (const T *, int, WT &, WT &, WT &, MT &) + { + return 0; + } +}; + +#if CV_SSE2 + +template <> +struct MomentsInTile_SSE +{ + MomentsInTile_SSE() + { + useSIMD = checkHardwareSupport(CV_CPU_SSE2); + } + + int operator() (const uchar * ptr, int len, int & x0, int & x1, int & x2, int & x3) + { + int x = 0; + + if( useSIMD ) + { + __m128i qx_init = _mm_setr_epi16(0, 1, 2, 3, 4, 5, 6, 7); + __m128i dx = _mm_set1_epi16(8); + __m128i z = _mm_setzero_si128(), qx0 = z, qx1 = z, qx2 = z, qx3 = z, qx = qx_init; + + for( ; x <= len - 8; x += 8 ) + { + __m128i p = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(ptr + x)), z); + qx0 = _mm_add_epi32(qx0, _mm_sad_epu8(p, z)); + __m128i px = _mm_mullo_epi16(p, qx); + __m128i sx = _mm_mullo_epi16(qx, qx); + qx1 = _mm_add_epi32(qx1, _mm_madd_epi16(p, qx)); + qx2 = _mm_add_epi32(qx2, _mm_madd_epi16(p, sx)); + qx3 = _mm_add_epi32(qx3, _mm_madd_epi16(px, sx)); + + qx = _mm_add_epi16(qx, dx); + } + + int CV_DECL_ALIGNED(16) buf[4]; + _mm_store_si128((__m128i*)buf, qx0); + x0 = buf[0] + buf[1] + buf[2] + buf[3]; + _mm_store_si128((__m128i*)buf, qx1); + x1 = buf[0] + buf[1] + buf[2] + buf[3]; + _mm_store_si128((__m128i*)buf, qx2); + x2 = buf[0] + buf[1] + buf[2] + buf[3]; + _mm_store_si128((__m128i*)buf, qx3); + x3 = buf[0] + buf[1] + buf[2] + buf[3]; + } + + return x; + } + + bool useSIMD; +}; + +#endif + +#if CV_SSE4_1 + +template <> +struct MomentsInTile_SSE +{ + MomentsInTile_SSE() + { + useSIMD = checkHardwareSupport(CV_CPU_SSE4_1); + } + + int operator() (const ushort * ptr, int len, int & x0, int & x1, int & x2, int64 & x3) + { + int x = 0; + + if (useSIMD) + { + __m128i vx_init0 = _mm_setr_epi32(0, 1, 2, 3), vx_init1 = _mm_setr_epi32(4, 5, 6, 7), + v_delta = _mm_set1_epi32(8), v_zero = _mm_setzero_si128(), v_x0 = v_zero, + v_x1 = v_zero, v_x2 = v_zero, v_x3 = v_zero, v_ix0 = vx_init0, v_ix1 = vx_init1; + + for( ; x <= len - 8; x += 8 ) + { + __m128i v_src = _mm_loadu_si128((const __m128i *)(ptr + x)); + __m128i v_src0 = _mm_unpacklo_epi16(v_src, v_zero), v_src1 = _mm_unpackhi_epi16(v_src, v_zero); + + v_x0 = _mm_add_epi32(v_x0, _mm_add_epi32(v_src0, v_src1)); + __m128i v_x1_0 = _mm_mullo_epi32(v_src0, v_ix0), v_x1_1 = _mm_mullo_epi32(v_src1, v_ix1); + v_x1 = _mm_add_epi32(v_x1, _mm_add_epi32(v_x1_0, v_x1_1)); + + __m128i v_2ix0 = _mm_mullo_epi32(v_ix0, v_ix0), v_2ix1 = _mm_mullo_epi32(v_ix1, v_ix1); + v_x2 = _mm_add_epi32(v_x2, _mm_add_epi32(_mm_mullo_epi32(v_2ix0, v_src0), _mm_mullo_epi32(v_2ix1, v_src1))); + + __m128i t = _mm_add_epi32(_mm_mullo_epi32(v_2ix0, v_x1_0), _mm_mullo_epi32(v_2ix1, v_x1_1)); + v_x3 = _mm_add_epi64(v_x3, _mm_add_epi64(_mm_unpacklo_epi32(t, v_zero), _mm_unpackhi_epi32(t, v_zero))); + + v_ix0 = _mm_add_epi32(v_ix0, v_delta); + v_ix1 = _mm_add_epi32(v_ix1, v_delta); + } + + int CV_DECL_ALIGNED(16) buf[4]; + int64 CV_DECL_ALIGNED(16) buf64[2]; + + _mm_store_si128((__m128i*)buf, v_x0); + x0 = buf[0] + buf[1] + buf[2] + buf[3]; + _mm_store_si128((__m128i*)buf, v_x1); + x1 = buf[0] + buf[1] + buf[2] + buf[3]; + _mm_store_si128((__m128i*)buf, v_x2); + x2 = buf[0] + buf[1] + buf[2] + buf[3]; + + _mm_store_si128((__m128i*)buf64, v_x3); + x3 = buf64[0] + buf64[1]; + } + + return x; + } + + bool useSIMD; +}; + +#endif + template #if defined __GNUC__ && __GNUC__ == 4 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 9 // Workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60196 @@ -212,14 +334,16 @@ static void momentsInTile( const Mat& img, double* moments ) Size size = img.size(); int x, y; MT mom[10] = {0,0,0,0,0,0,0,0,0,0}; + MomentsInTile_SSE vop; for( y = 0; y < size.height; y++ ) { const T* ptr = (const T*)(img.data + y*img.step); WT x0 = 0, x1 = 0, x2 = 0; MT x3 = 0; + x = vop(ptr, size.width, x0, x1, x2, x3); - for( x = 0; x < size.width; x++ ) + for( ; x < size.width; x++ ) { WT p = ptr[x]; WT xp = x * p, xxp; @@ -249,85 +373,6 @@ static void momentsInTile( const Mat& img, double* moments ) moments[x] = (double)mom[x]; } - -#if CV_SSE2 - -template<> void momentsInTile( const cv::Mat& img, double* moments ) -{ - typedef uchar T; - typedef int WT; - typedef int MT; - Size size = img.size(); - int y; - MT mom[10] = {0,0,0,0,0,0,0,0,0,0}; - bool useSIMD = checkHardwareSupport(CV_CPU_SSE2); - - for( y = 0; y < size.height; y++ ) - { - const T* ptr = img.ptr(y); - int x0 = 0, x1 = 0, x2 = 0, x3 = 0, x = 0; - - if( useSIMD ) - { - __m128i qx_init = _mm_setr_epi16(0, 1, 2, 3, 4, 5, 6, 7); - __m128i dx = _mm_set1_epi16(8); - __m128i z = _mm_setzero_si128(), qx0 = z, qx1 = z, qx2 = z, qx3 = z, qx = qx_init; - - for( ; x <= size.width - 8; x += 8 ) - { - __m128i p = _mm_unpacklo_epi8(_mm_loadl_epi64((const __m128i*)(ptr + x)), z); - qx0 = _mm_add_epi32(qx0, _mm_sad_epu8(p, z)); - __m128i px = _mm_mullo_epi16(p, qx); - __m128i sx = _mm_mullo_epi16(qx, qx); - qx1 = _mm_add_epi32(qx1, _mm_madd_epi16(p, qx)); - qx2 = _mm_add_epi32(qx2, _mm_madd_epi16(p, sx)); - qx3 = _mm_add_epi32(qx3, _mm_madd_epi16(px, sx)); - - qx = _mm_add_epi16(qx, dx); - } - int CV_DECL_ALIGNED(16) buf[4]; - _mm_store_si128((__m128i*)buf, qx0); - x0 = buf[0] + buf[1] + buf[2] + buf[3]; - _mm_store_si128((__m128i*)buf, qx1); - x1 = buf[0] + buf[1] + buf[2] + buf[3]; - _mm_store_si128((__m128i*)buf, qx2); - x2 = buf[0] + buf[1] + buf[2] + buf[3]; - _mm_store_si128((__m128i*)buf, qx3); - x3 = buf[0] + buf[1] + buf[2] + buf[3]; - } - - for( ; x < size.width; x++ ) - { - WT p = ptr[x]; - WT xp = x * p, xxp; - - x0 += p; - x1 += xp; - xxp = xp * x; - x2 += xxp; - x3 += xxp * x; - } - - WT py = y * x0, sy = y*y; - - mom[9] += ((MT)py) * sy; // m03 - mom[8] += ((MT)x1) * sy; // m12 - mom[7] += ((MT)x2) * y; // m21 - mom[6] += x3; // m30 - mom[5] += x0 * sy; // m02 - mom[4] += x1 * y; // m11 - mom[3] += x2; // m20 - mom[2] += py; // m01 - mom[1] += x1; // m10 - mom[0] += x0; // m00 - } - - for(int x = 0; x < 10; x++ ) - moments[x] = (double)mom[x]; -} - -#endif - typedef void (*MomentsInTileFunc)(const Mat& img, double* moments); Moments::Moments() diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 5eec87cb26..fde70ef2cd 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" #include -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /****************************************************************************************\ Basic Morphological Operations: Erosion & Dilation @@ -1221,7 +1221,7 @@ static bool IPPMorphReplicate(int op, const Mat &src, Mat &dst, const Mat &kerne IPP_MORPH_CASE(CV_32FC3, 32f_C3R, 32f); IPP_MORPH_CASE(CV_32FC4, 32f_C4R, 32f); default: - return false; + ; } #undef IPP_MORPH_CASE @@ -1253,14 +1253,11 @@ static bool IPPMorphReplicate(int op, const Mat &src, Mat &dst, const Mat &kerne IPP_MORPH_CASE(CV_32FC3, 32f_C3R, 32f); IPP_MORPH_CASE(CV_32FC4, 32f_C4R, 32f); default: - return false; + ; } #undef IPP_MORPH_CASE - -#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 8 - return false; /// It disables false positive warning in GCC 4.8.2 -#endif } + return false; } static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, @@ -1271,10 +1268,11 @@ static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, int type = src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); if( !( depth == CV_8U || depth == CV_32F ) || !(cn == 1 || cn == 3 || cn == 4) || - !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue()) ) - || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) + !( borderType == cv::BORDER_REPLICATE || (borderType == cv::BORDER_CONSTANT && borderValue == morphologyDefaultBorderValue() && + kernel.size() == Size(3,3)) ) || !( op == MORPH_DILATE || op == MORPH_ERODE) || _src.isSubmatrix() ) return false; + // In case BORDER_CONSTANT, IPPMorphReplicate works correct with kernels of size 3*3 only if( borderType == cv::BORDER_CONSTANT && kernel.data ) { int x, y; @@ -1339,28 +1337,180 @@ static bool IPPMorphOp(int op, InputArray _src, OutputArray _dst, #ifdef HAVE_OPENCL +#define ROUNDUP(sz, n) ((sz) + (n) - 1 - (((sz) + (n) - 1) % (n))) + +static bool ocl_morphSmall( InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor, int borderType, + int op, int actual_op = -1, InputArray _extraMat = noArray()) +{ + const ocl::Device & dev = ocl::Device::getDefault(); + int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type), esz = CV_ELEM_SIZE(type); + bool doubleSupport = dev.doubleFPConfig() > 0; + + if (cn > 4 || (!doubleSupport && depth == CV_64F) || + _src.offset() % esz != 0 || _src.step() % esz != 0) + return false; + + bool haveExtraMat = !_extraMat.empty(); + CV_Assert(actual_op <= 3 || haveExtraMat); + + Size ksize = _kernel.size(); + if (anchor.x < 0) + anchor.x = ksize.width / 2; + if (anchor.y < 0) + anchor.y = ksize.height / 2; + + Size size = _src.size(), wholeSize; + bool isolated = (borderType & BORDER_ISOLATED) != 0; + borderType &= ~BORDER_ISOLATED; + int wdepth = depth, wtype = type; + if (depth == CV_8U) + { + wdepth = CV_32S; + wtype = CV_MAKETYPE(wdepth, cn); + } + char cvt[2][40]; + + const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", + "BORDER_REFLECT", 0, "BORDER_REFLECT_101" }; + size_t globalsize[2] = { size.width, size.height }; + + UMat src = _src.getUMat(); + if (!isolated) + { + Point ofs; + src.locateROI(wholeSize, ofs); + } + + int h = isolated ? size.height : wholeSize.height; + int w = isolated ? size.width : wholeSize.width; + if (w < ksize.width || h < ksize.height) + return false; + + // Figure out what vector size to use for loading the pixels. + int pxLoadNumPixels = cn != 1 || size.width % 4 ? 1 : 4; + int pxLoadVecSize = cn * pxLoadNumPixels; + + // Figure out how many pixels per work item to compute in X and Y + // directions. Too many and we run out of registers. + int pxPerWorkItemX = 1, pxPerWorkItemY = 1; + if (cn <= 2 && ksize.width <= 4 && ksize.height <= 4) + { + pxPerWorkItemX = size.width % 8 ? size.width % 4 ? size.width % 2 ? 1 : 2 : 4 : 8; + pxPerWorkItemY = size.height % 2 ? 1 : 2; + } + else if (cn < 4 || (ksize.width <= 4 && ksize.height <= 4)) + { + pxPerWorkItemX = size.width % 2 ? 1 : 2; + pxPerWorkItemY = size.height % 2 ? 1 : 2; + } + globalsize[0] = size.width / pxPerWorkItemX; + globalsize[1] = size.height / pxPerWorkItemY; + + // Need some padding in the private array for pixels + int privDataWidth = ROUNDUP(pxPerWorkItemX + ksize.width - 1, pxLoadNumPixels); + + // Make the global size a nice round number so the runtime can pick + // from reasonable choices for the workgroup size + const int wgRound = 256; + globalsize[0] = ROUNDUP(globalsize[0], wgRound); + + if (actual_op < 0) + actual_op = op; + + // build processing + String processing; + Mat kernel8u; + _kernel.getMat().convertTo(kernel8u, CV_8U); + for (int y = 0; y < kernel8u.rows; ++y) + for (int x = 0; x < kernel8u.cols; ++x) + if (kernel8u.at(y, x) != 0) + processing += format("PROCESS(%d,%d)", y, x); + + + static const char * const op2str[] = { "OP_ERODE", "OP_DILATE", NULL, NULL, "OP_GRADIENT", "OP_TOPHAT", "OP_BLACKHAT" }; + String opts = format("-D cn=%d " + "-D ANCHOR_X=%d -D ANCHOR_Y=%d -D KERNEL_SIZE_X=%d -D KERNEL_SIZE_Y=%d " + "-D PX_LOAD_VEC_SIZE=%d -D PX_LOAD_NUM_PX=%d -D DEPTH_%d " + "-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s " + "-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d " + "-D srcT=%s -D srcT1=%s -D dstT=srcT -D dstT1=srcT1 -D WT=%s -D WT1=%s " + "-D convertToWT=%s -D convertToDstT=%s -D PROCESS_ELEM_=%s -D %s%s", + cn, anchor.x, anchor.y, ksize.width, ksize.height, + pxLoadVecSize, pxLoadNumPixels, depth, + pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType], + isolated ? "BORDER_ISOLATED" : "NO_BORDER_ISOLATED", + privDataWidth / pxLoadNumPixels, pxPerWorkItemY + ksize.height - 1, + ocl::typeToStr(type), ocl::typeToStr(depth), + haveExtraMat ? ocl::typeToStr(wtype):"srcT",//to prevent overflow - WT + haveExtraMat ? ocl::typeToStr(wdepth):"srcT1",//to prevent overflow - WT1 + haveExtraMat ? ocl::convertTypeStr(depth, wdepth, cn, cvt[0]) : "noconvert",//to prevent overflow - src to WT + haveExtraMat ? ocl::convertTypeStr(wdepth, depth, cn, cvt[1]) : "noconvert",//to prevent overflow - WT to dst + processing.c_str(), op2str[op], + actual_op == op ? "" : cv::format(" -D %s", op2str[actual_op]).c_str()); + + ocl::Kernel kernel("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, opts); + if (kernel.empty()) + return false; + + _dst.create(size, type); + UMat dst = _dst.getUMat(); + + UMat source; + if(src.u != dst.u) + source = src; + else + { + Point ofs; + int cols = src.cols, rows = src.rows; + src.locateROI(wholeSize, ofs); + src.adjustROI(ofs.y, wholeSize.height - rows - ofs.y, ofs.x, wholeSize.width - cols - ofs.x); + src.copyTo(source); + + src.adjustROI(-ofs.y, -wholeSize.height + rows + ofs.y, -ofs.x, -wholeSize.width + cols + ofs.x); + source.adjustROI(-ofs.y, -wholeSize.height + rows + ofs.y, -ofs.x, -wholeSize.width + cols + ofs.x); + source.locateROI(wholeSize, ofs); + } + + UMat extraMat = _extraMat.getUMat(); + + int idxArg = kernel.set(0, ocl::KernelArg::PtrReadOnly(source)); + idxArg = kernel.set(idxArg, (int)source.step); + int srcOffsetX = (int)((source.offset % source.step) / source.elemSize()); + int srcOffsetY = (int)(source.offset / source.step); + int srcEndX = isolated ? srcOffsetX + size.width : wholeSize.width; + int srcEndY = isolated ? srcOffsetY + size.height : wholeSize.height; + idxArg = kernel.set(idxArg, srcOffsetX); + idxArg = kernel.set(idxArg, srcOffsetY); + idxArg = kernel.set(idxArg, srcEndX); + idxArg = kernel.set(idxArg, srcEndY); + idxArg = kernel.set(idxArg, ocl::KernelArg::WriteOnly(dst)); + + if (haveExtraMat) + { + idxArg = kernel.set(idxArg, ocl::KernelArg::ReadOnlyNoSize(extraMat)); + } + + return kernel.run(2, globalsize, NULL, false); + +} + static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel, Point anchor, int iterations, int op, int borderType, const Scalar &, int actual_op = -1, InputArray _extraMat = noArray()) { const ocl::Device & dev = ocl::Device::getDefault(); - int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); - bool doubleSupport = dev.doubleFPConfig() > 0; + int type = _src.type(), depth = CV_MAT_DEPTH(type), + cn = CV_MAT_CN(type), esz = CV_ELEM_SIZE(type); + Mat kernel = _kernel.getMat(); + Size ksize = kernel.data ? kernel.size() : Size(3, 3), ssize = _src.size(); + bool doubleSupport = dev.doubleFPConfig() > 0; if ((depth == CV_64F && !doubleSupport) || borderType != BORDER_CONSTANT) return false; - Mat kernel = _kernel.getMat(); bool haveExtraMat = !_extraMat.empty(); - Size ksize = kernel.data ? kernel.size() : Size(3, 3), ssize = _src.size(); CV_Assert(actual_op <= 3 || haveExtraMat); - if (iterations == 0 || kernel.rows*kernel.cols == 1) - { - _src.copyTo(_dst); - return true; - } - if (!kernel.data) { kernel = getStructuringElement(MORPH_RECT, Size(1+iterations*2,1+iterations*2)); @@ -1377,6 +1527,22 @@ static bool ocl_morphOp(InputArray _src, OutputArray _dst, InputArray _kernel, iterations = 1; } + // try to use OpenCL kernel adopted for small morph kernel + if (dev.isIntel() && !(dev.type() & ocl::Device::TYPE_CPU) && + ((ksize.width < 5 && ksize.height < 5 && esz <= 4) || + (ksize.width == 5 && ksize.height == 5 && cn == 1)) && + (iterations == 1)) + { + if (ocl_morphSmall(_src, _dst, kernel, anchor, borderType, op, actual_op, _extraMat)) + return true; + } + + if (iterations == 0 || kernel.rows*kernel.cols == 1) + { + _src.copyTo(_dst); + return true; + } + #ifdef ANDROID size_t localThreads[2] = { 16, 8 }; #else diff --git a/modules/imgproc/src/opencl/calc_back_project.cl b/modules/imgproc/src/opencl/calc_back_project.cl index ec92471541..0b45ae2103 100644 --- a/modules/imgproc/src/opencl/calc_back_project.cl +++ b/modules/imgproc/src/opencl/calc_back_project.cl @@ -39,6 +39,9 @@ #define OUT_OF_RANGE -1 +// for identical rounding after dividing on different platforms +#define ROUNDING_EPS 0.000001f + #if histdims == 1 __kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_offset, int hist_bins, @@ -53,7 +56,7 @@ __kernel void calcLUT(__global const uchar * histptr, int hist_step, int hist_of { float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins; value -= lb; - int bin = convert_int_sat_rtn(value / gap); + int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS); if (bin >= hist_bins) lut[x] = OUT_OF_RANGE; @@ -101,7 +104,7 @@ __kernel void calcLUT(int hist_bins, __global int * lut, int lut_offset, { float lb = ranges[0], ub = ranges[1], gap = (ub - lb) / hist_bins; value -= lb; - int bin = convert_int_sat_rtn(value / gap); + int bin = convert_int_sat_rtn(value / gap + ROUNDING_EPS); lut[x] = bin >= hist_bins ? OUT_OF_RANGE : bin; } diff --git a/modules/imgproc/src/opencl/corner.cl b/modules/imgproc/src/opencl/corner.cl index 563cb98081..e1c2e407dc 100644 --- a/modules/imgproc/src/opencl/corner.cl +++ b/modules/imgproc/src/opencl/corner.cl @@ -114,25 +114,23 @@ __kernel void corner(__global const float * Dx, int dx_step, int dx_offset, int int dst_startX = gX * (THREADS-ksX+1) + dst_x_off; int dst_startY = (gY << 1) + dst_y_off; - float dx_data[ksY+1],dy_data[ksY+1], data[3][ksY+1]; + float data[3][ksY+1]; __local float temp[6][THREADS]; #ifdef BORDER_CONSTANT for (int i=0; i < ksY+1; i++) { bool dx_con = dx_startX+col >= 0 && dx_startX+col < dx_whole_cols && dx_startY+i >= 0 && dx_startY+i < dx_whole_rows; - int indexDx = (dx_startY+i)*(dx_step>>2)+(dx_startX+col); + int indexDx = mad24(dx_startY+i, dx_step>>2, dx_startX+col); float dx_s = dx_con ? Dx[indexDx] : 0.0f; - dx_data[i] = dx_s; bool dy_con = dy_startX+col >= 0 && dy_startX+col < dy_whole_cols && dy_startY+i >= 0 && dy_startY+i < dy_whole_rows; - int indexDy = (dy_startY+i)*(dy_step>>2)+(dy_startX+col); + int indexDy = mad24(dy_startY+i, dy_step>>2, dy_startX+col); float dy_s = dy_con ? Dy[indexDy] : 0.0f; - dy_data[i] = dy_s; - data[0][i] = dx_data[i] * dx_data[i]; - data[1][i] = dx_data[i] * dy_data[i]; - data[2][i] = dy_data[i] * dy_data[i]; + data[0][i] = dx_s * dx_s; + data[1][i] = dx_s * dy_s; + data[2][i] = dy_s * dy_s; } #else int clamped_col = min(2*dst_cols, col); @@ -141,16 +139,16 @@ __kernel void corner(__global const float * Dx, int dx_step, int dx_offset, int int dx_selected_row = dx_startY+i, dx_selected_col = dx_startX+clamped_col; EXTRAPOLATE(dx_selected_row, dx_whole_rows) EXTRAPOLATE(dx_selected_col, dx_whole_cols) - dx_data[i] = Dx[dx_selected_row * (dx_step>>2) + dx_selected_col]; + float dx_s = Dx[mad24(dx_selected_row, dx_step>>2, dx_selected_col)]; int dy_selected_row = dy_startY+i, dy_selected_col = dy_startX+clamped_col; EXTRAPOLATE(dy_selected_row, dy_whole_rows) EXTRAPOLATE(dy_selected_col, dy_whole_cols) - dy_data[i] = Dy[dy_selected_row * (dy_step>>2) + dy_selected_col]; + float dy_s = Dy[mad24(dy_selected_row, dy_step>>2, dy_selected_col)]; - data[0][i] = dx_data[i] * dx_data[i]; - data[1][i] = dx_data[i] * dy_data[i]; - data[2][i] = dy_data[i] * dy_data[i]; + data[0][i] = dx_s * dx_s; + data[1][i] = dx_s * dy_s; + data[2][i] = dy_s * dy_s; } #endif float sum0 = 0.0f, sum1 = 0.0f, sum2 = 0.0f; @@ -180,7 +178,7 @@ __kernel void corner(__global const float * Dx, int dx_step, int dx_offset, int col += anX; int posX = dst_startX - dst_x_off + col - anX; int posY = (gly << 1); - int till = (ksX + 1)%2; + int till = (ksX + 1) & 1; float tmp_sum[6] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; for (int k=0; k<6; k++) { @@ -210,7 +208,7 @@ __kernel void corner(__global const float * Dx, int dx_step, int dx_offset, int float a = tmp_sum[0] * 0.5f; float b = tmp_sum[2]; float c = tmp_sum[4] * 0.5f; - *(__global float *)(dst + dst_index) = (float)((a+c) - sqrt((a-c)*(a-c) + b*b)); + *(__global float *)(dst + dst_index) = (float)((a+c) - native_sqrt((a-c)*(a-c) + b*b)); } if (posX < dst_cols && (posY + 1) < dst_rows) { @@ -218,7 +216,7 @@ __kernel void corner(__global const float * Dx, int dx_step, int dx_offset, int float a = tmp_sum[1] * 0.5f; float b = tmp_sum[3]; float c = tmp_sum[5] * 0.5f; - *(__global float *)(dst + dst_index) = (float)((a+c) - sqrt((a-c)*(a-c) + b*b)); + *(__global float *)(dst + dst_index) = (float)((a+c) - native_sqrt((a-c)*(a-c) + b*b)); } #else #error "No such corners type" diff --git a/modules/imgproc/src/opencl/cvtcolor.cl b/modules/imgproc/src/opencl/cvtcolor.cl index da835e08f3..2846357d52 100644 --- a/modules/imgproc/src/opencl/cvtcolor.cl +++ b/modules/imgproc/src/opencl/cvtcolor.cl @@ -441,18 +441,18 @@ __kernel void YCrCb2RGB(__global const uchar* src, int src_step, int src_offset, __global DATA_TYPE * dstptr = (__global DATA_TYPE*)(dst + dst_index); DATA_TYPE_4 src_pix = vload4(0, srcptr); - DATA_TYPE y = src_pix.x, cr = src_pix.y, cb = src_pix.z; + DATA_TYPE yp = src_pix.x, cr = src_pix.y, cb = src_pix.z; #ifdef DEPTH_5 __constant float * coeff = c_YCrCb2RGBCoeffs_f; - float r = fma(coeff[0], cr - HALF_MAX, y); - float g = fma(coeff[1], cr - HALF_MAX, fma(coeff[2], cb - HALF_MAX, y)); - float b = fma(coeff[3], cb - HALF_MAX, y); + float r = fma(coeff[0], cr - HALF_MAX, yp); + float g = fma(coeff[1], cr - HALF_MAX, fma(coeff[2], cb - HALF_MAX, yp)); + float b = fma(coeff[3], cb - HALF_MAX, yp); #else __constant int * coeff = c_YCrCb2RGBCoeffs_i; - int r = y + CV_DESCALE(coeff[0] * (cr - HALF_MAX), yuv_shift); - int g = y + CV_DESCALE(mad24(coeff[1], cr - HALF_MAX, coeff[2] * (cb - HALF_MAX)), yuv_shift); - int b = y + CV_DESCALE(coeff[3] * (cb - HALF_MAX), yuv_shift); + int r = yp + CV_DESCALE(coeff[0] * (cr - HALF_MAX), yuv_shift); + int g = yp + CV_DESCALE(mad24(coeff[1], cr - HALF_MAX, coeff[2] * (cb - HALF_MAX)), yuv_shift); + int b = yp + CV_DESCALE(coeff[3] * (cb - HALF_MAX), yuv_shift); #endif dstptr[(bidx^2)] = SAT_CAST(r); @@ -1796,6 +1796,10 @@ __kernel void Luv2BGR(__global const uchar * srcptr, int src_step, int src_offse float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); + R = clamp(R, 0.f, 1.f); + G = clamp(G, 0.f, 1.f); + B = clamp(B, 0.f, 1.f); + #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); G = splineInterpolate(G*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); @@ -1853,6 +1857,10 @@ __kernel void Luv2BGR(__global const uchar * src, int src_step, int src_offset, float G = fma(X, coeffs[3], fma(Y, coeffs[4], Z * coeffs[5])); float B = fma(X, coeffs[6], fma(Y, coeffs[7], Z * coeffs[8])); + R = clamp(R, 0.f, 1.f); + G = clamp(G, 0.f, 1.f); + B = clamp(B, 0.f, 1.f); + #ifdef SRGB R = splineInterpolate(R*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); G = splineInterpolate(G*GammaTabScale, gammaTab, GAMMA_TAB_SIZE); diff --git a/modules/imgproc/src/opencl/filterSep_singlePass.cl b/modules/imgproc/src/opencl/filterSep_singlePass.cl index 3952577d77..8c14f2d77e 100644 --- a/modules/imgproc/src/opencl/filterSep_singlePass.cl +++ b/modules/imgproc/src/opencl/filterSep_singlePass.cl @@ -119,20 +119,17 @@ __kernel void sep_filter(__global uchar* Src, int src_step, int srcOffsetX, int int liy = get_local_id(1); int x = get_global_id(0); - int y = get_global_id(1); // calculate pixel position in source image taking image offset into account int srcX = x + srcOffsetX - RADIUSX; - int srcY = y + srcOffsetY - RADIUSY; // extrapolate coordinates, if needed // and read my own source pixel into local memory // with account for extra border pixels, which will be read by starting workitems int clocY = liy; - int cSrcY = srcY; do { - int yb = cSrcY; + int yb = clocY + srcOffsetY - RADIUSY; EXTRAPOLATE(yb, (height)); int clocX = lix; @@ -149,53 +146,80 @@ __kernel void sep_filter(__global uchar* Src, int src_step, int srcOffsetX, int while(clocX < BLK_X+(RADIUSX*2)); clocY += BLK_Y; - cSrcY += BLK_Y; } while (clocY < BLK_Y+(RADIUSY*2)); barrier(CLK_LOCAL_MEM_FENCE); - // do vertical filter pass - // and store intermediate results to second local memory array - int i, clocX = lix; - WT sum = (WT) 0; - do + for (int y = 0; y < dst_rows; y+=BLK_Y) { - sum = (WT) 0; - for (i=0; i<=2*RADIUSY; i++) + // do vertical filter pass + // and store intermediate results to second local memory array + int i, clocX = lix; + WT sum = (WT) 0; + do + { + sum = (WT) 0; + for (i=0; i<=2*RADIUSY; i++) #if (defined(INTEGER_ARITHMETIC) && !INTEL_DEVICE) - sum = mad24(lsmem[liy+i][clocX], mat_kernelY[i], sum); + sum = mad24(lsmem[liy + i][clocX], mat_kernelY[i], sum); #else - sum = mad(lsmem[liy+i][clocX], mat_kernelY[i], sum); + sum = mad(lsmem[liy + i][clocX], mat_kernelY[i], sum); #endif - lsmemDy[liy][clocX] = sum; - clocX += BLK_X; - } - while(clocX < BLK_X+(RADIUSX*2)); - barrier(CLK_LOCAL_MEM_FENCE); + lsmemDy[liy][clocX] = sum; + clocX += BLK_X; + } + while(clocX < BLK_X+(RADIUSX*2)); + barrier(CLK_LOCAL_MEM_FENCE); - // if this pixel happened to be out of image borders because of global size rounding, - // then just return - if( x >= dst_cols || y >=dst_rows ) - return; - - // do second horizontal filter pass - // and calculate final result - sum = 0.0f; - for (i=0; i<=2*RADIUSX; i++) + // if this pixel happened to be out of image borders because of global size rounding, + // then just return + if ((x < dst_cols) && (y + liy < dst_rows)) + { + // do second horizontal filter pass + // and calculate final result + sum = 0.0f; + for (i=0; i<=2*RADIUSX; i++) #if (defined(INTEGER_ARITHMETIC) && !INTEL_DEVICE) - sum = mad24(lsmemDy[liy][lix+i], mat_kernelX[i], sum); + sum = mad24(lsmemDy[liy][lix+i], mat_kernelX[i], sum); #else - sum = mad(lsmemDy[liy][lix+i], mat_kernelX[i], sum); + sum = mad(lsmemDy[liy][lix+i], mat_kernelX[i], sum); #endif #ifdef INTEGER_ARITHMETIC #ifdef INTEL_DEVICE - sum = (sum + (1 << (SHIFT_BITS-1))) / (1 << SHIFT_BITS); + sum = (sum + (1 << (SHIFT_BITS-1))) / (1 << SHIFT_BITS); #else - sum = (sum + (1 << (SHIFT_BITS-1))) >> SHIFT_BITS; + sum = (sum + (1 << (SHIFT_BITS-1))) >> SHIFT_BITS; #endif #endif + // store result into destination image + storepix(convertToDstT(sum + (WT)(delta)), Dst + mad24(y + liy, dst_step, mad24(x, DSTSIZE, dst_offset))); + } + + for (int i = liy * BLK_X + lix; i < (RADIUSY*2) * (BLK_X+(RADIUSX*2)); i += BLK_X * BLK_Y) + { + int clocX = i % (BLK_X+(RADIUSX*2)); + int clocY = i / (BLK_X+(RADIUSX*2)); + lsmem[clocY][clocX] = lsmem[clocY + BLK_Y][clocX]; + } + barrier(CLK_LOCAL_MEM_FENCE); + + int yb = y + liy + BLK_Y + srcOffsetY + RADIUSY; + EXTRAPOLATE(yb, (height)); + + clocX = lix; + int cSrcX = x + srcOffsetX - RADIUSX; + do + { + int xb = cSrcX; + EXTRAPOLATE(xb,(width)); + lsmem[liy + 2*RADIUSY][clocX] = ELEM(xb, yb, (width), (height), 0 ); + + clocX += BLK_X; + cSrcX += BLK_X; + } + while(clocX < BLK_X+(RADIUSX*2)); + barrier(CLK_LOCAL_MEM_FENCE); + } - // store result into destination image - storepix(convertToDstT(sum + (WT)(delta)), Dst + mad24(y, dst_step, mad24(x, DSTSIZE, dst_offset))); } diff --git a/modules/imgproc/src/opencl/boxFilterSmall.cl b/modules/imgproc/src/opencl/filterSmall.cl similarity index 71% rename from modules/imgproc/src/opencl/boxFilterSmall.cl rename to modules/imgproc/src/opencl/filterSmall.cl index ff47d18e4b..c996fb833e 100755 --- a/modules/imgproc/src/opencl/boxFilterSmall.cl +++ b/modules/imgproc/src/opencl/filterSmall.cl @@ -153,35 +153,10 @@ inline bool isBorder(const struct RectCoords bounds, int2 coord, int numPixels) } #endif -inline WT getBorderPixel(const struct RectCoords bounds, int2 coord, - __global const uchar * srcptr, int srcstep) -{ -#ifdef BORDER_CONSTANT - return (WT)(0); -#else - int selected_col = coord.x; - int selected_row = coord.y; - - EXTRAPOLATE(selected_col, selected_row, - bounds.x1, bounds.y1, - bounds.x2, bounds.y2); - - __global const uchar* ptr = srcptr + mad24(selected_row, srcstep, selected_col * SRCSIZE); - return convertToWT(loadpix(ptr)); -#endif -} - -inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, - int srcstep, const struct RectCoords srcCoords) -{ - if (!isBorder(srcCoords, pos, 1)) - { - __global const uchar * ptr = srcptr + mad24(pos.y, srcstep, pos.x * SRCSIZE); - return convertToWT(loadpix(ptr)); - } - else - return getBorderPixel(srcCoords, pos, srcptr, srcstep); -} +#define float1 float +#define uchar1 uchar +#define int1 int +#define uint1 unit #define __CAT(x, y) x##y #define CAT(x, y) __CAT(x, y) @@ -191,7 +166,7 @@ inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, #define PX_LOAD_FLOAT_VEC_TYPE CAT(WT1, PX_LOAD_VEC_SIZE) #define PX_LOAD_FLOAT_VEC_CONV CAT(convert_, PX_LOAD_FLOAT_VEC_TYPE) #define PX_LOAD CAT(vload, PX_LOAD_VEC_SIZE) -#define float1 float + inline PX_LOAD_FLOAT_VEC_TYPE readSrcPixelGroup(int2 pos, __global const uchar * srcptr, int srcstep, const struct RectCoords srcCoords) @@ -218,12 +193,150 @@ inline PX_LOAD_FLOAT_VEC_TYPE readSrcPixelGroup(int2 pos, __global const uchar * #define LOOP(N, VAR, STMT) CAT(LOOP, N)((VAR), (STMT)) -__kernel void boxFilterSmall(__global const uchar * srcptr, int src_step, int srcOffsetX, int srcOffsetY, int srcEndX, int srcEndY, - __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols -#ifdef NORMALIZE - , float alpha +#ifdef OP_BOX_FILTER +#define PROCESS_ELEM \ + WT total_sum = (WT)(0); \ + int sy = 0; \ + LOOP(KERNEL_SIZE_Y, sy, \ + { \ + int sx = 0; \ + LOOP(KERNEL_SIZE_X, sx, \ + { \ + total_sum += privateData[py + sy][px + sx]; \ + }); \ + }) + +#elif defined OP_FILTER2D + +#define DIG(a) a, +__constant WT1 kernelData[] = { COEFF }; + +#define PROCESS_ELEM \ + WT total_sum = 0; \ + int sy = 0; \ + int kernelIndex = 0; \ + LOOP(KERNEL_SIZE_Y, sy, \ + { \ + int sx = 0; \ + LOOP(KERNEL_SIZE_X, sx, \ + { \ + total_sum = fma(kernelData[kernelIndex++], privateData[py + sy][px + sx], total_sum); \ + }); \ + }) + +#elif defined OP_ERODE || defined OP_DILATE + +#ifdef DEPTH_0 +#define MIN_VAL 0 +#define MAX_VAL UCHAR_MAX +#elif defined DEPTH_1 +#define MIN_VAL SCHAR_MIN +#define MAX_VAL SCHAR_MAX +#elif defined DEPTH_2 +#define MIN_VAL 0 +#define MAX_VAL USHRT_MAX +#elif defined DEPTH_3 +#define MIN_VAL SHRT_MIN +#define MAX_VAL SHRT_MAX +#elif defined DEPTH_4 +#define MIN_VAL INT_MIN +#define MAX_VAL INT_MAX +#elif defined DEPTH_5 +#define MIN_VAL (-FLT_MAX) +#define MAX_VAL FLT_MAX +#elif defined DEPTH_6 +#define MIN_VAL (-DBL_MAX) +#define MAX_VAL DBL_MAX #endif - ) + +#ifdef OP_ERODE +#define VAL (WT)MAX_VAL +#elif defined OP_DILATE +#define VAL (WT)MIN_VAL +#else +#error "Unknown operation" +#endif + +#define convert_float1 convert_float +#define convert_uchar1 convert_uchar +#define convert_int1 convert_int +#define convert_uint1 convert_uint + +#ifdef OP_ERODE +#if defined INTEL_DEVICE && defined DEPTH_0 +// workaround for bug in Intel HD graphics drivers (10.18.10.3496 or older) +#define WA_CONVERT_1 CAT(convert_uint, cn) +#define WA_CONVERT_2 CAT(convert_, srcT) +#define MORPH_OP(A, B) WA_CONVERT_2(min(WA_CONVERT_1(A), WA_CONVERT_1(B))) +#else +#define MORPH_OP(A, B) min((A), (B)) +#endif +#endif +#ifdef OP_DILATE +#define MORPH_OP(A, B) max((A), (B)) +#endif + +#define PROCESS(_y, _x) \ + total_sum = convertToWT(MORPH_OP(convertToWT(total_sum), convertToWT(privateData[py + _y][px + _x]))); + +#define PROCESS_ELEM \ + WT total_sum = convertToWT(VAL); \ + PROCESS_ELEM_ + +#else +#error "No processing is specified" +#endif + +#if defined OP_GRADIENT || defined OP_TOPHAT || defined OP_BLACKHAT +#define EXTRA_PARAMS , __global const uchar * matptr, int mat_step, int mat_offset +#else +#define EXTRA_PARAMS +#endif + +inline WT getBorderPixel(const struct RectCoords bounds, int2 coord, + __global const uchar * srcptr, int srcstep) +{ +#ifdef BORDER_CONSTANT +#ifdef OP_ERODE + return (WT)(MAX_VAL); +#elif defined OP_DILATE + return (WT)(MIN_VAL); +#else + return (WT)(0); +#endif +#else + + int selected_col = coord.x; + int selected_row = coord.y; + + EXTRAPOLATE(selected_col, selected_row, + bounds.x1, bounds.y1, + bounds.x2, bounds.y2); + + __global const uchar* ptr = srcptr + mad24(selected_row, srcstep, selected_col * SRCSIZE); + return convertToWT(loadpix(ptr)); +#endif +} + +inline WT readSrcPixelSingle(int2 pos, __global const uchar * srcptr, + int srcstep, const struct RectCoords srcCoords) +{ + if (!isBorder(srcCoords, pos, 1)) + { + __global const uchar * ptr = srcptr + mad24(pos.y, srcstep, pos.x * SRCSIZE); + return convertToWT(loadpix(ptr)); + } + else + return getBorderPixel(srcCoords, pos, srcptr, srcstep); +} + + +__kernel void filterSmall(__global const uchar * srcptr, int src_step, int srcOffsetX, int srcOffsetY, int srcEndX, int srcEndY, + __global uchar * dstptr, int dst_step, int dst_offset, int rows, int cols +#ifdef NORMALIZE + , float alpha +#endif + EXTRA_PARAMS ) { // for non-isolated border: offsetX, offsetY, wholeX, wholeY const struct RectCoords srcCoords = { srcOffsetX, srcOffsetY, srcEndX, srcEndY }; @@ -282,24 +395,27 @@ __kernel void boxFilterSmall(__global const uchar * srcptr, int src_step, int sr LOOP(PX_PER_WI_X, px, { int x = startX + px; - int sy = 0; - int kernelIndex = 0; - WT total_sum = (WT)(0); - - LOOP(KERNEL_SIZE_Y, sy, - { - int sx = 0; - LOOP(KERNEL_SIZE_X, sx, - { - total_sum += privateData[py + sy][px + sx]; - }); - }); - - __global dstT * dstPtr = (__global dstT *)(dstptr + mad24(y, dst_step, mad24(x, DSTSIZE, dst_offset))); + PROCESS_ELEM; + int dst_index = mad24(y, dst_step, mad24(x, DSTSIZE, dst_offset)); + __global dstT * dstPtr = (__global dstT *)(dstptr + dst_index); #ifdef NORMALIZE total_sum *= (WT)(alpha); #endif +#if defined OP_GRADIENT || defined OP_TOPHAT || defined OP_BLACKHAT + //for this type of operations SRCSIZE == DSTSIZE + int mat_index = mad24(y, mat_step, mad24(x, SRCSIZE, mat_offset)); + WT value = convertToWT(loadpix(matptr + mat_index)); + +#ifdef OP_GRADIENT + storepix(convertToDstT(convertToWT(total_sum) - convertToWT(value)), dstPtr ); +#elif defined OP_TOPHAT + storepix(convertToDstT(convertToWT(value) - convertToWT(total_sum)), dstPtr ); +#elif defined OP_BLACKHAT + storepix(convertToDstT(convertToWT(total_sum) - convertToWT(value)), dstPtr ); +#endif +#else // erode or dilate, or open-close storepix(convertToDstT(total_sum), dstPtr); +#endif }); }); } diff --git a/modules/imgproc/src/opencl/histogram.cl b/modules/imgproc/src/opencl/histogram.cl index ff8023054f..5c99d5424d 100644 --- a/modules/imgproc/src/opencl/histogram.cl +++ b/modules/imgproc/src/opencl/histogram.cl @@ -47,7 +47,7 @@ #define noconvert -__kernel void calculate_histogram(__global const uchar * src, int src_step, int src_offset, int src_rows, int src_cols, +__kernel void calculate_histogram(__global const uchar * src_ptr, int src_step, int src_offset, int src_rows, int src_cols, __global uchar * histptr, int total) { int lid = get_local_id(0); @@ -61,6 +61,7 @@ __kernel void calculate_histogram(__global const uchar * src, int src_step, int localhist[i] = 0; barrier(CLK_LOCAL_MEM_FENCE); + __global const uchar * src = src_ptr + src_offset; int src_index; for (int grain = HISTS_COUNT * WGS * kercn; id < total; id += grain) @@ -68,7 +69,7 @@ __kernel void calculate_histogram(__global const uchar * src, int src_step, int #ifdef HAVE_SRC_CONT src_index = id; #else - src_index = mad24(id / src_cols, src_step, src_offset + id % src_cols); + src_index = mad24(id / src_cols, src_step, id % src_cols); #endif #if kercn == 1 diff --git a/modules/imgproc/src/opencl/integral_sum.cl b/modules/imgproc/src/opencl/integral_sum.cl index 49a3bde955..3c51c1a28b 100644 --- a/modules/imgproc/src/opencl/integral_sum.cl +++ b/modules/imgproc/src/opencl/integral_sum.cl @@ -132,8 +132,11 @@ kernel void integral_sum_rows(__global const uchar *buf_ptr, int buf_step, int b } dst_sq_offset += dst_sq_step; - dst_sq = (__global sumSQT *)(dst_sq_ptr + mad24(x, dst_sq_step, dst_sq_offset)); - dst_sq[0] = 0; + if (x < rows - 1) + { + dst_sq = (__global sumSQT *)(dst_sq_ptr + mad24(x, dst_sq_step, dst_sq_offset)); + dst_sq[0] = 0; + } int buf_sq_index = mad24((int)sizeof(sumSQT), x, buf_sq_offset); sumSQT accum_sq = 0; diff --git a/modules/imgproc/src/opencl/match_template.cl b/modules/imgproc/src/opencl/match_template.cl index 1919e8edd2..c6c9468e88 100644 --- a/modules/imgproc/src/opencl/match_template.cl +++ b/modules/imgproc/src/opencl/match_template.cl @@ -90,11 +90,8 @@ __kernel void calcSum(__global const uchar * srcptr, int src_step, int src_offse T src = loadpix(srcptr + src_index); tmp = convertToWT(src); -#if wdepth == 4 - accumulator = mad24(tmp, tmp, accumulator); -#else + accumulator = mad(tmp, tmp, accumulator); -#endif } if (lid < WGS2_ALIGNED) @@ -165,11 +162,9 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s { T temp = (T)(template[j]); T src = *(__global const T*)(srcptr + ind + j*(int)sizeof(T1)); -#if wdepth == 4 - sum = mad24(convertToWT(src), convertToWT(temp), sum); -#else - sum = mad(convertToWT(src), convertToWT(temp), sum); -#endif + + sum = mad(convertToWT(src), convertToWT(temp), sum); + } ind += src_step; template = (__global const T1 *)((__global const uchar *)template + template_step); @@ -195,12 +190,7 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s #pragma unroll for (int cx=0, x = x0; cx < PIX_PER_WI_X && x < dst_cols; ++cx, ++x) { - -#if wdepth == 4 - sum[cx] = mad24(convertToWT1(src[j+cx]), convertToWT1(template[j]), sum[cx]); -#else sum[cx] = mad(convertToWT1(src[j+cx]), convertToWT1(template[j]), sum[cx]); -#endif } } @@ -237,11 +227,8 @@ __kernel void matchTemplate_Naive_CCORR(__global const uchar * srcptr, int src_s { T src = loadpix(srcptr + mad24(y+i, src_step, mad24(x+j, TSIZE, src_offset))); T template = loadpix(templateptr + mad24(i, template_step, mad24(j, TSIZE, template_offset))); -#if wdepth == 4 - sum = mad24(convertToWT(src), convertToWT(template), sum); -#else + sum = mad(convertToWT(src), convertToWT(template), sum); -#endif } } @@ -296,11 +283,8 @@ __kernel void matchTemplate_Naive_SQDIFF(__global const uchar * srcptr, int src_ T template = loadpix(templateptr + mad24(i, template_step, mad24(j, TSIZE, template_offset))); value = convertToWT(src) - convertToWT(template); -#if wdepth == 4 - sum = mad24(value, value, sum); -#else + sum = mad(value, value, sum); -#endif } } diff --git a/modules/imgproc/src/opencl/pyr_down.cl b/modules/imgproc/src/opencl/pyr_down.cl index b8b06b712b..b6927fa879 100644 --- a/modules/imgproc/src/opencl/pyr_down.cl +++ b/modules/imgproc/src/opencl/pyr_down.cl @@ -53,16 +53,16 @@ #if defined BORDER_REPLICATE // aaaaaa|abcdefgh|hhhhhhh -#define EXTRAPOLATE(x, maxV) clamp(x, 0, maxV-1) +#define EXTRAPOLATE(x, maxV) clamp((x), 0, (maxV)-1) #elif defined BORDER_WRAP // cdefgh|abcdefgh|abcdefg #define EXTRAPOLATE(x, maxV) ( (x) + (maxV) ) % (maxV) #elif defined BORDER_REFLECT // fedcba|abcdefgh|hgfedcb -#define EXTRAPOLATE(x, maxV) min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ) +#define EXTRAPOLATE(x, maxV) clamp(min(((maxV)-1)*2-(x)+1, max((x),-(x)-1) ), 0, (maxV)-1) #elif defined BORDER_REFLECT_101 || defined BORDER_REFLECT101 // gfedcb|abcdefgh|gfedcba -#define EXTRAPOLATE(x, maxV) min(((maxV)-1)*2-(x), max((x),-(x)) ) +#define EXTRAPOLATE(x, maxV) clamp(min(((maxV)-1)*2-(x), max((x),-(x)) ), 0, (maxV)-1) #else #error No extrapolation method #endif @@ -79,116 +79,207 @@ #define SRC(_x,_y) convertToFT(loadpix(srcData + mad24(_y, src_step, PIXSIZE * _x))) +#if kercn == 4 +#define SRC4(_x,_y) convert_float4(vload4(0, srcData + mad24(_y, src_step, PIXSIZE * _x))) +#endif + +#ifdef INTEL_DEVICE +#define MAD(x,y,z) fma((x),(y),(z)) +#else +#define MAD(x,y,z) mad((x),(y),(z)) +#endif + +#define LOAD_LOCAL(col_gl, col_lcl) \ + sum0 = co3* SRC(col_gl, EXTRAPOLATE_(src_y - 2, src_rows)); \ + sum0 = MAD(co2, SRC(col_gl, EXTRAPOLATE_(src_y - 1, src_rows)), sum0); \ + temp = SRC(col_gl, EXTRAPOLATE_(src_y, src_rows)); \ + sum0 = MAD(co1, temp, sum0); \ + sum1 = co3 * temp; \ + temp = SRC(col_gl, EXTRAPOLATE_(src_y + 1, src_rows)); \ + sum0 = MAD(co2, temp, sum0); \ + sum1 = MAD(co2, temp, sum1); \ + temp = SRC(col_gl, EXTRAPOLATE_(src_y + 2, src_rows)); \ + sum0 = MAD(co3, temp, sum0); \ + sum1 = MAD(co1, temp, sum1); \ + smem[0][col_lcl] = sum0; \ + sum1 = MAD(co2, SRC(col_gl, EXTRAPOLATE_(src_y + 3, src_rows)), sum1); \ + sum1 = MAD(co3, SRC(col_gl, EXTRAPOLATE_(src_y + 4, src_rows)), sum1); \ + smem[1][col_lcl] = sum1; + + +#if kercn == 4 +#define LOAD_LOCAL4(col_gl, col_lcl) \ + sum40 = co3* SRC4(col_gl, EXTRAPOLATE_(src_y - 2, src_rows)); \ + sum40 = MAD(co2, SRC4(col_gl, EXTRAPOLATE_(src_y - 1, src_rows)), sum40); \ + temp4 = SRC4(col_gl, EXTRAPOLATE_(src_y, src_rows)); \ + sum40 = MAD(co1, temp4, sum40); \ + sum41 = co3 * temp4; \ + temp4 = SRC4(col_gl, EXTRAPOLATE_(src_y + 1, src_rows)); \ + sum40 = MAD(co2, temp4, sum40); \ + sum41 = MAD(co2, temp4, sum41); \ + temp4 = SRC4(col_gl, EXTRAPOLATE_(src_y + 2, src_rows)); \ + sum40 = MAD(co3, temp4, sum40); \ + sum41 = MAD(co1, temp4, sum41); \ + vstore4(sum40, col_lcl, (__local float*) &smem[0][2]); \ + sum41 = MAD(co2, SRC4(col_gl, EXTRAPOLATE_(src_y + 3, src_rows)), sum41); \ + sum41 = MAD(co3, SRC4(col_gl, EXTRAPOLATE_(src_y + 4, src_rows)), sum41); \ + vstore4(sum41, col_lcl, (__local float*) &smem[1][2]); +#endif + #define noconvert __kernel void pyrDown(__global const uchar * src, int src_step, int src_offset, int src_rows, int src_cols, __global uchar * dst, int dst_step, int dst_offset, int dst_rows, int dst_cols) { - const int x = get_global_id(0); - const int y = get_group_id(1); + const int x = get_global_id(0)*kercn; + const int y = 2*get_global_id(1); - __local FT smem[LOCAL_SIZE + 4]; + __local FT smem[2][LOCAL_SIZE + 4]; __global uchar * dstData = dst + dst_offset; __global const uchar * srcData = src + src_offset; - FT sum; + FT sum0, sum1, temp; FT co1 = 0.375f; FT co2 = 0.25f; FT co3 = 0.0625f; const int src_y = 2*y; + int col; - if (src_y >= 2 && src_y < src_rows - 2 && x >= 2 && x < src_cols - 2) + if (src_y >= 2 && src_y < src_rows - 4) { - sum = co3 * SRC(x, src_y - 2); - sum = sum + co2 * SRC(x, src_y - 1); - sum = sum + co1 * SRC(x, src_y ); - sum = sum + co2 * SRC(x, src_y + 1); - sum = sum + co3 * SRC(x, src_y + 2); - - smem[2 + get_local_id(0)] = sum; - +#define EXTRAPOLATE_(val, maxVal) val +#if kercn == 1 + col = EXTRAPOLATE(x, src_cols); + LOAD_LOCAL(col, 2 + get_local_id(0)) +#else + if (x < src_cols-4) + { + float4 sum40, sum41, temp4; + LOAD_LOCAL4(x, get_local_id(0)) + } + else + { + for (int i=0; i<4; i++) + { + col = EXTRAPOLATE(x+i, src_cols); + LOAD_LOCAL(col, 2 + 4 * get_local_id(0) + i) + } + } +#endif if (get_local_id(0) < 2) { - const int left_x = x - 2; - - sum = co3 * SRC(left_x, src_y - 2); - sum = sum + co2 * SRC(left_x, src_y - 1); - sum = sum + co1 * SRC(left_x, src_y ); - sum = sum + co2 * SRC(left_x, src_y + 1); - sum = sum + co3 * SRC(left_x, src_y + 2); - - smem[get_local_id(0)] = sum; + col = EXTRAPOLATE((int)(get_group_id(0)*LOCAL_SIZE + get_local_id(0) - 2), src_cols); + LOAD_LOCAL(col, get_local_id(0)) } - - if (get_local_id(0) > LOCAL_SIZE - 3) + else if (get_local_id(0) < 4) { - const int right_x = x + 2; - - sum = co3 * SRC(right_x, src_y - 2); - sum = sum + co2 * SRC(right_x, src_y - 1); - sum = sum + co1 * SRC(right_x, src_y ); - sum = sum + co2 * SRC(right_x, src_y + 1); - sum = sum + co3 * SRC(right_x, src_y + 2); - - smem[4 + get_local_id(0)] = sum; + col = EXTRAPOLATE((int)((get_group_id(0)+1)*LOCAL_SIZE + get_local_id(0) - 2), src_cols); + LOAD_LOCAL(col, LOCAL_SIZE + get_local_id(0)) } } - else + else // need extrapolate y { - int col = EXTRAPOLATE(x, src_cols); - - sum = co3 * SRC(col, EXTRAPOLATE(src_y - 2, src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y - 1, src_rows)); - sum = sum + co1 * SRC(col, EXTRAPOLATE(src_y , src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y + 1, src_rows)); - sum = sum + co3 * SRC(col, EXTRAPOLATE(src_y + 2, src_rows)); - - smem[2 + get_local_id(0)] = sum; - +#define EXTRAPOLATE_(val, maxVal) EXTRAPOLATE(val, maxVal) +#if kercn == 1 + col = EXTRAPOLATE(x, src_cols); + LOAD_LOCAL(col, 2 + get_local_id(0)) +#else + if (x < src_cols-4) + { + float4 sum40, sum41, temp4; + LOAD_LOCAL4(x, get_local_id(0)) + } + else + { + for (int i=0; i<4; i++) + { + col = EXTRAPOLATE(x+i, src_cols); + LOAD_LOCAL(col, 2 + 4*get_local_id(0) + i) + } + } +#endif if (get_local_id(0) < 2) { - col = EXTRAPOLATE(x - 2, src_cols); - - sum = co3 * SRC(col, EXTRAPOLATE(src_y - 2, src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y - 1, src_rows)); - sum = sum + co1 * SRC(col, EXTRAPOLATE(src_y , src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y + 1, src_rows)); - sum = sum + co3 * SRC(col, EXTRAPOLATE(src_y + 2, src_rows)); - - smem[get_local_id(0)] = sum; + col = EXTRAPOLATE((int)(get_group_id(0)*LOCAL_SIZE + get_local_id(0) - 2), src_cols); + LOAD_LOCAL(col, get_local_id(0)) } - - if (get_local_id(0) > LOCAL_SIZE - 3) + else if (get_local_id(0) < 4) { - col = EXTRAPOLATE(x + 2, src_cols); - - sum = co3 * SRC(col, EXTRAPOLATE(src_y - 2, src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y - 1, src_rows)); - sum = sum + co1 * SRC(col, EXTRAPOLATE(src_y , src_rows)); - sum = sum + co2 * SRC(col, EXTRAPOLATE(src_y + 1, src_rows)); - sum = sum + co3 * SRC(col, EXTRAPOLATE(src_y + 2, src_rows)); - - smem[4 + get_local_id(0)] = sum; + col = EXTRAPOLATE((int)((get_group_id(0)+1)*LOCAL_SIZE + get_local_id(0) - 2), src_cols); + LOAD_LOCAL(col, LOCAL_SIZE + get_local_id(0)) } } barrier(CLK_LOCAL_MEM_FENCE); +#if kercn == 1 if (get_local_id(0) < LOCAL_SIZE / 2) { const int tid2 = get_local_id(0) * 2; - sum = co3 * smem[2 + tid2 - 2]; - sum = sum + co2 * smem[2 + tid2 - 1]; - sum = sum + co1 * smem[2 + tid2 ]; - sum = sum + co2 * smem[2 + tid2 + 1]; - sum = sum + co3 * smem[2 + tid2 + 2]; - const int dst_x = (get_group_id(0) * get_local_size(0) + tid2) / 2; if (dst_x < dst_cols) - storepix(convertToT(sum), dstData + y * dst_step + dst_x * PIXSIZE); + { + for (int yin = y, y1 = min(dst_rows, y + 2); yin < y1; yin++) + { +#if cn == 1 +#if fdepth <= 5 + FT sum = dot(vload4(0, (__local float*) (&smem) + tid2 + (yin - y) * (LOCAL_SIZE + 4)), (float4)(co3, co2, co1, co2)); +#else + FT sum = dot(vload4(0, (__local double*) (&smem) + tid2 + (yin - y) * (LOCAL_SIZE + 4)), (double4)(co3, co2, co1, co2)); +#endif +#else + FT sum = co3 * smem[yin - y][2 + tid2 - 2]; + sum = MAD(co2, smem[yin - y][2 + tid2 - 1], sum); + sum = MAD(co1, smem[yin - y][2 + tid2 ], sum); + sum = MAD(co2, smem[yin - y][2 + tid2 + 1], sum); +#endif + sum = MAD(co3, smem[yin - y][2 + tid2 + 2], sum); + storepix(convertToT(sum), dstData + yin * dst_step + dst_x * PIXSIZE); + } + } } +#else + int tid4 = get_local_id(0) * 4; + int dst_x = (get_group_id(0) * LOCAL_SIZE + tid4) / 2; + if (dst_x < dst_cols - 1) + { + for (int yin = y, y1 = min(dst_rows, y + 2); yin < y1; yin++) + { + + FT sum = co3* smem[yin - y][2 + tid4 + 2]; + sum = MAD(co3, smem[yin - y][2 + tid4 - 2], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 - 1], sum); + sum = MAD(co1, smem[yin - y][2 + tid4 ], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 + 1], sum); + storepix(convertToT(sum), dstData + mad24(yin, dst_step, dst_x * PIXSIZE)); + + dst_x ++; + sum = co3* smem[yin - y][2 + tid4 + 4]; + sum = MAD(co3, smem[yin - y][2 + tid4 ], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 + 1], sum); + sum = MAD(co1, smem[yin - y][2 + tid4 + 2], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 + 3], sum); + storepix(convertToT(sum), dstData + mad24(yin, dst_step, dst_x * PIXSIZE)); + dst_x --; + } + + } + else if (dst_x < dst_cols) + { + for (int yin = y, y1 = min(dst_rows, y + 2); yin < y1; yin++) + { + FT sum = co3* smem[yin - y][2 + tid4 + 2]; + sum = MAD(co3, smem[yin - y][2 + tid4 - 2], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 - 1], sum); + sum = MAD(co1, smem[yin - y][2 + tid4 ], sum); + sum = MAD(co2, smem[yin - y][2 + tid4 + 1], sum); + + storepix(convertToT(sum), dstData + mad24(yin, dst_step, dst_x * PIXSIZE)); + } + } +#endif } diff --git a/modules/imgproc/src/opencl/remap.cl b/modules/imgproc/src/opencl/remap.cl index bd043c5e4b..41f5fa85d7 100644 --- a/modules/imgproc/src/opencl/remap.cl +++ b/modules/imgproc/src/opencl/remap.cl @@ -147,37 +147,43 @@ __kernel void remap_2_32FC1(__global const uchar * srcptr, int src_step, int src ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - T scalar = convertScalar(nVal); - - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int map1_index = mad24(y, map1_step, x * (int)sizeof(float) + map1_offset); - int map2_index = mad24(y, map2_step, x * (int)sizeof(float) + map2_offset); - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); + T scalar = convertScalar(nVal); - __global const float * map1 = (__global const float *)(map1ptr + map1_index); - __global const float * map2 = (__global const float *)(map2ptr + map2_index); - __global T * dst = (__global T *)(dstptr + dst_index); + int map1_index = mad24(y, map1_step, mad24(x, (int)sizeof(float), map1_offset)); + int map2_index = mad24(y, map2_step, mad24(x, (int)sizeof(float), map2_offset)); + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); - int gx = convert_int_sat_rte(map1[0]); - int gy = convert_int_sat_rte(map2[0]); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map1_index += map1_step, map2_index += map2_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const float * map1 = (__global const float *)(map1ptr + map1_index); + __global const float * map2 = (__global const float *)(map2ptr + map2_index); + __global T * dst = (__global T *)(dstptr + dst_index); - if (NEED_EXTRAPOLATION(gx, gy)) - { + int gx = convert_int_sat_rte(map1[0]); + int gy = convert_int_sat_rte(map2[0]); + + if (NEED_EXTRAPOLATION(gx, gy)) + { #ifndef BORDER_CONSTANT - int2 gxy = (int2)(gx, gy); + int2 gxy = (int2)(gx, gy); #endif - T v; - EXTRAPOLATE(gxy, v) - storepix(v, dst); - } - else - { - int src_index = mad24(gy, src_step, gx * TSIZE + src_offset); - storepix(loadpix((__global const T*)(srcptr + src_index)), dst); - } + T v; + EXTRAPOLATE(gxy, v) + storepix(v, dst); + } + else + { + int src_index = mad24(gy, src_step, mad24(gx, TSIZE, src_offset)); + storepix(loadpix((__global const T*)(srcptr + src_index)), dst); + } + } } } @@ -187,31 +193,36 @@ __kernel void remap_32FC2(__global const uchar * srcptr, int src_step, int src_o ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - T scalar = convertScalar(nVal); - - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map_index = mad24(y, map_step, x * (int)sizeof(float2) + map_offset); + T scalar = convertScalar(nVal); + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map_index = mad24(y, map_step, mad24(x, (int)sizeof(float2), map_offset)); - __global const float2 * map = (__global const float2 *)(mapptr + map_index); - __global T * dst = (__global T *)(dstptr + dst_index); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map_index += map_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const float2 * map = (__global const float2 *)(mapptr + map_index); + __global T * dst = (__global T *)(dstptr + dst_index); - int2 gxy = convert_int2_sat_rte(map[0]); - int gx = gxy.x, gy = gxy.y; + int2 gxy = convert_int2_sat_rte(map[0]); + int gx = gxy.x, gy = gxy.y; - if (NEED_EXTRAPOLATION(gx, gy)) - { - T v; - EXTRAPOLATE(gxy, v) - storepix(v, dst); - } - else - { - int src_index = mad24(gy, src_step, gx * TSIZE + src_offset); - storepix(loadpix((__global const T *)(srcptr + src_index)), dst); + if (NEED_EXTRAPOLATION(gx, gy)) + { + T v; + EXTRAPOLATE(gxy, v) + storepix(v, dst); + } + else + { + int src_index = mad24(gy, src_step, mad24(gx, TSIZE, src_offset)); + storepix(loadpix((__global const T *)(srcptr + src_index)), dst); + } } } } @@ -222,32 +233,37 @@ __kernel void remap_16SC2(__global const uchar * srcptr, int src_step, int src_o ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - T scalar = convertScalar(nVal); - - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map_index = mad24(y, map_step, x * (int)sizeof(short2) + map_offset); + T scalar = convertScalar(nVal); + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map_index = mad24(y, map_step, mad24(x, (int)sizeof(short2), map_offset)); - __global const short2 * map = (__global const short2 *)(mapptr + map_index); - __global T * dst = (__global T *)(dstptr + dst_index); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map_index += map_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const short2 * map = (__global const short2 *)(mapptr + map_index); + __global T * dst = (__global T *)(dstptr + dst_index); - int2 gxy = convert_int2(map[0]); - int gx = gxy.x, gy = gxy.y; + int2 gxy = convert_int2(map[0]); + int gx = gxy.x, gy = gxy.y; - if (NEED_EXTRAPOLATION(gx, gy)) - { - T v; - EXTRAPOLATE(gxy, v) - storepix(v, dst); - } - else - { - int src_index = mad24(gy, src_step, gx * TSIZE + src_offset); - storepix(loadpix((__global const T *)(srcptr + src_index)), dst); - } + if (NEED_EXTRAPOLATION(gx, gy)) + { + T v; + EXTRAPOLATE(gxy, v) + storepix(v, dst); + } + else + { + int src_index = mad24(gy, src_step, mad24(gx, TSIZE, src_offset)); + storepix(loadpix((__global const T *)(srcptr + src_index)), dst); + } + } } } @@ -258,41 +274,54 @@ __kernel void remap_16SC2_16UC1(__global const uchar * srcptr, int src_step, int ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - T scalar = convertScalar(nVal); - - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map1_index = mad24(y, map1_step, x * (int)sizeof(short2) + map1_offset); - int map2_index = mad24(y, map2_step, x * (int)sizeof(ushort) + map2_offset); + T scalar = convertScalar(nVal); + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map1_index = mad24(y, map1_step, mad24(x, (int)sizeof(short2), map1_offset)); + int map2_index = mad24(y, map2_step, mad24(x, (int)sizeof(ushort), map2_offset)); - __global const short2 * map1 = (__global const short2 *)(map1ptr + map1_index); - __global const ushort * map2 = (__global const ushort *)(map2ptr + map2_index); - __global T * dst = (__global T *)(dstptr + dst_index); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map1_index += map1_step, map2_index += map2_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const short2 * map1 = (__global const short2 *)(map1ptr + map1_index); + __global const ushort * map2 = (__global const ushort *)(map2ptr + map2_index); + __global T * dst = (__global T *)(dstptr + dst_index); - int map2Value = convert_int(map2[0]) & (INTER_TAB_SIZE2 - 1); - int dx = (map2Value & (INTER_TAB_SIZE - 1)) < (INTER_TAB_SIZE >> 1) ? 1 : 0; - int dy = (map2Value >> INTER_BITS) < (INTER_TAB_SIZE >> 1) ? 1 : 0; - int2 gxy = convert_int2(map1[0]) + (int2)(dx, dy); - int gx = gxy.x, gy = gxy.y; + int map2Value = convert_int(map2[0]) & (INTER_TAB_SIZE2 - 1); + int dx = (map2Value & (INTER_TAB_SIZE - 1)) < (INTER_TAB_SIZE >> 1) ? 1 : 0; + int dy = (map2Value >> INTER_BITS) < (INTER_TAB_SIZE >> 1) ? 1 : 0; + int2 gxy = convert_int2(map1[0]) + (int2)(dx, dy); + int gx = gxy.x, gy = gxy.y; - if (NEED_EXTRAPOLATION(gx, gy)) - { - T v; - EXTRAPOLATE(gxy, v) - storepix(v, dst); - } - else - { - int src_index = mad24(gy, src_step, gx * TSIZE + src_offset); - storepix(loadpix((__global const T *)(srcptr + src_index)), dst); - } + if (NEED_EXTRAPOLATION(gx, gy)) + { + T v; + EXTRAPOLATE(gxy, v) + storepix(v, dst); + } + else + { + int src_index = mad24(gy, src_step, mad24(gx, TSIZE, src_offset)); + storepix(loadpix((__global const T *)(srcptr + src_index)), dst); + } + } } } -#elif INTER_LINEAR +#elif defined INTER_LINEAR + +__constant float coeffs[64] = +{ 1.000000f, 0.000000f, 0.968750f, 0.031250f, 0.937500f, 0.062500f, 0.906250f, 0.093750f, 0.875000f, 0.125000f, 0.843750f, 0.156250f, + 0.812500f, 0.187500f, 0.781250f, 0.218750f, 0.750000f, 0.250000f, 0.718750f, 0.281250f, 0.687500f, 0.312500f, 0.656250f, 0.343750f, + 0.625000f, 0.375000f, 0.593750f, 0.406250f, 0.562500f, 0.437500f, 0.531250f, 0.468750f, 0.500000f, 0.500000f, 0.468750f, 0.531250f, + 0.437500f, 0.562500f, 0.406250f, 0.593750f, 0.375000f, 0.625000f, 0.343750f, 0.656250f, 0.312500f, 0.687500f, 0.281250f, 0.718750f, + 0.250000f, 0.750000f, 0.218750f, 0.781250f, 0.187500f, 0.812500f, 0.156250f, 0.843750f, 0.125000f, 0.875000f, 0.093750f, 0.906250f, + 0.062500f, 0.937500f, 0.031250f, 0.968750f }; __kernel void remap_16SC2_16UC1(__global const uchar * srcptr, int src_step, int src_offset, int src_rows, int src_cols, __global uchar * dstptr, int dst_step, int dst_offset, int dst_rows, int dst_cols, @@ -301,54 +330,60 @@ __kernel void remap_16SC2_16UC1(__global const uchar * srcptr, int src_step, int ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map1_index = mad24(y, map1_step, x * (int)sizeof(short2) + map1_offset); - int map2_index = mad24(y, map2_step, x * (int)sizeof(ushort) + map2_offset); - - __global const short2 * map1 = (__global const short2 *)(map1ptr + map1_index); - __global const ushort * map2 = (__global const ushort *)(map2ptr + map2_index); - __global T * dst = (__global T *)(dstptr + dst_index); - - int2 map_dataA = convert_int2(map1[0]); - int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); - int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); - int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); - - ushort map2Value = (ushort)(map2[0] & (INTER_TAB_SIZE2 - 1)); - WT2 u = (WT2)(map2Value & (INTER_TAB_SIZE - 1), map2Value >> INTER_BITS) / (WT2)(INTER_TAB_SIZE); - WT scalar = convertToWT(convertScalar(nVal)); - WT a = scalar, b = scalar, c = scalar, d = scalar; + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map1_index = mad24(y, map1_step, mad24(x, (int)sizeof(short2), map1_offset)); + int map2_index = mad24(y, map2_step, mad24(x, (int)sizeof(ushort), map2_offset)); - if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) - a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataA, a); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map1_index += map1_step, map2_index += map2_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const short2 * map1 = (__global const short2 *)(map1ptr + map1_index); + __global const ushort * map2 = (__global const ushort *)(map2ptr + map2_index); + __global T * dst = (__global T *)(dstptr + dst_index); - if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) - b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataB, b); + int2 map_dataA = convert_int2(map1[0]); + int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); + int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); + int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); - if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) - c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataC, c); + ushort map2Value = (ushort)(map2[0] & (INTER_TAB_SIZE2 - 1)); + WT2 u = (WT2)(map2Value & (INTER_TAB_SIZE - 1), map2Value >> INTER_BITS) / (WT2)(INTER_TAB_SIZE); - if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) - d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataD, d); + WT a = scalar, b = scalar, c = scalar, d = scalar; - WT dst_data = a * (1 - u.x) * (1 - u.y) + - b * (u.x) * (1 - u.y) + - c * (1 - u.x) * (u.y) + - d * (u.x) * (u.y); - storepix(convertToT(dst_data), dst); + if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) + a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataA, a); + + if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) + b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataB, b); + + if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) + c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataC, c); + + if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) + d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataD, d); + + WT dst_data = a * (1 - u.x) * (1 - u.y) + + b * (u.x) * (1 - u.y) + + c * (1 - u.x) * (u.y) + + d * (u.x) * (u.y); + storepix(convertToT(dst_data), dst); + } } } @@ -359,55 +394,106 @@ __kernel void remap_2_32FC1(__global const uchar * srcptr, int src_step, int src ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map1_index = mad24(y, map1_step, x * (int)sizeof(float) + map1_offset); - int map2_index = mad24(y, map2_step, x * (int)sizeof(float) + map2_offset); - - __global const float * map1 = (__global const float *)(map1ptr + map1_index); - __global const float * map2 = (__global const float *)(map2ptr + map2_index); - __global T * dst = (__global T *)(dstptr + dst_index); - - float2 map_data = (float2)(map1[0], map2[0]); - - int2 map_dataA = convert_int2_sat_rtn(map_data); - int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); - int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); - int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); - - float2 _u = map_data - convert_float2(map_dataA); - WT2 u = convertToWT2(convert_int2_rte(convertToWT2(_u) * (WT2)INTER_TAB_SIZE)) / (WT2)INTER_TAB_SIZE; WT scalar = convertToWT(convertScalar(nVal)); - WT a = scalar, b = scalar, c = scalar, d = scalar; + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map1_index = mad24(y, map1_step, mad24(x, (int)sizeof(float), map1_offset)); + int map2_index = mad24(y, map2_step, mad24(x, (int)sizeof(float), map2_offset)); - if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) - a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataA, a); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map1_index += map1_step, map2_index += map2_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const float * map1 = (__global const float *)(map1ptr + map1_index); + __global const float * map2 = (__global const float *)(map2ptr + map2_index); + __global T * dst = (__global T *)(dstptr + dst_index); - if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) - b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataB, b); +#if defined BORDER_CONSTANT + float xf = map1[0], yf = map2[0]; + int sx = convert_int_sat_rtz(mad(xf, INTER_TAB_SIZE, 0.5f)) >> INTER_BITS; + int sy = convert_int_sat_rtz(mad(yf, INTER_TAB_SIZE, 0.5f)) >> INTER_BITS; - if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) - c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataC, c); + __constant float * coeffs_x = coeffs + ((convert_int_rte(xf * INTER_TAB_SIZE) & (INTER_TAB_SIZE - 1)) << 1); + __constant float * coeffs_y = coeffs + ((convert_int_rte(yf * INTER_TAB_SIZE) & (INTER_TAB_SIZE - 1)) << 1); - if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) - d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataD, d); + WT sum = (WT)(0), xsum; + int src_index = mad24(sy, src_step, mad24(sx, TSIZE, src_offset)); - WT dst_data = a * (1 - u.x) * (1 - u.y) + - b * (u.x) * (1 - u.y) + - c * (1 - u.x) * (u.y) + - d * (u.x) * (u.y); - storepix(convertToT(dst_data), dst); + #pragma unroll + for (int yp = 0; yp < 2; ++yp, src_index += src_step) + { + if (sy + yp >= 0 && sy + yp < src_rows) + { + xsum = (WT)(0); + if (sx >= 0 && sx + 2 < src_cols) + { +#if depth == 0 && cn == 1 + uchar2 value = vload2(0, srcptr + src_index); + xsum = dot(convert_float2(value), (float2)(coeffs_x[0], coeffs_x[1])); +#else + #pragma unroll + for (int xp = 0; xp < 2; ++xp) + xsum = fma(convertToWT(loadpix(srcptr + mad24(xp, TSIZE, src_index))), coeffs_x[xp], xsum); +#endif + } + else + { + #pragma unroll + for (int xp = 0; xp < 2; ++xp) + xsum = fma(sx + xp >= 0 && sx + xp < src_cols ? + convertToWT(loadpix(srcptr + mad24(xp, TSIZE, src_index))) : scalar, coeffs_x[xp], xsum); + } + sum = fma(xsum, coeffs_y[yp], sum); + } + else + sum = fma(scalar, coeffs_y[yp], sum); + } + + storepix(convertToT(sum), dst); +#else + float2 map_data = (float2)(map1[0], map2[0]); + + int2 map_dataA = convert_int2_sat_rtn(map_data); + int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); + int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); + int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); + + float2 _u = map_data - convert_float2(map_dataA); + WT2 u = convertToWT2(convert_int2_rte(convertToWT2(_u) * (WT2)INTER_TAB_SIZE)) / (WT2)INTER_TAB_SIZE; + WT scalar = convertToWT(convertScalar(nVal)); + WT a = scalar, b = scalar, c = scalar, d = scalar; + + if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) + a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataA, a); + + if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) + b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataB, b); + + if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) + c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataC, c); + + if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) + d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataD, d); + + WT dst_data = a * (1 - u.x) * (1 - u.y) + + b * (u.x) * (1 - u.y) + + c * (1 - u.x) * (u.y) + + d * (u.x) * (u.y); + storepix(convertToT(dst_data), dst); +#endif + } } } @@ -417,52 +503,58 @@ __kernel void remap_32FC2(__global const uchar * srcptr, int src_step, int src_o ST nVal) { int x = get_global_id(0); - int y = get_global_id(1); + int y = get_global_id(1) * rowsPerWI; - if (x < dst_cols && y < dst_rows) + if (x < dst_cols) { - int dst_index = mad24(y, dst_step, x * TSIZE + dst_offset); - int map_index = mad24(y, map_step, x * (int)sizeof(float2) + map_offset); - - __global const float2 * map = (__global const float2 *)(mapptr + map_index); - __global T * dst = (__global T *)(dstptr + dst_index); - - float2 map_data = map[0]; - int2 map_dataA = convert_int2_sat_rtn(map_data); - int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); - int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); - int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); - - float2 _u = map_data - convert_float2(map_dataA); - WT2 u = convertToWT2(convert_int2_rte(convertToWT2(_u) * (WT2)INTER_TAB_SIZE)) / (WT2)INTER_TAB_SIZE; WT scalar = convertToWT(convertScalar(nVal)); - WT a = scalar, b = scalar, c = scalar, d = scalar; + int dst_index = mad24(y, dst_step, mad24(x, TSIZE, dst_offset)); + int map_index = mad24(y, map_step, mad24(x, (int)sizeof(float2), map_offset)); - if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) - a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataA, a); + #pragma unroll + for (int i = 0; i < rowsPerWI; ++i, ++y, + map_index += map_step, dst_index += dst_step) + if (y < dst_rows) + { + __global const float2 * map = (__global const float2 *)(mapptr + map_index); + __global T * dst = (__global T *)(dstptr + dst_index); - if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) - b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataB, b); + float2 map_data = map[0]; + int2 map_dataA = convert_int2_sat_rtn(map_data); + int2 map_dataB = (int2)(map_dataA.x + 1, map_dataA.y); + int2 map_dataC = (int2)(map_dataA.x, map_dataA.y + 1); + int2 map_dataD = (int2)(map_dataA.x + 1, map_dataA.y + 1); - if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) - c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataC, c); + float2 _u = map_data - convert_float2(map_dataA); + WT2 u = convertToWT2(convert_int2_rte(convertToWT2(_u) * (WT2)INTER_TAB_SIZE)) / (WT2)INTER_TAB_SIZE; + WT a = scalar, b = scalar, c = scalar, d = scalar; - if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) - d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); - else - EXTRAPOLATE(map_dataD, d); + if (!NEED_EXTRAPOLATION(map_dataA.x, map_dataA.y)) + a = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataA.y, src_step, map_dataA.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataA, a); - WT dst_data = a * (1 - u.x) * (1 - u.y) + - b * (u.x) * (1 - u.y) + - c * (1 - u.x) * (u.y) + - d * (u.x) * (u.y); - storepix(convertToT(dst_data), dst); + if (!NEED_EXTRAPOLATION(map_dataB.x, map_dataB.y)) + b = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataB.y, src_step, map_dataB.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataB, b); + + if (!NEED_EXTRAPOLATION(map_dataC.x, map_dataC.y)) + c = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataC.y, src_step, map_dataC.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataC, c); + + if (!NEED_EXTRAPOLATION(map_dataD.x, map_dataD.y)) + d = convertToWT(loadpix((__global const T *)(srcptr + mad24(map_dataD.y, src_step, map_dataD.x * TSIZE + src_offset)))); + else + EXTRAPOLATE(map_dataD, d); + + WT dst_data = a * (1 - u.x) * (1 - u.y) + + b * (u.x) * (1 - u.y) + + c * (1 - u.x) * (u.y) + + d * (u.x) * (u.y); + storepix(convertToT(dst_data), dst); + } } } diff --git a/modules/imgproc/src/opencl/warp_affine.cl b/modules/imgproc/src/opencl/warp_affine.cl index 8ee34d0d65..229336ea15 100644 --- a/modules/imgproc/src/opencl/warp_affine.cl +++ b/modules/imgproc/src/opencl/warp_affine.cl @@ -373,4 +373,4 @@ __kernel void warpAffine(__global const uchar * srcptr, int src_step, int src_of } } -#endif +#endif \ No newline at end of file diff --git a/modules/imgproc/src/pyramids.cpp b/modules/imgproc/src/pyramids.cpp index 1e4f89cc64..0ab8d74c3b 100644 --- a/modules/imgproc/src/pyramids.cpp +++ b/modules/imgproc/src/pyramids.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { @@ -405,14 +405,17 @@ typedef void (*PyrFunc)(const Mat&, Mat&, int); static bool ocl_pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType) { - int type = _src.type(), depth = CV_MAT_DEPTH(type), channels = CV_MAT_CN(type); + int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); bool doubleSupport = ocl::Device::getDefault().doubleFPConfig() > 0; - if (channels > 4 || (depth == CV_64F && !doubleSupport)) + if (cn > 4 || (depth == CV_64F && !doubleSupport)) return false; Size ssize = _src.size(); Size dsize = _dsz.area() == 0 ? Size((ssize.width + 1) / 2, (ssize.height + 1) / 2) : _dsz; + if (dsize.height < 2 || dsize.width < 2) + return false; + CV_Assert( ssize.width > 0 && ssize.height > 0 && std::abs(dsize.width*2 - ssize.width) <= 2 && std::abs(dsize.height*2 - ssize.height) <= 2 ); @@ -423,17 +426,20 @@ static bool ocl_pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, in int float_depth = depth == CV_64F ? CV_64F : CV_32F; const int local_size = 256; + int kercn = 1; + if (depth == CV_8U && float_depth == CV_32F && cn == 1 && ocl::Device::getDefault().isIntel()) + kercn = 4; const char * const borderMap[] = { "BORDER_CONSTANT", "BORDER_REPLICATE", "BORDER_REFLECT", "BORDER_WRAP", "BORDER_REFLECT_101" }; char cvt[2][50]; String buildOptions = format( "-D T=%s -D FT=%s -D convertToT=%s -D convertToFT=%s%s " - "-D T1=%s -D cn=%d -D %s -D LOCAL_SIZE=%d", - ocl::typeToStr(type), ocl::typeToStr(CV_MAKETYPE(float_depth, channels)), - ocl::convertTypeStr(float_depth, depth, channels, cvt[0]), - ocl::convertTypeStr(depth, float_depth, channels, cvt[1]), - doubleSupport ? " -D DOUBLE_SUPPORT" : "", - ocl::typeToStr(depth), channels, borderMap[borderType], local_size + "-D T1=%s -D cn=%d -D kercn=%d -D fdepth=%d -D %s -D LOCAL_SIZE=%d", + ocl::typeToStr(type), ocl::typeToStr(CV_MAKETYPE(float_depth, cn)), + ocl::convertTypeStr(float_depth, depth, cn, cvt[0]), + ocl::convertTypeStr(depth, float_depth, cn, cvt[1]), + doubleSupport ? " -D DOUBLE_SUPPORT" : "", ocl::typeToStr(depth), + cn, kercn, float_depth, borderMap[borderType], local_size ); ocl::Kernel k("pyrDown", ocl::imgproc::pyr_down_oclsrc, buildOptions); if (k.empty()) @@ -441,8 +447,8 @@ static bool ocl_pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, in k.args(ocl::KernelArg::ReadOnly(src), ocl::KernelArg::WriteOnly(dst)); - size_t localThreads[2] = { local_size, 1 }; - size_t globalThreads[2] = { src.cols, dst.rows }; + size_t localThreads[2] = { local_size/kercn, 1 }; + size_t globalThreads[2] = { (src.cols + (kercn-1))/kercn, (dst.rows + 1) / 2 }; return k.run(2, globalThreads, localThreads, false); } @@ -502,6 +508,8 @@ static bool ocl_pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int void cv::pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { + CV_Assert(borderType != BORDER_CONSTANT); + CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(), ocl_pyrDown(_src, _dst, _dsz, borderType)) @@ -571,6 +579,8 @@ void cv::pyrDown( InputArray _src, OutputArray _dst, const Size& _dsz, int borde void cv::pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int borderType ) { + CV_Assert(borderType == BORDER_DEFAULT); + CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(), ocl_pyrUp(_src, _dst, _dsz, borderType)) @@ -640,6 +650,8 @@ void cv::pyrUp( InputArray _src, OutputArray _dst, const Size& _dsz, int borderT void cv::buildPyramid( InputArray _src, OutputArrayOfArrays _dst, int maxlevel, int borderType ) { + CV_Assert(borderType != BORDER_CONSTANT); + if (_src.dims() <= 2 && _dst.isUMatVector()) { UMat src = _src.getUMat(); diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 66ff429cf3..6a28fabd7e 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" /* * This file includes the code, contributed by Simon Perreault @@ -720,7 +720,7 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth, "-D PX_PER_WI_X=%d -D PX_PER_WI_Y=%d -D PRIV_DATA_WIDTH=%d -D %s -D %s " "-D PX_LOAD_X_ITERATIONS=%d -D PX_LOAD_Y_ITERATIONS=%d " "-D srcT=%s -D srcT1=%s -D dstT=%s -D dstT1=%s -D WT=%s -D WT1=%s " - "-D convertToWT=%s -D convertToDstT=%s%s%s", + "-D convertToWT=%s -D convertToDstT=%s%s%s -D OP_BOX_FILTER", cn, anchor.x, anchor.y, ksize.width, ksize.height, pxLoadVecSize, pxLoadNumPixels, pxPerWorkItemX, pxPerWorkItemY, privDataWidth, borderMap[borderType], @@ -734,7 +734,7 @@ static bool ocl_boxFilter( InputArray _src, OutputArray _dst, int ddepth, - if (!kernel.create("boxFilterSmall", cv::ocl::imgproc::boxFilterSmall_oclsrc, build_options)) + if (!kernel.create("filterSmall", cv::ocl::imgproc::filterSmall_oclsrc, build_options)) return false; } else @@ -939,7 +939,8 @@ void cv::boxFilter( InputArray _src, OutputArray _dst, int ddepth, if (normalize && !src.isSubmatrix() && ddepth == sdepth && (/*ippBorderType == BORDER_REPLICATE ||*/ /* returns ippStsStepErr: Step value is not valid */ - ippBorderType == BORDER_CONSTANT) && ocvAnchor == ippAnchor ) + ippBorderType == BORDER_CONSTANT) && ocvAnchor == ippAnchor && + dst.cols != ksize.width && dst.rows != ksize.height) // returns ippStsMaskSizeErr: mask has an illegal value { Ipp32s bufSize = 0; IppiSize roiSize = { dst.cols, dst.rows }, maskSize = { ksize.width, ksize.height }; @@ -2172,18 +2173,21 @@ void cv::medianBlur( InputArray _src0, OutputArray _dst, int ksize ) } \ while ((void)0, 0) - Ipp32s bufSize; - IppiSize dstRoiSize = ippiSize(dst.cols, dst.rows), maskSize = ippiSize(ksize, ksize); + if( ksize <= 5 ) + { + Ipp32s bufSize; + IppiSize dstRoiSize = ippiSize(dst.cols, dst.rows), maskSize = ippiSize(ksize, ksize); - int type = src0.type(); - if (type == CV_8UC1) - IPP_FILTER_MEDIAN_BORDER(Ipp8u, ipp8u, 8u_C1R); - else if (type == CV_16UC1) - IPP_FILTER_MEDIAN_BORDER(Ipp16u, ipp16u, 16u_C1R); - else if (type == CV_16SC1) - IPP_FILTER_MEDIAN_BORDER(Ipp16s, ipp16s, 16s_C1R); - else if (type == CV_32FC1) - IPP_FILTER_MEDIAN_BORDER(Ipp32f, ipp32f, 32f_C1R); + int type = src0.type(); + if (type == CV_8UC1) + IPP_FILTER_MEDIAN_BORDER(Ipp8u, ipp8u, 8u_C1R); + else if (type == CV_16UC1) + IPP_FILTER_MEDIAN_BORDER(Ipp16u, ipp16u, 16u_C1R); + else if (type == CV_16SC1) + IPP_FILTER_MEDIAN_BORDER(Ipp16s, ipp16s, 16s_C1R); + else if (type == CV_32FC1) + IPP_FILTER_MEDIAN_BORDER(Ipp32f, ipp32f, 32f_C1R); + } #undef IPP_FILTER_MEDIAN_BORDER #endif diff --git a/modules/imgproc/src/sumpixels.cpp b/modules/imgproc/src/sumpixels.cpp index e7694b01a9..1c6f1513f1 100755 --- a/modules/imgproc/src/sumpixels.cpp +++ b/modules/imgproc/src/sumpixels.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" #if defined (HAVE_IPP) && (IPP_VERSION_MAJOR >= 7) static IppStatus sts = ippInit(); diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index 164af425e3..6919d7a3d0 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -40,7 +40,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" ////////////////////////////////////////////////// matchTemplate ////////////////////////////////////////////////////////// @@ -79,7 +79,7 @@ static bool extractFirstChannel_32F(InputArray _image, OutputArray _result, int static bool sumTemplate(InputArray _src, UMat & result) { int type = _src.type(), depth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); - int wdepth = std::max(CV_32S, depth), wtype = CV_MAKE_TYPE(wdepth, cn); + int wdepth = CV_32F, wtype = CV_MAKE_TYPE(wdepth, cn); size_t wgs = ocl::Device::getDefault().maxWorkGroupSize(); int wgs2_aligned = 1; @@ -89,10 +89,10 @@ static bool sumTemplate(InputArray _src, UMat & result) char cvt[40]; ocl::Kernel k("calcSum", ocl::imgproc::match_template_oclsrc, - format("-D CALC_SUM -D T=%s -D T1=%s -D WT=%s -D cn=%d -D convertToWT=%s -D WGS=%d -D WGS2_ALIGNED=%d -D wdepth=%d", + format("-D CALC_SUM -D T=%s -D T1=%s -D WT=%s -D cn=%d -D convertToWT=%s -D WGS=%d -D WGS2_ALIGNED=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype), cn, ocl::convertTypeStr(depth, wdepth, cn, cvt), - (int)wgs, wgs2_aligned, wdepth)); + (int)wgs, wgs2_aligned)); if (k.empty()) return false; @@ -110,12 +110,8 @@ static bool sumTemplate(InputArray _src, UMat & result) static bool useNaive(Size size) { - if (!ocl::Device::getDefault().isIntel()) - return true; - int dft_size = 18; return size.height < dft_size && size.width < dft_size; - } struct ConvolveBuf @@ -129,7 +125,6 @@ struct ConvolveBuf UMat image_block, templ_block, result_data; void create(Size image_size, Size templ_size); - static Size estimateBlockSize(Size result_size); }; void ConvolveBuf::create(Size image_size, Size templ_size) @@ -137,19 +132,26 @@ void ConvolveBuf::create(Size image_size, Size templ_size) result_size = Size(image_size.width - templ_size.width + 1, image_size.height - templ_size.height + 1); - block_size = user_block_size; - if (user_block_size.width == 0 || user_block_size.height == 0) - block_size = estimateBlockSize(result_size); + const double blockScale = 4.5; + const int minBlockSize = 256; - dft_size.width = 1 << int(ceil(std::log(block_size.width + templ_size.width - 1.) / std::log(2.))); - dft_size.height = 1 << int(ceil(std::log(block_size.height + templ_size.height - 1.) / std::log(2.))); + block_size.width = cvRound(result_size.width*blockScale); + block_size.width = std::max( block_size.width, minBlockSize - templ_size.width + 1 ); + block_size.width = std::min( block_size.width, result_size.width ); + block_size.height = cvRound(templ_size.height*blockScale); + block_size.height = std::max( block_size.height, minBlockSize - templ_size.height + 1 ); + block_size.height = std::min( block_size.height, result_size.height ); - dft_size.width = getOptimalDFTSize(block_size.width + templ_size.width - 1); + dft_size.width = std::max(getOptimalDFTSize(block_size.width + templ_size.width - 1), 2); dft_size.height = getOptimalDFTSize(block_size.height + templ_size.height - 1); + if( dft_size.width <= 0 || dft_size.height <= 0 ) + CV_Error( CV_StsOutOfRange, "the input arrays are too big" ); - // To avoid wasting time doing small DFTs - dft_size.width = std::max(dft_size.width, 512); - dft_size.height = std::max(dft_size.height, 512); + // recompute block size + block_size.width = dft_size.width - templ_size.width + 1; + block_size.width = std::min( block_size.width, result_size.width); + block_size.height = dft_size.height - templ_size.height + 1; + block_size.height = std::min( block_size.height, result_size.height ); image_block.create(dft_size, CV_32F); templ_block.create(dft_size, CV_32F); @@ -164,15 +166,6 @@ void ConvolveBuf::create(Size image_size, Size templ_size) block_size.height = std::min(dft_size.height - templ_size.height + 1, result_size.height); } -Size ConvolveBuf::estimateBlockSize(Size result_size) -{ - int width = (result_size.width + 2) / 3; - int height = (result_size.height + 2) / 3; - width = std::min(width, result_size.width); - height = std::min(height, result_size.height); - return Size(width, height); -} - static bool convolve_dft(InputArray _image, InputArray _templ, OutputArray _result) { ConvolveBuf buf; @@ -202,7 +195,7 @@ static bool convolve_dft(InputArray _image, InputArray _templ, OutputArray _resu copyMakeBorder(templ_roi, templ_block, 0, templ_block.rows - templ_roi.rows, 0, templ_block.cols - templ_roi.cols, BORDER_ISOLATED); - dft(templ_block, templ_spect, 0); + dft(templ_block, templ_spect, 0, templ.rows); // Process all blocks of the result matrix for (int y = 0; y < result.rows; y += block_size.height) @@ -281,8 +274,8 @@ static bool matchTemplateNaive_CCORR(InputArray _image, InputArray _templ, Outpu const char* convertToWT = ocl::convertTypeStr(depth, wdepth, rated_cn, cvt1); ocl::Kernel k("matchTemplate_Naive_CCORR", ocl::imgproc::match_template_oclsrc, - format("-D CCORR -D T=%s -D T1=%s -D WT=%s -D WT1=%s -D convertToWT=%s -D convertToWT1=%s -D cn=%d -D wdepth=%d -D PIX_PER_WI_X=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype1), ocl::typeToStr(wtype), - convertToWT, convertToWT1, cn, wdepth, pxPerWIx)); + format("-D CCORR -D T=%s -D T1=%s -D WT=%s -D WT1=%s -D convertToWT=%s -D convertToWT1=%s -D cn=%d -D PIX_PER_WI_X=%d", ocl::typeToStr(type), ocl::typeToStr(depth), ocl::typeToStr(wtype1), ocl::typeToStr(wtype), + convertToWT, convertToWT1, cn, pxPerWIx)); if (k.empty()) return false; @@ -358,8 +351,8 @@ static bool matchTemplateNaive_SQDIFF(InputArray _image, InputArray _templ, Outp char cvt[40]; ocl::Kernel k("matchTemplate_Naive_SQDIFF", ocl::imgproc::match_template_oclsrc, - format("-D SQDIFF -D T=%s -D T1=%s -D WT=%s -D convertToWT=%s -D cn=%d -D wdepth=%d", ocl::typeToStr(type), ocl::typeToStr(depth), - ocl::typeToStr(wtype), ocl::convertTypeStr(depth, wdepth, cn, cvt), cn, wdepth)); + format("-D SQDIFF -D T=%s -D T1=%s -D WT=%s -D convertToWT=%s -D cn=%d", ocl::typeToStr(type), ocl::typeToStr(depth), + ocl::typeToStr(wtype), ocl::convertTypeStr(depth, wdepth, cn, cvt), cn)); if (k.empty()) return false; @@ -457,18 +450,18 @@ static bool matchTemplate_CCOEFF(InputArray _image, InputArray _templ, OutputArr UMat templ = _templ.getUMat(); UMat result = _result.getUMat(); - Size tsize = templ.size(); if (cn==1) { - float templ_sum = static_cast(sum(_templ)[0]) / tsize.area(); + Scalar templMean = mean(templ); + float templ_sum = (float)templMean[0]; k.args(ocl::KernelArg::ReadOnlyNoSize(image_sums), ocl::KernelArg::ReadWrite(result), templ.rows, templ.cols, templ_sum); } else { Vec4f templ_sum = Vec4f::all(0); - templ_sum = sum(templ) / tsize.area(); + templ_sum = (Vec4f)mean(templ); k.args(ocl::KernelArg::ReadOnlyNoSize(image_sums), ocl::KernelArg::ReadWrite(result), templ.rows, templ.cols, templ_sum); } diff --git a/modules/imgproc/src/thresh.cpp b/modules/imgproc/src/thresh.cpp index 988fc9e9f6..9376d62a50 100644 --- a/modules/imgproc/src/thresh.cpp +++ b/modules/imgproc/src/thresh.cpp @@ -41,7 +41,7 @@ //M*/ #include "precomp.hpp" -#include "opencl_kernels.hpp" +#include "opencl_kernels_imgproc.hpp" namespace cv { diff --git a/modules/imgproc/test/ocl/test_accumulate.cpp b/modules/imgproc/test/ocl/test_accumulate.cpp index 50c9085cb4..cebf173d5d 100644 --- a/modules/imgproc/test/ocl/test_accumulate.cpp +++ b/modules/imgproc/test/ocl/test_accumulate.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_blend.cpp b/modules/imgproc/test/ocl/test_blend.cpp index 7b62b97172..d64b0bae8e 100644 --- a/modules/imgproc/test/ocl/test_blend.cpp +++ b/modules/imgproc/test/ocl/test_blend.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" @@ -117,7 +117,7 @@ OCL_TEST_P(BlendLinear, Accuracy) OCL_OFF(cv::blendLinear(src1_roi, src2_roi, weights1_roi, weights2_roi, dst_roi)); OCL_ON(cv::blendLinear(usrc1_roi, usrc2_roi, uweights1_roi, uweights2_roi, udst_roi)); - Near(depth <= CV_32S ? 1.0 : 0.2); + Near(depth <= CV_32S ? 1.0 : 0.5); } } diff --git a/modules/imgproc/test/ocl/test_boxfilter.cpp b/modules/imgproc/test/ocl/test_boxfilter.cpp index 63f4ebff20..19a6ace75e 100644 --- a/modules/imgproc/test/ocl/test_boxfilter.cpp +++ b/modules/imgproc/test/ocl/test_boxfilter.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -109,7 +109,7 @@ OCL_TEST_P(BoxFilter, Mat) OCL_OFF(cv::boxFilter(src_roi, dst_roi, -1, ksize, anchor, normalize, borderType)); OCL_ON(cv::boxFilter(usrc_roi, udst_roi, -1, ksize, anchor, normalize, borderType)); - Near(depth <= CV_32S ? 1 : 1e-3); + Near(depth <= CV_32S ? 1 : 3e-3); } } diff --git a/modules/imgproc/test/ocl/test_canny.cpp b/modules/imgproc/test/ocl/test_canny.cpp index 631fe5bd19..fadf777985 100644 --- a/modules/imgproc/test/ocl/test_canny.cpp +++ b/modules/imgproc/test/ocl/test_canny.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_color.cpp b/modules/imgproc/test/ocl/test_color.cpp index 82bf2c06f1..818d6a85ab 100644 --- a/modules/imgproc/test/ocl/test_color.cpp +++ b/modules/imgproc/test/ocl/test_color.cpp @@ -43,7 +43,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -302,14 +302,14 @@ OCL_TEST_P(CvtColor8u32f, Lab2LRGBA) { performTest(3, 4, CVTCODE(Lab2LRGB), dept // RGB -> Luv -OCL_TEST_P(CvtColor8u32f, BGR2Luv) { performTest(3, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 1e-2); } -OCL_TEST_P(CvtColor8u32f, RGB2Luv) { performTest(3, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 1e-2); } -OCL_TEST_P(CvtColor8u32f, LBGR2Luv) { performTest(3, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 4e-3); } -OCL_TEST_P(CvtColor8u32f, LRGB2Luv) { performTest(3, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 5e-3); } -OCL_TEST_P(CvtColor8u32f, BGRA2Luv) { performTest(4, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 8e-3); } -OCL_TEST_P(CvtColor8u32f, RGBA2Luv) { performTest(4, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 9e-3); } -OCL_TEST_P(CvtColor8u32f, LBGRA2Luv) { performTest(4, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 5e-3); } -OCL_TEST_P(CvtColor8u32f, LRGBA2Luv) { performTest(4, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 5e-3); } +OCL_TEST_P(CvtColor8u32f, BGR2Luv) { performTest(3, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 1.5e-2); } +OCL_TEST_P(CvtColor8u32f, RGB2Luv) { performTest(3, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 1.5e-2); } +OCL_TEST_P(CvtColor8u32f, LBGR2Luv) { performTest(3, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, LRGB2Luv) { performTest(3, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, BGRA2Luv) { performTest(4, 3, CVTCODE(BGR2Luv), depth == CV_8U ? 1 : 2e-2); } +OCL_TEST_P(CvtColor8u32f, RGBA2Luv) { performTest(4, 3, CVTCODE(RGB2Luv), depth == CV_8U ? 1 : 2e-2); } +OCL_TEST_P(CvtColor8u32f, LBGRA2Luv) { performTest(4, 3, CVTCODE(LBGR2Luv), depth == CV_8U ? 1 : 6e-3); } +OCL_TEST_P(CvtColor8u32f, LRGBA2Luv) { performTest(4, 3, CVTCODE(LRGB2Luv), depth == CV_8U ? 1 : 6e-3); } OCL_TEST_P(CvtColor8u32f, Luv2BGR) { performTest(3, 3, CVTCODE(Luv2BGR), depth == CV_8U ? 1 : 7e-5); } OCL_TEST_P(CvtColor8u32f, Luv2RGB) { performTest(3, 3, CVTCODE(Luv2RGB), depth == CV_8U ? 1 : 7e-5); } diff --git a/modules/imgproc/test/ocl/test_filter2d.cpp b/modules/imgproc/test/ocl/test_filter2d.cpp index 18ba4cc529..38a25a9d9b 100644 --- a/modules/imgproc/test/ocl/test_filter2d.cpp +++ b/modules/imgproc/test/ocl/test_filter2d.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -125,7 +125,7 @@ OCL_INSTANTIATE_TEST_CASE_P(ImageProc, Filter2D, Combine( Values(CV_8U, CV_16U, CV_32F), OCL_ALL_CHANNELS, - Values(3, 5, 9), // Kernel size + Values(3, 5, 7), // Kernel size Values(1, 4, 8), // Width mutiple Values((BorderType)BORDER_CONSTANT, (BorderType)BORDER_REPLICATE, diff --git a/modules/imgproc/test/ocl/test_filters.cpp b/modules/imgproc/test/ocl/test_filters.cpp index 1fe2927886..0c4564e5ac 100644 --- a/modules/imgproc/test/ocl/test_filters.cpp +++ b/modules/imgproc/test/ocl/test_filters.cpp @@ -48,7 +48,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" @@ -225,7 +225,7 @@ OCL_TEST_P(GaussianBlurTest, Mat) OCL_OFF(cv::GaussianBlur(src_roi, dst_roi, Size(ksize, ksize), sigma1, sigma2, borderType)); OCL_ON(cv::GaussianBlur(usrc_roi, udst_roi, Size(ksize, ksize), sigma1, sigma2, borderType)); - Near(CV_MAT_DEPTH(type) >= CV_32F ? 5e-5 : 1, false); + Near(CV_MAT_DEPTH(type) >= CV_32F ? 7e-5 : 1, false); } } @@ -242,7 +242,7 @@ OCL_TEST_P(Erode, Mat) for (int j = 0; j < test_loop_times; j++) { random_roi(); - Mat kernel = randomMat(kernelSize, CV_8UC1, 0, 3); + Mat kernel = ksize==0 ? Mat() : randomMat(kernelSize, CV_8UC1, 0, 3); OCL_OFF(cv::erode(src_roi, dst_roi, kernel, Point(-1, -1), iterations) ); OCL_ON(cv::erode(usrc_roi, udst_roi, kernel, Point(-1, -1), iterations) ); @@ -264,7 +264,7 @@ OCL_TEST_P(Dilate, Mat) for (int j = 0; j < test_loop_times; j++) { random_roi(); - Mat kernel = randomMat(kernelSize, CV_8UC1, 0, 3); + Mat kernel = ksize==0 ? Mat() : randomMat(kernelSize, CV_8UC1, 0, 3); OCL_OFF(cv::dilate(src_roi, dst_roi, kernel, Point(-1, -1), iterations) ); OCL_ON(cv::dilate(usrc_roi, udst_roi, kernel, Point(-1, -1), iterations) ); @@ -275,14 +275,68 @@ OCL_TEST_P(Dilate, Mat) ///////////////////////////////////////////////////////////////////////////////////////////////// // MorphologyEx +IMPLEMENT_PARAM_CLASS(MorphOp, int) +PARAM_TEST_CASE(MorphologyEx, MatType, + int, // kernel size + MorphOp, // MORPH_OP + int, // iterations + bool) +{ + int type, ksize, op, iterations; + bool useRoi; -typedef FilterTestBase MorphologyEx; + TEST_DECLARE_INPUT_PARAMETER(src); + TEST_DECLARE_OUTPUT_PARAMETER(dst); + + virtual void SetUp() + { + type = GET_PARAM(0); + ksize = GET_PARAM(1); + op = GET_PARAM(2); + iterations = GET_PARAM(3); + useRoi = GET_PARAM(4); + } + + void random_roi(int minSize = 1) + { + if (minSize == 0) + minSize = ksize; + + Size roiSize = randomSize(minSize, MAX_VALUE); + + Border srcBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); + randomSubMat(src, src_roi, roiSize, srcBorder, type, 5, 256); + + Border dstBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); + randomSubMat(dst, dst_roi, roiSize, dstBorder, type, -60, 70); + + UMAT_UPLOAD_INPUT_PARAMETER(src); + UMAT_UPLOAD_OUTPUT_PARAMETER(dst); + } + + void Near() + { + int depth = CV_MAT_DEPTH(type); + bool isFP = depth >= CV_32F; + + if (isFP) + Near(1e-6, true); + else + Near(1, false); + } + + void Near(double threshold, bool relative) + { + if (relative) + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); + else + OCL_EXPECT_MATS_NEAR(dst, threshold); + } +}; OCL_TEST_P(MorphologyEx, Mat) { Size kernelSize(ksize, ksize); - int iterations = (int)param; - int op = size.height; for (int j = 0; j < test_loop_times; j++) { @@ -359,7 +413,7 @@ OCL_INSTANTIATE_TEST_CASE_P(Filter, GaussianBlurTest, Combine( OCL_INSTANTIATE_TEST_CASE_P(Filter, Erode, Combine( Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4, CV_64FC1, CV_64FC4), - Values(3, 5, 7), + Values(0, 3, 5, 7), // kernel size, 0 means kernel = Mat() Values(Size(0, 0)), //not used Values((BorderType)BORDER_CONSTANT), Values(1.0, 2.0, 3.0), @@ -368,7 +422,7 @@ OCL_INSTANTIATE_TEST_CASE_P(Filter, Erode, Combine( OCL_INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine( Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4, CV_64FC1, CV_64FC4), - Values(3, 5, 7), + Values(0, 3, 5, 7), // kernel size, 0 means kernel = Mat() Values(Size(0, 0)), // not used Values((BorderType)BORDER_CONSTANT), Values(1.0, 2.0, 3.0), @@ -377,12 +431,10 @@ OCL_INSTANTIATE_TEST_CASE_P(Filter, Dilate, Combine( OCL_INSTANTIATE_TEST_CASE_P(Filter, MorphologyEx, Combine( Values(CV_8UC1, CV_8UC3, CV_8UC4, CV_32FC1, CV_32FC3, CV_32FC4), - Values(3, 5, 7), - Values(Size(0, 2), Size(0, 3), Size(0, 4), Size(0, 5), Size(0, 6)), // used as generator of operations - Values((BorderType)BORDER_CONSTANT), - Values(1.0, 2.0, 3.0), - Bool(), - Values(1))); // not used + Values(3, 5, 7), // kernel size + Values((MorphOp)MORPH_OPEN, (MorphOp)MORPH_CLOSE, (MorphOp)MORPH_GRADIENT, (MorphOp)MORPH_TOPHAT, (MorphOp)MORPH_BLACKHAT), // used as generator of operations + Values(1, 2, 3), + Bool())); } } // namespace cvtest::ocl diff --git a/modules/imgproc/test/ocl/test_gftt.cpp b/modules/imgproc/test/ocl/test_gftt.cpp index 6e65f90dd0..15618cc308 100644 --- a/modules/imgproc/test/ocl/test_gftt.cpp +++ b/modules/imgproc/test/ocl/test_gftt.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_histogram.cpp b/modules/imgproc/test/ocl/test_histogram.cpp index 68a2a60fd0..6a16efa3a3 100644 --- a/modules/imgproc/test/ocl/test_histogram.cpp +++ b/modules/imgproc/test/ocl/test_histogram.cpp @@ -52,7 +52,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" @@ -99,6 +99,10 @@ PARAM_TEST_CASE(CalcBackProject, MatDepth, int, bool) Size roiSize = randomSize(1, MAX_VALUE); int totalChannels = 0; + + ranges.clear(); + channels.clear(); + for (int i = 0; i < N; ++i) { Border srcBorder = randomBorder(0, useRoi ? MAX_VALUE : 0); @@ -202,9 +206,9 @@ OCL_TEST_P(CalcBackProject, Mat) OCL_ON(cv::calcBackProject(uimages_roi, channels, uhist_roi, udst_roi, ranges, scale)); Size dstSize = dst_roi.size(); - int nDiffs = (int)(0.03f*dstSize.height*dstSize.width); + int nDiffs = std::max((int)(0.07f*dstSize.area()), 1); - //check if the dst mats are the same except 3% difference + //check if the dst mats are the same except 7% difference EXPECT_MAT_N_DIFF(dst_roi, udst_roi, nDiffs); } } diff --git a/modules/imgproc/test/ocl/test_imgproc.cpp b/modules/imgproc/test/ocl/test_imgproc.cpp index ad8e26cbca..d89101799a 100644 --- a/modules/imgproc/test/ocl/test_imgproc.cpp +++ b/modules/imgproc/test/ocl/test_imgproc.cpp @@ -51,7 +51,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "cvconfig.h" #include "opencv2/ts/ocl_test.hpp" diff --git a/modules/imgproc/test/ocl/test_match_template.cpp b/modules/imgproc/test/ocl/test_match_template.cpp index 8c8a1238c7..6cf0fe4f30 100644 --- a/modules/imgproc/test/ocl/test_match_template.cpp +++ b/modules/imgproc/test/ocl/test_match_template.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #include "iostream" #include "fstream" @@ -97,9 +97,17 @@ PARAM_TEST_CASE(MatchTemplate, MatDepth, Channels, MatchTemplType, bool) UMAT_UPLOAD_OUTPUT_PARAMETER(result); } - void Near(double threshold = 0.0) + void Near() { - OCL_EXPECT_MATS_NEAR_RELATIVE(result, threshold); + bool isNormed = + method == TM_CCORR_NORMED || + method == TM_SQDIFF_NORMED || + method == TM_CCOEFF_NORMED; + + if (isNormed) + OCL_EXPECT_MATS_NEAR(result, 3e-2); + else + OCL_EXPECT_MATS_NEAR_RELATIVE_SPARSE(result, 1.5e-2); } }; @@ -112,7 +120,7 @@ OCL_TEST_P(MatchTemplate, Mat) OCL_OFF(cv::matchTemplate(image_roi, templ_roi, result_roi, method)); OCL_ON(cv::matchTemplate(uimage_roi, utempl_roi, uresult_roi, method)); - Near(1.5e-4); + Near(); } } diff --git a/modules/imgproc/test/ocl/test_medianfilter.cpp b/modules/imgproc/test/ocl/test_medianfilter.cpp index 6015ed1d77..74077f6db7 100644 --- a/modules/imgproc/test/ocl/test_medianfilter.cpp +++ b/modules/imgproc/test/ocl/test_medianfilter.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_pyramids.cpp b/modules/imgproc/test/ocl/test_pyramids.cpp index a129c7f771..5ac88411df 100644 --- a/modules/imgproc/test/ocl/test_pyramids.cpp +++ b/modules/imgproc/test/ocl/test_pyramids.cpp @@ -44,7 +44,7 @@ //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_sepfilter2D.cpp b/modules/imgproc/test/ocl/test_sepfilter2D.cpp index f7a18aae10..ed42e8b4a7 100644 --- a/modules/imgproc/test/ocl/test_sepfilter2D.cpp +++ b/modules/imgproc/test/ocl/test_sepfilter2D.cpp @@ -41,7 +41,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL diff --git a/modules/imgproc/test/ocl/test_warp.cpp b/modules/imgproc/test/ocl/test_warp.cpp index 416bd523ed..9caefff2b0 100644 --- a/modules/imgproc/test/ocl/test_warp.cpp +++ b/modules/imgproc/test/ocl/test_warp.cpp @@ -51,7 +51,7 @@ // //M*/ -#include "test_precomp.hpp" +#include "../test_precomp.hpp" #include "opencv2/ts/ocl_test.hpp" #ifdef HAVE_OPENCL @@ -72,6 +72,7 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) int type, interpolation; Size dsize; bool useRoi, mapInverse; + int depth; TEST_DECLARE_INPUT_PARAMETER(src); TEST_DECLARE_OUTPUT_PARAMETER(dst); @@ -82,6 +83,7 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) interpolation = GET_PARAM(1); mapInverse = GET_PARAM(2); useRoi = GET_PARAM(3); + depth = CV_MAT_DEPTH(type); if (mapInverse) interpolation |= WARP_INVERSE_MAP; @@ -104,7 +106,10 @@ PARAM_TEST_CASE(WarpTestBase, MatType, Interpolation, bool, bool) void Near(double threshold = 0.0) { - OCL_EXPECT_MATS_NEAR(dst, threshold); + if (depth < CV_32F) + EXPECT_MAT_N_DIFF(dst_roi, udst_roi, cvRound(dst_roi.total()*threshold)); + else + OCL_EXPECT_MATS_NEAR_RELATIVE(dst, threshold); } }; @@ -116,6 +121,7 @@ OCL_TEST_P(WarpAffine, Mat) { for (int j = 0; j < test_loop_times; j++) { + double eps = depth < CV_32F ? 0.03 : 0.06; random_roi(); Mat M = getRotationMatrix2D(Point2f(src_roi.cols / 2.0f, src_roi.rows / 2.0f), @@ -124,7 +130,7 @@ OCL_TEST_P(WarpAffine, Mat) OCL_OFF(cv::warpAffine(src_roi, dst_roi, M, dsize, interpolation)); OCL_ON(cv::warpAffine(usrc_roi, udst_roi, M, dsize, interpolation)); - Near(1.0); + Near(eps); } } @@ -136,6 +142,7 @@ OCL_TEST_P(WarpPerspective, Mat) { for (int j = 0; j < test_loop_times; j++) { + double eps = depth < CV_32F ? 0.03 : 0.06; random_roi(); float cols = static_cast(src_roi.cols), rows = static_cast(src_roi.rows); @@ -150,7 +157,7 @@ OCL_TEST_P(WarpPerspective, Mat) OCL_OFF(cv::warpPerspective(src_roi, dst_roi, M, dsize, interpolation)); OCL_ON(cv::warpPerspective(usrc_roi, udst_roi, M, dsize, interpolation)); - Near(1.0); + Near(eps); } } @@ -182,7 +189,7 @@ PARAM_TEST_CASE(Resize, MatType, double, double, Interpolation, bool, int) { CV_Assert(fx > 0 && fy > 0); - Size srcRoiSize = randomSize(1, MAX_VALUE), dstRoiSize; + Size srcRoiSize = randomSize(10, MAX_VALUE), dstRoiSize; // Make sure the width is a multiple of the requested value, and no more srcRoiSize.width += widthMultiple - 1 - (srcRoiSize.width - 1) % widthMultiple; dstRoiSize.width = cvRound(srcRoiSize.width * fx); @@ -215,7 +222,7 @@ OCL_TEST_P(Resize, Mat) for (int j = 0; j < test_loop_times; j++) { int depth = CV_MAT_DEPTH(type); - double eps = depth <= CV_32S ? 1 : 1e-2; + double eps = depth <= CV_32S ? 1 : 5e-2; random_roi(); @@ -267,7 +274,7 @@ PARAM_TEST_CASE(Remap, MatDepth, Channels, std::pair, BorderTy Border map1Border = randomBorder(0, useRoi ? MAX_VALUE : 0); randomSubMat(map1, map1_roi, dstROISize, map1Border, map1Type, -mapMaxValue, mapMaxValue); - Border map2Border = randomBorder(0, useRoi ? MAX_VALUE : 0); + Border map2Border = randomBorder(0, useRoi ? MAX_VALUE + 1 : 0); if (map2Type != noType) { int mapMinValue = -mapMaxValue; diff --git a/modules/imgproc/test/test_filter.cpp b/modules/imgproc/test/test_filter.cpp index a0927b0f39..6b8cb8c472 100644 --- a/modules/imgproc/test/test_filter.cpp +++ b/modules/imgproc/test/test_filter.cpp @@ -228,7 +228,7 @@ int CV_MorphologyBaseTest::prepare_test_case( int test_case_idx ) if( shape == CV_SHAPE_CUSTOM ) { eldata.resize(aperture_size.width*aperture_size.height); - uchar* src = test_mat[INPUT][1].data; + const uchar* src = test_mat[INPUT][1].data; int srcstep = (int)test_mat[INPUT][1].step; int i, j, nonzero = 0; diff --git a/modules/imgproc/test/test_histograms.cpp b/modules/imgproc/test/test_histograms.cpp index 19ccc656b5..e9db6fcde0 100644 --- a/modules/imgproc/test/test_histograms.cpp +++ b/modules/imgproc/test/test_histograms.cpp @@ -948,7 +948,7 @@ int CV_ThreshHistTest::validate_test_results( int /*test_case_idx*/ ) class CV_CompareHistTest : public CV_BaseHistTest { public: - enum { MAX_METHOD = 5 }; + enum { MAX_METHOD = 6 }; CV_CompareHistTest(); protected: @@ -1021,6 +1021,13 @@ int CV_CompareHistTest::validate_test_results( int /*test_case_idx*/ ) sq0 += v0*v0; sq1 += v1*v1; result0[CV_COMP_BHATTACHARYYA] += sqrt(v0*v1); + { + if( fabs(v0) <= DBL_EPSILON ) + continue; + if( fabs(v1) <= DBL_EPSILON ) + v1 = 1e-10; + result0[CV_COMP_KL_DIV] += v0 * std::log( v0 / v1 ); + } } } else @@ -1046,6 +1053,13 @@ int CV_CompareHistTest::validate_test_results( int /*test_case_idx*/ ) s0 += v0; sq0 += v0*v0; result0[CV_COMP_BHATTACHARYYA] += sqrt(v0*v1); + { + if (v0 <= DBL_EPSILON) + continue; + if (!v1) + v1 = 1e-10; + result0[CV_COMP_KL_DIV] += v0 * std::log( v0 / v1 ); + } } for( node = cvInitSparseMatIterator( sparse1, &iterator ); @@ -1076,7 +1090,8 @@ int CV_CompareHistTest::validate_test_results( int /*test_case_idx*/ ) i == CV_COMP_CHISQR_ALT ? "Alternative Chi-Square" : i == CV_COMP_CORREL ? "Correlation" : i == CV_COMP_INTERSECT ? "Intersection" : - i == CV_COMP_BHATTACHARYYA ? "Bhattacharyya" : "Unknown"; + i == CV_COMP_BHATTACHARYYA ? "Bhattacharyya" : + i == CV_COMP_KL_DIV ? "Kullback-Leibler" : "Unknown"; if( cvIsNaN(v) || cvIsInf(v) ) { diff --git a/modules/imgproc/test/test_imgwarp.cpp b/modules/imgproc/test/test_imgwarp.cpp index b0897483a2..e08020dbed 100644 --- a/modules/imgproc/test/test_imgwarp.cpp +++ b/modules/imgproc/test/test_imgwarp.cpp @@ -344,7 +344,7 @@ static void test_remap( const Mat& src, Mat& dst, const Mat& mapx, const Mat& ma int x, y, k; int drows = dst.rows, dcols = dst.cols; int srows = src.rows, scols = src.cols; - uchar* sptr0 = src.data; + const uchar* sptr0 = src.data; int depth = src.depth(), cn = src.channels(); int elem_size = (int)src.elemSize(); int step = (int)(src.step / CV_ELEM_SIZE(depth)); diff --git a/modules/imgproc/test/test_imgwarp_strict.cpp b/modules/imgproc/test/test_imgwarp_strict.cpp index 034d89014b..02016fb3da 100644 --- a/modules/imgproc/test/test_imgwarp_strict.cpp +++ b/modules/imgproc/test/test_imgwarp_strict.cpp @@ -532,7 +532,7 @@ void CV_Resize_Test::resize_1d(const Mat& _src, Mat& _dst, int dy, const dim& _d ofs = 3, ksize = 8; Mat _extended_src_row(1, _src.cols + ksize * 2, _src.type()); - uchar* srow = _src.data + dy * _src.step; + const uchar* srow = _src.ptr(dy); memcpy(_extended_src_row.data + elemsize * ksize, srow, _src.step); for (int k = 0; k < ksize; ++k) { diff --git a/modules/imgproc/test/test_precomp.hpp b/modules/imgproc/test/test_precomp.hpp index 53f315ee4f..249ec8d629 100644 --- a/modules/imgproc/test/test_precomp.hpp +++ b/modules/imgproc/test/test_precomp.hpp @@ -13,7 +13,7 @@ #include "opencv2/ts.hpp" #include "opencv2/core/private.hpp" #include "opencv2/imgproc.hpp" -#include "opencv2/highgui.hpp" +#include "opencv2/imgcodecs.hpp" #include "opencv2/imgproc/imgproc_c.h" diff --git a/modules/java/CMakeLists.txt b/modules/java/CMakeLists.txt index 1948e21141..6eba205370 100644 --- a/modules/java/CMakeLists.txt +++ b/modules/java/CMakeLists.txt @@ -1,12 +1,14 @@ # ---------------------------------------------------------------------------- # CMake file for java support # ---------------------------------------------------------------------------- -if(IOS OR NOT PYTHON_EXECUTABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7))) +if(IOS OR NOT PYTHON_DEFAULT_AVAILABLE OR NOT ANT_EXECUTABLE OR NOT (JNI_FOUND OR (ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7)) + OR BUILD_opencv_world + ) ocv_module_disable(java) endif() set(the_description "The java bindings") -ocv_add_module(java BINDINGS opencv_core opencv_imgproc OPTIONAL opencv_objdetect opencv_features2d opencv_video opencv_highgui opencv_ml opencv_calib3d opencv_photo opencv_nonfree opencv_contrib) +ocv_add_module(java BINDINGS opencv_core opencv_imgproc OPTIONAL opencv_objdetect opencv_features2d opencv_video opencv_imgcodecs opencv_videoio opencv_calib3d opencv_photo opencv_nonfree opencv_contrib) ocv_module_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/generator/src/cpp") if(NOT ANDROID) @@ -100,7 +102,7 @@ foreach(module ${OPENCV_JAVA_MODULES}) # first run of gen_java.py (to get list of generated files) file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out/") file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out") - execute_process(COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} + execute_process(COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gen_java_out" OUTPUT_QUIET ERROR_QUIET) unset(generated_java_sources_${module}) @@ -124,7 +126,7 @@ set(step1_depends "${scripts_gen_java}" "${scripts_hdr_parser}" ${opencv_public_ foreach(module ${OPENCV_JAVA_MODULES}) # second run of gen_java.py (at build time) add_custom_command(OUTPUT ${generated_java_sources_${module}} "${CMAKE_CURRENT_BINARY_DIR}/${module}.cpp" - COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} "${scripts_gen_java}" "${scripts_hdr_parser}" ${module} ${opencv_public_headers_${module}} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS "${scripts_gen_java}" "${scripts_hdr_parser}" ${opencv_public_headers_${module}} ) @@ -134,7 +136,7 @@ endforeach() set(step2_depends ${step1_depends} ${scripts_gen_javadoc} ${scripts_rst_parser} ${javadoc_rst_sources} ${generated_java_sources} ${handwrittren_java_sources}) string(REPLACE ";" "," OPENCV_JAVA_MODULES_STR "${OPENCV_JAVA_MODULES}") add_custom_command(OUTPUT ${documented_java_files} - COMMAND ${PYTHON_EXECUTABLE} "${scripts_gen_javadoc}" --modules ${OPENCV_JAVA_MODULES_STR} "${CMAKE_CURRENT_SOURCE_DIR}/generator/src/java" "${CMAKE_CURRENT_BINARY_DIR}" 2> "${CMAKE_CURRENT_BINARY_DIR}/get_javadoc_errors.log" + COMMAND ${PYTHON_DEFUALT_EXECUTABLE} "${scripts_gen_javadoc}" --modules ${OPENCV_JAVA_MODULES_STR} "${CMAKE_CURRENT_SOURCE_DIR}/generator/src/java" "${CMAKE_CURRENT_BINARY_DIR}" 2> "${CMAKE_CURRENT_BINARY_DIR}/get_javadoc_errors.log" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${step2_depends} VERBATIM @@ -274,7 +276,7 @@ endif(ANDROID) # workarounding lack of `__attribute__ ((visibility("default")))` in jni_md.h/JNIEXPORT string(REPLACE "-fvisibility=hidden" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -add_library(${the_module} SHARED ${handwrittren_h_sources} ${handwrittren_cpp_sources} ${generated_cpp_sources} +ocv_add_library(${the_module} SHARED ${handwrittren_h_sources} ${handwrittren_cpp_sources} ${generated_cpp_sources} ${copied_files} "${JAR_FILE}" "${JAR_FILE}.dephelper") set_target_properties(${the_module} PROPERTIES COMPILE_DEFINITIONS OPENCV_NOSTL) @@ -295,18 +297,18 @@ if(BUILD_FAT_JAVA_LIB) endif() if(APPLE) foreach(_dep ${__deps}) - target_link_libraries(${the_module} -Wl,-force_load "${_dep}") + ocv_target_link_libraries(${the_module} -Wl,-force_load "${_dep}") endforeach() else() - target_link_libraries(${the_module} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive) + ocv_target_link_libraries(${the_module} -Wl,-whole-archive ${__deps} -Wl,-no-whole-archive) endif() - target_link_libraries(${the_module} ${__extradeps} ${OPENCV_LINKER_LIBS}) + ocv_target_link_libraries(${the_module} ${__extradeps} ${OPENCV_LINKER_LIBS}) else() - target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS}) + ocv_target_link_libraries(${the_module} ${OPENCV_MODULE_${the_module}_DEPS} ${OPENCV_LINKER_LIBS}) endif() if(ANDROID) - target_link_libraries(${the_module} jnigraphics) # for Mat <=> Bitmap converters + ocv_target_link_libraries(${the_module} jnigraphics) # for Mat <=> Bitmap converters # force strip library after the build command # because samples and tests will make a copy of the library before install diff --git a/modules/java/android_test/CMakeLists.txt b/modules/java/android_test/CMakeLists.txt index 41f69e6ca7..a920508899 100644 --- a/modules/java/android_test/CMakeLists.txt +++ b/modules/java/android_test/CMakeLists.txt @@ -59,9 +59,9 @@ add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E add_dependencies(opencv_tests ${PROJECT_NAME}) -if(PYTHON_EXECUTABLE) +if(PYTHON_DEFAULT_AVAILABLE) set(CHECK_TEST_COVERAGE "${OPENCV_MODULE_opencv_java_LOCATION}/check-tests.py") add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${CHECK_TEST_COVERAGE} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${OpenCV_BINARY_DIR}/src" > "${CMAKE_CURRENT_BINARY_DIR}/tests_coverage.log" + COMMAND ${PYTHON_DEFAULT_EXECUTABLE} ${CHECK_TEST_COVERAGE} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${OpenCV_BINARY_DIR}/src" > "${CMAKE_CURRENT_BINARY_DIR}/tests_coverage.log" ) endif() diff --git a/modules/java/android_test/src/org/opencv/test/OpenCVTestCase.java b/modules/java/android_test/src/org/opencv/test/OpenCVTestCase.java index 97cdca783a..78eb738cb5 100644 --- a/modules/java/android_test/src/org/opencv/test/OpenCVTestCase.java +++ b/modules/java/android_test/src/org/opencv/test/OpenCVTestCase.java @@ -21,7 +21,7 @@ import org.opencv.core.Scalar; import org.opencv.core.Size; import org.opencv.core.DMatch; import org.opencv.core.KeyPoint; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; import android.util.Log; @@ -134,8 +134,8 @@ public class OpenCVTestCase extends TestCase { rgba0 = new Mat(matSize, matSize, CvType.CV_8UC4, Scalar.all(0)); rgba128 = new Mat(matSize, matSize, CvType.CV_8UC4, Scalar.all(128)); - rgbLena = Highgui.imread(OpenCVTestRunner.LENA_PATH); - grayChess = Highgui.imread(OpenCVTestRunner.CHESS_PATH, 0); + rgbLena = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH); + grayChess = Imgcodecs.imread(OpenCVTestRunner.CHESS_PATH, 0); v1 = new Mat(1, 3, CvType.CV_32F); v1.put(0, 0, 1.0, 3.0, 2.0); diff --git a/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java b/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java index ac20139104..5494513158 100644 --- a/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java +++ b/modules/java/android_test/src/org/opencv/test/android/UtilsTest.java @@ -5,7 +5,7 @@ import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; import org.opencv.core.Scalar; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestRunner; @@ -57,7 +57,7 @@ public class UtilsTest extends OpenCVTestCase { } public void testMatToBitmap() { - Mat imgBGR = Highgui.imread( OpenCVTestRunner.LENA_PATH ); + Mat imgBGR = Imgcodecs.imread( OpenCVTestRunner.LENA_PATH ); assertTrue(imgBGR != null && !imgBGR.empty() && imgBGR.channels() == 3); Mat m16 = new Mat(imgBGR.rows(), imgBGR.cols(), CvType.CV_8UC4); diff --git a/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java b/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java index 2118b53065..b9e8983fdc 100644 --- a/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java +++ b/modules/java/android_test/src/org/opencv/test/features2d/Features2dTest.java @@ -18,7 +18,7 @@ import org.opencv.features2d.DescriptorMatcher; import org.opencv.features2d.FeatureDetector; import org.opencv.features2d.Features2d; import org.opencv.core.KeyPoint; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestRunner; @@ -93,7 +93,7 @@ public class Features2dTest extends OpenCVTestCase { writeFile(extractorCfgFile, extractorCfg); extractor.read(extractorCfgFile); - Mat imgTrain = Highgui.imread(OpenCVTestRunner.LENA_PATH, Highgui.CV_LOAD_IMAGE_GRAYSCALE); + Mat imgTrain = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH, Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); Mat imgQuery = imgTrain.submat(new Range(0, imgTrain.rows() - 100), Range.all()); MatOfKeyPoint trainKeypoints = new MatOfKeyPoint(); @@ -139,7 +139,7 @@ public class Features2dTest extends OpenCVTestCase { Mat outimg = new Mat(); Features2d.drawMatches(imgQuery, queryKeypoints, imgTrain, trainKeypoints, matches, outimg); String outputPath = OpenCVTestRunner.getOutputFileName("PTODresult.png"); - Highgui.imwrite(outputPath, outimg); + Imgcodecs.imwrite(outputPath, outimg); // OpenCVTestRunner.Log("Output image is saved to: " + outputPath); } } diff --git a/modules/java/android_test/src/org/opencv/test/highgui/HighguiTest.java b/modules/java/android_test/src/org/opencv/test/highgui/HighguiTest.java index b8e7c3b8b2..312462c3a5 100644 --- a/modules/java/android_test/src/org/opencv/test/highgui/HighguiTest.java +++ b/modules/java/android_test/src/org/opencv/test/highgui/HighguiTest.java @@ -2,7 +2,7 @@ package org.opencv.test.highgui; import org.opencv.core.MatOfByte; import org.opencv.core.MatOfInt; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; import org.opencv.test.OpenCVTestCase; import org.opencv.test.OpenCVTestRunner; @@ -15,29 +15,29 @@ public class HighguiTest extends OpenCVTestCase { public void testImencodeStringMatListOfByte() { MatOfByte buff = new MatOfByte(); assertEquals(0, buff.total()); - assertTrue( Highgui.imencode(".jpg", gray127, buff) ); + assertTrue( Imgcodecs.imencode(".jpg", gray127, buff) ); assertFalse(0 == buff.total()); } public void testImencodeStringMatListOfByteListOfInteger() { - MatOfInt params40 = new MatOfInt(Highgui.IMWRITE_JPEG_QUALITY, 40); - MatOfInt params90 = new MatOfInt(Highgui.IMWRITE_JPEG_QUALITY, 90); + MatOfInt params40 = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY, 40); + MatOfInt params90 = new MatOfInt(Imgcodecs.IMWRITE_JPEG_QUALITY, 90); /* or MatOfInt params = new MatOfInt(); - params.fromArray(Highgui.IMWRITE_JPEG_QUALITY, 40); + params.fromArray(Imgcodecs.IMWRITE_JPEG_QUALITY, 40); */ MatOfByte buff40 = new MatOfByte(); MatOfByte buff90 = new MatOfByte(); - assertTrue( Highgui.imencode(".jpg", rgbLena, buff40, params40) ); - assertTrue( Highgui.imencode(".jpg", rgbLena, buff90, params90) ); + assertTrue( Imgcodecs.imencode(".jpg", rgbLena, buff40, params40) ); + assertTrue( Imgcodecs.imencode(".jpg", rgbLena, buff90, params90) ); assertTrue(buff40.total() > 0); assertTrue(buff40.total() < buff90.total()); } public void testImreadString() { - dst = Highgui.imread(OpenCVTestRunner.LENA_PATH); + dst = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH); assertTrue(!dst.empty()); assertEquals(3, dst.channels()); assertTrue(512 == dst.cols()); @@ -45,7 +45,7 @@ public class HighguiTest extends OpenCVTestCase { } public void testImreadStringInt() { - dst = Highgui.imread(OpenCVTestRunner.LENA_PATH, 0); + dst = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH, 0); assertTrue(!dst.empty()); assertEquals(1, dst.channels()); assertTrue(512 == dst.cols()); diff --git a/modules/java/android_test/src/org/opencv/test/highgui/VideoCaptureTest.java b/modules/java/android_test/src/org/opencv/test/highgui/VideoCaptureTest.java index ec7211a294..f4cccdf5ce 100644 --- a/modules/java/android_test/src/org/opencv/test/highgui/VideoCaptureTest.java +++ b/modules/java/android_test/src/org/opencv/test/highgui/VideoCaptureTest.java @@ -3,8 +3,8 @@ package org.opencv.test.highgui; import java.util.List; import org.opencv.core.Size; -import org.opencv.highgui.Highgui; -import org.opencv.highgui.VideoCapture; +import org.opencv.videoio.Videoio; +import org.opencv.videoio.VideoCapture; import org.opencv.test.OpenCVTestCase; @@ -26,8 +26,8 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testGet() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); - double frameWidth = capture.get(Highgui.CV_CAP_PROP_FRAME_WIDTH); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); + double frameWidth = capture.get(Videoio.CV_CAP_PROP_FRAME_WIDTH); assertTrue(0 != frameWidth); } finally { if (capture != null) capture.release(); @@ -36,7 +36,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testGetSupportedPreviewSizes() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); List sizes = capture.getSupportedPreviewSizes(); assertNotNull(sizes); assertFalse(sizes.isEmpty()); @@ -53,7 +53,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testGrabFromRealCamera() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); isSucceed = capture.grab(); assertTrue(isSucceed); } finally { @@ -68,7 +68,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testIsOpenedRealCamera() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); isOpened = capture.isOpened(); assertTrue(isOpened); } finally { @@ -79,7 +79,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testOpen() { try { capture = new VideoCapture(); - capture.open(Highgui.CV_CAP_ANDROID); + capture.open(Videoio.CV_CAP_ANDROID); isOpened = capture.isOpened(); assertTrue(isOpened); } finally { @@ -89,7 +89,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testRead() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); isSucceed = capture.read(dst); assertTrue(isSucceed); assertFalse(dst.empty()); @@ -101,7 +101,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testRelease() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); capture.release(); assertFalse(capture.isOpened()); capture = null; @@ -112,7 +112,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testRetrieveMat() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); capture.grab(); isSucceed = capture.retrieve(dst); assertTrue(isSucceed); @@ -125,9 +125,9 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testRetrieveMatInt() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); capture.grab(); - isSucceed = capture.retrieve(dst, Highgui.CV_CAP_ANDROID_GREY_FRAME); + isSucceed = capture.retrieve(dst, Videoio.CV_CAP_ANDROID_GREY_FRAME); assertTrue(isSucceed); assertFalse(dst.empty()); assertEquals(1, dst.channels()); @@ -138,10 +138,10 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testSet() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); - capture.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, 640); - capture.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, 480); - double frameWidth = capture.get(Highgui.CV_CAP_PROP_FRAME_WIDTH); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); + capture.set(Videoio.CV_CAP_PROP_FRAME_WIDTH, 640); + capture.set(Videoio.CV_CAP_PROP_FRAME_HEIGHT, 480); + double frameWidth = capture.get(Videoio.CV_CAP_PROP_FRAME_WIDTH); capture.read(dst); assertEquals(640.0, frameWidth); assertEquals(640, dst.cols()); @@ -158,7 +158,7 @@ public class VideoCaptureTest extends OpenCVTestCase { public void testVideoCaptureInt() { try { - capture = new VideoCapture(Highgui.CV_CAP_ANDROID); + capture = new VideoCapture(Videoio.CV_CAP_ANDROID); assertNotNull(capture); assertTrue(capture.isOpened()); } finally { diff --git a/modules/matlab/generator/templates/__init__.py b/modules/java/generator/config/ml.filelist similarity index 100% rename from modules/matlab/generator/templates/__init__.py rename to modules/java/generator/config/ml.filelist diff --git a/modules/java/generator/gen_java.py b/modules/java/generator/gen_java.py index cce2708284..0f317d5248 100755 --- a/modules/java/generator/gen_java.py +++ b/modules/java/generator/gen_java.py @@ -11,7 +11,7 @@ except: class_ignore_list = ( #core "FileNode", "FileStorage", "KDTree", "KeyPoint", "DMatch", - #highgui + #videoio "VideoWriter", ) @@ -536,13 +536,13 @@ JNIEXPORT jdoubleArray JNICALL Java_org_opencv_core_Core_n_1getTextSize """\n private static native String getSupportedPreviewSizes_0(long nativeObj);\n""", 'cpp_code' : """ -JNIEXPORT jstring JNICALL Java_org_opencv_highgui_VideoCapture_getSupportedPreviewSizes_10 +JNIEXPORT jstring JNICALL Java_org_opencv_videoio_VideoCapture_getSupportedPreviewSizes_10 (JNIEnv *env, jclass, jlong self); -JNIEXPORT jstring JNICALL Java_org_opencv_highgui_VideoCapture_getSupportedPreviewSizes_10 +JNIEXPORT jstring JNICALL Java_org_opencv_videoio_VideoCapture_getSupportedPreviewSizes_10 (JNIEnv *env, jclass, jlong self) { - static const char method_name[] = "highgui::VideoCapture_getSupportedPreviewSizes_10()"; + static const char method_name[] = "videoio::VideoCapture_getSupportedPreviewSizes_10()"; try { LOGD("%s", method_name); VideoCapture* me = (VideoCapture*) self; //TODO: check for NULL diff --git a/modules/java/generator/rst_parser.py b/modules/java/generator/rst_parser.py index 750d6f0be8..dba9fe3fa0 100755 --- a/modules/java/generator/rst_parser.py +++ b/modules/java/generator/rst_parser.py @@ -2,7 +2,7 @@ from __future__ import print_function import os, sys, re, string, fnmatch -allmodules = ["core", "flann", "imgproc", "ml", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "nonfree", "videostab", "softcascade", "superres"] +allmodules = ["core", "flann", "imgproc", "imgcodecs", "videoio", "highgui", "video", "features2d", "calib3d", "objdetect", "legacy", "contrib", "cuda", "androidcamera", "java", "python", "stitching", "ts", "photo", "videostab", "softcascade", "superres"] verbose = False show_warnings = True show_errors = True @@ -12,7 +12,6 @@ params_blacklist = { "fromarray" : ("object", "allowND"), # python only function "reprojectImageTo3D" : ("ddepth"), # python only argument "composeRT" : ("d*d*"), # wildchards in parameter names are not supported by this parser - "CvSVM::train_auto" : ("\\*Grid"), # wildchards in parameter names are not supported by this parser "error" : "args", # parameter of supporting macro "getConvertElem" : ("from", "cn", "to", "beta", "alpha"), # arguments of returned functions "gpu::swapChannels" : ("dstOrder") # parameter is not parsed correctly by the hdr_parser diff --git a/modules/java/generator/src/cpp/features2d_manual.hpp b/modules/java/generator/src/cpp/features2d_manual.hpp index 603f8b2a0b..90a16117b5 100644 --- a/modules/java/generator/src/cpp/features2d_manual.hpp +++ b/modules/java/generator/src/cpp/features2d_manual.hpp @@ -390,124 +390,6 @@ private: Ptr wrapped; }; -class CV_EXPORTS_AS(GenericDescriptorMatcher) javaGenericDescriptorMatcher -{ -public: - CV_WRAP void add( const std::vector& images, - std::vector >& keypoints ) - { return wrapped->add(images, keypoints); } - - CV_WRAP const std::vector& getTrainImages() const - { return wrapped->getTrainImages(); } - - CV_WRAP const std::vector >& getTrainKeypoints() const - { return wrapped->getTrainKeypoints(); } - - CV_WRAP void clear() - { return wrapped->clear(); } - - CV_WRAP bool isMaskSupported() - { return wrapped->isMaskSupported(); } - - CV_WRAP void train() - { return wrapped->train(); } - - CV_WRAP void classify( const Mat& queryImage, CV_IN_OUT std::vector& queryKeypoints, - const Mat& trainImage, std::vector& trainKeypoints ) const - { return wrapped->classify(queryImage, queryKeypoints, trainImage, trainKeypoints); } - - CV_WRAP void classify( const Mat& queryImage, CV_IN_OUT std::vector& queryKeypoints ) - { return wrapped->classify(queryImage, queryKeypoints); } - - CV_WRAP void match( const Mat& queryImage, std::vector& queryKeypoints, - const Mat& trainImage, std::vector& trainKeypoints, - CV_OUT std::vector& matches, const Mat& mask=Mat() ) const - { return wrapped->match(queryImage, queryKeypoints, trainImage, trainKeypoints, matches, mask); } - - CV_WRAP void knnMatch( const Mat& queryImage, std::vector& queryKeypoints, - const Mat& trainImage, std::vector& trainKeypoints, - CV_OUT std::vector >& matches, int k, - const Mat& mask=Mat(), bool compactResult=false ) const - { return wrapped->knnMatch(queryImage, queryKeypoints, trainImage, trainKeypoints, - matches, k, mask, compactResult); } - - CV_WRAP void radiusMatch( const Mat& queryImage, std::vector& queryKeypoints, - const Mat& trainImage, std::vector& trainKeypoints, - CV_OUT std::vector >& matches, float maxDistance, - const Mat& mask=Mat(), bool compactResult=false ) const - { return wrapped->radiusMatch(queryImage, queryKeypoints, trainImage, trainKeypoints, - matches, maxDistance, mask, compactResult); } - - CV_WRAP void match( const Mat& queryImage, std::vector& queryKeypoints, - CV_OUT std::vector& matches, const std::vector& masks=std::vector() ) - { return wrapped->match(queryImage, queryKeypoints, matches, masks); } - - CV_WRAP void knnMatch( const Mat& queryImage, std::vector& queryKeypoints, - CV_OUT std::vector >& matches, int k, - const std::vector& masks=std::vector(), bool compactResult=false ) - { return wrapped->knnMatch(queryImage, queryKeypoints, matches, k, masks, compactResult); } - - CV_WRAP void radiusMatch( const Mat& queryImage, std::vector& queryKeypoints, - CV_OUT std::vector >& matches, float maxDistance, - const std::vector& masks=std::vector(), bool compactResult=false ) - { return wrapped->radiusMatch(queryImage, queryKeypoints, matches, maxDistance, masks, compactResult); } - - CV_WRAP bool empty() const - { return wrapped->empty(); } - - - enum - { - ONEWAY = 1, - FERN = 2 - }; - - CV_WRAP_AS(clone) javaGenericDescriptorMatcher* jclone( bool emptyTrainData=false ) const - { - return new javaGenericDescriptorMatcher(wrapped->clone(emptyTrainData)); - } - - //supported: OneWay, Fern - //unsupported: Vector - CV_WRAP static javaGenericDescriptorMatcher* create( int matcherType ) - { - String name; - - switch(matcherType) - { - case ONEWAY: - name = "ONEWAY"; - break; - case FERN: - name = "FERN"; - break; - default: - CV_Error( Error::StsBadArg, "Specified generic descriptor matcher type is not supported." ); - break; - } - - return new javaGenericDescriptorMatcher(GenericDescriptorMatcher::create(name)); - } - - CV_WRAP void write( const String& fileName ) const - { - FileStorage fs(fileName, FileStorage::WRITE); - wrapped->write(fs); - } - - CV_WRAP void read( const String& fileName ) - { - FileStorage fs(fileName, FileStorage::READ); - wrapped->read(fs.root()); - } - -private: - javaGenericDescriptorMatcher(Ptr _wrapped) : wrapped(_wrapped) - {} - - Ptr wrapped; -}; - #if 0 //DO NOT REMOVE! The block is required for sources parser enum diff --git a/modules/java/generator/src/cpp/jni_part.cpp b/modules/java/generator/src/cpp/jni_part.cpp index ccd870cdf9..c8475d0e8f 100644 --- a/modules/java/generator/src/cpp/jni_part.cpp +++ b/modules/java/generator/src/cpp/jni_part.cpp @@ -2,10 +2,6 @@ #include "opencv2/opencv_modules.hpp" -#ifdef HAVE_OPENCV_NONFREE -# include "opencv2/nonfree.hpp" -#endif - #ifdef HAVE_OPENCV_FEATURES2D # include "opencv2/features2d.hpp" #endif @@ -14,10 +10,6 @@ # include "opencv2/video.hpp" #endif -#ifdef HAVE_OPENCV_ML -# include "opencv2/ml.hpp" -#endif - #ifdef HAVE_OPENCV_CONTRIB # include "opencv2/contrib.hpp" #endif @@ -32,19 +24,13 @@ JNI_OnLoad(JavaVM* vm, void* ) return -1; bool init = true; -#ifdef HAVE_OPENCV_NONFREE - init &= cv::initModule_nonfree(); -#endif #ifdef HAVE_OPENCV_FEATURES2D init &= cv::initModule_features2d(); #endif #ifdef HAVE_OPENCV_VIDEO init &= cv::initModule_video(); #endif -#ifdef HAVE_OPENCV_ML - init &= cv::initModule_ml(); -#endif - #ifdef HAVE_OPENCV_CONTRIB +#ifdef HAVE_OPENCV_CONTRIB init &= cv::initModule_contrib(); #endif diff --git a/modules/java/generator/src/java/android+CameraBridgeViewBase.java b/modules/java/generator/src/java/android+CameraBridgeViewBase.java index c0c9f5bde7..67a7489cfd 100644 --- a/modules/java/generator/src/java/android+CameraBridgeViewBase.java +++ b/modules/java/generator/src/java/android+CameraBridgeViewBase.java @@ -6,7 +6,7 @@ import org.opencv.R; import org.opencv.android.Utils; import org.opencv.core.Mat; import org.opencv.core.Size; -import org.opencv.highgui.Highgui; +import org.opencv.videoio.Videoio; import android.app.Activity; import android.app.AlertDialog; @@ -46,7 +46,7 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac protected int mMaxHeight; protected int mMaxWidth; protected float mScale = 0; - protected int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA; + protected int mPreviewFormat = Videoio.CV_CAP_ANDROID_COLOR_FRAME_RGBA; protected int mCameraIndex = CAMERA_ID_ANY; protected boolean mEnabled; protected FpsMeter mFpsMeter = null; @@ -151,10 +151,10 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac public Mat onCameraFrame(CvCameraViewFrame inputFrame) { Mat result = null; switch (mPreviewFormat) { - case Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA: + case Videoio.CV_CAP_ANDROID_COLOR_FRAME_RGBA: result = mOldStyleListener.onCameraFrame(inputFrame.rgba()); break; - case Highgui.CV_CAP_ANDROID_GREY_FRAME: + case Videoio.CV_CAP_ANDROID_GREY_FRAME: result = mOldStyleListener.onCameraFrame(inputFrame.gray()); break; default: @@ -168,7 +168,7 @@ public abstract class CameraBridgeViewBase extends SurfaceView implements Surfac mPreviewFormat = format; } - private int mPreviewFormat = Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA; + private int mPreviewFormat = Videoio.CV_CAP_ANDROID_COLOR_FRAME_RGBA; private CvCameraViewListener mOldStyleListener; }; diff --git a/modules/java/generator/src/java/android+NativeCameraView.java b/modules/java/generator/src/java/android+NativeCameraView.java index db146d8aed..47d6a27c23 100644 --- a/modules/java/generator/src/java/android+NativeCameraView.java +++ b/modules/java/generator/src/java/android+NativeCameraView.java @@ -2,8 +2,8 @@ package org.opencv.android; import org.opencv.core.Mat; import org.opencv.core.Size; -import org.opencv.highgui.Highgui; -import org.opencv.highgui.VideoCapture; +import org.opencv.videoio.Videoio; +import org.opencv.videoio.VideoCapture; import android.content.Context; import android.util.AttributeSet; @@ -88,9 +88,9 @@ public class NativeCameraView extends CameraBridgeViewBase { synchronized (this) { if (mCameraIndex == -1) - mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID); + mCamera = new VideoCapture(Videoio.CV_CAP_ANDROID); else - mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID + mCameraIndex); + mCamera = new VideoCapture(Videoio.CV_CAP_ANDROID + mCameraIndex); if (mCamera == null) return false; @@ -119,8 +119,8 @@ public class NativeCameraView extends CameraBridgeViewBase { AllocateCache(); - mCamera.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, frameSize.width); - mCamera.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, frameSize.height); + mCamera.set(Videoio.CV_CAP_PROP_FRAME_WIDTH, frameSize.width); + mCamera.set(Videoio.CV_CAP_PROP_FRAME_HEIGHT, frameSize.height); } Log.i(TAG, "Selected camera frame size = (" + mFrameWidth + ", " + mFrameHeight + ")"); @@ -139,13 +139,13 @@ public class NativeCameraView extends CameraBridgeViewBase { @Override public Mat rgba() { - mCapture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA); + mCapture.retrieve(mRgba, Videoio.CV_CAP_ANDROID_COLOR_FRAME_RGBA); return mRgba; } @Override public Mat gray() { - mCapture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME); + mCapture.retrieve(mGray, Videoio.CV_CAP_ANDROID_GREY_FRAME); return mGray; } diff --git a/modules/java/generator/src/java/android+Utils.java b/modules/java/generator/src/java/android+Utils.java index 9c461087c4..404c986da8 100644 --- a/modules/java/generator/src/java/android+Utils.java +++ b/modules/java/generator/src/java/android+Utils.java @@ -6,7 +6,7 @@ import android.graphics.Bitmap; import org.opencv.core.CvException; import org.opencv.core.CvType; import org.opencv.core.Mat; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; import java.io.ByteArrayOutputStream; import java.io.File; @@ -67,7 +67,7 @@ public class Utils { encoded.put(0, 0, os.toByteArray()); os.close(); - Mat decoded = Highgui.imdecode(encoded, flags); + Mat decoded = Imgcodecs.imdecode(encoded, flags); encoded.release(); return decoded; diff --git a/modules/java/test/src/org/opencv/test/OpenCVTestCase.java b/modules/java/test/src/org/opencv/test/OpenCVTestCase.java index 496f96242b..864c17ef14 100644 --- a/modules/java/test/src/org/opencv/test/OpenCVTestCase.java +++ b/modules/java/test/src/org/opencv/test/OpenCVTestCase.java @@ -25,7 +25,7 @@ import org.opencv.core.Scalar; import org.opencv.core.Size; import org.opencv.core.DMatch; import org.opencv.core.KeyPoint; -import org.opencv.highgui.Highgui; +import org.opencv.imgcodecs.Imgcodecs; public class OpenCVTestCase extends TestCase { //change to 'true' to unblock fail on fail("Not yet implemented") @@ -164,8 +164,8 @@ public class OpenCVTestCase extends TestCase { rgba0 = new Mat(matSize, matSize, CvType.CV_8UC4, Scalar.all(0)); rgba128 = new Mat(matSize, matSize, CvType.CV_8UC4, Scalar.all(128)); - rgbLena = Highgui.imread(OpenCVTestRunner.LENA_PATH); - grayChess = Highgui.imread(OpenCVTestRunner.CHESS_PATH, 0); + rgbLena = Imgcodecs.imread(OpenCVTestRunner.LENA_PATH); + grayChess = Imgcodecs.imread(OpenCVTestRunner.CHESS_PATH, 0); v1 = new Mat(1, 3, CvType.CV_32F); v1.put(0, 0, 1.0, 3.0, 2.0); diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt deleted file mode 100644 index a4c1c3b164..0000000000 --- a/modules/matlab/CMakeLists.txt +++ /dev/null @@ -1,311 +0,0 @@ -# ---------------------------------------------------------------------------- -# CMake file for Matlab/Octave support -# -# Matlab code generation and compilation is broken down into two distinct -# stages: configure time and build time. The idea is that we want to give -# the user reasonable guarantees that once they type 'make', wrapper -# generation is unlikely to fail. Therefore we run a series of tests at -# configure time to check the working status of the core components. -# -# Configure Time -# During configure time, the script attempts to ascertain whether the -# generator and mex compiler are working for a given architecture. -# Currently this involves: -# 1) Generating a simple CV_EXPORTS_W symbol and checking whether a file -# of the symbol name is generated -# 2) Compiling a simple mex gateway to check that Bridge.hpp and mex.h -# can be found, and that a file with the mexext is produced -# -# Build Time -# If the configure time tests pass, then we assume Matlab wrapper generation -# will not fail during build time. We simply glob all of the symbols in -# the OpenCV module headers, generate intermediate .cpp files, then compile -# them with mex. -# ---------------------------------------------------------------------------- - -# PREPEND -# Given a list of strings IN and a TOKEN, prepend the token to each string -# and append to OUT. This is used for passing command line "-I", "-L" and "-l" -# arguments to mex. e.g. -# prepend("-I" OUT /path/to/include/dir) --> -I/path/to/include/dir -macro(PREPEND TOKEN OUT IN) - foreach(VAR ${IN} ${ARGN}) - list(APPEND ${OUT} "${TOKEN}${VAR}") - endforeach() -endmacro() - - -# WARN_MIXED_PRECISION -# Formats a warning message if the compiler and Matlab bitness is different -macro(WARN_MIXED_PRECISION COMPILER_BITNESS MATLAB_BITNESS) - set(MSG "Your compiler is ${COMPILER_BITNESS}-bit") - set(MSG "${MSG} but your version of Matlab is ${MATLAB_BITNESS}-bit.") - set(MSG "${MSG} To build Matlab bindings, please switch to a ${MATLAB_BITNESS}-bit compiler.") - message(WARNING ${MSG}) -endmacro() - -# ---------------------------------------------------------------------------- -# Architecture checks -# ---------------------------------------------------------------------------- -# make sure we're on a supported architecture with Matlab and python installed -if (IOS OR ANDROID OR NOT MATLAB_FOUND) - ocv_module_disable(matlab) - return() -elseif (NOT PYTHONLIBS_FOUND) - message(WARNING "A required dependency of the matlab module (PythonLibs) was not found. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() -endif() - - -# If the user built OpenCV as X-bit, but they have a Y-bit version of Matlab, -# attempting to link to OpenCV during binding generation will fail, since -# mixed precision pointers are not allowed. Disable the bindings. -math(EXPR ARCH "${CMAKE_SIZEOF_VOID_P} * 8") -if (${ARCH} EQUAL 32 AND ${MATLAB_ARCH} MATCHES "64") - warn_mixed_precision("32" "64") - ocv_module_disable(matlab) - return() -elseif (${ARCH} EQUAL 64 AND NOT ${MATLAB_ARCH} MATCHES "64") - warn_mixed_precision("64" "32") - ocv_module_disable(matlab) - return() -endif() - -# If it's MSVC, warn the user that bindings will only be built in Release mode. -# Debug mode seems to cause issues... -if (MSVC) - message(STATUS "Warning: Matlab bindings will only be built in Release configurations") -endif() - - -# ---------------------------------------------------------------------------- -# Configure time components -# ---------------------------------------------------------------------------- -set(the_description "The Matlab/Octave bindings") -ocv_add_module(matlab BINDINGS - OPTIONAL opencv_core - opencv_imgproc opencv_ml opencv_highgui - opencv_objdetect opencv_flann opencv_features2d - opencv_photo opencv_video opencv_videostab - opencv_calib opencv_calib3d - opencv_stitching opencv_superres - opencv_nonfree -) - -# get the commit information -execute_process(COMMAND git log -1 --pretty=%H OUTPUT_VARIABLE GIT_COMMIT ERROR_QUIET) -string(REGEX REPLACE "(\r?\n)+$" "" GIT_COMMIT "${GIT_COMMIT}") - -# set the path to the C++ header and doc parser, and template engine -set(JINJA2_PATH ${CMAKE_SOURCE_DIR}/3rdparty) -set(HDR_PARSER_PATH ${CMAKE_SOURCE_DIR}/modules/python/src2) -set(RST_PARSER_PATH ${CMAKE_SOURCE_DIR}/modules/java/generator) - -# set mex compiler options -prepend("-I" MEX_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) -if (MSVC) - prepend("-L" MEX_LIB_DIR ${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) -else() - prepend("-L" MEX_LIB_DIR ${LIBRARY_OUTPUT_PATH}) -endif() -set(MEX_OPTS "-largeArrayDims") - -if (BUILD_TESTS) - add_subdirectory(test) -endif() -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) - - -# intersection of available modules and optional dependencies -# 1. populate the command-line include directories (-I/path/to/module/header, ...) -# 2. populate the command-line link libraries (-lopencv_core, ...) for Debug and Release -set(MATLAB_DEPS ${OPENCV_MODULE_${the_module}_REQ_DEPS} ${OPENCV_MODULE_${the_module}_OPT_DEPS}) -foreach(opencv_module ${MATLAB_DEPS}) - if (HAVE_${opencv_module}) - string(REPLACE "opencv_" "" module ${opencv_module}) - list(APPEND opencv_modules ${module}) - list(APPEND ${the_module}_ACTUAL_DEPS ${opencv_module}) - prepend("-I" MEX_INCLUDE_DIRS "${OPENCV_MODULE_${opencv_module}_LOCATION}/include") - prepend("-l" MEX_LIBS ${opencv_module}${OPENCV_DLLVERSION}) - prepend("-l" MEX_DEBUG_LIBS ${opencv_module}${OPENCV_DLLVERSION}${OPENCV_DEBUG_POSTFIX}) - endif() -endforeach() - -# add extra headers by hand -list(APPEND opencv_extra_hdrs "core=${OPENCV_MODULE_opencv_core_LOCATION}/include/opencv2/core/base.hpp") -list(APPEND opencv_extra_hdrs "video=${OPENCV_MODULE_opencv_video_LOCATION}/include/opencv2/video/tracking.hpp") - -# pass the OPENCV_CXX_EXTRA_FLAGS through to the mex compiler -# remove the visibility modifiers, so the mex gateway is visible -# TODO: get mex working without warnings -string(REGEX REPLACE "[^\ ]*visibility[^\ ]*" "" MEX_CXXFLAGS "${OPENCV_EXTRA_FLAGS} ${OPENCV_EXTRA_CXX_FLAGS}") - -# Configure checks -# Check to see whether the generator and the mex compiler are working. -# The checks currently test: -# - whether the python generator can be found -# - whether the python generator correctly outputs a file for a definition -# - whether the mex compiler can find the required headers -# - whether the mex compiler can compile a trivial definition -if (NOT MEX_WORKS) - # attempt to generate a gateway for a function - message(STATUS "Trying to generate Matlab code") - execute_process( - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py - --jinja2 ${JINJA2_PATH} - --hdrparser ${HDR_PARSER_PATH} - --rstparser ${RST_PARSER_PATH} - --extra "test=${CMAKE_CURRENT_SOURCE_DIR}/test/test_generator.hpp" - --outdir ${CMAKE_BINARY_DIR}/junk - ERROR_VARIABLE GEN_ERROR - OUTPUT_QUIET - ) - - if (GEN_ERROR) - message(${GEN_ERROR}) - message(STATUS "Error generating Matlab code. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() - else() - message(STATUS "Trying to generate Matlab code - OK") - endif() - - # attempt to compile a gateway using mex - message(STATUS "Trying to compile mex file") - execute_process( - COMMAND ${MATLAB_MEX_SCRIPT} ${MEX_OPTS} "CXXFLAGS=\$CXXFLAGS ${MEX_CXX_FLAGS}" - ${MEX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/test/test_compiler.cpp - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/junk - ERROR_VARIABLE MEX_ERROR - OUTPUT_QUIET - ) - - if (MEX_ERROR) - message(${MEX_ERROR}) - message(STATUS "Error compiling mex file. Disabling Matlab bindings...") - ocv_module_disable(matlab) - return() - else() - message(STATUS "Trying to compile mex file - OK") - endif() -endif() - -# if we make it here, mex works! -set(MEX_WORKS True CACHE BOOL ADVANCED) - - -# ---------------------------------------------------------------------------- -# Build time components -# ---------------------------------------------------------------------------- - -# proxies -# these proxies are used to trigger the add_custom_commands -# (which do the real work) only when they're outdated -set(GENERATE_PROXY ${CMAKE_CURRENT_BINARY_DIR}/generate.proxy) -set(COMPILE_PROXY ${CMAKE_CURRENT_BINARY_DIR}/compile.proxy) -# TODO: Remove following line before merging with master -file(REMOVE ${GENERATE_PROXY} ${COMPILE_PROXY}) - -# generate -# call the python executable to generate the Matlab gateways -add_custom_command( - OUTPUT ${GENERATE_PROXY} - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py - --jinja2 ${JINJA2_PATH} - --hdrparser ${HDR_PARSER_PATH} - --rstparser ${RST_PARSER_PATH} - --moduleroot ${CMAKE_SOURCE_DIR}/modules - --modules ${opencv_modules} - --extra ${opencv_extra_hdrs} - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/build_info.py - --jinja2 ${JINJA2_PATH} - --os ${CMAKE_SYSTEM} - --arch ${ARCH} ${CMAKE_SYSTEM_PROCESSOR} - --compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION} - --mex_arch ${MATLAB_ARCH} - --mex_script ${MATLAB_MEX_SCRIPT} - --cxx_flags ${MEX_CXXFLAGS} - --opencv_version ${OPENCV_VERSION} - --commit ${GIT_COMMIT} - --modules ${opencv_modules} - --configuration $ - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py - --jinja2 ${JINJA2_PATH} - --opts="${MEX_OPTS}" - --include_dirs="${MEX_INCLUDE_DIRS}" - --lib_dir="${MEX_LIB_DIR}" - --libs="${MEX_LIBS}" - --flags ${MEX_CXXFLAGS} - --outdir ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/test/help.m ${CMAKE_CURRENT_BINARY_DIR}/+cv - COMMAND ${CMAKE_COMMAND} -E touch ${GENERATE_PROXY} - COMMENT "Generating Matlab source files" -) - -# compile -# call the mex compiler to compile the gateways -# because we don't know the source files at configure-time, this -# has to be executed in a separate script in cmake's script processing mode -add_custom_command( - OUTPUT ${COMPILE_PROXY} - COMMAND ${CMAKE_COMMAND} -DMATLAB_MEX_SCRIPT=${MATLAB_MEX_SCRIPT} - -DMATLAB_MEXEXT=${MATLAB_MEXEXT} - -DMEX_OPTS=${MEX_OPTS} - -DMEX_CXXFLAGS=${MEX_CXX_FLAGS} - -DMEX_INCLUDE_DIRS="${MEX_INCLUDE_DIRS}" - -DMEX_LIB_DIR="${MEX_LIB_DIR}" - -DCONFIGURATION="$" - -DMEX_LIBS="${MEX_LIBS}" - -DMEX_DEBUG_LIBS="${MEX_DEBUG_LIBS}" - -P ${CMAKE_CURRENT_SOURCE_DIR}/compile.cmake - COMMAND ${CMAKE_COMMAND} -E touch ${COMPILE_PROXY} - COMMENT "Compiling Matlab source files. This could take a while..." -) - -# targets -# opencv_matlab_sources --> opencv_matlab -add_custom_target(${the_module}_sources ALL DEPENDS ${GENERATE_PROXY}) -add_custom_target(${the_module} ALL DEPENDS ${COMPILE_PROXY}) -add_dependencies(${the_module} ${the_module}_sources ${${the_module}_ACTUAL_DEPS}) - -if (ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_module} PROPERTIES FOLDER "modules") -endif() - - -# ---------------------------------------------------------------------------- -# Install time components -# ---------------------------------------------------------------------------- -# NOTE: Trailing slashes on the DIRECTORY paths are important! -# TODO: What needs to be done with rpath???? - -# install the +cv directory verbatim -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}) -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/+cv/ DESTINATION matlab/+cv) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cv.m DESTINATION matlab) - -# update the custom mex compiler to point to the install locations -string(REPLACE ";" "\\ " MEX_OPTS "${MEX_OPTS}") -string(REPLACE ";" "\\ " MEX_LIBS "${MEX_LIBS}") -string(REPLACE " " "\\ " MEX_CXXFLAGS ${MEX_CXXFLAGS}) -string(REPLACE ";" "\\ " MEX_INCLUDE_DIRS "${MEX_INCLUDE_DIRS}") -install(CODE - "execute_process( - COMMAND ${PYTHON_EXECUTABLE} - ${CMAKE_CURRENT_SOURCE_DIR}/generator/cvmex.py - --jinja2 ${JINJA2_PATH} - --opts=${MEX_OPTS} - --include_dirs=-I${CMAKE_INSTALL_PREFIX}/${OPENCV_INCLUDE_INSTALL_PATH} - --lib_dir=-L${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH} - --libs=${MEX_LIBS} - --flags=${MEX_CXXFLAGS} - --outdir ${CMAKE_INSTALL_PREFIX}/matlab - )" -) diff --git a/modules/matlab/LICENSE b/modules/matlab/LICENSE deleted file mode 100644 index 391cbd37cb..0000000000 --- a/modules/matlab/LICENSE +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//////////////////////////////////////////////////////////////////////////////// diff --git a/modules/matlab/README.md b/modules/matlab/README.md deleted file mode 100644 index 42237eccf8..0000000000 --- a/modules/matlab/README.md +++ /dev/null @@ -1,394 +0,0 @@ -OpenCV Matlab Code Generator -============================ -This module contains a code generator to automatically produce Matlab mex wrappers for other modules within the OpenCV library. Once compiled and added to the Matlab path, this gives users the ability to call OpenCV methods natively from within Matlab. - - -Build ------ -The Matlab code generator is fully integrated into the OpenCV build system. If cmake finds a Matlab installation available on the host system while configuring OpenCV, it will attempt to generate Matlab wrappers for all OpenCV modules. If cmake is having trouble finding your Matlab installation, you can explicitly point it to the root by defining the `MATLAB_ROOT_DIR` variable. For example, on a Mac you could type: - - cmake -DMATLAB_ROOT_DIR=/Applications/MATLAB_R2013a.app .. - - -Install -------- -In order to use the bindings, you will need to add them to the Matlab path. The path to add is: - -1. `${CMAKE_BUILD_DIR}/modules/matlab` if you are working from the build tree, or -2. `${CMAKE_INSTALL_PREFIX}/matlab` if you have installed OpenCV - -In Matlab, simply run: - - addpath('/path/to/opencv/matlab/'); - - -Run ---- -Once you've added the bindings directory to the Matlab path, you can start using them straight away! OpenCV calls need to be prefixed with a 'cv' qualifier, to disambiguate them from Matlab methods of the same name. For example, to compute the dft of a matrix, you might do the following: - -```matlab -% load an image (Matlab) -I = imread('cameraman.tif'); - -% compute the DFT (OpenCV) -If = cv.dft(I, cv.DFT_COMPLEX_OUTPUT); -``` - -As you can see, both OpenCV methods and constants can be used with 'cv' qualification. You can also call: - - help cv.dft - -to get help on the purpose and call signature of a particular method, or - - help cv - -to get general help regarding the OpenCV bindings. If you ever run into issues with the bindings - - cv.buildInformation(); - -will produce a printout of diagnostic information pertaining to your particular build of OS, OpenCV and Matlab. It is useful to submit this information alongside a bug report to the OpenCV team. - -Writing your own mex files --------------------------- -The Matlab bindings come with a set of utilities to help you quickly write your own mex files using OpenCV definitions. By doing so, you have all the speed and freedom of C++, with the power of OpenCV's math expressions and optimizations. - -The first thing you need to learn how to do is write a mex-file with Matlab constructs. Following is a brief example: - -```cpp -// include useful constructs -// this automatically includes opencv core.hpp and mex.h) -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -// define the mex gateway -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // claim the inputs into scoped management - MxArrayVector raw(prhs, prhs+nrhs); - - // add an argument parser to automatically handle basic options - ArgumentParser parser("my function"); - parser.addVariant(1, 1, "opt"); - MxArrayVector reordered = parser.parse(raw); - - // if we get here, we know the inputs are valid and reordered. Unpack... - BridgeVector inputs(reordered.begin(), reordered.end()); - Mat required = inputs[0].toMat(); - string optional = inputs[1].empty() ? "Default string" : inputs[1].toString(); - - try { - // Do stuff... - } catch(Exception& e) { - error(e.what()); - } catch(...) { - error("Uncaught exception occurred"); - } - - // allocate an output - Bridge out = required; - plhs[0] = out.toMxArray().releaseOwnership(); -} -``` - -There are a couple of important things going on in this example. Firstly, you need to include `` to enable the bridging capabilities. Once you've done this, you get some nice utilities for free. `MxArray` is a class that wraps Matlab's `mxArray*` class in an OOP-style interface. `ArgumentParser` is a class that handles default, optional and named arguments for you, along with multiple possible calling syntaxes. Finally, `Bridge` is a class that allows bidirectional conversions between OpenCV/std and Matlab types. - -Once you have written your file, it can be compiled with the provided mex utility: - - cv.mex('my_function.cpp'); - -This utility automatically links in all of the necessary OpenCV libraries to make your function work. - -NOTE: OpenCV uses exceptions throughout the codebase. It is a **very** good idea to wrap your code in exception handlers to avoid crashing Matlab in the event of an exception being thrown. - ------------------------------------------------------------------- - - -Developer -========= -The following sections contain information for developers seeking to use, understand or extend the Matlab bindings. The bindings are generated in python using a powerful templating engine called Jinja2. Because Matlab mex gateways have a common structure, they are well suited to templatization. There are separate templates for formatting C++ classes, Matlab classes, C++ functions, constants (enums) and documentation. - -The task of the generator is two-fold: - -1. To parse the OpenCV headers and build a semantic tree that can be fed to the template engine -2. To define type conversions between C++/OpenCV and Matlab types - -Once a source file has been generated for each OpenCV definition, and type conversions have been established, the mex compiler is invoked to produce the mex gateway (shared object) and link in the OpenCV libraries. - - -File layout ------------ -opencv/modules/matlab (this module) - -* `CMakeLists.txt` (main cmake configuration file) -* `README.md` (this file) -* `compile.cmake` (the cmake script for compiling generated source code) -* `generator` (the folder containing generator code) - * `filters.py` (template filters) - * `gen_matlab.py` (the binding generator control script) - * `parse_tree.py` (python class to refactor the hdr_parser.py output) - * `templates` (the raw templates for populating classes, constants, functions and docs) -* `include` (C++ headers for the bindings) - * `mxarray.hpp` (C++ OOP-style interface for Matlab mxArray* class) - * `bridge.hpp` (type conversions) - * `map.hpp` (hash map interface for instance storage and method lookup) -* `test` (generator, compiler and binding test scripts) - - -Call Tree ---------- -The cmake call tree can be broken into 3 main components: - -1. configure time -2. build time -3. install time - -**Find Matlab (configure)** -The first thing to do is discover a Matlab installation on the host system. This is handled by the `OpenCVFindMatlab.cmake` in `opencv/cmake`. On Windows machines it searches the registry and path, while on *NIX machines it searches a set of canonical install paths. Once Matlab has been found, a number of variables are defined, such as the path to the mex compiler, the mex libraries, the mex include paths, the architectural extension, etc. - -**Test the generator (configure)** -Attempt to produce a source file for a simple definition. This tests whether python and pythonlibs are correctly invoked on the host. - -**Test the mex compiler (configure)** -Attempt to compile a simple definition using the mex compiler. A mex file is actually just a shared object with a special exported symbol `_mexFunction` which serves as the entry-point to the function. As such, the mex compiler is just a set of scripts configuring the system compiler. In most cases this is the same as the OpenCV compiler, but *could* be different. The test checks whether the mex and generator includes can be found, the system libraries can be linked and the passed compiler flags are compatible. - -If any of the configure time tests fail, the bindings will be disabled, but the main OpenCV configure will continue without error. The configuration summary will contain the block: - - Matlab - mex: /Applications/MATLAB_R2013a.app/bin/mex - compiler/generator: Not working (bindings will not be generated) - -**Generate the sources (build)** -Given a set of modules (the intersection of the OpenCV modules being built and the matlab module optional dependencies), the `CppHeaderParser()` from `opencv/modules/python/src2/hdr_parser.py` will parse the module headers and produce a set of definitions. - -The `ParseTree()` from `opencv/modules/matlab/generator/parse_tree.py` takes this set of definitions and refactors them into a semantic tree better suited to templatization. For example, a trivial definition from the header parser may look something like: - -```python -[fill, void, ['/S'], [cv::Mat&, mat, '', ['/I', '/O']]] -``` - -The equivalent refactored output will look like: - -```python - Function - name = 'fill' - rtype = 'void' - static = True - req = - Argument - name = 'mat' - type = 'cv::Mat' - ref = '&' - I = True - O = True - default = '' -``` - -The added semantics (Namespace, Class, Function, Argument, name, etc) make it easier for the templating engine to parse, slice and populate definitions. - -Once the definitions have been parsed, `gen_matlab.py` passes each definition to the template engine with the appropriate template (class, function, enum, doc) and the filled template gets written to the `${CMAKE_CURRENT_BUILD_DIR}/src` directory. - -The generator relies upon a proxy object called `generate.proxy` to determine when the sources are out of date and need to be re-generated. - -**Compile the sources (build)** -Once the sources have been generated, they are compiled by the mex compiler. The `compile.cmake` script in `opencv/modules/matlab/` takes responsibility for iterating over each source file in `${CMAKE_CURRENT_BUILD_DIR}/src` and compiling it with the passed includes and OpenCV libraries. - -The flags used to compile the main OpenCV libraries are also forwarded to the mex compiler. So if, for example, you compiled OpenCV with SSE support, the mex bindings will also use SSE. Likewise, if you compile OpenCV in debug mode, the bindings will link to the debug version of the libraries. - -Importantly, the mex compiler includes the `mxarray.hpp`, `bridge.hpp` and `map.hpp` files from the `opencv/modules/matlab/include` directory. `mxarray.hpp` defines a `MxArray` class which wraps Matlab's `mxArray*` type in a more friendly OOP-syle interface. `bridge.hpp` defines a `Bridge` class which is able to perform type conversions between Matlab types and std/OpenCV types. It can be extended with new definitions using the plugin interface described in that file. - -The compiler relies upon a proxy object called `compile.proxy` to determine when the generated sources are out of date and need to be re-compiled. - -**Install the files (install)** -At install time, the mex files are put into place at `${CMAKE_INSTALL_PREFIX}/matlab` and their linkages updated. - - -Jinja2 ------- -Jinja2 is a powerful templating engine, similar to python's builtin `string.Template` class but implementing the model-view-controller paradigm. For example, a trivial view could be populated as follows: - -**view.py** - -```html+django -{{ title }} - -``` - -**model.py** - -```python -class User(object): - __init__(self): - self.username = '' - self.url = '' - -def sanitize(text): - """Filter for escaping html tags to prevent code injection""" -``` - -**controller.py** - -```python -def populate(users): -# initialize jinja -jtemplate = jinja2.Environment(loader=FileSystemLoader()) - -# add the filters to the engine -jtemplate['sanitize'] = sanitize - -# get the view -template = jtemplate.get_template('view') - -# populate the template with a list of User objects -populated = template.render(title='all users', users=users) - -# write to file -with open('users.html', 'wb') as f: - f.write(populated) -``` - -Thus the style and layout of the view is kept separate from the content (model). This modularity improves readability and maintainability of both the view and content and (for my own sanity) has helped significantly in debugging errors. - -File Reference --------------- -**gen_matlab.py** -gen_matlab has the following call signature: - - gen_matlab.py --jinja2 path/to/jinja2/engine - --hdrparser path/to/hdr_parser/dir - --rstparser path/to/rst_parser/dir - --moduleroot path/to/opencv/modules - --modules [core imgproc highgui ...] - --extra namespace=/additional/header/to/parse - --outdir /path/to/place/generated/src - -**build_info.py** -build_info has the following call signature: - - build_info.py --jinja2 path/to/jinja2/engine - --os operating_system_string - --arch [bitness processor] - --compiler [id version] - --mex_arch arch_string - --mex_script /path/to/mex/script - --cxx_flags [-list -of -flags -to -passthrough] - --opencv_version version_string - --commit commit_hash_if_using_git - --modules core imgproc highgui etc - --configuration Debug/Release - --outdir path/to/place/build/info - -**cvmex.py** -cvmex.py, the custom compiler generator, has the following call signature: - - cvmex.py --jinja2 path/to/jinja2/engine - --opts [-list -of -opts] - --include_dirs [-list -of -opencv_include_directories] - --lib_dir opencv_lib_directory - --libs [-lopencv_core -lopencv_imgproc ...] - --flags [-Wall -opencv_build_flags ...] - --outdir /path/to/generated/output - -**parse_tree.py** -To build a parse tree, first parse a set of headers, then invoke the parse tree to refactor the output: - -```python -# parse a set of definitions into a dictionary of namespaces -parser = CppHeaderParser() -ns['core'] = parser.parse('path/to/opencv/core.hpp') - -# refactor into a semantic tree -parse_tree = ParseTree() -parse_tree.build(ns) - -# iterate over the tree -for namespace in parse_tree.namespaces: - for clss in namespace.classes: - # do stuff - for method in namespace.methods: - # do stuff -``` - -**mxarray.hpp** -mxarray.hpp defines a class called `MxArray` which provides an OOP-style interface for Matlab's homogeneous `mxArray*` type. To create an `MxArray`, you can either inherit an existing array - -```cpp -MxArray mat(prhs[0]); -``` - -or create a new array - -```cpp -MxArray mat(5, 5, Matlab::Traits::ScalarType); -MxArray mat = MxArray::Matrix(5, 5); -``` - -The default constructor allocates a `0 x 0` array. Once you have encapculated an `mxArray*` you can access its properties through member functions: - -```cpp -mat.rows(); -mat.cols(); -mat.size(); -mat.channels(); -mat.isComplex(); -mat.isNumeric(); -mat.isLogical(); -mat.isClass(); -mat.className(); -mat.real(); -mat.imag(); -``` - -The MxArray object uses scoped memory management. If you wish to pass an MxArray back to Matlab (as a lhs pointer), you need to explicitly release ownership of the array so that it is not destroyed when it leaves scope: - -```cpp -plhs[0] = mat.releaseOwnership(); -``` - -mxarray.hpp also includes a number of helper utilities that make working in mex-world a little easier. One such utility is the `ArgumentParser`. `ArgumentParser` automatically handles required and optional arguments to a method, and even enables named arguments as used in many core Matlab functions. For example, if you had a function with the following signature: - -```cpp -void f(Mat first, Mat second, Mat mask=Mat(), int dtype=-1); -``` - -then you can create an `ArgumentParser` as follows: - -```cpp -ArgumentParser parser("f"); -parser.addVariant(2, 2, "mask", "dtype"); -MxArrayVector inputs = parser.parse(prhs, prhs+nrhs); -``` - -and that will make available the following calling syntaxes: - -```matlab -f(first, second); -f(first, second, mask); -f(first, second, mask, dtype); -f(first, second, 'dtype', dtype, 'mask', mask); % optional ordering does not matter -f(first, second, 'dtype', dtype); % only second optional argument provided -f(first, second, mask, 'dtype', dtype); % mixture of ordered and named -``` - -Further, the output of the `parser.parse()` method will always contain the total number of required and optional arguments that the method can take, with unspecified arguments given by empty matrices. Thus, to check if an optional argument has been given, you can do: - -```cpp -int dtype = inputs[3].empty() ? -1 : inputs[3].scalar(); -``` - -**bridge.hpp** -The bridge interface defines a `Bridge` class which provides type conversion between std/OpenCV and Matlab types. A type conversion must provide the following: - -```cpp -Bridge& operator=(const MyObject&); -MyObject toMyObject(); -operator MyObject(); -``` - -The binding generator will then automatically call the conversion operators (either explicitly or implicitly) if your `MyObject` class is encountered as an input or return from a parsed definition. diff --git a/modules/matlab/compile.cmake b/modules/matlab/compile.cmake deleted file mode 100644 index 2fb087f874..0000000000 --- a/modules/matlab/compile.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# LISTIFY -# Given a string of space-delimited tokens, reparse as a string of -# semi-colon delimited tokens, which in CMake land is exactly equivalent -# to a list -macro(listify OUT_LIST IN_STRING) - string(REPLACE " " ";" ${OUT_LIST} ${IN_STRING}) -endmacro() - -# listify multiple-argument inputs -listify(MEX_INCLUDE_DIRS_LIST ${MEX_INCLUDE_DIRS}) -if (${CONFIGURATION} MATCHES "Debug") - listify(MEX_LIBS_LIST ${MEX_DEBUG_LIBS}) -else() - listify(MEX_LIBS_LIST ${MEX_LIBS}) -endif() - -# if it's MSVC building a Debug configuration, don't build bindings -if ("${CONFIGURATION}" MATCHES "Debug") - message(STATUS "Matlab bindings are only available in Release configurations. Skipping...") - return() -endif() - -# ----------------------------------------------------------------------------- -# Compile -# ----------------------------------------------------------------------------- -# for each generated source file: -# 1. check if the file has already been compiled -# 2. attempt compile if required -# 3. if the compile fails, throw an error and cancel compilation -file(GLOB SOURCE_FILES "${CMAKE_CURRENT_BINARY_DIR}/src/*.cpp") -foreach(SOURCE_FILE ${SOURCE_FILES}) - # strip out the filename - get_filename_component(FILENAME ${SOURCE_FILE} NAME_WE) - # compile the source file using mex - if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/+cv/${FILENAME}.${MATLAB_MEXEXT}) - execute_process( - COMMAND ${MATLAB_MEX_SCRIPT} ${MEX_OPTS} "CXXFLAGS=\$CXXFLAGS ${MEX_CXXFLAGS}" ${MEX_INCLUDE_DIRS_LIST} - ${MEX_LIB_DIR} ${MEX_LIBS_LIST} ${SOURCE_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/+cv - OUTPUT_QUIET - ERROR_VARIABLE FAILED - ) - endif() - # TODO: If a mex file fails to compile, should we error out? - # TODO: Warnings are currently treated as errors... - if (FAILED) - message(FATAL_ERROR "Failed to compile ${FILENAME}: ${FAILED}") - endif() -endforeach() diff --git a/modules/matlab/generator/build_info.py b/modules/matlab/generator/build_info.py deleted file mode 100644 index 1340d9f926..0000000000 --- a/modules/matlab/generator/build_info.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -def substitute(build, output_dir): - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the filters - jtemplate.filters['csv'] = csv - jtemplate.filters['stripExtraSpaces'] = stripExtraSpaces - - # load the template - template = jtemplate.get_template('template_build_info.m') - - # create the build directory - output_dir = output_dir+'/+cv' - if not os.path.isdir(output_dir): - os.mkdir(output_dir) - - # populate template - populated = template.render(build=build, time=time) - with open(os.path.join(output_dir, 'buildInformation.m'), 'wb') as f: - f.write(populated.encode('utf-8')) - -if __name__ == "__main__": - """ - Usage: python build_info.py --jinja2 /path/to/jinja2/engine - --os os_version_string - --arch [bitness processor] - --compiler [id version] - --mex_arch arch_string - --mex_script /path/to/mex/script - --cxx_flags [-list -of -flags -to -passthrough] - --opencv_version version_string - --commit commit_hash_if_using_git - --modules [core imgproc highgui etc] - --configuration Debug/Release - --outdir /path/to/write/build/info - - build_info.py generates a Matlab function that can be invoked with a call to - >> cv.buildInformation(); - - This function prints a summary of the user's OS, OpenCV and Matlab build - given the information passed to this module. build_info.py invokes Jinja2 - on the template_build_info.m template. - """ - - # parse the input options - import sys, re, os, time - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--os') - parser.add_argument('--arch', nargs=2) - parser.add_argument('--compiler', nargs='+') - parser.add_argument('--mex_arch') - parser.add_argument('--mex_script') - parser.add_argument('--mex_opts', default=['-largeArrayDims'], nargs='*') - parser.add_argument('--cxx_flags', default=[], nargs='*') - parser.add_argument('--opencv_version', default='', nargs='?') - parser.add_argument('--commit', default='Not in working git tree', nargs='?') - parser.add_argument('--modules', nargs='+') - parser.add_argument('--configuration') - parser.add_argument('--outdir') - build = parser.parse_args() - - # add jinja to the path - sys.path.append(build.jinja2) - - from filters import * - from jinja2 import Environment, FileSystemLoader - - # populate the build info template - substitute(build, build.outdir) diff --git a/modules/matlab/generator/cvmex.py b/modules/matlab/generator/cvmex.py deleted file mode 100644 index 731d30a0e7..0000000000 --- a/modules/matlab/generator/cvmex.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -def substitute(cv, output_dir): - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the filters - jtemplate.filters['cellarray'] = cellarray - jtemplate.filters['split'] = split - jtemplate.filters['csv'] = csv - - # load the template - template = jtemplate.get_template('template_cvmex_base.m') - - # create the build directory - output_dir = output_dir+'/+cv' - if not os.path.isdir(output_dir): - os.mkdir(output_dir) - - # populate template - populated = template.render(cv=cv, time=time) - with open(os.path.join(output_dir, 'mex.m'), 'wb') as f: - f.write(populated.encode('utf-8')) - -if __name__ == "__main__": - """ - Usage: python cvmex.py --jinja2 /path/to/jinja2/engine - --opts [-list -of -opts] - --include_dirs [-list -of -opencv_include_directories] - --lib_dir opencv_lib_directory - --libs [-lopencv_core -lopencv_imgproc ...] - --flags [-Wall -opencv_build_flags ...] - --outdir /path/to/generated/output - - cvmex.py generates a custom mex compiler that automatically links OpenCV - libraries to built sources where appropriate. The calling syntax is the - same as the builtin mex compiler, with added cv qualification: - >> cv.mex(..., ...); - """ - - # parse the input options - import sys, re, os, time - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--opts') - parser.add_argument('--include_dirs') - parser.add_argument('--lib_dir') - parser.add_argument('--libs') - parser.add_argument('--flags') - parser.add_argument('--outdir') - cv = parser.parse_args() - - # add jinja to the path - sys.path.append(cv.jinja2) - - from filters import * - from jinja2 import Environment, FileSystemLoader - - # populate the mex base template - substitute(cv, cv.outdir) diff --git a/modules/matlab/generator/filters.py b/modules/matlab/generator/filters.py deleted file mode 100644 index de69ff7e41..0000000000 --- a/modules/matlab/generator/filters.py +++ /dev/null @@ -1,179 +0,0 @@ -from textwrap import TextWrapper -import re, os -# precompile a URL matching regular expression -urlexpr = re.compile(r"((https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)", re.MULTILINE|re.UNICODE) - -def inputs(args): - '''Keeps only the input arguments in a list of elements. - In OpenCV input arguments are all arguments with names - not beginning with 'dst' - ''' - try: - return [arg for arg in args['only'] if arg.I and not arg.O] - except: - return [arg for arg in args if arg.I] - -def ninputs(fun): - '''Counts the number of input arguments in the input list''' - return len(inputs(fun.req)) + len(inputs(fun.opt)) - -def outputs(args): - '''Determines whether any of the given arguments is an output - reference, and returns a list of only those elements. - In OpenCV, output references are preceeded by 'dst' - ''' - try: - return [arg for arg in args['only'] if arg.O and not arg.I] - except: - return [arg for arg in args if arg.O] - -def only(args): - '''Returns exclusively the arguments which are only inputs - or only outputs''' - d = {}; - d['only'] = args - return d - -def void(arg): - '''Is the input 'void' ''' - return arg == 'void' - -def flip(arg): - '''flip the sign of the input''' - return not arg - -def noutputs(fun): - '''Counts the number of output arguments in the input list''' - return int(not void(fun.rtp)) + len(outputs(fun.req)) + len(outputs(fun.opt)) - -def convertibleToInt(string): - '''Can the input string be evaluated to an integer?''' - salt = '1+' - try: - exec(salt+string) - return True - except: - return False - -def binaryToDecimal(string): - '''Attempt to convert the input string to floating point representation''' - try: - return str(eval(string)) - except: - return string - -def formatMatlabConstant(string, table): - ''' - Given a string representing a Constant, and a table of all Constants, - attempt to resolve the Constant into a valid Matlab expression - For example, the input - DEPENDENT_VALUE = 1 << FIXED_VALUE - needs to be converted to - DEPENDENT_VALUE = bitshift(1, cv.FIXED_VALUE); - ''' - # split the string into expressions - words = re.split('(\W+)', string) - # add a 'cv' prefix if an expression is also a key in the lookup table - words = ''.join([('cv.'+word if word in table else word) for word in words]) - # attempt to convert arithmetic expressions and binary/hex to decimal - words = binaryToDecimal(words) - # convert any remaining bitshifts to Matlab 'bitshift' methods - shift = re.sub('[\(\) ]', '', words).split('<<') - words = 'bitshift('+shift[0]+', '+shift[1]+')' if len(shift) == 2 else words - return words - -def matlabURL(string): - """This filter is used to construct a Matlab specific URL that calls the - system browser instead of the (insanely bad) builtin Matlab browser""" - return re.sub(urlexpr, '\\1', string) - -def capitalizeFirst(text): - '''Capitalize only the first character of the text string''' - return text[0].upper() + text[1:] - -def toUpperCamelCase(text): - '''variable_name --> VariableName''' - return ''.join([capitalizeFirst(word) for word in text.split('_')]) - -def toLowerCamelCase(text): - '''variable_name --> variableName''' - upper_camel = toUpperCamelCase(test) - return upper_camel[0].lower() + upper_camel[1:] - -def toUnderCase(text): - '''VariableName --> variable_name''' - s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', text) - return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() - -def stripTags(text): - ''' - strip or convert html tags from a text string - content --> content - --> '' - < --> < - > --> > - &le --> <= - &ge --> >= - ''' - upper = lambda pattern: pattern.group(1).upper() - text = re.sub('(.*?)', upper, text) - text = re.sub('<([^=\s].*?)>', '', text) - text = re.sub('<', '<', text) - text = re.sub('>', '>', text) - text = re.sub('&le', '<=', text) - text = re.sub('&ge', '>=', text) - return text - -def qualify(text, name): - '''Adds uppercase 'CV.' qualification to any occurrences of name in text''' - return re.sub(name.upper(), 'CV.'+name.upper(), text) - -def slugify(text): - '''A_Function_name --> a-function-name''' - return text.lower().replace('_', '-') - -def filename(fullpath): - '''Returns only the filename without an extension from a file path - eg. /path/to/file.txt --> file - ''' - return os.path.splitext(os.path.basename(fullpath))[0] - -def split(text, delimiter=' '): - '''Split a text string into a list using the specified delimiter''' - return text.split(delimiter) - -def csv(items, sep=', '): - '''format a list with a separator (comma if not specified)''' - return sep.join(item for item in items) - -def cellarray(items, escape='\''): - '''format a list of items as a matlab cell array''' - return '{' + ', '.join(escape+item+escape for item in items) + '}' - -def stripExtraSpaces(text): - '''Removes superfluous whitespace from a string, including the removal - of all leading and trailing whitespace''' - return ' '.join(text.split()) - -def comment(text, wrap=80, escape='% ', escape_first='', escape_last=''): - '''comment filter - Takes a string in text, and wraps it to wrap characters in length with - preceding comment escape sequence on each line. escape_first and - escape_last can be used for languages which define block comments. - Examples: - C++ inline comment comment(80, '// ') - C block comment: comment(80, ' * ', '/*', ' */') - Matlab comment: comment(80, '% ') - Matlab block comment: comment(80, '', '%{', '%}') - Python docstrings: comment(80, '', '\'\'\'', '\'\'\'') - ''' - - tw = TextWrapper(width=wrap-len(escape)) - if escape_first: - escape_first = escape_first+'\n' - if escape_last: - escape_last = '\n'+escape_last - escapn = '\n'+escape - lines = text.split('\n') - wlines = (tw.wrap(line) for line in lines) - return escape_first+escape+escapn.join(escapn.join(line) for line in wlines)+escape_last diff --git a/modules/matlab/generator/gen_matlab.py b/modules/matlab/generator/gen_matlab.py deleted file mode 100644 index 36d588c92a..0000000000 --- a/modules/matlab/generator/gen_matlab.py +++ /dev/null @@ -1,198 +0,0 @@ -#!/usr/bin/env python -import sys, re, os, time -from string import Template -from parse_tree import ParseTree, todict, constants -from filters import * - -class MatlabWrapperGenerator(object): - """ - MatlabWrapperGenerator is a class for generating Matlab mex sources from - a set of C++ headers. MatlabWrapperGenerator objects can be default - constructed. Given an instance, the gen() method performs the translation. - """ - - def gen(self, module_root, modules, extras, output_dir): - """ - Generate a set of Matlab mex source files by parsing exported symbols - in a set of C++ headers. The headers can be input in one (or both) of - two methods: - 1. specify module_root and modules - Given a path to the OpenCV module root and a list of module names, - the headers to parse are implicitly constructed. - 2. specifiy header locations explicitly in extras - Each element in the list of extras must be of the form: - 'namespace=/full/path/to/extra/header.hpp' where 'namespace' is - the namespace in which the definitions should be added. - The output_dir specifies the directory to write the generated sources - to. - """ - # dynamically import the parsers - from jinja2 import Environment, FileSystemLoader - import hdr_parser - import rst_parser - - # parse each of the files and store in a dictionary - # as a separate "namespace" - parser = hdr_parser.CppHeaderParser() - rst = rst_parser.RstParser(parser) - rst_parser.verbose = False - rst_parser.show_warnings = False - rst_parser.show_errors = False - rst_parser.show_critical_errors = False - - ns = dict((key, []) for key in modules) - doc = dict((key, []) for key in modules) - path_template = Template('${module}/include/opencv2/${module}.hpp') - - for module in modules: - # construct a header path from the module root and a path template - header = os.path.join(module_root, path_template.substitute(module=module)) - # parse the definitions - ns[module] = parser.parse(header) - # parse the documentation - rst.parse(module, os.path.join(module_root, module)) - doc[module] = rst.definitions - rst.definitions = {} - - for extra in extras: - module = extra.split("=")[0] - header = extra.split("=")[1] - ns[module] = ns[module] + parser.parse(header) if module in ns else parser.parse(header) - - # cleanify the parser output - parse_tree = ParseTree() - parse_tree.build(ns) - - # setup the template engine - template_dir = os.path.join(os.path.dirname(__file__), 'templates') - jtemplate = Environment(loader=FileSystemLoader(template_dir), trim_blocks=True, lstrip_blocks=True) - - # add the custom filters - jtemplate.filters['formatMatlabConstant'] = formatMatlabConstant - jtemplate.filters['convertibleToInt'] = convertibleToInt - jtemplate.filters['toUpperCamelCase'] = toUpperCamelCase - jtemplate.filters['toLowerCamelCase'] = toLowerCamelCase - jtemplate.filters['toUnderCase'] = toUnderCase - jtemplate.filters['matlabURL'] = matlabURL - jtemplate.filters['stripTags'] = stripTags - jtemplate.filters['filename'] = filename - jtemplate.filters['comment'] = comment - jtemplate.filters['inputs'] = inputs - jtemplate.filters['ninputs'] = ninputs - jtemplate.filters['outputs'] = outputs - jtemplate.filters['noutputs'] = noutputs - jtemplate.filters['qualify'] = qualify - jtemplate.filters['slugify'] = slugify - jtemplate.filters['only'] = only - jtemplate.filters['void'] = void - jtemplate.filters['not'] = flip - - # load the templates - tfunction = jtemplate.get_template('template_function_base.cpp') - tclassm = jtemplate.get_template('template_class_base.m') - tclassc = jtemplate.get_template('template_class_base.cpp') - tdoc = jtemplate.get_template('template_doc_base.m') - tconst = jtemplate.get_template('template_map_base.m') - - # create the build directory - output_source_dir = output_dir+'/src' - output_private_dir = output_source_dir+'/private' - output_class_dir = output_dir+'/+cv' - output_map_dir = output_dir+'/map' - if not os.path.isdir(output_source_dir): - os.makedirs(output_source_dir) - if not os.path.isdir(output_private_dir): - os.makedirs(output_private_dir) - if not os.path.isdir(output_class_dir): - os.makedirs(output_class_dir) - if not os.path.isdir(output_map_dir): - os.makedirs(output_map_dir) - - # populate templates - for namespace in parse_tree.namespaces: - # functions - for method in namespace.methods: - populated = tfunction.render(fun=method, time=time, includes=namespace.name) - with open(output_source_dir+'/'+method.name+'.cpp', 'wb') as f: - f.write(populated.encode('utf-8')) - if namespace.name in doc and method.name in doc[namespace.name]: - populated = tdoc.render(fun=method, doc=doc[namespace.name][method.name], time=time) - with open(output_class_dir+'/'+method.name+'.m', 'wb') as f: - f.write(populated.encode('utf-8')) - # classes - for clss in namespace.classes: - # cpp converter - populated = tclassc.render(clss=clss, time=time) - with open(output_private_dir+'/'+clss.name+'Bridge.cpp', 'wb') as f: - f.write(populated.encode('utf-8')) - # matlab classdef - populated = tclassm.render(clss=clss, time=time) - with open(output_class_dir+'/'+clss.name+'.m', 'wb') as f: - f.write(populated.encode('utf-8')) - - # create a global constants lookup table - const = dict(constants(todict(parse_tree.namespaces))) - populated = tconst.render(constants=const, time=time) - with open(output_dir+'/cv.m', 'wb') as f: - f.write(populated.encode('utf-8')) - - -if __name__ == "__main__": - """ - Usage: python gen_matlab.py --jinja2 /path/to/jinja2/engine - --hdrparser /path/to/hdr_parser/dir - --rstparser /path/to/rst_parser/dir - --moduleroot /path/to/opencv/modules - --modules [core imgproc objdetect etc] - --extra namespace=/path/to/extra/header.hpp - --outdir /path/to/output/generated/srcs - - gen_matlab.py is the main control script for generating matlab source - files from given set of headers. Internally, gen_matlab: - 1. constructs the headers to parse from the module root and list of modules - 2. parses the headers using CppHeaderParser - 3. refactors the definitions using ParseTree - 4. parses .rst docs using RstParser - 5. populates the templates for classes, function, enums and docs from the - definitions - - gen_matlab.py requires the following inputs: - --jinja2 the path to the Jinja2 templating engine - e.g. ${CMAKE_SOURCE_DIR}/3rdparty - --hdrparser the path to the header parser directory - (opencv/modules/python/src2) - --rstparser the path to the rst parser directory - (opencv/modules/java/generator) - --moduleroot (optional) path to the opencv directory containing the modules - --modules (optional - required if --moduleroot specified) the modules - to produce bindings for. The path to the include directories - as well as the namespaces are constructed from the modules - and the moduleroot - --extra extra headers explicitly defined to parse. This must be in - the format "namepsace=/path/to/extra/header.hpp". For example, - the core module requires the extra header: - "core=/opencv/modules/core/include/opencv2/core/core/base.hpp" - --outdir the output directory to put the generated matlab sources. In - the OpenCV build this is "${CMAKE_CURRENT_BUILD_DIR}/src" - """ - - # parse the input options - from argparse import ArgumentParser - parser = ArgumentParser() - parser.add_argument('--jinja2') - parser.add_argument('--hdrparser') - parser.add_argument('--rstparser') - parser.add_argument('--moduleroot', default='', required=False) - parser.add_argument('--modules', nargs='*', default=[], required=False) - parser.add_argument('--extra', nargs='*', default=[], required=False) - parser.add_argument('--outdir') - args = parser.parse_args() - - # add the hdr_parser and rst_parser modules to the path - sys.path.append(args.jinja2) - sys.path.append(args.hdrparser) - sys.path.append(args.rstparser) - - # create the generator - mwg = MatlabWrapperGenerator() - mwg.gen(args.moduleroot, args.modules, args.extra, args.outdir) diff --git a/modules/matlab/generator/parse_tree.py b/modules/matlab/generator/parse_tree.py deleted file mode 100644 index a6a146a55f..0000000000 --- a/modules/matlab/generator/parse_tree.py +++ /dev/null @@ -1,359 +0,0 @@ -import collections -from textwrap import fill -from filters import * -try: - # Python 2.7+ - basestring -except NameError: - # Python 3.3+ - basestring = str - -class ParseTree(object): - """ - The ParseTree class produces a semantic tree of C++ definitions given - the output of the CppHeaderParser (from opencv/modules/python/src2/hdr_parser.py) - - The full hierarchy is as follows: - - Namespaces - | - |- name - |- Classes - | - |- name - |- Methods - |- Constants - |- Methods - | - |- name - |- static (T/F) - |- return type - |- required Arguments - | - |- name - |- const (T/F) - |- reference ('&'/'*') - |- type - |- input - |- output (pass return by reference) - |- default value - |- optional Arguments - |- Constants - | - |- name - |- const (T/F) - |- reference ('&'/'*') - |- type - |- value - - The semantic tree contains substantial information for easily introspecting - information about objects. How many methods does the 'core' namespace have? - Does the 'randn' method have any return by reference (output) arguments? - How many required and optional arguments does the 'add' method have? Is the - variable passed by reference or raw pointer? - - Individual definitions from the parse tree (Classes, Functions, Constants) - are passed to the Jinja2 template engine where they are manipulated to - produce Matlab mex sources. - - A common call tree for constructing and using a ParseTree object is: - - # parse a set of definitions into a dictionary of namespaces - parser = CppHeaderParser() - ns['core'] = parser.parse('path/to/opencv/core.hpp') - - # refactor into a semantic tree - parse_tree = ParseTree() - parse_tree.build(ns) - - # iterate over the tree - for namespace in parse_tree.namespaces: - for clss in namespace.classes: - # do stuff - for method in namespace.methods: - # do stuff - - Calling 'print' on a ParseTree object will reconstruct the definitions - to produce an output resembling the original C++ code. - """ - def __init__(self, namespaces=None): - self.namespaces = namespaces if namespaces else [] - - def __str__(self): - return '\n\n\n'.join(ns.__str__() for ns in self.namespaces) - - def build(self, namespaces): - babel = Translator() - for name, definitions in namespaces.items(): - class_tree = {} - methods = [] - constants = [] - for defn in definitions: - obj = babel.translate(defn) - if obj is None: - continue - if type(obj) is Class or obj.clss: - self.insertIntoClassTree(obj, class_tree) - elif type(obj) is Method: - methods.append(obj) - elif type(obj) is Constant: - constants.append(obj) - else: - raise TypeError('Unexpected object type: '+str(type(obj))) - self.namespaces.append(Namespace(name, constants, list(class_tree.values()), methods)) - - def insertIntoClassTree(self, obj, class_tree): - cname = obj.name if type(obj) is Class else obj.clss - if not cname: - return - if not cname in class_tree: - # add a new class to the tree - class_tree[cname] = Class(cname) - # insert the definition into the class - val = class_tree[cname] - if type(obj) is Method: - val.methods.append(obj) - elif type(obj) is Constant: - val.constants.append(obj) - else: - raise TypeError('Unexpected object type: '+str(type(obj))) - - - -class Translator(object): - """ - The Translator class does the heavy lifting of translating the nested - list representation of the hdr_parser into individual definitions that - are inserted into the ParseTree. - Translator consists of a top-level method: translate() - along with a number of helper methods: translateClass(), translateMethod(), - translateArgument(), translateConstant(), translateName(), and - translateClassName() - """ - def translate(self, defn): - # --- class --- - # classes have 'class' prefixed on their name - if 'class' in defn[0].split(' ') or 'struct' in defn[0].split(' '): - return self.translateClass(defn) - # --- operators! --- - #TODO: implement operators: http://www.mathworks.com.au/help/matlab/matlab_oop/implementing-operators-for-your-class.html - if 'operator' in defn[0]: - return - # --- constant --- - elif convertibleToInt(defn[1]): - return self.translateConstant(defn) - # --- function --- - # functions either need to have input arguments, or not uppercase names - elif defn[3] or not self.translateName(defn[0]).split('_')[0].isupper(): - return self.translateMethod(defn) - # --- constant --- - else: - return self.translateConstant(defn) - - def translateClass(self, defn): - return Class() - - def translateMethod(self, defn, class_tree=None): - name = self.translateName(defn[0]) - clss = self.translateClassName(defn[0]) - rtp = defn[1] - static = True if 'S' in ''.join(defn[2]) else False - args = defn[3] - req = [] - opt = [] - for arg in args: - if arg: - a = self.translateArgument(arg) - opt.append(a) if a.default else req.append(a) - return Method(name, clss, static, '', rtp, False, req, opt) - - def translateConstant(self, defn): - const = True if 'const' in defn[0] else False - name = self.translateName(defn[0]) - clss = self.translateClassName(defn[0]) - tp = 'int' - val = defn[1] - return Constant(name, clss, tp, const, '', val) - - def translateArgument(self, defn): - ref = '*' if '*' in defn[0] else '' - ref = '&' if '&' in defn[0] else ref - const = ' const ' in ' '+defn[0]+' ' - tp = " ".join([word for word in defn[0].replace(ref, '').split() if not ' const ' in ' '+word+' ']) - name = defn[1] - default = defn[2] if defn[2] else '' - modifiers = ''.join(defn[3]) - I = True if not modifiers or 'I' in modifiers else False - O = True if 'O' in modifiers else False - return Argument(name, tp, const, I, O, ref, default) - - def translateName(self, name): - return name.split(' ')[-1].split('.')[-1] - - def translateClassName(self, name): - name = name.split(' ')[-1] - parts = name.split('.') - return parts[-2] if len(parts) > 1 and not parts[-2] == 'cv' else '' - - - -class Namespace(object): - """ - Namespace - | - |- name - |- Constants - |- Methods - |- Constants - """ - def __init__(self, name='', constants=None, classes=None, methods=None): - self.name = name - self.constants = constants if constants else [] - self.classes = classes if classes else [] - self.methods = methods if methods else [] - - def __str__(self): - return 'namespace '+self.name+' {\n\n'+\ - ('\n'.join(c.__str__() for c in self.constants)+'\n\n' if self.constants else '')+\ - ('\n'.join(f.__str__() for f in self.methods)+'\n\n' if self.methods else '')+\ - ('\n\n'.join(o.__str__() for o in self.classes) if self.classes else '')+'\n};' - -class Class(object): - """ - Class - | - |- name - |- Methods - |- Constants - """ - def __init__(self, name='', namespace='', constants=None, methods=None): - self.name = name - self.namespace = namespace - self.constants = constants if constants else [] - self.methods = methods if methods else [] - - def __str__(self): - return 'class '+self.name+' {\n\t'+\ - ('\n\t'.join(c.__str__() for c in self.constants)+'\n\n\t' if self.constants else '')+\ - ('\n\t'.join(f.__str__() for f in self.methods) if self.methods else '')+'\n};' - -class Method(object): - """ - Method - int VideoWriter::read( cv::Mat& frame, const cv::Mat& mask=cv::Mat() ); - --- ----- ---- -------- ---------------- - rtp class name required optional - - name the method name - clss the class the method belongs to ('' if free) - static static? - namespace the namespace the method belongs to ('' if free) - rtp the return type - const const? - req list of required arguments - opt list of optional arguments - """ - def __init__(self, name='', clss='', static=False, namespace='', rtp='', const=False, req=None, opt=None): - self.name = name - self.clss = clss - self.constructor = True if name == clss else False - self.static = static - self.const = const - self.namespace = namespace - self.rtp = rtp - self.req = req if req else [] - self.opt = opt if opt else [] - - def __str__(self): - return (self.rtp+' ' if self.rtp else '')+self.name+'('+\ - ', '.join(arg.__str__() for arg in self.req+self.opt)+\ - ')'+(' const' if self.const else '')+';' - -class Argument(object): - """ - Argument - const cv::Mat& mask=cv::Mat() - ----- ---- --- ---- ------- - const tp ref name default - - name the argument name - tp the argument type - const const? - I is the argument treated as an input? - O is the argument treated as an output (return by reference) - ref is the argument passed by reference? ('*'/'&') - default the default value of the argument ('' if required) - """ - def __init__(self, name='', tp='', const=False, I=True, O=False, ref='', default=''): - self.name = name - self.tp = tp - self.ref = ref - self.I = I - self.O = O - self.const = const - self.default = default - - def __str__(self): - return ('const ' if self.const else '')+self.tp+self.ref+\ - ' '+self.name+('='+self.default if self.default else '') - -class Constant(object): - """ - Constant - DFT_COMPLEX_OUTPUT = 12; - ---- ------- - name default - - name the name of the constant - clss the class that the constant belongs to ('' if free) - tp the type of the constant ('' if int) - const const? - ref is the constant a reference? ('*'/'&') - default default value, required for constants - """ - def __init__(self, name='', clss='', tp='', const=False, ref='', default=''): - self.name = name - self.clss = clss - self.tp = tp - self.ref = ref - self.const = const - self.default = default - - def __str__(self): - return ('const ' if self.const else '')+self.tp+self.ref+\ - ' '+self.name+('='+self.default if self.default else '')+';' - -def constants(tree): - """ - recursive generator to strip all Constant objects from the ParseTree - and place them into a flat dictionary of { name, value (default) } - """ - if isinstance(tree, dict) and 'constants' in tree and isinstance(tree['constants'], list): - for node in tree['constants']: - yield (node['name'], node['default']) - if isinstance(tree, dict): - for key, val in tree.items(): - for gen in constants(val): - yield gen - if isinstance(tree, list): - for val in tree: - for gen in constants(val): - yield gen - - -def todict(obj): - """ - Recursively convert a Python object graph to sequences (lists) - and mappings (dicts) of primitives (bool, int, float, string, ...) - """ - if isinstance(obj, basestring): - return obj - elif isinstance(obj, dict): - return dict((key, todict(val)) for key, val in obj.items()) - elif isinstance(obj, collections.Iterable): - return [todict(val) for val in obj] - elif hasattr(obj, '__dict__'): - return todict(vars(obj)) - elif hasattr(obj, '__slots__'): - return todict(dict((name, getattr(obj, name)) for name in getattr(obj, '__slots__'))) - return obj diff --git a/modules/matlab/generator/templates/functional.cpp b/modules/matlab/generator/templates/functional.cpp deleted file mode 100644 index b019a13003..0000000000 --- a/modules/matlab/generator/templates/functional.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - * compose - * compose a function call - * This macro takes as input a Method object and composes - * a function call by inspecting the types and argument names - */ -{% macro compose(fun) %} - {# ----------- Return type ------------- #} - {%- if not fun.rtp|void and not fun.constructor -%} retval = {% endif -%} - {%- if fun.constructor -%}{{fun.clss}} obj = {% endif -%} - {%- if fun.clss and not fun.constructor -%}inst.{%- else -%} cv:: {%- endif -%} - {{fun.name}}( - {#- ----------- Required ------------- -#} - {%- for arg in fun.req -%} - {%- if arg.ref == '*' -%}&{%- endif -%} - {{arg.name}} - {%- if not loop.last %}, {% endif %} - {% endfor %} - {#- ----------- Optional ------------- -#} - {% if fun.req and fun.opt %}, {% endif %} - {%- for opt in fun.opt -%} - {%- if opt.ref == '*' -%}&{%- endif -%} - {{opt.name}} - {%- if not loop.last -%}, {% endif %} - {%- endfor -%} - ); -{%- endmacro %} - - -/* - * composeMatlab - * compose a Matlab function call - * This macro takes as input a Method object and composes - * a Matlab function call by inspecting the types and argument names - */ -{% macro composeMatlab(fun) %} - {# ----------- Return type ------------- #} - {%- if fun|noutputs > 1 -%}[{% endif -%} - {%- if not fun.rtp|void -%}LVALUE{% endif -%} - {%- if not fun.rtp|void and fun|noutputs > 1 -%},{% endif -%} - {# ------------- Outputs ------------- -#} - {%- for arg in fun.req|outputs + fun.opt|outputs -%} - {{arg.name}} - {%- if arg.I -%}_out{%- endif -%} - {%- if not loop.last %}, {% endif %} - {% endfor %} - {%- if fun|noutputs > 1 -%}]{% endif -%} - {%- if fun|noutputs %} = {% endif -%} - cv.{{fun.name}}( - {#- ------------ Inputs -------------- -#} - {%- for arg in fun.req|inputs + fun.opt|inputs -%} - {{arg.name}} - {%- if arg.O -%}_in{%- endif -%} - {%- if not loop.last %}, {% endif -%} - {% endfor -%} - ); -{%- endmacro %} - - -/* - * composeVariant - * compose a variant call for the ArgumentParser - */ -{% macro composeVariant(fun) %} -addVariant("{{ fun.name }}", {{ fun.req|inputs|length }}, {{ fun.opt|inputs|length }} -{%- if fun.opt|inputs|length %}, {% endif -%} -{%- for arg in fun.opt|inputs -%} - "{{arg.name}}" - {%- if not loop.last %}, {% endif -%} -{% endfor -%} -) -{%- endmacro %} - - -/* - * composeWithExceptionHandler - * compose a function call wrapped in exception traps - * This macro takes an input a Method object and composes a function - * call through the compose() macro, then wraps the return in traps - * for cv::Exceptions, std::exceptions, and all generic exceptions - * and returns a useful error message to the Matlab interpreter - */ -{%- macro composeWithExceptionHandler(fun) -%} - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - {{ compose(fun) }} - } catch(cv::Exception& e) { - error(std::string("cv::exception caught: ").append(e.what()).c_str()); - } catch(std::exception& e) { - error(std::string("std::exception caught: ").append(e.what()).c_str()); - } catch(...) { - error("Uncaught exception occurred in {{fun.name}}"); - } -{%- endmacro %} - - -/* - * handleInputs - * unpack input arguments from the Bridge - * Given an input Bridge object, this unpacks the object from the Bridge and - * casts them into the correct type - */ -{%- macro handleInputs(fun) %} - - {% if fun|ninputs or (fun|noutputs and not fun.constructor) %} - // unpack the arguments - {# ----------- Inputs ------------- #} - {% for arg in fun.req|inputs %} - {{arg.tp}} {{arg.name}} = inputs[{{ loop.index0 }}].to{{arg.tp|toUpperCamelCase}}(); - {% endfor %} - {% for opt in fun.opt|inputs %} - {{opt.tp}} {{opt.name}} = inputs[{{loop.index0 + fun.req|inputs|length}}].empty() ? ({{opt.tp}}) {% if opt.ref == '*' -%} {{opt.tp}}() {%- else -%} {{opt.default}} {%- endif %} : inputs[{{loop.index0 + fun.req|inputs|length}}].to{{opt.tp|toUpperCamelCase}}(); - {% endfor %} - {# ----------- Outputs ------------ #} - {% for arg in fun.req|only|outputs %} - {{arg.tp}} {{arg.name}}; - {% endfor %} - {% for opt in fun.opt|only|outputs %} - {{opt.tp}} {{opt.name}}; - {% endfor %} - {% if not fun.rtp|void and not fun.constructor %} - {{fun.rtp}} retval; - {% endif %} - {% endif %} - -{%- endmacro %} - -/* - * handleOutputs - * pack outputs into the bridge - * Given a set of outputs, this methods assigns them into the bridge for - * return to the calling method - */ -{%- macro handleOutputs(fun) %} - - {% if fun|noutputs %} - // assign the outputs into the bridge - {% if not fun.rtp|void and not fun.constructor %} - outputs[0] = retval; - {% endif %} - {% for arg in fun.req|outputs %} - outputs[{{loop.index0 + fun.rtp|void|not}}] = {{arg.name}}; - {% endfor %} - {% for opt in fun.opt|outputs %} - outputs[{{loop.index0 + fun.rtp|void|not + fun.req|outputs|length}}] = {{opt.name}}; - {% endfor %} - {% endif %} -{%- endmacro %} diff --git a/modules/matlab/generator/templates/template_build_info.m b/modules/matlab/generator/templates/template_build_info.m deleted file mode 100644 index 8af0a34208..0000000000 --- a/modules/matlab/generator/templates/template_build_info.m +++ /dev/null @@ -1,41 +0,0 @@ -function buildInformation() -%CV.BUILDINFORMATION display OpenCV Toolbox build information -% -% Call CV.BUILDINFORMATION() to get a printout of diagonstic information -% pertaining to your particular build of the OpenCV Toolbox. If you ever -% run into issues with the Toolbox, it is useful to submit this -% information alongside a bug report to the OpenCV team. -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% -info = { -' ------------------------------------------------------------------------' -' OpenCV Toolbox' -' Build and diagnostic information' -' ------------------------------------------------------------------------' -'' -' Platform' -' OS: {{ build.os }}' -' Architecture: {{ build.arch[0] }}-bit {{ build.arch[1] }}' -' Compiler: {{ build.compiler | csv(' ') }}' -'' -' Matlab' -[' Version: ' version()] -[' Mex extension: ' mexext()] -' Architecture: {{ build.mex_arch }}' -' Mex path: {{ build.mex_script }}' -' Mex flags: {{ build.mex_opts | csv(' ') }}' -' CXX flags: {{ build.cxx_flags | csv(' ') | stripExtraSpaces | wordwrap(60, True, '\'\n\' ') }}' -'' -' OpenCV' -' Version: {{ build.opencv_version }}' -' Commit: {{ build.commit }}' -' Configuration: {{ build.configuration }}' -' Modules: {{ build.modules | csv | wordwrap(60, True, '\'\n\' ') }}' -'' -}; - -info = cellfun(@(x) [x '\n'], info, 'UniformOutput', false); -info = horzcat(info{:}); -fprintf(info); -end diff --git a/modules/matlab/generator/templates/template_class_base.cpp b/modules/matlab/generator/templates/template_class_base.cpp deleted file mode 100644 index 09e0a08702..0000000000 --- a/modules/matlab/generator/templates/template_class_base.cpp +++ /dev/null @@ -1,98 +0,0 @@ -{% import 'functional.cpp' as functional %} -/* - * file: {{clss.name}}Bridge.cpp - * author: A trusty code generator - * date: {{time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())}} - * - * This file was autogenerated, do not modify. - * See LICENSE for full modification and redistribution details. - * Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation - */ -#include -#include -#include -#include -#include -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -namespace { - -typedef std::vector (*)({{clss.name}}&, const std::vector&) MethodSignature; - -{% for function in clss.methods %} - -{% if function.constructor %} -// wrapper for {{function.name}}() constructor -{{ function.clss }} {{function.name}}(const std::vector& inputs) { - {{ functional.handleInputs(function) }} - {{ functional.compose(function) }} - return obj; -} -{% else %} -// wrapper for {{function.name}}() method -std::vector {{function.name}}({{clss.name}}& inst, const std::vector& inputs) { - std::vector outputs{% if function|noutputs %}({{function|noutputs}}){% endif %}; - {{ functional.handleInputs(function) }} - {{ functional.composeWithExceptionHandler(function) }} - {{ functional.handleOutputs(function) }} - return outputs; -} -{% endif %} -{% endfor %} - -Map createMethodMap() { - Map m; - {% for function in clss.methods %} - m["{{function.name}}"] = &{{function.name}}; - {% endfor %} - - return m; -} -static const Map methods = createMethodMap(); - -// map of created {{clss.name}} instances. Don't trust the user to keep them safe... -static Map instances; - -/* - * {{ clss.name }} - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // parse the inputs - Bridge method_name(prhs[0]); - - Bridge handle(prhs[1]); - std::vector brhs(prhs+2, prhs+nrhs); - - // retrieve the instance of interest - try { - {{clss.name}}& inst = instances.at(handle.address()); - } catch (const std::out_of_range& e) { - mexErrMsgTxt("Invalid object instance provided"); - } - - // invoke the correct method on the data - try { - std::vector blhs = (*methods.at(method_name))(inst, brhs); - } catch (const std::out_of_range& e) { - mexErrMsgTxt("Unknown method specified"); - } - - {% block postfun %} - {% endblock %} - - {% block cleanup %} - {% endblock %} - -} - -} // end namespace diff --git a/modules/matlab/generator/templates/template_class_base.m b/modules/matlab/generator/templates/template_class_base.m deleted file mode 100644 index a199b292a4..0000000000 --- a/modules/matlab/generator/templates/template_class_base.m +++ /dev/null @@ -1,31 +0,0 @@ -% {{clss.name | upper}} -% Matlab handle class for OpenCV object classes -% -% This file was autogenerated, do not modify. -% See LICENSE for full modification and redistribution details. -% Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation -classdef {{clss.name}} < handle - properties (SetAccess = private, Hidden = true) - ptr_ = 0; % handle to the underlying c++ clss instance - end - - methods - % constructor - function this = {{clss.name}}(varargin) - this.ptr_ = {{clss.name}}Bridge('new', varargin{:}); - end - - % destructor - function delete(this) - {{clss.name}}Bridge(this.ptr_, 'delete'); - end - - {% for function in clss.functions %} - % {{function.__str__()}} - function varargout = {{function.name}}(this, varargin) - [varargout{1:nargout}] = {{clss.name}}Bridge('{{function.name}}', this.ptr_, varargin{:}); - end - - {% endfor %} - end -end diff --git a/modules/matlab/generator/templates/template_cvmex_base.m b/modules/matlab/generator/templates/template_cvmex_base.m deleted file mode 100644 index 7afaa2b997..0000000000 --- a/modules/matlab/generator/templates/template_cvmex_base.m +++ /dev/null @@ -1,46 +0,0 @@ -function mex(varargin) -%CV.MEX compile MEX-function with OpenCV linkages -% -% Usage: -% CV.MEX [options ...] file [file file ...] -% -% Description: -% CV.MEX compiles one or more C/C++ source files into a shared-library -% called a mex-file. This function is equivalent to the builtin MEX -% routine, with the notable exception that it automatically resolves -% OpenCV includes, and links in the OpenCV libraries where appropriate. -% It also forwards the flags used to build OpenCV, so architecture- -% specific optimizations can be used. -% -% CV.MEX is designed to be used in situations where the source(s) you -% are compiling contain OpenCV definitions. In such cases, it streamlines -% the finding and including of appropriate OpenCV libraries. -% -% See also: mex -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% - - % forward the OpenCV build flags (C++ only) - EXTRA_FLAGS = ['"CXXFLAGS="\$CXXFLAGS '... - '{{ cv.flags | trim | wordwrap(60, false, '\'...\n \'') }}""']; - - % add the OpenCV include dirs - INCLUDE_DIRS = {{ cv.include_dirs | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % add the lib dir (singular in both build tree and install tree) - LIB_DIR = '{{ cv.lib_dir }}'; - - % add the OpenCV libs. Only the used libs will actually be linked - LIBS = {{ cv.libs | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % add the mex opts (usually at least -largeArrayDims) - OPTS = {{ cv.opts | split | cellarray | wordwrap(60, false, '...\n ') }}; - - % merge all of the default options (EXTRA_FLAGS, LIBS, etc) and the options - % and files passed by the user (varargin) into a single cell array - merged = [ {EXTRA_FLAGS}, INCLUDE_DIRS, {LIB_DIR}, LIBS, OPTS, varargin ]; - - % expand the merged argument list into the builtin mex utility - mex(merged{:}); -end diff --git a/modules/matlab/generator/templates/template_doc_base.m b/modules/matlab/generator/templates/template_doc_base.m deleted file mode 100644 index 3b1f641bfb..0000000000 --- a/modules/matlab/generator/templates/template_doc_base.m +++ /dev/null @@ -1,62 +0,0 @@ -{% import 'functional.cpp' as functional %} -{{ ('CV.' + fun.name | upper + ' ' + doc.brief | stripTags) | comment(75, '%') | matlabURL }} -% -% {{ functional.composeMatlab(fun) | upper }} -{% if doc.long %} -{{ doc.long | stripTags | qualify(fun.name) | comment(75, '% ') | matlabURL }} -{% endif %} -% -{# ----------------------- Returns --------------------- #} -{% if fun.rtp|void|not or fun.req|outputs|length or fun.opt|outputs|length %} -% Returns: -{% if fun.rtp|void|not %} -% LVALUE -{% endif %} -{% for arg in fun.req|outputs + fun.opt|outputs %} -{% set uname = arg.name | upper + ('_OUT' if arg.I else '') %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{{ uname }} -{% endif %} -{% endfor %} -% -{% endif %} -{# ----------------- Required Inputs ------------------- #} -{% if fun.req|inputs|length %} -% Required Inputs: -{% for arg in fun.req|inputs %} -{% set uname = arg.name | upper + ('_IN' if arg.O else '') %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{% endif %} -{% endfor %} -% -{% endif %} -{# ------------------ Optional Inputs ------------------- #} -{% if fun.opt|inputs|length %} -% Optional Inputs: -{% for arg in fun.opt|inputs %} -{% set uname = arg.name | upper + ('_IN' if arg.O else '') + ' (default: ' + arg.default + ')' %} -{% if arg.name in doc.params %} -{{ (uname + ' ' + doc.params[arg.name]) | stripTags | comment(75, '% ') }} -{% else %} -{{ uname }} -{% endif %} -{% endfor %} -% -{% endif %} -{# ---------------------- See also --------------------- #} -{% if 'seealso' in doc %} -% See also: {% for item in doc['seealso'] %} -cv.{{ item }}{% if not loop.last %}, {% endif %} -{% endfor %} - -% -{% endif %} -{# ----------------------- Online ---------------------- #} -{% set url = 'http://docs.opencv.org/modules/' + doc.module + '/doc/' + (doc.file|filename) + '.html#' + (fun.name|slugify) %} -% Online docs: {{ url | matlabURL }} -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% diff --git a/modules/matlab/generator/templates/template_function_base.cpp b/modules/matlab/generator/templates/template_function_base.cpp deleted file mode 100644 index 9d12ac2d7e..0000000000 --- a/modules/matlab/generator/templates/template_function_base.cpp +++ /dev/null @@ -1,60 +0,0 @@ -{% import 'functional.cpp' as functional %} -/* - * file: {{fun.name}}.cpp - * author: A trusty code generator - * date: {{time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())}} - * - * This file was autogenerated, do not modify. - * See LICENSE for full modification and redistribution details. - * Copyright {{time.strftime("%Y", time.localtime())}} The OpenCV Foundation - */ -#include -#include -#include -#include -#include -#include -using namespace cv; -using namespace matlab; -using namespace bridge; - -/* - * {{ fun.name }} - * {{ fun }} - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray*{% if fun|noutputs %} plhs[]{% else %}*{% endif %}, - int nrhs, const mxArray*{% if fun|ninputs %} prhs[]{% else %}*{% endif %}) { - - {% if fun|ninputs %} - // parse the inputs - ArgumentParser parser("{{fun.name}}"); - parser.{{ functional.composeVariant(fun) }}; - MxArrayVector sorted = parser.parse(MxArrayVector(prhs, prhs+nrhs)); - {% endif %} - - {% if fun|ninputs or fun|noutputs %} - // setup - {% if fun|ninputs %} - BridgeVector inputs(sorted.begin(), sorted.end()); - {% endif -%} - {%- if fun|noutputs %} - BridgeVector outputs({{fun|noutputs}}); - {% endif %} - {% endif %} - - {{ functional.handleInputs(fun) }} - {{ functional.composeWithExceptionHandler(fun) }} - {{ functional.handleOutputs(fun) }} - - {% if fun|noutputs %} - // push the outputs back to matlab - for (size_t n = 0; n < static_cast(std::max(nlhs,1)); ++n) { - plhs[n] = outputs[n].toMxArray().releaseOwnership(); - } - {% endif %} -} diff --git a/modules/matlab/generator/templates/template_map_base.m b/modules/matlab/generator/templates/template_map_base.m deleted file mode 100644 index 8c653a4854..0000000000 --- a/modules/matlab/generator/templates/template_map_base.m +++ /dev/null @@ -1,71 +0,0 @@ -% ------------------------------------------------------------------------ -% OpenCV Toolbox -% Matlab bindings for the OpenCV library -% ------------------------------------------------------------------------ -% -% The OpenCV Toolbox allows you to make calls to native OpenCV methods -% and classes directly from within Matlab. -% -% PATHS -% To call OpenCV methods from anywhere in your workspace, add the -% directory containing this file to the path: -% -% addpath(fileparts(which('cv'))); -% -% The OpenCV Toolbox contains two important locations: -% cv.m - This file, containing OpenCV enums -% +cv/ - The directory containing the OpenCV methods and classes -% -% CALLING SYNTAX -% To call an OpenCV method, class or enum, it must be prefixed with the -% 'cv' qualifier. For example: -% -% % perform a Fourier transform -% Xf = cv.dft(X, cv.DFT_COMPLEX_OUTPUT); -% -% % create a VideoCapture object, and open a file -% camera = cv.VideoCapture(); -% camera.open('/path/to/file'); -% -% You can specify optional arguments by name, similar to how python -% and many builtin Matlab functions work. For example, the cv.dft -% method used above has an optional 'nonzeroRows' argument. If -% you want to specify that, but keep the default 'flags' behaviour, -% simply call the method as: -% -% Xf = cv.dft(X, 'nonzeroRows', 7); -% -% HELP -% Each method has its own help file containing information about the -% arguments, return values, and what operation the method performs. -% You can access this help information by typing: -% -% help cv.methodName -% -% The full list of methods can be found by inspecting the +cv/ -% directory. Note that the methods available to you will depend -% on which modules you configured OpenCV to build. -% -% DIAGNOSTICS -% If you are having problems with the OpenCV Toolbox and need to send a -% bug report to the OpenCV team, you can get a printout of diagnostic -% information to submit along with your report by typing: -% -% cv.buildInformation(); -% -% OTHER RESOURCES -% OpenCV documentation online: http://docs.opencv.org -% OpenCV issue tracker: http://code.opencv.org -% OpenCV Q&A: http://answers.opencv.org -% -% See also: cv.help, cv.buildInformation -% -% Copyright {{ time.strftime("%Y", time.localtime()) }} The OpenCV Foundation -% -classdef cv - properties (Constant = true) - {% for key, val in constants.items() %} - {{key}} = {{val|formatMatlabConstant(constants)}}; - {% endfor %} - end -end diff --git a/modules/matlab/include/opencv2/matlab/bridge.hpp b/modules/matlab/include/opencv2/matlab/bridge.hpp deleted file mode 100644 index a98c06a824..0000000000 --- a/modules/matlab/include/opencv2/matlab/bridge.hpp +++ /dev/null @@ -1,616 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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 OPENCV_BRIDGE_HPP_ -#define OPENCV_BRIDGE_HPP_ - -#include "mxarray.hpp" -#include -#include -#include -#include -#include -#include -#include - -namespace cv { -namespace bridge { - -/* - * Custom typedefs - * Parsed names from the hdr_parser - */ -typedef std::vector vector_Mat; -typedef std::vector vector_Point; -typedef std::vector vector_int; -typedef std::vector vector_float; -typedef std::vector vector_String; -typedef std::vector vector_uchar; -typedef std::vector > vector_vector_char; -typedef std::vector > vector_vector_DMatch; -typedef std::vector vector_Rect; -typedef std::vector vector_KeyPoint; -typedef cv::Ptr Ptr_StereoBM; -typedef cv::Ptr Ptr_StereoSGBM; -typedef cv::Ptr Ptr_FeatureDetector; -typedef cv::Ptr Ptr_CLAHE; -typedef cv::Ptr Ptr_LineSegmentDetector; -typedef cv::Ptr Ptr_AlignMTB; -typedef cv::Ptr Ptr_CalibrateDebevec; -typedef cv::Ptr Ptr_CalibrateRobertson; -typedef cv::Ptr Ptr_DenseOpticalFlow; -typedef cv::Ptr Ptr_MergeDebevec; -typedef cv::Ptr Ptr_MergeMertens; -typedef cv::Ptr Ptr_MergeRobertson; -typedef cv::Ptr Ptr_Tonemap; -typedef cv::Ptr Ptr_TonemapDrago; -typedef cv::Ptr Ptr_TonemapDurand; -typedef cv::Ptr Ptr_TonemapMantiuk; -typedef cv::Ptr Ptr_TonemapReinhard; - - -// ---------------------------------------------------------------------------- -// PREDECLARATIONS -// ---------------------------------------------------------------------------- -class Bridge; -typedef std::vector BridgeVector; - -template -void deepCopyAndTranspose(const cv::Mat& src, matlab::MxArray& dst); - -template -void deepCopyAndTranspose(const matlab::MxArray& src, cv::Mat& dst); - - - - -// ---------------------------------------------------------------------------- -// BRIDGE -// ---------------------------------------------------------------------------- - -/*! - * @class Bridge - * @brief Type conversion class for converting OpenCV and native C++ types - * - * Bridge provides an interface for converting between OpenCV/C++ types - * to Matlab's mxArray format. - * - * Each type conversion requires three operators: - * // conversion from ObjectType --> Bridge - * Bridge& operator=(const ObjectType&); - * // implicit conversion from Bridge --> ObjectType - * operator ObjectType(); - * // explicit conversion from Bridge --> ObjectType - * ObjectType toObjectType(); - * - * The bridging class provides common conversions between OpenCV types, - * std and stl types to Matlab's mxArray format. By inheriting Bridge, - * you can add your own custom type conversions. - * - * Because Matlab uses a homogeneous storage type, all operations are provided - * relative to Matlab's type. That is, Bridge always stores an matlab::MxArray object - * and converts to and from other object types on demand. - * - * NOTE: for the explicit conversion function, the object name must be - * in UpperCamelCase, for example: - * int --> toInt - * my_object --> MyObject - * my_Object --> MyObject - * myObject --> MyObject - * this is because the binding generator standardises the calling syntax. - * - * Bridge attempts to make as few assumptions as possible, however in - * some cases where 1-to-1 mappings don't exist, some assumptions are necessary. - * In particular: - * - conversion from of a 2-channel Mat to an mxArray will result in a complex - * output - * - conversion from multi-channel interleaved Mats will result in - * multichannel planar mxArrays - * - */ -class Bridge { -private: - matlab::MxArray ptr_; -public: - // bridges are default constructible - Bridge() {} - virtual ~Bridge() {} - - // -------------------------------------------------------------------------- - // Bridge Properties - // -------------------------------------------------------------------------- - bool empty() const { return ptr_.empty(); } - - /*! @brief unpack an object from Matlab into C++ - * - * this function checks whether the given bridge is derived from an - * object in Matlab. If so, it converts it to a (platform dependent) - * pointer to the underlying C++ object. - * - * NOTE! This function assumes that the C++ pointer is stored in inst_ - */ - template - Object* getObjectByName(const std::string& name) { - // check that the object is actually of correct type before unpacking - // TODO: Traverse class hierarchy? - if (!ptr_.isClass(name)) { - matlab::error(std::string("Expected class ").append(std::string(name)) - .append(" but was given ").append(ptr_.className())); - } - // get the instance field - matlab::MxArray inst = ptr_.field("inst_"); - Object* obj = NULL; - // make sure the pointer is the correct size for the system - if (sizeof(void *) == 8 && inst.ID() == mxUINT64_CLASS) { - // 64-bit pointers - // TODO: Do we REALLY REALLY need to reinterpret_cast? - obj = reinterpret_cast(inst.scalar()); - } else if (sizeof(void *) == 4 && inst.ID() == mxUINT32_CLASS) { - // 32-bit pointers - obj = reinterpret_cast(inst.scalar()); - } else { - matlab::error("Incorrect pointer type stored for architecture"); - } - - // finally check if the object is NULL - matlab::conditionalError(obj, std::string("Object ").append(std::string(name)).append(std::string(" is NULL"))); - return obj; - } - - - // -------------------------------------------------------------------------- - // MATLAB TYPES - // -------------------------------------------------------------------------- - Bridge& operator=(const mxArray* obj) { ptr_ = obj; return *this; } - Bridge& operator=(const matlab::MxArray& obj) { ptr_ = obj; return *this; } - Bridge(const matlab::MxArray& obj) : ptr_(obj) {} - Bridge(const mxArray* obj) : ptr_(obj) {} - matlab::MxArray toMxArray() { return ptr_; } - - - // -------------------------------------------------------------------------- - // MATRIX CONVERSIONS - // -------------------------------------------------------------------------- - Bridge& operator=(const cv::Mat& mat); - cv::Mat toMat() const; - operator cv::Mat() const { return toMat(); } - - template - static matlab::MxArray FromMat(const cv::Mat& mat) { - matlab::MxArray arr(mat.rows, mat.cols, mat.channels(), matlab::Traits::ScalarType); - switch (mat.depth()) { - case CV_8U: deepCopyAndTranspose(mat, arr); break; - case CV_8S: deepCopyAndTranspose(mat, arr); break; - case CV_16U: deepCopyAndTranspose(mat, arr); break; - case CV_16S: deepCopyAndTranspose(mat, arr); break; - case CV_32S: deepCopyAndTranspose(mat, arr); break; - case CV_32F: deepCopyAndTranspose(mat, arr); break; - case CV_64F: deepCopyAndTranspose(mat, arr); break; - default: matlab::error("Attempted to convert from unknown class"); - } - return arr; - } - - template - cv::Mat toMat() const { - cv::Mat mat(ptr_.rows(), ptr_.cols(), CV_MAKETYPE(cv::DataType::type, ptr_.channels())); - switch (ptr_.ID()) { - case mxINT8_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT8_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT16_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT16_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT32_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT32_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxINT64_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxUINT64_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxSINGLE_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxDOUBLE_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxCHAR_CLASS: deepCopyAndTranspose(ptr_, mat); break; - case mxLOGICAL_CLASS: deepCopyAndTranspose(ptr_, mat); break; - default: matlab::error("Attempted to convert from unknown class"); - } - return mat; - } - - - - // -------------------------------------------------------------------------- - // INTEGRAL TYPES - // -------------------------------------------------------------------------- - - // --------------------------- string -------------------------------------- - Bridge& operator=(const std::string& ) { return *this; } - std::string toString() { - return ptr_.toString(); - } - operator std::string() { return toString(); } - - // --------------------------- bool -------------------------------------- - Bridge& operator=(const bool& ) { return *this; } - bool toBool() { return 0; } - operator bool() { return toBool(); } - - // --------------------------- double -------------------------------------- - Bridge& operator=(const double& ) { return *this; } - double toDouble() { return ptr_.scalar(); } - operator double() { return toDouble(); } - - // --------------------------- float --------------------------------------- - Bridge& operator=(const float& ) { return *this; } - float toFloat() { return ptr_.scalar(); } - operator float() { return toFloat(); } - - // --------------------------- int -------------------------------------- - Bridge& operator=(const int& ) { return *this; } - int toInt() { return ptr_.scalar(); } - operator int() { return toInt(); } - - - - - - // -------------------------------------------------------------------------- - // CORE OPENCV TYPES - // -------------------------------------------------------------------------- - - // -------------------------- Point -------------------------------------- - Bridge& operator=(const cv::Point& ) { return *this; } - cv::Point toPoint() const { return cv::Point(); } - operator cv::Point() const { return toPoint(); } - - // -------------------------- Point2f ------------------------------------ - Bridge& operator=(const cv::Point2f& ) { return *this; } - cv::Point2f toPoint2f() const { return cv::Point2f(); } - operator cv::Point2f() const { return toPoint2f(); } - - // -------------------------- Point2d ------------------------------------ - Bridge& operator=(const cv::Point2d& ) { return *this; } - cv::Point2d toPoint2d() const { return cv::Point2d(); } - operator cv::Point2d() const { return toPoint2d(); } - - // -------------------------- Size --------------------------------------- - Bridge& operator=(const cv::Size& ) { return *this; } - cv::Size toSize() const { return cv::Size(); } - operator cv::Size() const { return toSize(); } - - // -------------------------- Moments -------------------------------------- - Bridge& operator=(const cv::Moments& ) { return *this; } - cv::Moments toMoments() const { return cv::Moments(); } - operator cv::Moments() const { return toMoments(); } - - // -------------------------- Scalar -------------------------------------- - Bridge& operator=(const cv::Scalar& ) { return *this; } - cv::Scalar toScalar() { return cv::Scalar(); } - operator cv::Scalar() { return toScalar(); } - - // -------------------------- Rect ----------------------------------------- - Bridge& operator=(const cv::Rect& ) { return *this; } - cv::Rect toRect() { return cv::Rect(); } - operator cv::Rect() { return toRect(); } - - // ---------------------- RotatedRect --------------------------------------- - Bridge& operator=(const cv::RotatedRect& ) { return *this; } - cv::RotatedRect toRotatedRect() { return cv::RotatedRect(); } - operator cv::RotatedRect() { return toRotatedRect(); } - - // ---------------------- TermCriteria -------------------------------------- - Bridge& operator=(const cv::TermCriteria& ) { return *this; } - cv::TermCriteria toTermCriteria() { return cv::TermCriteria(); } - operator cv::TermCriteria() { return toTermCriteria(); } - - // ---------------------- RNG -------------------------------------- - Bridge& operator=(const cv::RNG& ) { return *this; } - /*! @brief explicit conversion to cv::RNG() - * - * Converts a bridge object to a cv::RNG(). We explicitly assert that - * the object is an RNG in matlab space before attempting to deference - * its pointer - */ - cv::RNG toRNG() { - return (*getObjectByName("RNG")); - } - operator cv::RNG() { return toRNG(); } - - - - - - // -------------------------------------------------------------------------- - // OPENCV VECTOR TYPES - // -------------------------------------------------------------------------- - - // -------------------- vector_Mat ------------------------------------------ - Bridge& operator=(const vector_Mat& ) { return *this; } - vector_Mat toVectorMat() { return vector_Mat(); } - operator vector_Mat() { return toVectorMat(); } - - // --------------------------- vector_int ---------------------------------- - Bridge& operator=(const vector_int& ) { return *this; } - vector_int toVectorInt() { return vector_int(); } - operator vector_int() { return toVectorInt(); } - - // --------------------------- vector_float -------------------------------- - Bridge& operator=(const vector_float& ) { return *this; } - vector_float toVectorFloat() { return vector_float(); } - operator vector_float() { return toVectorFloat(); } - - // --------------------------- vector_Rect --------------------------------- - Bridge& operator=(const vector_Rect& ) { return *this; } - vector_Rect toVectorRect() { return vector_Rect(); } - operator vector_Rect() { return toVectorRect(); } - - // --------------------------- vector_KeyPoint ----------------------------- - Bridge& operator=(const vector_KeyPoint& ) { return *this; } - vector_KeyPoint toVectorKeyPoint() { return vector_KeyPoint(); } - operator vector_KeyPoint() { return toVectorKeyPoint(); } - - // --------------------------- vector_String ------------------------------- - Bridge& operator=(const vector_String& ) { return *this; } - vector_String toVectorString() { return vector_String(); } - operator vector_String() { return toVectorString(); } - - // ------------------------ vector_Point ------------------------------------ - Bridge& operator=(const vector_Point& ) { return *this; } - vector_Point toVectorPoint() { return vector_Point(); } - operator vector_Point() { return toVectorPoint(); } - - // ------------------------ vector_uchar ------------------------------------ - Bridge& operator=(const vector_uchar& ) { return *this; } - vector_uchar toVectorUchar() { return vector_uchar(); } - operator vector_uchar() { return toVectorUchar(); } - - // ------------------------ vector_vector_char ------------------------------ - Bridge& operator=(const vector_vector_char& ) { return *this; } - vector_vector_char toVectorVectorChar() { return vector_vector_char(); } - operator vector_vector_char() { return toVectorVectorChar(); } - - // ------------------------ vector_vector_DMatch --------------------------- - Bridge& operator=(const vector_vector_DMatch& ) { return *this; } - vector_vector_DMatch toVectorVectorDMatch() { return vector_vector_DMatch(); } - operator vector_vector_DMatch() { return toVectorVectorDMatch(); } - - - - - // -------------------------------------------------------------------------- - // OPENCV COMPOUND TYPES - // -------------------------------------------------------------------------- - - // --------------------------- Ptr_StereoBM ----------------------------- - Bridge& operator=(const Ptr_StereoBM& ) { return *this; } - Ptr_StereoBM toPtrStereoBM() { return Ptr_StereoBM(); } - operator Ptr_StereoBM() { return toPtrStereoBM(); } - - // --------------------------- Ptr_StereoSGBM --------------------------- - Bridge& operator=(const Ptr_StereoSGBM& ) { return *this; } - Ptr_StereoSGBM toPtrStereoSGBM() { return Ptr_StereoSGBM(); } - operator Ptr_StereoSGBM() { return toPtrStereoSGBM(); } - - // --------------------------- Ptr_FeatureDetector ---------------------- - Bridge& operator=(const Ptr_FeatureDetector& ) { return *this; } - Ptr_FeatureDetector toPtrFeatureDetector() { return Ptr_FeatureDetector(); } - operator Ptr_FeatureDetector() { return toPtrFeatureDetector(); } - - // --------------------------- Ptr_CLAHE -------------------------------- - Bridge& operator=(const Ptr_CLAHE& ) { return *this; } - Ptr_CLAHE toPtrCLAHE() { return Ptr_CLAHE(); } - operator Ptr_CLAHE() { return toPtrCLAHE(); } - - // --------------------------- Ptr_LineSegmentDetector ------------------ - Bridge& operator=(const Ptr_LineSegmentDetector& ) { return *this; } - Ptr_LineSegmentDetector toPtrLineSegmentDetector() { return Ptr_LineSegmentDetector(); } - operator Ptr_LineSegmentDetector() { return toPtrLineSegmentDetector(); } - - // --------------------------- Ptr_AlignMTB ----------------------------- - Bridge& operator=(const Ptr_AlignMTB& ) { return *this; } - Ptr_AlignMTB toPtrAlignMTB() { return Ptr_AlignMTB(); } - operator Ptr_AlignMTB() { return toPtrAlignMTB(); } - - // --------------------------- Ptr_CalibrateDebevec ------------------- - Bridge& operator=(const Ptr_CalibrateDebevec& ) { return *this; } - Ptr_CalibrateDebevec toPtrCalibrateDebevec() { return Ptr_CalibrateDebevec(); } - operator Ptr_CalibrateDebevec() { return toPtrCalibrateDebevec(); } - - // --------------------------- Ptr_CalibrateRobertson ------------------- - Bridge& operator=(const Ptr_CalibrateRobertson& ) { return *this; } - Ptr_CalibrateRobertson toPtrCalibrateRobertson() { return Ptr_CalibrateRobertson(); } - operator Ptr_CalibrateRobertson() { return toPtrCalibrateRobertson(); } - - // --------------------------- Ptr_DenseOpticalFlow ------------------- - Bridge& operator=(const Ptr_DenseOpticalFlow& ) { return *this; } - Ptr_DenseOpticalFlow toPtrDenseOpticalFlow() { return Ptr_DenseOpticalFlow(); } - operator Ptr_DenseOpticalFlow() { return toPtrDenseOpticalFlow(); } - - // --------------------------- Ptr_MergeDebevec ----------------------- - Bridge& operator=(const Ptr_MergeDebevec& ) { return *this; } - Ptr_MergeDebevec toPtrMergeDebevec() { return Ptr_MergeDebevec(); } - operator Ptr_MergeDebevec() { return toPtrMergeDebevec(); } - - // --------------------------- Ptr_MergeMertens ----------------------- - Bridge& operator=(const Ptr_MergeMertens& ) { return *this; } - Ptr_MergeMertens toPtrMergeMertens() { return Ptr_MergeMertens(); } - operator Ptr_MergeMertens() { return toPtrMergeMertens(); } - - // --------------------------- Ptr_MergeRobertson ----------------------- - Bridge& operator=(const Ptr_MergeRobertson& ) { return *this; } - Ptr_MergeRobertson toPtrMergeRobertson() { return Ptr_MergeRobertson(); } - operator Ptr_MergeRobertson() { return toPtrMergeRobertson(); } - - // --------------------------- Ptr_Tonemap ------------------------------ - Bridge& operator=(const Ptr_Tonemap& ) { return *this; } - Ptr_Tonemap toPtrTonemap() { return Ptr_Tonemap(); } - operator Ptr_Tonemap() { return toPtrTonemap(); } - - // --------------------------- Ptr_TonemapDrago ------------------------- - Bridge& operator=(const Ptr_TonemapDrago& ) { return *this; } - Ptr_TonemapDrago toPtrTonemapDrago() { return Ptr_TonemapDrago(); } - operator Ptr_TonemapDrago() { return toPtrTonemapDrago(); } - - // --------------------------- Ptr_TonemapDurand ------------------------ - Bridge& operator=(const Ptr_TonemapDurand& ) { return *this; } - Ptr_TonemapDurand toPtrTonemapDurand() { return Ptr_TonemapDurand(); } - operator Ptr_TonemapDurand() { return toPtrTonemapDurand(); } - - // --------------------------- Ptr_TonemapMantiuk ----------------------- - Bridge& operator=(const Ptr_TonemapMantiuk& ) { return *this; } - Ptr_TonemapMantiuk toPtrTonemapMantiuk() { return Ptr_TonemapMantiuk(); } - operator Ptr_TonemapMantiuk() { return toPtrTonemapMantiuk(); } - - // --------------------------- Ptr_TonemapReinhard ---------------------- - Bridge& operator=(const Ptr_TonemapReinhard& ) { return *this; } - Ptr_TonemapReinhard toPtrTonemapReinhard() { return Ptr_TonemapReinhard(); } - operator Ptr_TonemapReinhard() { return toPtrTonemapReinhard(); } -}; // class Bridge - - - -// -------------------------------------------------------------------------- -// SPECIALIZATIONS -// -------------------------------------------------------------------------- - -/*! - * @brief template specialization for inheriting types - * - * This template specialization attempts to preserve the best mapping - * between OpenCV and Matlab types. Matlab uses double types almost universally, so - * all floating float types are converted to doubles. - * Unfortunately OpenCV does not have a native logical type, so - * that gets mapped to an unsigned 8-bit value - */ -template <> -matlab::MxArray Bridge::FromMat(const cv::Mat& mat) { - switch (mat.depth()) { - case CV_8U: return FromMat(mat); - case CV_8S: return FromMat(mat); - case CV_16U: return FromMat(mat); - case CV_16S: return FromMat(mat); - case CV_32S: return FromMat(mat); - case CV_32F: return FromMat(mat); //NOTE: Matlab uses double as native type! - case CV_64F: return FromMat(mat); - default: matlab::error("Attempted to convert from unknown class"); - } - return matlab::MxArray(); -} - -/*! - * @brief template specialization for inheriting types - * - * This template specialization attempts to preserve the best mapping - * between Matlab and OpenCV types. OpenCV has poor support for double precision - * types, so all floating point types are cast to float. Logicals get cast - * to unsignd 8-bit value. - */ -template <> -cv::Mat Bridge::toMat() const { - switch (ptr_.ID()) { - case mxINT8_CLASS: return toMat(); - case mxUINT8_CLASS: return toMat(); - case mxINT16_CLASS: return toMat(); - case mxUINT16_CLASS: return toMat(); - case mxINT32_CLASS: return toMat(); - case mxUINT32_CLASS: return toMat(); - case mxINT64_CLASS: return toMat(); - case mxUINT64_CLASS: return toMat(); - case mxSINGLE_CLASS: return toMat(); - case mxDOUBLE_CLASS: return toMat(); //NOTE: OpenCV uses float as native type! - case mxCHAR_CLASS: return toMat(); - case mxLOGICAL_CLASS: return toMat(); - default: matlab::error("Attempted to convert from unknown class"); - } - return cv::Mat(); -} - -Bridge& Bridge::operator=(const cv::Mat& mat) { ptr_ = FromMat(mat); return *this; } -cv::Mat Bridge::toMat() const { return toMat(); } - - -// ---------------------------------------------------------------------------- -// MATRIX TRANSPOSE -// ---------------------------------------------------------------------------- - - -template -void deepCopyAndTranspose(const cv::Mat& in, matlab::MxArray& out) { - matlab::conditionalError(static_cast(in.rows) == out.rows(), "Matrices must have the same number of rows"); - matlab::conditionalError(static_cast(in.cols) == out.cols(), "Matrices must have the same number of cols"); - matlab::conditionalError(static_cast(in.channels()) == out.channels(), "Matrices must have the same number of channels"); - std::vector channels; - cv::split(in, channels); - for (size_t c = 0; c < out.channels(); ++c) { - cv::transpose(channels[c], channels[c]); - cv::Mat outmat(out.cols(), out.rows(), cv::DataType::type, - static_cast(out.real() + out.cols()*out.rows()*c)); - channels[c].convertTo(outmat, cv::DataType::type); - } - - //const InputScalar* inp = in.ptr(0); - //OutputScalar* outp = out.real(); - //gemt('R', out.rows(), out.cols(), inp, in.step1(), outp, out.rows()); -} - -template -void deepCopyAndTranspose(const matlab::MxArray& in, cv::Mat& out) { - matlab::conditionalError(in.rows() == static_cast(out.rows), "Matrices must have the same number of rows"); - matlab::conditionalError(in.cols() == static_cast(out.cols), "Matrices must have the same number of cols"); - matlab::conditionalError(in.channels() == static_cast(out.channels()), "Matrices must have the same number of channels"); - std::vector channels; - for (size_t c = 0; c < in.channels(); ++c) { - cv::Mat outmat; - cv::Mat inmat(in.cols(), in.rows(), cv::DataType::type, - static_cast(const_cast(in.real() + in.cols()*in.rows()*c))); - inmat.convertTo(outmat, cv::DataType::type); - cv::transpose(outmat, outmat); - channels.push_back(outmat); - } - cv::merge(channels, out); - - //const InputScalar* inp = in.real(); - //OutputScalar* outp = out.ptr(0); - //gemt('C', in.rows(), in.cols(), inp, in.rows(), outp, out.step1()); -} - - - -} // namespace bridge -} // namespace cv - -#endif diff --git a/modules/matlab/include/opencv2/matlab/map.hpp b/modules/matlab/include/opencv2/matlab/map.hpp deleted file mode 100644 index 4d4fc649cb..0000000000 --- a/modules/matlab/include/opencv2/matlab/map.hpp +++ /dev/null @@ -1,91 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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 OPENCV_MAP_HPP_ -#define OPENCV_MAP_HPP_ - -namespace matlab { -#if __cplusplus >= 201103L - - // If we have C++11 support, we just want to use unordered_map -#include -template -using Map = std::unordered_map; - -#else - -// If we don't have C++11 support, we wrap another map implementation -// in the same public API as unordered_map -#include -#include - -template -class Map { -private: - std::map map_; -public: - // map[key] = val; - ValueType& operator[] (const KeyType& k) { - return map_[k]; - } - - // map.at(key) = val (throws) - ValueType& at(const KeyType& k) { - typename std::map::iterator it; - it = map_.find(k); - if (it == map_.end()) throw std::out_of_range("Key not found"); - return *it; - } - - // val = map.at(key) (throws, const) - const ValueType& at(const KeyType& k) const { - typename std::map::const_iterator it; - it = map_.find(k); - if (it == map_.end()) throw std::out_of_range("Key not found"); - return *it; - } -}; - -} // namespace matlab - -#endif -#endif diff --git a/modules/matlab/include/opencv2/matlab/mxarray.hpp b/modules/matlab/include/opencv2/matlab/mxarray.hpp deleted file mode 100644 index ba8c64c496..0000000000 --- a/modules/matlab/include/opencv2/matlab/mxarray.hpp +++ /dev/null @@ -1,684 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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 OPENCV_MXARRAY_HPP_ -#define OPENCV_MXARRAY_HPP_ - -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus > 201103 -#include -typedef std::unordered_set StringSet; -#else -#include -typedef std::set StringSet; -#endif - -/* - * All recent versions of Matlab ship with the MKL library which contains - * a blas extension called mkl_?omatcopy(). This defines an out-of-place - * copy and transpose operation. - * - * The mkl library is in ${MATLAB_ROOT}/bin/${MATLAB_MEXEXT}/libmkl... - * Matlab does not ship headers for the mkl functions, so we define them - * here. - * - */ -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __cplusplus -} -#endif - -namespace matlab { -// ---------------------------------------------------------------------------- -// PREDECLARATIONS -// ---------------------------------------------------------------------------- -class MxArray; -typedef std::vector MxArrayVector; - -/*! - * @brief raise error if condition fails - * - * This is a conditional wrapper for mexErrMsgTxt. If the conditional - * expression fails, an error is raised and the mex function returns - * to Matlab, otherwise this function does nothing - */ -static void conditionalError(bool expr, const std::string& str) { - if (!expr) mexErrMsgTxt(std::string("condition failed: ").append(str).c_str()); -} - -/*! - * @brief raise an error - * - * This function is a wrapper around mexErrMsgTxt - */ -static void error(const std::string& str) { - mexErrMsgTxt(str.c_str()); -} - - -// ---------------------------------------------------------------------------- -// MATLAB TRAITS -// ---------------------------------------------------------------------------- -class DefaultTraits {}; -class InheritType {}; - -template class Traits { -public: - static const mxClassID ScalarType = mxUNKNOWN_CLASS; - static const mxComplexity Complex = mxCOMPLEX; - static const mxComplexity Real = mxREAL; - static std::string ToString() { return "Unknown/Unsupported"; } -}; -// bool -template<> class Traits { -public: - static const mxClassID ScalarType = mxLOGICAL_CLASS; - static std::string ToString() { return "boolean"; } -}; -// uint8_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT8_CLASS; - static std::string ToString() { return "uint8_t"; } -}; -// int8_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT8_CLASS; - static std::string ToString() { return "int8_t"; } -}; -// uint16_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT16_CLASS; - static std::string ToString() { return "uint16_t"; } -}; -// int16_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT16_CLASS; - static std::string ToString() { return "int16_t"; } -}; -// uint32_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT32_CLASS; - static std::string ToString() { return "uint32_t"; } -}; -// int32_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT32_CLASS; - static std::string ToString() { return "int32_t"; } -}; -// uint64_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxUINT64_CLASS; - static std::string ToString() { return "uint64_t"; } -}; -// int64_t -template<> class Traits { -public: - static const mxClassID ScalarType = mxINT64_CLASS; - static std::string ToString() { return "int64_t"; } -}; -// float -template<> class Traits { -public: - static const mxClassID ScalarType = mxSINGLE_CLASS; - static std::string ToString() { return "float"; } -}; -// double -template<> class Traits { -public: - static const mxClassID ScalarType = mxDOUBLE_CLASS; - static std::string ToString() { return "double"; } -}; -// char -template<> class Traits { -public: - static const mxClassID ScalarType = mxCHAR_CLASS; - static std::string ToString() { return "char"; } -}; -// inherited type -template<> class Traits { -public: - static std::string ToString() { return "Inherited type"; } -}; - - - -// ---------------------------------------------------------------------------- -// MXARRAY -// ---------------------------------------------------------------------------- - - -/*! - * @class MxArray - * @brief A thin wrapper around Matlab's mxArray types - * - * MxArray provides a thin object oriented wrapper around Matlab's - * native mxArray type which exposes most of the functionality of the - * Matlab interface, but in a more C++ manner. MxArray objects are scoped, - * so you can freely create and destroy them without worrying about memory - * management. If you wish to pass the underlying mxArray* representation - * back to Matlab as an lvalue, see the releaseOwnership() method - * - * MxArrays can be directly converted into OpenCV mat objects and std::string - * objects, since there is a natural mapping between these types. More - * complex types are mapped through the Bridge which does custom conversions - * such as MxArray --> cv::Keypoints, etc - */ -class MxArray { -private: - mxArray* ptr_; - bool owns_; - - /*! - * @brief swap all members of this and other - * - * the swap method is used by the assignment and move constructors - * to swap the members of two MxArrays, leaving both in destructible states - */ - friend void swap(MxArray& first, MxArray& second) { - using std::swap; - swap(first.ptr_, second.ptr_); - swap(first.owns_, second.owns_); - } - - void dealloc() { - if (owns_ && ptr_) { mxDestroyArray(ptr_); ptr_ = NULL; owns_ = false; } - } -public: - // -------------------------------------------------------------------------- - // CONSTRUCTORS - // -------------------------------------------------------------------------- - /*! - * @brief default constructor - * - * Construct a valid 0x0 matrix (so all other methods do not need validity checks) - */ - MxArray() : ptr_(mxCreateDoubleMatrix(0, 0, matlab::Traits<>::Real)), owns_(true) {} - - /*! - * @brief destructor - * - * The destructor deallocates any data allocated by mxCreate* methods only - * if the object is owned - */ - virtual ~MxArray() { - dealloc(); - } - - /*! - * @brief inheriting constructor - * - * Inherit an mxArray from Matlab. Don't claim ownership of the array, - * just encapsulate it - */ - MxArray(const mxArray* ptr) : ptr_(const_cast(ptr)), owns_(false) {} - MxArray& operator=(const mxArray* ptr) { - dealloc(); - ptr_ = const_cast(ptr); - owns_ = false; - return *this; - } - - /*! - * @brief explicit typed constructor - * - * This constructor explicitly creates an MxArray of the given size and type. - */ - MxArray(size_t m, size_t n, size_t k, mxClassID id, mxComplexity com = matlab::Traits<>::Real) - : ptr_(NULL), owns_(true) { - mwSize dims[] = { static_cast(m), static_cast(n), static_cast(k) }; - ptr_ = mxCreateNumericArray(3, dims, id, com); - } - - /*! - * @brief explicit tensor constructor - * - * Explicitly construct a tensor of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Tensor(size_t m, size_t n, size_t k=1) { - return MxArray(m, n, k, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit matrix constructor - * - * Explicitly construct a matrix of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Matrix(size_t m, size_t n) { - return MxArray(m, n, 1, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit vector constructor - * - * Explicitly construct a vector of given size and type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Vector(size_t m) { - return MxArray(m, 1, 1, matlab::Traits::ScalarType); - } - - /*! - * @brief explicit scalar constructor - * - * Explicitly construct a scalar of given type. Since constructors cannot - * be explicitly templated, this is a static factory method - */ - template - static MxArray Scalar(ScalarType value = 0) { - MxArray s(1, 1, 1, matlab::Traits::ScalarType); - s.real()[0] = value; - return s; - } - - /*! - * @brief copy constructor - * - * All copies are deep copies. If you have a C++11 compatible compiler, prefer - * move construction to copy construction - */ - MxArray(const MxArray& other) : ptr_(mxDuplicateArray(other.ptr_)), owns_(true) {} - - /*! - * @brief copy-and-swap assignment - * - * This assignment operator uses the copy and swap idiom to provide a strong - * exception guarantee when swapping two objects. - * - * Note in particular that the other MxArray is passed by value, thus invoking - * the copy constructor which performs a deep copy of the input. The members of - * this and other are then swapped - */ - MxArray& operator=(MxArray other) { - swap(*this, other); - return *this; - } -#if __cplusplus >= 201103L - /* - * @brief C++11 move constructor - * - * When C++11 support is available, move construction is used to move returns - * out of functions, etc. This is much fast than copy construction, since the - * move constructed object replaced itself with a default constructed MxArray, - * which is of size 0 x 0. - */ - MxArray(MxArray&& other) : MxArray() { - swap(*this, other); - } -#endif - - /* - * @brief release ownership to allow return into Matlab workspace - * - * MxArray is not directly convertible back to mxArray types through assignment - * because the MxArray may have been allocated on the free store, making it impossible - * to know whether the returned pointer will be released by someone else or not. - * - * Since Matlab requires mxArrays be passed back into the workspace, the only way - * to achieve that is through this function, which explicitly releases ownership - * of the object, assuming the Matlab interpreter receving the object will delete - * it at a later time - * - * e.g. - * { - * MxArray A = MxArray::Matrix(5, 5); // allocates memory - * MxArray B = MxArray::Matrix(5, 5); // ditto - * plhs[0] = A; // not allowed!! - * plhs[0] = A.releaseOwnership(); // makes explicit that ownership is being released - * } // end of scope. B is released, A isn't - * - */ - mxArray* releaseOwnership() { - owns_ = false; - return ptr_; - } - - MxArray field(const std::string& name) { return MxArray(mxGetField(ptr_, 0, name.c_str())); } - - template - Scalar* real() { return static_cast(mxGetData(ptr_)); } - - template - Scalar* imag() { return static_cast(mxGetImagData(ptr_)); } - - template - const Scalar* real() const { return static_cast(mxGetData(ptr_)); } - - template - const Scalar* imag() const { return static_cast(mxGetData(ptr_)); } - - template - Scalar scalar() const { return static_cast(mxGetData(ptr_))[0]; } - - std::string toString() const { - conditionalError(isString(), "Attempted to convert non-string type to string"); - std::string str(size(), '\0'); - mxGetString(ptr_, const_cast(str.data()), str.size()+1); - return str; - } - - size_t size() const { return mxGetNumberOfElements(ptr_); } - bool empty() const { return size() == 0; } - size_t rows() const { return mxGetDimensions(ptr_)[0]; } - size_t cols() const { return mxGetDimensions(ptr_)[1]; } - size_t channels() const { return (mxGetNumberOfDimensions(ptr_) > 2) ? mxGetDimensions(ptr_)[2] : 1; } - bool isComplex() const { return mxIsComplex(ptr_); } - bool isNumeric() const { return mxIsNumeric(ptr_); } - bool isLogical() const { return mxIsLogical(ptr_); } - bool isString() const { return mxIsChar(ptr_); } - bool isCell() const { return mxIsCell(ptr_); } - bool isStructure() const { return mxIsStruct(ptr_); } - bool isClass(const std::string& name) const { return mxIsClass(ptr_, name.c_str()); } - std::string className() const { return std::string(mxGetClassName(ptr_)); } - mxClassID ID() const { return mxGetClassID(ptr_); } - -}; - - -// ---------------------------------------------------------------------------- -// ARGUMENT PARSER -// ---------------------------------------------------------------------------- - -/*! @class ArgumentParser - * @brief parses inputs to a method and resolves the argument names. - * - * The ArgumentParser resolves the inputs to a method. It checks that all - * required arguments are specified and also allows named optional arguments. - * For example, the C++ function: - * void randn(Mat& mat, Mat& mean=Mat(), Mat& std=Mat()); - * could be called in Matlab using any of the following signatures: - * \code - * out = randn(in); - * out = randn(in, 0, 1); - * out = randn(in, 'mean', 0, 'std', 1); - * \endcode - * - * ArgumentParser also enables function overloading by allowing users - * to add variants to a method. For example, there may be two C++ sum() methods: - * \code - * double sum(Mat& mat); % sum elements of a matrix - * Mat sum(Mat& A, Mat& B); % add two matrices - * \endcode - * - * by adding two variants to ArgumentParser, the correct underlying sum - * method can be called. If the function call is ambiguous, the - * ArgumentParser will fail with an error message. - * - * The previous example could be parsed as: - * \code - * // set up the Argument parser - * ArgumentParser arguments; - * arguments.addVariant("elementwise", 1); - * arguments.addVariant("matrix", 2); - * - * // parse the arguments - * std::vector inputs; - * inputs = arguments.parse(std::vector(prhs, prhs+nrhs)); - * - * // if we get here, one unique variant is valid - * if (arguments.variantIs("elementwise")) { - * // call elementwise sum() - * } - * \endcode - */ -class ArgumentParser { -private: - struct Variant; - typedef std::string String; - typedef std::vector StringVector; - typedef std::vector IndexVector; - typedef std::vector VariantVector; - - /* @class Variant - * @brief Describes a variant of arguments to a method - * - * When addVariant() is called on an instance to ArgumentParser, this class - * holds the the information that decribes that variant. The parse() method - * of ArgumentParser then attempts to match a Variant, given a set of - * inputs for a method invocation. - */ - class Variant { - private: - String name_; - size_t Nreq_; - size_t Nopt_; - StringVector keys_; - IndexVector order_; - bool valid_; - size_t nparsed_; - size_t nkeys_; - size_t working_opt_; - bool expecting_val_; - bool using_named_; - size_t find(const String& key) const { - return std::find(keys_.begin(), keys_.end(), key) - keys_.begin(); - } - public: - /*! @brief default constructor */ - Variant() : Nreq_(0), Nopt_(0), valid_(false) {} - /*! @brief construct a new variant spec */ - Variant(const String& name, size_t Nreq, size_t Nopt, const StringVector& keys) - : name_(name), Nreq_(Nreq), Nopt_(Nopt), keys_(keys), - order_(Nreq+Nopt, Nreq+2*Nopt), valid_(true), nparsed_(0), nkeys_(0), - working_opt_(0), expecting_val_(false), using_named_(false) {} - /*! @brief the name of the variant */ - String name() const { return name_; } - /*! @brief return the total number of arguments the variant can take */ - size_t size() const { return Nreq_ + Nopt_; } - /*! @brief has the variant been fulfilled? */ - bool fulfilled() const { return (valid_ && nparsed_ >= Nreq_ && !expecting_val_); } - /*! @brief is the variant in a valid state (though not necessarily fulfilled) */ - bool valid() const { return valid_; } - /*! @brief check if the named argument exists in the variant */ - bool exist(const String& key) const { return find(key) != keys_.size(); } - /*! @brief retrieve the order mapping raw inputs to their position in the variant */ - const IndexVector& order() const { return order_; } - size_t order(size_t n) const { return order_[n]; } - /*! @brief attempt to parse the next argument as a value */ - bool parseNextAsValue() { - if (!valid_) {} - else if ((using_named_ && !expecting_val_) || (nparsed_-nkeys_ == Nreq_+Nopt_)) { valid_ = false; } - else if (nparsed_ < Nreq_) { order_[nparsed_] = nparsed_; } - else if (!using_named_) { order_[nparsed_] = nparsed_; } - else if (using_named_ && expecting_val_) { order_[Nreq_ + working_opt_] = nparsed_; } - nparsed_++; - expecting_val_ = false; - return valid_; - } - /*! @biref attempt to parse the next argument as a name (key) */ - bool parseNextAsKey(const String& key) { - if (!valid_) {} - else if ((nparsed_ < Nreq_) || (nparsed_-nkeys_ == Nreq_+Nopt_)) { valid_ = false; } - else if (using_named_ && expecting_val_) { valid_ = false; } - else if ((working_opt_ = find(key)) == keys_.size()) { valid_ = false; } - else { using_named_ = true; expecting_val_ = true; nkeys_++; nparsed_++; } - return valid_; - } - String toString(const String& method_name="f") const { - int req_begin = 0, req_end = 0, opt_begin = 0, opt_end = 0; - std::ostringstream s; - // f(...) - s << method_name << "("; - // required arguments - req_begin = s.str().size(); - for (size_t n = 0; n < Nreq_; ++n) { s << "src" << n+1 << (n != Nreq_-1 ? ", " : ""); } - req_end = s.str().size(); - if (Nreq_ && Nopt_) s << ", "; - // optional arguments - opt_begin = s.str().size(); - for (size_t n = 0; n < keys_.size(); ++n) { s << "'" << keys_[n] << "', " << keys_[n] << (n != Nopt_-1 ? ", " : ""); } - opt_end = s.str().size(); - s << ");"; - if (Nreq_ + Nopt_ == 0) return s.str(); - // underscores - String under = String(req_begin, ' ') + String(req_end-req_begin, '-') - + String(std::max(opt_begin-req_end,0), ' ') + String(opt_end-opt_begin, '-'); - s << "\n" << under; - // required and optional sets - String req_set(req_end-req_begin, ' '); - String opt_set(opt_end-opt_begin, ' '); - if (!req_set.empty() && req_set.size() < 8) req_set.replace((req_set.size()-3)/2, 3, "req"); - if (req_set.size() > 7) req_set.replace((req_set.size()-8)/2, 8, "required"); - if (!opt_set.empty() && opt_set.size() < 8) opt_set.replace((opt_set.size()-3)/2, 3, "opt"); - if (opt_set.size() > 7) opt_set.replace((opt_set.size()-8)/2, 8, "optional"); - String set = String(req_begin, ' ') + req_set + String(std::max(opt_begin-req_end,0), ' ') + opt_set; - s << "\n" << set; - return s.str(); - } - }; - /*! @brief given an input and output vector of arguments, and a variant spec, sort */ - void sortArguments(Variant& v, MxArrayVector& in, MxArrayVector& out) { - // allocate the output array with ALL arguments - out.resize(v.size()); - // reorder the inputs based on the variant ordering - for (size_t n = 0; n < v.size(); ++n) { - if (v.order(n) >= in.size()) continue; - swap(in[v.order(n)], out[n]); - } - } - VariantVector variants_; - String valid_; - String method_name_; -public: - ArgumentParser(const String& method_name) : method_name_(method_name) {} - - /*! @brief add a function call variant to the parser - * - * Adds a function-call signature to the parser. The function call *must* be - * unique either in its number of arguments, or in the named-syntax. - * Currently this function does not check whether that invariant stands true. - * - * This function is variadic. If should be called as follows: - * addVariant(2, 2, 'opt_1_name', 'opt_2_name'); - */ - void addVariant(const String& name, size_t nreq, size_t nopt = 0, ...) { - StringVector keys; - va_list opt; - va_start(opt, nopt); - for (size_t n = 0; n < nopt; ++n) keys.push_back(va_arg(opt, const char*)); - addVariant(name, nreq, nopt, keys); - } - void addVariant(const String& name, size_t nreq, size_t nopt, StringVector keys) { - variants_.push_back(Variant(name, nreq, nopt, keys)); - } - - /*! @brief check if the valid variant is the key name */ - bool variantIs(const String& name) { - return name.compare(valid_) == 0; - } - - /*! @brief parse a vector of input arguments - * - * This method parses a vector of input arguments, attempting to match them - * to a Variant spec. For each input, the method attempts to cull any - * Variants which don't match the given inputs so far. - * - * Once all inputs have been parsed, if there is one unique spec remaining, - * the output MxArray vector gets populated with the arguments, with named - * arguments removed. Any optional arguments that have not been encountered - * are set to an empty array. - * - * If multiple variants or no variants match the given call, an error - * message is emitted - */ - MxArrayVector parse(const MxArrayVector& inputs) { - // allocate the outputs - String variant_string; - MxArrayVector outputs; - VariantVector candidates = variants_; - - // iterate over the inputs, attempting to match a variant - for (MxArrayVector::const_iterator input = inputs.begin(); input != inputs.end(); ++input) { - String name = input->isString() ? input->toString() : String(); - for (VariantVector::iterator candidate = candidates.begin(); candidate < candidates.end(); ++candidate) { - candidate->exist(name) ? candidate->parseNextAsKey(name) : candidate->parseNextAsValue(); - } - } - - // make sure the candidates have been fulfilled - for (VariantVector::iterator candidate = candidates.begin(); candidate < candidates.end(); ++candidate) { - if (!candidate->fulfilled()) candidate = candidates.erase(candidate)--; - } - - // if there is not a unique candidate, throw an error - for (VariantVector::iterator variant = variants_.begin(); variant != variants_.end(); ++variant) { - variant_string += "\n" + variant->toString(method_name_); - } - - // if there is not a unique candidate, throw an error - if (candidates.size() > 1) { - error(String("Call to method is ambiguous. Valid variants are:") - .append(variant_string).append("\nUse named arguments to disambiguate call")); - } - if (candidates.size() == 0) { - error(String("No matching method signatures for given arguments. Valid variants are:").append(variant_string)); - } - - // Unique candidate! - valid_ = candidates[0].name(); - sortArguments(candidates[0], const_cast(inputs), outputs); - return outputs; - } -}; - -} // namespace matlab - -#endif diff --git a/modules/matlab/include/opencv2/matlab/transpose.hpp b/modules/matlab/include/opencv2/matlab/transpose.hpp deleted file mode 100644 index 7331cd0ec8..0000000000 --- a/modules/matlab/include/opencv2/matlab/transpose.hpp +++ /dev/null @@ -1,141 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this -// license. If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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 OPENCV_TRANSPOSE_HPP_ -#define OPENCV_TRANSPOSE_HPP_ - -template -void transposeBlock(const size_t M, const size_t N, const InputScalar* src, size_t lda, OutputScalar* dst, size_t ldb) { - InputScalar cache[16]; - // copy the source into the cache contiguously - for (size_t n = 0; n < N; ++n) - for (size_t m = 0; m < M; ++m) - cache[m+n*4] = src[m+n*lda]; - // copy the destination out of the cache contiguously - for (size_t m = 0; m < M; ++m) - for (size_t n = 0; n < N; ++n) - dst[n+m*ldb] = cache[m+n*4]; -} - -template -void transpose4x4(const InputScalar* src, size_t lda, OutputScalar* dst, size_t ldb) { - InputScalar cache[16]; - // copy the source into the cache contiguously - cache[0] = src[0]; cache[1] = src[1]; cache[2] = src[2]; cache[3] = src[3]; src+=lda; - cache[4] = src[0]; cache[5] = src[1]; cache[6] = src[2]; cache[7] = src[3]; src+=lda; - cache[8] = src[0]; cache[9] = src[1]; cache[10] = src[2]; cache[11] = src[3]; src+=lda; - cache[12] = src[0]; cache[13] = src[1]; cache[14] = src[2]; cache[15] = src[3]; src+=lda; - // copy the destination out of the contiguously - dst[0] = cache[0]; dst[1] = cache[4]; dst[2] = cache[8]; dst[3] = cache[12]; dst+=ldb; - dst[0] = cache[1]; dst[1] = cache[5]; dst[2] = cache[9]; dst[3] = cache[13]; dst+=ldb; - dst[0] = cache[2]; dst[1] = cache[6]; dst[2] = cache[10]; dst[3] = cache[14]; dst+=ldb; - dst[0] = cache[3]; dst[1] = cache[7]; dst[2] = cache[11]; dst[3] = cache[15]; dst+=ldb; -} - - -/* - * Vanilla copy, transpose and cast - */ -template -void gemt(const char major, const size_t M, const size_t N, const InputScalar* a, size_t lda, OutputScalar* b, size_t ldb) { - - // 1x1 transpose is just copy - if (M == 1 && N == 1) { *b = *a; return; } - - // get the interior 4x4 blocks, and the extra skirting - const size_t Fblock = (major == 'R') ? N/4 : M/4; - const size_t Frem = (major == 'R') ? N%4 : M%4; - const size_t Sblock = (major == 'R') ? M/4 : N/4; - const size_t Srem = (major == 'R') ? M%4 : N%4; - - // if less than 4x4, invoke the block transpose immediately - if (M < 4 && N < 4) { transposeBlock(Frem, Srem, a, lda, b, ldb); return; } - - // transpose 4x4 blocks - const InputScalar* aptr = a; - OutputScalar* bptr = b; - for (size_t second = 0; second < Sblock; ++second) { - aptr = a + second*lda; - bptr = b + second; - for (size_t first = 0; first < Fblock; ++first) { - transposeBlock(4, 4, aptr, lda, bptr, ldb); - //transpose4x4(aptr, lda, bptr, ldb); - aptr+=4; - bptr+=4*ldb; - } - // transpose trailing blocks on primary dimension - transposeBlock(Frem, 4, aptr, lda, bptr, ldb); - } - // transpose trailing blocks on secondary dimension - aptr = a + 4*Sblock*lda; - bptr = b + 4*Sblock; - for (size_t first = 0; first < Fblock; ++first) { - transposeBlock(4, Srem, aptr, lda, bptr, ldb); - aptr+=4; - bptr+=4*ldb; - } - // transpose bottom right-hand corner - transposeBlock(Frem, Srem, aptr, lda, bptr, ldb); -} - -#ifdef __SSE2__ -/* - * SSE2 supported fast copy, transpose and cast - */ -#include - -template <> -void transpose4x4(const float* src, size_t lda, float* dst, size_t ldb) { - __m128 row0, row1, row2, row3; - row0 = _mm_loadu_ps(src); - row1 = _mm_loadu_ps(src+lda); - row2 = _mm_loadu_ps(src+2*lda); - row3 = _mm_loadu_ps(src+3*lda); - _MM_TRANSPOSE4_PS(row0, row1, row2, row3); - _mm_storeu_ps(dst, row0); - _mm_storeu_ps(dst+ldb, row1); - _mm_storeu_ps(dst+2*ldb, row2); - _mm_storeu_ps(dst+3*ldb, row3); -} - -#endif -#endif diff --git a/modules/matlab/test/CMakeLists.txt b/modules/matlab/test/CMakeLists.txt deleted file mode 100644 index c8c5177faa..0000000000 --- a/modules/matlab/test/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -set(TEST_PROXY ${CMAKE_CURRENT_BINARY_DIR}/test.proxy) -file(REMOVE ${TEST_PROXY}) - -# generate -# call the python executable to generate the Matlab gateways -add_custom_command( - OUTPUT ${TEST_PROXY} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/OpenCVTest.m ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/testsuite.m ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E touch ${TEST_PROXY} - COMMENT "Building Matlab tests" -) - -# targets -# opencv_matlab_sources --> opencv_matlab -add_custom_target(opencv_test_matlab ALL DEPENDS ${TEST_PROXY}) -add_dependencies(opencv_test_matlab ${the_module}) - -# run the matlab test suite -add_test(opencv_test_matlab - COMMAND ${MATLAB_BIN} "-nodisplay" "-r" "testsuite.m" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} -) diff --git a/modules/matlab/test/OpenCVTest.m b/modules/matlab/test/OpenCVTest.m deleted file mode 100644 index 67feedd93d..0000000000 --- a/modules/matlab/test/OpenCVTest.m +++ /dev/null @@ -1,166 +0,0 @@ -% Matlab binding test cases -% Uses Matlab's builtin testing framework -classdef OpenCVTest < matlab.unittest.TestCase - - methods(Test) - - % ------------------------------------------------------------------------- - % EXCEPTIONS - % Check that errors and exceptions are thrown correctly - % ------------------------------------------------------------------------- - - % check that std exception is thrown - function stdException(testcase) - try - std_exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % check that OpenCV exceptions are correctly caught - function cvException(testcase) - try - cv_exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % check that all exceptions are caught - function allException(testcase) - try - exception(); - testcase.verifyFail(); - catch - % TODO: Catch more specific exception - testcase.verifyTrue(true); - end - end - - % ------------------------------------------------------------------------- - % SIZES AND FILLS - % Check that matrices are correctly filled and resized - % ------------------------------------------------------------------------- - - % check that a matrix is correctly filled with random numbers - function randomFill(testcase) - sz = [7 11]; - mat = zeros(sz); - mat = cv.randn(mat, 0, 1); - testcase.verifyEqual(size(mat), sz, 'Matrix should not change size'); - testcase.verifyNotEqual(mat, zeros(sz), 'Matrix should be nonzero'); - end - - function transpose(testcase) - m = randn(19, 81); - mt1 = transpose(m); - mt2 = cv.transpose(m); - testcase.verifyEqual(size(mt1), size(mt2), 'Matrix transposed to incorrect dimensionality'); - testcase.verifyLessThan(norm(mt1 - mt2), 1e-8, 'Too much precision lost in tranposition'); - end - - % multiple return - function multipleReturn(testcase) - A = randn(10); - A = A'*A; - [V1, D1] = eig(A); D1 = diag(D1); - [~, D2, V2] = cv.eigen(A); - testcase.verifyLessThan(norm(V1 - V2), 1e-6, 'Too much precision lost in eigenvectors'); - testcase.verifyLessThan(norm(D1 - D2), 1e-6, 'Too much precision lost in eigenvalues'); - end - - % complex output from SVD - function complexOutputSVD(testcase) - A = randn(10); - [V1, D1] = eig(A); - [~, D2, V2] = cv.eigen(A); - testcase.verifyTrue(~isreal(V2) && size(V2,3) == 1, 'Output should be complex'); - testcase.verifyLessThan(norm(V1 - V2), 1e-6, 'Too much precision lost in eigenvectors'); - end - - % complex output from Fourier Transform - function complexOutputFFT(testcase) - A = randn(10); - F1 = fft2(A); - F2 = cv.dft(A, cv.DFT_COMPLEX_OUTPUT); - testcase.verifyTrue(~isreal(F2) && size(F2,3) == 1, 'Output should be complex'); - testcase.verifyLessThan(norm(F1 - F2), 1e-6, 'Too much precision lost in eigenvectors'); - end - - % ------------------------------------------------------------------------- - % TYPE CASTS - % Check that types are correctly cast - % ------------------------------------------------------------------------- - - % ------------------------------------------------------------------------- - % PRECISION - % Check that basic operations are performed with sufficient precision - % ------------------------------------------------------------------------- - - % check that summing elements is within reasonable precision - function sumElements(testcase) - a = randn(5000); - b = sum(a(:)); - c = cv.sum(a); - testcase.verifyLessThan(norm(b - c), 1e-8, 'Matrix reduction with insufficient precision'); - end - - - % check that adding two matrices is within reasonable precision - function addPrecision(testcase) - a = randn(50); - b = randn(50); - c = a+b; - d = cv.add(a, b); - testcase.verifyLessThan(norm(c - d), 1e-8, 'Matrices are added with insufficient precision'); - end - - % check that performing gemm is within reasonable precision - function gemmPrecision(testcase) - a = randn(10, 50); - b = randn(50, 10); - c = randn(10, 10); - alpha = 2.71828; - gamma = 1.61803; - d = alpha*a*b + gamma*c; - e = cv.gemm(a, b, alpha, c, gamma); - testcase.verifyLessThan(norm(d - e), 1e-8, 'Matrices are multiplied with insufficient precision'); - end - - - % ------------------------------------------------------------------------- - % MISCELLANEOUS - % Miscellaneous tests - % ------------------------------------------------------------------------- - - % check that cv::waitKey waits for at least specified time - function waitKey(testcase) - tic(); - cv.waitKey(500); - elapsed = toc(); - testcase.verifyGreaterThan(elapsed, 0.5, 'Elapsed time should be at least 0.5 seconds'); - end - - % check that highgui window can be created and destroyed - function createAndDestroyWindow(testcase) - try - cv.namedWindow('test window'); - catch - testcase.verifyFail('could not create window'); - end - - try - cv.destroyWindow('test window'); - catch - testcase.verifyFail('could not destroy window'); - end - testcase.verifyTrue(true); - end - - end -end diff --git a/modules/matlab/test/cv_exception.cpp b/modules/matlab/test/cv_exception.cpp deleted file mode 100644 index 100d294b85..0000000000 --- a/modules/matlab/test/cv_exception.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include -#include -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw cv::Exception(-1, "OpenCV exception thrown", __func__, __FILE__, __LINE__); - } catch(cv::Exception& e) { - mexErrMsgTxt(e.what()); - } catch(...) { - mexErrMsgTxt("Incorrect exception caught!"); - } -} diff --git a/modules/matlab/test/exception.cpp b/modules/matlab/test/exception.cpp deleted file mode 100644 index ac6788ac85..0000000000 --- a/modules/matlab/test/exception.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw 1; - } catch(...) { - mexErrMsgTxt("Uncaught exception occurred!"); - } -} diff --git a/modules/matlab/test/help.m b/modules/matlab/test/help.m deleted file mode 100644 index cfe86767d6..0000000000 --- a/modules/matlab/test/help.m +++ /dev/null @@ -1,15 +0,0 @@ -function help() -%CV.HELP display help information for the OpenCV Toolbox -% -% Calling: -% >> cv.help(); -% -% is equivalent to calling: -% >> help cv; -% -% It displays high-level usage information about the OpenCV toolbox -% along with resources to find out more information. -% -% See also: cv.buildInformation - help('cv'); -end diff --git a/modules/matlab/test/std_exception.cpp b/modules/matlab/test/std_exception.cpp deleted file mode 100644 index d30b82429d..0000000000 --- a/modules/matlab/test/std_exception.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * file: exception.cpp - * author: Hilton Bristow - * date: Wed, 19 Jun 2013 11:15:15 - * - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include -#include "mex.h" - -/* - * exception - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - throw std::exception(); - } catch(std::exception& e) { - mexErrMsgTxt(e.what()); - } catch(...) { - mexErrMsgTxt("Incorrect exception caught!"); - } -} diff --git a/modules/matlab/test/test_compiler.cpp b/modules/matlab/test/test_compiler.cpp deleted file mode 100644 index 07559ad502..0000000000 --- a/modules/matlab/test/test_compiler.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * file: rand.cpp - * author: A trusty code generator - * date: Wed, 19 Jun 2013 11:15:15 - * - * This file was autogenerated, do not modify. - * See LICENCE for full modification and redistribution details. - * Copyright 2013 The OpenCV Foundation - */ -#include "mex.h" -#include - -/* - * rand - * Gateway routine - * nlhs - number of return arguments - * plhs - pointers to return arguments - * nrhs - number of input arguments - * prhs - pointers to input arguments - */ -void mexFunction(int nlhs, mxArray* plhs[], - int nrhs, const mxArray* prhs[]) { - - // call the opencv function - // [out =] namespace.fun(src1, ..., srcn, dst1, ..., dstn, opt1, ..., optn); - try { - rand(); - } catch(...) { - mexErrMsgTxt("Uncaught exception occurred in rand"); - } -} diff --git a/modules/matlab/test/test_generator.hpp b/modules/matlab/test/test_generator.hpp deleted file mode 100644 index a03c390a65..0000000000 --- a/modules/matlab/test/test_generator.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/* - * a rather innocuous-looking function which is actually - * part of , so we can be reasonably sure its - * definition will be found - */ -#ifndef __OPENCV_MATLAB_TEST_GENERATOR_HPP_ -#define __OPENCV_MATLAB_TEST_GENERATOR_HPP_ - -namespace cv { - -CV_EXPORTS_W int rand( ); - -}; - -#endif diff --git a/modules/matlab/test/testsuite.m b/modules/matlab/test/testsuite.m deleted file mode 100644 index 9e7d44aab6..0000000000 --- a/modules/matlab/test/testsuite.m +++ /dev/null @@ -1,11 +0,0 @@ -% add the opencv bindings folder -addpath .. - -%setup the tests -opencv_tests = OpenCVTest(); - -%run the tests -result = run(opencv_tests); - -% shutdown -exit(); diff --git a/modules/ml/doc/boosting.rst b/modules/ml/doc/boosting.rst index 7c5bc83fce..2ba4a031f4 100644 --- a/modules/ml/doc/boosting.rst +++ b/modules/ml/doc/boosting.rst @@ -63,41 +63,30 @@ training examples are recomputed at each training iteration. Examples deleted at .. [FHT98] Friedman, J. H., Hastie, T. and Tibshirani, R. Additive Logistic Regression: a Statistical View of Boosting. Technical Report, Dept. of Statistics*, Stanford University, 1998. -CvBoostParams +Boost::Params ------------- -.. ocv:struct:: CvBoostParams : public CvDTreeParams +.. ocv:struct:: Boost::Params : public DTree::Params Boosting training parameters. - There is one structure member that you can set directly: - - .. ocv:member:: int split_criteria - - Splitting criteria used to choose optimal splits during a weak tree construction. Possible values are: - - * **CvBoost::DEFAULT** Use the default for the particular boosting method, see below. - * **CvBoost::GINI** Use Gini index. This is default option for Real AdaBoost; may be also used for Discrete AdaBoost. - * **CvBoost::MISCLASS** Use misclassification rate. This is default option for Discrete AdaBoost; may be also used for Real AdaBoost. - * **CvBoost::SQERR** Use least squares criteria. This is default and the only option for LogitBoost and Gentle AdaBoost. - -The structure is derived from :ocv:class:`CvDTreeParams` but not all of the decision tree parameters are supported. In particular, cross-validation is not supported. +The structure is derived from ``DTrees::Params`` but not all of the decision tree parameters are supported. In particular, cross-validation is not supported. All parameters are public. You can initialize them by a constructor and then override some of them directly if you want. -CvBoostParams::CvBoostParams +Boost::Params::Params ---------------------------- The constructors. -.. ocv:function:: CvBoostParams::CvBoostParams() +.. ocv:function:: Boost::Params::Params() -.. ocv:function:: CvBoostParams::CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, int max_depth, bool use_surrogates, const float* priors ) +.. ocv:function:: Boost::Params::Params( int boostType, int weakCount, double weightTrimRate, int maxDepth, bool useSurrogates, const Mat& priors ) :param boost_type: Type of the boosting algorithm. Possible values are: - * **CvBoost::DISCRETE** Discrete AdaBoost. - * **CvBoost::REAL** Real AdaBoost. It is a technique that utilizes confidence-rated predictions and works well with categorical data. - * **CvBoost::LOGIT** LogitBoost. It can produce good regression fits. - * **CvBoost::GENTLE** Gentle AdaBoost. It puts less weight on outlier data points and for that reason is often good with regression data. + * **Boost::DISCRETE** Discrete AdaBoost. + * **Boost::REAL** Real AdaBoost. It is a technique that utilizes confidence-rated predictions and works well with categorical data. + * **Boost::LOGIT** LogitBoost. It can produce good regression fits. + * **Boost::GENTLE** Gentle AdaBoost. It puts less weight on outlier data points and for that reason is often good with regression data. Gentle AdaBoost and Real AdaBoost are often the preferable choices. @@ -105,131 +94,54 @@ The constructors. :param weight_trim_rate: A threshold between 0 and 1 used to save computational time. Samples with summary weight :math:`\leq 1 - weight\_trim\_rate` do not participate in the *next* iteration of training. Set this parameter to 0 to turn off this functionality. -See :ocv:func:`CvDTreeParams::CvDTreeParams` for description of other parameters. +See ``DTrees::Params`` for description of other parameters. Default parameters are: :: - CvBoostParams::CvBoostParams() + Boost::Params::Params() { - boost_type = CvBoost::REAL; - weak_count = 100; - weight_trim_rate = 0.95; - cv_folds = 0; - max_depth = 1; + boostType = Boost::REAL; + weakCount = 100; + weightTrimRate = 0.95; + CVFolds = 0; + maxDepth = 1; } -CvBoostTree ------------ -.. ocv:class:: CvBoostTree : public CvDTree - -The weak tree classifier, a component of the boosted tree classifier :ocv:class:`CvBoost`, is a derivative of :ocv:class:`CvDTree`. Normally, there is no need to use the weak classifiers directly. However, they can be accessed as elements of the sequence ``CvBoost::weak``, retrieved by :ocv:func:`CvBoost::get_weak_predictors`. - -.. note:: In case of LogitBoost and Gentle AdaBoost, each weak predictor is a regression tree, rather than a classification tree. Even in case of Discrete AdaBoost and Real AdaBoost, the ``CvBoostTree::predict`` return value (:ocv:member:`CvDTreeNode::value`) is not an output class label. A negative value "votes" for class #0, a positive value - for class #1. The votes are weighted. The weight of each individual tree may be increased or decreased using the method ``CvBoostTree::scale``. - -CvBoost +Boost ------- -.. ocv:class:: CvBoost : public CvStatModel +.. ocv:class:: Boost : public DTrees -Boosted tree classifier derived from :ocv:class:`CvStatModel`. +Boosted tree classifier derived from ``DTrees`` -CvBoost::CvBoost +Boost::create ---------------- -Default and training constructors. +Creates the empty model -.. ocv:function:: CvBoost::CvBoost() +.. ocv:function:: Ptr Boost::create(const Params& params=Params()) -.. ocv:function:: CvBoost::CvBoost( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvBoostParams params=CvBoostParams() ) +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. -.. ocv:function:: CvBoost::CvBoost( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvBoostParams params=CvBoostParams() ) - -.. ocv:pyfunction:: cv2.Boost([trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]]) -> - - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvBoost::train --------------- -Trains a boosted tree classifier. - -.. ocv:function:: bool CvBoost::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:function:: bool CvBoost::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:function:: bool CvBoost::train( CvMLData* data, CvBoostParams params=CvBoostParams(), bool update=false ) - -.. ocv:pyfunction:: cv2.Boost.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params[, update]]]]]]) -> retval - - :param update: Specifies whether the classifier needs to be updated (``true``, the new weak tree classifiers added to the existing ensemble) or the classifier needs to be rebuilt from scratch (``false``). - -The train method follows the common template of :ocv:func:`CvStatModel::train`. The responses must be categorical, which means that boosted trees cannot be built for regression, and there should be two classes. - -CvBoost::predict ----------------- -Predicts a response for an input sample. - -.. ocv:function:: float CvBoost::predict( const cv::Mat& sample, const cv::Mat& missing=Mat(), const cv::Range& slice=Range::all(), bool rawMode=false, bool returnSum=false ) const - -.. ocv:function:: float CvBoost::predict( const CvMat* sample, const CvMat* missing=0, CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, bool raw_mode=false, bool return_sum=false ) const - -.. ocv:pyfunction:: cv2.Boost.predict(sample[, missing[, slice[, rawMode[, returnSum]]]]) -> retval - - :param sample: Input sample. - - :param missing: Optional mask of missing measurements. To handle missing measurements, the weak classifiers must include surrogate splits (see ``CvDTreeParams::use_surrogates``). - - :param weak_responses: Optional output parameter, a floating-point vector with responses of each individual weak classifier. The number of elements in the vector must be equal to the slice length. - - :param slice: Continuous subset of the sequence of weak classifiers to be used for prediction. By default, all the weak classifiers are used. - - :param rawMode: Normally, it should be set to ``false``. - - :param returnSum: If ``true`` then return sum of votes instead of the class label. - -The method runs the sample through the trees in the ensemble and returns the output class label based on the weighted voting. - -CvBoost::prune --------------- -Removes the specified weak classifiers. - -.. ocv:function:: void CvBoost::prune( CvSlice slice ) - -.. ocv:pyfunction:: cv2.Boost.prune(slice) -> None - - :param slice: Continuous subset of the sequence of weak classifiers to be removed. - -The method removes the specified weak classifiers from the sequence. - -.. note:: Do not confuse this method with the pruning of individual decision trees, which is currently not supported. - - -CvBoost::calc_error -------------------- -Returns error of the boosted tree classifier. - -.. ocv:function:: float CvBoost::calc_error( CvMLData* _data, int type , std::vector *resp = 0 ) - -The method is identical to :ocv:func:`CvDTree::calc_error` but uses the boosted tree classifier as predictor. - - -CvBoost::get_weak_predictors ----------------------------- -Returns the sequence of weak tree classifiers. - -.. ocv:function:: CvSeq* CvBoost::get_weak_predictors() - -The method returns the sequence of weak classifiers. Each element of the sequence is a pointer to the :ocv:class:`CvBoostTree` class or to some of its derivatives. - -CvBoost::get_params -------------------- -Returns current parameters of the boosted tree classifier. - -.. ocv:function:: const CvBoostParams& CvBoost::get_params() const - - -CvBoost::get_data +Boost::getBParams ----------------- -Returns used train data of the boosted tree classifier. +Returns the boosting parameters -.. ocv:function:: const CvDTreeTrainData* CvBoost::get_data() const +.. ocv:function:: Params Boost::getBParams() const + +The method returns the training parameters. + +Boost::setBParams +----------------- +Sets the boosting parameters + +.. ocv:function:: void Boost::setBParams( const Params& p ) + + :param p: Training parameters of type Boost::Params. + +The method sets the training parameters. + +Prediction with Boost +--------------------- + +StatModel::predict(samples, results, flags) should be used. Pass ``flags=StatModel::RAW_OUTPUT`` to get the raw sum from Boost classifier. diff --git a/modules/ml/doc/decision_trees.rst b/modules/ml/doc/decision_trees.rst index de6fc99d63..474cca2e32 100644 --- a/modules/ml/doc/decision_trees.rst +++ b/modules/ml/doc/decision_trees.rst @@ -3,10 +3,7 @@ Decision Trees The ML classes discussed in this section implement Classification and Regression Tree algorithms described in [Breiman84]_. -The class -:ocv:class:`CvDTree` represents a single decision tree that may be used alone or as a base class in tree ensembles (see -:ref:`Boosting` and -:ref:`Random Trees` ). +The class ``cv::ml::DTrees`` represents a single decision tree or a collection of decision trees. It's also a base class for ``RTrees`` and ``Boost``. A decision tree is a binary tree (tree where each non-leaf node has two child nodes). It can be used either for classification or for regression. For classification, each tree leaf is marked with a class label; multiple leaves may have the same label. For regression, a constant is also assigned to each tree leaf, so the approximation function is piecewise constant. @@ -55,123 +52,107 @@ Besides the prediction that is an obvious use of decision trees, the tree can be Importance of each variable is computed over all the splits on this variable in the tree, primary and surrogate ones. Thus, to compute variable importance correctly, the surrogate splits must be enabled in the training parameters, even if there is no missing data. -CvDTreeSplit ------------- -.. ocv:struct:: CvDTreeSplit +DTrees::Split +------------- +.. ocv:class:: DTrees::Split + The class represents split in a decision tree. It has public members: - The structure represents a possible decision tree node split. It has public members: - - .. ocv:member:: int var_idx + .. ocv:member:: int varIdx Index of variable on which the split is created. - .. ocv:member:: int inversed + .. ocv:member:: bool inversed - If it is not null then inverse split rule is used that is left and right branches are exchanged in the rule expressions below. + If true, then the inverse split rule is used (i.e. left and right branches are exchanged in the rule expressions below). .. ocv:member:: float quality - The split quality, a positive number. It is used to choose the best primary split, then to choose and sort the surrogate splits. After the tree is constructed, it is also used to compute variable importance. + The split quality, a positive number. It is used to choose the best split. - .. ocv:member:: CvDTreeSplit* next + .. ocv:member:: int next - Pointer to the next split in the node list of splits. + Index of the next split in the list of splits for the node - .. ocv:member:: int[] subset - - Bit array indicating the value subset in case of split on a categorical variable. The rule is: :: - - if var_value in subset - then next_node <- left - else next_node <- right - - .. ocv:member:: float ord::c + .. ocv:member:: float c The threshold value in case of split on an ordered variable. The rule is: :: - if var_value < ord.c - then next_node<-left - else next_node<-right + if var_value < c + then next_node<-left + else next_node<-right - .. ocv:member:: int ord::split_point + .. ocv:member:: int subsetOfs - Used internally by the training algorithm. + Offset of the bitset used by the split on a categorical variable. The rule is: :: -CvDTreeNode ------------ -.. ocv:struct:: CvDTreeNode + if bitset[var_value] == 1 + then next_node <- left + else next_node <- right +DTrees::Node +------------ +.. ocv:class:: DTrees::Node - The structure represents a node in a decision tree. It has public members: - - .. ocv:member:: int class_idx - - Class index normalized to 0..class_count-1 range and assigned to the node. It is used internally in classification trees and tree ensembles. - - .. ocv:member:: int Tn - - Tree index in a ordered sequence of pruned trees. The indices are used during and after the pruning procedure. The root node has the maximum value ``Tn`` of the whole tree, child nodes have ``Tn`` less than or equal to the parent's ``Tn``, and nodes with :math:`Tn \leq CvDTree::pruned\_tree\_idx` are not used at prediction stage (the corresponding branches are considered as cut-off), even if they have not been physically deleted from the tree at the pruning stage. + The class represents a decision tree node. It has public members: .. ocv:member:: double value Value at the node: a class label in case of classification or estimated function value in case of regression. - .. ocv:member:: CvDTreeNode* parent + .. ocv:member:: int classIdx - Pointer to the parent node. + Class index normalized to 0..class_count-1 range and assigned to the node. It is used internally in classification trees and tree ensembles. - .. ocv:member:: CvDTreeNode* left + .. ocv:member:: int parent - Pointer to the left child node. + Index of the parent node - .. ocv:member:: CvDTreeNode* right + .. ocv:member:: int left - Pointer to the right child node. + Index of the left child node - .. ocv:member:: CvDTreeSplit* split + .. ocv:member:: int right - Pointer to the first (primary) split in the node list of splits. + Index of right child node. - .. ocv:member:: int sample_count + .. ocv:member:: int defaultDir - The number of samples that fall into the node at the training stage. It is used to resolve the difficult cases - when the variable for the primary split is missing and all the variables for other surrogate splits are missing too. In this case the sample is directed to the left if ``left->sample_count > right->sample_count`` and to the right otherwise. + Default direction where to go (-1: left or +1: right). It helps in the case of missing values. - .. ocv:member:: int depth + .. ocv:member:: int split - Depth of the node. The root node depth is 0, the child nodes depth is the parent's depth + 1. + Index of the first split -Other numerous fields of ``CvDTreeNode`` are used internally at the training stage. - -CvDTreeParams -------------- -.. ocv:struct:: CvDTreeParams +DTrees::Params +--------------- +.. ocv:class:: DTrees::Params The structure contains all the decision tree training parameters. You can initialize it by default constructor and then override any parameters directly before training, or the structure may be fully initialized using the advanced variant of the constructor. -CvDTreeParams::CvDTreeParams +DTrees::Params::Params ---------------------------- -The constructors. +The constructors -.. ocv:function:: CvDTreeParams::CvDTreeParams() +.. ocv:function:: DTrees::Params::Params() -.. ocv:function:: CvDTreeParams::CvDTreeParams( int max_depth, int min_sample_count, float regression_accuracy, bool use_surrogates, int max_categories, int cv_folds, bool use_1se_rule, bool truncate_pruned_tree, const float* priors ) +.. ocv:function:: DTrees::Params::Params( int maxDepth, int minSampleCount, double regressionAccuracy, bool useSurrogates, int maxCategories, int CVFolds, bool use1SERule, bool truncatePrunedTree, const Mat& priors ) - :param max_depth: The maximum possible depth of the tree. That is the training algorithms attempts to split a node while its depth is less than ``max_depth``. The actual depth may be smaller if the other termination criteria are met (see the outline of the training procedure in the beginning of the section), and/or if the tree is pruned. + :param maxDepth: The maximum possible depth of the tree. That is the training algorithms attempts to split a node while its depth is less than ``maxDepth``. The root node has zero depth. The actual depth may be smaller if the other termination criteria are met (see the outline of the training procedure in the beginning of the section), and/or if the tree is pruned. - :param min_sample_count: If the number of samples in a node is less than this parameter then the node will not be split. + :param minSampleCount: If the number of samples in a node is less than this parameter then the node will not be split. - :param regression_accuracy: Termination criteria for regression trees. If all absolute differences between an estimated value in a node and values of train samples in this node are less than this parameter then the node will not be split. + :param regressionAccuracy: Termination criteria for regression trees. If all absolute differences between an estimated value in a node and values of train samples in this node are less than this parameter then the node will not be split further. - :param use_surrogates: If true then surrogate splits will be built. These splits allow to work with missing data and compute variable importance correctly. + :param useSurrogates: If true then surrogate splits will be built. These splits allow to work with missing data and compute variable importance correctly. .. note:: currently it's not implemented. - :param max_categories: Cluster possible values of a categorical variable into ``K`` :math:`\leq` ``max_categories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``max_categories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. + :param maxCategories: Cluster possible values of a categorical variable into ``K<=maxCategories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``maxCategories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including our implementation) try to find sub-optimal split in this case by clustering all the samples into ``maxCategories`` clusters that is some categories are merged together. The clustering is applied only in ``n > 2``-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. - :param cv_folds: If ``cv_folds > 1`` then prune a tree with ``K``-fold cross-validation where ``K`` is equal to ``cv_folds``. + :param CVFolds: If ``CVFolds > 1`` then algorithms prunes the built decision tree using ``K``-fold cross-validation procedure where ``K`` is equal to ``CVFolds``. - :param use_1se_rule: If true then a pruning will be harsher. This will make a tree more compact and more resistant to the training data noise but a bit less accurate. + :param use1SERule: If true then a pruning will be harsher. This will make a tree more compact and more resistant to the training data noise but a bit less accurate. - :param truncate_pruned_tree: If true then pruned branches are physically removed from the tree. Otherwise they are retained and it is possible to get results from the original unpruned (or pruned less aggressively) tree by decreasing ``CvDTree::pruned_tree_idx`` parameter. + :param truncatePrunedTree: If true then pruned branches are physically removed from the tree. Otherwise they are retained and it is possible to get results from the original unpruned (or pruned less aggressively) tree. :param priors: The array of a priori class probabilities, sorted by the class label value. The parameter can be used to tune the decision tree preferences toward a certain class. For example, if you want to detect some rare anomaly occurrence, the training base will likely contain much more normal cases than anomalies, so a very good classification performance will be achieved just by considering every case as normal. To avoid this, the priors can be specified, where the anomaly probability is artificially increased (up to 0.5 or even greater), so the weight of the misclassified anomalies becomes much bigger, and the tree is adjusted properly. You can also think about this parameter as weights of prediction categories which determine relative weights that you give to misclassification. That is, if the weight of the first category is 1 and the weight of the second category is 10, then each mistake in predicting the second category is equivalent to making 10 mistakes in predicting the first category. @@ -179,142 +160,82 @@ The default constructor initializes all the parameters with the default values t :: - CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), - cv_folds(10), use_surrogates(true), use_1se_rule(true), - truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) - {} + DTrees::Params::Params() + { + maxDepth = INT_MAX; + minSampleCount = 10; + regressionAccuracy = 0.01f; + useSurrogates = false; + maxCategories = 10; + CVFolds = 10; + use1SERule = true; + truncatePrunedTree = true; + priors = Mat(); + } -CvDTreeTrainData +DTrees +------ + +.. ocv:class:: DTrees : public StatModel + +The class represents a single decision tree or a collection of decision trees. The current public interface of the class allows user to train only a single decision tree, however the class is capable of storing multiple decision trees and using them for prediction (by summing responses or using a voting schemes), and the derived from DTrees classes (such as ``RTrees`` and ``Boost``) use this capability to implement decision tree ensembles. + +DTrees::create ---------------- -.. ocv:struct:: CvDTreeTrainData +Creates the empty model -Decision tree training data and shared data for tree ensembles. The structure is mostly used internally for storing both standalone trees and tree ensembles efficiently. Basically, it contains the following types of information: +.. ocv:function:: Ptr DTrees::create(const Params& params=Params()) -#. Training parameters, an instance of :ocv:class:`CvDTreeParams`. +The static method creates empty decision tree with the specified parameters. It should be then trained using ``train`` method (see ``StatModel::train``). Alternatively, you can load the model from file using ``StatModel::load(filename)``. -#. Training data preprocessed to find the best splits more efficiently. For tree ensembles, this preprocessed data is reused by all trees. Additionally, the training data characteristics shared by all trees in the ensemble are stored here: variable types, the number of classes, a class label compression map, and so on. +DTrees::getDParams +------------------ +Returns the training parameters -#. Buffers, memory storages for tree nodes, splits, and other elements of the constructed trees. +.. ocv:function:: Params DTrees::getDParams() const -There are two ways of using this structure. In simple cases (for example, a standalone tree or the ready-to-use "black box" tree ensemble from machine learning, like -:ref:`Random Trees` or -:ref:`Boosting` ), there is no need to care or even to know about the structure. You just construct the needed statistical model, train it, and use it. The ``CvDTreeTrainData`` structure is constructed and used internally. However, for custom tree algorithms or another sophisticated cases, the structure may be constructed and used explicitly. The scheme is the following: +The method returns the training parameters. -#. - The structure is initialized using the default constructor, followed by ``set_data``, or it is built using the full form of constructor. The parameter ``_shared`` must be set to ``true``. - -#. - One or more trees are trained using this data (see the special form of the method :ocv:func:`CvDTree::train`). - -#. - The structure is released as soon as all the trees using it are released. - -CvDTree -------- -.. ocv:class:: CvDTree : public CvStatModel - -The class implements a decision tree as described in the beginning of this section. - - -CvDTree::train --------------- -Trains a decision tree. - -.. ocv:function:: bool CvDTree::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ) - -.. ocv:function:: bool CvDTree::train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ) - -.. ocv:pyfunction:: cv2.DTree.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]) -> retval - -There are four ``train`` methods in :ocv:class:`CvDTree`: - -* The **first two** methods follow the generic :ocv:func:`CvStatModel::train` conventions. It is the most complete form. Both data layouts (``tflag=CV_ROW_SAMPLE`` and ``tflag=CV_COL_SAMPLE``) are supported, as well as sample and variable subsets, missing measurements, arbitrary combinations of input and output variable types, and so on. The last parameter contains all of the necessary training parameters (see the :ocv:class:`CvDTreeParams` description). - -* The **third** method uses :ocv:class:`CvMLData` to pass training data to a decision tree. - -* The **last** method ``train`` is mostly used for building tree ensembles. It takes the pre-constructed :ocv:class:`CvDTreeTrainData` instance and an optional subset of the training set. The indices in ``subsampleIdx`` are counted relatively to the ``_sample_idx`` , passed to the ``CvDTreeTrainData`` constructor. For example, if ``_sample_idx=[1, 5, 7, 100]`` , then ``subsampleIdx=[0,3]`` means that the samples ``[1, 100]`` of the original training set are used. - -The function is parallelized with the TBB library. - - - -CvDTree::predict ----------------- -Returns the leaf node of a decision tree corresponding to the input vector. - -.. ocv:function:: CvDTreeNode* CvDTree::predict( const Mat& sample, const Mat& missingDataMask=Mat(), bool preprocessedInput=false ) const - -.. ocv:function:: CvDTreeNode* CvDTree::predict( const CvMat* sample, const CvMat* missingDataMask=0, bool preprocessedInput=false ) const - -.. ocv:pyfunction:: cv2.DTree.predict(sample[, missingDataMask[, preprocessedInput]]) -> retval - - :param sample: Sample for prediction. - - :param missingDataMask: Optional input missing measurement mask. - - :param preprocessedInput: This parameter is normally set to ``false``, implying a regular input. If it is ``true``, the method assumes that all the values of the discrete input variables have been already normalized to :math:`0` to :math:`num\_of\_categories_i-1` ranges since the decision tree uses such normalized representation internally. It is useful for faster prediction with tree ensembles. For ordered input variables, the flag is not used. - -The method traverses the decision tree and returns the reached leaf node as output. The prediction result, either the class label or the estimated function value, may be retrieved as the ``value`` field of the :ocv:class:`CvDTreeNode` structure, for example: ``dtree->predict(sample,mask)->value``. - - - -CvDTree::calc_error +DTrees::setDParams ------------------- -Returns error of the decision tree. +Sets the training parameters -.. ocv:function:: float CvDTree::calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ) +.. ocv:function:: void DTrees::setDParams( const Params& p ) - :param trainData: Data for the decision tree. + :param p: Training parameters of type DTrees::Params. - :param type: Type of error. Possible values are: - - * **CV_TRAIN_ERROR** Error on train samples. - - * **CV_TEST_ERROR** Error on test samples. - - :param resp: If it is not null then size of this vector will be set to the number of samples and each element will be set to result of prediction on the corresponding sample. - -The method calculates error of the decision tree. In case of classification it is the percentage of incorrectly classified samples and in case of regression it is the mean of squared errors on samples. +The method sets the training parameters. -CvDTree::getVarImportance -------------------------- -Returns the variable importance array. +DTrees::getRoots +------------------- +Returns indices of root nodes -.. ocv:function:: Mat CvDTree::getVarImportance() +.. ocv:function:: std::vector& DTrees::getRoots() const -.. ocv:function:: const CvMat* CvDTree::get_var_importance() +DTrees::getNodes +------------------- +Returns all the nodes -.. ocv:pyfunction:: cv2.DTree.getVarImportance() -> retval +.. ocv:function:: std::vector& DTrees::getNodes() const -CvDTree::get_root ------------------ -Returns the root of the decision tree. +all the node indices, mentioned above (left, right, parent, root indices) are indices in the returned vector -.. ocv:function:: const CvDTreeNode* CvDTree::get_root() const +DTrees::getSplits +------------------- +Returns all the splits +.. ocv:function:: std::vector& DTrees::getSplits() const -CvDTree::get_pruned_tree_idx ----------------------------- -Returns the ``CvDTree::pruned_tree_idx`` parameter. +all the split indices, mentioned above (split, next etc.) are indices in the returned vector -.. ocv:function:: int CvDTree::get_pruned_tree_idx() const +DTrees::getSubsets +------------------- +Returns all the bitsets for categorical splits -The parameter ``DTree::pruned_tree_idx`` is used to prune a decision tree. See the ``CvDTreeNode::Tn`` parameter. - -CvDTree::get_data ------------------ -Returns used train data of the decision tree. - -.. ocv:function:: CvDTreeTrainData* CvDTree::get_data() const - -Example: building a tree for classifying mushrooms. See the ``mushroom.cpp`` sample that demonstrates how to build and use the -decision tree. +.. ocv:function:: std::vector& DTrees::getSubsets() const +``Split::subsetOfs`` is an offset in the returned vector .. [Breiman84] Breiman, L., Friedman, J. Olshen, R. and Stone, C. (1984), *Classification and Regression Trees*, Wadsworth. diff --git a/modules/ml/doc/ertrees.rst b/modules/ml/doc/ertrees.rst deleted file mode 100644 index 7e6d03e7fc..0000000000 --- a/modules/ml/doc/ertrees.rst +++ /dev/null @@ -1,15 +0,0 @@ -Extremely randomized trees -========================== - -Extremely randomized trees have been introduced by Pierre Geurts, Damien Ernst and Louis Wehenkel in the article "Extremely randomized trees", 2006 [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7485&rep=rep1&type=pdf]. The algorithm of growing Extremely randomized trees is similar to :ref:`Random Trees` (Random Forest), but there are two differences: - -#. Extremely randomized trees don't apply the bagging procedure to construct a set of the training samples for each tree. The same input training set is used to train all trees. - -#. Extremely randomized trees pick a node split very extremely (both a variable index and variable splitting value are chosen randomly), whereas Random Forest finds the best split (optimal one by variable index and variable splitting value) among random subset of variables. - - -CvERTrees ----------- -.. ocv:class:: CvERTrees : public CvRTrees - - The class implements the Extremely randomized trees algorithm. ``CvERTrees`` is inherited from :ocv:class:`CvRTrees` and has the same interface, so see description of :ocv:class:`CvRTrees` class to get details. To set the training parameters of Extremely randomized trees the same class :ocv:struct:`CvRTParams` is used. diff --git a/modules/ml/doc/expectation_maximization.rst b/modules/ml/doc/expectation_maximization.rst index b79dea820b..4b54007bb9 100644 --- a/modules/ml/doc/expectation_maximization.rst +++ b/modules/ml/doc/expectation_maximization.rst @@ -66,7 +66,7 @@ Alternatively, the algorithm may start with the M-step when the initial values f :math:`p_{i,k}` can be provided. Another alternative when :math:`p_{i,k}` are unknown is to use a simpler clustering algorithm to pre-cluster the input samples and thus obtain initial :math:`p_{i,k}` . Often (including machine learning) the -:ocv:func:`kmeans` algorithm is used for that purpose. +``k-means`` algorithm is used for that purpose. One of the main problems of the EM algorithm is a large number of parameters to estimate. The majority of the parameters reside in @@ -91,18 +91,21 @@ already a good enough approximation). EM -- -.. ocv:class:: EM : public Algorithm +.. ocv:class:: EM : public StatModel -The class implements the EM algorithm as described in the beginning of this section. It is inherited from :ocv:class:`Algorithm`. +The class implements the EM algorithm as described in the beginning of this section. +EM::Params +---------- +.. ocv:class:: EM::Params -EM::EM ------- -The constructor of the class +The class describes EM training parameters. -.. ocv:function:: EM::EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, FLT_EPSILON) ) +EM::Params::Params +------------------ +The constructor -.. ocv:pyfunction:: cv2.EM([nclusters[, covMatType[, termCrit]]]) -> +.. ocv:function:: EM::Params::Params( int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL,const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, EM::DEFAULT_MAX_ITERS, 1e-6)) :param nclusters: The number of mixture components in the Gaussian mixture model. Default value of the parameter is ``EM::DEFAULT_NCLUSTERS=5``. Some of EM implementation could determine the optimal number of mixtures within a specified value range, but that is not the case in ML yet. @@ -116,21 +119,26 @@ The constructor of the class :param termCrit: The termination criteria of the EM algorithm. The EM algorithm can be terminated by the number of iterations ``termCrit.maxCount`` (number of M-steps) or when relative change of likelihood logarithm is less than ``termCrit.epsilon``. Default maximum number of iterations is ``EM::DEFAULT_MAX_ITERS=100``. + +EM::create +---------- +Creates empty EM model + +.. ocv:function:: Ptr EM::create(const Params& params=Params()) + + :param params: EM parameters + +The model should be trained then using ``StatModel::train(traindata, flags)`` method. Alternatively, you can use one of the ``EM::train*`` methods or load it from file using ``StatModel::load(filename)``. + EM::train --------- -Estimates the Gaussian mixture parameters from a samples set. +Static methods that estimate the Gaussian mixture parameters from a samples set -.. ocv:function:: bool EM::train(InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) +.. ocv:function:: Ptr EM::train(InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) -.. ocv:function:: bool EM::trainE(InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) +.. ocv:function:: bool EM::train_startWithE(InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) -.. ocv:function:: bool EM::trainM(InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()) - -.. ocv:pyfunction:: cv2.EM.train(samples[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs - -.. ocv:pyfunction:: cv2.EM.trainE(samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]]) -> retval, logLikelihoods, labels, probs - -.. ocv:pyfunction:: cv2.EM.trainM(samples, probs0[, logLikelihoods[, labels[, probs]]]) -> retval, logLikelihoods, labels, probs +.. ocv:function:: bool EM::train_startWithM(InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray(), const Params& params=Params()) :param samples: Samples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have ``CV_64F`` type it will be converted to the inner matrix of such type for the further computing. @@ -148,6 +156,8 @@ Estimates the Gaussian mixture parameters from a samples set. :param probs: The optional output matrix that contains posterior probabilities of each Gaussian mixture component given the each sample. It has :math:`nsamples \times nclusters` size and ``CV_64FC1`` type. + :param params: The Gaussian mixture params, see ``EM::Params`` description above. + Three versions of training method differ in the initialization of Gaussian mixture model parameters and start step: * **train** - Starts with Expectation step. Initial values of the model parameters will be estimated by the k-means algorithm. @@ -167,15 +177,13 @@ Unlike many of the ML models, EM is an unsupervised learning algorithm and it do :math:`\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N` (indices of the most probable mixture component for each sample). The trained model can be used further for prediction, just like any other classifier. The trained model is similar to the -:ocv:class:`CvNormalBayesClassifier`. +``NormalBayesClassifier``. -EM::predict ------------ +EM::predict2 +------------ Returns a likelihood logarithm value and an index of the most probable mixture component for the given sample. -.. ocv:function:: Vec2d EM::predict(InputArray sample, OutputArray probs=noArray()) const - -.. ocv:pyfunction:: cv2.EM.predict(sample[, probs]) -> retval, probs +.. ocv:function:: Vec2d EM::predict2(InputArray sample, OutputArray probs=noArray()) const :param sample: A sample for classification. It should be a one-channel matrix of :math:`1 \times dims` or :math:`dims \times 1` size. @@ -183,28 +191,29 @@ Returns a likelihood logarithm value and an index of the most probable mixture c The method returns a two-element ``double`` vector. Zero element is a likelihood logarithm value for the sample. First element is an index of the most probable mixture component for the given sample. -CvEM::isTrained ---------------- -Returns ``true`` if the Gaussian mixture model was trained. -.. ocv:function:: bool EM::isTrained() const +EM::getMeans +------------ +Returns the cluster centers (means of the Gaussian mixture) -.. ocv:pyfunction:: cv2.EM.isTrained() -> retval +.. ocv:function:: Mat EM::getMeans() const -EM::read, EM::write -------------------- -See :ocv:func:`Algorithm::read` and :ocv:func:`Algorithm::write`. +Returns matrix with the number of rows equal to the number of mixtures and number of columns equal to the space dimensionality. -EM::get, EM::set ----------------- -See :ocv:func:`Algorithm::get` and :ocv:func:`Algorithm::set`. The following parameters are available: -* ``"nclusters"`` -* ``"covMatType"`` -* ``"maxIters"`` -* ``"epsilon"`` -* ``"weights"`` *(read-only)* -* ``"means"`` *(read-only)* -* ``"covs"`` *(read-only)* +EM::getWeights +-------------- +Returns weights of the mixtures -.. +.. ocv:function:: Mat EM::getWeights() const + +Returns vector with the number of elements equal to the number of mixtures. + + +EM::getCovs +-------------- +Returns covariation matrices + +.. ocv:function:: void EM::getCovs(std::vector& covs) const + +Returns vector of covariation matrices. Number of matrices is the number of gaussian mixtures, each matrix is a square floating-point matrix NxN, where N is the space dimensionality. diff --git a/modules/ml/doc/gradient_boosted_trees.rst b/modules/ml/doc/gradient_boosted_trees.rst deleted file mode 100644 index b83c47e4e1..0000000000 --- a/modules/ml/doc/gradient_boosted_trees.rst +++ /dev/null @@ -1,272 +0,0 @@ -.. _Gradient Boosted Trees: - -Gradient Boosted Trees -====================== - -.. highlight:: cpp - -Gradient Boosted Trees (GBT) is a generalized boosting algorithm introduced by -Jerome Friedman: http://www.salfordsystems.com/doc/GreedyFuncApproxSS.pdf . -In contrast to the AdaBoost.M1 algorithm, GBT can deal with both multiclass -classification and regression problems. Moreover, it can use any -differential loss function, some popular ones are implemented. -Decision trees (:ocv:class:`CvDTree`) usage as base learners allows to process ordered -and categorical variables. - -.. _Training GBT: - -Training the GBT model ----------------------- - -Gradient Boosted Trees model represents an ensemble of single regression trees -built in a greedy fashion. Training procedure is an iterative process -similar to the numerical optimization via the gradient descent method. Summary loss -on the training set depends only on the current model predictions for the -training samples, in other words -:math:`\sum^N_{i=1}L(y_i, F(x_i)) \equiv \mathcal{L}(F(x_1), F(x_2), ... , F(x_N)) -\equiv \mathcal{L}(F)`. And the :math:`\mathcal{L}(F)` -gradient can be computed as follows: - -.. math:: - grad(\mathcal{L}(F)) = \left( \dfrac{\partial{L(y_1, F(x_1))}}{\partial{F(x_1)}}, - \dfrac{\partial{L(y_2, F(x_2))}}{\partial{F(x_2)}}, ... , - \dfrac{\partial{L(y_N, F(x_N))}}{\partial{F(x_N)}} \right) . - -At every training step, a single regression tree is built to predict an -antigradient vector components. Step length is computed corresponding to the -loss function and separately for every region determined by the tree leaf. It -can be eliminated by changing values of the leaves directly. - -See below the main scheme of the training process: - -#. - Find the best constant model. -#. - For :math:`i` in :math:`[1,M]`: - - #. - Compute the antigradient. - #. - Grow a regression tree to predict antigradient components. - #. - Change values in the tree leaves. - #. - Add the tree to the model. - - -The following loss functions are implemented for regression problems: - -* - Squared loss (``CvGBTrees::SQUARED_LOSS``): - :math:`L(y,f(x))=\dfrac{1}{2}(y-f(x))^2` -* - Absolute loss (``CvGBTrees::ABSOLUTE_LOSS``): - :math:`L(y,f(x))=|y-f(x)|` -* - Huber loss (``CvGBTrees::HUBER_LOSS``): - :math:`L(y,f(x)) = \left\{ \begin{array}{lr} - \delta\cdot\left(|y-f(x)|-\dfrac{\delta}{2}\right) & : |y-f(x)|>\delta\\ - \dfrac{1}{2}\cdot(y-f(x))^2 & : |y-f(x)|\leq\delta \end{array} \right.`, - - where :math:`\delta` is the :math:`\alpha`-quantile estimation of the - :math:`|y-f(x)|`. In the current implementation :math:`\alpha=0.2`. - - -The following loss functions are implemented for classification problems: - -* - Deviance or cross-entropy loss (``CvGBTrees::DEVIANCE_LOSS``): - :math:`K` functions are built, one function for each output class, and - :math:`L(y,f_1(x),...,f_K(x)) = -\sum^K_{k=0}1(y=k)\ln{p_k(x)}`, - where :math:`p_k(x)=\dfrac{\exp{f_k(x)}}{\sum^K_{i=1}\exp{f_i(x)}}` - is the estimation of the probability of :math:`y=k`. - -As a result, you get the following model: - -.. math:: f(x) = f_0 + \nu\cdot\sum^M_{i=1}T_i(x) , - -where :math:`f_0` is the initial guess (the best constant model) and :math:`\nu` -is a regularization parameter from the interval :math:`(0,1]`, further called -*shrinkage*. - -.. _Predicting with GBT: - -Predicting with the GBT Model ------------------------------ - -To get the GBT model prediction, you need to compute the sum of responses of -all the trees in the ensemble. For regression problems, it is the answer. -For classification problems, the result is :math:`\arg\max_{i=1..K}(f_i(x))`. - - -.. highlight:: cpp - - -CvGBTreesParams ---------------- -.. ocv:struct:: CvGBTreesParams : public CvDTreeParams - -GBT training parameters. - -The structure contains parameters for each single decision tree in the ensemble, -as well as the whole model characteristics. The structure is derived from -:ocv:class:`CvDTreeParams` but not all of the decision tree parameters are supported: -cross-validation, pruning, and class priorities are not used. - -CvGBTreesParams::CvGBTreesParams --------------------------------- -.. ocv:function:: CvGBTreesParams::CvGBTreesParams() - -.. ocv:function:: CvGBTreesParams::CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, float subsample_portion, int max_depth, bool use_surrogates ) - - :param loss_function_type: Type of the loss function used for training - (see :ref:`Training GBT`). It must be one of the - following types: ``CvGBTrees::SQUARED_LOSS``, ``CvGBTrees::ABSOLUTE_LOSS``, - ``CvGBTrees::HUBER_LOSS``, ``CvGBTrees::DEVIANCE_LOSS``. The first three - types are used for regression problems, and the last one for - classification. - - :param weak_count: Count of boosting algorithm iterations. ``weak_count*K`` is the total - count of trees in the GBT model, where ``K`` is the output classes count - (equal to one in case of a regression). - - :param shrinkage: Regularization parameter (see :ref:`Training GBT`). - - :param subsample_portion: Portion of the whole training set used for each algorithm iteration. - Subset is generated randomly. For more information see - http://www.salfordsystems.com/doc/StochasticBoostingSS.pdf. - - :param max_depth: Maximal depth of each decision tree in the ensemble (see :ocv:class:`CvDTree`). - - :param use_surrogates: If ``true``, surrogate splits are built (see :ocv:class:`CvDTree`). - -By default the following constructor is used: - -.. code-block:: cpp - - CvGBTreesParams(CvGBTrees::SQUARED_LOSS, 200, 0.01f, 0.8f, 3, false) - : CvDTreeParams( 3, 10, 0, false, 10, 0, false, false, 0 ) - -CvGBTrees ---------- -.. ocv:class:: CvGBTrees : public CvStatModel - -The class implements the Gradient boosted tree model as described in the beginning of this section. - -CvGBTrees::CvGBTrees --------------------- -Default and training constructors. - -.. ocv:function:: CvGBTrees::CvGBTrees() - -.. ocv:function:: CvGBTrees::CvGBTrees( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvGBTreesParams params=CvGBTreesParams() ) - -.. ocv:function:: CvGBTrees::CvGBTrees( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvGBTreesParams params=CvGBTreesParams() ) - -.. ocv:pyfunction:: cv2.GBTrees([trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvGBTrees::train ----------------- -Trains a Gradient boosted tree model. - -.. ocv:function:: bool CvGBTrees::train(const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvGBTreesParams params=CvGBTreesParams(), bool update=false) - -.. ocv:function:: bool CvGBTrees::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvGBTreesParams params=CvGBTreesParams(), bool update=false ) - -.. ocv:function:: bool CvGBTrees::train(CvMLData* data, CvGBTreesParams params=CvGBTreesParams(), bool update=false) - -.. ocv:pyfunction:: cv2.GBTrees.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params[, update]]]]]]) -> retval - -The first train method follows the common template (see :ocv:func:`CvStatModel::train`). -Both ``tflag`` values (``CV_ROW_SAMPLE``, ``CV_COL_SAMPLE``) are supported. -``trainData`` must be of the ``CV_32F`` type. ``responses`` must be a matrix of type -``CV_32S`` or ``CV_32F``. In both cases it is converted into the ``CV_32F`` -matrix inside the training procedure. ``varIdx`` and ``sampleIdx`` must be a -list of indices (``CV_32S``) or a mask (``CV_8U`` or ``CV_8S``). ``update`` is -a dummy parameter. - -The second form of :ocv:func:`CvGBTrees::train` function uses :ocv:class:`CvMLData` as a -data set container. ``update`` is still a dummy parameter. - -All parameters specific to the GBT model are passed into the training function -as a :ocv:class:`CvGBTreesParams` structure. - - -CvGBTrees::predict ------------------- -Predicts a response for an input sample. - -.. ocv:function:: float CvGBTrees::predict(const Mat& sample, const Mat& missing=Mat(), const Range& slice = Range::all(), int k=-1) const - -.. ocv:function:: float CvGBTrees::predict( const CvMat* sample, const CvMat* missing=0, CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, int k=-1 ) const - -.. ocv:pyfunction:: cv2.GBTrees.predict(sample[, missing[, slice[, k]]]) -> retval - - :param sample: Input feature vector that has the same format as every training set - element. If not all the variables were actually used during training, - ``sample`` contains forged values at the appropriate places. - - :param missing: Missing values mask, which is a dimensional matrix of the same size as - ``sample`` having the ``CV_8U`` type. ``1`` corresponds to the missing value - in the same position in the ``sample`` vector. If there are no missing values - in the feature vector, an empty matrix can be passed instead of the missing mask. - - :param weakResponses: Matrix used to obtain predictions of all the trees. - The matrix has :math:`K` rows, - where :math:`K` is the count of output classes (1 for the regression case). - The matrix has as many columns as the ``slice`` length. - - :param slice: Parameter defining the part of the ensemble used for prediction. - If ``slice = Range::all()``, all trees are used. Use this parameter to - get predictions of the GBT models with different ensemble sizes learning - only one model. - - :param k: Number of tree ensembles built in case of the classification problem - (see :ref:`Training GBT`). Use this - parameter to change the output to sum of the trees' predictions in the - ``k``-th ensemble only. To get the total GBT model prediction, ``k`` value - must be -1. For regression problems, ``k`` is also equal to -1. - -The method predicts the response corresponding to the given sample -(see :ref:`Predicting with GBT`). -The result is either the class label or the estimated function value. The -:ocv:func:`CvGBTrees::predict` method enables using the parallel version of the GBT model -prediction if the OpenCV is built with the TBB library. In this case, predictions -of single trees are computed in a parallel fashion. - - -CvGBTrees::clear ----------------- -Clears the model. - -.. ocv:function:: void CvGBTrees::clear() - -.. ocv:pyfunction:: cv2.GBTrees.clear() -> None - -The function deletes the data set information and all the weak models and sets all internal -variables to the initial state. The function is called in :ocv:func:`CvGBTrees::train` and in the -destructor. - - -CvGBTrees::calc_error ---------------------- -Calculates a training or testing error. - -.. ocv:function:: float CvGBTrees::calc_error( CvMLData* _data, int type, std::vector *resp = 0 ) - - :param _data: Data set. - - :param type: Parameter defining the error that should be computed: train (``CV_TRAIN_ERROR``) or test - (``CV_TEST_ERROR``). - - :param resp: If non-zero, a vector of predictions on the corresponding data set is - returned. - -If the :ocv:class:`CvMLData` data is used to store the data set, :ocv:func:`CvGBTrees::calc_error` can be -used to get a training/testing error easily and (optionally) all predictions -on the training/testing set. If the Intel* TBB* library is used, the error is computed in a -parallel way, namely, predictions for different samples are computed at the same time. -In case of a regression problem, a mean squared error is returned. For -classifications, the result is a misclassification error in percent. diff --git a/modules/ml/doc/k_nearest_neighbors.rst b/modules/ml/doc/k_nearest_neighbors.rst index 05413c7785..6e16641450 100644 --- a/modules/ml/doc/k_nearest_neighbors.rst +++ b/modules/ml/doc/k_nearest_neighbors.rst @@ -5,9 +5,9 @@ K-Nearest Neighbors The algorithm caches all training samples and predicts the response for a new sample by analyzing a certain number (**K**) of the nearest neighbors of the sample using voting, calculating weighted sum, and so on. The method is sometimes referred to as "learning by example" because for prediction it looks for the feature vector with a known response that is closest to the given vector. -CvKNearest +KNearest ---------- -.. ocv:class:: CvKNearest : public CvStatModel +.. ocv:class:: KNearest : public StatModel The class implements K-Nearest Neighbors model as described in the beginning of this section. @@ -17,65 +17,32 @@ The class implements K-Nearest Neighbors model as described in the beginning of * (Python) An example of grid search digit recognition using KNearest can be found at opencv_source/samples/python2/digits_adjust.py * (Python) An example of video digit recognition using KNearest can be found at opencv_source/samples/python2/digits_video.py -CvKNearest::CvKNearest +KNearest::create ---------------------- -Default and training constructors. +Creates the empty model -.. ocv:function:: CvKNearest::CvKNearest() +.. ocv:function:: Ptr KNearest::create(const Params& params=Params()) -.. ocv:function:: CvKNearest::CvKNearest( const Mat& trainData, const Mat& responses, const Mat& sampleIdx=Mat(), bool isRegression=false, int max_k=32 ) + :param params: The model parameters: default number of neighbors to use in predict method (in ``KNearest::findNearest`` this number must be passed explicitly) and the flag on whether classification or regression model should be trained. -.. ocv:function:: CvKNearest::CvKNearest( const CvMat* trainData, const CvMat* responses, const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ) +The static method creates empty KNearest classifier. It should be then trained using ``train`` method (see ``StatModel::train``). Alternatively, you can load boost model from file using ``StatModel::load(filename)``. -See :ocv:func:`CvKNearest::train` for additional parameters descriptions. -CvKNearest::train ------------------ -Trains the model. - -.. ocv:function:: bool CvKNearest::train( const Mat& trainData, const Mat& responses, const Mat& sampleIdx=Mat(), bool isRegression=false, int maxK=32, bool updateBase=false ) - -.. ocv:function:: bool CvKNearest::train( const CvMat* trainData, const CvMat* responses, const CvMat* sampleIdx=0, bool is_regression=false, int maxK=32, bool updateBase=false ) - -.. ocv:pyfunction:: cv2.KNearest.train(trainData, responses[, sampleIdx[, isRegression[, maxK[, updateBase]]]]) -> retval - - :param isRegression: Type of the problem: ``true`` for regression and ``false`` for classification. - - :param maxK: Number of maximum neighbors that may be passed to the method :ocv:func:`CvKNearest::find_nearest`. - - :param updateBase: Specifies whether the model is trained from scratch (``update_base=false``), or it is updated using the new training data (``update_base=true``). In the latter case, the parameter ``maxK`` must not be larger than the original value. - -The method trains the K-Nearest model. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only ``CV_ROW_SAMPLE`` data layout is supported. -* Input variables are all ordered. -* Output variables can be either categorical ( ``is_regression=false`` ) or ordered ( ``is_regression=true`` ). -* Variable subsets (``var_idx``) and missing measurements are not supported. - -CvKNearest::find_nearest +KNearest::findNearest ------------------------ Finds the neighbors and predicts responses for input vectors. -.. ocv:function:: float CvKNearest::find_nearest( const Mat& samples, int k, Mat* results=0, const float** neighbors=0, Mat* neighborResponses=0, Mat* dist=0 ) const +.. ocv:function:: float KNearest::findNearest( InputArray samples, int k, OutputArray results, OutputArray neighborResponses=noArray(), OutputArray dist=noArray() ) const -.. ocv:function:: float CvKNearest::find_nearest( const Mat& samples, int k, Mat& results, Mat& neighborResponses, Mat& dists) const + :param samples: Input samples stored by rows. It is a single-precision floating-point matrix of `` * k`` size. -.. ocv:function:: float CvKNearest::find_nearest( const CvMat* samples, int k, CvMat* results=0, const float** neighbors=0, CvMat* neighborResponses=0, CvMat* dist=0 ) const + :param k: Number of used nearest neighbors. Should be greater than 1. -.. ocv:pyfunction:: cv2.KNearest.find_nearest(samples, k[, results[, neighborResponses[, dists]]]) -> retval, results, neighborResponses, dists + :param results: Vector with results of prediction (regression or classification) for each input sample. It is a single-precision floating-point vector with ```` elements. + :param neighborResponses: Optional output values for corresponding neighbors. It is a single-precision floating-point matrix of `` * k`` size. - :param samples: Input samples stored by rows. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times number\_of\_features` size. - - :param k: Number of used nearest neighbors. It must satisfy constraint: :math:`k \le` :ocv:func:`CvKNearest::get_max_k`. - - :param results: Vector with results of prediction (regression or classification) for each input sample. It is a single-precision floating-point vector with ``number_of_samples`` elements. - - :param neighbors: Optional output pointers to the neighbor vectors themselves. It is an array of ``k*samples->rows`` pointers. - - :param neighborResponses: Optional output values for corresponding ``neighbors``. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times k` size. - - :param dist: Optional output distances from the input vectors to the corresponding ``neighbors``. It is a single-precision floating-point matrix of :math:`number\_of\_samples \times k` size. + :param dist: Optional output distances from the input vectors to the corresponding neighbors. It is a single-precision floating-point matrix of `` * k`` size. For each input vector (a row of the matrix ``samples``), the method finds the ``k`` nearest neighbors. In case of regression, the predicted result is a mean value of the particular vector's neighbor responses. In case of classification, the class is determined by voting. @@ -87,110 +54,18 @@ If only a single input vector is passed, all output matrices are optional and th The function is parallelized with the TBB library. -CvKNearest::get_max_k +KNearest::getDefaultK --------------------- -Returns the number of maximum neighbors that may be passed to the method :ocv:func:`CvKNearest::find_nearest`. +Returns the default number of neighbors -.. ocv:function:: int CvKNearest::get_max_k() const +.. ocv:function:: int KNearest::getDefaultK() const -CvKNearest::get_var_count -------------------------- -Returns the number of used features (variables count). +The function returns the default number of neighbors that is used in a simpler ``predict`` method, not ``findNearest``. -.. ocv:function:: int CvKNearest::get_var_count() const +KNearest::setDefaultK +--------------------- +Returns the default number of neighbors -CvKNearest::get_sample_count ----------------------------- -Returns the total number of train samples. +.. ocv:function:: void KNearest::setDefaultK(int k) -.. ocv:function:: int CvKNearest::get_sample_count() const - -CvKNearest::is_regression -------------------------- -Returns type of the problem: ``true`` for regression and ``false`` for classification. - -.. ocv:function:: bool CvKNearest::is_regression() const - - - -The sample below (currently using the obsolete ``CvMat`` structures) demonstrates the use of the k-nearest classifier for 2D point classification: :: - - #include "ml.h" - #include "highgui.h" - - int main( int argc, char** argv ) - { - const int K = 10; - int i, j, k, accuracy; - float response; - int train_sample_count = 100; - CvRNG rng_state = cvRNG(-1); - CvMat* trainData = cvCreateMat( train_sample_count, 2, CV_32FC1 ); - CvMat* trainClasses = cvCreateMat( train_sample_count, 1, CV_32FC1 ); - IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); - float _sample[2]; - CvMat sample = cvMat( 1, 2, CV_32FC1, _sample ); - cvZero( img ); - - CvMat trainData1, trainData2, trainClasses1, trainClasses2; - - // form the training samples - cvGetRows( trainData, &trainData1, 0, train_sample_count/2 ); - cvRandArr( &rng_state, &trainData1, CV_RAND_NORMAL, cvScalar(200,200), cvScalar(50,50) ); - - cvGetRows( trainData, &trainData2, train_sample_count/2, train_sample_count ); - cvRandArr( &rng_state, &trainData2, CV_RAND_NORMAL, cvScalar(300,300), cvScalar(50,50) ); - - cvGetRows( trainClasses, &trainClasses1, 0, train_sample_count/2 ); - cvSet( &trainClasses1, cvScalar(1) ); - - cvGetRows( trainClasses, &trainClasses2, train_sample_count/2, train_sample_count ); - cvSet( &trainClasses2, cvScalar(2) ); - - // learn classifier - CvKNearest knn( trainData, trainClasses, 0, false, K ); - CvMat* nearests = cvCreateMat( 1, K, CV_32FC1); - - for( i = 0; i < img->height; i++ ) - { - for( j = 0; j < img->width; j++ ) - { - sample.data.fl[0] = (float)j; - sample.data.fl[1] = (float)i; - - // estimate the response and get the neighbors' labels - response = knn.find_nearest(&sample,K,0,0,nearests,0); - - // compute the number of neighbors representing the majority - for( k = 0, accuracy = 0; k < K; k++ ) - { - if( nearests->data.fl[k] == response) - accuracy++; - } - // highlight the pixel depending on the accuracy (or confidence) - cvSet2D( img, i, j, response == 1 ? - (accuracy > 5 ? CV_RGB(180,0,0) : CV_RGB(180,120,0)) : - (accuracy > 5 ? CV_RGB(0,180,0) : CV_RGB(120,120,0)) ); - } - } - - // display the original training samples - for( i = 0; i < train_sample_count/2; i++ ) - { - CvPoint pt; - pt.x = cvRound(trainData1.data.fl[i*2]); - pt.y = cvRound(trainData1.data.fl[i*2+1]); - cvCircle( img, pt, 2, CV_RGB(255,0,0), CV_FILLED ); - pt.x = cvRound(trainData2.data.fl[i*2]); - pt.y = cvRound(trainData2.data.fl[i*2+1]); - cvCircle( img, pt, 2, CV_RGB(0,255,0), CV_FILLED ); - } - - cvNamedWindow( "classifier result", 1 ); - cvShowImage( "classifier result", img ); - cvWaitKey(0); - - cvReleaseMat( &trainClasses ); - cvReleaseMat( &trainData ); - return 0; - } +The function sets the default number of neighbors that is used in a simpler ``predict`` method, not ``findNearest``. diff --git a/modules/ml/doc/ml.rst b/modules/ml/doc/ml.rst index b83e7dedc3..86da3ac4ff 100644 --- a/modules/ml/doc/ml.rst +++ b/modules/ml/doc/ml.rst @@ -15,9 +15,7 @@ Most of the classification and regression algorithms are implemented as C++ clas support_vector_machines decision_trees boosting - gradient_boosted_trees random_trees - ertrees expectation_maximization neural_networks mldata diff --git a/modules/ml/doc/mldata.rst b/modules/ml/doc/mldata.rst index c3092d1490..b710f29a8b 100644 --- a/modules/ml/doc/mldata.rst +++ b/modules/ml/doc/mldata.rst @@ -1,279 +1,126 @@ -MLData +Training Data =================== .. highlight:: cpp -For the machine learning algorithms, the data set is often stored in a file of the ``.csv``-like format. The file contains a table of predictor and response values where each row of the table corresponds to a sample. Missing values are supported. The UC Irvine Machine Learning Repository (http://archive.ics.uci.edu/ml/) provides many data sets stored in such a format to the machine learning community. The class ``MLData`` is implemented to easily load the data for training one of the OpenCV machine learning algorithms. For float values, only the ``'.'`` separator is supported. The table can have a header and in such case the user have to set the number of the header lines to skip them duaring the file reading. +In machine learning algorithms there is notion of training data. Training data includes several components: -CvMLData --------- -.. ocv:class:: CvMLData +* A set of training samples. Each training sample is a vector of values (in Computer Vision it's sometimes referred to as feature vector). Usually all the vectors have the same number of components (features); OpenCV ml module assumes that. Each feature can be ordered (i.e. its values are floating-point numbers that can be compared with each other and strictly ordered, i.e. sorted) or categorical (i.e. its value belongs to a fixed set of values that can be integers, strings etc.). -Class for loading the data from a ``.csv`` file. -:: +* Optional set of responses corresponding to the samples. Training data with no responses is used in unsupervised learning algorithms that learn structure of the supplied data based on distances between different samples. Training data with responses is used in supervised learning algorithms, which learn the function mapping samples to responses. Usually the responses are scalar values, ordered (when we deal with regression problem) or categorical (when we deal with classification problem; in this case the responses are often called "labels"). Some algorithms, most noticeably Neural networks, can handle not only scalar, but also multi-dimensional or vector responses. - class CV_EXPORTS CvMLData - { - public: - CvMLData(); - virtual ~CvMLData(); +* Another optional component is the mask of missing measurements. Most algorithms require all the components in all the training samples be valid, but some other algorithms, such as decision tress, can handle the cases of missing measurements. - int read_csv(const char* filename); +* In the case of classification problem user may want to give different weights to different classes. This is useful, for example, when + * user wants to shift prediction accuracy towards lower false-alarm rate or higher hit-rate. + * user wants to compensate for significantly different amounts of training samples from different classes. - const CvMat* get_values() const; - const CvMat* get_responses(); - const CvMat* get_missing() const; +* In addition to that, each training sample may be given a weight, if user wants the algorithm to pay special attention to certain training samples and adjust the training model accordingly. - void set_response_idx( int idx ); - int get_response_idx() const; +* Also, user may wish not to use the whole training data at once, but rather use parts of it, e.g. to do parameter optimization via cross-validation procedure. +As you can see, training data can have rather complex structure; besides, it may be very big and/or not entirely available, so there is need to make abstraction for this concept. In OpenCV ml there is ``cv::ml::TrainData`` class for that. - void set_train_test_split( const CvTrainTestSplit * spl); - const CvMat* get_train_sample_idx() const; - const CvMat* get_test_sample_idx() const; - void mix_train_and_test_idx(); +TrainData +--------- +.. ocv:class:: TrainData - const CvMat* get_var_idx(); - void change_var_idx( int vi, bool state ); +Class encapsulating training data. Please note that the class only specifies the interface of training data, but not implementation. All the statistical model classes in ml take Ptr. In other words, you can create your own class derived from ``TrainData`` and supply smart pointer to the instance of this class into ``StatModel::train``. - const CvMat* get_var_types(); - void set_var_types( const char* str ); +TrainData::loadFromCSV +---------------------- +Reads the dataset from a .csv file and returns the ready-to-use training data. - int get_var_type( int var_idx ) const; - void change_var_type( int var_idx, int type); - - void set_delimiter( char ch ); - char get_delimiter() const; - - void set_miss_ch( char ch ); - char get_miss_ch() const; - - const std::map& get_class_labels_map() const; - - protected: - ... - }; - -CvMLData::read_csv ------------------- -Reads the data set from a ``.csv``-like ``filename`` file and stores all read values in a matrix. - -.. ocv:function:: int CvMLData::read_csv(const char* filename) +.. ocv:function:: Ptr loadFromCSV(const String& filename, int headerLineCount, int responseStartIdx=-1, int responseEndIdx=-1, const String& varTypeSpec=String(), char delimiter=',', char missch='?') :param filename: The input file name -While reading the data, the method tries to define the type of variables (predictors and responses): ordered or categorical. If a value of the variable is not numerical (except for the label for a missing value), the type of the variable is set to ``CV_VAR_CATEGORICAL``. If all existing values of the variable are numerical, the type of the variable is set to ``CV_VAR_ORDERED``. So, the default definition of variables types works correctly for all cases except the case of a categorical variable with numerical class labels. In this case, the type ``CV_VAR_ORDERED`` is set. You should change the type to ``CV_VAR_CATEGORICAL`` using the method :ocv:func:`CvMLData::change_var_type`. For categorical variables, a common map is built to convert a string class label to the numerical class label. Use :ocv:func:`CvMLData::get_class_labels_map` to obtain this map. + :param headerLineCount: The number of lines in the beginning to skip; besides the header, the function also skips empty lines and lines staring with '#' -Also, when reading the data, the method constructs the mask of missing values. For example, values are equal to `'?'`. + :param responseStartIdx: Index of the first output variable. If -1, the function considers the last variable as the response -CvMLData::get_values --------------------- -Returns a pointer to the matrix of predictors and response values + :param responseEndIdx: Index of the last output variable + 1. If -1, then there is single response variable at ``responseStartIdx``. -.. ocv:function:: const CvMat* CvMLData::get_values() const + :param varTypeSpec: The optional text string that specifies the variables' types. It has the format ``ord[n1-n2,n3,n4-n5,...]cat[n6,n7-n8,...]``. That is, variables from n1 to n2 (inclusive range), n3, n4 to n5 ... are considered ordered and n6, n7 to n8 ... are considered as categorical. The range [n1..n2] + [n3] + [n4..n5] + ... + [n6] + [n7..n8] should cover all the variables. If varTypeSpec is not specified, then algorithm uses the following rules: + 1. all input variables are considered ordered by default. If some column contains has non-numerical values, e.g. 'apple', 'pear', 'apple', 'apple', 'mango', the corresponding variable is considered categorical. + 2. if there are several output variables, they are all considered as ordered. Error is reported when non-numerical values are used. + 3. if there is a single output variable, then if its values are non-numerical or are all integers, then it's considered categorical. Otherwise, it's considered ordered. -The method returns a pointer to the matrix of predictor and response ``values`` or ``0`` if the data has not been loaded from the file yet. + :param delimiter: The character used to separate values in each line. -The row count of this matrix equals the sample count. The column count equals predictors ``+ 1`` for the response (if exists) count. This means that each row of the matrix contains values of one sample predictor and response. The matrix type is ``CV_32FC1``. + :param missch: The character used to specify missing measurements. It should not be a digit. Although it's a non-numerical value, it surely does not affect the decision of whether the variable ordered or categorical. -CvMLData::get_responses ------------------------ -Returns a pointer to the matrix of response values +TrainData::create +----------------- +Creates training data from in-memory arrays. -.. ocv:function:: const CvMat* CvMLData::get_responses() +.. ocv:function:: Ptr create(InputArray samples, int layout, InputArray responses, InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), InputArray sampleWeights=noArray(), InputArray varType=noArray()) -The method returns a pointer to the matrix of response values or throws an exception if the data has not been loaded from the file yet. + :param samples: matrix of samples. It should have ``CV_32F`` type. -This is a single-column matrix of the type ``CV_32FC1``. Its row count is equal to the sample count, one column and . + :param layout: it's either ``ROW_SAMPLE``, which means that each training sample is a row of ``samples``, or ``COL_SAMPLE``, which means that each training sample occupies a column of ``samples``. -CvMLData::get_missing ---------------------- -Returns a pointer to the mask matrix of missing values + :param responses: matrix of responses. If the responses are scalar, they should be stored as a single row or as a single column. The matrix should have type ``CV_32F`` or ``CV_32S`` (in the former case the responses are considered as ordered by default; in the latter case - as categorical) -.. ocv:function:: const CvMat* CvMLData::get_missing() const + :param varIdx: vector specifying which variables to use for training. It can be an integer vector (``CV_32S``) containing 0-based variable indices or byte vector (``CV_8U``) containing a mask of active variables. -The method returns a pointer to the mask matrix of missing values or throws an exception if the data has not been loaded from the file yet. + :param sampleIdx: vector specifying which samples to use for training. It can be an integer vector (``CV_32S``) containing 0-based sample indices or byte vector (``CV_8U``) containing a mask of training samples. -This matrix has the same size as the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) and the type ``CV_8UC1``. + :param sampleWeights: optional vector with weights for each sample. It should have ``CV_32F`` type. -CvMLData::set_response_idx + :param varType: optional vector of type ``CV_8U`` and size + , containing types of each input and output variable. The ordered variables are denoted by value ``VAR_ORDERED``, and categorical - by ``VAR_CATEGORICAL``. + + +TrainData::getTrainSamples -------------------------- -Specifies index of response column in the data matrix +Returns matrix of train samples -.. ocv:function:: void CvMLData::set_response_idx( int idx ) +.. ocv:function:: Mat TrainData::getTrainSamples(int layout=ROW_SAMPLE, bool compressSamples=true, bool compressVars=true) const -The method sets the index of a response column in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) or throws an exception if the data has not been loaded from the file yet. + :param layout: The requested layout. If it's different from the initial one, the matrix is transposed. -The old response columns become predictors. If ``idx < 0``, there is no response. + :param compressSamples: if true, the function returns only the training samples (specified by sampleIdx) -CvMLData::get_response_idx --------------------------- -Returns index of the response column in the loaded data matrix + :param compressVars: if true, the function returns the shorter training samples, containing only the active variables. -.. ocv:function:: int CvMLData::get_response_idx() const +In current implementation the function tries to avoid physical data copying and returns the matrix stored inside TrainData (unless the transposition or compression is needed). -The method returns the index of a response column in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) or throws an exception if the data has not been loaded from the file yet. -If ``idx < 0``, there is no response. +TrainData::getTrainResponses +---------------------------- +Returns the vector of responses +.. ocv:function:: Mat TrainData::getTrainResponses() const -CvMLData::set_train_test_split ------------------------------- -Divides the read data set into two disjoint training and test subsets. +The function returns ordered or the original categorical responses. Usually it's used in regression algorithms. -.. ocv:function:: void CvMLData::set_train_test_split( const CvTrainTestSplit * spl ) -This method sets parameters for such a split using ``spl`` (see :ocv:class:`CvTrainTestSplit`) or throws an exception if the data has not been loaded from the file yet. +TrainData::getClassLabels +---------------------------- +Returns the vector of class labels -CvMLData::get_train_sample_idx ------------------------------- -Returns the matrix of sample indices for a training subset +.. ocv:function:: Mat TrainData::getClassLabels() const -.. ocv:function:: const CvMat* CvMLData::get_train_sample_idx() const +The function returns vector of unique labels occurred in the responses. -The method returns the matrix of sample indices for a training subset. This is a single-row matrix of the type ``CV_32SC1``. If data split is not set, the method returns ``0``. If the data has not been loaded from the file yet, an exception is thrown. -CvMLData::get_test_sample_idx ------------------------------ -Returns the matrix of sample indices for a testing subset +TrainData::getTrainNormCatResponses +----------------------------------- +Returns the vector of normalized categorical responses -.. ocv:function:: const CvMat* CvMLData::get_test_sample_idx() const +.. ocv:function:: Mat TrainData::getTrainNormCatResponses() const +The function returns vector of responses. Each response is integer from 0 to -1. The actual label value can be retrieved then from the class label vector, see ``TrainData::getClassLabels``. -CvMLData::mix_train_and_test_idx --------------------------------- -Mixes the indices of training and test samples +TrainData::setTrainTestSplitRatio +----------------------------------- +Splits the training data into the training and test parts -.. ocv:function:: void CvMLData::mix_train_and_test_idx() +.. ocv:function:: void TrainData::setTrainTestSplitRatio(double ratio, bool shuffle=true) -The method shuffles the indices of training and test samples preserving sizes of training and test subsets if the data split is set by :ocv:func:`CvMLData::get_values`. If the data has not been loaded from the file yet, an exception is thrown. +The function selects a subset of specified relative size and then returns it as the training set. If the function is not called, all the data is used for training. Please, note that for each of ``TrainData::getTrain*`` there is corresponding ``TrainData::getTest*``, so that the test subset can be retrieved and processed as well. -CvMLData::get_var_idx ---------------------- -Returns the indices of the active variables in the data matrix -.. ocv:function:: const CvMat* CvMLData::get_var_idx() - -The method returns the indices of variables (columns) used in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`). - -It returns ``0`` if the used subset is not set. It throws an exception if the data has not been loaded from the file yet. Returned matrix is a single-row matrix of the type ``CV_32SC1``. Its column count is equal to the size of the used variable subset. - -CvMLData::change_var_idx ------------------------- -Enables or disables particular variable in the loaded data - -.. ocv:function:: void CvMLData::change_var_idx( int vi, bool state ) - -By default, after reading the data set all variables in the ``values`` matrix (see :ocv:func:`CvMLData::get_values`) are used. But you may want to use only a subset of variables and include/exclude (depending on ``state`` value) a variable with the ``vi`` index from the used subset. If the data has not been loaded from the file yet, an exception is thrown. - -CvMLData::get_var_types ------------------------ -Returns a matrix of the variable types. - -.. ocv:function:: const CvMat* CvMLData::get_var_types() - -The function returns a single-row matrix of the type ``CV_8UC1``, where each element is set to either ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``. The number of columns is equal to the number of variables. If data has not been loaded from file yet an exception is thrown. - -CvMLData::set_var_types ------------------------ -Sets the variables types in the loaded data. - -.. ocv:function:: void CvMLData::set_var_types( const char* str ) - -In the string, a variable type is followed by a list of variables indices. For example: ``"ord[0-17],cat[18]"``, ``"ord[0,2,4,10-12], cat[1,3,5-9,13,14]"``, ``"cat"`` (all variables are categorical), ``"ord"`` (all variables are ordered). - -CvMLData::get_header_lines_number ---------------------------------- -Returns a number of the table header lines. - -.. ocv:function:: int CvMLData::get_header_lines_number() const - -CvMLData::set_header_lines_number ---------------------------------- -Sets a number of the table header lines. - -.. ocv:function:: void CvMLData::set_header_lines_number( int n ) - -By default it is supposed that the table does not have a header, i.e. it contains only the data. - -CvMLData::get_var_type ----------------------- -Returns type of the specified variable - -.. ocv:function:: int CvMLData::get_var_type( int var_idx ) const - -The method returns the type of a variable by the index ``var_idx`` ( ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``). - -CvMLData::change_var_type -------------------------- -Changes type of the specified variable - -.. ocv:function:: void CvMLData::change_var_type( int var_idx, int type) - -The method changes type of variable with index ``var_idx`` from existing type to ``type`` ( ``CV_VAR_ORDERED`` or ``CV_VAR_CATEGORICAL``). - -CvMLData::set_delimiter ------------------------ -Sets the delimiter in the file used to separate input numbers - -.. ocv:function:: void CvMLData::set_delimiter( char ch ) - -The method sets the delimiter for variables in a file. For example: ``','`` (default), ``';'``, ``' '`` (space), or other characters. The floating-point separator ``'.'`` is not allowed. - -CvMLData::get_delimiter ------------------------ -Returns the currently used delimiter character. - -.. ocv:function:: char CvMLData::get_delimiter() const - - -CvMLData::set_miss_ch ---------------------- -Sets the character used to specify missing values - -.. ocv:function:: void CvMLData::set_miss_ch( char ch ) - -The method sets the character used to specify missing values. For example: ``'?'`` (default), ``'-'``. The floating-point separator ``'.'`` is not allowed. - -CvMLData::get_miss_ch ---------------------- -Returns the currently used missing value character. - -.. ocv:function:: char CvMLData::get_miss_ch() const - -CvMLData::get_class_labels_map -------------------------------- -Returns a map that converts strings to labels. - -.. ocv:function:: const std::map& CvMLData::get_class_labels_map() const - -The method returns a map that converts string class labels to the numerical class labels. It can be used to get an original class label as in a file. - -CvTrainTestSplit ----------------- -.. ocv:struct:: CvTrainTestSplit - -Structure setting the split of a data set read by :ocv:class:`CvMLData`. -:: - - struct CvTrainTestSplit - { - CvTrainTestSplit(); - CvTrainTestSplit( int train_sample_count, bool mix = true); - CvTrainTestSplit( float train_sample_portion, bool mix = true); - - union - { - int count; - float portion; - } train_sample_part; - int train_sample_part_mode; - - bool mix; - }; - -There are two ways to construct a split: - -* Set the training sample count (subset size) ``train_sample_count``. Other existing samples are located in a test subset. - -* Set a training sample portion in ``[0,..1]``. The flag ``mix`` is used to mix training and test samples indices when the split is set. Otherwise, the data set is split in the storing order: the first part of samples of a given size is a training subset, the second part is a test subset. +Other methods +------------- +The class includes many other methods that can be used to access normalized categorical input variables, access training data by parts, so that does not have to fit into the memory etc. diff --git a/modules/ml/doc/neural_networks.rst b/modules/ml/doc/neural_networks.rst index 776bf243bd..557ef82c35 100644 --- a/modules/ml/doc/neural_networks.rst +++ b/modules/ml/doc/neural_networks.rst @@ -29,17 +29,17 @@ In other words, given the outputs Different activation functions may be used. ML implements three standard functions: * - Identity function ( ``CvANN_MLP::IDENTITY`` ): + Identity function ( ``ANN_MLP::IDENTITY`` ): :math:`f(x)=x` * - Symmetrical sigmoid ( ``CvANN_MLP::SIGMOID_SYM`` ): + Symmetrical sigmoid ( ``ANN_MLP::SIGMOID_SYM`` ): :math:`f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x}` ), which is the default choice for MLP. The standard sigmoid with :math:`\beta =1, \alpha =1` is shown below: .. image:: pics/sigmoid_bipolar.png * - Gaussian function ( ``CvANN_MLP::GAUSSIAN`` ): + Gaussian function ( ``ANN_MLP::GAUSSIAN`` ): :math:`f(x)=\beta e^{-\alpha x*x}` , which is not completely supported at the moment. In ML, all the neurons have the same activation functions, with the same free parameters ( @@ -95,60 +95,90 @@ The second (default) one is a batch RPROP algorithm. .. [RPROP93] M. Riedmiller and H. Braun, *A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm*, Proc. ICNN, San Francisco (1993). -CvANN_MLP_TrainParams +ANN_MLP::Params --------------------- -.. ocv:struct:: CvANN_MLP_TrainParams +.. ocv:class:: ANN_MLP::Params - Parameters of the MLP training algorithm. You can initialize the structure by a constructor or the individual parameters can be adjusted after the structure is created. + Parameters of the MLP and of the training algorithm. You can initialize the structure by a constructor or the individual parameters can be adjusted after the structure is created. + + The network structure: + + .. ocv:member:: Mat layerSizes + + The number of elements in each layer of network. The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer. + + .. ocv:member:: int activateFunc + + The activation function. Currently the only fully supported activation function is ``ANN_MLP::SIGMOID_SYM``. + + .. ocv:member:: double fparam1 + + The first parameter of activation function, 0 by default. + + .. ocv:member:: double fparam2 + + The second parameter of the activation function, 0 by default. + + .. note:: + + If you are using the default ``ANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. The back-propagation algorithm parameters: - .. ocv:member:: double bp_dw_scale + .. ocv:member:: double bpDWScale Strength of the weight gradient term. The recommended value is about 0.1. - .. ocv:member:: double bp_moment_scale + .. ocv:member:: double bpMomentScale Strength of the momentum term (the difference between weights on the 2 previous iterations). This parameter provides some inertia to smooth the random fluctuations of the weights. It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough The RPROP algorithm parameters (see [RPROP93]_ for details): - .. ocv:member:: double rp_dw0 + .. ocv:member:: double prDW0 Initial value :math:`\Delta_0` of update-values :math:`\Delta_{ij}`. - .. ocv:member:: double rp_dw_plus + .. ocv:member:: double rpDWPlus Increase factor :math:`\eta^+`. It must be >1. - .. ocv:member:: double rp_dw_minus + .. ocv:member:: double rpDWMinus Decrease factor :math:`\eta^-`. It must be <1. - .. ocv:member:: double rp_dw_min + .. ocv:member:: double rpDWMin Update-values lower limit :math:`\Delta_{min}`. It must be positive. - .. ocv:member:: double rp_dw_max + .. ocv:member:: double rpDWMax Update-values upper limit :math:`\Delta_{max}`. It must be >1. -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams +ANN_MLP::Params::Params -------------------------------------------- -The constructors. +Construct the parameter structure -.. ocv:function:: CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() +.. ocv:function:: ANN_MLP::Params() -.. ocv:function:: CvANN_MLP_TrainParams::CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, double param1, double param2=0 ) +.. ocv:function:: ANN_MLP::Params::Params( const Mat& layerSizes, int activateFunc, double fparam1, double fparam2, TermCriteria termCrit, int trainMethod, double param1, double param2=0 ) - :param term_crit: Termination criteria of the training algorithm. You can specify the maximum number of iterations (``max_iter``) and/or how much the error could change between the iterations to make the algorithm continue (``epsilon``). + :param layerSizes: Integer vector specifying the number of neurons in each layer including the input and output layers. + + :param activateFunc: Parameter specifying the activation function for each neuron: one of ``ANN_MLP::IDENTITY``, ``ANN_MLP::SIGMOID_SYM``, and ``ANN_MLP::GAUSSIAN``. + + :param fparam1: The first parameter of the activation function, :math:`\alpha`. See the formulas in the introduction section. + + :param fparam2: The second parameter of the activation function, :math:`\beta`. See the formulas in the introduction section. + + :param termCrit: Termination criteria of the training algorithm. You can specify the maximum number of iterations (``maxCount``) and/or how much the error could change between the iterations to make the algorithm continue (``epsilon``). :param train_method: Training method of the MLP. Possible values are: - * **CvANN_MLP_TrainParams::BACKPROP** The back-propagation algorithm. + * **ANN_MLP_TrainParams::BACKPROP** The back-propagation algorithm. - * **CvANN_MLP_TrainParams::RPROP** The RPROP algorithm. + * **ANN_MLP_TrainParams::RPROP** The RPROP algorithm. :param param1: Parameter of the training method. It is ``rp_dw0`` for ``RPROP`` and ``bp_dw_scale`` for ``BACKPROP``. @@ -158,126 +188,54 @@ By default the RPROP algorithm is used: :: - CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() + ANN_MLP_TrainParams::ANN_MLP_TrainParams() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 ); + layerSizes = Mat(); + activateFun = SIGMOID_SYM; + fparam1 = fparam2 = 0; + term_crit = TermCriteria( TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01 ); train_method = RPROP; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 0.1; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 0.1; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; } -CvANN_MLP +ANN_MLP --------- -.. ocv:class:: CvANN_MLP : public CvStatModel +.. ocv:class:: ANN_MLP : public StatModel MLP model. -Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method :ocv:func:`CvANN_MLP::create`. All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data. +Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method :ocv:func:`ANN_MLP::create`. All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data. -CvANN_MLP::CvANN_MLP +ANN_MLP::create -------------------- -The constructors. +Creates empty model -.. ocv:function:: CvANN_MLP::CvANN_MLP() +.. ocv:function:: Ptr ANN_MLP::create(const Params& params=Params()) -.. ocv:function:: CvANN_MLP::CvANN_MLP( const CvMat* layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. Note that the train method has optional flags, and the following flags are handled by ``ANN_MLP``: -.. ocv:pyfunction:: cv2.ANN_MLP([layerSizes[, activateFunc[, fparam1[, fparam2]]]]) -> + * **UPDATE_WEIGHTS** Algorithm updates the network weights, rather than computes them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm. -The advanced constructor allows to create MLP with the specified topology. See :ocv:func:`CvANN_MLP::create` for details. + * **NO_INPUT_SCALE** Algorithm does not normalize the input vectors. If this flag is not set, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1. If the network is assumed to be updated frequently, the new training data could be much different from original one. In this case, you should take care of proper normalization. -CvANN_MLP::create ------------------ -Constructs MLP with the specified topology. + * **NO_OUTPUT_SCALE** Algorithm does not normalize the output vectors. If the flag is not set, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function. -.. ocv:function:: void CvANN_MLP::create( const Mat& layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) -.. ocv:function:: void CvANN_MLP::create( const CvMat* layerSizes, int activateFunc=CvANN_MLP::SIGMOID_SYM, double fparam1=0, double fparam2=0 ) +ANN_MLP::setParams +------------------- +Sets the new network parameters -.. ocv:pyfunction:: cv2.ANN_MLP.create(layerSizes[, activateFunc[, fparam1[, fparam2]]]) -> None +.. ocv:function:: void ANN_MLP::setParams(const Params& params) - :param layerSizes: Integer vector specifying the number of neurons in each layer including the input and output layers. + :param params: The new parameters - :param activateFunc: Parameter specifying the activation function for each neuron: one of ``CvANN_MLP::IDENTITY``, ``CvANN_MLP::SIGMOID_SYM``, and ``CvANN_MLP::GAUSSIAN``. +The existing network, if any, will be destroyed and new empty one will be created. It should be re-trained after that. - :param fparam1: Free parameter of the activation function, :math:`\alpha`. See the formulas in the introduction section. +ANN_MLP::getParams +------------------- +Retrieves the current network parameters - :param fparam2: Free parameter of the activation function, :math:`\beta`. See the formulas in the introduction section. - -The method creates an MLP network with the specified topology and assigns the same activation function to all the neurons. - -CvANN_MLP::train ----------------- -Trains/updates MLP. - -.. ocv:function:: int CvANN_MLP::train( const Mat& inputs, const Mat& outputs, const Mat& sampleWeights, const Mat& sampleIdx=Mat(), CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags=0 ) - -.. ocv:function:: int CvANN_MLP::train( const CvMat* inputs, const CvMat* outputs, const CvMat* sampleWeights, const CvMat* sampleIdx=0, CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), int flags=0 ) - -.. ocv:pyfunction:: cv2.ANN_MLP.train(inputs, outputs, sampleWeights[, sampleIdx[, params[, flags]]]) -> retval - - :param inputs: Floating-point matrix of input vectors, one vector per row. - - :param outputs: Floating-point matrix of the corresponding output vectors, one vector per row. - - :param sampleWeights: (RPROP only) Optional floating-point vector of weights for each sample. Some samples may be more important than others for training. You may want to raise the weight of certain classes to find the right balance between hit-rate and false-alarm rate, and so on. - - :param sampleIdx: Optional integer vector indicating the samples (rows of ``inputs`` and ``outputs``) that are taken into account. - - :param params: Training parameters. See the :ocv:class:`CvANN_MLP_TrainParams` description. - - :param flags: Various parameters to control the training algorithm. A combination of the following parameters is possible: - - * **UPDATE_WEIGHTS** Algorithm updates the network weights, rather than computes them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm. - - * **NO_INPUT_SCALE** Algorithm does not normalize the input vectors. If this flag is not set, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1. If the network is assumed to be updated frequently, the new training data could be much different from original one. In this case, you should take care of proper normalization. - - * **NO_OUTPUT_SCALE** Algorithm does not normalize the output vectors. If the flag is not set, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function. - -This method applies the specified training algorithm to computing/adjusting the network weights. It returns the number of done iterations. - -The RPROP training algorithm is parallelized with the TBB library. - -If you are using the default ``cvANN_MLP::SIGMOID_SYM`` activation function then the output should be in the range [-1,1], instead of [0,1], for optimal results. - -CvANN_MLP::predict ------------------- -Predicts responses for input samples. - -.. ocv:function:: float CvANN_MLP::predict( const Mat& inputs, Mat& outputs ) const - -.. ocv:function:: float CvANN_MLP::predict( const CvMat* inputs, CvMat* outputs ) const - -.. ocv:pyfunction:: cv2.ANN_MLP.predict(inputs[, outputs]) -> retval, outputs - - :param inputs: Input samples. - - :param outputs: Predicted responses for corresponding samples. - -The method returns a dummy value which should be ignored. - -If you are using the default ``cvANN_MLP::SIGMOID_SYM`` activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1]. - -CvANN_MLP::get_layer_count --------------------------- -Returns the number of layers in the MLP. - -.. ocv:function:: int CvANN_MLP::get_layer_count() - -CvANN_MLP::get_layer_sizes --------------------------- -Returns numbers of neurons in each layer of the MLP. - -.. ocv:function:: const CvMat* CvANN_MLP::get_layer_sizes() - -The method returns the integer vector specifying the number of neurons in each layer including the input and output layers of the MLP. - -CvANN_MLP::get_weights ----------------------- -Returns neurons weights of the particular layer. - -.. ocv:function:: double* CvANN_MLP::get_weights(int layer) - - :param layer: Index of the particular layer. +.. ocv:function:: Params ANN_MLP::getParams() const diff --git a/modules/ml/doc/normal_bayes_classifier.rst b/modules/ml/doc/normal_bayes_classifier.rst index dbd6ae229c..e3aba21c32 100644 --- a/modules/ml/doc/normal_bayes_classifier.rst +++ b/modules/ml/doc/normal_bayes_classifier.rst @@ -9,55 +9,26 @@ This simple classification model assumes that feature vectors from each class ar .. [Fukunaga90] K. Fukunaga. *Introduction to Statistical Pattern Recognition*. second ed., New York: Academic Press, 1990. -CvNormalBayesClassifier +NormalBayesClassifier ----------------------- -.. ocv:class:: CvNormalBayesClassifier : public CvStatModel +.. ocv:class:: NormalBayesClassifier : public StatModel Bayes classifier for normally distributed data. -CvNormalBayesClassifier::CvNormalBayesClassifier ------------------------------------------------- -Default and training constructors. +NormalBayesClassifier::create +----------------------------- +Creates empty model -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier() +.. ocv:function:: Ptr NormalBayesClassifier::create(const NormalBayesClassifier::Params& params=Params()) -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat() ) + :param params: The model parameters. There is none so far, the structure is used as a placeholder for possible extensions. -.. ocv:function:: CvNormalBayesClassifier::CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0 ) +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. -.. ocv:pyfunction:: cv2.NormalBayesClassifier([trainData, responses[, varIdx[, sampleIdx]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvNormalBayesClassifier::train ------------------------------- -Trains the model. - -.. ocv:function:: bool CvNormalBayesClassifier::train( const Mat& trainData, const Mat& responses, const Mat& varIdx = Mat(), const Mat& sampleIdx=Mat(), bool update=false ) - -.. ocv:function:: bool CvNormalBayesClassifier::train( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ) - -.. ocv:pyfunction:: cv2.NormalBayesClassifier.train(trainData, responses[, varIdx[, sampleIdx[, update]]]) -> retval - - :param update: Identifies whether the model should be trained from scratch (``update=false``) or should be updated using the new training data (``update=true``). - -The method trains the Normal Bayes classifier. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only ``CV_ROW_SAMPLE`` data layout is supported. -* Input variables are all ordered. -* Output variable is categorical , which means that elements of ``responses`` must be integer numbers, though the vector may have the ``CV_32FC1`` type. -* Missing measurements are not supported. - -CvNormalBayesClassifier::predict --------------------------------- +NormalBayesClassifier::predictProb +---------------------------------- Predicts the response for sample(s). -.. ocv:function:: float CvNormalBayesClassifier::predict( const Mat& samples, Mat* results=0, Mat* results_prob=0 ) const +.. ocv:function:: float NormalBayesClassifier::predictProb( InputArray inputs, OutputArray outputs, OutputArray outputProbs, int flags=0 ) const -.. ocv:function:: float CvNormalBayesClassifier::predict( const CvMat* samples, CvMat* results=0, CvMat* results_prob=0 ) const - -.. ocv:pyfunction:: cv2.NormalBayesClassifier.predict(samples) -> retval, results - -The method estimates the most probable classes for input vectors. Input vectors (one or more) are stored as rows of the matrix ``samples``. In case of multiple input vectors, there should be one output vector ``results``. The predicted class for a single input vector is returned by the method. The vector ``results_prob`` contains the output probabilities coresponding to each element of ``result``. - -The function is parallelized with the TBB library. +The method estimates the most probable classes for input vectors. Input vectors (one or more) are stored as rows of the matrix ``inputs``. In case of multiple input vectors, there should be one output vector ``outputs``. The predicted class for a single input vector is returned by the method. The vector ``outputProbs`` contains the output probabilities corresponding to each element of ``result``. diff --git a/modules/ml/doc/random_trees.rst b/modules/ml/doc/random_trees.rst index 8d7911d368..602786d57e 100644 --- a/modules/ml/doc/random_trees.rst +++ b/modules/ml/doc/random_trees.rst @@ -40,179 +40,64 @@ For the random trees usage example, please, see letter_recog.cpp sample in OpenC * And other articles from the web site http://www.stat.berkeley.edu/users/breiman/RandomForests/cc_home.htm -CvRTParams ----------- -.. ocv:struct:: CvRTParams : public CvDTreeParams +RTrees::Params +-------------- +.. ocv:struct:: RTrees::Params : public DTrees::Params Training parameters of random trees. The set of training parameters for the forest is a superset of the training parameters for a single tree. However, random trees do not need all the functionality/features of decision trees. Most noticeably, the trees are not pruned, so the cross-validation parameters are not used. -CvRTParams::CvRTParams: +RTrees::Params::Params ----------------------- -The constructors. +The constructors -.. ocv:function:: CvRTParams::CvRTParams() +.. ocv:function:: RTrees::Params::Params() -.. ocv:function:: CvRTParams::CvRTParams( int max_depth, int min_sample_count, float regression_accuracy, bool use_surrogates, int max_categories, const float* priors, bool calc_var_importance, int nactive_vars, int max_num_of_trees_in_the_forest, float forest_accuracy, int termcrit_type ) +.. ocv:function:: RTrees::Params::Params( int maxDepth, int minSampleCount, double regressionAccuracy, bool useSurrogates, int maxCategories, const Mat& priors, bool calcVarImportance, int nactiveVars, TermCriteria termCrit ) - :param max_depth: the depth of the tree. A low value will likely underfit and conversely a high value will likely overfit. The optimal value can be obtained using cross validation or other suitable methods. + :param maxDepth: the depth of the tree. A low value will likely underfit and conversely a high value will likely overfit. The optimal value can be obtained using cross validation or other suitable methods. - :param min_sample_count: minimum samples required at a leaf node for it to be split. A reasonable value is a small percentage of the total data e.g. 1%. + :param minSampleCount: minimum samples required at a leaf node for it to be split. A reasonable value is a small percentage of the total data e.g. 1%. - :param max_categories: Cluster possible values of a categorical variable into ``K`` :math:`\leq` ``max_categories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``max_categories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. + :param maxCategories: Cluster possible values of a categorical variable into ``K <= maxCategories`` clusters to find a suboptimal split. If a discrete variable, on which the training procedure tries to make a split, takes more than ``max_categories`` values, the precise best subset estimation may take a very long time because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find sub-optimal split in this case by clustering all the samples into ``maxCategories`` clusters that is some categories are merged together. The clustering is applied only in ``n``>2-class classification problems for categorical variables with ``N > max_categories`` possible values. In case of regression and 2-class classification the optimal split can be found efficiently without employing clustering, thus the parameter is not used in these cases. - :param calc_var_importance: If true then variable importance will be calculated and then it can be retrieved by :ocv:func:`CvRTrees::get_var_importance`. + :param calcVarImportance: If true then variable importance will be calculated and then it can be retrieved by ``RTrees::getVarImportance``. - :param nactive_vars: The size of the randomly selected subset of features at each tree node and that are used to find the best split(s). If you set it to 0 then the size will be set to the square root of the total number of features. + :param nactiveVars: The size of the randomly selected subset of features at each tree node and that are used to find the best split(s). If you set it to 0 then the size will be set to the square root of the total number of features. - :param max_num_of_trees_in_the_forest: The maximum number of trees in the forest (surprise, surprise). Typically the more trees you have the better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes pass a certain number of trees. Also to keep in mind, the number of tree increases the prediction time linearly. + :param termCrit: The termination criteria that specifies when the training algorithm stops - either when the specified number of trees is trained and added to the ensemble or when sufficient accuracy (measured as OOB error) is achieved. Typically the more trees you have the better the accuracy. However, the improvement in accuracy generally diminishes and asymptotes pass a certain number of trees. Also to keep in mind, the number of tree increases the prediction time linearly. - :param forest_accuracy: Sufficient accuracy (OOB error). - - :param termcrit_type: The type of the termination criteria: - - * **CV_TERMCRIT_ITER** Terminate learning by the ``max_num_of_trees_in_the_forest``; - - * **CV_TERMCRIT_EPS** Terminate learning by the ``forest_accuracy``; - - * **CV_TERMCRIT_ITER | CV_TERMCRIT_EPS** Use both termination criteria. - -For meaning of other parameters see :ocv:func:`CvDTreeParams::CvDTreeParams`. - -The default constructor sets all parameters to default values which are different from default values of :ocv:class:`CvDTreeParams`: +The default constructor sets all parameters to default values which are different from default values of ``DTrees::Params``: :: - CvRTParams::CvRTParams() : CvDTreeParams( 5, 10, 0, false, 10, 0, false, false, 0 ), - calc_var_importance(false), nactive_vars(0) + RTrees::Params::Params() : DTrees::Params( 5, 10, 0, false, 10, 0, false, false, Mat() ), + calcVarImportance(false), nactiveVars(0) { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 50, 0.1 ); + termCrit = cvTermCriteria( TermCriteria::MAX_ITERS + TermCriteria::EPS, 50, 0.1 ); } -CvRTrees +RTrees -------- -.. ocv:class:: CvRTrees : public CvStatModel +.. ocv:class:: RTrees : public DTrees The class implements the random forest predictor as described in the beginning of this section. -CvRTrees::train +RTrees::create --------------- -Trains the Random Trees model. +Creates the empty model -.. ocv:function:: bool CvRTrees::train( const Mat& trainData, int tflag, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat& missingDataMask=Mat(), CvRTParams params=CvRTParams() ) +.. ocv:function:: bool RTrees::create(const RTrees::Params& params=Params()) -.. ocv:function:: bool CvRTrees::train( const CvMat* trainData, int tflag, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, const CvMat* varType=0, const CvMat* missingDataMask=0, CvRTParams params=CvRTParams() ) +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. -.. ocv:function:: bool CvRTrees::train( CvMLData* data, CvRTParams params=CvRTParams() ) - -.. ocv:pyfunction:: cv2.RTrees.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]]) -> retval - -The method :ocv:func:`CvRTrees::train` is very similar to the method :ocv:func:`CvDTree::train` and follows the generic method :ocv:func:`CvStatModel::train` conventions. All the parameters specific to the algorithm training are passed as a :ocv:class:`CvRTParams` instance. The estimate of the training error (``oob-error``) is stored in the protected class member ``oob_error``. - -The function is parallelized with the TBB library. - -CvRTrees::predict ------------------ -Predicts the output for an input sample. - -.. ocv:function:: float CvRTrees::predict( const Mat& sample, const Mat& missing=Mat() ) const - -.. ocv:function:: float CvRTrees::predict( const CvMat* sample, const CvMat* missing = 0 ) const - -.. ocv:pyfunction:: cv2.RTrees.predict(sample[, missing]) -> retval - - :param sample: Sample for classification. - - :param missing: Optional missing measurement mask of the sample. - -The input parameters of the prediction method are the same as in :ocv:func:`CvDTree::predict` but the return value type is different. This method returns the cumulative result from all the trees in the forest (the class that receives the majority of voices, or the mean of the regression function estimates). - - -CvRTrees::predict_prob ----------------------- -Returns a fuzzy-predicted class label. - -.. ocv:function:: float CvRTrees::predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const - -.. ocv:function:: float CvRTrees::predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const - -.. ocv:pyfunction:: cv2.RTrees.predict_prob(sample[, missing]) -> retval - - :param sample: Sample for classification. - - :param missing: Optional missing measurement mask of the sample. - -The function works for binary classification problems only. It returns the number between 0 and 1. This number represents probability or confidence of the sample belonging to the second class. It is calculated as the proportion of decision trees that classified the sample to the second class. - - -CvRTrees::getVarImportance +RTrees::getVarImportance ---------------------------- Returns the variable importance array. -.. ocv:function:: Mat CvRTrees::getVarImportance() +.. ocv:function:: Mat RTrees::getVarImportance() const -.. ocv:function:: const CvMat* CvRTrees::get_var_importance() - -.. ocv:pyfunction:: cv2.RTrees.getVarImportance() -> retval - -The method returns the variable importance vector, computed at the training stage when ``CvRTParams::calc_var_importance`` is set to true. If this flag was set to false, the ``NULL`` pointer is returned. This differs from the decision trees where variable importance can be computed anytime after the training. - - -CvRTrees::get_proximity ------------------------ -Retrieves the proximity measure between two training samples. - -.. ocv:function:: float CvRTrees::get_proximity( const CvMat* sample1, const CvMat* sample2, const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const - - :param sample1: The first sample. - - :param sample2: The second sample. - - :param missing1: Optional missing measurement mask of the first sample. - - :param missing2: Optional missing measurement mask of the second sample. - -The method returns proximity measure between any two samples. This is a ratio of those trees in the ensemble, in which the samples fall into the same leaf node, to the total number of the trees. - -CvRTrees::calc_error --------------------- -Returns error of the random forest. - -.. ocv:function:: float CvRTrees::calc_error( CvMLData* data, int type, std::vector* resp=0 ) - -The method is identical to :ocv:func:`CvDTree::calc_error` but uses the random forest as predictor. - - -CvRTrees::get_train_error -------------------------- -Returns the train error. - -.. ocv:function:: float CvRTrees::get_train_error() - -The method works for classification problems only. It returns the proportion of incorrectly classified train samples. - - -CvRTrees::get_rng ------------------ -Returns the state of the used random number generator. - -.. ocv:function:: CvRNG* CvRTrees::get_rng() - - -CvRTrees::get_tree_count ------------------------- -Returns the number of trees in the constructed random forest. - -.. ocv:function:: int CvRTrees::get_tree_count() const - - -CvRTrees::get_tree ------------------- -Returns the specific decision tree in the constructed random forest. - -.. ocv:function:: CvForestTree* CvRTrees::get_tree(int i) const - - :param i: Index of the decision tree. +The method returns the variable importance vector, computed at the training stage when ``RTParams::calcVarImportance`` is set to true. If this flag was set to false, the empty matrix is returned. diff --git a/modules/ml/doc/statistical_models.rst b/modules/ml/doc/statistical_models.rst index af250b7864..82cffbbfe3 100644 --- a/modules/ml/doc/statistical_models.rst +++ b/modules/ml/doc/statistical_models.rst @@ -3,161 +3,110 @@ Statistical Models .. highlight:: cpp -.. index:: CvStatModel +.. index:: StatModel -CvStatModel +StatModel ----------- -.. ocv:class:: CvStatModel +.. ocv:class:: StatModel -Base class for statistical models in ML. :: - - class CvStatModel - { - public: - /* CvStatModel(); */ - /* CvStatModel( const Mat& train_data ... ); */ - - virtual ~CvStatModel(); - - virtual void clear()=0; - - /* virtual bool train( const Mat& train_data, [int tflag,] ..., const - Mat& responses, ..., - [const Mat& var_idx,] ..., [const Mat& sample_idx,] ... - [const Mat& var_type,] ..., [const Mat& missing_mask,] - ... )=0; - */ - - /* virtual float predict( const Mat& sample ... ) const=0; */ - - virtual void save( const char* filename, const char* name=0 )=0; - virtual void load( const char* filename, const char* name=0 )=0; - - virtual void write( CvFileStorage* storage, const char* name )=0; - virtual void read( CvFileStorage* storage, CvFileNode* node )=0; - }; +Base class for statistical models in OpenCV ML. -In this declaration, some methods are commented off. These are methods for which there is no unified API (with the exception of the default constructor). However, there are many similarities in the syntax and semantics that are briefly described below in this section, as if they are part of the base class. - -CvStatModel::CvStatModel +StatModel::train ------------------------ -The default constructor. +Trains the statistical model -.. ocv:function:: CvStatModel::CvStatModel() +.. ocv:function:: bool StatModel::train( const Ptr& trainData, int flags=0 ) -Each statistical model class in ML has a default constructor without parameters. This constructor is useful for a two-stage model construction, when the default constructor is followed by :ocv:func:`CvStatModel::train` or :ocv:func:`CvStatModel::load`. +.. ocv:function:: bool StatModel::train( InputArray samples, int layout, InputArray responses ) -CvStatModel::CvStatModel(...) +.. ocv:function:: Ptr<_Tp> StatModel::train(const Ptr& data, const _Tp::Params& p, int flags=0 ) + +.. ocv:function:: Ptr<_Tp> StatModel::train(InputArray samples, int layout, InputArray responses, const _Tp::Params& p, int flags=0 ) + + :param trainData: training data that can be loaded from file using ``TrainData::loadFromCSV`` or created with ``TrainData::create``. + + :param samples: training samples + + :param layout: ``ROW_SAMPLE`` (training samples are the matrix rows) or ``COL_SAMPLE`` (training samples are the matrix columns) + + :param responses: vector of responses associated with the training samples. + + :param p: the stat model parameters. + + :param flags: optional flags, depending on the model. Some of the models can be updated with the new training samples, not completely overwritten (such as ``NormalBayesClassifier`` or ``ANN_MLP``). + +There are 2 instance methods and 2 static (class) template methods. The first two train the already created model (the very first method must be overwritten in the derived classes). And the latter two variants are convenience methods that construct empty model and then call its train method. + + +StatModel::isTrained ----------------------------- -The training constructor. +Returns true if the model is trained -.. ocv:function:: CvStatModel::CvStatModel() +.. ocv:function:: bool StatModel::isTrained() -Most ML classes provide a single-step constructor and train constructors. This constructor is equivalent to the default constructor, followed by the :ocv:func:`CvStatModel::train` method with the parameters that are passed to the constructor. +The method must be overwritten in the derived classes. -CvStatModel::~CvStatModel -------------------------- -The virtual destructor. +StatModel::isClassifier +----------------------------- +Returns true if the model is classifier -.. ocv:function:: CvStatModel::~CvStatModel() +.. ocv:function:: bool StatModel::isClassifier() -The destructor of the base class is declared as virtual. So, it is safe to write the following code: :: +The method must be overwritten in the derived classes. - CvStatModel* model; - if( use_svm ) - model = new CvSVM(... /* SVM params */); - else - model = new CvDTree(... /* Decision tree params */); - ... - delete model; +StatModel::getVarCount +----------------------------- +Returns the number of variables in training samples +.. ocv:function:: int StatModel::getVarCount() -Normally, the destructor of each derived class does nothing. But in this instance, it calls the overridden method :ocv:func:`CvStatModel::clear` that deallocates all the memory. +The method must be overwritten in the derived classes. -CvStatModel::clear +StatModel::predict ------------------ -Deallocates memory and resets the model state. +Predicts response(s) for the provided sample(s) -.. ocv:function:: void CvStatModel::clear() +.. ocv:function:: float StatModel::predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const -The method ``clear`` does the same job as the destructor: it deallocates all the memory occupied by the class members. But the object itself is not destructed and can be reused further. This method is called from the destructor, from the :ocv:func:`CvStatModel::train` methods of the derived classes, from the methods :ocv:func:`CvStatModel::load`, :ocv:func:`CvStatModel::read()`, or even explicitly by the user. + :param samples: The input samples, floating-point matrix -CvStatModel::save + :param results: The optional output matrix of results. + + :param flags: The optional flags, model-dependent. Some models, such as ``Boost``, ``SVM`` recognize ``StatModel::RAW_OUTPUT`` flag, which makes the method return the raw results (the sum), not the class label. + + +StatModel::calcError +------------------------- +Computes error on the training or test dataset + +.. ocv:function:: float StatModel::calcError( const Ptr& data, bool test, OutputArray resp ) const + + :param data: the training data + + :param test: if true, the error is computed over the test subset of the data, otherwise it's computed over the training subset of the data. Please note that if you loaded a completely different dataset to evaluate already trained classifier, you will probably want not to set the test subset at all with ``TrainData::setTrainTestSplitRatio`` and specify ``test=false``, so that the error is computed for the whole new set. Yes, this sounds a bit confusing. + + :param resp: the optional output responses. + +The method uses ``StatModel::predict`` to compute the error. For regression models the error is computed as RMS, for classifiers - as a percent of missclassified samples (0%-100%). + + +StatModel::save ----------------- Saves the model to a file. -.. ocv:function:: void CvStatModel::save( const char* filename, const char* name=0 ) +.. ocv:function:: void StatModel::save( const String& filename ) -.. ocv:pyfunction:: cv2.StatModel.save(filename[, name]) -> None +In order to make this method work, the derived class must overwrite ``Algorithm::write(FileStorage& fs)``. -The method ``save`` saves the complete model state to the specified XML or YAML file with the specified name or default name (which depends on a particular class). *Data persistence* functionality from ``CxCore`` is used. - -CvStatModel::load +StatModel::load ----------------- -Loads the model from a file. +Loads model from the file -.. ocv:function:: void CvStatModel::load( const char* filename, const char* name=0 ) +.. ocv:function:: Ptr<_Tp> StatModel::load( const String& filename ) -.. ocv:pyfunction:: cv2.StatModel.load(filename[, name]) -> None +This is static template method of StatModel. It's usage is following (in the case of SVM): :: -The method ``load`` loads the complete model state with the specified name (or default model-dependent name) from the specified XML or YAML file. The previous model state is cleared by :ocv:func:`CvStatModel::clear`. + Ptr svm = StatModel::load("my_svm_model.xml"); - -CvStatModel::write ------------------- -Writes the model to the file storage. - -.. ocv:function:: void CvStatModel::write( CvFileStorage* storage, const char* name ) - -The method ``write`` stores the complete model state in the file storage with the specified name or default name (which depends on the particular class). The method is called by :ocv:func:`CvStatModel::save`. - - -CvStatModel::read ------------------ -Reads the model from the file storage. - -.. ocv:function:: void CvStatModel::read( CvFileStorage* storage, CvFileNode* node ) - -The method ``read`` restores the complete model state from the specified node of the file storage. Use the function -:ocv:cfunc:`GetFileNodeByName` to locate the node. - -The previous model state is cleared by :ocv:func:`CvStatModel::clear`. - -CvStatModel::train ------------------- -Trains the model. - -.. ocv:function:: bool CvStatModel::train( const Mat& train_data, [int tflag,] ..., const Mat& responses, ..., [const Mat& var_idx,] ..., [const Mat& sample_idx,] ... [const Mat& var_type,] ..., [const Mat& missing_mask,] ... ) - -The method trains the statistical model using a set of input feature vectors and the corresponding output values (responses). Both input and output vectors/values are passed as matrices. By default, the input feature vectors are stored as ``train_data`` rows, that is, all the components (features) of a training vector are stored continuously. However, some algorithms can handle the transposed representation when all values of each particular feature (component/input variable) over the whole input set are stored continuously. If both layouts are supported, the method includes the ``tflag`` parameter that specifies the orientation as follows: - -* ``tflag=CV_ROW_SAMPLE`` The feature vectors are stored as rows. - -* ``tflag=CV_COL_SAMPLE`` The feature vectors are stored as columns. - -The ``train_data`` must have the ``CV_32FC1`` (32-bit floating-point, single-channel) format. Responses are usually stored in a 1D vector (a row or a column) of ``CV_32SC1`` (only in the classification problem) or ``CV_32FC1`` format, one value per input vector. Although, some algorithms, like various flavors of neural nets, take vector responses. - -For classification problems, the responses are discrete class labels. For regression problems, the responses are values of the function to be approximated. Some algorithms can deal only with classification problems, some - only with regression problems, and some can deal with both problems. In the latter case, the type of output variable is either passed as a separate parameter or as the last element of the ``var_type`` vector: - -* ``CV_VAR_CATEGORICAL`` The output values are discrete class labels. - -* ``CV_VAR_ORDERED(=CV_VAR_NUMERICAL)`` The output values are ordered. This means that two different values can be compared as numbers, and this is a regression problem. - -Types of input variables can be also specified using ``var_type``. Most algorithms can handle only ordered input variables. - -Many ML models may be trained on a selected feature subset, and/or on a selected sample subset of the training set. To make it easier for you, the method ``train`` usually includes the ``var_idx`` and ``sample_idx`` parameters. The former parameter identifies variables (features) of interest, and the latter one identifies samples of interest. Both vectors are either integer (``CV_32SC1``) vectors (lists of 0-based indices) or 8-bit (``CV_8UC1``) masks of active variables/samples. You may pass ``NULL`` pointers instead of either of the arguments, meaning that all of the variables/samples are used for training. - -Additionally, some algorithms can handle missing measurements, that is, when certain features of certain training samples have unknown values (for example, they forgot to measure a temperature of patient A on Monday). The parameter ``missing_mask``, an 8-bit matrix of the same size as ``train_data``, is used to mark the missed values (non-zero elements of the mask). - -Usually, the previous model state is cleared by :ocv:func:`CvStatModel::clear` before running the training procedure. However, some algorithms may optionally update the model state with the new training data, instead of resetting it. - -CvStatModel::predict --------------------- -Predicts the response for a sample. - -.. ocv:function:: float CvStatModel::predict( const Mat& sample, ... ) const - -The method is used to predict the response for a new sample. In case of a classification, the method returns the class label. In case of a regression, the method returns the output function value. The input sample must have as many components as the ``train_data`` passed to ``train`` contains. If the ``var_idx`` parameter is passed to ``train``, it is remembered and then is used to extract only the necessary components from the input sample in the method ``predict``. - -The suffix ``const`` means that prediction does not affect the internal model state, so the method can be safely called from within different threads. +In order to make this method work, the derived class must overwrite ``Algorithm::read(const FileNode& fn)``. diff --git a/modules/ml/doc/support_vector_machines.rst b/modules/ml/doc/support_vector_machines.rst index 9793bd6e3f..d514db28af 100644 --- a/modules/ml/doc/support_vector_machines.rst +++ b/modules/ml/doc/support_vector_machines.rst @@ -14,21 +14,21 @@ SVM implementation in OpenCV is based on [LibSVM]_. .. [LibSVM] C.-C. Chang and C.-J. Lin. *LIBSVM: a library for support vector machines*, ACM Transactions on Intelligent Systems and Technology, 2:27:1--27:27, 2011. (http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf) -CvParamGrid +ParamGrid ----------- -.. ocv:struct:: CvParamGrid +.. ocv:class:: ParamGrid The structure represents the logarithmic grid range of statmodel parameters. It is used for optimizing statmodel accuracy by varying model parameters, the accuracy estimate being computed by cross-validation. - .. ocv:member:: double CvParamGrid::min_val + .. ocv:member:: double ParamGrid::minVal Minimum value of the statmodel parameter. - .. ocv:member:: double CvParamGrid::max_val + .. ocv:member:: double ParamGrid::maxVal Maximum value of the statmodel parameter. - .. ocv:member:: double CvParamGrid::step + .. ocv:member:: double ParamGrid::logStep Logarithmic step for iterating the statmodel parameter. @@ -36,88 +36,78 @@ The grid determines the following iteration sequence of the statmodel parameter .. math:: - (min\_val, min\_val*step, min\_val*{step}^2, \dots, min\_val*{step}^n), + (minVal, minVal*step, minVal*{step}^2, \dots, minVal*{logStep}^n), where :math:`n` is the maximal index satisfying .. math:: - \texttt{min\_val} * \texttt{step} ^n < \texttt{max\_val} + \texttt{minVal} * \texttt{logStep} ^n < \texttt{maxVal} -The grid is logarithmic, so ``step`` must always be greater then 1. +The grid is logarithmic, so ``logStep`` must always be greater then 1. -CvParamGrid::CvParamGrid +ParamGrid::ParamGrid ------------------------ The constructors. -.. ocv:function:: CvParamGrid::CvParamGrid() +.. ocv:function:: ParamGrid::ParamGrid() -.. ocv:function:: CvParamGrid::CvParamGrid( double min_val, double max_val, double log_step ) +.. ocv:function:: ParamGrid::ParamGrid( double minVal, double maxVal, double logStep ) The full constructor initializes corresponding members. The default constructor creates a dummy grid: :: - CvParamGrid::CvParamGrid() + ParamGrid::ParamGrid() { - min_val = max_val = step = 0; + minVal = maxVal = 0; + logStep = 1; } -CvParamGrid::check ------------------- -Checks validness of the grid. -.. ocv:function:: bool CvParamGrid::check() - -Returns ``true`` if the grid is valid and ``false`` otherwise. The grid is valid if and only if: - -* Lower bound of the grid is less then the upper one. -* Lower bound of the grid is positive. -* Grid step is greater then 1. - -CvSVMParams +SVM::Params ----------- -.. ocv:struct:: CvSVMParams +.. ocv:class:: SVM::Params SVM training parameters. -The structure must be initialized and passed to the training method of :ocv:class:`CvSVM`. +The structure must be initialized and passed to the training method of :ocv:class:`SVM`. -CvSVMParams::CvSVMParams +SVM::Params::Params ------------------------ -The constructors. +The constructors -.. ocv:function:: CvSVMParams::CvSVMParams() +.. ocv:function:: SVM::Params::Params() -.. ocv:function:: CvSVMParams::CvSVMParams( int svm_type, int kernel_type, double degree, double gamma, double coef0, double Cvalue, double nu, double p, CvMat* class_weights, CvTermCriteria term_crit ) +.. ocv:function:: SVM::Params::Params( int svmType, int kernelType, double degree, double gamma, double coef0, double Cvalue, double nu, double p, const Mat& classWeights, TermCriteria termCrit ) - :param svm_type: Type of a SVM formulation. Possible values are: + :param svmType: Type of a SVM formulation. Possible values are: - * **CvSVM::C_SVC** C-Support Vector Classification. ``n``-class classification (``n`` :math:`\geq` 2), allows imperfect separation of classes with penalty multiplier ``C`` for outliers. + * **SVM::C_SVC** C-Support Vector Classification. ``n``-class classification (``n`` :math:`\geq` 2), allows imperfect separation of classes with penalty multiplier ``C`` for outliers. - * **CvSVM::NU_SVC** :math:`\nu`-Support Vector Classification. ``n``-class classification with possible imperfect separation. Parameter :math:`\nu` (in the range 0..1, the larger the value, the smoother the decision boundary) is used instead of ``C``. + * **SVM::NU_SVC** :math:`\nu`-Support Vector Classification. ``n``-class classification with possible imperfect separation. Parameter :math:`\nu` (in the range 0..1, the larger the value, the smoother the decision boundary) is used instead of ``C``. - * **CvSVM::ONE_CLASS** Distribution Estimation (One-class SVM). All the training data are from the same class, SVM builds a boundary that separates the class from the rest of the feature space. + * **SVM::ONE_CLASS** Distribution Estimation (One-class SVM). All the training data are from the same class, SVM builds a boundary that separates the class from the rest of the feature space. - * **CvSVM::EPS_SVR** :math:`\epsilon`-Support Vector Regression. The distance between feature vectors from the training set and the fitting hyper-plane must be less than ``p``. For outliers the penalty multiplier ``C`` is used. + * **SVM::EPS_SVR** :math:`\epsilon`-Support Vector Regression. The distance between feature vectors from the training set and the fitting hyper-plane must be less than ``p``. For outliers the penalty multiplier ``C`` is used. - * **CvSVM::NU_SVR** :math:`\nu`-Support Vector Regression. :math:`\nu` is used instead of ``p``. + * **SVM::NU_SVR** :math:`\nu`-Support Vector Regression. :math:`\nu` is used instead of ``p``. See [LibSVM]_ for details. - :param kernel_type: Type of a SVM kernel. Possible values are: + :param kernelType: Type of a SVM kernel. Possible values are: - * **CvSVM::LINEAR** Linear kernel. No mapping is done, linear discrimination (or regression) is done in the original feature space. It is the fastest option. :math:`K(x_i, x_j) = x_i^T x_j`. + * **SVM::LINEAR** Linear kernel. No mapping is done, linear discrimination (or regression) is done in the original feature space. It is the fastest option. :math:`K(x_i, x_j) = x_i^T x_j`. - * **CvSVM::POLY** Polynomial kernel: :math:`K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0`. + * **SVM::POLY** Polynomial kernel: :math:`K(x_i, x_j) = (\gamma x_i^T x_j + coef0)^{degree}, \gamma > 0`. - * **CvSVM::RBF** Radial basis function (RBF), a good choice in most cases. :math:`K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0`. + * **SVM::RBF** Radial basis function (RBF), a good choice in most cases. :math:`K(x_i, x_j) = e^{-\gamma ||x_i - x_j||^2}, \gamma > 0`. - * **CvSVM::SIGMOID** Sigmoid kernel: :math:`K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)`. + * **SVM::SIGMOID** Sigmoid kernel: :math:`K(x_i, x_j) = \tanh(\gamma x_i^T x_j + coef0)`. - * **CvSVM::CHI2** Exponential Chi2 kernel, similar to the RBF kernel: :math:`K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0`. + * **SVM::CHI2** Exponential Chi2 kernel, similar to the RBF kernel: :math:`K(x_i, x_j) = e^{-\gamma \chi^2(x_i,x_j)}, \chi^2(x_i,x_j) = (x_i-x_j)^2/(x_i+x_j), \gamma > 0`. - * **CvSVM::INTER** Histogram intersection kernel. A fast kernel. :math:`K(x_i, x_j) = min(x_i,x_j)`. + * **SVM::INTER** Histogram intersection kernel. A fast kernel. :math:`K(x_i, x_j) = min(x_i,x_j)`. :param degree: Parameter ``degree`` of a kernel function (POLY). @@ -131,19 +121,19 @@ The constructors. :param p: Parameter :math:`\epsilon` of a SVM optimization problem (EPS_SVR). - :param class_weights: Optional weights in the C_SVC problem , assigned to particular classes. They are multiplied by ``C`` so the parameter ``C`` of class ``#i`` becomes :math:`class\_weights_i * C`. Thus these weights affect the misclassification penalty for different classes. The larger weight, the larger penalty on misclassification of data from the corresponding class. + :param classWeights: Optional weights in the C_SVC problem , assigned to particular classes. They are multiplied by ``C`` so the parameter ``C`` of class ``#i`` becomes ``classWeights(i) * C``. Thus these weights affect the misclassification penalty for different classes. The larger weight, the larger penalty on misclassification of data from the corresponding class. - :param term_crit: Termination criteria of the iterative SVM training procedure which solves a partial case of constrained quadratic optimization problem. You can specify tolerance and/or the maximum number of iterations. + :param termCrit: Termination criteria of the iterative SVM training procedure which solves a partial case of constrained quadratic optimization problem. You can specify tolerance and/or the maximum number of iterations. The default constructor initialize the structure with following values: :: - CvSVMParams::CvSVMParams() : - svm_type(CvSVM::C_SVC), kernel_type(CvSVM::RBF), degree(0), - gamma(1), coef0(0), C(1), nu(0), p(0), class_weights(0) + SVMParams::SVMParams() : + svmType(SVM::C_SVC), kernelType(SVM::RBF), degree(0), + gamma(1), coef0(0), C(1), nu(0), p(0), classWeights(0) { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); + termCrit = TermCriteria( TermCriteria::MAX_ITER+TermCriteria::EPS, 1000, FLT_EPSILON ); } A comparison of different kernels on the following 2D test case with four classes. Four C_SVC SVMs have been trained (one against rest) with auto_train. Evaluation on three different kernels (CHI2, INTER, RBF). The color depicts the class with max score. Bright means max-score > 0, dark means max-score < 0. @@ -151,10 +141,9 @@ A comparison of different kernels on the following 2D test case with four classe .. image:: pics/SVM_Comparison.png - -CvSVM +SVM ----- -.. ocv:class:: CvSVM : public CvStatModel +.. ocv:class:: SVM : public StatModel Support Vector Machines. @@ -164,55 +153,27 @@ Support Vector Machines. * (Python) An example of grid search digit recognition using SVM can be found at opencv_source/samples/python2/digits_adjust.py * (Python) An example of video digit recognition using SVM can be found at opencv_source/samples/python2/digits_video.py -CvSVM::CvSVM +SVM::create ------------ -Default and training constructors. +Creates empty model -.. ocv:function:: CvSVM::CvSVM() +.. ocv:function:: Ptr SVM::create(const Params& p=Params(), const Ptr& customKernel=Ptr()) -.. ocv:function:: CvSVM::CvSVM( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() ) + :param p: SVM parameters + :param customKernel: the optional custom kernel to use. It must implement ``SVM::Kernel`` interface. -.. ocv:function:: CvSVM::CvSVM( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, CvSVMParams params=CvSVMParams() ) - -.. ocv:pyfunction:: cv2.SVM([trainData, responses[, varIdx[, sampleIdx[, params]]]]) -> - -The constructors follow conventions of :ocv:func:`CvStatModel::CvStatModel`. See :ocv:func:`CvStatModel::train` for parameters descriptions. - -CvSVM::train ------------- -Trains an SVM. - -.. ocv:function:: bool CvSVM::train( const Mat& trainData, const Mat& responses, const Mat& varIdx=Mat(), const Mat& sampleIdx=Mat(), CvSVMParams params=CvSVMParams() ) - -.. ocv:function:: bool CvSVM::train( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx=0, const CvMat* sampleIdx=0, CvSVMParams params=CvSVMParams() ) - -.. ocv:pyfunction:: cv2.SVM.train(trainData, responses[, varIdx[, sampleIdx[, params]]]) -> retval - -The method trains the SVM model. It follows the conventions of the generic :ocv:func:`CvStatModel::train` approach with the following limitations: - -* Only the ``CV_ROW_SAMPLE`` data layout is supported. - -* Input variables are all ordered. - -* Output variables can be either categorical (``params.svm_type=CvSVM::C_SVC`` or ``params.svm_type=CvSVM::NU_SVC``), or ordered (``params.svm_type=CvSVM::EPS_SVR`` or ``params.svm_type=CvSVM::NU_SVR``), or not required at all (``params.svm_type=CvSVM::ONE_CLASS``). - -* Missing measurements are not supported. - -All the other parameters are gathered in the -:ocv:class:`CvSVMParams` structure. +Use ``StatModel::train`` to train the model, ``StatModel::train(traindata, params)`` to create and train the model, ``StatModel::load(filename)`` to load the pre-trained model. Since SVM has several parameters, you may want to find the best parameters for your problem. It can be done with ``SVM::trainAuto``. -CvSVM::train_auto +SVM::trainAuto ----------------- Trains an SVM with optimal parameters. -.. ocv:function:: bool CvSVM::train_auto( const Mat& trainData, const Mat& responses, const Mat& varIdx, const Mat& sampleIdx, CvSVMParams params, int k_fold = 10, CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), bool balanced=false) +.. ocv:function:: bool SVM::trainAuto( const Ptr& data, int kFold = 10, ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), ParamGrid pGrid = SVM::getDefaultGrid(SVM::P), ParamGrid nuGrid = SVM::getDefaultGrid(SVM::NU), ParamGrid coeffGrid = SVM::getDefaultGrid(SVM::COEF), ParamGrid degreeGrid = SVM::getDefaultGrid(SVM::DEGREE), bool balanced=false) -.. ocv:function:: bool CvSVM::train_auto( const CvMat* trainData, const CvMat* responses, const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, int kfold = 10, CvParamGrid Cgrid = get_default_grid(CvSVM::C), CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = get_default_grid(CvSVM::P), CvParamGrid nuGrid = get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), bool balanced=false ) + :param data: the training data that can be constructed using ``TrainData::create`` or ``TrainData::loadFromCSV``. -.. ocv:pyfunction:: cv2.SVM.train_auto(trainData, responses, varIdx, sampleIdx, params[, k_fold[, Cgrid[, gammaGrid[, pGrid[, nuGrid[, coeffGrid[, degreeGrid[, balanced]]]]]]]]) -> retval - - :param k_fold: Cross-validation parameter. The training set is divided into ``k_fold`` subsets. One subset is used to test the model, the others form the train set. So, the SVM algorithm is executed ``k_fold`` times. + :param kFold: Cross-validation parameter. The training set is divided into ``kFold`` subsets. One subset is used to test the model, the others form the train set. So, the SVM algorithm is executed ``kFold`` times. :param \*Grid: Iteration grid for the corresponding SVM parameter. @@ -220,97 +181,76 @@ Trains an SVM with optimal parameters. The method trains the SVM model automatically by choosing the optimal parameters ``C``, ``gamma``, ``p``, ``nu``, ``coef0``, ``degree`` from -:ocv:class:`CvSVMParams`. Parameters are considered optimal +``SVM::Params``. Parameters are considered optimal when the cross-validation estimate of the test set error is minimal. -If there is no need to optimize a parameter, the corresponding grid step should be set to any value less than or equal to 1. For example, to avoid optimization in ``gamma``, set ``gamma_grid.step = 0``, ``gamma_grid.min_val``, ``gamma_grid.max_val`` as arbitrary numbers. In this case, the value ``params.gamma`` is taken for ``gamma``. +If there is no need to optimize a parameter, the corresponding grid step should be set to any value less than or equal to 1. For example, to avoid optimization in ``gamma``, set ``gammaGrid.step = 0``, ``gammaGrid.minVal``, ``gamma_grid.maxVal`` as arbitrary numbers. In this case, the value ``params.gamma`` is taken for ``gamma``. And, finally, if the optimization in a parameter is required but -the corresponding grid is unknown, you may call the function :ocv:func:`CvSVM::get_default_grid`. To generate a grid, for example, for ``gamma``, call ``CvSVM::get_default_grid(CvSVM::GAMMA)``. +the corresponding grid is unknown, you may call the function :ocv:func:`SVM::getDefaulltGrid`. To generate a grid, for example, for ``gamma``, call ``SVM::getDefaulltGrid(SVM::GAMMA)``. This function works for the classification -(``params.svm_type=CvSVM::C_SVC`` or ``params.svm_type=CvSVM::NU_SVC``) +(``params.svmType=SVM::C_SVC`` or ``params.svmType=SVM::NU_SVC``) as well as for the regression -(``params.svm_type=CvSVM::EPS_SVR`` or ``params.svm_type=CvSVM::NU_SVR``). If ``params.svm_type=CvSVM::ONE_CLASS``, no optimization is made and the usual SVM with parameters specified in ``params`` is executed. - -CvSVM::predict --------------- -Predicts the response for input sample(s). - -.. ocv:function:: float CvSVM::predict( const Mat& sample, bool returnDFVal=false ) const - -.. ocv:function:: float CvSVM::predict( const CvMat* sample, bool returnDFVal=false ) const - -.. ocv:function:: float CvSVM::predict( const CvMat* samples, CvMat* results, bool returnDFVal=false ) const - -.. ocv:pyfunction:: cv2.SVM.predict(sample[, returnDFVal]) -> retval - -.. ocv:pyfunction:: cv2.SVM.predict_all(samples[, results]) -> results - - :param sample: Input sample for prediction. - - :param samples: Input samples for prediction. - - :param returnDFVal: Specifies a type of the return value. If ``true`` and the problem is 2-class classification then the method returns the decision function value that is signed distance to the margin, else the function returns a class label (classification) or estimated function value (regression). - - :param results: Output prediction responses for corresponding samples. - -If you pass one sample then prediction result is returned. If you want to get responses for several samples then you should pass the ``results`` matrix where prediction results will be stored. - -The function is parallelized with the TBB library. +(``params.svmType=SVM::EPS_SVR`` or ``params.svmType=SVM::NU_SVR``). If ``params.svmType=SVM::ONE_CLASS``, no optimization is made and the usual SVM with parameters specified in ``params`` is executed. -CvSVM::get_default_grid +SVM::getDefaulltGrid ----------------------- Generates a grid for SVM parameters. -.. ocv:function:: CvParamGrid CvSVM::get_default_grid( int param_id ) +.. ocv:function:: ParamGrid SVM::getDefaulltGrid( int param_id ) :param param_id: SVM parameters IDs that must be one of the following: - * **CvSVM::C** + * **SVM::C** - * **CvSVM::GAMMA** + * **SVM::GAMMA** - * **CvSVM::P** + * **SVM::P** - * **CvSVM::NU** + * **SVM::NU** - * **CvSVM::COEF** + * **SVM::COEF** - * **CvSVM::DEGREE** + * **SVM::DEGREE** The grid is generated for the parameter with this ID. -The function generates a grid for the specified parameter of the SVM algorithm. The grid may be passed to the function :ocv:func:`CvSVM::train_auto`. +The function generates a grid for the specified parameter of the SVM algorithm. The grid may be passed to the function :ocv:func:`SVM::trainAuto`. -CvSVM::get_params +SVM::getParams ----------------- Returns the current SVM parameters. -.. ocv:function:: CvSVMParams CvSVM::get_params() const +.. ocv:function:: SVM::Params SVM::getParams() const -This function may be used to get the optimal parameters obtained while automatically training :ocv:func:`CvSVM::train_auto`. +This function may be used to get the optimal parameters obtained while automatically training ``SVM::trainAuto``. -CvSVM::get_support_vector +SVM::getSupportVectors -------------------------- -Retrieves a number of support vectors and the particular vector. +Retrieves all the support vectors -.. ocv:function:: int CvSVM::get_support_vector_count() const +.. ocv:function:: Mat SVM::getSupportVectors() const -.. ocv:function:: const float* CvSVM::get_support_vector(int i) const +The method returns all the support vector as floating-point matrix, where support vectors are stored as matrix rows. -.. ocv:pyfunction:: cv2.SVM.get_support_vector_count() -> retval +SVM::getDecisionFunction +-------------------------- +Retrieves the decision function - :param i: Index of the particular support vector. +.. ocv:function:: double SVM::getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const -The methods can be used to retrieve a set of support vectors. + :param i: the index of the decision function. If the problem solved is regression, 1-class or 2-class classification, then there will be just one decision function and the index should always be 0. Otherwise, in the case of N-class classification, there will be N*(N-1)/2 decision functions. -CvSVM::get_var_count + :param alpha: the optional output vector for weights, corresponding to different support vectors. In the case of linear SVM all the alpha's will be 1's. + + :param svidx: the optional output vector of indices of support vectors within the matrix of support vectors (which can be retrieved by ``SVM::getSupportVectors``). In the case of linear SVM each decision function consists of a single "compressed" support vector. + +The method returns ``rho`` parameter of the decision function, a scalar subtracted from the weighted sum of kernel responses. + +Prediction with SVM -------------------- -Returns the number of used features (variables count). -.. ocv:function:: int CvSVM::get_var_count() const - -.. ocv:pyfunction:: cv2.SVM.get_var_count() -> retval +StatModel::predict(samples, results, flags) should be used. Pass ``flags=StatModel::RAW_OUTPUT`` to get the raw response from SVM (in the case of regression, 1-class or 2-class classification problem). diff --git a/modules/ml/include/opencv2/ml.hpp b/modules/ml/include/opencv2/ml.hpp index f13e192be8..a5ce3010bf 100644 --- a/modules/ml/include/opencv2/ml.hpp +++ b/modules/ml/include/opencv2/ml.hpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -45,111 +47,150 @@ # include "opencv2/core.hpp" #endif -#include "opencv2/core/core_c.h" -#include - #ifdef __cplusplus +#include #include #include -// Apple defines a check() macro somewhere in the debug headers -// that interferes with a method definiton in this header -#undef check - -/****************************************************************************************\ -* Main struct definitions * -\****************************************************************************************/ - -/* log(2*PI) */ -#define CV_LOG2PI (1.8378770664093454835606594728112) - -/* columns of matrix are training samples */ -#define CV_COL_SAMPLE 0 - -/* rows of matrix are training samples */ -#define CV_ROW_SAMPLE 1 - -#define CV_IS_ROW_SAMPLE(flags) ((flags) & CV_ROW_SAMPLE) - -struct CvVectors +namespace cv { - int type; - int dims, count; - CvVectors* next; - union - { - uchar** ptr; - float** fl; - double** db; - } data; -}; -#if 0 -/* A structure, representing the lattice range of statmodel parameters. - It is used for optimizing statmodel parameters by cross-validation method. - The lattice is logarithmic, so must be greater then 1. */ -typedef struct CvParamLattice +namespace ml { - double min_val; - double max_val; - double step; -} -CvParamLattice; - -CV_INLINE CvParamLattice cvParamLattice( double min_val, double max_val, - double log_step ) -{ - CvParamLattice pl; - pl.min_val = MIN( min_val, max_val ); - pl.max_val = MAX( min_val, max_val ); - pl.step = MAX( log_step, 1. ); - return pl; -} - -CV_INLINE CvParamLattice cvDefaultParamLattice( void ) -{ - CvParamLattice pl = {0,0,0}; - return pl; -} -#endif /* Variable type */ -#define CV_VAR_NUMERICAL 0 -#define CV_VAR_ORDERED 0 -#define CV_VAR_CATEGORICAL 1 +enum +{ + VAR_NUMERICAL =0, + VAR_ORDERED =0, + VAR_CATEGORICAL =1 +}; -#define CV_TYPE_NAME_ML_SVM "opencv-ml-svm" -#define CV_TYPE_NAME_ML_KNN "opencv-ml-knn" -#define CV_TYPE_NAME_ML_NBAYES "opencv-ml-bayesian" -#define CV_TYPE_NAME_ML_EM "opencv-ml-em" -#define CV_TYPE_NAME_ML_BOOSTING "opencv-ml-boost-tree" -#define CV_TYPE_NAME_ML_TREE "opencv-ml-tree" -#define CV_TYPE_NAME_ML_ANN_MLP "opencv-ml-ann-mlp" -#define CV_TYPE_NAME_ML_CNN "opencv-ml-cnn" -#define CV_TYPE_NAME_ML_RTREES "opencv-ml-random-trees" -#define CV_TYPE_NAME_ML_ERTREES "opencv-ml-extremely-randomized-trees" -#define CV_TYPE_NAME_ML_GBT "opencv-ml-gradient-boosting-trees" +enum +{ + TEST_ERROR = 0, + TRAIN_ERROR = 1 +}; -#define CV_TRAIN_ERROR 0 -#define CV_TEST_ERROR 1 +enum +{ + ROW_SAMPLE = 0, + COL_SAMPLE = 1 +}; -class CV_EXPORTS_W CvStatModel +class CV_EXPORTS_W_MAP ParamGrid { public: - CvStatModel(); - virtual ~CvStatModel(); + ParamGrid(); + ParamGrid(double _minVal, double _maxVal, double _logStep); + CV_PROP_RW double minVal; + CV_PROP_RW double maxVal; + CV_PROP_RW double logStep; +}; + + +class CV_EXPORTS TrainData +{ +public: + static inline float missingValue() { return FLT_MAX; } + virtual ~TrainData(); + + virtual int getLayout() const = 0; + virtual int getNTrainSamples() const = 0; + virtual int getNTestSamples() const = 0; + virtual int getNSamples() const = 0; + virtual int getNVars() const = 0; + virtual int getNAllVars() const = 0; + + virtual void getSample(InputArray varIdx, int sidx, float* buf) const = 0; + virtual Mat getSamples() const = 0; + virtual Mat getMissing() const = 0; + virtual Mat getTrainSamples(int layout=ROW_SAMPLE, + bool compressSamples=true, + bool compressVars=true) const = 0; + virtual Mat getTrainResponses() const = 0; + virtual Mat getTrainNormCatResponses() const = 0; + virtual Mat getTestResponses() const = 0; + virtual Mat getTestNormCatResponses() const = 0; + virtual Mat getResponses() const = 0; + virtual Mat getNormCatResponses() const = 0; + virtual Mat getSampleWeights() const = 0; + virtual Mat getTrainSampleWeights() const = 0; + virtual Mat getTestSampleWeights() const = 0; + virtual Mat getVarIdx() const = 0; + virtual Mat getVarType() const = 0; + virtual int getResponseType() const = 0; + virtual Mat getTrainSampleIdx() const = 0; + virtual Mat getTestSampleIdx() const = 0; + virtual void getValues(int vi, InputArray sidx, float* values) const = 0; + virtual void getNormCatValues(int vi, InputArray sidx, int* values) const = 0; + virtual Mat getDefaultSubstValues() const = 0; + + virtual int getCatCount(int vi) const = 0; + virtual Mat getClassLabels() const = 0; + + virtual Mat getCatOfs() const = 0; + virtual Mat getCatMap() const = 0; + + virtual void setTrainTestSplit(int count, bool shuffle=true) = 0; + virtual void setTrainTestSplitRatio(double ratio, bool shuffle=true) = 0; + virtual void shuffleTrainTest() = 0; + + static Mat getSubVector(const Mat& vec, const Mat& idx); + static Ptr loadFromCSV(const String& filename, + int headerLineCount, + int responseStartIdx=-1, + int responseEndIdx=-1, + const String& varTypeSpec=String(), + char delimiter=',', + char missch='?'); + static Ptr create(InputArray samples, int layout, InputArray responses, + InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), + InputArray sampleWeights=noArray(), InputArray varType=noArray()); +}; + + +class CV_EXPORTS_W StatModel : public Algorithm +{ +public: + enum { UPDATE_MODEL = 1, RAW_OUTPUT=1, COMPRESSED_INPUT=2, PREPROCESSED_INPUT=4 }; virtual void clear(); - CV_WRAP virtual void save( const char* filename, const char* name=0 ) const; - CV_WRAP virtual void load( const char* filename, const char* name=0 ); + virtual int getVarCount() const = 0; - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); + virtual bool isTrained() const = 0; + virtual bool isClassifier() const = 0; -protected: - const char* default_model_name; + virtual bool train( const Ptr& trainData, int flags=0 ); + virtual bool train( InputArray samples, int layout, InputArray responses ); + virtual float calcError( const Ptr& data, bool test, OutputArray resp ) const; + virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 ) const = 0; + + template static Ptr<_Tp> load(const String& filename) + { + FileStorage fs(filename, FileStorage::READ); + Ptr<_Tp> model = _Tp::create(); + model->read(fs.getFirstTopLevelNode()); + return model->isTrained() ? model : Ptr<_Tp>(); + } + + template static Ptr<_Tp> train(const Ptr& data, const typename _Tp::Params& p, int flags=0) + { + Ptr<_Tp> model = _Tp::create(p); + return !model.empty() && model->train(data, flags) ? model : Ptr<_Tp>(); + } + + template static Ptr<_Tp> train(InputArray samples, int layout, InputArray responses, + const typename _Tp::Params& p, int flags=0) + { + Ptr<_Tp> model = _Tp::create(p); + return !model.empty() && model->train(TrainData::create(samples, layout, responses), flags) ? model : Ptr<_Tp>(); + } + + virtual void save(const String& filename) const; + virtual String getDefaultModelName() const = 0; }; /****************************************************************************************\ @@ -161,413 +202,115 @@ protected: the accuracy estimate being computed by cross-validation. The grid is logarithmic, so must be greater then 1. */ -class CvMLData; - -struct CV_EXPORTS_W_MAP CvParamGrid -{ - // SVM params type - enum { SVM_C=0, SVM_GAMMA=1, SVM_P=2, SVM_NU=3, SVM_COEF=4, SVM_DEGREE=5 }; - - CvParamGrid() - { - min_val = max_val = step = 0; - } - - CvParamGrid( double min_val, double max_val, double log_step ); - //CvParamGrid( int param_id ); - bool check() const; - - CV_PROP_RW double min_val; - CV_PROP_RW double max_val; - CV_PROP_RW double step; -}; - -inline CvParamGrid::CvParamGrid( double _min_val, double _max_val, double _log_step ) -{ - min_val = _min_val; - max_val = _max_val; - step = _log_step; -} - -class CV_EXPORTS_W CvNormalBayesClassifier : public CvStatModel +class CV_EXPORTS_W NormalBayesClassifier : public StatModel { public: - CV_WRAP CvNormalBayesClassifier(); - virtual ~CvNormalBayesClassifier(); + class CV_EXPORTS_W Params + { + public: + Params(); + }; + virtual float predictProb( InputArray inputs, OutputArray outputs, + OutputArray outputProbs, int flags=0 ) const = 0; + virtual void setParams(const Params& params) = 0; + virtual Params getParams() const = 0; - CvNormalBayesClassifier( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0 ); - - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx = 0, const CvMat* sampleIdx=0, bool update=false ); - - virtual float predict( const CvMat* samples, CV_OUT CvMat* results=0, CV_OUT CvMat* results_prob=0 ) const; - CV_WRAP virtual void clear(); - - CV_WRAP CvNormalBayesClassifier( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat() ); - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx = cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - bool update=false ); - CV_WRAP virtual float predict( const cv::Mat& samples, CV_OUT cv::Mat* results=0, CV_OUT cv::Mat* results_prob=0 ) const; - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - -protected: - int var_count, var_all; - CvMat* var_idx; - CvMat* cls_labels; - CvMat** count; - CvMat** sum; - CvMat** productsum; - CvMat** avg; - CvMat** inv_eigen_values; - CvMat** cov_rotate_mats; - CvMat* c; + static Ptr create(const Params& params=Params()); }; - /****************************************************************************************\ * K-Nearest Neighbour Classifier * \****************************************************************************************/ // k Nearest Neighbors -class CV_EXPORTS_W CvKNearest : public CvStatModel +class CV_EXPORTS_W KNearest : public StatModel { public: + class CV_EXPORTS_W_MAP Params + { + public: + Params(int defaultK=10, bool isclassifier=true); - CV_WRAP CvKNearest(); - virtual ~CvKNearest(); - - CvKNearest( const CvMat* trainData, const CvMat* responses, - const CvMat* sampleIdx=0, bool isRegression=false, int max_k=32 ); - - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* sampleIdx=0, bool is_regression=false, - int maxK=32, bool updateBase=false ); - - virtual float find_nearest( const CvMat* samples, int k, CV_OUT CvMat* results=0, - const float** neighbors=0, CV_OUT CvMat* neighborResponses=0, CV_OUT CvMat* dist=0 ) const; - - CV_WRAP CvKNearest( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, int max_k=32 ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& sampleIdx=cv::Mat(), bool isRegression=false, - int maxK=32, bool updateBase=false ); - - virtual float find_nearest( const cv::Mat& samples, int k, cv::Mat* results=0, - const float** neighbors=0, cv::Mat* neighborResponses=0, - cv::Mat* dist=0 ) const; - CV_WRAP virtual float find_nearest( const cv::Mat& samples, int k, CV_OUT cv::Mat& results, - CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const; - - virtual void clear(); - int get_max_k() const; - int get_var_count() const; - int get_sample_count() const; - bool is_regression() const; - - virtual float write_results( int k, int k1, int start, int end, - const float* neighbor_responses, const float* dist, CvMat* _results, - CvMat* _neighbor_responses, CvMat* _dist, Cv32suf* sort_buf ) const; - - virtual void find_neighbors_direct( const CvMat* _samples, int k, int start, int end, - float* neighbor_responses, const float** neighbors, float* dist ) const; - -protected: - - int max_k, var_count; - int total; - bool regression; - CvVectors* samples; + CV_PROP_RW int defaultK; + CV_PROP_RW bool isclassifier; + }; + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; + virtual float findNearest( InputArray samples, int k, + OutputArray results, + OutputArray neighborResponses=noArray(), + OutputArray dist=noArray() ) const = 0; + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ * Support Vector Machines * \****************************************************************************************/ -// SVM training parameters -struct CV_EXPORTS_W_MAP CvSVMParams -{ - CvSVMParams(); - CvSVMParams( int svm_type, int kernel_type, - double degree, double gamma, double coef0, - double Cvalue, double nu, double p, - CvMat* class_weights, CvTermCriteria term_crit ); - - CV_PROP_RW int svm_type; - CV_PROP_RW int kernel_type; - CV_PROP_RW double degree; // for poly - CV_PROP_RW double gamma; // for poly/rbf/sigmoid/chi2 - CV_PROP_RW double coef0; // for poly/sigmoid - - CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR - CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR - CV_PROP_RW double p; // for CV_SVM_EPS_SVR - CvMat* class_weights; // for CV_SVM_C_SVC - CV_PROP_RW CvTermCriteria term_crit; // termination criteria -}; - - -struct CV_EXPORTS CvSVMKernel -{ - typedef void (CvSVMKernel::*Calc)( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - CvSVMKernel(); - CvSVMKernel( const CvSVMParams* params, Calc _calc_func ); - virtual bool create( const CvSVMParams* params, Calc _calc_func ); - virtual ~CvSVMKernel(); - - virtual void clear(); - virtual void calc( int vcount, int n, const float** vecs, const float* another, float* results ); - - const CvSVMParams* params; - Calc calc_func; - - virtual void calc_non_rbf_base( int vec_count, int vec_size, const float** vecs, - const float* another, float* results, - double alpha, double beta ); - virtual void calc_intersec( int vcount, int var_count, const float** vecs, - const float* another, float* results ); - virtual void calc_chi2( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_linear( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_rbf( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_poly( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); - virtual void calc_sigmoid( int vec_count, int vec_size, const float** vecs, - const float* another, float* results ); -}; - - -struct CvSVMKernelRow -{ - CvSVMKernelRow* prev; - CvSVMKernelRow* next; - float* data; -}; - - -struct CvSVMSolutionInfo -{ - double obj; - double rho; - double upper_bound_p; - double upper_bound_n; - double r; // for Solver_NU -}; - -class CV_EXPORTS CvSVMSolver -{ -public: - typedef bool (CvSVMSolver::*SelectWorkingSet)( int& i, int& j ); - typedef float* (CvSVMSolver::*GetRow)( int i, float* row, float* dst, bool existed ); - typedef void (CvSVMSolver::*CalcRho)( double& rho, double& r ); - - CvSVMSolver(); - - CvSVMSolver( int count, int var_count, const float** samples, schar* y, - int alpha_count, double* alpha, double Cp, double Cn, - CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, - SelectWorkingSet select_working_set, CalcRho calc_rho ); - virtual bool create( int count, int var_count, const float** samples, schar* y, - int alpha_count, double* alpha, double Cp, double Cn, - CvMemStorage* storage, CvSVMKernel* kernel, GetRow get_row, - SelectWorkingSet select_working_set, CalcRho calc_rho ); - virtual ~CvSVMSolver(); - - virtual void clear(); - virtual bool solve_generic( CvSVMSolutionInfo& si ); - - virtual bool solve_c_svc( int count, int var_count, const float** samples, schar* y, - double Cp, double Cn, CvMemStorage* storage, - CvSVMKernel* kernel, double* alpha, CvSVMSolutionInfo& si ); - virtual bool solve_nu_svc( int count, int var_count, const float** samples, schar* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - virtual bool solve_one_class( int count, int var_count, const float** samples, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual bool solve_eps_svr( int count, int var_count, const float** samples, const float* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual bool solve_nu_svr( int count, int var_count, const float** samples, const float* y, - CvMemStorage* storage, CvSVMKernel* kernel, - double* alpha, CvSVMSolutionInfo& si ); - - virtual float* get_row_base( int i, bool* _existed ); - virtual float* get_row( int i, float* dst ); - - int sample_count; - int var_count; - int cache_size; - int cache_line_size; - const float** samples; - const CvSVMParams* params; - CvMemStorage* storage; - CvSVMKernelRow lru_list; - CvSVMKernelRow* rows; - - int alpha_count; - - double* G; - double* alpha; - - // -1 - lower bound, 0 - free, 1 - upper bound - schar* alpha_status; - - schar* y; - double* b; - float* buf[2]; - double eps; - int max_iter; - double C[2]; // C[0] == Cn, C[1] == Cp - CvSVMKernel* kernel; - - SelectWorkingSet select_working_set_func; - CalcRho calc_rho_func; - GetRow get_row_func; - - virtual bool select_working_set( int& i, int& j ); - virtual bool select_working_set_nu_svm( int& i, int& j ); - virtual void calc_rho( double& rho, double& r ); - virtual void calc_rho_nu_svm( double& rho, double& r ); - - virtual float* get_row_svc( int i, float* row, float* dst, bool existed ); - virtual float* get_row_one_class( int i, float* row, float* dst, bool existed ); - virtual float* get_row_svr( int i, float* row, float* dst, bool existed ); -}; - - -struct CvSVMDecisionFunc -{ - double rho; - int sv_count; - double* alpha; - int* sv_index; -}; - - // SVM model -class CV_EXPORTS_W CvSVM : public CvStatModel +class CV_EXPORTS_W SVM : public StatModel { public: + class CV_EXPORTS_W_MAP Params + { + public: + Params(); + Params( int svm_type, int kernel_type, + double degree, double gamma, double coef0, + double Cvalue, double nu, double p, + const Mat& classWeights, TermCriteria termCrit ); + + CV_PROP_RW int svmType; + CV_PROP_RW int kernelType; + CV_PROP_RW double gamma, coef0, degree; + + CV_PROP_RW double C; // for CV_SVM_C_SVC, CV_SVM_EPS_SVR and CV_SVM_NU_SVR + CV_PROP_RW double nu; // for CV_SVM_NU_SVC, CV_SVM_ONE_CLASS, and CV_SVM_NU_SVR + CV_PROP_RW double p; // for CV_SVM_EPS_SVR + CV_PROP_RW Mat classWeights; // for CV_SVM_C_SVC + CV_PROP_RW TermCriteria termCrit; // termination criteria + }; + + class CV_EXPORTS Kernel : public Algorithm + { + public: + virtual int getType() const = 0; + virtual void calc( int vcount, int n, const float* vecs, const float* another, float* results ) = 0; + }; + // SVM type enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 }; // SVM kernel type - enum { LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; + enum { CUSTOM=-1, LINEAR=0, POLY=1, RBF=2, SIGMOID=3, CHI2=4, INTER=5 }; // SVM params type enum { C=0, GAMMA=1, P=2, NU=3, COEF=4, DEGREE=5 }; - CV_WRAP CvSVM(); - virtual ~CvSVM(); + virtual bool trainAuto( const Ptr& data, int kFold = 10, + ParamGrid Cgrid = SVM::getDefaultGrid(SVM::C), + ParamGrid gammaGrid = SVM::getDefaultGrid(SVM::GAMMA), + ParamGrid pGrid = SVM::getDefaultGrid(SVM::P), + ParamGrid nuGrid = SVM::getDefaultGrid(SVM::NU), + ParamGrid coeffGrid = SVM::getDefaultGrid(SVM::COEF), + ParamGrid degreeGrid = SVM::getDefaultGrid(SVM::DEGREE), + bool balanced=false) = 0; - CvSVM( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0, - CvSVMParams params=CvSVMParams() ); + CV_WRAP virtual Mat getSupportVectors() const = 0; - virtual bool train( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx=0, const CvMat* sampleIdx=0, - CvSVMParams params=CvSVMParams() ); + virtual void setParams(const Params& p, const Ptr& customKernel=Ptr()) = 0; + virtual Params getParams() const = 0; + virtual Ptr getKernel() const = 0; + virtual double getDecisionFunction(int i, OutputArray alpha, OutputArray svidx) const = 0; - virtual bool train_auto( const CvMat* trainData, const CvMat* responses, - const CvMat* varIdx, const CvMat* sampleIdx, CvSVMParams params, - int kfold = 10, - CvParamGrid Cgrid = get_default_grid(CvSVM::C), - CvParamGrid gammaGrid = get_default_grid(CvSVM::GAMMA), - CvParamGrid pGrid = get_default_grid(CvSVM::P), - CvParamGrid nuGrid = get_default_grid(CvSVM::NU), - CvParamGrid coeffGrid = get_default_grid(CvSVM::COEF), - CvParamGrid degreeGrid = get_default_grid(CvSVM::DEGREE), - bool balanced=false ); - - virtual float predict( const CvMat* sample, bool returnDFVal=false ) const; - virtual float predict( const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal=false ) const; - - CV_WRAP CvSVM( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - CvSVMParams params=CvSVMParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), - CvSVMParams params=CvSVMParams() ); - - CV_WRAP virtual bool train_auto( const cv::Mat& trainData, const cv::Mat& responses, - const cv::Mat& varIdx, const cv::Mat& sampleIdx, CvSVMParams params, - int k_fold = 10, - CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), - CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), - CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), - CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), - CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), - CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), - bool balanced=false); - CV_WRAP virtual float predict( const cv::Mat& sample, bool returnDFVal=false ) const; - CV_WRAP_AS(predict_all) virtual void predict( cv::InputArray samples, cv::OutputArray results ) const; - - CV_WRAP virtual int get_support_vector_count() const; - virtual const float* get_support_vector(int i) const; - virtual CvSVMParams get_params() const { return params; } - CV_WRAP virtual void clear(); - - virtual const CvSVMDecisionFunc* get_decision_function() const { return decision_func; } - - static CvParamGrid get_default_grid( int param_id ); - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - CV_WRAP int get_var_count() const { return var_idx ? var_idx->cols : var_all; } - -protected: - - virtual bool set_params( const CvSVMParams& params ); - virtual bool train1( int sample_count, int var_count, const float** samples, - const void* responses, double Cp, double Cn, - CvMemStorage* _storage, double* alpha, double& rho ); - virtual bool do_train( int svm_type, int sample_count, int var_count, const float** samples, - const CvMat* responses, CvMemStorage* _storage, double* alpha ); - virtual void create_kernel(); - virtual void create_solver(); - - virtual float predict( const float* row_sample, int row_len, bool returnDFVal=false ) const; - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - void optimize_linear_svm(); - - CvSVMParams params; - CvMat* class_labels; - int var_all; - float** sv; - int sv_total; - CvMat* var_idx; - CvMat* class_weights; - CvSVMDecisionFunc* decision_func; - CvMemStorage* storage; - - CvSVMSolver* solver; - CvSVMKernel* kernel; - -private: - CvSVM(const CvSVM&); - CvSVM& operator = (const CvSVM&); + static ParamGrid getDefaultGrid( int param_id ); + static Ptr create(const Params& p=Params(), const Ptr& customKernel=Ptr()); }; /****************************************************************************************\ * Expectation - Maximization * \****************************************************************************************/ -namespace cv -{ -class CV_EXPORTS_W EM : public Algorithm +class CV_EXPORTS_W EM : public StatModel { public: // Type of covariation matrices @@ -579,1298 +322,204 @@ public: // The initial step enum {START_E_STEP=1, START_M_STEP=2, START_AUTO_STEP=0}; - CV_WRAP EM(int nclusters=EM::DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, - const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, - EM::DEFAULT_MAX_ITERS, FLT_EPSILON)); + class CV_EXPORTS_W_MAP Params + { + public: + explicit Params(int nclusters=DEFAULT_NCLUSTERS, int covMatType=EM::COV_MAT_DIAGONAL, + const TermCriteria& termCrit=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, + EM::DEFAULT_MAX_ITERS, 1e-6)); + CV_PROP_RW int nclusters; + CV_PROP_RW int covMatType; + CV_PROP_RW TermCriteria termCrit; + }; - virtual ~EM(); - CV_WRAP virtual void clear(); + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; + virtual Mat getWeights() const = 0; + virtual Mat getMeans() const = 0; + virtual void getCovs(std::vector& covs) const = 0; - CV_WRAP virtual bool train(InputArray samples, - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); + CV_WRAP virtual Vec2d predict2(InputArray sample, OutputArray probs) const = 0; - CV_WRAP virtual bool trainE(InputArray samples, - InputArray means0, - InputArray covs0=noArray(), - InputArray weights0=noArray(), - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); + virtual bool train( const Ptr& trainData, int flags=0 ) = 0; - CV_WRAP virtual bool trainM(InputArray samples, - InputArray probs0, - OutputArray logLikelihoods=noArray(), - OutputArray labels=noArray(), - OutputArray probs=noArray()); + static Ptr train(InputArray samples, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); - CV_WRAP Vec2d predict(InputArray sample, - OutputArray probs=noArray()) const; + static Ptr train_startWithE(InputArray samples, InputArray means0, + InputArray covs0=noArray(), + InputArray weights0=noArray(), + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); - CV_WRAP bool isTrained() const; - - AlgorithmInfo* info() const; - virtual void read(const FileNode& fn); - -protected: - - virtual void setTrainData(int startStep, const Mat& samples, - const Mat* probs0, - const Mat* means0, - const std::vector* covs0, - const Mat* weights0); - - bool doTrain(int startStep, - OutputArray logLikelihoods, - OutputArray labels, - OutputArray probs); - virtual void eStep(); - virtual void mStep(); - - void clusterTrainSamples(); - void decomposeCovs(); - void computeLogWeightDivDet(); - - Vec2d computeProbabilities(const Mat& sample, Mat* probs) const; - - // all inner matrices have type CV_64FC1 - CV_PROP_RW int nclusters; - CV_PROP_RW int covMatType; - CV_PROP_RW int maxIters; - CV_PROP_RW double epsilon; - - Mat trainSamples; - Mat trainProbs; - Mat trainLogLikelihoods; - Mat trainLabels; - - CV_PROP Mat weights; - CV_PROP Mat means; - CV_PROP std::vector covs; - - std::vector covsEigenValues; - std::vector covsRotateMats; - std::vector invCovsEigenValues; - Mat logWeightDivDet; + static Ptr train_startWithM(InputArray samples, InputArray probs0, + OutputArray logLikelihoods=noArray(), + OutputArray labels=noArray(), + OutputArray probs=noArray(), + const Params& params=Params()); + static Ptr create(const Params& params=Params()); }; -} // namespace cv + /****************************************************************************************\ * Decision Tree * -\****************************************************************************************/\ -struct CvPair16u32s +\****************************************************************************************/ + +class CV_EXPORTS_W DTrees : public StatModel { - unsigned short* u; - int* i; -}; +public: + enum { PREDICT_AUTO=0, PREDICT_SUM=(1<<8), PREDICT_MAX_VOTE=(2<<8), PREDICT_MASK=(3<<8) }; - -#define CV_DTREE_CAT_DIR(idx,subset) \ - (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) - -struct CvDTreeSplit -{ - int var_idx; - int condensed_idx; - int inversed; - float quality; - CvDTreeSplit* next; - union + class CV_EXPORTS_W_MAP Params { - int subset[2]; - struct - { - float c; - int split_point; - } - ord; + public: + Params(); + Params( int maxDepth, int minSampleCount, + double regressionAccuracy, bool useSurrogates, + int maxCategories, int CVFolds, + bool use1SERule, bool truncatePrunedTree, + const Mat& priors ); + + CV_PROP_RW int maxCategories; + CV_PROP_RW int maxDepth; + CV_PROP_RW int minSampleCount; + CV_PROP_RW int CVFolds; + CV_PROP_RW bool useSurrogates; + CV_PROP_RW bool use1SERule; + CV_PROP_RW bool truncatePrunedTree; + CV_PROP_RW float regressionAccuracy; + CV_PROP_RW Mat priors; }; -}; -struct CvDTreeNode -{ - int class_idx; - int Tn; - double value; - - CvDTreeNode* parent; - CvDTreeNode* left; - CvDTreeNode* right; - - CvDTreeSplit* split; - - int sample_count; - int depth; - int* num_valid; - int offset; - int buf_idx; - double maxlr; - - // global pruning data - int complexity; - double alpha; - double node_risk, tree_risk, tree_error; - - // cross-validation pruning data - int* cv_Tn; - double* cv_node_risk; - double* cv_node_error; - - int get_num_valid(int vi) { return num_valid ? num_valid[vi] : sample_count; } - void set_num_valid(int vi, int n) { if( num_valid ) num_valid[vi] = n; } -}; - - -struct CV_EXPORTS_W_MAP CvDTreeParams -{ - CV_PROP_RW int max_categories; - CV_PROP_RW int max_depth; - CV_PROP_RW int min_sample_count; - CV_PROP_RW int cv_folds; - CV_PROP_RW bool use_surrogates; - CV_PROP_RW bool use_1se_rule; - CV_PROP_RW bool truncate_pruned_tree; - CV_PROP_RW float regression_accuracy; - const float* priors; - - CvDTreeParams(); - CvDTreeParams( int max_depth, int min_sample_count, - float regression_accuracy, bool use_surrogates, - int max_categories, int cv_folds, - bool use_1se_rule, bool truncate_pruned_tree, - const float* priors ); -}; - - -struct CV_EXPORTS CvDTreeTrainData -{ - CvDTreeTrainData(); - CvDTreeTrainData( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false ); - virtual ~CvDTreeTrainData(); - - virtual void set_data( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false, - bool _update_data=false ); - virtual void do_responses_copy(); - - virtual void get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, float* responses, bool get_class_idx=false ); - - virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - // release all the data - virtual void clear(); - - int get_num_classes() const; - int get_var_type(int vi) const; - int get_work_var_count() const {return work_var_count;} - - virtual const float* get_ord_responses( CvDTreeNode* n, float* values_buf, int* sample_indices_buf ); - virtual const int* get_class_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); - virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); - virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, - const float** ord_values, const int** sorted_indices, int* sample_indices_buf ); - virtual int get_child_buf_idx( CvDTreeNode* n ); - - //////////////////////////////////// - - virtual bool set_params( const CvDTreeParams& params ); - virtual CvDTreeNode* new_node( CvDTreeNode* parent, int count, - int storage_idx, int offset ); - - virtual CvDTreeSplit* new_split_ord( int vi, float cmp_val, - int split_point, int inversed, float quality ); - virtual CvDTreeSplit* new_split_cat( int vi, float quality ); - virtual void free_node_data( CvDTreeNode* node ); - virtual void free_train_data(); - virtual void free_node( CvDTreeNode* node ); - - int sample_count, var_all, var_count, max_c_count; - int ord_var_count, cat_var_count, work_var_count; - bool have_labels, have_priors; - bool is_classifier; - int tflag; - - const CvMat* train_data; - const CvMat* responses; - CvMat* responses_copy; // used in Boosting - - int buf_count, buf_size; // buf_size is obsolete, please do not use it, use expression ((int64)buf->rows * (int64)buf->cols / buf_count) instead - bool shared; - int is_buf_16u; - - CvMat* cat_count; - CvMat* cat_ofs; - CvMat* cat_map; - - CvMat* counts; - CvMat* buf; - inline size_t get_length_subbuf() const + class CV_EXPORTS Node { - size_t res = (size_t)(work_var_count + 1) * (size_t)sample_count; - return res; - } + public: + Node(); + double value; + int classIdx; - CvMat* direction; - CvMat* split_buf; + int parent; + int left; + int right; + int defaultDir; - CvMat* var_idx; - CvMat* var_type; // i-th element = - // k<0 - ordered - // k>=0 - categorical, see k-th element of cat_* arrays - CvMat* priors; - CvMat* priors_mult; + int split; + }; - CvDTreeParams params; + class CV_EXPORTS Split + { + public: + Split(); + int varIdx; + bool inversed; + float quality; + int next; + float c; + int subsetOfs; + }; - CvMemStorage* tree_storage; - CvMemStorage* temp_storage; + virtual void setDParams(const Params& p); + virtual Params getDParams() const; - CvDTreeNode* data_root; + virtual const std::vector& getRoots() const = 0; + virtual const std::vector& getNodes() const = 0; + virtual const std::vector& getSplits() const = 0; + virtual const std::vector& getSubsets() const = 0; - CvSet* node_heap; - CvSet* split_heap; - CvSet* cv_heap; - CvSet* nv_heap; - - cv::RNG* rng; + static Ptr create(const Params& params=Params()); }; -class CvDTree; -class CvForestTree; - -namespace cv -{ - struct DTreeBestSplitFinder; - struct ForestTreeBestSplitFinder; -} - -class CV_EXPORTS_W CvDTree : public CvStatModel -{ -public: - CV_WRAP CvDTree(); - virtual ~CvDTree(); - - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); - - virtual bool train( CvMLData* trainData, CvDTreeParams params=CvDTreeParams() ); - - // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - virtual float calc_error( CvMLData* trainData, int type, std::vector *resp = 0 ); - - virtual bool train( CvDTreeTrainData* trainData, const CvMat* subsampleIdx ); - - virtual CvDTreeNode* predict( const CvMat* sample, const CvMat* missingDataMask=0, - bool preprocessedInput=false ) const; - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvDTreeParams params=CvDTreeParams() ); - - CV_WRAP virtual CvDTreeNode* predict( const cv::Mat& sample, const cv::Mat& missingDataMask=cv::Mat(), - bool preprocessedInput=false ) const; - CV_WRAP virtual cv::Mat getVarImportance(); - - virtual const CvMat* get_var_importance(); - CV_WRAP virtual void clear(); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* fs, const char* name ) const; - - // special read & write methods for trees in the tree ensembles - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - virtual void write( CvFileStorage* fs ) const; - - const CvDTreeNode* get_root() const; - int get_pruned_tree_idx() const; - CvDTreeTrainData* get_data(); - -protected: - friend struct cv::DTreeBestSplitFinder; - - virtual bool do_train( const CvMat* _subsample_idx ); - - virtual void try_split_node( CvDTreeNode* n ); - virtual void split_node_data( CvDTreeNode* n ); - virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual double calc_node_dir( CvDTreeNode* node ); - virtual void complete_node_dir( CvDTreeNode* node ); - virtual void cluster_categories( const int* vectors, int vector_count, - int var_count, int* sums, int k, int* cluster_labels ); - - virtual void calc_node_value( CvDTreeNode* node ); - - virtual void prune_cv(); - virtual double update_tree_rnc( int T, int fold ); - virtual int cut_tree( int T, int fold, double min_alpha ); - virtual void free_prune_data(bool cut_tree); - virtual void free_tree(); - - virtual void write_node( CvFileStorage* fs, CvDTreeNode* node ) const; - virtual void write_split( CvFileStorage* fs, CvDTreeSplit* split ) const; - virtual CvDTreeNode* read_node( CvFileStorage* fs, CvFileNode* node, CvDTreeNode* parent ); - virtual CvDTreeSplit* read_split( CvFileStorage* fs, CvFileNode* node ); - virtual void write_tree_nodes( CvFileStorage* fs ) const; - virtual void read_tree_nodes( CvFileStorage* fs, CvFileNode* node ); - - CvDTreeNode* root; - CvMat* var_importance; - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - -public: - int pruned_tree_idx; -}; - - /****************************************************************************************\ * Random Trees Classifier * \****************************************************************************************/ -class CvRTrees; - -class CV_EXPORTS CvForestTree: public CvDTree +class CV_EXPORTS_W RTrees : public DTrees { public: - CvForestTree(); - virtual ~CvForestTree(); + class CV_EXPORTS_W_MAP Params : public DTrees::Params + { + public: + Params(); + Params( int maxDepth, int minSampleCount, + double regressionAccuracy, bool useSurrogates, + int maxCategories, const Mat& priors, + bool calcVarImportance, int nactiveVars, + TermCriteria termCrit ); - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx, CvRTrees* forest ); + CV_PROP_RW bool calcVarImportance; // true <=> RF processes variable importance + CV_PROP_RW int nactiveVars; + CV_PROP_RW TermCriteria termCrit; + }; - virtual int get_var_count() const {return data ? data->var_count : 0;} - virtual void read( CvFileStorage* fs, CvFileNode* node, CvRTrees* forest, CvDTreeTrainData* _data ); + virtual void setRParams(const Params& p) = 0; + virtual Params getRParams() const = 0; - /* dummy methods to avoid warnings: BEGIN */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); + virtual Mat getVarImportance() const = 0; - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - /* dummy methods to avoid warnings: END */ - -protected: - friend struct cv::ForestTreeBestSplitFinder; - - virtual CvDTreeSplit* find_best_split( CvDTreeNode* n ); - CvRTrees* forest; + static Ptr create(const Params& params=Params()); }; - -struct CV_EXPORTS_W_MAP CvRTParams : public CvDTreeParams -{ - //Parameters for the forest - CV_PROP_RW bool calc_var_importance; // true <=> RF processes variable importance - CV_PROP_RW int nactive_vars; - CV_PROP_RW CvTermCriteria term_crit; - - CvRTParams(); - CvRTParams( int max_depth, int min_sample_count, - float regression_accuracy, bool use_surrogates, - int max_categories, const float* priors, bool calc_var_importance, - int nactive_vars, int max_num_of_trees_in_the_forest, - float forest_accuracy, int termcrit_type ); -}; - - -class CV_EXPORTS_W CvRTrees : public CvStatModel -{ -public: - CV_WRAP CvRTrees(); - virtual ~CvRTrees(); - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvRTParams params=CvRTParams() ); - - virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); - virtual float predict( const CvMat* sample, const CvMat* missing = 0 ) const; - virtual float predict_prob( const CvMat* sample, const CvMat* missing = 0 ) const; - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvRTParams params=CvRTParams() ); - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; - CV_WRAP virtual float predict_prob( const cv::Mat& sample, const cv::Mat& missing = cv::Mat() ) const; - CV_WRAP virtual cv::Mat getVarImportance(); - - CV_WRAP virtual void clear(); - - virtual const CvMat* get_var_importance(); - virtual float get_proximity( const CvMat* sample1, const CvMat* sample2, - const CvMat* missing1 = 0, const CvMat* missing2 = 0 ) const; - - virtual float calc_error( CvMLData* data, int type , std::vector* resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - - virtual float get_train_error(); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* fs, const char* name ) const; - - CvMat* get_active_var_mask(); - CvRNG* get_rng(); - - int get_tree_count() const; - CvForestTree* get_tree(int i) const; - -protected: - virtual cv::String getName() const; - - virtual bool grow_forest( const CvTermCriteria term_crit ); - - // array of the trees of the forest - CvForestTree** trees; - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - int ntrees; - int nclasses; - double oob_error; - CvMat* var_importance; - int nsamples; - - cv::RNG* rng; - CvMat* active_var_mask; -}; - -/****************************************************************************************\ -* Extremely randomized trees Classifier * -\****************************************************************************************/ -struct CV_EXPORTS CvERTreeTrainData : public CvDTreeTrainData -{ - virtual void set_data( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - const CvDTreeParams& params=CvDTreeParams(), - bool _shared=false, bool _add_labels=false, - bool _update_data=false ); - virtual void get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, - const float** ord_values, const int** missing, int* sample_buf = 0 ); - virtual const int* get_sample_indices( CvDTreeNode* n, int* indices_buf ); - virtual const int* get_cv_labels( CvDTreeNode* n, int* labels_buf ); - virtual const int* get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ); - virtual void get_vectors( const CvMat* _subsample_idx, float* values, uchar* missing, - float* responses, bool get_class_idx=false ); - virtual CvDTreeNode* subsample_data( const CvMat* _subsample_idx ); - const CvMat* missing_mask; -}; - -class CV_EXPORTS CvForestERTree : public CvForestTree -{ -protected: - virtual double calc_node_dir( CvDTreeNode* node ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual void split_node_data( CvDTreeNode* n ); -}; - -class CV_EXPORTS_W CvERTrees : public CvRTrees -{ -public: - CV_WRAP CvERTrees(); - virtual ~CvERTrees(); - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvRTParams params=CvRTParams()); - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvRTParams params=CvRTParams()); - virtual bool train( CvMLData* data, CvRTParams params=CvRTParams() ); -protected: - virtual cv::String getName() const; - virtual bool grow_forest( const CvTermCriteria term_crit ); -}; - - /****************************************************************************************\ * Boosted tree classifier * \****************************************************************************************/ -struct CV_EXPORTS_W_MAP CvBoostParams : public CvDTreeParams -{ - CV_PROP_RW int boost_type; - CV_PROP_RW int weak_count; - CV_PROP_RW int split_criteria; - CV_PROP_RW double weight_trim_rate; - - CvBoostParams(); - CvBoostParams( int boost_type, int weak_count, double weight_trim_rate, - int max_depth, bool use_surrogates, const float* priors ); -}; - - -class CvBoost; - -class CV_EXPORTS CvBoostTree: public CvDTree +class CV_EXPORTS_W Boost : public DTrees { public: - CvBoostTree(); - virtual ~CvBoostTree(); + class CV_EXPORTS_W_MAP Params : public DTrees::Params + { + public: + CV_PROP_RW int boostType; + CV_PROP_RW int weakCount; + CV_PROP_RW double weightTrimRate; - virtual bool train( CvDTreeTrainData* trainData, - const CvMat* subsample_idx, CvBoost* ensemble ); + Params(); + Params( int boostType, int weakCount, double weightTrimRate, + int maxDepth, bool useSurrogates, const Mat& priors ); + }; - virtual void scale( double s ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvBoost* ensemble, CvDTreeTrainData* _data ); - virtual void clear(); - - /* dummy methods to avoid warnings: BEGIN */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvDTreeParams params=CvDTreeParams() ); - virtual bool train( CvDTreeTrainData* trainData, const CvMat* _subsample_idx ); - - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void read( CvFileStorage* fs, CvFileNode* node, - CvDTreeTrainData* data ); - /* dummy methods to avoid warnings: END */ - -protected: - - virtual void try_split_node( CvDTreeNode* n ); - virtual CvDTreeSplit* find_surrogate_split_ord( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_surrogate_split_cat( CvDTreeNode* n, int vi, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_class( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_ord_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual CvDTreeSplit* find_split_cat_reg( CvDTreeNode* n, int vi, - float init_quality = 0, CvDTreeSplit* _split = 0, uchar* ext_buf = 0 ); - virtual void calc_node_value( CvDTreeNode* n ); - virtual double calc_node_dir( CvDTreeNode* n ); - - CvBoost* ensemble; -}; - - -class CV_EXPORTS_W CvBoost : public CvStatModel -{ -public: // Boosting type enum { DISCRETE=0, REAL=1, LOGIT=2, GENTLE=3 }; - // Splitting criteria - enum { DEFAULT=0, GINI=1, MISCLASS=3, SQERR=4 }; + virtual Params getBParams() const = 0; + virtual void setBParams(const Params& p) = 0; - CV_WRAP CvBoost(); - virtual ~CvBoost(); - - CvBoost( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvBoostParams params=CvBoostParams() ); - - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvBoostParams params=CvBoostParams(), - bool update=false ); - - virtual bool train( CvMLData* data, - CvBoostParams params=CvBoostParams(), - bool update=false ); - - virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice=CV_WHOLE_SEQ, - bool raw_mode=false, bool return_sum=false ) const; - - CV_WRAP CvBoost( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvBoostParams params=CvBoostParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvBoostParams params=CvBoostParams(), - bool update=false ); - - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), - const cv::Range& slice=cv::Range::all(), bool rawMode=false, - bool returnSum=false ) const; - - virtual float calc_error( CvMLData* _data, int type , std::vector *resp = 0 ); // type in {CV_TRAIN_ERROR, CV_TEST_ERROR} - - CV_WRAP virtual void prune( CvSlice slice ); - - CV_WRAP virtual void clear(); - - virtual void write( CvFileStorage* storage, const char* name ) const; - virtual void read( CvFileStorage* storage, CvFileNode* node ); - virtual const CvMat* get_active_vars(bool absolute_idx=true); - - CvSeq* get_weak_predictors(); - - CvMat* get_weights(); - CvMat* get_subtree_weights(); - CvMat* get_weak_response(); - const CvBoostParams& get_params() const; - const CvDTreeTrainData* get_data() const; - -protected: - - virtual bool set_params( const CvBoostParams& params ); - virtual void update_weights( CvBoostTree* tree ); - virtual void trim_weights(); - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - virtual void initialize_weights(double (&p)[2]); - - CvDTreeTrainData* data; - CvMat train_data_hdr, responses_hdr; - cv::Mat train_data_mat, responses_mat; - CvBoostParams params; - CvSeq* weak; - - CvMat* active_vars; - CvMat* active_vars_abs; - bool have_active_cat_vars; - - CvMat* orig_response; - CvMat* sum_response; - CvMat* weak_eval; - CvMat* subsample_mask; - CvMat* weights; - CvMat* subtree_weights; - bool have_subsample; + static Ptr create(const Params& params=Params()); }; - /****************************************************************************************\ * Gradient Boosted Trees * \****************************************************************************************/ -// DataType: STRUCT CvGBTreesParams -// Parameters of GBT (Gradient Boosted trees model), including single -// tree settings and ensemble parameters. -// -// weak_count - count of trees in the ensemble -// loss_function_type - loss function used for ensemble training -// subsample_portion - portion of whole training set used for -// every single tree training. -// subsample_portion value is in (0.0, 1.0]. -// subsample_portion == 1.0 when whole dataset is -// used on each step. Count of sample used on each -// step is computed as -// int(total_samples_count * subsample_portion). -// shrinkage - regularization parameter. -// Each tree prediction is multiplied on shrinkage value. - - -struct CV_EXPORTS_W_MAP CvGBTreesParams : public CvDTreeParams -{ - CV_PROP_RW int weak_count; - CV_PROP_RW int loss_function_type; - CV_PROP_RW float subsample_portion; - CV_PROP_RW float shrinkage; - - CvGBTreesParams(); - CvGBTreesParams( int loss_function_type, int weak_count, float shrinkage, - float subsample_portion, int max_depth, bool use_surrogates ); -}; - -// DataType: CLASS CvGBTrees -// Gradient Boosting Trees (GBT) algorithm implementation. -// -// data - training dataset -// params - parameters of the CvGBTrees -// weak - array[0..(class_count-1)] of CvSeq -// for storing tree ensembles -// orig_response - original responses of the training set samples -// sum_response - predicitons of the current model on the training dataset. -// this matrix is updated on every iteration. -// sum_response_tmp - predicitons of the model on the training set on the next -// step. On every iteration values of sum_responses_tmp are -// computed via sum_responses values. When the current -// step is complete sum_response values become equal to -// sum_responses_tmp. -// sampleIdx - indices of samples used for training the ensemble. -// CvGBTrees training procedure takes a set of samples -// (train_data) and a set of responses (responses). -// Only pairs (train_data[i], responses[i]), where i is -// in sample_idx are used for training the ensemble. -// subsample_train - indices of samples used for training a single decision -// tree on the current step. This indices are countered -// relatively to the sample_idx, so that pairs -// (train_data[sample_idx[i]], responses[sample_idx[i]]) -// are used for training a decision tree. -// Training set is randomly splited -// in two parts (subsample_train and subsample_test) -// on every iteration accordingly to the portion parameter. -// subsample_test - relative indices of samples from the training set, -// which are not used for training a tree on the current -// step. -// missing - mask of the missing values in the training set. This -// matrix has the same size as train_data. 1 - missing -// value, 0 - not a missing value. -// class_labels - output class labels map. -// rng - random number generator. Used for spliting the -// training set. -// class_count - count of output classes. -// class_count == 1 in the case of regression, -// and > 1 in the case of classification. -// delta - Huber loss function parameter. -// base_value - start point of the gradient descent procedure. -// model prediction is -// f(x) = f_0 + sum_{i=1..weak_count-1}(f_i(x)), where -// f_0 is the base value. - - - -class CV_EXPORTS_W CvGBTrees : public CvStatModel +/*class CV_EXPORTS_W GBTrees : public DTrees { public: + struct CV_EXPORTS_W_MAP Params : public DTrees::Params + { + CV_PROP_RW int weakCount; + CV_PROP_RW int lossFunctionType; + CV_PROP_RW float subsamplePortion; + CV_PROP_RW float shrinkage; + + Params(); + Params( int lossFunctionType, int weakCount, float shrinkage, + float subsamplePortion, int maxDepth, bool useSurrogates ); + }; - /* - // DataType: ENUM - // Loss functions implemented in CvGBTrees. - // - // SQUARED_LOSS - // problem: regression - // loss = (x - x')^2 - // - // ABSOLUTE_LOSS - // problem: regression - // loss = abs(x - x') - // - // HUBER_LOSS - // problem: regression - // loss = delta*( abs(x - x') - delta/2), if abs(x - x') > delta - // 1/2*(x - x')^2, if abs(x - x') <= delta, - // where delta is the alpha-quantile of pseudo responses from - // the training set. - // - // DEVIANCE_LOSS - // problem: classification - // - */ enum {SQUARED_LOSS=0, ABSOLUTE_LOSS, HUBER_LOSS=3, DEVIANCE_LOSS}; + virtual void setK(int k) = 0; - /* - // Default constructor. Creates a model only (without training). - // Should be followed by one form of the train(...) function. - // - // API - // CvGBTrees(); - - // INPUT - // OUTPUT - // RESULT - */ - CV_WRAP CvGBTrees(); - - - /* - // Full form constructor. Creates a gradient boosting model and does the - // train. - // - // API - // CvGBTrees( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams() ); - - // INPUT - // trainData - a set of input feature vectors. - // size of matrix is - // x - // or x - // depending on the tflag parameter. - // matrix values are float. - // tflag - a flag showing how do samples stored in the - // trainData matrix row by row (tflag=CV_ROW_SAMPLE) - // or column by column (tflag=CV_COL_SAMPLE). - // responses - a vector of responses corresponding to the samples - // in trainData. - // varIdx - indices of used variables. zero value means that all - // variables are active. - // sampleIdx - indices of used samples. zero value means that all - // samples from trainData are in the training set. - // varType - vector of length. gives every - // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. - // varType = 0 means all variables are numerical. - // missingDataMask - a mask of misiing values in trainData. - // missingDataMask = 0 means that there are no missing - // values. - // params - parameters of GTB algorithm. - // OUTPUT - // RESULT - */ - CvGBTrees( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams() ); - - - /* - // Destructor. - */ - virtual ~CvGBTrees(); - - - /* - // Gradient tree boosting model training - // - // API - // virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - // INPUT - // trainData - a set of input feature vectors. - // size of matrix is - // x - // or x - // depending on the tflag parameter. - // matrix values are float. - // tflag - a flag showing how do samples stored in the - // trainData matrix row by row (tflag=CV_ROW_SAMPLE) - // or column by column (tflag=CV_COL_SAMPLE). - // responses - a vector of responses corresponding to the samples - // in trainData. - // varIdx - indices of used variables. zero value means that all - // variables are active. - // sampleIdx - indices of used samples. zero value means that all - // samples from trainData are in the training set. - // varType - vector of length. gives every - // variable type CV_VAR_CATEGORICAL or CV_VAR_ORDERED. - // varType = 0 means all variables are numerical. - // missingDataMask - a mask of misiing values in trainData. - // missingDataMask = 0 means that there are no missing - // values. - // params - parameters of GTB algorithm. - // update - is not supported now. (!) - // OUTPUT - // RESULT - // Error state. - */ - virtual bool train( const CvMat* trainData, int tflag, - const CvMat* responses, const CvMat* varIdx=0, - const CvMat* sampleIdx=0, const CvMat* varType=0, - const CvMat* missingDataMask=0, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - - /* - // Gradient tree boosting model training - // - // API - // virtual bool train( CvMLData* data, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ) {return false;} - - // INPUT - // data - training set. - // params - parameters of GTB algorithm. - // update - is not supported now. (!) - // OUTPUT - // RESULT - // Error state. - */ - virtual bool train( CvMLData* data, - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - - /* - // Response value prediction - // - // API - // virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - // INPUT - // sample - input sample of the same type as in the training set. - // missing - missing values mask. missing=0 if there are no - // missing values in sample vector. - // weak_responses - predictions of all of the trees. - // not implemented (!) - // slice - part of the ensemble used for prediction. - // slice = CV_WHOLE_SEQ when all trees are used. - // k - number of ensemble used. - // k is in {-1,0,1,..,}. - // in the case of classification problem - // ensembles are built. - // If k = -1 ordinary prediction is the result, - // otherwise function gives the prediction of the - // k-th ensemble only. - // OUTPUT - // RESULT - // Predicted value. - */ - virtual float predict_serial( const CvMat* sample, const CvMat* missing=0, - CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - /* - // Response value prediction. - // Parallel version (in the case of TBB existence) - // - // API - // virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weak_responses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - // INPUT - // sample - input sample of the same type as in the training set. - // missing - missing values mask. missing=0 if there are no - // missing values in sample vector. - // weak_responses - predictions of all of the trees. - // not implemented (!) - // slice - part of the ensemble used for prediction. - // slice = CV_WHOLE_SEQ when all trees are used. - // k - number of ensemble used. - // k is in {-1,0,1,..,}. - // in the case of classification problem - // ensembles are built. - // If k = -1 ordinary prediction is the result, - // otherwise function gives the prediction of the - // k-th ensemble only. - // OUTPUT - // RESULT - // Predicted value. - */ - virtual float predict( const CvMat* sample, const CvMat* missing=0, - CvMat* weakResponses=0, CvSlice slice = CV_WHOLE_SEQ, - int k=-1 ) const; - - /* - // Deletes all the data. - // - // API - // virtual void clear(); - - // INPUT - // OUTPUT - // delete data, weak, orig_response, sum_response, - // weak_eval, subsample_train, subsample_test, - // sample_idx, missing, lass_labels - // delta = 0.0 - // RESULT - */ - CV_WRAP virtual void clear(); - - /* - // Compute error on the train/test set. - // - // API - // virtual float calc_error( CvMLData* _data, int type, - // std::vector *resp = 0 ); - // - // INPUT - // data - dataset - // type - defines which error is to compute: train (CV_TRAIN_ERROR) or - // test (CV_TEST_ERROR). - // OUTPUT - // resp - vector of predicitons - // RESULT - // Error value. - */ - virtual float calc_error( CvMLData* _data, int type, - std::vector *resp = 0 ); - - /* - // - // Write parameters of the gtb model and data. Write learned model. - // - // API - // virtual void write( CvFileStorage* fs, const char* name ) const; - // - // INPUT - // fs - file storage to read parameters from. - // name - model name. - // OUTPUT - // RESULT - */ - virtual void write( CvFileStorage* fs, const char* name ) const; - - - /* - // - // Read parameters of the gtb model and data. Read learned model. - // - // API - // virtual void read( CvFileStorage* fs, CvFileNode* node ); - // - // INPUT - // fs - file storage to read parameters from. - // node - file node. - // OUTPUT - // RESULT - */ - virtual void read( CvFileStorage* fs, CvFileNode* node ); - - - // new-style C++ interface - CV_WRAP CvGBTrees( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvGBTreesParams params=CvGBTreesParams() ); - - CV_WRAP virtual bool train( const cv::Mat& trainData, int tflag, - const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), - const cv::Mat& missingDataMask=cv::Mat(), - CvGBTreesParams params=CvGBTreesParams(), - bool update=false ); - - CV_WRAP virtual float predict( const cv::Mat& sample, const cv::Mat& missing=cv::Mat(), - const cv::Range& slice = cv::Range::all(), - int k=-1 ) const; - -protected: - - /* - // Compute the gradient vector components. - // - // API - // virtual void find_gradient( const int k = 0); - - // INPUT - // k - used for classification problem, determining current - // tree ensemble. - // OUTPUT - // changes components of data->responses - // which correspond to samples used for training - // on the current step. - // RESULT - */ - virtual void find_gradient( const int k = 0); - - - /* - // - // Change values in tree leaves according to the used loss function. - // - // API - // virtual void change_values(CvDTree* tree, const int k = 0); - // - // INPUT - // tree - decision tree to change. - // k - used for classification problem, determining current - // tree ensemble. - // OUTPUT - // changes 'value' fields of the trees' leaves. - // changes sum_response_tmp. - // RESULT - */ - virtual void change_values(CvDTree* tree, const int k = 0); - - - /* - // - // Find optimal constant prediction value according to the used loss - // function. - // The goal is to find a constant which gives the minimal summary loss - // on the _Idx samples. - // - // API - // virtual float find_optimal_value( const CvMat* _Idx ); - // - // INPUT - // _Idx - indices of the samples from the training set. - // OUTPUT - // RESULT - // optimal constant value. - */ - virtual float find_optimal_value( const CvMat* _Idx ); - - - /* - // - // Randomly split the whole training set in two parts according - // to params.portion. - // - // API - // virtual void do_subsample(); - // - // INPUT - // OUTPUT - // subsample_train - indices of samples used for training - // subsample_test - indices of samples used for test - // RESULT - */ - virtual void do_subsample(); - - - /* - // - // Internal recursive function giving an array of subtree tree leaves. - // - // API - // void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); - // - // INPUT - // node - current leaf. - // OUTPUT - // count - count of leaves in the subtree. - // leaves - array of pointers to leaves. - // RESULT - */ - void leaves_get( CvDTreeNode** leaves, int& count, CvDTreeNode* node ); - - - /* - // - // Get leaves of the tree. - // - // API - // CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); - // - // INPUT - // dtree - decision tree. - // OUTPUT - // len - count of the leaves. - // RESULT - // CvDTreeNode** - array of pointers to leaves. - */ - CvDTreeNode** GetLeaves( const CvDTree* dtree, int& len ); - - - /* - // - // Is it a regression or a classification. - // - // API - // bool problem_type(); - // - // INPUT - // OUTPUT - // RESULT - // false if it is a classification problem, - // true - if regression. - */ - virtual bool problem_type() const; - - - /* - // - // Write parameters of the gtb model. - // - // API - // virtual void write_params( CvFileStorage* fs ) const; - // - // INPUT - // fs - file storage to write parameters to. - // OUTPUT - // RESULT - */ - virtual void write_params( CvFileStorage* fs ) const; - - - /* - // - // Read parameters of the gtb model and data. - // - // API - // virtual void read_params( CvFileStorage* fs ); - // - // INPUT - // fs - file storage to read parameters from. - // OUTPUT - // params - parameters of the gtb model. - // data - contains information about the structure - // of the data set (count of variables, - // their types, etc.). - // class_labels - output class labels map. - // RESULT - */ - virtual void read_params( CvFileStorage* fs, CvFileNode* fnode ); - int get_len(const CvMat* mat) const; - - - CvDTreeTrainData* data; - CvGBTreesParams params; - - CvSeq** weak; - CvMat* orig_response; - CvMat* sum_response; - CvMat* sum_response_tmp; - CvMat* sample_idx; - CvMat* subsample_train; - CvMat* subsample_test; - CvMat* missing; - CvMat* class_labels; - - cv::RNG* rng; - - int class_count; - float delta; - float base_value; - -}; - + virtual float predictSerial( InputArray samples, + OutputArray weakResponses, int flags) const = 0; + static Ptr create(const Params& p); +};*/ /****************************************************************************************\ * Artificial Neural Networks (ANN) * @@ -1878,62 +527,31 @@ protected: /////////////////////////////////// Multi-Layer Perceptrons ////////////////////////////// -struct CV_EXPORTS_W_MAP CvANN_MLP_TrainParams -{ - CvANN_MLP_TrainParams(); - CvANN_MLP_TrainParams( CvTermCriteria term_crit, int train_method, - double param1, double param2=0 ); - ~CvANN_MLP_TrainParams(); - - enum { BACKPROP=0, RPROP=1 }; - - CV_PROP_RW CvTermCriteria term_crit; - CV_PROP_RW int train_method; - - // backpropagation parameters - CV_PROP_RW double bp_dw_scale, bp_moment_scale; - - // rprop parameters - CV_PROP_RW double rp_dw0, rp_dw_plus, rp_dw_minus, rp_dw_min, rp_dw_max; -}; - - -class CV_EXPORTS_W CvANN_MLP : public CvStatModel +class CV_EXPORTS_W ANN_MLP : public StatModel { public: - CV_WRAP CvANN_MLP(); - CvANN_MLP( const CvMat* layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); + struct CV_EXPORTS_W_MAP Params + { + Params(); + Params( const Mat& layerSizes, int activateFunc, double fparam1, double fparam2, + TermCriteria termCrit, int trainMethod, double param1, double param2=0 ); - virtual ~CvANN_MLP(); + enum { BACKPROP=0, RPROP=1 }; - virtual void create( const CvMat* layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); + CV_PROP_RW Mat layerSizes; + CV_PROP_RW int activateFunc; + CV_PROP_RW double fparam1; + CV_PROP_RW double fparam2; - virtual int train( const CvMat* inputs, const CvMat* outputs, - const CvMat* sampleWeights, const CvMat* sampleIdx=0, - CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), - int flags=0 ); - virtual float predict( const CvMat* inputs, CV_OUT CvMat* outputs ) const; + CV_PROP_RW TermCriteria termCrit; + CV_PROP_RW int trainMethod; - CV_WRAP CvANN_MLP( const cv::Mat& layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); + // backpropagation parameters + CV_PROP_RW double bpDWScale, bpMomentScale; - CV_WRAP virtual void create( const cv::Mat& layerSizes, - int activateFunc=CvANN_MLP::SIGMOID_SYM, - double fparam1=0, double fparam2=0 ); - - CV_WRAP virtual int train( const cv::Mat& inputs, const cv::Mat& outputs, - const cv::Mat& sampleWeights, const cv::Mat& sampleIdx=cv::Mat(), - CvANN_MLP_TrainParams params = CvANN_MLP_TrainParams(), - int flags=0 ); - - CV_WRAP virtual float predict( const cv::Mat& inputs, CV_OUT cv::Mat& outputs ) const; - - CV_WRAP virtual void clear(); + // rprop parameters + CV_PROP_RW double rpDW0, rpDWPlus, rpDWMinus, rpDWMin, rpDWMax; + }; // possible activation functions enum { IDENTITY = 0, SIGMOID_SYM = 1, GAUSSIAN = 2 }; @@ -1941,53 +559,11 @@ public: // available training flags enum { UPDATE_WEIGHTS = 1, NO_INPUT_SCALE = 2, NO_OUTPUT_SCALE = 4 }; - virtual void read( CvFileStorage* fs, CvFileNode* node ); - virtual void write( CvFileStorage* storage, const char* name ) const; + virtual Mat getWeights(int layerIdx) const = 0; + virtual void setParams(const Params& p) = 0; + virtual Params getParams() const = 0; - int get_layer_count() { return layer_sizes ? layer_sizes->cols : 0; } - const CvMat* get_layer_sizes() { return layer_sizes; } - double* get_weights(int layer) - { - return layer_sizes && weights && - (unsigned)layer <= (unsigned)layer_sizes->cols ? weights[layer] : 0; - } - - virtual void calc_activ_func_deriv( CvMat* xf, CvMat* deriv, const double* bias ) const; - -protected: - - virtual bool prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* sampleIdx, - CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ); - - // sequential random backpropagation - virtual int train_backprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); - - // RPROP algorithm - virtual int train_rprop( CvVectors _ivecs, CvVectors _ovecs, const double* _sw ); - - virtual void calc_activ_func( CvMat* xf, const double* bias ) const; - virtual void set_activ_func( int _activ_func=SIGMOID_SYM, - double _f_param1=0, double _f_param2=0 ); - virtual void init_weights(); - virtual void scale_input( const CvMat* _src, CvMat* _dst ) const; - virtual void scale_output( const CvMat* _src, CvMat* _dst ) const; - virtual void calc_input_scale( const CvVectors* vecs, int flags ); - virtual void calc_output_scale( const CvVectors* vecs, int flags ); - - virtual void write_params( CvFileStorage* fs ) const; - virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - - CvMat* layer_sizes; - CvMat* wbuf; - CvMat* sample_weights; - double** weights; - double f_param1, f_param2; - double min_val, max_val, min_val1, max_val1; - int activ_func; - int max_count, max_buf_sz; - CvANN_MLP_TrainParams params; - cv::RNG* rng; + static Ptr create(const Params& params=Params()); }; /****************************************************************************************\ @@ -1996,167 +572,17 @@ protected: /* Generates from multivariate normal distribution, where - is an average row vector, - symmetric covariation matrix */ -CVAPI(void) cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, - CvRNG* rng CV_DEFAULT(0) ); +CV_EXPORTS void randMVNormal( InputArray mean, InputArray cov, int nsamples, OutputArray samples); /* Generates sample from gaussian mixture distribution */ -CVAPI(void) cvRandGaussMixture( CvMat* means[], - CvMat* covs[], - float weights[], - int clsnum, - CvMat* sample, - CvMat* sampClasses CV_DEFAULT(0) ); - -#define CV_TS_CONCENTRIC_SPHERES 0 +CV_EXPORTS void randGaussMixture( InputArray means, InputArray covs, InputArray weights, + int nsamples, OutputArray samples, OutputArray sampClasses ); /* creates test set */ -CVAPI(void) cvCreateTestSet( int type, CvMat** samples, - int num_samples, - int num_features, - CvMat** responses, - int num_classes, ... ); +CV_EXPORTS void createConcentricSpheresTestSet( int nsamples, int nfeatures, int nclasses, + OutputArray samples, OutputArray responses); -/****************************************************************************************\ -* Data * -\****************************************************************************************/ - -#define CV_COUNT 0 -#define CV_PORTION 1 - -struct CV_EXPORTS CvTrainTestSplit -{ - CvTrainTestSplit(); - CvTrainTestSplit( int train_sample_count, bool mix = true); - CvTrainTestSplit( float train_sample_portion, bool mix = true); - - union - { - int count; - float portion; - } train_sample_part; - int train_sample_part_mode; - - bool mix; -}; - -class CV_EXPORTS CvMLData -{ -public: - CvMLData(); - virtual ~CvMLData(); - - // returns: - // 0 - OK - // -1 - file can not be opened or is not correct - int read_csv( const char* filename ); - - const CvMat* get_values() const; - const CvMat* get_responses(); - const CvMat* get_missing() const; - - void set_header_lines_number( int n ); - int get_header_lines_number() const; - - void set_response_idx( int idx ); // old response become predictors, new response_idx = idx - // if idx < 0 there will be no response - int get_response_idx() const; - - void set_train_test_split( const CvTrainTestSplit * spl ); - const CvMat* get_train_sample_idx() const; - const CvMat* get_test_sample_idx() const; - void mix_train_and_test_idx(); - - const CvMat* get_var_idx(); - void chahge_var_idx( int vi, bool state ); // misspelled (saved for back compitability), - // use change_var_idx - void change_var_idx( int vi, bool state ); // state == true to set vi-variable as predictor - - const CvMat* get_var_types(); - int get_var_type( int var_idx ) const; - // following 2 methods enable to change vars type - // use these methods to assign CV_VAR_CATEGORICAL type for categorical variable - // with numerical labels; in the other cases var types are correctly determined automatically - void set_var_types( const char* str ); // str examples: - // "ord[0-17],cat[18]", "ord[0,2,4,10-12], cat[1,3,5-9,13,14]", - // "cat", "ord" (all vars are categorical/ordered) - void change_var_type( int var_idx, int type); // type in { CV_VAR_ORDERED, CV_VAR_CATEGORICAL } - - void set_delimiter( char ch ); - char get_delimiter() const; - - void set_miss_ch( char ch ); - char get_miss_ch() const; - - const std::map& get_class_labels_map() const; - -protected: - virtual void clear(); - - void str_to_flt_elem( const char* token, float& flt_elem, int& type); - void free_train_test_idx(); - - char delimiter; - char miss_ch; - //char flt_separator; - - CvMat* values; - CvMat* missing; - CvMat* var_types; - CvMat* var_idx_mask; - - CvMat* response_out; // header - CvMat* var_idx_out; // mat - CvMat* var_types_out; // mat - - int header_lines_number; - - int response_idx; - - int train_sample_count; - bool mix; - - int total_class_count; - std::map class_map; - - CvMat* train_sample_idx; - CvMat* test_sample_idx; - int* sample_idx; // data of train_sample_idx and test_sample_idx - - cv::RNG* rng; -}; - - -namespace cv -{ - -typedef CvStatModel StatModel; -typedef CvParamGrid ParamGrid; -typedef CvNormalBayesClassifier NormalBayesClassifier; -typedef CvKNearest KNearest; -typedef CvSVMParams SVMParams; -typedef CvSVMKernel SVMKernel; -typedef CvSVMSolver SVMSolver; -typedef CvSVM SVM; -typedef CvDTreeParams DTreeParams; -typedef CvMLData TrainData; -typedef CvDTree DecisionTree; -typedef CvForestTree ForestTree; -typedef CvRTParams RandomTreeParams; -typedef CvRTrees RandomTrees; -typedef CvERTreeTrainData ERTreeTRainData; -typedef CvForestERTree ERTree; -typedef CvERTrees ERTrees; -typedef CvBoostParams BoostParams; -typedef CvBoostTree BoostTree; -typedef CvBoost Boost; -typedef CvANN_MLP_TrainParams ANN_MLP_TrainParams; -typedef CvANN_MLP NeuralNet_MLP; -typedef CvGBTreesParams GradientBoostingTreeParams; -typedef CvGBTrees GradientBoostingTrees; - -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const; - -CV_EXPORTS bool initModule_ml(void); +} } #endif // __cplusplus diff --git a/modules/ml/src/ann_mlp.cpp b/modules/ml/src/ann_mlp.cpp index 7323ab57a7..b0e1447dcc 100644 --- a/modules/ml/src/ann_mlp.cpp +++ b/modules/ml/src/ann_mlp.cpp @@ -40,1579 +40,1281 @@ #include "precomp.hpp" -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams() +namespace cv { namespace ml { + +ANN_MLP::Params::Params() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 ); - train_method = RPROP; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 0.1; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + layerSizes = Mat(); + activateFunc = SIGMOID_SYM; + fparam1 = fparam2 = 0; + termCrit = TermCriteria( TermCriteria::COUNT + TermCriteria::EPS, 1000, 0.01 ); + trainMethod = RPROP; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 0.1; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; } -CvANN_MLP_TrainParams::CvANN_MLP_TrainParams( CvTermCriteria _term_crit, - int _train_method, - double _param1, double _param2 ) +ANN_MLP::Params::Params( const Mat& _layerSizes, int _activateFunc, double _fparam1, double _fparam2, + TermCriteria _termCrit, int _trainMethod, double _param1, double _param2 ) { - term_crit = _term_crit; - train_method = _train_method; - bp_dw_scale = bp_moment_scale = 0.1; - rp_dw0 = 1.; rp_dw_plus = 1.2; rp_dw_minus = 0.5; - rp_dw_min = FLT_EPSILON; rp_dw_max = 50.; + layerSizes = _layerSizes; + activateFunc = _activateFunc; + fparam1 = _fparam1; + fparam2 = _fparam2; + termCrit = _termCrit; + trainMethod = _trainMethod; + bpDWScale = bpMomentScale = 0.1; + rpDW0 = 1.; rpDWPlus = 1.2; rpDWMinus = 0.5; + rpDWMin = FLT_EPSILON; rpDWMax = 50.; - if( train_method == RPROP ) + if( trainMethod == RPROP ) { - rp_dw0 = _param1; - if( rp_dw0 < FLT_EPSILON ) - rp_dw0 = 1.; - rp_dw_min = _param2; - rp_dw_min = MAX( rp_dw_min, 0 ); + rpDW0 = _param1; + if( rpDW0 < FLT_EPSILON ) + rpDW0 = 1.; + rpDWMin = _param2; + rpDWMin = std::max( rpDWMin, 0. ); } - else if( train_method == BACKPROP ) + else if( trainMethod == BACKPROP ) { - bp_dw_scale = _param1; - if( bp_dw_scale <= 0 ) - bp_dw_scale = 0.1; - bp_dw_scale = MAX( bp_dw_scale, 1e-3 ); - bp_dw_scale = MIN( bp_dw_scale, 1 ); - bp_moment_scale = _param2; - if( bp_moment_scale < 0 ) - bp_moment_scale = 0.1; - bp_moment_scale = MIN( bp_moment_scale, 1 ); + bpDWScale = _param1; + if( bpDWScale <= 0 ) + bpDWScale = 0.1; + bpDWScale = std::max( bpDWScale, 1e-3 ); + bpDWScale = std::min( bpDWScale, 1. ); + bpMomentScale = _param2; + if( bpMomentScale < 0 ) + bpMomentScale = 0.1; + bpMomentScale = std::min( bpMomentScale, 1. ); } else - train_method = RPROP; + trainMethod = RPROP; } -CvANN_MLP_TrainParams::~CvANN_MLP_TrainParams() +class ANN_MLPImpl : public ANN_MLP { -} - - -CvANN_MLP::CvANN_MLP() -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - clear(); -} - - -CvANN_MLP::CvANN_MLP( const CvMat* _layer_sizes, - int _activ_func, - double _f_param1, double _f_param2 ) -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); -} - - -CvANN_MLP::~CvANN_MLP() -{ - clear(); -} - - -void CvANN_MLP::clear() -{ - cvReleaseMat( &layer_sizes ); - cvReleaseMat( &wbuf ); - cvFree( &weights ); - activ_func = SIGMOID_SYM; - f_param1 = f_param2 = 1; - max_buf_sz = 1 << 12; -} - - -void CvANN_MLP::set_activ_func( int _activ_func, double _f_param1, double _f_param2 ) -{ - CV_FUNCNAME( "CvANN_MLP::set_activ_func" ); - - __BEGIN__; - - if( _activ_func < 0 || _activ_func > GAUSSIAN ) - CV_ERROR( CV_StsOutOfRange, "Unknown activation function" ); - - activ_func = _activ_func; - - switch( activ_func ) +public: + ANN_MLPImpl() + { + clear(); + } + + ANN_MLPImpl( const Params& p ) + { + setParams(p); + } + + virtual ~ANN_MLPImpl() {} + + void setParams(const Params& p) + { + params = p; + create( params.layerSizes ); + set_activ_func( params.activateFunc, params.fparam1, params.fparam2 ); + } + + Params getParams() const + { + return params; + } + + void clear() { - case SIGMOID_SYM: - max_val = 0.95; min_val = -max_val; - max_val1 = 0.98; min_val1 = -max_val1; - if( fabs(_f_param1) < FLT_EPSILON ) - _f_param1 = 2./3; - if( fabs(_f_param2) < FLT_EPSILON ) - _f_param2 = 1.7159; - break; - case GAUSSIAN: - max_val = 1.; min_val = 0.05; - max_val1 = 1.; min_val1 = 0.02; - if( fabs(_f_param1) < FLT_EPSILON ) - _f_param1 = 1.; - if( fabs(_f_param2) < FLT_EPSILON ) - _f_param2 = 1.; - break; - default: min_val = max_val = min_val1 = max_val1 = 0.; - _f_param1 = 1.; - _f_param2 = 0.; + rng = RNG((uint64)-1); + weights.clear(); + trained = false; } - f_param1 = _f_param1; - f_param2 = _f_param2; + int layer_count() const { return (int)layer_sizes.size(); } - __END__; -} - - -void CvANN_MLP::init_weights() -{ - int i, j, k; - - for( i = 1; i < layer_sizes->cols; i++ ) + void set_activ_func( int _activ_func, double _f_param1, double _f_param2 ) { - int n1 = layer_sizes->data.i[i-1]; - int n2 = layer_sizes->data.i[i]; - double val = 0, G = n2 > 2 ? 0.7*pow((double)n1,1./(n2-1)) : 1.; - double* w = weights[i]; + if( _activ_func < 0 || _activ_func > GAUSSIAN ) + CV_Error( CV_StsOutOfRange, "Unknown activation function" ); - // initialize weights using Nguyen-Widrow algorithm - for( j = 0; j < n2; j++ ) + activ_func = _activ_func; + + switch( activ_func ) { - double s = 0; - for( k = 0; k <= n1; k++ ) - { - val = rng->uniform(0., 1.)*2-1.; - w[k*n2 + j] = val; - s += fabs(val); - } + case SIGMOID_SYM: + max_val = 0.95; min_val = -max_val; + max_val1 = 0.98; min_val1 = -max_val1; + if( fabs(_f_param1) < FLT_EPSILON ) + _f_param1 = 2./3; + if( fabs(_f_param2) < FLT_EPSILON ) + _f_param2 = 1.7159; + break; + case GAUSSIAN: + max_val = 1.; min_val = 0.05; + max_val1 = 1.; min_val1 = 0.02; + if( fabs(_f_param1) < FLT_EPSILON ) + _f_param1 = 1.; + if( fabs(_f_param2) < FLT_EPSILON ) + _f_param2 = 1.; + break; + default: + min_val = max_val = min_val1 = max_val1 = 0.; + _f_param1 = 1.; + _f_param2 = 0.; + } - if( i < layer_sizes->cols - 1 ) + f_param1 = _f_param1; + f_param2 = _f_param2; + } + + + void init_weights() + { + int i, j, k, l_count = layer_count(); + + for( i = 1; i < l_count; i++ ) + { + int n1 = layer_sizes[i-1]; + int n2 = layer_sizes[i]; + double val = 0, G = n2 > 2 ? 0.7*pow((double)n1,1./(n2-1)) : 1.; + double* w = weights[i].ptr(); + + // initialize weights using Nguyen-Widrow algorithm + for( j = 0; j < n2; j++ ) { - s = 1./(s - fabs(val)); + double s = 0; for( k = 0; k <= n1; k++ ) - w[k*n2 + j] *= s; - w[n1*n2 + j] *= G*(-1+j*2./n2); + { + val = rng.uniform(0., 1.)*2-1.; + w[k*n2 + j] = val; + s += fabs(val); + } + + if( i < l_count - 1 ) + { + s = 1./(s - fabs(val)); + for( k = 0; k <= n1; k++ ) + w[k*n2 + j] *= s; + w[n1*n2 + j] *= G*(-1+j*2./n2); + } } } } -} - -void CvANN_MLP::create( const CvMat* _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) -{ - CV_FUNCNAME( "CvANN_MLP::create" ); - - __BEGIN__; - - int i, l_step, l_count, buf_sz = 0; - int *l_src, *l_dst; - - clear(); - - if( !CV_IS_MAT(_layer_sizes) || - (_layer_sizes->cols != 1 && _layer_sizes->rows != 1) || - CV_MAT_TYPE(_layer_sizes->type) != CV_32SC1 ) - CV_ERROR( CV_StsBadArg, - "The array of layer neuron counters must be an integer vector" ); - - CV_CALL( set_activ_func( _activ_func, _f_param1, _f_param2 )); - - l_count = _layer_sizes->rows + _layer_sizes->cols - 1; - l_src = _layer_sizes->data.i; - l_step = CV_IS_MAT_CONT(_layer_sizes->type) ? 1 : - _layer_sizes->step / sizeof(l_src[0]); - CV_CALL( layer_sizes = cvCreateMat( 1, l_count, CV_32SC1 )); - l_dst = layer_sizes->data.i; - - max_count = 0; - for( i = 0; i < l_count; i++ ) + void create( InputArray _layer_sizes ) { - int n = l_src[i*l_step]; - if( n < 1 + (0 < i && i < l_count-1)) - CV_ERROR( CV_StsOutOfRange, - "there should be at least one input and one output " - "and every hidden layer must have more than 1 neuron" ); - l_dst[i] = n; - max_count = MAX( max_count, n ); - if( i > 0 ) - buf_sz += (l_dst[i-1]+1)*n; - } + clear(); - buf_sz += (l_dst[0] + l_dst[l_count-1]*2)*2; + _layer_sizes.copyTo(layer_sizes); + int l_count = layer_count(); - CV_CALL( wbuf = cvCreateMat( 1, buf_sz, CV_64F )); - CV_CALL( weights = (double**)cvAlloc( (l_count+2)*sizeof(weights[0]) )); + weights.resize(l_count + 2); + max_lsize = 0; - weights[0] = wbuf->data.db; - weights[1] = weights[0] + l_dst[0]*2; - for( i = 1; i < l_count; i++ ) - weights[i+1] = weights[i] + (l_dst[i-1] + 1)*l_dst[i]; - weights[l_count+1] = weights[l_count] + l_dst[l_count-1]*2; - - __END__; -} - - -float CvANN_MLP::predict( const CvMat* _inputs, CvMat* _outputs ) const -{ - int i, j, n, dn = 0, l_count, dn0, buf_sz, min_buf_sz; - - if( !layer_sizes ) - CV_Error( CV_StsError, "The network has not been initialized" ); - - if( !CV_IS_MAT(_inputs) || !CV_IS_MAT(_outputs) || - !CV_ARE_TYPES_EQ(_inputs,_outputs) || - (CV_MAT_TYPE(_inputs->type) != CV_32FC1 && - CV_MAT_TYPE(_inputs->type) != CV_64FC1) || - _inputs->rows != _outputs->rows ) - CV_Error( CV_StsBadArg, "Both input and output must be floating-point matrices " - "of the same type and have the same number of rows" ); - - if( _inputs->cols != layer_sizes->data.i[0] ) - CV_Error( CV_StsBadSize, "input matrix must have the same number of columns as " - "the number of neurons in the input layer" ); - - if( _outputs->cols != layer_sizes->data.i[layer_sizes->cols - 1] ) - CV_Error( CV_StsBadSize, "output matrix must have the same number of columns as " - "the number of neurons in the output layer" ); - n = dn0 = _inputs->rows; - min_buf_sz = 2*max_count; - buf_sz = n*min_buf_sz; - - if( buf_sz > max_buf_sz ) - { - dn0 = max_buf_sz/min_buf_sz; - dn0 = MAX( dn0, 1 ); - buf_sz = dn0*min_buf_sz; - } - - cv::AutoBuffer buf(buf_sz); - l_count = layer_sizes->cols; - - for( i = 0; i < n; i += dn ) - { - CvMat hdr[2], _w, *layer_in = &hdr[0], *layer_out = &hdr[1], *temp; - dn = MIN( dn0, n - i ); - - cvGetRows( _inputs, layer_in, i, i + dn ); - cvInitMatHeader( layer_out, dn, layer_in->cols, CV_64F, &buf[0] ); - - scale_input( layer_in, layer_out ); - CV_SWAP( layer_in, layer_out, temp ); - - for( j = 1; j < l_count; j++ ) + if( l_count > 0 ) { - double* data = buf + (j&1 ? max_count*dn0 : 0); - int cols = layer_sizes->data.i[j]; + for( int i = 0; i < l_count; i++ ) + { + int n = layer_sizes[i]; + if( n < 1 + (0 < i && i < l_count-1)) + CV_Error( CV_StsOutOfRange, + "there should be at least one input and one output " + "and every hidden layer must have more than 1 neuron" ); + max_lsize = std::max( max_lsize, n ); + if( i > 0 ) + weights[i].create(layer_sizes[i-1]+1, n, CV_64F); + } - cvInitMatHeader( layer_out, dn, cols, CV_64F, data ); - cvInitMatHeader( &_w, layer_in->cols, layer_out->cols, CV_64F, weights[j] ); - cvGEMM( layer_in, &_w, 1, 0, 0, layer_out ); - calc_activ_func( layer_out, _w.data.db + _w.rows*_w.cols ); + int ninputs = layer_sizes.front(); + int noutputs = layer_sizes.back(); + weights[0].create(1, ninputs*2, CV_64F); + weights[l_count].create(1, noutputs*2, CV_64F); + weights[l_count+1].create(1, noutputs*2, CV_64F); + } + } - CV_SWAP( layer_in, layer_out, temp ); + float predict( InputArray _inputs, OutputArray _outputs, int ) const + { + if( !trained ) + CV_Error( CV_StsError, "The network has not been trained or loaded" ); + + Mat inputs = _inputs.getMat(); + int type = inputs.type(), l_count = layer_count(); + int n = inputs.rows, dn0 = n; + + CV_Assert( (type == CV_32F || type == CV_64F) && inputs.cols == layer_sizes[0] ); + int noutputs = layer_sizes[l_count-1]; + Mat outputs; + + int min_buf_sz = 2*max_lsize; + int buf_sz = n*min_buf_sz; + + if( buf_sz > max_buf_sz ) + { + dn0 = max_buf_sz/min_buf_sz; + dn0 = std::max( dn0, 1 ); + buf_sz = dn0*min_buf_sz; } - cvGetRows( _outputs, layer_out, i, i + dn ); - scale_output( layer_in, layer_out ); + cv::AutoBuffer _buf(buf_sz+noutputs); + double* buf = _buf; + + if( !_outputs.needed() ) + { + CV_Assert( n == 1 ); + outputs = Mat(n, noutputs, type, buf + buf_sz); + } + else + { + _outputs.create(n, noutputs, type); + outputs = _outputs.getMat(); + } + + int dn = 0; + for( int i = 0; i < n; i += dn ) + { + dn = std::min( dn0, n - i ); + + Mat layer_in = inputs.rowRange(i, i + dn); + Mat layer_out( dn, layer_in.cols, CV_64F, buf); + + scale_input( layer_in, layer_out ); + layer_in = layer_out; + + for( int j = 1; j < l_count; j++ ) + { + double* data = buf + ((j&1) ? max_lsize*dn0 : 0); + int cols = layer_sizes[j]; + + layer_out = Mat(dn, cols, CV_64F, data); + Mat w = weights[j].rowRange(0, layer_in.cols); + gemm(layer_in, w, 1, noArray(), 0, layer_out); + calc_activ_func( layer_out, weights[j] ); + + layer_in = layer_out; + } + + layer_out = outputs.rowRange(i, i + dn); + scale_output( layer_in, layer_out ); + } + + if( n == 1 ) + { + int maxIdx[] = {0, 0}; + minMaxIdx(outputs, 0, 0, 0, maxIdx); + return (float)(maxIdx[0] + maxIdx[1]); + } + + return 0.f; } - return 0.f; -} - - -void CvANN_MLP::scale_input( const CvMat* _src, CvMat* _dst ) const -{ - int i, j, cols = _src->cols; - double* dst = _dst->data.db; - const double* w = weights[0]; - int step = _src->step; - - if( CV_MAT_TYPE( _src->type ) == CV_32F ) + void scale_input( const Mat& _src, Mat& _dst ) const { - const float* src = _src->data.fl; - step /= sizeof(src[0]); + int cols = _src.cols; + const double* w = weights[0].ptr(); - for( i = 0; i < _src->rows; i++, src += step, dst += cols ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; - } - else - { - const double* src = _src->data.db; - step /= sizeof(src[0]); - - for( i = 0; i < _src->rows; i++, src += step, dst += cols ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; - } -} - - -void CvANN_MLP::scale_output( const CvMat* _src, CvMat* _dst ) const -{ - int i, j, cols = _src->cols; - const double* src = _src->data.db; - const double* w = weights[layer_sizes->cols]; - int step = _dst->step; - - if( CV_MAT_TYPE( _dst->type ) == CV_32F ) - { - float* dst = _dst->data.fl; - step /= sizeof(dst[0]); - - for( i = 0; i < _src->rows; i++, src += cols, dst += step ) - for( j = 0; j < cols; j++ ) - dst[j] = (float)(src[j]*w[j*2] + w[j*2+1]); - } - else - { - double* dst = _dst->data.db; - step /= sizeof(dst[0]); - - for( i = 0; i < _src->rows; i++, src += cols, dst += step ) - for( j = 0; j < cols; j++ ) - dst[j] = src[j]*w[j*2] + w[j*2+1]; - } -} - - -void CvANN_MLP::calc_activ_func( CvMat* sums, const double* bias ) const -{ - int i, j, n = sums->rows, cols = sums->cols; - double* data = sums->data.db; - double scale = 0, scale2 = f_param2; - - switch( activ_func ) - { - case IDENTITY: - scale = 1.; - break; - case SIGMOID_SYM: - scale = -f_param1; - break; - case GAUSSIAN: - scale = -f_param1*f_param1; - break; - default: - ; + if( _src.type() == CV_32F ) + { + for( int i = 0; i < _src.rows; i++ ) + { + const float* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; + } + } + else + { + for( int i = 0; i < _src.rows; i++ ) + { + const float* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; + } + } } - assert( CV_IS_MAT_CONT(sums->type) ); - - if( activ_func != GAUSSIAN ) + void scale_output( const Mat& _src, Mat& _dst ) const { - for( i = 0; i < n; i++, data += cols ) - for( j = 0; j < cols; j++ ) - data[j] = (data[j] + bias[j])*scale; + int cols = _src.cols; + const double* w = weights[layer_count()].ptr(); + + if( _dst.type() == CV_32F ) + { + for( int i = 0; i < _src.rows; i++ ) + { + const double* src = _src.ptr(i); + float* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = (float)(src[j]*w[j*2] + w[j*2+1]); + } + } + else + { + for( int i = 0; i < _src.rows; i++ ) + { + const double* src = _src.ptr(i); + double* dst = _dst.ptr(i); + for( int j = 0; j < cols; j++ ) + dst[j] = src[j]*w[j*2] + w[j*2+1]; + } + } + } + + void calc_activ_func( Mat& sums, const Mat& w ) const + { + const double* bias = w.ptr(w.rows-1); + int i, j, n = sums.rows, cols = sums.cols; + double scale = 0, scale2 = f_param2; + + switch( activ_func ) + { + case IDENTITY: + scale = 1.; + break; + case SIGMOID_SYM: + scale = -f_param1; + break; + case GAUSSIAN: + scale = -f_param1*f_param1; + break; + default: + ; + } + + CV_Assert( sums.isContinuous() ); + + if( activ_func != GAUSSIAN ) + { + for( i = 0; i < n; i++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + data[j] = (data[j] + bias[j])*scale; + } + + if( activ_func == IDENTITY ) + return; + } + else + { + for( i = 0; i < n; i++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + { + double t = data[j] + bias[j]; + data[j] = t*t*scale; + } + } + } + + exp( sums, sums ); + + if( sums.isContinuous() ) + { + cols *= n; + n = 1; + } + + switch( activ_func ) + { + case SIGMOID_SYM: + for( i = 0; i < n; i++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + { + double t = scale2*(1. - data[j])/(1. + data[j]); + data[j] = t; + } + } + break; + + case GAUSSIAN: + for( i = 0; i < n; i++ ) + { + double* data = sums.ptr(i); + for( j = 0; j < cols; j++ ) + data[j] = scale2*data[j]; + } + break; + + default: + ; + } + } + + void calc_activ_func_deriv( Mat& _xf, Mat& _df, const Mat& w ) const + { + const double* bias = w.ptr(w.rows-1); + int i, j, n = _xf.rows, cols = _xf.cols; if( activ_func == IDENTITY ) - return; - } - else - { - for( i = 0; i < n; i++, data += cols ) - for( j = 0; j < cols; j++ ) - { - double t = data[j] + bias[j]; - data[j] = t*t*scale; - } - } - - cvExp( sums, sums ); - - n *= cols; - data -= n; - - switch( activ_func ) - { - case SIGMOID_SYM: - for( i = 0; i <= n - 4; i += 4 ) { - double x0 = 1.+data[i], x1 = 1.+data[i+1], x2 = 1.+data[i+2], x3 = 1.+data[i+3]; - double a = x0*x1, b = x2*x3, d = scale2/(a*b), t0, t1; - a *= d; b *= d; - t0 = (2 - x0)*b*x1; t1 = (2 - x1)*b*x0; - data[i] = t0; data[i+1] = t1; - t0 = (2 - x2)*a*x3; t1 = (2 - x3)*a*x2; - data[i+2] = t0; data[i+3] = t1; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); + + for( j = 0; j < cols; j++ ) + { + xf[j] += bias[j]; + df[j] = 1; + } + } } - - for( ; i < n; i++ ) + else if( activ_func == GAUSSIAN ) { - double t = scale2*(1. - data[i])/(1. + data[i]); - data[i] = t; + double scale = -f_param1*f_param1; + double scale2 = scale*f_param2; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); + + for( j = 0; j < cols; j++ ) + { + double t = xf[j] + bias[j]; + df[j] = t*2*scale2; + xf[j] = t*t*scale; + } + } + exp( _xf, _xf ); + + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); + + for( j = 0; j < cols; j++ ) + df[j] *= xf[j]; + } } - break; - - case GAUSSIAN: - for( i = 0; i < n; i++ ) - data[i] = scale2*data[i]; - break; - - default: - ; - } -} - - -void CvANN_MLP::calc_activ_func_deriv( CvMat* _xf, CvMat* _df, - const double* bias ) const -{ - int i, j, n = _xf->rows, cols = _xf->cols; - double* xf = _xf->data.db; - double* df = _df->data.db; - double scale, scale2 = f_param2; - assert( CV_IS_MAT_CONT( _xf->type & _df->type ) ); - - if( activ_func == IDENTITY ) - { - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) - { - xf[j] += bias[j]; - df[j] = 1; - } - return; - } - else if( activ_func == GAUSSIAN ) - { - scale = -f_param1*f_param1; - scale2 *= scale; - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) - { - double t = xf[j] + bias[j]; - df[j] = t*2*scale2; - xf[j] = t*t*scale; - } - cvExp( _xf, _xf ); - - n *= cols; - xf -= n; df -= n; - - for( i = 0; i < n; i++ ) - df[i] *= xf[i]; - } - else - { - scale = f_param1; - for( i = 0; i < n; i++, xf += cols, df += cols ) - for( j = 0; j < cols; j++ ) - { - xf[j] = (xf[j] + bias[j])*scale; - df[j] = -fabs(xf[j]); - } - - cvExp( _df, _df ); - - n *= cols; - xf -= n; df -= n; - - // ((1+exp(-ax))^-1)'=a*((1+exp(-ax))^-2)*exp(-ax); - // ((1-exp(-ax))/(1+exp(-ax)))'=(a*exp(-ax)*(1+exp(-ax)) + a*exp(-ax)*(1-exp(-ax)))/(1+exp(-ax))^2= - // 2*a*exp(-ax)/(1+exp(-ax))^2 - scale *= 2*f_param2; - for( i = 0; i < n; i++ ) + else { - int s0 = xf[i] > 0 ? 1 : -1; - double t0 = 1./(1. + df[i]); - double t1 = scale*df[i]*t0*t0; - t0 *= scale2*(1. - df[i])*s0; - df[i] = t1; - xf[i] = t0; + double scale = f_param1; + double scale2 = f_param2; + + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); + + for( j = 0; j < cols; j++ ) + { + xf[j] = (xf[j] + bias[j])*scale; + df[j] = -fabs(xf[j]); + } + } + + exp( _df, _df ); + + // ((1+exp(-ax))^-1)'=a*((1+exp(-ax))^-2)*exp(-ax); + // ((1-exp(-ax))/(1+exp(-ax)))'=(a*exp(-ax)*(1+exp(-ax)) + a*exp(-ax)*(1-exp(-ax)))/(1+exp(-ax))^2= + // 2*a*exp(-ax)/(1+exp(-ax))^2 + scale *= 2*f_param2; + for( i = 0; i < n; i++ ) + { + double* xf = _xf.ptr(i); + double* df = _df.ptr(i); + + for( j = 0; j < cols; j++ ) + { + int s0 = xf[j] > 0 ? 1 : -1; + double t0 = 1./(1. + df[j]); + double t1 = scale*df[j]*t0*t0; + t0 *= scale2*(1. - df[j])*s0; + df[j] = t1; + xf[j] = t0; + } + } } } -} - -void CvANN_MLP::calc_input_scale( const CvVectors* vecs, int flags ) -{ - bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; - bool no_scale = (flags & NO_INPUT_SCALE) != 0; - double* scale = weights[0]; - int count = vecs->count; - - if( reset_weights ) + void calc_input_scale( const Mat& inputs, int flags ) { - int i, j, vcount = layer_sizes->data.i[0]; - int type = vecs->type; - double a = no_scale ? 1. : 0.; + bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; + bool no_scale = (flags & NO_INPUT_SCALE) != 0; + double* scale = weights[0].ptr(); + int count = inputs.rows; - for( j = 0; j < vcount; j++ ) - scale[2*j] = a, scale[j*2+1] = 0.; + if( reset_weights ) + { + int i, j, vcount = layer_sizes[0]; + int type = inputs.type(); + double a = no_scale ? 1. : 0.; - if( no_scale ) - return; + for( j = 0; j < vcount; j++ ) + scale[2*j] = a, scale[j*2+1] = 0.; + + if( no_scale ) + return; + + for( i = 0; i < count; i++ ) + { + const uchar* p = inputs.ptr(i); + const float* f = (const float*)p; + const double* d = (const double*)p; + for( j = 0; j < vcount; j++ ) + { + double t = type == CV_32F ? (double)f[j] : d[j]; + scale[j*2] += t; + scale[j*2+1] += t*t; + } + } + + for( j = 0; j < vcount; j++ ) + { + double s = scale[j*2], s2 = scale[j*2+1]; + double m = s/count, sigma2 = s2/count - m*m; + scale[j*2] = sigma2 < DBL_EPSILON ? 1 : 1./sqrt(sigma2); + scale[j*2+1] = -m*scale[j*2]; + } + } + } + + void calc_output_scale( const Mat& outputs, int flags ) + { + int i, j, vcount = layer_sizes.back(); + int type = outputs.type(); + double m = min_val, M = max_val, m1 = min_val1, M1 = max_val1; + bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; + bool no_scale = (flags & NO_OUTPUT_SCALE) != 0; + int l_count = layer_count(); + double* scale = weights[l_count].ptr(); + double* inv_scale = weights[l_count+1].ptr(); + int count = outputs.rows; + + if( reset_weights ) + { + double a0 = no_scale ? 1 : DBL_MAX, b0 = no_scale ? 0 : -DBL_MAX; + + for( j = 0; j < vcount; j++ ) + { + scale[2*j] = inv_scale[2*j] = a0; + scale[j*2+1] = inv_scale[2*j+1] = b0; + } + + if( no_scale ) + return; + } for( i = 0; i < count; i++ ) { - const float* f = vecs->data.fl[i]; - const double* d = vecs->data.db[i]; + const uchar* p = outputs.ptr(i); + const float* f = (const float*)p; + const double* d = (const double*)p; + for( j = 0; j < vcount; j++ ) { double t = type == CV_32F ? (double)f[j] : d[j]; - scale[j*2] += t; - scale[j*2+1] += t*t; + + if( reset_weights ) + { + double mj = scale[j*2], Mj = scale[j*2+1]; + if( mj > t ) mj = t; + if( Mj < t ) Mj = t; + + scale[j*2] = mj; + scale[j*2+1] = Mj; + } + else + { + t = t*inv_scale[j*2] + inv_scale[2*j+1]; + if( t < m1 || t > M1 ) + CV_Error( CV_StsOutOfRange, + "Some of new output training vector components run exceed the original range too much" ); + } } } - for( j = 0; j < vcount; j++ ) - { - double s = scale[j*2], s2 = scale[j*2+1]; - double m = s/count, sigma2 = s2/count - m*m; - scale[j*2] = sigma2 < DBL_EPSILON ? 1 : 1./sqrt(sigma2); - scale[j*2+1] = -m*scale[j*2]; - } - } -} - - -void CvANN_MLP::calc_output_scale( const CvVectors* vecs, int flags ) -{ - int i, j, vcount = layer_sizes->data.i[layer_sizes->cols-1]; - int type = vecs->type; - double m = min_val, M = max_val, m1 = min_val1, M1 = max_val1; - bool reset_weights = (flags & UPDATE_WEIGHTS) == 0; - bool no_scale = (flags & NO_OUTPUT_SCALE) != 0; - int l_count = layer_sizes->cols; - double* scale = weights[l_count]; - double* inv_scale = weights[l_count+1]; - int count = vecs->count; - - CV_FUNCNAME( "CvANN_MLP::calc_output_scale" ); - - __BEGIN__; - - if( reset_weights ) - { - double a0 = no_scale ? 1 : DBL_MAX, b0 = no_scale ? 0 : -DBL_MAX; - - for( j = 0; j < vcount; j++ ) - { - scale[2*j] = inv_scale[2*j] = a0; - scale[j*2+1] = inv_scale[2*j+1] = b0; - } - - if( no_scale ) - EXIT; - } - - for( i = 0; i < count; i++ ) - { - const float* f = vecs->data.fl[i]; - const double* d = vecs->data.db[i]; - - for( j = 0; j < vcount; j++ ) - { - double t = type == CV_32F ? (double)f[j] : d[j]; - - if( reset_weights ) + if( reset_weights ) + for( j = 0; j < vcount; j++ ) { + // map mj..Mj to m..M double mj = scale[j*2], Mj = scale[j*2+1]; - if( mj > t ) mj = t; - if( Mj < t ) Mj = t; - - scale[j*2] = mj; - scale[j*2+1] = Mj; + double a, b; + double delta = Mj - mj; + if( delta < DBL_EPSILON ) + a = 1, b = (M + m - Mj - mj)*0.5; + else + a = (M - m)/delta, b = m - mj*a; + inv_scale[j*2] = a; inv_scale[j*2+1] = b; + a = 1./a; b = -b*a; + scale[j*2] = a; scale[j*2+1] = b; } - else - { - t = t*inv_scale[j*2] + inv_scale[2*j+1]; - if( t < m1 || t > M1 ) - CV_ERROR( CV_StsOutOfRange, - "Some of new output training vector components run exceed the original range too much" ); - } - } } - if( reset_weights ) - for( j = 0; j < vcount; j++ ) + void prepare_to_train( const Mat& inputs, const Mat& outputs, + Mat& sample_weights, int flags ) + { + if( layer_sizes.empty() ) + CV_Error( CV_StsError, + "The network has not been created. Use method create or the appropriate constructor" ); + + if( (inputs.type() != CV_32F && inputs.type() != CV_64F) || + inputs.cols != layer_sizes[0] ) + CV_Error( CV_StsBadArg, + "input training data should be a floating-point matrix with " + "the number of rows equal to the number of training samples and " + "the number of columns equal to the size of 0-th (input) layer" ); + + if( (outputs.type() != CV_32F && outputs.type() != CV_64F) || + outputs.cols != layer_sizes.back() ) + CV_Error( CV_StsBadArg, + "output training data should be a floating-point matrix with " + "the number of rows equal to the number of training samples and " + "the number of columns equal to the size of last (output) layer" ); + + if( inputs.rows != outputs.rows ) + CV_Error( CV_StsUnmatchedSizes, "The numbers of input and output samples do not match" ); + + Mat temp; + double s = sum(sample_weights)[0]; + sample_weights.convertTo(temp, CV_64F, 1./s); + sample_weights = temp; + + calc_input_scale( inputs, flags ); + calc_output_scale( outputs, flags ); + } + + bool train( const Ptr& trainData, int flags ) + { + const int MAX_ITER = 1000; + const double DEFAULT_EPSILON = FLT_EPSILON; + + // initialize training data + Mat inputs = trainData->getTrainSamples(); + Mat outputs = trainData->getTrainResponses(); + Mat sw = trainData->getTrainSampleWeights(); + prepare_to_train( inputs, outputs, sw, flags ); + + // ... and link weights + if( !(flags & UPDATE_WEIGHTS) ) + init_weights(); + + TermCriteria termcrit; + termcrit.type = TermCriteria::COUNT + TermCriteria::EPS; + termcrit.maxCount = std::max((params.termCrit.type & CV_TERMCRIT_ITER ? params.termCrit.maxCount : MAX_ITER), 1); + termcrit.epsilon = std::max((params.termCrit.type & CV_TERMCRIT_EPS ? params.termCrit.epsilon : DEFAULT_EPSILON), DBL_EPSILON); + + int iter = params.trainMethod == Params::BACKPROP ? + train_backprop( inputs, outputs, sw, termcrit ) : + train_rprop( inputs, outputs, sw, termcrit ); + + trained = iter > 0; + return trained; + } + + int train_backprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) + { + int i, j, k; + double prev_E = DBL_MAX*0.5, E = 0; + int itype = inputs.type(), otype = outputs.type(); + + int count = inputs.rows; + + int iter = -1, max_iter = termCrit.maxCount*count; + double epsilon = termCrit.epsilon*count; + + int l_count = layer_count(); + int ivcount = layer_sizes[0]; + int ovcount = layer_sizes.back(); + + // allocate buffers + vector > x(l_count); + vector > df(l_count); + vector dw(l_count); + + for( i = 0; i < l_count; i++ ) { - // map mj..Mj to m..M - double mj = scale[j*2], Mj = scale[j*2+1]; - double a, b; - double delta = Mj - mj; - if( delta < DBL_EPSILON ) - a = 1, b = (M + m - Mj - mj)*0.5; - else - a = (M - m)/delta, b = m - mj*a; - inv_scale[j*2] = a; inv_scale[j*2+1] = b; - a = 1./a; b = -b*a; - scale[j*2] = a; scale[j*2+1] = b; + int n = layer_sizes[i]; + x[i].resize(n); + df[i].resize(n); + dw[i].create(weights[i].size(), CV_64F); } - __END__; -} - - -bool CvANN_MLP::prepare_to_train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* _sample_idx, - CvVectors* _ivecs, CvVectors* _ovecs, double** _sw, int _flags ) -{ - bool ok = false; - CvMat* sample_idx = 0; - CvVectors ivecs, ovecs; - double* sw = 0; - int count = 0; - - CV_FUNCNAME( "CvANN_MLP::prepare_to_train" ); - - ivecs.data.ptr = ovecs.data.ptr = 0; - assert( _ivecs && _ovecs ); - - __BEGIN__; - - const int* sidx = 0; - int i, sw_type = 0, sw_count = 0; - int sw_step = 0; - double sw_sum = 0; - - if( !layer_sizes ) - CV_ERROR( CV_StsError, - "The network has not been created. Use method create or the appropriate constructor" ); - - if( !CV_IS_MAT(_inputs) || (CV_MAT_TYPE(_inputs->type) != CV_32FC1 && - CV_MAT_TYPE(_inputs->type) != CV_64FC1) || _inputs->cols != layer_sizes->data.i[0] ) - CV_ERROR( CV_StsBadArg, - "input training data should be a floating-point matrix with" - "the number of rows equal to the number of training samples and " - "the number of columns equal to the size of 0-th (input) layer" ); - - if( !CV_IS_MAT(_outputs) || (CV_MAT_TYPE(_outputs->type) != CV_32FC1 && - CV_MAT_TYPE(_outputs->type) != CV_64FC1) || - _outputs->cols != layer_sizes->data.i[layer_sizes->cols - 1] ) - CV_ERROR( CV_StsBadArg, - "output training data should be a floating-point matrix with" - "the number of rows equal to the number of training samples and " - "the number of columns equal to the size of last (output) layer" ); - - if( _inputs->rows != _outputs->rows ) - CV_ERROR( CV_StsUnmatchedSizes, "The numbers of input and output samples do not match" ); - - if( _sample_idx ) - { - CV_CALL( sample_idx = cvPreprocessIndexArray( _sample_idx, _inputs->rows )); - sidx = sample_idx->data.i; - count = sample_idx->cols + sample_idx->rows - 1; - } - else - count = _inputs->rows; - - if( _sample_weights ) - { - if( !CV_IS_MAT(_sample_weights) ) - CV_ERROR( CV_StsBadArg, "sample_weights (if passed) must be a valid matrix" ); - - sw_type = CV_MAT_TYPE(_sample_weights->type); - sw_count = _sample_weights->cols + _sample_weights->rows - 1; - - if( (sw_type != CV_32FC1 && sw_type != CV_64FC1) || - (_sample_weights->cols != 1 && _sample_weights->rows != 1) || - (sw_count != count && sw_count != _inputs->rows) ) - CV_ERROR( CV_StsBadArg, - "sample_weights must be 1d floating-point vector containing weights " - "of all or selected training samples" ); - - sw_step = CV_IS_MAT_CONT(_sample_weights->type) ? 1 : - _sample_weights->step/CV_ELEM_SIZE(sw_type); - - CV_CALL( sw = (double*)cvAlloc( count*sizeof(sw[0]) )); - } - - CV_CALL( ivecs.data.ptr = (uchar**)cvAlloc( count*sizeof(ivecs.data.ptr[0]) )); - CV_CALL( ovecs.data.ptr = (uchar**)cvAlloc( count*sizeof(ovecs.data.ptr[0]) )); - - ivecs.type = CV_MAT_TYPE(_inputs->type); - ovecs.type = CV_MAT_TYPE(_outputs->type); - ivecs.count = ovecs.count = count; - - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - ivecs.data.ptr[i] = _inputs->data.ptr + idx*_inputs->step; - ovecs.data.ptr[i] = _outputs->data.ptr + idx*_outputs->step; - if( sw ) - { - int si = sw_count == count ? i : idx; - double w = sw_type == CV_32FC1 ? - (double)_sample_weights->data.fl[si*sw_step] : - _sample_weights->data.db[si*sw_step]; - sw[i] = w; - if( w < 0 ) - CV_ERROR( CV_StsOutOfRange, "some of sample weights are negative" ); - sw_sum += w; - } - } - - // normalize weights - if( sw ) - { - sw_sum = sw_sum > DBL_EPSILON ? 1./sw_sum : 0; + Mat _idx_m(1, count, CV_32S); + int* _idx = _idx_m.ptr(); for( i = 0; i < count; i++ ) - sw[i] *= sw_sum; - } + _idx[i] = i; - calc_input_scale( &ivecs, _flags ); - CV_CALL( calc_output_scale( &ovecs, _flags )); + AutoBuffer _buf(max_lsize*2); + double* buf[] = { _buf, (double*)_buf + max_lsize }; - ok = true; + const double* sw = _sw.empty() ? 0 : _sw.ptr(); - __END__; - - if( !ok ) - { - cvFree( &ivecs.data.ptr ); - cvFree( &ovecs.data.ptr ); - cvFree( &sw ); - } - - cvReleaseMat( &sample_idx ); - *_ivecs = ivecs; - *_ovecs = ovecs; - *_sw = sw; - - return ok; -} - - -int CvANN_MLP::train( const CvMat* _inputs, const CvMat* _outputs, - const CvMat* _sample_weights, const CvMat* _sample_idx, - CvANN_MLP_TrainParams _params, int flags ) -{ - const int MAX_ITER = 1000; - const double DEFAULT_EPSILON = FLT_EPSILON; - - double* sw = 0; - CvVectors x0, u; - int iter = -1; - - x0.data.ptr = u.data.ptr = 0; - - CV_FUNCNAME( "CvANN_MLP::train" ); - - __BEGIN__; - - int max_iter; - double epsilon; - - params = _params; - - // initialize training data - CV_CALL( prepare_to_train( _inputs, _outputs, _sample_weights, - _sample_idx, &x0, &u, &sw, flags )); - - // ... and link weights - if( !(flags & UPDATE_WEIGHTS) ) - init_weights(); - - max_iter = params.term_crit.type & CV_TERMCRIT_ITER ? params.term_crit.max_iter : MAX_ITER; - max_iter = MAX( max_iter, 1 ); - - epsilon = params.term_crit.type & CV_TERMCRIT_EPS ? params.term_crit.epsilon : DEFAULT_EPSILON; - epsilon = MAX(epsilon, DBL_EPSILON); - - params.term_crit.type = CV_TERMCRIT_ITER + CV_TERMCRIT_EPS; - params.term_crit.max_iter = max_iter; - params.term_crit.epsilon = epsilon; - - if( params.train_method == CvANN_MLP_TrainParams::BACKPROP ) - { - CV_CALL( iter = train_backprop( x0, u, sw )); - } - else - { - CV_CALL( iter = train_rprop( x0, u, sw )); - } - - __END__; - - cvFree( &x0.data.ptr ); - cvFree( &u.data.ptr ); - cvFree( &sw ); - - return iter; -} - - -int CvANN_MLP::train_backprop( CvVectors x0, CvVectors u, const double* sw ) -{ - CvMat* dw = 0; - CvMat* buf = 0; - double **x = 0, **df = 0; - CvMat* _idx = 0; - int iter = -1, count = x0.count; - - CV_FUNCNAME( "CvANN_MLP::train_backprop" ); - - __BEGIN__; - - int i, j, k, ivcount, ovcount, l_count, total = 0, max_iter; - double *buf_ptr; - double prev_E = DBL_MAX*0.5, E = 0, epsilon; - - max_iter = params.term_crit.max_iter*count; - epsilon = params.term_crit.epsilon*count; - - l_count = layer_sizes->cols; - ivcount = layer_sizes->data.i[0]; - ovcount = layer_sizes->data.i[l_count-1]; - - // allocate buffers - for( i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i] + 1; - - CV_CALL( dw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvZero( dw ); - CV_CALL( buf = cvCreateMat( 1, (total + max_count)*2, CV_64F )); - CV_CALL( _idx = cvCreateMat( 1, count, CV_32SC1 )); - for( i = 0; i < count; i++ ) - _idx->data.i[i] = i; - - CV_CALL( x = (double**)cvAlloc( total*2*sizeof(x[0]) )); - df = x + total; - buf_ptr = buf->data.db; - - for( j = 0; j < l_count; j++ ) - { - x[j] = buf_ptr; - df[j] = x[j] + layer_sizes->data.i[j]; - buf_ptr += (df[j] - x[j])*2; - } - - // run back-propagation loop - /* - y_i = w_i*x_{i-1} - x_i = f(y_i) - E = 1/2*||u - x_N||^2 - grad_N = (x_N - u)*f'(y_i) - dw_i(t) = momentum*dw_i(t-1) + dw_scale*x_{i-1}*grad_i - w_i(t+1) = w_i(t) + dw_i(t) - grad_{i-1} = w_i^t*grad_i - */ - for( iter = 0; iter < max_iter; iter++ ) - { - int idx = iter % count; - double* w = weights[0]; - double sweight = sw ? count*sw[idx] : 1.; - CvMat _w, _dw, hdr1, hdr2, ghdr1, ghdr2, _df; - CvMat *x1 = &hdr1, *x2 = &hdr2, *grad1 = &ghdr1, *grad2 = &ghdr2, *temp; - - if( idx == 0 ) + // run back-propagation loop + /* + y_i = w_i*x_{i-1} + x_i = f(y_i) + E = 1/2*||u - x_N||^2 + grad_N = (x_N - u)*f'(y_i) + dw_i(t) = momentum*dw_i(t-1) + dw_scale*x_{i-1}*grad_i + w_i(t+1) = w_i(t) + dw_i(t) + grad_{i-1} = w_i^t*grad_i + */ + for( iter = 0; iter < max_iter; iter++ ) { - //printf("%d. E = %g\n", iter/count, E); + int idx = iter % count; + double sweight = sw ? count*sw[idx] : 1.; + + if( idx == 0 ) + { + //printf("%d. E = %g\n", iter/count, E); + if( fabs(prev_E - E) < epsilon ) + break; + prev_E = E; + E = 0; + + // shuffle indices + for( i = 0; i < count; i++ ) + { + j = rng.uniform(0, count); + k = rng.uniform(0, count); + std::swap(_idx[j], _idx[k]); + } + } + + idx = _idx[idx]; + + const uchar* x0data_p = inputs.ptr(idx); + const float* x0data_f = (const float*)x0data_p; + const double* x0data_d = (const double*)x0data_p; + + double* w = weights[0].ptr(); + for( j = 0; j < ivcount; j++ ) + x[0][j] = (itype == CV_32F ? (double)x0data_f[j] : x0data_d[j])*w[j*2] + w[j*2 + 1]; + + Mat x1( 1, ivcount, CV_64F, &x[0][0] ); + + // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) + for( i = 1; i < l_count; i++ ) + { + int n = layer_sizes[i]; + Mat x2(1, n, CV_64F, &x[i][0] ); + Mat _w = weights[i].rowRange(0, x1.cols); + gemm(x1, _w, 1, noArray(), 0, x2); + Mat _df(1, n, CV_64F, &df[i][0] ); + calc_activ_func_deriv( x2, _df, weights[i] ); + x1 = x2; + } + + Mat grad1( 1, ovcount, CV_64F, buf[l_count&1] ); + w = weights[l_count+1].ptr(); + + // calculate error + const uchar* udata_p = outputs.ptr(idx); + const float* udata_f = (const float*)udata_p; + const double* udata_d = (const double*)udata_p; + + double* gdata = grad1.ptr(); + for( k = 0; k < ovcount; k++ ) + { + double t = (otype == CV_32F ? (double)udata_f[k] : udata_d[k])*w[k*2] + w[k*2+1] - x[l_count-1][k]; + gdata[k] = t*sweight; + E += t*t; + } + E *= sweight; + + // backward pass, update weights + for( i = l_count-1; i > 0; i-- ) + { + int n1 = layer_sizes[i-1], n2 = layer_sizes[i]; + Mat _df(1, n2, CV_64F, &df[i][0]); + multiply( grad1, _df, grad1 ); + Mat _x(n1+1, 1, CV_64F, &x[i-1][0]); + x[i-1][n1] = 1.; + gemm( _x, grad1, params.bpDWScale, dw[i], params.bpMomentScale, dw[i] ); + add( weights[i], dw[i], weights[i] ); + if( i > 1 ) + { + Mat grad2(1, n1, CV_64F, buf[i&1]); + Mat _w = weights[i].rowRange(0, n1); + gemm( grad1, _w, 1, noArray(), 0, grad2, GEMM_2_T ); + grad1 = grad2; + } + } + } + + iter /= count; + return iter; + } + + struct RPropLoop : public ParallelLoopBody + { + RPropLoop(ANN_MLPImpl* _ann, + const Mat& _inputs, const Mat& _outputs, const Mat& _sw, + int _dcount0, vector& _dEdw, double* _E) + { + ann = _ann; + inputs = _inputs; + outputs = _outputs; + sw = _sw.ptr(); + dcount0 = _dcount0; + dEdw = &_dEdw; + pE = _E; + } + + ANN_MLPImpl* ann; + vector* dEdw; + Mat inputs, outputs; + const double* sw; + int dcount0; + double* pE; + + void operator()( const Range& range ) const + { + double inv_count = 1./inputs.rows; + int ivcount = ann->layer_sizes.front(); + int ovcount = ann->layer_sizes.back(); + int itype = inputs.type(), otype = outputs.type(); + int count = inputs.rows; + int i, j, k, l_count = ann->layer_count(); + vector > x(l_count); + vector > df(l_count); + vector _buf(ann->max_lsize*dcount0*2); + double* buf[] = { &_buf[0], &_buf[ann->max_lsize*dcount0] }; + double E = 0; + + for( i = 0; i < l_count; i++ ) + { + x[i].resize(ann->layer_sizes[i]*dcount0); + df[i].resize(ann->layer_sizes[i]*dcount0); + } + + for( int si = range.start; si < range.end; si++ ) + { + int i0 = si*dcount0, i1 = std::min((si + 1)*dcount0, count); + int dcount = i1 - i0; + const double* w = ann->weights[0].ptr(); + + // grab and preprocess input data + for( i = 0; i < dcount; i++ ) + { + const uchar* x0data_p = inputs.ptr(i0 + i); + const float* x0data_f = (const float*)x0data_p; + const double* x0data_d = (const double*)x0data_p; + + double* xdata = &x[0][i*ivcount]; + for( j = 0; j < ivcount; j++ ) + xdata[j] = (itype == CV_32F ? (double)x0data_f[j] : x0data_d[j])*w[j*2] + w[j*2+1]; + } + Mat x1(dcount, ivcount, CV_64F, &x[0][0]); + + // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) + for( i = 1; i < l_count; i++ ) + { + Mat x2( dcount, ann->layer_sizes[i], CV_64F, &x[i][0] ); + Mat _w = ann->weights[i].rowRange(0, x1.cols); + gemm( x1, _w, 1, noArray(), 0, x2 ); + Mat _df( x2.size(), CV_64F, &df[i][0] ); + ann->calc_activ_func_deriv( x2, _df, ann->weights[i] ); + x1 = x2; + } + + Mat grad1(dcount, ovcount, CV_64F, buf[l_count & 1]); + + w = ann->weights[l_count+1].ptr(); + + // calculate error + for( i = 0; i < dcount; i++ ) + { + const uchar* udata_p = outputs.ptr(i0+i); + const float* udata_f = (const float*)udata_p; + const double* udata_d = (const double*)udata_p; + + const double* xdata = &x[l_count-1][i*ovcount]; + double* gdata = grad1.ptr(i); + double sweight = sw ? sw[si+i] : inv_count, E1 = 0; + + for( j = 0; j < ovcount; j++ ) + { + double t = (otype == CV_32F ? (double)udata_f[j] : udata_d[j])*w[j*2] + w[j*2+1] - xdata[j]; + gdata[j] = t*sweight; + E1 += t*t; + } + E += sweight*E1; + } + + for( i = l_count-1; i > 0; i-- ) + { + int n1 = ann->layer_sizes[i-1], n2 = ann->layer_sizes[i]; + Mat _df(dcount, n2, CV_64F, &df[i][0]); + multiply(grad1, _df, grad1); + + { + AutoLock lock(ann->mtx); + Mat _dEdw = dEdw->at(i).rowRange(0, n1); + x1 = Mat(dcount, n1, CV_64F, &x[i-1][0]); + gemm(x1, grad1, 1, _dEdw, 1, _dEdw, GEMM_1_T); + + // update bias part of dEdw + double* dst = dEdw->at(i).ptr(n1); + for( k = 0; k < dcount; k++ ) + { + const double* src = grad1.ptr(k); + for( j = 0; j < n2; j++ ) + dst[j] += src[j]; + } + } + + Mat grad2( dcount, n1, CV_64F, buf[i&1] ); + if( i > 1 ) + { + Mat _w = ann->weights[i].rowRange(0, n1); + gemm(grad1, _w, 1, noArray(), 0, grad2, GEMM_2_T); + } + grad1 = grad2; + } + } + { + AutoLock lock(ann->mtx); + *pE += E; + } + } + }; + + int train_rprop( const Mat& inputs, const Mat& outputs, const Mat& _sw, TermCriteria termCrit ) + { + const int max_buf_size = 1 << 16; + int i, iter = -1, count = inputs.rows; + + double prev_E = DBL_MAX*0.5; + + int max_iter = termCrit.maxCount; + double epsilon = termCrit.epsilon; + double dw_plus = params.rpDWPlus; + double dw_minus = params.rpDWMinus; + double dw_min = params.rpDWMin; + double dw_max = params.rpDWMax; + + int l_count = layer_count(); + + // allocate buffers + vector dw(l_count), dEdw(l_count), prev_dEdw_sign(l_count); + + int total = 0; + for( i = 0; i < l_count; i++ ) + { + total += layer_sizes[i]; + dw[i].create(weights[i].size(), CV_64F); + dw[i].setTo(Scalar::all(params.rpDW0)); + prev_dEdw_sign[i] = Mat::zeros(weights[i].size(), CV_8S); + dEdw[i] = Mat::zeros(weights[i].size(), CV_64F); + } + + int dcount0 = max_buf_size/(2*total); + dcount0 = std::max( dcount0, 1 ); + dcount0 = std::min( dcount0, count ); + int chunk_count = (count + dcount0 - 1)/dcount0; + + // run rprop loop + /* + y_i(t) = w_i(t)*x_{i-1}(t) + x_i(t) = f(y_i(t)) + E = sum_over_all_samples(1/2*||u - x_N||^2) + grad_N = (x_N - u)*f'(y_i) + + std::min(dw_i{jk}(t)*dw_plus, dw_max), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) > 0 + dw_i{jk}(t) = std::max(dw_i{jk}(t)*dw_minus, dw_min), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0 + dw_i{jk}(t-1) else + + if (dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0) + dE/dw_i{jk}(t)<-0 + else + w_i{jk}(t+1) = w_i{jk}(t) + dw_i{jk}(t) + grad_{i-1}(t) = w_i^t(t)*grad_i(t) + */ + for( iter = 0; iter < max_iter; iter++ ) + { + double E = 0; + + for( i = 0; i < l_count; i++ ) + dEdw[i].setTo(Scalar::all(0)); + + // first, iterate through all the samples and compute dEdw + RPropLoop invoker(this, inputs, outputs, _sw, dcount0, dEdw, &E); + parallel_for_(Range(0, chunk_count), invoker); + //invoker(Range(0, chunk_count)); + + // now update weights + for( i = 1; i < l_count; i++ ) + { + int n1 = layer_sizes[i-1], n2 = layer_sizes[i]; + for( int k = 0; k <= n1; k++ ) + { + CV_Assert(weights[i].size() == Size(n2, n1+1)); + double* wk = weights[i].ptr(k); + double* dwk = dw[i].ptr(k); + double* dEdwk = dEdw[i].ptr(k); + schar* prevEk = prev_dEdw_sign[i].ptr(k); + + for( int j = 0; j < n2; j++ ) + { + double Eval = dEdwk[j]; + double dval = dwk[j]; + double wval = wk[j]; + int s = CV_SIGN(Eval); + int ss = prevEk[j]*s; + if( ss > 0 ) + { + dval *= dw_plus; + dval = std::min( dval, dw_max ); + dwk[j] = dval; + wk[j] = wval + dval*s; + } + else if( ss < 0 ) + { + dval *= dw_minus; + dval = std::max( dval, dw_min ); + prevEk[j] = 0; + dwk[j] = dval; + wk[j] = wval + dval*s; + } + else + { + prevEk[j] = (schar)s; + wk[j] = wval + dval*s; + } + dEdwk[j] = 0.; + } + } + } + + //printf("%d. E = %g\n", iter, E); if( fabs(prev_E - E) < epsilon ) break; prev_E = E; - E = 0; - - // shuffle indices - for( i = 0; i < count; i++ ) - { - int tt; - j = (*rng)(count); - k = (*rng)(count); - CV_SWAP( _idx->data.i[j], _idx->data.i[k], tt ); - } } - idx = _idx->data.i[idx]; + return iter; + } - if( x0.type == CV_32F ) + void write_params( FileStorage& fs ) const + { + const char* activ_func_name = activ_func == IDENTITY ? "IDENTITY" : + activ_func == SIGMOID_SYM ? "SIGMOID_SYM" : + activ_func == GAUSSIAN ? "GAUSSIAN" : 0; + + if( activ_func_name ) + fs << "activation_function" << activ_func_name; + else + fs << "activation_function_id" << activ_func; + + if( activ_func != IDENTITY ) { - const float* x0data = x0.data.fl[idx]; - for( j = 0; j < ivcount; j++ ) - x[0][j] = x0data[j]*w[j*2] + w[j*2 + 1]; + fs << "f_param1" << f_param1; + fs << "f_param2" << f_param2; + } + + fs << "min_val" << min_val << "max_val" << max_val << "min_val1" << min_val1 << "max_val1" << max_val1; + + fs << "training_params" << "{"; + if( params.trainMethod == Params::BACKPROP ) + { + fs << "train_method" << "BACKPROP"; + fs << "dw_scale" << params.bpDWScale; + fs << "moment_scale" << params.bpMomentScale; + } + else if( params.trainMethod == Params::RPROP ) + { + fs << "train_method" << "RPROP"; + fs << "dw0" << params.rpDW0; + fs << "dw_plus" << params.rpDWPlus; + fs << "dw_minus" << params.rpDWMinus; + fs << "dw_min" << params.rpDWMin; + fs << "dw_max" << params.rpDWMax; } else - { - const double* x0data = x0.data.db[idx]; - for( j = 0; j < ivcount; j++ ) - x[0][j] = x0data[j]*w[j*2] + w[j*2 + 1]; - } + CV_Error(CV_StsError, "Unknown training method"); - cvInitMatHeader( x1, 1, ivcount, CV_64F, x[0] ); + fs << "term_criteria" << "{"; + if( params.termCrit.type & TermCriteria::EPS ) + fs << "epsilon" << params.termCrit.epsilon; + if( params.termCrit.type & TermCriteria::COUNT ) + fs << "iterations" << params.termCrit.maxCount; + fs << "}" << "}"; + } - // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) + void write( FileStorage& fs ) const + { + if( layer_sizes.empty() ) + return; + int i, l_count = layer_count(); + + fs << "layer_sizes" << layer_sizes; + + write_params( fs ); + + size_t esz = weights[0].elemSize(); + + fs << "input_scale" << "["; + fs.writeRaw("d", weights[0].data, weights[0].total()*esz); + + fs << "]" << "output_scale" << "["; + fs.writeRaw("d", weights[l_count].data, weights[l_count].total()*esz); + + fs << "]" << "inv_output_scale" << "["; + fs.writeRaw("d", weights[l_count+1].data, weights[l_count+1].total()*esz); + + fs << "]" << "weights" << "["; for( i = 1; i < l_count; i++ ) { - cvInitMatHeader( x2, 1, layer_sizes->data.i[i], CV_64F, x[i] ); - cvInitMatHeader( &_w, x1->cols, x2->cols, CV_64F, weights[i] ); - cvGEMM( x1, &_w, 1, 0, 0, x2 ); - _df = *x2; - _df.data.db = df[i]; - calc_activ_func_deriv( x2, &_df, _w.data.db + _w.rows*_w.cols ); - CV_SWAP( x1, x2, temp ); + fs << "["; + fs.writeRaw("d", weights[i].data, weights[i].total()*esz); + fs << "]"; } + fs << "]"; + } - cvInitMatHeader( grad1, 1, ovcount, CV_64F, buf_ptr ); - *grad2 = *grad1; - grad2->data.db = buf_ptr + max_count; - - w = weights[l_count+1]; - - // calculate error - if( u.type == CV_32F ) + void read_params( const FileNode& fn ) + { + String activ_func_name = (String)fn["activation_function"]; + if( !activ_func_name.empty() ) { - const float* udata = u.data.fl[idx]; - for( k = 0; k < ovcount; k++ ) - { - double t = udata[k]*w[k*2] + w[k*2+1] - x[l_count-1][k]; - grad1->data.db[k] = t*sweight; - E += t*t; - } + activ_func = activ_func_name == "SIGMOID_SYM" ? SIGMOID_SYM : + activ_func_name == "IDENTITY" ? IDENTITY : + activ_func_name == "GAUSSIAN" ? GAUSSIAN : -1; + CV_Assert( activ_func >= 0 ); } else + activ_func = (int)fn["activation_function_id"]; + + f_param1 = (double)fn["f_param1"]; + f_param2 = (double)fn["f_param2"]; + + set_activ_func( activ_func, f_param1, f_param2 ); + + min_val = (double)fn["min_val"]; + max_val = (double)fn["max_val"]; + min_val1 = (double)fn["min_val1"]; + max_val1 = (double)fn["max_val1"]; + + FileNode tpn = fn["training_params"]; + params = Params(); + + if( !tpn.empty() ) { - const double* udata = u.data.db[idx]; - for( k = 0; k < ovcount; k++ ) + String tmethod_name = (String)tpn["train_method"]; + + if( tmethod_name == "BACKPROP" ) { - double t = udata[k]*w[k*2] + w[k*2+1] - x[l_count-1][k]; - grad1->data.db[k] = t*sweight; - E += t*t; + params.trainMethod = Params::BACKPROP; + params.bpDWScale = (double)tpn["dw_scale"]; + params.bpMomentScale = (double)tpn["moment_scale"]; } - } - E *= sweight; - - // backward pass, update weights - for( i = l_count-1; i > 0; i-- ) - { - int n1 = layer_sizes->data.i[i-1], n2 = layer_sizes->data.i[i]; - cvInitMatHeader( &_df, 1, n2, CV_64F, df[i] ); - cvMul( grad1, &_df, grad1 ); - cvInitMatHeader( &_w, n1+1, n2, CV_64F, weights[i] ); - cvInitMatHeader( &_dw, n1+1, n2, CV_64F, dw->data.db + (weights[i] - weights[0]) ); - cvInitMatHeader( x1, n1+1, 1, CV_64F, x[i-1] ); - x[i-1][n1] = 1.; - cvGEMM( x1, grad1, params.bp_dw_scale, &_dw, params.bp_moment_scale, &_dw ); - cvAdd( &_w, &_dw, &_w ); - if( i > 1 ) + else if( tmethod_name == "RPROP" ) { - grad2->cols = n1; - _w.rows = n1; - cvGEMM( grad1, &_w, 1, 0, 0, grad2, CV_GEMM_B_T ); + params.trainMethod = Params::RPROP; + params.rpDW0 = (double)tpn["dw0"]; + params.rpDWPlus = (double)tpn["dw_plus"]; + params.rpDWMinus = (double)tpn["dw_minus"]; + params.rpDWMin = (double)tpn["dw_min"]; + params.rpDWMax = (double)tpn["dw_max"]; } - CV_SWAP( grad1, grad2, temp ); - } - } + else + CV_Error(CV_StsParseError, "Unknown training method (should be BACKPROP or RPROP)"); - iter /= count; - - __END__; - - cvReleaseMat( &dw ); - cvReleaseMat( &buf ); - cvReleaseMat( &_idx ); - cvFree( &x ); - - return iter; -} - -struct rprop_loop : cv::ParallelLoopBody { - rprop_loop(const CvANN_MLP* _point, double**& _weights, int& _count, int& _ivcount, CvVectors* _x0, - int& _l_count, CvMat*& _layer_sizes, int& _ovcount, int& _max_count, - CvVectors* _u, const double*& _sw, double& _inv_count, CvMat*& _dEdw, int& _dcount0, double* _E, int _buf_sz) - { - point = _point; - weights = _weights; - count = _count; - ivcount = _ivcount; - x0 = _x0; - l_count = _l_count; - layer_sizes = _layer_sizes; - ovcount = _ovcount; - max_count = _max_count; - u = _u; - sw = _sw; - inv_count = _inv_count; - dEdw = _dEdw; - dcount0 = _dcount0; - E = _E; - buf_sz = _buf_sz; - } - - const CvANN_MLP* point; - double** weights; - int count; - int ivcount; - CvVectors* x0; - int l_count; - CvMat* layer_sizes; - int ovcount; - int max_count; - CvVectors* u; - const double* sw; - double inv_count; - CvMat* dEdw; - int dcount0; - double* E; - int buf_sz; - - - void operator()( const cv::Range& range ) const - { - double* buf_ptr; - double** x = 0; - double **df = 0; - int total = 0; - - for(int i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i]; - CvMat* buf; - buf = cvCreateMat( 1, buf_sz, CV_64F ); - x = (double**)cvAlloc( total*2*sizeof(x[0]) ); - df = x + total; - buf_ptr = buf->data.db; - for(int i = 0; i < l_count; i++ ) - { - x[i] = buf_ptr; - df[i] = x[i] + layer_sizes->data.i[i]*dcount0; - buf_ptr += (df[i] - x[i])*2; - } - - for(int si = range.start; si < range.end; si++ ) - { - if (si % dcount0 != 0) continue; - int n1, n2, k; - double* w; - CvMat _w, _dEdw, hdr1, hdr2, ghdr1, ghdr2, _df; - CvMat *x1, *x2, *grad1, *grad2, *temp; - int dcount = 0; - - dcount = MIN(count - si , dcount0 ); - w = weights[0]; - grad1 = &ghdr1; grad2 = &ghdr2; - x1 = &hdr1; x2 = &hdr2; - - // grab and preprocess input data - if( x0->type == CV_32F ) - { - for(int i = 0; i < dcount; i++ ) + FileNode tcn = tpn["term_criteria"]; + if( !tcn.empty() ) { - const float* x0data = x0->data.fl[si+i]; - double* xdata = x[0]+i*ivcount; - for(int j = 0; j < ivcount; j++ ) - xdata[j] = x0data[j]*w[j*2] + w[j*2+1]; - } - } - else - for(int i = 0; i < dcount; i++ ) - { - const double* x0data = x0->data.db[si+i]; - double* xdata = x[0]+i*ivcount; - for(int j = 0; j < ivcount; j++ ) - xdata[j] = x0data[j]*w[j*2] + w[j*2+1]; - } - cvInitMatHeader( x1, dcount, ivcount, CV_64F, x[0] ); - - // forward pass, compute y[i]=w*x[i-1], x[i]=f(y[i]), df[i]=f'(y[i]) - for(int i = 1; i < l_count; i++ ) - { - cvInitMatHeader( x2, dcount, layer_sizes->data.i[i], CV_64F, x[i] ); - cvInitMatHeader( &_w, x1->cols, x2->cols, CV_64F, weights[i] ); - cvGEMM( x1, &_w, 1, 0, 0, x2 ); - _df = *x2; - _df.data.db = df[i]; - point->calc_activ_func_deriv( x2, &_df, _w.data.db + _w.rows*_w.cols ); - CV_SWAP( x1, x2, temp ); - } - cvInitMatHeader( grad1, dcount, ovcount, CV_64F, buf_ptr ); - - w = weights[l_count+1]; - grad2->data.db = buf_ptr + max_count*dcount; - - // calculate error - if( u->type == CV_32F ) - for(int i = 0; i < dcount; i++ ) - { - const float* udata = u->data.fl[si+i]; - const double* xdata = x[l_count-1] + i*ovcount; - double* gdata = grad1->data.db + i*ovcount; - double sweight = sw ? sw[si+i] : inv_count, E1 = 0; - - for(int j = 0; j < ovcount; j++ ) + FileNode tcn_e = tcn["epsilon"]; + FileNode tcn_i = tcn["iterations"]; + params.termCrit.type = 0; + if( !tcn_e.empty() ) { - double t = udata[j]*w[j*2] + w[j*2+1] - xdata[j]; - gdata[j] = t*sweight; - E1 += t*t; + params.termCrit.type |= TermCriteria::EPS; + params.termCrit.epsilon = (double)tcn_e; } - *E += sweight*E1; - } - else - for(int i = 0; i < dcount; i++ ) - { - const double* udata = u->data.db[si+i]; - const double* xdata = x[l_count-1] + i*ovcount; - double* gdata = grad1->data.db + i*ovcount; - double sweight = sw ? sw[si+i] : inv_count, E1 = 0; - - for(int j = 0; j < ovcount; j++ ) + if( !tcn_i.empty() ) { - double t = udata[j]*w[j*2] + w[j*2+1] - xdata[j]; - gdata[j] = t*sweight; - E1 += t*t; + params.termCrit.type |= TermCriteria::COUNT; + params.termCrit.maxCount = (int)tcn_i; } - *E += sweight*E1; } - - // backward pass, update dEdw - static cv::Mutex mutex; - - for(int i = l_count-1; i > 0; i-- ) - { - n1 = layer_sizes->data.i[i-1]; n2 = layer_sizes->data.i[i]; - cvInitMatHeader( &_df, dcount, n2, CV_64F, df[i] ); - cvMul( grad1, &_df, grad1 ); - - { - cv::AutoLock lock(mutex); - cvInitMatHeader( &_dEdw, n1, n2, CV_64F, dEdw->data.db+(weights[i]-weights[0]) ); - cvInitMatHeader( x1, dcount, n1, CV_64F, x[i-1] ); - cvGEMM( x1, grad1, 1, &_dEdw, 1, &_dEdw, CV_GEMM_A_T ); - - // update bias part of dEdw - for( k = 0; k < dcount; k++ ) - { - double* dst = _dEdw.data.db + n1*n2; - const double* src = grad1->data.db + k*n2; - for(int j = 0; j < n2; j++ ) - dst[j] += src[j]; - } - - if (i > 1) - cvInitMatHeader( &_w, n1, n2, CV_64F, weights[i] ); - } - - cvInitMatHeader( grad2, dcount, n1, CV_64F, grad2->data.db ); - if( i > 1 ) - cvGEMM( grad1, &_w, 1, 0, 0, grad2, CV_GEMM_B_T ); - CV_SWAP( grad1, grad2, temp ); } } - cvFree(&x); - cvReleaseMat( &buf ); -} + void read( const FileNode& fn ) + { + clear(); + + vector _layer_sizes; + fn["layer_sizes"] >> _layer_sizes; + create( _layer_sizes ); + + int i, l_count = layer_count(); + read_params(fn); + + size_t esz = weights[0].elemSize(); + + FileNode w = fn["input_scale"]; + w.readRaw("d", weights[0].data, weights[0].total()*esz); + + w = fn["output_scale"]; + w.readRaw("d", weights[l_count].data, weights[l_count].total()*esz); + + w = fn["inv_output_scale"]; + w.readRaw("d", weights[l_count+1].data, weights[l_count+1].total()*esz); + + FileNodeIterator w_it = fn["weights"].begin(); + + for( i = 1; i < l_count; i++, ++w_it ) + (*w_it).readRaw("d", weights[i].data, weights[i].total()*esz); + trained = true; + } + + Mat getLayerSizes() const + { + return Mat_(layer_sizes, true); + } + + Mat getWeights(int layerIdx) const + { + CV_Assert( 0 <= layerIdx && layerIdx < (int)weights.size() ); + return weights[layerIdx]; + } + + bool isTrained() const + { + return trained; + } + + bool isClassifier() const + { + return false; + } + + int getVarCount() const + { + return layer_sizes.empty() ? 0 : layer_sizes[0]; + } + + String getDefaultModelName() const + { + return "opencv_ml_ann_mlp"; + } + + vector layer_sizes; + vector weights; + double f_param1, f_param2; + double min_val, max_val, min_val1, max_val1; + int activ_func; + int max_lsize, max_buf_sz; + Params params; + RNG rng; + Mutex mtx; + bool trained; }; -int CvANN_MLP::train_rprop( CvVectors x0, CvVectors u, const double* sw ) +Ptr ANN_MLP::create(const ANN_MLP::Params& params) { - const int max_buf_size = 1 << 16; - CvMat* dw = 0; - CvMat* dEdw = 0; - CvMat* prev_dEdw_sign = 0; - CvMat* buf = 0; - double **x = 0, **df = 0; - int iter = -1, count = x0.count; - - CV_FUNCNAME( "CvANN_MLP::train" ); - - __BEGIN__; - - int i, ivcount, ovcount, l_count, total = 0, max_iter, buf_sz, dcount0; - double *buf_ptr; - double prev_E = DBL_MAX*0.5, epsilon; - double dw_plus, dw_minus, dw_min, dw_max; - double inv_count; - - max_iter = params.term_crit.max_iter; - epsilon = params.term_crit.epsilon; - dw_plus = params.rp_dw_plus; - dw_minus = params.rp_dw_minus; - dw_min = params.rp_dw_min; - dw_max = params.rp_dw_max; - - l_count = layer_sizes->cols; - ivcount = layer_sizes->data.i[0]; - ovcount = layer_sizes->data.i[l_count-1]; - - // allocate buffers - for( i = 0; i < l_count; i++ ) - total += layer_sizes->data.i[i]; - - CV_CALL( dw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvSet( dw, cvScalarAll(params.rp_dw0) ); - CV_CALL( dEdw = cvCreateMat( wbuf->rows, wbuf->cols, wbuf->type )); - cvZero( dEdw ); - CV_CALL( prev_dEdw_sign = cvCreateMat( wbuf->rows, wbuf->cols, CV_8SC1 )); - cvZero( prev_dEdw_sign ); - - inv_count = 1./count; - dcount0 = max_buf_size/(2*total); - dcount0 = MAX( dcount0, 1 ); - dcount0 = MIN( dcount0, count ); - buf_sz = dcount0*(total + max_count)*2; - - CV_CALL( buf = cvCreateMat( 1, buf_sz, CV_64F )); - - CV_CALL( x = (double**)cvAlloc( total*2*sizeof(x[0]) )); - df = x + total; - buf_ptr = buf->data.db; - - for( i = 0; i < l_count; i++ ) - { - x[i] = buf_ptr; - df[i] = x[i] + layer_sizes->data.i[i]*dcount0; - buf_ptr += (df[i] - x[i])*2; - } - - // run rprop loop - /* - y_i(t) = w_i(t)*x_{i-1}(t) - x_i(t) = f(y_i(t)) - E = sum_over_all_samples(1/2*||u - x_N||^2) - grad_N = (x_N - u)*f'(y_i) - - MIN(dw_i{jk}(t)*dw_plus, dw_max), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) > 0 - dw_i{jk}(t) = MAX(dw_i{jk}(t)*dw_minus, dw_min), if dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0 - dw_i{jk}(t-1) else - - if (dE/dw_i{jk}(t)*dE/dw_i{jk}(t-1) < 0) - dE/dw_i{jk}(t)<-0 - else - w_i{jk}(t+1) = w_i{jk}(t) + dw_i{jk}(t) - grad_{i-1}(t) = w_i^t(t)*grad_i(t) - */ - for( iter = 0; iter < max_iter; iter++ ) - { - int n1, n2, j, k; - double E = 0; - - // first, iterate through all the samples and compute dEdw - cv::parallel_for_(cv::Range(0, count), - rprop_loop(this, weights, count, ivcount, &x0, l_count, layer_sizes, - ovcount, max_count, &u, sw, inv_count, dEdw, dcount0, &E, buf_sz) - ); - - // now update weights - for( i = 1; i < l_count; i++ ) - { - n1 = layer_sizes->data.i[i-1]; n2 = layer_sizes->data.i[i]; - for( k = 0; k <= n1; k++ ) - { - double* wk = weights[i]+k*n2; - size_t delta = wk - weights[0]; - double* dwk = dw->data.db + delta; - double* dEdwk = dEdw->data.db + delta; - char* prevEk = (char*)(prev_dEdw_sign->data.ptr + delta); - - for( j = 0; j < n2; j++ ) - { - double Eval = dEdwk[j]; - double dval = dwk[j]; - double wval = wk[j]; - int s = CV_SIGN(Eval); - int ss = prevEk[j]*s; - if( ss > 0 ) - { - dval *= dw_plus; - dval = MIN( dval, dw_max ); - dwk[j] = dval; - wk[j] = wval + dval*s; - } - else if( ss < 0 ) - { - dval *= dw_minus; - dval = MAX( dval, dw_min ); - prevEk[j] = 0; - dwk[j] = dval; - wk[j] = wval + dval*s; - } - else - { - prevEk[j] = (char)s; - wk[j] = wval + dval*s; - } - dEdwk[j] = 0.; - } - } - } - - //printf("%d. E = %g\n", iter, E); - if( fabs(prev_E - E) < epsilon ) - break; - prev_E = E; - E = 0; - } - - __END__; - - cvReleaseMat( &dw ); - cvReleaseMat( &dEdw ); - cvReleaseMat( &prev_dEdw_sign ); - cvReleaseMat( &buf ); - cvFree( &x ); - - return iter; + Ptr ann = makePtr(params); + return ann; } - -void CvANN_MLP::write_params( CvFileStorage* fs ) const -{ - //CV_FUNCNAME( "CvANN_MLP::write_params" ); - - __BEGIN__; - - const char* activ_func_name = activ_func == IDENTITY ? "IDENTITY" : - activ_func == SIGMOID_SYM ? "SIGMOID_SYM" : - activ_func == GAUSSIAN ? "GAUSSIAN" : 0; - - if( activ_func_name ) - cvWriteString( fs, "activation_function", activ_func_name ); - else - cvWriteInt( fs, "activation_function", activ_func ); - - if( activ_func != IDENTITY ) - { - cvWriteReal( fs, "f_param1", f_param1 ); - cvWriteReal( fs, "f_param2", f_param2 ); - } - - cvWriteReal( fs, "min_val", min_val ); - cvWriteReal( fs, "max_val", max_val ); - cvWriteReal( fs, "min_val1", min_val1 ); - cvWriteReal( fs, "max_val1", max_val1 ); - - cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); - if( params.train_method == CvANN_MLP_TrainParams::BACKPROP ) - { - cvWriteString( fs, "train_method", "BACKPROP" ); - cvWriteReal( fs, "dw_scale", params.bp_dw_scale ); - cvWriteReal( fs, "moment_scale", params.bp_moment_scale ); - } - else if( params.train_method == CvANN_MLP_TrainParams::RPROP ) - { - cvWriteString( fs, "train_method", "RPROP" ); - cvWriteReal( fs, "dw0", params.rp_dw0 ); - cvWriteReal( fs, "dw_plus", params.rp_dw_plus ); - cvWriteReal( fs, "dw_minus", params.rp_dw_minus ); - cvWriteReal( fs, "dw_min", params.rp_dw_min ); - cvWriteReal( fs, "dw_max", params.rp_dw_max ); - } - - cvStartWriteStruct( fs, "term_criteria", CV_NODE_MAP + CV_NODE_FLOW ); - if( params.term_crit.type & CV_TERMCRIT_EPS ) - cvWriteReal( fs, "epsilon", params.term_crit.epsilon ); - if( params.term_crit.type & CV_TERMCRIT_ITER ) - cvWriteInt( fs, "iterations", params.term_crit.max_iter ); - cvEndWriteStruct( fs ); - - cvEndWriteStruct( fs ); - - __END__; -} - - -void CvANN_MLP::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvANN_MLP::write" ); - - __BEGIN__; - - int i, l_count = layer_sizes->cols; - - if( !layer_sizes ) - CV_ERROR( CV_StsError, "The network has not been initialized" ); - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_ANN_MLP ); - - cvWrite( fs, "layer_sizes", layer_sizes ); - - write_params( fs ); - - cvStartWriteStruct( fs, "input_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[0], layer_sizes->data.i[0]*2, "d" ); - cvEndWriteStruct( fs ); - - cvStartWriteStruct( fs, "output_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[l_count], layer_sizes->data.i[l_count-1]*2, "d" ); - cvEndWriteStruct( fs ); - - cvStartWriteStruct( fs, "inv_output_scale", CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[l_count+1], layer_sizes->data.i[l_count-1]*2, "d" ); - cvEndWriteStruct( fs ); - - cvStartWriteStruct( fs, "weights", CV_NODE_SEQ ); - for( i = 1; i < l_count; i++ ) - { - cvStartWriteStruct( fs, 0, CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, weights[i], (layer_sizes->data.i[i-1]+1)*layer_sizes->data.i[i], "d" ); - cvEndWriteStruct( fs ); - } - - cvEndWriteStruct( fs ); - - __END__; -} - - -void CvANN_MLP::read_params( CvFileStorage* fs, CvFileNode* node ) -{ - //CV_FUNCNAME( "CvANN_MLP::read_params" ); - - __BEGIN__; - - const char* activ_func_name = cvReadStringByName( fs, node, "activation_function", 0 ); - CvFileNode* tparams_node; - - if( activ_func_name ) - activ_func = strcmp( activ_func_name, "SIGMOID_SYM" ) == 0 ? SIGMOID_SYM : - strcmp( activ_func_name, "IDENTITY" ) == 0 ? IDENTITY : - strcmp( activ_func_name, "GAUSSIAN" ) == 0 ? GAUSSIAN : 0; - else - activ_func = cvReadIntByName( fs, node, "activation_function" ); - - f_param1 = cvReadRealByName( fs, node, "f_param1", 0 ); - f_param2 = cvReadRealByName( fs, node, "f_param2", 0 ); - - set_activ_func( activ_func, f_param1, f_param2 ); - - min_val = cvReadRealByName( fs, node, "min_val", 0. ); - max_val = cvReadRealByName( fs, node, "max_val", 1. ); - min_val1 = cvReadRealByName( fs, node, "min_val1", 0. ); - max_val1 = cvReadRealByName( fs, node, "max_val1", 1. ); - - tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); - params = CvANN_MLP_TrainParams(); - - if( tparams_node ) - { - const char* tmethod_name = cvReadStringByName( fs, tparams_node, "train_method", "" ); - CvFileNode* tcrit_node; - - if( strcmp( tmethod_name, "BACKPROP" ) == 0 ) - { - params.train_method = CvANN_MLP_TrainParams::BACKPROP; - params.bp_dw_scale = cvReadRealByName( fs, tparams_node, "dw_scale", 0 ); - params.bp_moment_scale = cvReadRealByName( fs, tparams_node, "moment_scale", 0 ); - } - else if( strcmp( tmethod_name, "RPROP" ) == 0 ) - { - params.train_method = CvANN_MLP_TrainParams::RPROP; - params.rp_dw0 = cvReadRealByName( fs, tparams_node, "dw0", 0 ); - params.rp_dw_plus = cvReadRealByName( fs, tparams_node, "dw_plus", 0 ); - params.rp_dw_minus = cvReadRealByName( fs, tparams_node, "dw_minus", 0 ); - params.rp_dw_min = cvReadRealByName( fs, tparams_node, "dw_min", 0 ); - params.rp_dw_max = cvReadRealByName( fs, tparams_node, "dw_max", 0 ); - } - - tcrit_node = cvGetFileNodeByName( fs, tparams_node, "term_criteria" ); - if( tcrit_node ) - { - params.term_crit.epsilon = cvReadRealByName( fs, tcrit_node, "epsilon", -1 ); - params.term_crit.max_iter = cvReadIntByName( fs, tcrit_node, "iterations", -1 ); - params.term_crit.type = (params.term_crit.epsilon >= 0 ? CV_TERMCRIT_EPS : 0) + - (params.term_crit.max_iter >= 0 ? CV_TERMCRIT_ITER : 0); - } - } - - __END__; -} - - -void CvANN_MLP::read( CvFileStorage* fs, CvFileNode* node ) -{ - CvMat* _layer_sizes = 0; - - CV_FUNCNAME( "CvANN_MLP::read" ); - - __BEGIN__; - - CvFileNode* w; - CvSeqReader reader; - int i, l_count; - - _layer_sizes = (CvMat*)cvReadByName( fs, node, "layer_sizes" ); - CV_CALL( create( _layer_sizes, SIGMOID_SYM, 0, 0 )); - l_count = layer_sizes->cols; - - CV_CALL( read_params( fs, node )); - - w = cvGetFileNodeByName( fs, node, "input_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[0]*2 ) - CV_ERROR( CV_StsParseError, "input_scale tag is not found or is invalid" ); - - CV_CALL( cvReadRawData( fs, w, weights[0], "d" )); - - w = cvGetFileNodeByName( fs, node, "output_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[l_count-1]*2 ) - CV_ERROR( CV_StsParseError, "output_scale tag is not found or is invalid" ); - - CV_CALL( cvReadRawData( fs, w, weights[l_count], "d" )); - - w = cvGetFileNodeByName( fs, node, "inv_output_scale" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != layer_sizes->data.i[l_count-1]*2 ) - CV_ERROR( CV_StsParseError, "inv_output_scale tag is not found or is invalid" ); - - CV_CALL( cvReadRawData( fs, w, weights[l_count+1], "d" )); - - w = cvGetFileNodeByName( fs, node, "weights" ); - if( !w || CV_NODE_TYPE(w->tag) != CV_NODE_SEQ || - w->data.seq->total != l_count - 1 ) - CV_ERROR( CV_StsParseError, "weights tag is not found or is invalid" ); - - cvStartReadSeq( w->data.seq, &reader ); - - for( i = 1; i < l_count; i++ ) - { - w = (CvFileNode*)reader.ptr; - CV_CALL( cvReadRawData( fs, w, weights[i], "d" )); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - } - - __END__; -} - -using namespace cv; - -CvANN_MLP::CvANN_MLP( const Mat& _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) -{ - layer_sizes = wbuf = 0; - min_val = max_val = min_val1 = max_val1 = 0.; - weights = 0; - rng = &cv::theRNG(); - default_model_name = "my_nn"; - create( _layer_sizes, _activ_func, _f_param1, _f_param2 ); -} - -void CvANN_MLP::create( const Mat& _layer_sizes, int _activ_func, - double _f_param1, double _f_param2 ) -{ - CvMat cvlayer_sizes = _layer_sizes; - create( &cvlayer_sizes, _activ_func, _f_param1, _f_param2 ); -} - -int CvANN_MLP::train( const Mat& _inputs, const Mat& _outputs, - const Mat& _sample_weights, const Mat& _sample_idx, - CvANN_MLP_TrainParams _params, int flags ) -{ - CvMat inputs = _inputs, outputs = _outputs, sweights = _sample_weights, sidx = _sample_idx; - return train(&inputs, &outputs, sweights.data.ptr ? &sweights : 0, - sidx.data.ptr ? &sidx : 0, _params, flags); -} - -float CvANN_MLP::predict( const Mat& _inputs, Mat& _outputs ) const -{ - CV_Assert(layer_sizes != 0); - _outputs.create(_inputs.rows, layer_sizes->data.i[layer_sizes->cols-1], _inputs.type()); - CvMat inputs = _inputs, outputs = _outputs; - - return predict(&inputs, &outputs); -} +}} /* End of file. */ diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index a22e13a532..5e0b307338 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -40,1309 +42,255 @@ #include "precomp.hpp" +namespace cv { namespace ml { + static inline double log_ratio( double val ) { const double eps = 1e-5; - - val = MAX( val, eps ); - val = MIN( val, 1. - eps ); + val = std::max( val, eps ); + val = std::min( val, 1. - eps ); return log( val/(1. - val) ); } -CvBoostParams::CvBoostParams() +Boost::Params::Params() { - boost_type = CvBoost::REAL; - weak_count = 100; - weight_trim_rate = 0.95; - cv_folds = 0; - max_depth = 1; + boostType = Boost::REAL; + weakCount = 100; + weightTrimRate = 0.95; + CVFolds = 0; + maxDepth = 1; } -CvBoostParams::CvBoostParams( int _boost_type, int _weak_count, - double _weight_trim_rate, int _max_depth, - bool _use_surrogates, const float* _priors ) +Boost::Params::Params( int _boostType, int _weak_count, + double _weightTrimRate, int _maxDepth, + bool _use_surrogates, const Mat& _priors ) { - boost_type = _boost_type; - weak_count = _weak_count; - weight_trim_rate = _weight_trim_rate; - split_criteria = CvBoost::DEFAULT; - cv_folds = 0; - max_depth = _max_depth; - use_surrogates = _use_surrogates; + boostType = _boostType; + weakCount = _weak_count; + weightTrimRate = _weightTrimRate; + CVFolds = 0; + maxDepth = _maxDepth; + useSurrogates = _use_surrogates; priors = _priors; } - -///////////////////////////////// CvBoostTree /////////////////////////////////// - -CvBoostTree::CvBoostTree() -{ - ensemble = 0; -} - - -CvBoostTree::~CvBoostTree() -{ - clear(); -} - - -void -CvBoostTree::clear() -{ - CvDTree::clear(); - ensemble = 0; -} - - -bool -CvBoostTree::train( CvDTreeTrainData* _train_data, - const CvMat* _subsample_idx, CvBoost* _ensemble ) -{ - clear(); - ensemble = _ensemble; - data = _train_data; - data->shared = true; - return do_train( _subsample_idx ); -} - - -bool -CvBoostTree::train( const CvMat*, int, const CvMat*, const CvMat*, - const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) -{ - assert(0); - return false; -} - - -bool -CvBoostTree::train( CvDTreeTrainData*, const CvMat* ) -{ - assert(0); - return false; -} - - -void -CvBoostTree::scale( double _scale ) -{ - CvDTreeNode* node = root; - - // traverse the tree and scale all the node values - for(;;) - { - CvDTreeNode* parent; - for(;;) - { - node->value *= _scale; - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } -} - - -void -CvBoostTree::try_split_node( CvDTreeNode* node ) -{ - CvDTree::try_split_node( node ); - - if( !node->left ) - { - // if the node has not been split, - // store the responses for the corresponding training samples - double* weak_eval = ensemble->get_weak_response()->data.db; - cv::AutoBuffer inn_buf(node->sample_count); - const int* labels = data->get_cv_labels( node, (int*)inn_buf ); - int i, count = node->sample_count; - double value = node->value; - - for( i = 0; i < count; i++ ) - weak_eval[labels[i]] = value; - } -} - - -double -CvBoostTree::calc_node_dir( CvDTreeNode* node ) -{ - char* dir = (char*)data->direction->data.ptr; - const double* weights = ensemble->get_subtree_weights()->data.db; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; - - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - cv::AutoBuffer inn_buf(n); - const int* cat_labels = data->get_cat_var_data( node, vi, (int*)inn_buf ); - const int* subset = node->split->subset; - double sum = 0, sum_abs = 0; - - for( i = 0; i < n; i++ ) - { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; - } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; - } - else // split on ordered var - { - cv::AutoBuffer inn_buf(2*n*sizeof(int)+n*sizeof(float)); - float* values_buf = (float*)(uchar*)inn_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int split_point = node->split->ord.split_point; - int n1 = node->get_num_valid(vi); - - assert( 0 <= split_point && split_point < n1-1 ); - L = R = 0; - - for( i = 0; i <= split_point; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - dir[idx] = (char)-1; - L += w; - } - - for( ; i < n1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - dir[idx] = (char)1; - R += w; - } - - for( ; i < n; i++ ) - dir[sorted_indices[i]] = (char)0; - } - - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); -} - - -CvDTreeSplit* -CvBoostTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, - CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(3*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int* responses_buf = sorted_indices_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - const double* rcw0 = weights + n; - double lcw[2] = {0,0}, rcw[2]; - int i, best_i = -1; - double best_val = init_quality; - int boost_type = ensemble->get_params().boost_type; - int split_criteria = ensemble->get_params().split_criteria; - - rcw[0] = rcw0[0]; rcw[1] = rcw0[1]; - for( i = n1; i < n; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - rcw[responses[idx]] -= w; - } - - if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) - split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; - - if( split_criteria == CvBoost::GINI ) - { - double L = 0, R = rcw[0] + rcw[1]; - double lsum2 = 0, rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; - - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx], w2 = w*w; - double lv, rv; - idx = responses[idx]; - L += w; R -= w; - lv = lcw[idx]; rv = rcw[idx]; - lsum2 += 2*lv*w + w2; - rsum2 -= 2*rv*w - w2; - lcw[idx] = lv + w; rcw[idx] = rv - w; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum2*R + rsum2*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - else - { - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = weights[idx]; - idx = responses[idx]; - lcw[idx] += w; - rcw[idx] -= w; - - if( values[i] + epsilon < values[i+1] ) - { - double val = lcw[0] + rcw[1], val2 = lcw[1] + rcw[0]; - val = MAX(val, val2); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - } - - CvDTreeSplit* split = 0; - if( best_i >= 0 ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -template -class LessThanPtr +class DTreesImplForBoost : public DTreesImpl { public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; + DTreesImplForBoost() {} + virtual ~DTreesImplForBoost() {} -CvDTreeSplit* -CvBoostTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; + bool isClassifier() const { return true; } - int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); - cv::AutoBuffer inn_buf((2*mi+3)*sizeof(double) + mi*sizeof(double*)); - if( !_ext_buf) - inn_buf.allocate( base_size + 2*n*sizeof(int) ); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - int* responses_buf = cat_labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - double lcw[2]={0,0}, rcw[2]={0,0}; - - double* cjk = (double*)cv::alignPtr(base_buf,sizeof(double))+2; - const double* weights = ensemble->get_subtree_weights()->data.db; - double** dbl_ptr = (double**)(cjk + 2*mi); - int i, j, k, idx; - double L = 0, R; - double best_val = init_quality; - int best_subset = -1, subset_i; - int boost_type = ensemble->get_params().boost_type; - int split_criteria = ensemble->get_params().split_criteria; - - // init array of counters: - // c_{jk} - number of samples that have vi-th input variable = j and response = k. - for( j = -1; j < mi; j++ ) - cjk[j*2] = cjk[j*2+1] = 0; - - for( i = 0; i < n; i++ ) + void setBParams(const Boost::Params& p) { - double w = weights[i]; - j = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - k = responses[i]; - cjk[j*2 + k] += w; + bparams = p; } - for( j = 0; j < mi; j++ ) + Boost::Params getBParams() const { - rcw[0] += cjk[j*2]; - rcw[1] += cjk[j*2+1]; - dbl_ptr[j] = cjk + j*2 + 1; + return bparams; } - R = rcw[0] + rcw[1]; - - if( split_criteria != CvBoost::GINI && split_criteria != CvBoost::MISCLASS ) - split_criteria = boost_type == CvBoost::DISCRETE ? CvBoost::MISCLASS : CvBoost::GINI; - - // sort rows of c_jk by increasing c_j,1 - // (i.e. by the weight of samples in j-th category that belong to class 1) - std::sort(dbl_ptr, dbl_ptr + mi, LessThanPtr()); - - for( subset_i = 0; subset_i < mi-1; subset_i++ ) + void clear() { - idx = (int)(dbl_ptr[subset_i] - cjk)/2; - const double* crow = cjk + idx*2; - double w0 = crow[0], w1 = crow[1]; - double weight = w0 + w1; + DTreesImpl::clear(); + } - if( weight < FLT_EPSILON ) - continue; + void startTraining( const Ptr& trainData, int flags ) + { + DTreesImpl::startTraining(trainData, flags); + sumResult.assign(w->sidx.size(), 0.); - lcw[0] += w0; rcw[0] -= w0; - lcw[1] += w1; rcw[1] -= w1; - - if( split_criteria == CvBoost::GINI ) + if( bparams.boostType != Boost::DISCRETE ) { - double lsum2 = lcw[0]*lcw[0] + lcw[1]*lcw[1]; - double rsum2 = rcw[0]*rcw[0] + rcw[1]*rcw[1]; + _isClassifier = false; + int i, n = (int)w->cat_responses.size(); + w->ord_responses.resize(n); - L += weight; - R -= weight; - - if( L > FLT_EPSILON && R > FLT_EPSILON ) + double a = -1, b = 1; + if( bparams.boostType == Boost::LOGIT ) { - double val = (lsum2*R + rsum2*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } + a = -2, b = 2; } + for( i = 0; i < n; i++ ) + w->ord_responses[i] = w->cat_responses[i] > 0 ? b : a; + } + + normalizeWeights(); + } + + void normalizeWeights() + { + int i, n = (int)w->sidx.size(); + double sumw = 0, a, b; + for( i = 0; i < n; i++ ) + sumw += w->sample_weights[w->sidx[i]]; + if( sumw > DBL_EPSILON ) + { + a = 1./sumw; + b = 0; } else { - double val = lcw[0] + rcw[1]; - double val2 = lcw[1] + rcw[0]; - - val = MAX(val, val2); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } + a = 0; + b = 1; } - } - - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - for( i = 0; i <= best_subset; i++ ) - { - idx = (int)(dbl_ptr[i] - cjk) >> 1; - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - return split; -} - - -CvDTreeSplit* -CvBoostTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n*(sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - - float* values_buf = (float*)ext_buf; - int* indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = indices_buf + n; - const float* values = 0; - const int* indices = 0; - data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); - float* responses_buf = (float*)(indices_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - int i, best_i = -1; - double L = 0, R = weights[n]; - double best_val = init_quality, lsum = 0, rsum = node->value*R; - - // compensate for missing values - for( i = n1; i < n; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - rsum -= responses[idx]*w; - R -= w; - } - - // find the optimal split - for( i = 0; i < n1 - 1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - double t = responses[idx]*w; - L += w; R -= w; - lsum += t; rsum -= t; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } - } - } - - CvDTreeSplit* split = 0; - if( best_i >= 0 ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - - -CvDTreeSplit* -CvBoostTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const double* weights = ensemble->get_subtree_weights()->data.db; - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; - int base_size = (2*mi+3)*sizeof(double) + mi*sizeof(double*); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - float* responses_buf = (float*)(cat_labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); - - double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - double* counts = sum + mi + 1; - double** sum_ptr = (double**)(counts + mi); - double L = 0, R = 0, best_val = init_quality, lsum = 0, rsum = 0; - int i, best_subset = -1, subset_i; - - for( i = -1; i < mi; i++ ) - sum[i] = counts[i] = 0; - - // calculate sum response and weight of each category of the input var - for( i = 0; i < n; i++ ) - { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - double s = sum[idx] + responses[i]*w; - double nc = counts[idx] + w; - sum[idx] = s; - counts[idx] = nc; - } - - // calculate average response in each category - for( i = 0; i < mi; i++ ) - { - R += counts[i]; - rsum += sum[i]; - sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; - sum_ptr[i] = sum + i; - } - - std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); - - // revert back to unnormalized sums - // (there should be a very little loss in accuracy) - for( i = 0; i < mi; i++ ) - sum[i] *= counts[i]; - - for( subset_i = 0; subset_i < mi-1; subset_i++ ) - { - int idx = (int)(sum_ptr[subset_i] - sum); - double ni = counts[idx]; - - if( ni > FLT_EPSILON ) - { - double s = sum[idx]; - lsum += s; L += ni; - rsum -= s; R -= ni; - - if( L > FLT_EPSILON && R > FLT_EPSILON ) - { - double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); - if( best_val < val ) - { - best_val = val; - best_subset = subset_i; - } - } - } - } - - CvDTreeSplit* split = 0; - if( best_subset >= 0 ) - { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - for( i = 0; i <= best_subset; i++ ) - { - int idx = (int)(sum_ptr[i] - sum); - split->subset[idx >> 5] |= 1 << (idx & 31); - } - } - return split; -} - - -CvDTreeSplit* -CvBoostTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int)+sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = indices_buf + n; - const float* values = 0; - const int* indices = 0; - data->get_ord_var_data( node, vi, values_buf, indices_buf, &values, &indices, sample_indices_buf ); - - const double* weights = ensemble->get_subtree_weights()->data.db; - const char* dir = (char*)data->direction->data.ptr; - int n1 = node->get_num_valid(vi); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - int i, best_i = -1, best_inversed = 0; - double best_val; - double LL = 0, RL = 0, LR, RR; - double worst_val = node->maxlr; - double sum = 0, sum_abs = 0; - best_val = worst_val; - - for( i = 0; i < n1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - int d = dir[idx]; - sum += d*w; sum_abs += (d & 1)*w; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum)*0.5; - LR = (sum_abs - sum)*0.5; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int idx = indices[i]; - double w = weights[idx]; - int d = dir[idx]; - - if( d < 0 ) - { - LL += w; LR -= w; - if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL += w; RR -= w; - if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } - } - } - - return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, - (values[best_i] + values[best_i+1])*0.5f, best_i, - best_inversed, (float)best_val ) : 0; -} - - -CvDTreeSplit* -CvBoostTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const char* dir = (char*)data->direction->data.ptr; - const double* weights = ensemble->get_subtree_weights()->data.db; - int n = node->sample_count; - int i, mi = data->cat_count->data.i[data->get_var_type(vi)]; - - int base_size = (2*mi+3)*sizeof(double); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*sizeof(int)); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - int* cat_labels_buf = (int*)ext_buf; - const int* cat_labels = data->get_cat_var_data(node, vi, cat_labels_buf); - - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - CvDTreeSplit* split = data->new_split_cat( vi, 0 ); - double best_val = 0; - double* lc = (double*)cv::alignPtr(cat_labels_buf + n, sizeof(double)) + 1; - double* rc = lc + mi + 1; - - for( i = -1; i < mi; i++ ) - lc[i] = rc[i] = 0; - - // 1. for each category calculate the weight of samples - // sent to the left (lc) and to the right (rc) by the primary split - for( i = 0; i < n; i++ ) - { - int idx = ((cat_labels[i] == 65535) && data->is_buf_16u) ? -1 : cat_labels[i]; - double w = weights[i]; - int d = dir[i]; - double sum = lc[idx] + d*w; - double sum_abs = rc[idx] + (d & 1)*w; - lc[idx] = sum; rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - double sum = lc[i]; - double sum_abs = rc[i]; - lc[i] = (sum_abs - sum) * 0.5; - rc[i] = (sum_abs + sum) * 0.5; - } - - // 2. now form the split. - // in each category send all the samples to the same direction as majority - for( i = 0; i < mi; i++ ) - { - double lval = lc[i], rval = rc[i]; - if( lval > rval ) - { - split->subset[i >> 5] |= 1 << (i & 31); - best_val += lval; - } - else - best_val += rval; - } - - split->quality = (float)best_val; - if( split->quality <= node->maxlr ) - cvSetRemoveByPtr( data->split_heap, split ), split = 0; - - return split; -} - - -void -CvBoostTree::calc_node_value( CvDTreeNode* node ) -{ - int i, n = node->sample_count; - const double* weights = ensemble->get_weights()->data.db; - cv::AutoBuffer inn_buf(n*(sizeof(int) + ( data->is_classifier ? sizeof(int) : sizeof(int) + sizeof(float)))); - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cv_labels(node, labels_buf); - double* subtree_weights = ensemble->get_subtree_weights()->data.db; - double rcw[2] = {0,0}; - int boost_type = ensemble->get_params().boost_type; - - if( data->is_classifier ) - { - int* _responses_buf = labels_buf + n; - const int* _responses = data->get_class_labels(node, _responses_buf); - int m = data->get_num_classes(); - int* cls_count = data->counts->data.i; - for( int k = 0; k < m; k++ ) - cls_count[k] = 0; - for( i = 0; i < n; i++ ) { - int idx = labels[i]; - double w = weights[idx]; - int r = _responses[i]; - rcw[r] += w; - cls_count[r]++; - subtree_weights[i] = w; + double& wval = w->sample_weights[w->sidx[i]]; + wval = wval*a + b; } + } - node->class_idx = rcw[1] > rcw[0]; + void endTraining() + { + DTreesImpl::endTraining(); + vector e; + std::swap(sumResult, e); + } - if( boost_type == CvBoost::DISCRETE ) + void scaleTree( int root, double scale ) + { + int nidx = root, pidx = 0; + Node *node = 0; + + // traverse the tree and save all the nodes in depth-first order + for(;;) { - // ignore cat_map for responses, and use {-1,1}, - // as the whole ensemble response is computes as sign(sum_i(weak_response_i) - node->value = node->class_idx*2 - 1; + for(;;) + { + node = &nodes[nidx]; + node->value *= scale; + if( node->left < 0 ) + break; + nidx = node->left; + } + + for( pidx = node->parent; pidx >= 0 && nodes[pidx].right == nidx; + nidx = pidx, pidx = nodes[pidx].parent ) + ; + + if( pidx < 0 ) + break; + + nidx = nodes[pidx].right; } - else - { - double p = rcw[1]/(rcw[0] + rcw[1]); - assert( boost_type == CvBoost::REAL ); + } - // store log-ratio of the probability + void calcValue( int nidx, const vector& _sidx ) + { + DTreesImpl::calcValue(nidx, _sidx); + WNode* node = &w->wnodes[nidx]; + if( bparams.boostType == Boost::DISCRETE ) + { + node->value = node->class_idx == 0 ? -1 : 1; + } + else if( bparams.boostType == Boost::REAL ) + { + double p = (node->value+1)*0.5; node->value = 0.5*log_ratio(p); } } - else + + bool train( const Ptr& trainData, int flags ) { - // in case of regression tree: - // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, - // n is the number of samples in the node. - // * node risk is the sum of squared errors: sum_i((Y_i - )^2) - double sum = 0, sum2 = 0, iw; - float* values_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(values_buf + n); - const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); + Params dp(bparams.maxDepth, bparams.minSampleCount, bparams.regressionAccuracy, + bparams.useSurrogates, bparams.maxCategories, 0, + false, false, bparams.priors); + setDParams(dp); + startTraining(trainData, flags); + int treeidx, ntrees = bparams.weakCount >= 0 ? bparams.weakCount : 10000; + vector sidx = w->sidx; + + for( treeidx = 0; treeidx < ntrees; treeidx++ ) + { + int root = addTree( sidx ); + if( root < 0 ) + return false; + updateWeightsAndTrim( treeidx, sidx ); + } + endTraining(); + return true; + } + + void updateWeightsAndTrim( int treeidx, vector& sidx ) + { + int i, n = (int)w->sidx.size(); + int nvars = (int)varIdx.size(); + double sumw = 0., C = 1.; + cv::AutoBuffer buf(n + nvars); + double* result = buf; + float* sbuf = (float*)(result + n); + Mat sample(1, nvars, CV_32F, sbuf); + int predictFlags = bparams.boostType == Boost::DISCRETE ? (PREDICT_MAX_VOTE | RAW_OUTPUT) : PREDICT_SUM; + predictFlags |= COMPRESSED_INPUT; for( i = 0; i < n; i++ ) { - int idx = labels[i]; - double w = weights[idx]/*priors[values[i] > 0]*/; - double t = values[i]; - rcw[0] += w; - subtree_weights[i] = w; - sum += t*w; - sum2 += t*t*w; - } - - iw = 1./rcw[0]; - node->value = sum*iw; - node->node_risk = sum2 - (sum*iw)*sum; - - // renormalize the risk, as in try_split_node the unweighted formula - // sqrt(risk)/n is used, rather than sqrt(risk)/sum(weights_i) - node->node_risk *= n*iw*n*iw; - } - - // store summary weights - subtree_weights[n] = rcw[0]; - subtree_weights[n+1] = rcw[1]; -} - - -void CvBoostTree::read( CvFileStorage* fs, CvFileNode* fnode, CvBoost* _ensemble, CvDTreeTrainData* _data ) -{ - CvDTree::read( fs, fnode, _data ); - ensemble = _ensemble; -} - -void CvBoostTree::read( CvFileStorage*, CvFileNode* ) -{ - assert(0); -} - -void CvBoostTree::read( CvFileStorage* _fs, CvFileNode* _node, - CvDTreeTrainData* _data ) -{ - CvDTree::read( _fs, _node, _data ); -} - - -/////////////////////////////////// CvBoost ///////////////////////////////////// - -CvBoost::CvBoost() -{ - data = 0; - weak = 0; - default_model_name = "my_boost_tree"; - - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - have_active_cat_vars = have_subsample = false; - - clear(); -} - - -void CvBoost::prune( CvSlice slice ) -{ - if( weak && weak->total > 0 ) - { - CvSeqReader reader; - int i, count = cvSliceLength( slice, weak ); - - cvStartReadSeq( weak, &reader ); - cvSetSeqReaderPos( &reader, slice.start_index ); - - for( i = 0; i < count; i++ ) - { - CvBoostTree* w; - CV_READ_SEQ_ELEM( w, reader ); - delete w; - } - - cvSeqRemoveSlice( weak, slice ); - } -} - - -void CvBoost::clear() -{ - if( weak ) - { - prune( CV_WHOLE_SEQ ); - cvReleaseMemStorage( &weak->storage ); - } - if( data ) - delete data; - weak = 0; - data = 0; - cvReleaseMat( &active_vars ); - cvReleaseMat( &active_vars_abs ); - cvReleaseMat( &orig_response ); - cvReleaseMat( &sum_response ); - cvReleaseMat( &weak_eval ); - cvReleaseMat( &subsample_mask ); - cvReleaseMat( &weights ); - cvReleaseMat( &subtree_weights ); - - have_subsample = false; -} - - -CvBoost::~CvBoost() -{ - clear(); -} - - -CvBoost::CvBoost( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvBoostParams _params ) -{ - weak = 0; - data = 0; - default_model_name = "my_boost_tree"; - - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - - train( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params ); -} - - -bool -CvBoost::set_params( const CvBoostParams& _params ) -{ - bool ok = false; - - CV_FUNCNAME( "CvBoost::set_params" ); - - __BEGIN__; - - params = _params; - if( params.boost_type != DISCRETE && params.boost_type != REAL && - params.boost_type != LOGIT && params.boost_type != GENTLE ) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported boosting type" ); - - params.weak_count = MAX( params.weak_count, 1 ); - params.weight_trim_rate = MAX( params.weight_trim_rate, 0. ); - params.weight_trim_rate = MIN( params.weight_trim_rate, 1. ); - if( params.weight_trim_rate < FLT_EPSILON ) - params.weight_trim_rate = 1.f; - - if( params.boost_type == DISCRETE && - params.split_criteria != GINI && params.split_criteria != MISCLASS ) - params.split_criteria = MISCLASS; - if( params.boost_type == REAL && - params.split_criteria != GINI && params.split_criteria != MISCLASS ) - params.split_criteria = GINI; - if( (params.boost_type == LOGIT || params.boost_type == GENTLE) && - params.split_criteria != SQERR ) - params.split_criteria = SQERR; - - ok = true; - - __END__; - - return ok; -} - - -bool -CvBoost::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, - CvBoostParams _params, bool _update ) -{ - bool ok = false; - CvMemStorage* storage = 0; - - CV_FUNCNAME( "CvBoost::train" ); - - __BEGIN__; - - int i; - - set_params( _params ); - - cvReleaseMat( &active_vars ); - cvReleaseMat( &active_vars_abs ); - - if( !_update || !data ) - { - clear(); - data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, true, true ); - - if( data->get_num_classes() != 2 ) - CV_ERROR( CV_StsNotImplemented, - "Boosted trees can only be used for 2-class classification." ); - CV_CALL( storage = cvCreateMemStorage() ); - weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); - storage = 0; - } - else - { - data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, true, true, true ); - } - - if ( (_params.boost_type == LOGIT) || (_params.boost_type == GENTLE) ) - data->do_responses_copy(); - - update_weights( 0 ); - - for( i = 0; i < params.weak_count; i++ ) - { - CvBoostTree* tree = new CvBoostTree; - if( !tree->train( data, subsample_mask, this ) ) - { - delete tree; - break; - } - //cvCheckArr( get_weak_response()); - cvSeqPush( weak, &tree ); - update_weights( tree ); - trim_weights(); - if( cvCountNonZero(subsample_mask) == 0 ) - break; - } - - if(weak->total > 0) - { - get_active_vars(); // recompute active_vars* maps and condensed_idx's in the splits. - data->is_classifier = true; - data->free_train_data(); - ok = true; - } - else - clear(); - - __END__; - - return ok; -} - -bool CvBoost::train( CvMLData* _data, - CvBoostParams _params, - bool update ) -{ - bool result = false; - - CV_FUNCNAME( "CvBoost::train" ); - - __BEGIN__; - - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, _params, update ) ); - - __END__; - - return result; -} - -void CvBoost::initialize_weights(double (&p)[2]) -{ - p[0] = 1.; - p[1] = 1.; -} - -void -CvBoost::update_weights( CvBoostTree* tree ) -{ - CV_FUNCNAME( "CvBoost::update_weights" ); - - __BEGIN__; - - int i, n = data->sample_count; - double sumw = 0.; - int step = 0; - float* fdata = 0; - int *sample_idx_buf; - const int* sample_idx = 0; - cv::AutoBuffer inn_buf; - size_t _buf_size = (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ? (size_t)(data->sample_count)*sizeof(int) : 0; - if( !tree ) - _buf_size += n*sizeof(int); - else - { - if( have_subsample ) - _buf_size += data->get_length_subbuf()*(sizeof(float)+sizeof(uchar)); - } - inn_buf.allocate(_buf_size); - uchar* cur_buf_pos = (uchar*)inn_buf; - - if ( (params.boost_type == LOGIT) || (params.boost_type == GENTLE) ) - { - step = CV_IS_MAT_CONT(data->responses_copy->type) ? - 1 : data->responses_copy->step / CV_ELEM_SIZE(data->responses_copy->type); - fdata = data->responses_copy->data.fl; - sample_idx_buf = (int*)cur_buf_pos; - cur_buf_pos = (uchar*)(sample_idx_buf + data->sample_count); - sample_idx = data->get_sample_indices( data->data_root, sample_idx_buf ); - } - CvMat* dtree_data_buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - if( !tree ) // before training the first tree, initialize weights and other parameters - { - int* class_labels_buf = (int*)cur_buf_pos; - cur_buf_pos = (uchar*)(class_labels_buf + n); - const int* class_labels = data->get_class_labels(data->data_root, class_labels_buf); - // in case of logitboost and gentle adaboost each weak tree is a regression tree, - // so we need to convert class labels to floating-point values - - double w0 = 1./ n; - double p[2] = { 1., 1. }; - initialize_weights(p); - - cvReleaseMat( &orig_response ); - cvReleaseMat( &sum_response ); - cvReleaseMat( &weak_eval ); - cvReleaseMat( &subsample_mask ); - cvReleaseMat( &weights ); - cvReleaseMat( &subtree_weights ); - - CV_CALL( orig_response = cvCreateMat( 1, n, CV_32S )); - CV_CALL( weak_eval = cvCreateMat( 1, n, CV_64F )); - CV_CALL( subsample_mask = cvCreateMat( 1, n, CV_8U )); - CV_CALL( weights = cvCreateMat( 1, n, CV_64F )); - CV_CALL( subtree_weights = cvCreateMat( 1, n + 2, CV_64F )); - - if( data->have_priors ) - { - // compute weight scale for each class from their prior probabilities - int c1 = 0; - for( i = 0; i < n; i++ ) - c1 += class_labels[i]; - p[0] = data->priors->data.db[0]*(c1 < n ? 1./(n - c1) : 0.); - p[1] = data->priors->data.db[1]*(c1 > 0 ? 1./c1 : 0.); - p[0] /= p[0] + p[1]; - p[1] = 1. - p[0]; - } - - if (data->is_buf_16u) - { - unsigned short* labels = (unsigned short*)(dtree_data_buf->data.s + data->data_root->buf_idx*length_buf_row + - data->data_root->offset + (data->work_var_count-1)*data->sample_count); - for( i = 0; i < n; i++ ) - { - // save original categorical responses {0,1}, convert them to {-1,1} - orig_response->data.i[i] = class_labels[i]*2 - 1; - // make all the samples active at start. - // later, in trim_weights() deactivate/reactive again some, if need - subsample_mask->data.ptr[i] = (uchar)1; - // make all the initial weights the same. - weights->data.db[i] = w0*p[class_labels[i]]; - // set the labels to find (from within weak tree learning proc) - // the particular sample weight, and where to store the response. - labels[i] = (unsigned short)i; - } - } - else - { - int* labels = dtree_data_buf->data.i + data->data_root->buf_idx*length_buf_row + - data->data_root->offset + (data->work_var_count-1)*data->sample_count; - - for( i = 0; i < n; i++ ) - { - // save original categorical responses {0,1}, convert them to {-1,1} - orig_response->data.i[i] = class_labels[i]*2 - 1; - // make all the samples active at start. - // later, in trim_weights() deactivate/reactive again some, if need - subsample_mask->data.ptr[i] = (uchar)1; - // make all the initial weights the same. - weights->data.db[i] = w0*p[class_labels[i]]; - // set the labels to find (from within weak tree learning proc) - // the particular sample weight, and where to store the response. - labels[i] = i; - } - } - - if( params.boost_type == LOGIT ) - { - CV_CALL( sum_response = cvCreateMat( 1, n, CV_64F )); - - for( i = 0; i < n; i++ ) - { - sum_response->data.db[i] = 0; - fdata[sample_idx[i]*step] = orig_response->data.i[i] > 0 ? 2.f : -2.f; - } - - // in case of logitboost each weak tree is a regression tree. - // the target function values are recalculated for each of the trees - data->is_classifier = false; - } - else if( params.boost_type == GENTLE ) - { - for( i = 0; i < n; i++ ) - fdata[sample_idx[i]*step] = (float)orig_response->data.i[i]; - - data->is_classifier = false; - } - } - else - { - // at this moment, for all the samples that participated in the training of the most - // recent weak classifier we know the responses. For other samples we need to compute them - if( have_subsample ) - { - float* values = (float*)cur_buf_pos; - cur_buf_pos = (uchar*)(values + data->get_length_subbuf()); - uchar* missing = cur_buf_pos; - cur_buf_pos = missing + data->get_length_subbuf() * (size_t)CV_ELEM_SIZE(data->buf->type); - - CvMat _sample, _mask; - - // invert the subsample mask - cvXorS( subsample_mask, cvScalar(1.), subsample_mask ); - data->get_vectors( subsample_mask, values, missing, 0 ); - - _sample = cvMat( 1, data->var_count, CV_32F ); - _mask = cvMat( 1, data->var_count, CV_8U ); - - // run tree through all the non-processed samples - for( i = 0; i < n; i++ ) - if( subsample_mask->data.ptr[i] ) - { - _sample.data.fl = values; - _mask.data.ptr = missing; - values += _sample.cols; - missing += _mask.cols; - weak_eval->data.db[i] = tree->predict( &_sample, &_mask, true )->value; - } + w->data->getSample(varIdx, w->sidx[i], sbuf ); + result[i] = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); } // now update weights and other parameters for each type of boosting - if( params.boost_type == DISCRETE ) + if( bparams.boostType == Boost::DISCRETE ) { // Discrete AdaBoost: // weak_eval[i] (=f(x_i)) is in {-1,1} // err = sum(w_i*(f(x_i) != y_i))/sum(w_i) // C = log((1-err)/err) // w_i *= exp(C*(f(x_i) != y_i)) - - double C, err = 0.; - double scale[] = { 1., 0. }; + double err = 0.; for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]; - sumw += w; - err += w*(weak_eval->data.db[i] != orig_response->data.i[i]); + int si = w->sidx[i]; + double wval = w->sample_weights[si]; + sumw += wval; + err += wval*(result[i] != w->cat_responses[si]); } if( sumw != 0 ) err /= sumw; - C = err = -log_ratio( err ); - scale[1] = exp(err); + C = -log_ratio( err ); + double scale = std::exp(C); sumw = 0; for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]* - scale[weak_eval->data.db[i] != orig_response->data.i[i]]; - sumw += w; - weights->data.db[i] = w; + int si = w->sidx[i]; + double wval = w->sample_weights[si]; + if( result[i] != w->cat_responses[si] ) + wval *= scale; + sumw += wval; + w->sample_weights[si] = wval; } - tree->scale( C ); + scaleTree(roots[treeidx], C); } - else if( params.boost_type == REAL ) + else if( bparams.boostType == Boost::REAL || bparams.boostType == Boost::GENTLE ) { // Real AdaBoost: // weak_eval[i] = f(x_i) = 0.5*log(p(x_i)/(1-p(x_i))), p(x_i)=P(y=1|x_i) // w_i *= exp(-y_i*f(x_i)) - for( i = 0; i < n; i++ ) - weak_eval->data.db[i] *= -orig_response->data.i[i]; - - cvExp( weak_eval, weak_eval ); - + // Gentle AdaBoost: + // weak_eval[i] = f(x_i) in [-1,1] + // w_i *= exp(-y_i*f(x_i)) for( i = 0; i < n; i++ ) { - double w = weights->data.db[i]*weak_eval->data.db[i]; - sumw += w; - weights->data.db[i] = w; + int si = w->sidx[i]; + CV_Assert( std::abs(w->ord_responses[si]) == 1 ); + double wval = w->sample_weights[si]*std::exp(-result[i]*w->ord_responses[si]); + sumw += wval; + w->sample_weights[si] = wval; } } - else if( params.boost_type == LOGIT ) + else if( bparams.boostType == Boost::LOGIT ) { // LogitBoost: // weak_eval[i] = f(x_i) in [-z_max,z_max] @@ -1353,810 +301,223 @@ CvBoost::update_weights( CvBoostTree* tree ) // w_i = p(x_i)*1(1 - p(x_i)) // z_i = ((y_i+1)/2 - p(x_i))/(p(x_i)*(1 - p(x_i))) // store z_i to the data->data_root as the new target responses - const double lb_weight_thresh = FLT_EPSILON; const double lb_z_max = 10.; - /*float* responses_buf = data->get_resp_float_buf(); - const float* responses = 0; - data->get_ord_responses(data->data_root, responses_buf, &responses);*/ - - /*if( weak->total == 7 ) - putchar('*');*/ for( i = 0; i < n; i++ ) { - double s = sum_response->data.db[i] + 0.5*weak_eval->data.db[i]; - sum_response->data.db[i] = s; - weak_eval->data.db[i] = -2*s; - } - - cvExp( weak_eval, weak_eval ); - - for( i = 0; i < n; i++ ) - { - double p = 1./(1. + weak_eval->data.db[i]); - double w = p*(1 - p), z; - w = MAX( w, lb_weight_thresh ); - weights->data.db[i] = w; - sumw += w; - if( orig_response->data.i[i] > 0 ) + int si = w->sidx[i]; + sumResult[i] += 0.5*result[i]; + double p = 1./(1 + std::exp(-2*sumResult[i])); + double wval = std::max( p*(1 - p), lb_weight_thresh ), z; + w->sample_weights[si] = wval; + sumw += wval; + if( w->ord_responses[si] > 0 ) { z = 1./p; - fdata[sample_idx[i]*step] = (float)MIN(z, lb_z_max); + w->ord_responses[si] = std::min(z, lb_z_max); } else { z = 1./(1-p); - fdata[sample_idx[i]*step] = (float)-MIN(z, lb_z_max); + w->ord_responses[si] = -std::min(z, lb_z_max); } } } else + CV_Error(CV_StsNotImplemented, "Unknown boosting type"); + + /*if( bparams.boostType != Boost::LOGIT ) { - // Gentle AdaBoost: - // weak_eval[i] = f(x_i) in [-1,1] - // w_i *= exp(-y_i*f(x_i)) - assert( params.boost_type == GENTLE ); - - for( i = 0; i < n; i++ ) - weak_eval->data.db[i] *= -orig_response->data.i[i]; - - cvExp( weak_eval, weak_eval ); - + double err = 0; for( i = 0; i < n; i++ ) { - double w = weights->data.db[i] * weak_eval->data.db[i]; - weights->data.db[i] = w; - sumw += w; - } - } - } - - // renormalize weights - if( sumw > FLT_EPSILON ) - { - sumw = 1./sumw; - for( i = 0; i < n; ++i ) - weights->data.db[i] *= sumw; - } - - __END__; -} - - -void -CvBoost::trim_weights() -{ - //CV_FUNCNAME( "CvBoost::trim_weights" ); - - __BEGIN__; - - int i, count = data->sample_count, nz_count = 0; - double sum, threshold; - - if( params.weight_trim_rate <= 0. || params.weight_trim_rate >= 1. ) - EXIT; - - // use weak_eval as temporary buffer for sorted weights - cvCopy( weights, weak_eval ); - - std::sort(weak_eval->data.db, weak_eval->data.db + count); - - // as weight trimming occurs immediately after updating the weights, - // where they are renormalized, we assume that the weight sum = 1. - sum = 1. - params.weight_trim_rate; - - for( i = 0; i < count; i++ ) - { - double w = weak_eval->data.db[i]; - if( sum <= 0 ) - break; - sum -= w; - } - - threshold = i < count ? weak_eval->data.db[i] : DBL_MAX; - - for( i = 0; i < count; i++ ) - { - double w = weights->data.db[i]; - int f = w >= threshold; - subsample_mask->data.ptr[i] = (uchar)f; - nz_count += f; - } - - have_subsample = nz_count < count; - - __END__; -} - - -const CvMat* -CvBoost::get_active_vars( bool absolute_idx ) -{ - CvMat* mask = 0; - CvMat* inv_map = 0; - CvMat* result = 0; - - CV_FUNCNAME( "CvBoost::get_active_vars" ); - - __BEGIN__; - - if( !weak ) - CV_ERROR( CV_StsError, "The boosted tree ensemble has not been trained yet" ); - - if( !active_vars || !active_vars_abs ) - { - CvSeqReader reader; - int i, j, nactive_vars; - CvBoostTree* wtree; - const CvDTreeNode* node; - - assert(!active_vars && !active_vars_abs); - mask = cvCreateMat( 1, data->var_count, CV_8U ); - inv_map = cvCreateMat( 1, data->var_count, CV_32S ); - cvZero( mask ); - cvSet( inv_map, cvScalar(-1) ); - - // first pass: compute the mask of used variables - cvStartReadSeq( weak, &reader ); - for( i = 0; i < weak->total; i++ ) - { - CV_READ_SEQ_ELEM(wtree, reader); - - node = wtree->get_root(); - assert( node != 0 ); - for(;;) - { - const CvDTreeNode* parent; - for(;;) - { - CvDTreeSplit* split = node->split; - for( ; split != 0; split = split->next ) - mask->data.ptr[split->var_idx] = 1; - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } - } - - nactive_vars = cvCountNonZero(mask); - - //if ( nactive_vars > 0 ) - { - active_vars = cvCreateMat( 1, nactive_vars, CV_32S ); - active_vars_abs = cvCreateMat( 1, nactive_vars, CV_32S ); - - have_active_cat_vars = false; - - for( i = j = 0; i < data->var_count; i++ ) - { - if( mask->data.ptr[i] ) - { - active_vars->data.i[j] = i; - active_vars_abs->data.i[j] = data->var_idx ? data->var_idx->data.i[i] : i; - inv_map->data.i[i] = j; - if( data->var_type->data.i[i] >= 0 ) - have_active_cat_vars = true; - j++; - } - } - - - // second pass: now compute the condensed indices - cvStartReadSeq( weak, &reader ); - for( i = 0; i < weak->total; i++ ) - { - CV_READ_SEQ_ELEM(wtree, reader); - node = wtree->get_root(); - for(;;) - { - const CvDTreeNode* parent; - for(;;) - { - CvDTreeSplit* split = node->split; - for( ; split != 0; split = split->next ) - { - split->condensed_idx = inv_map->data.i[split->var_idx]; - assert( split->condensed_idx >= 0 ); - } - - if( !node->left ) - break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; - } - } - } - } - - result = absolute_idx ? active_vars_abs : active_vars; - - __END__; - - cvReleaseMat( &mask ); - cvReleaseMat( &inv_map ); - - return result; -} - - -float -CvBoost::predict( const CvMat* _sample, const CvMat* _missing, - CvMat* weak_responses, CvSlice slice, - bool raw_mode, bool return_sum ) const -{ - float value = -FLT_MAX; - - CvSeqReader reader; - double sum = 0; - int wstep = 0; - const float* sample_data; - - if( !weak ) - CV_Error( CV_StsError, "The boosted tree ensemble has not been trained yet" ); - - if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || - (_sample->cols != 1 && _sample->rows != 1) || - (_sample->cols + _sample->rows - 1 != data->var_all && !raw_mode) || - (active_vars && _sample->cols + _sample->rows - 1 != active_vars->cols && raw_mode) ) - CV_Error( CV_StsBadArg, - "the input sample must be 1d floating-point vector with the same " - "number of elements as the total number of variables or " - "as the number of variables used for training" ); - - if( _missing ) - { - if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || - !CV_ARE_SIZES_EQ(_missing, _sample) ) - CV_Error( CV_StsBadArg, - "the missing data mask must be 8-bit vector of the same size as input sample" ); - } - - int i, weak_count = cvSliceLength( slice, weak ); - if( weak_count >= weak->total ) - { - weak_count = weak->total; - slice.start_index = 0; - } - - if( weak_responses ) - { - if( !CV_IS_MAT(weak_responses) || - CV_MAT_TYPE(weak_responses->type) != CV_32FC1 || - (weak_responses->cols != 1 && weak_responses->rows != 1) || - weak_responses->cols + weak_responses->rows - 1 != weak_count ) - CV_Error( CV_StsBadArg, - "The output matrix of weak classifier responses must be valid " - "floating-point vector of the same number of components as the length of input slice" ); - wstep = CV_IS_MAT_CONT(weak_responses->type) ? 1 : weak_responses->step/sizeof(float); - } - - int var_count = active_vars->cols; - const int* vtype = data->var_type->data.i; - const int* cmap = data->cat_map->data.i; - const int* cofs = data->cat_ofs->data.i; - - cv::Mat sample = cv::cvarrToMat(_sample); - cv::Mat missing; - if(!_missing) - missing = cv::cvarrToMat(_missing); - - // if need, preprocess the input vector - if( !raw_mode ) - { - int sstep, mstep = 0; - const float* src_sample; - const uchar* src_mask = 0; - float* dst_sample; - uchar* dst_mask; - const int* vidx = active_vars->data.i; - const int* vidx_abs = active_vars_abs->data.i; - bool have_mask = _missing != 0; - - sample = cv::Mat(1, var_count, CV_32FC1); - missing = cv::Mat(1, var_count, CV_8UC1); - - dst_sample = sample.ptr(); - dst_mask = missing.ptr(); - - src_sample = _sample->data.fl; - sstep = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]); - - if( _missing ) - { - src_mask = _missing->data.ptr; - mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step; - } - - for( i = 0; i < var_count; i++ ) - { - int idx = vidx[i], idx_abs = vidx_abs[i]; - float val = src_sample[idx_abs*sstep]; - int ci = vtype[idx]; - uchar m = src_mask ? src_mask[idx_abs*mstep] : (uchar)0; - - if( ci >= 0 ) - { - int a = cofs[ci], b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1], - c = a; - int ival = cvRound(val); - if ( (ival != val) && (!m) ) - CV_Error( CV_StsBadArg, - "one of input categorical variable is not an integer" ); - - while( a < b ) - { - c = (a + b) >> 1; - if( ival < cmap[c] ) - b = c; - else if( ival > cmap[c] ) - a = c+1; - else - break; - } - - if( c < 0 || ival != cmap[c] ) - { - m = 1; - have_mask = true; - } + sumResult[i] += result[i]*C; + if( bparams.boostType != Boost::DISCRETE ) + err += sumResult[i]*w->ord_responses[w->sidx[i]] < 0; else - { - val = (float)(c - cofs[ci]); - } + err += sumResult[i]*w->cat_responses[w->sidx[i]] < 0; } + printf("%d trees. C=%.2f, training error=%.1f%%, working set size=%d (out of %d)\n", (int)roots.size(), C, err*100./n, (int)sidx.size(), n); + }*/ - dst_sample[i] = val; - dst_mask[i] = m; - } + // renormalize weights + if( sumw > FLT_EPSILON ) + normalizeWeights(); - if( !have_mask ) - missing.release(); - } - else - { - if( !CV_IS_MAT_CONT(_sample->type & (_missing ? _missing->type : -1)) ) - CV_Error( CV_StsBadArg, "In raw mode the input vectors must be continuous" ); - } + if( bparams.weightTrimRate <= 0. || bparams.weightTrimRate >= 1. ) + return; - cvStartReadSeq( weak, &reader ); - cvSetSeqReaderPos( &reader, slice.start_index ); + for( i = 0; i < n; i++ ) + result[i] = w->sample_weights[w->sidx[i]]; + std::sort(result, result + n); - sample_data = sample.ptr(); + // as weight trimming occurs immediately after updating the weights, + // where they are renormalized, we assume that the weight sum = 1. + sumw = 1. - bparams.weightTrimRate; - if( !have_active_cat_vars && missing.empty() && !weak_responses ) - { - for( i = 0; i < weak_count; i++ ) + for( i = 0; i < n; i++ ) { - CvBoostTree* wtree; - const CvDTreeNode* node; - CV_READ_SEQ_ELEM( wtree, reader ); - - node = wtree->get_root(); - while( node->left ) - { - CvDTreeSplit* split = node->split; - int vi = split->condensed_idx; - float val = sample_data[vi]; - int dir = val <= split->ord.c ? -1 : 1; - if( split->inversed ) - dir = -dir; - node = dir < 0 ? node->left : node->right; - } - sum += node->value; + double wval = result[i]; + if( sumw <= 0 ) + break; + sumw -= wval; } - } - else - { - const int* avars = active_vars->data.i; - const uchar* m = !missing.empty() ? missing.ptr() : 0; - // full-featured version - for( i = 0; i < weak_count; i++ ) + double threshold = i < n ? result[i] : DBL_MAX; + sidx.clear(); + + for( i = 0; i < n; i++ ) { - CvBoostTree* wtree; - const CvDTreeNode* node; - CV_READ_SEQ_ELEM( wtree, reader ); - - node = wtree->get_root(); - while( node->left ) - { - const CvDTreeSplit* split = node->split; - int dir = 0; - for( ; !dir && split != 0; split = split->next ) - { - int vi = split->condensed_idx; - int ci = vtype[avars[vi]]; - float val = sample_data[vi]; - if( m && m[vi] ) - continue; - if( ci < 0 ) // ordered - dir = val <= split->ord.c ? -1 : 1; - else // categorical - { - int c = cvRound(val); - dir = CV_DTREE_CAT_DIR(c, split->subset); - } - if( split->inversed ) - dir = -dir; - } - - if( !dir ) - { - int diff = node->right->sample_count - node->left->sample_count; - dir = diff < 0 ? -1 : 1; - } - node = dir < 0 ? node->left : node->right; - } - if( weak_responses ) - weak_responses->data.fl[i*wstep] = (float)node->value; - sum += node->value; + int si = w->sidx[i]; + if( w->sample_weights[si] >= threshold ) + sidx.push_back(si); } } - if( return_sum ) - value = (float)sum; - else + float predictTrees( const Range& range, const Mat& sample, int flags0 ) const { - int cls_idx = sum >= 0; - if( raw_mode ) - value = (float)cls_idx; - else - value = (float)cmap[cofs[vtype[data->var_count]] + cls_idx]; - } - - return value; -} - -float CvBoost::calc_error( CvMLData* _data, int type, std::vector *resp ) -{ - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) + int flags = (flags0 & ~PREDICT_MASK) | PREDICT_SUM; + float val = DTreesImpl::predictTrees(range, sample, flags); + if( flags != flags0 ) { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; + int ival = (int)(val > 0); + if( !(flags0 & RAW_OUTPUT) ) + ival = classLabels[ival]; + val = (float)ival; } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + return val; } - else + + void writeTrainingParams( FileStorage& fs ) const { - for( int i = 0; i < sample_count; i++ ) + fs << "boosting_type" << + (bparams.boostType == Boost::DISCRETE ? "DiscreteAdaboost" : + bparams.boostType == Boost::REAL ? "RealAdaboost" : + bparams.boostType == Boost::LOGIT ? "LogitBoost" : + bparams.boostType == Boost::GENTLE ? "GentleAdaboost" : "Unknown"); + + DTreesImpl::writeTrainingParams(fs); + fs << "weight_trimming_rate" << bparams.weightTrimRate; + } + + void write( FileStorage& fs ) const + { + if( roots.empty() ) + CV_Error( CV_StsBadArg, "RTrees have not been trained" ); + + writeParams(fs); + + int k, ntrees = (int)roots.size(); + + fs << "ntrees" << ntrees + << "trees" << "["; + + for( k = 0; k < ntrees; k++ ) { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; + fs << "{"; + writeTree(fs, roots[k]); + fs << "}"; } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; -} -void CvBoost::write_params( CvFileStorage* fs ) const -{ - const char* boost_type_str = - params.boost_type == DISCRETE ? "DiscreteAdaboost" : - params.boost_type == REAL ? "RealAdaboost" : - params.boost_type == LOGIT ? "LogitBoost" : - params.boost_type == GENTLE ? "GentleAdaboost" : 0; - - const char* split_crit_str = - params.split_criteria == DEFAULT ? "Default" : - params.split_criteria == GINI ? "Gini" : - params.boost_type == MISCLASS ? "Misclassification" : - params.boost_type == SQERR ? "SquaredErr" : 0; - - if( boost_type_str ) - cvWriteString( fs, "boosting_type", boost_type_str ); - else - cvWriteInt( fs, "boosting_type", params.boost_type ); - - if( split_crit_str ) - cvWriteString( fs, "splitting_criteria", split_crit_str ); - else - cvWriteInt( fs, "splitting_criteria", params.split_criteria ); - - cvWriteInt( fs, "ntrees", weak->total ); - cvWriteReal( fs, "weight_trimming_rate", params.weight_trim_rate ); - - data->write_params( fs ); -} - - -void CvBoost::read_params( CvFileStorage* fs, CvFileNode* fnode ) -{ - CV_FUNCNAME( "CvBoost::read_params" ); - - __BEGIN__; - - CvFileNode* temp; - - if( !fnode || !CV_NODE_IS_MAP(fnode->tag) ) - return; - - data = new CvDTreeTrainData(); - CV_CALL( data->read_params(fs, fnode)); - data->shared = true; - - params.max_depth = data->params.max_depth; - params.min_sample_count = data->params.min_sample_count; - params.max_categories = data->params.max_categories; - params.priors = data->params.priors; - params.regression_accuracy = data->params.regression_accuracy; - params.use_surrogates = data->params.use_surrogates; - - temp = cvGetFileNodeByName( fs, fnode, "boosting_type" ); - if( !temp ) - return; - - if( temp && CV_NODE_IS_STRING(temp->tag) ) - { - const char* boost_type_str = cvReadString( temp, "" ); - params.boost_type = strcmp( boost_type_str, "DiscreteAdaboost" ) == 0 ? DISCRETE : - strcmp( boost_type_str, "RealAdaboost" ) == 0 ? REAL : - strcmp( boost_type_str, "LogitBoost" ) == 0 ? LOGIT : - strcmp( boost_type_str, "GentleAdaboost" ) == 0 ? GENTLE : -1; - } - else - params.boost_type = cvReadInt( temp, -1 ); - - if( params.boost_type < DISCRETE || params.boost_type > GENTLE ) - CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); - - temp = cvGetFileNodeByName( fs, fnode, "splitting_criteria" ); - if( temp && CV_NODE_IS_STRING(temp->tag) ) - { - const char* split_crit_str = cvReadString( temp, "" ); - params.split_criteria = strcmp( split_crit_str, "Default" ) == 0 ? DEFAULT : - strcmp( split_crit_str, "Gini" ) == 0 ? GINI : - strcmp( split_crit_str, "Misclassification" ) == 0 ? MISCLASS : - strcmp( split_crit_str, "SquaredErr" ) == 0 ? SQERR : -1; - } - else - params.split_criteria = cvReadInt( temp, -1 ); - - if( params.split_criteria < DEFAULT || params.boost_type > SQERR ) - CV_ERROR( CV_StsBadArg, "Unknown boosting type" ); - - params.weak_count = cvReadIntByName( fs, fnode, "ntrees" ); - params.weight_trim_rate = cvReadRealByName( fs, fnode, "weight_trimming_rate", 0. ); - - __END__; -} - - - -void -CvBoost::read( CvFileStorage* fs, CvFileNode* node ) -{ - CV_FUNCNAME( "CvBoost::read" ); - - __BEGIN__; - - CvSeqReader reader; - CvFileNode* trees_fnode; - CvMemStorage* storage; - int i, ntrees; - - clear(); - read_params( fs, node ); - - if( !data ) - EXIT; - - trees_fnode = cvGetFileNodeByName( fs, node, "trees" ); - if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) - CV_ERROR( CV_StsParseError, " tag is missing" ); - - cvStartReadSeq( trees_fnode->data.seq, &reader ); - ntrees = trees_fnode->data.seq->total; - - if( ntrees != params.weak_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "The number of trees stored does not match tag value" ); - - CV_CALL( storage = cvCreateMemStorage() ); - weak = cvCreateSeq( 0, sizeof(CvSeq), sizeof(CvBoostTree*), storage ); - - for( i = 0; i < ntrees; i++ ) - { - CvBoostTree* tree = new CvBoostTree(); - CV_CALL(tree->read( fs, (CvFileNode*)reader.ptr, this, data )); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - cvSeqPush( weak, &tree ); - } - get_active_vars(); - - __END__; -} - - -void -CvBoost::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvBoost::write" ); - - __BEGIN__; - - CvSeqReader reader; - int i; - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_BOOSTING ); - - if( !weak ) - CV_ERROR( CV_StsBadArg, "The classifier has not been trained yet" ); - - write_params( fs ); - cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); - - cvStartReadSeq( weak, &reader ); - - for( i = 0; i < weak->total; i++ ) - { - CvBoostTree* tree; - CV_READ_SEQ_ELEM( tree, reader ); - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - tree->write( fs ); - cvEndWriteStruct( fs ); + fs << "]"; } - cvEndWriteStruct( fs ); - cvEndWriteStruct( fs ); - - __END__; -} - - -CvMat* -CvBoost::get_weights() -{ - return weights; -} - - -CvMat* -CvBoost::get_subtree_weights() -{ - return subtree_weights; -} - - -CvMat* -CvBoost::get_weak_response() -{ - return weak_eval; -} - - -const CvBoostParams& -CvBoost::get_params() const -{ - return params; -} - -CvSeq* CvBoost::get_weak_predictors() -{ - return weak; -} - -const CvDTreeTrainData* CvBoost::get_data() const -{ - return data; -} - -using namespace cv; - -CvBoost::CvBoost( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, - CvBoostParams _params ) -{ - weak = 0; - data = 0; - default_model_name = "my_boost_tree"; - active_vars = active_vars_abs = orig_response = sum_response = weak_eval = - subsample_mask = weights = subtree_weights = 0; - - train( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params ); -} - - -bool -CvBoost::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, - CvBoostParams _params, bool _update ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, _params, _update); -} - -float -CvBoost::predict( const Mat& _sample, const Mat& _missing, - const Range& slice, bool raw_mode, bool return_sum ) const -{ - CvMat sample = _sample, mmask = _missing; - /*if( weak_responses ) + void readParams( const FileNode& fn ) { - int weak_count = cvSliceLength( slice, weak ); - if( weak_count >= weak->total ) + DTreesImpl::readParams(fn); + bparams.maxDepth = params0.maxDepth; + bparams.minSampleCount = params0.minSampleCount; + bparams.regressionAccuracy = params0.regressionAccuracy; + bparams.useSurrogates = params0.useSurrogates; + bparams.maxCategories = params0.maxCategories; + bparams.priors = params0.priors; + + FileNode tparams_node = fn["training_params"]; + String bts = (String)tparams_node["boosting_type"]; + bparams.boostType = (bts == "DiscreteAdaboost" ? Boost::DISCRETE : + bts == "RealAdaboost" ? Boost::REAL : + bts == "LogitBoost" ? Boost::LOGIT : + bts == "GentleAdaboost" ? Boost::GENTLE : -1); + _isClassifier = bparams.boostType == Boost::DISCRETE; + bparams.weightTrimRate = (double)tparams_node["weight_trimming_rate"]; + } + + void read( const FileNode& fn ) + { + clear(); + + int ntrees = (int)fn["ntrees"]; + readParams(fn); + + FileNode trees_node = fn["trees"]; + FileNodeIterator it = trees_node.begin(); + CV_Assert( ntrees == (int)trees_node.size() ); + + for( int treeidx = 0; treeidx < ntrees; treeidx++, ++it ) { - weak_count = weak->total; - slice.start_index = 0; + FileNode nfn = (*it)["nodes"]; + readTree(nfn); } + } - if( !(weak_responses->data && weak_responses->type() == CV_32FC1 && - (weak_responses->cols == 1 || weak_responses->rows == 1) && - weak_responses->cols + weak_responses->rows - 1 == weak_count) ) - weak_responses->create(weak_count, 1, CV_32FC1); - pwr = &(wr = *weak_responses); - }*/ - return predict(&sample, _missing.empty() ? 0 : &mmask, 0, - slice == Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), - raw_mode, return_sum); + Boost::Params bparams; + vector sumResult; +}; + + +class BoostImpl : public Boost +{ +public: + BoostImpl() {} + virtual ~BoostImpl() {} + + String getDefaultModelName() const { return "opencv_ml_boost"; } + + bool train( const Ptr& trainData, int flags ) + { + return impl.train(trainData, flags); + } + + float predict( InputArray samples, OutputArray results, int flags ) const + { + return impl.predict(samples, results, flags); + } + + void write( FileStorage& fs ) const + { + impl.write(fs); + } + + void read( const FileNode& fn ) + { + impl.read(fn); + } + + void setBParams(const Params& p) { impl.setBParams(p); } + Params getBParams() const { return impl.getBParams(); } + + int getVarCount() const { return impl.getVarCount(); } + + bool isTrained() const { return impl.isTrained(); } + bool isClassifier() const { return impl.isClassifier(); } + + const vector& getRoots() const { return impl.getRoots(); } + const vector& getNodes() const { return impl.getNodes(); } + const vector& getSplits() const { return impl.getSplits(); } + const vector& getSubsets() const { return impl.getSubsets(); } + + DTreesImplForBoost impl; +}; + + +Ptr Boost::create(const Params& params) +{ + Ptr p = makePtr(); + p->setBParams(params); + return p; } +}} + /* End of file. */ diff --git a/modules/ml/src/cnn.cpp b/modules/ml/src/cnn.cpp deleted file mode 100644 index 0e0b1d08b7..0000000000 --- a/modules/ml/src/cnn.cpp +++ /dev/null @@ -1,1675 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "precomp.hpp" - -#if 0 -/****************************************************************************************\ -* Auxilary functions declarations * -\****************************************************************************************/ -/*---------------------- functions for the CNN classifier ------------------------------*/ -static float icvCNNModelPredict( - const CvStatModel* cnn_model, - const CvMat* image, - CvMat* probs CV_DEFAULT(0) ); - -static void icvCNNModelUpdate( - CvStatModel* cnn_model, const CvMat* images, int tflag, - const CvMat* responses, const CvStatModelParams* params, - const CvMat* CV_DEFAULT(0), const CvMat* sample_idx CV_DEFAULT(0), - const CvMat* CV_DEFAULT(0), const CvMat* CV_DEFAULT(0)); - -static void icvCNNModelRelease( CvStatModel** cnn_model ); - -static void icvTrainCNNetwork( CvCNNetwork* network, - const float** images, - const CvMat* responses, - const CvMat* etalons, - int grad_estim_type, - int max_iter, - int start_iter ); - -/*------------------------- functions for the CNN network ------------------------------*/ -static void icvCNNetworkAddLayer( CvCNNetwork* network, CvCNNLayer* layer ); -static void icvCNNetworkRelease( CvCNNetwork** network ); - -/* In all layer functions we denote input by X and output by Y, where - X and Y are column-vectors, so that - length(X)==**, - length(Y)==**. -*/ -/*------------------------ functions for convolutional layer ---------------------------*/ -static void icvCNNConvolutionRelease( CvCNNLayer** p_layer ); - -static void icvCNNConvolutionForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNConvolutionBackward( CvCNNLayer* layer, int t, - const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ); - -/*------------------------ functions for sub-sampling layer ----------------------------*/ -static void icvCNNSubSamplingRelease( CvCNNLayer** p_layer ); - -static void icvCNNSubSamplingForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNSubSamplingBackward( CvCNNLayer* layer, int t, - const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ); - -/*------------------------ functions for full connected layer --------------------------*/ -static void icvCNNFullConnectRelease( CvCNNLayer** p_layer ); - -static void icvCNNFullConnectForward( CvCNNLayer* layer, const CvMat* X, CvMat* Y ); - -static void icvCNNFullConnectBackward( CvCNNLayer* layer, int, - const CvMat*, const CvMat* dE_dY, CvMat* dE_dX ); - -/****************************************************************************************\ -* Functions implementations * -\****************************************************************************************/ - -#define ICV_CHECK_CNN_NETWORK(network) \ -{ \ - CvCNNLayer* first_layer, *layer, *last_layer; \ - int n_layers, i; \ - if( !network ) \ - CV_ERROR( CV_StsNullPtr, \ - "Null pointer. Network must be created by user." ); \ - n_layers = network->n_layers; \ - first_layer = last_layer = network->layers; \ - for( i = 0, layer = first_layer; i < n_layers && layer; i++ ) \ - { \ - if( !ICV_IS_CNN_LAYER(layer) ) \ - CV_ERROR( CV_StsNullPtr, "Invalid network" ); \ - last_layer = layer; \ - layer = layer->next_layer; \ - } \ - \ - if( i == 0 || i != n_layers || first_layer->prev_layer || layer ) \ - CV_ERROR( CV_StsNullPtr, "Invalid network" ); \ - \ - if( first_layer->n_input_planes != 1 ) \ - CV_ERROR( CV_StsBadArg, "First layer must contain only one input plane" ); \ - \ - if( img_size != first_layer->input_height*first_layer->input_width ) \ - CV_ERROR( CV_StsBadArg, "Invalid input sizes of the first layer" ); \ - \ - if( params->etalons->cols != last_layer->n_output_planes* \ - last_layer->output_height*last_layer->output_width ) \ - CV_ERROR( CV_StsBadArg, "Invalid output sizes of the last layer" ); \ -} - -#define ICV_CHECK_CNN_MODEL_PARAMS(params) \ -{ \ - if( !params ) \ - CV_ERROR( CV_StsNullPtr, "Null pointer" ); \ - \ - if( !ICV_IS_MAT_OF_TYPE(params->etalons, CV_32FC1) ) \ - CV_ERROR( CV_StsBadArg, " must be CV_32FC1 type" ); \ - if( params->etalons->rows != cnn_model->cls_labels->cols ) \ - CV_ERROR( CV_StsBadArg, "Invalid size" ); \ - \ - if( params->grad_estim_type != CV_CNN_GRAD_ESTIM_RANDOM && \ - params->grad_estim_type != CV_CNN_GRAD_ESTIM_BY_WORST_IMG ) \ - CV_ERROR( CV_StsBadArg, "Invalid " ); \ - \ - if( params->start_iter < 0 ) \ - CV_ERROR( CV_StsBadArg, "Parameter must be positive or zero" ); \ - \ - if( params->max_iter < 1 ) \ - params->max_iter = 1; \ -} - -/****************************************************************************************\ -* Classifier functions * -\****************************************************************************************/ -ML_IMPL CvStatModel* -cvTrainCNNClassifier( const CvMat* _train_data, int tflag, - const CvMat* _responses, - const CvStatModelParams* _params, - const CvMat*, const CvMat* _sample_idx, const CvMat*, const CvMat* ) -{ - CvCNNStatModel* cnn_model = 0; - const float** out_train_data = 0; - CvMat* responses = 0; - - CV_FUNCNAME("cvTrainCNNClassifier"); - __BEGIN__; - - int n_images; - int img_size; - CvCNNStatModelParams* params = (CvCNNStatModelParams*)_params; - - CV_CALL(cnn_model = (CvCNNStatModel*)cvCreateStatModel( - CV_STAT_MODEL_MAGIC_VAL|CV_CNN_MAGIC_VAL, sizeof(CvCNNStatModel), - icvCNNModelRelease, icvCNNModelPredict, icvCNNModelUpdate )); - - CV_CALL(cvPrepareTrainData( "cvTrainCNNClassifier", - _train_data, tflag, _responses, CV_VAR_CATEGORICAL, - 0, _sample_idx, false, &out_train_data, - &n_images, &img_size, &img_size, &responses, - &cnn_model->cls_labels, 0 )); - - ICV_CHECK_CNN_MODEL_PARAMS(params); - ICV_CHECK_CNN_NETWORK(params->network); - - cnn_model->network = params->network; - CV_CALL(cnn_model->etalons = (CvMat*)cvClone( params->etalons )); - - CV_CALL( icvTrainCNNetwork( cnn_model->network, out_train_data, responses, - cnn_model->etalons, params->grad_estim_type, params->max_iter, - params->start_iter )); - - __END__; - - if( cvGetErrStatus() < 0 && cnn_model ) - { - cnn_model->release( (CvStatModel**)&cnn_model ); - } - cvFree( &out_train_data ); - cvReleaseMat( &responses ); - - return (CvStatModel*)cnn_model; -} - -/****************************************************************************************/ -static void icvTrainCNNetwork( CvCNNetwork* network, - const float** images, - const CvMat* responses, - const CvMat* etalons, - int grad_estim_type, - int max_iter, - int start_iter ) -{ - CvMat** X = 0; - CvMat** dE_dX = 0; - const int n_layers = network->n_layers; - int k; - - CV_FUNCNAME("icvTrainCNNetwork"); - __BEGIN__; - - CvCNNLayer* first_layer = network->layers; - const int img_height = first_layer->input_height; - const int img_width = first_layer->input_width; - const int img_size = img_width*img_height; - const int n_images = responses->cols; - CvMat image = cvMat( 1, img_size, CV_32FC1 ); - CvCNNLayer* layer; - int n; - CvRNG rng = cvRNG(-1); - - CV_CALL(X = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - CV_CALL(dE_dX = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - memset( X, 0, (n_layers+1)*sizeof(CvMat*) ); - memset( dE_dX, 0, (n_layers+1)*sizeof(CvMat*) ); - - CV_CALL(X[0] = cvCreateMat( img_height*img_width,1,CV_32FC1 )); - CV_CALL(dE_dX[0] = cvCreateMat( 1, X[0]->rows, CV_32FC1 )); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - { - CV_CALL(X[k+1] = cvCreateMat( layer->n_output_planes*layer->output_height* - layer->output_width, 1, CV_32FC1 )); - CV_CALL(dE_dX[k+1] = cvCreateMat( 1, X[k+1]->rows, CV_32FC1 )); - } - - for( n = 1; n <= max_iter; n++ ) - { - float loss, max_loss = 0; - int i; - int worst_img_idx = -1; - int* right_etal_idx = responses->data.i; - CvMat etalon; - - // Find the worst image (which produces the greatest loss) or use the random image - if( grad_estim_type == CV_CNN_GRAD_ESTIM_BY_WORST_IMG ) - { - for( i = 0; i < n_images; i++, right_etal_idx++ ) - { - image.data.fl = (float*)images[i]; - cvTranspose( &image, X[0] ); - - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - cvTranspose( X[n_layers], dE_dX[n_layers] ); - cvGetRow( etalons, &etalon, *right_etal_idx ); - loss = (float)cvNorm( dE_dX[n_layers], &etalon ); - if( loss > max_loss ) - { - max_loss = loss; - worst_img_idx = i; - } - } - } - else - worst_img_idx = cvRandInt(&rng) % n_images; - - // Train network on the worst image - // 1) Compute the network output on the - image.data.fl = (float*)images[worst_img_idx]; - CV_CALL(cvTranspose( &image, X[0] )); - - for( k = 0, layer = first_layer; k < n_layers - 1; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - // 2) Compute the gradient - cvTranspose( X[n_layers], dE_dX[n_layers] ); - cvGetRow( etalons, &etalon, responses->data.i[worst_img_idx] ); - cvSub( dE_dX[n_layers], &etalon, dE_dX[n_layers] ); - - // 3) Update weights by the gradient descent - for( k = n_layers; k > 0; k--, layer = layer->prev_layer ) - CV_CALL(layer->backward( layer, n + start_iter, X[k-1], dE_dX[k], dE_dX[k-1] )); - } - - __END__; - - for( k = 0; k <= n_layers; k++ ) - { - cvReleaseMat( &X[k] ); - cvReleaseMat( &dE_dX[k] ); - } - cvFree( &X ); - cvFree( &dE_dX ); -} - -/****************************************************************************************/ -static float icvCNNModelPredict( const CvStatModel* model, - const CvMat* _image, - CvMat* probs ) -{ - CvMat** X = 0; - float* img_data = 0; - int n_layers = 0; - int best_etal_idx = -1; - int k; - - CV_FUNCNAME("icvCNNModelPredict"); - __BEGIN__; - - CvCNNStatModel* cnn_model = (CvCNNStatModel*)model; - CvCNNLayer* first_layer, *layer = 0; - int img_height, img_width, img_size; - int nclasses, i; - float loss, min_loss = FLT_MAX; - float* probs_data; - CvMat etalon, image; - - if( !CV_IS_CNN(model) ) - CV_ERROR( CV_StsBadArg, "Invalid model" ); - - nclasses = cnn_model->cls_labels->cols; - n_layers = cnn_model->network->n_layers; - first_layer = cnn_model->network->layers; - img_height = first_layer->input_height; - img_width = first_layer->input_width; - img_size = img_height*img_width; - - cvPreparePredictData( _image, img_size, 0, nclasses, probs, &img_data ); - - CV_CALL(X = (CvMat**)cvAlloc( (n_layers+1)*sizeof(CvMat*) )); - memset( X, 0, (n_layers+1)*sizeof(CvMat*) ); - - CV_CALL(X[0] = cvCreateMat( img_size,1,CV_32FC1 )); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - { - CV_CALL(X[k+1] = cvCreateMat( layer->n_output_planes*layer->output_height* - layer->output_width, 1, CV_32FC1 )); - } - - image = cvMat( 1, img_size, CV_32FC1, img_data ); - cvTranspose( &image, X[0] ); - for( k = 0, layer = first_layer; k < n_layers; k++, layer = layer->next_layer ) - CV_CALL(layer->forward( layer, X[k], X[k+1] )); - - probs_data = probs ? probs->data.fl : 0; - etalon = cvMat( cnn_model->etalons->cols, 1, CV_32FC1, cnn_model->etalons->data.fl ); - for( i = 0; i < nclasses; i++, etalon.data.fl += cnn_model->etalons->cols ) - { - loss = (float)cvNorm( X[n_layers], &etalon ); - if( loss < min_loss ) - { - min_loss = loss; - best_etal_idx = i; - } - if( probs ) - *probs_data++ = -loss; - } - - if( probs ) - { - cvExp( probs, probs ); - CvScalar sum = cvSum( probs ); - cvConvertScale( probs, probs, 1./sum.val[0] ); - } - - __END__; - - for( k = 0; k <= n_layers; k++ ) - cvReleaseMat( &X[k] ); - cvFree( &X ); - if( img_data != _image->data.fl ) - cvFree( &img_data ); - - return ((float) ((CvCNNStatModel*)model)->cls_labels->data.i[best_etal_idx]); -} - -/****************************************************************************************/ -static void icvCNNModelUpdate( - CvStatModel* _cnn_model, const CvMat* _train_data, int tflag, - const CvMat* _responses, const CvStatModelParams* _params, - const CvMat*, const CvMat* _sample_idx, - const CvMat*, const CvMat* ) -{ - const float** out_train_data = 0; - CvMat* responses = 0; - CvMat* cls_labels = 0; - - CV_FUNCNAME("icvCNNModelUpdate"); - __BEGIN__; - - int n_images, img_size, i; - CvCNNStatModelParams* params = (CvCNNStatModelParams*)_params; - CvCNNStatModel* cnn_model = (CvCNNStatModel*)_cnn_model; - - if( !CV_IS_CNN(cnn_model) ) - CV_ERROR( CV_StsBadArg, "Invalid model" ); - - CV_CALL(cvPrepareTrainData( "cvTrainCNNClassifier", - _train_data, tflag, _responses, CV_VAR_CATEGORICAL, - 0, _sample_idx, false, &out_train_data, - &n_images, &img_size, &img_size, &responses, - &cls_labels, 0, 0 )); - - ICV_CHECK_CNN_MODEL_PARAMS(params); - - // Number of classes must be the same as when classifiers was created - if( !CV_ARE_SIZES_EQ(cls_labels, cnn_model->cls_labels) ) - CV_ERROR( CV_StsBadArg, "Number of classes must be left unchanged" ); - for( i = 0; i < cls_labels->cols; i++ ) - { - if( cls_labels->data.i[i] != cnn_model->cls_labels->data.i[i] ) - CV_ERROR( CV_StsBadArg, "Number of classes must be left unchanged" ); - } - - CV_CALL( icvTrainCNNetwork( cnn_model->network, out_train_data, responses, - cnn_model->etalons, params->grad_estim_type, params->max_iter, - params->start_iter )); - - __END__; - - cvFree( &out_train_data ); - cvReleaseMat( &responses ); -} - -/****************************************************************************************/ -static void icvCNNModelRelease( CvStatModel** cnn_model ) -{ - CV_FUNCNAME("icvCNNModelRelease"); - __BEGIN__; - - CvCNNStatModel* cnn; - if( !cnn_model ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - cnn = *(CvCNNStatModel**)cnn_model; - - cvReleaseMat( &cnn->cls_labels ); - cvReleaseMat( &cnn->etalons ); - cnn->network->release( &cnn->network ); - - cvFree( &cnn ); - - __END__; - -} - -/****************************************************************************************\ -* Network functions * -\****************************************************************************************/ -ML_IMPL CvCNNetwork* cvCreateCNNetwork( CvCNNLayer* first_layer ) -{ - CvCNNetwork* network = 0; - - CV_FUNCNAME( "cvCreateCNNetwork" ); - __BEGIN__; - - if( !ICV_IS_CNN_LAYER(first_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL(network = (CvCNNetwork*)cvAlloc( sizeof(CvCNNetwork) )); - memset( network, 0, sizeof(CvCNNetwork) ); - - network->layers = first_layer; - network->n_layers = 1; - network->release = icvCNNetworkRelease; - network->add_layer = icvCNNetworkAddLayer; - - __END__; - - if( cvGetErrStatus() < 0 && network ) - cvFree( &network ); - - return network; - -} - -/****************************************************************************************/ -static void icvCNNetworkAddLayer( CvCNNetwork* network, CvCNNLayer* layer ) -{ - CV_FUNCNAME( "icvCNNetworkAddLayer" ); - __BEGIN__; - - CvCNNLayer* prev_layer; - - if( network == NULL ) - CV_ERROR( CV_StsNullPtr, "Null pointer" ); - - prev_layer = network->layers; - while( prev_layer->next_layer ) - prev_layer = prev_layer->next_layer; - - if( ICV_IS_CNN_FULLCONNECT_LAYER(layer) ) - { - if( layer->n_input_planes != prev_layer->output_width*prev_layer->output_height* - prev_layer->n_output_planes ) - CV_ERROR( CV_StsBadArg, "Unmatched size of the new layer" ); - if( layer->input_height != 1 || layer->output_height != 1 || - layer->input_width != 1 || layer->output_width != 1 ) - CV_ERROR( CV_StsBadArg, "Invalid size of the new layer" ); - } - else if( ICV_IS_CNN_CONVOLUTION_LAYER(layer) || ICV_IS_CNN_SUBSAMPLING_LAYER(layer) ) - { - if( prev_layer->n_output_planes != layer->n_input_planes || - prev_layer->output_height != layer->input_height || - prev_layer->output_width != layer->input_width ) - CV_ERROR( CV_StsBadArg, "Unmatched size of the new layer" ); - } - else - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - layer->prev_layer = prev_layer; - prev_layer->next_layer = layer; - network->n_layers++; - - __END__; -} - -/****************************************************************************************/ -static void icvCNNetworkRelease( CvCNNetwork** network_pptr ) -{ - CV_FUNCNAME( "icvReleaseCNNetwork" ); - __BEGIN__; - - CvCNNetwork* network = 0; - CvCNNLayer* layer = 0, *next_layer = 0; - int k; - - if( network_pptr == NULL ) - CV_ERROR( CV_StsBadArg, "Null double pointer" ); - if( *network_pptr == NULL ) - return; - - network = *network_pptr; - layer = network->layers; - if( layer == NULL ) - CV_ERROR( CV_StsBadArg, "CNN is empty (does not contain any layer)" ); - - // k is the number of the layer to be deleted - for( k = 0; k < network->n_layers && layer; k++ ) - { - next_layer = layer->next_layer; - layer->release( &layer ); - layer = next_layer; - } - - if( k != network->n_layers || layer) - CV_ERROR( CV_StsBadArg, "Invalid network" ); - - cvFree( &network ); - - __END__; -} - -/****************************************************************************************\ -* Layer functions * -\****************************************************************************************/ -static CvCNNLayer* icvCreateCNNLayer( int layer_type, int header_size, - int n_input_planes, int input_height, int input_width, - int n_output_planes, int output_height, int output_width, - float init_learn_rate, int learn_rate_decrease_type, - CvCNNLayerRelease release, CvCNNLayerForward forward, CvCNNLayerBackward backward ) -{ - CvCNNLayer* layer = 0; - - CV_FUNCNAME("icvCreateCNNLayer"); - __BEGIN__; - - CV_ASSERT( release && forward && backward ) - CV_ASSERT( header_size >= sizeof(CvCNNLayer) ) - - if( n_input_planes < 1 || n_output_planes < 1 || - input_height < 1 || input_width < 1 || - output_height < 1 || output_width < 1 || - input_height < output_height || - input_width < output_width ) - CV_ERROR( CV_StsBadArg, "Incorrect input or output parameters" ); - if( init_learn_rate < FLT_EPSILON ) - CV_ERROR( CV_StsBadArg, "Initial learning rate must be positive" ); - if( learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_HYPERBOLICALLY && - learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_SQRT_INV && - learn_rate_decrease_type != CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - CV_ERROR( CV_StsBadArg, "Invalid type of learning rate dynamics" ); - - CV_CALL(layer = (CvCNNLayer*)cvAlloc( header_size )); - memset( layer, 0, header_size ); - - layer->flags = ICV_CNN_LAYER|layer_type; - CV_ASSERT( ICV_IS_CNN_LAYER(layer) ) - - layer->n_input_planes = n_input_planes; - layer->input_height = input_height; - layer->input_width = input_width; - - layer->n_output_planes = n_output_planes; - layer->output_height = output_height; - layer->output_width = output_width; - - layer->init_learn_rate = init_learn_rate; - layer->learn_rate_decrease_type = learn_rate_decrease_type; - - layer->release = release; - layer->forward = forward; - layer->backward = backward; - - __END__; - - if( cvGetErrStatus() < 0 && layer) - cvFree( &layer ); - - return layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNConvolutionLayer( - int n_input_planes, int input_height, int input_width, - int n_output_planes, int K, - float init_learn_rate, int learn_rate_decrease_type, - CvMat* connect_mask, CvMat* weights ) - -{ - CvCNNConvolutionLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNConvolutionLayer"); - __BEGIN__; - - const int output_height = input_height - K + 1; - const int output_width = input_width - K + 1; - - if( K < 1 || init_learn_rate <= 0 ) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNConvolutionLayer*)icvCreateCNNLayer( ICV_CNN_CONVOLUTION_LAYER, - sizeof(CvCNNConvolutionLayer), n_input_planes, input_height, input_width, - n_output_planes, output_height, output_width, - init_learn_rate, learn_rate_decrease_type, - icvCNNConvolutionRelease, icvCNNConvolutionForward, icvCNNConvolutionBackward )); - - layer->K = K; - CV_CALL(layer->weights = cvCreateMat( n_output_planes, K*K+1, CV_32FC1 )); - CV_CALL(layer->connect_mask = cvCreateMat( n_output_planes, n_input_planes, CV_8UC1)); - - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - if( connect_mask ) - { - if( !ICV_IS_MAT_OF_TYPE( connect_mask, CV_8UC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of connection matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( connect_mask, layer->connect_mask ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of connection matrix" ); - CV_CALL(cvCopy( connect_mask, layer->connect_mask )); - } - else - CV_CALL(cvSet( layer->connect_mask, cvRealScalar(1) )); - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->weights ); - cvReleaseMat( &layer->connect_mask ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNSubSamplingLayer( - int n_input_planes, int input_height, int input_width, - int sub_samp_scale, float a, float s, - float init_learn_rate, int learn_rate_decrease_type, CvMat* weights ) - -{ - CvCNNSubSamplingLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNSubSamplingLayer"); - __BEGIN__; - - const int output_height = input_height/sub_samp_scale; - const int output_width = input_width/sub_samp_scale; - const int n_output_planes = n_input_planes; - - if( sub_samp_scale < 1 || a <= 0 || s <= 0) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNSubSamplingLayer*)icvCreateCNNLayer( ICV_CNN_SUBSAMPLING_LAYER, - sizeof(CvCNNSubSamplingLayer), n_input_planes, input_height, input_width, - n_output_planes, output_height, output_width, - init_learn_rate, learn_rate_decrease_type, - icvCNNSubSamplingRelease, icvCNNSubSamplingForward, icvCNNSubSamplingBackward )); - - layer->sub_samp_scale = sub_samp_scale; - layer->a = a; - layer->s = s; - - CV_CALL(layer->sumX = - cvCreateMat( n_output_planes*output_width*output_height, 1, CV_32FC1 )); - CV_CALL(layer->exp2ssumWX = - cvCreateMat( n_output_planes*output_width*output_height, 1, CV_32FC1 )); - - cvZero( layer->sumX ); - cvZero( layer->exp2ssumWX ); - - CV_CALL(layer->weights = cvCreateMat( n_output_planes, 2, CV_32FC1 )); - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->exp2ssumWX ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - -/****************************************************************************************/ -ML_IMPL CvCNNLayer* cvCreateCNNFullConnectLayer( - int n_inputs, int n_outputs, float a, float s, - float init_learn_rate, int learn_rate_decrease_type, CvMat* weights ) -{ - CvCNNFullConnectLayer* layer = 0; - - CV_FUNCNAME("cvCreateCNNFullConnectLayer"); - __BEGIN__; - - if( a <= 0 || s <= 0 || init_learn_rate <= 0) - CV_ERROR( CV_StsBadArg, "Incorrect parameters" ); - - CV_CALL(layer = (CvCNNFullConnectLayer*)icvCreateCNNLayer( ICV_CNN_FULLCONNECT_LAYER, - sizeof(CvCNNFullConnectLayer), n_inputs, 1, 1, n_outputs, 1, 1, - init_learn_rate, learn_rate_decrease_type, - icvCNNFullConnectRelease, icvCNNFullConnectForward, icvCNNFullConnectBackward )); - - layer->a = a; - layer->s = s; - - CV_CALL(layer->exp2ssumWX = cvCreateMat( n_outputs, 1, CV_32FC1 )); - cvZero( layer->exp2ssumWX ); - - CV_CALL(layer->weights = cvCreateMat( n_outputs, n_inputs+1, CV_32FC1 )); - if( weights ) - { - if( !ICV_IS_MAT_OF_TYPE( weights, CV_32FC1 ) ) - CV_ERROR( CV_StsBadSize, "Type of initial weights matrix must be CV_32FC1" ); - if( !CV_ARE_SIZES_EQ( weights, layer->weights ) ) - CV_ERROR( CV_StsBadSize, "Invalid size of initial weights matrix" ); - CV_CALL(cvCopy( weights, layer->weights )); - } - else - { - CvRNG rng = cvRNG( 0xFFFFFFFF ); - cvRandArr( &rng, layer->weights, CV_RAND_UNI, cvRealScalar(-1), cvRealScalar(1) ); - } - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - { - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( &layer ); - } - - return (CvCNNLayer*)layer; -} - - -/****************************************************************************************\ -* Layer FORWARD functions * -\****************************************************************************************/ -static void icvCNNConvolutionForward( CvCNNLayer* _layer, - const CvMat* X, - CvMat* Y ) -{ - CV_FUNCNAME("icvCNNConvolutionForward"); - - if( !ICV_IS_CNN_CONVOLUTION_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNConvolutionLayer* layer = (CvCNNConvolutionLayer*) _layer; - - const int K = layer->K; - const int n_weights_for_Yplane = K*K + 1; - - const int nXplanes = layer->n_input_planes; - const int Xheight = layer->input_height; - const int Xwidth = layer->input_width ; - const int Xsize = Xwidth*Xheight; - - const int nYplanes = layer->n_output_planes; - const int Yheight = layer->output_height; - const int Ywidth = layer->output_width; - const int Ysize = Ywidth*Yheight; - - int xx, yy, ni, no, kx, ky; - float *Yplane = 0, *Xplane = 0, *w = 0; - uchar* connect_mask_data = 0; - - CV_ASSERT( X->rows == nXplanes*Xsize && X->cols == 1 ); - CV_ASSERT( Y->rows == nYplanes*Ysize && Y->cols == 1 ); - - cvSetZero( Y ); - - Yplane = Y->data.fl; - connect_mask_data = layer->connect_mask->data.ptr; - w = layer->weights->data.fl; - for( no = 0; no < nYplanes; no++, Yplane += Ysize, w += n_weights_for_Yplane ) - { - Xplane = X->data.fl; - for( ni = 0; ni < nXplanes; ni++, Xplane += Xsize, connect_mask_data++ ) - { - if( *connect_mask_data ) - { - float* Yelem = Yplane; - - // Xheight-K+1 == Yheight && Xwidth-K+1 == Ywidth - for( yy = 0; yy < Xheight-K+1; yy++ ) - { - for( xx = 0; xx < Xwidth-K+1; xx++, Yelem++ ) - { - float* templ = Xplane+yy*Xwidth+xx; - float WX = 0; - for( ky = 0; ky < K; ky++, templ += Xwidth-K ) - { - for( kx = 0; kx < K; kx++, templ++ ) - { - WX += *templ*w[ky*K+kx]; - } - } - *Yelem += WX + w[K*K]; - } - } - } - } - } - }__END__; -} - -/****************************************************************************************/ -static void icvCNNSubSamplingForward( CvCNNLayer* _layer, - const CvMat* X, - CvMat* Y ) -{ - CV_FUNCNAME("icvCNNSubSamplingForward"); - - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNSubSamplingLayer* layer = (CvCNNSubSamplingLayer*) _layer; - - const int sub_sampl_scale = layer->sub_samp_scale; - const int nplanes = layer->n_input_planes; - - const int Xheight = layer->input_height; - const int Xwidth = layer->input_width ; - const int Xsize = Xwidth*Xheight; - - const int Yheight = layer->output_height; - const int Ywidth = layer->output_width; - const int Ysize = Ywidth*Yheight; - - int xx, yy, ni, kx, ky; - float* sumX_data = 0, *w = 0; - CvMat sumX_sub_col, exp2ssumWX_sub_col; - - CV_ASSERT(X->rows == nplanes*Xsize && X->cols == 1); - CV_ASSERT(layer->exp2ssumWX->cols == 1 && layer->exp2ssumWX->rows == nplanes*Ysize); - - // update inner variable layer->exp2ssumWX, which will be used in back-progation - cvZero( layer->sumX ); - cvZero( layer->exp2ssumWX ); - - for( ky = 0; ky < sub_sampl_scale; ky++ ) - for( kx = 0; kx < sub_sampl_scale; kx++ ) - { - float* Xplane = X->data.fl; - sumX_data = layer->sumX->data.fl; - for( ni = 0; ni < nplanes; ni++, Xplane += Xsize ) - { - for( yy = 0; yy < Yheight; yy++ ) - for( xx = 0; xx < Ywidth; xx++, sumX_data++ ) - *sumX_data += Xplane[((yy+ky)*Xwidth+(xx+kx))]; - } - } - - w = layer->weights->data.fl; - cvGetRows( layer->sumX, &sumX_sub_col, 0, Ysize ); - cvGetRows( layer->exp2ssumWX, &exp2ssumWX_sub_col, 0, Ysize ); - for( ni = 0; ni < nplanes; ni++, w += 2 ) - { - CV_CALL(cvConvertScale( &sumX_sub_col, &exp2ssumWX_sub_col, w[0], w[1] )); - sumX_sub_col.data.fl += Ysize; - exp2ssumWX_sub_col.data.fl += Ysize; - } - - CV_CALL(cvScale( layer->exp2ssumWX, layer->exp2ssumWX, 2.0*layer->s )); - CV_CALL(cvExp( layer->exp2ssumWX, layer->exp2ssumWX )); - CV_CALL(cvMinS( layer->exp2ssumWX, FLT_MAX, layer->exp2ssumWX )); -//#ifdef _DEBUG - { - float* exp2ssumWX_data = layer->exp2ssumWX->data.fl; - for( ni = 0; ni < layer->exp2ssumWX->rows; ni++, exp2ssumWX_data++ ) - { - if( *exp2ssumWX_data == FLT_MAX ) - cvSetErrStatus( 1 ); - } - } -//#endif - // compute the output variable Y == ( a - 2a/(layer->exp2ssumWX + 1)) - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), Y )); - CV_CALL(cvDiv( 0, Y, Y, -2.0*layer->a )); - CV_CALL(cvAddS( Y, cvRealScalar(layer->a), Y )); - - }__END__; -} - -/****************************************************************************************/ -static void icvCNNFullConnectForward( CvCNNLayer* _layer, const CvMat* X, CvMat* Y ) -{ - CV_FUNCNAME("icvCNNFullConnectForward"); - - if( !ICV_IS_CNN_FULLCONNECT_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNFullConnectLayer* layer = (CvCNNFullConnectLayer*)_layer; - CvMat* weights = layer->weights; - CvMat sub_weights, bias; - - CV_ASSERT(X->cols == 1 && X->rows == layer->n_input_planes); - CV_ASSERT(Y->cols == 1 && Y->rows == layer->n_output_planes); - - CV_CALL(cvGetSubRect( weights, &sub_weights, - cvRect(0, 0, weights->cols-1, weights->rows ))); - CV_CALL(cvGetCol( weights, &bias, weights->cols-1)); - - // update inner variable layer->exp2ssumWX, which will be used in Back-Propagation - CV_CALL(cvGEMM( &sub_weights, X, 2*layer->s, &bias, 2*layer->s, layer->exp2ssumWX )); - CV_CALL(cvExp( layer->exp2ssumWX, layer->exp2ssumWX )); - CV_CALL(cvMinS( layer->exp2ssumWX, FLT_MAX, layer->exp2ssumWX )); -//#ifdef _DEBUG - { - float* exp2ssumWX_data = layer->exp2ssumWX->data.fl; - int i; - for( i = 0; i < layer->exp2ssumWX->rows; i++, exp2ssumWX_data++ ) - { - if( *exp2ssumWX_data == FLT_MAX ) - cvSetErrStatus( 1 ); - } - } -//#endif - // compute the output variable Y == ( a - 2a/(layer->exp2ssumWX + 1)) - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), Y )); - CV_CALL(cvDiv( 0, Y, Y, -2.0*layer->a )); - CV_CALL(cvAddS( Y, cvRealScalar(layer->a), Y )); - - }__END__; -} - -/****************************************************************************************\ -* Layer BACKWARD functions * -\****************************************************************************************/ - -/* , should be row-vectors. - Function computes partial derivatives - of the loss function with respect to the planes components - of the previous layer (X). - It is a basic function for back propagation method. - Input parameter is the partial derivative of the - loss function with respect to the planes components - of the current layer. */ -static void icvCNNConvolutionBackward( - CvCNNLayer* _layer, int t, const CvMat* X, const CvMat* dE_dY, CvMat* dE_dX ) -{ - CvMat* dY_dX = 0; - CvMat* dY_dW = 0; - CvMat* dE_dW = 0; - - CV_FUNCNAME("icvCNNConvolutionBackward"); - - if( !ICV_IS_CNN_CONVOLUTION_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNConvolutionLayer* layer = (CvCNNConvolutionLayer*) _layer; - - const int K = layer->K; - - const int n_X_planes = layer->n_input_planes; - const int X_plane_height = layer->input_height; - const int X_plane_width = layer->input_width; - const int X_plane_size = X_plane_height*X_plane_width; - - const int n_Y_planes = layer->n_output_planes; - const int Y_plane_height = layer->output_height; - const int Y_plane_width = layer->output_width; - const int Y_plane_size = Y_plane_height*Y_plane_width; - - int no, ni, yy, xx, ky, kx; - int X_idx = 0, Y_idx = 0; - - float *X_plane = 0, *w = 0; - - CvMat* weights = layer->weights; - - CV_ASSERT( t >= 1 ); - CV_ASSERT( n_Y_planes == weights->rows ); - - dY_dX = cvCreateMat( n_Y_planes*Y_plane_size, X->rows, CV_32FC1 ); - dY_dW = cvCreateMat( dY_dX->rows, weights->cols*weights->rows, CV_32FC1 ); - dE_dW = cvCreateMat( 1, dY_dW->cols, CV_32FC1 ); - - cvZero( dY_dX ); - cvZero( dY_dW ); - - // compute gradient of the loss function with respect to X and W - for( no = 0; no < n_Y_planes; no++, Y_idx += Y_plane_size ) - { - w = weights->data.fl + no*(K*K+1); - X_idx = 0; - X_plane = X->data.fl; - for( ni = 0; ni < n_X_planes; ni++, X_plane += X_plane_size ) - { - if( layer->connect_mask->data.ptr[ni*n_Y_planes+no] ) - { - for( yy = 0; yy < X_plane_height - K + 1; yy++ ) - { - for( xx = 0; xx < X_plane_width - K + 1; xx++ ) - { - for( ky = 0; ky < K; ky++ ) - { - for( kx = 0; kx < K; kx++ ) - { - CV_MAT_ELEM(*dY_dX, float, Y_idx+yy*Y_plane_width+xx, - X_idx+(yy+ky)*X_plane_width+(xx+kx)) = w[ky*K+kx]; - - // dY_dWi, i=1,...,K*K - CV_MAT_ELEM(*dY_dW, float, Y_idx+yy*Y_plane_width+xx, - no*(K*K+1)+ky*K+kx) += - X_plane[(yy+ky)*X_plane_width+(xx+kx)]; - } - } - // dY_dW(K*K+1)==1 because W(K*K+1) is bias - CV_MAT_ELEM(*dY_dW, float, Y_idx+yy*Y_plane_width+xx, - no*(K*K+1)+K*K) += 1; - } - } - } - X_idx += X_plane_size; - } - } - - CV_CALL(cvMatMul( dE_dY, dY_dW, dE_dW )); - CV_CALL(cvMatMul( dE_dY, dY_dX, dE_dX )); - - // update weights - { - CvMat dE_dW_mat; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, weights->rows ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dY_dX ); - cvReleaseMat( &dY_dW ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************/ -static void icvCNNSubSamplingBackward( - CvCNNLayer* _layer, int t, const CvMat*, const CvMat* dE_dY, CvMat* dE_dX ) -{ - // derivative of activation function - CvMat* dY_dX_elems = 0; // elements of matrix dY_dX - CvMat* dY_dW_elems = 0; // elements of matrix dY_dW - CvMat* dE_dW = 0; - - CV_FUNCNAME("icvCNNSubSamplingBackward"); - - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNSubSamplingLayer* layer = (CvCNNSubSamplingLayer*) _layer; - - const int Xwidth = layer->input_width; - const int Ywidth = layer->output_width; - const int Yheight = layer->output_height; - const int Ysize = Ywidth * Yheight; - const int scale = layer->sub_samp_scale; - const int k_max = layer->n_output_planes * Yheight; - - int k, i, j, m; - float* dY_dX_current_elem = 0, *dE_dX_start = 0, *dE_dW_data = 0, *w = 0; - CvMat dy_dw0, dy_dw1; - CvMat activ_func_der, sumX_row; - CvMat dE_dY_sub_row, dY_dX_sub_col, dy_dw0_sub_row, dy_dw1_sub_row; - - CV_CALL(dY_dX_elems = cvCreateMat( layer->sumX->rows, 1, CV_32FC1 )); - CV_CALL(dY_dW_elems = cvCreateMat( 2, layer->sumX->rows, CV_32FC1 )); - CV_CALL(dE_dW = cvCreateMat( 1, 2*layer->n_output_planes, CV_32FC1 )); - - // compute derivative of activ.func. - // == = 4as*(layer->exp2ssumWX)/(layer->exp2ssumWX + 1)^2 - CV_CALL(cvAddS( layer->exp2ssumWX, cvRealScalar(1), dY_dX_elems )); - CV_CALL(cvPow( dY_dX_elems, dY_dX_elems, -2.0 )); - CV_CALL(cvMul( dY_dX_elems, layer->exp2ssumWX, dY_dX_elems, 4.0*layer->a*layer->s )); - - // compute - // a) compute - cvReshape( dY_dX_elems, &activ_func_der, 0, 1 ); - cvGetRow( dY_dW_elems, &dy_dw0, 0 ); - cvGetRow( dY_dW_elems, &dy_dw1, 1 ); - CV_CALL(cvCopy( &activ_func_der, &dy_dw0 )); - CV_CALL(cvCopy( &activ_func_der, &dy_dw1 )); - - cvReshape( layer->sumX, &sumX_row, 0, 1 ); - cvMul( &dy_dw0, &sumX_row, &dy_dw0 ); - - // b) compute = * - cvGetCols( dE_dY, &dE_dY_sub_row, 0, Ysize ); - cvGetCols( &dy_dw0, &dy_dw0_sub_row, 0, Ysize ); - cvGetCols( &dy_dw1, &dy_dw1_sub_row, 0, Ysize ); - dE_dW_data = dE_dW->data.fl; - for( i = 0; i < layer->n_output_planes; i++ ) - { - *dE_dW_data++ = (float)cvDotProduct( &dE_dY_sub_row, &dy_dw0_sub_row ); - *dE_dW_data++ = (float)cvDotProduct( &dE_dY_sub_row, &dy_dw1_sub_row ); - - dE_dY_sub_row.data.fl += Ysize; - dy_dw0_sub_row.data.fl += Ysize; - dy_dw1_sub_row.data.fl += Ysize; - } - - // compute = layer->weights* - w = layer->weights->data.fl; - cvGetRows( dY_dX_elems, &dY_dX_sub_col, 0, Ysize ); - for( i = 0; i < layer->n_input_planes; i++, w++, dY_dX_sub_col.data.fl += Ysize ) - CV_CALL(cvConvertScale( &dY_dX_sub_col, &dY_dX_sub_col, (float)*w )); - - // compute - CV_CALL(cvReshape( dY_dX_elems, dY_dX_elems, 0, 1 )); - CV_CALL(cvMul( dY_dX_elems, dE_dY, dY_dX_elems )); - - dY_dX_current_elem = dY_dX_elems->data.fl; - dE_dX_start = dE_dX->data.fl; - for( k = 0; k < k_max; k++ ) - { - for( i = 0; i < Ywidth; i++, dY_dX_current_elem++ ) - { - float* dE_dX_current_elem = dE_dX_start; - for( j = 0; j < scale; j++, dE_dX_current_elem += Xwidth - scale ) - { - for( m = 0; m < scale; m++, dE_dX_current_elem++ ) - *dE_dX_current_elem = *dY_dX_current_elem; - } - dE_dX_start += scale; - } - dE_dX_start += Xwidth * (scale - 1); - } - - // update weights - { - CvMat dE_dW_mat, *weights = layer->weights; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, weights->rows ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dY_dX_elems ); - cvReleaseMat( &dY_dW_elems ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************/ -/* , should be row-vectors. - Function computes partial derivatives , - of the loss function with respect to the planes components - of the previous layer (X) and the weights of the current layer (W) - and updates weights od the current layer by using . - It is a basic function for back propagation method. - Input parameter is the partial derivative of the - loss function with respect to the planes components - of the current layer. */ -static void icvCNNFullConnectBackward( CvCNNLayer* _layer, - int t, - const CvMat* X, - const CvMat* dE_dY, - CvMat* dE_dX ) -{ - CvMat* dE_dY_activ_func_der = 0; - CvMat* dE_dW = 0; - - CV_FUNCNAME( "icvCNNFullConnectBackward" ); - - if( !ICV_IS_CNN_FULLCONNECT_LAYER(_layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - {__BEGIN__; - - const CvCNNFullConnectLayer* layer = (CvCNNFullConnectLayer*)_layer; - const int n_outputs = layer->n_output_planes; - const int n_inputs = layer->n_input_planes; - - int i; - float* dE_dY_activ_func_der_data; - CvMat* weights = layer->weights; - CvMat sub_weights, Xtemplate, Xrow, exp2ssumWXrow; - - CV_ASSERT(X->cols == 1 && X->rows == n_inputs); - CV_ASSERT(dE_dY->rows == 1 && dE_dY->cols == n_outputs ); - CV_ASSERT(dE_dX->rows == 1 && dE_dX->cols == n_inputs ); - - // we violate the convetion about vector's orientation because - // here is more convenient to make this parameter a row-vector - CV_CALL(dE_dY_activ_func_der = cvCreateMat( 1, n_outputs, CV_32FC1 )); - CV_CALL(dE_dW = cvCreateMat( 1, weights->rows*weights->cols, CV_32FC1 )); - - // 1) compute gradients dE_dX and dE_dW - // activ_func_der == 4as*(layer->exp2ssumWX)/(layer->exp2ssumWX + 1)^2 - CV_CALL(cvReshape( layer->exp2ssumWX, &exp2ssumWXrow, 0, layer->exp2ssumWX->cols )); - CV_CALL(cvAddS( &exp2ssumWXrow, cvRealScalar(1), dE_dY_activ_func_der )); - CV_CALL(cvPow( dE_dY_activ_func_der, dE_dY_activ_func_der, -2.0 )); - CV_CALL(cvMul( dE_dY_activ_func_der, &exp2ssumWXrow, dE_dY_activ_func_der, - 4.0*layer->a*layer->s )); - CV_CALL(cvMul( dE_dY, dE_dY_activ_func_der, dE_dY_activ_func_der )); - - // sub_weights = d(W*(X|1))/dX - CV_CALL(cvGetSubRect( weights, &sub_weights, - cvRect(0, 0, weights->cols-1, weights->rows) )); - CV_CALL(cvMatMul( dE_dY_activ_func_der, &sub_weights, dE_dX )); - - cvReshape( X, &Xrow, 0, 1 ); - dE_dY_activ_func_der_data = dE_dY_activ_func_der->data.fl; - Xtemplate = cvMat( 1, n_inputs, CV_32FC1, dE_dW->data.fl ); - for( i = 0; i < n_outputs; i++, Xtemplate.data.fl += n_inputs + 1 ) - { - CV_CALL(cvConvertScale( &Xrow, &Xtemplate, *dE_dY_activ_func_der_data )); - Xtemplate.data.fl[n_inputs] = *dE_dY_activ_func_der_data++; - } - - // 2) update weights - { - CvMat dE_dW_mat; - float eta; - if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_LOG_INV ) - eta = -layer->init_learn_rate/logf(1+(float)t); - else if( layer->learn_rate_decrease_type == CV_CNN_LEARN_RATE_DECREASE_SQRT_INV ) - eta = -layer->init_learn_rate/sqrtf((float)t); - else - eta = -layer->init_learn_rate/(float)t; - cvReshape( dE_dW, &dE_dW_mat, 0, n_outputs ); - cvScaleAdd( &dE_dW_mat, cvRealScalar(eta), weights, weights ); - } - - }__END__; - - cvReleaseMat( &dE_dY_activ_func_der ); - cvReleaseMat( &dE_dW ); -} - -/****************************************************************************************\ -* Layer RELEASE functions * -\****************************************************************************************/ -static void icvCNNConvolutionRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNConvolutionRelease"); - __BEGIN__; - - CvCNNConvolutionLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNConvolutionLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_CONVOLUTION_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->weights ); - cvReleaseMat( &layer->connect_mask ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************/ -static void icvCNNSubSamplingRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNSubSamplingRelease"); - __BEGIN__; - - CvCNNSubSamplingLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNSubSamplingLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_SUBSAMPLING_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************/ -static void icvCNNFullConnectRelease( CvCNNLayer** p_layer ) -{ - CV_FUNCNAME("icvCNNFullConnectRelease"); - __BEGIN__; - - CvCNNFullConnectLayer* layer = 0; - - if( !p_layer ) - CV_ERROR( CV_StsNullPtr, "Null double pointer" ); - - layer = *(CvCNNFullConnectLayer**)p_layer; - - if( !layer ) - return; - if( !ICV_IS_CNN_FULLCONNECT_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - cvReleaseMat( &layer->exp2ssumWX ); - cvReleaseMat( &layer->weights ); - cvFree( p_layer ); - - __END__; -} - -/****************************************************************************************\ -* Read/Write CNN classifier * -\****************************************************************************************/ -static int icvIsCNNModel( const void* ptr ) -{ - return CV_IS_CNN(ptr); -} - -/****************************************************************************************/ -static void icvReleaseCNNModel( void** ptr ) -{ - CV_FUNCNAME("icvReleaseCNNModel"); - __BEGIN__; - - if( !ptr ) - CV_ERROR( CV_StsNullPtr, "NULL double pointer" ); - CV_ASSERT(CV_IS_CNN(*ptr)); - - icvCNNModelRelease( (CvStatModel**)ptr ); - - __END__; -} - -/****************************************************************************************/ -static CvCNNLayer* icvReadCNNLayer( CvFileStorage* fs, CvFileNode* node ) -{ - CvCNNLayer* layer = 0; - CvMat* weights = 0; - CvMat* connect_mask = 0; - - CV_FUNCNAME("icvReadCNNLayer"); - __BEGIN__; - - int n_input_planes, input_height, input_width; - int n_output_planes, output_height, output_width; - int learn_type, layer_type; - float init_learn_rate; - - CV_CALL(n_input_planes = cvReadIntByName( fs, node, "n_input_planes", -1 )); - CV_CALL(input_height = cvReadIntByName( fs, node, "input_height", -1 )); - CV_CALL(input_width = cvReadIntByName( fs, node, "input_width", -1 )); - CV_CALL(n_output_planes = cvReadIntByName( fs, node, "n_output_planes", -1 )); - CV_CALL(output_height = cvReadIntByName( fs, node, "output_height", -1 )); - CV_CALL(output_width = cvReadIntByName( fs, node, "output_width", -1 )); - CV_CALL(layer_type = cvReadIntByName( fs, node, "layer_type", -1 )); - - CV_CALL(init_learn_rate = (float)cvReadRealByName( fs, node, "init_learn_rate", -1 )); - CV_CALL(learn_type = cvReadIntByName( fs, node, "learn_rate_decrease_type", -1 )); - CV_CALL(weights = (CvMat*)cvReadByName( fs, node, "weights" )); - - if( n_input_planes < 0 || input_height < 0 || input_width < 0 || - n_output_planes < 0 || output_height < 0 || output_width < 0 || - init_learn_rate < 0 || learn_type < 0 || layer_type < 0 || !weights ) - CV_ERROR( CV_StsParseError, "" ); - - if( layer_type == ICV_CNN_CONVOLUTION_LAYER ) - { - const int K = input_height - output_height + 1; - if( K <= 0 || K != input_width - output_width + 1 ) - CV_ERROR( CV_StsBadArg, "Invalid " ); - - CV_CALL(connect_mask = (CvMat*)cvReadByName( fs, node, "connect_mask" )); - if( !connect_mask ) - CV_ERROR( CV_StsParseError, "Missing " ); - - CV_CALL(layer = cvCreateCNNConvolutionLayer( - n_input_planes, input_height, input_width, n_output_planes, K, - init_learn_rate, learn_type, connect_mask, weights )); - } - else if( layer_type == ICV_CNN_SUBSAMPLING_LAYER ) - { - float a, s; - const int sub_samp_scale = input_height/output_height; - - if( sub_samp_scale <= 0 || sub_samp_scale != input_width/output_width ) - CV_ERROR( CV_StsBadArg, "Invalid " ); - - CV_CALL(a = (float)cvReadRealByName( fs, node, "a", -1 )); - CV_CALL(s = (float)cvReadRealByName( fs, node, "s", -1 )); - if( a < 0 || s < 0 ) - CV_ERROR( CV_StsParseError, "Missing or " ); - - CV_CALL(layer = cvCreateCNNSubSamplingLayer( - n_input_planes, input_height, input_width, sub_samp_scale, - a, s, init_learn_rate, learn_type, weights )); - } - else if( layer_type == ICV_CNN_FULLCONNECT_LAYER ) - { - float a, s; - CV_CALL(a = (float)cvReadRealByName( fs, node, "a", -1 )); - CV_CALL(s = (float)cvReadRealByName( fs, node, "s", -1 )); - if( a < 0 || s < 0 ) - CV_ERROR( CV_StsParseError, "" ); - if( input_height != 1 || input_width != 1 || - output_height != 1 || output_width != 1 ) - CV_ERROR( CV_StsBadArg, "" ); - - CV_CALL(layer = cvCreateCNNFullConnectLayer( n_input_planes, n_output_planes, - a, s, init_learn_rate, learn_type, weights )); - } - else - CV_ERROR( CV_StsBadArg, "Invalid " ); - - __END__; - - if( cvGetErrStatus() < 0 && layer ) - layer->release( &layer ); - - cvReleaseMat( &weights ); - cvReleaseMat( &connect_mask ); - - return layer; -} - -/****************************************************************************************/ -static void icvWriteCNNLayer( CvFileStorage* fs, CvCNNLayer* layer ) -{ - CV_FUNCNAME ("icvWriteCNNLayer"); - __BEGIN__; - - if( !ICV_IS_CNN_LAYER(layer) ) - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL( cvStartWriteStruct( fs, NULL, CV_NODE_MAP, "opencv-ml-cnn-layer" )); - - CV_CALL(cvWriteInt( fs, "n_input_planes", layer->n_input_planes )); - CV_CALL(cvWriteInt( fs, "input_height", layer->input_height )); - CV_CALL(cvWriteInt( fs, "input_width", layer->input_width )); - CV_CALL(cvWriteInt( fs, "n_output_planes", layer->n_output_planes )); - CV_CALL(cvWriteInt( fs, "output_height", layer->output_height )); - CV_CALL(cvWriteInt( fs, "output_width", layer->output_width )); - CV_CALL(cvWriteInt( fs, "learn_rate_decrease_type", layer->learn_rate_decrease_type)); - CV_CALL(cvWriteReal( fs, "init_learn_rate", layer->init_learn_rate )); - CV_CALL(cvWrite( fs, "weights", layer->weights )); - - if( ICV_IS_CNN_CONVOLUTION_LAYER( layer )) - { - CvCNNConvolutionLayer* l = (CvCNNConvolutionLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_CONVOLUTION_LAYER )); - CV_CALL(cvWrite( fs, "connect_mask", l->connect_mask )); - } - else if( ICV_IS_CNN_SUBSAMPLING_LAYER( layer ) ) - { - CvCNNSubSamplingLayer* l = (CvCNNSubSamplingLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_SUBSAMPLING_LAYER )); - CV_CALL(cvWriteReal( fs, "a", l->a )); - CV_CALL(cvWriteReal( fs, "s", l->s )); - } - else if( ICV_IS_CNN_FULLCONNECT_LAYER( layer ) ) - { - CvCNNFullConnectLayer* l = (CvCNNFullConnectLayer*)layer; - CV_CALL(cvWriteInt( fs, "layer_type", ICV_CNN_FULLCONNECT_LAYER )); - CV_CALL(cvWriteReal( fs, "a", l->a )); - CV_CALL(cvWriteReal( fs, "s", l->s )); - } - else - CV_ERROR( CV_StsBadArg, "Invalid layer" ); - - CV_CALL( cvEndWriteStruct( fs )); //"opencv-ml-cnn-layer" - - __END__; -} - -/****************************************************************************************/ -static void* icvReadCNNModel( CvFileStorage* fs, CvFileNode* root_node ) -{ - CvCNNStatModel* cnn = 0; - CvCNNLayer* layer = 0; - - CV_FUNCNAME("icvReadCNNModel"); - __BEGIN__; - - CvFileNode* node; - CvSeq* seq; - CvSeqReader reader; - int i; - - CV_CALL(cnn = (CvCNNStatModel*)cvCreateStatModel( - CV_STAT_MODEL_MAGIC_VAL|CV_CNN_MAGIC_VAL, sizeof(CvCNNStatModel), - icvCNNModelRelease, icvCNNModelPredict, icvCNNModelUpdate )); - - CV_CALL(cnn->etalons = (CvMat*)cvReadByName( fs, root_node, "etalons" )); - CV_CALL(cnn->cls_labels = (CvMat*)cvReadByName( fs, root_node, "cls_labels" )); - - if( !cnn->etalons || !cnn->cls_labels ) - CV_ERROR( CV_StsParseError, "No or in CNN model" ); - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "network" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) ) - CV_ERROR( CV_StsBadArg, "" ); - - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - CV_CALL(layer = icvReadCNNLayer( fs, (CvFileNode*)reader.ptr )); - CV_CALL(cnn->network = cvCreateCNNetwork( layer )); - - for( i = 1; i < seq->total; i++ ) - { - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - CV_CALL(layer = icvReadCNNLayer( fs, (CvFileNode*)reader.ptr )); - CV_CALL(cnn->network->add_layer( cnn->network, layer )); - } - - __END__; - - if( cvGetErrStatus() < 0 ) - { - if( cnn ) cnn->release( (CvStatModel**)&cnn ); - if( layer ) layer->release( &layer ); - } - return (void*)cnn; -} - -/****************************************************************************************/ -static void -icvWriteCNNModel( CvFileStorage* fs, const char* name, - const void* struct_ptr, CvAttrList ) - -{ - CV_FUNCNAME ("icvWriteCNNModel"); - __BEGIN__; - - CvCNNStatModel* cnn = (CvCNNStatModel*)struct_ptr; - int n_layers, i; - CvCNNLayer* layer; - - if( !CV_IS_CNN(cnn) ) - CV_ERROR( CV_StsBadArg, "Invalid pointer" ); - - n_layers = cnn->network->n_layers; - - CV_CALL( cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_CNN )); - - CV_CALL(cvWrite( fs, "etalons", cnn->etalons )); - CV_CALL(cvWrite( fs, "cls_labels", cnn->cls_labels )); - - CV_CALL( cvStartWriteStruct( fs, "network", CV_NODE_SEQ )); - - layer = cnn->network->layers; - for( i = 0; i < n_layers && layer; i++, layer = layer->next_layer ) - CV_CALL(icvWriteCNNLayer( fs, layer )); - if( i < n_layers || layer ) - CV_ERROR( CV_StsBadArg, "Invalid network" ); - - CV_CALL( cvEndWriteStruct( fs )); //"network" - CV_CALL( cvEndWriteStruct( fs )); //"opencv-ml-cnn" - - __END__; -} - -static int icvRegisterCNNStatModelType() -{ - CvTypeInfo info; - - info.header_size = sizeof( info ); - info.is_instance = icvIsCNNModel; - info.release = icvReleaseCNNModel; - info.read = icvReadCNNModel; - info.write = icvWriteCNNModel; - info.clone = NULL; - info.type_name = CV_TYPE_NAME_ML_CNN; - cvRegisterType( &info ); - - return 1; -} // End of icvRegisterCNNStatModelType - -static int cnn = icvRegisterCNNStatModelType(); - -#endif - -// End of file diff --git a/modules/ml/src/data.cpp b/modules/ml/src/data.cpp index 3af1e3bd02..c9a323a43a 100644 --- a/modules/ml/src/data.cpp +++ b/modules/ml/src/data.cpp @@ -40,753 +40,958 @@ #include "precomp.hpp" #include +#include +#include -#define MISS_VAL FLT_MAX -#define CV_VAR_MISS 0 +namespace cv { namespace ml { -CvTrainTestSplit::CvTrainTestSplit() +static const float MISSED_VAL = TrainData::missingValue(); +static const int VAR_MISSED = VAR_ORDERED; + +TrainData::~TrainData() {} + +Mat TrainData::getSubVector(const Mat& vec, const Mat& idx) { - train_sample_part_mode = CV_COUNT; - train_sample_part.count = -1; - mix = false; -} + if( idx.empty() ) + return vec; + int i, j, n = idx.checkVector(1, CV_32S); + int type = vec.type(); + CV_Assert( type == CV_32S || type == CV_32F || type == CV_64F ); + int dims = 1, m; -CvTrainTestSplit::CvTrainTestSplit( int _train_sample_count, bool _mix ) -{ - train_sample_part_mode = CV_COUNT; - train_sample_part.count = _train_sample_count; - mix = _mix; -} - -CvTrainTestSplit::CvTrainTestSplit( float _train_sample_portion, bool _mix ) -{ - train_sample_part_mode = CV_PORTION; - train_sample_part.portion = _train_sample_portion; - mix = _mix; -} - -//////////////// - -CvMLData::CvMLData() -{ - values = missing = var_types = var_idx_mask = response_out = var_idx_out = var_types_out = 0; - train_sample_idx = test_sample_idx = 0; - header_lines_number = 0; - sample_idx = 0; - response_idx = -1; - - train_sample_count = -1; - - delimiter = ','; - miss_ch = '?'; - //flt_separator = '.'; - - rng = &cv::theRNG(); -} - -CvMLData::~CvMLData() -{ - clear(); -} - -void CvMLData::free_train_test_idx() -{ - cvReleaseMat( &train_sample_idx ); - cvReleaseMat( &test_sample_idx ); - sample_idx = 0; -} - -void CvMLData::clear() -{ - class_map.clear(); - - cvReleaseMat( &values ); - cvReleaseMat( &missing ); - cvReleaseMat( &var_types ); - cvReleaseMat( &var_idx_mask ); - - cvReleaseMat( &response_out ); - cvReleaseMat( &var_idx_out ); - cvReleaseMat( &var_types_out ); - - free_train_test_idx(); - - total_class_count = 0; - - response_idx = -1; - - train_sample_count = -1; -} - - -void CvMLData::set_header_lines_number( int idx ) -{ - header_lines_number = std::max(0, idx); -} - -int CvMLData::get_header_lines_number() const -{ - return header_lines_number; -} - -static char *fgets_chomp(char *str, int n, FILE *stream) -{ - char *head = fgets(str, n, stream); - if( head ) + if( vec.cols == 1 || vec.rows == 1 ) { - for(char *tail = head + strlen(head) - 1; tail >= head; --tail) + dims = 1; + m = vec.cols + vec.rows - 1; + } + else + { + dims = vec.cols; + m = vec.rows; + } + + Mat subvec; + + if( vec.cols == m ) + subvec.create(dims, n, type); + else + subvec.create(n, dims, type); + if( type == CV_32S ) + for( i = 0; i < n; i++ ) { - if( *tail != '\r' && *tail != '\n' ) - break; - *tail = '\0'; + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); } - } - return head; + else if( type == CV_32F ) + for( i = 0; i < n; i++ ) + { + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); + } + else + for( i = 0; i < n; i++ ) + { + int k = idx.at(i); + CV_Assert( 0 <= k && k < m ); + if( dims == 1 ) + subvec.at(i) = vec.at(k); + else + for( j = 0; j < dims; j++ ) + subvec.at(i, j) = vec.at(k, j); + } + return subvec; } - -int CvMLData::read_csv(const char* filename) +class TrainDataImpl : public TrainData { - const int M = 1000000; - const char str_delimiter[3] = { ' ', delimiter, '\0' }; - FILE* file = 0; - CvMemStorage* storage; - CvSeq* seq; - char *ptr; - float* el_ptr; - CvSeqReader reader; - int cols_count = 0; - uchar *var_types_ptr = 0; +public: + typedef std::map MapType; - clear(); - - file = fopen( filename, "rt" ); - - if( !file ) - return -1; - - std::vector _buf(M); - char* buf = &_buf[0]; - - // skip header lines - for( int i = 0; i < header_lines_number; i++ ) + TrainDataImpl() { - if( fgets( buf, M, file ) == 0 ) + file = 0; + clear(); + } + + virtual ~TrainDataImpl() { closeFile(); } + + int getLayout() const { return layout; } + int getNSamples() const + { + return !sampleIdx.empty() ? (int)sampleIdx.total() : + layout == ROW_SAMPLE ? samples.rows : samples.cols; + } + int getNTrainSamples() const + { + return !trainSampleIdx.empty() ? (int)trainSampleIdx.total() : getNSamples(); + } + int getNTestSamples() const + { + return !testSampleIdx.empty() ? (int)testSampleIdx.total() : 0; + } + int getNVars() const + { + return !varIdx.empty() ? (int)varIdx.total() : getNAllVars(); + } + int getNAllVars() const + { + return layout == ROW_SAMPLE ? samples.cols : samples.rows; + } + + Mat getSamples() const { return samples; } + Mat getResponses() const { return responses; } + Mat getMissing() const { return missing; } + Mat getVarIdx() const { return varIdx; } + Mat getVarType() const { return varType; } + int getResponseType() const + { + return classLabels.empty() ? VAR_ORDERED : VAR_CATEGORICAL; + } + Mat getTrainSampleIdx() const { return !trainSampleIdx.empty() ? trainSampleIdx : sampleIdx; } + Mat getTestSampleIdx() const { return testSampleIdx; } + Mat getSampleWeights() const + { + return sampleWeights; + } + Mat getTrainSampleWeights() const + { + return getSubVector(sampleWeights, getTrainSampleIdx()); + } + Mat getTestSampleWeights() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(sampleWeights, idx); + } + Mat getTrainResponses() const + { + return getSubVector(responses, getTrainSampleIdx()); + } + Mat getTrainNormCatResponses() const + { + return getSubVector(normCatResponses, getTrainSampleIdx()); + } + Mat getTestResponses() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(responses, idx); + } + Mat getTestNormCatResponses() const + { + Mat idx = getTestSampleIdx(); + return idx.empty() ? Mat() : getSubVector(normCatResponses, idx); + } + Mat getNormCatResponses() const { return normCatResponses; } + Mat getClassLabels() const { return classLabels; } + Mat getClassCounters() const { return classCounters; } + int getCatCount(int vi) const + { + int n = (int)catOfs.total(); + CV_Assert( 0 <= vi && vi < n ); + Vec2i ofs = catOfs.at(vi); + return ofs[1] - ofs[0]; + } + + Mat getCatOfs() const { return catOfs; } + Mat getCatMap() const { return catMap; } + + Mat getDefaultSubstValues() const { return missingSubst; } + + void closeFile() { if(file) fclose(file); file=0; } + void clear() + { + closeFile(); + samples.release(); + missing.release(); + varType.release(); + responses.release(); + sampleIdx.release(); + trainSampleIdx.release(); + testSampleIdx.release(); + normCatResponses.release(); + classLabels.release(); + classCounters.release(); + catMap.release(); + catOfs.release(); + nameMap = MapType(); + layout = ROW_SAMPLE; + } + + typedef std::map CatMapHash; + + void setData(InputArray _samples, int _layout, InputArray _responses, + InputArray _varIdx, InputArray _sampleIdx, InputArray _sampleWeights, + InputArray _varType, InputArray _missing) + { + clear(); + + CV_Assert(_layout == ROW_SAMPLE || _layout == COL_SAMPLE ); + samples = _samples.getMat(); + layout = _layout; + responses = _responses.getMat(); + varIdx = _varIdx.getMat(); + sampleIdx = _sampleIdx.getMat(); + sampleWeights = _sampleWeights.getMat(); + varType = _varType.getMat(); + missing = _missing.getMat(); + + int nsamples = layout == ROW_SAMPLE ? samples.rows : samples.cols; + int ninputvars = layout == ROW_SAMPLE ? samples.cols : samples.rows; + int i, noutputvars = 0; + + CV_Assert( samples.type() == CV_32F || samples.type() == CV_32S ); + + if( !sampleIdx.empty() ) { - fclose(file); - return -1; + CV_Assert( (sampleIdx.checkVector(1, CV_32S, true) > 0 && + checkRange(sampleIdx, true, 0, 0, nsamples-1)) || + sampleIdx.checkVector(1, CV_8U, true) == nsamples ); + if( sampleIdx.type() == CV_8U ) + sampleIdx = convertMaskToIdx(sampleIdx); } - } - // read the first data line and determine the number of variables - if( !fgets_chomp( buf, M, file )) - { - fclose(file); - return -1; - } - - ptr = buf; - while( *ptr == ' ' ) - ptr++; - for( ; *ptr != '\0'; ) - { - if(*ptr == delimiter || *ptr == ' ') + if( !sampleWeights.empty() ) { - cols_count++; - ptr++; - while( *ptr == ' ' ) ptr++; + CV_Assert( sampleWeights.checkVector(1, CV_32F, true) == nsamples ); } else - ptr++; - } - - cols_count++; - - if ( cols_count == 0) - { - fclose(file); - return -1; - } - - // create temporary memory storage to store the whole database - el_ptr = new float[cols_count]; - storage = cvCreateMemStorage(); - seq = cvCreateSeq( 0, sizeof(*seq), cols_count*sizeof(float), storage ); - - var_types = cvCreateMat( 1, cols_count, CV_8U ); - cvZero( var_types ); - var_types_ptr = var_types->data.ptr; - - for(;;) - { - char *token = NULL; - int type; - token = strtok(buf, str_delimiter); - if (!token) - break; - for (int i = 0; i < cols_count-1; i++) { - str_to_flt_elem( token, el_ptr[i], type); - var_types_ptr[i] |= type; - token = strtok(NULL, str_delimiter); - if (!token) - { - fclose(file); - delete [] el_ptr; - return -1; - } + sampleWeights = Mat::ones(nsamples, 1, CV_32F); } - str_to_flt_elem( token, el_ptr[cols_count-1], type); - var_types_ptr[cols_count-1] |= type; - cvSeqPush( seq, el_ptr ); - if( !fgets_chomp( buf, M, file ) ) - break; - } - fclose(file); - values = cvCreateMat( seq->total, cols_count, CV_32FC1 ); - missing = cvCreateMat( seq->total, cols_count, CV_8U ); - var_idx_mask = cvCreateMat( 1, values->cols, CV_8UC1 ); - cvSet( var_idx_mask, cvRealScalar(1) ); - train_sample_count = seq->total; - - cvStartReadSeq( seq, &reader ); - for(int i = 0; i < seq->total; i++ ) - { - const float* sdata = (float*)reader.ptr; - float* ddata = values->data.fl + cols_count*i; - uchar* dm = missing->data.ptr + cols_count*i; - - for( int j = 0; j < cols_count; j++ ) + if( !varIdx.empty() ) { - ddata[j] = sdata[j]; - dm[j] = ( fabs( MISS_VAL - sdata[j] ) <= FLT_EPSILON ); + CV_Assert( (varIdx.checkVector(1, CV_32S, true) > 0 && + checkRange(varIdx, true, 0, 0, ninputvars)) || + varIdx.checkVector(1, CV_8U, true) == ninputvars ); + if( varIdx.type() == CV_8U ) + varIdx = convertMaskToIdx(varIdx); + varIdx = varIdx.clone(); + std::sort(varIdx.ptr(), varIdx.ptr() + varIdx.total()); } - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - if ( cvNorm( missing, 0, CV_L1 ) <= FLT_EPSILON ) - cvReleaseMat( &missing ); - - cvReleaseMemStorage( &storage ); - delete []el_ptr; - return 0; -} - -const CvMat* CvMLData::get_values() const -{ - return values; -} - -const CvMat* CvMLData::get_missing() const -{ - CV_FUNCNAME( "CvMLData::get_missing" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - __END__; - - return missing; -} - -const std::map& CvMLData::get_class_labels_map() const -{ - return class_map; -} - -void CvMLData::str_to_flt_elem( const char* token, float& flt_elem, int& type) -{ - - char* stopstring = NULL; - flt_elem = (float)strtod( token, &stopstring ); - assert( stopstring ); - type = CV_VAR_ORDERED; - if ( *stopstring == miss_ch && strlen(stopstring) == 1 ) // missed value - { - flt_elem = MISS_VAL; - type = CV_VAR_MISS; - } - else - { - if ( (*stopstring != 0) && (*stopstring != '\n') && (strcmp(stopstring, "\r\n") != 0) ) // class label + if( !responses.empty() ) { - int idx = class_map[token]; - if ( idx == 0) - { - total_class_count++; - idx = total_class_count; - class_map[token] = idx; - } - flt_elem = (float)idx; - type = CV_VAR_CATEGORICAL; - } - } -} - -void CvMLData::set_delimiter(char ch) -{ - CV_FUNCNAME( "CvMLData::set_delimited" ); - __BEGIN__; - - if (ch == miss_ch /*|| ch == flt_separator*/) - CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); - - delimiter = ch; - - __END__; -} - -char CvMLData::get_delimiter() const -{ - return delimiter; -} - -void CvMLData::set_miss_ch(char ch) -{ - CV_FUNCNAME( "CvMLData::set_miss_ch" ); - __BEGIN__; - - if (ch == delimiter/* || ch == flt_separator*/) - CV_ERROR(CV_StsBadArg, "delimited, miss_character and flt_separator must be different"); - - miss_ch = ch; - - __END__; -} - -char CvMLData::get_miss_ch() const -{ - return miss_ch; -} - -void CvMLData::set_response_idx( int idx ) -{ - CV_FUNCNAME( "CvMLData::set_response_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - if ( idx >= values->cols) - CV_ERROR( CV_StsBadArg, "idx value is not correct" ); - - if ( response_idx >= 0 ) - chahge_var_idx( response_idx, true ); - if ( idx >= 0 ) - chahge_var_idx( idx, false ); - response_idx = idx; - - __END__; -} - -int CvMLData::get_response_idx() const -{ - CV_FUNCNAME( "CvMLData::get_response_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - return response_idx; -} - -void CvMLData::change_var_type( int var_idx, int type ) -{ - CV_FUNCNAME( "CvMLData::change_var_type" ); - __BEGIN__; - - int var_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - var_count = values->cols; - - if ( var_idx < 0 || var_idx >= var_count) - CV_ERROR( CV_StsBadArg, "var_idx is not correct" ); - - if ( type != CV_VAR_ORDERED && type != CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "type is not correct" ); - - assert( var_types ); - if ( var_types->data.ptr[var_idx] == CV_VAR_CATEGORICAL && type == CV_VAR_ORDERED) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[var_idx] = (uchar)type; - - __END__; - - return; -} - -void CvMLData::set_var_types( const char* str ) -{ - CV_FUNCNAME( "CvMLData::set_var_types" ); - __BEGIN__; - - const char* ord = 0, *cat = 0; - int var_count = 0, set_var_type_count = 0; - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - var_count = values->cols; - - assert( var_types ); - - ord = strstr( str, "ord" ); - cat = strstr( str, "cat" ); - if ( !ord && !cat ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - if ( !ord && strlen(cat) == 3 ) // str == "cat" - { - cvSet( var_types, cvScalarAll(CV_VAR_CATEGORICAL) ); - return; - } - - if ( !cat && strlen(ord) == 3 ) // str == "ord" - { - cvSet( var_types, cvScalarAll(CV_VAR_ORDERED) ); - return; - } - - if ( ord ) // parse ord str - { - char* stopstring = NULL; - if ( ord[3] != '[') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - ord += 4; // pass "ord[" - do - { - int b1 = (int)strtod( ord, &stopstring ); - if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - ord = stopstring + 1; - if ( (stopstring[0] == ',') || (stopstring[0] == ']')) - { - if ( var_types->data.ptr[b1] == CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[b1] = CV_VAR_ORDERED; - set_var_type_count++; - } + CV_Assert( responses.type() == CV_32F || responses.type() == CV_32S ); + if( (responses.cols == 1 || responses.rows == 1) && (int)responses.total() == nsamples ) + noutputvars = 1; else { - if ( stopstring[0] == '-') + CV_Assert( (layout == ROW_SAMPLE && responses.rows == nsamples) || + (layout == COL_SAMPLE && responses.cols == nsamples) ); + noutputvars = layout == ROW_SAMPLE ? responses.cols : responses.rows; + } + if( !responses.isContinuous() || (layout == COL_SAMPLE && noutputvars > 1) ) + { + Mat temp; + transpose(responses, temp); + responses = temp; + } + } + + int nvars = ninputvars + noutputvars; + + if( !varType.empty() ) + { + CV_Assert( varType.checkVector(1, CV_8U, true) == nvars && + checkRange(varType, true, 0, VAR_ORDERED, VAR_CATEGORICAL+1) ); + } + else + { + varType.create(1, nvars, CV_8U); + varType = Scalar::all(VAR_ORDERED); + if( noutputvars == 1 ) + varType.at(ninputvars) = (uchar)(responses.type() < CV_32F ? VAR_CATEGORICAL : VAR_ORDERED); + } + + if( noutputvars > 1 ) + { + for( i = 0; i < noutputvars; i++ ) + CV_Assert( varType.at(ninputvars + i) == VAR_ORDERED ); + } + + catOfs = Mat::zeros(1, nvars, CV_32SC2); + missingSubst = Mat::zeros(1, nvars, CV_32F); + + vector labels, counters, sortbuf, tempCatMap; + vector tempCatOfs; + CatMapHash ofshash; + + AutoBuffer buf(nsamples); + Mat non_missing(layout == ROW_SAMPLE ? Size(1, nsamples) : Size(nsamples, 1), CV_8U, (uchar*)buf); + bool haveMissing = !missing.empty(); + if( haveMissing ) + { + CV_Assert( missing.size() == samples.size() && missing.type() == CV_8U ); + } + + // we iterate through all the variables. For each categorical variable we build a map + // in order to convert input values of the variable into normalized values (0..catcount_vi-1) + // often many categorical variables are similar, so we compress the map - try to re-use + // maps for different variables if they are identical + for( i = 0; i < ninputvars; i++ ) + { + Mat values_i = layout == ROW_SAMPLE ? samples.col(i) : samples.row(i); + + if( varType.at(i) == VAR_CATEGORICAL ) + { + preprocessCategorical(values_i, 0, labels, 0, sortbuf); + missingSubst.at(i) = -1.f; + int j, m = (int)labels.size(); + CV_Assert( m > 0 ); + int a = labels.front(), b = labels.back(); + const int* currmap = &labels[0]; + int hashval = ((unsigned)a*127 + (unsigned)b)*127 + m; + CatMapHash::iterator it = ofshash.find(hashval); + if( it != ofshash.end() ) { - int b2 = (int)strtod( ord, &stopstring); - if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - ord = stopstring + 1; - for (int i = b1; i <= b2; i++) + int vi = it->second; + Vec2i ofs0 = tempCatOfs[vi]; + int m0 = ofs0[1] - ofs0[0]; + const int* map0 = &tempCatMap[ofs0[0]]; + if( m0 == m && map0[0] == a && map0[m0-1] == b ) { - if ( var_types->data.ptr[i] == CV_VAR_CATEGORICAL) - CV_ERROR( CV_StsBadArg, "it`s impossible to assign CV_VAR_ORDERED type to categorical variable" ); - var_types->data.ptr[i] = CV_VAR_ORDERED; + for( j = 0; j < m; j++ ) + if( map0[j] != currmap[j] ) + break; + if( j == m ) + { + // re-use the map + tempCatOfs.push_back(ofs0); + continue; + } } - set_var_type_count += b2 - b1 + 1; } else - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - } - } - while (*stopstring != ']'); - - if ( stopstring[1] != '\0' && stopstring[1] != ',') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - } - - if ( cat ) // parse cat str - { - char* stopstring = NULL; - if ( cat[3] != '[') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - cat += 4; // pass "cat[" - do - { - int b1 = (int)strtod( cat, &stopstring ); - if ( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - cat = stopstring + 1; - if ( (stopstring[0] == ',') || (stopstring[0] == ']')) - { - var_types->data.ptr[b1] = CV_VAR_CATEGORICAL; - set_var_type_count++; + ofshash[hashval] = i; + Vec2i ofs; + ofs[0] = (int)tempCatMap.size(); + ofs[1] = ofs[0] + m; + tempCatOfs.push_back(ofs); + std::copy(labels.begin(), labels.end(), std::back_inserter(tempCatMap)); } else { - if ( stopstring[0] == '-') - { - int b2 = (int)strtod( cat, &stopstring); - if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - cat = stopstring + 1; - for (int i = b1; i <= b2; i++) - var_types->data.ptr[i] = CV_VAR_CATEGORICAL; - set_var_type_count += b2 - b1 + 1; - } - else - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - + tempCatOfs.push_back(Vec2i(0, 0)); + /*Mat missing_i = layout == ROW_SAMPLE ? missing.col(i) : missing.row(i); + compare(missing_i, Scalar::all(0), non_missing, CMP_EQ); + missingSubst.at(i) = (float)(mean(values_i, non_missing)[0]);*/ + missingSubst.at(i) = 0.f; } } - while (*stopstring != ']'); - if ( stopstring[1] != '\0' && stopstring[1] != ',') - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - } - - if (set_var_type_count != var_count) - CV_ERROR( CV_StsBadArg, "types string is not correct" ); - - __END__; -} - -const CvMat* CvMLData::get_var_types() -{ - CV_FUNCNAME( "CvMLData::get_var_types" ); - __BEGIN__; - - uchar *var_types_out_ptr = 0; - int avcount, vt_size; - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - assert( var_idx_mask ); - - avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); - vt_size = avcount + (response_idx >= 0); - - if ( avcount == values->cols || (avcount == values->cols-1 && response_idx == values->cols-1) ) - return var_types; - - if ( !var_types_out || ( var_types_out && var_types_out->cols != vt_size ) ) - { - cvReleaseMat( &var_types_out ); - var_types_out = cvCreateMat( 1, vt_size, CV_8UC1 ); - } - - var_types_out_ptr = var_types_out->data.ptr; - for( int i = 0; i < var_types->cols; i++) - { - if (i == response_idx || !var_idx_mask->data.ptr[i]) continue; - *var_types_out_ptr = var_types->data.ptr[i]; - var_types_out_ptr++; - } - if ( response_idx >= 0 ) - *var_types_out_ptr = var_types->data.ptr[response_idx]; - - __END__; - - return var_types_out; -} - -int CvMLData::get_var_type( int var_idx ) const -{ - return var_types->data.ptr[var_idx]; -} - -const CvMat* CvMLData::get_responses() -{ - CV_FUNCNAME( "CvMLData::get_responses_ptr" ); - __BEGIN__; - - int var_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - var_count = values->cols; - - if ( response_idx < 0 || response_idx >= var_count ) - return 0; - if ( !response_out ) - response_out = cvCreateMatHeader( values->rows, 1, CV_32FC1 ); - else - cvInitMatHeader( response_out, values->rows, 1, CV_32FC1); - cvGetCol( values, response_out, response_idx ); - - __END__; - - return response_out; -} - -void CvMLData::set_train_test_split( const CvTrainTestSplit * spl) -{ - CV_FUNCNAME( "CvMLData::set_division" ); - __BEGIN__; - - int sample_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - sample_count = values->rows; - - float train_sample_portion; - - if (spl->train_sample_part_mode == CV_COUNT) - { - train_sample_count = spl->train_sample_part.count; - if (train_sample_count > sample_count) - CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); - train_sample_count = train_sample_count<=0 ? sample_count : train_sample_count; - } - else // dtype.train_sample_part_mode == CV_PORTION - { - train_sample_portion = spl->train_sample_part.portion; - if ( train_sample_portion > 1) - CV_ERROR( CV_StsBadArg, "train samples count is not correct" ); - train_sample_portion = train_sample_portion <= FLT_EPSILON || - 1 - train_sample_portion <= FLT_EPSILON ? 1 : train_sample_portion; - train_sample_count = std::max(1, cvFloor( train_sample_portion * sample_count )); - } - - if ( train_sample_count == sample_count ) - { - free_train_test_idx(); - return; - } - - if ( train_sample_idx && train_sample_idx->cols != train_sample_count ) - free_train_test_idx(); - - if ( !sample_idx) - { - int test_sample_count = sample_count- train_sample_count; - sample_idx = (int*)cvAlloc( sample_count * sizeof(sample_idx[0]) ); - for (int i = 0; i < sample_count; i++ ) - sample_idx[i] = i; - train_sample_idx = cvCreateMatHeader( 1, train_sample_count, CV_32SC1 ); - *train_sample_idx = cvMat( 1, train_sample_count, CV_32SC1, &sample_idx[0] ); - - CV_Assert(test_sample_count > 0); - test_sample_idx = cvCreateMatHeader( 1, test_sample_count, CV_32SC1 ); - *test_sample_idx = cvMat( 1, test_sample_count, CV_32SC1, &sample_idx[train_sample_count] ); - } - - mix = spl->mix; - if ( mix ) - mix_train_and_test_idx(); - - __END__; -} - -const CvMat* CvMLData::get_train_sample_idx() const -{ - CV_FUNCNAME( "CvMLData::get_train_sample_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - return train_sample_idx; -} - -const CvMat* CvMLData::get_test_sample_idx() const -{ - CV_FUNCNAME( "CvMLData::get_test_sample_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - return test_sample_idx; -} - -void CvMLData::mix_train_and_test_idx() -{ - CV_FUNCNAME( "CvMLData::mix_train_and_test_idx" ); - __BEGIN__; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - __END__; - - if ( !sample_idx) - return; - - if ( train_sample_count > 0 && train_sample_count < values->rows ) - { - int n = values->rows; - for (int i = 0; i < n; i++) + if( !tempCatOfs.empty() ) { - int a = (*rng)(n); - int b = (*rng)(n); - int t; - CV_SWAP( sample_idx[a], sample_idx[b], t ); - } - } -} - -const CvMat* CvMLData::get_var_idx() -{ - CV_FUNCNAME( "CvMLData::get_var_idx" ); - __BEGIN__; - - int avcount = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - assert( var_idx_mask ); - - avcount = cvFloor( cvNorm( var_idx_mask, 0, CV_L1 ) ); - int* vidx; - - if ( avcount == values->cols ) - return 0; - - if ( !var_idx_out || ( var_idx_out && var_idx_out->cols != avcount ) ) - { - cvReleaseMat( &var_idx_out ); - var_idx_out = cvCreateMat( 1, avcount, CV_32SC1); - if ( response_idx >=0 ) - var_idx_mask->data.ptr[response_idx] = 0; - } - - vidx = var_idx_out->data.i; - - for(int i = 0; i < var_idx_mask->cols; i++) - if ( var_idx_mask->data.ptr[i] ) - { - *vidx = i; - vidx++; + Mat(tempCatOfs).copyTo(catOfs); + Mat(tempCatMap).copyTo(catMap); } - __END__; + if( varType.at(ninputvars) == VAR_CATEGORICAL ) + { + preprocessCategorical(responses, &normCatResponses, labels, &counters, sortbuf); + Mat(labels).copyTo(classLabels); + Mat(counters).copyTo(classCounters); + } + } - return var_idx_out; -} + Mat convertMaskToIdx(const Mat& mask) + { + int i, j, nz = countNonZero(mask), n = mask.cols + mask.rows - 1; + Mat idx(1, nz, CV_32S); + for( i = j = 0; i < n; i++ ) + if( mask.at(i) ) + idx.at(j++) = i; + return idx; + } -void CvMLData::chahge_var_idx( int vi, bool state ) + struct CmpByIdx + { + CmpByIdx(const int* _data, int _step) : data(_data), step(_step) {} + bool operator ()(int i, int j) const { return data[i*step] < data[j*step]; } + const int* data; + int step; + }; + + void preprocessCategorical(const Mat& data, Mat* normdata, vector& labels, + vector* counters, vector& sortbuf) + { + CV_Assert((data.cols == 1 || data.rows == 1) && (data.type() == CV_32S || data.type() == CV_32F)); + int* odata = 0; + int ostep = 0; + + if(normdata) + { + normdata->create(data.size(), CV_32S); + odata = normdata->ptr(); + ostep = normdata->isContinuous() ? 1 : (int)normdata->step1(); + } + + int i, n = data.cols + data.rows - 1; + sortbuf.resize(n*2); + int* idx = &sortbuf[0]; + int* idata = (int*)data.ptr(); + int istep = data.isContinuous() ? 1 : (int)data.step1(); + + if( data.type() == CV_32F ) + { + idata = idx + n; + const float* fdata = data.ptr(); + for( i = 0; i < n; i++ ) + { + if( fdata[i*istep] == MISSED_VAL ) + idata[i] = -1; + else + { + idata[i] = cvRound(fdata[i*istep]); + CV_Assert( (float)idata[i] == fdata[i*istep] ); + } + } + istep = 1; + } + + for( i = 0; i < n; i++ ) + idx[i] = i; + + std::sort(idx, idx + n, CmpByIdx(idata, istep)); + + int clscount = 1; + for( i = 1; i < n; i++ ) + clscount += idata[idx[i]*istep] != idata[idx[i-1]*istep]; + + int clslabel = -1; + int prev = ~idata[idx[0]*istep]; + int previdx = 0; + + labels.resize(clscount); + if(counters) + counters->resize(clscount); + + for( i = 0; i < n; i++ ) + { + int l = idata[idx[i]*istep]; + if( l != prev ) + { + clslabel++; + labels[clslabel] = l; + int k = i - previdx; + if( clslabel > 0 && counters ) + counters->at(clslabel-1) = k; + prev = l; + previdx = i; + } + if(odata) + odata[idx[i]*ostep] = clslabel; + } + if(counters) + counters->at(clslabel) = i - previdx; + } + + bool loadCSV(const String& filename, int headerLines, + int responseStartIdx, int responseEndIdx, + const String& varTypeSpec, char delimiter, char missch) + { + const int M = 1000000; + const char delimiters[3] = { ' ', delimiter, '\0' }; + int nvars = 0; + bool varTypesSet = false; + + clear(); + + file = fopen( filename.c_str(), "rt" ); + + if( !file ) + return false; + + std::vector _buf(M); + std::vector allresponses; + std::vector rowvals; + std::vector vtypes, rowtypes; + bool haveMissed = false; + char* buf = &_buf[0]; + + int i, ridx0 = responseStartIdx, ridx1 = responseEndIdx; + int ninputvars = 0, noutputvars = 0; + + Mat tempSamples, tempMissing, tempResponses; + MapType tempNameMap; + int catCounter = 1; + + // skip header lines + int lineno = 0; + for(;;lineno++) + { + if( !fgets(buf, M, file) ) + break; + if(lineno < headerLines ) + continue; + // trim trailing spaces + int idx = (int)strlen(buf)-1; + while( idx >= 0 && isspace(buf[idx]) ) + buf[idx--] = '\0'; + // skip spaces in the beginning + char* ptr = buf; + while( *ptr != '\0' && isspace(*ptr) ) + ptr++; + // skip commented off lines + if(*ptr == '#') + continue; + rowvals.clear(); + rowtypes.clear(); + + char* token = strtok(buf, delimiters); + if (!token) + break; + + for(;;) + { + float val=0.f; int tp = 0; + decodeElem( token, val, tp, missch, tempNameMap, catCounter ); + if( tp == VAR_MISSED ) + haveMissed = true; + rowvals.push_back(val); + rowtypes.push_back((uchar)tp); + token = strtok(NULL, delimiters); + if (!token) + break; + } + + if( nvars == 0 ) + { + if( rowvals.empty() ) + CV_Error(CV_StsBadArg, "invalid CSV format; no data found"); + nvars = (int)rowvals.size(); + if( !varTypeSpec.empty() && varTypeSpec.size() > 0 ) + { + setVarTypes(varTypeSpec, nvars, vtypes); + varTypesSet = true; + } + else + vtypes = rowtypes; + + ridx0 = ridx0 >= 0 ? ridx0 : ridx0 == -1 ? nvars - 1 : -1; + ridx1 = ridx1 >= 0 ? ridx1 : ridx0 >= 0 ? ridx0+1 : -1; + CV_Assert(ridx1 > ridx0); + noutputvars = ridx0 >= 0 ? ridx1 - ridx0 : 0; + ninputvars = nvars - noutputvars; + } + else + CV_Assert( nvars == (int)rowvals.size() ); + + // check var types + for( i = 0; i < nvars; i++ ) + { + CV_Assert( (!varTypesSet && vtypes[i] == rowtypes[i]) || + (varTypesSet && (vtypes[i] == rowtypes[i] || rowtypes[i] == VAR_ORDERED)) ); + } + + if( ridx0 >= 0 ) + { + for( i = ridx1; i < nvars; i++ ) + std::swap(rowvals[i], rowvals[i-noutputvars]); + for( i = ninputvars; i < nvars; i++ ) + allresponses.push_back(rowvals[i]); + rowvals.pop_back(); + } + Mat rmat(1, ninputvars, CV_32F, &rowvals[0]); + tempSamples.push_back(rmat); + } + + closeFile(); + + int nsamples = tempSamples.rows; + if( nsamples == 0 ) + return false; + + if( haveMissed ) + compare(tempSamples, MISSED_VAL, tempMissing, CMP_EQ); + + if( ridx0 >= 0 ) + { + for( i = ridx1; i < nvars; i++ ) + std::swap(vtypes[i], vtypes[i-noutputvars]); + if( noutputvars > 1 ) + { + for( i = ninputvars; i < nvars; i++ ) + if( vtypes[i] == VAR_CATEGORICAL ) + CV_Error(CV_StsBadArg, + "If responses are vector values, not scalars, they must be marked as ordered responses"); + } + } + + if( !varTypesSet && noutputvars == 1 && vtypes[ninputvars] == VAR_ORDERED ) + { + for( i = 0; i < nsamples; i++ ) + if( allresponses[i] != cvRound(allresponses[i]) ) + break; + if( i == nsamples ) + vtypes[ninputvars] = VAR_CATEGORICAL; + } + + Mat(nsamples, noutputvars, CV_32F, &allresponses[0]).copyTo(tempResponses); + setData(tempSamples, ROW_SAMPLE, tempResponses, noArray(), noArray(), + noArray(), Mat(vtypes).clone(), tempMissing); + bool ok = !samples.empty(); + if(ok) + std::swap(tempNameMap, nameMap); + return ok; + } + + void decodeElem( const char* token, float& elem, int& type, + char missch, MapType& namemap, int& counter ) const + { + char* stopstring = NULL; + elem = (float)strtod( token, &stopstring ); + if( *stopstring == missch && strlen(stopstring) == 1 ) // missed value + { + elem = MISSED_VAL; + type = VAR_MISSED; + } + else if( *stopstring != '\0' ) + { + MapType::iterator it = namemap.find(token); + if( it == namemap.end() ) + { + elem = (float)counter; + namemap[token] = counter++; + } + else + elem = (float)it->second; + type = VAR_CATEGORICAL; + } + else + type = VAR_ORDERED; + } + + void setVarTypes( const String& s, int nvars, std::vector& vtypes ) const + { + const char* errmsg = "type spec is not correct; it should have format \"cat\", \"ord\" or " + "\"ord[n1,n2-n3,n4-n5,...]cat[m1-m2,m3,m4-m5,...]\", where n's and m's are 0-based variable indices"; + const char* str = s.c_str(); + int specCounter = 0; + + vtypes.resize(nvars); + + for( int k = 0; k < 2; k++ ) + { + const char* ptr = strstr(str, k == 0 ? "ord" : "cat"); + int tp = k == 0 ? VAR_ORDERED : VAR_CATEGORICAL; + if( ptr ) // parse ord/cat str + { + char* stopstring = NULL; + + if( ptr[3] == '\0' ) + { + for( int i = 0; i < nvars; i++ ) + vtypes[i] = (uchar)tp; + specCounter = nvars; + break; + } + + if ( ptr[3] != '[') + CV_Error( CV_StsBadArg, errmsg ); + + ptr += 4; // pass "ord[" + do + { + int b1 = (int)strtod( ptr, &stopstring ); + if( *stopstring == 0 || (*stopstring != ',' && *stopstring != ']' && *stopstring != '-') ) + CV_Error( CV_StsBadArg, errmsg ); + ptr = stopstring + 1; + if( (stopstring[0] == ',') || (stopstring[0] == ']')) + { + CV_Assert( 0 <= b1 && b1 < nvars ); + vtypes[b1] = (uchar)tp; + specCounter++; + } + else + { + if( stopstring[0] == '-') + { + int b2 = (int)strtod( ptr, &stopstring); + if ( (*stopstring == 0) || (*stopstring != ',' && *stopstring != ']') ) + CV_Error( CV_StsBadArg, errmsg ); + ptr = stopstring + 1; + CV_Assert( 0 <= b1 && b1 <= b2 && b2 < nvars ); + for (int i = b1; i <= b2; i++) + vtypes[i] = (uchar)tp; + specCounter += b2 - b1 + 1; + } + else + CV_Error( CV_StsBadArg, errmsg ); + + } + } + while(*stopstring != ']'); + + if( stopstring[1] != '\0' && stopstring[1] != ',') + CV_Error( CV_StsBadArg, errmsg ); + } + } + + if( specCounter != nvars ) + CV_Error( CV_StsBadArg, "type of some variables is not specified" ); + } + + void setTrainTestSplitRatio(double ratio, bool shuffle) + { + CV_Assert( 0. <= ratio && ratio <= 1. ); + setTrainTestSplit(cvRound(getNSamples()*ratio), shuffle); + } + + void setTrainTestSplit(int count, bool shuffle) + { + int i, nsamples = getNSamples(); + CV_Assert( 0 <= count && count < nsamples ); + + trainSampleIdx.release(); + testSampleIdx.release(); + + if( count == 0 ) + trainSampleIdx = sampleIdx; + else if( count == nsamples ) + testSampleIdx = sampleIdx; + else + { + Mat mask(1, nsamples, CV_8U); + uchar* mptr = mask.data; + for( i = 0; i < nsamples; i++ ) + mptr[i] = (uchar)(i < count); + trainSampleIdx.create(1, count, CV_32S); + testSampleIdx.create(1, nsamples - count, CV_32S); + int j0 = 0, j1 = 0; + const int* sptr = !sampleIdx.empty() ? sampleIdx.ptr() : 0; + int* trainptr = trainSampleIdx.ptr(); + int* testptr = testSampleIdx.ptr(); + for( i = 0; i < nsamples; i++ ) + { + int idx = sptr ? sptr[i] : i; + if( mptr[i] ) + trainptr[j0++] = idx; + else + testptr[j1++] = idx; + } + if( shuffle ) + shuffleTrainTest(); + } + } + + void shuffleTrainTest() + { + if( !trainSampleIdx.empty() && !testSampleIdx.empty() ) + { + int i, nsamples = getNSamples(), ntrain = getNTrainSamples(), ntest = getNTestSamples(); + int* trainIdx = trainSampleIdx.ptr(); + int* testIdx = testSampleIdx.ptr(); + RNG& rng = theRNG(); + + for( i = 0; i < nsamples; i++) + { + int a = rng.uniform(0, nsamples); + int b = rng.uniform(0, nsamples); + int* ptra = trainIdx; + int* ptrb = trainIdx; + if( a >= ntrain ) + { + ptra = testIdx; + a -= ntrain; + CV_Assert( a < ntest ); + } + if( b >= ntrain ) + { + ptrb = testIdx; + b -= ntrain; + CV_Assert( b < ntest ); + } + std::swap(ptra[a], ptrb[b]); + } + } + } + + Mat getTrainSamples(int _layout, + bool compressSamples, + bool compressVars) const + { + if( samples.empty() ) + return samples; + + if( (!compressSamples || (trainSampleIdx.empty() && sampleIdx.empty())) && + (!compressVars || varIdx.empty()) && + layout == _layout ) + return samples; + + int drows = getNTrainSamples(), dcols = getNVars(); + Mat sidx = getTrainSampleIdx(), vidx = getVarIdx(); + const float* src0 = samples.ptr(); + const int* sptr = !sidx.empty() ? sidx.ptr() : 0; + const int* vptr = !vidx.empty() ? vidx.ptr() : 0; + size_t sstep0 = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? sstep0 : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : sstep0; + + if( _layout == COL_SAMPLE ) + { + std::swap(drows, dcols); + std::swap(sptr, vptr); + std::swap(sstep, vstep); + } + + Mat dsamples(drows, dcols, CV_32F); + + for( int i = 0; i < drows; i++ ) + { + const float* src = src0 + (sptr ? sptr[i] : i)*sstep; + float* dst = dsamples.ptr(i); + + for( int j = 0; j < dcols; j++ ) + dst[j] = src[(vptr ? vptr[j] : j)*vstep]; + } + + return dsamples; + } + + void getValues( int vi, InputArray _sidx, float* values ) const + { + Mat sidx = _sidx.getMat(); + int i, n = sidx.checkVector(1, CV_32S), nsamples = getNSamples(); + CV_Assert( 0 <= vi && vi < getNAllVars() ); + CV_Assert( n >= 0 ); + const int* s = n > 0 ? sidx.ptr() : 0; + if( n == 0 ) + n = nsamples; + + size_t step = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? step : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : step; + + const float* src = samples.ptr() + vi*vstep; + float subst = missingSubst.at(vi); + for( i = 0; i < n; i++ ) + { + int j = i; + if( s ) + { + j = s[i]; + CV_Assert( 0 <= j && j < nsamples ); + } + values[i] = src[j*sstep]; + if( values[i] == MISSED_VAL ) + values[i] = subst; + } + } + + void getNormCatValues( int vi, InputArray _sidx, int* values ) const + { + float* fvalues = (float*)values; + getValues(vi, _sidx, fvalues); + int i, n = (int)_sidx.total(); + Vec2i ofs = catOfs.at(vi); + int m = ofs[1] - ofs[0]; + + CV_Assert( m > 0 ); // if m==0, vi is an ordered variable + const int* cmap = &catMap.at(ofs[0]); + bool fastMap = (m == cmap[m] - cmap[0]); + + if( fastMap ) + { + for( i = 0; i < n; i++ ) + { + int val = cvRound(fvalues[i]); + int idx = val - cmap[0]; + CV_Assert(cmap[idx] == val); + values[i] = idx; + } + } + else + { + for( i = 0; i < n; i++ ) + { + int val = cvRound(fvalues[i]); + int a = 0, b = m, c = -1; + + while( a < b ) + { + c = (a + b) >> 1; + if( val < cmap[c] ) + b = c; + else if( val > cmap[c] ) + a = c+1; + else + break; + } + + CV_DbgAssert( c >= 0 && val == cmap[c] ); + values[i] = c; + } + } + } + + void getSample(InputArray _vidx, int sidx, float* buf) const + { + CV_Assert(buf != 0 && 0 <= sidx && sidx < getNSamples()); + Mat vidx = _vidx.getMat(); + int i, n = vidx.checkVector(1, CV_32S), nvars = getNAllVars(); + CV_Assert( n >= 0 ); + const int* vptr = n > 0 ? vidx.ptr() : 0; + if( n == 0 ) + n = nvars; + + size_t step = samples.step/samples.elemSize(); + size_t sstep = layout == ROW_SAMPLE ? step : 1; + size_t vstep = layout == ROW_SAMPLE ? 1 : step; + + const float* src = samples.ptr() + sidx*sstep; + for( i = 0; i < n; i++ ) + { + int j = i; + if( vptr ) + { + j = vptr[i]; + CV_Assert( 0 <= j && j < nvars ); + } + buf[i] = src[j*vstep]; + } + } + + FILE* file; + int layout; + Mat samples, missing, varType, varIdx, responses, missingSubst; + Mat sampleIdx, trainSampleIdx, testSampleIdx; + Mat sampleWeights, catMap, catOfs; + Mat normCatResponses, classLabels, classCounters; + MapType nameMap; +}; + +Ptr TrainData::loadFromCSV(const String& filename, + int headerLines, + int responseStartIdx, + int responseEndIdx, + const String& varTypeSpec, + char delimiter, char missch) { - change_var_idx( vi, state ); + Ptr td = makePtr(); + if(!td->loadCSV(filename, headerLines, responseStartIdx, responseEndIdx, varTypeSpec, delimiter, missch)) + td.release(); + return td; } -void CvMLData::change_var_idx( int vi, bool state ) +Ptr TrainData::create(InputArray samples, int layout, InputArray responses, + InputArray varIdx, InputArray sampleIdx, InputArray sampleWeights, + InputArray varType) { - CV_FUNCNAME( "CvMLData::change_var_idx" ); - __BEGIN__; - - int var_count = 0; - - if ( !values ) - CV_ERROR( CV_StsInternal, "data is empty" ); - - var_count = values->cols; - - if ( vi < 0 || vi >= var_count) - CV_ERROR( CV_StsBadArg, "variable index is not correct" ); - - assert( var_idx_mask ); - var_idx_mask->data.ptr[vi] = state; - - __END__; + Ptr td = makePtr(); + td->setData(samples, layout, responses, varIdx, sampleIdx, sampleWeights, varType, noArray()); + return td; } +}} + /* End of file. */ diff --git a/modules/ml/src/em.cpp b/modules/ml/src/em.cpp index 0bd44f2720..351ca39fc7 100644 --- a/modules/ml/src/em.cpp +++ b/modules/ml/src/em.cpp @@ -43,635 +43,839 @@ namespace cv { +namespace ml +{ const double minEigenValue = DBL_EPSILON; -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -EM::EM(int _nclusters, int _covMatType, const TermCriteria& _termCrit) +EM::Params::Params(int _nclusters, int _covMatType, const TermCriteria& _termCrit) { nclusters = _nclusters; covMatType = _covMatType; - maxIters = (_termCrit.type & TermCriteria::MAX_ITER) ? _termCrit.maxCount : DEFAULT_MAX_ITERS; - epsilon = (_termCrit.type & TermCriteria::EPS) ? _termCrit.epsilon : 0; + termCrit = _termCrit; } -EM::~EM() +class CV_EXPORTS EMImpl : public EM { - //clear(); -} +public: + EMImpl(const Params& _params) + { + setParams(_params); + } -void EM::clear() -{ - trainSamples.release(); - trainProbs.release(); - trainLogLikelihoods.release(); - trainLabels.release(); + virtual ~EMImpl() {} - weights.release(); - means.release(); - covs.clear(); + void setParams(const Params& _params) + { + params = _params; + CV_Assert(params.nclusters > 1); + CV_Assert(params.covMatType == COV_MAT_SPHERICAL || + params.covMatType == COV_MAT_DIAGONAL || + params.covMatType == COV_MAT_GENERIC); + } - covsEigenValues.clear(); - invCovsEigenValues.clear(); - covsRotateMats.clear(); + Params getParams() const + { + return params; + } - logWeightDivDet.release(); -} + void clear() + { + trainSamples.release(); + trainProbs.release(); + trainLogLikelihoods.release(); + trainLabels.release(); + weights.release(); + means.release(); + covs.clear(); -bool EM::train(InputArray samples, + covsEigenValues.clear(); + invCovsEigenValues.clear(); + covsRotateMats.clear(); + + logWeightDivDet.release(); + } + + bool train(const Ptr& data, int) + { + Mat samples = data->getTrainSamples(), labels; + return train_(samples, labels, noArray(), noArray()); + } + + bool train_(InputArray samples, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - setTrainData(START_AUTO_STEP, samplesMat, 0, 0, 0, 0); - return doTrain(START_AUTO_STEP, logLikelihoods, labels, probs); -} + { + Mat samplesMat = samples.getMat(); + setTrainData(START_AUTO_STEP, samplesMat, 0, 0, 0, 0); + return doTrain(START_AUTO_STEP, logLikelihoods, labels, probs); + } -bool EM::trainE(InputArray samples, + bool trainE(InputArray samples, InputArray _means0, InputArray _covs0, InputArray _weights0, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - std::vector covs0; - _covs0.getMatVector(covs0); + { + Mat samplesMat = samples.getMat(); + std::vector covs0; + _covs0.getMatVector(covs0); - Mat means0 = _means0.getMat(), weights0 = _weights0.getMat(); + Mat means0 = _means0.getMat(), weights0 = _weights0.getMat(); - setTrainData(START_E_STEP, samplesMat, 0, !_means0.empty() ? &means0 : 0, - !_covs0.empty() ? &covs0 : 0, !_weights0.empty() ? &weights0 : 0); - return doTrain(START_E_STEP, logLikelihoods, labels, probs); -} + setTrainData(START_E_STEP, samplesMat, 0, !_means0.empty() ? &means0 : 0, + !_covs0.empty() ? &covs0 : 0, !_weights0.empty() ? &weights0 : 0); + return doTrain(START_E_STEP, logLikelihoods, labels, probs); + } -bool EM::trainM(InputArray samples, + bool trainM(InputArray samples, InputArray _probs0, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - Mat samplesMat = samples.getMat(); - Mat probs0 = _probs0.getMat(); - - setTrainData(START_M_STEP, samplesMat, !_probs0.empty() ? &probs0 : 0, 0, 0, 0); - return doTrain(START_M_STEP, logLikelihoods, labels, probs); -} - - -Vec2d EM::predict(InputArray _sample, OutputArray _probs) const -{ - Mat sample = _sample.getMat(); - CV_Assert(isTrained()); - - CV_Assert(!sample.empty()); - if(sample.type() != CV_64FC1) { - Mat tmp; - sample.convertTo(tmp, CV_64FC1); - sample = tmp; - } - sample = sample.reshape(1, 1); + Mat samplesMat = samples.getMat(); + Mat probs0 = _probs0.getMat(); - Mat probs; - if( _probs.needed() ) - { - _probs.create(1, nclusters, CV_64FC1); - probs = _probs.getMat(); + setTrainData(START_M_STEP, samplesMat, !_probs0.empty() ? &probs0 : 0, 0, 0, 0); + return doTrain(START_M_STEP, logLikelihoods, labels, probs); } - return computeProbabilities(sample, !probs.empty() ? &probs : 0); -} - -bool EM::isTrained() const -{ - return !means.empty(); -} - - -static -void checkTrainData(int startStep, const Mat& samples, - int nclusters, int covMatType, const Mat* probs, const Mat* means, - const std::vector* covs, const Mat* weights) -{ - // Check samples. - CV_Assert(!samples.empty()); - CV_Assert(samples.channels() == 1); - - int nsamples = samples.rows; - int dim = samples.cols; - - // Check training params. - CV_Assert(nclusters > 0); - CV_Assert(nclusters <= nsamples); - CV_Assert(startStep == EM::START_AUTO_STEP || - startStep == EM::START_E_STEP || - startStep == EM::START_M_STEP); - CV_Assert(covMatType == EM::COV_MAT_GENERIC || - covMatType == EM::COV_MAT_DIAGONAL || - covMatType == EM::COV_MAT_SPHERICAL); - - CV_Assert(!probs || - (!probs->empty() && - probs->rows == nsamples && probs->cols == nclusters && - (probs->type() == CV_32FC1 || probs->type() == CV_64FC1))); - - CV_Assert(!weights || - (!weights->empty() && - (weights->cols == 1 || weights->rows == 1) && static_cast(weights->total()) == nclusters && - (weights->type() == CV_32FC1 || weights->type() == CV_64FC1))); - - CV_Assert(!means || - (!means->empty() && - means->rows == nclusters && means->cols == dim && - means->channels() == 1)); - - CV_Assert(!covs || - (!covs->empty() && - static_cast(covs->size()) == nclusters)); - if(covs) + float predict(InputArray _inputs, OutputArray _outputs, int) const { - const Size covSize(dim, dim); - for(size_t i = 0; i < covs->size(); i++) + bool needprobs = _outputs.needed(); + Mat samples = _inputs.getMat(), probs, probsrow; + int ptype = CV_32F; + float firstres = 0.f; + int i, nsamples = samples.rows; + + if( needprobs ) { - const Mat& m = (*covs)[i]; - CV_Assert(!m.empty() && m.size() == covSize && (m.channels() == 1)); + if( _outputs.fixedType() ) + ptype = _outputs.type(); + _outputs.create(samples.rows, params.nclusters, ptype); + } + else + nsamples = std::min(nsamples, 1); + + for( i = 0; i < nsamples; i++ ) + { + if( needprobs ) + probsrow = probs.row(i); + Vec2d res = computeProbabilities(samples.row(i), needprobs ? &probsrow : 0, ptype); + if( i == 0 ) + firstres = (float)res[1]; + } + return firstres; + } + + Vec2d predict2(InputArray _sample, OutputArray _probs) const + { + int ptype = CV_32F; + Mat sample = _sample.getMat(); + CV_Assert(isTrained()); + + CV_Assert(!sample.empty()); + if(sample.type() != CV_64FC1) + { + Mat tmp; + sample.convertTo(tmp, CV_64FC1); + sample = tmp; + } + sample.reshape(1, 1); + + Mat probs; + if( _probs.needed() ) + { + if( _probs.fixedType() ) + ptype = _probs.type(); + _probs.create(1, params.nclusters, ptype); + probs = _probs.getMat(); + } + + return computeProbabilities(sample, !probs.empty() ? &probs : 0, ptype); + } + + bool isTrained() const + { + return !means.empty(); + } + + bool isClassifier() const + { + return true; + } + + int getVarCount() const + { + return means.cols; + } + + String getDefaultModelName() const + { + return "opencv_ml_em"; + } + + static void checkTrainData(int startStep, const Mat& samples, + int nclusters, int covMatType, const Mat* probs, const Mat* means, + const std::vector* covs, const Mat* weights) + { + // Check samples. + CV_Assert(!samples.empty()); + CV_Assert(samples.channels() == 1); + + int nsamples = samples.rows; + int dim = samples.cols; + + // Check training params. + CV_Assert(nclusters > 0); + CV_Assert(nclusters <= nsamples); + CV_Assert(startStep == START_AUTO_STEP || + startStep == START_E_STEP || + startStep == START_M_STEP); + CV_Assert(covMatType == COV_MAT_GENERIC || + covMatType == COV_MAT_DIAGONAL || + covMatType == COV_MAT_SPHERICAL); + + CV_Assert(!probs || + (!probs->empty() && + probs->rows == nsamples && probs->cols == nclusters && + (probs->type() == CV_32FC1 || probs->type() == CV_64FC1))); + + CV_Assert(!weights || + (!weights->empty() && + (weights->cols == 1 || weights->rows == 1) && static_cast(weights->total()) == nclusters && + (weights->type() == CV_32FC1 || weights->type() == CV_64FC1))); + + CV_Assert(!means || + (!means->empty() && + means->rows == nclusters && means->cols == dim && + means->channels() == 1)); + + CV_Assert(!covs || + (!covs->empty() && + static_cast(covs->size()) == nclusters)); + if(covs) + { + const Size covSize(dim, dim); + for(size_t i = 0; i < covs->size(); i++) + { + const Mat& m = (*covs)[i]; + CV_Assert(!m.empty() && m.size() == covSize && (m.channels() == 1)); + } + } + + if(startStep == START_E_STEP) + { + CV_Assert(means); + } + else if(startStep == START_M_STEP) + { + CV_Assert(probs); } } - if(startStep == EM::START_E_STEP) + static void preprocessSampleData(const Mat& src, Mat& dst, int dstType, bool isAlwaysClone) { - CV_Assert(means); - } - else if(startStep == EM::START_M_STEP) - { - CV_Assert(probs); - } -} - -static -void preprocessSampleData(const Mat& src, Mat& dst, int dstType, bool isAlwaysClone) -{ - if(src.type() == dstType && !isAlwaysClone) - dst = src; - else - src.convertTo(dst, dstType); -} - -static -void preprocessProbability(Mat& probs) -{ - max(probs, 0., probs); - - const double uniformProbability = (double)(1./probs.cols); - for(int y = 0; y < probs.rows; y++) - { - Mat sampleProbs = probs.row(y); - - double maxVal = 0; - minMaxLoc(sampleProbs, 0, &maxVal); - if(maxVal < FLT_EPSILON) - sampleProbs.setTo(uniformProbability); + if(src.type() == dstType && !isAlwaysClone) + dst = src; else - normalize(sampleProbs, sampleProbs, 1, 0, NORM_L1); + src.convertTo(dst, dstType); } -} -void EM::setTrainData(int startStep, const Mat& samples, + static void preprocessProbability(Mat& probs) + { + max(probs, 0., probs); + + const double uniformProbability = (double)(1./probs.cols); + for(int y = 0; y < probs.rows; y++) + { + Mat sampleProbs = probs.row(y); + + double maxVal = 0; + minMaxLoc(sampleProbs, 0, &maxVal); + if(maxVal < FLT_EPSILON) + sampleProbs.setTo(uniformProbability); + else + normalize(sampleProbs, sampleProbs, 1, 0, NORM_L1); + } + } + + void setTrainData(int startStep, const Mat& samples, const Mat* probs0, const Mat* means0, const std::vector* covs0, const Mat* weights0) -{ - clear(); - - checkTrainData(startStep, samples, nclusters, covMatType, probs0, means0, covs0, weights0); - - bool isKMeansInit = (startStep == EM::START_AUTO_STEP) || (startStep == EM::START_E_STEP && (covs0 == 0 || weights0 == 0)); - // Set checked data - preprocessSampleData(samples, trainSamples, isKMeansInit ? CV_32FC1 : CV_64FC1, false); - - // set probs - if(probs0 && startStep == EM::START_M_STEP) { - preprocessSampleData(*probs0, trainProbs, CV_64FC1, true); - preprocessProbability(trainProbs); - } + int nclusters = params.nclusters, covMatType = params.covMatType; + clear(); - // set weights - if(weights0 && (startStep == EM::START_E_STEP && covs0)) - { - weights0->convertTo(weights, CV_64FC1); - weights = weights.reshape(1,1); - preprocessProbability(weights); - } + checkTrainData(startStep, samples, nclusters, covMatType, probs0, means0, covs0, weights0); - // set means - if(means0 && (startStep == EM::START_E_STEP/* || startStep == EM::START_AUTO_STEP*/)) - means0->convertTo(means, isKMeansInit ? CV_32FC1 : CV_64FC1); + bool isKMeansInit = (startStep == START_AUTO_STEP) || (startStep == START_E_STEP && (covs0 == 0 || weights0 == 0)); + // Set checked data + preprocessSampleData(samples, trainSamples, isKMeansInit ? CV_32FC1 : CV_64FC1, false); - // set covs - if(covs0 && (startStep == EM::START_E_STEP && weights0)) - { - covs.resize(nclusters); - for(size_t i = 0; i < covs0->size(); i++) - (*covs0)[i].convertTo(covs[i], CV_64FC1); - } -} - -void EM::decomposeCovs() -{ - CV_Assert(!covs.empty()); - covsEigenValues.resize(nclusters); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats.resize(nclusters); - invCovsEigenValues.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - CV_Assert(!covs[clusterIndex].empty()); - - SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); - - if(covMatType == EM::COV_MAT_SPHERICAL) + // set probs + if(probs0 && startStep == START_M_STEP) { - double maxSingularVal = svd.w.at(0); - covsEigenValues[clusterIndex] = Mat(1, 1, CV_64FC1, Scalar(maxSingularVal)); + preprocessSampleData(*probs0, trainProbs, CV_64FC1, true); + preprocessProbability(trainProbs); } - else if(covMatType == EM::COV_MAT_DIAGONAL) + + // set weights + if(weights0 && (startStep == START_E_STEP && covs0)) { - covsEigenValues[clusterIndex] = svd.w; + weights0->convertTo(weights, CV_64FC1); + weights.reshape(1,1); + preprocessProbability(weights); } - else //EM::COV_MAT_GENERIC + + // set means + if(means0 && (startStep == START_E_STEP/* || startStep == START_AUTO_STEP*/)) + means0->convertTo(means, isKMeansInit ? CV_32FC1 : CV_64FC1); + + // set covs + if(covs0 && (startStep == START_E_STEP && weights0)) { - covsEigenValues[clusterIndex] = svd.w; - covsRotateMats[clusterIndex] = svd.u; + covs.resize(nclusters); + for(size_t i = 0; i < covs0->size(); i++) + (*covs0)[i].convertTo(covs[i], CV_64FC1); } - max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); - invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; - } -} - -void EM::clusterTrainSamples() -{ - int nsamples = trainSamples.rows; - - // Cluster samples, compute/update means - - // Convert samples and means to 32F, because kmeans requires this type. - Mat trainSamplesFlt, meansFlt; - if(trainSamples.type() != CV_32FC1) - trainSamples.convertTo(trainSamplesFlt, CV_32FC1); - else - trainSamplesFlt = trainSamples; - if(!means.empty()) - { - if(means.type() != CV_32FC1) - means.convertTo(meansFlt, CV_32FC1); - else - meansFlt = means; } - Mat labels; - kmeans(trainSamplesFlt, nclusters, labels, TermCriteria(TermCriteria::COUNT, means.empty() ? 10 : 1, 0.5), 10, KMEANS_PP_CENTERS, meansFlt); - - // Convert samples and means back to 64F. - CV_Assert(meansFlt.type() == CV_32FC1); - if(trainSamples.type() != CV_64FC1) + void decomposeCovs() { - Mat trainSamplesBuffer; - trainSamplesFlt.convertTo(trainSamplesBuffer, CV_64FC1); - trainSamples = trainSamplesBuffer; - } - meansFlt.convertTo(means, CV_64FC1); - - // Compute weights and covs - weights = Mat(1, nclusters, CV_64FC1, Scalar(0)); - covs.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - Mat clusterSamples; - for(int sampleIndex = 0; sampleIndex < nsamples; sampleIndex++) + int nclusters = params.nclusters, covMatType = params.covMatType; + CV_Assert(!covs.empty()); + covsEigenValues.resize(nclusters); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats.resize(nclusters); + invCovsEigenValues.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - if(labels.at(sampleIndex) == clusterIndex) + CV_Assert(!covs[clusterIndex].empty()); + + SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); + + if(covMatType == COV_MAT_SPHERICAL) { - const Mat sample = trainSamples.row(sampleIndex); - clusterSamples.push_back(sample); + double maxSingularVal = svd.w.at(0); + covsEigenValues[clusterIndex] = Mat(1, 1, CV_64FC1, Scalar(maxSingularVal)); } + else if(covMatType == COV_MAT_DIAGONAL) + { + covsEigenValues[clusterIndex] = svd.w; + } + else //COV_MAT_GENERIC + { + covsEigenValues[clusterIndex] = svd.w; + covsRotateMats[clusterIndex] = svd.u; + } + max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); + invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; } - CV_Assert(!clusterSamples.empty()); - - calcCovarMatrix(clusterSamples, covs[clusterIndex], means.row(clusterIndex), - CV_COVAR_NORMAL + CV_COVAR_ROWS + CV_COVAR_USE_AVG + CV_COVAR_SCALE, CV_64FC1); - weights.at(clusterIndex) = static_cast(clusterSamples.rows)/static_cast(nsamples); } - decomposeCovs(); -} - -void EM::computeLogWeightDivDet() -{ - CV_Assert(!covsEigenValues.empty()); - - Mat logWeights; - cv::max(weights, DBL_MIN, weights); - log(weights, logWeights); - - logWeightDivDet.create(1, nclusters, CV_64FC1); - // note: logWeightDivDet = log(weight_k) - 0.5 * log(|det(cov_k)|) - - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + void clusterTrainSamples() { - double logDetCov = 0.; - const int evalCount = static_cast(covsEigenValues[clusterIndex].total()); - for(int di = 0; di < evalCount; di++) - logDetCov += std::log(covsEigenValues[clusterIndex].at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0)); + int nclusters = params.nclusters; + int nsamples = trainSamples.rows; - logWeightDivDet.at(clusterIndex) = logWeights.at(clusterIndex) - 0.5 * logDetCov; - } -} + // Cluster samples, compute/update means -bool EM::doTrain(int startStep, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) -{ - int dim = trainSamples.cols; - // Precompute the empty initial train data in the cases of EM::START_E_STEP and START_AUTO_STEP - if(startStep != EM::START_M_STEP) - { - if(covs.empty()) + // Convert samples and means to 32F, because kmeans requires this type. + Mat trainSamplesFlt, meansFlt; + if(trainSamples.type() != CV_32FC1) + trainSamples.convertTo(trainSamplesFlt, CV_32FC1); + else + trainSamplesFlt = trainSamples; + if(!means.empty()) { - CV_Assert(weights.empty()); - clusterTrainSamples(); + if(means.type() != CV_32FC1) + means.convertTo(meansFlt, CV_32FC1); + else + meansFlt = means; + } + + Mat labels; + kmeans(trainSamplesFlt, nclusters, labels, + TermCriteria(TermCriteria::COUNT, means.empty() ? 10 : 1, 0.5), + 10, KMEANS_PP_CENTERS, meansFlt); + + // Convert samples and means back to 64F. + CV_Assert(meansFlt.type() == CV_32FC1); + if(trainSamples.type() != CV_64FC1) + { + Mat trainSamplesBuffer; + trainSamplesFlt.convertTo(trainSamplesBuffer, CV_64FC1); + trainSamples = trainSamplesBuffer; + } + meansFlt.convertTo(means, CV_64FC1); + + // Compute weights and covs + weights = Mat(1, nclusters, CV_64FC1, Scalar(0)); + covs.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + Mat clusterSamples; + for(int sampleIndex = 0; sampleIndex < nsamples; sampleIndex++) + { + if(labels.at(sampleIndex) == clusterIndex) + { + const Mat sample = trainSamples.row(sampleIndex); + clusterSamples.push_back(sample); + } + } + CV_Assert(!clusterSamples.empty()); + + calcCovarMatrix(clusterSamples, covs[clusterIndex], means.row(clusterIndex), + CV_COVAR_NORMAL + CV_COVAR_ROWS + CV_COVAR_USE_AVG + CV_COVAR_SCALE, CV_64FC1); + weights.at(clusterIndex) = static_cast(clusterSamples.rows)/static_cast(nsamples); } - } - if(!covs.empty() && covsEigenValues.empty() ) - { - CV_Assert(invCovsEigenValues.empty()); decomposeCovs(); } - if(startStep == EM::START_M_STEP) - mStep(); - - double trainLogLikelihood, prevTrainLogLikelihood = 0.; - for(int iter = 0; ; iter++) + void computeLogWeightDivDet() { - eStep(); - trainLogLikelihood = sum(trainLogLikelihoods)[0]; + int nclusters = params.nclusters; + CV_Assert(!covsEigenValues.empty()); - if(iter >= maxIters - 1) - break; + Mat logWeights; + cv::max(weights, DBL_MIN, weights); + log(weights, logWeights); - double trainLogLikelihoodDelta = trainLogLikelihood - prevTrainLogLikelihood; - if( iter != 0 && - (trainLogLikelihoodDelta < -DBL_EPSILON || - trainLogLikelihoodDelta < epsilon * std::fabs(trainLogLikelihood))) - break; + logWeightDivDet.create(1, nclusters, CV_64FC1); + // note: logWeightDivDet = log(weight_k) - 0.5 * log(|det(cov_k)|) - mStep(); - - prevTrainLogLikelihood = trainLogLikelihood; - } - - if( trainLogLikelihood <= -DBL_MAX/10000. ) - { - clear(); - return false; - } - - // postprocess covs - covs.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - if(covMatType == EM::COV_MAT_SPHERICAL) + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - covs[clusterIndex].create(dim, dim, CV_64FC1); - setIdentity(covs[clusterIndex], Scalar(covsEigenValues[clusterIndex].at(0))); - } - else if(covMatType == EM::COV_MAT_DIAGONAL) - { - covs[clusterIndex] = Mat::diag(covsEigenValues[clusterIndex]); + double logDetCov = 0.; + const int evalCount = static_cast(covsEigenValues[clusterIndex].total()); + for(int di = 0; di < evalCount; di++) + logDetCov += std::log(covsEigenValues[clusterIndex].at(params.covMatType != COV_MAT_SPHERICAL ? di : 0)); + + logWeightDivDet.at(clusterIndex) = logWeights.at(clusterIndex) - 0.5 * logDetCov; } } - if(labels.needed()) - trainLabels.copyTo(labels); - if(probs.needed()) - trainProbs.copyTo(probs); - if(logLikelihoods.needed()) - trainLogLikelihoods.copyTo(logLikelihoods); - - trainSamples.release(); - trainProbs.release(); - trainLabels.release(); - trainLogLikelihoods.release(); - - return true; -} - -Vec2d EM::computeProbabilities(const Mat& sample, Mat* probs) const -{ - // L_ik = log(weight_k) - 0.5 * log(|det(cov_k)|) - 0.5 *(x_i - mean_k)' cov_k^(-1) (x_i - mean_k)] - // q = arg(max_k(L_ik)) - // probs_ik = exp(L_ik - L_iq) / (1 + sum_j!=q (exp(L_ij - L_iq)) - // see Alex Smola's blog http://blog.smola.org/page/2 for - // details on the log-sum-exp trick - - CV_Assert(!means.empty()); - CV_Assert(sample.type() == CV_64FC1); - CV_Assert(sample.rows == 1); - CV_Assert(sample.cols == means.cols); - - int dim = sample.cols; - - Mat L(1, nclusters, CV_64FC1); - int label = 0; - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + bool doTrain(int startStep, OutputArray logLikelihoods, OutputArray labels, OutputArray probs) { - const Mat centeredSample = sample - means.row(clusterIndex); - - Mat rotatedCenteredSample = covMatType != EM::COV_MAT_GENERIC ? - centeredSample : centeredSample * covsRotateMats[clusterIndex]; - - double Lval = 0; - for(int di = 0; di < dim; di++) + int nclusters = params.nclusters; + int dim = trainSamples.cols; + // Precompute the empty initial train data in the cases of START_E_STEP and START_AUTO_STEP + if(startStep != START_M_STEP) { - double w = invCovsEigenValues[clusterIndex].at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0); - double val = rotatedCenteredSample.at(di); - Lval += w * val * val; - } - CV_DbgAssert(!logWeightDivDet.empty()); - L.at(clusterIndex) = logWeightDivDet.at(clusterIndex) - 0.5 * Lval; - - if(L.at(clusterIndex) > L.at(label)) - label = clusterIndex; - } - - double maxLVal = L.at(label); - Mat expL_Lmax = L; // exp(L_ij - L_iq) - for(int i = 0; i < L.cols; i++) - expL_Lmax.at(i) = std::exp(L.at(i) - maxLVal); - double expDiffSum = sum(expL_Lmax)[0]; // sum_j(exp(L_ij - L_iq)) - - if(probs) - { - probs->create(1, nclusters, CV_64FC1); - double factor = 1./expDiffSum; - expL_Lmax *= factor; - expL_Lmax.copyTo(*probs); - } - - Vec2d res; - res[0] = std::log(expDiffSum) + maxLVal - 0.5 * dim * CV_LOG2PI; - res[1] = label; - - return res; -} - -void EM::eStep() -{ - // Compute probs_ik from means_k, covs_k and weights_k. - trainProbs.create(trainSamples.rows, nclusters, CV_64FC1); - trainLabels.create(trainSamples.rows, 1, CV_32SC1); - trainLogLikelihoods.create(trainSamples.rows, 1, CV_64FC1); - - computeLogWeightDivDet(); - - CV_DbgAssert(trainSamples.type() == CV_64FC1); - CV_DbgAssert(means.type() == CV_64FC1); - - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) - { - Mat sampleProbs = trainProbs.row(sampleIndex); - Vec2d res = computeProbabilities(trainSamples.row(sampleIndex), &sampleProbs); - trainLogLikelihoods.at(sampleIndex) = res[0]; - trainLabels.at(sampleIndex) = static_cast(res[1]); - } -} - -void EM::mStep() -{ - // Update means_k, covs_k and weights_k from probs_ik - int dim = trainSamples.cols; - - // Update weights - // not normalized first - reduce(trainProbs, weights, 0, CV_REDUCE_SUM); - - // Update means - means.create(nclusters, dim, CV_64FC1); - means = Scalar(0); - - const double minPosWeight = trainSamples.rows * DBL_EPSILON; - double minWeight = DBL_MAX; - int minWeightClusterIndex = -1; - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - if(weights.at(clusterIndex) <= minPosWeight) - continue; - - if(weights.at(clusterIndex) < minWeight) - { - minWeight = weights.at(clusterIndex); - minWeightClusterIndex = clusterIndex; - } - - Mat clusterMean = means.row(clusterIndex); - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) - clusterMean += trainProbs.at(sampleIndex, clusterIndex) * trainSamples.row(sampleIndex); - clusterMean /= weights.at(clusterIndex); - } - - // Update covsEigenValues and invCovsEigenValues - covs.resize(nclusters); - covsEigenValues.resize(nclusters); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats.resize(nclusters); - invCovsEigenValues.resize(nclusters); - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) - { - if(weights.at(clusterIndex) <= minPosWeight) - continue; - - if(covMatType != EM::COV_MAT_SPHERICAL) - covsEigenValues[clusterIndex].create(1, dim, CV_64FC1); - else - covsEigenValues[clusterIndex].create(1, 1, CV_64FC1); - - if(covMatType == EM::COV_MAT_GENERIC) - covs[clusterIndex].create(dim, dim, CV_64FC1); - - Mat clusterCov = covMatType != EM::COV_MAT_GENERIC ? - covsEigenValues[clusterIndex] : covs[clusterIndex]; - - clusterCov = Scalar(0); - - Mat centeredSample; - for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) - { - centeredSample = trainSamples.row(sampleIndex) - means.row(clusterIndex); - - if(covMatType == EM::COV_MAT_GENERIC) - clusterCov += trainProbs.at(sampleIndex, clusterIndex) * centeredSample.t() * centeredSample; - else + if(covs.empty()) { - double p = trainProbs.at(sampleIndex, clusterIndex); - for(int di = 0; di < dim; di++ ) - { - double val = centeredSample.at(di); - clusterCov.at(covMatType != EM::COV_MAT_SPHERICAL ? di : 0) += p*val*val; - } + CV_Assert(weights.empty()); + clusterTrainSamples(); } } - if(covMatType == EM::COV_MAT_SPHERICAL) - clusterCov /= dim; - - clusterCov /= weights.at(clusterIndex); - - // Update covsRotateMats for EM::COV_MAT_GENERIC only - if(covMatType == EM::COV_MAT_GENERIC) + if(!covs.empty() && covsEigenValues.empty() ) { - SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); - covsEigenValues[clusterIndex] = svd.w; - covsRotateMats[clusterIndex] = svd.u; + CV_Assert(invCovsEigenValues.empty()); + decomposeCovs(); } - max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); + if(startStep == START_M_STEP) + mStep(); - // update invCovsEigenValues - invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; + double trainLogLikelihood, prevTrainLogLikelihood = 0.; + int maxIters = (params.termCrit.type & TermCriteria::MAX_ITER) ? + params.termCrit.maxCount : DEFAULT_MAX_ITERS; + double epsilon = (params.termCrit.type & TermCriteria::EPS) ? params.termCrit.epsilon : 0.; + + for(int iter = 0; ; iter++) + { + eStep(); + trainLogLikelihood = sum(trainLogLikelihoods)[0]; + + if(iter >= maxIters - 1) + break; + + double trainLogLikelihoodDelta = trainLogLikelihood - prevTrainLogLikelihood; + if( iter != 0 && + (trainLogLikelihoodDelta < -DBL_EPSILON || + trainLogLikelihoodDelta < epsilon * std::fabs(trainLogLikelihood))) + break; + + mStep(); + + prevTrainLogLikelihood = trainLogLikelihood; + } + + if( trainLogLikelihood <= -DBL_MAX/10000. ) + { + clear(); + return false; + } + + // postprocess covs + covs.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(params.covMatType == COV_MAT_SPHERICAL) + { + covs[clusterIndex].create(dim, dim, CV_64FC1); + setIdentity(covs[clusterIndex], Scalar(covsEigenValues[clusterIndex].at(0))); + } + else if(params.covMatType == COV_MAT_DIAGONAL) + { + covs[clusterIndex] = Mat::diag(covsEigenValues[clusterIndex]); + } + } + + if(labels.needed()) + trainLabels.copyTo(labels); + if(probs.needed()) + trainProbs.copyTo(probs); + if(logLikelihoods.needed()) + trainLogLikelihoods.copyTo(logLikelihoods); + + trainSamples.release(); + trainProbs.release(); + trainLabels.release(); + trainLogLikelihoods.release(); + + return true; } - for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + Vec2d computeProbabilities(const Mat& sample, Mat* probs, int ptype) const { - if(weights.at(clusterIndex) <= minPosWeight) + // L_ik = log(weight_k) - 0.5 * log(|det(cov_k)|) - 0.5 *(x_i - mean_k)' cov_k^(-1) (x_i - mean_k)] + // q = arg(max_k(L_ik)) + // probs_ik = exp(L_ik - L_iq) / (1 + sum_j!=q (exp(L_ij - L_iq)) + // see Alex Smola's blog http://blog.smola.org/page/2 for + // details on the log-sum-exp trick + + int nclusters = params.nclusters, covMatType = params.covMatType; + int stype = sample.type(); + CV_Assert(!means.empty()); + CV_Assert((stype == CV_32F || stype == CV_64F) && (ptype == CV_32F || ptype == CV_64F)); + CV_Assert(sample.size() == Size(means.cols, 1)); + + int dim = sample.cols; + + Mat L(1, nclusters, CV_64FC1), centeredSample(1, dim, CV_64F); + int i, label = 0; + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) { - Mat clusterMean = means.row(clusterIndex); - means.row(minWeightClusterIndex).copyTo(clusterMean); - covs[minWeightClusterIndex].copyTo(covs[clusterIndex]); - covsEigenValues[minWeightClusterIndex].copyTo(covsEigenValues[clusterIndex]); - if(covMatType == EM::COV_MAT_GENERIC) - covsRotateMats[minWeightClusterIndex].copyTo(covsRotateMats[clusterIndex]); - invCovsEigenValues[minWeightClusterIndex].copyTo(invCovsEigenValues[clusterIndex]); + const double* mptr = means.ptr(clusterIndex); + double* dptr = centeredSample.ptr(); + if( stype == CV_32F ) + { + const float* sptr = sample.ptr(); + for( i = 0; i < dim; i++ ) + dptr[i] = sptr[i] - mptr[i]; + } + else + { + const double* sptr = sample.ptr(); + for( i = 0; i < dim; i++ ) + dptr[i] = sptr[i] - mptr[i]; + } + + Mat rotatedCenteredSample = covMatType != COV_MAT_GENERIC ? + centeredSample : centeredSample * covsRotateMats[clusterIndex]; + + double Lval = 0; + for(int di = 0; di < dim; di++) + { + double w = invCovsEigenValues[clusterIndex].at(covMatType != COV_MAT_SPHERICAL ? di : 0); + double val = rotatedCenteredSample.at(di); + Lval += w * val * val; + } + CV_DbgAssert(!logWeightDivDet.empty()); + L.at(clusterIndex) = logWeightDivDet.at(clusterIndex) - 0.5 * Lval; + + if(L.at(clusterIndex) > L.at(label)) + label = clusterIndex; + } + + double maxLVal = L.at(label); + double expDiffSum = 0; + for( i = 0; i < L.cols; i++ ) + { + double v = std::exp(L.at(i) - maxLVal); + L.at(i) = v; + expDiffSum += v; // sum_j(exp(L_ij - L_iq)) + } + + if(probs) + L.convertTo(*probs, ptype, 1./expDiffSum); + + Vec2d res; + res[0] = std::log(expDiffSum) + maxLVal - 0.5 * dim * CV_LOG2PI; + res[1] = label; + + return res; + } + + void eStep() + { + // Compute probs_ik from means_k, covs_k and weights_k. + trainProbs.create(trainSamples.rows, params.nclusters, CV_64FC1); + trainLabels.create(trainSamples.rows, 1, CV_32SC1); + trainLogLikelihoods.create(trainSamples.rows, 1, CV_64FC1); + + computeLogWeightDivDet(); + + CV_DbgAssert(trainSamples.type() == CV_64FC1); + CV_DbgAssert(means.type() == CV_64FC1); + + for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + { + Mat sampleProbs = trainProbs.row(sampleIndex); + Vec2d res = computeProbabilities(trainSamples.row(sampleIndex), &sampleProbs, CV_64F); + trainLogLikelihoods.at(sampleIndex) = res[0]; + trainLabels.at(sampleIndex) = static_cast(res[1]); } } - // Normalize weights - weights /= trainSamples.rows; -} + void mStep() + { + // Update means_k, covs_k and weights_k from probs_ik + int nclusters = params.nclusters; + int covMatType = params.covMatType; + int dim = trainSamples.cols; -void EM::read(const FileNode& fn) + // Update weights + // not normalized first + reduce(trainProbs, weights, 0, CV_REDUCE_SUM); + + // Update means + means.create(nclusters, dim, CV_64FC1); + means = Scalar(0); + + const double minPosWeight = trainSamples.rows * DBL_EPSILON; + double minWeight = DBL_MAX; + int minWeightClusterIndex = -1; + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(weights.at(clusterIndex) <= minPosWeight) + continue; + + if(weights.at(clusterIndex) < minWeight) + { + minWeight = weights.at(clusterIndex); + minWeightClusterIndex = clusterIndex; + } + + Mat clusterMean = means.row(clusterIndex); + for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + clusterMean += trainProbs.at(sampleIndex, clusterIndex) * trainSamples.row(sampleIndex); + clusterMean /= weights.at(clusterIndex); + } + + // Update covsEigenValues and invCovsEigenValues + covs.resize(nclusters); + covsEigenValues.resize(nclusters); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats.resize(nclusters); + invCovsEigenValues.resize(nclusters); + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(weights.at(clusterIndex) <= minPosWeight) + continue; + + if(covMatType != COV_MAT_SPHERICAL) + covsEigenValues[clusterIndex].create(1, dim, CV_64FC1); + else + covsEigenValues[clusterIndex].create(1, 1, CV_64FC1); + + if(covMatType == COV_MAT_GENERIC) + covs[clusterIndex].create(dim, dim, CV_64FC1); + + Mat clusterCov = covMatType != COV_MAT_GENERIC ? + covsEigenValues[clusterIndex] : covs[clusterIndex]; + + clusterCov = Scalar(0); + + Mat centeredSample; + for(int sampleIndex = 0; sampleIndex < trainSamples.rows; sampleIndex++) + { + centeredSample = trainSamples.row(sampleIndex) - means.row(clusterIndex); + + if(covMatType == COV_MAT_GENERIC) + clusterCov += trainProbs.at(sampleIndex, clusterIndex) * centeredSample.t() * centeredSample; + else + { + double p = trainProbs.at(sampleIndex, clusterIndex); + for(int di = 0; di < dim; di++ ) + { + double val = centeredSample.at(di); + clusterCov.at(covMatType != COV_MAT_SPHERICAL ? di : 0) += p*val*val; + } + } + } + + if(covMatType == COV_MAT_SPHERICAL) + clusterCov /= dim; + + clusterCov /= weights.at(clusterIndex); + + // Update covsRotateMats for COV_MAT_GENERIC only + if(covMatType == COV_MAT_GENERIC) + { + SVD svd(covs[clusterIndex], SVD::MODIFY_A + SVD::FULL_UV); + covsEigenValues[clusterIndex] = svd.w; + covsRotateMats[clusterIndex] = svd.u; + } + + max(covsEigenValues[clusterIndex], minEigenValue, covsEigenValues[clusterIndex]); + + // update invCovsEigenValues + invCovsEigenValues[clusterIndex] = 1./covsEigenValues[clusterIndex]; + } + + for(int clusterIndex = 0; clusterIndex < nclusters; clusterIndex++) + { + if(weights.at(clusterIndex) <= minPosWeight) + { + Mat clusterMean = means.row(clusterIndex); + means.row(minWeightClusterIndex).copyTo(clusterMean); + covs[minWeightClusterIndex].copyTo(covs[clusterIndex]); + covsEigenValues[minWeightClusterIndex].copyTo(covsEigenValues[clusterIndex]); + if(covMatType == COV_MAT_GENERIC) + covsRotateMats[minWeightClusterIndex].copyTo(covsRotateMats[clusterIndex]); + invCovsEigenValues[minWeightClusterIndex].copyTo(invCovsEigenValues[clusterIndex]); + } + } + + // Normalize weights + weights /= trainSamples.rows; + } + + void write_params(FileStorage& fs) const + { + fs << "nclusters" << params.nclusters; + fs << "cov_mat_type" << (params.covMatType == COV_MAT_SPHERICAL ? String("spherical") : + params.covMatType == COV_MAT_DIAGONAL ? String("diagonal") : + params.covMatType == COV_MAT_GENERIC ? String("generic") : + format("unknown_%d", params.covMatType)); + writeTermCrit(fs, params.termCrit); + } + + void write(FileStorage& fs) const + { + fs << "training_params" << "{"; + write_params(fs); + fs << "}"; + fs << "weights" << weights; + fs << "means" << means; + + size_t i, n = covs.size(); + + fs << "covs" << "["; + for( i = 0; i < n; i++ ) + fs << covs[i]; + fs << "]"; + } + + void read_params(const FileNode& fn) + { + Params _params; + _params.nclusters = (int)fn["nclusters"]; + String s = (String)fn["cov_mat_type"]; + _params.covMatType = s == "spherical" ? COV_MAT_SPHERICAL : + s == "diagonal" ? COV_MAT_DIAGONAL : + s == "generic" ? COV_MAT_GENERIC : -1; + CV_Assert(_params.covMatType >= 0); + _params.termCrit = readTermCrit(fn); + setParams(_params); + } + + void read(const FileNode& fn) + { + clear(); + read_params(fn["training_params"]); + + fn["weights"] >> weights; + fn["means"] >> means; + + FileNode cfn = fn["covs"]; + FileNodeIterator cfn_it = cfn.begin(); + int i, n = (int)cfn.size(); + covs.resize(n); + + for( i = 0; i < n; i++, ++cfn_it ) + (*cfn_it) >> covs[i]; + + decomposeCovs(); + computeLogWeightDivDet(); + } + + Mat getWeights() const { return weights; } + Mat getMeans() const { return means; } + void getCovs(std::vector& _covs) const + { + _covs.resize(covs.size()); + std::copy(covs.begin(), covs.end(), _covs.begin()); + } + + Params params; + + // all inner matrices have type CV_64FC1 + Mat trainSamples; + Mat trainProbs; + Mat trainLogLikelihoods; + Mat trainLabels; + + Mat weights; + Mat means; + std::vector covs; + + std::vector covsEigenValues; + std::vector covsRotateMats; + std::vector invCovsEigenValues; + Mat logWeightDivDet; +}; + + +Ptr EM::train(InputArray samples, OutputArray logLikelihoods, + OutputArray labels, OutputArray probs, + const EM::Params& params) { - Algorithm::read(fn); - - decomposeCovs(); - computeLogWeightDivDet(); + Ptr em = makePtr(params); + if(!em->train_(samples, logLikelihoods, labels, probs)) + em.release(); + return em; } +Ptr EM::train_startWithE(InputArray samples, InputArray means0, + InputArray covs0, InputArray weights0, + OutputArray logLikelihoods, OutputArray labels, + OutputArray probs, const EM::Params& params) +{ + Ptr em = makePtr(params); + if(!em->trainE(samples, means0, covs0, weights0, logLikelihoods, labels, probs)) + em.release(); + return em; +} + +Ptr EM::train_startWithM(InputArray samples, InputArray probs0, + OutputArray logLikelihoods, OutputArray labels, + OutputArray probs, const EM::Params& params) +{ + Ptr em = makePtr(params); + if(!em->trainM(samples, probs0, logLikelihoods, labels, probs)) + em.release(); + return em; +} + +Ptr EM::create(const Params& params) +{ + return makePtr(params); +} + +} } // namespace cv /* End of file. */ diff --git a/modules/ml/src/ertrees.cpp b/modules/ml/src/ertrees.cpp deleted file mode 100644 index 0201deb0c6..0000000000 --- a/modules/ml/src/ertrees.cpp +++ /dev/null @@ -1,1859 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// - - IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. - - By downloading, copying, installing or using the software you agree to this license. - If you do not agree to this license, do not download, install, - copy or use the software. - - - Intel License Agreement - - Copyright (C) 2000, Intel Corporation, all rights reserved. - Third party copyrights are property of their respective owners. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistribution's of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistribution's 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. - - * The name of Intel Corporation may not 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 Intel Corporation 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. - -M*/ - -#include "precomp.hpp" - -static const float ord_nan = FLT_MAX*0.5f; -static const int min_block_size = 1 << 16; -static const int block_size_delta = 1 << 10; - -template -class LessThanPtr -{ -public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; - -class LessThanPairs -{ -public: - bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } -}; - -void CvERTreeTrainData::set_data( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, - const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels, bool _update_data ) -{ - CvMat* sample_indices = 0; - CvMat* var_type0 = 0; - CvMat* tmp_map = 0; - int** int_ptr = 0; - CvPair16u32s* pair16u32s_ptr = 0; - CvDTreeTrainData* data = 0; - float *_fdst = 0; - int *_idst = 0; - unsigned short* udst = 0; - int* idst = 0; - - CV_FUNCNAME( "CvERTreeTrainData::set_data" ); - - __BEGIN__; - - int sample_all = 0, r_type, cv_n; - int total_c_count = 0; - int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; - int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step - int vi, i, size; - char err[100]; - const int *sidx = 0, *vidx = 0; - - uint64 effective_buf_size = 0; - int effective_buf_height = 0, effective_buf_width = 0; - - if ( _params.use_surrogates ) - CV_ERROR(CV_StsBadArg, "CvERTrees do not support surrogate splits"); - - if( _update_data && data_root ) - { - CV_ERROR(CV_StsBadArg, "CvERTrees do not support data update"); - } - - clear(); - - var_all = 0; - rng = &cv::theRNG(); - - CV_CALL( set_params( _params )); - - // check parameter types and sizes - CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); - - train_data = _train_data; - responses = _responses; - missing_mask = _missing_mask; - - if( _tflag == CV_ROW_SAMPLE ) - { - ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - dv_step = 1; - if( _missing_mask ) - ms_step = _missing_mask->step, mv_step = 1; - } - else - { - dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - ds_step = 1; - if( _missing_mask ) - mv_step = _missing_mask->step, ms_step = 1; - } - tflag = _tflag; - - sample_count = sample_all; - var_count = var_all; - - if( _sample_idx ) - { - CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); - sidx = sample_indices->data.i; - sample_count = sample_indices->rows + sample_indices->cols - 1; - } - - if( _var_idx ) - { - CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); - vidx = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - if( !CV_IS_MAT(_responses) || - (CV_MAT_TYPE(_responses->type) != CV_32SC1 && - CV_MAT_TYPE(_responses->type) != CV_32FC1) || - (_responses->rows != 1 && _responses->cols != 1) || - _responses->rows + _responses->cols - 1 != sample_all ) - CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " - "floating-point vector containing as many elements as " - "the total number of samples in the training data matrix" ); - - is_buf_16u = false; - if ( sample_count < 65536 ) - is_buf_16u = true; - - r_type = CV_VAR_CATEGORICAL; - if( _var_type ) - CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); - - CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); - - cat_var_count = 0; - ord_var_count = -1; - - is_classifier = r_type == CV_VAR_CATEGORICAL; - - // step 0. calc the number of categorical vars - for( vi = 0; vi < var_count; vi++ ) - { - char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; - var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; - } - - ord_var_count = ~ord_var_count; - cv_n = params.cv_folds; - // set the two last elements of var_type array to be able - // to locate responses and cross-validation labels using - // the corresponding get_* functions. - var_type->data.i[var_count] = cat_var_count; - var_type->data.i[var_count+1] = cat_var_count+1; - - // in case of single ordered predictor we need dummy cv_labels - // for safe split_node_data() operation - have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; - - work_var_count = cat_var_count + (is_classifier ? 1 : 0) + (have_labels ? 1 : 0); - - shared = _shared; - buf_count = shared ? 2 : 1; - - buf_size = -1; // the member buf_size is obsolete - - effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated - effective_buf_width = sample_count; - effective_buf_height = work_var_count+1; - - if (effective_buf_width >= effective_buf_height) - effective_buf_height *= buf_count; - else - effective_buf_width *= buf_count; - - if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) - { - CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); - } - - if ( is_buf_16u ) - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); - CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); - } - else - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); - CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); - } - - size = is_classifier ? cat_var_count+1 : cat_var_count; - size = !size ? 1 : size; - CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); - CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); - - size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; - size = !size ? 1 : size; - CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); - - // now calculate the maximum size of split, - // create memory storage that will keep nodes and splits of the decision tree - // allocate root node and the buffer for the whole training data - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); - - nv_size = var_count*sizeof(int); - nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); - - temp_block_size = nv_size; - - if( cv_n ) - { - if( sample_count < cv_n*MAX(params.min_sample_count,10) ) - CV_ERROR( CV_StsOutOfRange, - "The many folds in cross-validation for such a small dataset" ); - - cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); - temp_block_size = MAX(temp_block_size, cv_size); - } - - temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); - CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); - CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); - if( cv_size ) - CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); - - CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); - - max_c_count = 1; - - _fdst = 0; - _idst = 0; - if (ord_var_count) - _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); - if (is_buf_16u && (cat_var_count || is_classifier)) - _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); - - // transform the training data to convenient representation - for( vi = 0; vi <= var_count; vi++ ) - { - int ci; - const uchar* mask = 0; - int m_step = 0, step; - const int* idata = 0; - const float* fdata = 0; - int num_valid = 0; - - if( vi < var_count ) // analyze i-th input variable - { - int vi0 = vidx ? vidx[vi] : vi; - ci = get_var_type(vi); - step = ds_step; m_step = ms_step; - if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) - idata = _train_data->data.i + vi0*dv_step; - else - fdata = _train_data->data.fl + vi0*dv_step; - if( _missing_mask ) - mask = _missing_mask->data.ptr + vi0*mv_step; - } - else // analyze _responses - { - ci = cat_var_count; - step = CV_IS_MAT_CONT(_responses->type) ? - 1 : _responses->step / CV_ELEM_SIZE(_responses->type); - if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) - idata = _responses->data.i; - else - fdata = _responses->data.fl; - } - - if( (vi < var_count && ci>=0) || - (vi == var_count && is_classifier) ) // process categorical variable or response - { - int c_count, prev_label; - int* c_map; - - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + ci*sample_count); - else - idst = buf->data.i + ci*sample_count; - - // copy data - for( i = 0; i < sample_count; i++ ) - { - int val = INT_MAX, si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = idata[(size_t)si*step]; - else - { - float t = fdata[(size_t)si*step]; - val = cvRound(t); - if( val != t ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is not an integer", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - } - - if( val == INT_MAX ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is too large", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - if (is_buf_16u) - { - _idst[i] = val; - pair16u32s_ptr[i].u = udst + i; - pair16u32s_ptr[i].i = _idst + i; - } - else - { - idst[i] = val; - int_ptr[i] = idst + i; - } - } - - c_count = num_valid > 0; - - if (is_buf_16u) - { - std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); - // count the categories - for( i = 1; i < num_valid; i++ ) - if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) - c_count ++ ; - } - else - { - std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); - // count the categories - for( i = 1; i < num_valid; i++ ) - c_count += *int_ptr[i] != *int_ptr[i-1]; - } - - if( vi > 0 ) - max_c_count = MAX( max_c_count, c_count ); - cat_count->data.i[ci] = c_count; - cat_ofs->data.i[ci] = total_c_count; - - // resize cat_map, if need - if( cat_map->cols < total_c_count + c_count ) - { - tmp_map = cat_map; - CV_CALL( cat_map = cvCreateMat( 1, - MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); - for( i = 0; i < total_c_count; i++ ) - cat_map->data.i[i] = tmp_map->data.i[i]; - cvReleaseMat( &tmp_map ); - } - - c_map = cat_map->data.i + total_c_count; - total_c_count += c_count; - - c_count = -1; - if (is_buf_16u) - { - // compact the class indices and build the map - prev_label = ~*pair16u32s_ptr[0].i; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *pair16u32s_ptr[i].i; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *pair16u32s_ptr[i].u = (unsigned short)c_count; - } - // replace labels for missing values with 65535 - for( ; i < sample_count; i++ ) - *pair16u32s_ptr[i].u = 65535; - } - else - { - // compact the class indices and build the map - prev_label = ~*int_ptr[0]; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *int_ptr[i]; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *int_ptr[i] = c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *int_ptr[i] = -1; - } - } - else if( ci < 0 ) // process ordered variable - { - for( i = 0; i < sample_count; i++ ) - { - float val = ord_nan; - int si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = (float)idata[(size_t)si*step]; - else - val = fdata[(size_t)si*step]; - - if( fabs(val) >= ord_nan ) - { - sprintf( err, "%d-th value of %d-th (ordered) " - "variable (=%g) is too large", i, vi, val ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - } - } - if( vi < var_count ) - data_root->set_num_valid(vi, num_valid); - } - - // set sample labels - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + get_work_var_count()*sample_count); - else - idst = buf->data.i + get_work_var_count()*sample_count; - - for (i = 0; i < sample_count; i++) - { - if (udst) - udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; - else - idst[i] = sidx ? sidx[i] : i; - } - - if( cv_n ) - { - unsigned short* usdst = 0; - int* idst2 = 0; - - if (is_buf_16u) - { - usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); - for( i = vi = 0; i < sample_count; i++ ) - { - usdst[i] = (unsigned short)vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - unsigned short unsh = (unsigned short)vi; - CV_SWAP( usdst[a], usdst[b], unsh ); - } - } - else - { - idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; - for( i = vi = 0; i < sample_count; i++ ) - { - idst2[i] = vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - CV_SWAP( idst2[a], idst2[b], vi ); - } - } - } - - if ( cat_map ) - cat_map->cols = MAX( total_c_count, 1 ); - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); - - have_priors = is_classifier && params.priors; - if( is_classifier ) - { - int m = get_num_classes(); - double sum = 0; - CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); - for( i = 0; i < m; i++ ) - { - double val = have_priors ? params.priors[i] : 1.; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); - priors->data.db[i] = val; - sum += val; - } - - // normalize weights - if( have_priors ) - cvScale( priors, priors, 1./sum ); - - CV_CALL( priors_mult = cvCloneMat( priors )); - CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); - } - - CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); - CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); - - __END__; - - if( data ) - delete data; - - if (_fdst) - cvFree( &_fdst ); - if (_idst) - cvFree( &_idst ); - cvFree( &int_ptr ); - cvReleaseMat( &var_type0 ); - cvReleaseMat( &sample_indices ); - cvReleaseMat( &tmp_map ); -} - -void CvERTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* missing_buf, - const float** ord_values, const int** missing, int* sample_indices_buf ) -{ - int vidx = var_idx ? var_idx->data.i[vi] : vi; - int node_sample_count = n->sample_count; - // may use missing_buf as buffer for sample indices! - const int* sample_indices = get_sample_indices(n, sample_indices_buf ? sample_indices_buf : missing_buf); - - int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); - int m_step = missing_mask ? missing_mask->step/CV_ELEM_SIZE(missing_mask->type) : 1; - if( tflag == CV_ROW_SAMPLE ) - { - for( int i = 0; i < node_sample_count; i++ ) - { - int idx = sample_indices[i]; - missing_buf[i] = missing_mask ? *(missing_mask->data.ptr + idx * m_step + vi) : 0; - ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); - } - } - else - for( int i = 0; i < node_sample_count; i++ ) - { - int idx = sample_indices[i]; - missing_buf[i] = missing_mask ? *(missing_mask->data.ptr + vi* m_step + idx) : 0; - ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); - } - *ord_values = ord_values_buf; - *missing = missing_buf; -} - - -const int* CvERTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) -{ - return get_cat_var_data( n, var_count + (is_classifier ? 1 : 0) + (have_labels ? 1 : 0), indices_buf ); -} - - -const int* CvERTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (have_labels) - return get_cat_var_data( n, var_count + (is_classifier ? 1 : 0), labels_buf ); - return 0; -} - - -const int* CvERTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf ) -{ - int ci = get_var_type( vi); - const int* cat_values = 0; - if( !is_buf_16u ) - cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + ci*sample_count + n->offset; - else { - const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - ci*sample_count + n->offset); - for( int i = 0; i < n->sample_count; i++ ) - cat_values_buf[i] = short_values[i]; - cat_values = cat_values_buf; - } - return cat_values; -} - -void CvERTreeTrainData::get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, - float* _responses, bool get_class_idx ) -{ - CvMat* subsample_idx = 0; - CvMat* subsample_co = 0; - - cv::AutoBuffer inn_buf(sample_count*(sizeof(float) + sizeof(int))); - - CV_FUNCNAME( "CvERTreeTrainData::get_vectors" ); - - __BEGIN__; - - int i, vi, total = sample_count, count = total, cur_ofs = 0; - int* sidx = 0; - int* co = 0; - - if( _subsample_idx ) - { - CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); - sidx = subsample_idx->data.i; - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - co = subsample_co->data.i; - cvZero( subsample_co ); - count = subsample_idx->cols + subsample_idx->rows - 1; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < total; i++ ) - { - int count_i = co[i*2]; - if( count_i ) - { - co[i*2+1] = cur_ofs*var_count; - cur_ofs += count_i; - } - } - } - - if( missing ) - memset( missing, 1, count*var_count ); - - for( vi = 0; vi < var_count; vi++ ) - { - int ci = get_var_type(vi); - if( ci >= 0 ) // categorical - { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - int* lbls_buf = (int*)(uchar*)inn_buf; - const int* src = get_cat_var_data(data_root, vi, lbls_buf); - - for( i = 0; i < count; i++, dst += var_count ) - { - int idx = sidx ? sidx[i] : i; - int val = src[idx]; - *dst = (float)val; - if( m ) - { - *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); - m += var_count; - } - } - } - else // ordered - { - int* mis_buf = (int*)(uchar*)inn_buf; - const float *dst = 0; - const int* mis = 0; - get_ord_var_data(data_root, vi, values + vi, mis_buf, &dst, &mis, 0); - for (int si = 0; si < total; si++) - *(missing + vi + si) = mis[si] == 0 ? 0 : 1; - } - } - - // copy responses - if( _responses ) - { - if( is_classifier ) - { - int* lbls_buf = (int*)(uchar*)inn_buf; - const int* src = get_class_labels(data_root, lbls_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - int val = get_class_idx ? src[idx] : - cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; - _responses[i] = (float)val; - } - } - else - { - float* _values_buf = (float*)(uchar*)inn_buf; - int* sample_idx_buf = (int*)(_values_buf + sample_count); - const float* _values = get_ord_responses(data_root, _values_buf, sample_idx_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - _responses[i] = _values[idx]; - } - } - } - - __END__; - - cvReleaseMat( &subsample_idx ); - cvReleaseMat( &subsample_co ); -} - -CvDTreeNode* CvERTreeTrainData::subsample_data( const CvMat* _subsample_idx ) -{ - CvDTreeNode* root = 0; - - CV_FUNCNAME( "CvERTreeTrainData::subsample_data" ); - - __BEGIN__; - - if( !data_root ) - CV_ERROR( CV_StsError, "No training data has been set" ); - - if( !_subsample_idx ) - { - // make a copy of the root node - CvDTreeNode temp; - int i; - root = new_node( 0, 1, 0, 0 ); - temp = *root; - *root = *data_root; - root->num_valid = temp.num_valid; - if( root->num_valid ) - { - for( i = 0; i < var_count; i++ ) - root->num_valid[i] = data_root->num_valid[i]; - } - root->cv_Tn = temp.cv_Tn; - root->cv_node_risk = temp.cv_node_risk; - root->cv_node_error = temp.cv_node_error; - } - else - CV_ERROR( CV_StsError, "_subsample_idx must be null for extra-trees" ); - __END__; - - return root; -} - -double CvForestERTree::calc_node_dir( CvDTreeNode* node ) -{ - char* dir = (char*)data->direction->data.ptr; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; - - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - cv::AutoBuffer inn_buf(n*sizeof(int)*(!data->have_priors ? 1 : 2)); - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - const int* subset = node->split->subset; - if( !data->have_priors ) - { - int sum = 0, sum_abs = 0; - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? - CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d; sum_abs += d & 1; - dir[i] = (char)d; - } - - R = (sum_abs + sum) >> 1; - L = (sum_abs - sum) >> 1; - } - else - { - const double* priors = data->priors_mult->data.db; - double sum = 0, sum_abs = 0; - int *responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - double w = priors[responses[i]]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; - } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; - } - } - else // split on ordered var - { - float split_val = node->split->ord.c; - cv::AutoBuffer inn_buf(n*(sizeof(int)*(!data->have_priors ? 1 : 2) + sizeof(float))); - float* val_buf = (float*)(uchar*)inn_buf; - int* missing_buf = (int*)(val_buf + n); - const float* val = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, val_buf, missing_buf, &val, &missing, 0 ); - - if( !data->have_priors ) - { - L = R = 0; - for( i = 0; i < n; i++ ) - { - if ( missing[i] ) - dir[i] = (char)0; - else - { - if ( val[i] < split_val) - { - dir[i] = (char)-1; - L++; - } - else - { - dir[i] = (char)1; - R++; - } - } - } - } - else - { - const double* priors = data->priors_mult->data.db; - int* responses_buf = missing_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - L = R = 0; - for( i = 0; i < n; i++ ) - { - if ( missing[i] ) - dir[i] = (char)0; - else - { - double w = priors[responses[i]]; - if ( val[i] < split_val) - { - dir[i] = (char)-1; - L += w; - } - else - { - dir[i] = (char)1; - R += w; - } - } - } - } - } - - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); -} - -CvDTreeSplit* CvForestERTree::find_split_ord_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const float split_delta = (1 + FLT_EPSILON) * FLT_EPSILON; - - int n = node->sample_count; - int m = data->get_num_classes(); - - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int) + sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - int* responses_buf = missing_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - - double lbest_val = 0, rbest_val = 0, best_val = init_quality, split_val = 0; - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - bool is_find_split = false; - float pmin, pmax; - int smpi = 0; - while ( missing[smpi] && (smpi < n) ) - smpi++; - assert(smpi < n); - - pmin = values[smpi]; - pmax = pmin; - for (; smpi < n; smpi++) - { - float ptemp = values[smpi]; - int ms = missing[smpi]; - if (ms) continue; - if ( ptemp < pmin) - pmin = ptemp; - if ( ptemp > pmax) - pmax = ptemp; - } - float fdiff = pmax-pmin; - if (fdiff > epsilon) - { - is_find_split = true; - cv::RNG* rng = data->rng; - split_val = pmin + rng->uniform(0.f, 1.f) * fdiff ; - if (split_val - pmin <= FLT_EPSILON) - split_val = pmin + split_delta; - if (pmax - split_val <= FLT_EPSILON) - split_val = pmax - split_delta; - - // calculate Gini index - if ( !priors ) - { - cv::AutoBuffer lrc(m*2); - int *lc = lrc, *rc = lc + m; - int L = 0, R = 0; - - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - float val = values[si]; - int ms = missing[si]; - if (ms) continue; - if ( val < split_val ) - { - lc[r]++; - L++; - } - else - { - rc[r]++; - R++; - } - } - for (int i = 0; i < m; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / ((double)(L*R)); - } - else - { - cv::AutoBuffer lrc(m*2); - double *lc = lrc, *rc = lc + m; - double L = 0, R = 0; - - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - float val = values[si]; - int ms = missing[si]; - double p = priors[r]; - if (ms) continue; - if ( val < split_val ) - { - lc[r] += p; - L += p; - } - else - { - rc[r] += p; - R += p; - } - } - for (int i = 0; i < m; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / (L*R); - } - - } - - CvDTreeSplit* split = 0; - if( is_find_split ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (float)split_val; - split->ord.split_point = -1; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int cm = data->get_num_classes(); - int vm = data->cat_count->data.i[ci]; - double best_val = init_quality; - CvDTreeSplit *split = 0; - - if ( vm > 1 ) - { - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n); - int* ext_buf = _ext_buf ? (int*)_ext_buf : (int*)inn_buf; - - const int* labels = data->get_cat_var_data( node, vi, ext_buf ); - const int* responses = data->get_class_labels( node, ext_buf + n ); - - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - - // create random class mask - cv::AutoBuffer valid_cidx(vm); - for (int i = 0; i < vm; i++) - { - valid_cidx[i] = -1; - } - for (int si = 0; si < n; si++) - { - int c = labels[si]; - if ( ((c == 65535) && data->is_buf_16u) || ((c<0) && (!data->is_buf_16u)) ) - continue; - valid_cidx[c]++; - } - - int valid_ccount = 0; - for (int i = 0; i < vm; i++) - if (valid_cidx[i] >= 0) - { - valid_cidx[i] = valid_ccount; - valid_ccount++; - } - if (valid_ccount > 1) - { - CvRNG* rng = forest->get_rng(); - int l_cval_count = 1 + cvRandInt(rng) % (valid_ccount-1); - - CvMat* var_class_mask = cvCreateMat( 1, valid_ccount, CV_8UC1 ); - CvMat submask; - memset(var_class_mask->data.ptr, 0, valid_ccount*CV_ELEM_SIZE(var_class_mask->type)); - cvGetCols( var_class_mask, &submask, 0, l_cval_count ); - cvSet( &submask, cvScalar(1) ); - for (int i = 0; i < valid_ccount; i++) - { - uchar temp; - int i1 = cvRandInt( rng ) % valid_ccount; - int i2 = cvRandInt( rng ) % valid_ccount; - CV_SWAP( var_class_mask->data.ptr[i1], var_class_mask->data.ptr[i2], temp ); - } - - split = _split ? _split : data->new_split_cat( 0, -1.0f ); - split->var_idx = vi; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - - // calculate Gini index - double lbest_val = 0, rbest_val = 0; - if( !priors ) - { - cv::AutoBuffer lrc(cm*2); - int *lc = lrc, *rc = lc + cm; - int L = 0, R = 0; - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < cm; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - int mask_class_idx = valid_cidx[var_class_idx]; - if (var_class_mask->data.ptr[mask_class_idx]) - { - lc[r]++; - L++; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rc[r]++; - R++; - } - } - for (int i = 0; i < cm; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / ((double)(L*R)); - } - else - { - cv::AutoBuffer lrc(cm*2); - int *lc = lrc, *rc = lc + cm; - double L = 0, R = 0; - // init arrays of class instance counters on both sides of the split - for(int i = 0; i < cm; i++ ) - { - lc[i] = 0; - rc[i] = 0; - } - for( int si = 0; si < n; si++ ) - { - int r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - double p = priors[si]; - int mask_class_idx = valid_cidx[var_class_idx]; - - if (var_class_mask->data.ptr[mask_class_idx]) - { - lc[r]+=(int)p; - L+=p; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rc[r]+=(int)p; - R+=p; - } - } - for (int i = 0; i < cm; i++) - { - lbest_val += lc[i]*lc[i]; - rbest_val += rc[i]*rc[i]; - } - best_val = (lbest_val*R + rbest_val*L) / (L*R); - } - split->quality = (float)best_val; - - cvReleaseMat(&var_class_mask); - } - } - - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - const float split_delta = (1 + FLT_EPSILON) * FLT_EPSILON; - int n = node->sample_count; - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(n*(2*sizeof(int) + 2*sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - float* responses_buf = (float*)(missing_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - double best_val = init_quality, split_val = 0, lsum = 0, rsum = 0; - int L = 0, R = 0; - - bool is_find_split = false; - float pmin, pmax; - int smpi = 0; - while ( missing[smpi] && (smpi < n) ) - smpi++; - - assert(smpi < n); - - pmin = values[smpi]; - pmax = pmin; - for (; smpi < n; smpi++) - { - float ptemp = values[smpi]; - int m = missing[smpi]; - if (m) continue; - if ( ptemp < pmin) - pmin = ptemp; - if ( ptemp > pmax) - pmax = ptemp; - } - float fdiff = pmax-pmin; - if (fdiff > epsilon) - { - is_find_split = true; - cv::RNG* rng = data->rng; - split_val = pmin + rng->uniform(0.f, 1.f) * fdiff ; - if (split_val - pmin <= FLT_EPSILON) - split_val = pmin + split_delta; - if (pmax - split_val <= FLT_EPSILON) - split_val = pmax - split_delta; - - for (int si = 0; si < n; si++) - { - float r = responses[si]; - float val = values[si]; - int m = missing[si]; - if (m) continue; - if (val < split_val) - { - lsum += r; - L++; - } - else - { - rsum += r; - R++; - } - } - best_val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - } - - CvDTreeSplit* split = 0; - if( is_find_split ) - { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (float)split_val; - split->ord.split_point = -1; - split->inversed = 0; - split->quality = (float)best_val; - } - return split; -} - -CvDTreeSplit* CvForestERTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, - uchar* _ext_buf ) -{ - int ci = data->get_var_type(vi); - int n = node->sample_count; - int vm = data->cat_count->data.i[ci]; - double best_val = init_quality; - CvDTreeSplit *split = 0; - float lsum = 0, rsum = 0; - - if ( vm > 1 ) - { - int base_size = vm*sizeof(int); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - float* responses_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); - - // create random class mask - int *valid_cidx = (int*)base_buf; - for (int i = 0; i < vm; i++) - { - valid_cidx[i] = -1; - } - for (int si = 0; si < n; si++) - { - int c = labels[si]; - if ( ((c == 65535) && data->is_buf_16u) || ((c<0) && (!data->is_buf_16u)) ) - continue; - valid_cidx[c]++; - } - - int valid_ccount = 0; - for (int i = 0; i < vm; i++) - if (valid_cidx[i] >= 0) - { - valid_cidx[i] = valid_ccount; - valid_ccount++; - } - if (valid_ccount > 1) - { - CvRNG* rng = forest->get_rng(); - int l_cval_count = 1 + cvRandInt(rng) % (valid_ccount-1); - - CvMat* var_class_mask = cvCreateMat( 1, valid_ccount, CV_8UC1 ); - CvMat submask; - memset(var_class_mask->data.ptr, 0, valid_ccount*CV_ELEM_SIZE(var_class_mask->type)); - cvGetCols( var_class_mask, &submask, 0, l_cval_count ); - cvSet( &submask, cvScalar(1) ); - for (int i = 0; i < valid_ccount; i++) - { - uchar temp; - int i1 = cvRandInt( rng ) % valid_ccount; - int i2 = cvRandInt( rng ) % valid_ccount; - CV_SWAP( var_class_mask->data.ptr[i1], var_class_mask->data.ptr[i2], temp ); - } - - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); - - int L = 0, R = 0; - for( int si = 0; si < n; si++ ) - { - float r = responses[si]; - int var_class_idx = labels[si]; - if ( ((var_class_idx == 65535) && data->is_buf_16u) || ((var_class_idx<0) && (!data->is_buf_16u)) ) - continue; - int mask_class_idx = valid_cidx[var_class_idx]; - if (var_class_mask->data.ptr[mask_class_idx]) - { - lsum += r; - L++; - split->subset[var_class_idx >> 5] |= 1 << (var_class_idx & 31); - } - else - { - rsum += r; - R++; - } - } - best_val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); - - split->quality = (float)best_val; - - cvReleaseMat(&var_class_mask); - } - } - - return split; -} - -void CvForestERTree::split_node_data( CvDTreeNode* node ) -{ - int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; - char* dir = (char*)data->direction->data.ptr; - CvDTreeNode *left = 0, *right = 0; - int new_buf_idx = data->get_child_buf_idx( node ); - CvMat* buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - cv::AutoBuffer temp_buf(n); - - complete_node_dir(node); - - for( i = nl = nr = 0; i < n; i++ ) - { - int d = dir[i]; - nr += d; - nl += d^1; - } - - bool split_input_data; - node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); - node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); - - split_input_data = node->depth + 1 < data->params.max_depth && - (node->left->sample_count > data->params.min_sample_count || - node->right->sample_count > data->params.min_sample_count); - - cv::AutoBuffer inn_buf(n*(sizeof(int)+sizeof(float))); - // split ordered vars - for( vi = 0; vi < data->var_count; vi++ ) - { - int ci = data->get_var_type(vi); - if (ci >= 0) continue; - - int n1 = node->get_num_valid(vi), nr1 = 0; - float* values_buf = (float*)(uchar*)inn_buf; - int* missing_buf = (int*)(values_buf + n); - const float* values = 0; - const int* missing = 0; - data->get_ord_var_data( node, vi, values_buf, missing_buf, &values, &missing, 0 ); - - for( i = 0; i < n; i++ ) - nr1 += ((!missing[i]) & dir[i]); - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - // split categorical vars, responses and cv_labels using new_idx relocation table - for( vi = 0; vi < data->get_work_var_count() + data->ord_var_count; vi++ ) - { - int ci = data->get_var_type(vi); - if (ci < 0) continue; - - int n1 = node->get_num_valid(vi), nr1 = 0; - const int* src_lbls = data->get_cat_var_data(node, vi, (int*)(uchar*)inn_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = src_lbls[i]; - - if (data->is_buf_16u) - { - unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + - ci*scount + left->offset); - unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + - ci*scount + right->offset); - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - nr1 += (idx != 65535); - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - else - { - int *ldst = buf->data.i + left->buf_idx*length_buf_row + - ci*scount + left->offset; - int *rdst = buf->data.i + right->buf_idx*length_buf_row + - ci*scount + right->offset; - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - nr1 += (idx >= 0); - } - else - { - *ldst = idx; - ldst++; - } - - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - } - - // split sample indices - int *sample_idx_src_buf = (int*)(uchar*)inn_buf; - const int* sample_idx_src = 0; - if (split_input_data) - { - sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = sample_idx_src[i]; - - int pos = data->get_work_var_count(); - - if (data->is_buf_16u) - { - unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - pos*scount + left->offset); - unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + - pos*scount + right->offset); - - for (i = 0; i < n; i++) - { - int d = dir[i]; - unsigned short idx = (unsigned short)temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - else - { - int* ldst = buf->data.i + left->buf_idx*length_buf_row + - pos*scount + left->offset; - int* rdst = buf->data.i + right->buf_idx*length_buf_row + - pos*scount + right->offset; - for (i = 0; i < n; i++) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - } - - // deallocate the parent node data that is not needed anymore - data->free_node_data(node); -} - -CvERTrees::CvERTrees() -{ -} - -CvERTrees::~CvERTrees() -{ -} - -cv::String CvERTrees::getName() const -{ - return CV_TYPE_NAME_ML_ERTREES; -} - -bool CvERTrees::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvRTParams params ) -{ - bool result = false; - - CV_FUNCNAME("CvERTrees::train"); - __BEGIN__ - int var_count = 0; - - clear(); - - CvDTreeParams tree_params( params.max_depth, params.min_sample_count, - params.regression_accuracy, params.use_surrogates, params.max_categories, - params.cv_folds, params.use_1se_rule, false, params.priors ); - - data = new CvERTreeTrainData(); - CV_CALL(data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, tree_params, true)); - - var_count = data->var_count; - if( params.nactive_vars > var_count ) - params.nactive_vars = var_count; - else if( params.nactive_vars == 0 ) - params.nactive_vars = (int)sqrt((double)var_count); - else if( params.nactive_vars < 0 ) - CV_ERROR( CV_StsBadArg, " must be non-negative" ); - - // Create mask of active variables at the tree nodes - CV_CALL(active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 )); - if( params.calc_var_importance ) - { - CV_CALL(var_importance = cvCreateMat( 1, var_count, CV_32FC1 )); - cvZero(var_importance); - } - { // initialize active variables mask - CvMat submask1, submask2; - CV_Assert( (active_var_mask->cols >= 1) && (params.nactive_vars > 0) && (params.nactive_vars <= active_var_mask->cols) ); - cvGetCols( active_var_mask, &submask1, 0, params.nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - if( params.nactive_vars < active_var_mask->cols ) - { - cvGetCols( active_var_mask, &submask2, params.nactive_vars, var_count ); - cvZero( &submask2 ); - } - } - - CV_CALL(result = grow_forest( params.term_crit )); - - result = true; - - __END__ - return result; - -} - -bool CvERTrees::train( CvMLData* _data, CvRTParams params) -{ - bool result = false; - - CV_FUNCNAME( "CvERTrees::train" ); - - __BEGIN__; - - CV_CALL( result = CvRTrees::train( _data, params) ); - - __END__; - - return result; -} - -bool CvERTrees::grow_forest( const CvTermCriteria term_crit ) -{ - bool result = false; - - CvMat* sample_idx_for_tree = 0; - - CV_FUNCNAME("CvERTrees::grow_forest"); - __BEGIN__; - - const int max_ntrees = term_crit.max_iter; - const double max_oob_err = term_crit.epsilon; - - const int dims = data->var_count; - float maximal_response = 0; - - CvMat* oob_sample_votes = 0; - CvMat* oob_responses = 0; - - float* oob_samples_perm_ptr= 0; - - float* samples_ptr = 0; - uchar* missing_ptr = 0; - float* true_resp_ptr = 0; - bool is_oob_or_vimportance = ((max_oob_err > 0) && (term_crit.type != CV_TERMCRIT_ITER)) || var_importance; - - // oob_predictions_sum[i] = sum of predicted values for the i-th sample - // oob_num_of_predictions[i] = number of summands - // (number of predictions for the i-th sample) - // initialize these variable to avoid warning C4701 - CvMat oob_predictions_sum = cvMat( 1, 1, CV_32FC1 ); - CvMat oob_num_of_predictions = cvMat( 1, 1, CV_32FC1 ); - - nsamples = data->sample_count; - nclasses = data->get_num_classes(); - - if ( is_oob_or_vimportance ) - { - if( data->is_classifier ) - { - CV_CALL(oob_sample_votes = cvCreateMat( nsamples, nclasses, CV_32SC1 )); - cvZero(oob_sample_votes); - } - else - { - // oob_responses[0,i] = oob_predictions_sum[i] - // = sum of predicted values for the i-th sample - // oob_responses[1,i] = oob_num_of_predictions[i] - // = number of summands (number of predictions for the i-th sample) - CV_CALL(oob_responses = cvCreateMat( 2, nsamples, CV_32FC1 )); - cvZero(oob_responses); - cvGetRow( oob_responses, &oob_predictions_sum, 0 ); - cvGetRow( oob_responses, &oob_num_of_predictions, 1 ); - } - - CV_CALL(oob_samples_perm_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims )); - CV_CALL(samples_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims )); - CV_CALL(missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*nsamples*dims )); - CV_CALL(true_resp_ptr = (float*)cvAlloc( sizeof(float)*nsamples )); - - CV_CALL(data->get_vectors( 0, samples_ptr, missing_ptr, true_resp_ptr )); - { - double minval, maxval; - CvMat responses = cvMat(1, nsamples, CV_32FC1, true_resp_ptr); - cvMinMaxLoc( &responses, &minval, &maxval ); - maximal_response = (float)MAX( MAX( fabs(minval), fabs(maxval) ), 0 ); - } - } - - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*max_ntrees ); - memset( trees, 0, sizeof(trees[0])*max_ntrees ); - - CV_CALL(sample_idx_for_tree = cvCreateMat( 1, nsamples, CV_32SC1 )); - - for (int i = 0; i < nsamples; i++) - sample_idx_for_tree->data.i[i] = i; - ntrees = 0; - while( ntrees < max_ntrees ) - { - int i, oob_samples_count = 0; - double ncorrect_responses = 0; // used for estimation of variable importance - CvForestTree* tree = 0; - - trees[ntrees] = new CvForestERTree(); - tree = (CvForestERTree*)trees[ntrees]; - CV_CALL(tree->train( data, 0, this )); - - if ( is_oob_or_vimportance ) - { - CvMat sample, missing; - // form array of OOB samples indices and get these samples - sample = cvMat( 1, dims, CV_32FC1, samples_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - - oob_error = 0; - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) - { - CvDTreeNode* predicted_node = 0; - - // predict oob samples - if( !predicted_node ) - CV_CALL(predicted_node = tree->predict(&sample, &missing, true)); - - if( !data->is_classifier ) //regression - { - double avg_resp, resp = predicted_node->value; - oob_predictions_sum.data.fl[i] += (float)resp; - oob_num_of_predictions.data.fl[i] += 1; - - // compute oob error - avg_resp = oob_predictions_sum.data.fl[i]/oob_num_of_predictions.data.fl[i]; - avg_resp -= true_resp_ptr[i]; - oob_error += avg_resp*avg_resp; - resp = (resp - true_resp_ptr[i])/maximal_response; - ncorrect_responses += exp( -resp*resp ); - } - else //classification - { - double prdct_resp; - CvPoint max_loc; - CvMat votes; - - cvGetRow(oob_sample_votes, &votes, i); - votes.data.i[predicted_node->class_idx]++; - - // compute oob error - cvMinMaxLoc( &votes, 0, 0, 0, &max_loc ); - - prdct_resp = data->cat_map->data.i[max_loc.x]; - oob_error += (fabs(prdct_resp - true_resp_ptr[i]) < FLT_EPSILON) ? 0 : 1; - - ncorrect_responses += cvRound(predicted_node->value - true_resp_ptr[i]) == 0; - } - oob_samples_count++; - } - if( oob_samples_count > 0 ) - oob_error /= (double)oob_samples_count; - - // estimate variable importance - if( var_importance && oob_samples_count > 0 ) - { - int m; - - memcpy( oob_samples_perm_ptr, samples_ptr, dims*nsamples*sizeof(float)); - for( m = 0; m < dims; m++ ) - { - double ncorrect_responses_permuted = 0; - // randomly permute values of the m-th variable in the oob samples - float* mth_var_ptr = oob_samples_perm_ptr + m; - - for( i = 0; i < nsamples; i++ ) - { - int i1, i2; - float temp; - - i1 = (*rng)(nsamples); - i2 = (*rng)(nsamples); - CV_SWAP( mth_var_ptr[i1*dims], mth_var_ptr[i2*dims], temp ); - - // turn values of (m-1)-th variable, that were permuted - // at the previous iteration, untouched - if( m > 1 ) - oob_samples_perm_ptr[i*dims+m-1] = samples_ptr[i*dims+m-1]; - } - - // predict "permuted" cases and calculate the number of votes for the - // correct class in the variable-m-permuted oob data - sample = cvMat( 1, dims, CV_32FC1, oob_samples_perm_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) - { - double predct_resp, true_resp; - - predct_resp = tree->predict(&sample, &missing, true)->value; - true_resp = true_resp_ptr[i]; - if( data->is_classifier ) - ncorrect_responses_permuted += cvRound(true_resp - predct_resp) == 0; - else - { - true_resp = (true_resp - predct_resp)/maximal_response; - ncorrect_responses_permuted += exp( -true_resp*true_resp ); - } - } - var_importance->data.fl[m] += (float)(ncorrect_responses - - ncorrect_responses_permuted); - } - } - } - ntrees++; - if( term_crit.type != CV_TERMCRIT_ITER && oob_error < max_oob_err ) - break; - } - if( var_importance ) - { - for ( int vi = 0; vi < var_importance->cols; vi++ ) - var_importance->data.fl[vi] = ( var_importance->data.fl[vi] > 0 ) ? - var_importance->data.fl[vi] : 0; - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); - } - - result = true; - - cvFree( &oob_samples_perm_ptr ); - cvFree( &samples_ptr ); - cvFree( &missing_ptr ); - cvFree( &true_resp_ptr ); - - cvReleaseMat( &sample_idx_for_tree ); - - cvReleaseMat( &oob_sample_votes ); - cvReleaseMat( &oob_responses ); - - __END__; - - return result; -} - -using namespace cv; - -bool CvERTrees::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvRTParams params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, params); -} - -// End of file. diff --git a/modules/ml/src/estimate.cpp b/modules/ml/src/estimate.cpp deleted file mode 100644 index e9cab881e9..0000000000 --- a/modules/ml/src/estimate.cpp +++ /dev/null @@ -1,728 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "precomp.hpp" - -#if 0 - -ML_IMPL int -icvCmpIntegers (const void* a, const void* b) {return *(const int*)a - *(const int*)b;} - -/****************************************************************************************\ -* Cross-validation algorithms realizations * -\****************************************************************************************/ - -// Return pointer to trainIdx. Function DOES NOT FILL this matrix! -ML_IMPL -const CvMat* cvCrossValGetTrainIdxMatrix (const CvStatModel* estimateModel) -{ - CvMat* result = NULL; - - CV_FUNCNAME ("cvCrossValGetTrainIdxMatrix"); - __BEGIN__ - - if (!CV_IS_CROSSVAL(estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - result = ((CvCrossValidationModel*)estimateModel)->sampleIdxTrain; - - __END__ - - return result; -} // End of cvCrossValGetTrainIdxMatrix - -/****************************************************************************************/ -// Return pointer to checkIdx. Function DOES NOT FILL this matrix! -ML_IMPL -const CvMat* cvCrossValGetCheckIdxMatrix (const CvStatModel* estimateModel) -{ - CvMat* result = NULL; - - CV_FUNCNAME ("cvCrossValGetCheckIdxMatrix"); - __BEGIN__ - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - result = ((CvCrossValidationModel*)estimateModel)->sampleIdxEval; - - __END__ - - return result; -} // End of cvCrossValGetCheckIdxMatrix - -/****************************************************************************************/ -// Create new Idx-matrix for next classifiers training and return code of result. -// Result is 0 if function can't make next step (error input or folds are finished), -// it is 1 if all was correct, and it is 2 if current fold wasn't' checked. -ML_IMPL -int cvCrossValNextStep (CvStatModel* estimateModel) -{ - int result = 0; - - CV_FUNCNAME ("cvCrossValGetNextTrainIdx"); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*) estimateModel; - int k, fold; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - fold = ++crVal->current_fold; - - if (fold >= crVal->folds_all) - { - if (fold == crVal->folds_all) - EXIT; - else - { - CV_ERROR (CV_StsInternal, "All iterations has end long ago"); - } - } - - k = crVal->folds[fold + 1] - crVal->folds[fold]; - crVal->sampleIdxTrain->data.i = crVal->sampleIdxAll + crVal->folds[fold + 1]; - crVal->sampleIdxTrain->cols = crVal->samples_all - k; - crVal->sampleIdxEval->data.i = crVal->sampleIdxAll + crVal->folds[fold]; - crVal->sampleIdxEval->cols = k; - - if (crVal->is_checked) - { - crVal->is_checked = 0; - result = 1; - } - else - { - result = 2; - } - - __END__ - - return result; -} - -/****************************************************************************************/ -// Do checking part of loop of cross-validations metod. -ML_IMPL -void cvCrossValCheckClassifier (CvStatModel* estimateModel, - const CvStatModel* model, - const CvMat* trainData, - int sample_t_flag, - const CvMat* trainClasses) -{ - CV_FUNCNAME ("cvCrossValCheckClassifier "); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*) estimateModel; - int i, j, k; - int* data; - float* responses_fl; - int step; - float* responses_result; - int* responses_i; - double te, te1; - double sum_c, sum_p, sum_pp, sum_cp, sum_cc, sq_err; - -// Check input data to correct values. - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg,"First parameter point to not CvCrossValidationModel"); - } - if (!CV_IS_STAT_MODEL (model)) - { - CV_ERROR (CV_StsBadArg, "Second parameter point to not CvStatModel"); - } - if (!CV_IS_MAT (trainData)) - { - CV_ERROR (CV_StsBadArg, "Third parameter point to not CvMat"); - } - if (!CV_IS_MAT (trainClasses)) - { - CV_ERROR (CV_StsBadArg, "Fifth parameter point to not CvMat"); - } - if (crVal->is_checked) - { - CV_ERROR (CV_StsInternal, "This iterations already was checked"); - } - -// Initialize. - k = crVal->sampleIdxEval->cols; - data = crVal->sampleIdxEval->data.i; - -// Eval tested feature vectors. - CV_CALL (cvStatModelMultiPredict (model, trainData, sample_t_flag, - crVal->predict_results, NULL, crVal->sampleIdxEval)); -// Count number if correct results. - responses_result = crVal->predict_results->data.fl; - if (crVal->is_regression) - { - sum_c = sum_p = sum_pp = sum_cp = sum_cc = sq_err = 0; - if (CV_MAT_TYPE (trainClasses->type) == CV_32FC1) - { - responses_fl = trainClasses->data.fl; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(float); - for (i = 0; i < k; i++) - { - te = responses_result[*data]; - te1 = responses_fl[*data * step]; - sum_c += te1; - sum_p += te; - sum_cc += te1 * te1; - sum_pp += te * te; - sum_cp += te1 * te; - te -= te1; - sq_err += te * te; - - data++; - } - } - else - { - responses_i = trainClasses->data.i; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(int); - for (i = 0; i < k; i++) - { - te = responses_result[*data]; - te1 = responses_i[*data * step]; - sum_c += te1; - sum_p += te; - sum_cc += te1 * te1; - sum_pp += te * te; - sum_cp += te1 * te; - te -= te1; - sq_err += te * te; - - data++; - } - } - // Fixing new internal values of accuracy. - crVal->sum_correct += sum_c; - crVal->sum_predict += sum_p; - crVal->sum_cc += sum_cc; - crVal->sum_pp += sum_pp; - crVal->sum_cp += sum_cp; - crVal->sq_error += sq_err; - } - else - { - if (CV_MAT_TYPE (trainClasses->type) == CV_32FC1) - { - responses_fl = trainClasses->data.fl; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(float); - for (i = 0, j = 0; i < k; i++) - { - if (cvRound (responses_result[*data]) == cvRound (responses_fl[*data * step])) - j++; - data++; - } - } - else - { - responses_i = trainClasses->data.i; - step = trainClasses->rows == 1 ? 1 : trainClasses->step / sizeof(int); - for (i = 0, j = 0; i < k; i++) - { - if (cvRound (responses_result[*data]) == responses_i[*data * step]) - j++; - data++; - } - } - // Fixing new internal values of accuracy. - crVal->correct_results += j; - } -// Fixing that this fold already checked. - crVal->all_results += k; - crVal->is_checked = 1; - - __END__ -} // End of cvCrossValCheckClassifier - -/****************************************************************************************/ -// Return current accuracy. -ML_IMPL -float cvCrossValGetResult (const CvStatModel* estimateModel, - float* correlation) -{ - float result = 0; - - CV_FUNCNAME ("cvCrossValGetResult"); - __BEGIN__ - - double te, te1; - CvCrossValidationModel* crVal = (CvCrossValidationModel*)estimateModel; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - if (crVal->all_results) - { - if (crVal->is_regression) - { - result = ((float)crVal->sq_error) / crVal->all_results; - if (correlation) - { - te = crVal->all_results * crVal->sum_cp - - crVal->sum_correct * crVal->sum_predict; - te *= te; - te1 = (crVal->all_results * crVal->sum_cc - - crVal->sum_correct * crVal->sum_correct) * - (crVal->all_results * crVal->sum_pp - - crVal->sum_predict * crVal->sum_predict); - *correlation = (float)(te / te1); - - } - } - else - { - result = ((float)crVal->correct_results) / crVal->all_results; - } - } - - __END__ - - return result; -} - -/****************************************************************************************/ -// Reset cross-validation EstimateModel to state the same as it was immidiatly after -// its creating. -ML_IMPL -void cvCrossValReset (CvStatModel* estimateModel) -{ - CV_FUNCNAME ("cvCrossValReset"); - __BEGIN__ - - CvCrossValidationModel* crVal = (CvCrossValidationModel*)estimateModel; - - if (!CV_IS_CROSSVAL (estimateModel)) - { - CV_ERROR (CV_StsBadArg, "Pointer point to not CvCrossValidationModel"); - } - - crVal->current_fold = -1; - crVal->is_checked = 1; - crVal->all_results = 0; - crVal->correct_results = 0; - crVal->sq_error = 0; - crVal->sum_correct = 0; - crVal->sum_predict = 0; - crVal->sum_cc = 0; - crVal->sum_pp = 0; - crVal->sum_cp = 0; - - __END__ -} - -/****************************************************************************************/ -// This function is standart CvStatModel field to release cross-validation EstimateModel. -ML_IMPL -void cvReleaseCrossValidationModel (CvStatModel** model) -{ - CvCrossValidationModel* pModel; - - CV_FUNCNAME ("cvReleaseCrossValidationModel"); - __BEGIN__ - - if (!model) - { - CV_ERROR (CV_StsNullPtr, ""); - } - - pModel = (CvCrossValidationModel*)*model; - if (!pModel) - { - return; - } - if (!CV_IS_CROSSVAL (pModel)) - { - CV_ERROR (CV_StsBadArg, ""); - } - - cvFree (&pModel->sampleIdxAll); - cvFree (&pModel->folds); - cvReleaseMat (&pModel->sampleIdxEval); - cvReleaseMat (&pModel->sampleIdxTrain); - cvReleaseMat (&pModel->predict_results); - - cvFree (model); - - __END__ -} // End of cvReleaseCrossValidationModel. - -/****************************************************************************************/ -// This function create cross-validation EstimateModel. -ML_IMPL CvStatModel* -cvCreateCrossValidationEstimateModel( - int samples_all, - const CvStatModelParams* estimateParams, - const CvMat* sampleIdx) -{ - CvStatModel* model = NULL; - CvCrossValidationModel* crVal = NULL; - - CV_FUNCNAME ("cvCreateCrossValidationEstimateModel"); - __BEGIN__ - - int k_fold = 10; - - int i, j, k, s_len; - int samples_selected; - CvRNG rng; - CvRNG* prng; - int* res_s_data; - int* te_s_data; - int* folds; - - rng = cvRNG(cvGetTickCount()); - cvRandInt (&rng); cvRandInt (&rng); cvRandInt (&rng); cvRandInt (&rng); -// Check input parameters. - if (estimateParams) - k_fold = ((CvCrossValidationParams*)estimateParams)->k_fold; - if (!k_fold) - { - CV_ERROR (CV_StsBadArg, "Error in parameters of cross-validation (k_fold == 0)!"); - } - if (samples_all <= 0) - { - CV_ERROR (CV_StsBadArg, " should be positive!"); - } - -// Alloc memory and fill standart StatModel's fields. - CV_CALL (crVal = (CvCrossValidationModel*)cvCreateStatModel ( - CV_STAT_MODEL_MAGIC_VAL | CV_CROSSVAL_MAGIC_VAL, - sizeof(CvCrossValidationModel), - cvReleaseCrossValidationModel, - NULL, NULL)); - crVal->current_fold = -1; - crVal->folds_all = k_fold; - if (estimateParams && ((CvCrossValidationParams*)estimateParams)->is_regression) - crVal->is_regression = 1; - else - crVal->is_regression = 0; - if (estimateParams && ((CvCrossValidationParams*)estimateParams)->rng) - prng = ((CvCrossValidationParams*)estimateParams)->rng; - else - prng = &rng; - - // Check and preprocess sample indices. - if (sampleIdx) - { - int s_step; - int s_type = 0; - - if (!CV_IS_MAT (sampleIdx)) - CV_ERROR (CV_StsBadArg, "Invalid sampleIdx array"); - - if (sampleIdx->rows != 1 && sampleIdx->cols != 1) - CV_ERROR (CV_StsBadSize, "sampleIdx array must be 1-dimensional"); - - s_len = sampleIdx->rows + sampleIdx->cols - 1; - s_step = sampleIdx->rows == 1 ? - 1 : sampleIdx->step / CV_ELEM_SIZE(sampleIdx->type); - - s_type = CV_MAT_TYPE (sampleIdx->type); - - switch (s_type) - { - case CV_8UC1: - case CV_8SC1: - { - uchar* s_data = sampleIdx->data.ptr; - - // sampleIdx is array of 1's and 0's - - // i.e. it is a mask of the selected samples - if( s_len != samples_all ) - CV_ERROR (CV_StsUnmatchedSizes, - "Sample mask should contain as many elements as the total number of samples"); - - samples_selected = 0; - for (i = 0; i < s_len; i++) - samples_selected += s_data[i * s_step] != 0; - - if (samples_selected == 0) - CV_ERROR (CV_StsOutOfRange, "No samples is selected!"); - } - s_len = samples_selected; - break; - case CV_32SC1: - if (s_len > samples_all) - CV_ERROR (CV_StsOutOfRange, - "sampleIdx array may not contain more elements than the total number of samples"); - samples_selected = s_len; - break; - default: - CV_ERROR (CV_StsUnsupportedFormat, "Unsupported sampleIdx array data type " - "(it should be 8uC1, 8sC1 or 32sC1)"); - } - - // Alloc additional memory for internal Idx and fill it. -/*!!*/ CV_CALL (res_s_data = crVal->sampleIdxAll = - (int*)cvAlloc (2 * s_len * sizeof(int))); - - if (s_type < CV_32SC1) - { - uchar* s_data = sampleIdx->data.ptr; - for (i = 0; i < s_len; i++) - if (s_data[i * s_step]) - { - *res_s_data++ = i; - } - res_s_data = crVal->sampleIdxAll; - } - else - { - int* s_data = sampleIdx->data.i; - int out_of_order = 0; - - for (i = 0; i < s_len; i++) - { - res_s_data[i] = s_data[i * s_step]; - if (i > 0 && res_s_data[i] < res_s_data[i - 1]) - out_of_order = 1; - } - - if (out_of_order) - qsort (res_s_data, s_len, sizeof(res_s_data[0]), icvCmpIntegers); - - if (res_s_data[0] < 0 || - res_s_data[s_len - 1] >= samples_all) - CV_ERROR (CV_StsBadArg, "There are out-of-range sample indices"); - for (i = 1; i < s_len; i++) - if (res_s_data[i] <= res_s_data[i - 1]) - CV_ERROR (CV_StsBadArg, "There are duplicated"); - } - } - else // if (sampleIdx) - { - // Alloc additional memory for internal Idx and fill it. - s_len = samples_all; - CV_CALL (res_s_data = crVal->sampleIdxAll = (int*)cvAlloc (2 * s_len * sizeof(int))); - for (i = 0; i < s_len; i++) - { - *res_s_data++ = i; - } - res_s_data = crVal->sampleIdxAll; - } // if (sampleIdx) ... else - -// Resort internal Idx. - te_s_data = res_s_data + s_len; - for (i = s_len; i > 1; i--) - { - j = cvRandInt (prng) % i; - k = *(--te_s_data); - *te_s_data = res_s_data[j]; - res_s_data[j] = k; - } - -// Duplicate resorted internal Idx. -// It will be used to simplify operation of getting trainIdx. - te_s_data = res_s_data + s_len; - for (i = 0; i < s_len; i++) - { - *te_s_data++ = *res_s_data++; - } - -// Cut sampleIdxAll to parts. - if (k_fold > 0) - { - if (k_fold > s_len) - { - CV_ERROR (CV_StsBadArg, - "Error in parameters of cross-validation ('k_fold' > #samples)!"); - } - folds = crVal->folds = (int*) cvAlloc ((k_fold + 1) * sizeof (int)); - *folds++ = 0; - for (i = 1; i < k_fold; i++) - { - *folds++ = cvRound (i * s_len * 1. / k_fold); - } - *folds = s_len; - folds = crVal->folds; - - crVal->max_fold_size = (s_len - 1) / k_fold + 1; - } - else - { - k = -k_fold; - crVal->max_fold_size = k; - if (k >= s_len) - { - CV_ERROR (CV_StsBadArg, - "Error in parameters of cross-validation (-'k_fold' > #samples)!"); - } - crVal->folds_all = k = (s_len - 1) / k + 1; - - folds = crVal->folds = (int*) cvAlloc ((k + 1) * sizeof (int)); - for (i = 0; i < k; i++) - { - *folds++ = -i * k_fold; - } - *folds = s_len; - folds = crVal->folds; - } - -// Prepare other internal fields to working. - CV_CALL (crVal->predict_results = cvCreateMat (1, samples_all, CV_32FC1)); - CV_CALL (crVal->sampleIdxEval = cvCreateMatHeader (1, 1, CV_32SC1)); - CV_CALL (crVal->sampleIdxTrain = cvCreateMatHeader (1, 1, CV_32SC1)); - crVal->sampleIdxEval->cols = 0; - crVal->sampleIdxTrain->cols = 0; - crVal->samples_all = s_len; - crVal->is_checked = 1; - - crVal->getTrainIdxMat = cvCrossValGetTrainIdxMatrix; - crVal->getCheckIdxMat = cvCrossValGetCheckIdxMatrix; - crVal->nextStep = cvCrossValNextStep; - crVal->check = cvCrossValCheckClassifier; - crVal->getResult = cvCrossValGetResult; - crVal->reset = cvCrossValReset; - - model = (CvStatModel*)crVal; - - __END__ - - if (!model) - { - cvReleaseCrossValidationModel ((CvStatModel**)&crVal); - } - - return model; -} // End of cvCreateCrossValidationEstimateModel - - -/****************************************************************************************\ -* Extended interface with backcalls for models * -\****************************************************************************************/ -ML_IMPL float -cvCrossValidation (const CvMat* trueData, - int tflag, - const CvMat* trueClasses, - CvStatModel* (*createClassifier) (const CvMat*, - int, - const CvMat*, - const CvClassifierTrainParams*, - const CvMat*, - const CvMat*, - const CvMat*, - const CvMat*), - const CvClassifierTrainParams* estimateParams, - const CvClassifierTrainParams* trainParams, - const CvMat* compIdx, - const CvMat* sampleIdx, - CvStatModel** pCrValModel, - const CvMat* typeMask, - const CvMat* missedMeasurementMask) -{ - CvCrossValidationModel* crVal = NULL; - float result = 0; - CvStatModel* pClassifier = NULL; - - CV_FUNCNAME ("cvCrossValidation"); - __BEGIN__ - - const CvMat* trainDataIdx; - int samples_all; - -// checking input data - if ((createClassifier) == NULL) - { - CV_ERROR (CV_StsNullPtr, "Null pointer to functiion which create classifier"); - } - if (pCrValModel && *pCrValModel && !CV_IS_CROSSVAL(*pCrValModel)) - { - CV_ERROR (CV_StsBadArg, - " point to not cross-validation model"); - } - -// initialization - if (pCrValModel && *pCrValModel) - { - crVal = (CvCrossValidationModel*)*pCrValModel; - crVal->reset ((CvStatModel*)crVal); - } - else - { - samples_all = ((tflag) ? trueData->rows : trueData->cols); - CV_CALL (crVal = (CvCrossValidationModel*) - cvCreateCrossValidationEstimateModel (samples_all, estimateParams, sampleIdx)); - } - - CV_CALL (trainDataIdx = crVal->getTrainIdxMat ((CvStatModel*)crVal)); - -// operation loop - for (; crVal->nextStep((CvStatModel*)crVal) != 0; ) - { - CV_CALL (pClassifier = createClassifier (trueData, tflag, trueClasses, - trainParams, compIdx, trainDataIdx, typeMask, missedMeasurementMask)); - CV_CALL (crVal->check ((CvStatModel*)crVal, pClassifier, - trueData, tflag, trueClasses)); - - pClassifier->release (&pClassifier); - } - -// Get result and fill output field. - CV_CALL (result = crVal->getResult ((CvStatModel*)crVal, 0)); - - if (pCrValModel && !*pCrValModel) - *pCrValModel = (CvStatModel*)crVal; - - __END__ - -// Free all memory that should be freed. - if (pClassifier) - pClassifier->release (&pClassifier); - if (crVal && (!pCrValModel || !*pCrValModel)) - crVal->release ((CvStatModel**)&crVal); - - return result; -} // End of cvCrossValidation - -#endif - -/* End of file */ diff --git a/modules/ml/src/gbt.cpp b/modules/ml/src/gbt.cpp index 42d0d4f3af..b186abf672 100644 --- a/modules/ml/src/gbt.cpp +++ b/modules/ml/src/gbt.cpp @@ -2,6 +2,8 @@ #include "precomp.hpp" #include +#if 0 + #define pCvSeq CvSeq* #define pCvDTreeNode CvDTreeNode* @@ -1359,3 +1361,5 @@ float CvGBTrees::predict( const cv::Mat& sample, const cv::Mat& _missing, return predict(&_sample, _missing.empty() ? 0 : &miss, 0, slice==cv::Range::all() ? CV_WHOLE_SEQ : cvSlice(slice.start, slice.end), k); } + +#endif diff --git a/modules/ml/src/inner_functions.cpp b/modules/ml/src/inner_functions.cpp index f0e085da6c..3d5f335201 100644 --- a/modules/ml/src/inner_functions.cpp +++ b/modules/ml/src/inner_functions.cpp @@ -40,1840 +40,143 @@ #include "precomp.hpp" +namespace cv { namespace ml { -CvStatModel::CvStatModel() +ParamGrid::ParamGrid() { minVal = maxVal = 0.; logStep = 1; } +ParamGrid::ParamGrid(double _minVal, double _maxVal, double _logStep) { - default_model_name = "my_stat_model"; + minVal = std::min(_minVal, _maxVal); + maxVal = std::max(_minVal, _maxVal); + logStep = std::max(_logStep, 1.); } +void StatModel::clear() {} -CvStatModel::~CvStatModel() +int StatModel::getVarCount() const { return 0; } + +bool StatModel::train( const Ptr&, int ) { - clear(); + CV_Error(CV_StsNotImplemented, ""); + return false; } - -void CvStatModel::clear() +bool StatModel::train( InputArray samples, int layout, InputArray responses ) { + return train(TrainData::create(samples, layout, responses)); } - -void CvStatModel::save( const char* filename, const char* name ) const +float StatModel::calcError( const Ptr& data, bool testerr, OutputArray _resp ) const { - CvFileStorage* fs = 0; + Mat samples = data->getSamples(); + int layout = data->getLayout(); + Mat sidx = testerr ? data->getTestSampleIdx() : data->getTrainSampleIdx(); + const int* sidx_ptr = sidx.ptr(); + int i, n = (int)sidx.total(); + bool isclassifier = isClassifier(); + Mat responses = data->getResponses(); - CV_FUNCNAME( "CvStatModel::save" ); + if( n == 0 ) + n = data->getNSamples(); - __BEGIN__; + if( n == 0 ) + return -FLT_MAX; - CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_WRITE )); - if( !fs ) - CV_ERROR( CV_StsError, "Could not open the file storage. Check the path and permissions" ); + Mat resp; + if( _resp.needed() ) + resp.create(n, 1, CV_32F); - write( fs, name ? name : default_model_name ); - - __END__; - - cvReleaseFileStorage( &fs ); -} - - -void CvStatModel::load( const char* filename, const char* name ) -{ - CvFileStorage* fs = 0; - - CV_FUNCNAME( "CvStatModel::load" ); - - __BEGIN__; - - CvFileNode* model_node = 0; - - CV_CALL( fs = cvOpenFileStorage( filename, 0, CV_STORAGE_READ )); - if( !fs ) - EXIT; - - if( name ) - model_node = cvGetFileNodeByName( fs, 0, name ); - else + double err = 0; + for( i = 0; i < n; i++ ) { - CvFileNode* root = cvGetRootFileNode( fs ); - if( root->data.seq->total > 0 ) - model_node = (CvFileNode*)cvGetSeqElem( root->data.seq, 0 ); + int si = sidx_ptr ? sidx_ptr[i] : i; + Mat sample = layout == ROW_SAMPLE ? samples.row(si) : samples.col(si); + float val = predict(sample); + float val0 = responses.at(si); + + if( isclassifier ) + err += fabs(val - val0) > FLT_EPSILON; + else + err += (val - val0)*(val - val0); + if( resp.data ) + resp.at(i) = val; + /*if( i < 100 ) + { + printf("%d. ref %.1f vs pred %.1f\n", i, val0, val); + }*/ } - read( fs, model_node ); + if( _resp.needed() ) + resp.copyTo(_resp); - __END__; - - cvReleaseFileStorage( &fs ); + return (float)(err / n * (isclassifier ? 100 : 1)); } - -void CvStatModel::write( CvFileStorage*, const char* ) const +void StatModel::save(const String& filename) const { - OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::write", "" ); + FileStorage fs(filename, FileStorage::WRITE); + fs << getDefaultModelName() << "{"; + write(fs); + fs << "}"; } - -void CvStatModel::read( CvFileStorage*, CvFileNode* ) -{ - OPENCV_ERROR( CV_StsNotImplemented, "CvStatModel::read", "" ); -} - - /* Calculates upper triangular matrix S, where A is a symmetrical matrix A=S'*S */ -static void cvChol( CvMat* A, CvMat* S ) +static void Cholesky( const Mat& A, Mat& S ) { - int dim = A->rows; + CV_Assert(A.type() == CV_32F); + + int dim = A.rows; + S.create(dim, dim, CV_32F); int i, j, k; - float sum; for( i = 0; i < dim; i++ ) { for( j = 0; j < i; j++ ) - CV_MAT_ELEM(*S, float, i, j) = 0; + S.at(i,j) = 0.f; - sum = 0; + float sum = 0.f; for( k = 0; k < i; k++ ) - sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, i); + { + float val = S.at(k,i); + sum += val*val; + } - CV_MAT_ELEM(*S, float, i, i) = (float)sqrt(CV_MAT_ELEM(*A, float, i, i) - sum); + S.at(i,i) = std::sqrt(std::max(A.at(i,i) - sum, 0.f)); + float ival = 1.f/S.at(i, i); for( j = i + 1; j < dim; j++ ) { sum = 0; for( k = 0; k < i; k++ ) - sum += CV_MAT_ELEM(*S, float, k, i) * CV_MAT_ELEM(*S, float, k, j); - - CV_MAT_ELEM(*S, float, i, j) = - (CV_MAT_ELEM(*A, float, i, j) - sum) / CV_MAT_ELEM(*S, float, i, i); + sum += S.at(k, i) * S.at(k, j); + S.at(i, j) = (A.at(i, j) - sum)*ival; } } } /* Generates from multivariate normal distribution, where - is an average row vector, - symmetric covariation matrix */ -CV_IMPL void cvRandMVNormal( CvMat* mean, CvMat* cov, CvMat* sample, CvRNG* rng ) +void randMVNormal( InputArray _mean, InputArray _cov, int nsamples, OutputArray _samples ) { - int dim = sample->cols; - int amount = sample->rows; + Mat mean = _mean.getMat(), cov = _cov.getMat(); + int dim = (int)mean.total(); - CvRNG state = rng ? *rng : cvRNG( cvGetTickCount() ); - cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1) ); + _samples.create(nsamples, dim, CV_32F); + Mat samples = _samples.getMat(); + randu(samples, 0., 1.); - CvMat* utmat = cvCreateMat(dim, dim, sample->type); - CvMat* vect = cvCreateMatHeader(1, dim, sample->type); + Mat utmat; + Cholesky(cov, utmat); + int flags = mean.cols == 1 ? 0 : GEMM_3_T; - cvChol(cov, utmat); - - int i; - for( i = 0; i < amount; i++ ) + for( int i = 0; i < nsamples; i++ ) { - cvGetRow(sample, vect, i); - cvMatMulAdd(vect, utmat, mean, vect); - } - - cvReleaseMat(&vect); - cvReleaseMat(&utmat); -} - - -/* Generates of points from a discrete variate xi, - where Pr{xi = k} == probs[k], 0 < k < len - 1. */ -static void cvRandSeries( float probs[], int len, int sample[], int amount ) -{ - CvMat* univals = cvCreateMat(1, amount, CV_32FC1); - float* knots = (float*)cvAlloc( len * sizeof(float) ); - - int i, j; - - CvRNG state = cvRNG(-1); - cvRandArr(&state, univals, CV_RAND_UNI, cvScalarAll(0), cvScalarAll(1) ); - - knots[0] = probs[0]; - for( i = 1; i < len; i++ ) - knots[i] = knots[i - 1] + probs[i]; - - for( i = 0; i < amount; i++ ) - for( j = 0; j < len; j++ ) - { - if ( CV_MAT_ELEM(*univals, float, 0, i) <= knots[j] ) - { - sample[i] = j; - break; - } - } - - cvFree(&knots); -} - -/* Generates from gaussian mixture distribution */ -CV_IMPL void cvRandGaussMixture( CvMat* means[], - CvMat* covs[], - float weights[], - int clsnum, - CvMat* sample, - CvMat* sampClasses ) -{ - int dim = sample->cols; - int amount = sample->rows; - - int i, clss; - - int* sample_clsnum = (int*)cvAlloc( amount * sizeof(int) ); - CvMat** utmats = (CvMat**)cvAlloc( clsnum * sizeof(CvMat*) ); - CvMat* vect = cvCreateMatHeader(1, dim, CV_32FC1); - - CvMat* classes; - if( sampClasses ) - classes = sampClasses; - else - classes = cvCreateMat(1, amount, CV_32FC1); - - CvRNG state = cvRNG(-1); - cvRandArr(&state, sample, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(1)); - - cvRandSeries(weights, clsnum, sample_clsnum, amount); - - for( i = 0; i < clsnum; i++ ) - { - utmats[i] = cvCreateMat(dim, dim, CV_32FC1); - cvChol(covs[i], utmats[i]); - } - - for( i = 0; i < amount; i++ ) - { - CV_MAT_ELEM(*classes, float, 0, i) = (float)sample_clsnum[i]; - cvGetRow(sample, vect, i); - clss = sample_clsnum[i]; - cvMatMulAdd(vect, utmats[clss], means[clss], vect); - } - - if( !sampClasses ) - cvReleaseMat(&classes); - for( i = 0; i < clsnum; i++ ) - cvReleaseMat(&utmats[i]); - cvFree(&utmats); - cvFree(&sample_clsnum); - cvReleaseMat(&vect); -} - - -CvMat* icvGenerateRandomClusterCenters ( int seed, const CvMat* data, - int num_of_clusters, CvMat* _centers ) -{ - CvMat* centers = _centers; - - CV_FUNCNAME("icvGenerateRandomClusterCenters"); - __BEGIN__; - - CvRNG rng; - CvMat data_comp, centers_comp; - CvPoint minLoc, maxLoc; // Not used, just for function "cvMinMaxLoc" - double minVal, maxVal; - int i; - int dim = data ? data->cols : 0; - - if( ICV_IS_MAT_OF_TYPE(data, CV_32FC1) ) - { - if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_32FC1) ) - { - CV_ERROR(CV_StsBadArg,""); - } - else if( !_centers ) - CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_32FC1)); - } - else if( ICV_IS_MAT_OF_TYPE(data, CV_64FC1) ) - { - if( _centers && !ICV_IS_MAT_OF_TYPE (_centers, CV_64FC1) ) - { - CV_ERROR(CV_StsBadArg,""); - } - else if( !_centers ) - CV_CALL(centers = cvCreateMat (num_of_clusters, dim, CV_64FC1)); - } - else - CV_ERROR (CV_StsBadArg,""); - - if( num_of_clusters < 1 ) - CV_ERROR (CV_StsBadArg,""); - - rng = cvRNG(seed); - for (i = 0; i < dim; i++) - { - CV_CALL(cvGetCol (data, &data_comp, i)); - CV_CALL(cvMinMaxLoc (&data_comp, &minVal, &maxVal, &minLoc, &maxLoc)); - CV_CALL(cvGetCol (centers, ¢ers_comp, i)); - CV_CALL(cvRandArr (&rng, ¢ers_comp, CV_RAND_UNI, cvScalarAll(minVal), cvScalarAll(maxVal))); - } - - __END__; - - if( (cvGetErrStatus () < 0) || (centers != _centers) ) - cvReleaseMat (¢ers); - - return _centers ? _centers : centers; -} // end of icvGenerateRandomClusterCenters - -// By S. Dilman - begin - - -#define ICV_RAND_MAX 4294967296 // == 2^32 - -// static void cvRandRoundUni (CvMat* center, -// float radius_small, -// float radius_large, -// CvMat* desired_matrix, -// CvRNG* rng_state_ptr) -// { -// float rad, norm, coefficient; -// int dim, size, i, j; -// CvMat *cov, sample; -// CvRNG rng_local; - -// CV_FUNCNAME("cvRandRoundUni"); -// __BEGIN__ - -// rng_local = *rng_state_ptr; - -// CV_ASSERT ((radius_small >= 0) && -// (radius_large > 0) && -// (radius_small <= radius_large)); -// CV_ASSERT (center && desired_matrix && rng_state_ptr); -// CV_ASSERT (center->rows == 1); -// CV_ASSERT (center->cols == desired_matrix->cols); - -// dim = desired_matrix->cols; -// size = desired_matrix->rows; -// cov = cvCreateMat (dim, dim, CV_32FC1); -// cvSetIdentity (cov); -// cvRandMVNormal (center, cov, desired_matrix, &rng_local); - -// for (i = 0; i < size; i++) -// { -// rad = (float)(cvRandReal(&rng_local)*(radius_large - radius_small) + radius_small); -// cvGetRow (desired_matrix, &sample, i); -// norm = (float) cvNorm (&sample, 0, CV_L2); -// coefficient = rad / norm; -// for (j = 0; j < dim; j++) -// CV_MAT_ELEM (sample, float, 0, j) *= coefficient; -// } - -// __END__ - -// } - -// By S. Dilman - end - - -static int CV_CDECL -icvCmpIntegers( const void* a, const void* b ) -{ - return *(const int*)a - *(const int*)b; -} - - -static int CV_CDECL -icvCmpIntegersPtr( const void* _a, const void* _b ) -{ - int a = **(const int**)_a; - int b = **(const int**)_b; - return (a < b ? -1 : 0)|(a > b); -} - - -static int icvCmpSparseVecElems( const void* a, const void* b ) -{ - return ((CvSparseVecElem32f*)a)->idx - ((CvSparseVecElem32f*)b)->idx; -} - - -CvMat* -cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates ) -{ - CvMat* idx = 0; - - CV_FUNCNAME( "cvPreprocessIndexArray" ); - - __BEGIN__; - - int i, idx_total, idx_selected = 0, step, type, prev = INT_MIN, is_sorted = 1; - uchar* srcb = 0; - int* srci = 0; - int* dsti; - - if( !CV_IS_MAT(idx_arr) ) - CV_ERROR( CV_StsBadArg, "Invalid index array" ); - - if( idx_arr->rows != 1 && idx_arr->cols != 1 ) - CV_ERROR( CV_StsBadSize, "the index array must be 1-dimensional" ); - - idx_total = idx_arr->rows + idx_arr->cols - 1; - srcb = idx_arr->data.ptr; - srci = idx_arr->data.i; - - type = CV_MAT_TYPE(idx_arr->type); - step = CV_IS_MAT_CONT(idx_arr->type) ? 1 : idx_arr->step/CV_ELEM_SIZE(type); - - switch( type ) - { - case CV_8UC1: - case CV_8SC1: - // idx_arr is array of 1's and 0's - - // i.e. it is a mask of the selected components - if( idx_total != data_arr_size ) - CV_ERROR( CV_StsUnmatchedSizes, - "Component mask should contain as many elements as the total number of input variables" ); - - for( i = 0; i < idx_total; i++ ) - idx_selected += srcb[i*step] != 0; - - if( idx_selected == 0 ) - CV_ERROR( CV_StsOutOfRange, "No components/input_variables is selected!" ); - - break; - case CV_32SC1: - // idx_arr is array of integer indices of selected components - if( idx_total > data_arr_size ) - CV_ERROR( CV_StsOutOfRange, - "index array may not contain more elements than the total number of input variables" ); - idx_selected = idx_total; - // check if sorted already - for( i = 0; i < idx_total; i++ ) - { - int val = srci[i*step]; - if( val >= prev ) - { - is_sorted = 0; - break; - } - prev = val; - } - break; - default: - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported index array data type " - "(it should be 8uC1, 8sC1 or 32sC1)" ); - } - - CV_CALL( idx = cvCreateMat( 1, idx_selected, CV_32SC1 )); - dsti = idx->data.i; - - if( type < CV_32SC1 ) - { - for( i = 0; i < idx_total; i++ ) - if( srcb[i*step] ) - *dsti++ = i; - } - else - { - for( i = 0; i < idx_total; i++ ) - dsti[i] = srci[i*step]; - - if( !is_sorted ) - qsort( dsti, idx_total, sizeof(dsti[0]), icvCmpIntegers ); - - if( dsti[0] < 0 || dsti[idx_total-1] >= data_arr_size ) - CV_ERROR( CV_StsOutOfRange, "the index array elements are out of range" ); - - if( check_for_duplicates ) - { - for( i = 1; i < idx_total; i++ ) - if( dsti[i] <= dsti[i-1] ) - CV_ERROR( CV_StsBadArg, "There are duplicated index array elements" ); - } - } - - __END__; - - if( cvGetErrStatus() < 0 ) - cvReleaseMat( &idx ); - - return idx; -} - - -CvMat* -cvPreprocessVarType( const CvMat* var_type, const CvMat* var_idx, - int var_count, int* response_type ) -{ - CvMat* out_var_type = 0; - CV_FUNCNAME( "cvPreprocessVarType" ); - - if( response_type ) - *response_type = -1; - - __BEGIN__; - - int i, tm_size, tm_step; - //int* map = 0; - const uchar* src; - uchar* dst; - - if( !CV_IS_MAT(var_type) ) - CV_ERROR( var_type ? CV_StsBadArg : CV_StsNullPtr, "Invalid or absent var_type array" ); - - if( var_type->rows != 1 && var_type->cols != 1 ) - CV_ERROR( CV_StsBadSize, "var_type array must be 1-dimensional" ); - - if( !CV_IS_MASK_ARR(var_type)) - CV_ERROR( CV_StsUnsupportedFormat, "type mask must be 8uC1 or 8sC1 array" ); - - tm_size = var_type->rows + var_type->cols - 1; - tm_step = var_type->rows == 1 ? 1 : var_type->step/CV_ELEM_SIZE(var_type->type); - - if( /*tm_size != var_count &&*/ tm_size != var_count + 1 ) - CV_ERROR( CV_StsBadArg, - "type mask must be of + 1 size" ); - - if( response_type && tm_size > var_count ) - *response_type = var_type->data.ptr[var_count*tm_step] != 0; - - if( var_idx ) - { - if( !CV_IS_MAT(var_idx) || CV_MAT_TYPE(var_idx->type) != CV_32SC1 || - (var_idx->rows != 1 && var_idx->cols != 1) || !CV_IS_MAT_CONT(var_idx->type) ) - CV_ERROR( CV_StsBadArg, "var index array should be continuous 1-dimensional integer vector" ); - if( var_idx->rows + var_idx->cols - 1 > var_count ) - CV_ERROR( CV_StsBadSize, "var index array is too large" ); - //map = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - CV_CALL( out_var_type = cvCreateMat( 1, var_count, CV_8UC1 )); - src = var_type->data.ptr; - dst = out_var_type->data.ptr; - - for( i = 0; i < var_count; i++ ) - { - //int idx = map ? map[i] : i; - assert( (unsigned)/*idx*/i < (unsigned)tm_size ); - dst[i] = (uchar)(src[/*idx*/i*tm_step] != 0); - } - - __END__; - - return out_var_type; -} - - -CvMat* -cvPreprocessOrderedResponses( const CvMat* responses, const CvMat* sample_idx, int sample_all ) -{ - CvMat* out_responses = 0; - - CV_FUNCNAME( "cvPreprocessOrderedResponses" ); - - __BEGIN__; - - int i, r_type, r_step; - const int* map = 0; - float* dst; - int sample_count = sample_all; - - if( !CV_IS_MAT(responses) ) - CV_ERROR( CV_StsBadArg, "Invalid response array" ); - - if( responses->rows != 1 && responses->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); - - if( responses->rows + responses->cols - 1 != sample_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "Response array must contain as many elements as the total number of samples" ); - - r_type = CV_MAT_TYPE(responses->type); - if( r_type != CV_32FC1 && r_type != CV_32SC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); - - r_step = responses->step ? responses->step / CV_ELEM_SIZE(responses->type) : 1; - - if( r_type == CV_32FC1 && CV_IS_MAT_CONT(responses->type) && !sample_idx ) - { - out_responses = cvCloneMat( responses ); - EXIT; - } - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || - (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) - CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); - if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) - CV_ERROR( CV_StsBadSize, "sample index array is too large" ); - map = sample_idx->data.i; - sample_count = sample_idx->rows + sample_idx->cols - 1; - } - - CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32FC1 )); - - dst = out_responses->data.fl; - if( r_type == CV_32FC1 ) - { - const float* src = responses->data.fl; - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - dst[i] = src[idx*r_step]; - } - } - else - { - const int* src = responses->data.i; - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - dst[i] = (float)src[idx*r_step]; - } - } - - __END__; - - return out_responses; -} - -CvMat* -cvPreprocessCategoricalResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all, - CvMat** out_response_map, CvMat** class_counts ) -{ - CvMat* out_responses = 0; - int** response_ptr = 0; - - CV_FUNCNAME( "cvPreprocessCategoricalResponses" ); - - if( out_response_map ) - *out_response_map = 0; - - if( class_counts ) - *class_counts = 0; - - __BEGIN__; - - int i, r_type, r_step; - int cls_count = 1, prev_cls, prev_i; - const int* map = 0; - const int* srci; - const float* srcfl; - int* dst; - int* cls_map; - int* cls_counts = 0; - int sample_count = sample_all; - - if( !CV_IS_MAT(responses) ) - CV_ERROR( CV_StsBadArg, "Invalid response array" ); - - if( responses->rows != 1 && responses->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Response array must be 1-dimensional" ); - - if( responses->rows + responses->cols - 1 != sample_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "Response array must contain as many elements as the total number of samples" ); - - r_type = CV_MAT_TYPE(responses->type); - if( r_type != CV_32FC1 && r_type != CV_32SC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported response type" ); - - r_step = responses->rows == 1 ? 1 : responses->step / CV_ELEM_SIZE(responses->type); - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) || CV_MAT_TYPE(sample_idx->type) != CV_32SC1 || - (sample_idx->rows != 1 && sample_idx->cols != 1) || !CV_IS_MAT_CONT(sample_idx->type) ) - CV_ERROR( CV_StsBadArg, "sample index array should be continuous 1-dimensional integer vector" ); - if( sample_idx->rows + sample_idx->cols - 1 > sample_count ) - CV_ERROR( CV_StsBadSize, "sample index array is too large" ); - map = sample_idx->data.i; - sample_count = sample_idx->rows + sample_idx->cols - 1; - } - - CV_CALL( out_responses = cvCreateMat( 1, sample_count, CV_32SC1 )); - - if( !out_response_map ) - CV_ERROR( CV_StsNullPtr, "out_response_map pointer is NULL" ); - - CV_CALL( response_ptr = (int**)cvAlloc( sample_count*sizeof(response_ptr[0]))); - - srci = responses->data.i; - srcfl = responses->data.fl; - dst = out_responses->data.i; - - for( i = 0; i < sample_count; i++ ) - { - int idx = map ? map[i] : i; - assert( (unsigned)idx < (unsigned)sample_all ); - if( r_type == CV_32SC1 ) - dst[i] = srci[idx*r_step]; - else - { - float rf = srcfl[idx*r_step]; - int ri = cvRound(rf); - if( ri != rf ) - { - char buf[100]; - sprintf( buf, "response #%d is not integral", idx ); - CV_ERROR( CV_StsBadArg, buf ); - } - dst[i] = ri; - } - response_ptr[i] = dst + i; - } - - qsort( response_ptr, sample_count, sizeof(int*), icvCmpIntegersPtr ); - - // count the classes - for( i = 1; i < sample_count; i++ ) - cls_count += *response_ptr[i] != *response_ptr[i-1]; - - if( cls_count < 2 ) - CV_ERROR( CV_StsBadArg, "There is only a single class" ); - - CV_CALL( *out_response_map = cvCreateMat( 1, cls_count, CV_32SC1 )); - - if( class_counts ) - { - CV_CALL( *class_counts = cvCreateMat( 1, cls_count, CV_32SC1 )); - cls_counts = (*class_counts)->data.i; - } - - // compact the class indices and build the map - prev_cls = ~*response_ptr[0]; - cls_count = -1; - cls_map = (*out_response_map)->data.i; - - for( i = 0, prev_i = -1; i < sample_count; i++ ) - { - int cur_cls = *response_ptr[i]; - if( cur_cls != prev_cls ) - { - if( cls_counts && cls_count >= 0 ) - cls_counts[cls_count] = i - prev_i; - cls_map[++cls_count] = prev_cls = cur_cls; - prev_i = i; - } - *response_ptr[i] = cls_count; - } - - if( cls_counts ) - cls_counts[cls_count] = i - prev_i; - - __END__; - - cvFree( &response_ptr ); - - return out_responses; -} - - -const float** -cvGetTrainSamples( const CvMat* train_data, int tflag, - const CvMat* var_idx, const CvMat* sample_idx, - int* _var_count, int* _sample_count, - bool always_copy_data ) -{ - float** samples = 0; - - CV_FUNCNAME( "cvGetTrainSamples" ); - - __BEGIN__; - - int i, j, var_count, sample_count, s_step, v_step; - bool copy_data; - const float* data; - const int *s_idx, *v_idx; - - if( !CV_IS_MAT(train_data) ) - CV_ERROR( CV_StsBadArg, "Invalid or NULL training data matrix" ); - - var_count = var_idx ? var_idx->cols + var_idx->rows - 1 : - tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; - sample_count = sample_idx ? sample_idx->cols + sample_idx->rows - 1 : - tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; - - if( _var_count ) - *_var_count = var_count; - - if( _sample_count ) - *_sample_count = sample_count; - - copy_data = tflag != CV_ROW_SAMPLE || var_idx || always_copy_data; - - CV_CALL( samples = (float**)cvAlloc(sample_count*sizeof(samples[0]) + - (copy_data ? 1 : 0)*var_count*sample_count*sizeof(samples[0][0])) ); - data = train_data->data.fl; - s_step = train_data->step / sizeof(samples[0][0]); - v_step = 1; - s_idx = sample_idx ? sample_idx->data.i : 0; - v_idx = var_idx ? var_idx->data.i : 0; - - if( !copy_data ) - { - for( i = 0; i < sample_count; i++ ) - samples[i] = (float*)(data + (s_idx ? s_idx[i] : i)*s_step); - } - else - { - samples[0] = (float*)(samples + sample_count); - if( tflag != CV_ROW_SAMPLE ) - CV_SWAP( s_step, v_step, i ); - - for( i = 0; i < sample_count; i++ ) - { - float* dst = samples[i] = samples[0] + i*var_count; - const float* src = data + (s_idx ? s_idx[i] : i)*s_step; - - if( !v_idx ) - for( j = 0; j < var_count; j++ ) - dst[j] = src[j*v_step]; - else - for( j = 0; j < var_count; j++ ) - dst[j] = src[v_idx[j]*v_step]; - } - } - - __END__; - - return (const float**)samples; -} - - -void -cvCheckTrainData( const CvMat* train_data, int tflag, - const CvMat* missing_mask, - int* var_all, int* sample_all ) -{ - CV_FUNCNAME( "cvCheckTrainData" ); - - if( var_all ) - *var_all = 0; - - if( sample_all ) - *sample_all = 0; - - __BEGIN__; - - // check parameter types and sizes - if( !CV_IS_MAT(train_data) || CV_MAT_TYPE(train_data->type) != CV_32FC1 ) - CV_ERROR( CV_StsBadArg, "train data must be floating-point matrix" ); - - if( missing_mask ) - { - if( !CV_IS_MAT(missing_mask) || !CV_IS_MASK_ARR(missing_mask) || - !CV_ARE_SIZES_EQ(train_data, missing_mask) ) - CV_ERROR( CV_StsBadArg, - "missing value mask must be 8-bit matrix of the same size as training data" ); - } - - if( tflag != CV_ROW_SAMPLE && tflag != CV_COL_SAMPLE ) - CV_ERROR( CV_StsBadArg, - "Unknown training data layout (must be CV_ROW_SAMPLE or CV_COL_SAMPLE)" ); - - if( var_all ) - *var_all = tflag == CV_ROW_SAMPLE ? train_data->cols : train_data->rows; - - if( sample_all ) - *sample_all = tflag == CV_ROW_SAMPLE ? train_data->rows : train_data->cols; - - __END__; -} - - -int -cvPrepareTrainData( const char* /*funcname*/, - const CvMat* train_data, int tflag, - const CvMat* responses, int response_type, - const CvMat* var_idx, - const CvMat* sample_idx, - bool always_copy_data, - const float*** out_train_samples, - int* _sample_count, - int* _var_count, - int* _var_all, - CvMat** out_responses, - CvMat** out_response_map, - CvMat** out_var_idx, - CvMat** out_sample_idx ) -{ - int ok = 0; - CvMat* _var_idx = 0; - CvMat* _sample_idx = 0; - CvMat* _responses = 0; - int sample_all = 0, sample_count = 0, var_all = 0, var_count = 0; - - CV_FUNCNAME( "cvPrepareTrainData" ); - - // step 0. clear all the output pointers to ensure we do not try - // to call free() with uninitialized pointers - if( out_responses ) - *out_responses = 0; - - if( out_response_map ) - *out_response_map = 0; - - if( out_var_idx ) - *out_var_idx = 0; - - if( out_sample_idx ) - *out_sample_idx = 0; - - if( out_train_samples ) - *out_train_samples = 0; - - if( _sample_count ) - *_sample_count = 0; - - if( _var_count ) - *_var_count = 0; - - if( _var_all ) - *_var_all = 0; - - __BEGIN__; - - if( !out_train_samples ) - CV_ERROR( CV_StsBadArg, "output pointer to train samples is NULL" ); - - CV_CALL( cvCheckTrainData( train_data, tflag, 0, &var_all, &sample_all )); - - if( sample_idx ) - CV_CALL( _sample_idx = cvPreprocessIndexArray( sample_idx, sample_all )); - if( var_idx ) - CV_CALL( _var_idx = cvPreprocessIndexArray( var_idx, var_all )); - - if( responses ) - { - if( !out_responses ) - CV_ERROR( CV_StsNullPtr, "output response pointer is NULL" ); - - if( response_type == CV_VAR_NUMERICAL ) - { - CV_CALL( _responses = cvPreprocessOrderedResponses( responses, - _sample_idx, sample_all )); - } - else - { - CV_CALL( _responses = cvPreprocessCategoricalResponses( responses, - _sample_idx, sample_all, out_response_map, 0 )); - } - } - - CV_CALL( *out_train_samples = - cvGetTrainSamples( train_data, tflag, _var_idx, _sample_idx, - &var_count, &sample_count, always_copy_data )); - - ok = 1; - - __END__; - - if( ok ) - { - if( out_responses ) - *out_responses = _responses, _responses = 0; - - if( out_var_idx ) - *out_var_idx = _var_idx, _var_idx = 0; - - if( out_sample_idx ) - *out_sample_idx = _sample_idx, _sample_idx = 0; - - if( _sample_count ) - *_sample_count = sample_count; - - if( _var_count ) - *_var_count = var_count; - - if( _var_all ) - *_var_all = var_all; - } - else - { - if( out_response_map ) - cvReleaseMat( out_response_map ); - cvFree( out_train_samples ); - } - - if( _responses != responses ) - cvReleaseMat( &_responses ); - cvReleaseMat( &_var_idx ); - cvReleaseMat( &_sample_idx ); - - return ok; -} - - -typedef struct CvSampleResponsePair -{ - const float* sample; - const uchar* mask; - int response; - int index; -} -CvSampleResponsePair; - - -static int -CV_CDECL icvCmpSampleResponsePairs( const void* a, const void* b ) -{ - int ra = ((const CvSampleResponsePair*)a)->response; - int rb = ((const CvSampleResponsePair*)b)->response; - int ia = ((const CvSampleResponsePair*)a)->index; - int ib = ((const CvSampleResponsePair*)b)->index; - - return ra < rb ? -1 : ra > rb ? 1 : ia - ib; - //return (ra > rb ? -1 : 0)|(ra < rb); -} - - -void -cvSortSamplesByClasses( const float** samples, const CvMat* classes, - int* class_ranges, const uchar** mask ) -{ - CvSampleResponsePair* pairs = 0; - CV_FUNCNAME( "cvSortSamplesByClasses" ); - - __BEGIN__; - - int i, k = 0, sample_count; - - if( !samples || !classes || !class_ranges ) - CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: some of the args are NULL pointers" ); - - if( classes->rows != 1 || CV_MAT_TYPE(classes->type) != CV_32SC1 ) - CV_ERROR( CV_StsBadArg, "classes array must be a single row of integers" ); - - sample_count = classes->cols; - CV_CALL( pairs = (CvSampleResponsePair*)cvAlloc( (sample_count+1)*sizeof(pairs[0]))); - - for( i = 0; i < sample_count; i++ ) - { - pairs[i].sample = samples[i]; - pairs[i].mask = (mask) ? (mask[i]) : 0; - pairs[i].response = classes->data.i[i]; - pairs[i].index = i; - assert( classes->data.i[i] >= 0 ); - } - - qsort( pairs, sample_count, sizeof(pairs[0]), icvCmpSampleResponsePairs ); - pairs[sample_count].response = -1; - class_ranges[0] = 0; - - for( i = 0; i < sample_count; i++ ) - { - samples[i] = pairs[i].sample; - if (mask) - mask[i] = pairs[i].mask; - classes->data.i[i] = pairs[i].response; - - if( pairs[i].response != pairs[i+1].response ) - class_ranges[++k] = i+1; - } - - __END__; - - cvFree( &pairs ); -} - - -void -cvPreparePredictData( const CvArr* _sample, int dims_all, - const CvMat* comp_idx, int class_count, - const CvMat* prob, float** _row_sample, - int as_sparse ) -{ - float* row_sample = 0; - int* inverse_comp_idx = 0; - - CV_FUNCNAME( "cvPreparePredictData" ); - - __BEGIN__; - - const CvMat* sample = (const CvMat*)_sample; - float* sample_data; - int sample_step; - int is_sparse = CV_IS_SPARSE_MAT(sample); - int d, sizes[CV_MAX_DIM]; - int i, dims_selected; - int vec_size; - - if( !is_sparse && !CV_IS_MAT(sample) ) - CV_ERROR( !sample ? CV_StsNullPtr : CV_StsBadArg, "The sample is not a valid vector" ); - - if( cvGetElemType( sample ) != CV_32FC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "Input sample must have 32fC1 type" ); - - CV_CALL( d = cvGetDims( sample, sizes )); - - if( !((is_sparse && d == 1) || (!is_sparse && d == 2 && (sample->rows == 1 || sample->cols == 1))) ) - CV_ERROR( CV_StsBadSize, "Input sample must be 1-dimensional vector" ); - - if( d == 1 ) - sizes[1] = 1; - - if( sizes[0] + sizes[1] - 1 != dims_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "The sample size is different from what has been used for training" ); - - if( !_row_sample ) - CV_ERROR( CV_StsNullPtr, "INTERNAL ERROR: The row_sample pointer is NULL" ); - - if( comp_idx && (!CV_IS_MAT(comp_idx) || comp_idx->rows != 1 || - CV_MAT_TYPE(comp_idx->type) != CV_32SC1) ) - CV_ERROR( CV_StsBadArg, "INTERNAL ERROR: invalid comp_idx" ); - - dims_selected = comp_idx ? comp_idx->cols : dims_all; - - if( prob ) - { - if( !CV_IS_MAT(prob) ) - CV_ERROR( CV_StsBadArg, "The output matrix of probabilities is invalid" ); - - if( (prob->rows != 1 && prob->cols != 1) || - (CV_MAT_TYPE(prob->type) != CV_32FC1 && - CV_MAT_TYPE(prob->type) != CV_64FC1) ) - CV_ERROR( CV_StsBadSize, - "The matrix of probabilities must be 1-dimensional vector of 32fC1 type" ); - - if( prob->rows + prob->cols - 1 != class_count ) - CV_ERROR( CV_StsUnmatchedSizes, - "The vector of probabilities must contain as many elements as " - "the number of classes in the training set" ); - } - - vec_size = !as_sparse ? dims_selected*sizeof(row_sample[0]) : - (dims_selected + 1)*sizeof(CvSparseVecElem32f); - - if( CV_IS_MAT(sample) ) - { - sample_data = sample->data.fl; - sample_step = CV_IS_MAT_CONT(sample->type) ? 1 : sample->step/sizeof(row_sample[0]); - - if( !comp_idx && CV_IS_MAT_CONT(sample->type) && !as_sparse ) - *_row_sample = sample_data; - else - { - CV_CALL( row_sample = (float*)cvAlloc( vec_size )); - - if( !comp_idx ) - for( i = 0; i < dims_selected; i++ ) - row_sample[i] = sample_data[sample_step*i]; - else - { - int* comp = comp_idx->data.i; - for( i = 0; i < dims_selected; i++ ) - row_sample[i] = sample_data[sample_step*comp[i]]; - } - - *_row_sample = row_sample; - } - - if( as_sparse ) - { - const float* src = (const float*)row_sample; - CvSparseVecElem32f* dst = (CvSparseVecElem32f*)row_sample; - - dst[dims_selected].idx = -1; - for( i = dims_selected - 1; i >= 0; i-- ) - { - dst[i].idx = i; - dst[i].val = src[i]; - } - } - } - else - { - CvSparseNode* node; - CvSparseMatIterator mat_iterator; - const CvSparseMat* sparse = (const CvSparseMat*)sample; - assert( is_sparse ); - - node = cvInitSparseMatIterator( sparse, &mat_iterator ); - CV_CALL( row_sample = (float*)cvAlloc( vec_size )); - - if( comp_idx ) - { - CV_CALL( inverse_comp_idx = (int*)cvAlloc( dims_all*sizeof(int) )); - memset( inverse_comp_idx, -1, dims_all*sizeof(int) ); - for( i = 0; i < dims_selected; i++ ) - inverse_comp_idx[comp_idx->data.i[i]] = i; - } - - if( !as_sparse ) - { - memset( row_sample, 0, vec_size ); - - for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) - { - int idx = *CV_NODE_IDX( sparse, node ); - if( inverse_comp_idx ) - { - idx = inverse_comp_idx[idx]; - if( idx < 0 ) - continue; - } - row_sample[idx] = *(float*)CV_NODE_VAL( sparse, node ); - } - } - else - { - CvSparseVecElem32f* ptr = (CvSparseVecElem32f*)row_sample; - - for( ; node != 0; node = cvGetNextSparseNode(&mat_iterator) ) - { - int idx = *CV_NODE_IDX( sparse, node ); - if( inverse_comp_idx ) - { - idx = inverse_comp_idx[idx]; - if( idx < 0 ) - continue; - } - ptr->idx = idx; - ptr->val = *(float*)CV_NODE_VAL( sparse, node ); - ptr++; - } - - qsort( row_sample, ptr - (CvSparseVecElem32f*)row_sample, - sizeof(ptr[0]), icvCmpSparseVecElems ); - ptr->idx = -1; - } - - *_row_sample = row_sample; - } - - __END__; - - if( inverse_comp_idx ) - cvFree( &inverse_comp_idx ); - - if( cvGetErrStatus() < 0 && _row_sample ) - { - cvFree( &row_sample ); - *_row_sample = 0; + Mat sample = samples.row(i); + gemm(sample, utmat, 1, mean, 1, sample, flags); } } - -static void -icvConvertDataToSparse( const uchar* src, int src_step, int src_type, - uchar* dst, int dst_step, int dst_type, - CvSize size, int* idx ) -{ - CV_FUNCNAME( "icvConvertDataToSparse" ); - - __BEGIN__; - - int i, j; - src_type = CV_MAT_TYPE(src_type); - dst_type = CV_MAT_TYPE(dst_type); - - if( CV_MAT_CN(src_type) != 1 || CV_MAT_CN(dst_type) != 1 ) - CV_ERROR( CV_StsUnsupportedFormat, "The function supports only single-channel arrays" ); - - if( src_step == 0 ) - src_step = CV_ELEM_SIZE(src_type); - - if( dst_step == 0 ) - dst_step = CV_ELEM_SIZE(dst_type); - - // if there is no "idx" and if both arrays are continuous, - // do the whole processing (copying or conversion) in a single loop - if( !idx && CV_ELEM_SIZE(src_type)*size.width == src_step && - CV_ELEM_SIZE(dst_type)*size.width == dst_step ) - { - size.width *= size.height; - size.height = 1; - } - - if( src_type == dst_type ) - { - int full_width = CV_ELEM_SIZE(dst_type)*size.width; - - if( full_width == sizeof(int) ) // another common case: copy int's or float's - for( i = 0; i < size.height; i++, src += src_step ) - *(int*)(dst + dst_step*(idx ? idx[i] : i)) = *(int*)src; - else - for( i = 0; i < size.height; i++, src += src_step ) - memcpy( dst + dst_step*(idx ? idx[i] : i), src, full_width ); - } - else if( src_type == CV_32SC1 && (dst_type == CV_32FC1 || dst_type == CV_64FC1) ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( dst_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((float*)_dst)[j] = (float)((int*)src)[j]; - else - for( j = 0; j < size.width; j++ ) - ((double*)_dst)[j] = ((int*)src)[j]; - } - else if( (src_type == CV_32FC1 || src_type == CV_64FC1) && dst_type == CV_32SC1 ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( src_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((int*)_dst)[j] = cvRound(((float*)src)[j]); - else - for( j = 0; j < size.width; j++ ) - ((int*)_dst)[j] = cvRound(((double*)src)[j]); - } - else if( (src_type == CV_32FC1 && dst_type == CV_64FC1) || - (src_type == CV_64FC1 && dst_type == CV_32FC1) ) - for( i = 0; i < size.height; i++, src += src_step ) - { - uchar* _dst = dst + dst_step*(idx ? idx[i] : i); - if( src_type == CV_32FC1 ) - for( j = 0; j < size.width; j++ ) - ((double*)_dst)[j] = ((float*)src)[j]; - else - for( j = 0; j < size.width; j++ ) - ((float*)_dst)[j] = (float)((double*)src)[j]; - } - else - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported combination of input and output vectors" ); - - __END__; -} - - -void -cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, - const CvMat* centers, CvMat* dst_centers, - const CvMat* probs, CvMat* dst_probs, - const CvMat* sample_idx, int samples_all, - const CvMat* comp_idx, int dims_all ) -{ - CV_FUNCNAME( "cvWritebackLabels" ); - - __BEGIN__; - - int samples_selected = samples_all, dims_selected = dims_all; - - if( dst_labels && !CV_IS_MAT(dst_labels) ) - CV_ERROR( CV_StsBadArg, "Array of output labels is not a valid matrix" ); - - if( dst_centers ) - if( !ICV_IS_MAT_OF_TYPE(dst_centers, CV_32FC1) && - !ICV_IS_MAT_OF_TYPE(dst_centers, CV_64FC1) ) - CV_ERROR( CV_StsBadArg, "Array of cluster centers is not a valid matrix" ); - - if( dst_probs && !CV_IS_MAT(dst_probs) ) - CV_ERROR( CV_StsBadArg, "Probability matrix is not valid" ); - - if( sample_idx ) - { - CV_ASSERT( sample_idx->rows == 1 && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ); - samples_selected = sample_idx->cols; - } - - if( comp_idx ) - { - CV_ASSERT( comp_idx->rows == 1 && CV_MAT_TYPE(comp_idx->type) == CV_32SC1 ); - dims_selected = comp_idx->cols; - } - - if( dst_labels && (!labels || labels->data.ptr != dst_labels->data.ptr) ) - { - if( !labels ) - CV_ERROR( CV_StsNullPtr, "NULL labels" ); - - CV_ASSERT( labels->rows == 1 ); - - if( dst_labels->rows != 1 && dst_labels->cols != 1 ) - CV_ERROR( CV_StsBadSize, "Array of output labels should be 1d vector" ); - - if( dst_labels->rows + dst_labels->cols - 1 != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Size of vector of output labels is not equal to the total number of input samples" ); - - CV_ASSERT( labels->cols == samples_selected ); - - CV_CALL( icvConvertDataToSparse( labels->data.ptr, labels->step, labels->type, - dst_labels->data.ptr, dst_labels->step, dst_labels->type, - cvSize( 1, samples_selected ), sample_idx ? sample_idx->data.i : 0 )); - } - - if( dst_centers && (!centers || centers->data.ptr != dst_centers->data.ptr) ) - { - int i; - - if( !centers ) - CV_ERROR( CV_StsNullPtr, "NULL centers" ); - - if( centers->rows != dst_centers->rows ) - CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of rows in matrix of output centers" ); - - if( dst_centers->cols != dims_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Number of columns in matrix of output centers is " - "not equal to the total number of components in the input samples" ); - - CV_ASSERT( centers->cols == dims_selected ); - - for( i = 0; i < centers->rows; i++ ) - CV_CALL( icvConvertDataToSparse( centers->data.ptr + i*centers->step, 0, centers->type, - dst_centers->data.ptr + i*dst_centers->step, 0, dst_centers->type, - cvSize( 1, dims_selected ), comp_idx ? comp_idx->data.i : 0 )); - } - - if( dst_probs && (!probs || probs->data.ptr != dst_probs->data.ptr) ) - { - if( !probs ) - CV_ERROR( CV_StsNullPtr, "NULL probs" ); - - if( probs->cols != dst_probs->cols ) - CV_ERROR( CV_StsUnmatchedSizes, "Invalid number of columns in output probability matrix" ); - - if( dst_probs->rows != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "Number of rows in output probability matrix is " - "not equal to the total number of input samples" ); - - CV_ASSERT( probs->rows == samples_selected ); - - CV_CALL( icvConvertDataToSparse( probs->data.ptr, probs->step, probs->type, - dst_probs->data.ptr, dst_probs->step, dst_probs->type, - cvSize( probs->cols, samples_selected ), - sample_idx ? sample_idx->data.i : 0 )); - } - - __END__; -} - -#if 0 -CV_IMPL void -cvStatModelMultiPredict( const CvStatModel* stat_model, - const CvArr* predict_input, - int flags, CvMat* predict_output, - CvMat* probs, const CvMat* sample_idx ) -{ - CvMemStorage* storage = 0; - CvMat* sample_idx_buffer = 0; - CvSparseMat** sparse_rows = 0; - int samples_selected = 0; - - CV_FUNCNAME( "cvStatModelMultiPredict" ); - - __BEGIN__; - - int i; - int predict_output_step = 1, sample_idx_step = 1; - int type; - int d, sizes[CV_MAX_DIM]; - int tflag = flags == CV_COL_SAMPLE; - int samples_all, dims_all; - int is_sparse = CV_IS_SPARSE_MAT(predict_input); - CvMat predict_input_part; - CvArr* sample = &predict_input_part; - CvMat probs_part; - CvMat* probs1 = probs ? &probs_part : 0; - - if( !CV_IS_STAT_MODEL(stat_model) ) - CV_ERROR( !stat_model ? CV_StsNullPtr : CV_StsBadArg, "Invalid statistical model" ); - - if( !stat_model->predict ) - CV_ERROR( CV_StsNotImplemented, "There is no \"predict\" method" ); - - if( !predict_input || !predict_output ) - CV_ERROR( CV_StsNullPtr, "NULL input or output matrices" ); - - if( !is_sparse && !CV_IS_MAT(predict_input) ) - CV_ERROR( CV_StsBadArg, "predict_input should be a matrix or a sparse matrix" ); - - if( !CV_IS_MAT(predict_output) ) - CV_ERROR( CV_StsBadArg, "predict_output should be a matrix" ); - - type = cvGetElemType( predict_input ); - if( type != CV_32FC1 || - (CV_MAT_TYPE(predict_output->type) != CV_32FC1 && - CV_MAT_TYPE(predict_output->type) != CV_32SC1 )) - CV_ERROR( CV_StsUnsupportedFormat, "The input or output matrix has unsupported format" ); - - CV_CALL( d = cvGetDims( predict_input, sizes )); - if( d > 2 ) - CV_ERROR( CV_StsBadSize, "The input matrix should be 1- or 2-dimensional" ); - - if( !tflag ) - { - samples_all = samples_selected = sizes[0]; - dims_all = sizes[1]; - } - else - { - samples_all = samples_selected = sizes[1]; - dims_all = sizes[0]; - } - - if( sample_idx ) - { - if( !CV_IS_MAT(sample_idx) ) - CV_ERROR( CV_StsBadArg, "Invalid sample_idx matrix" ); - - if( sample_idx->cols != 1 && sample_idx->rows != 1 ) - CV_ERROR( CV_StsBadSize, "sample_idx must be 1-dimensional matrix" ); - - samples_selected = sample_idx->rows + sample_idx->cols - 1; - - if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - if( samples_selected > samples_all ) - CV_ERROR( CV_StsBadSize, "sample_idx is too large vector" ); - } - else if( samples_selected != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, "sample_idx has incorrect size" ); - - sample_idx_step = sample_idx->step ? - sample_idx->step / CV_ELEM_SIZE(sample_idx->type) : 1; - } - - if( predict_output->rows != 1 && predict_output->cols != 1 ) - CV_ERROR( CV_StsBadSize, "predict_output should be a 1-dimensional matrix" ); - - if( predict_output->rows + predict_output->cols - 1 != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, "predict_output and predict_input have uncoordinated sizes" ); - - predict_output_step = predict_output->step ? - predict_output->step / CV_ELEM_SIZE(predict_output->type) : 1; - - if( probs ) - { - if( !CV_IS_MAT(probs) ) - CV_ERROR( CV_StsBadArg, "Invalid matrix of probabilities" ); - - if( probs->rows != samples_all ) - CV_ERROR( CV_StsUnmatchedSizes, - "matrix of probabilities must have as many rows as the total number of samples" ); - - if( CV_MAT_TYPE(probs->type) != CV_32FC1 ) - CV_ERROR( CV_StsUnsupportedFormat, "matrix of probabilities must have 32fC1 type" ); - } - - if( is_sparse ) - { - CvSparseNode* node; - CvSparseMatIterator mat_iterator; - CvSparseMat* sparse = (CvSparseMat*)predict_input; - - if( sample_idx && CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - CV_CALL( sample_idx_buffer = cvCreateMat( 1, samples_all, CV_8UC1 )); - cvZero( sample_idx_buffer ); - for( i = 0; i < samples_selected; i++ ) - sample_idx_buffer->data.ptr[sample_idx->data.i[i*sample_idx_step]] = 1; - samples_selected = samples_all; - sample_idx = sample_idx_buffer; - sample_idx_step = 1; - } - - CV_CALL( sparse_rows = (CvSparseMat**)cvAlloc( samples_selected*sizeof(sparse_rows[0]))); - for( i = 0; i < samples_selected; i++ ) - { - if( sample_idx && sample_idx->data.ptr[i*sample_idx_step] == 0 ) - continue; - CV_CALL( sparse_rows[i] = cvCreateSparseMat( 1, &dims_all, type )); - if( !storage ) - storage = sparse_rows[i]->heap->storage; - else - { - // hack: to decrease memory footprint, make all the sparse matrices - // reside in the same storage - int elem_size = sparse_rows[i]->heap->elem_size; - cvReleaseMemStorage( &sparse_rows[i]->heap->storage ); - sparse_rows[i]->heap = cvCreateSet( 0, sizeof(CvSet), elem_size, storage ); - } - } - - // put each row (or column) of predict_input into separate sparse matrix. - node = cvInitSparseMatIterator( sparse, &mat_iterator ); - for( ; node != 0; node = cvGetNextSparseNode( &mat_iterator )) - { - int* idx = CV_NODE_IDX( sparse, node ); - int idx0 = idx[tflag ^ 1]; - int idx1 = idx[tflag]; - - if( sample_idx && sample_idx->data.ptr[idx0*sample_idx_step] == 0 ) - continue; - - assert( sparse_rows[idx0] != 0 ); - *(float*)cvPtrND( sparse, &idx1, 0, 1, 0 ) = *(float*)CV_NODE_VAL( sparse, node ); - } - } - - for( i = 0; i < samples_selected; i++ ) - { - int idx = i; - float response; - - if( sample_idx ) - { - if( CV_MAT_TYPE(sample_idx->type) == CV_32SC1 ) - { - idx = sample_idx->data.i[i*sample_idx_step]; - if( (unsigned)idx >= (unsigned)samples_all ) - CV_ERROR( CV_StsOutOfRange, "Some of sample_idx elements are out of range" ); - } - else if( CV_MAT_TYPE(sample_idx->type) == CV_8UC1 && - sample_idx->data.ptr[i*sample_idx_step] == 0 ) - continue; - } - - if( !is_sparse ) - { - if( !tflag ) - cvGetRow( predict_input, &predict_input_part, idx ); - else - { - cvGetCol( predict_input, &predict_input_part, idx ); - } - } - else - sample = sparse_rows[idx]; - - if( probs ) - cvGetRow( probs, probs1, idx ); - - CV_CALL( response = stat_model->predict( stat_model, (CvMat*)sample, probs1 )); - - if( CV_MAT_TYPE(predict_output->type) == CV_32FC1 ) - predict_output->data.fl[idx*predict_output_step] = response; - else - { - CV_ASSERT( cvRound(response) == response ); - predict_output->data.i[idx*predict_output_step] = cvRound(response); - } - } - - __END__; - - if( sparse_rows ) - { - int i; - for( i = 0; i < samples_selected; i++ ) - if( sparse_rows[i] ) - { - sparse_rows[i]->heap->storage = 0; - cvReleaseSparseMat( &sparse_rows[i] ); - } - cvFree( &sparse_rows ); - } - - cvReleaseMat( &sample_idx_buffer ); - cvReleaseMemStorage( &storage ); -} -#endif - -// By P. Yarykin - begin - - -void cvCombineResponseMaps (CvMat* _responses, - const CvMat* old_response_map, - CvMat* new_response_map, - CvMat** out_response_map) -{ - int** old_data = NULL; - int** new_data = NULL; - - CV_FUNCNAME ("cvCombineResponseMaps"); - __BEGIN__ - - int i,j; - int old_n, new_n, out_n; - int samples, free_response; - int* first; - int* responses; - int* out_data; - - if( out_response_map ) - *out_response_map = 0; - -// Check input data. - if ((!ICV_IS_MAT_OF_TYPE (_responses, CV_32SC1)) || - (!ICV_IS_MAT_OF_TYPE (old_response_map, CV_32SC1)) || - (!ICV_IS_MAT_OF_TYPE (new_response_map, CV_32SC1))) - { - CV_ERROR (CV_StsBadArg, "Some of input arguments is not the CvMat") - } - -// Prepare sorted responses. - first = new_response_map->data.i; - new_n = new_response_map->cols; - CV_CALL (new_data = (int**)cvAlloc (new_n * sizeof (new_data[0]))); - for (i = 0; i < new_n; i++) - new_data[i] = first + i; - qsort (new_data, new_n, sizeof(int*), icvCmpIntegersPtr); - - first = old_response_map->data.i; - old_n = old_response_map->cols; - CV_CALL (old_data = (int**)cvAlloc (old_n * sizeof (old_data[0]))); - for (i = 0; i < old_n; i++) - old_data[i] = first + i; - qsort (old_data, old_n, sizeof(int*), icvCmpIntegersPtr); - -// Count the number of different responses. - for (i = 0, j = 0, out_n = 0; i < old_n && j < new_n; out_n++) - { - if (*old_data[i] == *new_data[j]) - { - i++; - j++; - } - else if (*old_data[i] < *new_data[j]) - i++; - else - j++; - } - out_n += old_n - i + new_n - j; - -// Create and fill the result response maps. - CV_CALL (*out_response_map = cvCreateMat (1, out_n, CV_32SC1)); - out_data = (*out_response_map)->data.i; - memcpy (out_data, first, old_n * sizeof (int)); - - free_response = old_n; - for (i = 0, j = 0; i < old_n && j < new_n; ) - { - if (*old_data[i] == *new_data[j]) - { - *new_data[j] = (int)(old_data[i] - first); - i++; - j++; - } - else if (*old_data[i] < *new_data[j]) - i++; - else - { - out_data[free_response] = *new_data[j]; - *new_data[j] = free_response++; - j++; - } - } - for (; j < new_n; j++) - { - out_data[free_response] = *new_data[j]; - *new_data[j] = free_response++; - } - CV_ASSERT (free_response == out_n); - -// Change according to out response map. - samples = _responses->cols + _responses->rows - 1; - responses = _responses->data.i; - first = new_response_map->data.i; - for (i = 0; i < samples; i++) - { - responses[i] = first[responses[i]]; - } - - __END__ - - cvFree(&old_data); - cvFree(&new_data); - -} - - -static int icvGetNumberOfCluster( double* prob_vector, int num_of_clusters, float r, - float outlier_thresh, int normalize_probs ) -{ - int max_prob_loc = 0; - - CV_FUNCNAME("icvGetNumberOfCluster"); - __BEGIN__; - - double prob, maxprob, sum; - int i; - - CV_ASSERT(prob_vector); - CV_ASSERT(num_of_clusters >= 0); - - maxprob = prob_vector[0]; - max_prob_loc = 0; - sum = maxprob; - for( i = 1; i < num_of_clusters; i++ ) - { - prob = prob_vector[i]; - sum += prob; - if( prob > maxprob ) - { - max_prob_loc = i; - maxprob = prob; - } - } - if( normalize_probs && fabs(sum - 1.) > FLT_EPSILON ) - { - for( i = 0; i < num_of_clusters; i++ ) - prob_vector[i] /= sum; - } - if( fabs(r - 1.) > FLT_EPSILON && fabs(sum - 1.) < outlier_thresh ) - max_prob_loc = -1; - - __END__; - - return max_prob_loc; - -} // End of icvGetNumberOfCluster - - -void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, - const CvMat* labels ) -{ - CvMat* counts = 0; - - CV_FUNCNAME("icvFindClusterLabels"); - __BEGIN__; - - int nclusters, nsamples; - int i, j; - double* probs_data; - - CV_ASSERT( ICV_IS_MAT_OF_TYPE(probs, CV_64FC1) ); - CV_ASSERT( ICV_IS_MAT_OF_TYPE(labels, CV_32SC1) ); - - nclusters = probs->cols; - nsamples = probs->rows; - CV_ASSERT( nsamples == labels->cols ); - - CV_CALL( counts = cvCreateMat( 1, nclusters + 1, CV_32SC1 ) ); - CV_CALL( cvSetZero( counts )); - for( i = 0; i < nsamples; i++ ) - { - labels->data.i[i] = icvGetNumberOfCluster( probs->data.db + i*probs->cols, - nclusters, r, outlier_thresh, 1 ); - counts->data.i[labels->data.i[i] + 1]++; - } - CV_ASSERT((int)cvSum(counts).val[0] == nsamples); - // Filling empty clusters with the vector, that has the maximal probability - for( j = 0; j < nclusters; j++ ) // outliers are ignored - { - int maxprob_loc = -1; - double maxprob = 0; - - if( counts->data.i[j+1] ) // j-th class is not empty - continue; - // look for the presentative, which is not lonely in it's cluster - // and that has a maximal probability among all these vectors - probs_data = probs->data.db; - for( i = 0; i < nsamples; i++, probs_data++ ) - { - int label = labels->data.i[i]; - double prob; - if( counts->data.i[label+1] == 0 || - (counts->data.i[label+1] <= 1 && label != -1) ) - continue; - prob = *probs_data; - if( prob >= maxprob ) - { - maxprob = prob; - maxprob_loc = i; - } - } - // maxprob_loc == 0 <=> number of vectors less then number of clusters - CV_ASSERT( maxprob_loc >= 0 ); - counts->data.i[labels->data.i[maxprob_loc] + 1]--; - labels->data.i[maxprob_loc] = j; - counts->data.i[j + 1]++; - } - - __END__; - - cvReleaseMat( &counts ); -} // End of icvFindClusterLabels +}} /* End of file */ diff --git a/modules/ml/src/knearest.cpp b/modules/ml/src/knearest.cpp index a05a30da86..3ead3228f5 100644 --- a/modules/ml/src/knearest.cpp +++ b/modules/ml/src/knearest.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -41,442 +43,321 @@ #include "precomp.hpp" /****************************************************************************************\ -* K-Nearest Neighbors Classifier * +* K-Nearest Neighbors Classifier * \****************************************************************************************/ -// k Nearest Neighbors -CvKNearest::CvKNearest() +namespace cv { +namespace ml { + +KNearest::Params::Params(int k, bool isclassifier_) { - samples = 0; - clear(); + defaultK = k; + isclassifier = isclassifier_; } -CvKNearest::~CvKNearest() +class KNearestImpl : public KNearest { - clear(); -} - - -CvKNearest::CvKNearest( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _sample_idx, bool _is_regression, int _max_k ) -{ - samples = 0; - train( _train_data, _responses, _sample_idx, _is_regression, _max_k, false ); -} - - -void CvKNearest::clear() -{ - while( samples ) +public: + KNearestImpl(const Params& p) { - CvVectors* next_samples = samples->next; - cvFree( &samples->data.fl ); - cvFree( &samples ); - samples = next_samples; - } - var_count = 0; - total = 0; - max_k = 0; -} - - -int CvKNearest::get_max_k() const { return max_k; } - -int CvKNearest::get_var_count() const { return var_count; } - -bool CvKNearest::is_regression() const { return regression; } - -int CvKNearest::get_sample_count() const { return total; } - -bool CvKNearest::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _sample_idx, bool _is_regression, - int _max_k, bool _update_base ) -{ - bool ok = false; - CvMat* responses = 0; - - CV_FUNCNAME( "CvKNearest::train" ); - - __BEGIN__; - - CvVectors* _samples = 0; - float** _data = 0; - int _count = 0, _dims = 0, _dims_all = 0, _rsize = 0; - - if( !_update_base ) - clear(); - - // Prepare training data and related parameters. - // Treat categorical responses as ordered - to prevent class label compression and - // to enable entering new classes in the updates - CV_CALL( cvPrepareTrainData( "CvKNearest::train", _train_data, CV_ROW_SAMPLE, - _responses, CV_VAR_ORDERED, 0, _sample_idx, true, (const float***)&_data, - &_count, &_dims, &_dims_all, &responses, 0, 0 )); - - if( !responses ) - CV_ERROR( CV_StsNoMem, "Could not allocate memory for responses" ); - - if( _update_base && _dims != var_count ) - CV_ERROR( CV_StsBadArg, "The newly added data have different dimensionality" ); - - if( !_update_base ) - { - if( _max_k < 1 ) - CV_ERROR( CV_StsOutOfRange, "max_k must be a positive number" ); - - regression = _is_regression; - var_count = _dims; - max_k = _max_k; + params = p; } - _rsize = _count*sizeof(float); - CV_CALL( _samples = (CvVectors*)cvAlloc( sizeof(*_samples) + _rsize )); - _samples->next = samples; - _samples->type = CV_32F; - _samples->data.fl = _data; - _samples->count = _count; - total += _count; + virtual ~KNearestImpl() {} - samples = _samples; - memcpy( _samples + 1, responses->data.fl, _rsize ); + Params getParams() const { return params; } + void setParams(const Params& p) { params = p; } - ok = true; + bool isClassifier() const { return params.isclassifier; } + bool isTrained() const { return !samples.empty(); } - __END__; + String getDefaultModelName() const { return "opencv_ml_knn"; } - if( responses && responses->data.ptr != _responses->data.ptr ) - cvReleaseMat(&responses); - - return ok; -} - - - -void CvKNearest::find_neighbors_direct( const CvMat* _samples, int k, int start, int end, - float* neighbor_responses, const float** neighbors, float* dist ) const -{ - int i, j, count = end - start, k1 = 0, k2 = 0, d = var_count; - CvVectors* s = samples; - - for( ; s != 0; s = s->next ) + void clear() { - int n = s->count; - for( j = 0; j < n; j++ ) + samples.release(); + responses.release(); + } + + int getVarCount() const { return samples.cols; } + + bool train( const Ptr& data, int flags ) + { + Mat new_samples = data->getTrainSamples(ROW_SAMPLE); + Mat new_responses; + data->getTrainResponses().convertTo(new_responses, CV_32F); + bool update = (flags & UPDATE_MODEL) != 0 && !samples.empty(); + + CV_Assert( new_samples.type() == CV_32F ); + + if( !update ) { - for( i = 0; i < count; i++ ) + clear(); + } + else + { + CV_Assert( new_samples.cols == samples.cols && + new_responses.cols == responses.cols ); + } + + samples.push_back(new_samples); + responses.push_back(new_responses); + + return true; + } + + void findNearestCore( const Mat& _samples, int k0, const Range& range, + Mat* results, Mat* neighbor_responses, + Mat* dists, float* presult ) const + { + int testidx, baseidx, i, j, d = samples.cols, nsamples = samples.rows; + int testcount = range.end - range.start; + int k = std::min(k0, nsamples); + + AutoBuffer buf(testcount*k*2); + float* dbuf = buf; + float* rbuf = dbuf + testcount*k; + + const float* rptr = responses.ptr(); + + for( testidx = 0; testidx < testcount; testidx++ ) + { + for( i = 0; i < k; i++ ) { - double sum = 0; + dbuf[testidx*k + i] = FLT_MAX; + rbuf[testidx*k + i] = 0.f; + } + } + + for( baseidx = 0; baseidx < nsamples; baseidx++ ) + { + for( testidx = 0; testidx < testcount; testidx++ ) + { + const float* v = samples.ptr(baseidx); + const float* u = _samples.ptr(testidx + range.start); + + float s = 0; + for( i = 0; i <= d - 4; i += 4 ) + { + float t0 = u[i] - v[i], t1 = u[i+1] - v[i+1]; + float t2 = u[i+2] - v[i+2], t3 = u[i+3] - v[i+3]; + s += t0*t0 + t1*t1 + t2*t2 + t3*t3; + } + + for( ; i < d; i++ ) + { + float t0 = u[i] - v[i]; + s += t0*t0; + } + Cv32suf si; - const float* v = s->data.fl[j]; - const float* u = (float*)(_samples->data.ptr + _samples->step*(start + i)); - Cv32suf* dd = (Cv32suf*)(dist + i*k); - float* nr; - const float** nn; - int t, ii, ii1; + si.f = (float)s; + Cv32suf* dd = (Cv32suf*)(&dbuf[testidx*k]); + float* nr = &rbuf[testidx*k]; - for( t = 0; t <= d - 4; t += 4 ) - { - double t0 = u[t] - v[t], t1 = u[t+1] - v[t+1]; - double t2 = u[t+2] - v[t+2], t3 = u[t+3] - v[t+3]; - sum += t0*t0 + t1*t1 + t2*t2 + t3*t3; - } - - for( ; t < d; t++ ) - { - double t0 = u[t] - v[t]; - sum += t0*t0; - } - - si.f = (float)sum; - for( ii = k1-1; ii >= 0; ii-- ) - if( si.i > dd[ii].i ) + for( i = k; i > 0; i-- ) + if( si.i >= dd[i-1].i ) break; - if( ii >= k-1 ) + if( i >= k ) continue; - nr = neighbor_responses + i*k; - nn = neighbors ? neighbors + (start + i)*k : 0; - for( ii1 = k2 - 1; ii1 > ii; ii1-- ) + for( j = k-2; j >= i; j-- ) { - dd[ii1+1].i = dd[ii1].i; - nr[ii1+1] = nr[ii1]; - if( nn ) nn[ii1+1] = nn[ii1]; + dd[j+1].i = dd[j].i; + nr[j+1] = nr[j]; } - dd[ii+1].i = si.i; - nr[ii+1] = ((float*)(s + 1))[j]; - if( nn ) - nn[ii+1] = v; + dd[i].i = si.i; + nr[i] = rptr[baseidx]; } - k1 = MIN( k1+1, k ); - k2 = MIN( k1, k-1 ); } - } -} + float result = 0.f; + float inv_scale = 1.f/k; -float CvKNearest::write_results( int k, int k1, int start, int end, - const float* neighbor_responses, const float* dist, - CvMat* _results, CvMat* _neighbor_responses, - CvMat* _dist, Cv32suf* sort_buf ) const -{ - float result = 0.f; - int i, j, j1, count = end - start; - double inv_scale = 1./k1; - int rstep = _results && !CV_IS_MAT_CONT(_results->type) ? _results->step/sizeof(result) : 1; - - for( i = 0; i < count; i++ ) - { - const Cv32suf* nr = (const Cv32suf*)(neighbor_responses + i*k); - float* dst; - float r; - if( _results || start+i == 0 ) + for( testidx = 0; testidx < testcount; testidx++ ) { - if( regression ) + if( neighbor_responses ) { - double s = 0; - for( j = 0; j < k1; j++ ) - s += nr[j].f; - r = (float)(s*inv_scale); + float* nr = neighbor_responses->ptr(testidx + range.start); + for( j = 0; j < k; j++ ) + nr[j] = rbuf[testidx*k + j]; + for( ; j < k0; j++ ) + nr[j] = 0.f; } - else + + if( dists ) { - int prev_start = 0, best_count = 0, cur_count; - Cv32suf best_val; + float* dptr = dists->ptr(testidx + range.start); + for( j = 0; j < k; j++ ) + dptr[j] = dbuf[testidx*k + j]; + for( ; j < k0; j++ ) + dptr[j] = 0.f; + } - for( j = 0; j < k1; j++ ) - sort_buf[j].i = nr[j].i; - - for( j = k1-1; j > 0; j-- ) + if( results || testidx+range.start == 0 ) + { + if( !params.isclassifier || k == 1 ) { - bool swap_fl = false; - for( j1 = 0; j1 < j; j1++ ) - if( sort_buf[j1].i > sort_buf[j1+1].i ) - { - int t; - CV_SWAP( sort_buf[j1].i, sort_buf[j1+1].i, t ); - swap_fl = true; - } - if( !swap_fl ) - break; + float s = 0.f; + for( j = 0; j < k; j++ ) + s += rbuf[testidx*k + j]; + result = (float)(s*inv_scale); } - - best_val.i = 0; - for( j = 1; j <= k1; j++ ) - if( j == k1 || sort_buf[j].i != sort_buf[j-1].i ) + else + { + float* rp = rbuf + testidx*k; + for( j = k-1; j > 0; j-- ) { - cur_count = j - prev_start; - if( best_count < cur_count ) + bool swap_fl = false; + for( i = 0; i < j; i++ ) { - best_count = cur_count; - best_val.i = sort_buf[j-1].i; + if( rp[i] > rp[i+1] ) + { + std::swap(rp[i], rp[i+1]); + swap_fl = true; + } } - prev_start = j; + if( !swap_fl ) + break; } - r = best_val.f; + + result = rp[0]; + int prev_start = 0; + int best_count = 0; + for( j = 1; j <= k; j++ ) + { + if( j == k || rp[j] != rp[j-1] ) + { + int count = j - prev_start; + if( best_count < count ) + { + best_count = count; + result = rp[j-1]; + } + prev_start = j; + } + } + } + if( results ) + results->at(testidx + range.start) = result; + if( presult && testidx+range.start == 0 ) + *presult = result; } - - if( start+i == 0 ) - result = r; - - if( _results ) - _results->data.fl[(start + i)*rstep] = r; - } - - if( _neighbor_responses ) - { - dst = (float*)(_neighbor_responses->data.ptr + - (start + i)*_neighbor_responses->step); - for( j = 0; j < k1; j++ ) - dst[j] = nr[j].f; - for( ; j < k; j++ ) - dst[j] = 0.f; - } - - if( _dist ) - { - dst = (float*)(_dist->data.ptr + (start + i)*_dist->step); - for( j = 0; j < k1; j++ ) - dst[j] = dist[j + i*k]; - for( ; j < k; j++ ) - dst[j] = 0.f; } } - return result; -} - -struct P1 : cv::ParallelLoopBody { - P1(const CvKNearest* _pointer, int _buf_sz, int _k, const CvMat* __samples, const float** __neighbors, - int _k1, CvMat* __results, CvMat* __neighbor_responses, CvMat* __dist, float* _result) - { - pointer = _pointer; - k = _k; - _samples = __samples; - _neighbors = __neighbors; - k1 = _k1; - _results = __results; - _neighbor_responses = __neighbor_responses; - _dist = __dist; - result = _result; - buf_sz = _buf_sz; - } - - const CvKNearest* pointer; - int k; - const CvMat* _samples; - const float** _neighbors; - int k1; - CvMat* _results; - CvMat* _neighbor_responses; - CvMat* _dist; - float* result; - int buf_sz; - - void operator()( const cv::Range& range ) const - { - cv::AutoBuffer buf(buf_sz); - for(int i = range.start; i < range.end; i += 1 ) + struct findKNearestInvoker : public ParallelLoopBody { - float* neighbor_responses = &buf[0]; - float* dist = neighbor_responses + 1*k; - Cv32suf* sort_buf = (Cv32suf*)(dist + 1*k); + findKNearestInvoker(const KNearestImpl* _p, int _k, const Mat& __samples, + Mat* __results, Mat* __neighbor_responses, Mat* __dists, float* _presult) + { + p = _p; + k = _k; + _samples = &__samples; + _results = __results; + _neighbor_responses = __neighbor_responses; + _dists = __dists; + presult = _presult; + } - pointer->find_neighbors_direct( _samples, k, i, i + 1, - neighbor_responses, _neighbors, dist ); + void operator()( const Range& range ) const + { + int delta = std::min(range.end - range.start, 256); + for( int start = range.start; start < range.end; start += delta ) + { + p->findNearestCore( *_samples, k, Range(start, std::min(start + delta, range.end)), + _results, _neighbor_responses, _dists, presult ); + } + } - float r = pointer->write_results( k, k1, i, i + 1, neighbor_responses, dist, - _results, _neighbor_responses, _dist, sort_buf ); + const KNearestImpl* p; + int k; + const Mat* _samples; + Mat* _results; + Mat* _neighbor_responses; + Mat* _dists; + float* presult; + }; - if( i == 0 ) - *result = r; + float findNearest( InputArray _samples, int k, + OutputArray _results, + OutputArray _neighborResponses, + OutputArray _dists ) const + { + float result = 0.f; + CV_Assert( 0 < k ); + + Mat test_samples = _samples.getMat(); + CV_Assert( test_samples.type() == CV_32F && test_samples.cols == samples.cols ); + int testcount = test_samples.rows; + + if( testcount == 0 ) + { + _results.release(); + _neighborResponses.release(); + _dists.release(); + return 0.f; + } + + Mat res, nr, d, *pres = 0, *pnr = 0, *pd = 0; + if( _results.needed() ) + { + _results.create(testcount, 1, CV_32F); + pres = &(res = _results.getMat()); + } + if( _neighborResponses.needed() ) + { + _neighborResponses.create(testcount, k, CV_32F); + pnr = &(nr = _neighborResponses.getMat()); + } + if( _dists.needed() ) + { + _dists.create(testcount, k, CV_32F); + pd = &(d = _dists.getMat()); + } + + findKNearestInvoker invoker(this, k, test_samples, pres, pnr, pd, &result); + parallel_for_(Range(0, testcount), invoker); + //invoker(Range(0, testcount)); + return result; } - } + float predict(InputArray inputs, OutputArray outputs, int) const + { + return findNearest( inputs, params.defaultK, outputs, noArray(), noArray() ); + } + + void write( FileStorage& fs ) const + { + fs << "is_classifier" << (int)params.isclassifier; + fs << "default_k" << params.defaultK; + + fs << "samples" << samples; + fs << "responses" << responses; + } + + void read( const FileNode& fn ) + { + clear(); + params.isclassifier = (int)fn["is_classifier"] != 0; + params.defaultK = (int)fn["default_k"]; + + fn["samples"] >> samples; + fn["responses"] >> responses; + } + + Mat samples; + Mat responses; + Params params; }; -float CvKNearest::find_nearest( const CvMat* _samples, int k, CvMat* _results, - const float** _neighbors, CvMat* _neighbor_responses, CvMat* _dist ) const +Ptr KNearest::create(const Params& p) { - float result = 0.f; - const int max_blk_count = 128, max_buf_sz = 1 << 12; - - if( !samples ) - CV_Error( CV_StsError, "The search tree must be constructed first using train method" ); - - if( !CV_IS_MAT(_samples) || - CV_MAT_TYPE(_samples->type) != CV_32FC1 || - _samples->cols != var_count ) - CV_Error( CV_StsBadArg, "Input samples must be floating-point matrix (x)" ); - - if( _results && (!CV_IS_MAT(_results) || - (_results->cols != 1 && _results->rows != 1) || - _results->cols + _results->rows - 1 != _samples->rows) ) - CV_Error( CV_StsBadArg, - "The results must be 1d vector containing as much elements as the number of samples" ); - - if( _results && CV_MAT_TYPE(_results->type) != CV_32FC1 && - (CV_MAT_TYPE(_results->type) != CV_32SC1 || regression)) - CV_Error( CV_StsUnsupportedFormat, - "The results must be floating-point or integer (in case of classification) vector" ); - - if( k < 1 || k > max_k ) - CV_Error( CV_StsOutOfRange, "k must be within 1..max_k range" ); - - if( _neighbor_responses ) - { - if( !CV_IS_MAT(_neighbor_responses) || CV_MAT_TYPE(_neighbor_responses->type) != CV_32FC1 || - _neighbor_responses->rows != _samples->rows || _neighbor_responses->cols != k ) - CV_Error( CV_StsBadArg, - "The neighbor responses (if present) must be floating-point matrix of x size" ); - } - - if( _dist ) - { - if( !CV_IS_MAT(_dist) || CV_MAT_TYPE(_dist->type) != CV_32FC1 || - _dist->rows != _samples->rows || _dist->cols != k ) - CV_Error( CV_StsBadArg, - "The distances from the neighbors (if present) must be floating-point matrix of x size" ); - } - - int count = _samples->rows; - int count_scale = k*2; - int blk_count0 = MIN( count, max_blk_count ); - int buf_sz = MIN( blk_count0 * count_scale, max_buf_sz ); - blk_count0 = MAX( buf_sz/count_scale, 1 ); - blk_count0 += blk_count0 % 2; - blk_count0 = MIN( blk_count0, count ); - buf_sz = blk_count0 * count_scale + k; - int k1 = get_sample_count(); - k1 = MIN( k1, k ); - - cv::parallel_for_(cv::Range(0, count), P1(this, buf_sz, k, _samples, _neighbors, k1, - _results, _neighbor_responses, _dist, &result) - ); - - return result; + return makePtr(p); } - -using namespace cv; - -CvKNearest::CvKNearest( const Mat& _train_data, const Mat& _responses, - const Mat& _sample_idx, bool _is_regression, int _max_k ) -{ - samples = 0; - train(_train_data, _responses, _sample_idx, _is_regression, _max_k, false ); } - -bool CvKNearest::train( const Mat& _train_data, const Mat& _responses, - const Mat& _sample_idx, bool _is_regression, - int _max_k, bool _update_base ) -{ - CvMat tdata = _train_data, responses = _responses, sidx = _sample_idx; - - return train(&tdata, &responses, sidx.data.ptr ? &sidx : 0, _is_regression, _max_k, _update_base ); -} - - -float CvKNearest::find_nearest( const Mat& _samples, int k, Mat* _results, - const float** _neighbors, Mat* _neighbor_responses, - Mat* _dist ) const -{ - CvMat s = _samples, results, *presults = 0, nresponses, *pnresponses = 0, dist, *pdist = 0; - - if( _results ) - { - if(!(_results->data && (_results->type() == CV_32F || - (_results->type() == CV_32S && regression)) && - (_results->cols == 1 || _results->rows == 1) && - _results->cols + _results->rows - 1 == _samples.rows) ) - _results->create(_samples.rows, 1, CV_32F); - presults = &(results = *_results); - } - - if( _neighbor_responses ) - { - if(!(_neighbor_responses->data && _neighbor_responses->type() == CV_32F && - _neighbor_responses->cols == k && _neighbor_responses->rows == _samples.rows) ) - _neighbor_responses->create(_samples.rows, k, CV_32F); - pnresponses = &(nresponses = *_neighbor_responses); - } - - if( _dist ) - { - if(!(_dist->data && _dist->type() == CV_32F && - _dist->cols == k && _dist->rows == _samples.rows) ) - _dist->create(_samples.rows, k, CV_32F); - pdist = &(dist = *_dist); - } - - return find_nearest(&s, k, presults, _neighbors, pnresponses, pdist ); -} - - -float CvKNearest::find_nearest( const cv::Mat& _samples, int k, CV_OUT cv::Mat& results, - CV_OUT cv::Mat& neighborResponses, CV_OUT cv::Mat& dists) const -{ - return find_nearest(_samples, k, &results, 0, &neighborResponses, &dists); } /* End of file */ diff --git a/modules/ml/src/nbayes.cpp b/modules/ml/src/nbayes.cpp index 938f3fbd8d..2dbbcdf690 100644 --- a/modules/ml/src/nbayes.cpp +++ b/modules/ml/src/nbayes.cpp @@ -40,622 +40,428 @@ #include "precomp.hpp" -CvNormalBayesClassifier::CvNormalBayesClassifier() -{ - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; -} +namespace cv { +namespace ml { +NormalBayesClassifier::Params::Params() {} -void CvNormalBayesClassifier::clear() +class NormalBayesClassifierImpl : public NormalBayesClassifier { - if( cls_labels ) +public: + NormalBayesClassifierImpl() { - for( int cls = 0; cls < cls_labels->cols; cls++ ) - { - cvReleaseMat( &count[cls] ); - cvReleaseMat( &sum[cls] ); - cvReleaseMat( &productsum[cls] ); - cvReleaseMat( &avg[cls] ); - cvReleaseMat( &inv_eigen_values[cls] ); - cvReleaseMat( &cov_rotate_mats[cls] ); - } + nallvars = 0; } - cvReleaseMat( &cls_labels ); - cvReleaseMat( &var_idx ); - cvReleaseMat( &c ); - cvFree( &count ); -} + void setParams(const Params&) {} + Params getParams() const { return Params(); } - -CvNormalBayesClassifier::~CvNormalBayesClassifier() -{ - clear(); -} - - -CvNormalBayesClassifier::CvNormalBayesClassifier( - const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx ) -{ - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; - - train( _train_data, _responses, _var_idx, _sample_idx ); -} - - -bool CvNormalBayesClassifier::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, bool update ) -{ - const float min_variation = FLT_EPSILON; - bool result = false; - CvMat* responses = 0; - const float** train_data = 0; - CvMat* __cls_labels = 0; - CvMat* __var_idx = 0; - CvMat* cov = 0; - - CV_FUNCNAME( "CvNormalBayesClassifier::train" ); - - __BEGIN__; - - int cls, nsamples = 0, _var_count = 0, _var_all = 0, nclasses = 0; - int s, c1, c2; - const int* responses_data; - - CV_CALL( cvPrepareTrainData( 0, - _train_data, CV_ROW_SAMPLE, _responses, CV_VAR_CATEGORICAL, - _var_idx, _sample_idx, false, &train_data, - &nsamples, &_var_count, &_var_all, &responses, - &__cls_labels, &__var_idx )); - - if( !update ) + bool train( const Ptr& trainData, int flags ) { - const size_t mat_size = sizeof(CvMat*); - size_t data_size; + const float min_variation = FLT_EPSILON; + Mat responses = trainData->getNormCatResponses(); + Mat __cls_labels = trainData->getClassLabels(); + Mat __var_idx = trainData->getVarIdx(); + Mat samples = trainData->getTrainSamples(); + int nclasses = (int)__cls_labels.total(); - clear(); + int nvars = trainData->getNVars(); + int s, c1, c2, cls; - var_idx = __var_idx; - cls_labels = __cls_labels; - __var_idx = __cls_labels = 0; - var_count = _var_count; - var_all = _var_all; + int __nallvars = trainData->getNAllVars(); + bool update = (flags & UPDATE_MODEL) != 0; - nclasses = cls_labels->cols; - data_size = nclasses*6*mat_size; + if( !update ) + { + nallvars = __nallvars; + count.resize(nclasses); + sum.resize(nclasses); + productsum.resize(nclasses); + avg.resize(nclasses); + inv_eigen_values.resize(nclasses); + cov_rotate_mats.resize(nclasses); - CV_CALL( count = (CvMat**)cvAlloc( data_size )); - memset( count, 0, data_size ); + for( cls = 0; cls < nclasses; cls++ ) + { + count[cls] = Mat::zeros( 1, nvars, CV_32SC1 ); + sum[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + productsum[cls] = Mat::zeros( nvars, nvars, CV_64FC1 ); + avg[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + inv_eigen_values[cls] = Mat::zeros( 1, nvars, CV_64FC1 ); + cov_rotate_mats[cls] = Mat::zeros( nvars, nvars, CV_64FC1 ); + } - sum = count + nclasses; - productsum = sum + nclasses; - avg = productsum + nclasses; - inv_eigen_values= avg + nclasses; - cov_rotate_mats = inv_eigen_values + nclasses; + var_idx = __var_idx; + cls_labels = __cls_labels; - CV_CALL( c = cvCreateMat( 1, nclasses, CV_64FC1 )); + c.create(1, nclasses, CV_64FC1); + } + else + { + // check that the new training data has the same dimensionality etc. + if( nallvars != __nallvars || + var_idx.size() != __var_idx.size() || + norm(var_idx, __var_idx, NORM_INF) != 0 || + cls_labels.size() != __cls_labels.size() || + norm(cls_labels, __cls_labels, NORM_INF) != 0 ) + CV_Error( CV_StsBadArg, + "The new training data is inconsistent with the original training data; varIdx and the class labels should be the same" ); + } + Mat cov( nvars, nvars, CV_64FC1 ); + int nsamples = samples.rows; + + // process train data (count, sum , productsum) + for( s = 0; s < nsamples; s++ ) + { + cls = responses.at(s); + int* count_data = count[cls].ptr(); + double* sum_data = sum[cls].ptr(); + double* prod_data = productsum[cls].ptr(); + const float* train_vec = samples.ptr(s); + + for( c1 = 0; c1 < nvars; c1++, prod_data += nvars ) + { + double val1 = train_vec[c1]; + sum_data[c1] += val1; + count_data[c1]++; + for( c2 = c1; c2 < nvars; c2++ ) + prod_data[c2] += train_vec[c2]*val1; + } + } + + Mat vt; + + // calculate avg, covariance matrix, c for( cls = 0; cls < nclasses; cls++ ) { - CV_CALL(count[cls] = cvCreateMat( 1, var_count, CV_32SC1 )); - CV_CALL(sum[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(productsum[cls] = cvCreateMat( var_count, var_count, CV_64FC1 )); - CV_CALL(avg[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(inv_eigen_values[cls] = cvCreateMat( 1, var_count, CV_64FC1 )); - CV_CALL(cov_rotate_mats[cls] = cvCreateMat( var_count, var_count, CV_64FC1 )); - CV_CALL(cvZero( count[cls] )); - CV_CALL(cvZero( sum[cls] )); - CV_CALL(cvZero( productsum[cls] )); - CV_CALL(cvZero( avg[cls] )); - CV_CALL(cvZero( inv_eigen_values[cls] )); - CV_CALL(cvZero( cov_rotate_mats[cls] )); - } - } - else - { - // check that the new training data has the same dimensionality etc. - if( _var_count != var_count || _var_all != var_all || !((!_var_idx && !var_idx) || - (_var_idx && var_idx && cvNorm(_var_idx,var_idx,CV_C) < DBL_EPSILON)) ) - CV_ERROR( CV_StsBadArg, - "The new training data is inconsistent with the original training data" ); + double det = 1; + int i, j; + Mat& w = inv_eigen_values[cls]; + int* count_data = count[cls].ptr(); + double* avg_data = avg[cls].ptr(); + double* sum1 = sum[cls].ptr(); - if( cls_labels->cols != __cls_labels->cols || - cvNorm(cls_labels, __cls_labels, CV_C) > DBL_EPSILON ) - CV_ERROR( CV_StsNotImplemented, - "In the current implementation the new training data must have absolutely " - "the same set of class labels as used in the original training data" ); + completeSymm(productsum[cls], 0); - nclasses = cls_labels->cols; - } - - responses_data = responses->data.i; - CV_CALL( cov = cvCreateMat( _var_count, _var_count, CV_64FC1 )); - - /* process train data (count, sum , productsum) */ - for( s = 0; s < nsamples; s++ ) - { - cls = responses_data[s]; - int* count_data = count[cls]->data.i; - double* sum_data = sum[cls]->data.db; - double* prod_data = productsum[cls]->data.db; - const float* train_vec = train_data[s]; - - for( c1 = 0; c1 < _var_count; c1++, prod_data += _var_count ) - { - double val1 = train_vec[c1]; - sum_data[c1] += val1; - count_data[c1]++; - for( c2 = c1; c2 < _var_count; c2++ ) - prod_data[c2] += train_vec[c2]*val1; - } - } - cvReleaseMat( &responses ); - responses = 0; - - /* calculate avg, covariance matrix, c */ - for( cls = 0; cls < nclasses; cls++ ) - { - double det = 1; - int i, j; - CvMat* w = inv_eigen_values[cls]; - int* count_data = count[cls]->data.i; - double* avg_data = avg[cls]->data.db; - double* sum1 = sum[cls]->data.db; - - cvCompleteSymm( productsum[cls], 0 ); - - for( j = 0; j < _var_count; j++ ) - { - int n = count_data[j]; - avg_data[j] = n ? sum1[j] / n : 0.; - } - - count_data = count[cls]->data.i; - avg_data = avg[cls]->data.db; - sum1 = sum[cls]->data.db; - - for( i = 0; i < _var_count; i++ ) - { - double* avg2_data = avg[cls]->data.db; - double* sum2 = sum[cls]->data.db; - double* prod_data = productsum[cls]->data.db + i*_var_count; - double* cov_data = cov->data.db + i*_var_count; - double s1val = sum1[i]; - double avg1 = avg_data[i]; - int _count = count_data[i]; - - for( j = 0; j <= i; j++ ) + for( j = 0; j < nvars; j++ ) { - double avg2 = avg2_data[j]; - double cov_val = prod_data[j] - avg1 * sum2[j] - avg2 * s1val + avg1 * avg2 * _count; - cov_val = (_count > 1) ? cov_val / (_count - 1) : cov_val; - cov_data[j] = cov_val; + int n = count_data[j]; + avg_data[j] = n ? sum1[j] / n : 0.; + } + + count_data = count[cls].ptr(); + avg_data = avg[cls].ptr(); + sum1 = sum[cls].ptr(); + + for( i = 0; i < nvars; i++ ) + { + double* avg2_data = avg[cls].ptr(); + double* sum2 = sum[cls].ptr(); + double* prod_data = productsum[cls].ptr(i); + double* cov_data = cov.ptr(i); + double s1val = sum1[i]; + double avg1 = avg_data[i]; + int _count = count_data[i]; + + for( j = 0; j <= i; j++ ) + { + double avg2 = avg2_data[j]; + double cov_val = prod_data[j] - avg1 * sum2[j] - avg2 * s1val + avg1 * avg2 * _count; + cov_val = (_count > 1) ? cov_val / (_count - 1) : cov_val; + cov_data[j] = cov_val; + } + } + + completeSymm( cov, 1 ); + + SVD::compute(cov, w, cov_rotate_mats[cls], noArray()); + transpose(cov_rotate_mats[cls], cov_rotate_mats[cls]); + cv::max(w, min_variation, w); + for( j = 0; j < nvars; j++ ) + det *= w.at(j); + + divide(1., w, w); + c.at(cls) = det > 0 ? log(det) : -700; + } + + return true; + } + + class NBPredictBody : public ParallelLoopBody + { + public: + NBPredictBody( const Mat& _c, const vector& _cov_rotate_mats, + const vector& _inv_eigen_values, + const vector& _avg, + const Mat& _samples, const Mat& _vidx, const Mat& _cls_labels, + Mat& _results, Mat& _results_prob, bool _rawOutput ) + { + c = &_c; + cov_rotate_mats = &_cov_rotate_mats; + inv_eigen_values = &_inv_eigen_values; + avg = &_avg; + samples = &_samples; + vidx = &_vidx; + cls_labels = &_cls_labels; + results = &_results; + results_prob = _results_prob.data ? &_results_prob : 0; + rawOutput = _rawOutput; + } + + const Mat* c; + const vector* cov_rotate_mats; + const vector* inv_eigen_values; + const vector* avg; + const Mat* samples; + const Mat* vidx; + const Mat* cls_labels; + + Mat* results_prob; + Mat* results; + float* value; + bool rawOutput; + + void operator()( const Range& range ) const + { + int cls = -1; + int rtype = 0, rptype = 0; + size_t rstep = 0, rpstep = 0; + int nclasses = (int)cls_labels->total(); + int nvars = avg->at(0).cols; + double probability = 0; + const int* vptr = vidx && !vidx->empty() ? vidx->ptr() : 0; + + if (results) + { + rtype = results->type(); + rstep = results->isContinuous() ? 1 : results->step/results->elemSize(); + } + if (results_prob) + { + rptype = results_prob->type(); + rpstep = results_prob->isContinuous() ? 1 : results_prob->step/results_prob->elemSize(); + } + // allocate memory and initializing headers for calculating + cv::AutoBuffer _buffer(nvars*2); + double* _diffin = _buffer; + double* _diffout = _buffer + nvars; + Mat diffin( 1, nvars, CV_64FC1, _diffin ); + Mat diffout( 1, nvars, CV_64FC1, _diffout ); + + for(int k = range.start; k < range.end; k++ ) + { + double opt = FLT_MAX; + + for(int i = 0; i < nclasses; i++ ) + { + double cur = c->at(i); + const Mat& u = cov_rotate_mats->at(i); + const Mat& w = inv_eigen_values->at(i); + + const double* avg_data = avg->at(i).ptr(); + const float* x = samples->ptr(k); + + // cov = u w u' --> cov^(-1) = u w^(-1) u' + for(int j = 0; j < nvars; j++ ) + _diffin[j] = avg_data[j] - x[vptr ? vptr[j] : j]; + + gemm( diffin, u, 1, noArray(), 0, diffout, GEMM_2_T ); + for(int j = 0; j < nvars; j++ ) + { + double d = _diffout[j]; + cur += d*d*w.ptr()[j]; + } + + if( cur < opt ) + { + cls = i; + opt = cur; + } + probability = exp( -0.5 * cur ); + + if( results_prob ) + { + if ( rptype == CV_32FC1 ) + results_prob->ptr()[k*rpstep + i] = (float)probability; + else + results_prob->ptr()[k*rpstep + i] = probability; + } + } + + int ival = rawOutput ? cls : cls_labels->at(cls); + if( results ) + { + if( rtype == CV_32SC1 ) + results->ptr()[k*rstep] = ival; + else + results->ptr()[k*rstep] = (float)ival; + } } } + }; - CV_CALL( cvCompleteSymm( cov, 1 )); - CV_CALL( cvSVD( cov, w, cov_rotate_mats[cls], 0, CV_SVD_U_T )); - CV_CALL( cvMaxS( w, min_variation, w )); - for( j = 0; j < _var_count; j++ ) - det *= w->data.db[j]; - - CV_CALL( cvDiv( NULL, w, w )); - c->data.db[cls] = det > 0 ? log(det) : -700; + float predict( InputArray _samples, OutputArray _results, int flags ) const + { + return predictProb(_samples, _results, noArray(), flags); } - result = true; + float predictProb( InputArray _samples, OutputArray _results, OutputArray _resultsProb, int flags ) const + { + int value=0; + Mat samples = _samples.getMat(), results, resultsProb; + int nsamples = samples.rows, nclasses = (int)cls_labels.total(); + bool rawOutput = (flags & RAW_OUTPUT) != 0; - __END__; + if( samples.type() != CV_32F || samples.cols != nallvars ) + CV_Error( CV_StsBadArg, + "The input samples must be 32f matrix with the number of columns = nallvars" ); - if( !result || cvGetErrStatus() < 0 ) + if( samples.rows > 1 && _results.needed() ) + CV_Error( CV_StsNullPtr, + "When the number of input samples is >1, the output vector of results must be passed" ); + + if( _results.needed() ) + { + _results.create(nsamples, 1, CV_32S); + results = _results.getMat(); + } + else + results = Mat(1, 1, CV_32S, &value); + + if( _resultsProb.needed() ) + { + _resultsProb.create(nsamples, nclasses, CV_32F); + resultsProb = _resultsProb.getMat(); + } + + cv::parallel_for_(cv::Range(0, nsamples), + NBPredictBody(c, cov_rotate_mats, inv_eigen_values, avg, samples, + var_idx, cls_labels, results, resultsProb, rawOutput)); + + return (float)value; + } + + void write( FileStorage& fs ) const + { + int nclasses = (int)cls_labels.total(), i; + + fs << "var_count" << (var_idx.empty() ? nallvars : (int)var_idx.total()); + fs << "var_all" << nallvars; + + if( !var_idx.empty() ) + fs << "var_idx" << var_idx; + fs << "cls_labels" << cls_labels; + + fs << "count" << "["; + for( i = 0; i < nclasses; i++ ) + fs << count[i]; + + fs << "]" << "sum" << "["; + for( i = 0; i < nclasses; i++ ) + fs << sum[i]; + + fs << "]" << "productsum" << "["; + for( i = 0; i < nclasses; i++ ) + fs << productsum[i]; + + fs << "]" << "avg" << "["; + for( i = 0; i < nclasses; i++ ) + fs << avg[i]; + + fs << "]" << "inv_eigen_values" << "["; + for( i = 0; i < nclasses; i++ ) + fs << inv_eigen_values[i]; + + fs << "]" << "cov_rotate_mats" << "["; + for( i = 0; i < nclasses; i++ ) + fs << cov_rotate_mats[i]; + + fs << "]"; + + fs << "c" << c; + } + + void read( const FileNode& fn ) + { clear(); - cvReleaseMat( &cov ); - cvReleaseMat( &__cls_labels ); - cvReleaseMat( &__var_idx ); - cvFree( &train_data ); + fn["var_all"] >> nallvars; - return result; -} + if( nallvars <= 0 ) + CV_Error( CV_StsParseError, + "The field \"var_count\" of NBayes classifier is missing or non-positive" ); -struct predict_body : cv::ParallelLoopBody { - predict_body(CvMat* _c, CvMat** _cov_rotate_mats, CvMat** _inv_eigen_values, CvMat** _avg, - const CvMat* _samples, const int* _vidx, CvMat* _cls_labels, - CvMat* _results, float* _value, int _var_count1, CvMat* _results_prob - ) - { - c = _c; - cov_rotate_mats = _cov_rotate_mats; - inv_eigen_values = _inv_eigen_values; - avg = _avg; - samples = _samples; - vidx = _vidx; - cls_labels = _cls_labels; - results = _results; - value = _value; - var_count1 = _var_count1; - results_prob = _results_prob; - } + fn["var_idx"] >> var_idx; + fn["cls_labels"] >> cls_labels; - CvMat* c; - CvMat** cov_rotate_mats; - CvMat** inv_eigen_values; - CvMat** avg; - const CvMat* samples; - const int* vidx; - CvMat* cls_labels; + int nclasses = (int)cls_labels.total(), i; - CvMat* results_prob; - CvMat* results; - float* value; - int var_count1; + if( cls_labels.empty() || nclasses < 1 ) + CV_Error( CV_StsParseError, "No or invalid \"cls_labels\" in NBayes classifier" ); - void operator()( const cv::Range& range ) const - { + FileNodeIterator + count_it = fn["count"].begin(), + sum_it = fn["sum"].begin(), + productsum_it = fn["productsum"].begin(), + avg_it = fn["avg"].begin(), + inv_eigen_values_it = fn["inv_eigen_values"].begin(), + cov_rotate_mats_it = fn["cov_rotate_mats"].begin(); - int cls = -1; - int rtype = 0, rstep = 0, rptype = 0, rpstep = 0; - int nclasses = cls_labels->cols; - int _var_count = avg[0]->cols; - double probability = 0; + count.resize(nclasses); + sum.resize(nclasses); + productsum.resize(nclasses); + avg.resize(nclasses); + inv_eigen_values.resize(nclasses); + cov_rotate_mats.resize(nclasses); - if (results) - { - rtype = CV_MAT_TYPE(results->type); - rstep = CV_IS_MAT_CONT(results->type) ? 1 : results->step/CV_ELEM_SIZE(rtype); - } - if (results_prob) - { - rptype = CV_MAT_TYPE(results_prob->type); - rpstep = CV_IS_MAT_CONT(results_prob->type) ? 1 : results_prob->step/CV_ELEM_SIZE(rptype); - } - // allocate memory and initializing headers for calculating - cv::AutoBuffer buffer(nclasses + var_count1); - CvMat diff = cvMat( 1, var_count1, CV_64FC1, &buffer[0] ); - - for(int k = range.start; k < range.end; k += 1 ) - { - int ival; - double opt = FLT_MAX; - - for(int i = 0; i < nclasses; i++ ) + for( i = 0; i < nclasses; i++, ++count_it, ++sum_it, ++productsum_it, ++avg_it, + ++inv_eigen_values_it, ++cov_rotate_mats_it ) { - double cur = c->data.db[i]; - CvMat* u = cov_rotate_mats[i]; - CvMat* w = inv_eigen_values[i]; - - const double* avg_data = avg[i]->data.db; - const float* x = (const float*)(samples->data.ptr + samples->step*k); - - // cov = u w u' --> cov^(-1) = u w^(-1) u' - for(int j = 0; j < _var_count; j++ ) - diff.data.db[j] = avg_data[j] - x[vidx ? vidx[j] : j]; - - cvGEMM( &diff, u, 1, 0, 0, &diff, CV_GEMM_B_T ); - for(int j = 0; j < _var_count; j++ ) - { - double d = diff.data.db[j]; - cur += d*d*w->data.db[j]; - } - - if( cur < opt ) - { - cls = i; - opt = cur; - } - /* probability = exp( -0.5 * cur ) */ - probability = exp( -0.5 * cur ); + *count_it >> count[i]; + *sum_it >> sum[i]; + *productsum_it >> productsum[i]; + *avg_it >> avg[i]; + *inv_eigen_values_it >> inv_eigen_values[i]; + *cov_rotate_mats_it >> cov_rotate_mats[i]; } - ival = cls_labels->data.i[cls]; - if( results ) - { - if( rtype == CV_32SC1 ) - results->data.i[k*rstep] = ival; - else - results->data.fl[k*rstep] = (float)ival; - } - if ( results_prob ) - { - if ( rptype == CV_32FC1 ) - results_prob->data.fl[k*rpstep] = (float)probability; - else - results_prob->data.db[k*rpstep] = probability; - } - if( k == 0 ) - *value = (float)ival; + fn["c"] >> c; } - } + + void clear() + { + count.clear(); + sum.clear(); + productsum.clear(); + avg.clear(); + inv_eigen_values.clear(); + cov_rotate_mats.clear(); + + var_idx.release(); + cls_labels.release(); + c.release(); + nallvars = 0; + } + + bool isTrained() const { return !avg.empty(); } + bool isClassifier() const { return true; } + int getVarCount() const { return nallvars; } + String getDefaultModelName() const { return "opencv_ml_nbayes"; } + + int nallvars; + Mat var_idx, cls_labels, c; + vector count, sum, productsum, avg, inv_eigen_values, cov_rotate_mats; }; -float CvNormalBayesClassifier::predict( const CvMat* samples, CvMat* results, CvMat* results_prob ) const +Ptr NormalBayesClassifier::create(const Params&) { - float value = 0; - - if( !CV_IS_MAT(samples) || CV_MAT_TYPE(samples->type) != CV_32FC1 || samples->cols != var_all ) - CV_Error( CV_StsBadArg, - "The input samples must be 32f matrix with the number of columns = var_all" ); - - if( samples->rows > 1 && !results ) - CV_Error( CV_StsNullPtr, - "When the number of input samples is >1, the output vector of results must be passed" ); - - if( results ) - { - if( !CV_IS_MAT(results) || (CV_MAT_TYPE(results->type) != CV_32FC1 && - CV_MAT_TYPE(results->type) != CV_32SC1) || - (results->cols != 1 && results->rows != 1) || - results->cols + results->rows - 1 != samples->rows ) - CV_Error( CV_StsBadArg, "The output array must be integer or floating-point vector " - "with the number of elements = number of rows in the input matrix" ); - } - - if( results_prob ) - { - if( !CV_IS_MAT(results_prob) || (CV_MAT_TYPE(results_prob->type) != CV_32FC1 && - CV_MAT_TYPE(results_prob->type) != CV_64FC1) || - (results_prob->cols != 1 && results_prob->rows != 1) || - results_prob->cols + results_prob->rows - 1 != samples->rows ) - CV_Error( CV_StsBadArg, "The output array must be double or float vector " - "with the number of elements = number of rows in the input matrix" ); - } - - const int* vidx = var_idx ? var_idx->data.i : 0; - - cv::parallel_for_(cv::Range(0, samples->rows), - predict_body(c, cov_rotate_mats, inv_eigen_values, avg, samples, - vidx, cls_labels, results, &value, var_count, results_prob)); - - return value; + Ptr p = makePtr(); + return p; } - -void CvNormalBayesClassifier::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvNormalBayesClassifier::write" ); - - __BEGIN__; - - int nclasses, i; - - nclasses = cls_labels->cols; - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_NBAYES ); - - CV_CALL( cvWriteInt( fs, "var_count", var_count )); - CV_CALL( cvWriteInt( fs, "var_all", var_all )); - - if( var_idx ) - CV_CALL( cvWrite( fs, "var_idx", var_idx )); - CV_CALL( cvWrite( fs, "cls_labels", cls_labels )); - - CV_CALL( cvStartWriteStruct( fs, "count", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, count[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvStartWriteStruct( fs, "sum", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, sum[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvStartWriteStruct( fs, "productsum", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, productsum[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvStartWriteStruct( fs, "avg", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, avg[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvStartWriteStruct( fs, "inv_eigen_values", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, inv_eigen_values[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvStartWriteStruct( fs, "cov_rotate_mats", CV_NODE_SEQ )); - for( i = 0; i < nclasses; i++ ) - CV_CALL( cvWrite( fs, NULL, cov_rotate_mats[i] )); - CV_CALL( cvEndWriteStruct( fs )); - - CV_CALL( cvWrite( fs, "c", c )); - - cvEndWriteStruct( fs ); - - __END__; } - - -void CvNormalBayesClassifier::read( CvFileStorage* fs, CvFileNode* root_node ) -{ - bool ok = false; - CV_FUNCNAME( "CvNormalBayesClassifier::read" ); - - __BEGIN__; - - int nclasses, i; - size_t data_size; - CvFileNode* node; - CvSeq* seq; - CvSeqReader reader; - - clear(); - - CV_CALL( var_count = cvReadIntByName( fs, root_node, "var_count", -1 )); - CV_CALL( var_all = cvReadIntByName( fs, root_node, "var_all", -1 )); - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, root_node, "var_idx" )); - CV_CALL( cls_labels = (CvMat*)cvReadByName( fs, root_node, "cls_labels" )); - if( !cls_labels ) - CV_ERROR( CV_StsParseError, "No \"cls_labels\" in NBayes classifier" ); - if( cls_labels->cols < 1 ) - CV_ERROR( CV_StsBadArg, "Number of classes is less 1" ); - if( var_count <= 0 ) - CV_ERROR( CV_StsParseError, - "The field \"var_count\" of NBayes classifier is missing" ); - nclasses = cls_labels->cols; - - data_size = nclasses*6*sizeof(CvMat*); - CV_CALL( count = (CvMat**)cvAlloc( data_size )); - memset( count, 0, data_size ); - - sum = count + nclasses; - productsum = sum + nclasses; - avg = productsum + nclasses; - inv_eigen_values = avg + nclasses; - cov_rotate_mats = inv_eigen_values + nclasses; - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "count" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( count[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "sum" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( sum[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "productsum" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( productsum[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "avg" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( avg[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "inv_eigen_values" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( inv_eigen_values[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( node = cvGetFileNodeByName( fs, root_node, "cov_rotate_mats" )); - seq = node->data.seq; - if( !CV_NODE_IS_SEQ(node->tag) || seq->total != nclasses) - CV_ERROR( CV_StsBadArg, "" ); - CV_CALL( cvStartReadSeq( seq, &reader, 0 )); - for( i = 0; i < nclasses; i++ ) - { - CV_CALL( cov_rotate_mats[i] = (CvMat*)cvRead( fs, (CvFileNode*)reader.ptr )); - CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); - } - - CV_CALL( c = (CvMat*)cvReadByName( fs, root_node, "c" )); - - ok = true; - - __END__; - - if( !ok ) - clear(); -} - -using namespace cv; - -CvNormalBayesClassifier::CvNormalBayesClassifier( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx ) -{ - var_count = var_all = 0; - var_idx = 0; - cls_labels = 0; - count = 0; - sum = 0; - productsum = 0; - avg = 0; - inv_eigen_values = 0; - cov_rotate_mats = 0; - c = 0; - default_model_name = "my_nb"; - - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0); -} - -bool CvNormalBayesClassifier::train( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, bool update ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, update); -} - -float CvNormalBayesClassifier::predict( const Mat& _samples, Mat* _results, Mat* _results_prob ) const -{ - CvMat samples = _samples, results, *presults = 0, results_prob, *presults_prob = 0; - - if( _results ) - { - if( !(_results->data && _results->type() == CV_32F && - (_results->cols == 1 || _results->rows == 1) && - _results->cols + _results->rows - 1 == _samples.rows) ) - _results->create(_samples.rows, 1, CV_32F); - presults = &(results = *_results); - } - - if( _results_prob ) - { - if( !(_results_prob->data && _results_prob->type() == CV_64F && - (_results_prob->cols == 1 || _results_prob->rows == 1) && - _results_prob->cols + _results_prob->rows - 1 == _samples.rows) ) - _results_prob->create(_samples.rows, 1, CV_64F); - presults_prob = &(results_prob = *_results_prob); - } - - return predict(&samples, presults, presults_prob); } /* End of file. */ diff --git a/modules/ml/src/precomp.hpp b/modules/ml/src/precomp.hpp index 551ff81791..d308ae98ec 100644 --- a/modules/ml/src/precomp.hpp +++ b/modules/ml/src/precomp.hpp @@ -38,8 +38,8 @@ // //M*/ -#ifndef __OPENCV_PRECOMP_H__ -#define __OPENCV_PRECOMP_H__ +#ifndef __OPENCV_ML_PRECOMP_HPP__ +#define __OPENCV_ML_PRECOMP_HPP__ #include "opencv2/core.hpp" #include "opencv2/ml.hpp" @@ -56,321 +56,218 @@ #include #include #include - -#define ML_IMPL CV_IMPL -#define __BEGIN__ __CV_BEGIN__ -#define __END__ __CV_END__ -#define EXIT __CV_EXIT__ - -#define CV_MAT_ELEM_FLAG( mat, type, comp, vect, tflag ) \ - (( tflag == CV_ROW_SAMPLE ) \ - ? (CV_MAT_ELEM( mat, type, comp, vect )) \ - : (CV_MAT_ELEM( mat, type, vect, comp ))) - -/* Convert matrix to vector */ -#define ICV_MAT2VEC( mat, vdata, vstep, num ) \ - if( MIN( (mat).rows, (mat).cols ) != 1 ) \ - CV_ERROR( CV_StsBadArg, "" ); \ - (vdata) = ((mat).data.ptr); \ - if( (mat).rows == 1 ) \ - { \ - (vstep) = CV_ELEM_SIZE( (mat).type ); \ - (num) = (mat).cols; \ - } \ - else \ - { \ - (vstep) = (mat).step; \ - (num) = (mat).rows; \ - } - -/* get raw data */ -#define ICV_RAWDATA( mat, flags, rdata, sstep, cstep, m, n ) \ - (rdata) = (mat).data.ptr; \ - if( CV_IS_ROW_SAMPLE( flags ) ) \ - { \ - (sstep) = (mat).step; \ - (cstep) = CV_ELEM_SIZE( (mat).type ); \ - (m) = (mat).rows; \ - (n) = (mat).cols; \ - } \ - else \ - { \ - (cstep) = (mat).step; \ - (sstep) = CV_ELEM_SIZE( (mat).type ); \ - (n) = (mat).rows; \ - (m) = (mat).cols; \ - } - -#define ICV_IS_MAT_OF_TYPE( mat, mat_type) \ - (CV_IS_MAT( mat ) && CV_MAT_TYPE( mat->type ) == (mat_type) && \ - (mat)->cols > 0 && (mat)->rows > 0) - -/* - uchar* data; int sstep, cstep; - trainData->data - uchar* classes; int clstep; int ncl;- trainClasses - uchar* tmask; int tmstep; int ntm; - typeMask - uchar* missed;int msstep, mcstep; -missedMeasurements... - int mm, mn; == m,n == size,dim - uchar* sidx;int sistep; - sampleIdx - uchar* cidx;int cistep; - compIdx - int k, l; == n,m == dim,size (length of cidx, sidx) - int m, n; == size,dim -*/ -#define ICV_DECLARE_TRAIN_ARGS() \ - uchar* data; \ - int sstep, cstep; \ - uchar* classes; \ - int clstep; \ - int ncl; \ - uchar* tmask; \ - int tmstep; \ - int ntm; \ - uchar* missed; \ - int msstep, mcstep; \ - int mm, mn; \ - uchar* sidx; \ - int sistep; \ - uchar* cidx; \ - int cistep; \ - int k, l; \ - int m, n; \ - \ - data = classes = tmask = missed = sidx = cidx = NULL; \ - sstep = cstep = clstep = ncl = tmstep = ntm = msstep = mcstep = mm = mn = 0; \ - sistep = cistep = k = l = m = n = 0; - -#define ICV_TRAIN_DATA_REQUIRED( param, flags ) \ - if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_RAWDATA( *(param), (flags), data, sstep, cstep, m, n ); \ - k = n; \ - l = m; \ - } - -#define ICV_TRAIN_CLASSES_REQUIRED( param ) \ - if( !ICV_IS_MAT_OF_TYPE( (param), CV_32FC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *(param), classes, clstep, ncl ); \ - if( m != ncl ) \ - { \ - CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ - } \ - } - -#define ICV_ARG_NULL( param ) \ - if( (param) != NULL ) \ - { \ - CV_ERROR( CV_StsBadArg, #param " parameter must be NULL" ); \ - } - -#define ICV_MISSED_MEASUREMENTS_OPTIONAL( param, flags ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_8UC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_RAWDATA( *(param), (flags), missed, msstep, mcstep, mm, mn ); \ - if( mm != m || mn != n ) \ - { \ - CV_ERROR( CV_StsBadArg, "Unmatched sizes" ); \ - } \ - } \ - } - -#define ICV_COMP_IDX_OPTIONAL( param ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *(param), cidx, cistep, k ); \ - if( k > n ) \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - } - -#define ICV_SAMPLE_IDX_OPTIONAL( param ) \ - if( param ) \ - { \ - if( !ICV_IS_MAT_OF_TYPE( param, CV_32SC1 ) ) \ - { \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - else \ - { \ - ICV_MAT2VEC( *sampleIdx, sidx, sistep, l ); \ - if( l > m ) \ - CV_ERROR( CV_StsBadArg, "Invalid " #param " parameter" ); \ - } \ - } - -/****************************************************************************************/ -#define ICV_CONVERT_FLOAT_ARRAY_TO_MATRICE( array, matrice ) \ -{ \ - CvMat a, b; \ - int dims = (matrice)->cols; \ - int nsamples = (matrice)->rows; \ - int type = CV_MAT_TYPE((matrice)->type); \ - int i, offset = dims; \ - \ - CV_ASSERT( type == CV_32FC1 || type == CV_64FC1 ); \ - offset *= ((type == CV_32FC1) ? sizeof(float) : sizeof(double));\ - \ - b = cvMat( 1, dims, CV_32FC1 ); \ - cvGetRow( matrice, &a, 0 ); \ - for( i = 0; i < nsamples; i++, a.data.ptr += offset ) \ - { \ - b.data.fl = (float*)array[i]; \ - CV_CALL( cvConvert( &b, &a ) ); \ - } \ -} +#include /****************************************************************************************\ -* Auxiliary functions declarations * -\****************************************************************************************/ + * Main struct definitions * + \****************************************************************************************/ -/* Generates a set of classes centers in quantity that are generated as - uniform random vectors in parallelepiped, where is concentrated. Vectors in - should have horizontal orientation. If != NULL, the function doesn't - allocate any memory and stores generated centers in , returns . - If == NULL, the function allocates memory and creates the matrice. Centers - are supposed to be oriented horizontally. */ -CvMat* icvGenerateRandomClusterCenters( int seed, - const CvMat* data, - int num_of_clusters, - CvMat* centers CV_DEFAULT(0)); - -/* Fills the using by choosing the maximal probability. Outliers are - fixed by and have cluster label (-1). Function also controls that there - weren't "empty" clusters by filling empty clusters with the maximal probability vector. - If probs_sums != NULL, filles it with the sums of probabilities for each sample (it is - useful for normalizing probabilities' matrice of FCM) */ -void icvFindClusterLabels( const CvMat* probs, float outlier_thresh, float r, - const CvMat* labels ); - -typedef struct CvSparseVecElem32f -{ - int idx; - float val; -} -CvSparseVecElem32f; - -/* Prepare training data and related parameters */ -#define CV_TRAIN_STATMODEL_DEFRAGMENT_TRAIN_DATA 1 -#define CV_TRAIN_STATMODEL_SAMPLES_AS_ROWS 2 -#define CV_TRAIN_STATMODEL_SAMPLES_AS_COLUMNS 4 -#define CV_TRAIN_STATMODEL_CATEGORICAL_RESPONSE 8 -#define CV_TRAIN_STATMODEL_ORDERED_RESPONSE 16 -#define CV_TRAIN_STATMODEL_RESPONSES_ON_OUTPUT 32 -#define CV_TRAIN_STATMODEL_ALWAYS_COPY_TRAIN_DATA 64 -#define CV_TRAIN_STATMODEL_SPARSE_AS_SPARSE 128 - -int -cvPrepareTrainData( const char* /*funcname*/, - const CvMat* train_data, int tflag, - const CvMat* responses, int response_type, - const CvMat* var_idx, - const CvMat* sample_idx, - bool always_copy_data, - const float*** out_train_samples, - int* _sample_count, - int* _var_count, - int* _var_all, - CvMat** out_responses, - CvMat** out_response_map, - CvMat** out_var_idx, - CvMat** out_sample_idx=0 ); - -void -cvSortSamplesByClasses( const float** samples, const CvMat* classes, - int* class_ranges, const uchar** mask CV_DEFAULT(0) ); - -void -cvCombineResponseMaps (CvMat* _responses, - const CvMat* old_response_map, - CvMat* new_response_map, - CvMat** out_response_map); - -void -cvPreparePredictData( const CvArr* sample, int dims_all, const CvMat* comp_idx, - int class_count, const CvMat* prob, float** row_sample, - int as_sparse CV_DEFAULT(0) ); - -/* copies clustering [or batch "predict"] results - (labels and/or centers and/or probs) back to the output arrays */ -void -cvWritebackLabels( const CvMat* labels, CvMat* dst_labels, - const CvMat* centers, CvMat* dst_centers, - const CvMat* probs, CvMat* dst_probs, - const CvMat* sample_idx, int samples_all, - const CvMat* comp_idx, int dims_all ); -#define cvWritebackResponses cvWritebackLabels - -#define XML_FIELD_NAME "_name" -CvFileNode* icvFileNodeGetChild(CvFileNode* father, const char* name); -CvFileNode* icvFileNodeGetChildArrayElem(CvFileNode* father, const char* name,int index); -CvFileNode* icvFileNodeGetNext(CvFileNode* n, const char* name); - - -void cvCheckTrainData( const CvMat* train_data, int tflag, - const CvMat* missing_mask, - int* var_all, int* sample_all ); - -CvMat* cvPreprocessIndexArray( const CvMat* idx_arr, int data_arr_size, bool check_for_duplicates=false ); - -CvMat* cvPreprocessVarType( const CvMat* type_mask, const CvMat* var_idx, - int var_all, int* response_type ); - -CvMat* cvPreprocessOrderedResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all ); - -CvMat* cvPreprocessCategoricalResponses( const CvMat* responses, - const CvMat* sample_idx, int sample_all, - CvMat** out_response_map, CvMat** class_counts=0 ); - -const float** cvGetTrainSamples( const CvMat* train_data, int tflag, - const CvMat* var_idx, const CvMat* sample_idx, - int* _var_count, int* _sample_count, - bool always_copy_data=false ); +/* log(2*PI) */ +#define CV_LOG2PI (1.8378770664093454835606594728112) namespace cv { - struct DTreeBestSplitFinder +namespace ml +{ + using std::vector; + + #define CV_DTREE_CAT_DIR(idx,subset) \ + (2*((subset[(idx)>>5]&(1 << ((idx) & 31)))==0)-1) + + template struct cmp_lt_idx { - DTreeBestSplitFinder(){ splitSize = 0, tree = 0; node = 0; } - DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node); - DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ); - virtual ~DTreeBestSplitFinder() {} - virtual void operator()(const BlockedRange& range); - void join( DTreeBestSplitFinder& rhs ); - Ptr bestSplit; - Ptr split; - int splitSize; - CvDTree* tree; - CvDTreeNode* node; + cmp_lt_idx(const _Tp* _arr) : arr(_arr) {} + bool operator ()(int a, int b) const { return arr[a] < arr[b]; } + const _Tp* arr; }; - struct ForestTreeBestSplitFinder : DTreeBestSplitFinder + template struct cmp_lt_ptr { - ForestTreeBestSplitFinder() : DTreeBestSplitFinder() {} - ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ); - ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split ); - virtual void operator()(const BlockedRange& range); + cmp_lt_ptr() {} + bool operator ()(const _Tp* a, const _Tp* b) const { return *a < *b; } }; -} -#endif /* __ML_H__ */ + static inline void setRangeVector(std::vector& vec, int n) + { + vec.resize(n); + for( int i = 0; i < n; i++ ) + vec[i] = i; + } + + static inline void writeTermCrit(FileStorage& fs, const TermCriteria& termCrit) + { + if( (termCrit.type & TermCriteria::EPS) != 0 ) + fs << "epsilon" << termCrit.epsilon; + if( (termCrit.type & TermCriteria::COUNT) != 0 ) + fs << "iterations" << termCrit.maxCount; + } + + static inline TermCriteria readTermCrit(const FileNode& fn) + { + TermCriteria termCrit; + double epsilon = (double)fn["epsilon"]; + if( epsilon > 0 ) + { + termCrit.type |= TermCriteria::EPS; + termCrit.epsilon = epsilon; + } + int iters = (int)fn["iterations"]; + if( iters > 0 ) + { + termCrit.type |= TermCriteria::COUNT; + termCrit.maxCount = iters; + } + return termCrit; + } + + class DTreesImpl : public DTrees + { + public: + struct WNode + { + WNode() + { + class_idx = sample_count = depth = complexity = 0; + parent = left = right = split = defaultDir = -1; + Tn = INT_MAX; + value = maxlr = alpha = node_risk = tree_risk = tree_error = 0.; + } + + int class_idx; + double Tn; + double value; + + int parent; + int left; + int right; + int defaultDir; + + int split; + + int sample_count; + int depth; + double maxlr; + + // global pruning data + int complexity; + double alpha; + double node_risk, tree_risk, tree_error; + }; + + struct WSplit + { + WSplit() + { + varIdx = next = 0; + inversed = false; + quality = c = 0.f; + subsetOfs = -1; + } + + int varIdx; + bool inversed; + float quality; + int next; + float c; + int subsetOfs; + }; + + struct WorkData + { + WorkData(const Ptr& _data); + + Ptr data; + vector wnodes; + vector wsplits; + vector wsubsets; + vector cv_Tn; + vector cv_node_risk; + vector cv_node_error; + vector cv_labels; + vector sample_weights; + vector cat_responses; + vector ord_responses; + vector sidx; + int maxSubsetSize; + }; + + DTreesImpl(); + virtual ~DTreesImpl(); + virtual void clear(); + + String getDefaultModelName() const { return "opencv_ml_dtree"; } + bool isTrained() const { return !roots.empty(); } + bool isClassifier() const { return _isClassifier; } + int getVarCount() const { return varType.empty() ? 0 : (int)(varType.size() - 1); } + int getCatCount(int vi) const { return catOfs[vi][1] - catOfs[vi][0]; } + int getSubsetSize(int vi) const { return (getCatCount(vi) + 31)/32; } + + virtual void setDParams(const Params& _params); + virtual Params getDParams() const; + virtual void startTraining( const Ptr& trainData, int flags ); + virtual void endTraining(); + virtual void initCompVarIdx(); + virtual bool train( const Ptr& trainData, int flags ); + + virtual int addTree( const vector& sidx ); + virtual int addNodeAndTrySplit( int parent, const vector& sidx ); + virtual const vector& getActiveVars(); + virtual int findBestSplit( const vector& _sidx ); + virtual void calcValue( int nidx, const vector& _sidx ); + + virtual WSplit findSplitOrdClass( int vi, const vector& _sidx, double initQuality ); + + // simple k-means, slightly modified to take into account the "weight" (L1-norm) of each vector. + virtual void clusterCategories( const double* vectors, int n, int m, double* csums, int k, int* labels ); + virtual WSplit findSplitCatClass( int vi, const vector& _sidx, double initQuality, int* subset ); + + virtual WSplit findSplitOrdReg( int vi, const vector& _sidx, double initQuality ); + virtual WSplit findSplitCatReg( int vi, const vector& _sidx, double initQuality, int* subset ); + + virtual int calcDir( int splitidx, const vector& _sidx, vector& _sleft, vector& _sright ); + virtual int pruneCV( int root ); + + virtual double updateTreeRNC( int root, double T, int fold ); + virtual bool cutTree( int root, double T, int fold, double min_alpha ); + virtual float predictTrees( const Range& range, const Mat& sample, int flags ) const; + virtual float predict( InputArray inputs, OutputArray outputs, int flags ) const; + + virtual void writeTrainingParams( FileStorage& fs ) const; + virtual void writeParams( FileStorage& fs ) const; + virtual void writeSplit( FileStorage& fs, int splitidx ) const; + virtual void writeNode( FileStorage& fs, int nidx, int depth ) const; + virtual void writeTree( FileStorage& fs, int root ) const; + virtual void write( FileStorage& fs ) const; + + virtual void readParams( const FileNode& fn ); + virtual int readSplit( const FileNode& fn ); + virtual int readNode( const FileNode& fn ); + virtual int readTree( const FileNode& fn ); + virtual void read( const FileNode& fn ); + + virtual const std::vector& getRoots() const { return roots; } + virtual const std::vector& getNodes() const { return nodes; } + virtual const std::vector& getSplits() const { return splits; } + virtual const std::vector& getSubsets() const { return subsets; } + + Params params0, params; + + vector varIdx; + vector compVarIdx; + vector varType; + vector catOfs; + vector catMap; + vector roots; + vector nodes; + vector splits; + vector subsets; + vector classLabels; + vector missingSubst; + bool _isClassifier; + + Ptr w; + }; + +}} + +#endif /* __OPENCV_ML_PRECOMP_HPP__ */ diff --git a/modules/ml/src/rtrees.cpp b/modules/ml/src/rtrees.cpp index c41b842142..7c9cbaf268 100644 --- a/modules/ml/src/rtrees.cpp +++ b/modules/ml/src/rtrees.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -40,833 +42,386 @@ #include "precomp.hpp" -CvForestTree::CvForestTree() -{ - forest = NULL; -} - - -CvForestTree::~CvForestTree() -{ - clear(); -} - - -bool CvForestTree::train( CvDTreeTrainData* _data, - const CvMat* _subsample_idx, - CvRTrees* _forest ) -{ - clear(); - forest = _forest; - - data = _data; - data->shared = true; - return do_train(_subsample_idx); -} - - -bool -CvForestTree::train( const CvMat*, int, const CvMat*, const CvMat*, - const CvMat*, const CvMat*, const CvMat*, CvDTreeParams ) -{ - assert(0); - return false; -} - - -bool -CvForestTree::train( CvDTreeTrainData*, const CvMat* ) -{ - assert(0); - return false; -} - - - -namespace cv -{ - -ForestTreeBestSplitFinder::ForestTreeBestSplitFinder( CvForestTree* _tree, CvDTreeNode* _node ) : - DTreeBestSplitFinder(_tree, _node) {} - -ForestTreeBestSplitFinder::ForestTreeBestSplitFinder( const ForestTreeBestSplitFinder& finder, Split spl ) : - DTreeBestSplitFinder( finder, spl ) {} - -void ForestTreeBestSplitFinder::operator()(const BlockedRange& range) -{ - int vi, vi1 = range.begin(), vi2 = range.end(); - int n = node->sample_count; - CvDTreeTrainData* data = tree->get_data(); - AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); - - CvForestTree* ftree = (CvForestTree*)tree; - const CvMat* active_var_mask = ftree->forest->get_active_var_mask(); - - for( vi = vi1; vi < vi2; vi++ ) - { - CvDTreeSplit *res; - int ci = data->var_type->data.i[vi]; - if( node->num_valid[vi] <= 1 - || (active_var_mask && !active_var_mask->data.ptr[vi]) ) - continue; - - if( data->is_classifier ) - { - if( ci >= 0 ) - res = ftree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = ftree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - else - { - if( ci >= 0 ) - res = ftree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = ftree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - - if( res && bestSplit->quality < split->quality ) - memcpy( bestSplit.get(), split.get(), splitSize ); - } -} -} - -CvDTreeSplit* CvForestTree::find_best_split( CvDTreeNode* node ) -{ - CvMat* active_var_mask = 0; - if( forest ) - { - int var_count; - CvRNG* rng = forest->get_rng(); - - active_var_mask = forest->get_active_var_mask(); - var_count = active_var_mask->cols; - - CV_Assert( var_count == data->var_count ); - - for( int vi = 0; vi < var_count; vi++ ) - { - uchar temp; - int i1 = cvRandInt(rng) % var_count; - int i2 = cvRandInt(rng) % var_count; - CV_SWAP( active_var_mask->data.ptr[i1], - active_var_mask->data.ptr[i2], temp ); - } - } - - cv::ForestTreeBestSplitFinder finder( this, node ); - - cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - - CvDTreeSplit *bestSplit = 0; - if( finder.bestSplit->quality > 0 ) - { - bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); - } - - return bestSplit; -} - -void CvForestTree::read( CvFileStorage* fs, CvFileNode* fnode, CvRTrees* _forest, CvDTreeTrainData* _data ) -{ - CvDTree::read( fs, fnode, _data ); - forest = _forest; -} - - -void CvForestTree::read( CvFileStorage*, CvFileNode* ) -{ - assert(0); -} - -void CvForestTree::read( CvFileStorage* _fs, CvFileNode* _node, - CvDTreeTrainData* _data ) -{ - CvDTree::read( _fs, _node, _data ); -} - +namespace cv { +namespace ml { ////////////////////////////////////////////////////////////////////////////////////////// // Random trees // ////////////////////////////////////////////////////////////////////////////////////////// -CvRTParams::CvRTParams() : CvDTreeParams( 5, 10, 0, false, 10, 0, false, false, 0 ), - calc_var_importance(false), nactive_vars(0) +RTrees::Params::Params() + : DTrees::Params(5, 10, 0.f, false, 10, 0, false, false, Mat()) { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 50, 0.1 ); + calcVarImportance = false; + nactiveVars = 0; + termCrit = TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 50, 0.1); } -CvRTParams::CvRTParams( int _max_depth, int _min_sample_count, - float _regression_accuracy, bool _use_surrogates, - int _max_categories, const float* _priors, bool _calc_var_importance, - int _nactive_vars, int max_num_of_trees_in_the_forest, - float forest_accuracy, int termcrit_type ) : - CvDTreeParams( _max_depth, _min_sample_count, _regression_accuracy, - _use_surrogates, _max_categories, 0, - false, false, _priors ), - calc_var_importance(_calc_var_importance), - nactive_vars(_nactive_vars) +RTrees::Params::Params( int _maxDepth, int _minSampleCount, + double _regressionAccuracy, bool _useSurrogates, + int _maxCategories, const Mat& _priors, + bool _calcVarImportance, int _nactiveVars, + TermCriteria _termCrit ) + : DTrees::Params(_maxDepth, _minSampleCount, _regressionAccuracy, _useSurrogates, + _maxCategories, 0, false, false, _priors) { - term_crit = cvTermCriteria(termcrit_type, - max_num_of_trees_in_the_forest, forest_accuracy); -} - -CvRTrees::CvRTrees() -{ - nclasses = 0; - oob_error = 0; - ntrees = 0; - trees = NULL; - data = NULL; - active_var_mask = NULL; - var_importance = NULL; - rng = &cv::theRNG(); - default_model_name = "my_random_trees"; + calcVarImportance = _calcVarImportance; + nactiveVars = _nactiveVars; + termCrit = _termCrit; } -void CvRTrees::clear() +class DTreesImplForRTrees : public DTreesImpl { - int k; - for( k = 0; k < ntrees; k++ ) - delete trees[k]; - cvFree( &trees ); +public: + DTreesImplForRTrees() {} + virtual ~DTreesImplForRTrees() {} - delete data; - data = 0; - - cvReleaseMat( &active_var_mask ); - cvReleaseMat( &var_importance ); - ntrees = 0; -} - - -CvRTrees::~CvRTrees() -{ - clear(); -} - -cv::String CvRTrees::getName() const -{ - return CV_TYPE_NAME_ML_RTREES; -} - -CvMat* CvRTrees::get_active_var_mask() -{ - return active_var_mask; -} - - -CvRNG* CvRTrees::get_rng() -{ - return &rng->state; -} - -bool CvRTrees::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvRTParams params ) -{ - clear(); - - CvDTreeParams tree_params( params.max_depth, params.min_sample_count, - params.regression_accuracy, params.use_surrogates, params.max_categories, - params.cv_folds, params.use_1se_rule, false, params.priors ); - - data = new CvDTreeTrainData(); - data->set_data( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, tree_params, true); - - int var_count = data->var_count; - if( params.nactive_vars > var_count ) - params.nactive_vars = var_count; - else if( params.nactive_vars == 0 ) - params.nactive_vars = (int)sqrt((double)var_count); - else if( params.nactive_vars < 0 ) - CV_Error( CV_StsBadArg, " must be non-negative" ); - - // Create mask of active variables at the tree nodes - active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 ); - if( params.calc_var_importance ) + void setRParams(const RTrees::Params& p) { - var_importance = cvCreateMat( 1, var_count, CV_32FC1 ); - cvZero(var_importance); - } - { // initialize active variables mask - CvMat submask1, submask2; - CV_Assert( (active_var_mask->cols >= 1) && (params.nactive_vars > 0) && (params.nactive_vars <= active_var_mask->cols) ); - cvGetCols( active_var_mask, &submask1, 0, params.nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - if( params.nactive_vars < active_var_mask->cols ) - { - cvGetCols( active_var_mask, &submask2, params.nactive_vars, var_count ); - cvZero( &submask2 ); - } + rparams = p; } - return grow_forest( params.term_crit ); -} - -bool CvRTrees::train( CvMLData* _data, CvRTParams params ) -{ - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - return train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, params ); -} - -bool CvRTrees::grow_forest( const CvTermCriteria term_crit ) -{ - CvMat* sample_idx_mask_for_tree = 0; - CvMat* sample_idx_for_tree = 0; - - const int max_ntrees = term_crit.max_iter; - const double max_oob_err = term_crit.epsilon; - - const int dims = data->var_count; - float maximal_response = 0; - - CvMat* oob_sample_votes = 0; - CvMat* oob_responses = 0; - - float* oob_samples_perm_ptr= 0; - - float* samples_ptr = 0; - uchar* missing_ptr = 0; - float* true_resp_ptr = 0; - bool is_oob_or_vimportance = (max_oob_err > 0 && term_crit.type != CV_TERMCRIT_ITER) || var_importance; - - // oob_predictions_sum[i] = sum of predicted values for the i-th sample - // oob_num_of_predictions[i] = number of summands - // (number of predictions for the i-th sample) - // initialize these variable to avoid warning C4701 - CvMat oob_predictions_sum = cvMat( 1, 1, CV_32FC1 ); - CvMat oob_num_of_predictions = cvMat( 1, 1, CV_32FC1 ); - - nsamples = data->sample_count; - nclasses = data->get_num_classes(); - - if ( is_oob_or_vimportance ) + RTrees::Params getRParams() const { - if( data->is_classifier ) - { - oob_sample_votes = cvCreateMat( nsamples, nclasses, CV_32SC1 ); - cvZero(oob_sample_votes); - } - else - { - // oob_responses[0,i] = oob_predictions_sum[i] - // = sum of predicted values for the i-th sample - // oob_responses[1,i] = oob_num_of_predictions[i] - // = number of summands (number of predictions for the i-th sample) - oob_responses = cvCreateMat( 2, nsamples, CV_32FC1 ); - cvZero(oob_responses); - cvGetRow( oob_responses, &oob_predictions_sum, 0 ); - cvGetRow( oob_responses, &oob_num_of_predictions, 1 ); - } - - oob_samples_perm_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims ); - samples_ptr = (float*)cvAlloc( sizeof(float)*nsamples*dims ); - missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*nsamples*dims ); - true_resp_ptr = (float*)cvAlloc( sizeof(float)*nsamples ); - - data->get_vectors( 0, samples_ptr, missing_ptr, true_resp_ptr ); - - double minval, maxval; - CvMat responses = cvMat(1, nsamples, CV_32FC1, true_resp_ptr); - cvMinMaxLoc( &responses, &minval, &maxval ); - maximal_response = (float)MAX( MAX( fabs(minval), fabs(maxval) ), 0 ); + return rparams; } - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*max_ntrees ); - memset( trees, 0, sizeof(trees[0])*max_ntrees ); - - sample_idx_mask_for_tree = cvCreateMat( 1, nsamples, CV_8UC1 ); - sample_idx_for_tree = cvCreateMat( 1, nsamples, CV_32SC1 ); - - ntrees = 0; - while( ntrees < max_ntrees ) + void clear() { - int i, oob_samples_count = 0; - double ncorrect_responses = 0; // used for estimation of variable importance - CvForestTree* tree = 0; + DTreesImpl::clear(); + oobError = 0.; + rng = RNG((uint64)-1); + } - cvZero( sample_idx_mask_for_tree ); - for(i = 0; i < nsamples; i++ ) //form sample for creation one tree + const vector& getActiveVars() + { + int i, nvars = (int)allVars.size(), m = (int)activeVars.size(); + for( i = 0; i < nvars; i++ ) { - int idx = (*rng)(nsamples); - sample_idx_for_tree->data.i[i] = idx; - sample_idx_mask_for_tree->data.ptr[idx] = 0xFF; + int i1 = rng.uniform(0, nvars); + int i2 = rng.uniform(0, nvars); + std::swap(allVars[i1], allVars[i2]); } + for( i = 0; i < m; i++ ) + activeVars[i] = allVars[i]; + return activeVars; + } - trees[ntrees] = new CvForestTree(); - tree = trees[ntrees]; - tree->train( data, sample_idx_for_tree, this ); + void startTraining( const Ptr& trainData, int flags ) + { + DTreesImpl::startTraining(trainData, flags); + int nvars = w->data->getNVars(); + int i, m = rparams.nactiveVars > 0 ? rparams.nactiveVars : cvRound(std::sqrt((double)nvars)); + m = std::min(std::max(m, 1), nvars); + allVars.resize(nvars); + activeVars.resize(m); + for( i = 0; i < nvars; i++ ) + allVars[i] = varIdx[i]; + } - if ( is_oob_or_vimportance ) + void endTraining() + { + DTreesImpl::endTraining(); + vector a, b; + std::swap(allVars, a); + std::swap(activeVars, b); + } + + bool train( const Ptr& trainData, int flags ) + { + Params dp(rparams.maxDepth, rparams.minSampleCount, rparams.regressionAccuracy, + rparams.useSurrogates, rparams.maxCategories, rparams.CVFolds, + rparams.use1SERule, rparams.truncatePrunedTree, rparams.priors); + setDParams(dp); + startTraining(trainData, flags); + int treeidx, ntrees = (rparams.termCrit.type & TermCriteria::COUNT) != 0 ? + rparams.termCrit.maxCount : 10000; + int i, j, k, vi, vi_, n = (int)w->sidx.size(); + int nclasses = (int)classLabels.size(); + double eps = (rparams.termCrit.type & TermCriteria::EPS) != 0 && + rparams.termCrit.epsilon > 0 ? rparams.termCrit.epsilon : 0.; + vector sidx(n); + vector oobmask(n); + vector oobidx; + vector oobperm; + vector oobres(n, 0.); + vector oobcount(n, 0); + vector oobvotes(n*nclasses, 0); + int nvars = w->data->getNVars(); + int nallvars = w->data->getNAllVars(); + const int* vidx = !varIdx.empty() ? &varIdx[0] : 0; + vector samplebuf(nallvars); + Mat samples = w->data->getSamples(); + float* psamples = samples.ptr(); + size_t sstep0 = samples.step1(), sstep1 = 1; + Mat sample0, sample(nallvars, 1, CV_32F, &samplebuf[0]); + int predictFlags = _isClassifier ? (PREDICT_MAX_VOTE + RAW_OUTPUT) : PREDICT_SUM; + + bool calcOOBError = eps > 0 || rparams.calcVarImportance; + double max_response = 0.; + + if( w->data->getLayout() == COL_SAMPLE ) + std::swap(sstep0, sstep1); + + if( !_isClassifier ) { - CvMat sample, missing; - // form array of OOB samples indices and get these samples - sample = cvMat( 1, dims, CV_32FC1, samples_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - - oob_error = 0; - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) + for( i = 0; i < n; i++ ) { - CvDTreeNode* predicted_node = 0; - // check if the sample is OOB - if( sample_idx_mask_for_tree->data.ptr[i] ) + double val = std::abs(w->ord_responses[w->sidx[i]]); + max_response = std::max(max_response, val); + } + } + + if( rparams.calcVarImportance ) + varImportance.resize(nallvars, 0.f); + + for( treeidx = 0; treeidx < ntrees; treeidx++ ) + { + for( i = 0; i < n; i++ ) + oobmask[i] = (uchar)1; + + for( i = 0; i < n; i++ ) + { + j = rng.uniform(0, n); + sidx[i] = w->sidx[j]; + oobmask[j] = (uchar)0; + } + int root = addTree( sidx ); + if( root < 0 ) + return false; + + if( calcOOBError ) + { + oobidx.clear(); + for( i = 0; i < n; i++ ) + { + if( !oobmask[i] ) + oobidx.push_back(i); + } + int n_oob = (int)oobidx.size(); + // if there is no out-of-bag samples, we can not compute OOB error + // nor update the variable importance vector; so we proceed to the next tree + if( n_oob == 0 ) continue; + double ncorrect_responses = 0.; - // predict oob samples - if( !predicted_node ) - predicted_node = tree->predict(&sample, &missing, true); - - if( !data->is_classifier ) //regression + oobError = 0.; + for( i = 0; i < n_oob; i++ ) { - double avg_resp, resp = predicted_node->value; - oob_predictions_sum.data.fl[i] += (float)resp; - oob_num_of_predictions.data.fl[i] += 1; + j = oobidx[i]; + sample = Mat( nallvars, 1, CV_32F, psamples + sstep0*w->sidx[j], sstep1*sizeof(psamples[0]) ); - // compute oob error - avg_resp = oob_predictions_sum.data.fl[i]/oob_num_of_predictions.data.fl[i]; - avg_resp -= true_resp_ptr[i]; - oob_error += avg_resp*avg_resp; - resp = (resp - true_resp_ptr[i])/maximal_response; - ncorrect_responses += exp( -resp*resp ); - } - else //classification - { - double prdct_resp; - CvPoint max_loc; - CvMat votes; - - cvGetRow(oob_sample_votes, &votes, i); - votes.data.i[predicted_node->class_idx]++; - - // compute oob error - cvMinMaxLoc( &votes, 0, 0, 0, &max_loc ); - - prdct_resp = data->cat_map->data.i[max_loc.x]; - oob_error += (fabs(prdct_resp - true_resp_ptr[i]) < FLT_EPSILON) ? 0 : 1; - - ncorrect_responses += cvRound(predicted_node->value - true_resp_ptr[i]) == 0; - } - oob_samples_count++; - } - if( oob_samples_count > 0 ) - oob_error /= (double)oob_samples_count; - - // estimate variable importance - if( var_importance && oob_samples_count > 0 ) - { - int m; - - memcpy( oob_samples_perm_ptr, samples_ptr, dims*nsamples*sizeof(float)); - for( m = 0; m < dims; m++ ) - { - double ncorrect_responses_permuted = 0; - // randomly permute values of the m-th variable in the oob samples - float* mth_var_ptr = oob_samples_perm_ptr + m; - - for( i = 0; i < nsamples; i++ ) + double val = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); + if( !_isClassifier ) { - int i1, i2; - float temp; - - if( sample_idx_mask_for_tree->data.ptr[i] ) //the sample is not OOB - continue; - i1 = (*rng)(nsamples); - i2 = (*rng)(nsamples); - CV_SWAP( mth_var_ptr[i1*dims], mth_var_ptr[i2*dims], temp ); - - // turn values of (m-1)-th variable, that were permuted - // at the previous iteration, untouched - if( m > 1 ) - oob_samples_perm_ptr[i*dims+m-1] = samples_ptr[i*dims+m-1]; + oobres[j] += val; + oobcount[j]++; + double true_val = w->ord_responses[w->sidx[j]]; + double a = oobres[j]/oobcount[j] - true_val; + oobError += a*a; + val = (val - true_val)/max_response; + ncorrect_responses += std::exp( -val*val ); } - - // predict "permuted" cases and calculate the number of votes for the - // correct class in the variable-m-permuted oob data - sample = cvMat( 1, dims, CV_32FC1, oob_samples_perm_ptr ); - missing = cvMat( 1, dims, CV_8UC1, missing_ptr ); - for( i = 0; i < nsamples; i++, - sample.data.fl += dims, missing.data.ptr += dims ) + else { - double predct_resp, true_resp; + int ival = cvRound(val); + int* votes = &oobvotes[j*nclasses]; + votes[ival]++; + int best_class = 0; + for( k = 1; k < nclasses; k++ ) + if( votes[best_class] < votes[k] ) + best_class = k; + int diff = best_class != w->cat_responses[w->sidx[j]]; + oobError += diff; + ncorrect_responses += diff == 0; + } + } - if( sample_idx_mask_for_tree->data.ptr[i] ) //the sample is not OOB - continue; + oobError /= n_oob; + if( rparams.calcVarImportance && n_oob > 1 ) + { + oobperm.resize(n_oob); + for( i = 0; i < n_oob; i++ ) + oobperm[i] = oobidx[i]; - predct_resp = tree->predict(&sample, &missing, true)->value; - true_resp = true_resp_ptr[i]; - if( data->is_classifier ) - ncorrect_responses_permuted += cvRound(true_resp - predct_resp) == 0; - else + for( vi_ = 0; vi_ < nvars; vi_++ ) + { + vi = vidx ? vidx[vi_] : vi_; + double ncorrect_responses_permuted = 0; + for( i = 0; i < n_oob; i++ ) { - true_resp = (true_resp - predct_resp)/maximal_response; - ncorrect_responses_permuted += exp( -true_resp*true_resp ); + int i1 = rng.uniform(0, n_oob); + int i2 = rng.uniform(0, n_oob); + std::swap(i1, i2); } + + for( i = 0; i < n_oob; i++ ) + { + j = oobidx[i]; + int vj = oobperm[i]; + sample0 = Mat( nallvars, 1, CV_32F, psamples + sstep0*w->sidx[j], sstep1*sizeof(psamples[0]) ); + for( k = 0; k < nallvars; k++ ) + sample.at(k) = sample0.at(k); + sample.at(vi) = psamples[sstep0*w->sidx[vj] + sstep1*vi]; + + double val = predictTrees(Range(treeidx, treeidx+1), sample, predictFlags); + if( !_isClassifier ) + { + val = (val - w->ord_responses[w->sidx[j]])/max_response; + ncorrect_responses_permuted += exp( -val*val ); + } + else + ncorrect_responses_permuted += cvRound(val) == w->cat_responses[w->sidx[j]]; + } + varImportance[vi] += (float)(ncorrect_responses - ncorrect_responses_permuted); } - var_importance->data.fl[m] += (float)(ncorrect_responses - - ncorrect_responses_permuted); } } + if( calcOOBError && oobError < eps ) + break; } - ntrees++; - if( term_crit.type != CV_TERMCRIT_ITER && oob_error < max_oob_err ) - break; - } - if( var_importance ) - { - for ( int vi = 0; vi < var_importance->cols; vi++ ) - var_importance->data.fl[vi] = ( var_importance->data.fl[vi] > 0 ) ? - var_importance->data.fl[vi] : 0; - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); - } - - cvFree( &oob_samples_perm_ptr ); - cvFree( &samples_ptr ); - cvFree( &missing_ptr ); - cvFree( &true_resp_ptr ); - - cvReleaseMat( &sample_idx_mask_for_tree ); - cvReleaseMat( &sample_idx_for_tree ); - - cvReleaseMat( &oob_sample_votes ); - cvReleaseMat( &oob_responses ); - - return true; -} - - -const CvMat* CvRTrees::get_var_importance() -{ - return var_importance; -} - - -float CvRTrees::get_proximity( const CvMat* sample1, const CvMat* sample2, - const CvMat* missing1, const CvMat* missing2 ) const -{ - float result = 0; - - for( int i = 0; i < ntrees; i++ ) - result += trees[i]->predict( sample1, missing1 ) == - trees[i]->predict( sample2, missing2 ) ? 1 : 0; - result = result/(float)ntrees; - - return result; -} - -float CvRTrees::calc_error( CvMLData* _data, int type , std::vector *resp ) -{ - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) + if( rparams.calcVarImportance ) { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; + for( vi_ = 0; vi_ < nallvars; vi_++ ) + varImportance[vi_] = std::max(varImportance[vi_], 0.f); + normalize(varImportance, varImportance, 1., 0, NORM_L1); } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; + endTraining(); + return true; } - else + + void writeTrainingParams( FileStorage& fs ) const { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; + DTreesImpl::writeTrainingParams(fs); + fs << "nactive_vars" << rparams.nactiveVars; } - return err; -} -float CvRTrees::get_train_error() -{ - float err = -1; - - int sample_count = data->sample_count; - int var_count = data->var_count; - - float *values_ptr = (float*)cvAlloc( sizeof(float)*sample_count*var_count ); - uchar *missing_ptr = (uchar*)cvAlloc( sizeof(uchar)*sample_count*var_count ); - float *responses_ptr = (float*)cvAlloc( sizeof(float)*sample_count ); - - data->get_vectors( 0, values_ptr, missing_ptr, responses_ptr); - - if (data->is_classifier) + void write( FileStorage& fs ) const { - int err_count = 0; - float *vp = values_ptr; - uchar *mp = missing_ptr; - for (int si = 0; si < sample_count; si++, vp += var_count, mp += var_count) - { - CvMat sample = cvMat( 1, var_count, CV_32FC1, vp ); - CvMat missing = cvMat( 1, var_count, CV_8UC1, mp ); - float r = predict( &sample, &missing ); - if (fabs(r - responses_ptr[si]) >= FLT_EPSILON) - err_count++; - } - err = (float)err_count / (float)sample_count; - } - else - CV_Error( CV_StsBadArg, "This method is not supported for regression problems" ); + if( roots.empty() ) + CV_Error( CV_StsBadArg, "RTrees have not been trained" ); - cvFree( &values_ptr ); - cvFree( &missing_ptr ); - cvFree( &responses_ptr ); + writeParams(fs); - return err; -} + fs << "oob_error" << oobError; + if( !varImportance.empty() ) + fs << "var_importance" << varImportance; + int k, ntrees = (int)roots.size(); -float CvRTrees::predict( const CvMat* sample, const CvMat* missing ) const -{ - double result = -1; - int k; + fs << "ntrees" << ntrees + << "trees" << "["; - if( nclasses > 0 ) //classification - { - int max_nvotes = 0; - cv::AutoBuffer _votes(nclasses); - int* votes = _votes; - memset( votes, 0, sizeof(*votes)*nclasses ); for( k = 0; k < ntrees; k++ ) { - CvDTreeNode* predicted_node = trees[k]->predict( sample, missing ); - int nvotes; - int class_idx = predicted_node->class_idx; - CV_Assert( 0 <= class_idx && class_idx < nclasses ); - - nvotes = ++votes[class_idx]; - if( nvotes > max_nvotes ) - { - max_nvotes = nvotes; - result = predicted_node->value; - } + fs << "{"; + writeTree(fs, roots[k]); + fs << "}"; } - } - else // regression - { - result = 0; - for( k = 0; k < ntrees; k++ ) - result += trees[k]->predict( sample, missing )->value; - result /= (double)ntrees; + + fs << "]"; } - return (float)result; -} - -float CvRTrees::predict_prob( const CvMat* sample, const CvMat* missing) const -{ - if( nclasses == 2 ) //classification + void readParams( const FileNode& fn ) { - cv::AutoBuffer _votes(nclasses); - int* votes = _votes; - memset( votes, 0, sizeof(*votes)*nclasses ); - for( int k = 0; k < ntrees; k++ ) + DTreesImpl::readParams(fn); + rparams.maxDepth = params0.maxDepth; + rparams.minSampleCount = params0.minSampleCount; + rparams.regressionAccuracy = params0.regressionAccuracy; + rparams.useSurrogates = params0.useSurrogates; + rparams.maxCategories = params0.maxCategories; + rparams.priors = params0.priors; + + FileNode tparams_node = fn["training_params"]; + rparams.nactiveVars = (int)tparams_node["nactive_vars"]; + } + + void read( const FileNode& fn ) + { + clear(); + + //int nclasses = (int)fn["nclasses"]; + //int nsamples = (int)fn["nsamples"]; + oobError = (double)fn["oob_error"]; + int ntrees = (int)fn["ntrees"]; + + fn["var_importance"] >> varImportance; + + readParams(fn); + + FileNode trees_node = fn["trees"]; + FileNodeIterator it = trees_node.begin(); + CV_Assert( ntrees == (int)trees_node.size() ); + + for( int treeidx = 0; treeidx < ntrees; treeidx++, ++it ) { - CvDTreeNode* predicted_node = trees[k]->predict( sample, missing ); - int class_idx = predicted_node->class_idx; - CV_Assert( 0 <= class_idx && class_idx < nclasses ); - - ++votes[class_idx]; - } - - return float(votes[1])/ntrees; - } - else // regression - CV_Error(CV_StsBadArg, "This function works for binary classification problems only..."); - - return -1; -} - -void CvRTrees::write( CvFileStorage* fs, const char* name ) const -{ - int k; - - if( ntrees < 1 || !trees || nsamples < 1 ) - CV_Error( CV_StsBadArg, "Invalid CvRTrees object" ); - - cv::String modelNodeName = this->getName(); - cvStartWriteStruct( fs, name, CV_NODE_MAP, modelNodeName.c_str() ); - - cvWriteInt( fs, "nclasses", nclasses ); - cvWriteInt( fs, "nsamples", nsamples ); - cvWriteInt( fs, "nactive_vars", (int)cvSum(active_var_mask).val[0] ); - cvWriteReal( fs, "oob_error", oob_error ); - - if( var_importance ) - cvWrite( fs, "var_importance", var_importance ); - - cvWriteInt( fs, "ntrees", ntrees ); - - data->write_params( fs ); - - cvStartWriteStruct( fs, "trees", CV_NODE_SEQ ); - - for( k = 0; k < ntrees; k++ ) - { - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - trees[k]->write( fs ); - cvEndWriteStruct( fs ); - } - - cvEndWriteStruct( fs ); //trees - cvEndWriteStruct( fs ); //CV_TYPE_NAME_ML_RTREES -} - - -void CvRTrees::read( CvFileStorage* fs, CvFileNode* fnode ) -{ - int nactive_vars, var_count, k; - CvSeqReader reader; - CvFileNode* trees_fnode = 0; - - clear(); - - nclasses = cvReadIntByName( fs, fnode, "nclasses", -1 ); - nsamples = cvReadIntByName( fs, fnode, "nsamples" ); - nactive_vars = cvReadIntByName( fs, fnode, "nactive_vars", -1 ); - oob_error = cvReadRealByName(fs, fnode, "oob_error", -1 ); - ntrees = cvReadIntByName( fs, fnode, "ntrees", -1 ); - - var_importance = (CvMat*)cvReadByName( fs, fnode, "var_importance" ); - - if( nclasses < 0 || nsamples <= 0 || nactive_vars < 0 || oob_error < 0 || ntrees <= 0) - CV_Error( CV_StsParseError, "Some , , , " - ", , of tags are missing" ); - - rng = &cv::theRNG(); - - trees = (CvForestTree**)cvAlloc( sizeof(trees[0])*ntrees ); - memset( trees, 0, sizeof(trees[0])*ntrees ); - - data = new CvDTreeTrainData(); - data->read_params( fs, fnode ); - data->shared = true; - - trees_fnode = cvGetFileNodeByName( fs, fnode, "trees" ); - if( !trees_fnode || !CV_NODE_IS_SEQ(trees_fnode->tag) ) - CV_Error( CV_StsParseError, " tag is missing" ); - - cvStartReadSeq( trees_fnode->data.seq, &reader ); - if( reader.seq->total != ntrees ) - CV_Error( CV_StsParseError, - " is not equal to the number of trees saved in file" ); - - for( k = 0; k < ntrees; k++ ) - { - trees[k] = new CvForestTree(); - trees[k]->read( fs, (CvFileNode*)reader.ptr, this, data ); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - } - - var_count = data->var_count; - active_var_mask = cvCreateMat( 1, var_count, CV_8UC1 ); - { - // initialize active variables mask - CvMat submask1; - cvGetCols( active_var_mask, &submask1, 0, nactive_vars ); - cvSet( &submask1, cvScalar(1) ); - - if( nactive_vars < var_count ) - { - CvMat submask2; - cvGetCols( active_var_mask, &submask2, nactive_vars, var_count ); - cvZero( &submask2 ); + FileNode nfn = (*it)["nodes"]; + readTree(nfn); } } -} + + RTrees::Params rparams; + double oobError; + vector varImportance; + vector allVars, activeVars; + RNG rng; +}; -int CvRTrees::get_tree_count() const +class RTreesImpl : public RTrees { - return ntrees; -} +public: + RTreesImpl() {} + virtual ~RTreesImpl() {} -CvForestTree* CvRTrees::get_tree(int i) const + String getDefaultModelName() const { return "opencv_ml_rtrees"; } + + bool train( const Ptr& trainData, int flags ) + { + return impl.train(trainData, flags); + } + + float predict( InputArray samples, OutputArray results, int flags ) const + { + return impl.predict(samples, results, flags); + } + + void write( FileStorage& fs ) const + { + impl.write(fs); + } + + void read( const FileNode& fn ) + { + impl.read(fn); + } + + void setRParams(const Params& p) { impl.setRParams(p); } + Params getRParams() const { return impl.getRParams(); } + + Mat getVarImportance() const { return Mat_(impl.varImportance, true); } + int getVarCount() const { return impl.getVarCount(); } + + bool isTrained() const { return impl.isTrained(); } + bool isClassifier() const { return impl.isClassifier(); } + + const vector& getRoots() const { return impl.getRoots(); } + const vector& getNodes() const { return impl.getNodes(); } + const vector& getSplits() const { return impl.getSplits(); } + const vector& getSubsets() const { return impl.getSubsets(); } + + DTreesImplForRTrees impl; +}; + + +Ptr RTrees::create(const Params& params) { - return (unsigned)i < (unsigned)ntrees ? trees[i] : 0; + Ptr p = makePtr(); + p->setRParams(params); + return p; } -using namespace cv; - -bool CvRTrees::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvRTParams _params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx = _var_idx, sidx = _sample_idx, vtype = _var_type, mmask = _missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, vtype.data.ptr ? &vtype : 0, - mmask.data.ptr ? &mmask : 0, _params); -} - - -float CvRTrees::predict( const Mat& _sample, const Mat& _missing ) const -{ - CvMat sample = _sample, mmask = _missing; - return predict(&sample, mmask.data.ptr ? &mmask : 0); -} - -float CvRTrees::predict_prob( const Mat& _sample, const Mat& _missing) const -{ - CvMat sample = _sample, mmask = _missing; - return predict_prob(&sample, mmask.data.ptr ? &mmask : 0); -} - -Mat CvRTrees::getVarImportance() -{ - return cvarrToMat(get_var_importance()); -} +}} // End of file. diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp index 341a817c94..49e5c0200a 100644 --- a/modules/ml/src/svm.cpp +++ b/modules/ml/src/svm.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -40,6 +42,9 @@ #include "precomp.hpp" +#include +#include + /****************************************************************************************\ COPYRIGHT NOTICE ---------------- @@ -81,2929 +86,2091 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \****************************************************************************************/ -using namespace cv; +namespace cv { namespace ml { -#define CV_SVM_MIN_CACHE_SIZE (40 << 20) /* 40Mb */ - -#include -#include - -#if 1 typedef float Qfloat; -#define QFLOAT_TYPE CV_32F -#else -typedef double Qfloat; -#define QFLOAT_TYPE CV_64F -#endif +const int QFLOAT_TYPE = DataDepth::value; // Param Grid -bool CvParamGrid::check() const +static void checkParamGrid(const ParamGrid& pg) { - bool ok = false; - - CV_FUNCNAME( "CvParamGrid::check" ); - __BEGIN__; - - if( min_val > max_val ) - CV_ERROR( CV_StsBadArg, "Lower bound of the grid must be less then the upper one" ); - if( min_val < DBL_EPSILON ) - CV_ERROR( CV_StsBadArg, "Lower bound of the grid must be positive" ); - if( step < 1. + FLT_EPSILON ) - CV_ERROR( CV_StsBadArg, "Grid step must greater then 1" ); - - ok = true; - - __END__; - - return ok; -} - -CvParamGrid CvSVM::get_default_grid( int param_id ) -{ - CvParamGrid grid; - if( param_id == CvSVM::C ) - { - grid.min_val = 0.1; - grid.max_val = 500; - grid.step = 5; // total iterations = 5 - } - else if( param_id == CvSVM::GAMMA ) - { - grid.min_val = 1e-5; - grid.max_val = 0.6; - grid.step = 15; // total iterations = 4 - } - else if( param_id == CvSVM::P ) - { - grid.min_val = 0.01; - grid.max_val = 100; - grid.step = 7; // total iterations = 4 - } - else if( param_id == CvSVM::NU ) - { - grid.min_val = 0.01; - grid.max_val = 0.2; - grid.step = 3; // total iterations = 3 - } - else if( param_id == CvSVM::COEF ) - { - grid.min_val = 0.1; - grid.max_val = 300; - grid.step = 14; // total iterations = 3 - } - else if( param_id == CvSVM::DEGREE ) - { - grid.min_val = 0.01; - grid.max_val = 4; - grid.step = 7; // total iterations = 3 - } - else - cvError( CV_StsBadArg, "CvSVM::get_default_grid", "Invalid type of parameter " - "(use one of CvSVM::C, CvSVM::GAMMA et al.)", __FILE__, __LINE__ ); - return grid; + if( pg.minVal > pg.maxVal ) + CV_Error( CV_StsBadArg, "Lower bound of the grid must be less then the upper one" ); + if( pg.minVal < DBL_EPSILON ) + CV_Error( CV_StsBadArg, "Lower bound of the grid must be positive" ); + if( pg.logStep < 1. + FLT_EPSILON ) + CV_Error( CV_StsBadArg, "Grid step must greater then 1" ); } // SVM training parameters -CvSVMParams::CvSVMParams() : - svm_type(CvSVM::C_SVC), kernel_type(CvSVM::RBF), degree(0), - gamma(1), coef0(0), C(1), nu(0), p(0), class_weights(0) +SVM::Params::Params() { - term_crit = cvTermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); + svmType = SVM::C_SVC; + kernelType = SVM::RBF; + degree = 0; + gamma = 1; + coef0 = 0; + C = 1; + nu = 0; + p = 0; + termCrit = TermCriteria( CV_TERMCRIT_ITER+CV_TERMCRIT_EPS, 1000, FLT_EPSILON ); } -CvSVMParams::CvSVMParams( int _svm_type, int _kernel_type, - double _degree, double _gamma, double _coef0, - double _Con, double _nu, double _p, - CvMat* _class_weights, CvTermCriteria _term_crit ) : - svm_type(_svm_type), kernel_type(_kernel_type), - degree(_degree), gamma(_gamma), coef0(_coef0), - C(_Con), nu(_nu), p(_p), class_weights(_class_weights), term_crit(_term_crit) +SVM::Params::Params( int _svmType, int _kernelType, + double _degree, double _gamma, double _coef0, + double _Con, double _nu, double _p, + const Mat& _classWeights, TermCriteria _termCrit ) { + svmType = _svmType; + kernelType = _kernelType; + degree = _degree; + gamma = _gamma; + coef0 = _coef0; + C = _Con; + nu = _nu; + p = _p; + classWeights = _classWeights; + termCrit = _termCrit; } - /////////////////////////////////////// SVM kernel /////////////////////////////////////// - -CvSVMKernel::CvSVMKernel() +class SVMKernelImpl : public SVM::Kernel { - clear(); -} - - -void CvSVMKernel::clear() -{ - params = 0; - calc_func = 0; -} - - -CvSVMKernel::~CvSVMKernel() -{ -} - - -CvSVMKernel::CvSVMKernel( const CvSVMParams* _params, Calc _calc_func ) -{ - clear(); - create( _params, _calc_func ); -} - - -bool CvSVMKernel::create( const CvSVMParams* _params, Calc _calc_func ) -{ - clear(); - params = _params; - calc_func = _calc_func; - - if( !calc_func ) - calc_func = params->kernel_type == CvSVM::RBF ? &CvSVMKernel::calc_rbf : - params->kernel_type == CvSVM::POLY ? &CvSVMKernel::calc_poly : - params->kernel_type == CvSVM::SIGMOID ? &CvSVMKernel::calc_sigmoid : - params->kernel_type == CvSVM::CHI2 ? &CvSVMKernel::calc_chi2 : - params->kernel_type == CvSVM::INTER ? &CvSVMKernel::calc_intersec : - &CvSVMKernel::calc_linear; - - return true; -} - - -void CvSVMKernel::calc_non_rbf_base( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results, - double alpha, double beta ) -{ - int j, k; - for( j = 0; j < vcount; j++ ) +public: + SVMKernelImpl() { - const float* sample = vecs[j]; - double s = 0; - for( k = 0; k <= var_count - 4; k += 4 ) - s += sample[k]*another[k] + sample[k+1]*another[k+1] + - sample[k+2]*another[k+2] + sample[k+3]*another[k+3]; - for( ; k < var_count; k++ ) - s += sample[k]*another[k]; - results[j] = (Qfloat)(s*alpha + beta); } -} - -void CvSVMKernel::calc_linear( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - calc_non_rbf_base( vcount, var_count, vecs, another, results, 1, 0 ); -} - - -void CvSVMKernel::calc_poly( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - calc_non_rbf_base( vcount, var_count, vecs, another, results, params->gamma, params->coef0 ); - if( vcount > 0 ) - cvPow( &R, &R, params->degree ); -} - - -void CvSVMKernel::calc_sigmoid( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - int j; - calc_non_rbf_base( vcount, var_count, vecs, another, results, - -2*params->gamma, -2*params->coef0 ); - // TODO: speedup this - for( j = 0; j < vcount; j++ ) + SVMKernelImpl( const SVM::Params& _params ) { - Qfloat t = results[j]; - double e = exp(-fabs(t)); - if( t > 0 ) - results[j] = (Qfloat)((1. - e)/(1. + e)); - else - results[j] = (Qfloat)((e - 1.)/(e + 1.)); + params = _params; } -} - -void CvSVMKernel::calc_rbf( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - double gamma = -params->gamma; - int j, k; - - for( j = 0; j < vcount; j++ ) + virtual ~SVMKernelImpl() { - const float* sample = vecs[j]; - double s = 0; + } - for( k = 0; k <= var_count - 4; k += 4 ) + int getType() const + { + return params.kernelType; + } + + void calc_non_rbf_base( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results, + double alpha, double beta ) + { + int j, k; + for( j = 0; j < vcount; j++ ) { - double t0 = sample[k] - another[k]; - double t1 = sample[k+1] - another[k+1]; - - s += t0*t0 + t1*t1; - - t0 = sample[k+2] - another[k+2]; - t1 = sample[k+3] - another[k+3]; - - s += t0*t0 + t1*t1; - } - - for( ; k < var_count; k++ ) - { - double t0 = sample[k] - another[k]; - s += t0*t0; - } - results[j] = (Qfloat)(s*gamma); - } - - if( vcount > 0 ) - cvExp( &R, &R ); -} - -/// Histogram intersection kernel -void CvSVMKernel::calc_intersec( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - int j, k; - for( j = 0; j < vcount; j++ ) - { - const float* sample = vecs[j]; - double s = 0; - for( k = 0; k <= var_count - 4; k += 4 ) - s += std::min(sample[k],another[k]) + std::min(sample[k+1],another[k+1]) + - std::min(sample[k+2],another[k+2]) + std::min(sample[k+3],another[k+3]); - for( ; k < var_count; k++ ) - s += std::min(sample[k],another[k]); - results[j] = (Qfloat)(s); - } -} - -/// Exponential chi2 kernel -void CvSVMKernel::calc_chi2( int vcount, int var_count, const float** vecs, - const float* another, Qfloat* results ) -{ - CvMat R = cvMat( 1, vcount, QFLOAT_TYPE, results ); - double gamma = -params->gamma; - int j, k; - for( j = 0; j < vcount; j++ ) - { - const float* sample = vecs[j]; - double chi2 = 0; - for(k = 0 ; k < var_count; k++ ) - { - double d = sample[k]-another[k]; - double devisor = sample[k]+another[k]; - /// if devisor == 0, the Chi2 distance would be zero, but calculation would rise an error because of deviding by zero - if (devisor != 0) - { - chi2 += d*d/devisor; + const float* sample = &vecs[j*var_count]; + double s = 0; + for( k = 0; k <= var_count - 4; k += 4 ) + s += sample[k]*another[k] + sample[k+1]*another[k+1] + + sample[k+2]*another[k+2] + sample[k+3]*another[k+3]; + for( ; k < var_count; k++ ) + s += sample[k]*another[k]; + results[j] = (Qfloat)(s*alpha + beta); } } - results[j] = (Qfloat) (gamma*chi2); + + void calc_linear( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) + { + calc_non_rbf_base( vcount, var_count, vecs, another, results, 1, 0 ); + } + + void calc_poly( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) + { + Mat R( 1, vcount, QFLOAT_TYPE, results ); + calc_non_rbf_base( vcount, var_count, vecs, another, results, params.gamma, params.coef0 ); + if( vcount > 0 ) + pow( R, params.degree, R ); + } + + void calc_sigmoid( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) + { + int j; + calc_non_rbf_base( vcount, var_count, vecs, another, results, + -2*params.gamma, -2*params.coef0 ); + // TODO: speedup this + for( j = 0; j < vcount; j++ ) + { + Qfloat t = results[j]; + Qfloat e = std::exp(-std::abs(t)); + if( t > 0 ) + results[j] = (Qfloat)((1. - e)/(1. + e)); + else + results[j] = (Qfloat)((e - 1.)/(e + 1.)); + } } - if( vcount > 0 ) - cvExp( &R, &R ); -} + void calc_rbf( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) + { + double gamma = -params.gamma; + int j, k; -void CvSVMKernel::calc( int vcount, int var_count, const float** vecs, + for( j = 0; j < vcount; j++ ) + { + const float* sample = &vecs[j*var_count]; + double s = 0; + + for( k = 0; k <= var_count - 4; k += 4 ) + { + double t0 = sample[k] - another[k]; + double t1 = sample[k+1] - another[k+1]; + + s += t0*t0 + t1*t1; + + t0 = sample[k+2] - another[k+2]; + t1 = sample[k+3] - another[k+3]; + + s += t0*t0 + t1*t1; + } + + for( ; k < var_count; k++ ) + { + double t0 = sample[k] - another[k]; + s += t0*t0; + } + results[j] = (Qfloat)(s*gamma); + } + + if( vcount > 0 ) + { + Mat R( 1, vcount, QFLOAT_TYPE, results ); + exp( R, R ); + } + } + + /// Histogram intersection kernel + void calc_intersec( int vcount, int var_count, const float* vecs, const float* another, Qfloat* results ) -{ - const Qfloat max_val = (Qfloat)(FLT_MAX*1e-3); - int j; - (this->*calc_func)( vcount, var_count, vecs, another, results ); - for( j = 0; j < vcount; j++ ) { - if( results[j] > max_val ) - results[j] = max_val; - } -} - - -// Generalized SMO+SVMlight algorithm -// Solves: -// -// min [0.5(\alpha^T Q \alpha) + b^T \alpha] -// -// y^T \alpha = \delta -// y_i = +1 or -1 -// 0 <= alpha_i <= Cp for y_i = 1 -// 0 <= alpha_i <= Cn for y_i = -1 -// -// Given: -// -// Q, b, y, Cp, Cn, and an initial feasible point \alpha -// l is the size of vectors and matrices -// eps is the stopping criterion -// -// solution will be put in \alpha, objective value will be put in obj -// - -void CvSVMSolver::clear() -{ - G = 0; - alpha = 0; - y = 0; - b = 0; - buf[0] = buf[1] = 0; - cvReleaseMemStorage( &storage ); - kernel = 0; - select_working_set_func = 0; - calc_rho_func = 0; - - rows = 0; - samples = 0; - get_row_func = 0; -} - - -CvSVMSolver::CvSVMSolver() -{ - storage = 0; - clear(); -} - - -CvSVMSolver::~CvSVMSolver() -{ - clear(); -} - - -CvSVMSolver::CvSVMSolver( int _sample_count, int _var_count, const float** _samples, schar* _y, - int _alpha_count, double* _alpha, double _Cp, double _Cn, - CvMemStorage* _storage, CvSVMKernel* _kernel, GetRow _get_row, - SelectWorkingSet _select_working_set, CalcRho _calc_rho ) -{ - storage = 0; - create( _sample_count, _var_count, _samples, _y, _alpha_count, _alpha, _Cp, _Cn, - _storage, _kernel, _get_row, _select_working_set, _calc_rho ); -} - - -bool CvSVMSolver::create( int _sample_count, int _var_count, const float** _samples, schar* _y, - int _alpha_count, double* _alpha, double _Cp, double _Cn, - CvMemStorage* _storage, CvSVMKernel* _kernel, GetRow _get_row, - SelectWorkingSet _select_working_set, CalcRho _calc_rho ) -{ - bool ok = false; - int i, svm_type; - - CV_FUNCNAME( "CvSVMSolver::create" ); - - __BEGIN__; - - int rows_hdr_size; - - clear(); - - sample_count = _sample_count; - var_count = _var_count; - samples = _samples; - y = _y; - alpha_count = _alpha_count; - alpha = _alpha; - kernel = _kernel; - - C[0] = _Cn; - C[1] = _Cp; - eps = kernel->params->term_crit.epsilon; - max_iter = kernel->params->term_crit.max_iter; - storage = cvCreateChildMemStorage( _storage ); - - b = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(b[0])); - alpha_status = (schar*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha_status[0])); - G = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(G[0])); - for( i = 0; i < 2; i++ ) - buf[i] = (Qfloat*)cvMemStorageAlloc( storage, sample_count*2*sizeof(buf[i][0]) ); - svm_type = kernel->params->svm_type; - - select_working_set_func = _select_working_set; - if( !select_working_set_func ) - select_working_set_func = svm_type == CvSVM::NU_SVC || svm_type == CvSVM::NU_SVR ? - &CvSVMSolver::select_working_set_nu_svm : &CvSVMSolver::select_working_set; - - calc_rho_func = _calc_rho; - if( !calc_rho_func ) - calc_rho_func = svm_type == CvSVM::NU_SVC || svm_type == CvSVM::NU_SVR ? - &CvSVMSolver::calc_rho_nu_svm : &CvSVMSolver::calc_rho; - - get_row_func = _get_row; - if( !get_row_func ) - get_row_func = params->svm_type == CvSVM::EPS_SVR || - params->svm_type == CvSVM::NU_SVR ? &CvSVMSolver::get_row_svr : - params->svm_type == CvSVM::C_SVC || - params->svm_type == CvSVM::NU_SVC ? &CvSVMSolver::get_row_svc : - &CvSVMSolver::get_row_one_class; - - cache_line_size = sample_count*sizeof(Qfloat); - // cache size = max(num_of_samples^2*sizeof(Qfloat)*0.25, 64Kb) - // (assuming that for large training sets ~25% of Q matrix is used) - cache_size = MAX( cache_line_size*sample_count/4, CV_SVM_MIN_CACHE_SIZE ); - - // the size of Q matrix row headers - rows_hdr_size = sample_count*sizeof(rows[0]); - if( rows_hdr_size > storage->block_size ) - CV_ERROR( CV_StsOutOfRange, "Too small storage block size" ); - - lru_list.prev = lru_list.next = &lru_list; - rows = (CvSVMKernelRow*)cvMemStorageAlloc( storage, rows_hdr_size ); - memset( rows, 0, rows_hdr_size ); - - ok = true; - - __END__; - - return ok; -} - - -float* CvSVMSolver::get_row_base( int i, bool* _existed ) -{ - int i1 = i < sample_count ? i : i - sample_count; - CvSVMKernelRow* row = rows + i1; - bool existed = row->data != 0; - Qfloat* data; - - if( existed || cache_size <= 0 ) - { - CvSVMKernelRow* del_row = existed ? row : lru_list.prev; - data = del_row->data; - assert( data != 0 ); - - // delete row from the LRU list - del_row->data = 0; - del_row->prev->next = del_row->next; - del_row->next->prev = del_row->prev; - } - else - { - data = (Qfloat*)cvMemStorageAlloc( storage, cache_line_size ); - cache_size -= cache_line_size; - } - - // insert row into the LRU list - row->data = data; - row->prev = &lru_list; - row->next = lru_list.next; - row->prev->next = row->next->prev = row; - - if( !existed ) - { - kernel->calc( sample_count, var_count, samples, samples[i1], row->data ); - } - - if( _existed ) - *_existed = existed; - - return row->data; -} - - -float* CvSVMSolver::get_row_svc( int i, float* row, float*, bool existed ) -{ - if( !existed ) - { - const schar* _y = y; - int j, len = sample_count; - assert( _y && i < sample_count ); - - if( _y[i] > 0 ) + int j, k; + for( j = 0; j < vcount; j++ ) { - for( j = 0; j < len; j++ ) - row[j] = _y[j]*row[j]; - } - else - { - for( j = 0; j < len; j++ ) - row[j] = -_y[j]*row[j]; - } - } - return row; -} - - -float* CvSVMSolver::get_row_one_class( int, float* row, float*, bool ) -{ - return row; -} - - -float* CvSVMSolver::get_row_svr( int i, float* row, float* dst, bool ) -{ - int j, len = sample_count; - Qfloat* dst_pos = dst; - Qfloat* dst_neg = dst + len; - if( i >= len ) - { - Qfloat* temp; - CV_SWAP( dst_pos, dst_neg, temp ); - } - - for( j = 0; j < len; j++ ) - { - Qfloat t = row[j]; - dst_pos[j] = t; - dst_neg[j] = -t; - } - return dst; -} - - - -float* CvSVMSolver::get_row( int i, float* dst ) -{ - bool existed = false; - float* row = get_row_base( i, &existed ); - return (this->*get_row_func)( i, row, dst, existed ); -} - - -#undef is_upper_bound -#define is_upper_bound(i) (alpha_status[i] > 0) - -#undef is_lower_bound -#define is_lower_bound(i) (alpha_status[i] < 0) - -#undef is_free -#define is_free(i) (alpha_status[i] == 0) - -#undef get_C -#define get_C(i) (C[y[i]>0]) - -#undef update_alpha_status -#define update_alpha_status(i) \ - alpha_status[i] = (schar)(alpha[i] >= get_C(i) ? 1 : alpha[i] <= 0 ? -1 : 0) - -#undef reconstruct_gradient -#define reconstruct_gradient() /* empty for now */ - - -bool CvSVMSolver::solve_generic( CvSVMSolutionInfo& si ) -{ - int iter = 0; - int i, j, k; - - // 1. initialize gradient and alpha status - for( i = 0; i < alpha_count; i++ ) - { - update_alpha_status(i); - G[i] = b[i]; - if( fabs(G[i]) > 1e200 ) - return false; - } - - for( i = 0; i < alpha_count; i++ ) - { - if( !is_lower_bound(i) ) - { - const Qfloat *Q_i = get_row( i, buf[0] ); - double alpha_i = alpha[i]; - - for( j = 0; j < alpha_count; j++ ) - G[j] += alpha_i*Q_i[j]; + const float* sample = &vecs[j*var_count]; + double s = 0; + for( k = 0; k <= var_count - 4; k += 4 ) + s += std::min(sample[k],another[k]) + std::min(sample[k+1],another[k+1]) + + std::min(sample[k+2],another[k+2]) + std::min(sample[k+3],another[k+3]); + for( ; k < var_count; k++ ) + s += std::min(sample[k],another[k]); + results[j] = (Qfloat)(s); } } - // 2. optimization loop - for(;;) + /// Exponential chi2 kernel + void calc_chi2( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) { - const Qfloat *Q_i, *Q_j; - double C_i, C_j; - double old_alpha_i, old_alpha_j, alpha_i, alpha_j; - double delta_alpha_i, delta_alpha_j; - -#ifdef _DEBUG - for( i = 0; i < alpha_count; i++ ) + Mat R( 1, vcount, QFLOAT_TYPE, results ); + double gamma = -params.gamma; + int j, k; + for( j = 0; j < vcount; j++ ) { - if( fabs(G[i]) > 1e+300 ) - return false; - - if( fabs(alpha[i]) > 1e16 ) - return false; + const float* sample = &vecs[j*var_count]; + double chi2 = 0; + for(k = 0 ; k < var_count; k++ ) + { + double d = sample[k]-another[k]; + double devisor = sample[k]+another[k]; + /// if devisor == 0, the Chi2 distance would be zero, + // but calculation would rise an error because of deviding by zero + if (devisor != 0) + { + chi2 += d*d/devisor; + } + } + results[j] = (Qfloat) (gamma*chi2); } -#endif + if( vcount > 0 ) + exp( R, R ); + } - if( (this->*select_working_set_func)( i, j ) != 0 || iter++ >= max_iter ) + void calc( int vcount, int var_count, const float* vecs, + const float* another, Qfloat* results ) + { + switch( params.kernelType ) + { + case SVM::LINEAR: + calc_linear(vcount, var_count, vecs, another, results); break; - - Q_i = get_row( i, buf[0] ); - Q_j = get_row( j, buf[1] ); - - C_i = get_C(i); - C_j = get_C(j); - - alpha_i = old_alpha_i = alpha[i]; - alpha_j = old_alpha_j = alpha[j]; - - if( y[i] != y[j] ) - { - double denom = Q_i[i]+Q_j[j]+2*Q_i[j]; - double delta = (-G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); - double diff = alpha_i - alpha_j; - alpha_i += delta; - alpha_j += delta; - - if( diff > 0 && alpha_j < 0 ) - { - alpha_j = 0; - alpha_i = diff; - } - else if( diff <= 0 && alpha_i < 0 ) - { - alpha_i = 0; - alpha_j = -diff; - } - - if( diff > C_i - C_j && alpha_i > C_i ) - { - alpha_i = C_i; - alpha_j = C_i - diff; - } - else if( diff <= C_i - C_j && alpha_j > C_j ) - { - alpha_j = C_j; - alpha_i = C_j + diff; - } - } - else - { - double denom = Q_i[i]+Q_j[j]-2*Q_i[j]; - double delta = (G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); - double sum = alpha_i + alpha_j; - alpha_i -= delta; - alpha_j += delta; - - if( sum > C_i && alpha_i > C_i ) - { - alpha_i = C_i; - alpha_j = sum - C_i; - } - else if( sum <= C_i && alpha_j < 0) - { - alpha_j = 0; - alpha_i = sum; - } - - if( sum > C_j && alpha_j > C_j ) - { - alpha_j = C_j; - alpha_i = sum - C_j; - } - else if( sum <= C_j && alpha_i < 0 ) - { - alpha_i = 0; - alpha_j = sum; - } - } - - // update alpha - alpha[i] = alpha_i; - alpha[j] = alpha_j; - update_alpha_status(i); - update_alpha_status(j); - - // update G - delta_alpha_i = alpha_i - old_alpha_i; - delta_alpha_j = alpha_j - old_alpha_j; - - for( k = 0; k < alpha_count; k++ ) - G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j; - } - - // calculate rho - (this->*calc_rho_func)( si.rho, si.r ); - - // calculate objective value - for( i = 0, si.obj = 0; i < alpha_count; i++ ) - si.obj += alpha[i] * (G[i] + b[i]); - - si.obj *= 0.5; - - si.upper_bound_p = C[1]; - si.upper_bound_n = C[0]; - - return true; -} - - -// return 1 if already optimal, return 0 otherwise -bool -CvSVMSolver::select_working_set( int& out_i, int& out_j ) -{ - // return i,j which maximize -grad(f)^T d , under constraint - // if alpha_i == C, d != +1 - // if alpha_i == 0, d != -1 - double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = +1 } - int Gmax1_idx = -1; - - double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = -1 } - int Gmax2_idx = -1; - - int i; - - for( i = 0; i < alpha_count; i++ ) - { - double t; - - if( y[i] > 0 ) // y = +1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 - { - Gmax1 = t; - Gmax1_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 - { - Gmax2 = t; - Gmax2_idx = i; - } - } - else // y = -1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax2 ) // d = +1 - { - Gmax2 = t; - Gmax2_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax1 ) // d = -1 - { - Gmax1 = t; - Gmax1_idx = i; - } - } - } - - out_i = Gmax1_idx; - out_j = Gmax2_idx; - - return Gmax1 + Gmax2 < eps; -} - - -void -CvSVMSolver::calc_rho( double& rho, double& r ) -{ - int i, nr_free = 0; - double ub = DBL_MAX, lb = -DBL_MAX, sum_free = 0; - - for( i = 0; i < alpha_count; i++ ) - { - double yG = y[i]*G[i]; - - if( is_lower_bound(i) ) - { - if( y[i] > 0 ) - ub = MIN(ub,yG); - else - lb = MAX(lb,yG); - } - else if( is_upper_bound(i) ) - { - if( y[i] < 0) - ub = MIN(ub,yG); - else - lb = MAX(lb,yG); - } - else - { - ++nr_free; - sum_free += yG; - } - } - - rho = nr_free > 0 ? sum_free/nr_free : (ub + lb)*0.5; - r = 0; -} - - -bool -CvSVMSolver::select_working_set_nu_svm( int& out_i, int& out_j ) -{ - // return i,j which maximize -grad(f)^T d , under constraint - // if alpha_i == C, d != +1 - // if alpha_i == 0, d != -1 - double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = +1 } - int Gmax1_idx = -1; - - double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = -1 } - int Gmax2_idx = -1; - - double Gmax3 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = +1 } - int Gmax3_idx = -1; - - double Gmax4 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = -1 } - int Gmax4_idx = -1; - - int i; - - for( i = 0; i < alpha_count; i++ ) - { - double t; - - if( y[i] > 0 ) // y == +1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 - { - Gmax1 = t; - Gmax1_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 - { - Gmax2 = t; - Gmax2_idx = i; - } - } - else // y == -1 - { - if( !is_upper_bound(i) && (t = -G[i]) > Gmax3 ) // d = +1 - { - Gmax3 = t; - Gmax3_idx = i; - } - if( !is_lower_bound(i) && (t = G[i]) > Gmax4 ) // d = -1 - { - Gmax4 = t; - Gmax4_idx = i; - } - } - } - - if( MAX(Gmax1 + Gmax2, Gmax3 + Gmax4) < eps ) - return 1; - - if( Gmax1 + Gmax2 > Gmax3 + Gmax4 ) - { - out_i = Gmax1_idx; - out_j = Gmax2_idx; - } - else - { - out_i = Gmax3_idx; - out_j = Gmax4_idx; - } - return 0; -} - - -void -CvSVMSolver::calc_rho_nu_svm( double& rho, double& r ) -{ - int nr_free1 = 0, nr_free2 = 0; - double ub1 = DBL_MAX, ub2 = DBL_MAX; - double lb1 = -DBL_MAX, lb2 = -DBL_MAX; - double sum_free1 = 0, sum_free2 = 0; - double r1, r2; - - int i; - - for( i = 0; i < alpha_count; i++ ) - { - double G_i = G[i]; - if( y[i] > 0 ) - { - if( is_lower_bound(i) ) - ub1 = MIN( ub1, G_i ); - else if( is_upper_bound(i) ) - lb1 = MAX( lb1, G_i ); - else - { - ++nr_free1; - sum_free1 += G_i; - } - } - else - { - if( is_lower_bound(i) ) - ub2 = MIN( ub2, G_i ); - else if( is_upper_bound(i) ) - lb2 = MAX( lb2, G_i ); - else - { - ++nr_free2; - sum_free2 += G_i; - } - } - } - - r1 = nr_free1 > 0 ? sum_free1/nr_free1 : (ub1 + lb1)*0.5; - r2 = nr_free2 > 0 ? sum_free2/nr_free2 : (ub2 + lb2)*0.5; - - rho = (r1 - r2)*0.5; - r = (r1 + r2)*0.5; -} - - -/* -///////////////////////// construct and solve various formulations /////////////////////// -*/ - -bool CvSVMSolver::solve_c_svc( int _sample_count, int _var_count, const float** _samples, schar* _y, - double _Cp, double _Cn, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - - if( !create( _sample_count, _var_count, _samples, _y, _sample_count, - _alpha, _Cp, _Cn, _storage, _kernel, &CvSVMSolver::get_row_svc, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = 0; - b[i] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - alpha[i] *= y[i]; - - return true; -} - - -bool CvSVMSolver::solve_nu_svc( int _sample_count, int _var_count, const float** _samples, schar* _y, - CvMemStorage* _storage, CvSVMKernel* _kernel, - double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double sum_pos, sum_neg, inv_r; - - if( !create( _sample_count, _var_count, _samples, _y, _sample_count, - _alpha, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_svc, - &CvSVMSolver::select_working_set_nu_svm, &CvSVMSolver::calc_rho_nu_svm )) - return false; - - sum_pos = kernel->params->nu * sample_count * 0.5; - sum_neg = kernel->params->nu * sample_count * 0.5; - - for( i = 0; i < sample_count; i++ ) - { - if( y[i] > 0 ) - { - alpha[i] = MIN(1.0, sum_pos); - sum_pos -= alpha[i]; - } - else - { - alpha[i] = MIN(1.0, sum_neg); - sum_neg -= alpha[i]; - } - b[i] = 0; - } - - if( !solve_generic( _si )) - return false; - - inv_r = 1./_si.r; - - for( i = 0; i < sample_count; i++ ) - alpha[i] *= y[i]*inv_r; - - _si.rho *= inv_r; - _si.obj *= (inv_r*inv_r); - _si.upper_bound_p = inv_r; - _si.upper_bound_n = inv_r; - - return true; -} - - -bool CvSVMSolver::solve_one_class( int _sample_count, int _var_count, const float** _samples, - CvMemStorage* _storage, CvSVMKernel* _kernel, - double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i, n; - double nu = _kernel->params->nu; - - if( !create( _sample_count, _var_count, _samples, 0, _sample_count, - _alpha, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_one_class, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*sizeof(y[0]) ); - n = cvRound( nu*sample_count ); - - for( i = 0; i < sample_count; i++ ) - { - y[i] = 1; - b[i] = 0; - alpha[i] = i < n ? 1 : 0; - } - - if( n < sample_count ) - alpha[n] = nu * sample_count - n; - else - alpha[n-1] = nu * sample_count - (n-1); - - return solve_generic(_si); -} - - -bool CvSVMSolver::solve_eps_svr( int _sample_count, int _var_count, const float** _samples, - const float* _y, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double p = _kernel->params->p, kernel_param_c = _kernel->params->C; - - if( !create( _sample_count, _var_count, _samples, 0, - _sample_count*2, 0, kernel_param_c, kernel_param_c, _storage, _kernel, &CvSVMSolver::get_row_svr, - &CvSVMSolver::select_working_set, &CvSVMSolver::calc_rho )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*2*sizeof(y[0]) ); - alpha = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha[0]) ); - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = 0; - b[i] = p - _y[i]; - y[i] = 1; - - alpha[i+sample_count] = 0; - b[i+sample_count] = p + _y[i]; - y[i+sample_count] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - _alpha[i] = alpha[i] - alpha[i+sample_count]; - - return true; -} - - -bool CvSVMSolver::solve_nu_svr( int _sample_count, int _var_count, const float** _samples, - const float* _y, CvMemStorage* _storage, - CvSVMKernel* _kernel, double* _alpha, CvSVMSolutionInfo& _si ) -{ - int i; - double kernel_param_c = _kernel->params->C, sum; - - if( !create( _sample_count, _var_count, _samples, 0, - _sample_count*2, 0, 1., 1., _storage, _kernel, &CvSVMSolver::get_row_svr, - &CvSVMSolver::select_working_set_nu_svm, &CvSVMSolver::calc_rho_nu_svm )) - return false; - - y = (schar*)cvMemStorageAlloc( storage, sample_count*2*sizeof(y[0]) ); - alpha = (double*)cvMemStorageAlloc( storage, alpha_count*sizeof(alpha[0]) ); - sum = kernel_param_c * _kernel->params->nu * sample_count * 0.5; - - for( i = 0; i < sample_count; i++ ) - { - alpha[i] = alpha[i + sample_count] = MIN(sum, kernel_param_c); - sum -= alpha[i]; - - b[i] = -_y[i]; - y[i] = 1; - - b[i + sample_count] = _y[i]; - y[i + sample_count] = -1; - } - - if( !solve_generic( _si )) - return false; - - for( i = 0; i < sample_count; i++ ) - _alpha[i] = alpha[i] - alpha[i+sample_count]; - - return true; -} - - -////////////////////////////////////////////////////////////////////////////////////////// - -CvSVM::CvSVM() -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - clear(); -} - - -CvSVM::~CvSVM() -{ - clear(); -} - - -void CvSVM::clear() -{ - cvFree( &decision_func ); - cvReleaseMat( &class_labels ); - cvReleaseMat( &class_weights ); - cvReleaseMemStorage( &storage ); - cvReleaseMat( &var_idx ); - delete kernel; - delete solver; - kernel = 0; - solver = 0; - var_all = 0; - sv = 0; - sv_total = 0; -} - - -CvSVM::CvSVM( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params ) -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - train( _train_data, _responses, _var_idx, _sample_idx, _params ); -} - - -int CvSVM::get_support_vector_count() const -{ - return sv_total; -} - - -const float* CvSVM::get_support_vector(int i) const -{ - return sv && (unsigned)i < (unsigned)sv_total ? sv[i] : 0; -} - -bool CvSVM::set_params( const CvSVMParams& _params ) -{ - bool ok = false; - - CV_FUNCNAME( "CvSVM::set_params" ); - - __BEGIN__; - - int kernel_type, svm_type; - - params = _params; - - kernel_type = params.kernel_type; - svm_type = params.svm_type; - - if( kernel_type != LINEAR && kernel_type != POLY && - kernel_type != SIGMOID && kernel_type != RBF && - kernel_type != INTER && kernel_type != CHI2) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported kernel type" ); - - if( kernel_type == LINEAR ) - params.gamma = 1; - else if( params.gamma <= 0 ) - CV_ERROR( CV_StsOutOfRange, "gamma parameter of the kernel must be positive" ); - - if( kernel_type != SIGMOID && kernel_type != POLY ) - params.coef0 = 0; - else if( params.coef0 < 0 ) - CV_ERROR( CV_StsOutOfRange, "The kernel parameter must be positive or zero" ); - - if( kernel_type != POLY ) - params.degree = 0; - else if( params.degree <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The kernel parameter must be positive" ); - - if( svm_type != C_SVC && svm_type != NU_SVC && - svm_type != ONE_CLASS && svm_type != EPS_SVR && - svm_type != NU_SVR ) - CV_ERROR( CV_StsBadArg, "Unknown/unsupported SVM type" ); - - if( svm_type == ONE_CLASS || svm_type == NU_SVC ) - params.C = 0; - else if( params.C <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The parameter C must be positive" ); - - if( svm_type == C_SVC || svm_type == EPS_SVR ) - params.nu = 0; - else if( params.nu <= 0 || params.nu >= 1 ) - CV_ERROR( CV_StsOutOfRange, "The parameter nu must be between 0 and 1" ); - - if( svm_type != EPS_SVR ) - params.p = 0; - else if( params.p <= 0 ) - CV_ERROR( CV_StsOutOfRange, "The parameter p must be positive" ); - - if( svm_type != C_SVC ) - params.class_weights = 0; - - params.term_crit = cvCheckTermCriteria( params.term_crit, DBL_EPSILON, INT_MAX ); - params.term_crit.epsilon = MAX( params.term_crit.epsilon, DBL_EPSILON ); - ok = true; - - __END__; - - return ok; -} - - - -void CvSVM::create_kernel() -{ - kernel = new CvSVMKernel(¶ms,0); -} - - -void CvSVM::create_solver( ) -{ - solver = new CvSVMSolver; -} - - -// switching function -bool CvSVM::train1( int sample_count, int var_count, const float** samples, - const void* _responses, double Cp, double Cn, - CvMemStorage* _storage, double* alpha, double& rho ) -{ - bool ok = false; - - //CV_FUNCNAME( "CvSVM::train1" ); - - __BEGIN__; - - CvSVMSolutionInfo si; - int svm_type = params.svm_type; - - si.rho = 0; - - ok = svm_type == C_SVC ? solver->solve_c_svc( sample_count, var_count, samples, (schar*)_responses, - Cp, Cn, _storage, kernel, alpha, si ) : - svm_type == NU_SVC ? solver->solve_nu_svc( sample_count, var_count, samples, (schar*)_responses, - _storage, kernel, alpha, si ) : - svm_type == ONE_CLASS ? solver->solve_one_class( sample_count, var_count, samples, - _storage, kernel, alpha, si ) : - svm_type == EPS_SVR ? solver->solve_eps_svr( sample_count, var_count, samples, (float*)_responses, - _storage, kernel, alpha, si ) : - svm_type == NU_SVR ? solver->solve_nu_svr( sample_count, var_count, samples, (float*)_responses, - _storage, kernel, alpha, si ) : false; - - rho = si.rho; - - __END__; - - return ok; -} - - -bool CvSVM::do_train( int svm_type, int sample_count, int var_count, const float** samples, - const CvMat* responses, CvMemStorage* temp_storage, double* alpha ) -{ - bool ok = false; - - CV_FUNCNAME( "CvSVM::do_train" ); - - __BEGIN__; - - CvSVMDecisionFunc* df = 0; - const int sample_size = var_count*sizeof(samples[0][0]); - int i, j, k; - - cvClearMemStorage( storage ); - - if( svm_type == ONE_CLASS || svm_type == EPS_SVR || svm_type == NU_SVR ) - { - int sv_count = 0; - - CV_CALL( decision_func = df = - (CvSVMDecisionFunc*)cvAlloc( sizeof(df[0]) )); - - df->rho = 0; - if( !train1( sample_count, var_count, samples, svm_type == ONE_CLASS ? 0 : - responses->data.i, 0, 0, temp_storage, alpha, df->rho )) - EXIT; - - for( i = 0; i < sample_count; i++ ) - sv_count += fabs(alpha[i]) > 0; - - CV_Assert(sv_count != 0); - - sv_total = df->sv_count = sv_count; - CV_CALL( df->alpha = (double*)cvMemStorageAlloc( storage, sv_count*sizeof(df->alpha[0])) ); - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, sv_count*sizeof(sv[0]))); - - for( i = k = 0; i < sample_count; i++ ) - { - if( fabs(alpha[i]) > 0 ) - { - CV_CALL( sv[k] = (float*)cvMemStorageAlloc( storage, sample_size )); - memcpy( sv[k], samples[i], sample_size ); - df->alpha[k++] = alpha[i]; - } - } - } - else - { - int class_count = class_labels->cols; - int* sv_tab = 0; - const float** temp_samples = 0; - int* class_ranges = 0; - schar* temp_y = 0; - assert( svm_type == CvSVM::C_SVC || svm_type == CvSVM::NU_SVC ); - - if( svm_type == CvSVM::C_SVC && params.class_weights ) - { - const CvMat* cw = params.class_weights; - - if( !CV_IS_MAT(cw) || (cw->cols != 1 && cw->rows != 1) || - cw->rows + cw->cols - 1 != class_count || - (CV_MAT_TYPE(cw->type) != CV_32FC1 && CV_MAT_TYPE(cw->type) != CV_64FC1) ) - CV_ERROR( CV_StsBadArg, "params.class_weights must be 1d floating-point vector " - "containing as many elements as the number of classes" ); - - CV_CALL( class_weights = cvCreateMat( cw->rows, cw->cols, CV_64F )); - CV_CALL( cvConvert( cw, class_weights )); - CV_CALL( cvScale( class_weights, class_weights, params.C )); - } - - CV_CALL( decision_func = df = (CvSVMDecisionFunc*)cvAlloc( - (class_count*(class_count-1)/2)*sizeof(df[0]))); - - CV_CALL( sv_tab = (int*)cvMemStorageAlloc( temp_storage, sample_count*sizeof(sv_tab[0]) )); - memset( sv_tab, 0, sample_count*sizeof(sv_tab[0]) ); - CV_CALL( class_ranges = (int*)cvMemStorageAlloc( temp_storage, - (class_count + 1)*sizeof(class_ranges[0]))); - CV_CALL( temp_samples = (const float**)cvMemStorageAlloc( temp_storage, - sample_count*sizeof(temp_samples[0]))); - CV_CALL( temp_y = (schar*)cvMemStorageAlloc( temp_storage, sample_count)); - - class_ranges[class_count] = 0; - cvSortSamplesByClasses( samples, responses, class_ranges, 0 ); - //check that while cross-validation there were the samples from all the classes - if( class_ranges[class_count] <= 0 ) - CV_ERROR( CV_StsBadArg, "While cross-validation one or more of the classes have " - "been fell out of the sample. Try to enlarge " ); - - if( svm_type == NU_SVC ) - { - // check if nu is feasible - for(i = 0; i < class_count; i++ ) - { - int ci = class_ranges[i+1] - class_ranges[i]; - for( j = i+1; j< class_count; j++ ) - { - int cj = class_ranges[j+1] - class_ranges[j]; - if( params.nu*(ci + cj)*0.5 > MIN( ci, cj ) ) - { - // !!!TODO!!! add some diagnostic - EXIT; // exit immediately; will release the model and return NULL pointer - } - } - } - } - - // train n*(n-1)/2 classifiers - for( i = 0; i < class_count; i++ ) - { - for( j = i+1; j < class_count; j++, df++ ) - { - int si = class_ranges[i], ci = class_ranges[i+1] - si; - int sj = class_ranges[j], cj = class_ranges[j+1] - sj; - double Cp = params.C, Cn = Cp; - int k1 = 0, sv_count = 0; - - for( k = 0; k < ci; k++ ) - { - temp_samples[k] = samples[si + k]; - temp_y[k] = 1; - } - - for( k = 0; k < cj; k++ ) - { - temp_samples[ci + k] = samples[sj + k]; - temp_y[ci + k] = -1; - } - - if( class_weights ) - { - Cp = class_weights->data.db[i]; - Cn = class_weights->data.db[j]; - } - - if( !train1( ci + cj, var_count, temp_samples, temp_y, - Cp, Cn, temp_storage, alpha, df->rho )) - EXIT; - - for( k = 0; k < ci + cj; k++ ) - sv_count += fabs(alpha[k]) > 0; - - df->sv_count = sv_count; - - CV_CALL( df->alpha = (double*)cvMemStorageAlloc( temp_storage, - sv_count*sizeof(df->alpha[0]))); - CV_CALL( df->sv_index = (int*)cvMemStorageAlloc( temp_storage, - sv_count*sizeof(df->sv_index[0]))); - - for( k = 0; k < ci; k++ ) - { - if( fabs(alpha[k]) > 0 ) - { - sv_tab[si + k] = 1; - df->sv_index[k1] = si + k; - df->alpha[k1++] = alpha[k]; - } - } - - for( k = 0; k < cj; k++ ) - { - if( fabs(alpha[ci + k]) > 0 ) - { - sv_tab[sj + k] = 1; - df->sv_index[k1] = sj + k; - df->alpha[k1++] = alpha[ci + k]; - } - } - } - } - - // allocate support vectors and initialize sv_tab - for( i = 0, k = 0; i < sample_count; i++ ) - { - if( sv_tab[i] ) - sv_tab[i] = ++k; - } - - sv_total = k; - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, sv_total*sizeof(sv[0]))); - - for( i = 0, k = 0; i < sample_count; i++ ) - { - if( sv_tab[i] ) - { - CV_CALL( sv[k] = (float*)cvMemStorageAlloc( storage, sample_size )); - memcpy( sv[k], samples[i], sample_size ); - k++; - } - } - - df = (CvSVMDecisionFunc*)decision_func; - - // set sv pointers - for( i = 0; i < class_count; i++ ) - { - for( j = i+1; j < class_count; j++, df++ ) - { - for( k = 0; k < df->sv_count; k++ ) - { - df->sv_index[k] = sv_tab[df->sv_index[k]]-1; - assert( (unsigned)df->sv_index[k] < (unsigned)sv_total ); - } - } - } - } - - optimize_linear_svm(); - ok = true; - - __END__; - - return ok; -} - - -void CvSVM::optimize_linear_svm() -{ - // we optimize only linear SVM: compress all the support vectors into one. - if( params.kernel_type != LINEAR ) - return; - - int class_count = class_labels ? class_labels->cols : - params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - - int i, df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - CvSVMDecisionFunc* df = decision_func; - - for( i = 0; i < df_count; i++ ) - { - int sv_count = df[i].sv_count; - if( sv_count != 1 ) + case SVM::RBF: + calc_rbf(vcount, var_count, vecs, another, results); break; - } - - // if every decision functions uses a single support vector; - // it's already compressed. skip it then. - if( i == df_count ) - return; - - int var_count = get_var_count(); - cv::AutoBuffer vbuf(var_count); - double* v = vbuf; - float** new_sv = (float**)cvMemStorageAlloc(storage, df_count*sizeof(new_sv[0])); - - for( i = 0; i < df_count; i++ ) - { - new_sv[i] = (float*)cvMemStorageAlloc(storage, var_count*sizeof(new_sv[i][0])); - float* dst = new_sv[i]; - memset(v, 0, var_count*sizeof(v[0])); - int j, k, sv_count = df[i].sv_count; - for( j = 0; j < sv_count; j++ ) - { - const float* src = class_count > 1 && df[i].sv_index ? sv[df[i].sv_index[j]] : sv[j]; - double a = df[i].alpha[j]; - for( k = 0; k < var_count; k++ ) - v[k] += src[k]*a; + case SVM::POLY: + calc_poly(vcount, var_count, vecs, another, results); + break; + case SVM::SIGMOID: + calc_sigmoid(vcount, var_count, vecs, another, results); + break; + case SVM::CHI2: + calc_chi2(vcount, var_count, vecs, another, results); + break; + case SVM::INTER: + calc_intersec(vcount, var_count, vecs, another, results); + break; + default: + CV_Error(CV_StsBadArg, "Unknown kernel type"); + } + const Qfloat max_val = (Qfloat)(FLT_MAX*1e-3); + for( int j = 0; j < vcount; j++ ) + { + if( results[j] > max_val ) + results[j] = max_val; } - for( k = 0; k < var_count; k++ ) - dst[k] = (float)v[k]; - df[i].sv_count = 1; - df[i].alpha[0] = 1.; - if( class_count > 1 && df[i].sv_index ) - df[i].sv_index[0] = i; } - sv = new_sv; - sv_total = df_count; -} - - -bool CvSVM::train( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params ) -{ - bool ok = false; - CvMat* responses = 0; - CvMemStorage* temp_storage = 0; - const float** samples = 0; - - CV_FUNCNAME( "CvSVM::train" ); - - __BEGIN__; - - int svm_type, sample_count, var_count, sample_size; - int block_size = 1 << 16; - double* alpha; - - clear(); - CV_CALL( set_params( _params )); - - svm_type = _params.svm_type; - - /* Prepare training data and related parameters */ - CV_CALL( cvPrepareTrainData( "CvSVM::train", _train_data, CV_ROW_SAMPLE, - svm_type != CvSVM::ONE_CLASS ? _responses : 0, - svm_type == CvSVM::C_SVC || - svm_type == CvSVM::NU_SVC ? CV_VAR_CATEGORICAL : - CV_VAR_ORDERED, _var_idx, _sample_idx, - false, &samples, &sample_count, &var_count, &var_all, - &responses, &class_labels, &var_idx )); - - - sample_size = var_count*sizeof(samples[0][0]); - - // make the storage block size large enough to fit all - // the temporary vectors and output support vectors. - block_size = MAX( block_size, sample_count*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sample_count*2*(int)sizeof(double) + 1024 ); - block_size = MAX( block_size, sample_size*2 + 1024 ); - - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL( temp_storage = cvCreateChildMemStorage(storage)); - CV_CALL( alpha = (double*)cvMemStorageAlloc(temp_storage, sample_count*sizeof(double))); - - create_kernel(); - create_solver(); - - if( !do_train( svm_type, sample_count, var_count, samples, responses, temp_storage, alpha )) - EXIT; - - ok = true; // model has been trained succesfully - - __END__; - - delete solver; - solver = 0; - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses ); - cvFree( &samples ); - - if( cvGetErrStatus() < 0 || !ok ) - clear(); - - return ok; -} - -struct indexedratio -{ - double val; - int ind; - int count_smallest, count_biggest; - void eval() { val = (double) count_smallest/(count_smallest+count_biggest); } + SVM::Params params; }; -static int CV_CDECL -icvCmpIndexedratio( const void* a, const void* b ) + + +///////////////////////////////////////////////////////////////////////// + +static void sortSamplesByClasses( const Mat& _samples, const Mat& _responses, + vector& sidx_all, vector& class_ranges ) { - return ((const indexedratio*)a)->val < ((const indexedratio*)b)->val ? -1 - : ((const indexedratio*)a)->val > ((const indexedratio*)b)->val ? 1 - : 0; + int i, nsamples = _samples.rows; + CV_Assert( _responses.isContinuous() && _responses.checkVector(1, CV_32S) == nsamples ); + + setRangeVector(sidx_all, nsamples); + + const int* rptr = _responses.ptr(); + std::sort(sidx_all.begin(), sidx_all.end(), cmp_lt_idx(rptr)); + class_ranges.clear(); + class_ranges.push_back(0); + + for( i = 0; i < nsamples; i++ ) + { + if( i == nsamples-1 || rptr[sidx_all[i]] != rptr[sidx_all[i+1]] ) + class_ranges.push_back(i+1); + } } -bool CvSVM::train_auto( const CvMat* _train_data, const CvMat* _responses, - const CvMat* _var_idx, const CvMat* _sample_idx, CvSVMParams _params, int k_fold, - CvParamGrid C_grid, CvParamGrid gamma_grid, CvParamGrid p_grid, - CvParamGrid nu_grid, CvParamGrid coef_grid, CvParamGrid degree_grid, - bool balanced) +//////////////////////// SVM implementation ////////////////////////////// + +ParamGrid SVM::getDefaultGrid( int param_id ) { - bool ok = false; - CvMat* responses = 0; - CvMat* responses_local = 0; - CvMemStorage* temp_storage = 0; - const float** samples = 0; - const float** samples_local = 0; - - CV_FUNCNAME( "CvSVM::train_auto" ); - __BEGIN__; - - int svm_type, sample_count, var_count, sample_size; - int block_size = 1 << 16; - double* alpha; - RNG* rng = &theRNG(); - - // all steps are logarithmic and must be > 1 - double degree_step = 10, g_step = 10, coef_step = 10, C_step = 10, nu_step = 10, p_step = 10; - double gamma = 0, curr_c = 0, degree = 0, coef = 0, p = 0, nu = 0; - double best_degree = 0, best_gamma = 0, best_coef = 0, best_C = 0, best_nu = 0, best_p = 0; - float min_error = FLT_MAX, error; - - if( _params.svm_type == CvSVM::ONE_CLASS ) + ParamGrid grid; + if( param_id == SVM::C ) { - if(!train( _train_data, _responses, _var_idx, _sample_idx, _params )) - EXIT; + grid.minVal = 0.1; + grid.maxVal = 500; + grid.logStep = 5; // total iterations = 5 + } + else if( param_id == SVM::GAMMA ) + { + grid.minVal = 1e-5; + grid.maxVal = 0.6; + grid.logStep = 15; // total iterations = 4 + } + else if( param_id == SVM::P ) + { + grid.minVal = 0.01; + grid.maxVal = 100; + grid.logStep = 7; // total iterations = 4 + } + else if( param_id == SVM::NU ) + { + grid.minVal = 0.01; + grid.maxVal = 0.2; + grid.logStep = 3; // total iterations = 3 + } + else if( param_id == SVM::COEF ) + { + grid.minVal = 0.1; + grid.maxVal = 300; + grid.logStep = 14; // total iterations = 3 + } + else if( param_id == SVM::DEGREE ) + { + grid.minVal = 0.01; + grid.maxVal = 4; + grid.logStep = 7; // total iterations = 3 + } + else + cvError( CV_StsBadArg, "SVM::getDefaultGrid", "Invalid type of parameter " + "(use one of SVM::C, SVM::GAMMA et al.)", __FILE__, __LINE__ ); + return grid; +} + + +class SVMImpl : public SVM +{ +public: + struct DecisionFunc + { + DecisionFunc(double _rho, int _ofs) : rho(_rho), ofs(_ofs) {} + DecisionFunc() : rho(0.), ofs(0) {} + double rho; + int ofs; + }; + + // Generalized SMO+SVMlight algorithm + // Solves: + // + // min [0.5(\alpha^T Q \alpha) + b^T \alpha] + // + // y^T \alpha = \delta + // y_i = +1 or -1 + // 0 <= alpha_i <= Cp for y_i = 1 + // 0 <= alpha_i <= Cn for y_i = -1 + // + // Given: + // + // Q, b, y, Cp, Cn, and an initial feasible point \alpha + // l is the size of vectors and matrices + // eps is the stopping criterion + // + // solution will be put in \alpha, objective value will be put in obj + // + class Solver + { + public: + enum { MIN_CACHE_SIZE = (40 << 20) /* 40Mb */, MAX_CACHE_SIZE = (500 << 20) /* 500Mb */ }; + + typedef bool (Solver::*SelectWorkingSet)( int& i, int& j ); + typedef Qfloat* (Solver::*GetRow)( int i, Qfloat* row, Qfloat* dst, bool existed ); + typedef void (Solver::*CalcRho)( double& rho, double& r ); + + struct KernelRow + { + KernelRow() { idx = -1; prev = next = 0; } + KernelRow(int _idx, int _prev, int _next) : idx(_idx), prev(_prev), next(_next) {} + int idx; + int prev; + int next; + }; + + struct SolutionInfo + { + SolutionInfo() { obj = rho = upper_bound_p = upper_bound_n = r = 0; } + double obj; + double rho; + double upper_bound_p; + double upper_bound_n; + double r; // for Solver_NU + }; + + void clear() + { + alpha_vec = 0; + select_working_set_func = 0; + calc_rho_func = 0; + get_row_func = 0; + lru_cache.clear(); + } + + Solver( const Mat& _samples, const vector& _y, + vector& _alpha, const vector& _b, + double _Cp, double _Cn, + const Ptr& _kernel, GetRow _get_row, + SelectWorkingSet _select_working_set, CalcRho _calc_rho, + TermCriteria _termCrit ) + { + clear(); + + samples = _samples; + sample_count = samples.rows; + var_count = samples.cols; + + y_vec = _y; + alpha_vec = &_alpha; + alpha_count = (int)alpha_vec->size(); + b_vec = _b; + kernel = _kernel; + + C[0] = _Cn; + C[1] = _Cp; + eps = _termCrit.epsilon; + max_iter = _termCrit.maxCount; + + G_vec.resize(alpha_count); + alpha_status_vec.resize(alpha_count); + buf[0].resize(sample_count*2); + buf[1].resize(sample_count*2); + + select_working_set_func = _select_working_set; + CV_Assert(select_working_set_func != 0); + + calc_rho_func = _calc_rho; + CV_Assert(calc_rho_func != 0); + + get_row_func = _get_row; + CV_Assert(get_row_func != 0); + + // assume that for large training sets ~25% of Q matrix is used + int64 csize = (int64)sample_count*sample_count/4; + csize = std::max(csize, (int64)(MIN_CACHE_SIZE/sizeof(Qfloat)) ); + csize = std::min(csize, (int64)(MAX_CACHE_SIZE/sizeof(Qfloat)) ); + max_cache_size = (int)((csize + sample_count-1)/sample_count); + max_cache_size = std::min(std::max(max_cache_size, 1), sample_count); + cache_size = 0; + + lru_cache.clear(); + lru_cache.resize(sample_count+1, KernelRow(-1, 0, 0)); + lru_first = lru_last = 0; + lru_cache_data.create(max_cache_size, sample_count, QFLOAT_TYPE); + } + + Qfloat* get_row_base( int i, bool* _existed ) + { + int i1 = i < sample_count ? i : i - sample_count; + KernelRow& kr = lru_cache[i1+1]; + if( _existed ) + *_existed = kr.idx >= 0; + if( kr.idx < 0 ) + { + if( cache_size < max_cache_size ) + { + kr.idx = cache_size; + cache_size++; + } + else + { + KernelRow& last = lru_cache[lru_last]; + kr.idx = last.idx; + last.idx = -1; + lru_cache[last.prev].next = 0; + lru_last = last.prev; + } + kernel->calc( sample_count, var_count, samples.ptr(), + samples.ptr(i1), lru_cache_data.ptr(kr.idx) ); + } + else + { + if( kr.next ) + lru_cache[kr.next].prev = kr.prev; + else + lru_last = kr.prev; + if( kr.prev ) + lru_cache[kr.prev].next = kr.next; + else + lru_first = kr.next; + } + kr.next = lru_first; + kr.prev = 0; + lru_first = i1+1; + + return lru_cache_data.ptr(kr.idx); + } + + Qfloat* get_row_svc( int i, Qfloat* row, Qfloat*, bool existed ) + { + if( !existed ) + { + const schar* _y = &y_vec[0]; + int j, len = sample_count; + + if( _y[i] > 0 ) + { + for( j = 0; j < len; j++ ) + row[j] = _y[j]*row[j]; + } + else + { + for( j = 0; j < len; j++ ) + row[j] = -_y[j]*row[j]; + } + } + return row; + } + + Qfloat* get_row_one_class( int, Qfloat* row, Qfloat*, bool ) + { + return row; + } + + Qfloat* get_row_svr( int i, Qfloat* row, Qfloat* dst, bool ) + { + int j, len = sample_count; + Qfloat* dst_pos = dst; + Qfloat* dst_neg = dst + len; + if( i >= len ) + std::swap(dst_pos, dst_neg); + + for( j = 0; j < len; j++ ) + { + Qfloat t = row[j]; + dst_pos[j] = t; + dst_neg[j] = -t; + } + return dst; + } + + Qfloat* get_row( int i, float* dst ) + { + bool existed = false; + float* row = get_row_base( i, &existed ); + return (this->*get_row_func)( i, row, dst, existed ); + } + + #undef is_upper_bound + #define is_upper_bound(i) (alpha_status[i] > 0) + + #undef is_lower_bound + #define is_lower_bound(i) (alpha_status[i] < 0) + + #undef is_free + #define is_free(i) (alpha_status[i] == 0) + + #undef get_C + #define get_C(i) (C[y[i]>0]) + + #undef update_alpha_status + #define update_alpha_status(i) \ + alpha_status[i] = (schar)(alpha[i] >= get_C(i) ? 1 : alpha[i] <= 0 ? -1 : 0) + + #undef reconstruct_gradient + #define reconstruct_gradient() /* empty for now */ + + bool solve_generic( SolutionInfo& si ) + { + const schar* y = &y_vec[0]; + double* alpha = &alpha_vec->at(0); + schar* alpha_status = &alpha_status_vec[0]; + double* G = &G_vec[0]; + double* b = &b_vec[0]; + + int iter = 0; + int i, j, k; + + // 1. initialize gradient and alpha status + for( i = 0; i < alpha_count; i++ ) + { + update_alpha_status(i); + G[i] = b[i]; + if( fabs(G[i]) > 1e200 ) + return false; + } + + for( i = 0; i < alpha_count; i++ ) + { + if( !is_lower_bound(i) ) + { + const Qfloat *Q_i = get_row( i, &buf[0][0] ); + double alpha_i = alpha[i]; + + for( j = 0; j < alpha_count; j++ ) + G[j] += alpha_i*Q_i[j]; + } + } + + // 2. optimization loop + for(;;) + { + const Qfloat *Q_i, *Q_j; + double C_i, C_j; + double old_alpha_i, old_alpha_j, alpha_i, alpha_j; + double delta_alpha_i, delta_alpha_j; + + #ifdef _DEBUG + for( i = 0; i < alpha_count; i++ ) + { + if( fabs(G[i]) > 1e+300 ) + return false; + + if( fabs(alpha[i]) > 1e16 ) + return false; + } + #endif + + if( (this->*select_working_set_func)( i, j ) != 0 || iter++ >= max_iter ) + break; + + Q_i = get_row( i, &buf[0][0] ); + Q_j = get_row( j, &buf[1][0] ); + + C_i = get_C(i); + C_j = get_C(j); + + alpha_i = old_alpha_i = alpha[i]; + alpha_j = old_alpha_j = alpha[j]; + + if( y[i] != y[j] ) + { + double denom = Q_i[i]+Q_j[j]+2*Q_i[j]; + double delta = (-G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); + double diff = alpha_i - alpha_j; + alpha_i += delta; + alpha_j += delta; + + if( diff > 0 && alpha_j < 0 ) + { + alpha_j = 0; + alpha_i = diff; + } + else if( diff <= 0 && alpha_i < 0 ) + { + alpha_i = 0; + alpha_j = -diff; + } + + if( diff > C_i - C_j && alpha_i > C_i ) + { + alpha_i = C_i; + alpha_j = C_i - diff; + } + else if( diff <= C_i - C_j && alpha_j > C_j ) + { + alpha_j = C_j; + alpha_i = C_j + diff; + } + } + else + { + double denom = Q_i[i]+Q_j[j]-2*Q_i[j]; + double delta = (G[i]-G[j])/MAX(fabs(denom),FLT_EPSILON); + double sum = alpha_i + alpha_j; + alpha_i -= delta; + alpha_j += delta; + + if( sum > C_i && alpha_i > C_i ) + { + alpha_i = C_i; + alpha_j = sum - C_i; + } + else if( sum <= C_i && alpha_j < 0) + { + alpha_j = 0; + alpha_i = sum; + } + + if( sum > C_j && alpha_j > C_j ) + { + alpha_j = C_j; + alpha_i = sum - C_j; + } + else if( sum <= C_j && alpha_i < 0 ) + { + alpha_i = 0; + alpha_j = sum; + } + } + + // update alpha + alpha[i] = alpha_i; + alpha[j] = alpha_j; + update_alpha_status(i); + update_alpha_status(j); + + // update G + delta_alpha_i = alpha_i - old_alpha_i; + delta_alpha_j = alpha_j - old_alpha_j; + + for( k = 0; k < alpha_count; k++ ) + G[k] += Q_i[k]*delta_alpha_i + Q_j[k]*delta_alpha_j; + } + + // calculate rho + (this->*calc_rho_func)( si.rho, si.r ); + + // calculate objective value + for( i = 0, si.obj = 0; i < alpha_count; i++ ) + si.obj += alpha[i] * (G[i] + b[i]); + + si.obj *= 0.5; + + si.upper_bound_p = C[1]; + si.upper_bound_n = C[0]; + + return true; + } + + // return 1 if already optimal, return 0 otherwise + bool select_working_set( int& out_i, int& out_j ) + { + // return i,j which maximize -grad(f)^T d , under constraint + // if alpha_i == C, d != +1 + // if alpha_i == 0, d != -1 + double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = +1 } + int Gmax1_idx = -1; + + double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i*d = -1 } + int Gmax2_idx = -1; + + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) + { + double t; + + if( y[i] > 0 ) // y = +1 + { + if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 + { + Gmax1 = t; + Gmax1_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 + { + Gmax2 = t; + Gmax2_idx = i; + } + } + else // y = -1 + { + if( !is_upper_bound(i) && (t = -G[i]) > Gmax2 ) // d = +1 + { + Gmax2 = t; + Gmax2_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax1 ) // d = -1 + { + Gmax1 = t; + Gmax1_idx = i; + } + } + } + + out_i = Gmax1_idx; + out_j = Gmax2_idx; + + return Gmax1 + Gmax2 < eps; + } + + void calc_rho( double& rho, double& r ) + { + int nr_free = 0; + double ub = DBL_MAX, lb = -DBL_MAX, sum_free = 0; + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) + { + double yG = y[i]*G[i]; + + if( is_lower_bound(i) ) + { + if( y[i] > 0 ) + ub = MIN(ub,yG); + else + lb = MAX(lb,yG); + } + else if( is_upper_bound(i) ) + { + if( y[i] < 0) + ub = MIN(ub,yG); + else + lb = MAX(lb,yG); + } + else + { + ++nr_free; + sum_free += yG; + } + } + + rho = nr_free > 0 ? sum_free/nr_free : (ub + lb)*0.5; + r = 0; + } + + bool select_working_set_nu_svm( int& out_i, int& out_j ) + { + // return i,j which maximize -grad(f)^T d , under constraint + // if alpha_i == C, d != +1 + // if alpha_i == 0, d != -1 + double Gmax1 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = +1 } + int Gmax1_idx = -1; + + double Gmax2 = -DBL_MAX; // max { -grad(f)_i * d | y_i = +1, d = -1 } + int Gmax2_idx = -1; + + double Gmax3 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = +1 } + int Gmax3_idx = -1; + + double Gmax4 = -DBL_MAX; // max { -grad(f)_i * d | y_i = -1, d = -1 } + int Gmax4_idx = -1; + + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) + { + double t; + + if( y[i] > 0 ) // y == +1 + { + if( !is_upper_bound(i) && (t = -G[i]) > Gmax1 ) // d = +1 + { + Gmax1 = t; + Gmax1_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax2 ) // d = -1 + { + Gmax2 = t; + Gmax2_idx = i; + } + } + else // y == -1 + { + if( !is_upper_bound(i) && (t = -G[i]) > Gmax3 ) // d = +1 + { + Gmax3 = t; + Gmax3_idx = i; + } + if( !is_lower_bound(i) && (t = G[i]) > Gmax4 ) // d = -1 + { + Gmax4 = t; + Gmax4_idx = i; + } + } + } + + if( MAX(Gmax1 + Gmax2, Gmax3 + Gmax4) < eps ) + return 1; + + if( Gmax1 + Gmax2 > Gmax3 + Gmax4 ) + { + out_i = Gmax1_idx; + out_j = Gmax2_idx; + } + else + { + out_i = Gmax3_idx; + out_j = Gmax4_idx; + } + return 0; + } + + void calc_rho_nu_svm( double& rho, double& r ) + { + int nr_free1 = 0, nr_free2 = 0; + double ub1 = DBL_MAX, ub2 = DBL_MAX; + double lb1 = -DBL_MAX, lb2 = -DBL_MAX; + double sum_free1 = 0, sum_free2 = 0; + + const schar* y = &y_vec[0]; + const schar* alpha_status = &alpha_status_vec[0]; + const double* G = &G_vec[0]; + + for( int i = 0; i < alpha_count; i++ ) + { + double G_i = G[i]; + if( y[i] > 0 ) + { + if( is_lower_bound(i) ) + ub1 = MIN( ub1, G_i ); + else if( is_upper_bound(i) ) + lb1 = MAX( lb1, G_i ); + else + { + ++nr_free1; + sum_free1 += G_i; + } + } + else + { + if( is_lower_bound(i) ) + ub2 = MIN( ub2, G_i ); + else if( is_upper_bound(i) ) + lb2 = MAX( lb2, G_i ); + else + { + ++nr_free2; + sum_free2 += G_i; + } + } + } + + double r1 = nr_free1 > 0 ? sum_free1/nr_free1 : (ub1 + lb1)*0.5; + double r2 = nr_free2 > 0 ? sum_free2/nr_free2 : (ub2 + lb2)*0.5; + + rho = (r1 - r2)*0.5; + r = (r1 + r2)*0.5; + } + + /* + ///////////////////////// construct and solve various formulations /////////////////////// + */ + static bool solve_c_svc( const Mat& _samples, const vector& _y, + double _Cp, double _Cn, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, TermCriteria termCrit ) + { + int sample_count = _samples.rows; + + _alpha.assign(sample_count, 0.); + vector _b(sample_count, -1.); + + Solver solver( _samples, _y, _alpha, _b, _Cp, _Cn, _kernel, + &Solver::get_row_svc, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); + + if( !solver.solve_generic( _si )) + return false; + + for( int i = 0; i < sample_count; i++ ) + _alpha[i] *= _y[i]; + + return true; + } + + + static bool solve_nu_svc( const Mat& _samples, const vector& _y, + double nu, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + + _alpha.resize(sample_count); + vector _b(sample_count, 0.); + + double sum_pos = nu * sample_count * 0.5; + double sum_neg = nu * sample_count * 0.5; + + for( int i = 0; i < sample_count; i++ ) + { + double a; + if( _y[i] > 0 ) + { + a = std::min(1.0, sum_pos); + sum_pos -= a; + } + else + { + a = std::min(1.0, sum_neg); + sum_neg -= a; + } + _alpha[i] = a; + } + + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_svc, + &Solver::select_working_set_nu_svm, + &Solver::calc_rho_nu_svm, + termCrit ); + + if( !solver.solve_generic( _si )) + return false; + + double inv_r = 1./_si.r; + + for( int i = 0; i < sample_count; i++ ) + _alpha[i] *= _y[i]*inv_r; + + _si.rho *= inv_r; + _si.obj *= (inv_r*inv_r); + _si.upper_bound_p = inv_r; + _si.upper_bound_n = inv_r; + + return true; + } + + static bool solve_one_class( const Mat& _samples, double nu, + const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + vector _y(sample_count, 1); + vector _b(sample_count, 0.); + + int i, n = cvRound( nu*sample_count ); + + _alpha.resize(sample_count); + for( i = 0; i < sample_count; i++ ) + _alpha[i] = i < n ? 1 : 0; + + if( n < sample_count ) + _alpha[n] = nu * sample_count - n; + else + _alpha[n-1] = nu * sample_count - (n-1); + + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_one_class, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); + + return solver.solve_generic(_si); + } + + static bool solve_eps_svr( const Mat& _samples, const vector& _yf, + double p, double C, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + int alpha_count = sample_count*2; + + CV_Assert( (int)_yf.size() == sample_count ); + + _alpha.assign(alpha_count, 0.); + vector _y(alpha_count); + vector _b(alpha_count); + + for( int i = 0; i < sample_count; i++ ) + { + _b[i] = p - _yf[i]; + _y[i] = 1; + + _b[i+sample_count] = p + _yf[i]; + _y[i+sample_count] = -1; + } + + Solver solver( _samples, _y, _alpha, _b, C, C, _kernel, + &Solver::get_row_svr, + &Solver::select_working_set, + &Solver::calc_rho, + termCrit ); + + if( !solver.solve_generic( _si )) + return false; + + for( int i = 0; i < sample_count; i++ ) + _alpha[i] -= _alpha[i+sample_count]; + + return true; + } + + + static bool solve_nu_svr( const Mat& _samples, const vector& _yf, + double nu, double C, const Ptr& _kernel, + vector& _alpha, SolutionInfo& _si, + TermCriteria termCrit ) + { + int sample_count = _samples.rows; + int alpha_count = sample_count*2; + double sum = C * nu * sample_count * 0.5; + + CV_Assert( (int)_yf.size() == sample_count ); + + _alpha.resize(alpha_count); + vector _y(alpha_count); + vector _b(alpha_count); + + for( int i = 0; i < sample_count; i++ ) + { + _alpha[i] = _alpha[i + sample_count] = std::min(sum, C); + sum -= _alpha[i]; + + _b[i] = -_yf[i]; + _y[i] = 1; + + _b[i + sample_count] = _yf[i]; + _y[i + sample_count] = -1; + } + + Solver solver( _samples, _y, _alpha, _b, 1., 1., _kernel, + &Solver::get_row_svr, + &Solver::select_working_set_nu_svm, + &Solver::calc_rho_nu_svm, + termCrit ); + + if( !solver.solve_generic( _si )) + return false; + + for( int i = 0; i < sample_count; i++ ) + _alpha[i] -= _alpha[i+sample_count]; + + return true; + } + + int sample_count; + int var_count; + int cache_size; + int max_cache_size; + Mat samples; + SVM::Params params; + vector lru_cache; + int lru_first; + int lru_last; + Mat lru_cache_data; + + int alpha_count; + + vector G_vec; + vector* alpha_vec; + vector y_vec; + // -1 - lower bound, 0 - free, 1 - upper bound + vector alpha_status_vec; + vector b_vec; + + vector buf[2]; + double eps; + int max_iter; + double C[2]; // C[0] == Cn, C[1] == Cp + Ptr kernel; + + SelectWorkingSet select_working_set_func; + CalcRho calc_rho_func; + GetRow get_row_func; + }; + + ////////////////////////////////////////////////////////////////////////////////////////// + SVMImpl() + { + clear(); + } + + ~SVMImpl() + { + clear(); + } + + void clear() + { + decision_func.clear(); + df_alpha.clear(); + df_index.clear(); + sv.release(); + } + + Mat getSupportVectors() const + { + return sv; + } + + void setParams( const Params& _params, const Ptr& _kernel ) + { + params = _params; + + int kernelType = params.kernelType; + int svmType = params.svmType; + + if( kernelType != LINEAR && kernelType != POLY && + kernelType != SIGMOID && kernelType != RBF && + kernelType != INTER && kernelType != CHI2) + CV_Error( CV_StsBadArg, "Unknown/unsupported kernel type" ); + + if( kernelType == LINEAR ) + params.gamma = 1; + else if( params.gamma <= 0 ) + CV_Error( CV_StsOutOfRange, "gamma parameter of the kernel must be positive" ); + + if( kernelType != SIGMOID && kernelType != POLY ) + params.coef0 = 0; + else if( params.coef0 < 0 ) + CV_Error( CV_StsOutOfRange, "The kernel parameter must be positive or zero" ); + + if( kernelType != POLY ) + params.degree = 0; + else if( params.degree <= 0 ) + CV_Error( CV_StsOutOfRange, "The kernel parameter must be positive" ); + + if( svmType != C_SVC && svmType != NU_SVC && + svmType != ONE_CLASS && svmType != EPS_SVR && + svmType != NU_SVR ) + CV_Error( CV_StsBadArg, "Unknown/unsupported SVM type" ); + + if( svmType == ONE_CLASS || svmType == NU_SVC ) + params.C = 0; + else if( params.C <= 0 ) + CV_Error( CV_StsOutOfRange, "The parameter C must be positive" ); + + if( svmType == C_SVC || svmType == EPS_SVR ) + params.nu = 0; + else if( params.nu <= 0 || params.nu >= 1 ) + CV_Error( CV_StsOutOfRange, "The parameter nu must be between 0 and 1" ); + + if( svmType != EPS_SVR ) + params.p = 0; + else if( params.p <= 0 ) + CV_Error( CV_StsOutOfRange, "The parameter p must be positive" ); + + if( svmType != C_SVC ) + params.classWeights.release(); + + termCrit = params.termCrit; + if( !(termCrit.type & TermCriteria::EPS) ) + termCrit.epsilon = DBL_EPSILON; + termCrit.epsilon = std::max(termCrit.epsilon, DBL_EPSILON); + if( !(termCrit.type & TermCriteria::COUNT) ) + termCrit.maxCount = INT_MAX; + termCrit.maxCount = std::max(termCrit.maxCount, 1); + + if( _kernel ) + kernel = _kernel; + else + kernel = makePtr(params); + } + + Params getParams() const + { + return params; + } + + Ptr getKernel() const + { + return kernel; + } + + int getSVCount(int i) const + { + return (i < (int)(decision_func.size()-1) ? decision_func[i+1].ofs : + (int)df_index.size()) - decision_func[i].ofs; + } + + bool do_train( const Mat& _samples, const Mat& _responses ) + { + int svmType = params.svmType; + int i, j, k, sample_count = _samples.rows; + vector _alpha; + Solver::SolutionInfo sinfo; + + CV_Assert( _samples.type() == CV_32F ); + var_count = _samples.cols; + + if( svmType == ONE_CLASS || svmType == EPS_SVR || svmType == NU_SVR ) + { + int sv_count = 0; + decision_func.clear(); + + vector _yf; + if( !_responses.empty() ) + _responses.convertTo(_yf, CV_32F); + + bool ok = + svmType == ONE_CLASS ? Solver::solve_one_class( _samples, params.nu, kernel, _alpha, sinfo, termCrit ) : + svmType == EPS_SVR ? Solver::solve_eps_svr( _samples, _yf, params.p, params.C, kernel, _alpha, sinfo, termCrit ) : + svmType == NU_SVR ? Solver::solve_nu_svr( _samples, _yf, params.nu, params.C, kernel, _alpha, sinfo, termCrit ) : false; + + if( !ok ) + return false; + + for( i = 0; i < sample_count; i++ ) + sv_count += fabs(_alpha[i]) > 0; + + CV_Assert(sv_count != 0); + + sv.create(sv_count, _samples.cols, CV_32F); + df_alpha.resize(sv_count); + df_index.resize(sv_count); + + for( i = k = 0; i < sample_count; i++ ) + { + if( std::abs(_alpha[i]) > 0 ) + { + _samples.row(i).copyTo(sv.row(k)); + df_alpha[k] = _alpha[i]; + df_index[k] = k; + k++; + } + } + + decision_func.push_back(DecisionFunc(sinfo.rho, 0)); + } + else + { + int class_count = (int)class_labels.total(); + vector svidx, sidx, sidx_all, sv_tab(sample_count, 0); + Mat temp_samples, class_weights; + vector class_ranges; + vector temp_y; + double nu = params.nu; + CV_Assert( svmType == C_SVC || svmType == NU_SVC ); + + if( svmType == C_SVC && !params.classWeights.empty() ) + { + const Mat cw = params.classWeights; + + if( (cw.cols != 1 && cw.rows != 1) || + (int)cw.total() != class_count || + (cw.type() != CV_32F && cw.type() != CV_64F) ) + CV_Error( CV_StsBadArg, "params.class_weights must be 1d floating-point vector " + "containing as many elements as the number of classes" ); + + cw.convertTo(class_weights, CV_64F, params.C); + //normalize(cw, class_weights, params.C, 0, NORM_L1, CV_64F); + } + + decision_func.clear(); + df_alpha.clear(); + df_index.clear(); + + sortSamplesByClasses( _samples, _responses, sidx_all, class_ranges ); + + //check that while cross-validation there were the samples from all the classes + if( class_ranges[class_count] <= 0 ) + CV_Error( CV_StsBadArg, "While cross-validation one or more of the classes have " + "been fell out of the sample. Try to enlarge " ); + + if( svmType == NU_SVC ) + { + // check if nu is feasible + for( i = 0; i < class_count; i++ ) + { + int ci = class_ranges[i+1] - class_ranges[i]; + for( j = i+1; j< class_count; j++ ) + { + int cj = class_ranges[j+1] - class_ranges[j]; + if( nu*(ci + cj)*0.5 > std::min( ci, cj ) ) + // TODO: add some diagnostic + return false; + } + } + } + + size_t samplesize = _samples.cols*_samples.elemSize(); + + // train n*(n-1)/2 classifiers + for( i = 0; i < class_count; i++ ) + { + for( j = i+1; j < class_count; j++ ) + { + int si = class_ranges[i], ci = class_ranges[i+1] - si; + int sj = class_ranges[j], cj = class_ranges[j+1] - sj; + double Cp = params.C, Cn = Cp; + + temp_samples.create(ci + cj, _samples.cols, _samples.type()); + sidx.resize(ci + cj); + temp_y.resize(ci + cj); + + // form input for the binary classification problem + for( k = 0; k < ci+cj; k++ ) + { + int idx = k < ci ? si+k : sj+k-ci; + memcpy(temp_samples.ptr(k), _samples.ptr(sidx_all[idx]), samplesize); + sidx[k] = sidx_all[idx]; + temp_y[k] = k < ci ? 1 : -1; + } + + if( !class_weights.empty() ) + { + Cp = class_weights.at(i); + Cn = class_weights.at(j); + } + + DecisionFunc df; + bool ok = params.svmType == C_SVC ? + Solver::solve_c_svc( temp_samples, temp_y, Cp, Cn, + kernel, _alpha, sinfo, termCrit ) : + params.svmType == NU_SVC ? + Solver::solve_nu_svc( temp_samples, temp_y, params.nu, + kernel, _alpha, sinfo, termCrit ) : + false; + if( !ok ) + return false; + df.rho = sinfo.rho; + df.ofs = (int)df_index.size(); + decision_func.push_back(df); + + for( k = 0; k < ci + cj; k++ ) + { + if( std::abs(_alpha[k]) > 0 ) + { + int idx = k < ci ? si+k : sj+k-ci; + sv_tab[sidx_all[idx]] = 1; + df_index.push_back(sidx_all[idx]); + df_alpha.push_back(_alpha[k]); + } + } + } + } + + // allocate support vectors and initialize sv_tab + for( i = 0, k = 0; i < sample_count; i++ ) + { + if( sv_tab[i] ) + sv_tab[i] = ++k; + } + + int sv_total = k; + sv.create(sv_total, _samples.cols, _samples.type()); + + for( i = 0; i < sample_count; i++ ) + { + if( !sv_tab[i] ) + continue; + memcpy(sv.ptr(sv_tab[i]-1), _samples.ptr(i), samplesize); + } + + // set sv pointers + int n = (int)df_index.size(); + for( i = 0; i < n; i++ ) + { + CV_Assert( sv_tab[df_index[i]] > 0 ); + df_index[i] = sv_tab[df_index[i]] - 1; + } + } + + optimize_linear_svm(); return true; } - clear(); - - if( k_fold < 2 ) - CV_ERROR( CV_StsBadArg, "Parameter must be > 1" ); - - CV_CALL(set_params( _params )); - svm_type = _params.svm_type; - - // All the parameters except, possibly, are positive. - // is nonnegative - if( C_grid.step <= 1 ) + void optimize_linear_svm() { - C_grid.min_val = C_grid.max_val = params.C; - C_grid.step = 10; - } - else - CV_CALL(C_grid.check()); + // we optimize only linear SVM: compress all the support vectors into one. + if( params.kernelType != LINEAR ) + return; - if( gamma_grid.step <= 1 ) - { - gamma_grid.min_val = gamma_grid.max_val = params.gamma; - gamma_grid.step = 10; - } - else - CV_CALL(gamma_grid.check()); + int i, df_count = (int)decision_func.size(); - if( p_grid.step <= 1 ) - { - p_grid.min_val = p_grid.max_val = params.p; - p_grid.step = 10; - } - else - CV_CALL(p_grid.check()); - - if( nu_grid.step <= 1 ) - { - nu_grid.min_val = nu_grid.max_val = params.nu; - nu_grid.step = 10; - } - else - CV_CALL(nu_grid.check()); - - if( coef_grid.step <= 1 ) - { - coef_grid.min_val = coef_grid.max_val = params.coef0; - coef_grid.step = 10; - } - else - CV_CALL(coef_grid.check()); - - if( degree_grid.step <= 1 ) - { - degree_grid.min_val = degree_grid.max_val = params.degree; - degree_grid.step = 10; - } - else - CV_CALL(degree_grid.check()); - - // these parameters are not used: - if( params.kernel_type != CvSVM::POLY ) - degree_grid.min_val = degree_grid.max_val = params.degree; - if( params.kernel_type == CvSVM::LINEAR ) - gamma_grid.min_val = gamma_grid.max_val = params.gamma; - if( params.kernel_type != CvSVM::POLY && params.kernel_type != CvSVM::SIGMOID ) - coef_grid.min_val = coef_grid.max_val = params.coef0; - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS ) - C_grid.min_val = C_grid.max_val = params.C; - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR ) - nu_grid.min_val = nu_grid.max_val = params.nu; - if( svm_type != CvSVM::EPS_SVR ) - p_grid.min_val = p_grid.max_val = params.p; - - CV_ASSERT( g_step > 1 && degree_step > 1 && coef_step > 1); - CV_ASSERT( p_step > 1 && C_step > 1 && nu_step > 1 ); - - /* Prepare training data and related parameters */ - CV_CALL(cvPrepareTrainData( "CvSVM::train_auto", _train_data, CV_ROW_SAMPLE, - svm_type != CvSVM::ONE_CLASS ? _responses : 0, - svm_type == CvSVM::C_SVC || - svm_type == CvSVM::NU_SVC ? CV_VAR_CATEGORICAL : - CV_VAR_ORDERED, _var_idx, _sample_idx, - false, &samples, &sample_count, &var_count, &var_all, - &responses, &class_labels, &var_idx )); - - sample_size = var_count*sizeof(samples[0][0]); - - // make the storage block size large enough to fit all - // the temporary vectors and output support vectors. - block_size = MAX( block_size, sample_count*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sample_count*2*(int)sizeof(double) + 1024 ); - block_size = MAX( block_size, sample_size*2 + 1024 ); - - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL(temp_storage = cvCreateChildMemStorage(storage)); - CV_CALL(alpha = (double*)cvMemStorageAlloc(temp_storage, sample_count*sizeof(double))); - - create_kernel(); - create_solver(); - - { - const int testset_size = sample_count/k_fold; - const int trainset_size = sample_count - testset_size; - const int last_testset_size = sample_count - testset_size*(k_fold-1); - const int last_trainset_size = sample_count - last_testset_size; - const bool is_regression = (svm_type == EPS_SVR) || (svm_type == NU_SVR); - - size_t resp_elem_size = CV_ELEM_SIZE(responses->type); - size_t size = 2*last_trainset_size*sizeof(samples[0]); - - samples_local = (const float**) cvAlloc( size ); - memset( samples_local, 0, size ); - - responses_local = cvCreateMat( 1, trainset_size, CV_MAT_TYPE(responses->type) ); - cvZero( responses_local ); - - // randomly permute samples and responses - for(int i = 0; i < sample_count; i++ ) - { - int i1 = (*rng)(sample_count); - int i2 = (*rng)(sample_count); - const float* temp; - float t; - int y; - - CV_SWAP( samples[i1], samples[i2], temp ); - if( is_regression ) - CV_SWAP( responses->data.fl[i1], responses->data.fl[i2], t ); - else - CV_SWAP( responses->data.i[i1], responses->data.i[i2], y ); - } - - if (!is_regression && class_labels->cols==2 && balanced) - { - // count class samples - int num_0=0,num_1=0; - for (int i=0; idata.i[i]==class_labels->data.i[0]) - ++num_0; - else - ++num_1; + if( getSVCount(i) != 1 ) + break; } - int label_smallest_class; - int label_biggest_class; - if (num_0 < num_1) + // if every decision functions uses a single support vector; + // it's already compressed. skip it then. + if( i == df_count ) + return; + + AutoBuffer vbuf(var_count); + double* v = vbuf; + Mat new_sv(df_count, var_count, CV_32F); + + vector new_df; + + for( i = 0; i < df_count; i++ ) { - label_biggest_class = class_labels->data.i[1]; - label_smallest_class = class_labels->data.i[0]; - } - else - { - label_biggest_class = class_labels->data.i[0]; - label_smallest_class = class_labels->data.i[1]; - int y; - CV_SWAP(num_0,num_1,y); - } - const double class_ratio = (double) num_0/sample_count; - // calculate class ratio of each fold - indexedratio *ratios=0; - ratios = (indexedratio*) cvAlloc(k_fold*sizeof(*ratios)); - for (int k=0, i_begin=0; k(i); + memset(v, 0, var_count*sizeof(v[0])); + int j, k, sv_count = getSVCount(i); + const DecisionFunc& df = decision_func[i]; + const int* sv_index = &df_index[df.ofs]; + const double* sv_alpha = &df_alpha[df.ofs]; + for( j = 0; j < sv_count; j++ ) { - if (responses->data.i[i]==label_smallest_class) - ++count0; - else - ++count1; + const float* src = sv.ptr(sv_index[j]); + double a = sv_alpha[j]; + for( k = 0; k < var_count; k++ ) + v[k] += src[k]*a; } - ratios[k].ind = k; - ratios[k].count_smallest = count0; - ratios[k].count_biggest = count1; - ratios[k].eval(); + for( k = 0; k < var_count; k++ ) + dst[k] = (float)v[k]; + new_df.push_back(DecisionFunc(df.rho, i)); } - // initial distance - qsort(ratios, k_fold, sizeof(ratios[0]), icvCmpIndexedratio); - double old_dist = 0.0; - for (int k=0; k 0.0) - { - if (ratios[0].count_biggest==0 || ratios[k_fold-1].count_smallest==0) - break; // we are not able to swap samples anymore - // what if we swap the samples, calculate the new distance - ratios[0].count_smallest++; - ratios[0].count_biggest--; - ratios[0].eval(); - ratios[k_fold-1].count_smallest--; - ratios[k_fold-1].count_biggest++; - ratios[k_fold-1].eval(); - qsort(ratios, k_fold, sizeof(ratios[0]), icvCmpIndexedratio); - new_dist = 0.0; - for (int k=0; kdata.i[i1]==label_biggest_class) - break; - } - // index of the smallest_class sample from the maximum ratio fold - int i2 = ratios[k_fold-1].ind * testset_size; - for ( ; i2data.i[i2]==label_smallest_class) - break; - } - // swap - const float* temp; - int y; - CV_SWAP( samples[i1], samples[i2], temp ); - CV_SWAP( responses->data.i[i1], responses->data.i[i2], y ); - old_dist = new_dist; - } - else - break; // does not improve, so break the loop - } - cvFree(&ratios); + + setRangeVector(df_index, df_count); + df_alpha.assign(df_count, 1.); + std::swap(sv, new_sv); + std::swap(decision_func, new_df); } - int* cls_lbls = class_labels ? class_labels->data.i : 0; - curr_c = C_grid.min_val; - do + bool train( const Ptr& data, int ) { - params.C = curr_c; - gamma = gamma_grid.min_val; - do - { - params.gamma = gamma; - p = p_grid.min_val; - do - { - params.p = p; - nu = nu_grid.min_val; - do - { - params.nu = nu; - coef = coef_grid.min_val; - do - { - params.coef0 = coef; - degree = degree_grid.min_val; - do - { - params.degree = degree; - - float** test_samples_ptr = (float**)samples; - uchar* true_resp = responses->data.ptr; - int test_size = testset_size; - int train_size = trainset_size; - - error = 0; - for(int k = 0; k < k_fold; k++ ) - { - memcpy( samples_local, samples, sizeof(samples[0])*test_size*k ); - memcpy( samples_local + test_size*k, test_samples_ptr + test_size, - sizeof(samples[0])*(sample_count - testset_size*(k+1)) ); - - memcpy( responses_local->data.ptr, responses->data.ptr, resp_elem_size*test_size*k ); - memcpy( responses_local->data.ptr + resp_elem_size*test_size*k, - true_resp + resp_elem_size*test_size, - resp_elem_size*(sample_count - testset_size*(k+1)) ); - - if( k == k_fold - 1 ) - { - test_size = last_testset_size; - train_size = last_trainset_size; - responses_local->cols = last_trainset_size; - } - - // Train SVM on samples - if( !do_train( svm_type, train_size, var_count, - (const float**)samples_local, responses_local, temp_storage, alpha ) ) - EXIT; - - // Compute test set error on samples - for(int i = 0; i < test_size; i++, true_resp += resp_elem_size, test_samples_ptr++ ) - { - float resp = predict( *test_samples_ptr, var_count ); - error += is_regression ? powf( resp - *(float*)true_resp, 2 ) - : ((int)resp != cls_lbls[*(int*)true_resp]); - } - } - if( min_error > error ) - { - min_error = error; - best_degree = degree; - best_gamma = gamma; - best_coef = coef; - best_C = curr_c; - best_nu = nu; - best_p = p; - } - degree *= degree_grid.step; - } - while( degree < degree_grid.max_val ); - coef *= coef_grid.step; - } - while( coef < coef_grid.max_val ); - nu *= nu_grid.step; - } - while( nu < nu_grid.max_val ); - p *= p_grid.step; - } - while( p < p_grid.max_val ); - gamma *= gamma_grid.step; - } - while( gamma < gamma_grid.max_val ); - curr_c *= C_grid.step; - } - while( curr_c < C_grid.max_val ); - } - - min_error /= (float) sample_count; - - params.C = best_C; - params.nu = best_nu; - params.p = best_p; - params.gamma = best_gamma; - params.degree = best_degree; - params.coef0 = best_coef; - - CV_CALL(ok = do_train( svm_type, sample_count, var_count, samples, responses, temp_storage, alpha )); - - __END__; - - delete solver; - solver = 0; - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses ); - cvReleaseMat( &responses_local ); - cvFree( &samples ); - cvFree( &samples_local ); - - if( cvGetErrStatus() < 0 || !ok ) clear(); - return ok; -} + int svmType = params.svmType; + Mat samples = data->getTrainSamples(); + Mat responses; -float CvSVM::predict( const float* row_sample, int row_len, bool returnDFVal ) const -{ - assert( kernel ); - assert( row_sample ); + if( svmType == C_SVC || svmType == NU_SVC ) + { + responses = data->getTrainNormCatResponses(); + if( responses.empty() ) + CV_Error(CV_StsBadArg, "in the case of classification problem the responses must be categorical; " + "either specify varType when creating TrainData, or pass integer responses"); + class_labels = data->getClassLabels(); + } + else + responses = data->getTrainResponses(); - int var_count = get_var_count(); - assert( row_len == var_count ); - (void)row_len; + if( !do_train( samples, responses )) + { + clear(); + return false; + } - int class_count = class_labels ? class_labels->cols : - params.svm_type == ONE_CLASS ? 1 : 0; - - float result = 0; - cv::AutoBuffer _buffer(sv_total + (class_count+1)*2); - float* buffer = _buffer; - - if( params.svm_type == EPS_SVR || - params.svm_type == NU_SVR || - params.svm_type == ONE_CLASS ) - { - CvSVMDecisionFunc* df = (CvSVMDecisionFunc*)decision_func; - int i, sv_count = df->sv_count; - double sum = -df->rho; - - kernel->calc( sv_count, var_count, (const float**)sv, row_sample, buffer ); - for( i = 0; i < sv_count; i++ ) - sum += buffer[i]*df->alpha[i]; - - result = params.svm_type == ONE_CLASS ? (float)(sum > 0) : (float)sum; + return true; } - else if( params.svm_type == C_SVC || - params.svm_type == NU_SVC ) + + bool trainAuto( const Ptr& data, int k_fold, + ParamGrid C_grid, ParamGrid gamma_grid, ParamGrid p_grid, + ParamGrid nu_grid, ParamGrid coef_grid, ParamGrid degree_grid, + bool balanced ) { - CvSVMDecisionFunc* df = (CvSVMDecisionFunc*)decision_func; - int* vote = (int*)(buffer + sv_total); + int svmType = params.svmType; + RNG rng((uint64)-1); + + if( svmType == ONE_CLASS ) + // current implementation of "auto" svm does not support the 1-class case. + return train( data, 0 ); + + clear(); + + CV_Assert( k_fold >= 2 ); + + // All the parameters except, possibly, are positive. + // is nonnegative + #define CHECK_GRID(grid, param) \ + if( grid.logStep <= 1 ) \ + { \ + grid.minVal = grid.maxVal = params.param; \ + grid.logStep = 10; \ + } \ + else \ + checkParamGrid(grid) + + CHECK_GRID(C_grid, C); + CHECK_GRID(gamma_grid, gamma); + CHECK_GRID(p_grid, p); + CHECK_GRID(nu_grid, nu); + CHECK_GRID(coef_grid, coef0); + CHECK_GRID(degree_grid, degree); + + // these parameters are not used: + if( params.kernelType != POLY ) + degree_grid.minVal = degree_grid.maxVal = params.degree; + if( params.kernelType == LINEAR ) + gamma_grid.minVal = gamma_grid.maxVal = params.gamma; + if( params.kernelType != POLY && params.kernelType != SIGMOID ) + coef_grid.minVal = coef_grid.maxVal = params.coef0; + if( svmType == NU_SVC || svmType == ONE_CLASS ) + C_grid.minVal = C_grid.maxVal = params.C; + if( svmType == C_SVC || svmType == EPS_SVR ) + nu_grid.minVal = nu_grid.maxVal = params.nu; + if( svmType != EPS_SVR ) + p_grid.minVal = p_grid.maxVal = params.p; + + Mat samples = data->getTrainSamples(); + Mat responses; + bool is_classification = false; + Mat class_labels0 = class_labels; + int class_count = (int)class_labels.total(); + + if( svmType == C_SVC || svmType == NU_SVC ) + { + responses = data->getTrainNormCatResponses(); + class_labels = data->getClassLabels(); + is_classification = true; + + vector temp_class_labels; + setRangeVector(temp_class_labels, class_count); + + // temporarily replace class labels with 0, 1, ..., NCLASSES-1 + Mat(temp_class_labels).copyTo(class_labels); + } + else + responses = data->getTrainResponses(); + + CV_Assert(samples.type() == CV_32F); + + int sample_count = samples.rows; + var_count = samples.cols; + size_t sample_size = var_count*samples.elemSize(); + + vector sidx; + setRangeVector(sidx, sample_count); + int i, j, k; - memset( vote, 0, class_count*sizeof(vote[0])); - kernel->calc( sv_total, var_count, (const float**)sv, row_sample, buffer ); - double sum = 0.; - - for( i = 0; i < class_count; i++ ) + // randomly permute training samples + for( i = 0; i < sample_count; i++ ) { - for( j = i+1; j < class_count; j++, df++ ) - { - sum = -df->rho; - int sv_count = df->sv_count; - for( k = 0; k < sv_count; k++ ) - sum += df->alpha[k]*buffer[df->sv_index[k]]; + int i1 = rng.uniform(0, sample_count); + int i2 = rng.uniform(0, sample_count); + std::swap(sidx[i1], sidx[i2]); + } - vote[sum > 0 ? i : j]++; + if( is_classification && class_count == 2 && balanced ) + { + // reshuffle the training set in such a way that + // instances of each class are divided more or less evenly + // between the k_fold parts. + vector sidx0, sidx1; + + for( i = 0; i < sample_count; i++ ) + { + if( responses.at(sidx[i]) == 0 ) + sidx0.push_back(sidx[i]); + else + sidx1.push_back(sidx[i]); + } + + int n0 = (int)sidx0.size(), n1 = (int)sidx1.size(); + int a0 = 0, a1 = 0; + sidx.clear(); + for( k = 0; k < k_fold; k++ ) + { + int b0 = ((k+1)*n0 + k_fold/2)/k_fold, b1 = ((k+1)*n1 + k_fold/2)/k_fold; + int a = (int)sidx.size(), b = a + (b0 - a0) + (b1 - a1); + for( i = a0; i < b0; i++ ) + sidx.push_back(sidx0[i]); + for( i = a1; i < b1; i++ ) + sidx.push_back(sidx1[i]); + for( i = 0; i < (b - a); i++ ) + { + int i1 = rng.uniform(a, b); + int i2 = rng.uniform(a, b); + std::swap(sidx[i1], sidx[i2]); + } + a0 = b0; a1 = b1; } } - for( i = 1, k = 0; i < class_count; i++ ) + int test_sample_count = (sample_count + k_fold/2)/k_fold; + int train_sample_count = sample_count - test_sample_count; + + Params best_params = params; + double min_error = FLT_MAX; + + int rtype = responses.type(); + + Mat temp_train_samples(train_sample_count, var_count, CV_32F); + Mat temp_test_samples(test_sample_count, var_count, CV_32F); + Mat temp_train_responses(train_sample_count, 1, rtype); + Mat temp_test_responses; + + #define FOR_IN_GRID(var, grid) \ + for( params.var = grid.minVal; params.var == grid.minVal || params.var < grid.maxVal; params.var *= grid.logStep ) + + FOR_IN_GRID(C, C_grid) + FOR_IN_GRID(gamma, gamma_grid) + FOR_IN_GRID(p, p_grid) + FOR_IN_GRID(nu, nu_grid) + FOR_IN_GRID(coef0, coef_grid) + FOR_IN_GRID(degree, degree_grid) { - if( vote[i] > vote[k] ) - k = i; + double error = 0; + for( k = 0; k < k_fold; k++ ) + { + int start = (k*sample_count + k_fold/2)/k_fold; + for( i = 0; i < train_sample_count; i++ ) + { + j = sidx[(i+start)%sample_count]; + memcpy(temp_train_samples.ptr(i), samples.ptr(j), sample_size); + if( is_classification ) + temp_train_responses.at(i) = responses.at(j); + else if( !responses.empty() ) + temp_train_responses.at(i) = responses.at(j); + } + + // Train SVM on samples + if( !do_train( temp_train_samples, temp_train_responses )) + continue; + + for( i = 0; i < test_sample_count; i++ ) + { + j = sidx[(i+start+train_sample_count) % sample_count]; + memcpy(temp_train_samples.ptr(i), samples.ptr(j), sample_size); + } + + predict(temp_test_samples, temp_test_responses, 0); + for( i = 0; i < test_sample_count; i++ ) + { + float val = temp_test_responses.at(i); + j = sidx[(i+start+train_sample_count) % sample_count]; + if( is_classification ) + error += (float)(val != responses.at(j)); + else + { + val -= responses.at(j); + error += val*val; + } + } + } + if( min_error > error ) + { + min_error = error; + best_params = params; + } } - result = returnDFVal && class_count == 2 ? (float)sum : (float)(class_labels->data.i[k]); - } - else - CV_Error( CV_StsBadArg, "INTERNAL ERROR: Unknown SVM type, " - "the SVM structure is probably corrupted" ); - return result; -} - -float CvSVM::predict( const CvMat* sample, bool returnDFVal ) const -{ - float result = 0; - float* row_sample = 0; - - CV_FUNCNAME( "CvSVM::predict" ); - - __BEGIN__; - - int class_count; - - if( !kernel ) - CV_ERROR( CV_StsBadArg, "The SVM should be trained first" ); - - class_count = class_labels ? class_labels->cols : - params.svm_type == ONE_CLASS ? 1 : 0; - - CV_CALL( cvPreparePredictData( sample, var_all, var_idx, - class_count, 0, &row_sample )); - result = predict( row_sample, get_var_count(), returnDFVal ); - - __END__; - - if( sample && (!CV_IS_MAT(sample) || sample->data.fl != row_sample) ) - cvFree( &row_sample ); - - return result; -} - -struct predict_body_svm : ParallelLoopBody { - predict_body_svm(const CvSVM* _pointer, float* _result, const CvMat* _samples, CvMat* _results, bool _returnDFVal) - { - pointer = _pointer; - result = _result; - samples = _samples; - results = _results; - returnDFVal = _returnDFVal; + params = best_params; + class_labels = class_labels0; + return do_train( samples, responses ); } - const CvSVM* pointer; - float* result; - const CvMat* samples; - CvMat* results; - bool returnDFVal; - - void operator()( const cv::Range& range ) const + struct PredictBody : ParallelLoopBody { - for(int i = range.start; i < range.end; i++ ) + PredictBody( const SVMImpl* _svm, const Mat& _samples, Mat& _results, bool _returnDFVal ) { - CvMat sample; - cvGetRow( samples, &sample, i ); - int r = (int)pointer->predict(&sample, returnDFVal); - if (results) - results->data.fl[i] = (float)r; - if (i == 0) - *result = (float)r; + svm = _svm; + results = &_results; + samples = &_samples; + returnDFVal = _returnDFVal; + } + + void operator()( const Range& range ) const + { + int svmType = svm->params.svmType; + int sv_total = svm->sv.rows; + int class_count = !svm->class_labels.empty() ? (int)svm->class_labels.total() : svmType == ONE_CLASS ? 1 : 0; + + AutoBuffer _buffer(sv_total + (class_count+1)*2); + float* buffer = _buffer; + + int i, j, dfi, k, si; + + if( svmType == EPS_SVR || svmType == NU_SVR || svmType == ONE_CLASS ) + { + for( si = range.start; si < range.end; si++ ) + { + const float* row_sample = samples->ptr(si); + svm->kernel->calc( sv_total, svm->var_count, svm->sv.ptr(), row_sample, buffer ); + + const SVMImpl::DecisionFunc* df = &svm->decision_func[0]; + double sum = -df->rho; + for( i = 0; i < sv_total; i++ ) + sum += buffer[i]*svm->df_alpha[i]; + float result = svm->params.svmType == ONE_CLASS && !returnDFVal ? (float)(sum > 0) : (float)sum; + results->at(si) = result; + } + } + else if( svmType == C_SVC || svmType == NU_SVC ) + { + int* vote = (int*)(buffer + sv_total); + + for( si = range.start; si < range.end; si++ ) + { + svm->kernel->calc( sv_total, svm->var_count, svm->sv.ptr(), + samples->ptr(si), buffer ); + double sum = 0.; + + memset( vote, 0, class_count*sizeof(vote[0])); + + for( i = dfi = 0; i < class_count; i++ ) + { + for( j = i+1; j < class_count; j++, dfi++ ) + { + const DecisionFunc& df = svm->decision_func[dfi]; + sum = -df.rho; + int sv_count = svm->getSVCount(dfi); + const double* alpha = &svm->df_alpha[df.ofs]; + const int* sv_index = &svm->df_index[df.ofs]; + for( k = 0; k < sv_count; k++ ) + sum += alpha[k]*buffer[sv_index[k]]; + + vote[sum > 0 ? i : j]++; + } + } + + for( i = 1, k = 0; i < class_count; i++ ) + { + if( vote[i] > vote[k] ) + k = i; + } + float result = returnDFVal && class_count == 2 ? + (float)sum : (float)(svm->class_labels.at(k)); + results->at(si) = result; + } + } + else + CV_Error( CV_StsBadArg, "INTERNAL ERROR: Unknown SVM type, " + "the SVM structure is probably corrupted" ); + } + + const SVMImpl* svm; + const Mat* samples; + Mat* results; + bool returnDFVal; + }; + + float predict( InputArray _samples, OutputArray _results, int flags ) const + { + float result = 0; + Mat samples = _samples.getMat(), results; + int nsamples = samples.rows; + bool returnDFVal = (flags & RAW_OUTPUT) != 0; + + CV_Assert( samples.cols == var_count && samples.type() == CV_32F ); + + if( _results.needed() ) + { + _results.create( nsamples, 1, samples.type() ); + results = _results.getMat(); + } + else + { + CV_Assert( nsamples == 1 ); + results = Mat(1, 1, CV_32F, &result); + } + + PredictBody invoker(this, samples, results, returnDFVal); + if( nsamples < 10 ) + invoker(Range(0, nsamples)); + else + parallel_for_(Range(0, nsamples), invoker); + return result; } + + double getDecisionFunction(int i, OutputArray _alpha, OutputArray _svidx ) const + { + CV_Assert( 0 <= i && i < (int)decision_func.size()); + const DecisionFunc& df = decision_func[i]; + int count = getSVCount(i); + Mat(1, count, CV_64F, (double*)&df_alpha[df.ofs]).copyTo(_alpha); + Mat(1, count, CV_32S, (int*)&df_index[df.ofs]).copyTo(_svidx); + return df.rho; } + + void write_params( FileStorage& fs ) const + { + int svmType = params.svmType; + int kernelType = params.kernelType; + + String svm_type_str = + svmType == C_SVC ? "C_SVC" : + svmType == NU_SVC ? "NU_SVC" : + svmType == ONE_CLASS ? "ONE_CLASS" : + svmType == EPS_SVR ? "EPS_SVR" : + svmType == NU_SVR ? "NU_SVR" : format("Uknown_%d", svmType); + String kernel_type_str = + kernelType == LINEAR ? "LINEAR" : + kernelType == POLY ? "POLY" : + kernelType == RBF ? "RBF" : + kernelType == SIGMOID ? "SIGMOID" : format("Unknown_%d", kernelType); + + fs << "svmType" << svm_type_str; + + // save kernel + fs << "kernel" << "{" << "type" << kernel_type_str; + + if( kernelType == POLY ) + fs << "degree" << params.degree; + + if( kernelType != LINEAR ) + fs << "gamma" << params.gamma; + + if( kernelType == POLY || kernelType == SIGMOID ) + fs << "coef0" << params.coef0; + + fs << "}"; + + if( svmType == C_SVC || svmType == EPS_SVR || svmType == NU_SVR ) + fs << "C" << params.C; + + if( svmType == NU_SVC || svmType == ONE_CLASS || svmType == NU_SVR ) + fs << "nu" << params.nu; + + if( svmType == EPS_SVR ) + fs << "p" << params.p; + + fs << "term_criteria" << "{:"; + if( params.termCrit.type & TermCriteria::EPS ) + fs << "epsilon" << params.termCrit.epsilon; + if( params.termCrit.type & TermCriteria::COUNT ) + fs << "iterations" << params.termCrit.maxCount; + fs << "}"; + } + + bool isTrained() const + { + return !sv.empty(); + } + + bool isClassifier() const + { + return params.svmType == C_SVC || params.svmType == NU_SVC || params.svmType == ONE_CLASS; + } + + int getVarCount() const + { + return var_count; + } + + String getDefaultModelName() const + { + return "opencv_ml_svm"; + } + + void write( FileStorage& fs ) const + { + int class_count = !class_labels.empty() ? (int)class_labels.total() : + params.svmType == ONE_CLASS ? 1 : 0; + if( !isTrained() ) + CV_Error( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); + + write_params( fs ); + + fs << "var_count" << var_count; + + if( class_count > 0 ) + { + fs << "class_count" << class_count; + + if( !class_labels.empty() ) + fs << "class_labels" << class_labels; + + if( !params.classWeights.empty() ) + fs << "class_weights" << params.classWeights; + } + + // write the joint collection of support vectors + int i, sv_total = sv.rows; + fs << "sv_total" << sv_total; + fs << "support_vectors" << "["; + for( i = 0; i < sv_total; i++ ) + { + fs << "[:"; + fs.writeRaw("f", sv.ptr(i), sv.cols*sv.elemSize()); + fs << "]"; + } + fs << "]"; + + // write decision functions + int df_count = (int)decision_func.size(); + + fs << "decision_functions" << "["; + for( i = 0; i < df_count; i++ ) + { + const DecisionFunc& df = decision_func[i]; + int sv_count = getSVCount(i); + fs << "{" << "sv_count" << sv_count + << "rho" << df.rho + << "alpha" << "[:"; + fs.writeRaw("d", (const uchar*)&df_alpha[df.ofs], sv_count*sizeof(df_alpha[0])); + fs << "]"; + if( class_count > 2 ) + { + fs << "index" << "[:"; + fs.writeRaw("i", (const uchar*)&df_index[df.ofs], sv_count*sizeof(df_index[0])); + fs << "]"; + } + else + CV_Assert( sv_count == sv_total ); + fs << "}"; + } + fs << "]"; + } + + void read_params( const FileNode& fn ) + { + Params _params; + + String svm_type_str = (String)fn["svmType"]; + int svmType = + svm_type_str == "C_SVC" ? C_SVC : + svm_type_str == "NU_SVC" ? NU_SVC : + svm_type_str == "ONE_CLASS" ? ONE_CLASS : + svm_type_str == "EPS_SVR" ? EPS_SVR : + svm_type_str == "NU_SVR" ? NU_SVR : -1; + + if( svmType < 0 ) + CV_Error( CV_StsParseError, "Missing of invalid SVM type" ); + + FileNode kernel_node = fn["kernel"]; + if( kernel_node.empty() ) + CV_Error( CV_StsParseError, "SVM kernel tag is not found" ); + + String kernel_type_str = (String)kernel_node["type"]; + int kernelType = + kernel_type_str == "LINEAR" ? LINEAR : + kernel_type_str == "POLY" ? POLY : + kernel_type_str == "RBF" ? RBF : + kernel_type_str == "SIGMOID" ? SIGMOID : -1; + + if( kernelType < 0 ) + CV_Error( CV_StsParseError, "Missing of invalid SVM kernel type" ); + + _params.svmType = svmType; + _params.kernelType = kernelType; + _params.degree = (double)kernel_node["degree"]; + _params.gamma = (double)kernel_node["gamma"]; + _params.coef0 = (double)kernel_node["coef0"]; + + _params.C = (double)fn["C"]; + _params.nu = (double)fn["nu"]; + _params.p = (double)fn["p"]; + _params.classWeights = Mat(); + + FileNode tcnode = fn["term_criteria"]; + if( !tcnode.empty() ) + { + _params.termCrit.epsilon = (double)tcnode["epsilon"]; + _params.termCrit.maxCount = (int)tcnode["iterations"]; + _params.termCrit.type = (_params.termCrit.epsilon > 0 ? TermCriteria::EPS : 0) + + (_params.termCrit.maxCount > 0 ? TermCriteria::COUNT : 0); + } + else + _params.termCrit = TermCriteria( TermCriteria::EPS + TermCriteria::COUNT, 1000, FLT_EPSILON ); + + setParams( _params, Ptr() ); + } + + void read( const FileNode& fn ) + { + clear(); + + // read SVM parameters + read_params( fn ); + + // and top-level data + int i, sv_total = (int)fn["sv_total"]; + var_count = (int)fn["var_count"]; + int class_count = (int)fn["class_count"]; + + if( sv_total <= 0 || var_count <= 0 ) + CV_Error( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); + + FileNode m = fn["class_labels"]; + if( !m.empty() ) + m >> class_labels; + m = fn["class_weights"]; + if( !m.empty() ) + m >> params.classWeights; + + if( class_count > 1 && (class_labels.empty() || (int)class_labels.total() != class_count)) + CV_Error( CV_StsParseError, "Array of class labels is missing or invalid" ); + + // read support vectors + FileNode sv_node = fn["support_vectors"]; + + CV_Assert((int)sv_node.size() == sv_total); + sv.create(sv_total, var_count, CV_32F); + + FileNodeIterator sv_it = sv_node.begin(); + for( i = 0; i < sv_total; i++, ++sv_it ) + { + (*sv_it).readRaw("f", sv.ptr(i), var_count*sv.elemSize()); + } + + // read decision functions + int df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; + FileNode df_node = fn["decision_functions"]; + + CV_Assert((int)df_node.size() == df_count); + + FileNodeIterator df_it = df_node.begin(); + for( i = 0; i < df_count; i++, ++df_it ) + { + FileNode dfi = *df_it; + DecisionFunc df; + int sv_count = (int)dfi["sv_count"]; + int ofs = (int)df_index.size(); + df.rho = (double)dfi["rho"]; + df.ofs = ofs; + df_index.resize(ofs + sv_count); + df_alpha.resize(ofs + sv_count); + dfi["alpha"].readRaw("d", (uchar*)&df_alpha[ofs], sv_count*sizeof(df_alpha[0])); + if( class_count > 2 ) + dfi["index"].readRaw("i", (uchar*)&df_index[ofs], sv_count*sizeof(df_index[0])); + decision_func.push_back(df); + } + if( class_count <= 2 ) + setRangeVector(df_index, sv_total); + if( (int)fn["optimize_linear"] != 0 ) + optimize_linear_svm(); + } + + Params params; + TermCriteria termCrit; + Mat class_labels; + int var_count; + Mat sv; + vector decision_func; + vector df_alpha; + vector df_index; + + Ptr kernel; }; -float CvSVM::predict(const CvMat* samples, CV_OUT CvMat* results, bool returnDFVal) const + +Ptr SVM::create(const Params& params, const Ptr& kernel) { - float result = 0; - cv::parallel_for_(cv::Range(0, samples->rows), - predict_body_svm(this, &result, samples, results, returnDFVal) - ); - return result; + Ptr p = makePtr(); + p->setParams(params, kernel); + return p; } -void CvSVM::predict( cv::InputArray _samples, cv::OutputArray _results ) const -{ - _results.create(_samples.size().height, 1, CV_32F); - CvMat samples = _samples.getMat(), results = _results.getMat(); - predict(&samples, &results); } - -CvSVM::CvSVM( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params ) -{ - decision_func = 0; - class_labels = 0; - class_weights = 0; - storage = 0; - var_idx = 0; - kernel = 0; - solver = 0; - default_model_name = "my_svm"; - - train( _train_data, _responses, _var_idx, _sample_idx, _params ); } -bool CvSVM::train( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train(&tdata, &responses, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, _params); -} - - -bool CvSVM::train_auto( const Mat& _train_data, const Mat& _responses, - const Mat& _var_idx, const Mat& _sample_idx, CvSVMParams _params, int k_fold, - CvParamGrid C_grid, CvParamGrid gamma_grid, CvParamGrid p_grid, - CvParamGrid nu_grid, CvParamGrid coef_grid, CvParamGrid degree_grid, bool balanced ) -{ - CvMat tdata = _train_data, responses = _responses, vidx = _var_idx, sidx = _sample_idx; - return train_auto(&tdata, &responses, vidx.data.ptr ? &vidx : 0, - sidx.data.ptr ? &sidx : 0, _params, k_fold, C_grid, gamma_grid, p_grid, - nu_grid, coef_grid, degree_grid, balanced); -} - -float CvSVM::predict( const Mat& _sample, bool returnDFVal ) const -{ - CvMat sample = _sample; - return predict(&sample, returnDFVal); -} - - -void CvSVM::write_params( CvFileStorage* fs ) const -{ - //CV_FUNCNAME( "CvSVM::write_params" ); - - __BEGIN__; - - int svm_type = params.svm_type; - int kernel_type = params.kernel_type; - - const char* svm_type_str = - svm_type == CvSVM::C_SVC ? "C_SVC" : - svm_type == CvSVM::NU_SVC ? "NU_SVC" : - svm_type == CvSVM::ONE_CLASS ? "ONE_CLASS" : - svm_type == CvSVM::EPS_SVR ? "EPS_SVR" : - svm_type == CvSVM::NU_SVR ? "NU_SVR" : 0; - const char* kernel_type_str = - kernel_type == CvSVM::LINEAR ? "LINEAR" : - kernel_type == CvSVM::POLY ? "POLY" : - kernel_type == CvSVM::RBF ? "RBF" : - kernel_type == CvSVM::SIGMOID ? "SIGMOID" : 0; - - if( svm_type_str ) - cvWriteString( fs, "svm_type", svm_type_str ); - else - cvWriteInt( fs, "svm_type", svm_type ); - - // save kernel - cvStartWriteStruct( fs, "kernel", CV_NODE_MAP + CV_NODE_FLOW ); - - if( kernel_type_str ) - cvWriteString( fs, "type", kernel_type_str ); - else - cvWriteInt( fs, "type", kernel_type ); - - if( kernel_type == CvSVM::POLY || !kernel_type_str ) - cvWriteReal( fs, "degree", params.degree ); - - if( kernel_type != CvSVM::LINEAR || !kernel_type_str ) - cvWriteReal( fs, "gamma", params.gamma ); - - if( kernel_type == CvSVM::POLY || kernel_type == CvSVM::SIGMOID || !kernel_type_str ) - cvWriteReal( fs, "coef0", params.coef0 ); - - cvEndWriteStruct(fs); - - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR || - svm_type == CvSVM::NU_SVR || !svm_type_str ) - cvWriteReal( fs, "C", params.C ); - - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS || - svm_type == CvSVM::NU_SVR || !svm_type_str ) - cvWriteReal( fs, "nu", params.nu ); - - if( svm_type == CvSVM::EPS_SVR || !svm_type_str ) - cvWriteReal( fs, "p", params.p ); - - cvStartWriteStruct( fs, "term_criteria", CV_NODE_MAP + CV_NODE_FLOW ); - if( params.term_crit.type & CV_TERMCRIT_EPS ) - cvWriteReal( fs, "epsilon", params.term_crit.epsilon ); - if( params.term_crit.type & CV_TERMCRIT_ITER ) - cvWriteInt( fs, "iterations", params.term_crit.max_iter ); - cvEndWriteStruct( fs ); - - __END__; -} - - -static bool isSvmModelApplicable(int sv_total, int var_all, int var_count, int class_count) -{ - return (sv_total > 0 && var_count > 0 && var_count <= var_all && class_count >= 0); -} - - -void CvSVM::write( CvFileStorage* fs, const char* name ) const -{ - CV_FUNCNAME( "CvSVM::write" ); - - __BEGIN__; - - int i, var_count = get_var_count(), df_count; - int class_count = class_labels ? class_labels->cols : - params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - const CvSVMDecisionFunc* df = decision_func; - if( !isSvmModelApplicable(sv_total, var_all, var_count, class_count) ) - CV_ERROR( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_SVM ); - - write_params( fs ); - - cvWriteInt( fs, "var_all", var_all ); - cvWriteInt( fs, "var_count", var_count ); - - if( class_count ) - { - cvWriteInt( fs, "class_count", class_count ); - - if( class_labels ) - cvWrite( fs, "class_labels", class_labels ); - - if( class_weights ) - cvWrite( fs, "class_weights", class_weights ); - } - - if( var_idx ) - cvWrite( fs, "var_idx", var_idx ); - - // write the joint collection of support vectors - cvWriteInt( fs, "sv_total", sv_total ); - cvStartWriteStruct( fs, "support_vectors", CV_NODE_SEQ ); - for( i = 0; i < sv_total; i++ ) - { - cvStartWriteStruct( fs, 0, CV_NODE_SEQ + CV_NODE_FLOW ); - cvWriteRawData( fs, sv[i], var_count, "f" ); - cvEndWriteStruct( fs ); - } - - cvEndWriteStruct( fs ); - - // write decision functions - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - df = decision_func; - - cvStartWriteStruct( fs, "decision_functions", CV_NODE_SEQ ); - for( i = 0; i < df_count; i++ ) - { - int sv_count = df[i].sv_count; - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); - cvWriteInt( fs, "sv_count", sv_count ); - cvWriteReal( fs, "rho", df[i].rho ); - cvStartWriteStruct( fs, "alpha", CV_NODE_SEQ+CV_NODE_FLOW ); - cvWriteRawData( fs, df[i].alpha, df[i].sv_count, "d" ); - cvEndWriteStruct( fs ); - if( class_count > 1 ) - { - cvStartWriteStruct( fs, "index", CV_NODE_SEQ+CV_NODE_FLOW ); - cvWriteRawData( fs, df[i].sv_index, df[i].sv_count, "i" ); - cvEndWriteStruct( fs ); - } - else - CV_ASSERT( sv_count == sv_total ); - cvEndWriteStruct( fs ); - } - cvEndWriteStruct( fs ); - cvEndWriteStruct( fs ); - - __END__; -} - - -void CvSVM::read_params( CvFileStorage* fs, CvFileNode* svm_node ) -{ - CV_FUNCNAME( "CvSVM::read_params" ); - - __BEGIN__; - - int svm_type, kernel_type; - CvSVMParams _params; - - CvFileNode* tmp_node = cvGetFileNodeByName( fs, svm_node, "svm_type" ); - CvFileNode* kernel_node; - if( !tmp_node ) - CV_ERROR( CV_StsBadArg, "svm_type tag is not found" ); - - if( CV_NODE_TYPE(tmp_node->tag) == CV_NODE_INT ) - svm_type = cvReadInt( tmp_node, -1 ); - else - { - const char* svm_type_str = cvReadString( tmp_node, "" ); - svm_type = - strcmp( svm_type_str, "C_SVC" ) == 0 ? CvSVM::C_SVC : - strcmp( svm_type_str, "NU_SVC" ) == 0 ? CvSVM::NU_SVC : - strcmp( svm_type_str, "ONE_CLASS" ) == 0 ? CvSVM::ONE_CLASS : - strcmp( svm_type_str, "EPS_SVR" ) == 0 ? CvSVM::EPS_SVR : - strcmp( svm_type_str, "NU_SVR" ) == 0 ? CvSVM::NU_SVR : -1; - - if( svm_type < 0 ) - CV_ERROR( CV_StsParseError, "Missing of invalid SVM type" ); - } - - kernel_node = cvGetFileNodeByName( fs, svm_node, "kernel" ); - if( !kernel_node ) - CV_ERROR( CV_StsParseError, "SVM kernel tag is not found" ); - - tmp_node = cvGetFileNodeByName( fs, kernel_node, "type" ); - if( !tmp_node ) - CV_ERROR( CV_StsParseError, "SVM kernel type tag is not found" ); - - if( CV_NODE_TYPE(tmp_node->tag) == CV_NODE_INT ) - kernel_type = cvReadInt( tmp_node, -1 ); - else - { - const char* kernel_type_str = cvReadString( tmp_node, "" ); - kernel_type = - strcmp( kernel_type_str, "LINEAR" ) == 0 ? CvSVM::LINEAR : - strcmp( kernel_type_str, "POLY" ) == 0 ? CvSVM::POLY : - strcmp( kernel_type_str, "RBF" ) == 0 ? CvSVM::RBF : - strcmp( kernel_type_str, "SIGMOID" ) == 0 ? CvSVM::SIGMOID : -1; - - if( kernel_type < 0 ) - CV_ERROR( CV_StsParseError, "Missing of invalid SVM kernel type" ); - } - - _params.svm_type = svm_type; - _params.kernel_type = kernel_type; - _params.degree = cvReadRealByName( fs, kernel_node, "degree", 0 ); - _params.gamma = cvReadRealByName( fs, kernel_node, "gamma", 0 ); - _params.coef0 = cvReadRealByName( fs, kernel_node, "coef0", 0 ); - - _params.C = cvReadRealByName( fs, svm_node, "C", 0 ); - _params.nu = cvReadRealByName( fs, svm_node, "nu", 0 ); - _params.p = cvReadRealByName( fs, svm_node, "p", 0 ); - _params.class_weights = 0; - - tmp_node = cvGetFileNodeByName( fs, svm_node, "term_criteria" ); - if( tmp_node ) - { - _params.term_crit.epsilon = cvReadRealByName( fs, tmp_node, "epsilon", -1. ); - _params.term_crit.max_iter = cvReadIntByName( fs, tmp_node, "iterations", -1 ); - _params.term_crit.type = (_params.term_crit.epsilon >= 0 ? CV_TERMCRIT_EPS : 0) + - (_params.term_crit.max_iter >= 0 ? CV_TERMCRIT_ITER : 0); - } - else - _params.term_crit = cvTermCriteria( CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 1000, FLT_EPSILON ); - - set_params( _params ); - - __END__; -} - -void CvSVM::read( CvFileStorage* fs, CvFileNode* svm_node ) -{ - const double not_found_dbl = DBL_MAX; - - CV_FUNCNAME( "CvSVM::read" ); - - __BEGIN__; - - int i, var_count, df_count, class_count; - int block_size = 1 << 16, sv_size; - CvFileNode *sv_node, *df_node; - CvSVMDecisionFunc* df; - CvSeqReader reader; - - if( !svm_node ) - CV_ERROR( CV_StsParseError, "The requested element is not found" ); - - clear(); - - // read SVM parameters - read_params( fs, svm_node ); - - // and top-level data - sv_total = cvReadIntByName( fs, svm_node, "sv_total", -1 ); - var_all = cvReadIntByName( fs, svm_node, "var_all", -1 ); - var_count = cvReadIntByName( fs, svm_node, "var_count", var_all ); - class_count = cvReadIntByName( fs, svm_node, "class_count", 0 ); - - if( !isSvmModelApplicable(sv_total, var_all, var_count, class_count) ) - CV_ERROR( CV_StsParseError, "SVM model data is invalid, check sv_count, var_* and class_count tags" ); - - CV_CALL( class_labels = (CvMat*)cvReadByName( fs, svm_node, "class_labels" )); - CV_CALL( class_weights = (CvMat*)cvReadByName( fs, svm_node, "class_weights" )); - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, svm_node, "var_idx" )); - - if( class_count > 1 && (!class_labels || - !CV_IS_MAT(class_labels) || class_labels->cols != class_count)) - CV_ERROR( CV_StsParseError, "Array of class labels is missing or invalid" ); - - if( var_count < var_all && (!var_idx || !CV_IS_MAT(var_idx) || var_idx->cols != var_count) ) - CV_ERROR( CV_StsParseError, "var_idx array is missing or invalid" ); - - // read support vectors - sv_node = cvGetFileNodeByName( fs, svm_node, "support_vectors" ); - if( !sv_node || !CV_NODE_IS_SEQ(sv_node->tag)) - CV_ERROR( CV_StsParseError, "Missing or invalid sequence of support vectors" ); - - block_size = MAX( block_size, sv_total*(int)sizeof(CvSVMKernelRow)); - block_size = MAX( block_size, sv_total*2*(int)sizeof(double)); - block_size = MAX( block_size, var_all*(int)sizeof(double)); - - CV_CALL( storage = cvCreateMemStorage(block_size + sizeof(CvMemBlock) + sizeof(CvSeqBlock))); - CV_CALL( sv = (float**)cvMemStorageAlloc( storage, - sv_total*sizeof(sv[0]) )); - - CV_CALL( cvStartReadSeq( sv_node->data.seq, &reader, 0 )); - sv_size = var_count*sizeof(sv[0][0]); - - for( i = 0; i < sv_total; i++ ) - { - CvFileNode* sv_elem = (CvFileNode*)reader.ptr; - CV_ASSERT( var_count == 1 || (CV_NODE_IS_SEQ(sv_elem->tag) && - sv_elem->data.seq->total == var_count) ); - - CV_CALL( sv[i] = (float*)cvMemStorageAlloc( storage, sv_size )); - CV_CALL( cvReadRawData( fs, sv_elem, sv[i], "f" )); - CV_NEXT_SEQ_ELEM( sv_node->data.seq->elem_size, reader ); - } - - // read decision functions - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - df_node = cvGetFileNodeByName( fs, svm_node, "decision_functions" ); - if( !df_node || !CV_NODE_IS_SEQ(df_node->tag) || - df_node->data.seq->total != df_count ) - CV_ERROR( CV_StsParseError, "decision_functions is missing or is not a collection " - "or has a wrong number of elements" ); - - CV_CALL( df = decision_func = (CvSVMDecisionFunc*)cvAlloc( df_count*sizeof(df[0]) )); - cvStartReadSeq( df_node->data.seq, &reader, 0 ); - - for( i = 0; i < df_count; i++ ) - { - CvFileNode* df_elem = (CvFileNode*)reader.ptr; - CvFileNode* alpha_node = cvGetFileNodeByName( fs, df_elem, "alpha" ); - - int sv_count = cvReadIntByName( fs, df_elem, "sv_count", -1 ); - if( sv_count <= 0 ) - CV_ERROR( CV_StsParseError, "sv_count is missing or non-positive" ); - df[i].sv_count = sv_count; - - df[i].rho = cvReadRealByName( fs, df_elem, "rho", not_found_dbl ); - if( fabs(df[i].rho - not_found_dbl) < DBL_EPSILON ) - CV_ERROR( CV_StsParseError, "rho is missing" ); - - if( !alpha_node ) - CV_ERROR( CV_StsParseError, "alpha is missing in the decision function" ); - - CV_CALL( df[i].alpha = (double*)cvMemStorageAlloc( storage, - sv_count*sizeof(df[i].alpha[0]))); - CV_ASSERT( sv_count == 1 || (CV_NODE_IS_SEQ(alpha_node->tag) && - alpha_node->data.seq->total == sv_count) ); - CV_CALL( cvReadRawData( fs, alpha_node, df[i].alpha, "d" )); - - if( class_count > 1 ) - { - CvFileNode* index_node = cvGetFileNodeByName( fs, df_elem, "index" ); - if( !index_node ) - CV_ERROR( CV_StsParseError, "index is missing in the decision function" ); - CV_CALL( df[i].sv_index = (int*)cvMemStorageAlloc( storage, - sv_count*sizeof(df[i].sv_index[0]))); - CV_ASSERT( sv_count == 1 || (CV_NODE_IS_SEQ(index_node->tag) && - index_node->data.seq->total == sv_count) ); - CV_CALL( cvReadRawData( fs, index_node, df[i].sv_index, "i" )); - } - else - df[i].sv_index = 0; - - CV_NEXT_SEQ_ELEM( df_node->data.seq->elem_size, reader ); - } - - if( cvReadIntByName(fs, svm_node, "optimize_linear", 1) != 0 ) - optimize_linear_svm(); - create_kernel(); - - __END__; -} - -#if 0 - -static void* -icvCloneSVM( const void* _src ) -{ - CvSVMModel* dst = 0; - - CV_FUNCNAME( "icvCloneSVM" ); - - __BEGIN__; - - const CvSVMModel* src = (const CvSVMModel*)_src; - int var_count, class_count; - int i, sv_total, df_count; - int sv_size; - - if( !CV_IS_SVM(src) ) - CV_ERROR( !src ? CV_StsNullPtr : CV_StsBadArg, "Input pointer is NULL or invalid" ); - - // 0. create initial CvSVMModel structure - CV_CALL( dst = icvCreateSVM() ); - dst->params = src->params; - dst->params.weight_labels = 0; - dst->params.weights = 0; - - dst->var_all = src->var_all; - if( src->class_labels ) - dst->class_labels = cvCloneMat( src->class_labels ); - if( src->class_weights ) - dst->class_weights = cvCloneMat( src->class_weights ); - if( src->comp_idx ) - dst->comp_idx = cvCloneMat( src->comp_idx ); - - var_count = src->comp_idx ? src->comp_idx->cols : src->var_all; - class_count = src->class_labels ? src->class_labels->cols : - src->params.svm_type == CvSVM::ONE_CLASS ? 1 : 0; - sv_total = dst->sv_total = src->sv_total; - CV_CALL( dst->storage = cvCreateMemStorage( src->storage->block_size )); - CV_CALL( dst->sv = (float**)cvMemStorageAlloc( dst->storage, - sv_total*sizeof(dst->sv[0]) )); - - sv_size = var_count*sizeof(dst->sv[0][0]); - - for( i = 0; i < sv_total; i++ ) - { - CV_CALL( dst->sv[i] = (float*)cvMemStorageAlloc( dst->storage, sv_size )); - memcpy( dst->sv[i], src->sv[i], sv_size ); - } - - df_count = class_count > 1 ? class_count*(class_count-1)/2 : 1; - - CV_CALL( dst->decision_func = cvAlloc( df_count*sizeof(CvSVMDecisionFunc) )); - - for( i = 0; i < df_count; i++ ) - { - const CvSVMDecisionFunc *sdf = - (const CvSVMDecisionFunc*)src->decision_func+i; - CvSVMDecisionFunc *ddf = - (CvSVMDecisionFunc*)dst->decision_func+i; - int sv_count = sdf->sv_count; - ddf->sv_count = sv_count; - ddf->rho = sdf->rho; - CV_CALL( ddf->alpha = (double*)cvMemStorageAlloc( dst->storage, - sv_count*sizeof(ddf->alpha[0]))); - memcpy( ddf->alpha, sdf->alpha, sv_count*sizeof(ddf->alpha[0])); - - if( class_count > 1 ) - { - CV_CALL( ddf->sv_index = (int*)cvMemStorageAlloc( dst->storage, - sv_count*sizeof(ddf->sv_index[0]))); - memcpy( ddf->sv_index, sdf->sv_index, sv_count*sizeof(ddf->sv_index[0])); - } - else - ddf->sv_index = 0; - } - - __END__; - - if( cvGetErrStatus() < 0 && dst ) - icvReleaseSVM( &dst ); - - return dst; -} - -static int icvRegisterSVMType() -{ - CvTypeInfo info; - memset( &info, 0, sizeof(info) ); - - info.flags = 0; - info.header_size = sizeof( info ); - info.is_instance = icvIsSVM; - info.release = (CvReleaseFunc)icvReleaseSVM; - info.read = icvReadSVM; - info.write = icvWriteSVM; - info.clone = icvCloneSVM; - info.type_name = CV_TYPE_NAME_ML_SVM; - cvRegisterType( &info ); - - return 1; -} - - -static int svm = icvRegisterSVMType(); - -/* The function trains SVM model with optimal parameters, obtained by using cross-validation. -The parameters to be estimated should be indicated by setting theirs values to FLT_MAX. -The optimal parameters are saved in */ -CV_IMPL CvStatModel* -cvTrainSVM_CrossValidation( const CvMat* train_data, int tflag, - const CvMat* responses, - CvStatModelParams* model_params, - const CvStatModelParams* cross_valid_params, - const CvMat* comp_idx, - const CvMat* sample_idx, - const CvParamGrid* degree_grid, - const CvParamGrid* gamma_grid, - const CvParamGrid* coef_grid, - const CvParamGrid* C_grid, - const CvParamGrid* nu_grid, - const CvParamGrid* p_grid ) -{ - CvStatModel* svm = 0; - - CV_FUNCNAME("cvTainSVMCrossValidation"); - __BEGIN__; - - double degree_step = 7, - g_step = 15, - coef_step = 14, - C_step = 20, - nu_step = 5, - p_step = 7; // all steps must be > 1 - double degree_begin = 0.01, degree_end = 2; - double g_begin = 1e-5, g_end = 0.5; - double coef_begin = 0.1, coef_end = 300; - double C_begin = 0.1, C_end = 6000; - double nu_begin = 0.01, nu_end = 0.4; - double p_begin = 0.01, p_end = 100; - - double rate = 0, gamma = 0, C = 0, degree = 0, coef = 0, p = 0, nu = 0; - - double best_rate = 0; - double best_degree = degree_begin; - double best_gamma = g_begin; - double best_coef = coef_begin; - double best_C = C_begin; - double best_nu = nu_begin; - double best_p = p_begin; - - CvSVMModelParams svm_params, *psvm_params; - CvCrossValidationParams* cv_params = (CvCrossValidationParams*)cross_valid_params; - int svm_type, kernel; - int is_regression; - - if( !model_params ) - CV_ERROR( CV_StsBadArg, "" ); - if( !cv_params ) - CV_ERROR( CV_StsBadArg, "" ); - - svm_params = *(CvSVMModelParams*)model_params; - psvm_params = (CvSVMModelParams*)model_params; - svm_type = svm_params.svm_type; - kernel = svm_params.kernel_type; - - svm_params.degree = svm_params.degree > 0 ? svm_params.degree : 1; - svm_params.gamma = svm_params.gamma > 0 ? svm_params.gamma : 1; - svm_params.coef0 = svm_params.coef0 > 0 ? svm_params.coef0 : 1e-6; - svm_params.C = svm_params.C > 0 ? svm_params.C : 1; - svm_params.nu = svm_params.nu > 0 ? svm_params.nu : 1; - svm_params.p = svm_params.p > 0 ? svm_params.p : 1; - - if( degree_grid ) - { - if( !(degree_grid->max_val == 0 && degree_grid->min_val == 0 && - degree_grid->step == 0) ) - { - if( degree_grid->min_val > degree_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( degree_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - degree_begin = degree_grid->min_val; - degree_end = degree_grid->max_val; - degree_step = degree_grid->step; - } - } - else - degree_begin = degree_end = svm_params.degree; - - if( gamma_grid ) - { - if( !(gamma_grid->max_val == 0 && gamma_grid->min_val == 0 && - gamma_grid->step == 0) ) - { - if( gamma_grid->min_val > gamma_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( gamma_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - g_begin = gamma_grid->min_val; - g_end = gamma_grid->max_val; - g_step = gamma_grid->step; - } - } - else - g_begin = g_end = svm_params.gamma; - - if( coef_grid ) - { - if( !(coef_grid->max_val == 0 && coef_grid->min_val == 0 && - coef_grid->step == 0) ) - { - if( coef_grid->min_val > coef_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( coef_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - coef_begin = coef_grid->min_val; - coef_end = coef_grid->max_val; - coef_step = coef_grid->step; - } - } - else - coef_begin = coef_end = svm_params.coef0; - - if( C_grid ) - { - if( !(C_grid->max_val == 0 && C_grid->min_val == 0 && C_grid->step == 0)) - { - if( C_grid->min_val > C_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( C_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - C_begin = C_grid->min_val; - C_end = C_grid->max_val; - C_step = C_grid->step; - } - } - else - C_begin = C_end = svm_params.C; - - if( nu_grid ) - { - if(!(nu_grid->max_val == 0 && nu_grid->min_val == 0 && nu_grid->step==0)) - { - if( nu_grid->min_val > nu_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( nu_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - nu_begin = nu_grid->min_val; - nu_end = nu_grid->max_val; - nu_step = nu_grid->step; - } - } - else - nu_begin = nu_end = svm_params.nu; - - if( p_grid ) - { - if( !(p_grid->max_val == 0 && p_grid->min_val == 0 && p_grid->step == 0)) - { - if( p_grid->min_val > p_grid->max_val ) - CV_ERROR( CV_StsBadArg, - "low bound of grid should be less then the upper one"); - if( p_grid->step <= 1 ) - CV_ERROR( CV_StsBadArg, "grid step should be greater 1" ); - p_begin = p_grid->min_val; - p_end = p_grid->max_val; - p_step = p_grid->step; - } - } - else - p_begin = p_end = svm_params.p; - - // these parameters are not used: - if( kernel != CvSVM::POLY ) - degree_begin = degree_end = svm_params.degree; - - if( kernel == CvSVM::LINEAR ) - g_begin = g_end = svm_params.gamma; - - if( kernel != CvSVM::POLY && kernel != CvSVM::SIGMOID ) - coef_begin = coef_end = svm_params.coef0; - - if( svm_type == CvSVM::NU_SVC || svm_type == CvSVM::ONE_CLASS ) - C_begin = C_end = svm_params.C; - - if( svm_type == CvSVM::C_SVC || svm_type == CvSVM::EPS_SVR ) - nu_begin = nu_end = svm_params.nu; - - if( svm_type != CvSVM::EPS_SVR ) - p_begin = p_end = svm_params.p; - - is_regression = cv_params->is_regression; - best_rate = is_regression ? FLT_MAX : 0; - - assert( g_step > 1 && degree_step > 1 && coef_step > 1); - assert( p_step > 1 && C_step > 1 && nu_step > 1 ); - - for( degree = degree_begin; degree <= degree_end; degree *= degree_step ) - { - svm_params.degree = degree; - //printf("degree = %.3f\n", degree ); - for( gamma= g_begin; gamma <= g_end; gamma *= g_step ) - { - svm_params.gamma = gamma; - //printf(" gamma = %.3f\n", gamma ); - for( coef = coef_begin; coef <= coef_end; coef *= coef_step ) - { - svm_params.coef0 = coef; - //printf(" coef = %.3f\n", coef ); - for( C = C_begin; C <= C_end; C *= C_step ) - { - svm_params.C = C; - //printf(" C = %.3f\n", C ); - for( nu = nu_begin; nu <= nu_end; nu *= nu_step ) - { - svm_params.nu = nu; - //printf(" nu = %.3f\n", nu ); - for( p = p_begin; p <= p_end; p *= p_step ) - { - int well; - svm_params.p = p; - //printf(" p = %.3f\n", p ); - - CV_CALL(rate = cvCrossValidation( train_data, tflag, responses, &cvTrainSVM, - cross_valid_params, (CvStatModelParams*)&svm_params, comp_idx, sample_idx )); - - well = rate > best_rate && !is_regression || rate < best_rate && is_regression; - if( well || (rate == best_rate && C < best_C) ) - { - best_rate = rate; - best_degree = degree; - best_gamma = gamma; - best_coef = coef; - best_C = C; - best_nu = nu; - best_p = p; - } - //printf(" rate = %.2f\n", rate ); - } - } - } - } - } - } - //printf("The best:\nrate = %.2f%% degree = %f gamma = %f coef = %f c = %f nu = %f p = %f\n", - // best_rate, best_degree, best_gamma, best_coef, best_C, best_nu, best_p ); - - psvm_params->C = best_C; - psvm_params->nu = best_nu; - psvm_params->p = best_p; - psvm_params->gamma = best_gamma; - psvm_params->degree = best_degree; - psvm_params->coef0 = best_coef; - - CV_CALL(svm = cvTrainSVM( train_data, tflag, responses, model_params, comp_idx, sample_idx )); - - __END__; - - return svm; -} - -#endif - /* End of file. */ diff --git a/modules/ml/src/testset.cpp b/modules/ml/src/testset.cpp index 5edb3b45df..8b8bba5456 100644 --- a/modules/ml/src/testset.cpp +++ b/modules/ml/src/testset.cpp @@ -40,131 +40,74 @@ #include "precomp.hpp" -typedef struct CvDI +namespace cv { namespace ml { + +struct PairDI { double d; int i; -} CvDI; +}; -static int CV_CDECL -icvCmpDI( const void* a, const void* b, void* ) +struct CmpPairDI { - const CvDI* e1 = (const CvDI*) a; - const CvDI* e2 = (const CvDI*) b; + bool operator ()(const PairDI& e1, const PairDI& e2) const + { + return (e1.d < e2.d) || (e1.d == e2.d && e1.i < e2.i); + } +}; - return (e1->d < e2->d) ? -1 : (e1->d > e2->d); -} - -CV_IMPL void -cvCreateTestSet( int type, CvMat** samples, - int num_samples, - int num_features, - CvMat** responses, - int num_classes, ... ) +void createConcentricSpheresTestSet( int num_samples, int num_features, int num_classes, + OutputArray _samples, OutputArray _responses) { - CvMat* mean = NULL; - CvMat* cov = NULL; - CvMemStorage* storage = NULL; - - CV_FUNCNAME( "cvCreateTestSet" ); - - __BEGIN__; - - if( samples ) - *samples = NULL; - if( responses ) - *responses = NULL; - - if( type != CV_TS_CONCENTRIC_SPHERES ) - CV_ERROR( CV_StsBadArg, "Invalid type parameter" ); - - if( !samples ) - CV_ERROR( CV_StsNullPtr, "samples parameter must be not NULL" ); - - if( !responses ) - CV_ERROR( CV_StsNullPtr, "responses parameter must be not NULL" ); - if( num_samples < 1 ) - CV_ERROR( CV_StsBadArg, "num_samples parameter must be positive" ); + CV_Error( CV_StsBadArg, "num_samples parameter must be positive" ); if( num_features < 1 ) - CV_ERROR( CV_StsBadArg, "num_features parameter must be positive" ); + CV_Error( CV_StsBadArg, "num_features parameter must be positive" ); if( num_classes < 1 ) - CV_ERROR( CV_StsBadArg, "num_classes parameter must be positive" ); + CV_Error( CV_StsBadArg, "num_classes parameter must be positive" ); - if( type == CV_TS_CONCENTRIC_SPHERES ) + int i, cur_class; + + _samples.create( num_samples, num_features, CV_32F ); + _responses.create( 1, num_samples, CV_32S ); + + Mat responses = _responses.getMat(); + + Mat mean = Mat::zeros(1, num_features, CV_32F); + Mat cov = Mat::eye(num_features, num_features, CV_32F); + + // fill the feature values matrix with random numbers drawn from standard normal distribution + randMVNormal( mean, cov, num_samples, _samples ); + Mat samples = _samples.getMat(); + + // calculate distances from the origin to the samples and put them + // into the sequence along with indices + std::vector dis(samples.rows); + + for( i = 0; i < samples.rows; i++ ) { - CvSeqWriter writer; - CvSeqReader reader; - CvMat sample; - CvDI elem; - CvSeq* seq = NULL; - int i, cur_class; - - CV_CALL( *samples = cvCreateMat( num_samples, num_features, CV_32FC1 ) ); - CV_CALL( *responses = cvCreateMat( 1, num_samples, CV_32SC1 ) ); - CV_CALL( mean = cvCreateMat( 1, num_features, CV_32FC1 ) ); - CV_CALL( cvSetZero( mean ) ); - CV_CALL( cov = cvCreateMat( num_features, num_features, CV_32FC1 ) ); - CV_CALL( cvSetIdentity( cov ) ); - - /* fill the feature values matrix with random numbers drawn from standard - normal distribution */ - CV_CALL( cvRandMVNormal( mean, cov, *samples ) ); - - /* calculate distances from the origin to the samples and put them - into the sequence along with indices */ - CV_CALL( storage = cvCreateMemStorage() ); - CV_CALL( cvStartWriteSeq( 0, sizeof( CvSeq ), sizeof( CvDI ), storage, &writer )); - for( i = 0; i < (*samples)->rows; ++i ) - { - CV_CALL( cvGetRow( *samples, &sample, i )); - elem.i = i; - CV_CALL( elem.d = cvNorm( &sample, NULL, CV_L2 )); - CV_WRITE_SEQ_ELEM( elem, writer ); - } - CV_CALL( seq = cvEndWriteSeq( &writer ) ); - - /* sort the sequence in a distance ascending order */ - CV_CALL( cvSeqSort( seq, icvCmpDI, NULL ) ); - - /* assign class labels */ - num_classes = MIN( num_samples, num_classes ); - CV_CALL( cvStartReadSeq( seq, &reader ) ); - CV_READ_SEQ_ELEM( elem, reader ); - for( i = 0, cur_class = 0; i < num_samples; ++cur_class ) - { - int last_idx; - double max_dst; - - last_idx = num_samples * (cur_class + 1) / num_classes - 1; - CV_CALL( max_dst = (*((CvDI*) cvGetSeqElem( seq, last_idx ))).d ); - max_dst = MAX( max_dst, elem.d ); - - for( ; elem.d <= max_dst && i < num_samples; ++i ) - { - CV_MAT_ELEM( **responses, int, 0, elem.i ) = cur_class; - if( i < num_samples - 1 ) - { - CV_READ_SEQ_ELEM( elem, reader ); - } - } - } + PairDI& elem = dis[i]; + elem.i = i; + elem.d = norm(samples.row(i), NORM_L2); } - __END__; + std::sort(dis.begin(), dis.end(), CmpPairDI()); - if( cvGetErrStatus() < 0 ) + // assign class labels + num_classes = std::min( num_samples, num_classes ); + for( i = 0, cur_class = 0; i < num_samples; ++cur_class ) { - if( samples ) - cvReleaseMat( samples ); - if( responses ) - cvReleaseMat( responses ); + int last_idx = num_samples * (cur_class + 1) / num_classes - 1; + double max_dst = dis[last_idx].d; + max_dst = std::max( max_dst, dis[i].d ); + + for( ; i < num_samples && dis[i].d <= max_dst; ++i ) + responses.at(i) = cur_class; } - cvReleaseMat( &mean ); - cvReleaseMat( &cov ); - cvReleaseMemStorage( &storage ); } +}} + /* End of file. */ diff --git a/modules/ml/src/tree.cpp b/modules/ml/src/tree.cpp index 41d2553a43..416abd9364 100644 --- a/modules/ml/src/tree.cpp +++ b/modules/ml/src/tree.cpp @@ -7,9 +7,11 @@ // copy or use the software. // // -// Intel License Agreement +// License Agreement +// For Open Source Computer Vision Library // // Copyright (C) 2000, Intel Corporation, all rights reserved. +// Copyright (C) 2014, Itseez Inc, all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +24,7 @@ // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // -// * The name of Intel Corporation may not be used to endorse or promote products +// * The name of the copyright holders may not 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 @@ -41,2071 +43,718 @@ #include "precomp.hpp" #include -using namespace cv; +namespace cv { +namespace ml { -static const float ord_nan = FLT_MAX*0.5f; -static const int min_block_size = 1 << 16; -static const int block_size_delta = 1 << 10; +using std::vector; -CvDTreeTrainData::CvDTreeTrainData() +void DTrees::setDParams(const DTrees::Params&) { - var_idx = var_type = cat_count = cat_ofs = cat_map = - priors = priors_mult = counts = direction = split_buf = responses_copy = 0; - buf = 0; - tree_storage = temp_storage = 0; + CV_Error(CV_StsNotImplemented, ""); +} - clear(); +DTrees::Params DTrees::getDParams() const +{ + CV_Error(CV_StsNotImplemented, ""); + return DTrees::Params(); +} + +DTrees::Params::Params() +{ + maxDepth = INT_MAX; + minSampleCount = 10; + regressionAccuracy = 0.01f; + useSurrogates = false; + maxCategories = 10; + CVFolds = 10; + use1SERule = true; + truncatePrunedTree = true; + priors = Mat(); +} + +DTrees::Params::Params( int _maxDepth, int _minSampleCount, + double _regressionAccuracy, bool _useSurrogates, + int _maxCategories, int _CVFolds, + bool _use1SERule, bool _truncatePrunedTree, + const Mat& _priors ) +{ + maxDepth = _maxDepth; + minSampleCount = _minSampleCount; + regressionAccuracy = (float)_regressionAccuracy; + useSurrogates = _useSurrogates; + maxCategories = _maxCategories; + CVFolds = _CVFolds; + use1SERule = _use1SERule; + truncatePrunedTree = _truncatePrunedTree; + priors = _priors; +} + +DTrees::Node::Node() +{ + classIdx = 0; + value = 0; + parent = left = right = split = defaultDir = -1; +} + +DTrees::Split::Split() +{ + varIdx = 0; + inversed = false; + quality = 0.f; + next = -1; + c = 0.f; + subsetOfs = 0; } -CvDTreeTrainData::CvDTreeTrainData( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels ) +DTreesImpl::WorkData::WorkData(const Ptr& _data) { - var_idx = var_type = cat_count = cat_ofs = cat_map = - priors = priors_mult = counts = direction = split_buf = responses_copy = 0; - buf = 0; + data = _data; + vector subsampleIdx; + Mat sidx0 = _data->getTrainSampleIdx(); + if( !sidx0.empty() ) + { + sidx0.copyTo(sidx); + std::sort(sidx.begin(), sidx.end()); + } + else + { + int n = _data->getNSamples(); + setRangeVector(sidx, n); + } - tree_storage = temp_storage = 0; - - set_data( _train_data, _tflag, _responses, _var_idx, _sample_idx, - _var_type, _missing_mask, _params, _shared, _add_labels ); + maxSubsetSize = 0; } +DTreesImpl::DTreesImpl() {} +DTreesImpl::~DTreesImpl() {} +void DTreesImpl::clear() +{ + varIdx.clear(); + compVarIdx.clear(); + varType.clear(); + catOfs.clear(); + catMap.clear(); + roots.clear(); + nodes.clear(); + splits.clear(); + subsets.clear(); + classLabels.clear(); -CvDTreeTrainData::~CvDTreeTrainData() + w.release(); + _isClassifier = false; +} + +void DTreesImpl::startTraining( const Ptr& data, int ) { clear(); + w = makePtr(data); + + Mat vtype = data->getVarType(); + vtype.copyTo(varType); + + data->getCatOfs().copyTo(catOfs); + data->getCatMap().copyTo(catMap); + data->getDefaultSubstValues().copyTo(missingSubst); + + int nallvars = data->getNAllVars(); + + Mat vidx0 = data->getVarIdx(); + if( !vidx0.empty() ) + vidx0.copyTo(varIdx); + else + setRangeVector(varIdx, nallvars); + + initCompVarIdx(); + + w->maxSubsetSize = 0; + + int i, nvars = (int)varIdx.size(); + for( i = 0; i < nvars; i++ ) + w->maxSubsetSize = std::max(w->maxSubsetSize, getCatCount(varIdx[i])); + + w->maxSubsetSize = std::max((w->maxSubsetSize + 31)/32, 1); + + data->getSampleWeights().copyTo(w->sample_weights); + + _isClassifier = data->getResponseType() == VAR_CATEGORICAL; + + if( _isClassifier ) + { + data->getNormCatResponses().copyTo(w->cat_responses); + data->getClassLabels().copyTo(classLabels); + int nclasses = (int)classLabels.size(); + + Mat class_weights = params.priors; + if( !class_weights.empty() ) + { + if( class_weights.type() != CV_64F || !class_weights.isContinuous() ) + { + Mat temp; + class_weights.convertTo(temp, CV_64F); + class_weights = temp; + } + CV_Assert( class_weights.checkVector(1, CV_64F) == nclasses ); + + int nsamples = (int)w->cat_responses.size(); + const double* cw = class_weights.ptr(); + CV_Assert( (int)w->sample_weights.size() == nsamples ); + + for( i = 0; i < nsamples; i++ ) + { + int ci = w->cat_responses[i]; + CV_Assert( 0 <= ci && ci < nclasses ); + w->sample_weights[i] *= cw[ci]; + } + } + } + else + data->getResponses().copyTo(w->ord_responses); } -bool CvDTreeTrainData::set_params( const CvDTreeParams& _params ) +void DTreesImpl::initCompVarIdx() { - bool ok = false; + int nallvars = (int)varType.size(); + compVarIdx.assign(nallvars, -1); + int i, nvars = (int)varIdx.size(), prevIdx = -1; + for( i = 0; i < nvars; i++ ) + { + int vi = varIdx[i]; + CV_Assert( 0 <= vi && vi < nallvars && vi > prevIdx ); + prevIdx = vi; + compVarIdx[vi] = i; + } +} - CV_FUNCNAME( "CvDTreeTrainData::set_params" ); - - __BEGIN__; - - // set parameters - params = _params; - - if( params.max_categories < 2 ) - CV_ERROR( CV_StsOutOfRange, "params.max_categories should be >= 2" ); - params.max_categories = MIN( params.max_categories, 15 ); - - if( params.max_depth < 0 ) - CV_ERROR( CV_StsOutOfRange, "params.max_depth should be >= 0" ); - params.max_depth = MIN( params.max_depth, 25 ); - - params.min_sample_count = MAX(params.min_sample_count,1); - - if( params.cv_folds < 0 ) - CV_ERROR( CV_StsOutOfRange, - "params.cv_folds should be =0 (the tree is not pruned) " - "or n>0 (tree is pruned using n-fold cross-validation)" ); - - if( params.cv_folds == 1 ) - params.cv_folds = 0; - - if( params.regression_accuracy < 0 ) - CV_ERROR( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); - - ok = true; - - __END__; +void DTreesImpl::endTraining() +{ + w.release(); +} +bool DTreesImpl::train( const Ptr& trainData, int flags ) +{ + startTraining(trainData, flags); + bool ok = addTree( w->sidx ) >= 0; + w.release(); + endTraining(); return ok; } -template -class LessThanPtr +const vector& DTreesImpl::getActiveVars() { -public: - bool operator()(T* a, T* b) const { return *a < *b; } -}; - -template -class LessThanIdx -{ -public: - LessThanIdx( const T* _arr ) : arr(_arr) {} - bool operator()(Idx a, Idx b) const { return arr[a] < arr[b]; } - const T* arr; -}; - -class LessThanPairs -{ -public: - bool operator()(const CvPair16u32s& a, const CvPair16u32s& b) const { return *a.i < *b.i; } -}; - -void CvDTreeTrainData::set_data( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, const CvMat* _sample_idx, - const CvMat* _var_type, const CvMat* _missing_mask, const CvDTreeParams& _params, - bool _shared, bool _add_labels, bool _update_data ) -{ - CvMat* sample_indices = 0; - CvMat* var_type0 = 0; - CvMat* tmp_map = 0; - int** int_ptr = 0; - CvPair16u32s* pair16u32s_ptr = 0; - CvDTreeTrainData* data = 0; - float *_fdst = 0; - int *_idst = 0; - unsigned short* udst = 0; - int* idst = 0; - - CV_FUNCNAME( "CvDTreeTrainData::set_data" ); - - __BEGIN__; - - int sample_all = 0, r_type, cv_n; - int total_c_count = 0; - int tree_block_size, temp_block_size, max_split_size, nv_size, cv_size = 0; - int ds_step, dv_step, ms_step = 0, mv_step = 0; // {data|mask}{sample|var}_step - int vi, i, size; - char err[100]; - const int *sidx = 0, *vidx = 0; - - uint64 effective_buf_size = 0; - int effective_buf_height = 0, effective_buf_width = 0; - - if( _update_data && data_root ) - { - data = new CvDTreeTrainData( _train_data, _tflag, _responses, _var_idx, - _sample_idx, _var_type, _missing_mask, _params, _shared, _add_labels ); - - // compare new and old train data - if( !(data->var_count == var_count && - cvNorm( data->var_type, var_type, CV_C ) < FLT_EPSILON && - cvNorm( data->cat_count, cat_count, CV_C ) < FLT_EPSILON && - cvNorm( data->cat_map, cat_map, CV_C ) < FLT_EPSILON) ) - CV_ERROR( CV_StsBadArg, - "The new training data must have the same types and the input and output variables " - "and the same categories for categorical variables" ); - - cvReleaseMat( &priors ); - cvReleaseMat( &priors_mult ); - cvReleaseMat( &buf ); - cvReleaseMat( &direction ); - cvReleaseMat( &split_buf ); - cvReleaseMemStorage( &temp_storage ); - - priors = data->priors; data->priors = 0; - priors_mult = data->priors_mult; data->priors_mult = 0; - buf = data->buf; data->buf = 0; - buf_count = data->buf_count; buf_size = data->buf_size; - sample_count = data->sample_count; - - direction = data->direction; data->direction = 0; - split_buf = data->split_buf; data->split_buf = 0; - temp_storage = data->temp_storage; data->temp_storage = 0; - nv_heap = data->nv_heap; cv_heap = data->cv_heap; - - data_root = new_node( 0, sample_count, 0, 0 ); - EXIT; - } - - clear(); - - var_all = 0; - rng = &cv::theRNG(); - - CV_CALL( set_params( _params )); - - // check parameter types and sizes - CV_CALL( cvCheckTrainData( _train_data, _tflag, _missing_mask, &var_all, &sample_all )); - - train_data = _train_data; - responses = _responses; - - if( _tflag == CV_ROW_SAMPLE ) - { - ds_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - dv_step = 1; - if( _missing_mask ) - ms_step = _missing_mask->step, mv_step = 1; - } - else - { - dv_step = _train_data->step/CV_ELEM_SIZE(_train_data->type); - ds_step = 1; - if( _missing_mask ) - mv_step = _missing_mask->step, ms_step = 1; - } - tflag = _tflag; - - sample_count = sample_all; - var_count = var_all; - - if( _sample_idx ) - { - CV_CALL( sample_indices = cvPreprocessIndexArray( _sample_idx, sample_all )); - sidx = sample_indices->data.i; - sample_count = sample_indices->rows + sample_indices->cols - 1; - } - - if( _var_idx ) - { - CV_CALL( var_idx = cvPreprocessIndexArray( _var_idx, var_all )); - vidx = var_idx->data.i; - var_count = var_idx->rows + var_idx->cols - 1; - } - - is_buf_16u = false; - if ( sample_count < 65536 ) - is_buf_16u = true; - - if( !CV_IS_MAT(_responses) || - (CV_MAT_TYPE(_responses->type) != CV_32SC1 && - CV_MAT_TYPE(_responses->type) != CV_32FC1) || - (_responses->rows != 1 && _responses->cols != 1) || - _responses->rows + _responses->cols - 1 != sample_all ) - CV_ERROR( CV_StsBadArg, "The array of _responses must be an integer or " - "floating-point vector containing as many elements as " - "the total number of samples in the training data matrix" ); - - r_type = CV_VAR_CATEGORICAL; - if( _var_type ) - CV_CALL( var_type0 = cvPreprocessVarType( _var_type, var_idx, var_count, &r_type )); - - CV_CALL( var_type = cvCreateMat( 1, var_count+2, CV_32SC1 )); - - cat_var_count = 0; - ord_var_count = -1; - - is_classifier = r_type == CV_VAR_CATEGORICAL; - - // step 0. calc the number of categorical vars - for( vi = 0; vi < var_count; vi++ ) - { - char vt = var_type0 ? var_type0->data.ptr[vi] : CV_VAR_ORDERED; - var_type->data.i[vi] = vt == CV_VAR_CATEGORICAL ? cat_var_count++ : ord_var_count--; - } - - ord_var_count = ~ord_var_count; - cv_n = params.cv_folds; - // set the two last elements of var_type array to be able - // to locate responses and cross-validation labels using - // the corresponding get_* functions. - var_type->data.i[var_count] = cat_var_count; - var_type->data.i[var_count+1] = cat_var_count+1; - - // in case of single ordered predictor we need dummy cv_labels - // for safe split_node_data() operation - have_labels = cv_n > 0 || (ord_var_count == 1 && cat_var_count == 0) || _add_labels; - - work_var_count = var_count + (is_classifier ? 1 : 0) // for responses class_labels - + (have_labels ? 1 : 0); // for cv_labels - - shared = _shared; - buf_count = shared ? 2 : 1; - - buf_size = -1; // the member buf_size is obsolete - - effective_buf_size = (uint64)(work_var_count + 1)*(uint64)sample_count * buf_count; // this is the total size of "CvMat buf" to be allocated - effective_buf_width = sample_count; - effective_buf_height = work_var_count+1; - - if (effective_buf_width >= effective_buf_height) - effective_buf_height *= buf_count; - else - effective_buf_width *= buf_count; - - if ((uint64)effective_buf_width * (uint64)effective_buf_height != effective_buf_size) - { - CV_Error(CV_StsBadArg, "The memory buffer cannot be allocated since its size exceeds integer fields limit"); - } - - - - if ( is_buf_16u ) - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_16UC1 )); - CV_CALL( pair16u32s_ptr = (CvPair16u32s*)cvAlloc( sample_count*sizeof(pair16u32s_ptr[0]) )); - } - else - { - CV_CALL( buf = cvCreateMat( effective_buf_height, effective_buf_width, CV_32SC1 )); - CV_CALL( int_ptr = (int**)cvAlloc( sample_count*sizeof(int_ptr[0]) )); - } - - size = is_classifier ? (cat_var_count+1) : cat_var_count; - size = !size ? 1 : size; - CV_CALL( cat_count = cvCreateMat( 1, size, CV_32SC1 )); - CV_CALL( cat_ofs = cvCreateMat( 1, size, CV_32SC1 )); - - size = is_classifier ? (cat_var_count + 1)*params.max_categories : cat_var_count*params.max_categories; - size = !size ? 1 : size; - CV_CALL( cat_map = cvCreateMat( 1, size, CV_32SC1 )); - - // now calculate the maximum size of split, - // create memory storage that will keep nodes and splits of the decision tree - // allocate root node and the buffer for the whole training data - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,sample_count - 33)/32)*sizeof(int),sizeof(void*)); - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(*node_heap), sizeof(CvDTreeNode), tree_storage )); - - nv_size = var_count*sizeof(int); - nv_size = cvAlign(MAX( nv_size, (int)sizeof(CvSetElem) ), sizeof(void*)); - - temp_block_size = nv_size; - - if( cv_n ) - { - if( sample_count < cv_n*MAX(params.min_sample_count,10) ) - CV_ERROR( CV_StsOutOfRange, - "The many folds in cross-validation for such a small dataset" ); - - cv_size = cvAlign( cv_n*(sizeof(int) + sizeof(double)*2), sizeof(double) ); - temp_block_size = MAX(temp_block_size, cv_size); - } - - temp_block_size = MAX( temp_block_size + block_size_delta, min_block_size ); - CV_CALL( temp_storage = cvCreateMemStorage( temp_block_size )); - CV_CALL( nv_heap = cvCreateSet( 0, sizeof(*nv_heap), nv_size, temp_storage )); - if( cv_size ) - CV_CALL( cv_heap = cvCreateSet( 0, sizeof(*cv_heap), cv_size, temp_storage )); - - CV_CALL( data_root = new_node( 0, sample_count, 0, 0 )); - - max_c_count = 1; - - _fdst = 0; - _idst = 0; - if (ord_var_count) - _fdst = (float*)cvAlloc(sample_count*sizeof(_fdst[0])); - if (is_buf_16u && (cat_var_count || is_classifier)) - _idst = (int*)cvAlloc(sample_count*sizeof(_idst[0])); - - // transform the training data to convenient representation - for( vi = 0; vi <= var_count; vi++ ) - { - int ci; - const uchar* mask = 0; - int64 m_step = 0, step; - const int* idata = 0; - const float* fdata = 0; - int num_valid = 0; - - if( vi < var_count ) // analyze i-th input variable - { - int vi0 = vidx ? vidx[vi] : vi; - ci = get_var_type(vi); - step = ds_step; m_step = ms_step; - if( CV_MAT_TYPE(_train_data->type) == CV_32SC1 ) - idata = _train_data->data.i + vi0*dv_step; - else - fdata = _train_data->data.fl + vi0*dv_step; - if( _missing_mask ) - mask = _missing_mask->data.ptr + vi0*mv_step; - } - else // analyze _responses - { - ci = cat_var_count; - step = CV_IS_MAT_CONT(_responses->type) ? - 1 : _responses->step / CV_ELEM_SIZE(_responses->type); - if( CV_MAT_TYPE(_responses->type) == CV_32SC1 ) - idata = _responses->data.i; - else - fdata = _responses->data.fl; - } - - if( (vi < var_count && ci>=0) || - (vi == var_count && is_classifier) ) // process categorical variable or response - { - int c_count, prev_label; - int* c_map; - - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + vi*sample_count); - else - idst = buf->data.i + vi*sample_count; - - // copy data - for( i = 0; i < sample_count; i++ ) - { - int val = INT_MAX, si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = idata[(size_t)si*step]; - else - { - float t = fdata[(size_t)si*step]; - val = cvRound(t); - if( fabs(t - val) > FLT_EPSILON ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is not an integer", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - } - - if( val == INT_MAX ) - { - sprintf( err, "%d-th value of %d-th (categorical) " - "variable is too large", i, vi ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - if (is_buf_16u) - { - _idst[i] = val; - pair16u32s_ptr[i].u = udst + i; - pair16u32s_ptr[i].i = _idst + i; - } - else - { - idst[i] = val; - int_ptr[i] = idst + i; - } - } - - c_count = num_valid > 0; - if (is_buf_16u) - { - std::sort(pair16u32s_ptr, pair16u32s_ptr + sample_count, LessThanPairs()); - // count the categories - for( i = 1; i < num_valid; i++ ) - if (*pair16u32s_ptr[i].i != *pair16u32s_ptr[i-1].i) - c_count ++ ; - } - else - { - std::sort(int_ptr, int_ptr + sample_count, LessThanPtr()); - // count the categories - for( i = 1; i < num_valid; i++ ) - c_count += *int_ptr[i] != *int_ptr[i-1]; - } - - if( vi > 0 ) - max_c_count = MAX( max_c_count, c_count ); - cat_count->data.i[ci] = c_count; - cat_ofs->data.i[ci] = total_c_count; - - // resize cat_map, if need - if( cat_map->cols < total_c_count + c_count ) - { - tmp_map = cat_map; - CV_CALL( cat_map = cvCreateMat( 1, - MAX(cat_map->cols*3/2,total_c_count+c_count), CV_32SC1 )); - for( i = 0; i < total_c_count; i++ ) - cat_map->data.i[i] = tmp_map->data.i[i]; - cvReleaseMat( &tmp_map ); - } - - c_map = cat_map->data.i + total_c_count; - total_c_count += c_count; - - c_count = -1; - if (is_buf_16u) - { - // compact the class indices and build the map - prev_label = ~*pair16u32s_ptr[0].i; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *pair16u32s_ptr[i].i; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *pair16u32s_ptr[i].u = (unsigned short)c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *pair16u32s_ptr[i].u = 65535; - } - else - { - // compact the class indices and build the map - prev_label = ~*int_ptr[0]; - for( i = 0; i < num_valid; i++ ) - { - int cur_label = *int_ptr[i]; - if( cur_label != prev_label ) - c_map[++c_count] = prev_label = cur_label; - *int_ptr[i] = c_count; - } - // replace labels for missing values with -1 - for( ; i < sample_count; i++ ) - *int_ptr[i] = -1; - } - } - else if( ci < 0 ) // process ordered variable - { - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + vi*sample_count); - else - idst = buf->data.i + vi*sample_count; - - for( i = 0; i < sample_count; i++ ) - { - float val = ord_nan; - int si = sidx ? sidx[i] : i; - if( !mask || !mask[(size_t)si*m_step] ) - { - if( idata ) - val = (float)idata[(size_t)si*step]; - else - val = fdata[(size_t)si*step]; - - if( fabs(val) >= ord_nan ) - { - sprintf( err, "%d-th value of %d-th (ordered) " - "variable (=%g) is too large", i, vi, val ); - CV_ERROR( CV_StsBadArg, err ); - } - num_valid++; - } - - if (is_buf_16u) - udst[i] = (unsigned short)i; // TODO: memory corruption may be here - else - idst[i] = i; - _fdst[i] = val; - - } - if (is_buf_16u) - std::sort(udst, udst + sample_count, LessThanIdx(_fdst)); - else - std::sort(idst, idst + sample_count, LessThanIdx(_fdst)); - } - - if( vi < var_count ) - data_root->set_num_valid(vi, num_valid); - } - - // set sample labels - if (is_buf_16u) - udst = (unsigned short*)(buf->data.s + work_var_count*sample_count); - else - idst = buf->data.i + work_var_count*sample_count; - - for (i = 0; i < sample_count; i++) - { - if (udst) - udst[i] = sidx ? (unsigned short)sidx[i] : (unsigned short)i; - else - idst[i] = sidx ? sidx[i] : i; - } - - if( cv_n ) - { - unsigned short* usdst = 0; - int* idst2 = 0; - - if (is_buf_16u) - { - usdst = (unsigned short*)(buf->data.s + (get_work_var_count()-1)*sample_count); - for( i = vi = 0; i < sample_count; i++ ) - { - usdst[i] = (unsigned short)vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - unsigned short unsh = (unsigned short)vi; - CV_SWAP( usdst[a], usdst[b], unsh ); - } - } - else - { - idst2 = buf->data.i + (get_work_var_count()-1)*sample_count; - for( i = vi = 0; i < sample_count; i++ ) - { - idst2[i] = vi++; - vi &= vi < cv_n ? -1 : 0; - } - - for( i = 0; i < sample_count; i++ ) - { - int a = (*rng)(sample_count); - int b = (*rng)(sample_count); - CV_SWAP( idst2[a], idst2[b], vi ); - } - } - } - - if ( cat_map ) - cat_map->cols = MAX( total_c_count, 1 ); - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(*split_heap), max_split_size, tree_storage )); - - have_priors = is_classifier && params.priors; - if( is_classifier ) - { - int m = get_num_classes(); - double sum = 0; - CV_CALL( priors = cvCreateMat( 1, m, CV_64F )); - for( i = 0; i < m; i++ ) - { - double val = have_priors ? params.priors[i] : 1.; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "Every class weight should be positive" ); - priors->data.db[i] = val; - sum += val; - } - - // normalize weights - if( have_priors ) - cvScale( priors, priors, 1./sum ); - - CV_CALL( priors_mult = cvCloneMat( priors )); - CV_CALL( counts = cvCreateMat( 1, m, CV_32SC1 )); - } - - - CV_CALL( direction = cvCreateMat( 1, sample_count, CV_8UC1 )); - CV_CALL( split_buf = cvCreateMat( 1, sample_count, CV_32SC1 )); - - __END__; - - if( data ) - delete data; - - if (_fdst) - cvFree( &_fdst ); - if (_idst) - cvFree( &_idst ); - cvFree( &int_ptr ); - cvFree( &pair16u32s_ptr); - cvReleaseMat( &var_type0 ); - cvReleaseMat( &sample_indices ); - cvReleaseMat( &tmp_map ); + return varIdx; } -void CvDTreeTrainData::do_responses_copy() +int DTreesImpl::addTree(const vector& sidx ) { - responses_copy = cvCreateMat( responses->rows, responses->cols, responses->type ); - cvCopy( responses, responses_copy); - responses = responses_copy; -} + size_t n = (params.maxDepth > 0 ? (1 << params.maxDepth) : 1024) + w->wnodes.size(); -CvDTreeNode* CvDTreeTrainData::subsample_data( const CvMat* _subsample_idx ) -{ - CvDTreeNode* root = 0; - CvMat* isubsample_idx = 0; - CvMat* subsample_co = 0; + w->wnodes.reserve(n); + w->wsplits.reserve(n); + w->wsubsets.reserve(n*w->maxSubsetSize); + w->wnodes.clear(); + w->wsplits.clear(); + w->wsubsets.clear(); - bool isMakeRootCopy = true; + int cv_n = params.CVFolds; - CV_FUNCNAME( "CvDTreeTrainData::subsample_data" ); - - __BEGIN__; - - if( !data_root ) - CV_ERROR( CV_StsError, "No training data has been set" ); - - if( _subsample_idx ) + if( cv_n > 0 ) { - CV_CALL( isubsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); - - if( isubsample_idx->cols + isubsample_idx->rows - 1 == sample_count ) - { - const int* sidx = isubsample_idx->data.i; - for( int i = 0; i < sample_count; i++ ) - { - if( sidx[i] != i ) - { - isMakeRootCopy = false; - break; - } - } - } - else - isMakeRootCopy = false; + w->cv_Tn.resize(n*cv_n); + w->cv_node_error.resize(n*cv_n); + w->cv_node_risk.resize(n*cv_n); } - if( isMakeRootCopy ) - { - // make a copy of the root node - CvDTreeNode temp; - int i; - root = new_node( 0, 1, 0, 0 ); - temp = *root; - *root = *data_root; - root->num_valid = temp.num_valid; - if( root->num_valid ) - { - for( i = 0; i < var_count; i++ ) - root->num_valid[i] = data_root->num_valid[i]; - } - root->cv_Tn = temp.cv_Tn; - root->cv_node_risk = temp.cv_node_risk; - root->cv_node_error = temp.cv_node_error; - } - else - { - int* sidx = isubsample_idx->data.i; - // co - array of count/offset pairs (to handle duplicated values in _subsample_idx) - int* co, cur_ofs = 0; - int vi, i; - int workVarCount = get_work_var_count(); - int count = isubsample_idx->rows + isubsample_idx->cols - 1; + // build the tree recursively + int w_root = addNodeAndTrySplit(-1, sidx); + int maxdepth = INT_MAX;//pruneCV(root); - root = new_node( 0, count, 1, 0 ); + int w_nidx = w_root, pidx = -1, depth = 0; + int root = (int)nodes.size(); - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - cvZero( subsample_co ); - co = subsample_co->data.i; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < sample_count; i++ ) + for(;;) + { + const WNode& wnode = w->wnodes[w_nidx]; + Node node; + node.parent = pidx; + node.classIdx = wnode.class_idx; + node.value = wnode.value; + node.defaultDir = wnode.defaultDir; + + int wsplit_idx = wnode.split; + if( wsplit_idx >= 0 ) { - if( co[i*2] ) + const WSplit& wsplit = w->wsplits[wsplit_idx]; + Split split; + split.c = wsplit.c; + split.quality = wsplit.quality; + split.inversed = wsplit.inversed; + split.varIdx = wsplit.varIdx; + split.subsetOfs = -1; + if( wsplit.subsetOfs >= 0 ) { - co[i*2+1] = cur_ofs; - cur_ofs += co[i*2]; + int ssize = getSubsetSize(split.varIdx); + split.subsetOfs = (int)subsets.size(); + subsets.resize(split.subsetOfs + ssize); + memcpy(&subsets[split.subsetOfs], &w->wsubsets[wsplit.subsetOfs], ssize*sizeof(int)); } - else - co[i*2+1] = -1; + node.split = (int)splits.size(); + splits.push_back(split); } - - cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); - for( vi = 0; vi < workVarCount; vi++ ) + int nidx = (int)nodes.size(); + nodes.push_back(node); + if( pidx >= 0 ) { - int ci = get_var_type(vi); - - if( ci >= 0 || vi >= var_count ) + int w_pidx = w->wnodes[w_nidx].parent; + if( w->wnodes[w_pidx].left == w_nidx ) { - int num_valid = 0; - const int* src = CvDTreeTrainData::get_cat_var_data( data_root, vi, (int*)(uchar*)inn_buf ); - - if (is_buf_16u) - { - unsigned short* udst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset); - for( i = 0; i < count; i++ ) - { - int val = src[sidx[i]]; - udst[i] = (unsigned short)val; - num_valid += val >= 0; - } - } - else - { - int* idst = buf->data.i + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset; - for( i = 0; i < count; i++ ) - { - int val = src[sidx[i]]; - idst[i] = val; - num_valid += val >= 0; - } - } - - if( vi < var_count ) - root->set_num_valid(vi, num_valid); + nodes[pidx].left = nidx; } else { - int *src_idx_buf = (int*)(uchar*)inn_buf; - float *src_val_buf = (float*)(src_idx_buf + sample_count); - int* sample_indices_buf = (int*)(src_val_buf + sample_count); - const int* src_idx = 0; - const float* src_val = 0; - get_ord_var_data( data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf ); - int j = 0, idx, count_i; - int num_valid = data_root->get_num_valid(vi); - - if (is_buf_16u) - { - unsigned short* udst_idx = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - vi*sample_count + data_root->offset); - for( i = 0; i < num_valid; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - udst_idx[j] = (unsigned short)cur_ofs; - } - - root->set_num_valid(vi, j); - - for( ; i < sample_count; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - udst_idx[j] = (unsigned short)cur_ofs; - } - } - else - { - int* idst_idx = buf->data.i + root->buf_idx*get_length_subbuf() + - vi*sample_count + root->offset; - for( i = 0; i < num_valid; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - idst_idx[j] = cur_ofs; - } - - root->set_num_valid(vi, j); - - for( ; i < sample_count; i++ ) - { - idx = src_idx[i]; - count_i = co[idx*2]; - if( count_i ) - for( cur_ofs = co[idx*2+1]; count_i > 0; count_i--, j++, cur_ofs++ ) - idst_idx[j] = cur_ofs; - } - } + CV_Assert(w->wnodes[w_pidx].right == w_nidx); + nodes[pidx].right = nidx; } } - // sample indices subsampling - const int* sample_idx_src = get_sample_indices(data_root, (int*)(uchar*)inn_buf); - if (is_buf_16u) + + if( wnode.left >= 0 && depth+1 < maxdepth ) { - unsigned short* sample_idx_dst = (unsigned short*)(buf->data.s + root->buf_idx*get_length_subbuf() + - workVarCount*sample_count + root->offset); - for (i = 0; i < count; i++) - sample_idx_dst[i] = (unsigned short)sample_idx_src[sidx[i]]; + w_nidx = wnode.left; + pidx = nidx; + depth++; } else { - int* sample_idx_dst = buf->data.i + root->buf_idx*get_length_subbuf() + - workVarCount*sample_count + root->offset; - for (i = 0; i < count; i++) - sample_idx_dst[i] = sample_idx_src[sidx[i]]; + int w_pidx = wnode.parent; + while( w_pidx >= 0 && w->wnodes[w_pidx].right == w_nidx ) + { + w_nidx = w_pidx; + w_pidx = w->wnodes[w_pidx].parent; + nidx = pidx; + pidx = nodes[pidx].parent; + depth--; + } + + if( w_pidx < 0 ) + break; + + w_nidx = w->wnodes[w_pidx].right; + CV_Assert( w_nidx >= 0 ); } } - - __END__; - - cvReleaseMat( &isubsample_idx ); - cvReleaseMat( &subsample_co ); - + roots.push_back(root); return root; } - -void CvDTreeTrainData::get_vectors( const CvMat* _subsample_idx, - float* values, uchar* missing, - float* _responses, bool get_class_idx ) +DTrees::Params DTreesImpl::getDParams() const { - CvMat* subsample_idx = 0; - CvMat* subsample_co = 0; + return params0; +} - CV_FUNCNAME( "CvDTreeTrainData::get_vectors" ); +void DTreesImpl::setDParams(const Params& _params) +{ + params0 = params = _params; + if( params.maxCategories < 2 ) + CV_Error( CV_StsOutOfRange, "params.max_categories should be >= 2" ); + params.maxCategories = std::min( params.maxCategories, 15 ); - __BEGIN__; + if( params.maxDepth < 0 ) + CV_Error( CV_StsOutOfRange, "params.max_depth should be >= 0" ); + params.maxDepth = std::min( params.maxDepth, 25 ); - int i, vi, total = sample_count, count = total, cur_ofs = 0; - int* sidx = 0; - int* co = 0; + params.minSampleCount = std::max(params.minSampleCount, 1); - cv::AutoBuffer inn_buf(sample_count*(2*sizeof(int) + sizeof(float))); - if( _subsample_idx ) + if( params.CVFolds < 0 ) + CV_Error( CV_StsOutOfRange, + "params.CVFolds should be =0 (the tree is not pruned) " + "or n>0 (tree is pruned using n-fold cross-validation)" ); + + if( params.CVFolds == 1 ) + params.CVFolds = 0; + + if( params.regressionAccuracy < 0 ) + CV_Error( CV_StsOutOfRange, "params.regression_accuracy should be >= 0" ); +} + +int DTreesImpl::addNodeAndTrySplit( int parent, const vector& sidx ) +{ + w->wnodes.push_back(WNode()); + int nidx = (int)(w->wnodes.size() - 1); + WNode& node = w->wnodes.back(); + + node.parent = parent; + node.depth = parent >= 0 ? w->wnodes[parent].depth + 1 : 0; + int nfolds = params.CVFolds; + + if( nfolds > 0 ) { - CV_CALL( subsample_idx = cvPreprocessIndexArray( _subsample_idx, sample_count )); - sidx = subsample_idx->data.i; - CV_CALL( subsample_co = cvCreateMat( 1, sample_count*2, CV_32SC1 )); - co = subsample_co->data.i; - cvZero( subsample_co ); - count = subsample_idx->cols + subsample_idx->rows - 1; - for( i = 0; i < count; i++ ) - co[sidx[i]*2]++; - for( i = 0; i < total; i++ ) - { - int count_i = co[i*2]; - if( count_i ) - { - co[i*2+1] = cur_ofs*var_count; - cur_ofs += count_i; - } - } + w->cv_Tn.resize((nidx+1)*nfolds); + w->cv_node_error.resize((nidx+1)*nfolds); + w->cv_node_risk.resize((nidx+1)*nfolds); } - if( missing ) - memset( missing, 1, count*var_count ); - - for( vi = 0; vi < var_count; vi++ ) - { - int ci = get_var_type(vi); - if( ci >= 0 ) // categorical - { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - const int* src = get_cat_var_data(data_root, vi, (int*)(uchar*)inn_buf); - - for( i = 0; i < count; i++, dst += var_count ) - { - int idx = sidx ? sidx[i] : i; - int val = src[idx]; - *dst = (float)val; - if( m ) - { - *m = (!is_buf_16u && val < 0) || (is_buf_16u && (val == 65535)); - m += var_count; - } - } - } - else // ordered - { - float* dst = values + vi; - uchar* m = missing ? missing + vi : 0; - int count1 = data_root->get_num_valid(vi); - float *src_val_buf = (float*)(uchar*)inn_buf; - int* src_idx_buf = (int*)(src_val_buf + sample_count); - int* sample_indices_buf = src_idx_buf + sample_count; - const float *src_val = 0; - const int* src_idx = 0; - get_ord_var_data(data_root, vi, src_val_buf, src_idx_buf, &src_val, &src_idx, sample_indices_buf); - - for( i = 0; i < count1; i++ ) - { - int idx = src_idx[i]; - int count_i = 1; - if( co ) - { - count_i = co[idx*2]; - cur_ofs = co[idx*2+1]; - } - else - cur_ofs = idx*var_count; - if( count_i ) - { - float val = src_val[i]; - for( ; count_i > 0; count_i--, cur_ofs += var_count ) - { - dst[cur_ofs] = val; - if( m ) - m[cur_ofs] = 0; - } - } - } - } - } - - // copy responses - if( _responses ) - { - if( is_classifier ) - { - const int* src = get_class_labels(data_root, (int*)(uchar*)inn_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - int val = get_class_idx ? src[idx] : - cat_map->data.i[cat_ofs->data.i[cat_var_count]+src[idx]]; - _responses[i] = (float)val; - } - } - else - { - float* val_buf = (float*)(uchar*)inn_buf; - int* sample_idx_buf = (int*)(val_buf + sample_count); - const float* _values = get_ord_responses(data_root, val_buf, sample_idx_buf); - for( i = 0; i < count; i++ ) - { - int idx = sidx ? sidx[i] : i; - _responses[i] = _values[idx]; - } - } - } - - __END__; - - cvReleaseMat( &subsample_idx ); - cvReleaseMat( &subsample_co ); -} - - -CvDTreeNode* CvDTreeTrainData::new_node( CvDTreeNode* parent, int count, - int storage_idx, int offset ) -{ - CvDTreeNode* node = (CvDTreeNode*)cvSetNew( node_heap ); - - node->sample_count = count; - node->depth = parent ? parent->depth + 1 : 0; - node->parent = parent; - node->left = node->right = 0; - node->split = 0; - node->value = 0; - node->class_idx = 0; - node->maxlr = 0.; - - node->buf_idx = storage_idx; - node->offset = offset; - if( nv_heap ) - node->num_valid = (int*)cvSetNew( nv_heap ); - else - node->num_valid = 0; - node->alpha = node->node_risk = node->tree_risk = node->tree_error = 0.; - node->complexity = 0; - - if( params.cv_folds > 0 && cv_heap ) - { - int cv_n = params.cv_folds; - node->Tn = INT_MAX; - node->cv_Tn = (int*)cvSetNew( cv_heap ); - node->cv_node_risk = (double*)cvAlignPtr(node->cv_Tn + cv_n, sizeof(double)); - node->cv_node_error = node->cv_node_risk + cv_n; - } - else - { - node->Tn = 0; - node->cv_Tn = 0; - node->cv_node_risk = 0; - node->cv_node_error = 0; - } - - return node; -} - - -CvDTreeSplit* CvDTreeTrainData::new_split_ord( int vi, float cmp_val, - int split_point, int inversed, float quality ) -{ - CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); - split->var_idx = vi; - split->condensed_idx = INT_MIN; - split->ord.c = cmp_val; - split->ord.split_point = split_point; - split->inversed = inversed; - split->quality = quality; - split->next = 0; - - return split; -} - - -CvDTreeSplit* CvDTreeTrainData::new_split_cat( int vi, float quality ) -{ - CvDTreeSplit* split = (CvDTreeSplit*)cvSetNew( split_heap ); - int i, n = (max_c_count + 31)/32; - - split->var_idx = vi; - split->condensed_idx = INT_MIN; - split->inversed = 0; - split->quality = quality; - for( i = 0; i < n; i++ ) - split->subset[i] = 0; - split->next = 0; - - return split; -} - - -void CvDTreeTrainData::free_node( CvDTreeNode* node ) -{ - CvDTreeSplit* split = node->split; - free_node_data( node ); - while( split ) - { - CvDTreeSplit* next = split->next; - cvSetRemoveByPtr( split_heap, split ); - split = next; - } - node->split = 0; - cvSetRemoveByPtr( node_heap, node ); -} - - -void CvDTreeTrainData::free_node_data( CvDTreeNode* node ) -{ - if( node->num_valid ) - { - cvSetRemoveByPtr( nv_heap, node->num_valid ); - node->num_valid = 0; - } - // do not free cv_* fields, as all the cross-validation related data is released at once. -} - - -void CvDTreeTrainData::free_train_data() -{ - cvReleaseMat( &counts ); - cvReleaseMat( &buf ); - cvReleaseMat( &direction ); - cvReleaseMat( &split_buf ); - cvReleaseMemStorage( &temp_storage ); - cvReleaseMat( &responses_copy ); - cv_heap = nv_heap = 0; -} - - -void CvDTreeTrainData::clear() -{ - free_train_data(); - - cvReleaseMemStorage( &tree_storage ); - - cvReleaseMat( &var_idx ); - cvReleaseMat( &var_type ); - cvReleaseMat( &cat_count ); - cvReleaseMat( &cat_ofs ); - cvReleaseMat( &cat_map ); - cvReleaseMat( &priors ); - cvReleaseMat( &priors_mult ); - - node_heap = split_heap = 0; - - sample_count = var_all = var_count = max_c_count = ord_var_count = cat_var_count = 0; - have_labels = have_priors = is_classifier = false; - - buf_count = buf_size = 0; - shared = false; - - data_root = 0; - - rng = &cv::theRNG(); -} - - -int CvDTreeTrainData::get_num_classes() const -{ - return is_classifier ? cat_count->data.i[cat_var_count] : 0; -} - - -int CvDTreeTrainData::get_var_type(int vi) const -{ - return var_type->data.i[vi]; -} - -void CvDTreeTrainData::get_ord_var_data( CvDTreeNode* n, int vi, float* ord_values_buf, int* sorted_indices_buf, - const float** ord_values, const int** sorted_indices, int* sample_indices_buf ) -{ - int vidx = var_idx ? var_idx->data.i[vi] : vi; - int node_sample_count = n->sample_count; - int td_step = train_data->step/CV_ELEM_SIZE(train_data->type); - - const int* sample_indices = get_sample_indices(n, sample_indices_buf); - - if( !is_buf_16u ) - *sorted_indices = buf->data.i + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset; - else { - const unsigned short* short_indices = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset ); - for( int i = 0; i < node_sample_count; i++ ) - sorted_indices_buf[i] = short_indices[i]; - *sorted_indices = sorted_indices_buf; - } - - if( tflag == CV_ROW_SAMPLE ) - { - for( int i = 0; i < node_sample_count && - ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = (*sorted_indices)[i]; - idx = sample_indices[idx]; - ord_values_buf[i] = *(train_data->data.fl + idx * td_step + vidx); - } - } - else - for( int i = 0; i < node_sample_count && - ((((*sorted_indices)[i] >= 0) && !is_buf_16u) || (((*sorted_indices)[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = (*sorted_indices)[i]; - idx = sample_indices[idx]; - ord_values_buf[i] = *(train_data->data.fl + vidx* td_step + idx); - } - - *ord_values = ord_values_buf; -} - - -const int* CvDTreeTrainData::get_class_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (is_classifier) - return get_cat_var_data( n, var_count, labels_buf); - return 0; -} - -const int* CvDTreeTrainData::get_sample_indices( CvDTreeNode* n, int* indices_buf ) -{ - return get_cat_var_data( n, get_work_var_count(), indices_buf ); -} - -const float* CvDTreeTrainData::get_ord_responses( CvDTreeNode* n, float* values_buf, int*sample_indices_buf ) -{ - int _sample_count = n->sample_count; - int r_step = CV_IS_MAT_CONT(responses->type) ? 1 : responses->step/CV_ELEM_SIZE(responses->type); - const int* indices = get_sample_indices(n, sample_indices_buf); - - for( int i = 0; i < _sample_count && - (((indices[i] >= 0) && !is_buf_16u) || ((indices[i] != 65535) && is_buf_16u)); i++ ) - { - int idx = indices[i]; - values_buf[i] = *(responses->data.fl + idx * r_step); - } - - return values_buf; -} - - -const int* CvDTreeTrainData::get_cv_labels( CvDTreeNode* n, int* labels_buf ) -{ - if (have_labels) - return get_cat_var_data( n, get_work_var_count()- 1, labels_buf); - return 0; -} - - -const int* CvDTreeTrainData::get_cat_var_data( CvDTreeNode* n, int vi, int* cat_values_buf) -{ - const int* cat_values = 0; - if( !is_buf_16u ) - cat_values = buf->data.i + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset; - else { - const unsigned short* short_values = (const unsigned short*)(buf->data.s + n->buf_idx*get_length_subbuf() + - vi*sample_count + n->offset); - for( int i = 0; i < n->sample_count; i++ ) - cat_values_buf[i] = short_values[i]; - cat_values = cat_values_buf; - } - return cat_values; -} - - -int CvDTreeTrainData::get_child_buf_idx( CvDTreeNode* n ) -{ - int idx = n->buf_idx + 1; - if( idx >= buf_count ) - idx = shared ? 1 : 0; - return idx; -} - - -void CvDTreeTrainData::write_params( CvFileStorage* fs ) const -{ - CV_FUNCNAME( "CvDTreeTrainData::write_params" ); - - __BEGIN__; - - int vi, vcount = var_count; - - cvWriteInt( fs, "is_classifier", is_classifier ? 1 : 0 ); - cvWriteInt( fs, "var_all", var_all ); - cvWriteInt( fs, "var_count", var_count ); - cvWriteInt( fs, "ord_var_count", ord_var_count ); - cvWriteInt( fs, "cat_var_count", cat_var_count ); - - cvStartWriteStruct( fs, "training_params", CV_NODE_MAP ); - cvWriteInt( fs, "use_surrogates", params.use_surrogates ? 1 : 0 ); - - if( is_classifier ) - { - cvWriteInt( fs, "max_categories", params.max_categories ); - } - else - { - cvWriteReal( fs, "regression_accuracy", params.regression_accuracy ); - } - - cvWriteInt( fs, "max_depth", params.max_depth ); - cvWriteInt( fs, "min_sample_count", params.min_sample_count ); - cvWriteInt( fs, "cross_validation_folds", params.cv_folds ); - - if( params.cv_folds > 1 ) - { - cvWriteInt( fs, "use_1se_rule", params.use_1se_rule ? 1 : 0 ); - cvWriteInt( fs, "truncate_pruned_tree", params.truncate_pruned_tree ? 1 : 0 ); - } - - if( priors ) - cvWrite( fs, "priors", priors ); - - cvEndWriteStruct( fs ); - - if( var_idx ) - cvWrite( fs, "var_idx", var_idx ); - - cvStartWriteStruct( fs, "var_type", CV_NODE_SEQ+CV_NODE_FLOW ); - - for( vi = 0; vi < vcount; vi++ ) - cvWriteInt( fs, 0, var_type->data.i[vi] >= 0 ); - - cvEndWriteStruct( fs ); - - if( cat_count && (cat_var_count > 0 || is_classifier) ) - { - CV_ASSERT( cat_count != 0 ); - cvWrite( fs, "cat_count", cat_count ); - cvWrite( fs, "cat_map", cat_map ); - } - - __END__; -} - - -void CvDTreeTrainData::read_params( CvFileStorage* fs, CvFileNode* node ) -{ - CV_FUNCNAME( "CvDTreeTrainData::read_params" ); - - __BEGIN__; - - CvFileNode *tparams_node, *vartype_node; - CvSeqReader reader; - int vi, max_split_size, tree_block_size; - - is_classifier = (cvReadIntByName( fs, node, "is_classifier" ) != 0); - var_all = cvReadIntByName( fs, node, "var_all" ); - var_count = cvReadIntByName( fs, node, "var_count", var_all ); - cat_var_count = cvReadIntByName( fs, node, "cat_var_count" ); - ord_var_count = cvReadIntByName( fs, node, "ord_var_count" ); - - tparams_node = cvGetFileNodeByName( fs, node, "training_params" ); - - if( tparams_node ) // training parameters are not necessary - { - params.use_surrogates = cvReadIntByName( fs, tparams_node, "use_surrogates", 1 ) != 0; - - if( is_classifier ) - { - params.max_categories = cvReadIntByName( fs, tparams_node, "max_categories" ); - } - else - { - params.regression_accuracy = - (float)cvReadRealByName( fs, tparams_node, "regression_accuracy" ); - } - - params.max_depth = cvReadIntByName( fs, tparams_node, "max_depth" ); - params.min_sample_count = cvReadIntByName( fs, tparams_node, "min_sample_count" ); - params.cv_folds = cvReadIntByName( fs, tparams_node, "cross_validation_folds" ); - - if( params.cv_folds > 1 ) - { - params.use_1se_rule = cvReadIntByName( fs, tparams_node, "use_1se_rule" ) != 0; - params.truncate_pruned_tree = - cvReadIntByName( fs, tparams_node, "truncate_pruned_tree" ) != 0; - } - - priors = (CvMat*)cvReadByName( fs, tparams_node, "priors" ); - if( priors ) - { - if( !CV_IS_MAT(priors) ) - CV_ERROR( CV_StsParseError, "priors must stored as a matrix" ); - priors_mult = cvCloneMat( priors ); - } - } - - CV_CALL( var_idx = (CvMat*)cvReadByName( fs, node, "var_idx" )); - if( var_idx ) - { - if( !CV_IS_MAT(var_idx) || - (var_idx->cols != 1 && var_idx->rows != 1) || - var_idx->cols + var_idx->rows - 1 != var_count || - CV_MAT_TYPE(var_idx->type) != CV_32SC1 ) - CV_ERROR( CV_StsParseError, - "var_idx (if exist) must be valid 1d integer vector containing elements" ); - - for( vi = 0; vi < var_count; vi++ ) - if( (unsigned)var_idx->data.i[vi] >= (unsigned)var_all ) - CV_ERROR( CV_StsOutOfRange, "some of var_idx elements are out of range" ); - } - - ////// read var type - CV_CALL( var_type = cvCreateMat( 1, var_count + 2, CV_32SC1 )); - - cat_var_count = 0; - ord_var_count = -1; - vartype_node = cvGetFileNodeByName( fs, node, "var_type" ); - - if( vartype_node && CV_NODE_TYPE(vartype_node->tag) == CV_NODE_INT && var_count == 1 ) - var_type->data.i[0] = vartype_node->data.i ? cat_var_count++ : ord_var_count--; - else - { - if( !vartype_node || CV_NODE_TYPE(vartype_node->tag) != CV_NODE_SEQ || - vartype_node->data.seq->total != var_count ) - CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); - - cvStartReadSeq( vartype_node->data.seq, &reader ); - - for( vi = 0; vi < var_count; vi++ ) - { - CvFileNode* n = (CvFileNode*)reader.ptr; - if( CV_NODE_TYPE(n->tag) != CV_NODE_INT || (n->data.i & ~1) ) - CV_ERROR( CV_StsParseError, "var_type must exist and be a sequence of 0's and 1's" ); - var_type->data.i[vi] = n->data.i ? cat_var_count++ : ord_var_count--; - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); - } - } - var_type->data.i[var_count] = cat_var_count; - - ord_var_count = ~ord_var_count; - ////// - - if( cat_var_count > 0 || is_classifier ) - { - int ccount, total_c_count = 0; - CV_CALL( cat_count = (CvMat*)cvReadByName( fs, node, "cat_count" )); - CV_CALL( cat_map = (CvMat*)cvReadByName( fs, node, "cat_map" )); - - if( !CV_IS_MAT(cat_count) || !CV_IS_MAT(cat_map) || - (cat_count->cols != 1 && cat_count->rows != 1) || - CV_MAT_TYPE(cat_count->type) != CV_32SC1 || - cat_count->cols + cat_count->rows - 1 != cat_var_count + is_classifier || - (cat_map->cols != 1 && cat_map->rows != 1) || - CV_MAT_TYPE(cat_map->type) != CV_32SC1 ) - CV_ERROR( CV_StsParseError, - "Both cat_count and cat_map must exist and be valid 1d integer vectors of an appropriate size" ); - - ccount = cat_var_count + is_classifier; - - CV_CALL( cat_ofs = cvCreateMat( 1, ccount + 1, CV_32SC1 )); - cat_ofs->data.i[0] = 0; - max_c_count = 1; - - for( vi = 0; vi < ccount; vi++ ) - { - int val = cat_count->data.i[vi]; - if( val <= 0 ) - CV_ERROR( CV_StsOutOfRange, "some of cat_count elements are out of range" ); - max_c_count = MAX( max_c_count, val ); - cat_ofs->data.i[vi+1] = total_c_count += val; - } - - if( cat_map->cols + cat_map->rows - 1 != total_c_count ) - CV_ERROR( CV_StsBadSize, - "cat_map vector length is not equal to the total number of categories in all categorical vars" ); - } - - max_split_size = cvAlign(sizeof(CvDTreeSplit) + - (MAX(0,max_c_count - 33)/32)*sizeof(int),sizeof(void*)); - - tree_block_size = MAX((int)sizeof(CvDTreeNode)*8, max_split_size); - tree_block_size = MAX(tree_block_size + block_size_delta, min_block_size); - CV_CALL( tree_storage = cvCreateMemStorage( tree_block_size )); - CV_CALL( node_heap = cvCreateSet( 0, sizeof(node_heap[0]), - sizeof(CvDTreeNode), tree_storage )); - CV_CALL( split_heap = cvCreateSet( 0, sizeof(split_heap[0]), - max_split_size, tree_storage )); - - __END__; -} - -/////////////////////// Decision Tree ///////////////////////// -CvDTreeParams::CvDTreeParams() : max_categories(10), max_depth(INT_MAX), min_sample_count(10), - cv_folds(10), use_surrogates(true), use_1se_rule(true), - truncate_pruned_tree(true), regression_accuracy(0.01f), priors(0) -{} - -CvDTreeParams::CvDTreeParams( int _max_depth, int _min_sample_count, - float _regression_accuracy, bool _use_surrogates, - int _max_categories, int _cv_folds, - bool _use_1se_rule, bool _truncate_pruned_tree, - const float* _priors ) : - max_categories(_max_categories), max_depth(_max_depth), - min_sample_count(_min_sample_count), cv_folds (_cv_folds), - use_surrogates(_use_surrogates), use_1se_rule(_use_1se_rule), - truncate_pruned_tree(_truncate_pruned_tree), - regression_accuracy(_regression_accuracy), - priors(_priors) -{} - -CvDTree::CvDTree() -{ - data = 0; - var_importance = 0; - default_model_name = "my_tree"; - - clear(); -} - - -void CvDTree::clear() -{ - cvReleaseMat( &var_importance ); - if( data ) - { - if( !data->shared ) - delete data; - else - free_tree(); - data = 0; - } - root = 0; - pruned_tree_idx = -1; -} - - -CvDTree::~CvDTree() -{ - clear(); -} - - -const CvDTreeNode* CvDTree::get_root() const -{ - return root; -} - - -int CvDTree::get_pruned_tree_idx() const -{ - return pruned_tree_idx; -} - - -CvDTreeTrainData* CvDTree::get_data() -{ - return data; -} - - -bool CvDTree::train( const CvMat* _train_data, int _tflag, - const CvMat* _responses, const CvMat* _var_idx, - const CvMat* _sample_idx, const CvMat* _var_type, - const CvMat* _missing_mask, CvDTreeParams _params ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - clear(); - data = new CvDTreeTrainData( _train_data, _tflag, _responses, - _var_idx, _sample_idx, _var_type, - _missing_mask, _params, false ); - CV_CALL( result = do_train(0) ); - - __END__; - - return result; -} - -bool CvDTree::train( const Mat& _train_data, int _tflag, - const Mat& _responses, const Mat& _var_idx, - const Mat& _sample_idx, const Mat& _var_type, - const Mat& _missing_mask, CvDTreeParams _params ) -{ - train_data_hdr = _train_data; - train_data_mat = _train_data; - responses_hdr = _responses; - responses_mat = _responses; - - CvMat vidx=_var_idx, sidx=_sample_idx, vtype=_var_type, mmask=_missing_mask; - - return train(&train_data_hdr, _tflag, &responses_hdr, vidx.data.ptr ? &vidx : 0, sidx.data.ptr ? &sidx : 0, - vtype.data.ptr ? &vtype : 0, mmask.data.ptr ? &mmask : 0, _params); -} - - -bool CvDTree::train( CvMLData* _data, CvDTreeParams _params ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* var_types = _data->get_var_types(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - - CV_CALL( result = train( values, CV_ROW_SAMPLE, response, var_idx, - train_sidx, var_types, missing, _params ) ); - - __END__; - - return result; -} - -bool CvDTree::train( CvDTreeTrainData* _data, const CvMat* _subsample_idx ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::train" ); - - __BEGIN__; - - clear(); - data = _data; - data->shared = true; - CV_CALL( result = do_train(_subsample_idx)); - - __END__; - - return result; -} - - -bool CvDTree::do_train( const CvMat* _subsample_idx ) -{ - bool result = false; - - CV_FUNCNAME( "CvDTree::do_train" ); - - __BEGIN__; - - root = data->subsample_data( _subsample_idx ); - - CV_CALL( try_split_node(root)); - - if( root->split ) - { - CV_Assert( root->left ); - CV_Assert( root->right ); - - if( data->params.cv_folds > 0 ) - CV_CALL( prune_cv() ); - - if( !data->shared ) - data->free_train_data(); - - result = true; - } - - __END__; - - return result; -} - - -void CvDTree::try_split_node( CvDTreeNode* node ) -{ - CvDTreeSplit* best_split = 0; - int i, n = node->sample_count, vi; + int i, n = node.sample_count = (int)sidx.size(); bool can_split = true; - double quality_scale; + vector sleft, sright; - calc_node_value( node ); + calcValue( nidx, sidx ); - if( node->sample_count <= data->params.min_sample_count || - node->depth >= data->params.max_depth ) + if( n <= params.minSampleCount || node.depth >= params.maxDepth ) can_split = false; - - if( can_split && data->is_classifier ) + else if( _isClassifier ) { - // check if we have a "pure" node, - // we assume that cls_count is filled by calc_node_value() - int* cls_count = data->counts->data.i; - int nz = 0, m = data->get_num_classes(); - for( i = 0; i < m; i++ ) - nz += cls_count[i] != 0; - if( nz == 1 ) // there is only one class + const int* responses = &w->cat_responses[0]; + const int* s = &sidx[0]; + int first = responses[s[0]]; + for( i = 1; i < n; i++ ) + if( responses[s[i]] != first ) + break; + if( i == n ) can_split = false; } - else if( can_split ) + else { - if( sqrt(node->node_risk)/n < data->params.regression_accuracy ) + if( sqrt(node.node_risk) < params.regressionAccuracy ) can_split = false; } if( can_split ) + node.split = findBestSplit( sidx ); + + //printf("depth=%d, nidx=%d, parent=%d, n=%d, %s, value=%.1f, risk=%.1f\n", node.depth, nidx, node.parent, n, (node.split < 0 ? "leaf" : varType[w->wsplits[node.split].varIdx] == VAR_CATEGORICAL ? "cat" : "ord"), node.value, node.node_risk); + + if( node.split >= 0 ) { - best_split = find_best_split(node); - // TODO: check the split quality ... - node->split = best_split; - } - if( !can_split || !best_split ) - { - data->free_node_data(node); - return; + node.defaultDir = calcDir( node.split, sidx, sleft, sright ); + if( params.useSurrogates ) + CV_Error( CV_StsNotImplemented, "surrogate splits are not implemented yet"); + + int left = addNodeAndTrySplit( nidx, sleft ); + int right = addNodeAndTrySplit( nidx, sright ); + w->wnodes[nidx].left = left; + w->wnodes[nidx].right = right; + CV_Assert( w->wnodes[nidx].left > 0 && w->wnodes[nidx].right > 0 ); } - quality_scale = calc_node_dir( node ); - if( data->params.use_surrogates ) - { - // find all the surrogate splits - // and sort them by their similarity to the primary one - for( vi = 0; vi < data->var_count; vi++ ) - { - CvDTreeSplit* split; - int ci = data->get_var_type(vi); - - if( vi == best_split->var_idx ) - continue; - - if( ci >= 0 ) - split = find_surrogate_split_cat( node, vi ); - else - split = find_surrogate_split_ord( node, vi ); - - if( split ) - { - // insert the split - CvDTreeSplit* prev_split = node->split; - split->quality = (float)(split->quality*quality_scale); - - while( prev_split->next && - prev_split->next->quality > split->quality ) - prev_split = prev_split->next; - split->next = prev_split->next; - prev_split->next = split; - } - } - } - split_node_data( node ); - try_split_node( node->left ); - try_split_node( node->right ); + return nidx; } - -// calculate direction (left(-1),right(1),missing(0)) -// for each sample using the best split -// the function returns scale coefficients for surrogate split quality factors. -// the scale is applied to normalize surrogate split quality relatively to the -// best (primary) split quality. That is, if a surrogate split is absolutely -// identical to the primary split, its quality will be set to the maximum value = -// quality of the primary split; otherwise, it will be lower. -// besides, the function compute node->maxlr, -// minimum possible quality (w/o considering the above mentioned scale) -// for a surrogate split. Surrogate splits with quality less than node->maxlr -// are not discarded. -double CvDTree::calc_node_dir( CvDTreeNode* node ) +int DTreesImpl::findBestSplit( const vector& _sidx ) { - char* dir = (char*)data->direction->data.ptr; - int i, n = node->sample_count, vi = node->split->var_idx; - double L, R; + const vector& activeVars = getActiveVars(); + int splitidx = -1; + int vi_, nv = (int)activeVars.size(); + AutoBuffer buf(w->maxSubsetSize*2); + int *subset = buf, *best_subset = subset + w->maxSubsetSize; + WSplit split, best_split; + best_split.quality = 0.; - assert( !node->split->inversed ); - - if( data->get_var_type(vi) >= 0 ) // split on categorical var + for( vi_ = 0; vi_ < nv; vi_++ ) { - cv::AutoBuffer inn_buf(n*(!data->have_priors ? 1 : 2)); - int* labels_buf = (int*)inn_buf; - const int* labels = data->get_cat_var_data( node, vi, labels_buf ); - const int* subset = node->split->subset; - if( !data->have_priors ) + int vi = activeVars[vi_]; + if( varType[vi] == VAR_CATEGORICAL ) { - int sum = 0, sum_abs = 0; + if( _isClassifier ) + split = findSplitCatClass(vi, _sidx, 0, subset); + else + split = findSplitCatReg(vi, _sidx, 0, subset); + } + else + { + if( _isClassifier ) + split = findSplitOrdClass(vi, _sidx, 0); + else + split = findSplitOrdReg(vi, _sidx, 0); + } + if( split.quality > best_split.quality ) + { + best_split = split; + std::swap(subset, best_subset); + } + } + + if( best_split.quality > 0 ) + { + int best_vi = best_split.varIdx; + CV_Assert( compVarIdx[best_split.varIdx] >= 0 && best_vi >= 0 ); + int i, prevsz = (int)w->wsubsets.size(), ssize = getSubsetSize(best_vi); + w->wsubsets.resize(prevsz + ssize); + for( i = 0; i < ssize; i++ ) + w->wsubsets[prevsz + i] = best_subset[i]; + best_split.subsetOfs = prevsz; + w->wsplits.push_back(best_split); + splitidx = (int)(w->wsplits.size()-1); + } + + return splitidx; +} + +void DTreesImpl::calcValue( int nidx, const vector& _sidx ) +{ + WNode* node = &w->wnodes[nidx]; + int i, j, k, n = (int)_sidx.size(), cv_n = params.CVFolds; + int m = (int)classLabels.size(); + + cv::AutoBuffer buf(std::max(m, 3)*(cv_n+1)); + + if( cv_n > 0 ) + { + size_t sz = w->cv_Tn.size(); + w->cv_Tn.resize(sz + cv_n); + w->cv_node_risk.resize(sz + cv_n); + w->cv_node_error.resize(sz + cv_n); + } + + if( _isClassifier ) + { + // in case of classification tree: + // * node value is the label of the class that has the largest weight in the node. + // * node risk is the weighted number of misclassified samples, + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated as the weighted number of + // misclassified samples with cv_labels(*)==j. + + // compute the number of instances of each class + double* cls_count = buf; + double* cv_cls_count = cls_count + m; + + double max_val = -1, total_weight = 0; + int max_k = -1; + + for( k = 0; k < m; k++ ) + cls_count[k] = 0; + + if( cv_n == 0 ) + { + for( i = 0; i < n; i++ ) + { + int si = _sidx[i]; + cls_count[w->cat_responses[si]] += w->sample_weights[si]; + } + } + else + { + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cv_cls_count[j*m + k] = 0; for( i = 0; i < n; i++ ) { - int idx = labels[i]; - int d = ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) ) ? - CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d; sum_abs += d & 1; - dir[i] = (char)d; + int si = _sidx[i]; + j = w->cv_labels[si]; k = w->cat_responses[si]; + cv_cls_count[j*m + k] += w->sample_weights[si]; } - R = (sum_abs + sum) >> 1; - L = (sum_abs - sum) >> 1; + for( j = 0; j < cv_n; j++ ) + for( k = 0; k < m; k++ ) + cls_count[k] += cv_cls_count[j*m + k]; } - else - { - const double* priors = data->priors_mult->data.db; - double sum = 0, sum_abs = 0; - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - for( i = 0; i < n; i++ ) + for( k = 0; k < m; k++ ) + { + double val = cls_count[k]; + total_weight += val; + if( max_val < val ) { - int idx = labels[i]; - double w = priors[responses[i]]; - int d = idx >= 0 ? CV_DTREE_CAT_DIR(idx,subset) : 0; - sum += d*w; sum_abs += (d & 1)*w; - dir[i] = (char)d; + max_val = val; + max_k = k; } - - R = (sum_abs + sum) * 0.5; - L = (sum_abs - sum) * 0.5; } - } - else // split on ordered var - { - int split_point = node->split->ord.split_point; - int n1 = node->get_num_valid(vi); - cv::AutoBuffer inn_buf(n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float))); - float* val_buf = (float*)(uchar*)inn_buf; - int* sorted_buf = (int*)(val_buf + n); - int* sample_idx_buf = sorted_buf + n; - const float* val = 0; - const int* sorted = 0; - data->get_ord_var_data( node, vi, val_buf, sorted_buf, &val, &sorted, sample_idx_buf); - assert( 0 <= split_point && split_point < n1-1 ); + node->class_idx = max_k; + node->value = classLabels[max_k]; + node->node_risk = total_weight - max_val; - if( !data->have_priors ) + for( j = 0; j < cv_n; j++ ) { - for( i = 0; i <= split_point; i++ ) - dir[sorted[i]] = (char)-1; - for( ; i < n1; i++ ) - dir[sorted[i]] = (char)1; - for( ; i < n; i++ ) - dir[sorted[i]] = (char)0; + double sum_k = 0, sum = 0, max_val_k = 0; + max_val = -1; max_k = -1; - L = split_point-1; - R = n1 - split_point + 1; - } - else - { - const double* priors = data->priors_mult->data.db; - int* responses_buf = sample_idx_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - L = R = 0; - - for( i = 0; i <= split_point; i++ ) + for( k = 0; k < m; k++ ) { - int idx = sorted[i]; - double w = priors[responses[idx]]; - dir[idx] = (char)-1; - L += w; - } - - for( ; i < n1; i++ ) - { - int idx = sorted[i]; - double w = priors[responses[idx]]; - dir[idx] = (char)1; - R += w; - } - - for( ; i < n; i++ ) - dir[sorted[i]] = (char)0; - } - } - node->maxlr = MAX( L, R ); - return node->split->quality/(L + R); -} - - -namespace cv -{ - -template<> CV_EXPORTS void DefaultDeleter::operator ()(CvDTreeSplit* obj) const -{ - fastFree(obj); -} - -DTreeBestSplitFinder::DTreeBestSplitFinder( CvDTree* _tree, CvDTreeNode* _node) -{ - tree = _tree; - node = _node; - splitSize = tree->get_data()->split_heap->elem_size; - - bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(bestSplit.get(), 0, splitSize); - bestSplit->quality = -1; - bestSplit->condensed_idx = INT_MIN; - split.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(split.get(), 0, splitSize); - //haveSplit = false; -} - -DTreeBestSplitFinder::DTreeBestSplitFinder( const DTreeBestSplitFinder& finder, Split ) -{ - tree = finder.tree; - node = finder.node; - splitSize = tree->get_data()->split_heap->elem_size; - - bestSplit.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memcpy(bestSplit.get(), finder.bestSplit.get(), splitSize); - split.reset((CvDTreeSplit*)fastMalloc(splitSize)); - memset(split.get(), 0, splitSize); -} - -void DTreeBestSplitFinder::operator()(const BlockedRange& range) -{ - int vi, vi1 = range.begin(), vi2 = range.end(); - int n = node->sample_count; - CvDTreeTrainData* data = tree->get_data(); - AutoBuffer inn_buf(2*n*(sizeof(int) + sizeof(float))); - - for( vi = vi1; vi < vi2; vi++ ) - { - CvDTreeSplit *res; - int ci = data->get_var_type(vi); - if( node->get_num_valid(vi) <= 1 ) - continue; - - if( data->is_classifier ) - { - if( ci >= 0 ) - res = tree->find_split_cat_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = tree->find_split_ord_class( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - else - { - if( ci >= 0 ) - res = tree->find_split_cat_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - else - res = tree->find_split_ord_reg( node, vi, bestSplit->quality, split, (uchar*)inn_buf ); - } - - if( res && bestSplit->quality < split->quality ) - memcpy( bestSplit.get(), split.get(), splitSize ); - } -} - -void DTreeBestSplitFinder::join( DTreeBestSplitFinder& rhs ) -{ - if( bestSplit->quality < rhs.bestSplit->quality ) - memcpy( bestSplit.get(), rhs.bestSplit.get(), splitSize ); -} -} - - -CvDTreeSplit* CvDTree::find_best_split( CvDTreeNode* node ) -{ - DTreeBestSplitFinder finder( this, node ); - - cv::parallel_reduce(cv::BlockedRange(0, data->var_count), finder); - - CvDTreeSplit *bestSplit = 0; - if( finder.bestSplit->quality > 0 ) - { - bestSplit = data->new_split_cat( 0, -1.0f ); - memcpy( bestSplit, finder.bestSplit, finder.splitSize ); - } - - return bestSplit; -} - -CvDTreeSplit* CvDTree::find_split_ord_class( CvDTreeNode* node, int vi, - float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) -{ - const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); - int m = data->get_num_classes(); - - int base_size = 2*m*sizeof(int); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(3*sizeof(int)+sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, - &sorted_indices, sample_indices_buf ); - int* responses_buf = sample_indices_buf + n; - const int* responses = data->get_class_labels( node, responses_buf ); - - const int* rc0 = data->counts->data.i; - int* lc = (int*)base_buf; - int* rc = lc + m; - int i, best_i = -1; - double lsum2 = 0, rsum2 = 0, best_val = init_quality; - const double* priors = data->have_priors ? data->priors_mult->data.db : 0; - - // init arrays of class instance counters on both sides of the split - for( i = 0; i < m; i++ ) - { - lc[i] = 0; - rc[i] = rc0[i]; - } - - // compensate for missing values - for( i = n1; i < n; i++ ) - { - rc[responses[sorted_indices[i]]]--; - } - - if( !priors ) - { - int L = 0, R = n1; - - for( i = 0; i < m; i++ ) - rsum2 += (double)rc[i]*rc[i]; - - for( i = 0; i < n1 - 1; i++ ) - { - int idx = responses[sorted_indices[i]]; - int lv, rv; - L++; R--; - lv = lc[idx]; rv = rc[idx]; - lsum2 += lv*2 + 1; - rsum2 -= rv*2 - 1; - lc[idx] = lv + 1; rc[idx] = rv - 1; - - if( values[i] + epsilon < values[i+1] ) - { - double val = (lsum2*R + rsum2*L)/((double)L*R); - if( best_val < val ) + double val_k = cv_cls_count[j*m + k]; + double val = cls_count[k] - val_k; + sum_k += val_k; + sum += val; + if( max_val < val ) { - best_val = val; - best_i = i; + max_val = val; + max_val_k = val_k; + max_k = k; } } + + w->cv_Tn[nidx*cv_n + j] = INT_MAX; + w->cv_node_risk[nidx*cv_n + j] = sum - max_val; + w->cv_node_error[nidx*cv_n + j] = sum_k - max_val_k; } } else { - double L = 0, R = 0; - for( i = 0; i < m; i++ ) + // in case of regression tree: + // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, + // n is the number of samples in the node. + // * node risk is the sum of squared errors: sum_i((Y_i - )^2) + // * j-th cross-validation fold value and risk are calculated as above, + // but using the samples with cv_labels(*)!=j. + // * j-th cross-validation fold error is calculated + // using samples with cv_labels(*)==j as the test subset: + // error_j = sum_(i,cv_labels(i)==j)((Y_i - )^2), + // where node_value_j is the node value calculated + // as described in the previous bullet, and summation is done + // over the samples with cv_labels(*)==j. + double sum = 0, sum2 = 0, sumw = 0; + + if( cv_n == 0 ) { - double wv = rc[i]*priors[i]; - R += wv; - rsum2 += wv*wv; + for( i = 0; i < n; i++ ) + { + int si = _sidx[i]; + double wval = w->sample_weights[si]; + double t = w->ord_responses[si]; + sum += t*wval; + sum2 += t*t*wval; + sumw += wval; + } + } + else + { + double *cv_sum = buf, *cv_sum2 = cv_sum + cv_n; + double* cv_count = (double*)(cv_sum2 + cv_n); + + for( j = 0; j < cv_n; j++ ) + { + cv_sum[j] = cv_sum2[j] = 0.; + cv_count[j] = 0; + } + + for( i = 0; i < n; i++ ) + { + int si = _sidx[i]; + j = w->cv_labels[si]; + double wval = w->sample_weights[si]; + double t = w->ord_responses[si]; + cv_sum[j] += t*wval; + cv_sum2[j] += t*t*wval; + cv_count[j] += wval; + } + + for( j = 0; j < cv_n; j++ ) + { + sum += cv_sum[j]; + sum2 += cv_sum2[j]; + sumw += cv_count[j]; + } + + for( j = 0; j < cv_n; j++ ) + { + double s = sum - cv_sum[j], si = sum - s; + double s2 = sum2 - cv_sum2[j], s2i = sum2 - s2; + double c = cv_count[j], ci = sumw - c; + double r = si/std::max(ci, DBL_EPSILON); + w->cv_node_risk[nidx*cv_n + j] = s2i - r*r*ci; + w->cv_node_error[nidx*cv_n + j] = s2 - 2*r*s + c*r*r; + w->cv_Tn[nidx*cv_n + j] = INT_MAX; + } } - for( i = 0; i < n1 - 1; i++ ) - { - int idx = responses[sorted_indices[i]]; - int lv, rv; - double p = priors[idx], p2 = p*p; - L += p; R -= p; - lv = lc[idx]; rv = rc[idx]; - lsum2 += p2*(lv*2 + 1); - rsum2 -= p2*(rv*2 - 1); - lc[idx] = lv + 1; rc[idx] = rv - 1; + node->node_risk = sum2 - (sum/sumw)*sum; + node->value = sum/sumw; + } +} - if( values[i] + epsilon < values[i+1] ) +DTreesImpl::WSplit DTreesImpl::findSplitOrdClass( int vi, const vector& _sidx, double initQuality ) +{ + const double epsilon = FLT_EPSILON*2; + int n = (int)_sidx.size(); + int m = (int)classLabels.size(); + + cv::AutoBuffer buf(n*(sizeof(float) + sizeof(int)) + m*2*sizeof(double)); + const int* sidx = &_sidx[0]; + const int* responses = &w->cat_responses[0]; + const double* weights = &w->sample_weights[0]; + double* lcw = (double*)(uchar*)buf; + double* rcw = lcw + m; + float* values = (float*)(rcw + m); + int* sorted_idx = (int*)(values + n); + int i, best_i = -1; + double best_val = initQuality; + + for( i = 0; i < m; i++ ) + lcw[i] = rcw[i] = 0.; + + w->data->getValues( vi, _sidx, values ); + + for( i = 0; i < n; i++ ) + { + sorted_idx[i] = i; + int si = sidx[i]; + rcw[responses[si]] += weights[si]; + } + + std::sort(sorted_idx, sorted_idx + n, cmp_lt_idx(values)); + + double L = 0, R = 0, lsum2 = 0, rsum2 = 0; + for( i = 0; i < m; i++ ) + { + double wval = rcw[i]; + R += wval; + rsum2 += wval*wval; + } + + for( i = 0; i < n - 1; i++ ) + { + int curr = sorted_idx[i]; + int next = sorted_idx[i+1]; + int si = sidx[curr]; + double wval = weights[si], w2 = wval*wval; + L += wval; R -= wval; + int idx = responses[si]; + double lv = lcw[idx], rv = rcw[idx]; + lsum2 += 2*lv*wval + w2; + rsum2 -= 2*rv*wval - w2; + lcw[idx] = lv + wval; rcw[idx] = rv - wval; + + if( values[curr] + epsilon < values[next] ) + { + double val = (lsum2*R + rsum2*L)/(L*R); + if( best_val < val ) { - double val = (lsum2*R + rsum2*L)/((double)L*R); - if( best_val < val ) - { - best_val = val; - best_i = i; - } + best_val = val; + best_i = i; } } } - CvDTreeSplit* split = 0; + WSplit split; if( best_i >= 0 ) { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; + split.varIdx = vi; + split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; + split.inversed = false; + split.quality = (float)best_val; } return split; } - -void CvDTree::cluster_categories( const int* vectors, int n, int m, - int* csums, int k, int* labels ) +// simple k-means, slightly modified to take into account the "weight" (L1-norm) of each vector. +void DTreesImpl::clusterCategories( const double* vectors, int n, int m, double* csums, int k, int* labels ) { - // TODO: consider adding priors (class weights) and sample weights to the clustering algorithm int iters = 0, max_iters = 100; int i, j, idx; cv::AutoBuffer buf(n + k); double *v_weights = buf, *c_weights = buf + n; bool modified = true; - RNG* r = data->rng; + RNG r((uint64)-1); // assign labels randomly for( i = 0; i < n; i++ ) { - int sum = 0; - const int* v = vectors + i*m; - labels[i] = i < k ? i : r->uniform(0, k); + double sum = 0; + const double* v = vectors + i*m; + labels[i] = i < k ? i : r.uniform(0, k); // compute weight of each vector for( j = 0; j < m; j++ ) @@ -2115,9 +764,9 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, for( i = 0; i < n; i++ ) { - int i1 = (*r)(n); - int i2 = (*r)(n); - CV_SWAP( labels[i1], labels[i2], j ); + int i1 = r.uniform(0, n); + int i2 = r.uniform(0, n); + std::swap( labels[i1], labels[i2] ); } for( iters = 0; iters <= max_iters; iters++ ) @@ -2131,8 +780,8 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, for( i = 0; i < n; i++ ) { - const int* v = vectors + i*m; - int* s = csums + labels[i]*m; + const double* v = vectors + i*m; + double* s = csums + labels[i]*m; for( j = 0; j < m; j++ ) s[j] += v[j]; } @@ -2146,8 +795,8 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, // calculate weight of each cluster for( i = 0; i < k; i++ ) { - const int* s = csums + i*m; - int sum = 0; + const double* s = csums + i*m; + double sum = 0; for( j = 0; j < m; j++ ) sum += s[j]; c_weights[i] = sum ? 1./sum : 0; @@ -2156,14 +805,14 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, // now for each vector determine the closest cluster for( i = 0; i < n; i++ ) { - const int* v = vectors + i*m; + const double* v = vectors + i*m; double alpha = v_weights[i]; double min_dist2 = DBL_MAX; int min_idx = -1; for( idx = 0; idx < k; idx++ ) { - const int* s = csums + idx*m; + const double* s = csums + idx*m; double dist2 = 0., beta = c_weights[idx]; for( j = 0; j < m; j++ ) { @@ -2184,43 +833,36 @@ void CvDTree::cluster_categories( const int* vectors, int n, int m, } } - -CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float init_quality, - CvDTreeSplit* _split, uchar* _ext_buf ) +DTreesImpl::WSplit DTreesImpl::findSplitCatClass( int vi, const vector& _sidx, + double initQuality, int* subset ) { - int ci = data->get_var_type(vi); - int n = node->sample_count; - int m = data->get_num_classes(); - int _mi = data->cat_count->data.i[ci], mi = _mi; + int _mi = getCatCount(vi), mi = _mi; + int n = (int)_sidx.size(); + int m = (int)classLabels.size(); - int base_size = m*(3 + mi)*sizeof(int) + (mi+1)*sizeof(double); - if( m > 2 && mi > data->params.max_categories ) - base_size += (m*std::min(data->params.max_categories, n) + mi)*sizeof(int); + int base_size = m*(3 + mi) + mi + 1; + if( m > 2 && mi > params.maxCategories ) + base_size += m*std::min(params.maxCategories, n) + mi; else - base_size += mi*sizeof(int*); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + 2*n*sizeof(int)); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; + base_size += mi; + AutoBuffer buf(base_size + n); - int* lc = (int*)base_buf; - int* rc = lc + m; - int* _cjk = rc + m*2, *cjk = _cjk; - double* c_weights = (double*)alignPtr(cjk + m*mi, sizeof(double)); + double* lc = (double*)buf; + double* rc = lc + m; + double* _cjk = rc + m*2, *cjk = _cjk; + double* c_weights = cjk + m*mi; - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); + int* labels = (int*)(buf + base_size); + w->data->getNormCatValues(vi, _sidx, labels); + const int* responses = &w->cat_responses[0]; + const double* weights = &w->sample_weights[0]; int* cluster_labels = 0; - int** int_ptr = 0; - int i, j, k, idx; + double** dbl_ptr = 0; + int i, j, k, si, idx; double L = 0, R = 0; - double best_val = init_quality; + double best_val = initQuality; int prevcode = 0, best_subset = -1, subset_i, subset_n, subtract = 0; - const double* priors = data->priors_mult->data.db; // init array of counters: // c_{jk} - number of samples that have vi-th input variable = j and response = k. @@ -2230,19 +872,20 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in for( i = 0; i < n; i++ ) { - j = ( labels[i] == 65535 && data->is_buf_16u) ? -1 : labels[i]; - k = responses[i]; - cjk[j*m + k]++; + si = _sidx[i]; + j = labels[i]; + k = responses[si]; + cjk[j*m + k] += weights[si]; } if( m > 2 ) { - if( mi > data->params.max_categories ) + if( mi > params.maxCategories ) { - mi = MIN(data->params.max_categories, n); - cjk = (int*)(c_weights + _mi); - cluster_labels = cjk + m*mi; - cluster_categories( _cjk, _mi, m, cjk, mi, cluster_labels ); + mi = std::min(params.maxCategories, n); + cjk = c_weights + _mi; + cluster_labels = (int*)(cjk + m*mi); + clusterCategories( _cjk, _mi, m, cjk, mi, cluster_labels ); } subset_i = 1; subset_n = 1 << mi; @@ -2250,19 +893,20 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in else { assert( m == 2 ); - int_ptr = (int**)(c_weights + _mi); + dbl_ptr = (double**)(c_weights + _mi); for( j = 0; j < mi; j++ ) - int_ptr[j] = cjk + j*2 + 1; - std::sort(int_ptr, int_ptr + mi, LessThanPtr()); + dbl_ptr[j] = cjk + j*2 + 1; + std::sort(dbl_ptr, dbl_ptr + mi, cmp_lt_ptr()); subset_i = 0; subset_n = mi; } for( k = 0; k < m; k++ ) { - int sum = 0; + double sum = 0; for( j = 0; j < mi; j++ ) sum += cjk[j*m + k]; + CV_Assert(sum > 0); rc[k] = sum; lc[k] = 0; } @@ -2271,19 +915,17 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in { double sum = 0; for( k = 0; k < m; k++ ) - sum += cjk[j*m + k]*priors[k]; + sum += cjk[j*m + k]; c_weights[j] = sum; R += c_weights[j]; } for( ; subset_i < subset_n; subset_i++ ) { - double weight; - int* crow; double lsum2 = 0, rsum2 = 0; if( m == 2 ) - idx = (int)(int_ptr[subset_i] - cjk)/2; + idx = (int)(dbl_ptr[subset_i] - cjk)/2; else { int graycode = (subset_i>>1)^subset_i; @@ -2298,8 +940,8 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in prevcode = graycode; } - crow = cjk + idx*m; - weight = c_weights[idx]; + double* crow = cjk + idx*m; + double weight = c_weights[idx]; if( weight < FLT_EPSILON ) continue; @@ -2307,12 +949,11 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in { for( k = 0; k < m; k++ ) { - int t = crow[k]; - int lval = lc[k] + t; - int rval = rc[k] - t; - double p = priors[k], p2 = p*p; - lsum2 += p2*lval*lval; - rsum2 += p2*rval*rval; + double t = crow[k]; + double lval = lc[k] + t; + double rval = rc[k] - t; + lsum2 += lval*lval; + rsum2 += rval*rval; lc[k] = lval; rc[k] = rval; } L += weight; @@ -2322,12 +963,11 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in { for( k = 0; k < m; k++ ) { - int t = crow[k]; - int lval = lc[k] - t; - int rval = rc[k] + t; - double p = priors[k], p2 = p*p; - lsum2 += p2*lval*lval; - rsum2 += p2*rval*rval; + double t = crow[k]; + double lval = lc[k] - t; + double rval = rc[k] + t; + lsum2 += lval*lval; + rsum2 += rval*rval; lc[k] = lval; rc[k] = rval; } L -= weight; @@ -2336,7 +976,7 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in if( L > FLT_EPSILON && R > FLT_EPSILON ) { - double val = (lsum2*R + rsum2*L)/((double)L*R); + double val = (lsum2*R + rsum2*L)/(L*R); if( best_val < val ) { best_val = val; @@ -2345,19 +985,18 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in } } - CvDTreeSplit* split = 0; + WSplit split; if( best_subset >= 0 ) { - split = _split ? _split : data->new_split_cat( 0, -1.0f ); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + split.varIdx = vi; + split.quality = (float)best_val; + memset( subset, 0, getSubsetSize(vi) * sizeof(int) ); if( m == 2 ) { for( i = 0; i <= best_subset; i++ ) { - idx = (int)(int_ptr[i] - cjk) >> 1; - split->subset[idx >> 5] |= 1 << (idx & 31); + idx = (int)(dbl_ptr[i] - cjk) >> 1; + subset[idx >> 5] |= 1 << (idx & 31); } } else @@ -2366,52 +1005,54 @@ CvDTreeSplit* CvDTree::find_split_cat_class( CvDTreeNode* node, int vi, float in { idx = cluster_labels ? cluster_labels[i] : i; if( best_subset & (1 << idx) ) - split->subset[i >> 5] |= 1 << (i & 31); + subset[i >> 5] |= 1 << (i & 31); } } } return split; } - -CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +DTreesImpl::WSplit DTreesImpl::findSplitOrdReg( int vi, const vector& _sidx, double initQuality ) { const float epsilon = FLT_EPSILON*2; - int n = node->sample_count; - int n1 = node->get_num_valid(vi); + const double* weights = &w->sample_weights[0]; + int n = (int)_sidx.size(); - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate(2*n*(sizeof(int) + sizeof(float))); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - float* responses_buf = (float*)(sample_indices_buf + n); - const float* responses = data->get_ord_responses( node, responses_buf, sample_indices_buf ); + AutoBuffer buf(n*(sizeof(int) + sizeof(float))); - int i, best_i = -1; - double best_val = init_quality, lsum = 0, rsum = node->value*n; - int L = 0, R = n1; + float* values = (float*)(uchar*)buf; + int* sorted_idx = (int*)(values + n); + w->data->getValues(vi, _sidx, values); + const double* responses = &w->ord_responses[0]; - // compensate for missing values - for( i = n1; i < n; i++ ) - rsum -= responses[sorted_indices[i]]; + int i, si, best_i = -1; + double L = 0, R = 0; + double best_val = initQuality, lsum = 0, rsum = 0; + + for( i = 0; i < n; i++ ) + { + sorted_idx[i] = i; + si = _sidx[i]; + R += weights[si]; + rsum += weights[si]*responses[si]; + } + + std::sort(sorted_idx, sorted_idx + n, cmp_lt_idx(values)); // find the optimal split - for( i = 0; i < n1 - 1; i++ ) + for( i = 0; i < n - 1; i++ ) { - float t = responses[sorted_indices[i]]; - L++; R--; - lsum += t; - rsum -= t; + int curr = sorted_idx[i]; + int next = sorted_idx[i+1]; + si = _sidx[curr]; + double wval = weights[si]; + double t = responses[si]*wval; + L += wval; R -= wval; + lsum += t; rsum -= t; - if( values[i] + epsilon < values[i+1] ) + if( values[curr] + epsilon < values[next] ) { - double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); if( best_val < val ) { best_val = val; @@ -2420,43 +1061,35 @@ CvDTreeSplit* CvDTree::find_split_ord_reg( CvDTreeNode* node, int vi, float init } } - CvDTreeSplit* split = 0; + WSplit split; if( best_i >= 0 ) { - split = _split ? _split : data->new_split_ord( 0, 0.0f, 0, 0, 0.0f ); - split->var_idx = vi; - split->ord.c = (values[best_i] + values[best_i+1])*0.5f; - split->ord.split_point = best_i; - split->inversed = 0; - split->quality = (float)best_val; + split.varIdx = vi; + split.c = (values[sorted_idx[best_i]] + values[sorted_idx[best_i+1]])*0.5f; + split.inversed = false; + split.quality = (float)best_val; } return split; } -CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init_quality, CvDTreeSplit* _split, uchar* _ext_buf ) +DTreesImpl::WSplit DTreesImpl::findSplitCatReg( int vi, const vector& _sidx, + double initQuality, int* subset ) { - int ci = data->get_var_type(vi); - int n = node->sample_count; - int mi = data->cat_count->data.i[ci]; + const double* weights = &w->sample_weights[0]; + const double* responses = &w->ord_responses[0]; + int n = (int)_sidx.size(); + int mi = getCatCount(vi); - int base_size = (mi+2)*sizeof(double) + (mi+1)*(sizeof(int) + sizeof(double*)); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(2*sizeof(int) + sizeof(float))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - float* responses_buf = (float*)(labels_buf + n); - int* sample_indices_buf = (int*)(responses_buf + n); - const float* responses = data->get_ord_responses(node, responses_buf, sample_indices_buf); - - double* sum = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - int* counts = (int*)(sum + mi) + 1; + AutoBuffer buf(3*mi + 3 + n); + double* sum = (double*)buf + 1; + double* counts = sum + mi + 1; double** sum_ptr = (double**)(counts + mi); - int i, L = 0, R = 0; - double best_val = init_quality, lsum = 0, rsum = 0; - int best_subset = -1, subset_i; + int* cat_labels = (int*)(sum_ptr + mi); + + w->data->getNormCatValues(vi, _sidx, cat_labels); + + double L = 0, R = 0, best_val = initQuality, lsum = 0, rsum = 0; + int i, si, best_subset = -1, subset_i; for( i = -1; i < mi; i++ ) sum[i] = counts[i] = 0; @@ -2464,11 +1097,11 @@ CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init // calculate sum response and weight of each category of the input var for( i = 0; i < n; i++ ) { - int idx = ( (labels[i] == 65535) && data->is_buf_16u ) ? -1 : labels[i]; - double s = sum[idx] + responses[i]; - int nc = counts[idx] + 1; - sum[idx] = s; - counts[idx] = nc; + int idx = cat_labels[i]; + si = _sidx[i]; + double wval = weights[si]; + sum[idx] += responses[si]*wval; + counts[idx] += wval; } // calculate average response in each category @@ -2476,31 +1109,31 @@ CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init { R += counts[i]; rsum += sum[i]; - sum[i] /= MAX(counts[i],1); + sum[i] = fabs(counts[i]) > DBL_EPSILON ? sum[i]/counts[i] : 0; sum_ptr[i] = sum + i; } - std::sort(sum_ptr, sum_ptr + mi, LessThanPtr()); + std::sort(sum_ptr, sum_ptr + mi, cmp_lt_ptr()); // revert back to unnormalized sums - // (there should be a very little loss of accuracy) + // (there should be a very little loss in accuracy) for( i = 0; i < mi; i++ ) sum[i] *= counts[i]; for( subset_i = 0; subset_i < mi-1; subset_i++ ) { int idx = (int)(sum_ptr[subset_i] - sum); - int ni = counts[idx]; + double ni = counts[idx]; - if( ni ) + if( ni > FLT_EPSILON ) { double s = sum[idx]; lsum += s; L += ni; rsum -= s; R -= ni; - if( L && R ) + if( L > FLT_EPSILON && R > FLT_EPSILON ) { - double val = (lsum*lsum*R + rsum*rsum*L)/((double)L*R); + double val = (lsum*lsum*R + rsum*rsum*L)/(L*R); if( best_val < val ) { best_val = val; @@ -2510,936 +1143,131 @@ CvDTreeSplit* CvDTree::find_split_cat_reg( CvDTreeNode* node, int vi, float init } } - CvDTreeSplit* split = 0; + WSplit split; if( best_subset >= 0 ) { - split = _split ? _split : data->new_split_cat( 0, -1.0f); - split->var_idx = vi; - split->quality = (float)best_val; - memset( split->subset, 0, (data->max_c_count + 31)/32 * sizeof(int)); + split.varIdx = vi; + split.quality = (float)best_val; + memset( subset, 0, getSubsetSize(vi) * sizeof(int)); for( i = 0; i <= best_subset; i++ ) { int idx = (int)(sum_ptr[i] - sum); - split->subset[idx >> 5] |= 1 << (idx & 31); + subset[idx >> 5] |= 1 << (idx & 31); } } return split; } -CvDTreeSplit* CvDTree::find_surrogate_split_ord( CvDTreeNode* node, int vi, uchar* _ext_buf ) +int DTreesImpl::calcDir( int splitidx, const vector& _sidx, + vector& _sleft, vector& _sright ) { - const float epsilon = FLT_EPSILON*2; - const char* dir = (char*)data->direction->data.ptr; - int n = node->sample_count, n1 = node->get_num_valid(vi); - cv::AutoBuffer inn_buf; - if( !_ext_buf ) - inn_buf.allocate( n*(sizeof(int)*(data->have_priors ? 3 : 2) + sizeof(float)) ); - uchar* ext_buf = _ext_buf ? _ext_buf : (uchar*)inn_buf; - float* values_buf = (float*)ext_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - int i, best_i = -1, best_inversed = 0; - double best_val; + WSplit split = w->wsplits[splitidx]; + int i, si, n = (int)_sidx.size(), vi = split.varIdx; + _sleft.reserve(n); + _sright.reserve(n); + _sleft.clear(); + _sright.clear(); - if( !data->have_priors ) + AutoBuffer buf(n); + int mi = getCatCount(vi); + double wleft = 0, wright = 0; + const double* weights = &w->sample_weights[0]; + + if( mi <= 0 ) // split on an ordered variable { - int LL = 0, RL = 0, LR, RR; - int worst_val = cvFloor(node->maxlr), _best_val = worst_val; - int sum = 0, sum_abs = 0; - - for( i = 0; i < n1; i++ ) - { - int d = dir[sorted_indices[i]]; - sum += d; sum_abs += d & 1; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum) >> 1; - LR = (sum_abs - sum) >> 1; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int d = dir[sorted_indices[i]]; - - if( d < 0 ) - { - LL++; LR--; - if( LL + RR > _best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL++; RR--; - if( RL + LR > _best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } - } - } - best_val = _best_val; - } - else - { - double LL = 0, RL = 0, LR, RR; - double worst_val = node->maxlr; - double sum = 0, sum_abs = 0; - const double* priors = data->priors_mult->data.db; - int* responses_buf = sample_indices_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - best_val = worst_val; - - for( i = 0; i < n1; i++ ) - { - int idx = sorted_indices[i]; - double w = priors[responses[idx]]; - int d = dir[idx]; - sum += d*w; sum_abs += (d & 1)*w; - } - - // sum_abs = R + L; sum = R - L - RR = (sum_abs + sum)*0.5; - LR = (sum_abs - sum)*0.5; - - // initially all the samples are sent to the right by the surrogate split, - // LR of them are sent to the left by primary split, and RR - to the right. - // now iteratively compute LL, LR, RL and RR for every possible surrogate split value. - for( i = 0; i < n1 - 1; i++ ) - { - int idx = sorted_indices[i]; - double w = priors[responses[idx]]; - int d = dir[idx]; - - if( d < 0 ) - { - LL += w; LR -= w; - if( LL + RR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = LL + RR; - best_i = i; best_inversed = 0; - } - } - else if( d > 0 ) - { - RL += w; RR -= w; - if( RL + LR > best_val && values[i] + epsilon < values[i+1] ) - { - best_val = RL + LR; - best_i = i; best_inversed = 1; - } - } - } - } - return best_i >= 0 && best_val > node->maxlr ? data->new_split_ord( vi, - (values[best_i] + values[best_i+1])*0.5f, best_i, best_inversed, (float)best_val ) : 0; -} - - -CvDTreeSplit* CvDTree::find_surrogate_split_cat( CvDTreeNode* node, int vi, uchar* _ext_buf ) -{ - const char* dir = (char*)data->direction->data.ptr; - int n = node->sample_count; - int i, mi = data->cat_count->data.i[data->get_var_type(vi)], l_win = 0; - - int base_size = (2*(mi+1)+1)*sizeof(double) + (!data->have_priors ? 2*(mi+1)*sizeof(int) : 0); - cv::AutoBuffer inn_buf(base_size); - if( !_ext_buf ) - inn_buf.allocate(base_size + n*(sizeof(int) + (data->have_priors ? sizeof(int) : 0))); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = _ext_buf ? _ext_buf : base_buf + base_size; - - int* labels_buf = (int*)ext_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - // LL - number of samples that both the primary and the surrogate splits send to the left - // LR - ... primary split sends to the left and the surrogate split sends to the right - // RL - ... primary split sends to the right and the surrogate split sends to the left - // RR - ... both send to the right - CvDTreeSplit* split = data->new_split_cat( vi, 0 ); - double best_val = 0; - double* lc = (double*)cv::alignPtr(base_buf,sizeof(double)) + 1; - double* rc = lc + mi + 1; - - for( i = -1; i < mi; i++ ) - lc[i] = rc[i] = 0; - - // for each category calculate the weight of samples - // sent to the left (lc) and to the right (rc) by the primary split - if( !data->have_priors ) - { - int* _lc = (int*)rc + 1; - int* _rc = _lc + mi + 1; - - for( i = -1; i < mi; i++ ) - _lc[i] = _rc[i] = 0; + float c = split.c; + float* values = buf; + w->data->getValues(vi, _sidx, values); for( i = 0; i < n; i++ ) { - int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; - int d = dir[i]; - int sum = _lc[idx] + d; - int sum_abs = _rc[idx] + (d & 1); - _lc[idx] = sum; _rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - int sum = _lc[i]; - int sum_abs = _rc[i]; - lc[i] = (sum_abs - sum) >> 1; - rc[i] = (sum_abs + sum) >> 1; + si = _sidx[i]; + if( values[i] <= c ) + { + _sleft.push_back(si); + wleft += weights[si]; + } + else + { + _sright.push_back(si); + wright += weights[si]; + } } } else { - const double* priors = data->priors_mult->data.db; - int* responses_buf = labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); + const int* subset = &w->wsubsets[split.subsetOfs]; + int* cat_labels = (int*)(float*)buf; + w->data->getNormCatValues(vi, _sidx, cat_labels); for( i = 0; i < n; i++ ) { - int idx = ( (labels[i] == 65535) && (data->is_buf_16u) ) ? -1 : labels[i]; - double w = priors[responses[i]]; - int d = dir[i]; - double sum = lc[idx] + d*w; - double sum_abs = rc[idx] + (d & 1)*w; - lc[idx] = sum; rc[idx] = sum_abs; - } - - for( i = 0; i < mi; i++ ) - { - double sum = lc[i]; - double sum_abs = rc[i]; - lc[i] = (sum_abs - sum) * 0.5; - rc[i] = (sum_abs + sum) * 0.5; - } - } - - // 2. now form the split. - // in each category send all the samples to the same direction as majority - for( i = 0; i < mi; i++ ) - { - double lval = lc[i], rval = rc[i]; - if( lval > rval ) - { - split->subset[i >> 5] |= 1 << (i & 31); - best_val += lval; - l_win++; - } - else - best_val += rval; - } - - split->quality = (float)best_val; - if( split->quality <= node->maxlr || l_win == 0 || l_win == mi ) - cvSetRemoveByPtr( data->split_heap, split ), split = 0; - - return split; -} - - -void CvDTree::calc_node_value( CvDTreeNode* node ) -{ - int i, j, k, n = node->sample_count, cv_n = data->params.cv_folds; - int m = data->get_num_classes(); - - int base_size = data->is_classifier ? m*cv_n*sizeof(int) : 2*cv_n*sizeof(double)+cv_n*sizeof(int); - int ext_size = n*(sizeof(int) + (data->is_classifier ? sizeof(int) : sizeof(int)+sizeof(float))); - cv::AutoBuffer inn_buf(base_size + ext_size); - uchar* base_buf = (uchar*)inn_buf; - uchar* ext_buf = base_buf + base_size; - - int* cv_labels_buf = (int*)ext_buf; - const int* cv_labels = data->get_cv_labels(node, cv_labels_buf); - - if( data->is_classifier ) - { - // in case of classification tree: - // * node value is the label of the class that has the largest weight in the node. - // * node risk is the weighted number of misclassified samples, - // * j-th cross-validation fold value and risk are calculated as above, - // but using the samples with cv_labels(*)!=j. - // * j-th cross-validation fold error is calculated as the weighted number of - // misclassified samples with cv_labels(*)==j. - - // compute the number of instances of each class - int* cls_count = data->counts->data.i; - int* responses_buf = cv_labels_buf + n; - const int* responses = data->get_class_labels(node, responses_buf); - int* cv_cls_count = (int*)base_buf; - double max_val = -1, total_weight = 0; - int max_k = -1; - double* priors = data->priors_mult->data.db; - - for( k = 0; k < m; k++ ) - cls_count[k] = 0; - - if( cv_n == 0 ) - { - for( i = 0; i < n; i++ ) - cls_count[responses[i]]++; - } - else - { - for( j = 0; j < cv_n; j++ ) - for( k = 0; k < m; k++ ) - cv_cls_count[j*m + k] = 0; - - for( i = 0; i < n; i++ ) + si = _sidx[i]; + unsigned u = cat_labels[i]; + if( CV_DTREE_CAT_DIR(u, subset) < 0 ) { - j = cv_labels[i]; k = responses[i]; - cv_cls_count[j*m + k]++; - } - - for( j = 0; j < cv_n; j++ ) - for( k = 0; k < m; k++ ) - cls_count[k] += cv_cls_count[j*m + k]; - } - - if( data->have_priors && node->parent == 0 ) - { - // compute priors_mult from priors, take the sample ratio into account. - double sum = 0; - for( k = 0; k < m; k++ ) - { - int n_k = cls_count[k]; - priors[k] = data->priors->data.db[k]*(n_k ? 1./n_k : 0.); - sum += priors[k]; - } - sum = 1./sum; - for( k = 0; k < m; k++ ) - priors[k] *= sum; - } - - for( k = 0; k < m; k++ ) - { - double val = cls_count[k]*priors[k]; - total_weight += val; - if( max_val < val ) - { - max_val = val; - max_k = k; - } - } - - node->class_idx = max_k; - node->value = data->cat_map->data.i[ - data->cat_ofs->data.i[data->cat_var_count] + max_k]; - node->node_risk = total_weight - max_val; - - for( j = 0; j < cv_n; j++ ) - { - double sum_k = 0, sum = 0, max_val_k = 0; - max_val = -1; max_k = -1; - - for( k = 0; k < m; k++ ) - { - double w = priors[k]; - double val_k = cv_cls_count[j*m + k]*w; - double val = cls_count[k]*w - val_k; - sum_k += val_k; - sum += val; - if( max_val < val ) - { - max_val = val; - max_val_k = val_k; - max_k = k; - } - } - - node->cv_Tn[j] = INT_MAX; - node->cv_node_risk[j] = sum - max_val; - node->cv_node_error[j] = sum_k - max_val_k; - } - } - else - { - // in case of regression tree: - // * node value is 1/n*sum_i(Y_i), where Y_i is i-th response, - // n is the number of samples in the node. - // * node risk is the sum of squared errors: sum_i((Y_i - )^2) - // * j-th cross-validation fold value and risk are calculated as above, - // but using the samples with cv_labels(*)!=j. - // * j-th cross-validation fold error is calculated - // using samples with cv_labels(*)==j as the test subset: - // error_j = sum_(i,cv_labels(i)==j)((Y_i - )^2), - // where node_value_j is the node value calculated - // as described in the previous bullet, and summation is done - // over the samples with cv_labels(*)==j. - - double sum = 0, sum2 = 0; - float* values_buf = (float*)(cv_labels_buf + n); - int* sample_indices_buf = (int*)(values_buf + n); - const float* values = data->get_ord_responses(node, values_buf, sample_indices_buf); - double *cv_sum = 0, *cv_sum2 = 0; - int* cv_count = 0; - - if( cv_n == 0 ) - { - for( i = 0; i < n; i++ ) - { - double t = values[i]; - sum += t; - sum2 += t*t; - } - } - else - { - cv_sum = (double*)base_buf; - cv_sum2 = cv_sum + cv_n; - cv_count = (int*)(cv_sum2 + cv_n); - - for( j = 0; j < cv_n; j++ ) - { - cv_sum[j] = cv_sum2[j] = 0.; - cv_count[j] = 0; - } - - for( i = 0; i < n; i++ ) - { - j = cv_labels[i]; - double t = values[i]; - double s = cv_sum[j] + t; - double s2 = cv_sum2[j] + t*t; - int nc = cv_count[j] + 1; - cv_sum[j] = s; - cv_sum2[j] = s2; - cv_count[j] = nc; - } - - for( j = 0; j < cv_n; j++ ) - { - sum += cv_sum[j]; - sum2 += cv_sum2[j]; - } - } - - node->node_risk = sum2 - (sum/n)*sum; - node->value = sum/n; - - for( j = 0; j < cv_n; j++ ) - { - double s = cv_sum[j], si = sum - s; - double s2 = cv_sum2[j], s2i = sum2 - s2; - int c = cv_count[j], ci = n - c; - double r = si/MAX(ci,1); - node->cv_node_risk[j] = s2i - r*r*ci; - node->cv_node_error[j] = s2 - 2*r*s + c*r*r; - node->cv_Tn[j] = INT_MAX; - } - } -} - - -void CvDTree::complete_node_dir( CvDTreeNode* node ) -{ - int vi, i, n = node->sample_count, nl, nr, d0 = 0, d1 = -1; - int nz = n - node->get_num_valid(node->split->var_idx); - char* dir = (char*)data->direction->data.ptr; - - // try to complete direction using surrogate splits - if( nz && data->params.use_surrogates ) - { - cv::AutoBuffer inn_buf(n*(2*sizeof(int)+sizeof(float))); - CvDTreeSplit* split = node->split->next; - for( ; split != 0 && nz; split = split->next ) - { - int inversed_mask = split->inversed ? -1 : 0; - vi = split->var_idx; - - if( data->get_var_type(vi) >= 0 ) // split on categorical var - { - int* labels_buf = (int*)(uchar*)inn_buf; - const int* labels = data->get_cat_var_data(node, vi, labels_buf); - const int* subset = split->subset; - - for( i = 0; i < n; i++ ) - { - int idx = labels[i]; - if( !dir[i] && ( ((idx >= 0)&&(!data->is_buf_16u)) || ((idx != 65535)&&(data->is_buf_16u)) )) - - { - int d = CV_DTREE_CAT_DIR(idx,subset); - dir[i] = (char)((d ^ inversed_mask) - inversed_mask); - if( --nz ) - break; - } - } - } - else // split on ordered var - { - float* values_buf = (float*)(uchar*)inn_buf; - int* sorted_indices_buf = (int*)(values_buf + n); - int* sample_indices_buf = sorted_indices_buf + n; - const float* values = 0; - const int* sorted_indices = 0; - data->get_ord_var_data( node, vi, values_buf, sorted_indices_buf, &values, &sorted_indices, sample_indices_buf ); - int split_point = split->ord.split_point; - int n1 = node->get_num_valid(vi); - - assert( 0 <= split_point && split_point < n-1 ); - - for( i = 0; i < n1; i++ ) - { - int idx = sorted_indices[i]; - if( !dir[idx] ) - { - int d = i <= split_point ? -1 : 1; - dir[idx] = (char)((d ^ inversed_mask) - inversed_mask); - if( --nz ) - break; - } - } - } - } - } - - // find the default direction for the rest - if( nz ) - { - for( i = nr = 0; i < n; i++ ) - nr += dir[i] > 0; - nl = n - nr - nz; - d0 = nl > nr ? -1 : nr > nl; - } - - // make sure that every sample is directed either to the left or to the right - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - if( !d ) - { - d = d0; - if( !d ) - d = d1, d1 = -d1; - } - d = d > 0; - dir[i] = (char)d; // remap (-1,1) to (0,1) - } -} - - -void CvDTree::split_node_data( CvDTreeNode* node ) -{ - int vi, i, n = node->sample_count, nl, nr, scount = data->sample_count; - char* dir = (char*)data->direction->data.ptr; - CvDTreeNode *left = 0, *right = 0; - int* new_idx = data->split_buf->data.i; - int new_buf_idx = data->get_child_buf_idx( node ); - int work_var_count = data->get_work_var_count(); - CvMat* buf = data->buf; - size_t length_buf_row = data->get_length_subbuf(); - cv::AutoBuffer inn_buf(n*(3*sizeof(int) + sizeof(float))); - int* temp_buf = (int*)(uchar*)inn_buf; - - complete_node_dir(node); - - for( i = nl = nr = 0; i < n; i++ ) - { - int d = dir[i]; - // initialize new indices for splitting ordered variables - new_idx[i] = (nl & (d-1)) | (nr & -d); // d ? ri : li - nr += d; - nl += d^1; - } - - bool split_input_data; - node->left = left = data->new_node( node, nl, new_buf_idx, node->offset ); - node->right = right = data->new_node( node, nr, new_buf_idx, node->offset + nl ); - - split_input_data = node->depth + 1 < data->params.max_depth && - (node->left->sample_count > data->params.min_sample_count || - node->right->sample_count > data->params.min_sample_count); - - // split ordered variables, keep both halves sorted. - for( vi = 0; vi < data->var_count; vi++ ) - { - int ci = data->get_var_type(vi); - - if( ci >= 0 || !split_input_data ) - continue; - - int n1 = node->get_num_valid(vi); - float* src_val_buf = (float*)(uchar*)(temp_buf + n); - int* src_sorted_idx_buf = (int*)(src_val_buf + n); - int* src_sample_idx_buf = src_sorted_idx_buf + n; - const float* src_val = 0; - const int* src_sorted_idx = 0; - data->get_ord_var_data(node, vi, src_val_buf, src_sorted_idx_buf, &src_val, &src_sorted_idx, src_sample_idx_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = src_sorted_idx[i]; - - if (data->is_buf_16u) - { - unsigned short *ldst, *rdst, *ldst0, *rdst0; - //unsigned short tl, tr; - ldst0 = ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - vi*scount + left->offset); - rdst0 = rdst = (unsigned short*)(ldst + nl); - - // split sorted - for( i = 0; i < n1; i++ ) - { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } - - left->set_num_valid(vi, (int)(ldst - ldst0)); - right->set_num_valid(vi, (int)(rdst - rdst0)); - - // split missing - for( ; i < n; i++ ) - { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } - } - else - { - int *ldst0, *ldst, *rdst0, *rdst; - ldst0 = ldst = buf->data.i + left->buf_idx*length_buf_row + - vi*scount + left->offset; - rdst0 = rdst = buf->data.i + right->buf_idx*length_buf_row + - vi*scount + right->offset; - - // split sorted - for( i = 0; i < n1; i++ ) - { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - - left->set_num_valid(vi, (int)(ldst - ldst0)); - right->set_num_valid(vi, (int)(rdst - rdst0)); - - // split missing - for( ; i < n; i++ ) - { - int idx = temp_buf[i]; - int d = dir[idx]; - idx = new_idx[idx]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - } - - // split categorical vars, responses and cv_labels using new_idx relocation table - for( vi = 0; vi < work_var_count; vi++ ) - { - int ci = data->get_var_type(vi); - int n1 = node->get_num_valid(vi), nr1 = 0; - - if( ci < 0 || (vi < data->var_count && !split_input_data) ) - continue; - - int *src_lbls_buf = temp_buf + n; - const int* src_lbls = data->get_cat_var_data(node, vi, src_lbls_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = src_lbls[i]; - - if (data->is_buf_16u) - { - unsigned short *ldst = (unsigned short *)(buf->data.s + left->buf_idx*length_buf_row + - vi*scount + left->offset); - unsigned short *rdst = (unsigned short *)(buf->data.s + right->buf_idx*length_buf_row + - vi*scount + right->offset); - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = (unsigned short)idx; - rdst++; - nr1 += (idx != 65535 )&d; - } - else - { - *ldst = (unsigned short)idx; - ldst++; - } - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - else - { - int *ldst = buf->data.i + left->buf_idx*length_buf_row + - vi*scount + left->offset; - int *rdst = buf->data.i + right->buf_idx*length_buf_row + - vi*scount + right->offset; - - for( i = 0; i < n; i++ ) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - nr1 += (idx >= 0)&d; - } - else - { - *ldst = idx; - ldst++; - } - - } - - if( vi < data->var_count ) - { - left->set_num_valid(vi, n1 - nr1); - right->set_num_valid(vi, nr1); - } - } - } - - - // split sample indices - int *sample_idx_src_buf = temp_buf + n; - const int* sample_idx_src = data->get_sample_indices(node, sample_idx_src_buf); - - for(i = 0; i < n; i++) - temp_buf[i] = sample_idx_src[i]; - - int pos = data->get_work_var_count(); - if (data->is_buf_16u) - { - unsigned short* ldst = (unsigned short*)(buf->data.s + left->buf_idx*length_buf_row + - pos*scount + left->offset); - unsigned short* rdst = (unsigned short*)(buf->data.s + right->buf_idx*length_buf_row + - pos*scount + right->offset); - for (i = 0; i < n; i++) - { - int d = dir[i]; - unsigned short idx = (unsigned short)temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; + _sleft.push_back(si); + wleft += weights[si]; } else { - *ldst = idx; - ldst++; + _sright.push_back(si); + wright += weights[si]; } } } - else - { - int* ldst = buf->data.i + left->buf_idx*length_buf_row + - pos*scount + left->offset; - int* rdst = buf->data.i + right->buf_idx*length_buf_row + - pos*scount + right->offset; - for (i = 0; i < n; i++) - { - int d = dir[i]; - int idx = temp_buf[i]; - if (d) - { - *rdst = idx; - rdst++; - } - else - { - *ldst = idx; - ldst++; - } - } - } - - // deallocate the parent node data that is not needed anymore - data->free_node_data(node); + CV_Assert( (int)_sleft.size() < n && (int)_sright.size() < n ); + return wleft > wright ? -1 : 1; } -float CvDTree::calc_error( CvMLData* _data, int type, std::vector *resp ) +int DTreesImpl::pruneCV( int root ) { - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* missing = _data->get_missing(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 )->value; - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[(size_t)si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample, miss; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - if( missing ) - cvGetRow( missing, &miss, si ); - float r = (float)predict( &sample, missing ? &miss : 0 )->value; - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[(size_t)si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; -} - -void CvDTree::prune_cv() -{ - CvMat* ab = 0; - CvMat* temp = 0; - CvMat* err_jk = 0; + vector ab; // 1. build tree sequence for each cv fold, calculate error_{Tj,beta_k}. // 2. choose the best tree index (if need, apply 1SE rule). // 3. store the best index and cut the branches. - CV_FUNCNAME( "CvDTree::prune_cv" ); - - __BEGIN__; - - int ti, j, tree_count = 0, cv_n = data->params.cv_folds, n = root->sample_count; + int ti, tree_count = 0, j, cv_n = params.CVFolds, n = w->wnodes[root].sample_count; // currently, 1SE for regression is not implemented - bool use_1se = data->params.use_1se_rule != 0 && data->is_classifier; - double* err; + bool use_1se = params.use1SERule != 0 && _isClassifier; double min_err = 0, min_err_se = 0; int min_idx = -1; - CV_CALL( ab = cvCreateMat( 1, 256, CV_64F )); - // build the main tree sequence, calculate alpha's for(;;tree_count++) { - double min_alpha = update_tree_rnc(tree_count, -1); - if( cut_tree(tree_count, -1, min_alpha) ) + double min_alpha = updateTreeRNC(root, tree_count, -1); + if( cutTree(root, tree_count, -1, min_alpha) ) break; - if( ab->cols <= tree_count ) - { - CV_CALL( temp = cvCreateMat( 1, ab->cols*3/2, CV_64F )); - for( ti = 0; ti < ab->cols; ti++ ) - temp->data.db[ti] = ab->data.db[ti]; - cvReleaseMat( &ab ); - ab = temp; - temp = 0; - } - - ab->data.db[tree_count] = min_alpha; + ab.push_back(min_alpha); } - ab->data.db[0] = 0.; - if( tree_count > 0 ) { - for( ti = 1; ti < tree_count-1; ti++ ) - ab->data.db[ti] = sqrt(ab->data.db[ti]*ab->data.db[ti+1]); - ab->data.db[tree_count-1] = DBL_MAX*0.5; + ab[0] = 0.; - CV_CALL( err_jk = cvCreateMat( cv_n, tree_count, CV_64F )); - err = err_jk->data.db; + for( ti = 1; ti < tree_count-1; ti++ ) + ab[ti] = std::sqrt(ab[ti]*ab[ti+1]); + ab[tree_count-1] = DBL_MAX*0.5; + + Mat err_jk(cv_n, tree_count, CV_64F); for( j = 0; j < cv_n; j++ ) { int tj = 0, tk = 0; - for( ; tk < tree_count; tj++ ) + for( ; tj < tree_count; tj++ ) { - double min_alpha = update_tree_rnc(tj, j); - if( cut_tree(tj, j, min_alpha) ) + double min_alpha = updateTreeRNC(root, tj, j); + if( cutTree(root, tj, j, min_alpha) ) min_alpha = DBL_MAX; for( ; tk < tree_count; tk++ ) { - if( ab->data.db[tk] > min_alpha ) + if( ab[tk] > min_alpha ) break; - err[j*tree_count + tk] = root->tree_error; + err_jk.at(j, tk) = w->wnodes[root].tree_error; } } } @@ -3448,7 +1276,7 @@ void CvDTree::prune_cv() { double sum_err = 0; for( j = 0; j < cv_n; j++ ) - sum_err += err[j*tree_count + ti]; + sum_err += err_jk.at(j, ti); if( ti == 0 || sum_err < min_err ) { min_err = sum_err; @@ -3461,242 +1289,190 @@ void CvDTree::prune_cv() } } - pruned_tree_idx = min_idx; - free_prune_data(data->params.truncate_pruned_tree != 0); - - __END__; - - cvReleaseMat( &err_jk ); - cvReleaseMat( &ab ); - cvReleaseMat( &temp ); + return min_idx; } - -double CvDTree::update_tree_rnc( int T, int fold ) +double DTreesImpl::updateTreeRNC( int root, double T, int fold ) { - CvDTreeNode* node = root; + int nidx = root, pidx = -1, cv_n = params.CVFolds; double min_alpha = DBL_MAX; for(;;) { - CvDTreeNode* parent; + WNode *node = 0, *parent = 0; + for(;;) { - int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; - if( t <= T || !node->left ) + node = &w->wnodes[nidx]; + double t = fold >= 0 ? w->cv_Tn[nidx*cv_n + fold] : node->Tn; + if( t <= T || node->left < 0 ) { node->complexity = 1; node->tree_risk = node->node_risk; node->tree_error = 0.; if( fold >= 0 ) { - node->tree_risk = node->cv_node_risk[fold]; - node->tree_error = node->cv_node_error[fold]; + node->tree_risk = w->cv_node_risk[nidx*cv_n + fold]; + node->tree_error = w->cv_node_error[nidx*cv_n + fold]; } break; } - node = node->left; + nidx = node->left; } - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) + for( pidx = node->parent; pidx >= 0 && w->wnodes[pidx].right == nidx; + nidx = pidx, pidx = w->wnodes[pidx].parent ) { + node = &w->wnodes[nidx]; + parent = &w->wnodes[pidx]; parent->complexity += node->complexity; parent->tree_risk += node->tree_risk; parent->tree_error += node->tree_error; - parent->alpha = ((fold >= 0 ? parent->cv_node_risk[fold] : parent->node_risk) - - parent->tree_risk)/(parent->complexity - 1); - min_alpha = MIN( min_alpha, parent->alpha ); + parent->alpha = ((fold >= 0 ? w->cv_node_risk[pidx*cv_n + fold] : parent->node_risk) + - parent->tree_risk)/(parent->complexity - 1); + min_alpha = std::min( min_alpha, parent->alpha ); } - if( !parent ) + if( pidx < 0 ) break; + node = &w->wnodes[nidx]; + parent = &w->wnodes[pidx]; parent->complexity = node->complexity; parent->tree_risk = node->tree_risk; parent->tree_error = node->tree_error; - node = parent->right; + nidx = parent->right; } return min_alpha; } - -int CvDTree::cut_tree( int T, int fold, double min_alpha ) +bool DTreesImpl::cutTree( int root, double T, int fold, double min_alpha ) { - CvDTreeNode* node = root; - if( !node->left ) - return 1; + int cv_n = params.CVFolds, nidx = root, pidx = -1; + WNode* node = &w->wnodes[root]; + if( node->left < 0 ) + return true; for(;;) { - CvDTreeNode* parent; for(;;) { - int t = fold >= 0 ? node->cv_Tn[fold] : node->Tn; - if( t <= T || !node->left ) + node = &w->wnodes[nidx]; + double t = fold >= 0 ? w->cv_Tn[nidx*cv_n + fold] : node->Tn; + if( t <= T || node->left < 0 ) break; if( node->alpha <= min_alpha + FLT_EPSILON ) { if( fold >= 0 ) - node->cv_Tn[fold] = T; + w->cv_Tn[nidx*cv_n + fold] = T; else node->Tn = T; - if( node == root ) - return 1; + if( nidx == root ) + return true; break; } - node = node->left; + nidx = node->left; } - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) + for( pidx = node->parent; pidx >= 0 && w->wnodes[pidx].right == nidx; + nidx = pidx, pidx = w->wnodes[pidx].parent ) ; - if( !parent ) + if( pidx < 0 ) break; - node = parent->right; + nidx = w->wnodes[pidx].right; } - return 0; + return false; } - -void CvDTree::free_prune_data(bool _cut_tree) +float DTreesImpl::predictTrees( const Range& range, const Mat& sample, int flags ) const { - CvDTreeNode* node = root; + CV_Assert( sample.type() == CV_32F ); - for(;;) + int predictType = flags & PREDICT_MASK; + int nvars = (int)varIdx.size(); + if( nvars == 0 ) + nvars = (int)varType.size(); + int i, ncats = (int)catOfs.size(), nclasses = (int)classLabels.size(); + int catbufsize = ncats > 0 ? nvars : 0; + AutoBuffer buf(nclasses + catbufsize + 1); + int* votes = buf; + int* catbuf = votes + nclasses; + const int* cvidx = (flags & (COMPRESSED_INPUT|PREPROCESSED_INPUT)) == 0 && !varIdx.empty() ? &compVarIdx[0] : 0; + const uchar* vtype = &varType[0]; + const Vec2i* cofs = !catOfs.empty() ? &catOfs[0] : 0; + const int* cmap = !catMap.empty() ? &catMap[0] : 0; + const float* psample = sample.ptr(); + const float* missingSubstPtr = !missingSubst.empty() ? &missingSubst[0] : 0; + size_t sstep = sample.isContinuous() ? 1 : sample.step/sizeof(float); + double sum = 0.; + int lastClassIdx = -1; + const float MISSED_VAL = TrainData::missingValue(); + + for( i = 0; i < catbufsize; i++ ) + catbuf[i] = -1; + + if( predictType == PREDICT_AUTO ) { - CvDTreeNode* parent; + predictType = !_isClassifier || (classLabels.size() == 2 && (flags & RAW_OUTPUT) != 0) ? + PREDICT_SUM : PREDICT_MAX_VOTE; + } + + if( predictType == PREDICT_MAX_VOTE ) + { + for( i = 0; i < nclasses; i++ ) + votes[i] = 0; + } + + for( int ridx = range.start; ridx < range.end; ridx++ ) + { + int nidx = roots[ridx], prev = nidx, c = 0; + for(;;) { - // do not call cvSetRemoveByPtr( cv_heap, node->cv_Tn ) - // as we will clear the whole cross-validation heap at the end - node->cv_Tn = 0; - node->cv_node_error = node->cv_node_risk = 0; - if( !node->left ) + prev = nidx; + const Node& node = nodes[nidx]; + if( node.split < 0 ) break; - node = node->left; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - { - if( _cut_tree && parent->Tn <= pruned_tree_idx ) + const Split& split = splits[node.split]; + int vi = split.varIdx; + int ci = cvidx ? cvidx[vi] : vi; + float val = psample[ci*sstep]; + if( val == MISSED_VAL ) { - data->free_node( parent->left ); - data->free_node( parent->right ); - parent->left = parent->right = 0; + if( !missingSubstPtr ) + { + nidx = node.defaultDir < 0 ? node.left : node.right; + continue; + } + val = missingSubstPtr[vi]; } - } - if( !parent ) - break; - - node = parent->right; - } - - if( data->cv_heap ) - cvClearSet( data->cv_heap ); -} - - -void CvDTree::free_tree() -{ - if( root && data && data->shared ) - { - pruned_tree_idx = INT_MIN; - free_prune_data(true); - data->free_node(root); - root = 0; - } -} - -CvDTreeNode* CvDTree::predict( const CvMat* _sample, - const CvMat* _missing, bool preprocessed_input ) const -{ - cv::AutoBuffer catbuf; - - int i, mstep = 0; - const uchar* m = 0; - CvDTreeNode* node = root; - - if( !node ) - CV_Error( CV_StsError, "The tree has not been trained yet" ); - - if( !CV_IS_MAT(_sample) || CV_MAT_TYPE(_sample->type) != CV_32FC1 || - (_sample->cols != 1 && _sample->rows != 1) || - (_sample->cols + _sample->rows - 1 != data->var_all && !preprocessed_input) || - (_sample->cols + _sample->rows - 1 != data->var_count && preprocessed_input) ) - CV_Error( CV_StsBadArg, - "the input sample must be 1d floating-point vector with the same " - "number of elements as the total number of variables used for training" ); - - const float* sample = _sample->data.fl; - int step = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(sample[0]); - - if( data->cat_count && !preprocessed_input ) // cache for categorical variables - { - int n = data->cat_count->cols; - catbuf.allocate(n); - for( i = 0; i < n; i++ ) - catbuf[i] = -1; - } - - if( _missing ) - { - if( !CV_IS_MAT(_missing) || !CV_IS_MASK_ARR(_missing) || - !CV_ARE_SIZES_EQ(_missing, _sample) ) - CV_Error( CV_StsBadArg, - "the missing data mask must be 8-bit vector of the same size as input sample" ); - m = _missing->data.ptr; - mstep = CV_IS_MAT_CONT(_missing->type) ? 1 : _missing->step/sizeof(m[0]); - } - - const int* vtype = data->var_type->data.i; - const int* vidx = data->var_idx && !preprocessed_input ? data->var_idx->data.i : 0; - const int* cmap = data->cat_map ? data->cat_map->data.i : 0; - const int* cofs = data->cat_ofs ? data->cat_ofs->data.i : 0; - - while( node->Tn > pruned_tree_idx && node->left ) - { - CvDTreeSplit* split = node->split; - int dir = 0; - for( ; !dir && split != 0; split = split->next ) - { - int vi = split->var_idx; - int ci = vtype[vi]; - i = vidx ? vidx[vi] : vi; - float val = sample[(size_t)i*step]; - if( m && m[(size_t)i*mstep] ) - continue; - if( ci < 0 ) // ordered - dir = val <= split->ord.c ? -1 : 1; - else // categorical + if( vtype[vi] == VAR_ORDERED ) + nidx = val <= split.c ? node.left : node.right; + else { - int c; - if( preprocessed_input ) + if( flags & PREPROCESSED_INPUT ) c = cvRound(val); else { c = catbuf[ci]; if( c < 0 ) { - int a = c = cofs[ci]; - int b = (ci+1 >= data->cat_ofs->cols) ? data->cat_map->cols : cofs[ci+1]; + int a = c = cofs[vi][0]; + int b = cofs[vi][1]; int ival = cvRound(val); if( ival != val ) CV_Error( CV_StsBadArg, - "one of input categorical variable is not an integer" ); + "one of input categorical variable is not an integer" ); - int sh = 0; while( a < b ) { - sh++; c = (a + b) >> 1; if( ival < cmap[c] ) b = c; @@ -3706,446 +1482,423 @@ CvDTreeNode* CvDTree::predict( const CvMat* _sample, break; } - if( c < 0 || ival != cmap[c] ) - continue; + CV_Assert( c >= 0 && ival == cmap[c] ); - catbuf[ci] = c -= cofs[ci]; + c -= cofs[vi][0]; + catbuf[ci] = c; } + const int* subset = &subsets[split.subsetOfs]; + unsigned u = c; + nidx = CV_DTREE_CAT_DIR(u, subset) < 0 ? node.left : node.right; } - c = ( (c == 65535) && data->is_buf_16u ) ? -1 : c; - dir = CV_DTREE_CAT_DIR(c, split->subset); } - - if( split->inversed ) - dir = -dir; } - if( !dir ) + if( predictType == PREDICT_SUM ) + sum += nodes[prev].value; + else { - double diff = node->right->sample_count - node->left->sample_count; - dir = diff < 0 ? -1 : 1; + lastClassIdx = nodes[prev].classIdx; + votes[lastClassIdx]++; } - node = dir < 0 ? node->left : node->right; } - return node; -} - - -CvDTreeNode* CvDTree::predict( const Mat& _sample, const Mat& _missing, bool preprocessed_input ) const -{ - CvMat sample = _sample, mmask = _missing; - return predict(&sample, mmask.data.ptr ? &mmask : 0, preprocessed_input); -} - - -const CvMat* CvDTree::get_var_importance() -{ - if( !var_importance ) + if( predictType == PREDICT_MAX_VOTE ) { - CvDTreeNode* node = root; - double* importance; - if( !node ) - return 0; - var_importance = cvCreateMat( 1, data->var_count, CV_64F ); - cvZero( var_importance ); - importance = var_importance->data.db; - - for(;;) + int best_idx = lastClassIdx; + if( range.end - range.start > 1 ) { - CvDTreeNode* parent; - for( ;; node = node->left ) - { - CvDTreeSplit* split = node->split; - - if( !node->left || node->Tn <= pruned_tree_idx ) - break; - - for( ; split != 0; split = split->next ) - importance[split->var_idx] += split->quality; - } - - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; - - if( !parent ) - break; - - node = parent->right; + best_idx = 0; + for( i = 1; i < nclasses; i++ ) + if( votes[best_idx] < votes[i] ) + best_idx = i; } - - cvNormalize( var_importance, var_importance, 1., 0, CV_L1 ); + sum = (flags & RAW_OUTPUT) ? (float)best_idx : classLabels[best_idx]; } - return var_importance; + return (float)sum; } -void CvDTree::write_split( CvFileStorage* fs, CvDTreeSplit* split ) const +float DTreesImpl::predict( InputArray _samples, OutputArray _results, int flags ) const { - int ci; + CV_Assert( !roots.empty() ); + Mat samples = _samples.getMat(), results; + int i, nsamples = samples.rows; + int rtype = CV_32F; + bool needresults = _results.needed(); + float retval = 0.f; + bool iscls = isClassifier(); + float scale = !iscls ? 1.f/(int)roots.size() : 1.f; - cvStartWriteStruct( fs, 0, CV_NODE_MAP + CV_NODE_FLOW ); - cvWriteInt( fs, "var", split->var_idx ); - cvWriteReal( fs, "quality", split->quality ); + if( iscls && (flags & PREDICT_MASK) == PREDICT_MAX_VOTE ) + rtype = CV_32S; - ci = data->get_var_type(split->var_idx); - if( ci >= 0 ) // split on a categorical var + if( needresults ) { - int i, n = data->cat_count->data.i[ci], to_right = 0, default_dir; + _results.create(nsamples, 1, rtype); + results = _results.getMat(); + } + else + nsamples = std::min(nsamples, 1); + + for( i = 0; i < nsamples; i++ ) + { + float val = predictTrees( Range(0, (int)roots.size()), samples.row(i), flags )*scale; + if( needresults ) + { + if( rtype == CV_32F ) + results.at(i) = val; + else + results.at(i) = cvRound(val); + } + if( i == 0 ) + retval = val; + } + return retval; +} + +void DTreesImpl::writeTrainingParams(FileStorage& fs) const +{ + fs << "use_surrogates" << (params0.useSurrogates ? 1 : 0); + fs << "max_categories" << params0.maxCategories; + fs << "regression_accuracy" << params0.regressionAccuracy; + + fs << "max_depth" << params0.maxDepth; + fs << "min_sample_count" << params0.minSampleCount; + fs << "cross_validation_folds" << params0.CVFolds; + + if( params0.CVFolds > 1 ) + fs << "use_1se_rule" << (params0.use1SERule ? 1 : 0); + + if( !params0.priors.empty() ) + fs << "priors" << params0.priors; +} + +void DTreesImpl::writeParams(FileStorage& fs) const +{ + fs << "is_classifier" << isClassifier(); + fs << "var_all" << (int)varType.size(); + fs << "var_count" << getVarCount(); + + int ord_var_count = 0, cat_var_count = 0; + int i, n = (int)varType.size(); + for( i = 0; i < n; i++ ) + if( varType[i] == VAR_ORDERED ) + ord_var_count++; + else + cat_var_count++; + fs << "ord_var_count" << ord_var_count; + fs << "cat_var_count" << cat_var_count; + + fs << "training_params" << "{"; + writeTrainingParams(fs); + + fs << "}"; + + if( !varIdx.empty() ) + fs << "var_idx" << varIdx; + + fs << "var_type" << varType; + + if( !catOfs.empty() ) + fs << "cat_ofs" << catOfs; + if( !catMap.empty() ) + fs << "cat_map" << catMap; + if( !classLabels.empty() ) + fs << "class_labels" << classLabels; + if( !missingSubst.empty() ) + fs << "missing_subst" << missingSubst; +} + +void DTreesImpl::writeSplit( FileStorage& fs, int splitidx ) const +{ + const Split& split = splits[splitidx]; + + fs << "{:"; + + int vi = split.varIdx; + fs << "var" << vi; + fs << "quality" << split.quality; + + if( varType[vi] == VAR_CATEGORICAL ) // split on a categorical var + { + int i, n = getCatCount(vi), to_right = 0; + const int* subset = &subsets[split.subsetOfs]; for( i = 0; i < n; i++ ) - to_right += CV_DTREE_CAT_DIR(i,split->subset) > 0; + to_right += CV_DTREE_CAT_DIR(i, subset) > 0; // ad-hoc rule when to use inverse categorical split notation // to achieve more compact and clear representation - default_dir = to_right <= 1 || to_right <= MIN(3, n/2) || to_right <= n/3 ? -1 : 1; + int default_dir = to_right <= 1 || to_right <= std::min(3, n/2) || to_right <= n/3 ? -1 : 1; - cvStartWriteStruct( fs, default_dir*(split->inversed ? -1 : 1) > 0 ? - "in" : "not_in", CV_NODE_SEQ+CV_NODE_FLOW ); + fs << (default_dir*(split.inversed ? -1 : 1) > 0 ? "in" : "not_in") << "[:"; for( i = 0; i < n; i++ ) { - int dir = CV_DTREE_CAT_DIR(i,split->subset); + int dir = CV_DTREE_CAT_DIR(i, subset); if( dir*default_dir < 0 ) - cvWriteInt( fs, 0, i ); + fs << i; } - cvEndWriteStruct( fs ); + + fs << "]"; } else - cvWriteReal( fs, !split->inversed ? "le" : "gt", split->ord.c ); + fs << (!split.inversed ? "le" : "gt") << split.c; - cvEndWriteStruct( fs ); + fs << "}"; } - -void CvDTree::write_node( CvFileStorage* fs, CvDTreeNode* node ) const +void DTreesImpl::writeNode( FileStorage& fs, int nidx, int depth ) const { - CvDTreeSplit* split; + const Node& node = nodes[nidx]; + fs << "{"; + fs << "depth" << depth; + fs << "value" << node.value; - cvStartWriteStruct( fs, 0, CV_NODE_MAP ); + if( _isClassifier ) + fs << "norm_class_idx" << node.classIdx; - cvWriteInt( fs, "depth", node->depth ); - cvWriteInt( fs, "sample_count", node->sample_count ); - cvWriteReal( fs, "value", node->value ); - - if( data->is_classifier ) - cvWriteInt( fs, "norm_class_idx", node->class_idx ); - - cvWriteInt( fs, "Tn", node->Tn ); - cvWriteInt( fs, "complexity", node->complexity ); - cvWriteReal( fs, "alpha", node->alpha ); - cvWriteReal( fs, "node_risk", node->node_risk ); - cvWriteReal( fs, "tree_risk", node->tree_risk ); - cvWriteReal( fs, "tree_error", node->tree_error ); - - if( node->left ) + if( node.split >= 0 ) { - cvStartWriteStruct( fs, "splits", CV_NODE_SEQ ); + fs << "splits" << "["; - for( split = node->split; split != 0; split = split->next ) - write_split( fs, split ); + for( int splitidx = node.split; splitidx >= 0; splitidx = splits[splitidx].next ) + writeSplit( fs, splitidx ); - cvEndWriteStruct( fs ); + fs << "]"; } - cvEndWriteStruct( fs ); + fs << "}"; } - -void CvDTree::write_tree_nodes( CvFileStorage* fs ) const +void DTreesImpl::writeTree( FileStorage& fs, int root ) const { - //CV_FUNCNAME( "CvDTree::write_tree_nodes" ); + fs << "nodes" << "["; - __BEGIN__; - - CvDTreeNode* node = root; + int nidx = root, pidx = 0, depth = 0; + const Node *node = 0; // traverse the tree and save all the nodes in depth-first order for(;;) { - CvDTreeNode* parent; for(;;) { - write_node( fs, node ); - if( !node->left ) + writeNode( fs, nidx, depth ); + node = &nodes[nidx]; + if( node->left < 0 ) break; - node = node->left; + nidx = node->left; + depth++; } - for( parent = node->parent; parent && parent->right == node; - node = parent, parent = parent->parent ) - ; + for( pidx = node->parent; pidx >= 0 && nodes[pidx].right == nidx; + nidx = pidx, pidx = nodes[pidx].parent ) + depth--; - if( !parent ) + if( pidx < 0 ) break; - node = parent->right; + nidx = nodes[pidx].right; } - __END__; + fs << "]"; } - -void CvDTree::write( CvFileStorage* fs, const char* name ) const +void DTreesImpl::write( FileStorage& fs ) const { - //CV_FUNCNAME( "CvDTree::write" ); - - __BEGIN__; - - cvStartWriteStruct( fs, name, CV_NODE_MAP, CV_TYPE_NAME_ML_TREE ); - - //get_var_importance(); - data->write_params( fs ); - //if( var_importance ) - //cvWrite( fs, "var_importance", var_importance ); - write( fs ); - - cvEndWriteStruct( fs ); - - __END__; + writeParams(fs); + writeTree(fs, roots[0]); } - -void CvDTree::write( CvFileStorage* fs ) const +void DTreesImpl::readParams( const FileNode& fn ) { - //CV_FUNCNAME( "CvDTree::write" ); + _isClassifier = (int)fn["is_classifier"] != 0; + /*int var_all = (int)fn["var_all"]; + int var_count = (int)fn["var_count"]; + int cat_var_count = (int)fn["cat_var_count"]; + int ord_var_count = (int)fn["ord_var_count"];*/ - __BEGIN__; + FileNode tparams_node = fn["training_params"]; - cvWriteInt( fs, "best_tree_idx", pruned_tree_idx ); + params0 = Params(); - cvStartWriteStruct( fs, "nodes", CV_NODE_SEQ ); - write_tree_nodes( fs ); - cvEndWriteStruct( fs ); - - __END__; -} - - -CvDTreeSplit* CvDTree::read_split( CvFileStorage* fs, CvFileNode* fnode ) -{ - CvDTreeSplit* split = 0; - - CV_FUNCNAME( "CvDTree::read_split" ); - - __BEGIN__; - - int vi, ci; - - if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) - CV_ERROR( CV_StsParseError, "some of the splits are not stored properly" ); - - vi = cvReadIntByName( fs, fnode, "var", -1 ); - if( (unsigned)vi >= (unsigned)data->var_count ) - CV_ERROR( CV_StsOutOfRange, "Split variable index is out of range" ); - - ci = data->get_var_type(vi); - if( ci >= 0 ) // split on categorical var + if( !tparams_node.empty() ) // training parameters are not necessary { - int i, n = data->cat_count->data.i[ci], inversed = 0, val; - CvSeqReader reader; - CvFileNode* inseq; - split = data->new_split_cat( vi, 0 ); - inseq = cvGetFileNodeByName( fs, fnode, "in" ); - if( !inseq ) + params0.useSurrogates = (int)tparams_node["use_surrogates"] != 0; + params0.maxCategories = (int)tparams_node["max_categories"]; + params0.regressionAccuracy = (float)tparams_node["regression_accuracy"]; + + params0.maxDepth = (int)tparams_node["max_depth"]; + params0.minSampleCount = (int)tparams_node["min_sample_count"]; + params0.CVFolds = (int)tparams_node["cross_validation_folds"]; + + if( params0.CVFolds > 1 ) { - inseq = cvGetFileNodeByName( fs, fnode, "not_in" ); - inversed = 1; + params.use1SERule = (int)tparams_node["use_1se_rule"] != 0; } - if( !inseq || - (CV_NODE_TYPE(inseq->tag) != CV_NODE_SEQ && CV_NODE_TYPE(inseq->tag) != CV_NODE_INT)) - CV_ERROR( CV_StsParseError, - "Either 'in' or 'not_in' tags should be inside a categorical split data" ); - if( CV_NODE_TYPE(inseq->tag) == CV_NODE_INT ) + tparams_node["priors"] >> params0.priors; + } + + fn["var_idx"] >> varIdx; + fn["var_type"] >> varType; + + fn["cat_ofs"] >> catOfs; + fn["cat_map"] >> catMap; + fn["missing_subst"] >> missingSubst; + fn["class_labels"] >> classLabels; + + initCompVarIdx(); + setDParams(params0); +} + +int DTreesImpl::readSplit( const FileNode& fn ) +{ + Split split; + + int vi = (int)fn["var"]; + CV_Assert( 0 <= vi && vi <= (int)varType.size() ); + split.varIdx = vi; + + if( varType[vi] == VAR_CATEGORICAL ) // split on categorical var + { + int i, val, ssize = getSubsetSize(vi); + split.subsetOfs = (int)subsets.size(); + for( i = 0; i < ssize; i++ ) + subsets.push_back(0); + int* subset = &subsets[split.subsetOfs]; + FileNode fns = fn["in"]; + if( fns.empty() ) { - val = inseq->data.i; - if( (unsigned)val >= (unsigned)n ) - CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); + fns = fn["not_in"]; + split.inversed = true; + } - split->subset[val >> 5] |= 1 << (val & 31); + if( fns.isInt() ) + { + val = (int)fns; + subset[val >> 5] |= 1 << (val & 31); } else { - cvStartReadSeq( inseq->data.seq, &reader ); - - for( i = 0; i < reader.seq->total; i++ ) + FileNodeIterator it = fns.begin(); + int n = (int)fns.size(); + for( i = 0; i < n; i++, ++it ) { - CvFileNode* inode = (CvFileNode*)reader.ptr; - val = inode->data.i; - if( CV_NODE_TYPE(inode->tag) != CV_NODE_INT || (unsigned)val >= (unsigned)n ) - CV_ERROR( CV_StsOutOfRange, "some of in/not_in elements are out of range" ); - - split->subset[val >> 5] |= 1 << (val & 31); - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + val = (int)*it; + subset[val >> 5] |= 1 << (val & 31); } } // for categorical splits we do not use inversed splits, // instead we inverse the variable set in the split - if( inversed ) - for( i = 0; i < (n + 31) >> 5; i++ ) - split->subset[i] ^= -1; + if( split.inversed ) + { + for( i = 0; i < ssize; i++ ) + subset[i] ^= -1; + split.inversed = false; + } } else { - CvFileNode* cmp_node; - split = data->new_split_ord( vi, 0, 0, 0, 0 ); - - cmp_node = cvGetFileNodeByName( fs, fnode, "le" ); - if( !cmp_node ) + FileNode cmpNode = fn["le"]; + if( cmpNode.empty() ) { - cmp_node = cvGetFileNodeByName( fs, fnode, "gt" ); - split->inversed = 1; + cmpNode = fn["gt"]; + split.inversed = true; } - - split->ord.c = (float)cvReadReal( cmp_node ); + split.c = (float)cmpNode; } - split->quality = (float)cvReadRealByName( fs, fnode, "quality" ); + split.quality = (float)fn["quality"]; + splits.push_back(split); - __END__; - - return split; + return (int)(splits.size() - 1); } - -CvDTreeNode* CvDTree::read_node( CvFileStorage* fs, CvFileNode* fnode, CvDTreeNode* parent ) +int DTreesImpl::readNode( const FileNode& fn ) { - CvDTreeNode* node = 0; + Node node; + node.value = (double)fn["value"]; - CV_FUNCNAME( "CvDTree::read_node" ); + if( _isClassifier ) + node.classIdx = (int)fn["norm_class_idx"]; - __BEGIN__; - - CvFileNode* splits; - int i, depth; - - if( !fnode || CV_NODE_TYPE(fnode->tag) != CV_NODE_MAP ) - CV_ERROR( CV_StsParseError, "some of the tree elements are not stored properly" ); - - CV_CALL( node = data->new_node( parent, 0, 0, 0 )); - depth = cvReadIntByName( fs, fnode, "depth", -1 ); - if( depth != node->depth ) - CV_ERROR( CV_StsParseError, "incorrect node depth" ); - - node->sample_count = cvReadIntByName( fs, fnode, "sample_count" ); - node->value = cvReadRealByName( fs, fnode, "value" ); - if( data->is_classifier ) - node->class_idx = cvReadIntByName( fs, fnode, "norm_class_idx" ); - - node->Tn = cvReadIntByName( fs, fnode, "Tn" ); - node->complexity = cvReadIntByName( fs, fnode, "complexity" ); - node->alpha = cvReadRealByName( fs, fnode, "alpha" ); - node->node_risk = cvReadRealByName( fs, fnode, "node_risk" ); - node->tree_risk = cvReadRealByName( fs, fnode, "tree_risk" ); - node->tree_error = cvReadRealByName( fs, fnode, "tree_error" ); - - splits = cvGetFileNodeByName( fs, fnode, "splits" ); - if( splits ) + FileNode sfn = fn["splits"]; + if( !sfn.empty() ) { - CvSeqReader reader; - CvDTreeSplit* last_split = 0; + int i, n = (int)sfn.size(), prevsplit = -1; + FileNodeIterator it = sfn.begin(); - if( CV_NODE_TYPE(splits->tag) != CV_NODE_SEQ ) - CV_ERROR( CV_StsParseError, "splits tag must stored as a sequence" ); - - cvStartReadSeq( splits->data.seq, &reader ); - for( i = 0; i < reader.seq->total; i++ ) + for( i = 0; i < n; i++, ++it ) { - CvDTreeSplit* split; - CV_CALL( split = read_split( fs, (CvFileNode*)reader.ptr )); - if( !last_split ) - node->split = last_split = split; + int splitidx = readSplit(*it); + if( splitidx < 0 ) + break; + if( prevsplit < 0 ) + node.split = splitidx; else - last_split = last_split->next = split; - - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); + splits[prevsplit].next = splitidx; + prevsplit = splitidx; } } - - __END__; - - return node; + nodes.push_back(node); + return (int)(nodes.size() - 1); } - -void CvDTree::read_tree_nodes( CvFileStorage* fs, CvFileNode* fnode ) +int DTreesImpl::readTree( const FileNode& fn ) { - CV_FUNCNAME( "CvDTree::read_tree_nodes" ); + int i, n = (int)fn.size(), root = -1, pidx = -1; + FileNodeIterator it = fn.begin(); - __BEGIN__; - - CvSeqReader reader; - CvDTreeNode _root; - CvDTreeNode* parent = &_root; - int i; - parent->left = parent->right = parent->parent = 0; - - cvStartReadSeq( fnode->data.seq, &reader ); - - for( i = 0; i < reader.seq->total; i++ ) + for( i = 0; i < n; i++, ++it ) { - CvDTreeNode* node; - - CV_CALL( node = read_node( fs, (CvFileNode*)reader.ptr, parent != &_root ? parent : 0 )); - if( !parent->left ) - parent->left = node; - else - parent->right = node; - if( node->split ) - parent = node; + int nidx = readNode(*it); + if( nidx < 0 ) + break; + Node& node = nodes[nidx]; + node.parent = pidx; + if( pidx < 0 ) + root = nidx; else { - while( parent && parent->right ) - parent = parent->parent; + Node& parent = nodes[pidx]; + if( parent.left < 0 ) + parent.left = nidx; + else + parent.right = nidx; + } + if( node.split >= 0 ) + pidx = nidx; + else + { + while( pidx >= 0 && nodes[pidx].right >= 0 ) + pidx = nodes[pidx].parent; } - - CV_NEXT_SEQ_ELEM( reader.seq->elem_size, reader ); } - - root = _root.left; - - __END__; + roots.push_back(root); + return root; } - -void CvDTree::read( CvFileStorage* fs, CvFileNode* fnode ) +void DTreesImpl::read( const FileNode& fn ) { - CvDTreeTrainData* _data = new CvDTreeTrainData(); - _data->read_params( fs, fnode ); - - read( fs, fnode, _data ); - get_var_importance(); -} - - -// a special entry point for reading weak decision trees from the tree ensembles -void CvDTree::read( CvFileStorage* fs, CvFileNode* node, CvDTreeTrainData* _data ) -{ - CV_FUNCNAME( "CvDTree::read" ); - - __BEGIN__; - - CvFileNode* tree_nodes; - clear(); - data = _data; + readParams(fn); - tree_nodes = cvGetFileNodeByName( fs, node, "nodes" ); - if( !tree_nodes || CV_NODE_TYPE(tree_nodes->tag) != CV_NODE_SEQ ) - CV_ERROR( CV_StsParseError, "nodes tag is missing" ); - - pruned_tree_idx = cvReadIntByName( fs, node, "best_tree_idx", -1 ); - read_tree_nodes( fs, tree_nodes ); - - __END__; + FileNode fnodes = fn["nodes"]; + CV_Assert( !fnodes.empty() ); + readTree(fnodes); } -Mat CvDTree::getVarImportance() +Ptr DTrees::create(const DTrees::Params& params) { - return cvarrToMat(get_var_importance()); + Ptr p = makePtr(); + p->setDParams(params); + return p; +} + +} } /* End of file. */ diff --git a/modules/ml/test/test_emknearestkmeans.cpp b/modules/ml/test/test_emknearestkmeans.cpp index a14b636061..98b88c7011 100644 --- a/modules/ml/test/test_emknearestkmeans.cpp +++ b/modules/ml/test/test_emknearestkmeans.cpp @@ -43,6 +43,9 @@ using namespace std; using namespace cv; +using cv::ml::TrainData; +using cv::ml::EM; +using cv::ml::KNearest; static void defaultDistribs( Mat& means, vector& covs, int type=CV_32FC1 ) @@ -309,9 +312,9 @@ void CV_KNearestTest::run( int /*start_from*/ ) generateData( testData, testLabels, sizes, means, covs, CV_32FC1, CV_32FC1 ); int code = cvtest::TS::OK; - KNearest knearest; - knearest.train( trainData, trainLabels ); - knearest.find_nearest( testData, 4, &bestLabels ); + Ptr knearest = KNearest::create(true); + knearest->train(trainData, cv::ml::ROW_SAMPLE, trainLabels); + knearest->findNearest( testData, 4, bestLabels); float err; if( !calcErr( bestLabels, testLabels, sizes, err, true ) ) { @@ -373,13 +376,16 @@ int CV_EMTest::runCase( int caseIndex, const EM_Params& params, cv::Mat labels; float err; - cv::EM em(params.nclusters, params.covMatType, params.termCrit); + Ptr em; + EM::Params emp(params.nclusters, params.covMatType, params.termCrit); if( params.startStep == EM::START_AUTO_STEP ) - em.train( trainData, noArray(), labels ); + em = EM::train( trainData, noArray(), labels, noArray(), emp ); else if( params.startStep == EM::START_E_STEP ) - em.trainE( trainData, *params.means, *params.covs, *params.weights, noArray(), labels ); + em = EM::train_startWithE( trainData, *params.means, *params.covs, + *params.weights, noArray(), labels, noArray(), emp ); else if( params.startStep == EM::START_M_STEP ) - em.trainM( trainData, *params.probs, noArray(), labels ); + em = EM::train_startWithM( trainData, *params.probs, + noArray(), labels, noArray(), emp ); // check train error if( !calcErr( labels, trainLabels, sizes, err , false, false ) ) @@ -399,7 +405,7 @@ int CV_EMTest::runCase( int caseIndex, const EM_Params& params, { Mat sample = testData.row(i); Mat probs; - labels.at(i) = static_cast(em.predict( sample, probs )[1]); + labels.at(i) = static_cast(em->predict2( sample, probs )[1]); } if( !calcErr( labels, testLabels, sizes, err, false, false ) ) { @@ -446,56 +452,56 @@ void CV_EMTest::run( int /*start_from*/ ) int code = cvtest::TS::OK; int caseIndex = 0; { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_AUTO_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_AUTO_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_M_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_M_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_GENERIC; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_GENERIC; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_DIAGONAL; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_DIAGONAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } { - params.startStep = cv::EM::START_E_STEP; - params.covMatType = cv::EM::COV_MAT_SPHERICAL; + params.startStep = EM::START_E_STEP; + params.covMatType = EM::COV_MAT_SPHERICAL; int currCode = runCase(caseIndex++, params, trainData, trainLabels, testData, testLabels, sizes); code = currCode == cvtest::TS::OK ? code : currCode; } @@ -511,7 +517,6 @@ protected: { int code = cvtest::TS::OK; const int nclusters = 2; - cv::EM em(nclusters); Mat samples = Mat(3,1,CV_64FC1); samples.at(0,0) = 1; @@ -520,11 +525,11 @@ protected: Mat labels; - em.train(samples, labels); + Ptr em = EM::train(samples, noArray(), labels, noArray(), EM::Params(nclusters)); Mat firstResult(samples.rows, 1, CV_32SC1); for( int i = 0; i < samples.rows; i++) - firstResult.at(i) = static_cast(em.predict(samples.row(i))[1]); + firstResult.at(i) = static_cast(em->predict2(samples.row(i), noArray())[1]); // Write out string filename = cv::tempfile(".xml"); @@ -533,7 +538,7 @@ protected: try { fs << "em" << "{"; - em.write(fs); + em->write(fs); fs << "}"; } catch(...) @@ -543,29 +548,24 @@ protected: } } - em.clear(); + em.release(); // Read in + try { - FileStorage fs = FileStorage(filename, FileStorage::READ); - CV_Assert(fs.isOpened()); - FileNode fn = fs["em"]; - try - { - em.read(fn); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "Crash in read method.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_EXCEPTION ); - } + em = StatModel::load(filename); + } + catch(...) + { + ts->printf( cvtest::TS::LOG, "Crash in read method.\n" ); + ts->set_failed_test_info( cvtest::TS::FAIL_EXCEPTION ); } remove( filename.c_str() ); int errCaseCount = 0; for( int i = 0; i < samples.rows; i++) - errCaseCount = std::abs(em.predict(samples.row(i))[1] - firstResult.at(i)) < FLT_EPSILON ? 0 : 1; + errCaseCount = std::abs(em->predict2(samples.row(i), noArray())[1] - firstResult.at(i)) < FLT_EPSILON ? 0 : 1; if( errCaseCount > 0 ) { @@ -588,21 +588,18 @@ protected: // 1. estimates distributions of "spam" / "not spam" // 2. predict classID using Bayes classifier for estimated distributions. - CvMLData data; string dataFilename = string(ts->get_data_path()) + "spambase.data"; + Ptr data = TrainData::loadFromCSV(dataFilename, 0); - if(data.read_csv(dataFilename.c_str()) != 0) + if( data.empty() ) { ts->printf(cvtest::TS::LOG, "File with spambase dataset cann't be read.\n"); ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); } - Mat values = cv::cvarrToMat(data.get_values()); - CV_Assert(values.cols == 58); - int responseIndex = 57; - - Mat samples = values.colRange(0, responseIndex); - Mat responses = values.col(responseIndex); + Mat samples = data->getSamples(); + CV_Assert(samples.cols == 57); + Mat responses = data->getResponses(); vector trainSamplesMask(samples.rows, 0); int trainSamplesCount = (int)(0.5f * samples.rows); @@ -616,7 +613,6 @@ protected: std::swap(trainSamplesMask[i1], trainSamplesMask[i2]); } - EM model0(3), model1(3); Mat samples0, samples1; for(int i = 0; i < samples.rows; i++) { @@ -630,8 +626,8 @@ protected: samples1.push_back(sample); } } - model0.train(samples0); - model1.train(samples1); + Ptr model0 = EM::train(samples0, noArray(), noArray(), noArray(), EM::Params(3)); + Ptr model1 = EM::train(samples1, noArray(), noArray(), noArray(), EM::Params(3)); Mat trainConfusionMat(2, 2, CV_32SC1, Scalar(0)), testConfusionMat(2, 2, CV_32SC1, Scalar(0)); @@ -639,8 +635,8 @@ protected: for(int i = 0; i < samples.rows; i++) { Mat sample = samples.row(i); - double sampleLogLikelihoods0 = model0.predict(sample)[0]; - double sampleLogLikelihoods1 = model1.predict(sample)[0]; + double sampleLogLikelihoods0 = model0->predict2(sample, noArray())[0]; + double sampleLogLikelihoods1 = model1->predict2(sample, noArray())[0]; int classID = sampleLogLikelihoods0 >= lambda * sampleLogLikelihoods1 ? 0 : 1; diff --git a/modules/ml/test/test_gbttest.cpp b/modules/ml/test/test_gbttest.cpp index 1e6d0fb20e..df19489f60 100644 --- a/modules/ml/test/test_gbttest.cpp +++ b/modules/ml/test/test_gbttest.cpp @@ -1,6 +1,8 @@ #include "test_precomp.hpp" +#if 0 + #include #include #include @@ -284,3 +286,5 @@ void CV_GBTreesTest::run(int) ///////////////////////////////////////////////////////////////////////////// TEST(ML_GBTrees, regression) { CV_GBTreesTest test; test.safe_run(); } + +#endif diff --git a/modules/ml/test/test_mltests.cpp b/modules/ml/test/test_mltests.cpp index e04ca98fe2..2ffa531ece 100644 --- a/modules/ml/test/test_mltests.cpp +++ b/modules/ml/test/test_mltests.cpp @@ -65,7 +65,7 @@ int CV_AMLTest::run_test_case( int testCaseIdx ) for (int k = 0; k < icount; k++) { #endif - data.mix_train_and_test_idx(); + data->shuffleTrainTest(); code = train( testCaseIdx ); #ifdef GET_STAT float case_result = get_error(); @@ -101,9 +101,10 @@ int CV_AMLTest::validate_test_results( int testCaseIdx ) { resultNode["mean"] >> mean; resultNode["sigma"] >> sigma; - float curErr = get_error( testCaseIdx, CV_TEST_ERROR ); + model->save(format("/Users/vp/tmp/dtree/testcase_%02d.cur.yml", testCaseIdx)); + float curErr = get_test_error( testCaseIdx ); const int coeff = 4; - ts->printf( cvtest::TS::LOG, "Test case = %d; test error = %f; mean error = %f (diff=%f), %d*sigma = %f", + ts->printf( cvtest::TS::LOG, "Test case = %d; test error = %f; mean error = %f (diff=%f), %d*sigma = %f\n", testCaseIdx, curErr, mean, abs( curErr - mean), coeff, coeff*sigma ); if ( abs( curErr - mean) > coeff*sigma ) { @@ -125,6 +126,6 @@ int CV_AMLTest::validate_test_results( int testCaseIdx ) TEST(ML_DTree, regression) { CV_AMLTest test( CV_DTREE ); test.safe_run(); } TEST(ML_Boost, regression) { CV_AMLTest test( CV_BOOST ); test.safe_run(); } TEST(ML_RTrees, regression) { CV_AMLTest test( CV_RTREES ); test.safe_run(); } -TEST(ML_ERTrees, regression) { CV_AMLTest test( CV_ERTREES ); test.safe_run(); } +TEST(DISABLED_ML_ERTrees, regression) { CV_AMLTest test( CV_ERTREES ); test.safe_run(); } /* End of file. */ diff --git a/modules/ml/test/test_mltests2.cpp b/modules/ml/test/test_mltests2.cpp index 560c449321..b7c5f46c6e 100644 --- a/modules/ml/test/test_mltests2.cpp +++ b/modules/ml/test/test_mltests2.cpp @@ -44,257 +44,49 @@ using namespace cv; using namespace std; -// auxiliary functions -// 1. nbayes -void nbayes_check_data( CvMLData* _data ) -{ - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - const CvMat* var_types = _data->get_var_types(); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - - Mat _var_types = cvarrToMat(var_types); - if( ( fabs( cvtest::norm( _var_types, Mat::zeros(_var_types.dims, _var_types.size, _var_types.type()), CV_L1 ) - - (var_types->rows + var_types->cols - 2)*CV_VAR_ORDERED - CV_VAR_CATEGORICAL ) > FLT_EPSILON ) || - !is_classifier ) - CV_Error( CV_StsBadArg, "incorrect types of predictors or responses" ); -} -bool nbayes_train( CvNormalBayesClassifier* nbayes, CvMLData* _data ) -{ - nbayes_check_data( _data ); - const CvMat* values = _data->get_values(); - const CvMat* responses = _data->get_responses(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - const CvMat* var_idx = _data->get_var_idx(); - return nbayes->train( values, responses, var_idx, train_sidx ); -} -float nbayes_calc_error( CvNormalBayesClassifier* nbayes, CvMLData* _data, int type, vector *resp ) -{ - float err = 0; - nbayes_check_data( _data ); - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = (float)nbayes->predict( &sample, 0 ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - return err; -} - -// 2. knearest -void knearest_check_data_and_get_predictors( CvMLData* _data, CvMat* _predictors ) -{ - const CvMat* values = _data->get_values(); - const CvMat* var_idx = _data->get_var_idx(); - if( var_idx->cols + var_idx->rows != values->cols ) - CV_Error( CV_StsBadArg, "var_idx is not supported" ); - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - int resp_idx = _data->get_response_idx(); - if( resp_idx == 0) - cvGetCols( values, _predictors, 1, values->cols ); - else if( resp_idx == values->cols - 1 ) - cvGetCols( values, _predictors, 0, values->cols - 1 ); - else - CV_Error( CV_StsBadArg, "responses must be in the first or last column; other cases are not supported" ); -} -bool knearest_train( CvKNearest* knearest, CvMLData* _data ) -{ - const CvMat* responses = _data->get_responses(); - const CvMat* train_sidx = _data->get_train_sample_idx(); - bool is_regression = _data->get_var_type( _data->get_response_idx() ) == CV_VAR_ORDERED; - CvMat predictors; - knearest_check_data_and_get_predictors( _data, &predictors ); - return knearest->train( &predictors, responses, train_sidx, is_regression ); -} -float knearest_calc_error( CvKNearest* knearest, CvMLData* _data, int k, int type, vector *resp ) -{ - float err = 0; - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_regression = _data->get_var_type( _data->get_response_idx() ) == CV_VAR_ORDERED; - CvMat predictors; - knearest_check_data_and_get_predictors( _data, &predictors ); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? predictors.rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( !is_regression ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - float r = knearest->find_nearest( &sample, k ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - float r = knearest->find_nearest( &sample, k ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; -} - -// 3. svm int str_to_svm_type(String& str) { if( !str.compare("C_SVC") ) - return CvSVM::C_SVC; + return SVM::C_SVC; if( !str.compare("NU_SVC") ) - return CvSVM::NU_SVC; + return SVM::NU_SVC; if( !str.compare("ONE_CLASS") ) - return CvSVM::ONE_CLASS; + return SVM::ONE_CLASS; if( !str.compare("EPS_SVR") ) - return CvSVM::EPS_SVR; + return SVM::EPS_SVR; if( !str.compare("NU_SVR") ) - return CvSVM::NU_SVR; + return SVM::NU_SVR; CV_Error( CV_StsBadArg, "incorrect svm type string" ); return -1; } int str_to_svm_kernel_type( String& str ) { if( !str.compare("LINEAR") ) - return CvSVM::LINEAR; + return SVM::LINEAR; if( !str.compare("POLY") ) - return CvSVM::POLY; + return SVM::POLY; if( !str.compare("RBF") ) - return CvSVM::RBF; + return SVM::RBF; if( !str.compare("SIGMOID") ) - return CvSVM::SIGMOID; + return SVM::SIGMOID; CV_Error( CV_StsBadArg, "incorrect svm type string" ); return -1; } -void svm_check_data( CvMLData* _data ) + +Ptr svm_train_auto( Ptr _data, SVM::Params _params, + int k_fold, ParamGrid C_grid, ParamGrid gamma_grid, + ParamGrid p_grid, ParamGrid nu_grid, ParamGrid coef_grid, + ParamGrid degree_grid ) { - if( _data->get_missing() ) - CV_Error( CV_StsBadArg, "missing values are not supported" ); - const CvMat* var_types = _data->get_var_types(); - for( int i = 0; i < var_types->cols-1; i++ ) - if (var_types->data.ptr[i] == CV_VAR_CATEGORICAL) - { - char msg[50]; - sprintf( msg, "incorrect type of %d-predictor", i ); - CV_Error( CV_StsBadArg, msg ); - } -} -bool svm_train( CvSVM* svm, CvMLData* _data, CvSVMParams _params ) -{ - svm_check_data(_data); - const CvMat* _train_data = _data->get_values(); - const CvMat* _responses = _data->get_responses(); - const CvMat* _var_idx = _data->get_var_idx(); - const CvMat* _sample_idx = _data->get_train_sample_idx(); - return svm->train( _train_data, _responses, _var_idx, _sample_idx, _params ); -} -bool svm_train_auto( CvSVM* svm, CvMLData* _data, CvSVMParams _params, - int k_fold, CvParamGrid C_grid, CvParamGrid gamma_grid, - CvParamGrid p_grid, CvParamGrid nu_grid, CvParamGrid coef_grid, - CvParamGrid degree_grid ) -{ - svm_check_data(_data); - const CvMat* _train_data = _data->get_values(); - const CvMat* _responses = _data->get_responses(); - const CvMat* _var_idx = _data->get_var_idx(); - const CvMat* _sample_idx = _data->get_train_sample_idx(); - return svm->train_auto( _train_data, _responses, _var_idx, - _sample_idx, _params, k_fold, C_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ); -} -float svm_calc_error( CvSVM* svm, CvMLData* _data, int type, vector *resp ) -{ - svm_check_data(_data); - float err = 0; - const CvMat* values = _data->get_values(); - const CvMat* response = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - const CvMat* var_types = _data->get_var_types(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(response->type) ? - 1 : response->step / CV_ELEM_SIZE(response->type); - bool is_classifier = var_types->data.ptr[var_types->cols-1] == CV_VAR_CATEGORICAL; - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? values->rows : sample_count; - float* pred_resp = 0; - if( resp && (sample_count > 0) ) - { - resp->resize( sample_count ); - pred_resp = &((*resp)[0]); - } - if ( is_classifier ) - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = svm->predict( &sample ); - if( pred_resp ) - pred_resp[i] = r; - int d = fabs((double)r - response->data.fl[si*r_step]) <= FLT_EPSILON ? 0 : 1; - err += d; - } - err = sample_count ? err / (float)sample_count * 100 : -FLT_MAX; - } - else - { - for( int i = 0; i < sample_count; i++ ) - { - CvMat sample; - int si = sidx ? sidx[i] : i; - cvGetRow( values, &sample, si ); - float r = svm->predict( &sample ); - if( pred_resp ) - pred_resp[i] = r; - float d = r - response->data.fl[si*r_step]; - err += d*d; - } - err = sample_count ? err / (float)sample_count : -FLT_MAX; - } - return err; + Mat _train_data = _data->getSamples(); + Mat _responses = _data->getResponses(); + Mat _var_idx = _data->getVarIdx(); + Mat _sample_idx = _data->getTrainSampleIdx(); + + Ptr svm = SVM::create(_params); + if( svm->trainAuto( _data, k_fold, C_grid, gamma_grid, p_grid, nu_grid, coef_grid, degree_grid ) ) + return svm; + return Ptr(); } // 4. em @@ -302,79 +94,66 @@ float svm_calc_error( CvSVM* svm, CvMLData* _data, int type, vector *resp int str_to_ann_train_method( String& str ) { if( !str.compare("BACKPROP") ) - return CvANN_MLP_TrainParams::BACKPROP; + return ANN_MLP::Params::BACKPROP; if( !str.compare("RPROP") ) - return CvANN_MLP_TrainParams::RPROP; + return ANN_MLP::Params::RPROP; CV_Error( CV_StsBadArg, "incorrect ann train method string" ); return -1; } -void ann_check_data_and_get_predictors( CvMLData* _data, CvMat* _inputs ) + +void ann_check_data( Ptr _data ) { - const CvMat* values = _data->get_values(); - const CvMat* var_idx = _data->get_var_idx(); - if( var_idx->cols + var_idx->rows != values->cols ) + Mat values = _data->getSamples(); + Mat var_idx = _data->getVarIdx(); + int nvars = (int)var_idx.total(); + if( nvars != 0 && nvars != values.cols ) CV_Error( CV_StsBadArg, "var_idx is not supported" ); - if( _data->get_missing() ) + if( !_data->getMissing().empty() ) CV_Error( CV_StsBadArg, "missing values are not supported" ); - int resp_idx = _data->get_response_idx(); - if( resp_idx == 0) - cvGetCols( values, _inputs, 1, values->cols ); - else if( resp_idx == values->cols - 1 ) - cvGetCols( values, _inputs, 0, values->cols - 1 ); - else - CV_Error( CV_StsBadArg, "outputs must be in the first or last column; other cases are not supported" ); } -void ann_get_new_responses( CvMLData* _data, Mat& new_responses, map& cls_map ) + +// unroll the categorical responses to binary vectors +Mat ann_get_new_responses( Ptr _data, map& cls_map ) { - const CvMat* train_sidx = _data->get_train_sample_idx(); - int* train_sidx_ptr = train_sidx->data.i; - const CvMat* responses = _data->get_responses(); - float* responses_ptr = responses->data.fl; - int r_step = CV_IS_MAT_CONT(responses->type) ? - 1 : responses->step / CV_ELEM_SIZE(responses->type); + Mat train_sidx = _data->getTrainSampleIdx(); + int* train_sidx_ptr = train_sidx.ptr(); + Mat responses = _data->getResponses(); int cls_count = 0; // construct cls_map cls_map.clear(); - for( int si = 0; si < train_sidx->cols; si++ ) + int nresponses = (int)responses.total(); + int si, n = !train_sidx.empty() ? (int)train_sidx.total() : nresponses; + + for( si = 0; si < n; si++ ) { - int sidx = train_sidx_ptr[si]; - int r = cvRound(responses_ptr[sidx*r_step]); - CV_DbgAssert( fabs(responses_ptr[sidx*r_step]-r) < FLT_EPSILON ); - int cls_map_size = (int)cls_map.size(); - cls_map[r]; - if ( (int)cls_map.size() > cls_map_size ) + int sidx = train_sidx_ptr ? train_sidx_ptr[si] : si; + int r = cvRound(responses.at(sidx)); + CV_DbgAssert( fabs(responses.at(sidx) - r) < FLT_EPSILON ); + map::iterator it = cls_map.find(r); + if( it == cls_map.end() ) cls_map[r] = cls_count++; } - new_responses.create( responses->rows, cls_count, CV_32F ); - new_responses.setTo( 0 ); - for( int si = 0; si < train_sidx->cols; si++ ) + Mat new_responses = Mat::zeros( nresponses, cls_count, CV_32F ); + for( si = 0; si < n; si++ ) { - int sidx = train_sidx_ptr[si]; - int r = cvRound(responses_ptr[sidx*r_step]); + int sidx = train_sidx_ptr ? train_sidx_ptr[si] : si; + int r = cvRound(responses.at(sidx)); int cidx = cls_map[r]; - new_responses.ptr(sidx)[cidx] = 1; + new_responses.at(sidx, cidx) = 1.f; } + return new_responses; } -int ann_train( CvANN_MLP* ann, CvMLData* _data, Mat& new_responses, CvANN_MLP_TrainParams _params, int flags = 0 ) -{ - const CvMat* train_sidx = _data->get_train_sample_idx(); - CvMat predictors; - ann_check_data_and_get_predictors( _data, &predictors ); - CvMat _new_responses = CvMat( new_responses ); - return ann->train( &predictors, &_new_responses, 0, train_sidx, _params, flags ); -} -float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, int type , vector *resp_labels ) + +float ann_calc_error( Ptr ann, Ptr _data, map& cls_map, int type, vector *resp_labels ) { float err = 0; - const CvMat* responses = _data->get_responses(); - const CvMat* sample_idx = (type == CV_TEST_ERROR) ? _data->get_test_sample_idx() : _data->get_train_sample_idx(); - int* sidx = sample_idx ? sample_idx->data.i : 0; - int r_step = CV_IS_MAT_CONT(responses->type) ? - 1 : responses->step / CV_ELEM_SIZE(responses->type); - CvMat predictors; - ann_check_data_and_get_predictors( _data, &predictors ); - int sample_count = sample_idx ? sample_idx->cols : 0; - sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? predictors.rows : sample_count; + Mat samples = _data->getSamples(); + Mat responses = _data->getResponses(); + Mat sample_idx = (type == CV_TEST_ERROR) ? _data->getTestSampleIdx() : _data->getTrainSampleIdx(); + int* sidx = !sample_idx.empty() ? sample_idx.ptr() : 0; + ann_check_data( _data ); + int sample_count = (int)sample_idx.total(); + sample_count = (type == CV_TRAIN_ERROR && sample_count == 0) ? samples.rows : sample_count; float* pred_resp = 0; vector innresp; if( sample_count > 0 ) @@ -392,17 +171,16 @@ float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, i } int cls_count = (int)cls_map.size(); Mat output( 1, cls_count, CV_32FC1 ); - CvMat _output = CvMat(output); + for( int i = 0; i < sample_count; i++ ) { - CvMat sample; int si = sidx ? sidx[i] : i; - cvGetRow( &predictors, &sample, si ); - ann->predict( &sample, &_output ); - CvPoint best_cls; - cvMinMaxLoc( &_output, 0, 0, 0, &best_cls, 0 ); - int r = cvRound(responses->data.fl[si*r_step]); - CV_DbgAssert( fabs(responses->data.fl[si*r_step]-r) < FLT_EPSILON ); + Mat sample = samples.row(si); + ann->predict( sample, output ); + Point best_cls; + minMaxLoc(output, 0, 0, 0, &best_cls, 0); + int r = cvRound(responses.at(si)); + CV_DbgAssert( fabs(responses.at(si) - r) < FLT_EPSILON ); r = cls_map[r]; int d = best_cls.x == r ? 0 : 1; err += d; @@ -417,13 +195,13 @@ float ann_calc_error( CvANN_MLP* ann, CvMLData* _data, map& cls_map, i int str_to_boost_type( String& str ) { if ( !str.compare("DISCRETE") ) - return CvBoost::DISCRETE; + return Boost::DISCRETE; if ( !str.compare("REAL") ) - return CvBoost::REAL; + return Boost::REAL; if ( !str.compare("LOGIT") ) - return CvBoost::LOGIT; + return Boost::LOGIT; if ( !str.compare("GENTLE") ) - return CvBoost::GENTLE; + return Boost::GENTLE; CV_Error( CV_StsBadArg, "incorrect boost type string" ); return -1; } @@ -446,76 +224,37 @@ CV_MLBaseTest::CV_MLBaseTest(const char* _modelName) RNG& rng = theRNG(); initSeed = rng.state; - rng.state = seeds[rng(seedCount)]; modelName = _modelName; - nbayes = 0; - knearest = 0; - svm = 0; - ann = 0; - dtree = 0; - boost = 0; - rtrees = 0; - ertrees = 0; - if( !modelName.compare(CV_NBAYES) ) - nbayes = new CvNormalBayesClassifier; - else if( !modelName.compare(CV_KNEAREST) ) - knearest = new CvKNearest; - else if( !modelName.compare(CV_SVM) ) - svm = new CvSVM; - else if( !modelName.compare(CV_ANN) ) - ann = new CvANN_MLP; - else if( !modelName.compare(CV_DTREE) ) - dtree = new CvDTree; - else if( !modelName.compare(CV_BOOST) ) - boost = new CvBoost; - else if( !modelName.compare(CV_RTREES) ) - rtrees = new CvRTrees; - else if( !modelName.compare(CV_ERTREES) ) - ertrees = new CvERTrees; } CV_MLBaseTest::~CV_MLBaseTest() { if( validationFS.isOpened() ) validationFS.release(); - if( nbayes ) - delete nbayes; - if( knearest ) - delete knearest; - if( svm ) - delete svm; - if( ann ) - delete ann; - if( dtree ) - delete dtree; - if( boost ) - delete boost; - if( rtrees ) - delete rtrees; - if( ertrees ) - delete ertrees; theRNG().state = initSeed; } -int CV_MLBaseTest::read_params( CvFileStorage* _fs ) +int CV_MLBaseTest::read_params( CvFileStorage* __fs ) { - if( !_fs ) + FileStorage _fs(__fs, false); + if( !_fs.isOpened() ) test_case_count = -1; else { - CvFileNode* fn = cvGetRootFileNode( _fs, 0 ); - fn = (CvFileNode*)cvGetSeqElem( fn->data.seq, 0 ); - fn = cvGetFileNodeByName( _fs, fn, "run_params" ); - CvSeq* dataSetNamesSeq = cvGetFileNodeByName( _fs, fn, modelName.c_str() )->data.seq; - test_case_count = dataSetNamesSeq ? dataSetNamesSeq->total : -1; + FileNode fn = _fs.getFirstTopLevelNode()["run_params"][modelName]; + test_case_count = (int)fn.size(); + if( test_case_count <= 0 ) + test_case_count = -1; if( test_case_count > 0 ) { dataSetNames.resize( test_case_count ); - vector::iterator it = dataSetNames.begin(); - for( int i = 0; i < test_case_count; i++, it++ ) - *it = ((CvFileNode*)cvGetSeqElem( dataSetNamesSeq, i ))->data.str.ptr; + FileNodeIterator it = fn.begin(); + for( int i = 0; i < test_case_count; i++, ++it ) + { + dataSetNames[i] = (string)*it; + } } } return cvtest::TS::OK;; @@ -547,8 +286,6 @@ void CV_MLBaseTest::run( int ) int CV_MLBaseTest::prepare_test_case( int test_case_idx ) { - int trainSampleCount, respIdx; - String varTypes; clear(); string dataPath = ts->get_data_path(); @@ -560,30 +297,27 @@ int CV_MLBaseTest::prepare_test_case( int test_case_idx ) string dataName = dataSetNames[test_case_idx], filename = dataPath + dataName + ".data"; - if ( data.read_csv( filename.c_str() ) != 0) - { - char msg[100]; - sprintf( msg, "file %s can not be read", filename.c_str() ); - ts->printf( cvtest::TS::LOG, msg ); - return cvtest::TS::FAIL_INVALID_TEST_DATA; - } FileNode dataParamsNode = validationFS.getFirstTopLevelNode()["validation"][modelName][dataName]["data_params"]; CV_DbgAssert( !dataParamsNode.empty() ); CV_DbgAssert( !dataParamsNode["LS"].empty() ); - dataParamsNode["LS"] >> trainSampleCount; - CvTrainTestSplit spl( trainSampleCount ); - data.set_train_test_split( &spl ); + int trainSampleCount = (int)dataParamsNode["LS"]; CV_DbgAssert( !dataParamsNode["resp_idx"].empty() ); - dataParamsNode["resp_idx"] >> respIdx; - data.set_response_idx( respIdx ); + int respIdx = (int)dataParamsNode["resp_idx"]; CV_DbgAssert( !dataParamsNode["types"].empty() ); - dataParamsNode["types"] >> varTypes; - data.set_var_types( varTypes.c_str() ); + String varTypes = (String)dataParamsNode["types"]; + data = TrainData::loadFromCSV(filename, 0, respIdx, respIdx+1, varTypes); + if( data.empty() ) + { + ts->printf( cvtest::TS::LOG, "file %s can not be read\n", filename.c_str() ); + return cvtest::TS::FAIL_INVALID_TEST_DATA; + } + + data->setTrainTestSplit(trainSampleCount); return cvtest::TS::OK; } @@ -598,114 +332,98 @@ int CV_MLBaseTest::train( int testCaseIdx ) FileNode modelParamsNode = validationFS.getFirstTopLevelNode()["validation"][modelName][dataSetNames[testCaseIdx]]["model_params"]; - if( !modelName.compare(CV_NBAYES) ) - is_trained = nbayes_train( nbayes, &data ); - else if( !modelName.compare(CV_KNEAREST) ) + if( modelName == CV_NBAYES ) + model = NormalBayesClassifier::create(); + else if( modelName == CV_KNEAREST ) { - assert( 0 ); - //is_trained = knearest->train( &data ); + model = KNearest::create(); } - else if( !modelName.compare(CV_SVM) ) + else if( modelName == CV_SVM ) { String svm_type_str, kernel_type_str; modelParamsNode["svm_type"] >> svm_type_str; modelParamsNode["kernel_type"] >> kernel_type_str; - CvSVMParams params; - params.svm_type = str_to_svm_type( svm_type_str ); - params.kernel_type = str_to_svm_kernel_type( kernel_type_str ); + SVM::Params params; + params.svmType = str_to_svm_type( svm_type_str ); + params.kernelType = str_to_svm_kernel_type( kernel_type_str ); modelParamsNode["degree"] >> params.degree; modelParamsNode["gamma"] >> params.gamma; modelParamsNode["coef0"] >> params.coef0; modelParamsNode["C"] >> params.C; modelParamsNode["nu"] >> params.nu; modelParamsNode["p"] >> params.p; - is_trained = svm_train( svm, &data, params ); + model = SVM::create(params); } - else if( !modelName.compare(CV_EM) ) + else if( modelName == CV_EM ) { assert( 0 ); } - else if( !modelName.compare(CV_ANN) ) + else if( modelName == CV_ANN ) { String train_method_str; double param1, param2; modelParamsNode["train_method"] >> train_method_str; modelParamsNode["param1"] >> param1; modelParamsNode["param2"] >> param2; - Mat new_responses; - ann_get_new_responses( &data, new_responses, cls_map ); - int layer_sz[] = { data.get_values()->cols - 1, 100, 100, (int)cls_map.size() }; - CvMat layer_sizes = - cvMat( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); - ann->create( &layer_sizes ); - is_trained = ann_train( ann, &data, new_responses, CvANN_MLP_TrainParams(cvTermCriteria(CV_TERMCRIT_ITER,300,0.01), - str_to_ann_train_method(train_method_str), param1, param2) ) >= 0; + Mat new_responses = ann_get_new_responses( data, cls_map ); + // binarize the responses + data = TrainData::create(data->getSamples(), data->getLayout(), new_responses, + data->getVarIdx(), data->getTrainSampleIdx()); + int layer_sz[] = { data->getNAllVars(), 100, 100, (int)cls_map.size() }; + Mat layer_sizes( 1, (int)(sizeof(layer_sz)/sizeof(layer_sz[0])), CV_32S, layer_sz ); + model = ANN_MLP::create(ANN_MLP::Params(layer_sizes, ANN_MLP::SIGMOID_SYM, 0, 0, + TermCriteria(TermCriteria::COUNT,300,0.01), + str_to_ann_train_method(train_method_str), param1, param2)); } - else if( !modelName.compare(CV_DTREE) ) + else if( modelName == CV_DTREE ) { int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS; float REG_ACCURACY = 0; - bool USE_SURROGATE, IS_PRUNED; + bool USE_SURROGATE = false, IS_PRUNED; modelParamsNode["max_depth"] >> MAX_DEPTH; modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; modelParamsNode["max_categories"] >> MAX_CATEGORIES; modelParamsNode["cv_folds"] >> CV_FOLDS; modelParamsNode["is_pruned"] >> IS_PRUNED; - is_trained = dtree->train( &data, - CvDTreeParams(MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, USE_SURROGATE, - MAX_CATEGORIES, CV_FOLDS, false, IS_PRUNED, 0 )) != 0; + model = DTrees::create(DTrees::Params(MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, USE_SURROGATE, + MAX_CATEGORIES, CV_FOLDS, false, IS_PRUNED, Mat() )); } - else if( !modelName.compare(CV_BOOST) ) + else if( modelName == CV_BOOST ) { int BOOST_TYPE, WEAK_COUNT, MAX_DEPTH; float WEIGHT_TRIM_RATE; - bool USE_SURROGATE; + bool USE_SURROGATE = false; String typeStr; modelParamsNode["type"] >> typeStr; BOOST_TYPE = str_to_boost_type( typeStr ); modelParamsNode["weak_count"] >> WEAK_COUNT; modelParamsNode["weight_trim_rate"] >> WEIGHT_TRIM_RATE; modelParamsNode["max_depth"] >> MAX_DEPTH; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; - is_trained = boost->train( &data, - CvBoostParams(BOOST_TYPE, WEAK_COUNT, WEIGHT_TRIM_RATE, MAX_DEPTH, USE_SURROGATE, 0) ) != 0; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; + model = Boost::create( Boost::Params(BOOST_TYPE, WEAK_COUNT, WEIGHT_TRIM_RATE, MAX_DEPTH, USE_SURROGATE, Mat()) ); } - else if( !modelName.compare(CV_RTREES) ) + else if( modelName == CV_RTREES ) { int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS, NACTIVE_VARS, MAX_TREES_NUM; float REG_ACCURACY = 0, OOB_EPS = 0.0; - bool USE_SURROGATE, IS_PRUNED; + bool USE_SURROGATE = false, IS_PRUNED; modelParamsNode["max_depth"] >> MAX_DEPTH; modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; + //modelParamsNode["use_surrogate"] >> USE_SURROGATE; modelParamsNode["max_categories"] >> MAX_CATEGORIES; modelParamsNode["cv_folds"] >> CV_FOLDS; modelParamsNode["is_pruned"] >> IS_PRUNED; modelParamsNode["nactive_vars"] >> NACTIVE_VARS; modelParamsNode["max_trees_num"] >> MAX_TREES_NUM; - is_trained = rtrees->train( &data, CvRTParams( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, - USE_SURROGATE, MAX_CATEGORIES, 0, true, // (calc_var_importance == true) <=> RF processes variable importance - NACTIVE_VARS, MAX_TREES_NUM, OOB_EPS, CV_TERMCRIT_ITER)) != 0; - } - else if( !modelName.compare(CV_ERTREES) ) - { - int MAX_DEPTH, MIN_SAMPLE_COUNT, MAX_CATEGORIES, CV_FOLDS, NACTIVE_VARS, MAX_TREES_NUM; - float REG_ACCURACY = 0, OOB_EPS = 0.0; - bool USE_SURROGATE, IS_PRUNED; - modelParamsNode["max_depth"] >> MAX_DEPTH; - modelParamsNode["min_sample_count"] >> MIN_SAMPLE_COUNT; - modelParamsNode["use_surrogate"] >> USE_SURROGATE; - modelParamsNode["max_categories"] >> MAX_CATEGORIES; - modelParamsNode["cv_folds"] >> CV_FOLDS; - modelParamsNode["is_pruned"] >> IS_PRUNED; - modelParamsNode["nactive_vars"] >> NACTIVE_VARS; - modelParamsNode["max_trees_num"] >> MAX_TREES_NUM; - is_trained = ertrees->train( &data, CvRTParams( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, - USE_SURROGATE, MAX_CATEGORIES, 0, false, // (calc_var_importance == true) <=> RF processes variable importance - NACTIVE_VARS, MAX_TREES_NUM, OOB_EPS, CV_TERMCRIT_ITER)) != 0; + model = RTrees::create(RTrees::Params( MAX_DEPTH, MIN_SAMPLE_COUNT, REG_ACCURACY, + USE_SURROGATE, MAX_CATEGORIES, Mat(), true, // (calc_var_importance == true) <=> RF processes variable importance + NACTIVE_VARS, TermCriteria(TermCriteria::COUNT, MAX_TREES_NUM, OOB_EPS))); } + if( !model.empty() ) + is_trained = model->train(data, 0); + if( !is_trained ) { ts->printf( cvtest::TS::LOG, "in test case %d model training was failed", testCaseIdx ); @@ -714,78 +432,46 @@ int CV_MLBaseTest::train( int testCaseIdx ) return cvtest::TS::OK; } -float CV_MLBaseTest::get_error( int /*testCaseIdx*/, int type, vector *resp ) +float CV_MLBaseTest::get_test_error( int /*testCaseIdx*/, vector *resp ) { + int type = CV_TEST_ERROR; float err = 0; - if( !modelName.compare(CV_NBAYES) ) - err = nbayes_calc_error( nbayes, &data, type, resp ); - else if( !modelName.compare(CV_KNEAREST) ) - { + Mat _resp; + if( modelName == CV_EM ) assert( 0 ); - /*testCaseIdx = 0; - int k = 2; - validationFS.getFirstTopLevelNode()["validation"][modelName][dataSetNames[testCaseIdx]]["model_params"]["k"] >> k; - err = knearest->calc_error( &data, k, type, resp );*/ - } - else if( !modelName.compare(CV_SVM) ) - err = svm_calc_error( svm, &data, type, resp ); - else if( !modelName.compare(CV_EM) ) - assert( 0 ); - else if( !modelName.compare(CV_ANN) ) - err = ann_calc_error( ann, &data, cls_map, type, resp ); - else if( !modelName.compare(CV_DTREE) ) - err = dtree->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_BOOST) ) - err = boost->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_RTREES) ) - err = rtrees->calc_error( &data, type, resp ); - else if( !modelName.compare(CV_ERTREES) ) - err = ertrees->calc_error( &data, type, resp ); + else if( modelName == CV_ANN ) + err = ann_calc_error( model, data, cls_map, type, resp ); + else if( modelName == CV_DTREE || modelName == CV_BOOST || modelName == CV_RTREES || + modelName == CV_SVM || modelName == CV_NBAYES || modelName == CV_KNEAREST ) + err = model->calcError( data, true, _resp ); + if( !_resp.empty() && resp ) + _resp.convertTo(*resp, CV_32F); return err; } void CV_MLBaseTest::save( const char* filename ) { - if( !modelName.compare(CV_NBAYES) ) - nbayes->save( filename ); - else if( !modelName.compare(CV_KNEAREST) ) - knearest->save( filename ); - else if( !modelName.compare(CV_SVM) ) - svm->save( filename ); - else if( !modelName.compare(CV_ANN) ) - ann->save( filename ); - else if( !modelName.compare(CV_DTREE) ) - dtree->save( filename ); - else if( !modelName.compare(CV_BOOST) ) - boost->save( filename ); - else if( !modelName.compare(CV_RTREES) ) - rtrees->save( filename ); - else if( !modelName.compare(CV_ERTREES) ) - ertrees->save( filename ); + model->save( filename ); } void CV_MLBaseTest::load( const char* filename ) { - if( !modelName.compare(CV_NBAYES) ) - nbayes->load( filename ); - else if( !modelName.compare(CV_KNEAREST) ) - knearest->load( filename ); - else if( !modelName.compare(CV_SVM) ) - { - delete svm; - svm = new CvSVM; - svm->load( filename ); - } - else if( !modelName.compare(CV_ANN) ) - ann->load( filename ); - else if( !modelName.compare(CV_DTREE) ) - dtree->load( filename ); - else if( !modelName.compare(CV_BOOST) ) - boost->load( filename ); - else if( !modelName.compare(CV_RTREES) ) - rtrees->load( filename ); - else if( !modelName.compare(CV_ERTREES) ) - ertrees->load( filename ); + if( modelName == CV_NBAYES ) + model = StatModel::load( filename ); + else if( modelName == CV_KNEAREST ) + model = StatModel::load( filename ); + else if( modelName == CV_SVM ) + model = StatModel::load( filename ); + else if( modelName == CV_ANN ) + model = StatModel::load( filename ); + else if( modelName == CV_DTREE ) + model = StatModel::load( filename ); + else if( modelName == CV_BOOST ) + model = StatModel::load( filename ); + else if( modelName == CV_RTREES ) + model = StatModel::load( filename ); + else + CV_Error( CV_StsNotImplemented, "invalid stat model name"); } /* End of file. */ diff --git a/modules/ml/test/test_precomp.hpp b/modules/ml/test/test_precomp.hpp index e68e5513ba..329b9bd6c0 100644 --- a/modules/ml/test/test_precomp.hpp +++ b/modules/ml/test/test_precomp.hpp @@ -25,6 +25,20 @@ #define CV_RTREES "rtrees" #define CV_ERTREES "ertrees" +enum { CV_TRAIN_ERROR=0, CV_TEST_ERROR=1 }; + +using cv::Ptr; +using cv::ml::StatModel; +using cv::ml::TrainData; +using cv::ml::NormalBayesClassifier; +using cv::ml::SVM; +using cv::ml::KNearest; +using cv::ml::ParamGrid; +using cv::ml::ANN_MLP; +using cv::ml::DTrees; +using cv::ml::Boost; +using cv::ml::RTrees; + class CV_MLBaseTest : public cvtest::BaseTest { public: @@ -39,24 +53,16 @@ protected: virtual int validate_test_results( int testCaseIdx ) = 0; int train( int testCaseIdx ); - float get_error( int testCaseIdx, int type, std::vector *resp = 0 ); + float get_test_error( int testCaseIdx, std::vector *resp = 0 ); void save( const char* filename ); void load( const char* filename ); - CvMLData data; + Ptr data; std::string modelName, validationFN; std::vector dataSetNames; cv::FileStorage validationFS; - // MLL models - CvNormalBayesClassifier* nbayes; - CvKNearest* knearest; - CvSVM* svm; - CvANN_MLP* ann; - CvDTree* dtree; - CvBoost* boost; - CvRTrees* rtrees; - CvERTrees* ertrees; + Ptr model; std::map cls_map; @@ -67,6 +73,7 @@ class CV_AMLTest : public CV_MLBaseTest { public: CV_AMLTest( const char* _modelName ); + virtual ~CV_AMLTest() {} protected: virtual int run_test_case( int testCaseIdx ); virtual int validate_test_results( int testCaseIdx ); @@ -76,6 +83,7 @@ class CV_SLMLTest : public CV_MLBaseTest { public: CV_SLMLTest( const char* _modelName ); + virtual ~CV_SLMLTest() {} protected: virtual int run_test_case( int testCaseIdx ); virtual int validate_test_results( int testCaseIdx ); diff --git a/modules/ml/test/test_save_load.cpp b/modules/ml/test/test_save_load.cpp index 8b58ce534a..bef2fd0e1c 100644 --- a/modules/ml/test/test_save_load.cpp +++ b/modules/ml/test/test_save_load.cpp @@ -59,20 +59,20 @@ int CV_SLMLTest::run_test_case( int testCaseIdx ) if( code == cvtest::TS::OK ) { - data.mix_train_and_test_idx(); - code = train( testCaseIdx ); - if( code == cvtest::TS::OK ) - { - get_error( testCaseIdx, CV_TEST_ERROR, &test_resps1 ); - fname1 = tempfile(".yml.gz"); - save( fname1.c_str() ); - load( fname1.c_str() ); - get_error( testCaseIdx, CV_TEST_ERROR, &test_resps2 ); - fname2 = tempfile(".yml.gz"); - save( fname2.c_str() ); - } - else - ts->printf( cvtest::TS::LOG, "model can not be trained" ); + data->setTrainTestSplit(data->getNTrainSamples(), true); + code = train( testCaseIdx ); + if( code == cvtest::TS::OK ) + { + get_test_error( testCaseIdx, &test_resps1 ); + fname1 = tempfile(".yml.gz"); + save( fname1.c_str() ); + load( fname1.c_str() ); + get_test_error( testCaseIdx, &test_resps2 ); + fname2 = tempfile(".yml.gz"); + save( fname2.c_str() ); + } + else + ts->printf( cvtest::TS::LOG, "model can not be trained" ); } return code; } @@ -130,15 +130,19 @@ int CV_SLMLTest::validate_test_results( int testCaseIdx ) remove( fname2.c_str() ); } - // 2. compare responses - CV_Assert( test_resps1.size() == test_resps2.size() ); - vector::const_iterator it1 = test_resps1.begin(), it2 = test_resps2.begin(); - for( ; it1 != test_resps1.end(); ++it1, ++it2 ) + if( code >= 0 ) { - if( fabs(*it1 - *it2) > FLT_EPSILON ) + // 2. compare responses + CV_Assert( test_resps1.size() == test_resps2.size() ); + vector::const_iterator it1 = test_resps1.begin(), it2 = test_resps2.begin(); + for( ; it1 != test_resps1.end(); ++it1, ++it2 ) { - ts->printf( cvtest::TS::LOG, "in test case %d responses predicted before saving and after loading is different", testCaseIdx ); - code = cvtest::TS::FAIL_INVALID_OUTPUT; + if( fabs(*it1 - *it2) > FLT_EPSILON ) + { + ts->printf( cvtest::TS::LOG, "in test case %d responses predicted before saving and after loading is different", testCaseIdx ); + code = cvtest::TS::FAIL_INVALID_OUTPUT; + break; + } } } return code; @@ -152,40 +156,41 @@ TEST(ML_ANN, save_load) { CV_SLMLTest test( CV_ANN ); test.safe_run(); } TEST(ML_DTree, save_load) { CV_SLMLTest test( CV_DTREE ); test.safe_run(); } TEST(ML_Boost, save_load) { CV_SLMLTest test( CV_BOOST ); test.safe_run(); } TEST(ML_RTrees, save_load) { CV_SLMLTest test( CV_RTREES ); test.safe_run(); } -TEST(ML_ERTrees, save_load) { CV_SLMLTest test( CV_ERTREES ); test.safe_run(); } +TEST(DISABLED_ML_ERTrees, save_load) { CV_SLMLTest test( CV_ERTREES ); test.safe_run(); } -TEST(ML_SVM, throw_exception_when_save_untrained_model) +/*TEST(ML_SVM, throw_exception_when_save_untrained_model) { - SVM svm; + Ptr svm; string filename = tempfile("svm.xml"); ASSERT_THROW(svm.save(filename.c_str()), Exception); remove(filename.c_str()); -} +}*/ TEST(DISABLED_ML_SVM, linear_save_load) { - CvSVM svm1, svm2, svm3; - svm1.load("SVM45_X_38-1.xml"); - svm2.load("SVM45_X_38-2.xml"); + Ptr svm1, svm2, svm3; + + svm1 = StatModel::load("SVM45_X_38-1.xml"); + svm2 = StatModel::load("SVM45_X_38-2.xml"); string tname = tempfile("a.xml"); - svm2.save(tname.c_str()); - svm3.load(tname.c_str()); + svm2->save(tname); + svm3 = StatModel::load(tname); - ASSERT_EQ(svm1.get_var_count(), svm2.get_var_count()); - ASSERT_EQ(svm1.get_var_count(), svm3.get_var_count()); + ASSERT_EQ(svm1->getVarCount(), svm2->getVarCount()); + ASSERT_EQ(svm1->getVarCount(), svm3->getVarCount()); - int m = 10000, n = svm1.get_var_count(); + int m = 10000, n = svm1->getVarCount(); Mat samples(m, n, CV_32F), r1, r2, r3; randu(samples, 0., 1.); - svm1.predict(samples, r1); - svm2.predict(samples, r2); - svm3.predict(samples, r3); + svm1->predict(samples, r1); + svm2->predict(samples, r2); + svm3->predict(samples, r3); double eps = 1e-4; - EXPECT_LE(cvtest::norm(r1, r2, NORM_INF), eps); - EXPECT_LE(cvtest::norm(r1, r3, NORM_INF), eps); + EXPECT_LE(norm(r1, r2, NORM_INF), eps); + EXPECT_LE(norm(r1, r3, NORM_INF), eps); remove(tname.c_str()); } diff --git a/modules/nonfree/CMakeLists.txt b/modules/nonfree/CMakeLists.txt deleted file mode 100644 index 851646f259..0000000000 --- a/modules/nonfree/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -if(BUILD_ANDROID_PACKAGE) - ocv_module_disable(nonfree) -endif() - -set(the_description "Functionality with possible limitations on the use") -ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wshadow) -ocv_define_module(nonfree opencv_imgproc opencv_features2d opencv_calib3d OPTIONAL opencv_cudaarithm) diff --git a/modules/nonfree/doc/feature_detection.rst b/modules/nonfree/doc/feature_detection.rst deleted file mode 100644 index b61b85cd8b..0000000000 --- a/modules/nonfree/doc/feature_detection.rst +++ /dev/null @@ -1,250 +0,0 @@ -Feature Detection and Description -================================= - -SIFT ----- -.. ocv:class:: SIFT : public Feature2D - -Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform (SIFT) algorithm by D. Lowe [Lowe04]_. - -.. [Lowe04] Lowe, D. G., “Distinctive Image Features from Scale-Invariant Keypointsâ€, International Journal of Computer Vision, 60, 2, pp. 91-110, 2004. - - -SIFT::SIFT ----------- -The SIFT constructors. - -.. ocv:function:: SIFT::SIFT( int nfeatures=0, int nOctaveLayers=3, double contrastThreshold=0.04, double edgeThreshold=10, double sigma=1.6) - -.. ocv:pyfunction:: cv2.SIFT([, nfeatures[, nOctaveLayers[, contrastThreshold[, edgeThreshold[, sigma]]]]]) -> - - :param nfeatures: The number of best features to retain. The features are ranked by their scores (measured in SIFT algorithm as the local contrast) - - :param nOctaveLayers: The number of layers in each octave. 3 is the value used in D. Lowe paper. The number of octaves is computed automatically from the image resolution. - - :param contrastThreshold: The contrast threshold used to filter out weak features in semi-uniform (low-contrast) regions. The larger the threshold, the less features are produced by the detector. - - :param edgeThreshold: The threshold used to filter out edge-like features. Note that the its meaning is different from the contrastThreshold, i.e. the larger the ``edgeThreshold``, the less features are filtered out (more features are retained). - - :param sigma: The sigma of the Gaussian applied to the input image at the octave #0. If your image is captured with a weak camera with soft lenses, you might want to reduce the number. - - -SIFT::operator () ------------------ -Extract features and computes their descriptors using SIFT algorithm - -.. ocv:function:: void SIFT::operator()(InputArray img, InputArray mask, vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false) - -.. ocv:pyfunction:: cv2.SIFT.detect(image[, mask]) -> keypoints - -.. ocv:pyfunction:: cv2.SIFT.compute(image, keypoints[, descriptors]) -> keypoints, descriptors - -.. ocv:pyfunction:: cv2.SIFT.detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors - - :param img: Input 8-bit grayscale image - - :param mask: Optional input mask that marks the regions where we should detect features. - - :param keypoints: The input/output vector of keypoints - - :param descriptors: The output matrix of descriptors. Pass ``cv::noArray()`` if you do not need them. - - :param useProvidedKeypoints: Boolean flag. If it is true, the keypoint detector is not run. Instead, the provided vector of keypoints is used and the algorithm just computes their descriptors. - -.. note:: Python API provides three functions. First one finds keypoints only. Second function computes the descriptors based on the keypoints we provide. Third function detects the keypoints and computes their descriptors. If you want both keypoints and descriptors, directly use third function as ``kp, des = cv2.SIFT.detectAndCompute(image, None)`` - -SURF ----- -.. ocv:class:: SURF : public Feature2D - - Class for extracting Speeded Up Robust Features from an image [Bay06]_. The class is derived from ``CvSURFParams`` structure, which specifies the algorithm parameters: - - .. ocv:member:: int extended - - * 0 means that the basic descriptors (64 elements each) shall be computed - * 1 means that the extended descriptors (128 elements each) shall be computed - - .. ocv:member:: int upright - - * 0 means that detector computes orientation of each feature. - * 1 means that the orientation is not computed (which is much, much faster). For example, if you match images from a stereo pair, or do image stitching, the matched features likely have very similar angles, and you can speed up feature extraction by setting ``upright=1``. - - .. ocv:member:: double hessianThreshold - - Threshold for the keypoint detector. Only features, whose hessian is larger than ``hessianThreshold`` are retained by the detector. Therefore, the larger the value, the less keypoints you will get. A good default value could be from 300 to 500, depending from the image contrast. - - .. ocv:member:: int nOctaves - - The number of a gaussian pyramid octaves that the detector uses. It is set to 4 by default. If you want to get very large features, use the larger value. If you want just small features, decrease it. - - .. ocv:member:: int nOctaveLayers - - The number of images within each octave of a gaussian pyramid. It is set to 2 by default. - - -.. [Bay06] Bay, H. and Tuytelaars, T. and Van Gool, L. "SURF: Speeded Up Robust Features", 9th European Conference on Computer Vision, 2006 - -.. note:: - - * An example using the SURF feature detector can be found at opencv_source_code/samples/cpp/generic_descriptor_match.cpp - * Another example using the SURF feature detector, extractor and matcher can be found at opencv_source_code/samples/cpp/matcher_simple.cpp - -SURF::SURF ----------- -The SURF extractor constructors. - -.. ocv:function:: SURF::SURF() - -.. ocv:function:: SURF::SURF( double hessianThreshold, int nOctaves=4, int nOctaveLayers=2, bool extended=true, bool upright=false ) - -.. ocv:pyfunction:: cv2.SURF([hessianThreshold[, nOctaves[, nOctaveLayers[, extended[, upright]]]]]) -> - - :param hessianThreshold: Threshold for hessian keypoint detector used in SURF. - - :param nOctaves: Number of pyramid octaves the keypoint detector will use. - - :param nOctaveLayers: Number of octave layers within each octave. - - :param extended: Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors). - - :param upright: Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation). - - -SURF::operator() ----------------- -Detects keypoints and computes SURF descriptors for them. - -.. ocv:function:: void SURF::operator()(InputArray img, InputArray mask, vector& keypoints) const -.. ocv:function:: void SURF::operator()(InputArray img, InputArray mask, vector& keypoints, OutputArray descriptors, bool useProvidedKeypoints=false) - -.. ocv:pyfunction:: cv2.SURF.detect(image[, mask]) -> keypoints -.. ocv:pyfunction:: cv2.SURF.compute(image, keypoints[, descriptors]) -> keypoints, descriptors -.. ocv:pyfunction:: cv2.SURF.detectAndCompute(image, mask[, descriptors[, useProvidedKeypoints]]) -> keypoints, descriptors - -.. ocv:pyfunction:: cv2.SURF.detectAndCompute(image[, mask]) -> keypoints, descriptors - -.. ocv:cfunction:: void cvExtractSURF( const CvArr* image, const CvArr* mask, CvSeq** keypoints, CvSeq** descriptors, CvMemStorage* storage, CvSURFParams params ) - - :param image: Input 8-bit grayscale image - - :param mask: Optional input mask that marks the regions where we should detect features. - - :param keypoints: The input/output vector of keypoints - - :param descriptors: The output matrix of descriptors. Pass ``cv::noArray()`` if you do not need them. - - :param useProvidedKeypoints: Boolean flag. If it is true, the keypoint detector is not run. Instead, the provided vector of keypoints is used and the algorithm just computes their descriptors. - - :param storage: Memory storage for the output keypoints and descriptors in OpenCV 1.x API. - - :param params: SURF algorithm parameters in OpenCV 1.x API. - -The function is parallelized with the TBB library. - -If you are using the C version, make sure you call ``cv::initModule_nonfree()`` from ``nonfree/nonfree.hpp``. - - -cuda::SURF_CUDA ---------------- -.. ocv:class:: cuda::SURF_CUDA - -Class used for extracting Speeded Up Robust Features (SURF) from an image. :: - - class SURF_CUDA - { - public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the default constructor - SURF_CUDA(); - //! the full constructor taking all the necessary parameters - explicit SURF_CUDA(double _hessianThreshold, int _nOctaves=4, - int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const; - - //! upload host keypoints to device memory - void uploadKeypoints(const vector& keypoints, - GpuMat& keypointsGPU); - //! download keypoints from device to host memory - void downloadKeypoints(const GpuMat& keypointsGPU, - vector& keypoints); - - //! download descriptors from device to host memory - void downloadDescriptors(const GpuMat& descriptorsGPU, - vector& descriptors); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, - std::vector& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void releaseMemory(); - - // SURF parameters - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - //! max keypoints = keypointsRatio * img.size().area() - float keypointsRatio; - - GpuMat sum, mask1, maskSum, intBuffer; - - GpuMat det, trace; - - GpuMat maxPosBuffer; - }; - - -The class ``SURF_CUDA`` implements Speeded Up Robust Features descriptor. There is a fast multi-scale Hessian keypoint detector that can be used to find the keypoints (which is the default option). But the descriptors can also be computed for the user-specified keypoints. Only 8-bit grayscale images are supported. - -The class ``SURF_CUDA`` can store results in the GPU and CPU memory. It provides functions to convert results between CPU and GPU version ( ``uploadKeypoints``, ``downloadKeypoints``, ``downloadDescriptors`` ). The format of CPU results is the same as ``SURF`` results. GPU results are stored in ``GpuMat``. The ``keypoints`` matrix is :math:`\texttt{nFeatures} \times 7` matrix with the ``CV_32FC1`` type. - -* ``keypoints.ptr(X_ROW)[i]`` contains x coordinate of the i-th feature. -* ``keypoints.ptr(Y_ROW)[i]`` contains y coordinate of the i-th feature. -* ``keypoints.ptr(LAPLACIAN_ROW)[i]`` contains the laplacian sign of the i-th feature. -* ``keypoints.ptr(OCTAVE_ROW)[i]`` contains the octave of the i-th feature. -* ``keypoints.ptr(SIZE_ROW)[i]`` contains the size of the i-th feature. -* ``keypoints.ptr(ANGLE_ROW)[i]`` contain orientation of the i-th feature. -* ``keypoints.ptr(HESSIAN_ROW)[i]`` contains the response of the i-th feature. - -The ``descriptors`` matrix is :math:`\texttt{nFeatures} \times \texttt{descriptorSize}` matrix with the ``CV_32FC1`` type. - -The class ``SURF_CUDA`` uses some buffers and provides access to it. All buffers can be safely released between function calls. - -.. seealso:: :ocv:class:`SURF` - -.. note:: - - * An example for using the SURF keypoint matcher on GPU can be found at opencv_source_code/samples/gpu/surf_keypoint_matcher.cpp diff --git a/modules/nonfree/doc/nonfree.rst b/modules/nonfree/doc/nonfree.rst deleted file mode 100644 index e524ea82f8..0000000000 --- a/modules/nonfree/doc/nonfree.rst +++ /dev/null @@ -1,10 +0,0 @@ -******************************** -nonfree. Non-free functionality -******************************** - -The module contains algorithms that may be patented in some countries or have some other limitations on the use. - -.. toctree:: - :maxdepth: 2 - - feature_detection diff --git a/modules/nonfree/include/opencv2/nonfree/cuda.hpp b/modules/nonfree/include/opencv2/nonfree/cuda.hpp deleted file mode 100644 index 0e1f8e5518..0000000000 --- a/modules/nonfree/include/opencv2/nonfree/cuda.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#ifndef __OPENCV_NONFREE_CUDA_HPP__ -#define __OPENCV_NONFREE_CUDA_HPP__ - -#include "opencv2/core/cuda.hpp" - -namespace cv { namespace cuda { - -class CV_EXPORTS SURF_CUDA -{ -public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the default constructor - SURF_CUDA(); - //! the full constructor taking all the necessary parameters - explicit SURF_CUDA(double _hessianThreshold, int _nOctaves=4, - int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f, bool _upright = false); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const; - //! returns the default norm type - int defaultNorm() const; - - //! upload host keypoints to device memory - void uploadKeypoints(const std::vector& keypoints, GpuMat& keypointsGPU); - //! download keypoints from device to host memory - void downloadKeypoints(const GpuMat& keypointsGPU, std::vector& keypoints); - - //! download descriptors from device to host memory - void downloadDescriptors(const GpuMat& descriptorsGPU, std::vector& descriptors); - - //! finds the keypoints using fast hessian detector used in SURF - //! supports CV_8UC1 images - //! keypoints will have nFeature cols and 6 rows - //! keypoints.ptr(X_ROW)[i] will contain x coordinate of i'th feature - //! keypoints.ptr(Y_ROW)[i] will contain y coordinate of i'th feature - //! keypoints.ptr(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature - //! keypoints.ptr(OCTAVE_ROW)[i] will contain octave of i'th feature - //! keypoints.ptr(SIZE_ROW)[i] will contain size of i'th feature - //! keypoints.ptr(ANGLE_ROW)[i] will contain orientation of i'th feature - //! keypoints.ptr(HESSIAN_ROW)[i] will contain response of i'th feature - void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints); - //! finds the keypoints and computes their descriptors. - //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction - void operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false); - - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints); - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false); - - void operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, std::vector& descriptors, - bool useProvidedKeypoints = false); - - void releaseMemory(); - - // SURF parameters - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - //! max keypoints = min(keypointsRatio * img.size().area(), 65535) - float keypointsRatio; - - GpuMat sum, mask1, maskSum, intBuffer; - - GpuMat det, trace; - - GpuMat maxPosBuffer; -}; - -}} // namespace cv { namespace cuda { - -#endif // __OPENCV_NONFREE_CUDA_HPP__ diff --git a/modules/nonfree/include/opencv2/nonfree/features2d.hpp b/modules/nonfree/include/opencv2/nonfree/features2d.hpp deleted file mode 100644 index 6a75e99b20..0000000000 --- a/modules/nonfree/include/opencv2/nonfree/features2d.hpp +++ /dev/null @@ -1,154 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#ifndef __OPENCV_NONFREE_FEATURES_2D_HPP__ -#define __OPENCV_NONFREE_FEATURES_2D_HPP__ - -#include "opencv2/features2d.hpp" - -namespace cv -{ - -/*! - SIFT implementation. - - The class implements SIFT algorithm by D. Lowe. -*/ -class CV_EXPORTS_W SIFT : public Feature2D -{ -public: - CV_WRAP explicit SIFT( int nfeatures = 0, int nOctaveLayers = 3, - double contrastThreshold = 0.04, double edgeThreshold = 10, - double sigma = 1.6); - - //! returns the descriptor size in floats (128) - CV_WRAP int descriptorSize() const; - - //! returns the descriptor type - CV_WRAP int descriptorType() const; - - //! returns the default norm type - CV_WRAP int defaultNorm() const; - - //! finds the keypoints using SIFT algorithm - void operator()(InputArray img, InputArray mask, - std::vector& keypoints) const; - //! finds the keypoints and computes descriptors for them using SIFT algorithm. - //! Optionally it can compute descriptors for the user-provided keypoints - void operator()(InputArray img, InputArray mask, - std::vector& keypoints, - OutputArray descriptors, - bool useProvidedKeypoints = false) const; - - AlgorithmInfo* info() const; - - void buildGaussianPyramid( const Mat& base, std::vector& pyr, int nOctaves ) const; - void buildDoGPyramid( const std::vector& pyr, std::vector& dogpyr ) const; - void findScaleSpaceExtrema( const std::vector& gauss_pyr, const std::vector& dog_pyr, - std::vector& keypoints ) const; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask = noArray() ) const; - void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; - - CV_PROP_RW int nfeatures; - CV_PROP_RW int nOctaveLayers; - CV_PROP_RW double contrastThreshold; - CV_PROP_RW double edgeThreshold; - CV_PROP_RW double sigma; -}; - -typedef SIFT SiftFeatureDetector; -typedef SIFT SiftDescriptorExtractor; - -/*! - SURF implementation. - - The class implements SURF algorithm by H. Bay et al. - */ -class CV_EXPORTS_W SURF : public Feature2D -{ -public: - //! the default constructor - CV_WRAP SURF(); - //! the full constructor taking all the necessary parameters - explicit CV_WRAP SURF(double hessianThreshold, - int nOctaves = 4, int nOctaveLayers = 2, - bool extended = true, bool upright = false); - - //! returns the descriptor size in float's (64 or 128) - CV_WRAP int descriptorSize() const; - - //! returns the descriptor type - CV_WRAP int descriptorType() const; - - //! returns the descriptor type - CV_WRAP int defaultNorm() const; - - //! finds the keypoints using fast hessian detector used in SURF - void operator()(InputArray img, InputArray mask, - CV_OUT std::vector& keypoints) const; - //! finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints - void operator()(InputArray img, InputArray mask, - CV_OUT std::vector& keypoints, - OutputArray descriptors, - bool useProvidedKeypoints = false) const; - - AlgorithmInfo* info() const; - - CV_PROP_RW double hessianThreshold; - CV_PROP_RW int nOctaves; - CV_PROP_RW int nOctaveLayers; - CV_PROP_RW bool extended; - CV_PROP_RW bool upright; - -protected: - void detectImpl( InputArray image, std::vector& keypoints, InputArray mask = noArray() ) const; - void computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors ) const; -}; - -typedef SURF SurfFeatureDetector; -typedef SURF SurfDescriptorExtractor; - -} /* namespace cv */ - -#endif diff --git a/modules/nonfree/perf/perf_main.cpp b/modules/nonfree/perf/perf_main.cpp deleted file mode 100644 index a5a76af55b..0000000000 --- a/modules/nonfree/perf/perf_main.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "perf_precomp.hpp" -#include "opencv2/ts/cuda_perf.hpp" - -static const char * impls[] = { -#ifdef HAVE_CUDA - "cuda", -#endif - "plain" -}; - -CV_PERF_TEST_MAIN_WITH_IMPLS(nonfree, impls, perf::printCudaInfo()) diff --git a/modules/nonfree/perf/perf_surf.cpp b/modules/nonfree/perf/perf_surf.cpp deleted file mode 100644 index 09de5232ec..0000000000 --- a/modules/nonfree/perf/perf_surf.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "perf_precomp.hpp" - -using namespace std; -using namespace cv; -using namespace perf; -using std::tr1::make_tuple; -using std::tr1::get; - -typedef perf::TestBaseWithParam surf; - -#define SURF_IMAGES \ - "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ - "stitching/a3.png" - -PERF_TEST_P(surf, detect, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - SURF detector; - vector points; - - TEST_CYCLE() detector(frame, mask, points); - - SANITY_CHECK_KEYPOINTS(points, 1e-3); -} - -PERF_TEST_P(surf, extract, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - - SURF detector; - vector points; - vector descriptors; - detector(frame, mask, points); - - TEST_CYCLE() detector(frame, mask, points, descriptors, true); - - SANITY_CHECK(descriptors, 1e-4); -} - -PERF_TEST_P(surf, full, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat frame = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(frame.empty()) << "Unable to load source image " << filename; - - Mat mask; - declare.in(frame).time(90); - SURF detector; - vector points; - vector descriptors; - - TEST_CYCLE() detector(frame, mask, points, descriptors, false); - - SANITY_CHECK_KEYPOINTS(points, 1e-3); - SANITY_CHECK(descriptors, 1e-4); -} diff --git a/modules/nonfree/perf/perf_surf.cuda.cpp b/modules/nonfree/perf/perf_surf.cuda.cpp deleted file mode 100644 index 4cdbea9781..0000000000 --- a/modules/nonfree/perf/perf_surf.cuda.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "perf_precomp.hpp" - -#ifdef HAVE_CUDA - -#include "opencv2/ts/cuda_perf.hpp" - -using namespace std; -using namespace testing; -using namespace perf; - -////////////////////////////////////////////////////////////////////// -// SURF - -#ifdef HAVE_OPENCV_CUDAARITHM - -DEF_PARAM_TEST_1(Image, string); - -PERF_TEST_P(Image, CUDA_SURF, - Values("gpu/perf/aloe.png")) -{ - declare.time(50.0); - - const cv::Mat img = readImage(GetParam(), cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - if (PERF_RUN_CUDA()) - { - cv::cuda::SURF_CUDA d_surf; - - const cv::cuda::GpuMat d_img(img); - cv::cuda::GpuMat d_keypoints, d_descriptors; - - TEST_CYCLE() d_surf(d_img, cv::cuda::GpuMat(), d_keypoints, d_descriptors); - - std::vector gpu_keypoints; - d_surf.downloadKeypoints(d_keypoints, gpu_keypoints); - - cv::Mat gpu_descriptors(d_descriptors); - - sortKeyPoints(gpu_keypoints, gpu_descriptors); - - SANITY_CHECK_KEYPOINTS(gpu_keypoints); - SANITY_CHECK(gpu_descriptors, 1e-3); - } - else - { - cv::SURF surf; - - std::vector cpu_keypoints; - cv::Mat cpu_descriptors; - - TEST_CYCLE() surf(img, cv::noArray(), cpu_keypoints, cpu_descriptors); - - SANITY_CHECK_KEYPOINTS(cpu_keypoints); - SANITY_CHECK(cpu_descriptors); - } -} - -#endif // HAVE_OPENCV_CUDAARITHM - -#endif // HAVE_CUDA diff --git a/modules/nonfree/perf/perf_surf.ocl.cpp b/modules/nonfree/perf/perf_surf.ocl.cpp deleted file mode 100644 index cc48aa28c5..0000000000 --- a/modules/nonfree/perf/perf_surf.ocl.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "perf_precomp.hpp" - -#ifdef HAVE_OPENCV_OCL - -using namespace cv; -using namespace cv::ocl; -using namespace std; - -typedef perf::TestBaseWithParam OCL_SURF; - -#define SURF_IMAGES \ - "cv/detectors_descriptors_evaluation/images_datasets/leuven/img1.png",\ - "stitching/a3.png" - -PERF_TEST_P(OCL_SURF, DISABLED_with_data_transfer, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - Mat cpu_kp; - Mat cpu_dp; - - declare.time(60); - - TEST_CYCLE() - { - oclMat d_src(img); - - d_surf(d_src, oclMat(), d_keypoints, d_descriptors); - - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); - } - - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); -} - -PERF_TEST_P(OCL_SURF, DISABLED_without_data_transfer, testing::Values(SURF_IMAGES)) -{ - string filename = getDataPath(GetParam()); - Mat img = imread(filename, IMREAD_GRAYSCALE); - ASSERT_FALSE(img.empty()); - - SURF_OCL d_surf; - oclMat d_keypoints; - oclMat d_descriptors; - oclMat d_src(img); - - declare.time(60); - - TEST_CYCLE() d_surf(d_src, oclMat(), d_keypoints, d_descriptors); - - Mat cpu_kp; - Mat cpu_dp; - d_keypoints.download(cpu_kp); - d_descriptors.download(cpu_dp); - SANITY_CHECK(cpu_kp, 1); - SANITY_CHECK(cpu_dp, 1); -} - -#endif // HAVE_OPENCV_OCL diff --git a/modules/nonfree/src/cuda/surf.cu b/modules/nonfree/src/cuda/surf.cu deleted file mode 100644 index 9a141ab7c9..0000000000 --- a/modules/nonfree/src/cuda/surf.cu +++ /dev/null @@ -1,960 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "opencv2/opencv_modules.hpp" - -#ifdef HAVE_OPENCV_CUDAARITHM - -#include "opencv2/core/cuda/common.hpp" -#include "opencv2/core/cuda/limits.hpp" -#include "opencv2/core/cuda/saturate_cast.hpp" -#include "opencv2/core/cuda/reduce.hpp" -#include "opencv2/core/cuda/utility.hpp" -#include "opencv2/core/cuda/functional.hpp" -#include "opencv2/core/cuda/filters.hpp" - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold); - void loadOctaveConstants(int octave, int layer_rows, int layer_cols); - - void bindImgTex(PtrStepSzb img); - size_t bindSumTex(PtrStepSz sum); - size_t bindMaskSumTex(PtrStepSz maskSum); - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayer); - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nLayers); - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter); - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures); - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures); - } -}}} - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - //////////////////////////////////////////////////////////////////////// - // Global parameters - - // The maximum number of features (before subpixel interpolation) that memory is reserved for. - __constant__ int c_max_candidates; - // The maximum number of features that memory is reserved for. - __constant__ int c_max_features; - // The image size. - __constant__ int c_img_rows; - __constant__ int c_img_cols; - // The number of layers. - __constant__ int c_nOctaveLayers; - // The hessian threshold. - __constant__ float c_hessianThreshold; - - // The current octave. - __constant__ int c_octave; - // The current layer size. - __constant__ int c_layer_rows; - __constant__ int c_layer_cols; - - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold) - { - cudaSafeCall( cudaMemcpyToSymbol(c_max_candidates, &maxCandidates, sizeof(maxCandidates)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_max_features, &maxFeatures, sizeof(maxFeatures)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_img_rows, &img_rows, sizeof(img_rows)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_img_cols, &img_cols, sizeof(img_cols)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_nOctaveLayers, &nOctaveLayers, sizeof(nOctaveLayers)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_hessianThreshold, &hessianThreshold, sizeof(hessianThreshold)) ); - } - - void loadOctaveConstants(int octave, int layer_rows, int layer_cols) - { - cudaSafeCall( cudaMemcpyToSymbol(c_octave, &octave, sizeof(octave)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_layer_rows, &layer_rows, sizeof(layer_rows)) ); - cudaSafeCall( cudaMemcpyToSymbol(c_layer_cols, &layer_cols, sizeof(layer_cols)) ); - } - - //////////////////////////////////////////////////////////////////////// - // Integral image texture - - texture imgTex(0, cudaFilterModePoint, cudaAddressModeClamp); - texture sumTex(0, cudaFilterModePoint, cudaAddressModeClamp); - texture maskSumTex(0, cudaFilterModePoint, cudaAddressModeClamp); - - void bindImgTex(PtrStepSzb img) - { - bindTexture(&imgTex, img); - } - - size_t bindSumTex(PtrStepSz sum) - { - size_t offset; - cudaChannelFormatDesc desc_sum = cudaCreateChannelDesc(); - cudaSafeCall( cudaBindTexture2D(&offset, sumTex, sum.data, desc_sum, sum.cols, sum.rows, sum.step)); - return offset / sizeof(uint); - } - size_t bindMaskSumTex(PtrStepSz maskSum) - { - size_t offset; - cudaChannelFormatDesc desc_sum = cudaCreateChannelDesc(); - cudaSafeCall( cudaBindTexture2D(&offset, maskSumTex, maskSum.data, desc_sum, maskSum.cols, maskSum.rows, maskSum.step)); - return offset / sizeof(uint); - } - - template __device__ float icvCalcHaarPatternSum(const float src[][5], int oldSize, int newSize, int y, int x) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 200 - typedef double real_t; - #else - typedef float real_t; - #endif - - float ratio = (float)newSize / oldSize; - - real_t d = 0; - - #pragma unroll - for (int k = 0; k < N; ++k) - { - int dx1 = __float2int_rn(ratio * src[k][0]); - int dy1 = __float2int_rn(ratio * src[k][1]); - int dx2 = __float2int_rn(ratio * src[k][2]); - int dy2 = __float2int_rn(ratio * src[k][3]); - - real_t t = 0; - t += tex2D(sumTex, x + dx1, y + dy1); - t -= tex2D(sumTex, x + dx1, y + dy2); - t -= tex2D(sumTex, x + dx2, y + dy1); - t += tex2D(sumTex, x + dx2, y + dy2); - - d += t * src[k][4] / ((dx2 - dx1) * (dy2 - dy1)); - } - - return (float)d; - } - - //////////////////////////////////////////////////////////////////////// - // Hessian - - __constant__ float c_DX [3][5] = { {0, 2, 3, 7, 1}, {3, 2, 6, 7, -2}, {6, 2, 9, 7, 1} }; - __constant__ float c_DY [3][5] = { {2, 0, 7, 3, 1}, {2, 3, 7, 6, -2}, {2, 6, 7, 9, 1} }; - __constant__ float c_DXY[4][5] = { {1, 1, 4, 4, 1}, {5, 1, 8, 4, -1}, {1, 5, 4, 8, -1}, {5, 5, 8, 8, 1} }; - - __host__ __device__ __forceinline__ int calcSize(int octave, int layer) - { - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; - } - - __global__ void icvCalcLayerDetAndTrace(PtrStepf det, PtrStepf trace) - { - // Determine the indices - const int gridDim_y = gridDim.y / (c_nOctaveLayers + 2); - const int blockIdx_y = blockIdx.y % gridDim_y; - const int blockIdx_z = blockIdx.y / gridDim_y; - - const int j = threadIdx.x + blockIdx.x * blockDim.x; - const int i = threadIdx.y + blockIdx_y * blockDim.y; - const int layer = blockIdx_z; - - const int size = calcSize(c_octave, layer); - - const int samples_i = 1 + ((c_img_rows - size) >> c_octave); - const int samples_j = 1 + ((c_img_cols - size) >> c_octave); - - // Ignore pixels where some of the kernel is outside the image - const int margin = (size >> 1) >> c_octave; - - if (size <= c_img_rows && size <= c_img_cols && i < samples_i && j < samples_j) - { - const float dx = icvCalcHaarPatternSum<3>(c_DX , 9, size, (i << c_octave), (j << c_octave)); - const float dy = icvCalcHaarPatternSum<3>(c_DY , 9, size, (i << c_octave), (j << c_octave)); - const float dxy = icvCalcHaarPatternSum<4>(c_DXY, 9, size, (i << c_octave), (j << c_octave)); - - det.ptr(layer * c_layer_rows + i + margin)[j + margin] = dx * dy - 0.81f * dxy * dxy; - trace.ptr(layer * c_layer_rows + i + margin)[j + margin] = dx + dy; - } - } - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayers) - { - const int min_size = calcSize(octave, 0); - const int max_samples_i = 1 + ((img_rows - min_size) >> octave); - const int max_samples_j = 1 + ((img_cols - min_size) >> octave); - - dim3 threads(16, 16); - - dim3 grid; - grid.x = divUp(max_samples_j, threads.x); - grid.y = divUp(max_samples_i, threads.y) * (nOctaveLayers + 2); - - icvCalcLayerDetAndTrace<<>>(det, trace); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // NONMAX - - __constant__ float c_DM[5] = {0, 0, 9, 9, 1}; - - struct WithMask - { - static __device__ bool check(int sum_i, int sum_j, int size) - { - float ratio = (float)size / 9.0f; - - float d = 0; - - int dx1 = __float2int_rn(ratio * c_DM[0]); - int dy1 = __float2int_rn(ratio * c_DM[1]); - int dx2 = __float2int_rn(ratio * c_DM[2]); - int dy2 = __float2int_rn(ratio * c_DM[3]); - - float t = 0; - t += tex2D(maskSumTex, sum_j + dx1, sum_i + dy1); - t -= tex2D(maskSumTex, sum_j + dx1, sum_i + dy2); - t -= tex2D(maskSumTex, sum_j + dx2, sum_i + dy1); - t += tex2D(maskSumTex, sum_j + dx2, sum_i + dy2); - - d += t * c_DM[4] / ((dx2 - dx1) * (dy2 - dy1)); - - return (d >= 0.5f); - } - }; - - template - __global__ void icvFindMaximaInLayer(const PtrStepf det, const PtrStepf trace, int4* maxPosBuffer, - unsigned int* maxCounter) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 110 - - extern __shared__ float N9[]; - - // The hidx variables are the indices to the hessian buffer. - const int gridDim_y = gridDim.y / c_nOctaveLayers; - const int blockIdx_y = blockIdx.y % gridDim_y; - const int blockIdx_z = blockIdx.y / gridDim_y; - - const int layer = blockIdx_z + 1; - - const int size = calcSize(c_octave, layer); - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - const int margin = ((calcSize(c_octave, layer + 1) >> 1) >> c_octave) + 1; - - const int j = threadIdx.x + blockIdx.x * (blockDim.x - 2) + margin - 1; - const int i = threadIdx.y + blockIdx_y * (blockDim.y - 2) + margin - 1; - - // Is this thread within the hessian buffer? - const int zoff = blockDim.x * blockDim.y; - const int localLin = threadIdx.x + threadIdx.y * blockDim.x + zoff; - N9[localLin - zoff] = det.ptr(c_layer_rows * (layer - 1) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - N9[localLin ] = det.ptr(c_layer_rows * (layer ) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - N9[localLin + zoff] = det.ptr(c_layer_rows * (layer + 1) + ::min(::max(i, 0), c_img_rows - 1))[::min(::max(j, 0), c_img_cols - 1)]; - __syncthreads(); - - if (i < c_layer_rows - margin && j < c_layer_cols - margin && threadIdx.x > 0 && threadIdx.x < blockDim.x - 1 && threadIdx.y > 0 && threadIdx.y < blockDim.y - 1) - { - float val0 = N9[localLin]; - - if (val0 > c_hessianThreshold) - { - // Coordinates for the start of the wavelet in the sum image. There - // is some integer division involved, so don't try to simplify this - // (cancel out sampleStep) without checking the result is the same - const int sum_i = (i - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (j - ((size >> 1) >> c_octave)) << c_octave; - - if (Mask::check(sum_i, sum_j, size)) - { - // Check to see if we have a max (in its 26 neighbours) - const bool condmax = val0 > N9[localLin - 1 - blockDim.x - zoff] - && val0 > N9[localLin - blockDim.x - zoff] - && val0 > N9[localLin + 1 - blockDim.x - zoff] - && val0 > N9[localLin - 1 - zoff] - && val0 > N9[localLin - zoff] - && val0 > N9[localLin + 1 - zoff] - && val0 > N9[localLin - 1 + blockDim.x - zoff] - && val0 > N9[localLin + blockDim.x - zoff] - && val0 > N9[localLin + 1 + blockDim.x - zoff] - - && val0 > N9[localLin - 1 - blockDim.x] - && val0 > N9[localLin - blockDim.x] - && val0 > N9[localLin + 1 - blockDim.x] - && val0 > N9[localLin - 1 ] - && val0 > N9[localLin + 1 ] - && val0 > N9[localLin - 1 + blockDim.x] - && val0 > N9[localLin + blockDim.x] - && val0 > N9[localLin + 1 + blockDim.x] - - && val0 > N9[localLin - 1 - blockDim.x + zoff] - && val0 > N9[localLin - blockDim.x + zoff] - && val0 > N9[localLin + 1 - blockDim.x + zoff] - && val0 > N9[localLin - 1 + zoff] - && val0 > N9[localLin + zoff] - && val0 > N9[localLin + 1 + zoff] - && val0 > N9[localLin - 1 + blockDim.x + zoff] - && val0 > N9[localLin + blockDim.x + zoff] - && val0 > N9[localLin + 1 + blockDim.x + zoff] - ; - - if(condmax) - { - unsigned int ind = atomicInc(maxCounter,(unsigned int) -1); - - if (ind < c_max_candidates) - { - const int laplacian = (int) copysignf(1.0f, trace.ptr(layer * c_layer_rows + i)[j]); - - maxPosBuffer[ind] = make_int4(j, i, layer, laplacian); - } - } - } - } - } - - #endif - } - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nOctaveLayers) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - - const int min_margin = ((calcSize(octave, 2) >> 1) >> octave) + 1; - - dim3 threads(16, 16); - - dim3 grid; - grid.x = divUp(layer_cols - 2 * min_margin, threads.x - 2); - grid.y = divUp(layer_rows - 2 * min_margin, threads.y - 2) * nOctaveLayers; - - const size_t smem_size = threads.x * threads.y * 3 * sizeof(float); - - if (use_mask) - icvFindMaximaInLayer<<>>(det, trace, maxPosBuffer, maxCounter); - else - icvFindMaximaInLayer<<>>(det, trace, maxPosBuffer, maxCounter); - - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // INTERPOLATION - - __global__ void icvInterpolateKeypoint(const PtrStepf det, const int4* maxPosBuffer, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter) - { - #if __CUDA_ARCH__ && __CUDA_ARCH__ >= 110 - - const int4 maxPos = maxPosBuffer[blockIdx.x]; - - const int j = maxPos.x - 1 + threadIdx.x; - const int i = maxPos.y - 1 + threadIdx.y; - const int layer = maxPos.z - 1 + threadIdx.z; - - __shared__ float N9[3][3][3]; - - N9[threadIdx.z][threadIdx.y][threadIdx.x] = det.ptr(c_layer_rows * layer + i)[j]; - __syncthreads(); - - if (threadIdx.x == 0 && threadIdx.y == 0 && threadIdx.z == 0) - { - __shared__ float dD[3]; - - //dx - dD[0] = -0.5f * (N9[1][1][2] - N9[1][1][0]); - //dy - dD[1] = -0.5f * (N9[1][2][1] - N9[1][0][1]); - //ds - dD[2] = -0.5f * (N9[2][1][1] - N9[0][1][1]); - - __shared__ float H[3][3]; - - //dxx - H[0][0] = N9[1][1][0] - 2.0f * N9[1][1][1] + N9[1][1][2]; - //dxy - H[0][1]= 0.25f * (N9[1][2][2] - N9[1][2][0] - N9[1][0][2] + N9[1][0][0]); - //dxs - H[0][2]= 0.25f * (N9[2][1][2] - N9[2][1][0] - N9[0][1][2] + N9[0][1][0]); - //dyx = dxy - H[1][0] = H[0][1]; - //dyy - H[1][1] = N9[1][0][1] - 2.0f * N9[1][1][1] + N9[1][2][1]; - //dys - H[1][2]= 0.25f * (N9[2][2][1] - N9[2][0][1] - N9[0][2][1] + N9[0][0][1]); - //dsx = dxs - H[2][0] = H[0][2]; - //dsy = dys - H[2][1] = H[1][2]; - //dss - H[2][2] = N9[0][1][1] - 2.0f * N9[1][1][1] + N9[2][1][1]; - - __shared__ float x[3]; - - if (solve3x3(H, dD, x)) - { - if (::fabs(x[0]) <= 1.f && ::fabs(x[1]) <= 1.f && ::fabs(x[2]) <= 1.f) - { - // if the step is within the interpolation region, perform it - - const int size = calcSize(c_octave, maxPos.z); - - const int sum_i = (maxPos.y - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (maxPos.x - ((size >> 1) >> c_octave)) << c_octave; - - const float center_i = sum_i + (float)(size - 1) / 2; - const float center_j = sum_j + (float)(size - 1) / 2; - - const float px = center_j + x[0] * (1 << c_octave); - const float py = center_i + x[1] * (1 << c_octave); - - const int ds = size - calcSize(c_octave, maxPos.z - 1); - const float psize = roundf(size + x[2] * ds); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = psize * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * __float2int_rn(2.0f * s); - - // check when grad_wav_size is too big - if ((c_img_rows + 1) >= grad_wav_size && (c_img_cols + 1) >= grad_wav_size) - { - // Get a new feature index. - unsigned int ind = atomicInc(featureCounter, (unsigned int)-1); - - if (ind < c_max_features) - { - featureX[ind] = px; - featureY[ind] = py; - featureLaplacian[ind] = maxPos.w; - featureOctave[ind] = c_octave; - featureSize[ind] = psize; - featureHessian[ind] = N9[1][1][1]; - } - } // grad_wav_size check - } // If the subpixel interpolation worked - } - } // If this is thread 0. - - #endif - } - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter) - { - dim3 threads; - threads.x = 3; - threads.y = 3; - threads.z = 3; - - dim3 grid; - grid.x = maxCounter; - - icvInterpolateKeypoint<<>>(det, maxPosBuffer, featureX, featureY, featureLaplacian, featureOctave, featureSize, featureHessian, featureCounter); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // Orientation - - #define ORI_SEARCH_INC 5 - #define ORI_WIN 60 - #define ORI_SAMPLES 113 - - __constant__ float c_aptX[ORI_SAMPLES] = {-6, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6}; - __constant__ float c_aptY[ORI_SAMPLES] = {0, -3, -2, -1, 0, 1, 2, 3, -4, -3, -2, -1, 0, 1, 2, 3, 4, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -4, -3, -2, -1, 0, 1, 2, 3, 4, -3, -2, -1, 0, 1, 2, 3, 0}; - __constant__ float c_aptW[ORI_SAMPLES] = {0.001455130288377404f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.001455130288377404f, 0.0035081731621176f, 0.00720730796456337f, 0.01261763460934162f, 0.0188232995569706f, 0.02392910048365593f, 0.02592208795249462f, 0.02392910048365593f, 0.0188232995569706f, 0.01261763460934162f, 0.00720730796456337f, 0.0035081731621176f, 0.001455130288377404f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.001455130288377404f}; - - __constant__ float c_NX[2][5] = {{0, 0, 2, 4, -1}, {2, 0, 4, 4, 1}}; - __constant__ float c_NY[2][5] = {{0, 0, 4, 2, 1}, {0, 2, 4, 4, -1}}; - - __global__ void icvCalcOrientation(const float* featureX, const float* featureY, const float* featureSize, float* featureDir) - { - __shared__ float s_X[128]; - __shared__ float s_Y[128]; - __shared__ float s_angle[128]; - - __shared__ float s_sumx[32 * 4]; - __shared__ float s_sumy[32 * 4]; - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = featureSize[blockIdx.x] * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * __float2int_rn(2.0f * s); - - // check when grad_wav_size is too big - if ((c_img_rows + 1) < grad_wav_size || (c_img_cols + 1) < grad_wav_size) - return; - - // Calc X, Y, angle and store it to shared memory - const int tid = threadIdx.y * blockDim.x + threadIdx.x; - - float X = 0.0f, Y = 0.0f, angle = 0.0f; - - if (tid < ORI_SAMPLES) - { - const float margin = (float)(grad_wav_size - 1) / 2.0f; - const int x = __float2int_rn(featureX[blockIdx.x] + c_aptX[tid] * s - margin); - const int y = __float2int_rn(featureY[blockIdx.x] + c_aptY[tid] * s - margin); - - if (y >= 0 && y < (c_img_rows + 1) - grad_wav_size && - x >= 0 && x < (c_img_cols + 1) - grad_wav_size) - { - X = c_aptW[tid] * icvCalcHaarPatternSum<2>(c_NX, 4, grad_wav_size, y, x); - Y = c_aptW[tid] * icvCalcHaarPatternSum<2>(c_NY, 4, grad_wav_size, y, x); - - angle = atan2f(Y, X); - if (angle < 0) - angle += 2.0f * CV_PI_F; - angle *= 180.0f / CV_PI_F; - } - } - s_X[tid] = X; - s_Y[tid] = Y; - s_angle[tid] = angle; - __syncthreads(); - - float bestx = 0, besty = 0, best_mod = 0; - - #if __CUDA_ARCH__ >= 200 - #pragma unroll - #endif - for (int i = 0; i < 18; ++i) - { - const int dir = (i * 4 + threadIdx.y) * ORI_SEARCH_INC; - - float sumx = 0.0f, sumy = 0.0f; - int d = ::abs(__float2int_rn(s_angle[threadIdx.x]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx = s_X[threadIdx.x]; - sumy = s_Y[threadIdx.x]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 32]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 32]; - sumy += s_Y[threadIdx.x + 32]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 64]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 64]; - sumy += s_Y[threadIdx.x + 64]; - } - d = ::abs(__float2int_rn(s_angle[threadIdx.x + 96]) - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[threadIdx.x + 96]; - sumy += s_Y[threadIdx.x + 96]; - } - - plus op; - device::reduce<32>(smem_tuple(s_sumx + threadIdx.y * 32, s_sumy + threadIdx.y * 32), - thrust::tie(sumx, sumy), threadIdx.x, thrust::make_tuple(op, op)); - - const float temp_mod = sumx * sumx + sumy * sumy; - if (temp_mod > best_mod) - { - best_mod = temp_mod; - bestx = sumx; - besty = sumy; - } - - __syncthreads(); - } - - if (threadIdx.x == 0) - { - s_X[threadIdx.y] = bestx; - s_Y[threadIdx.y] = besty; - s_angle[threadIdx.y] = best_mod; - } - __syncthreads(); - - if (threadIdx.x == 0 && threadIdx.y == 0) - { - int bestIdx = 0; - - if (s_angle[1] > s_angle[bestIdx]) - bestIdx = 1; - if (s_angle[2] > s_angle[bestIdx]) - bestIdx = 2; - if (s_angle[3] > s_angle[bestIdx]) - bestIdx = 3; - - float kp_dir = atan2f(s_Y[bestIdx], s_X[bestIdx]); - if (kp_dir < 0) - kp_dir += 2.0f * CV_PI_F; - kp_dir *= 180.0f / CV_PI_F; - - kp_dir = 360.0f - kp_dir; - if (::fabsf(kp_dir - 360.f) < numeric_limits::epsilon()) - kp_dir = 0.f; - - featureDir[blockIdx.x] = kp_dir; - } - } - - #undef ORI_SEARCH_INC - #undef ORI_WIN - #undef ORI_SAMPLES - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures) - { - dim3 threads; - threads.x = 32; - threads.y = 4; - - dim3 grid; - grid.x = nFeatures; - - icvCalcOrientation<<>>(featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - - //////////////////////////////////////////////////////////////////////// - // Descriptors - - #define PATCH_SZ 20 - - __constant__ float c_DW[PATCH_SZ * PATCH_SZ] = - { - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f - }; - - struct WinReader - { - typedef uchar elem_type; - - __device__ __forceinline__ uchar operator ()(int i, int j) const - { - float pixel_x = centerX + (win_offset + j) * cos_dir + (win_offset + i) * sin_dir; - float pixel_y = centerY - (win_offset + j) * sin_dir + (win_offset + i) * cos_dir; - - return tex2D(imgTex, pixel_x, pixel_y); - } - - float centerX; - float centerY; - float win_offset; - float cos_dir; - float sin_dir; - int width; - int height; - }; - - __device__ void calc_dx_dy(const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, - float& dx, float& dy); - - __device__ void calc_dx_dy(const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, - float& dx, float& dy) - { - __shared__ float s_PATCH[PATCH_SZ + 1][PATCH_SZ + 1]; - - dx = dy = 0.0f; - - WinReader win; - - win.centerX = featureX[blockIdx.x]; - win.centerY = featureY[blockIdx.x]; - - // The sampling intervals and wavelet sized for selecting an orientation - // and building the keypoint descriptor are defined relative to 's' - const float s = featureSize[blockIdx.x] * 1.2f / 9.0f; - - // Extract a window of pixels around the keypoint of size 20s - const int win_size = (int)((PATCH_SZ + 1) * s); - - win.width = win.height = win_size; - - // Nearest neighbour version (faster) - win.win_offset = -(win_size - 1.0f) / 2.0f; - - float descriptor_dir = 360.0f - featureDir[blockIdx.x]; - if (::fabsf(descriptor_dir - 360.f) < numeric_limits::epsilon()) - descriptor_dir = 0.f; - descriptor_dir *= CV_PI_F / 180.0f; - sincosf(descriptor_dir, &win.sin_dir, &win.cos_dir); - - const int tid = threadIdx.y * blockDim.x + threadIdx.x; - - const int xLoadInd = tid % (PATCH_SZ + 1); - const int yLoadInd = tid / (PATCH_SZ + 1); - - if (yLoadInd < (PATCH_SZ + 1)) - { - if (s > 1) - { - AreaFilter filter(win, s, s); - s_PATCH[yLoadInd][xLoadInd] = filter(yLoadInd, xLoadInd); - } - else - { - LinearFilter filter(win); - s_PATCH[yLoadInd][xLoadInd] = filter(yLoadInd * s, xLoadInd * s); - } - } - - __syncthreads(); - - const int xPatchInd = threadIdx.x % 5; - const int yPatchInd = threadIdx.x / 5; - - if (yPatchInd < 5) - { - const int xBlockInd = threadIdx.y % 4; - const int yBlockInd = threadIdx.y / 4; - - const int xInd = xBlockInd * 5 + xPatchInd; - const int yInd = yBlockInd * 5 + yPatchInd; - - const float dw = c_DW[yInd * PATCH_SZ + xInd]; - - dx = (s_PATCH[yInd ][xInd + 1] - s_PATCH[yInd][xInd] + s_PATCH[yInd + 1][xInd + 1] - s_PATCH[yInd + 1][xInd ]) * dw; - dy = (s_PATCH[yInd + 1][xInd ] - s_PATCH[yInd][xInd] + s_PATCH[yInd + 1][xInd + 1] - s_PATCH[yInd ][xInd + 1]) * dw; - } - } - - __global__ void compute_descriptors_64(PtrStep descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir) - { - __shared__ float smem[32 * 16]; - - float* sRow = smem + threadIdx.y * 32; - - float dx, dy; - calc_dx_dy(featureX, featureY, featureSize, featureDir, dx, dy); - - float dxabs = ::fabsf(dx); - float dyabs = ::fabsf(dy); - - plus op; - - reduce<32>(sRow, dx, threadIdx.x, op); - reduce<32>(sRow, dy, threadIdx.x, op); - reduce<32>(sRow, dxabs, threadIdx.x, op); - reduce<32>(sRow, dyabs, threadIdx.x, op); - - float4* descriptors_block = descriptors.ptr(blockIdx.x) + threadIdx.y; - - // write dx, dy, |dx|, |dy| - if (threadIdx.x == 0) - *descriptors_block = make_float4(dx, dy, dxabs, dyabs); - } - - __global__ void compute_descriptors_128(PtrStep descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir) - { - __shared__ float smem[32 * 16]; - - float* sRow = smem + threadIdx.y * 32; - - float dx, dy; - calc_dx_dy(featureX, featureY, featureSize, featureDir, dx, dy); - - float4* descriptors_block = descriptors.ptr(blockIdx.x) + threadIdx.y * 2; - - plus op; - - float d1 = 0.0f; - float d2 = 0.0f; - float abs1 = 0.0f; - float abs2 = 0.0f; - - if (dy >= 0) - { - d1 = dx; - abs1 = ::fabsf(dx); - } - else - { - d2 = dx; - abs2 = ::fabsf(dx); - } - - reduce<32>(sRow, d1, threadIdx.x, op); - reduce<32>(sRow, d2, threadIdx.x, op); - reduce<32>(sRow, abs1, threadIdx.x, op); - reduce<32>(sRow, abs2, threadIdx.x, op); - - // write dx (dy >= 0), |dx| (dy >= 0), dx (dy < 0), |dx| (dy < 0) - if (threadIdx.x == 0) - descriptors_block[0] = make_float4(d1, abs1, d2, abs2); - - if (dx >= 0) - { - d1 = dy; - abs1 = ::fabsf(dy); - d2 = 0.0f; - abs2 = 0.0f; - } - else - { - d1 = 0.0f; - abs1 = 0.0f; - d2 = dy; - abs2 = ::fabsf(dy); - } - - reduce<32>(sRow, d1, threadIdx.x, op); - reduce<32>(sRow, d2, threadIdx.x, op); - reduce<32>(sRow, abs1, threadIdx.x, op); - reduce<32>(sRow, abs2, threadIdx.x, op); - - // write dy (dx >= 0), |dy| (dx >= 0), dy (dx < 0), |dy| (dx < 0) - if (threadIdx.x == 0) - descriptors_block[1] = make_float4(d1, abs1, d2, abs2); - } - - template __global__ void normalize_descriptors(PtrStepf descriptors) - { - __shared__ float smem[BLOCK_DIM_X]; - __shared__ float s_len; - - // no need for thread ID - float* descriptor_base = descriptors.ptr(blockIdx.x); - - // read in the unnormalized descriptor values (squared) - const float val = descriptor_base[threadIdx.x]; - - float len = val * val; - reduce(smem, len, threadIdx.x, plus()); - - if (threadIdx.x == 0) - s_len = ::sqrtf(len); - - __syncthreads(); - - // normalize and store in output - descriptor_base[threadIdx.x] = val / s_len; - } - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures) - { - // compute unnormalized descriptors, then normalize them - odd indexing since grid must be 2D - - if (descriptors.cols == 64) - { - compute_descriptors_64<<>>(descriptors, featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - - normalize_descriptors<64><<>>((PtrStepSzf) descriptors); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - else - { - compute_descriptors_128<<>>(descriptors, featureX, featureY, featureSize, featureDir); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - - normalize_descriptors<128><<>>((PtrStepSzf) descriptors); - cudaSafeCall( cudaGetLastError() ); - - cudaSafeCall( cudaDeviceSynchronize() ); - } - } - } // namespace surf -}}} // namespace cv { namespace cuda { namespace cudev - -#endif // HAVE_OPENCV_CUDAARITHM diff --git a/modules/nonfree/src/opencl/surf.cl b/modules/nonfree/src/opencl/surf.cl deleted file mode 100644 index 608a677cea..0000000000 --- a/modules/nonfree/src/opencl/surf.cl +++ /dev/null @@ -1,1347 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Copyright (C) 2013, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// Sen Liu, swjtuls1987@126.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -// The number of degrees between orientation samples in calcOrientation -#define ORI_SEARCH_INC 5 - -// The local size of the calcOrientation kernel -#define ORI_LOCAL_SIZE (360 / ORI_SEARCH_INC) - -// specialized for non-image2d_t supported platform, intel HD4000, for example -#ifndef HAVE_IMAGE2D -__inline uint read_sumTex_(__global uint* sumTex, int sum_step, int img_rows, int img_cols, int2 coord) -{ - int x = clamp(coord.x, 0, img_cols); - int y = clamp(coord.y, 0, img_rows); - return sumTex[sum_step * y + x]; -} - -__inline uchar read_imgTex_(__global uchar* imgTex, int img_step, int img_rows, int img_cols, float2 coord) -{ - int x = clamp(convert_int_rte(coord.x), 0, img_cols-1); - int y = clamp(convert_int_rte(coord.y), 0, img_rows-1); - return imgTex[img_step * y + x]; -} - -#define read_sumTex(coord) read_sumTex_(sumTex, sum_step, img_rows, img_cols, coord) -#define read_imgTex(coord) read_imgTex_(imgTex, img_step, img_rows, img_cols, coord) - -#define __PARAM_sumTex__ __global uint* sumTex, int sum_step, int sum_offset -#define __PARAM_imgTex__ __global uchar* imgTex, int img_step, int img_offset - -#define __PASS_sumTex__ sumTex, sum_step, sum_offset -#define __PASS_imgTex__ imgTex, img_step, img_offset - -#else -__inline uint read_sumTex_(image2d_t sumTex, sampler_t sam, int2 coord) -{ - return read_imageui(sumTex, sam, coord).x; -} - -__inline uchar read_imgTex_(image2d_t imgTex, sampler_t sam, float2 coord) -{ - return (uchar)read_imageui(imgTex, sam, coord).x; -} - -#define read_sumTex(coord) read_sumTex_(sumTex, sampler, coord) -#define read_imgTex(coord) read_imgTex_(imgTex, sampler, coord) - -#define __PARAM_sumTex__ image2d_t sumTex -#define __PARAM_imgTex__ image2d_t imgTex - -#define __PASS_sumTex__ sumTex -#define __PASS_imgTex__ imgTex - -#endif - -// dynamically change the precision used for floating type - -#if defined (DOUBLE_SUPPORT) -#ifdef cl_khr_fp64 -#pragma OPENCL EXTENSION cl_khr_fp64:enable -#elif defined (cl_amd_fp64) -#pragma OPENCL EXTENSION cl_amd_fp64:enable -#endif -#define F double -#else -#define F float -#endif - -// Image read mode -__constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST; - -#ifndef FLT_EPSILON -#define FLT_EPSILON (1e-15) -#endif - -#ifndef CV_PI_F -#define CV_PI_F 3.14159265f -#endif - -//////////////////////////////////////////////////////////////////////// -// Hessian - -__inline int calcSize(int octave, int layer) -{ - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; -} - -// Calculate a derivative in an axis-aligned direction (x or y). The "plus1" -// boxes contribute 1 * (area), and the "minus2" box contributes -2 * (area). -// So the final computation is plus1a + plus1b - 2 * minus2. The corners are -// labeled A, B, C, and D, with A being the top left, B being top right, C -// being bottom left, and D being bottom right. -F calcAxisAlignedDerivative( - int plus1a_A, int plus1a_B, int plus1a_C, int plus1a_D, F plus1a_scale, - int plus1b_A, int plus1b_B, int plus1b_C, int plus1b_D, F plus1b_scale, - int minus2_A, int minus2_B, int minus2_C, int minus2_D, F minus2_scale) -{ - F plus1a = plus1a_A - plus1a_B - plus1a_C + plus1a_D; - F plus1b = plus1b_A - plus1b_B - plus1b_C + plus1b_D; - F minus2 = minus2_A - minus2_B - minus2_C + minus2_D; - - return (plus1a / plus1a_scale - - 2.0f * minus2 / minus2_scale + - plus1b / plus1b_scale); -} - -//calculate targeted layer per-pixel determinant and trace with an integral image -__kernel void SURF_calcLayerDetAndTrace( - __PARAM_sumTex__, // input integral image - int img_rows, int img_cols, - int c_nOctaveLayers, int c_octave, int c_layer_rows, - - __global float * det, // output determinant - int det_step, int det_offset, - __global float * trace, // output trace - int trace_step, int trace_offset) -{ - det_step /= sizeof(*det); - trace_step /= sizeof(*trace); - #ifndef HAVE_IMAGE2D - sum_step/= sizeof(uint); - #endif - // Determine the indices - const int gridDim_y = get_num_groups(1) / (c_nOctaveLayers + 2); - const int blockIdx_y = get_group_id(1) % gridDim_y; - const int blockIdx_z = get_group_id(1) / gridDim_y; - - const int j = get_local_id(0) + get_group_id(0) * get_local_size(0); - const int i = get_local_id(1) + blockIdx_y * get_local_size(1); - const int layer = blockIdx_z; - - const int size = calcSize(c_octave, layer); - - const int samples_i = 1 + ((img_rows - size) >> c_octave); - const int samples_j = 1 + ((img_cols - size) >> c_octave); - - // Ignore pixels where some of the kernel is outside the image - const int margin = (size >> 1) >> c_octave; - - if (size <= img_rows && size <= img_cols && i < samples_i && j < samples_j) - { - int x = j << c_octave; - int y = i << c_octave; - - float ratio = (float)size / 9; - - // Precompute some commonly used values, which are used to offset - // texture coordinates in the integral image. - int r1 = round(ratio); - int r2 = round(ratio * 2.0f); - int r3 = round(ratio * 3.0f); - int r4 = round(ratio * 4.0f); - int r5 = round(ratio * 5.0f); - int r6 = round(ratio * 6.0f); - int r7 = round(ratio * 7.0f); - int r8 = round(ratio * 8.0f); - int r9 = round(ratio * 9.0f); - - // Calculate the approximated derivative in the x-direction - F d = 0; - { - // Some of the pixels needed to compute the derivative are - // repeated, so we only don't duplicate the fetch here. - int t02 = read_sumTex( (int2)(x, y + r2)); - int t07 = read_sumTex( (int2)(x, y + r7)); - int t32 = read_sumTex( (int2)(x + r3, y + r2)); - int t37 = read_sumTex( (int2)(x + r3, y + r7)); - int t62 = read_sumTex( (int2)(x + r6, y + r2)); - int t67 = read_sumTex( (int2)(x + r6, y + r7)); - int t92 = read_sumTex( (int2)(x + r9, y + r2)); - int t97 = read_sumTex( (int2)(x + r9, y + r7)); - - d = calcAxisAlignedDerivative(t02, t07, t32, t37, (r3) * (r7 - r2), - t62, t67, t92, t97, (r9 - r6) * (r7 - r2), - t32, t37, t62, t67, (r6 - r3) * (r7 - r2)); - } - const float dx = (float)d; - - // Calculate the approximated derivative in the y-direction - d = 0; - { - // Some of the pixels needed to compute the derivative are - // repeated, so we only don't duplicate the fetch here. - int t20 = read_sumTex( (int2)(x + r2, y) ); - int t23 = read_sumTex( (int2)(x + r2, y + r3) ); - int t70 = read_sumTex( (int2)(x + r7, y) ); - int t73 = read_sumTex( (int2)(x + r7, y + r3) ); - int t26 = read_sumTex( (int2)(x + r2, y + r6) ); - int t76 = read_sumTex( (int2)(x + r7, y + r6) ); - int t29 = read_sumTex( (int2)(x + r2, y + r9) ); - int t79 = read_sumTex( (int2)(x + r7, y + r9) ); - - d = calcAxisAlignedDerivative(t20, t23, t70, t73, (r7 - r2) * (r3), - t26, t29, t76, t79, (r7 - r2) * (r9 - r6), - t23, t26, t73, t76, (r7 - r2) * (r6 - r3)); - } - const float dy = (float)d; - - // Calculate the approximated derivative in the xy-direction - d = 0; - { - // There's no saving us here, we just have to get all of the pixels in - // separate fetches - F t = 0; - t += read_sumTex( (int2)(x + r1, y + r1) ); - t -= read_sumTex( (int2)(x + r1, y + r4) ); - t -= read_sumTex( (int2)(x + r4, y + r1) ); - t += read_sumTex( (int2)(x + r4, y + r4) ); - d += t / ((r4 - r1) * (r4 - r1)); - - t = 0; - t += read_sumTex( (int2)(x + r5, y + r1) ); - t -= read_sumTex( (int2)(x + r5, y + r4) ); - t -= read_sumTex( (int2)(x + r8, y + r1) ); - t += read_sumTex( (int2)(x + r8, y + r4) ); - d -= t / ((r8 - r5) * (r4 - r1)); - - t = 0; - t += read_sumTex( (int2)(x + r1, y + r5) ); - t -= read_sumTex( (int2)(x + r1, y + r8) ); - t -= read_sumTex( (int2)(x + r4, y + r5) ); - t += read_sumTex( (int2)(x + r4, y + r8) ); - d -= t / ((r4 - r1) * (r8 - r5)); - - t = 0; - t += read_sumTex( (int2)(x + r5, y + r5) ); - t -= read_sumTex( (int2)(x + r5, y + r8) ); - t -= read_sumTex( (int2)(x + r8, y + r5) ); - t += read_sumTex( (int2)(x + r8, y + r8) ); - d += t / ((r8 - r5) * (r8 - r5)); - } - const float dxy = (float)d; - - det [j + margin + det_step * (layer * c_layer_rows + i + margin)] = dx * dy - 0.81f * dxy * dxy; - trace[j + margin + trace_step * (layer * c_layer_rows + i + margin)] = dx + dy; - } -} - -//////////////////////////////////////////////////////////////////////// -// NONMAX - -__kernel -void SURF_findMaximaInLayer( - __global float * det, - int det_step, int det_offset, - __global float * trace, - int trace_step, int trace_offset, - __global int4 * maxPosBuffer, - volatile __global int* maxCounter, - int counter_offset, - int img_rows, - int img_cols, - int c_nOctaveLayers, - int c_octave, - int c_layer_rows, - int c_layer_cols, - int c_max_candidates, - float c_hessianThreshold -) -{ - volatile __local float N9[768]; // threads.x * threads.y * 3 - - det_step /= sizeof(float); - trace_step /= sizeof(float); - maxCounter += counter_offset; - - // Determine the indices - const int gridDim_y = get_num_groups(1) / c_nOctaveLayers; - const int blockIdx_y = get_group_id(1) % gridDim_y; - const int blockIdx_z = get_group_id(1) / gridDim_y; - - const int layer = blockIdx_z + 1; - - const int size = calcSize(c_octave, layer); - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - const int margin = ((calcSize(c_octave, layer + 1) >> 1) >> c_octave) + 1; - - const int j = get_local_id(0) + get_group_id(0) * (get_local_size(0) - 2) + margin - 1; - const int i = get_local_id(1) + blockIdx_y * (get_local_size(1) - 2) + margin - 1; - - // Is this thread within the hessian buffer? - const int zoff = get_local_size(0) * get_local_size(1); - const int localLin = get_local_id(0) + get_local_id(1) * get_local_size(0) + zoff; - - int l_x = min(max(j, 0), img_cols - 1); - int l_y = c_layer_rows * layer + min(max(i, 0), img_rows - 1); - - N9[localLin - zoff] = - det[det_step * (l_y - c_layer_rows) + l_x]; - N9[localLin ] = - det[det_step * (l_y ) + l_x]; - N9[localLin + zoff] = - det[det_step * (l_y + c_layer_rows) + l_x]; - barrier(CLK_LOCAL_MEM_FENCE); - - if (i < c_layer_rows - margin - && j < c_layer_cols - margin - && get_local_id(0) > 0 - && get_local_id(0) < get_local_size(0) - 1 - && get_local_id(1) > 0 - && get_local_id(1) < get_local_size(1) - 1 // these are unnecessary conditions ported from CUDA - ) - { - float val0 = N9[localLin]; - if (val0 > c_hessianThreshold) - { - // Coordinates for the start of the wavelet in the sum image. There - // is some integer division involved, so don't try to simplify this - // (cancel out sampleStep) without checking the result is the same - - // Check to see if we have a max (in its 26 neighbours) - const bool condmax = val0 > N9[localLin - 1 - get_local_size(0) - zoff] - && val0 > N9[localLin - get_local_size(0) - zoff] - && val0 > N9[localLin + 1 - get_local_size(0) - zoff] - && val0 > N9[localLin - 1 - zoff] - && val0 > N9[localLin - zoff] - && val0 > N9[localLin + 1 - zoff] - && val0 > N9[localLin - 1 + get_local_size(0) - zoff] - && val0 > N9[localLin + get_local_size(0) - zoff] - && val0 > N9[localLin + 1 + get_local_size(0) - zoff] - - && val0 > N9[localLin - 1 - get_local_size(0)] - && val0 > N9[localLin - get_local_size(0)] - && val0 > N9[localLin + 1 - get_local_size(0)] - && val0 > N9[localLin - 1 ] - && val0 > N9[localLin + 1 ] - && val0 > N9[localLin - 1 + get_local_size(0)] - && val0 > N9[localLin + get_local_size(0)] - && val0 > N9[localLin + 1 + get_local_size(0)] - - && val0 > N9[localLin - 1 - get_local_size(0) + zoff] - && val0 > N9[localLin - get_local_size(0) + zoff] - && val0 > N9[localLin + 1 - get_local_size(0) + zoff] - && val0 > N9[localLin - 1 + zoff] - && val0 > N9[localLin + zoff] - && val0 > N9[localLin + 1 + zoff] - && val0 > N9[localLin - 1 + get_local_size(0) + zoff] - && val0 > N9[localLin + get_local_size(0) + zoff] - && val0 > N9[localLin + 1 + get_local_size(0) + zoff] - ; - - if(condmax) - { - int ind = atomic_inc(maxCounter); - - if (ind < c_max_candidates) - { - const int laplacian = (int) copysign(1.0f, trace[trace_step* (layer * c_layer_rows + i) + j]); - - maxPosBuffer[ind] = (int4)(j, i, layer, laplacian); - } - } - } - } -} - -// solve 3x3 linear system Ax=b for floating point input -inline bool solve3x3_float(const float4 *A, const float *b, float *x) -{ - float det = A[0].x * (A[1].y * A[2].z - A[1].z * A[2].y) - - A[0].y * (A[1].x * A[2].z - A[1].z * A[2].x) - + A[0].z * (A[1].x * A[2].y - A[1].y * A[2].x); - - if (det != 0) - { - F invdet = 1.0f / det; - - x[0] = invdet * - (b[0] * (A[1].y * A[2].z - A[1].z * A[2].y) - - A[0].y * (b[1] * A[2].z - A[1].z * b[2] ) + - A[0].z * (b[1] * A[2].y - A[1].y * b[2] )); - - x[1] = invdet * - (A[0].x * (b[1] * A[2].z - A[1].z * b[2] ) - - b[0] * (A[1].x * A[2].z - A[1].z * A[2].x) + - A[0].z * (A[1].x * b[2] - b[1] * A[2].x)); - - x[2] = invdet * - (A[0].x * (A[1].y * b[2] - b[1] * A[2].y) - - A[0].y * (A[1].x * b[2] - b[1] * A[2].x) + - b[0] * (A[1].x * A[2].y - A[1].y * A[2].x)); - - return true; - } - return false; -} - -#define X_ROW 0 -#define Y_ROW 1 -#define LAPLACIAN_ROW 2 -#define OCTAVE_ROW 3 -#define SIZE_ROW 4 -#define ANGLE_ROW 5 -#define HESSIAN_ROW 6 -#define ROWS_COUNT 7 - -//////////////////////////////////////////////////////////////////////// -// INTERPOLATION -__kernel -void SURF_interpolateKeypoint( - __global const float * det, - int det_step, int det_offset, - __global const int4 * maxPosBuffer, - __global float * keypoints, - int keypoints_step, int keypoints_offset, - volatile __global int* featureCounter, - int img_rows, - int img_cols, - int c_octave, - int c_layer_rows, - int c_max_features -) -{ - det_step /= sizeof(*det); - keypoints_step /= sizeof(*keypoints); - __global float * featureX = keypoints + X_ROW * keypoints_step; - __global float * featureY = keypoints + Y_ROW * keypoints_step; - __global int * featureLaplacian = (__global int *)keypoints + LAPLACIAN_ROW * keypoints_step; - __global int * featureOctave = (__global int *)keypoints + OCTAVE_ROW * keypoints_step; - __global float * featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float * featureHessian = keypoints + HESSIAN_ROW * keypoints_step; - - const int4 maxPos = maxPosBuffer[get_group_id(0)]; - - const int j = maxPos.x - 1 + get_local_id(0); - const int i = maxPos.y - 1 + get_local_id(1); - const int layer = maxPos.z - 1 + get_local_id(2); - - volatile __local float N9[3][3][3]; - - N9[get_local_id(2)][get_local_id(1)][get_local_id(0)] = - det[det_step * (c_layer_rows * layer + i) + j]; - barrier(CLK_LOCAL_MEM_FENCE); - - if (get_local_id(0) == 0 && get_local_id(1) == 0 && get_local_id(2) == 0) - { - float dD[3]; - - //dx - dD[0] = -0.5f * (N9[1][1][2] - N9[1][1][0]); - //dy - dD[1] = -0.5f * (N9[1][2][1] - N9[1][0][1]); - //ds - dD[2] = -0.5f * (N9[2][1][1] - N9[0][1][1]); - - float4 H[3]; - - //dxx - H[0].x = N9[1][1][0] - 2.0f * N9[1][1][1] + N9[1][1][2]; - //dxy - H[0].y= 0.25f * (N9[1][2][2] - N9[1][2][0] - N9[1][0][2] + N9[1][0][0]); - //dxs - H[0].z= 0.25f * (N9[2][1][2] - N9[2][1][0] - N9[0][1][2] + N9[0][1][0]); - //dyx = dxy - H[1].x = H[0].y; - //dyy - H[1].y = N9[1][0][1] - 2.0f * N9[1][1][1] + N9[1][2][1]; - //dys - H[1].z= 0.25f * (N9[2][2][1] - N9[2][0][1] - N9[0][2][1] + N9[0][0][1]); - //dsx = dxs - H[2].x = H[0].z; - //dsy = dys - H[2].y = H[1].z; - //dss - H[2].z = N9[0][1][1] - 2.0f * N9[1][1][1] + N9[2][1][1]; - - float x[3]; - - if (solve3x3_float(H, dD, x)) - { - if (fabs(x[0]) <= 1.f && fabs(x[1]) <= 1.f && fabs(x[2]) <= 1.f) - { - // if the step is within the interpolation region, perform it - - const int size = calcSize(c_octave, maxPos.z); - - const int sum_i = (maxPos.y - ((size >> 1) >> c_octave)) << c_octave; - const int sum_j = (maxPos.x - ((size >> 1) >> c_octave)) << c_octave; - - const float center_i = sum_i + (float)(size - 1) / 2; - const float center_j = sum_j + (float)(size - 1) / 2; - - const float px = center_j + x[0] * (1 << c_octave); - const float py = center_i + x[1] * (1 << c_octave); - - const int ds = size - calcSize(c_octave, maxPos.z - 1); - const float psize = round(size + x[2] * ds); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = psize * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * round(2.0f * s); - - // check when grad_wav_size is too big - if ((img_rows + 1) >= grad_wav_size && (img_cols + 1) >= grad_wav_size) - { - // Get a new feature index. - int ind = atomic_inc(featureCounter); - - if (ind < c_max_features) - { - featureX[ind] = px; - featureY[ind] = py; - featureLaplacian[ind] = maxPos.w; - featureOctave[ind] = c_octave; - featureSize[ind] = psize; - featureHessian[ind] = N9[1][1][1]; - } - } // grad_wav_size check - } // If the subpixel interpolation worked - } - } // If this is thread 0. -} - -//////////////////////////////////////////////////////////////////////// -// Orientation - -#define ORI_WIN 60 -#define ORI_SAMPLES 113 - -// The distance between samples in the beginning of the the reduction -#define ORI_RESPONSE_REDUCTION_WIDTH 48 -#define ORI_RESPONSE_ARRAY_SIZE (ORI_RESPONSE_REDUCTION_WIDTH * 2) - -__constant float c_aptX[ORI_SAMPLES] = {-6, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6}; -__constant float c_aptY[ORI_SAMPLES] = {0, -3, -2, -1, 0, 1, 2, 3, -4, -3, -2, -1, 0, 1, 2, 3, 4, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, -4, -3, -2, -1, 0, 1, 2, 3, 4, -3, -2, -1, 0, 1, 2, 3, 0}; -__constant float c_aptW[ORI_SAMPLES] = {0.001455130288377404f, 0.001707611023448408f, 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, - 0.003238451667129993f, 0.002547456417232752f, 0.001707611023448408f, 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, - 0.00665318313986063f, 0.00720730796456337f, 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, - 0.002003900473937392f, 0.001707611023448408f, 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, - 0.01164754293859005f, 0.01261763460934162f, 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, - 0.0035081731621176f, 0.001707611023448408f, 0.002547456417232752f, 0.005233579315245152f, 0.009162282571196556f, - 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, 0.01366852037608624f, - 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.003238451667129993f, 0.00665318313986063f, - 0.01164754293859005f, 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, - 0.01737609319388866f, 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.001455130288377404f, - 0.0035081731621176f, 0.00720730796456337f, 0.01261763460934162f, 0.0188232995569706f, 0.02392910048365593f, - 0.02592208795249462f, 0.02392910048365593f, 0.0188232995569706f, 0.01261763460934162f, 0.00720730796456337f, - 0.0035081731621176f, 0.001455130288377404f, 0.003238451667129993f, 0.00665318313986063f, 0.01164754293859005f, - 0.01737609319388866f, 0.02208934165537357f, 0.02392910048365593f, 0.02208934165537357f, 0.01737609319388866f, - 0.01164754293859005f, 0.00665318313986063f, 0.003238451667129993f, 0.002547456417232752f, 0.005233579315245152f, - 0.009162282571196556f, 0.01366852037608624f, 0.01737609319388866f, 0.0188232995569706f, 0.01737609319388866f, - 0.01366852037608624f, 0.009162282571196556f, 0.005233579315245152f, 0.002547456417232752f, 0.001707611023448408f, - 0.0035081731621176f, 0.006141661666333675f, 0.009162282571196556f, 0.01164754293859005f, 0.01261763460934162f, - 0.01164754293859005f, 0.009162282571196556f, 0.006141661666333675f, 0.0035081731621176f, 0.001707611023448408f, - 0.002003900473937392f, 0.0035081731621176f, 0.005233579315245152f, 0.00665318313986063f, 0.00720730796456337f, - 0.00665318313986063f, 0.005233579315245152f, 0.0035081731621176f, 0.002003900473937392f, 0.001707611023448408f, - 0.002547456417232752f, 0.003238451667129993f, 0.0035081731621176f, 0.003238451667129993f, 0.002547456417232752f, - 0.001707611023448408f, 0.001455130288377404f - }; - -__constant float2 c_NX[5] = { (float2)(0, 2), (float2)(0, 0), (float2)(2, 4), (float2)(4, 4), (float2)(-1, 1) }; -__constant float2 c_NY[5] = { (float2)(0, 0), (float2)(0, 2), (float2)(4, 4), (float2)(2, 4), (float2)(1, -1) }; - -void reduce_32_sum(volatile __local float * data, volatile float* partial_reduction, int tid) -{ -#define op(A, B) (*A)+(B) - data[tid] = *partial_reduction; - barrier(CLK_LOCAL_MEM_FENCE); -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - if (tid < 16) - { - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 16]); -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 8]); -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 4]); -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 2 ]); -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - data[tid] = *partial_reduction = op(partial_reduction, data[tid + 1 ]); - } -#undef WAVE_SIZE -#undef op -} - -__kernel -void SURF_calcOrientation( - __PARAM_sumTex__, int img_rows, int img_cols, - __global float * keypoints, int keypoints_step, int keypoints_offset ) -{ - keypoints_step /= sizeof(*keypoints); - #ifndef HAVE_IMAGE2D - sum_step /= sizeof(uint); - #endif - __global float* featureX = keypoints + X_ROW * keypoints_step; - __global float* featureY = keypoints + Y_ROW * keypoints_step; - __global float* featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float* featureDir = keypoints + ANGLE_ROW * keypoints_step; - - __local float s_X[ORI_SAMPLES]; - __local float s_Y[ORI_SAMPLES]; - __local float s_angle[ORI_SAMPLES]; - - // Need to allocate enough to make the reduction work without accessing - // past the end of the array. - __local float s_sumx[ORI_RESPONSE_ARRAY_SIZE]; - __local float s_sumy[ORI_RESPONSE_ARRAY_SIZE]; - __local float s_mod[ORI_RESPONSE_ARRAY_SIZE]; - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = featureSize[get_group_id(0)] * 1.2f / 9.0f; - - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - const int grad_wav_size = 2 * round(2.0f * s); - - // check when grad_wav_size is too big - if ((img_rows + 1) < grad_wav_size || (img_cols + 1) < grad_wav_size) - return; - - // Calc X, Y, angle and store it to shared memory - const int tid = get_local_id(0); - // Initialize values that are only used as part of the reduction later. - if (tid < ORI_RESPONSE_ARRAY_SIZE - ORI_LOCAL_SIZE) { - s_mod[tid + ORI_LOCAL_SIZE] = 0.0f; - } - - float ratio = (float)grad_wav_size / 4; - - int r2 = round(ratio * 2.0f); - int r4 = round(ratio * 4.0f); - for (int i = tid; i < ORI_SAMPLES; i += ORI_LOCAL_SIZE ) - { - float X = 0.0f, Y = 0.0f, angle = 0.0f; - const float margin = (float)(grad_wav_size - 1) / 2.0f; - const int x = round(featureX[get_group_id(0)] + c_aptX[i] * s - margin); - const int y = round(featureY[get_group_id(0)] + c_aptY[i] * s - margin); - - if (y >= 0 && y < (img_rows + 1) - grad_wav_size && - x >= 0 && x < (img_cols + 1) - grad_wav_size) - { - float apt = c_aptW[i]; - - // Compute the haar sum without fetching duplicate pixels. - float t00 = read_sumTex( (int2)(x, y)); - float t02 = read_sumTex( (int2)(x, y + r2)); - float t04 = read_sumTex( (int2)(x, y + r4)); - float t20 = read_sumTex( (int2)(x + r2, y)); - float t24 = read_sumTex( (int2)(x + r2, y + r4)); - float t40 = read_sumTex( (int2)(x + r4, y)); - float t42 = read_sumTex( (int2)(x + r4, y + r2)); - float t44 = read_sumTex( (int2)(x + r4, y + r4)); - - F t = t00 - t04 - t20 + t24; - X -= t / ((r2) * (r4)); - - t = t20 - t24 - t40 + t44; - X += t / ((r4 - r2) * (r4)); - - t = t00 - t02 - t40 + t42; - Y += t / ((r2) * (r4)); - - t = t02 - t04 - t42 + t44; - Y -= t / ((r4) * (r4 - r2)); - - X = apt*X; - Y = apt*Y; - - angle = atan2(Y, X); - - if (angle < 0) - angle += 2.0f * CV_PI_F; - angle *= 180.0f / CV_PI_F; - - } - - s_X[i] = X; - s_Y[i] = Y; - s_angle[i] = angle; - } - barrier(CLK_LOCAL_MEM_FENCE); - - float bestx = 0, besty = 0, best_mod = 0; - float sumx = 0.0f, sumy = 0.0f; - const int dir = tid * ORI_SEARCH_INC; - #pragma unroll - for (int i = 0; i < ORI_SAMPLES; ++i) { - int angle = round(s_angle[i]); - - int d = abs(angle - dir); - if (d < ORI_WIN / 2 || d > 360 - ORI_WIN / 2) - { - sumx += s_X[i]; - sumy += s_Y[i]; - } - } - s_sumx[tid] = sumx; - s_sumy[tid] = sumy; - s_mod[tid] = sumx*sumx + sumy*sumy; - barrier(CLK_LOCAL_MEM_FENCE); - - // This reduction searches for the longest wavelet response vector. The first - // step uses all of the work items in the workgroup to narrow the search - // down to the three candidates. It requires s_mod to have a few more - // elements allocated past the work-group size, which are pre-initialized to - // 0.0f above. - for(int t = ORI_RESPONSE_REDUCTION_WIDTH; t >= 3; t /= 2) { - if (tid < t) { - if (s_mod[tid] < s_mod[tid + t]) { - s_mod[tid] = s_mod[tid + t]; - s_sumx[tid] = s_sumx[tid + t]; - s_sumy[tid] = s_sumy[tid + t]; - } - } - barrier(CLK_LOCAL_MEM_FENCE); - } - - // Do the final reduction and write out the result. - if (tid == 0) - { - int bestIdx = 0; - - // The loop above narrowed the search of the longest vector to three - // possibilities. Pick the best here. - if (s_mod[1] > s_mod[bestIdx]) - bestIdx = 1; - if (s_mod[2] > s_mod[bestIdx]) - bestIdx = 2; - - float kp_dir = atan2(s_sumy[bestIdx], s_sumx[bestIdx]); - if (kp_dir < 0) - kp_dir += 2.0f * CV_PI_F; - kp_dir *= 180.0f / CV_PI_F; - - kp_dir = 360.0f - kp_dir; - if (fabs(kp_dir - 360.f) < FLT_EPSILON) - kp_dir = 0.f; - - featureDir[get_group_id(0)] = kp_dir; - } -} - -__kernel -void SURF_setUpRight( - __global float * keypoints, - int keypoints_step, int keypoints_offset, - int rows, int cols ) -{ - int i = get_global_id(0); - keypoints_step /= sizeof(*keypoints); - - if(i < cols) - { - keypoints[mad24(keypoints_step, ANGLE_ROW, i)] = 270.f; - } -} - - -#undef ORI_SEARCH_INC -#undef ORI_WIN -#undef ORI_SAMPLES - -//////////////////////////////////////////////////////////////////////// -// Descriptors - -#define PATCH_SZ 20 - -__constant float c_DW[PATCH_SZ * PATCH_SZ] = -{ - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002302826324012131f, 0.0005262381164357066f, 0.001097041997127235f, 0.002086334861814976f, 0.003619635012000799f, 0.005728822201490402f, 0.008271530270576477f, 0.01089497376233339f, 0.01309141051024199f, 0.01435048412531614f, 0.01435048412531614f, 0.01309141051024199f, 0.01089497376233339f, 0.008271530270576477f, 0.005728822201490402f, 0.003619635012000799f, 0.002086334861814976f, 0.001097041997127235f, 0.0005262381164357066f, 0.0002302826324012131f, - 0.0002100782439811155f, 0.0004800673632416874f, 0.001000790391117334f, 0.001903285388834775f, 0.00330205773934722f, 0.00522619066759944f, 0.007545807864516974f, 0.009939077310264111f, 0.01194280479103327f, 0.01309141051024199f, 0.01309141051024199f, 0.01194280479103327f, 0.009939077310264111f, 0.007545807864516974f, 0.00522619066759944f, 0.00330205773934722f, 0.001903285388834775f, 0.001000790391117334f, 0.0004800673632416874f, 0.0002100782439811155f, - 0.0001748319627949968f, 0.0003995231236331165f, 0.0008328808471560478f, 0.001583957928232849f, 0.002748048631474376f, 0.004349356517195702f, 0.006279794964939356f, 0.008271529339253902f, 0.009939077310264111f, 0.01089497376233339f, 0.01089497376233339f, 0.009939077310264111f, 0.008271529339253902f, 0.006279794964939356f, 0.004349356517195702f, 0.002748048631474376f, 0.001583957928232849f, 0.0008328808471560478f, 0.0003995231236331165f, 0.0001748319627949968f, - 0.0001327334757661447f, 0.0003033203829545528f, 0.0006323281559161842f, 0.001202550483867526f, 0.002086335094645619f, 0.00330205773934722f, 0.004767658654600382f, 0.006279794964939356f, 0.007545807864516974f, 0.008271530270576477f, 0.008271530270576477f, 0.007545807864516974f, 0.006279794964939356f, 0.004767658654600382f, 0.00330205773934722f, 0.002086335094645619f, 0.001202550483867526f, 0.0006323281559161842f, 0.0003033203829545528f, 0.0001327334757661447f, - 9.193058212986216e-005f, 0.0002100782585330308f, 0.0004379475140012801f, 0.0008328807889483869f, 0.001444985857233405f, 0.002286989474669099f, 0.00330205773934722f, 0.004349356517195702f, 0.00522619066759944f, 0.005728822201490402f, 0.005728822201490402f, 0.00522619066759944f, 0.004349356517195702f, 0.00330205773934722f, 0.002286989474669099f, 0.001444985857233405f, 0.0008328807889483869f, 0.0004379475140012801f, 0.0002100782585330308f, 9.193058212986216e-005f, - 5.808438800158911e-005f, 0.0001327334903180599f, 0.0002767078403849155f, 0.0005262380582280457f, 0.0009129836107604206f, 0.001444985857233405f, 0.002086335094645619f, 0.002748048631474376f, 0.00330205773934722f, 0.003619635012000799f, 0.003619635012000799f, 0.00330205773934722f, 0.002748048631474376f, 0.002086335094645619f, 0.001444985857233405f, 0.0009129836107604206f, 0.0005262380582280457f, 0.0002767078403849155f, 0.0001327334903180599f, 5.808438800158911e-005f, - 3.34794785885606e-005f, 7.650675252079964e-005f, 0.0001594926579855382f, 0.0003033203247468919f, 0.0005262380582280457f, 0.0008328807889483869f, 0.001202550483867526f, 0.001583957928232849f, 0.001903285388834775f, 0.002086334861814976f, 0.002086334861814976f, 0.001903285388834775f, 0.001583957928232849f, 0.001202550483867526f, 0.0008328807889483869f, 0.0005262380582280457f, 0.0003033203247468919f, 0.0001594926579855382f, 7.650675252079964e-005f, 3.34794785885606e-005f, - 1.760426494001877e-005f, 4.022897701361217e-005f, 8.386484114453197e-005f, 0.0001594926579855382f, 0.0002767078403849155f, 0.0004379475140012801f, 0.0006323281559161842f, 0.0008328808471560478f, 0.001000790391117334f, 0.001097041997127235f, 0.001097041997127235f, 0.001000790391117334f, 0.0008328808471560478f, 0.0006323281559161842f, 0.0004379475140012801f, 0.0002767078403849155f, 0.0001594926579855382f, 8.386484114453197e-005f, 4.022897701361217e-005f, 1.760426494001877e-005f, - 8.444558261544444e-006f, 1.929736572492402e-005f, 4.022897701361217e-005f, 7.650675252079964e-005f, 0.0001327334903180599f, 0.0002100782585330308f, 0.0003033203829545528f, 0.0003995231236331165f, 0.0004800673632416874f, 0.0005262381164357066f, 0.0005262381164357066f, 0.0004800673632416874f, 0.0003995231236331165f, 0.0003033203829545528f, 0.0002100782585330308f, 0.0001327334903180599f, 7.650675252079964e-005f, 4.022897701361217e-005f, 1.929736572492402e-005f, 8.444558261544444e-006f, - 3.695352233989979e-006f, 8.444558261544444e-006f, 1.760426494001877e-005f, 3.34794785885606e-005f, 5.808438800158911e-005f, 9.193058212986216e-005f, 0.0001327334757661447f, 0.0001748319627949968f, 0.0002100782439811155f, 0.0002302826324012131f, 0.0002302826324012131f, 0.0002100782439811155f, 0.0001748319627949968f, 0.0001327334757661447f, 9.193058212986216e-005f, 5.808438800158911e-005f, 3.34794785885606e-005f, 1.760426494001877e-005f, 8.444558261544444e-006f, 3.695352233989979e-006f -}; - -// utility for linear filter -#define readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, i, j) \ - read_imgTex((float2)(centerX + (win_offset + j) * cos_dir + (win_offset + i) * sin_dir, \ - centerY - (win_offset + j) * sin_dir + (win_offset + i) * cos_dir)) - -inline float linearFilter( - __PARAM_imgTex__, int img_rows, int img_cols, - float centerX, float centerY, float win_offset, - float cos_dir, float sin_dir, float y, float x ) -{ - x -= 0.5f; - y -= 0.5f; - - float out = 0.0f; - - const int x1 = round(x); - const int y1 = round(y); - const int x2 = x1 + 1; - const int y2 = y1 + 1; - - uchar src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y1, x1); - out = out + src_reg * ((x2 - x) * (y2 - y)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y1, x2); - out = out + src_reg * ((x - x1) * (y2 - y)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y2, x1); - out = out + src_reg * ((x2 - x) * (y - y1)); - - src_reg = readerGet(centerX, centerY, win_offset, cos_dir, sin_dir, y2, x2); - out = out + src_reg * ((x - x1) * (y - y1)); - - return out; -} - -void calc_dx_dy( - __PARAM_imgTex__, - int img_rows, int img_cols, - volatile __local float *s_dx_bin, - volatile __local float *s_dy_bin, - volatile __local float *s_PATCH, - __global const float* featureX, - __global const float* featureY, - __global const float* featureSize, - __global const float* featureDir ) -{ - const float centerX = featureX[get_group_id(0)]; - const float centerY = featureY[get_group_id(0)]; - const float size = featureSize[get_group_id(0)]; - float descriptor_dir = 360.0f - featureDir[get_group_id(0)]; - if(fabs(descriptor_dir - 360.0f) < FLT_EPSILON) - { - descriptor_dir = 0.0f; - } - - descriptor_dir *= (float)(CV_PI_F / 180.0f); - - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - const float s = size * 1.2f / 9.0f; - - /* Extract a window of pixels around the keypoint of size 20s */ - const int win_size = (int)((PATCH_SZ + 1) * s); - - float sin_dir; - float cos_dir; - sin_dir = sincos(descriptor_dir, &cos_dir); - - /* Nearest neighbour version (faster) */ - const float win_offset = -(float)(win_size - 1) / 2; - - // Compute sampling points - // since grids are 2D, need to compute xBlock and yBlock indices - const int xBlock = (get_group_id(1) & 3); // get_group_id(1) % 4 - const int yBlock = (get_group_id(1) >> 2); // floor(get_group_id(1)/4) - const int xIndex = xBlock * 5 + get_local_id(0); - const int yIndex = yBlock * 5 + get_local_id(1); - - const float icoo = ((float)yIndex / (PATCH_SZ + 1)) * win_size; - const float jcoo = ((float)xIndex / (PATCH_SZ + 1)) * win_size; - - s_PATCH[get_local_id(1) * 6 + get_local_id(0)] = - linearFilter(__PASS_imgTex__, img_rows, img_cols, centerX, centerY, - win_offset, cos_dir, sin_dir, icoo, jcoo); - - barrier(CLK_LOCAL_MEM_FENCE); - - if (get_local_id(0) < 5 && get_local_id(1) < 5) - { - const int tid = get_local_id(1) * 5 + get_local_id(0); - - const float dw = c_DW[yIndex * PATCH_SZ + xIndex]; - - const float vx = ( - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) + 1] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) ] + - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) + 1] - - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) ]) - * dw; - const float vy = ( - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) ] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) ] + - s_PATCH[(get_local_id(1) + 1) * 6 + get_local_id(0) + 1] - - s_PATCH[ get_local_id(1) * 6 + get_local_id(0) + 1]) - * dw; - s_dx_bin[tid] = vx; - s_dy_bin[tid] = vy; - } -} - -void reduce_sum25( - volatile __local float* sdata1, - volatile __local float* sdata2, - volatile __local float* sdata3, - volatile __local float* sdata4, - int tid -) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - // first step is to reduce from 25 to 16 - if (tid < 9) - { - sdata1[tid] += sdata1[tid + 16]; - sdata2[tid] += sdata2[tid + 16]; - sdata3[tid] += sdata3[tid + 16]; - sdata4[tid] += sdata4[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - sdata1[tid] += sdata1[tid + 8]; - sdata2[tid] += sdata2[tid + 8]; - sdata3[tid] += sdata3[tid + 8]; - sdata4[tid] += sdata4[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - sdata1[tid] += sdata1[tid + 4]; - sdata2[tid] += sdata2[tid + 4]; - sdata3[tid] += sdata3[tid + 4]; - sdata4[tid] += sdata4[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - sdata1[tid] += sdata1[tid + 2]; - sdata2[tid] += sdata2[tid + 2]; - sdata3[tid] += sdata3[tid + 2]; - sdata4[tid] += sdata4[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - sdata1[tid] += sdata1[tid + 1]; - sdata2[tid] += sdata2[tid + 1]; - sdata3[tid] += sdata3[tid + 1]; - sdata4[tid] += sdata4[tid + 1]; - } -#undef WAVE_SIZE -} - -__kernel -void SURF_computeDescriptors64( - __PARAM_imgTex__, - int img_rows, int img_cols, - __global const float* keypoints, - int keypoints_step, int keypoints_offset, - __global float * descriptors, - int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(float); - keypoints_step /= sizeof(float); - __global const float * featureX = keypoints + X_ROW * keypoints_step; - __global const float * featureY = keypoints + Y_ROW * keypoints_step; - __global const float * featureSize = keypoints + SIZE_ROW * keypoints_step; - __global const float * featureDir = keypoints + ANGLE_ROW * keypoints_step; - - // 2 floats (dx,dy) for each thread (5x5 sample points in each sub-region) - volatile __local float sdx[25]; - volatile __local float sdy[25]; - volatile __local float sdxabs[25]; - volatile __local float sdyabs[25]; - volatile __local float s_PATCH[6*6]; - - calc_dx_dy(__PASS_imgTex__, img_rows, img_cols, sdx, sdy, s_PATCH, featureX, featureY, featureSize, featureDir); - barrier(CLK_LOCAL_MEM_FENCE); - - const int tid = get_local_id(1) * get_local_size(0) + get_local_id(0); - - if (tid < 25) - { - sdxabs[tid] = fabs(sdx[tid]); // |dx| array - sdyabs[tid] = fabs(sdy[tid]); // |dy| array - } - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum25(sdx, sdy, sdxabs, sdyabs, tid); - - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 25) - { - __global float* descriptors_block = descriptors + descriptors_step * get_group_id(0) + (get_group_id(1) << 2); - - // write dx, dy, |dx|, |dy| - if (tid == 0) - { - descriptors_block[0] = sdx[0]; - descriptors_block[1] = sdy[0]; - descriptors_block[2] = sdxabs[0]; - descriptors_block[3] = sdyabs[0]; - } - } -} - -__kernel -void SURF_computeDescriptors128( - __PARAM_imgTex__, - int img_rows, int img_cols, - __global const float* keypoints, - int keypoints_step, int keypoints_offset, - __global float* descriptors, - int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - keypoints_step /= sizeof(*keypoints); - - __global float * featureX = keypoints + X_ROW * keypoints_step; - __global float * featureY = keypoints + Y_ROW * keypoints_step; - __global float* featureSize = keypoints + SIZE_ROW * keypoints_step; - __global float* featureDir = keypoints + ANGLE_ROW * keypoints_step; - - // 2 floats (dx,dy) for each thread (5x5 sample points in each sub-region) - volatile __local float sdx[25]; - volatile __local float sdy[25]; - - // sum (reduce) 5x5 area response - volatile __local float sd1[25]; - volatile __local float sd2[25]; - volatile __local float sdabs1[25]; - volatile __local float sdabs2[25]; - volatile __local float s_PATCH[6*6]; - - calc_dx_dy(__PASS_imgTex__, img_rows, img_cols, sdx, sdy, s_PATCH, featureX, featureY, featureSize, featureDir); - barrier(CLK_LOCAL_MEM_FENCE); - - const int tid = get_local_id(1) * get_local_size(0) + get_local_id(0); - - if (tid < 25) - { - if (sdy[tid] >= 0) - { - sd1[tid] = sdx[tid]; - sdabs1[tid] = fabs(sdx[tid]); - sd2[tid] = 0; - sdabs2[tid] = 0; - } - else - { - sd1[tid] = 0; - sdabs1[tid] = 0; - sd2[tid] = sdx[tid]; - sdabs2[tid] = fabs(sdx[tid]); - } - } - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum25(sd1, sd2, sdabs1, sdabs2, tid); - barrier(CLK_LOCAL_MEM_FENCE); - - __global float* descriptors_block = descriptors + descriptors_step * get_group_id(0) + (get_group_id(1) << 3); - if (tid < 25) - { - // write dx (dy >= 0), |dx| (dy >= 0), dx (dy < 0), |dx| (dy < 0) - if (tid == 0) - { - descriptors_block[0] = sd1[0]; - descriptors_block[1] = sdabs1[0]; - descriptors_block[2] = sd2[0]; - descriptors_block[3] = sdabs2[0]; - } - - if (sdx[tid] >= 0) - { - sd1[tid] = sdy[tid]; - sdabs1[tid] = fabs(sdy[tid]); - sd2[tid] = 0; - sdabs2[tid] = 0; - } - else - { - sd1[tid] = 0; - sdabs1[tid] = 0; - sd2[tid] = sdy[tid]; - sdabs2[tid] = fabs(sdy[tid]); - } - } - barrier(CLK_LOCAL_MEM_FENCE); - reduce_sum25(sd1, sd2, sdabs1, sdabs2, tid); - barrier(CLK_LOCAL_MEM_FENCE); - - if (tid < 25) - { - // write dy (dx >= 0), |dy| (dx >= 0), dy (dx < 0), |dy| (dx < 0) - if (tid == 0) - { - descriptors_block[4] = sd1[0]; - descriptors_block[5] = sdabs1[0]; - descriptors_block[6] = sd2[0]; - descriptors_block[7] = sdabs2[0]; - } - } -} - -void reduce_sum128(volatile __local float* smem, int tid) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - - if (tid < 64) - { - smem[tid] += smem[tid + 64]; -#if WAVE_SIZE < 64 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 32) - { -#endif - smem[tid] += smem[tid + 32]; -#if WAVE_SIZE < 32 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 16) - { -#endif - smem[tid] += smem[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - smem[tid] += smem[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - smem[tid] += smem[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - smem[tid] += smem[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - smem[tid] += smem[tid + 1]; - } -} - - -void reduce_sum64(volatile __local float* smem, int tid) -{ -#ifndef WAVE_SIZE -#define WAVE_SIZE 1 -#endif - if (tid < 32) - { - smem[tid] += smem[tid + 32]; -#if WAVE_SIZE < 32 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 16) - { -#endif - smem[tid] += smem[tid + 16]; -#if WAVE_SIZE < 16 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 8) - { -#endif - smem[tid] += smem[tid + 8]; -#if WAVE_SIZE < 8 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 4) - { -#endif - smem[tid] += smem[tid + 4]; -#if WAVE_SIZE < 4 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 2) - { -#endif - smem[tid] += smem[tid + 2]; -#if WAVE_SIZE < 2 - } - barrier(CLK_LOCAL_MEM_FENCE); - if (tid < 1) - { -#endif - smem[tid] += smem[tid + 1]; - } -} - -__kernel -void SURF_normalizeDescriptors128(__global float * descriptors, int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - // no need for thread ID - __global float* descriptor_base = descriptors + descriptors_step * get_group_id(0); - - // read in the unnormalized descriptor values (squared) - volatile __local float sqDesc[128]; - const float lookup = descriptor_base[get_local_id(0)]; - sqDesc[get_local_id(0)] = lookup * lookup; - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum128(sqDesc, get_local_id(0)); - barrier(CLK_LOCAL_MEM_FENCE); - - // compute length (square root) - volatile __local float len; - if (get_local_id(0) == 0) - { - len = sqrt(sqDesc[0]); - } - barrier(CLK_LOCAL_MEM_FENCE); - - // normalize and store in output - descriptor_base[get_local_id(0)] = lookup / len; -} - -__kernel -void SURF_normalizeDescriptors64(__global float * descriptors, int descriptors_step, int descriptors_offset) -{ - descriptors_step /= sizeof(*descriptors); - // no need for thread ID - __global float* descriptor_base = descriptors + descriptors_step * get_group_id(0); - - // read in the unnormalized descriptor values (squared) - volatile __local float sqDesc[64]; - const float lookup = descriptor_base[get_local_id(0)]; - sqDesc[get_local_id(0)] = lookup * lookup; - barrier(CLK_LOCAL_MEM_FENCE); - - reduce_sum64(sqDesc, get_local_id(0)); - barrier(CLK_LOCAL_MEM_FENCE); - - // compute length (square root) - volatile __local float len; - if (get_local_id(0) == 0) - { - len = sqrt(sqDesc[0]); - } - barrier(CLK_LOCAL_MEM_FENCE); - - // normalize and store in output - descriptor_base[get_local_id(0)] = lookup / len; -} diff --git a/modules/nonfree/src/sift.cpp b/modules/nonfree/src/sift.cpp deleted file mode 100644 index 2112971e94..0000000000 --- a/modules/nonfree/src/sift.cpp +++ /dev/null @@ -1,816 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -/**********************************************************************************************\ - Implementation of SIFT is based on the code from http://blogs.oregonstate.edu/hess/code/sift/ - Below is the original copyright. - -// Copyright (c) 2006-2010, Rob Hess -// All rights reserved. - -// The following patent has been issued for methods embodied in this -// software: "Method and apparatus for identifying scale invariant features -// in an image and use of same for locating an object in an image," David -// G. Lowe, US Patent 6,711,293 (March 23, 2004). Provisional application -// filed March 8, 1999. Asignee: The University of British Columbia. For -// further details, contact David Lowe (lowe@cs.ubc.ca) or the -// University-Industry Liaison Office of the University of British -// Columbia. - -// Note that restrictions imposed by this patent (and possibly others) -// exist independently of and may be in conflict with the freedoms granted -// in this license, which refers to copyright of the program, not patents -// for any methods that it implements. Both copyright and patent law must -// be obeyed to legally use and redistribute this program and it is not the -// purpose of this license to induce you to infringe any patents or other -// property right claims or to contest validity of any such claims. If you -// redistribute or use the program, then this license merely protects you -// from committing copyright infringement. It does not protect you from -// committing patent infringement. So, before you do anything with this -// program, make sure that you have permission to do so not merely in terms -// of copyright, but also in terms of patent law. - -// Please note that this license is not to be understood as a guarantee -// either. If you use the program according to this license, but in -// conflict with patent law, it does not mean that the licensor will refund -// you for any losses that you incur if you are sued for your patent -// infringement. - -// 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 and -// patent notices, 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 Oregon State University 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 COPYRIGHT -// HOLDER 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 "precomp.hpp" -#include -#include - -namespace cv -{ - -/******************************* Defs and macros *****************************/ - -// default width of descriptor histogram array -static const int SIFT_DESCR_WIDTH = 4; - -// default number of bins per histogram in descriptor array -static const int SIFT_DESCR_HIST_BINS = 8; - -// assumed gaussian blur for input image -static const float SIFT_INIT_SIGMA = 0.5f; - -// width of border in which to ignore keypoints -static const int SIFT_IMG_BORDER = 5; - -// maximum steps of keypoint interpolation before failure -static const int SIFT_MAX_INTERP_STEPS = 5; - -// default number of bins in histogram for orientation assignment -static const int SIFT_ORI_HIST_BINS = 36; - -// determines gaussian sigma for orientation assignment -static const float SIFT_ORI_SIG_FCTR = 1.5f; - -// determines the radius of the region used in orientation assignment -static const float SIFT_ORI_RADIUS = 3 * SIFT_ORI_SIG_FCTR; - -// orientation magnitude relative to max that results in new feature -static const float SIFT_ORI_PEAK_RATIO = 0.8f; - -// determines the size of a single descriptor orientation histogram -static const float SIFT_DESCR_SCL_FCTR = 3.f; - -// threshold on magnitude of elements of descriptor vector -static const float SIFT_DESCR_MAG_THR = 0.2f; - -// factor used to convert floating-point descriptor to unsigned char -static const float SIFT_INT_DESCR_FCTR = 512.f; - -#if 0 -// intermediate type used for DoG pyramids -typedef short sift_wt; -static const int SIFT_FIXPT_SCALE = 48; -#else -// intermediate type used for DoG pyramids -typedef float sift_wt; -static const int SIFT_FIXPT_SCALE = 1; -#endif - -static inline void -unpackOctave(const KeyPoint& kpt, int& octave, int& layer, float& scale) -{ - octave = kpt.octave & 255; - layer = (kpt.octave >> 8) & 255; - octave = octave < 128 ? octave : (-128 | octave); - scale = octave >= 0 ? 1.f/(1 << octave) : (float)(1 << -octave); -} - -static Mat createInitialImage( const Mat& img, bool doubleImageSize, float sigma ) -{ - Mat gray, gray_fpt; - if( img.channels() == 3 || img.channels() == 4 ) - cvtColor(img, gray, COLOR_BGR2GRAY); - else - img.copyTo(gray); - gray.convertTo(gray_fpt, DataType::type, SIFT_FIXPT_SCALE, 0); - - float sig_diff; - - if( doubleImageSize ) - { - sig_diff = sqrtf( std::max(sigma * sigma - SIFT_INIT_SIGMA * SIFT_INIT_SIGMA * 4, 0.01f) ); - Mat dbl; - resize(gray_fpt, dbl, Size(gray.cols*2, gray.rows*2), 0, 0, INTER_LINEAR); - GaussianBlur(dbl, dbl, Size(), sig_diff, sig_diff); - return dbl; - } - else - { - sig_diff = sqrtf( std::max(sigma * sigma - SIFT_INIT_SIGMA * SIFT_INIT_SIGMA, 0.01f) ); - GaussianBlur(gray_fpt, gray_fpt, Size(), sig_diff, sig_diff); - return gray_fpt; - } -} - - -void SIFT::buildGaussianPyramid( const Mat& base, std::vector& pyr, int nOctaves ) const -{ - std::vector sig(nOctaveLayers + 3); - pyr.resize(nOctaves*(nOctaveLayers + 3)); - - // precompute Gaussian sigmas using the following formula: - // \sigma_{total}^2 = \sigma_{i}^2 + \sigma_{i-1}^2 - sig[0] = sigma; - double k = std::pow( 2., 1. / nOctaveLayers ); - for( int i = 1; i < nOctaveLayers + 3; i++ ) - { - double sig_prev = std::pow(k, (double)(i-1))*sigma; - double sig_total = sig_prev*k; - sig[i] = std::sqrt(sig_total*sig_total - sig_prev*sig_prev); - } - - for( int o = 0; o < nOctaves; o++ ) - { - for( int i = 0; i < nOctaveLayers + 3; i++ ) - { - Mat& dst = pyr[o*(nOctaveLayers + 3) + i]; - if( o == 0 && i == 0 ) - dst = base; - // base of new octave is halved image from end of previous octave - else if( i == 0 ) - { - const Mat& src = pyr[(o-1)*(nOctaveLayers + 3) + nOctaveLayers]; - resize(src, dst, Size(src.cols/2, src.rows/2), - 0, 0, INTER_NEAREST); - } - else - { - const Mat& src = pyr[o*(nOctaveLayers + 3) + i-1]; - GaussianBlur(src, dst, Size(), sig[i], sig[i]); - } - } - } -} - - -void SIFT::buildDoGPyramid( const std::vector& gpyr, std::vector& dogpyr ) const -{ - int nOctaves = (int)gpyr.size()/(nOctaveLayers + 3); - dogpyr.resize( nOctaves*(nOctaveLayers + 2) ); - - for( int o = 0; o < nOctaves; o++ ) - { - for( int i = 0; i < nOctaveLayers + 2; i++ ) - { - const Mat& src1 = gpyr[o*(nOctaveLayers + 3) + i]; - const Mat& src2 = gpyr[o*(nOctaveLayers + 3) + i + 1]; - Mat& dst = dogpyr[o*(nOctaveLayers + 2) + i]; - subtract(src2, src1, dst, noArray(), DataType::type); - } - } -} - - -// Computes a gradient orientation histogram at a specified pixel -static float calcOrientationHist( const Mat& img, Point pt, int radius, - float sigma, float* hist, int n ) -{ - int i, j, k, len = (radius*2+1)*(radius*2+1); - - float expf_scale = -1.f/(2.f * sigma * sigma); - AutoBuffer buf(len*4 + n+4); - float *X = buf, *Y = X + len, *Mag = X, *Ori = Y + len, *W = Ori + len; - float* temphist = W + len + 2; - - for( i = 0; i < n; i++ ) - temphist[i] = 0.f; - - for( i = -radius, k = 0; i <= radius; i++ ) - { - int y = pt.y + i; - if( y <= 0 || y >= img.rows - 1 ) - continue; - for( j = -radius; j <= radius; j++ ) - { - int x = pt.x + j; - if( x <= 0 || x >= img.cols - 1 ) - continue; - - float dx = (float)(img.at(y, x+1) - img.at(y, x-1)); - float dy = (float)(img.at(y-1, x) - img.at(y+1, x)); - - X[k] = dx; Y[k] = dy; W[k] = (i*i + j*j)*expf_scale; - k++; - } - } - - len = k; - - // compute gradient values, orientations and the weights over the pixel neighborhood - exp(W, W, len); - fastAtan2(Y, X, Ori, len, true); - magnitude(X, Y, Mag, len); - - for( k = 0; k < len; k++ ) - { - int bin = cvRound((n/360.f)*Ori[k]); - if( bin >= n ) - bin -= n; - if( bin < 0 ) - bin += n; - temphist[bin] += W[k]*Mag[k]; - } - - // smooth the histogram - temphist[-1] = temphist[n-1]; - temphist[-2] = temphist[n-2]; - temphist[n] = temphist[0]; - temphist[n+1] = temphist[1]; - for( i = 0; i < n; i++ ) - { - hist[i] = (temphist[i-2] + temphist[i+2])*(1.f/16.f) + - (temphist[i-1] + temphist[i+1])*(4.f/16.f) + - temphist[i]*(6.f/16.f); - } - - float maxval = hist[0]; - for( i = 1; i < n; i++ ) - maxval = std::max(maxval, hist[i]); - - return maxval; -} - - -// -// Interpolates a scale-space extremum's location and scale to subpixel -// accuracy to form an image feature. Rejects features with low contrast. -// Based on Section 4 of Lowe's paper. -static bool adjustLocalExtrema( const std::vector& dog_pyr, KeyPoint& kpt, int octv, - int& layer, int& r, int& c, int nOctaveLayers, - float contrastThreshold, float edgeThreshold, float sigma ) -{ - const float img_scale = 1.f/(255*SIFT_FIXPT_SCALE); - const float deriv_scale = img_scale*0.5f; - const float second_deriv_scale = img_scale; - const float cross_deriv_scale = img_scale*0.25f; - - float xi=0, xr=0, xc=0, contr=0; - int i = 0; - - for( ; i < SIFT_MAX_INTERP_STEPS; i++ ) - { - int idx = octv*(nOctaveLayers+2) + layer; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - - Vec3f dD((img.at(r, c+1) - img.at(r, c-1))*deriv_scale, - (img.at(r+1, c) - img.at(r-1, c))*deriv_scale, - (next.at(r, c) - prev.at(r, c))*deriv_scale); - - float v2 = (float)img.at(r, c)*2; - float dxx = (img.at(r, c+1) + img.at(r, c-1) - v2)*second_deriv_scale; - float dyy = (img.at(r+1, c) + img.at(r-1, c) - v2)*second_deriv_scale; - float dss = (next.at(r, c) + prev.at(r, c) - v2)*second_deriv_scale; - float dxy = (img.at(r+1, c+1) - img.at(r+1, c-1) - - img.at(r-1, c+1) + img.at(r-1, c-1))*cross_deriv_scale; - float dxs = (next.at(r, c+1) - next.at(r, c-1) - - prev.at(r, c+1) + prev.at(r, c-1))*cross_deriv_scale; - float dys = (next.at(r+1, c) - next.at(r-1, c) - - prev.at(r+1, c) + prev.at(r-1, c))*cross_deriv_scale; - - Matx33f H(dxx, dxy, dxs, - dxy, dyy, dys, - dxs, dys, dss); - - Vec3f X = H.solve(dD, DECOMP_LU); - - xi = -X[2]; - xr = -X[1]; - xc = -X[0]; - - if( std::abs(xi) < 0.5f && std::abs(xr) < 0.5f && std::abs(xc) < 0.5f ) - break; - - if( std::abs(xi) > (float)(INT_MAX/3) || - std::abs(xr) > (float)(INT_MAX/3) || - std::abs(xc) > (float)(INT_MAX/3) ) - return false; - - c += cvRound(xc); - r += cvRound(xr); - layer += cvRound(xi); - - if( layer < 1 || layer > nOctaveLayers || - c < SIFT_IMG_BORDER || c >= img.cols - SIFT_IMG_BORDER || - r < SIFT_IMG_BORDER || r >= img.rows - SIFT_IMG_BORDER ) - return false; - } - - // ensure convergence of interpolation - if( i >= SIFT_MAX_INTERP_STEPS ) - return false; - - { - int idx = octv*(nOctaveLayers+2) + layer; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - Matx31f dD((img.at(r, c+1) - img.at(r, c-1))*deriv_scale, - (img.at(r+1, c) - img.at(r-1, c))*deriv_scale, - (next.at(r, c) - prev.at(r, c))*deriv_scale); - float t = dD.dot(Matx31f(xc, xr, xi)); - - contr = img.at(r, c)*img_scale + t * 0.5f; - if( std::abs( contr ) * nOctaveLayers < contrastThreshold ) - return false; - - // principal curvatures are computed using the trace and det of Hessian - float v2 = img.at(r, c)*2.f; - float dxx = (img.at(r, c+1) + img.at(r, c-1) - v2)*second_deriv_scale; - float dyy = (img.at(r+1, c) + img.at(r-1, c) - v2)*second_deriv_scale; - float dxy = (img.at(r+1, c+1) - img.at(r+1, c-1) - - img.at(r-1, c+1) + img.at(r-1, c-1)) * cross_deriv_scale; - float tr = dxx + dyy; - float det = dxx * dyy - dxy * dxy; - - if( det <= 0 || tr*tr*edgeThreshold >= (edgeThreshold + 1)*(edgeThreshold + 1)*det ) - return false; - } - - kpt.pt.x = (c + xc) * (1 << octv); - kpt.pt.y = (r + xr) * (1 << octv); - kpt.octave = octv + (layer << 8) + (cvRound((xi + 0.5)*255) << 16); - kpt.size = sigma*powf(2.f, (layer + xi) / nOctaveLayers)*(1 << octv)*2; - kpt.response = std::abs(contr); - - return true; -} - - -// -// Detects features at extrema in DoG scale space. Bad features are discarded -// based on contrast and ratio of principal curvatures. -void SIFT::findScaleSpaceExtrema( const std::vector& gauss_pyr, const std::vector& dog_pyr, - std::vector& keypoints ) const -{ - int nOctaves = (int)gauss_pyr.size()/(nOctaveLayers + 3); - int threshold = cvFloor(0.5 * contrastThreshold / nOctaveLayers * 255 * SIFT_FIXPT_SCALE); - const int n = SIFT_ORI_HIST_BINS; - float hist[n]; - KeyPoint kpt; - - keypoints.clear(); - - for( int o = 0; o < nOctaves; o++ ) - for( int i = 1; i <= nOctaveLayers; i++ ) - { - int idx = o*(nOctaveLayers+2)+i; - const Mat& img = dog_pyr[idx]; - const Mat& prev = dog_pyr[idx-1]; - const Mat& next = dog_pyr[idx+1]; - int step = (int)img.step1(); - int rows = img.rows, cols = img.cols; - - for( int r = SIFT_IMG_BORDER; r < rows-SIFT_IMG_BORDER; r++) - { - const sift_wt* currptr = img.ptr(r); - const sift_wt* prevptr = prev.ptr(r); - const sift_wt* nextptr = next.ptr(r); - - for( int c = SIFT_IMG_BORDER; c < cols-SIFT_IMG_BORDER; c++) - { - sift_wt val = currptr[c]; - - // find local extrema with pixel accuracy - if( std::abs(val) > threshold && - ((val > 0 && val >= currptr[c-1] && val >= currptr[c+1] && - val >= currptr[c-step-1] && val >= currptr[c-step] && val >= currptr[c-step+1] && - val >= currptr[c+step-1] && val >= currptr[c+step] && val >= currptr[c+step+1] && - val >= nextptr[c] && val >= nextptr[c-1] && val >= nextptr[c+1] && - val >= nextptr[c-step-1] && val >= nextptr[c-step] && val >= nextptr[c-step+1] && - val >= nextptr[c+step-1] && val >= nextptr[c+step] && val >= nextptr[c+step+1] && - val >= prevptr[c] && val >= prevptr[c-1] && val >= prevptr[c+1] && - val >= prevptr[c-step-1] && val >= prevptr[c-step] && val >= prevptr[c-step+1] && - val >= prevptr[c+step-1] && val >= prevptr[c+step] && val >= prevptr[c+step+1]) || - (val < 0 && val <= currptr[c-1] && val <= currptr[c+1] && - val <= currptr[c-step-1] && val <= currptr[c-step] && val <= currptr[c-step+1] && - val <= currptr[c+step-1] && val <= currptr[c+step] && val <= currptr[c+step+1] && - val <= nextptr[c] && val <= nextptr[c-1] && val <= nextptr[c+1] && - val <= nextptr[c-step-1] && val <= nextptr[c-step] && val <= nextptr[c-step+1] && - val <= nextptr[c+step-1] && val <= nextptr[c+step] && val <= nextptr[c+step+1] && - val <= prevptr[c] && val <= prevptr[c-1] && val <= prevptr[c+1] && - val <= prevptr[c-step-1] && val <= prevptr[c-step] && val <= prevptr[c-step+1] && - val <= prevptr[c+step-1] && val <= prevptr[c+step] && val <= prevptr[c+step+1]))) - { - int r1 = r, c1 = c, layer = i; - if( !adjustLocalExtrema(dog_pyr, kpt, o, layer, r1, c1, - nOctaveLayers, (float)contrastThreshold, - (float)edgeThreshold, (float)sigma) ) - continue; - float scl_octv = kpt.size*0.5f/(1 << o); - float omax = calcOrientationHist(gauss_pyr[o*(nOctaveLayers+3) + layer], - Point(c1, r1), - cvRound(SIFT_ORI_RADIUS * scl_octv), - SIFT_ORI_SIG_FCTR * scl_octv, - hist, n); - float mag_thr = (float)(omax * SIFT_ORI_PEAK_RATIO); - for( int j = 0; j < n; j++ ) - { - int l = j > 0 ? j - 1 : n - 1; - int r2 = j < n-1 ? j + 1 : 0; - - if( hist[j] > hist[l] && hist[j] > hist[r2] && hist[j] >= mag_thr ) - { - float bin = j + 0.5f * (hist[l]-hist[r2]) / (hist[l] - 2*hist[j] + hist[r2]); - bin = bin < 0 ? n + bin : bin >= n ? bin - n : bin; - kpt.angle = 360.f - (float)((360.f/n) * bin); - if(std::abs(kpt.angle - 360.f) < FLT_EPSILON) - kpt.angle = 0.f; - keypoints.push_back(kpt); - } - } - } - } - } - } -} - - -static void calcSIFTDescriptor( const Mat& img, Point2f ptf, float ori, float scl, - int d, int n, float* dst ) -{ - Point pt(cvRound(ptf.x), cvRound(ptf.y)); - float cos_t = cosf(ori*(float)(CV_PI/180)); - float sin_t = sinf(ori*(float)(CV_PI/180)); - float bins_per_rad = n / 360.f; - float exp_scale = -1.f/(d * d * 0.5f); - float hist_width = SIFT_DESCR_SCL_FCTR * scl; - int radius = cvRound(hist_width * 1.4142135623730951f * (d + 1) * 0.5f); - // Clip the radius to the diagonal of the image to avoid autobuffer too large exception - radius = std::min(radius, (int) sqrt((double) img.cols*img.cols + img.rows*img.rows)); - cos_t /= hist_width; - sin_t /= hist_width; - - int i, j, k, len = (radius*2+1)*(radius*2+1), histlen = (d+2)*(d+2)*(n+2); - int rows = img.rows, cols = img.cols; - - AutoBuffer buf(len*6 + histlen); - float *X = buf, *Y = X + len, *Mag = Y, *Ori = Mag + len, *W = Ori + len; - float *RBin = W + len, *CBin = RBin + len, *hist = CBin + len; - - for( i = 0; i < d+2; i++ ) - { - for( j = 0; j < d+2; j++ ) - for( k = 0; k < n+2; k++ ) - hist[(i*(d+2) + j)*(n+2) + k] = 0.; - } - - for( i = -radius, k = 0; i <= radius; i++ ) - for( j = -radius; j <= radius; j++ ) - { - // Calculate sample's histogram array coords rotated relative to ori. - // Subtract 0.5 so samples that fall e.g. in the center of row 1 (i.e. - // r_rot = 1.5) have full weight placed in row 1 after interpolation. - float c_rot = j * cos_t - i * sin_t; - float r_rot = j * sin_t + i * cos_t; - float rbin = r_rot + d/2 - 0.5f; - float cbin = c_rot + d/2 - 0.5f; - int r = pt.y + i, c = pt.x + j; - - if( rbin > -1 && rbin < d && cbin > -1 && cbin < d && - r > 0 && r < rows - 1 && c > 0 && c < cols - 1 ) - { - float dx = (float)(img.at(r, c+1) - img.at(r, c-1)); - float dy = (float)(img.at(r-1, c) - img.at(r+1, c)); - X[k] = dx; Y[k] = dy; RBin[k] = rbin; CBin[k] = cbin; - W[k] = (c_rot * c_rot + r_rot * r_rot)*exp_scale; - k++; - } - } - - len = k; - fastAtan2(Y, X, Ori, len, true); - magnitude(X, Y, Mag, len); - exp(W, W, len); - - for( k = 0; k < len; k++ ) - { - float rbin = RBin[k], cbin = CBin[k]; - float obin = (Ori[k] - ori)*bins_per_rad; - float mag = Mag[k]*W[k]; - - int r0 = cvFloor( rbin ); - int c0 = cvFloor( cbin ); - int o0 = cvFloor( obin ); - rbin -= r0; - cbin -= c0; - obin -= o0; - - if( o0 < 0 ) - o0 += n; - if( o0 >= n ) - o0 -= n; - - // histogram update using tri-linear interpolation - float v_r1 = mag*rbin, v_r0 = mag - v_r1; - float v_rc11 = v_r1*cbin, v_rc10 = v_r1 - v_rc11; - float v_rc01 = v_r0*cbin, v_rc00 = v_r0 - v_rc01; - float v_rco111 = v_rc11*obin, v_rco110 = v_rc11 - v_rco111; - float v_rco101 = v_rc10*obin, v_rco100 = v_rc10 - v_rco101; - float v_rco011 = v_rc01*obin, v_rco010 = v_rc01 - v_rco011; - float v_rco001 = v_rc00*obin, v_rco000 = v_rc00 - v_rco001; - - int idx = ((r0+1)*(d+2) + c0+1)*(n+2) + o0; - hist[idx] += v_rco000; - hist[idx+1] += v_rco001; - hist[idx+(n+2)] += v_rco010; - hist[idx+(n+3)] += v_rco011; - hist[idx+(d+2)*(n+2)] += v_rco100; - hist[idx+(d+2)*(n+2)+1] += v_rco101; - hist[idx+(d+3)*(n+2)] += v_rco110; - hist[idx+(d+3)*(n+2)+1] += v_rco111; - } - - // finalize histogram, since the orientation histograms are circular - for( i = 0; i < d; i++ ) - for( j = 0; j < d; j++ ) - { - int idx = ((i+1)*(d+2) + (j+1))*(n+2); - hist[idx] += hist[idx+n]; - hist[idx+1] += hist[idx+n+1]; - for( k = 0; k < n; k++ ) - dst[(i*d + j)*n + k] = hist[idx+k]; - } - // copy histogram to the descriptor, - // apply hysteresis thresholding - // and scale the result, so that it can be easily converted - // to byte array - float nrm2 = 0; - len = d*d*n; - for( k = 0; k < len; k++ ) - nrm2 += dst[k]*dst[k]; - float thr = std::sqrt(nrm2)*SIFT_DESCR_MAG_THR; - for( i = 0, nrm2 = 0; i < k; i++ ) - { - float val = std::min(dst[i], thr); - dst[i] = val; - nrm2 += val*val; - } - nrm2 = SIFT_INT_DESCR_FCTR/std::max(std::sqrt(nrm2), FLT_EPSILON); - -#if 1 - for( k = 0; k < len; k++ ) - { - dst[k] = saturate_cast(dst[k]*nrm2); - } -#else - float nrm1 = 0; - for( k = 0; k < len; k++ ) - { - dst[k] *= nrm2; - nrm1 += dst[k]; - } - nrm1 = 1.f/std::max(nrm1, FLT_EPSILON); - for( k = 0; k < len; k++ ) - { - dst[k] = std::sqrt(dst[k] * nrm1);//saturate_cast(std::sqrt(dst[k] * nrm1)*SIFT_INT_DESCR_FCTR); - } -#endif -} - -static void calcDescriptors(const std::vector& gpyr, const std::vector& keypoints, - Mat& descriptors, int nOctaveLayers, int firstOctave ) -{ - int d = SIFT_DESCR_WIDTH, n = SIFT_DESCR_HIST_BINS; - - for( size_t i = 0; i < keypoints.size(); i++ ) - { - KeyPoint kpt = keypoints[i]; - int octave, layer; - float scale; - unpackOctave(kpt, octave, layer, scale); - CV_Assert(octave >= firstOctave && layer <= nOctaveLayers+2); - float size=kpt.size*scale; - Point2f ptf(kpt.pt.x*scale, kpt.pt.y*scale); - const Mat& img = gpyr[(octave - firstOctave)*(nOctaveLayers + 3) + layer]; - - float angle = 360.f - kpt.angle; - if(std::abs(angle - 360.f) < FLT_EPSILON) - angle = 0.f; - calcSIFTDescriptor(img, ptf, angle, size*0.5f, d, n, descriptors.ptr((int)i)); - } -} - -////////////////////////////////////////////////////////////////////////////////////////// - -SIFT::SIFT( int _nfeatures, int _nOctaveLayers, - double _contrastThreshold, double _edgeThreshold, double _sigma ) - : nfeatures(_nfeatures), nOctaveLayers(_nOctaveLayers), - contrastThreshold(_contrastThreshold), edgeThreshold(_edgeThreshold), sigma(_sigma) -{ -} - -int SIFT::descriptorSize() const -{ - return SIFT_DESCR_WIDTH*SIFT_DESCR_WIDTH*SIFT_DESCR_HIST_BINS; -} - -int SIFT::descriptorType() const -{ - return CV_32F; -} - -int SIFT::defaultNorm() const -{ - return NORM_L2; -} - - -void SIFT::operator()(InputArray _image, InputArray _mask, - std::vector& keypoints) const -{ - (*this)(_image, _mask, keypoints, noArray()); -} - - -void SIFT::operator()(InputArray _image, InputArray _mask, - std::vector& keypoints, - OutputArray _descriptors, - bool useProvidedKeypoints) const -{ - int firstOctave = -1, actualNOctaves = 0, actualNLayers = 0; - Mat image = _image.getMat(), mask = _mask.getMat(); - - if( image.empty() || image.depth() != CV_8U ) - CV_Error( Error::StsBadArg, "image is empty or has incorrect depth (!=CV_8U)" ); - - if( !mask.empty() && mask.type() != CV_8UC1 ) - CV_Error( Error::StsBadArg, "mask has incorrect type (!=CV_8UC1)" ); - - if( useProvidedKeypoints ) - { - firstOctave = 0; - int maxOctave = INT_MIN; - for( size_t i = 0; i < keypoints.size(); i++ ) - { - int octave, layer; - float scale; - unpackOctave(keypoints[i], octave, layer, scale); - firstOctave = std::min(firstOctave, octave); - maxOctave = std::max(maxOctave, octave); - actualNLayers = std::max(actualNLayers, layer-2); - } - - firstOctave = std::min(firstOctave, 0); - CV_Assert( firstOctave >= -1 && actualNLayers <= nOctaveLayers ); - actualNOctaves = maxOctave - firstOctave + 1; - } - - Mat base = createInitialImage(image, firstOctave < 0, (float)sigma); - std::vector gpyr, dogpyr; - int nOctaves = actualNOctaves > 0 ? actualNOctaves : cvRound(std::log( (double)std::min( base.cols, base.rows ) ) / std::log(2.) - 2) - firstOctave; - - //double t, tf = getTickFrequency(); - //t = (double)getTickCount(); - buildGaussianPyramid(base, gpyr, nOctaves); - buildDoGPyramid(gpyr, dogpyr); - - //t = (double)getTickCount() - t; - //printf("pyramid construction time: %g\n", t*1000./tf); - - if( !useProvidedKeypoints ) - { - //t = (double)getTickCount(); - findScaleSpaceExtrema(gpyr, dogpyr, keypoints); - KeyPointsFilter::removeDuplicated( keypoints ); - - if( nfeatures > 0 ) - KeyPointsFilter::retainBest(keypoints, nfeatures); - //t = (double)getTickCount() - t; - //printf("keypoint detection time: %g\n", t*1000./tf); - - if( firstOctave < 0 ) - for( size_t i = 0; i < keypoints.size(); i++ ) - { - KeyPoint& kpt = keypoints[i]; - float scale = 1.f/(float)(1 << -firstOctave); - kpt.octave = (kpt.octave & ~255) | ((kpt.octave + firstOctave) & 255); - kpt.pt *= scale; - kpt.size *= scale; - } - - if( !mask.empty() ) - KeyPointsFilter::runByPixelsMask( keypoints, mask ); - } - else - { - // filter keypoints by mask - //KeyPointsFilter::runByPixelsMask( keypoints, mask ); - } - - if( _descriptors.needed() ) - { - //t = (double)getTickCount(); - int dsize = descriptorSize(); - _descriptors.create((int)keypoints.size(), dsize, CV_32F); - Mat descriptors = _descriptors.getMat(); - - calcDescriptors(gpyr, keypoints, descriptors, nOctaveLayers, firstOctave); - //t = (double)getTickCount() - t; - //printf("descriptor extraction time: %g\n", t*1000./tf); - } -} - -void SIFT::detectImpl( InputArray image, std::vector& keypoints, InputArray mask) const -{ - (*this)(image.getMat(), mask.getMat(), keypoints, noArray()); -} - -void SIFT::computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - (*this)(image, Mat(), keypoints, descriptors, true); -} - -} diff --git a/modules/nonfree/src/surf.cpp b/modules/nonfree/src/surf.cpp deleted file mode 100644 index 05978e495e..0000000000 --- a/modules/nonfree/src/surf.cpp +++ /dev/null @@ -1,1024 +0,0 @@ -/* Original code has been submitted by Liu Liu. Here is the copyright. ----------------------------------------------------------------------------------- - * An OpenCV Implementation of SURF - * Further Information Refer to "SURF: Speed-Up Robust Feature" - * Author: Liu Liu - * liuliu.1987+opencv@gmail.com - * - * There are still serveral lacks for this experimental implementation: - * 1.The interpolation of sub-pixel mentioned in article was not implemented yet; - * 2.A comparision with original libSurf.so shows that the hessian detector is not a 100% match to their implementation; - * 3.Due to above reasons, I recommanded the original one for study and reuse; - * - * However, the speed of this implementation is something comparable to original one. - * - * Copyright© 2008, Liu Liu 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. - * The name of Contributor may not 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 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. - */ - -/* - The following changes have been made, comparing to the original contribution: - 1. A lot of small optimizations, less memory allocations, got rid of global buffers - 2. Reversed order of cvGetQuadrangleSubPix and cvResize calls; probably less accurate, but much faster - 3. The descriptor computing part (which is most expensive) is threaded using OpenMP - (subpixel-accurate keypoint localization and scale estimation are still TBD) -*/ - -/* -KeyPoint position and scale interpolation has been implemented as described in -the Brown and Lowe paper cited by the SURF paper. - -The sampling step along the x and y axes of the image for the determinant of the -Hessian is now the same for each layer in an octave. While this increases the -computation time, it ensures that a true 3x3x3 neighbourhood exists, with -samples calculated at the same position in the layers above and below. This -results in improved maxima detection and non-maxima suppression, and I think it -is consistent with the description in the SURF paper. - -The wavelet size sampling interval has also been made consistent. The wavelet -size at the first layer of the first octave is now 9 instead of 7. Along with -regular position sampling steps, this makes location and scale interpolation -easy. I think this is consistent with the SURF paper and original -implementation. - -The scaling of the wavelet parameters has been fixed to ensure that the patterns -are symmetric around the centre. Previously the truncation caused by integer -division in the scaling ratio caused a bias towards the top left of the wavelet, -resulting in inconsistent keypoint positions. - -The matrices for the determinant and trace of the Hessian are now reused in each -octave. - -The extraction of the patch of pixels surrounding a keypoint used to build a -descriptor has been simplified. - -KeyPoint descriptor normalisation has been changed from normalising each 4x4 -cell (resulting in a descriptor of magnitude 16) to normalising the entire -descriptor to magnitude 1. - -The default number of octaves has been increased from 3 to 4 to match the -original SURF binary default. The increase in computation time is minimal since -the higher octaves are sampled sparsely. - -The default number of layers per octave has been reduced from 3 to 2, to prevent -redundant calculation of similar sizes in consecutive octaves. This decreases -computation time. The number of features extracted may be less, however the -additional features were mostly redundant. - -The radius of the circle of gradient samples used to assign an orientation has -been increased from 4 to 6 to match the description in the SURF paper. This is -now defined by ORI_RADIUS, and could be made into a parameter. - -The size of the sliding window used in orientation assignment has been reduced -from 120 to 60 degrees to match the description in the SURF paper. This is now -defined by ORI_WIN, and could be made into a parameter. - -Other options like HAAR_SIZE0, HAAR_SIZE_INC, SAMPLE_STEP0, ORI_SEARCH_INC, -ORI_SIGMA and DESC_SIGMA have been separated from the code and documented. -These could also be made into parameters. - -Modifications by Ian Mahon - -*/ -#include "precomp.hpp" -#include "surf.hpp" - -namespace cv -{ - -static const int SURF_ORI_SEARCH_INC = 5; -static const float SURF_ORI_SIGMA = 2.5f; -static const float SURF_DESC_SIGMA = 3.3f; - -// Wavelet size at first layer of first octave. -static const int SURF_HAAR_SIZE0 = 9; - -// Wavelet size increment between layers. This should be an even number, -// such that the wavelet sizes in an octave are either all even or all odd. -// This ensures that when looking for the neighbours of a sample, the layers -// above and below are aligned correctly. -static const int SURF_HAAR_SIZE_INC = 6; - - -struct SurfHF -{ - int p0, p1, p2, p3; - float w; - - SurfHF(): p0(0), p1(0), p2(0), p3(0), w(0) {} -}; - -inline float calcHaarPattern( const int* origin, const SurfHF* f, int n ) -{ - double d = 0; - for( int k = 0; k < n; k++ ) - d += (origin[f[k].p0] + origin[f[k].p3] - origin[f[k].p1] - origin[f[k].p2])*f[k].w; - return (float)d; -} - -static void -resizeHaarPattern( const int src[][5], SurfHF* dst, int n, int oldSize, int newSize, int widthStep ) -{ - float ratio = (float)newSize/oldSize; - for( int k = 0; k < n; k++ ) - { - int dx1 = cvRound( ratio*src[k][0] ); - int dy1 = cvRound( ratio*src[k][1] ); - int dx2 = cvRound( ratio*src[k][2] ); - int dy2 = cvRound( ratio*src[k][3] ); - dst[k].p0 = dy1*widthStep + dx1; - dst[k].p1 = dy2*widthStep + dx1; - dst[k].p2 = dy1*widthStep + dx2; - dst[k].p3 = dy2*widthStep + dx2; - dst[k].w = src[k][4]/((float)(dx2-dx1)*(dy2-dy1)); - } -} - -/* - * Calculate the determinant and trace of the Hessian for a layer of the - * scale-space pyramid - */ -static void calcLayerDetAndTrace( const Mat& sum, int size, int sampleStep, - Mat& det, Mat& trace ) -{ - const int NX=3, NY=3, NXY=4; - const int dx_s[NX][5] = { {0, 2, 3, 7, 1}, {3, 2, 6, 7, -2}, {6, 2, 9, 7, 1} }; - const int dy_s[NY][5] = { {2, 0, 7, 3, 1}, {2, 3, 7, 6, -2}, {2, 6, 7, 9, 1} }; - const int dxy_s[NXY][5] = { {1, 1, 4, 4, 1}, {5, 1, 8, 4, -1}, {1, 5, 4, 8, -1}, {5, 5, 8, 8, 1} }; - - SurfHF Dx[NX], Dy[NY], Dxy[NXY]; - - if( size > sum.rows-1 || size > sum.cols-1 ) - return; - - resizeHaarPattern( dx_s , Dx , NX , 9, size, sum.cols ); - resizeHaarPattern( dy_s , Dy , NY , 9, size, sum.cols ); - resizeHaarPattern( dxy_s, Dxy, NXY, 9, size, sum.cols ); - - /* The integral image 'sum' is one pixel bigger than the source image */ - int samples_i = 1+(sum.rows-1-size)/sampleStep; - int samples_j = 1+(sum.cols-1-size)/sampleStep; - - /* Ignore pixels where some of the kernel is outside the image */ - int margin = (size/2)/sampleStep; - - for( int i = 0; i < samples_i; i++ ) - { - const int* sum_ptr = sum.ptr(i*sampleStep); - float* det_ptr = &det.at(i+margin, margin); - float* trace_ptr = &trace.at(i+margin, margin); - for( int j = 0; j < samples_j; j++ ) - { - float dx = calcHaarPattern( sum_ptr, Dx , 3 ); - float dy = calcHaarPattern( sum_ptr, Dy , 3 ); - float dxy = calcHaarPattern( sum_ptr, Dxy, 4 ); - sum_ptr += sampleStep; - det_ptr[j] = dx*dy - 0.81f*dxy*dxy; - trace_ptr[j] = dx + dy; - } - } -} - - -/* - * Maxima location interpolation as described in "Invariant Features from - * Interest Point Groups" by Matthew Brown and David Lowe. This is performed by - * fitting a 3D quadratic to a set of neighbouring samples. - * - * The gradient vector and Hessian matrix at the initial keypoint location are - * approximated using central differences. The linear system Ax = b is then - * solved, where A is the Hessian, b is the negative gradient, and x is the - * offset of the interpolated maxima coordinates from the initial estimate. - * This is equivalent to an iteration of Netwon's optimisation algorithm. - * - * N9 contains the samples in the 3x3x3 neighbourhood of the maxima - * dx is the sampling step in x - * dy is the sampling step in y - * ds is the sampling step in size - * point contains the keypoint coordinates and scale to be modified - * - * Return value is 1 if interpolation was successful, 0 on failure. - */ -static int -interpolateKeypoint( float N9[3][9], int dx, int dy, int ds, KeyPoint& kpt ) -{ - Vec3f b(-(N9[1][5]-N9[1][3])/2, // Negative 1st deriv with respect to x - -(N9[1][7]-N9[1][1])/2, // Negative 1st deriv with respect to y - -(N9[2][4]-N9[0][4])/2); // Negative 1st deriv with respect to s - - Matx33f A( - N9[1][3]-2*N9[1][4]+N9[1][5], // 2nd deriv x, x - (N9[1][8]-N9[1][6]-N9[1][2]+N9[1][0])/4, // 2nd deriv x, y - (N9[2][5]-N9[2][3]-N9[0][5]+N9[0][3])/4, // 2nd deriv x, s - (N9[1][8]-N9[1][6]-N9[1][2]+N9[1][0])/4, // 2nd deriv x, y - N9[1][1]-2*N9[1][4]+N9[1][7], // 2nd deriv y, y - (N9[2][7]-N9[2][1]-N9[0][7]+N9[0][1])/4, // 2nd deriv y, s - (N9[2][5]-N9[2][3]-N9[0][5]+N9[0][3])/4, // 2nd deriv x, s - (N9[2][7]-N9[2][1]-N9[0][7]+N9[0][1])/4, // 2nd deriv y, s - N9[0][4]-2*N9[1][4]+N9[2][4]); // 2nd deriv s, s - - Vec3f x = A.solve(b, DECOMP_LU); - - bool ok = (x[0] != 0 || x[1] != 0 || x[2] != 0) && - std::abs(x[0]) <= 1 && std::abs(x[1]) <= 1 && std::abs(x[2]) <= 1; - - if( ok ) - { - kpt.pt.x += x[0]*dx; - kpt.pt.y += x[1]*dy; - kpt.size = (float)cvRound( kpt.size + x[2]*ds ); - } - return ok; -} - -// Multi-threaded construction of the scale-space pyramid -struct SURFBuildInvoker : ParallelLoopBody -{ - SURFBuildInvoker( const Mat& _sum, const std::vector& _sizes, - const std::vector& _sampleSteps, - std::vector& _dets, std::vector& _traces ) - { - sum = &_sum; - sizes = &_sizes; - sampleSteps = &_sampleSteps; - dets = &_dets; - traces = &_traces; - } - - void operator()(const Range& range) const - { - for( int i=range.start; i *sizes; - const std::vector *sampleSteps; - std::vector* dets; - std::vector* traces; -}; - -// Multi-threaded search of the scale-space pyramid for keypoints -struct SURFFindInvoker : ParallelLoopBody -{ - SURFFindInvoker( const Mat& _sum, const Mat& _mask_sum, - const std::vector& _dets, const std::vector& _traces, - const std::vector& _sizes, const std::vector& _sampleSteps, - const std::vector& _middleIndices, std::vector& _keypoints, - int _nOctaveLayers, float _hessianThreshold ) - { - sum = &_sum; - mask_sum = &_mask_sum; - dets = &_dets; - traces = &_traces; - sizes = &_sizes; - sampleSteps = &_sampleSteps; - middleIndices = &_middleIndices; - keypoints = &_keypoints; - nOctaveLayers = _nOctaveLayers; - hessianThreshold = _hessianThreshold; - } - - static void findMaximaInLayer( const Mat& sum, const Mat& mask_sum, - const std::vector& dets, const std::vector& traces, - const std::vector& sizes, std::vector& keypoints, - int octave, int layer, float hessianThreshold, int sampleStep ); - - void operator()(const Range& range) const - { - for( int i=range.start; i* dets; - const std::vector* traces; - const std::vector* sizes; - const std::vector* sampleSteps; - const std::vector* middleIndices; - std::vector* keypoints; - int nOctaveLayers; - float hessianThreshold; - - static Mutex findMaximaInLayer_m; -}; - -Mutex SURFFindInvoker::findMaximaInLayer_m; - - -/* - * Find the maxima in the determinant of the Hessian in a layer of the - * scale-space pyramid - */ -void SURFFindInvoker::findMaximaInLayer( const Mat& sum, const Mat& mask_sum, - const std::vector& dets, const std::vector& traces, - const std::vector& sizes, std::vector& keypoints, - int octave, int layer, float hessianThreshold, int sampleStep ) -{ - // Wavelet Data - const int NM=1; - const int dm[NM][5] = { {0, 0, 9, 9, 1} }; - SurfHF Dm; - - int size = sizes[layer]; - - // The integral image 'sum' is one pixel bigger than the source image - int layer_rows = (sum.rows-1)/sampleStep; - int layer_cols = (sum.cols-1)/sampleStep; - - // Ignore pixels without a 3x3x3 neighbourhood in the layer above - int margin = (sizes[layer+1]/2)/sampleStep+1; - - if( !mask_sum.empty() ) - resizeHaarPattern( dm, &Dm, NM, 9, size, mask_sum.cols ); - - int step = (int)(dets[layer].step/dets[layer].elemSize()); - - for( int i = margin; i < layer_rows - margin; i++ ) - { - const float* det_ptr = dets[layer].ptr(i); - const float* trace_ptr = traces[layer].ptr(i); - for( int j = margin; j < layer_cols-margin; j++ ) - { - float val0 = det_ptr[j]; - if( val0 > hessianThreshold ) - { - /* Coordinates for the start of the wavelet in the sum image. There - is some integer division involved, so don't try to simplify this - (cancel out sampleStep) without checking the result is the same */ - int sum_i = sampleStep*(i-(size/2)/sampleStep); - int sum_j = sampleStep*(j-(size/2)/sampleStep); - - /* The 3x3x3 neighbouring samples around the maxima. - The maxima is included at N9[1][4] */ - - const float *det1 = &dets[layer-1].at(i, j); - const float *det2 = &dets[layer].at(i, j); - const float *det3 = &dets[layer+1].at(i, j); - float N9[3][9] = { { det1[-step-1], det1[-step], det1[-step+1], - det1[-1] , det1[0] , det1[1], - det1[step-1] , det1[step] , det1[step+1] }, - { det2[-step-1], det2[-step], det2[-step+1], - det2[-1] , det2[0] , det2[1], - det2[step-1] , det2[step] , det2[step+1] }, - { det3[-step-1], det3[-step], det3[-step+1], - det3[-1] , det3[0] , det3[1], - det3[step-1] , det3[step] , det3[step+1] } }; - - /* Check the mask - why not just check the mask at the center of the wavelet? */ - if( !mask_sum.empty() ) - { - const int* mask_ptr = &mask_sum.at(sum_i, sum_j); - float mval = calcHaarPattern( mask_ptr, &Dm, 1 ); - if( mval < 0.5 ) - continue; - } - - /* Non-maxima suppression. val0 is at N9[1][4]*/ - if( val0 > N9[0][0] && val0 > N9[0][1] && val0 > N9[0][2] && - val0 > N9[0][3] && val0 > N9[0][4] && val0 > N9[0][5] && - val0 > N9[0][6] && val0 > N9[0][7] && val0 > N9[0][8] && - val0 > N9[1][0] && val0 > N9[1][1] && val0 > N9[1][2] && - val0 > N9[1][3] && val0 > N9[1][5] && - val0 > N9[1][6] && val0 > N9[1][7] && val0 > N9[1][8] && - val0 > N9[2][0] && val0 > N9[2][1] && val0 > N9[2][2] && - val0 > N9[2][3] && val0 > N9[2][4] && val0 > N9[2][5] && - val0 > N9[2][6] && val0 > N9[2][7] && val0 > N9[2][8] ) - { - /* Calculate the wavelet center coordinates for the maxima */ - float center_i = sum_i + (size-1)*0.5f; - float center_j = sum_j + (size-1)*0.5f; - - KeyPoint kpt( center_j, center_i, (float)sizes[layer], - -1, val0, octave, (trace_ptr[j] > 0) - (trace_ptr[j] < 0) ); - - /* Interpolate maxima location within the 3x3x3 neighbourhood */ - int ds = size - sizes[layer-1]; - int interp_ok = interpolateKeypoint( N9, sampleStep, sampleStep, ds, kpt ); - - /* Sometimes the interpolation step gives a negative size etc. */ - if( interp_ok ) - { - /*printf( "KeyPoint %f %f %d\n", point.pt.x, point.pt.y, point.size );*/ - cv::AutoLock lock(findMaximaInLayer_m); - keypoints.push_back(kpt); - } - } - } - } - } -} - -struct KeypointGreater -{ - inline bool operator()(const KeyPoint& kp1, const KeyPoint& kp2) const - { - if(kp1.response > kp2.response) return true; - if(kp1.response < kp2.response) return false; - if(kp1.size > kp2.size) return true; - if(kp1.size < kp2.size) return false; - if(kp1.octave > kp2.octave) return true; - if(kp1.octave < kp2.octave) return false; - if(kp1.pt.y < kp2.pt.y) return false; - if(kp1.pt.y > kp2.pt.y) return true; - return kp1.pt.x < kp2.pt.x; - } -}; - - -static void fastHessianDetector( const Mat& sum, const Mat& mask_sum, std::vector& keypoints, - int nOctaves, int nOctaveLayers, float hessianThreshold ) -{ - /* Sampling step along image x and y axes at first octave. This is doubled - for each additional octave. WARNING: Increasing this improves speed, - however keypoint extraction becomes unreliable. */ - const int SAMPLE_STEP0 = 1; - - int nTotalLayers = (nOctaveLayers+2)*nOctaves; - int nMiddleLayers = nOctaveLayers*nOctaves; - - std::vector dets(nTotalLayers); - std::vector traces(nTotalLayers); - std::vector sizes(nTotalLayers); - std::vector sampleSteps(nTotalLayers); - std::vector middleIndices(nMiddleLayers); - - keypoints.clear(); - - // Allocate space and calculate properties of each layer - int index = 0, middleIndex = 0, step = SAMPLE_STEP0; - - for( int octave = 0; octave < nOctaves; octave++ ) - { - for( int layer = 0; layer < nOctaveLayers+2; layer++ ) - { - /* The integral image sum is one pixel bigger than the source image*/ - dets[index].create( (sum.rows-1)/step, (sum.cols-1)/step, CV_32F ); - traces[index].create( (sum.rows-1)/step, (sum.cols-1)/step, CV_32F ); - sizes[index] = (SURF_HAAR_SIZE0 + SURF_HAAR_SIZE_INC*layer) << octave; - sampleSteps[index] = step; - - if( 0 < layer && layer <= nOctaveLayers ) - middleIndices[middleIndex++] = index; - index++; - } - step *= 2; - } - - // Calculate hessian determinant and trace samples in each layer - parallel_for_( Range(0, nTotalLayers), - SURFBuildInvoker(sum, sizes, sampleSteps, dets, traces) ); - - // Find maxima in the determinant of the hessian - parallel_for_( Range(0, nMiddleLayers), - SURFFindInvoker(sum, mask_sum, dets, traces, sizes, - sampleSteps, middleIndices, keypoints, - nOctaveLayers, hessianThreshold) ); - - std::sort(keypoints.begin(), keypoints.end(), KeypointGreater()); -} - - -struct SURFInvoker : ParallelLoopBody -{ - enum { ORI_RADIUS = 6, ORI_WIN = 60, PATCH_SZ = 20 }; - - SURFInvoker( const Mat& _img, const Mat& _sum, - std::vector& _keypoints, Mat& _descriptors, - bool _extended, bool _upright ) - { - keypoints = &_keypoints; - descriptors = &_descriptors; - img = &_img; - sum = &_sum; - extended = _extended; - upright = _upright; - - // Simple bound for number of grid points in circle of radius ORI_RADIUS - const int nOriSampleBound = (2*ORI_RADIUS+1)*(2*ORI_RADIUS+1); - - // Allocate arrays - apt.resize(nOriSampleBound); - aptw.resize(nOriSampleBound); - DW.resize(PATCH_SZ*PATCH_SZ); - - /* Coordinates and weights of samples used to calculate orientation */ - Mat G_ori = getGaussianKernel( 2*ORI_RADIUS+1, SURF_ORI_SIGMA, CV_32F ); - nOriSamples = 0; - for( int i = -ORI_RADIUS; i <= ORI_RADIUS; i++ ) - { - for( int j = -ORI_RADIUS; j <= ORI_RADIUS; j++ ) - { - if( i*i + j*j <= ORI_RADIUS*ORI_RADIUS ) - { - apt[nOriSamples] = Point(i,j); - aptw[nOriSamples++] = G_ori.at(i+ORI_RADIUS,0) * G_ori.at(j+ORI_RADIUS,0); - } - } - } - CV_Assert( nOriSamples <= nOriSampleBound ); - - /* Gaussian used to weight descriptor samples */ - Mat G_desc = getGaussianKernel( PATCH_SZ, SURF_DESC_SIGMA, CV_32F ); - for( int i = 0; i < PATCH_SZ; i++ ) - { - for( int j = 0; j < PATCH_SZ; j++ ) - DW[i*PATCH_SZ+j] = G_desc.at(i,0) * G_desc.at(j,0); - } - } - - void operator()(const Range& range) const - { - /* X and Y gradient wavelet data */ - const int NX=2, NY=2; - const int dx_s[NX][5] = {{0, 0, 2, 4, -1}, {2, 0, 4, 4, 1}}; - const int dy_s[NY][5] = {{0, 0, 4, 2, 1}, {0, 2, 4, 4, -1}}; - - // Optimisation is better using nOriSampleBound than nOriSamples for - // array lengths. Maybe because it is a constant known at compile time - const int nOriSampleBound =(2*ORI_RADIUS+1)*(2*ORI_RADIUS+1); - - float X[nOriSampleBound], Y[nOriSampleBound], angle[nOriSampleBound]; - uchar PATCH[PATCH_SZ+1][PATCH_SZ+1]; - float DX[PATCH_SZ][PATCH_SZ], DY[PATCH_SZ][PATCH_SZ]; - Mat _patch(PATCH_SZ+1, PATCH_SZ+1, CV_8U, PATCH); - - int dsize = extended ? 128 : 64; - - int k, k1 = range.start, k2 = range.end; - float maxSize = 0; - for( k = k1; k < k2; k++ ) - { - maxSize = std::max(maxSize, (*keypoints)[k].size); - } - int imaxSize = std::max(cvCeil((PATCH_SZ+1)*maxSize*1.2f/9.0f), 1); - cv::AutoBuffer winbuf(imaxSize*imaxSize); - - for( k = k1; k < k2; k++ ) - { - int i, j, kk, nangle; - float* vec; - SurfHF dx_t[NX], dy_t[NY]; - KeyPoint& kp = (*keypoints)[k]; - float size = kp.size; - Point2f center = kp.pt; - /* The sampling intervals and wavelet sized for selecting an orientation - and building the keypoint descriptor are defined relative to 's' */ - float s = size*1.2f/9.0f; - /* To find the dominant orientation, the gradients in x and y are - sampled in a circle of radius 6s using wavelets of size 4s. - We ensure the gradient wavelet size is even to ensure the - wavelet pattern is balanced and symmetric around its center */ - int grad_wav_size = 2*cvRound( 2*s ); - if( sum->rows < grad_wav_size || sum->cols < grad_wav_size ) - { - /* when grad_wav_size is too big, - * the sampling of gradient will be meaningless - * mark keypoint for deletion. */ - kp.size = -1; - continue; - } - - float descriptor_dir = 360.f - 90.f; - if (upright == 0) - { - resizeHaarPattern( dx_s, dx_t, NX, 4, grad_wav_size, sum->cols ); - resizeHaarPattern( dy_s, dy_t, NY, 4, grad_wav_size, sum->cols ); - for( kk = 0, nangle = 0; kk < nOriSamples; kk++ ) - { - int x = cvRound( center.x + apt[kk].x*s - (float)(grad_wav_size-1)/2 ); - int y = cvRound( center.y + apt[kk].y*s - (float)(grad_wav_size-1)/2 ); - if( y < 0 || y >= sum->rows - grad_wav_size || - x < 0 || x >= sum->cols - grad_wav_size ) - continue; - const int* ptr = &sum->at(y, x); - float vx = calcHaarPattern( ptr, dx_t, 2 ); - float vy = calcHaarPattern( ptr, dy_t, 2 ); - X[nangle] = vx*aptw[kk]; - Y[nangle] = vy*aptw[kk]; - nangle++; - } - if( nangle == 0 ) - { - // No gradient could be sampled because the keypoint is too - // near too one or more of the sides of the image. As we - // therefore cannot find a dominant direction, we skip this - // keypoint and mark it for later deletion from the sequence. - kp.size = -1; - continue; - } - - phase( Mat(1, nangle, CV_32F, X), Mat(1, nangle, CV_32F, Y), Mat(1, nangle, CV_32F, angle), true ); - - float bestx = 0, besty = 0, descriptor_mod = 0; - for( i = 0; i < 360; i += SURF_ORI_SEARCH_INC ) - { - float sumx = 0, sumy = 0, temp_mod; - for( j = 0; j < nangle; j++ ) - { - int d = std::abs(cvRound(angle[j]) - i); - if( d < ORI_WIN/2 || d > 360-ORI_WIN/2 ) - { - sumx += X[j]; - sumy += Y[j]; - } - } - temp_mod = sumx*sumx + sumy*sumy; - if( temp_mod > descriptor_mod ) - { - descriptor_mod = temp_mod; - bestx = sumx; - besty = sumy; - } - } - descriptor_dir = fastAtan2( -besty, bestx ); - } - kp.angle = descriptor_dir; - if( !descriptors || !descriptors->data ) - continue; - - /* Extract a window of pixels around the keypoint of size 20s */ - int win_size = (int)((PATCH_SZ+1)*s); - CV_Assert( imaxSize >= win_size ); - Mat win(win_size, win_size, CV_8U, winbuf); - - if( !upright ) - { - descriptor_dir *= (float)(CV_PI/180); - float sin_dir = -std::sin(descriptor_dir); - float cos_dir = std::cos(descriptor_dir); - - /* Subpixel interpolation version (slower). Subpixel not required since - the pixels will all get averaged when we scale down to 20 pixels */ - /* - float w[] = { cos_dir, sin_dir, center.x, - -sin_dir, cos_dir , center.y }; - CvMat W = cvMat(2, 3, CV_32F, w); - cvGetQuadrangleSubPix( img, &win, &W ); - */ - - float win_offset = -(float)(win_size-1)/2; - float start_x = center.x + win_offset*cos_dir + win_offset*sin_dir; - float start_y = center.y - win_offset*sin_dir + win_offset*cos_dir; - uchar* WIN = win.data; -#if 0 - // Nearest neighbour version (faster) - for( i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir ) - { - float pixel_x = start_x; - float pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir ) - { - int x = std::min(std::max(cvRound(pixel_x), 0), img->cols-1); - int y = std::min(std::max(cvRound(pixel_y), 0), img->rows-1); - WIN[i*win_size + j] = img->at(y, x); - } - } -#else - int ncols1 = img->cols-1, nrows1 = img->rows-1; - size_t imgstep = img->step; - for( i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir ) - { - double pixel_x = start_x; - double pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir ) - { - int ix = cvFloor(pixel_x), iy = cvFloor(pixel_y); - if( (unsigned)ix < (unsigned)ncols1 && - (unsigned)iy < (unsigned)nrows1 ) - { - float a = (float)(pixel_x - ix), b = (float)(pixel_y - iy); - const uchar* imgptr = &img->at(iy, ix); - WIN[i*win_size + j] = (uchar) - cvRound(imgptr[0]*(1.f - a)*(1.f - b) + - imgptr[1]*a*(1.f - b) + - imgptr[imgstep]*(1.f - a)*b + - imgptr[imgstep+1]*a*b); - } - else - { - int x = std::min(std::max(cvRound(pixel_x), 0), ncols1); - int y = std::min(std::max(cvRound(pixel_y), 0), nrows1); - WIN[i*win_size + j] = img->at(y, x); - } - } - } -#endif - } - else - { - // extract rect - slightly optimized version of the code above - // TODO: find faster code, as this is simply an extract rect operation, - // e.g. by using cvGetSubRect, problem is the border processing - // descriptor_dir == 90 grad - // sin_dir == 1 - // cos_dir == 0 - - float win_offset = -(float)(win_size-1)/2; - int start_x = cvRound(center.x + win_offset); - int start_y = cvRound(center.y - win_offset); - uchar* WIN = win.data; - for( i = 0; i < win_size; i++, start_x++ ) - { - int pixel_x = start_x; - int pixel_y = start_y; - for( j = 0; j < win_size; j++, pixel_y-- ) - { - int x = MAX( pixel_x, 0 ); - int y = MAX( pixel_y, 0 ); - x = MIN( x, img->cols-1 ); - y = MIN( y, img->rows-1 ); - WIN[i*win_size + j] = img->at(y, x); - } - } - } - // Scale the window to size PATCH_SZ so each pixel's size is s. This - // makes calculating the gradients with wavelets of size 2s easy - resize(win, _patch, _patch.size(), 0, 0, INTER_AREA); - - // Calculate gradients in x and y with wavelets of size 2s - for( i = 0; i < PATCH_SZ; i++ ) - for( j = 0; j < PATCH_SZ; j++ ) - { - float dw = DW[i*PATCH_SZ + j]; - float vx = (PATCH[i][j+1] - PATCH[i][j] + PATCH[i+1][j+1] - PATCH[i+1][j])*dw; - float vy = (PATCH[i+1][j] - PATCH[i][j] + PATCH[i+1][j+1] - PATCH[i][j+1])*dw; - DX[i][j] = vx; - DY[i][j] = vy; - } - - // Construct the descriptor - vec = descriptors->ptr(k); - for( kk = 0; kk < dsize; kk++ ) - vec[kk] = 0; - double square_mag = 0; - if( extended ) - { - // 128-bin descriptor - for( i = 0; i < 4; i++ ) - for( j = 0; j < 4; j++ ) - { - for(int y = i*5; y < i*5+5; y++ ) - { - for(int x = j*5; x < j*5+5; x++ ) - { - float tx = DX[y][x], ty = DY[y][x]; - if( ty >= 0 ) - { - vec[0] += tx; - vec[1] += (float)fabs(tx); - } else { - vec[2] += tx; - vec[3] += (float)fabs(tx); - } - if ( tx >= 0 ) - { - vec[4] += ty; - vec[5] += (float)fabs(ty); - } else { - vec[6] += ty; - vec[7] += (float)fabs(ty); - } - } - } - for( kk = 0; kk < 8; kk++ ) - square_mag += vec[kk]*vec[kk]; - vec += 8; - } - } - else - { - // 64-bin descriptor - for( i = 0; i < 4; i++ ) - for( j = 0; j < 4; j++ ) - { - for(int y = i*5; y < i*5+5; y++ ) - { - for(int x = j*5; x < j*5+5; x++ ) - { - float tx = DX[y][x], ty = DY[y][x]; - vec[0] += tx; vec[1] += ty; - vec[2] += (float)fabs(tx); vec[3] += (float)fabs(ty); - } - } - for( kk = 0; kk < 4; kk++ ) - square_mag += vec[kk]*vec[kk]; - vec+=4; - } - } - - // unit vector is essential for contrast invariance - vec = descriptors->ptr(k); - float scale = (float)(1./(std::sqrt(square_mag) + DBL_EPSILON)); - for( kk = 0; kk < dsize; kk++ ) - vec[kk] *= scale; - } - } - - // Parameters - const Mat* img; - const Mat* sum; - std::vector* keypoints; - Mat* descriptors; - bool extended; - bool upright; - - // Pre-calculated values - int nOriSamples; - std::vector apt; - std::vector aptw; - std::vector DW; -}; - - -SURF::SURF() -{ - hessianThreshold = 100; - extended = false; - upright = false; - nOctaves = 4; - nOctaveLayers = 3; -} - -SURF::SURF(double _threshold, int _nOctaves, int _nOctaveLayers, bool _extended, bool _upright) -{ - hessianThreshold = _threshold; - extended = _extended; - upright = _upright; - nOctaves = _nOctaves; - nOctaveLayers = _nOctaveLayers; -} - -int SURF::descriptorSize() const { return extended ? 128 : 64; } -int SURF::descriptorType() const { return CV_32F; } -int SURF::defaultNorm() const { return NORM_L2; } - -void SURF::operator()(InputArray imgarg, InputArray maskarg, - CV_OUT std::vector& keypoints) const -{ - (*this)(imgarg, maskarg, keypoints, noArray(), false); -} - -void SURF::operator()(InputArray _img, InputArray _mask, - CV_OUT std::vector& keypoints, - OutputArray _descriptors, - bool useProvidedKeypoints) const -{ - int imgtype = _img.type(), imgcn = CV_MAT_CN(imgtype); - bool doDescriptors = _descriptors.needed(); - - CV_Assert(!_img.empty() && CV_MAT_DEPTH(imgtype) == CV_8U && (imgcn == 1 || imgcn == 3 || imgcn == 4)); - CV_Assert(_descriptors.needed() || !useProvidedKeypoints); - - if( ocl::useOpenCL() ) - { - SURF_OCL ocl_surf; - UMat gpu_kpt; - bool ok = ocl_surf.init(this); - - if( ok ) - { - if( !_descriptors.needed() ) - { - ok = ocl_surf.detect(_img, _mask, gpu_kpt); - } - else - { - if(useProvidedKeypoints) - ocl_surf.uploadKeypoints(keypoints, gpu_kpt); - ok = ocl_surf.detectAndCompute(_img, _mask, gpu_kpt, _descriptors, useProvidedKeypoints); - } - } - if( ok ) - { - if(!useProvidedKeypoints) - ocl_surf.downloadKeypoints(gpu_kpt, keypoints); - return; - } - } - - Mat img = _img.getMat(), mask = _mask.getMat(), mask1, sum, msum; - - if( imgcn > 1 ) - cvtColor(img, img, COLOR_BGR2GRAY); - - CV_Assert(mask.empty() || (mask.type() == CV_8U && mask.size() == img.size())); - CV_Assert(hessianThreshold >= 0); - CV_Assert(nOctaves > 0); - CV_Assert(nOctaveLayers > 0); - - integral(img, sum, CV_32S); - - // Compute keypoints only if we are not asked for evaluating the descriptors are some given locations: - if( !useProvidedKeypoints ) - { - if( !mask.empty() ) - { - cv::min(mask, 1, mask1); - integral(mask1, msum, CV_32S); - } - fastHessianDetector( sum, msum, keypoints, nOctaves, nOctaveLayers, (float)hessianThreshold ); - } - - int i, j, N = (int)keypoints.size(); - if( N > 0 ) - { - Mat descriptors; - bool _1d = false; - int dcols = extended ? 128 : 64; - size_t dsize = dcols*sizeof(float); - - if( doDescriptors ) - { - _1d = _descriptors.kind() == _InputArray::STD_VECTOR && _descriptors.type() == CV_32F; - if( _1d ) - { - _descriptors.create(N*dcols, 1, CV_32F); - descriptors = _descriptors.getMat().reshape(1, N); - } - else - { - _descriptors.create(N, dcols, CV_32F); - descriptors = _descriptors.getMat(); - } - } - - // we call SURFInvoker in any case, even if we do not need descriptors, - // since it computes orientation of each feature. - parallel_for_(Range(0, N), SURFInvoker(img, sum, keypoints, descriptors, extended, upright) ); - - // remove keypoints that were marked for deletion - for( i = j = 0; i < N; i++ ) - { - if( keypoints[i].size > 0 ) - { - if( i > j ) - { - keypoints[j] = keypoints[i]; - if( doDescriptors ) - memcpy( descriptors.ptr(j), descriptors.ptr(i), dsize); - } - j++; - } - } - if( N > j ) - { - N = j; - keypoints.resize(N); - if( doDescriptors ) - { - Mat d = descriptors.rowRange(0, N); - if( _1d ) - d = d.reshape(1, N*dcols); - d.copyTo(_descriptors); - } - } - } -} - - -void SURF::detectImpl( InputArray image, std::vector& keypoints, InputArray mask) const -{ - (*this)(image.getMat(), mask.getMat(), keypoints, noArray(), false); -} - -void SURF::computeImpl( InputArray image, std::vector& keypoints, OutputArray descriptors) const -{ - (*this)(image, Mat(), keypoints, descriptors, true); -} - -} diff --git a/modules/nonfree/src/surf.cuda.cpp b/modules/nonfree/src/surf.cuda.cpp deleted file mode 100644 index 4089b506b3..0000000000 --- a/modules/nonfree/src/surf.cuda.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "precomp.hpp" - -using namespace cv; -using namespace cv::cuda; - -#if !defined (HAVE_CUDA) || !defined (HAVE_OPENCV_CUDAARITHM) - -cv::cuda::SURF_CUDA::SURF_CUDA() { throw_no_cuda(); } -cv::cuda::SURF_CUDA::SURF_CUDA(double, int, int, bool, float, bool) { throw_no_cuda(); } -int cv::cuda::SURF_CUDA::descriptorSize() const { throw_no_cuda(); return 0;} -void cv::cuda::SURF_CUDA::uploadKeypoints(const std::vector&, GpuMat&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::downloadKeypoints(const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::downloadDescriptors(const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, GpuMat&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, GpuMat&, GpuMat&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&, GpuMat&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::operator()(const GpuMat&, const GpuMat&, std::vector&, std::vector&, bool) { throw_no_cuda(); } -void cv::cuda::SURF_CUDA::releaseMemory() { throw_no_cuda(); } - -#else // !defined (HAVE_CUDA) - -namespace cv { namespace cuda { namespace device -{ - namespace surf - { - void loadGlobalConstants(int maxCandidates, int maxFeatures, int img_rows, int img_cols, int nOctaveLayers, float hessianThreshold); - void loadOctaveConstants(int octave, int layer_rows, int layer_cols); - - void bindImgTex(PtrStepSzb img); - size_t bindSumTex(PtrStepSz sum); - size_t bindMaskSumTex(PtrStepSz maskSum); - - void icvCalcLayerDetAndTrace_gpu(const PtrStepf& det, const PtrStepf& trace, int img_rows, int img_cols, - int octave, int nOctaveLayer); - - void icvFindMaximaInLayer_gpu(const PtrStepf& det, const PtrStepf& trace, int4* maxPosBuffer, unsigned int* maxCounter, - int img_rows, int img_cols, int octave, bool use_mask, int nLayers); - - void icvInterpolateKeypoint_gpu(const PtrStepf& det, const int4* maxPosBuffer, unsigned int maxCounter, - float* featureX, float* featureY, int* featureLaplacian, int* featureOctave, float* featureSize, float* featureHessian, - unsigned int* featureCounter); - - void icvCalcOrientation_gpu(const float* featureX, const float* featureY, const float* featureSize, float* featureDir, int nFeatures); - - void compute_descriptors_gpu(PtrStepSz descriptors, const float* featureX, const float* featureY, const float* featureSize, const float* featureDir, int nFeatures); - } -}}} - -using namespace ::cv::cuda::device::surf; - -namespace -{ - int calcSize(int octave, int layer) - { - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbours of a sample, the layers - - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; - } - - class SURF_CUDA_Invoker - { - public: - SURF_CUDA_Invoker(SURF_CUDA& surf, const GpuMat& img, const GpuMat& mask) : - surf_(surf), - img_cols(img.cols), img_rows(img.rows), - use_mask(!mask.empty()) - { - CV_Assert(!img.empty() && img.type() == CV_8UC1); - CV_Assert(mask.empty() || (mask.size() == img.size() && mask.type() == CV_8UC1)); - CV_Assert(surf_.nOctaves > 0 && surf_.nOctaveLayers > 0); - - const int min_size = calcSize(surf_.nOctaves - 1, 0); - CV_Assert(img_rows - min_size >= 0); - CV_Assert(img_cols - min_size >= 0); - - const int layer_rows = img_rows >> (surf_.nOctaves - 1); - const int layer_cols = img_cols >> (surf_.nOctaves - 1); - const int min_margin = ((calcSize((surf_.nOctaves - 1), 2) >> 1) >> (surf_.nOctaves - 1)) + 1; - CV_Assert(layer_rows - 2 * min_margin > 0); - CV_Assert(layer_cols - 2 * min_margin > 0); - - maxFeatures = std::min(static_cast(img.size().area() * surf.keypointsRatio), 65535); - maxCandidates = std::min(static_cast(1.5 * maxFeatures), 65535); - - CV_Assert(maxFeatures > 0); - - counters.create(1, surf_.nOctaves + 1, CV_32SC1); - counters.setTo(Scalar::all(0)); - - loadGlobalConstants(maxCandidates, maxFeatures, img_rows, img_cols, surf_.nOctaveLayers, static_cast(surf_.hessianThreshold)); - - bindImgTex(img); - - cuda::integral(img, surf_.sum, surf_.intBuffer); - sumOffset = bindSumTex(surf_.sum); - - if (use_mask) - { - cuda::min(mask, 1.0, surf_.mask1); - cuda::integral(surf_.mask1, surf_.maskSum, surf_.intBuffer); - maskOffset = bindMaskSumTex(surf_.maskSum); - } - } - - void detectKeypoints(GpuMat& keypoints) - { - ensureSizeIsEnough(img_rows * (surf_.nOctaveLayers + 2), img_cols, CV_32FC1, surf_.det); - ensureSizeIsEnough(img_rows * (surf_.nOctaveLayers + 2), img_cols, CV_32FC1, surf_.trace); - - ensureSizeIsEnough(1, maxCandidates, CV_32SC4, surf_.maxPosBuffer); - ensureSizeIsEnough(SURF_CUDA::ROWS_COUNT, maxFeatures, CV_32FC1, keypoints); - keypoints.setTo(Scalar::all(0)); - - for (int octave = 0; octave < surf_.nOctaves; ++octave) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - - loadOctaveConstants(octave, layer_rows, layer_cols); - - icvCalcLayerDetAndTrace_gpu(surf_.det, surf_.trace, img_rows, img_cols, octave, surf_.nOctaveLayers); - - icvFindMaximaInLayer_gpu(surf_.det, surf_.trace, surf_.maxPosBuffer.ptr(), counters.ptr() + 1 + octave, - img_rows, img_cols, octave, use_mask, surf_.nOctaveLayers); - - unsigned int maxCounter; - cudaSafeCall( cudaMemcpy(&maxCounter, counters.ptr() + 1 + octave, sizeof(unsigned int), cudaMemcpyDeviceToHost) ); - maxCounter = std::min(maxCounter, static_cast(maxCandidates)); - - if (maxCounter > 0) - { - icvInterpolateKeypoint_gpu(surf_.det, surf_.maxPosBuffer.ptr(), maxCounter, - keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::LAPLACIAN_ROW), keypoints.ptr(SURF_CUDA::OCTAVE_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::HESSIAN_ROW), - counters.ptr()); - } - } - unsigned int featureCounter; - cudaSafeCall( cudaMemcpy(&featureCounter, counters.ptr(), sizeof(unsigned int), cudaMemcpyDeviceToHost) ); - featureCounter = std::min(featureCounter, static_cast(maxFeatures)); - - keypoints.cols = featureCounter; - - if (surf_.upright) - keypoints.row(SURF_CUDA::ANGLE_ROW).setTo(Scalar::all(360.0 - 90.0)); - else - findOrientation(keypoints); - } - - void findOrientation(GpuMat& keypoints) - { - const int nFeatures = keypoints.cols; - if (nFeatures > 0) - { - icvCalcOrientation_gpu(keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::ANGLE_ROW), nFeatures); - } - } - - void computeDescriptors(const GpuMat& keypoints, GpuMat& descriptors, int descriptorSize) - { - const int nFeatures = keypoints.cols; - if (nFeatures > 0) - { - ensureSizeIsEnough(nFeatures, descriptorSize, CV_32F, descriptors); - compute_descriptors_gpu(descriptors, keypoints.ptr(SURF_CUDA::X_ROW), keypoints.ptr(SURF_CUDA::Y_ROW), - keypoints.ptr(SURF_CUDA::SIZE_ROW), keypoints.ptr(SURF_CUDA::ANGLE_ROW), nFeatures); - } - } - - private: - SURF_CUDA_Invoker(const SURF_CUDA_Invoker&); - SURF_CUDA_Invoker& operator =(const SURF_CUDA_Invoker&); - - SURF_CUDA& surf_; - - int img_cols, img_rows; - - bool use_mask; - - int maxCandidates; - int maxFeatures; - - size_t maskOffset; - size_t sumOffset; - - GpuMat counters; - }; -} - -cv::cuda::SURF_CUDA::SURF_CUDA() -{ - hessianThreshold = 100; - extended = true; - nOctaves = 4; - nOctaveLayers = 2; - keypointsRatio = 0.01f; - upright = false; -} - -cv::cuda::SURF_CUDA::SURF_CUDA(double _threshold, int _nOctaves, int _nOctaveLayers, bool _extended, float _keypointsRatio, bool _upright) -{ - hessianThreshold = _threshold; - extended = _extended; - nOctaves = _nOctaves; - nOctaveLayers = _nOctaveLayers; - keypointsRatio = _keypointsRatio; - upright = _upright; -} - -int cv::cuda::SURF_CUDA::descriptorSize() const -{ - return extended ? 128 : 64; -} - -int cv::cuda::SURF_CUDA::defaultNorm() const -{ - return NORM_L2; -} - -void cv::cuda::SURF_CUDA::uploadKeypoints(const std::vector& keypoints, GpuMat& keypointsGPU) -{ - if (keypoints.empty()) - keypointsGPU.release(); - else - { - Mat keypointsCPU(SURF_CUDA::ROWS_COUNT, static_cast(keypoints.size()), CV_32FC1); - - float* kp_x = keypointsCPU.ptr(SURF_CUDA::X_ROW); - float* kp_y = keypointsCPU.ptr(SURF_CUDA::Y_ROW); - int* kp_laplacian = keypointsCPU.ptr(SURF_CUDA::LAPLACIAN_ROW); - int* kp_octave = keypointsCPU.ptr(SURF_CUDA::OCTAVE_ROW); - float* kp_size = keypointsCPU.ptr(SURF_CUDA::SIZE_ROW); - float* kp_dir = keypointsCPU.ptr(SURF_CUDA::ANGLE_ROW); - float* kp_hessian = keypointsCPU.ptr(SURF_CUDA::HESSIAN_ROW); - - for (size_t i = 0, size = keypoints.size(); i < size; ++i) - { - const KeyPoint& kp = keypoints[i]; - kp_x[i] = kp.pt.x; - kp_y[i] = kp.pt.y; - kp_octave[i] = kp.octave; - kp_size[i] = kp.size; - kp_dir[i] = kp.angle; - kp_hessian[i] = kp.response; - kp_laplacian[i] = 1; - } - - keypointsGPU.upload(keypointsCPU); - } -} - -void cv::cuda::SURF_CUDA::downloadKeypoints(const GpuMat& keypointsGPU, std::vector& keypoints) -{ - const int nFeatures = keypointsGPU.cols; - - if (nFeatures == 0) - keypoints.clear(); - else - { - CV_Assert(keypointsGPU.type() == CV_32FC1 && keypointsGPU.rows == ROWS_COUNT); - - Mat keypointsCPU(keypointsGPU); - - keypoints.resize(nFeatures); - - float* kp_x = keypointsCPU.ptr(SURF_CUDA::X_ROW); - float* kp_y = keypointsCPU.ptr(SURF_CUDA::Y_ROW); - int* kp_laplacian = keypointsCPU.ptr(SURF_CUDA::LAPLACIAN_ROW); - int* kp_octave = keypointsCPU.ptr(SURF_CUDA::OCTAVE_ROW); - float* kp_size = keypointsCPU.ptr(SURF_CUDA::SIZE_ROW); - float* kp_dir = keypointsCPU.ptr(SURF_CUDA::ANGLE_ROW); - float* kp_hessian = keypointsCPU.ptr(SURF_CUDA::HESSIAN_ROW); - - for (int i = 0; i < nFeatures; ++i) - { - KeyPoint& kp = keypoints[i]; - kp.pt.x = kp_x[i]; - kp.pt.y = kp_y[i]; - kp.class_id = kp_laplacian[i]; - kp.octave = kp_octave[i]; - kp.size = kp_size[i]; - kp.angle = kp_dir[i]; - kp.response = kp_hessian[i]; - } - } -} - -void cv::cuda::SURF_CUDA::downloadDescriptors(const GpuMat& descriptorsGPU, std::vector& descriptors) -{ - if (descriptorsGPU.empty()) - descriptors.clear(); - else - { - CV_Assert(descriptorsGPU.type() == CV_32F); - - descriptors.resize(descriptorsGPU.rows * descriptorsGPU.cols); - Mat descriptorsCPU(descriptorsGPU.size(), CV_32F, &descriptors[0]); - descriptorsGPU.download(descriptorsCPU); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints) -{ - if (!img.empty()) - { - SURF_CUDA_Invoker surf(*this, img, mask); - - surf.detectKeypoints(keypoints); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints) -{ - if (!img.empty()) - { - SURF_CUDA_Invoker surf(*this, img, mask); - - if (!useProvidedKeypoints) - surf.detectKeypoints(keypoints); - else if (!upright) - { - surf.findOrientation(keypoints); - } - - surf.computeDescriptors(keypoints, descriptors, descriptorSize()); - } -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints) -{ - GpuMat keypointsGPU; - - (*this)(img, mask, keypointsGPU); - - downloadKeypoints(keypointsGPU, keypoints); -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, - GpuMat& descriptors, bool useProvidedKeypoints) -{ - GpuMat keypointsGPU; - - if (useProvidedKeypoints) - uploadKeypoints(keypoints, keypointsGPU); - - (*this)(img, mask, keypointsGPU, descriptors, useProvidedKeypoints); - - downloadKeypoints(keypointsGPU, keypoints); -} - -void cv::cuda::SURF_CUDA::operator()(const GpuMat& img, const GpuMat& mask, std::vector& keypoints, - std::vector& descriptors, bool useProvidedKeypoints) -{ - GpuMat descriptorsGPU; - - (*this)(img, mask, keypoints, descriptorsGPU, useProvidedKeypoints); - - downloadDescriptors(descriptorsGPU, descriptors); -} - -void cv::cuda::SURF_CUDA::releaseMemory() -{ - sum.release(); - mask1.release(); - maskSum.release(); - intBuffer.release(); - det.release(); - trace.release(); - maxPosBuffer.release(); -} - -#endif // !defined (HAVE_CUDA) diff --git a/modules/nonfree/src/surf.hpp b/modules/nonfree/src/surf.hpp deleted file mode 100644 index ee56fb66c1..0000000000 --- a/modules/nonfree/src/surf.hpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////// see LICENSE.txt in the OpenCV root directory ////////////// - -#ifndef __OPENCV_NONFREE_SURF_HPP__ -#define __OPENCV_NONFREE_SURF_HPP__ - -namespace cv -{ -//! Speeded up robust features, port from CUDA module. -////////////////////////////////// SURF ////////////////////////////////////////// - -class SURF_OCL -{ -public: - enum KeypointLayout - { - X_ROW = 0, - Y_ROW, - LAPLACIAN_ROW, - OCTAVE_ROW, - SIZE_ROW, - ANGLE_ROW, - HESSIAN_ROW, - ROWS_COUNT - }; - - //! the full constructor taking all the necessary parameters - SURF_OCL(); - - bool init(const SURF* params); - - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const { return params->extended ? 128 : 64; } - - void uploadKeypoints(const std::vector &keypoints, UMat &keypointsGPU); - void downloadKeypoints(const UMat &keypointsGPU, std::vector &keypoints); - - //! finds the keypoints using fast hessian detector used in SURF - //! supports CV_8UC1 images - //! keypoints will have nFeature cols and 6 rows - //! keypoints.ptr(X_ROW)[i] will contain x coordinate of i'th feature - //! keypoints.ptr(Y_ROW)[i] will contain y coordinate of i'th feature - //! keypoints.ptr(LAPLACIAN_ROW)[i] will contain laplacian sign of i'th feature - //! keypoints.ptr(OCTAVE_ROW)[i] will contain octave of i'th feature - //! keypoints.ptr(SIZE_ROW)[i] will contain size of i'th feature - //! keypoints.ptr(ANGLE_ROW)[i] will contain orientation of i'th feature - //! keypoints.ptr(HESSIAN_ROW)[i] will contain response of i'th feature - bool detect(InputArray img, InputArray mask, UMat& keypoints); - //! finds the keypoints and computes their descriptors. - //! Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction - bool detectAndCompute(InputArray img, InputArray mask, UMat& keypoints, - OutputArray descriptors, bool useProvidedKeypoints = false); - -protected: - bool setImage(InputArray img, InputArray mask); - - // kernel callers declarations - bool calcLayerDetAndTrace(int octave, int layer_rows); - - bool findMaximaInLayer(int counterOffset, int octave, int layer_rows, int layer_cols); - - bool interpolateKeypoint(int maxCounter, UMat &keypoints, int octave, int layer_rows, int maxFeatures); - - bool calcOrientation(UMat &keypoints); - - bool setUpRight(UMat &keypoints); - - bool computeDescriptors(const UMat &keypoints, OutputArray descriptors); - - bool detectKeypoints(UMat &keypoints); - - const SURF* params; - - //! max keypoints = min(keypointsRatio * img.size().area(), 65535) - UMat sum, intBuffer; - UMat det, trace; - UMat maxPosBuffer; - - int img_cols, img_rows; - - int maxCandidates; - int maxFeatures; - - UMat img, counters; - - // texture buffers - ocl::Image2D imgTex, sumTex; - bool haveImageSupport; - String kerOpts; - - int status; -}; - -/* -template void copyVectorToUMat(const std::vector<_Tp>& v, UMat& um) -{ - if(v.empty()) - um.release(); - else - Mat(1, (int)(v.size()*sizeof(v[0])), CV_8U, (void*)&v[0]).copyTo(um); -} - -template void copyUMatToVector(const UMat& um, std::vector<_Tp>& v) -{ - if(um.empty()) - v.clear(); - else - { - size_t sz = um.total()*um.elemSize(); - CV_Assert(um.isContinuous() && (sz % sizeof(_Tp) == 0)); - v.resize(sz/sizeof(_Tp)); - Mat m(um.size(), um.type(), &v[0]); - um.copyTo(m); - } -}*/ - -} - -#endif diff --git a/modules/nonfree/src/surf.ocl.cpp b/modules/nonfree/src/surf.ocl.cpp deleted file mode 100644 index eaf50fbc74..0000000000 --- a/modules/nonfree/src/surf.ocl.cpp +++ /dev/null @@ -1,459 +0,0 @@ -/*M///////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ -#include "precomp.hpp" -#include "surf.hpp" - -#include -#include -#include "opencl_kernels.hpp" - -namespace cv -{ - -enum { ORI_SEARCH_INC=5, ORI_LOCAL_SIZE=(360 / ORI_SEARCH_INC) }; - -static inline int calcSize(int octave, int layer) -{ - /* Wavelet size at first layer of first octave. */ - const int HAAR_SIZE0 = 9; - - /* Wavelet size increment between layers. This should be an even number, - such that the wavelet sizes in an octave are either all even or all odd. - This ensures that when looking for the neighbors of a sample, the layers - - above and below are aligned correctly. */ - const int HAAR_SIZE_INC = 6; - - return (HAAR_SIZE0 + HAAR_SIZE_INC * layer) << octave; -} - - -SURF_OCL::SURF_OCL() -{ - img_cols = img_rows = maxCandidates = maxFeatures = 0; - haveImageSupport = false; - status = -1; -} - -bool SURF_OCL::init(const SURF* p) -{ - params = p; - if(status < 0) - { - status = 0; - if(ocl::haveOpenCL()) - { - const ocl::Device& dev = ocl::Device::getDefault(); - if( dev.type() == ocl::Device::TYPE_CPU || dev.doubleFPConfig() == 0 ) - return false; - haveImageSupport = false;//dev.imageSupport(); - kerOpts = haveImageSupport ? "-D HAVE_IMAGE2D -D DOUBLE_SUPPORT" : ""; -// status = 1; - } - } - return status > 0; -} - - -bool SURF_OCL::setImage(InputArray _img, InputArray _mask) -{ - if( status <= 0 ) - return false; - if( !_mask.empty()) - return false; - int imgtype = _img.type(); - CV_Assert(!_img.empty()); - CV_Assert(params && params->nOctaves > 0 && params->nOctaveLayers > 0); - - int min_size = calcSize(params->nOctaves - 1, 0); - Size sz = _img.size(); - img_cols = sz.width; - img_rows = sz.height; - CV_Assert(img_rows >= min_size && img_cols >= min_size); - - const int layer_rows = img_rows >> (params->nOctaves - 1); - const int layer_cols = img_cols >> (params->nOctaves - 1); - const int min_margin = ((calcSize((params->nOctaves - 1), 2) >> 1) >> (params->nOctaves - 1)) + 1; - CV_Assert(layer_rows - 2 * min_margin > 0); - CV_Assert(layer_cols - 2 * min_margin > 0); - - maxFeatures = std::min(static_cast(img_cols*img_rows * 0.01f), 65535); - maxCandidates = std::min(static_cast(1.5 * maxFeatures), 65535); - - CV_Assert(maxFeatures > 0); - - counters.create(1, params->nOctaves + 1, CV_32SC1); - counters.setTo(Scalar::all(0)); - - img.release(); - if(_img.isUMat() && imgtype == CV_8UC1) - img = _img.getUMat(); - else if( imgtype == CV_8UC1 ) - _img.copyTo(img); - else - cvtColor(_img, img, COLOR_BGR2GRAY); - - integral(img, sum); - - if(haveImageSupport) - { - imgTex = ocl::Image2D(img); - sumTex = ocl::Image2D(sum); - } - - return true; -} - - -bool SURF_OCL::detectKeypoints(UMat &keypoints) -{ - // create image pyramid buffers - // different layers have same sized buffers, but they are sampled from Gaussian kernel. - det.create(img_rows * (params->nOctaveLayers + 2), img_cols, CV_32F); - trace.create(img_rows * (params->nOctaveLayers + 2), img_cols, CV_32FC1); - - maxPosBuffer.create(1, maxCandidates, CV_32SC4); - keypoints.create(SURF_OCL::ROWS_COUNT, maxFeatures, CV_32F); - keypoints.setTo(Scalar::all(0)); - Mat cpuCounters; - - for (int octave = 0; octave < params->nOctaves; ++octave) - { - const int layer_rows = img_rows >> octave; - const int layer_cols = img_cols >> octave; - - if(!calcLayerDetAndTrace(octave, layer_rows)) - return false; - - if(!findMaximaInLayer(1 + octave, octave, layer_rows, layer_cols)) - return false; - - cpuCounters = counters.getMat(ACCESS_READ); - int maxCounter = cpuCounters.at(1 + octave); - maxCounter = std::min(maxCounter, maxCandidates); - cpuCounters.release(); - - if (maxCounter > 0) - { - if(!interpolateKeypoint(maxCounter, keypoints, octave, layer_rows, maxFeatures)) - return false; - } - } - - cpuCounters = counters.getMat(ACCESS_READ); - int featureCounter = cpuCounters.at(0); - featureCounter = std::min(featureCounter, maxFeatures); - cpuCounters.release(); - - keypoints = UMat(keypoints, Rect(0, 0, featureCounter, keypoints.rows)); - - if (params->upright) - return setUpRight(keypoints); - else - return calcOrientation(keypoints); -} - - -bool SURF_OCL::setUpRight(UMat &keypoints) -{ - int nFeatures = keypoints.cols; - if( nFeatures == 0 ) - return true; - - size_t globalThreads[3] = {nFeatures, 1}; - ocl::Kernel kerUpRight("SURF_setUpRight", ocl::nonfree::surf_oclsrc, kerOpts); - return kerUpRight.args(ocl::KernelArg::ReadWrite(keypoints)).run(2, globalThreads, 0, true); -} - -bool SURF_OCL::computeDescriptors(const UMat &keypoints, OutputArray _descriptors) -{ - int dsize = params->descriptorSize(); - int nFeatures = keypoints.cols; - if (nFeatures == 0) - { - _descriptors.release(); - return true; - } - _descriptors.create(nFeatures, dsize, CV_32F); - UMat descriptors; - if( _descriptors.isUMat() ) - descriptors = _descriptors.getUMat(); - else - descriptors.create(nFeatures, dsize, CV_32F); - - ocl::Kernel kerCalcDesc, kerNormDesc; - - if( dsize == 64 ) - { - kerCalcDesc.create("SURF_computeDescriptors64", ocl::nonfree::surf_oclsrc, kerOpts); - kerNormDesc.create("SURF_normalizeDescriptors64", ocl::nonfree::surf_oclsrc, kerOpts); - } - else - { - CV_Assert(dsize == 128); - kerCalcDesc.create("SURF_computeDescriptors128", ocl::nonfree::surf_oclsrc, kerOpts); - kerNormDesc.create("SURF_normalizeDescriptors128", ocl::nonfree::surf_oclsrc, kerOpts); - } - - size_t localThreads[] = {6, 6}; - size_t globalThreads[] = {nFeatures*localThreads[0], localThreads[1]}; - - if(haveImageSupport) - { - kerCalcDesc.args(imgTex, - img_rows, img_cols, - ocl::KernelArg::ReadOnlyNoSize(keypoints), - ocl::KernelArg::WriteOnlyNoSize(descriptors)); - } - else - { - kerCalcDesc.args(ocl::KernelArg::ReadOnlyNoSize(img), - img_rows, img_cols, - ocl::KernelArg::ReadOnlyNoSize(keypoints), - ocl::KernelArg::WriteOnlyNoSize(descriptors)); - } - - if(!kerCalcDesc.run(2, globalThreads, localThreads, true)) - return false; - - size_t localThreads_n[] = {dsize, 1}; - size_t globalThreads_n[] = {nFeatures*localThreads_n[0], localThreads_n[1]}; - - globalThreads[0] = nFeatures * localThreads[0]; - globalThreads[1] = localThreads[1]; - bool ok = kerNormDesc.args(ocl::KernelArg::ReadWriteNoSize(descriptors)). - run(2, globalThreads_n, localThreads_n, true); - if(ok && !_descriptors.isUMat()) - descriptors.copyTo(_descriptors); - return ok; -} - - -void SURF_OCL::uploadKeypoints(const std::vector &keypoints, UMat &keypointsGPU) -{ - if (keypoints.empty()) - keypointsGPU.release(); - else - { - Mat keypointsCPU(SURF_OCL::ROWS_COUNT, static_cast(keypoints.size()), CV_32FC1); - - float *kp_x = keypointsCPU.ptr(SURF_OCL::X_ROW); - float *kp_y = keypointsCPU.ptr(SURF_OCL::Y_ROW); - int *kp_laplacian = keypointsCPU.ptr(SURF_OCL::LAPLACIAN_ROW); - int *kp_octave = keypointsCPU.ptr(SURF_OCL::OCTAVE_ROW); - float *kp_size = keypointsCPU.ptr(SURF_OCL::SIZE_ROW); - float *kp_dir = keypointsCPU.ptr(SURF_OCL::ANGLE_ROW); - float *kp_hessian = keypointsCPU.ptr(SURF_OCL::HESSIAN_ROW); - - for (size_t i = 0, size = keypoints.size(); i < size; ++i) - { - const KeyPoint &kp = keypoints[i]; - kp_x[i] = kp.pt.x; - kp_y[i] = kp.pt.y; - kp_octave[i] = kp.octave; - kp_size[i] = kp.size; - kp_dir[i] = kp.angle; - kp_hessian[i] = kp.response; - kp_laplacian[i] = 1; - } - - keypointsCPU.copyTo(keypointsGPU); - } -} - -void SURF_OCL::downloadKeypoints(const UMat &keypointsGPU, std::vector &keypoints) -{ - const int nFeatures = keypointsGPU.cols; - - if (nFeatures == 0) - keypoints.clear(); - else - { - CV_Assert(keypointsGPU.type() == CV_32FC1 && keypointsGPU.rows == ROWS_COUNT); - - Mat keypointsCPU = keypointsGPU.getMat(ACCESS_READ); - keypoints.resize(nFeatures); - - float *kp_x = keypointsCPU.ptr(SURF_OCL::X_ROW); - float *kp_y = keypointsCPU.ptr(SURF_OCL::Y_ROW); - int *kp_laplacian = keypointsCPU.ptr(SURF_OCL::LAPLACIAN_ROW); - int *kp_octave = keypointsCPU.ptr(SURF_OCL::OCTAVE_ROW); - float *kp_size = keypointsCPU.ptr(SURF_OCL::SIZE_ROW); - float *kp_dir = keypointsCPU.ptr(SURF_OCL::ANGLE_ROW); - float *kp_hessian = keypointsCPU.ptr(SURF_OCL::HESSIAN_ROW); - - for (int i = 0; i < nFeatures; ++i) - { - KeyPoint &kp = keypoints[i]; - kp.pt.x = kp_x[i]; - kp.pt.y = kp_y[i]; - kp.class_id = kp_laplacian[i]; - kp.octave = kp_octave[i]; - kp.size = kp_size[i]; - kp.angle = kp_dir[i]; - kp.response = kp_hessian[i]; - } - } -} - -bool SURF_OCL::detect(InputArray _img, InputArray _mask, UMat& keypoints) -{ - if( !setImage(_img, _mask) ) - return false; - - return detectKeypoints(keypoints); -} - - -bool SURF_OCL::detectAndCompute(InputArray _img, InputArray _mask, UMat& keypoints, - OutputArray _descriptors, bool useProvidedKeypoints ) -{ - if( !setImage(_img, _mask) ) - return false; - - if( !useProvidedKeypoints && !detectKeypoints(keypoints) ) - return false; - - return computeDescriptors(keypoints, _descriptors); -} - -inline int divUp(int a, int b) { return (a + b-1)/b; } - -//////////////////////////// -// kernel caller definitions -bool SURF_OCL::calcLayerDetAndTrace(int octave, int c_layer_rows) -{ - int nOctaveLayers = params->nOctaveLayers; - const int min_size = calcSize(octave, 0); - const int max_samples_i = 1 + ((img_rows - min_size) >> octave); - const int max_samples_j = 1 + ((img_cols - min_size) >> octave); - - size_t localThreads[] = {16, 16}; - size_t globalThreads[] = - { - divUp(max_samples_j, (int)localThreads[0]) * localThreads[0], - divUp(max_samples_i, (int)localThreads[1]) * localThreads[1] * (nOctaveLayers + 2) - }; - ocl::Kernel kerCalcDetTrace("SURF_calcLayerDetAndTrace", ocl::nonfree::surf_oclsrc, kerOpts); - if(haveImageSupport) - { - kerCalcDetTrace.args(sumTex, - img_rows, img_cols, nOctaveLayers, - octave, c_layer_rows, - ocl::KernelArg::WriteOnlyNoSize(det), - ocl::KernelArg::WriteOnlyNoSize(trace)); - } - else - { - kerCalcDetTrace.args(ocl::KernelArg::ReadOnlyNoSize(sum), - img_rows, img_cols, nOctaveLayers, - octave, c_layer_rows, - ocl::KernelArg::WriteOnlyNoSize(det), - ocl::KernelArg::WriteOnlyNoSize(trace)); - } - return kerCalcDetTrace.run(2, globalThreads, localThreads, true); -} - -bool SURF_OCL::findMaximaInLayer(int counterOffset, int octave, - int layer_rows, int layer_cols) -{ - const int min_margin = ((calcSize(octave, 2) >> 1) >> octave) + 1; - int nOctaveLayers = params->nOctaveLayers; - - size_t localThreads[3] = {16, 16}; - size_t globalThreads[3] = - { - divUp(layer_cols - 2 * min_margin, (int)localThreads[0] - 2) * localThreads[0], - divUp(layer_rows - 2 * min_margin, (int)localThreads[1] - 2) * nOctaveLayers * localThreads[1] - }; - - ocl::Kernel kerFindMaxima("SURF_findMaximaInLayer", ocl::nonfree::surf_oclsrc, kerOpts); - return kerFindMaxima.args(ocl::KernelArg::ReadOnlyNoSize(det), - ocl::KernelArg::ReadOnlyNoSize(trace), - ocl::KernelArg::PtrReadWrite(maxPosBuffer), - ocl::KernelArg::PtrReadWrite(counters), - counterOffset, img_rows, img_cols, - octave, nOctaveLayers, - layer_rows, layer_cols, - maxCandidates, - (float)params->hessianThreshold).run(2, globalThreads, localThreads, true); -} - -bool SURF_OCL::interpolateKeypoint(int maxCounter, UMat &keypoints, int octave, int layer_rows, int max_features) -{ - size_t localThreads[3] = {3, 3, 3}; - size_t globalThreads[3] = {maxCounter*localThreads[0], localThreads[1], 3}; - - ocl::Kernel kerInterp("SURF_interpolateKeypoint", ocl::nonfree::surf_oclsrc, kerOpts); - - return kerInterp.args(ocl::KernelArg::ReadOnlyNoSize(det), - ocl::KernelArg::PtrReadOnly(maxPosBuffer), - ocl::KernelArg::ReadWriteNoSize(keypoints), - ocl::KernelArg::PtrReadWrite(counters), - img_rows, img_cols, octave, layer_rows, max_features). - run(3, globalThreads, localThreads, true); -} - -bool SURF_OCL::calcOrientation(UMat &keypoints) -{ - int nFeatures = keypoints.cols; - if( nFeatures == 0 ) - return true; - ocl::Kernel kerOri("SURF_calcOrientation", ocl::nonfree::surf_oclsrc, kerOpts); - - if( haveImageSupport ) - kerOri.args(sumTex, img_rows, img_cols, - ocl::KernelArg::ReadWriteNoSize(keypoints)); - else - kerOri.args(ocl::KernelArg::ReadOnlyNoSize(sum), - img_rows, img_cols, - ocl::KernelArg::ReadWriteNoSize(keypoints)); - - size_t localThreads[3] = {ORI_LOCAL_SIZE, 1}; - size_t globalThreads[3] = {nFeatures * localThreads[0], 1}; - return kerOri.run(2, globalThreads, localThreads, true); -} - -} diff --git a/modules/nonfree/test/test_detectors.cpp b/modules/nonfree/test/test_detectors.cpp deleted file mode 100644 index 5854207dcd..0000000000 --- a/modules/nonfree/test/test_detectors.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" - -#include -#include -#include -#include -#include -#include -#include - -using namespace cv; -using namespace std; - -class CV_DetectorsTest : public cvtest::BaseTest -{ -public: - CV_DetectorsTest(); - ~CV_DetectorsTest(); -protected: - void run(int); - template bool testDetector(const Mat& img, const T& detector, vector& expected); - - void LoadExpected(const string& file, vector& out); -}; - -CV_DetectorsTest::CV_DetectorsTest() -{ -} -CV_DetectorsTest::~CV_DetectorsTest() {} - -void getRotation(const Mat& img, Mat& aff, Mat& out) -{ - Point center(img.cols/2, img.rows/2); - aff = getRotationMatrix2D(center, 30, 1); - warpAffine( img, out, aff, img.size()); -} - -void getZoom(const Mat& img, Mat& aff, Mat& out) -{ - const double mult = 1.2; - - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = mult; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = mult; data[5] = 0; - - warpAffine( img, out, aff, img.size()); -} - -void getBlur(const Mat& img, Mat& aff, Mat& out) -{ - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = 1; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = 1; data[5] = 0; - - GaussianBlur(img, out, Size(5, 5), 2); -} - -void getBrightness(const Mat& img, Mat& aff, Mat& out) -{ - aff.create(2, 3, CV_64F); - double *data = aff.ptr(); - data[0] = 1; data[1] = 0; data[2] = 0; - data[3] = 0; data[4] = 1; data[5] = 0; - - add(img, Mat(img.size(), img.type(), Scalar(15)), out); -} - -void showOrig(const Mat& img, const vector& orig_pts) -{ - - Mat img_color; - cvtColor(img, img_color, COLOR_GRAY2BGR); - - for(size_t i = 0; i < orig_pts.size(); ++i) - circle(img_color, orig_pts[i].pt, (int)orig_pts[i].size/2, Scalar(0, 255, 0)); - - namedWindow("O"); imshow("O", img_color); -} - -void show(const string& name, const Mat& new_img, const vector& new_pts, const vector& transf_pts) -{ - - Mat new_img_color; - cvtColor(new_img, new_img_color, COLOR_GRAY2BGR); - - for(size_t i = 0; i < transf_pts.size(); ++i) - circle(new_img_color, transf_pts[i].pt, (int)transf_pts[i].size/2, Scalar(255, 0, 0)); - - for(size_t i = 0; i < new_pts.size(); ++i) - circle(new_img_color, new_pts[i].pt, (int)new_pts[i].size/2, Scalar(0, 0, 255)); - - namedWindow(name + "_T"); imshow(name + "_T", new_img_color); -} - -struct WrapPoint -{ - const double* R; - WrapPoint(const Mat& rmat) : R(rmat.ptr()) { }; - - KeyPoint operator()(const KeyPoint& kp) const - { - KeyPoint res = kp; - res.pt.x = static_cast(kp.pt.x * R[0] + kp.pt.y * R[1] + R[2]); - res.pt.y = static_cast(kp.pt.x * R[3] + kp.pt.y * R[4] + R[5]); - return res; - } -}; - -struct sortByR { bool operator()(const KeyPoint& kp1, const KeyPoint& kp2) { return norm(kp1.pt) < norm(kp2.pt); } }; - -template bool CV_DetectorsTest::testDetector(const Mat& img, const T& detector, vector& exp) -{ - vector orig_kpts; - detector(img, orig_kpts); - - typedef void (*TransfFunc )(const Mat&, Mat&, Mat& FransfFunc); - const TransfFunc transfFunc[] = { getRotation, getZoom, getBlur, getBrightness }; - //const string names[] = { "Rotation", "Zoom", "Blur", "Brightness" }; - const size_t case_num = sizeof(transfFunc)/sizeof(transfFunc[0]); - - vector affs(case_num); - vector new_imgs(case_num); - - vector< vector > new_kpts(case_num); - vector< vector > transf_kpts(case_num); - - //showOrig(img, orig_kpts); - for(size_t i = 0; i < case_num; ++i) - { - transfFunc[i](img, affs[i], new_imgs[i]); - detector(new_imgs[i], new_kpts[i]); - transform(orig_kpts.begin(), orig_kpts.end(), back_inserter(transf_kpts[i]), WrapPoint(affs[i])); - //show(names[i], new_imgs[i], new_kpts[i], transf_kpts[i]); - } - - const float thres = 3; - const float nthres = 3; - - vector result; - for(size_t i = 0; i < orig_kpts.size(); ++i) - { - const KeyPoint& okp = orig_kpts[i]; - int foundCounter = 0; - for(size_t j = 0; j < case_num; ++j) - { - const KeyPoint& tkp = transf_kpts[j][i]; - - size_t k = 0; - - for(; k < new_kpts[j].size(); ++k) - if (norm(new_kpts[j][k].pt - tkp.pt) < nthres && fabs(new_kpts[j][k].size - tkp.size) < thres) - break; - - if (k != new_kpts[j].size()) - ++foundCounter; - - } - if (foundCounter == (int)case_num) - result.push_back(okp); - } - - sort(result.begin(), result.end(), sortByR()); - sort(exp.begin(), exp.end(), sortByR()); - - if (result.size() != exp.size()) - { - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return false; - } - - int foundCounter1 = 0; - for(size_t i = 0; i < exp.size(); ++i) - { - const KeyPoint& e = exp[i]; - size_t j = 0; - for(; j < result.size(); ++j) - { - const KeyPoint& r = result[i]; - if (norm(r.pt-e.pt) < nthres && fabs(r.size - e.size) < thres) - break; - } - if (j != result.size()) - ++foundCounter1; - } - - int foundCounter2 = 0; - for(size_t i = 0; i < result.size(); ++i) - { - const KeyPoint& r = result[i]; - size_t j = 0; - for(; j < exp.size(); ++j) - { - const KeyPoint& e = exp[i]; - if (norm(r.pt-e.pt) < nthres && fabs(r.size - e.size) < thres) - break; - } - if (j != exp.size()) - ++foundCounter2; - } - //showOrig(img, result); waitKey(); - - const float errorRate = 0.9f; - if (float(foundCounter1)/exp.size() < errorRate || float(foundCounter2)/result.size() < errorRate) - { - ts->set_failed_test_info( cvtest::TS::FAIL_MISMATCH); - return false; - } - return true; -} - -struct SurfNoMaskWrap -{ - const SURF& detector; - SurfNoMaskWrap(const SURF& surf) : detector(surf) {} - SurfNoMaskWrap& operator=(const SurfNoMaskWrap&); - void operator()(const Mat& img, vector& kpts) const { detector(img, Mat(), kpts); } -}; - -void CV_DetectorsTest::LoadExpected(const string& file, vector& out) -{ - Mat mat_exp; - FileStorage fs(file, FileStorage::READ); - if (fs.isOpened()) - { - read( fs["ResultVectorData"], mat_exp, Mat() ); - out.resize(mat_exp.cols / sizeof(KeyPoint)); - copy(mat_exp.ptr(), mat_exp.ptr() + out.size(), out.begin()); - } - else - { - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA); - out.clear(); - } -} - -void CV_DetectorsTest::run( int /*start_from*/ ) -{ - Mat img = imread(string(ts->get_data_path()) + "shared/graffiti.png", 0); - - if (img.empty()) - { - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - Mat to_test(img.size() * 2, img.type(), Scalar(0)); - Mat roi = to_test(Rect(img.rows/2, img.cols/2, img.cols, img.rows)); - img.copyTo(roi); - GaussianBlur(to_test, to_test, Size(3, 3), 1.5); - - vector exp; - LoadExpected(string(ts->get_data_path()) + "detectors/surf.xml", exp); - if (exp.empty()) - return; - - if (!testDetector(to_test, SurfNoMaskWrap(SURF(1536+512+512, 2)), exp)) - return; - - LoadExpected(string(ts->get_data_path()) + "detectors/star.xml", exp); - if (exp.empty()) - return; - - if (!testDetector(to_test, StarDetector(45, 30, 10, 8, 5), exp)) - return; - - ts->set_failed_test_info( cvtest::TS::OK); -} - - -TEST(Features2d_Detectors, regression) { CV_DetectorsTest test; test.safe_run(); } diff --git a/modules/nonfree/test/test_features2d.cpp b/modules/nonfree/test/test_features2d.cpp deleted file mode 100644 index 3cc5b47cf0..0000000000 --- a/modules/nonfree/test/test_features2d.cpp +++ /dev/null @@ -1,1224 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/calib3d.hpp" - -using namespace std; -using namespace cv; - -const string FEATURES2D_DIR = "features2d"; -const string DETECTOR_DIR = FEATURES2D_DIR + "/feature_detectors"; -const string DESCRIPTOR_DIR = FEATURES2D_DIR + "/descriptor_extractors"; -const string IMAGE_FILENAME = "tsukuba.png"; - -/****************************************************************************************\ -* Regression tests for feature detectors comparing keypoints. * -\****************************************************************************************/ - -class CV_FeatureDetectorTest : public cvtest::BaseTest -{ -public: - CV_FeatureDetectorTest( const string& _name, const Ptr& _fdetector ) : - name(_name), fdetector(_fdetector) {} - -protected: - bool isSimilarKeypoints( const KeyPoint& p1, const KeyPoint& p2 ); - void compareKeypointSets( const vector& validKeypoints, const vector& calcKeypoints ); - - void emptyDataTest(); - void regressionTest(); // TODO test of detect() with mask - - virtual void run( int ); - - string name; - Ptr fdetector; -}; - -void CV_FeatureDetectorTest::emptyDataTest() -{ - // One image. - Mat image; - vector keypoints; - try - { - fdetector->detect( image, keypoints ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - if( !keypoints.empty() ) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image must return empty keypoints vector (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - // Several images. - vector images; - vector > keypointCollection; - try - { - fdetector->detect( images, keypointCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "detect() on empty image vector must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } -} - -bool CV_FeatureDetectorTest::isSimilarKeypoints( const KeyPoint& p1, const KeyPoint& p2 ) -{ - const float maxPtDif = 1.f; - const float maxSizeDif = 1.f; - const float maxAngleDif = 2.f; - const float maxResponseDif = 0.1f; - - float dist = (float)norm( p1.pt - p2.pt ); - return (dist < maxPtDif && - fabs(p1.size - p2.size) < maxSizeDif && - abs(p1.angle - p2.angle) < maxAngleDif && - abs(p1.response - p2.response) < maxResponseDif && - p1.octave == p2.octave && - p1.class_id == p2.class_id ); -} - -void CV_FeatureDetectorTest::compareKeypointSets( const vector& validKeypoints, const vector& calcKeypoints ) -{ - const float maxCountRatioDif = 0.01f; - - // Compare counts of validation and calculated keypoints. - float countRatio = (float)validKeypoints.size() / (float)calcKeypoints.size(); - if( countRatio < 1 - maxCountRatioDif || countRatio > 1.f + maxCountRatioDif ) - { - ts->printf( cvtest::TS::LOG, "Bad keypoints count ratio (validCount = %d, calcCount = %d).\n", - validKeypoints.size(), calcKeypoints.size() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - int progress = 0, progressCount = (int)(validKeypoints.size() * calcKeypoints.size()); - int badPointCount = 0, commonPointCount = max((int)validKeypoints.size(), (int)calcKeypoints.size()); - for( size_t v = 0; v < validKeypoints.size(); v++ ) - { - int nearestIdx = -1; - float minDist = std::numeric_limits::max(); - - for( size_t c = 0; c < calcKeypoints.size(); c++ ) - { - progress = update_progress( progress, (int)(v*calcKeypoints.size() + c), progressCount, 0 ); - float curDist = (float)norm( calcKeypoints[c].pt - validKeypoints[v].pt ); - if( curDist < minDist ) - { - minDist = curDist; - nearestIdx = (int)c; - } - } - - assert( minDist >= 0 ); - if( !isSimilarKeypoints( validKeypoints[v], calcKeypoints[nearestIdx] ) ) - badPointCount++; - } - ts->printf( cvtest::TS::LOG, "badPointCount = %d; validPointCount = %d; calcPointCount = %d\n", - badPointCount, validKeypoints.size(), calcKeypoints.size() ); - if( badPointCount > 0.9 * commonPointCount ) - { - ts->printf( cvtest::TS::LOG, " - Bad accuracy!\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - return; - } - ts->printf( cvtest::TS::LOG, " - OK\n" ); -} - -void CV_FeatureDetectorTest::regressionTest() -{ - assert( !fdetector.empty() ); - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - string resFilename = string(ts->get_data_path()) + DETECTOR_DIR + "/" + string(name) + ".xml.gz"; - - // Read the test image. - Mat image = imread( imgFilename ); - if( image.empty() ) - { - ts->printf( cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - FileStorage fs( resFilename, FileStorage::READ ); - - // Compute keypoints. - vector calcKeypoints; - fdetector->detect( image, calcKeypoints ); - - if( fs.isOpened() ) // Compare computed and valid keypoints. - { - // TODO compare saved feature detector params with current ones - - // Read validation keypoints set. - vector validKeypoints; - read( fs["keypoints"], validKeypoints ); - if( validKeypoints.empty() ) - { - ts->printf( cvtest::TS::LOG, "Keypoints can not be read.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - compareKeypointSets( validKeypoints, calcKeypoints ); - } - else // Write detector parameters and computed keypoints as validation data. - { - fs.open( resFilename, FileStorage::WRITE ); - if( !fs.isOpened() ) - { - ts->printf( cvtest::TS::LOG, "File %s can not be opened to write.\n", resFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - else - { - fs << "detector_params" << "{"; - fdetector->write( fs ); - fs << "}"; - - write( fs, "keypoints", calcKeypoints ); - } - } -} - -void CV_FeatureDetectorTest::run( int /*start_from*/ ) -{ - if( !fdetector ) - { - ts->printf( cvtest::TS::LOG, "Feature detector is empty.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - emptyDataTest(); - regressionTest(); - - ts->set_failed_test_info( cvtest::TS::OK ); -} - -/****************************************************************************************\ -* Regression tests for descriptor extractors. * -\****************************************************************************************/ -static void writeMatInBin( const Mat& mat, const string& filename ) -{ - FILE* f = fopen( filename.c_str(), "wb"); - if( f ) - { - int type = mat.type(); - fwrite( (void*)&mat.rows, sizeof(int), 1, f ); - fwrite( (void*)&mat.cols, sizeof(int), 1, f ); - fwrite( (void*)&type, sizeof(int), 1, f ); - int dataSize = (int)(mat.step * mat.rows * mat.channels()); - fwrite( (void*)&dataSize, sizeof(int), 1, f ); - fwrite( (void*)mat.data, 1, dataSize, f ); - fclose(f); - } -} - -static Mat readMatFromBin( const string& filename ) -{ - FILE* f = fopen( filename.c_str(), "rb" ); - if( f ) - { - int rows, cols, type, dataSize; - size_t elements_read1 = fread( (void*)&rows, sizeof(int), 1, f ); - size_t elements_read2 = fread( (void*)&cols, sizeof(int), 1, f ); - size_t elements_read3 = fread( (void*)&type, sizeof(int), 1, f ); - size_t elements_read4 = fread( (void*)&dataSize, sizeof(int), 1, f ); - CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1); - - int step = dataSize / rows / CV_ELEM_SIZE(type); - CV_Assert(step >= cols); - - Mat m = Mat( rows, step, type).colRange(0, cols); - - size_t elements_read = fread( m.ptr(), 1, dataSize, f ); - CV_Assert(elements_read == (size_t)(dataSize)); - fclose(f); - - return m; - } - return Mat(); -} - -template -class CV_DescriptorExtractorTest : public cvtest::BaseTest -{ -public: - typedef typename Distance::ValueType ValueType; - typedef typename Distance::ResultType DistanceType; - - CV_DescriptorExtractorTest( const string _name, DistanceType _maxDist, const Ptr& _dextractor, - Distance d = Distance() ): - name(_name), maxDist(_maxDist), dextractor(_dextractor), distance(d) {} -protected: - virtual void createDescriptorExtractor() {} - - void compareDescriptors( const Mat& validDescriptors, const Mat& calcDescriptors ) - { - if( validDescriptors.size != calcDescriptors.size || validDescriptors.type() != calcDescriptors.type() ) - { - ts->printf(cvtest::TS::LOG, "Valid and computed descriptors matrices must have the same size and type.\n"); - ts->printf(cvtest::TS::LOG, "Valid size is (%d x %d) actual size is (%d x %d).\n", validDescriptors.rows, validDescriptors.cols, calcDescriptors.rows, calcDescriptors.cols); - ts->printf(cvtest::TS::LOG, "Valid type is %d actual type is %d.\n", validDescriptors.type(), calcDescriptors.type()); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - CV_Assert( DataType::type == validDescriptors.type() ); - - int dimension = validDescriptors.cols; - DistanceType curMaxDist = std::numeric_limits::min(); - for( int y = 0; y < validDescriptors.rows; y++ ) - { - DistanceType dist = distance( validDescriptors.ptr(y), calcDescriptors.ptr(y), dimension ); - if( dist > curMaxDist ) - curMaxDist = dist; - } - - stringstream ss; - ss << "Max distance between valid and computed descriptors " << curMaxDist; - if( curMaxDist < maxDist ) - ss << "." << endl; - else - { - ss << ">" << maxDist << " - bad accuracy!"<< endl; - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - ts->printf(cvtest::TS::LOG, ss.str().c_str() ); - } - - void emptyDataTest() - { - assert( !dextractor.empty() ); - - // One image. - Mat image; - vector keypoints; - Mat descriptors; - - try - { - dextractor->compute( image, keypoints, descriptors ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on empty image and empty keypoints must not generate exception (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - - image.create( 50, 50, CV_8UC3 ); - try - { - dextractor->compute( image, keypoints, descriptors ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on nonempty image and empty keypoints must not generate exception (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - - // Several images. - vector images; - vector > keypointsCollection; - vector descriptorsCollection; - try - { - dextractor->compute( images, keypointsCollection, descriptorsCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "compute() on empty images and empty keypoints collection must not generate exception (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - } - } - - void regressionTest() - { - assert( !dextractor.empty() ); - - // Read the test image. - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - - Mat img = imread( imgFilename ); - if( img.empty() ) - { - ts->printf( cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - vector keypoints; - FileStorage fs( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::READ ); - if( fs.isOpened() ) - { - read( fs.getFirstTopLevelNode(), keypoints ); - - Mat calcDescriptors; - double t = (double)getTickCount(); - dextractor->compute( img, keypoints, calcDescriptors ); - t = getTickCount() - t; - ts->printf(cvtest::TS::LOG, "\nAverage time of computing one descriptor = %g ms.\n", t/((double)getTickFrequency()*1000.)/calcDescriptors.rows ); - - if( calcDescriptors.rows != (int)keypoints.size() ) - { - ts->printf( cvtest::TS::LOG, "Count of computed descriptors and keypoints count must be equal.\n" ); - ts->printf( cvtest::TS::LOG, "Count of keypoints is %d.\n", (int)keypoints.size() ); - ts->printf( cvtest::TS::LOG, "Count of computed descriptors is %d.\n", calcDescriptors.rows ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - if( calcDescriptors.cols != dextractor->descriptorSize() || calcDescriptors.type() != dextractor->descriptorType() ) - { - ts->printf( cvtest::TS::LOG, "Incorrect descriptor size or descriptor type.\n" ); - ts->printf( cvtest::TS::LOG, "Expected size is %d.\n", dextractor->descriptorSize() ); - ts->printf( cvtest::TS::LOG, "Calculated size is %d.\n", calcDescriptors.cols ); - ts->printf( cvtest::TS::LOG, "Expected type is %d.\n", dextractor->descriptorType() ); - ts->printf( cvtest::TS::LOG, "Calculated type is %d.\n", calcDescriptors.type() ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - return; - } - - // TODO read and write descriptor extractor parameters and check them - Mat validDescriptors = readDescriptors(); - if( !validDescriptors.empty() ) - compareDescriptors( validDescriptors, calcDescriptors ); - else - { - if( !writeDescriptors( calcDescriptors ) ) - { - ts->printf( cvtest::TS::LOG, "Descriptors can not be written.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - } - else - { - ts->printf( cvtest::TS::LOG, "Compute and write keypoints.\n" ); - fs.open( string(ts->get_data_path()) + FEATURES2D_DIR + "/keypoints.xml.gz", FileStorage::WRITE ); - if( fs.isOpened() ) - { - SurfFeatureDetector fd; - fd.detect(img, keypoints); - write( fs, "keypoints", keypoints ); - } - else - { - ts->printf(cvtest::TS::LOG, "File for writting keypoints can not be opened.\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - } - - void run(int) - { - createDescriptorExtractor(); - if( !dextractor ) - { - ts->printf(cvtest::TS::LOG, "Descriptor extractor is empty.\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - - emptyDataTest(); - regressionTest(); - - ts->set_failed_test_info( cvtest::TS::OK ); - } - - virtual Mat readDescriptors() - { - Mat res = readMatFromBin( string(ts->get_data_path()) + DESCRIPTOR_DIR + "/" + string(name) ); - return res; - } - - virtual bool writeDescriptors( Mat& descs ) - { - writeMatInBin( descs, string(ts->get_data_path()) + DESCRIPTOR_DIR + "/" + string(name) ); - return true; - } - - string name; - const DistanceType maxDist; - Ptr dextractor; - Distance distance; - -private: - CV_DescriptorExtractorTest& operator=(const CV_DescriptorExtractorTest&) { return *this; } -}; - -/*template -class CV_CalonderDescriptorExtractorTest : public CV_DescriptorExtractorTest -{ -public: - CV_CalonderDescriptorExtractorTest( const char* testName, float _normDif, float _prevTime ) : - CV_DescriptorExtractorTest( testName, _normDif, Ptr(), _prevTime ) - {} - -protected: - virtual void createDescriptorExtractor() - { - CV_DescriptorExtractorTest::dextractor = - new CalonderDescriptorExtractor( string(CV_DescriptorExtractorTest::ts->get_data_path()) + - FEATURES2D_DIR + "/calonder_classifier.rtc"); - } -};*/ - -/****************************************************************************************\ -* Algorithmic tests for descriptor matchers * -\****************************************************************************************/ -class CV_DescriptorMatcherTest : public cvtest::BaseTest -{ -public: - CV_DescriptorMatcherTest( const string& _name, const Ptr& _dmatcher, float _badPart ) : - badPart(_badPart), name(_name), dmatcher(_dmatcher) - {} -protected: - static const int dim = 500; - static const int queryDescCount = 300; // must be even number because we split train data in some cases in two - static const int countFactor = 4; // do not change it - const float badPart; - - virtual void run( int ); - void generateData( Mat& query, Mat& train ); - - void emptyDataTest(); - void matchTest( const Mat& query, const Mat& train ); - void knnMatchTest( const Mat& query, const Mat& train ); - void radiusMatchTest( const Mat& query, const Mat& train ); - - string name; - Ptr dmatcher; - -private: - CV_DescriptorMatcherTest& operator=(const CV_DescriptorMatcherTest&) { return *this; } -}; - -void CV_DescriptorMatcherTest::emptyDataTest() -{ - assert( !dmatcher.empty() ); - Mat queryDescriptors, trainDescriptors, mask; - vector trainDescriptorCollection, masks; - vector matches; - vector > vmatches; - - try - { - dmatcher->match( queryDescriptors, trainDescriptors, matches, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "match() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->knnMatch( queryDescriptors, trainDescriptors, vmatches, 2, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "knnMatch() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->radiusMatch( queryDescriptors, trainDescriptors, vmatches, 10.f, mask ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "radiusMatch() on empty descriptors must not generate exception (1).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->add( trainDescriptorCollection ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "add() on empty descriptors must not generate exception.\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->match( queryDescriptors, matches, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "match() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->knnMatch( queryDescriptors, vmatches, 2, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "knnMatch() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - try - { - dmatcher->radiusMatch( queryDescriptors, vmatches, 10.f, masks ); - } - catch(...) - { - ts->printf( cvtest::TS::LOG, "radiusMatch() on empty descriptors must not generate exception (2).\n" ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - -} - -void CV_DescriptorMatcherTest::generateData( Mat& query, Mat& train ) -{ - RNG& rng = theRNG(); - - // Generate query descriptors randomly. - // Descriptor vector elements are integer values. - Mat buf( queryDescCount, dim, CV_32SC1 ); - rng.fill( buf, RNG::UNIFORM, Scalar::all(0), Scalar(3) ); - buf.convertTo( query, CV_32FC1 ); - - // Generate train decriptors as follows: - // copy each query descriptor to train set countFactor times - // and perturb some one element of the copied descriptors in - // in ascending order. General boundaries of the perturbation - // are (0.f, 1.f). - train.create( query.rows*countFactor, query.cols, CV_32FC1 ); - float step = 1.f / countFactor; - for( int qIdx = 0; qIdx < query.rows; qIdx++ ) - { - Mat queryDescriptor = query.row(qIdx); - for( int c = 0; c < countFactor; c++ ) - { - int tIdx = qIdx * countFactor + c; - Mat trainDescriptor = train.row(tIdx); - queryDescriptor.copyTo( trainDescriptor ); - int elem = rng(dim); - float diff = rng.uniform( step*c, step*(c+1) ); - trainDescriptor.at(0, elem) += diff; - } - } -} - -void CV_DescriptorMatcherTest::matchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - - // test const version of match() - { - vector matches; - dmatcher->match( query, train, matches ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test match() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - DMatch match = matches[i]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor) || (match.imgIdx != 0) ) - badCount++; - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test match() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of match() with add() - { - vector matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->match( query, matches, masks ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test match() function (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - DMatch match = matches[i]; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + shift) || (match.imgIdx != 0) ) - badCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + shift) || (match.imgIdx != 1) ) - badCount++; - } - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test match() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } - } -} - -void CV_DescriptorMatcherTest::knnMatchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - - // test const version of knnMatch() - { - const int knn = 3; - - vector > matches; - dmatcher->knnMatch( query, train, matches, knn ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test knnMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != knn ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < knn; k++ ) - { - DMatch match = matches[i][k]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor+k) || (match.imgIdx != 0) ) - localBadCount++; - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test knnMatch() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of knnMatch() with add() - { - const int knn = 2; - vector > matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->knnMatch( query, matches, knn, masks ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test knnMatch() function (2).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != knn ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < knn; k++ ) - { - DMatch match = matches[i][k]; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + k + shift) || - (match.imgIdx != 0) ) - localBadCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + k + shift) || - (match.imgIdx != 1) ) - localBadCount++; - } - } - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test knnMatch() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } - } -} - -void CV_DescriptorMatcherTest::radiusMatchTest( const Mat& query, const Mat& train ) -{ - dmatcher->clear(); - // test const version of match() - { - const float radius = 1.f/countFactor; - vector > matches; - dmatcher->radiusMatch( query, train, matches, radius ); - - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test radiusMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - else - { - int badCount = 0; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != 1 ) - badCount++; - else - { - DMatch match = matches[i][0]; - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor) || (match.imgIdx != 0) ) - badCount++; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test radiusMatch() function (1).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - } - } - - // test version of match() with add() - { - int n = 3; - const float radius = 1.f/countFactor * n; - vector > matches; - // make add() twice to test such case - dmatcher->add( vector(1,train.rowRange(0, train.rows/2)) ); - dmatcher->add( vector(1,train.rowRange(train.rows/2, train.rows)) ); - // prepare masks (make first nearest match illegal) - vector masks(2); - for(int mi = 0; mi < 2; mi++ ) - { - masks[mi] = Mat(query.rows, train.rows/2, CV_8UC1, Scalar::all(1)); - for( int di = 0; di < queryDescCount/2; di++ ) - masks[mi].col(di*countFactor).setTo(Scalar::all(0)); - } - - dmatcher->radiusMatch( query, matches, radius, masks ); - - //int curRes = cvtest::TS::OK; - if( (int)matches.size() != queryDescCount ) - { - ts->printf(cvtest::TS::LOG, "Incorrect matches count while test radiusMatch() function (1).\n"); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_OUTPUT ); - } - - int badCount = 0; - int shift = dmatcher->isMaskSupported() ? 1 : 0; - int needMatchCount = dmatcher->isMaskSupported() ? n-1 : n; - for( size_t i = 0; i < matches.size(); i++ ) - { - if( (int)matches[i].size() != needMatchCount ) - badCount++; - else - { - int localBadCount = 0; - for( int k = 0; k < needMatchCount; k++ ) - { - DMatch match = matches[i][k]; - { - if( i < queryDescCount/2 ) - { - if( (match.queryIdx != (int)i) || (match.trainIdx != (int)i*countFactor + k + shift) || - (match.imgIdx != 0) ) - localBadCount++; - } - else - { - if( (match.queryIdx != (int)i) || (match.trainIdx != ((int)i-queryDescCount/2)*countFactor + k + shift) || - (match.imgIdx != 1) ) - localBadCount++; - } - } - } - badCount += localBadCount > 0 ? 1 : 0; - } - } - if( (float)badCount > (float)queryDescCount*badPart ) - { - ts->printf( cvtest::TS::LOG, "%f - too large bad matches part while test radiusMatch() function (2).\n", - (float)badCount/(float)queryDescCount ); - ts->set_failed_test_info( cvtest::TS::FAIL_BAD_ACCURACY ); - } - } -} - -void CV_DescriptorMatcherTest::run( int ) -{ - Mat query, train; - generateData( query, train ); - - matchTest( query, train ); - - knnMatchTest( query, train ); - - radiusMatchTest( query, train ); -} - -/****************************************************************************************\ -* Tests registrations * -\****************************************************************************************/ - -/* - * Detectors - */ - - -TEST( Features2d_Detector_SIFT, regression ) -{ - CV_FeatureDetectorTest test( "detector-sift", FeatureDetector::create("SIFT") ); - test.safe_run(); -} - -TEST( Features2d_Detector_SURF, regression ) -{ - CV_FeatureDetectorTest test( "detector-surf", FeatureDetector::create("SURF") ); - test.safe_run(); -} - -/* - * Descriptors - */ -TEST( Features2d_DescriptorExtractor_SIFT, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-sift", 0.03f, - DescriptorExtractor::create("SIFT") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_SURF, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-surf", 0.05f, - DescriptorExtractor::create("SURF") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_OpponentSIFT, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-opponent-sift", 0.18f, - DescriptorExtractor::create("OpponentSIFT") ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_OpponentSURF, regression ) -{ - CV_DescriptorExtractorTest > test( "descriptor-opponent-surf", 0.3f, - DescriptorExtractor::create("OpponentSURF") ); - test.safe_run(); -} - -/*#if CV_SSE2 -TEST( Features2d_DescriptorExtractor_Calonder_uchar, regression ) -{ - CV_CalonderDescriptorExtractorTest > test( "descriptor-calonder-uchar", - std::numeric_limits::epsilon() + 1, - 0.0132175f ); - test.safe_run(); -} - -TEST( Features2d_DescriptorExtractor_Calonder_float, regression ) -{ - CV_CalonderDescriptorExtractorTest > test( "descriptor-calonder-float", - std::numeric_limits::epsilon(), - 0.0221308f ); - test.safe_run(); -} -#endif*/ // CV_SSE2 - -TEST(Features2d_BruteForceDescriptorMatcher_knnMatch, regression) -{ - const int sz = 100; - const int k = 3; - - Ptr ext = DescriptorExtractor::create("SURF"); - ASSERT_TRUE(ext != NULL); - - Ptr det = FeatureDetector::create("SURF"); - //"%YAML:1.0\nhessianThreshold: 8000.\noctaves: 3\noctaveLayers: 4\nupright: 0\n" - ASSERT_TRUE(det != NULL); - - Ptr matcher = DescriptorMatcher::create("BruteForce"); - ASSERT_TRUE(matcher != NULL); - - Mat imgT(sz, sz, CV_8U, Scalar(255)); - line(imgT, Point(20, sz/2), Point(sz-21, sz/2), Scalar(100), 2); - line(imgT, Point(sz/2, 20), Point(sz/2, sz-21), Scalar(100), 2); - vector kpT; - kpT.push_back( KeyPoint(50, 50, 16, 0, 20000, 1, -1) ); - kpT.push_back( KeyPoint(42, 42, 16, 160, 10000, 1, -1) ); - Mat descT; - ext->compute(imgT, kpT, descT); - - Mat imgQ(sz, sz, CV_8U, Scalar(255)); - line(imgQ, Point(30, sz/2), Point(sz-31, sz/2), Scalar(100), 3); - line(imgQ, Point(sz/2, 30), Point(sz/2, sz-31), Scalar(100), 3); - vector kpQ; - det->detect(imgQ, kpQ); - Mat descQ; - ext->compute(imgQ, kpQ, descQ); - - vector > matches; - - matcher->knnMatch(descQ, descT, matches, k); - - //cout << "\nBest " << k << " matches to " << descT.rows << " train desc-s." << endl; - ASSERT_EQ(descQ.rows, static_cast(matches.size())); - for(size_t i = 0; i(matches[i].size())); - for(size_t j = 0; j " << matches[i][j].trainIdx << endl; - ASSERT_EQ(matches[i][j].queryIdx, static_cast(i)); - } - } -} - -/*TEST(Features2d_DescriptorExtractorParamTest, regression) -{ - Ptr s = DescriptorExtractor::create("SURF"); - ASSERT_STREQ(s->paramHelp("extended").c_str(), ""); -} -*/ - -class CV_DetectPlanarTest : public cvtest::BaseTest -{ -public: - CV_DetectPlanarTest(const string& _fname, int _min_ninliers) : fname(_fname), min_ninliers(_min_ninliers) {} - -protected: - void run(int) - { - Ptr f = Algorithm::create("Feature2D." + fname); - if(!f) - return; - string path = string(ts->get_data_path()) + "detectors_descriptors_evaluation/planar/"; - string imgname1 = path + "box.png"; - string imgname2 = path + "box_in_scene.png"; - Mat img1 = imread(imgname1, 0); - Mat img2 = imread(imgname2, 0); - if( img1.empty() || img2.empty() ) - { - ts->printf( cvtest::TS::LOG, "missing %s and/or %s\n", imgname1.c_str(), imgname2.c_str()); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - vector kpt1, kpt2; - Mat d1, d2; - f->operator()(img1, Mat(), kpt1, d1); - f->operator()(img1, Mat(), kpt2, d2); - for( size_t i = 0; i < kpt1.size(); i++ ) - CV_Assert(kpt1[i].response > 0 ); - for( size_t i = 0; i < kpt2.size(); i++ ) - CV_Assert(kpt2[i].response > 0 ); - - vector matches; - BFMatcher(f->defaultNorm(), true).match(d1, d2, matches); - - vector pt1, pt2; - for( size_t i = 0; i < matches.size(); i++ ) { - pt1.push_back(kpt1[matches[i].queryIdx].pt); - pt2.push_back(kpt2[matches[i].trainIdx].pt); - } - - Mat inliers, H = findHomography(pt1, pt2, RANSAC, 10, inliers); - int ninliers = countNonZero(inliers); - - if( ninliers < min_ninliers ) - { - ts->printf( cvtest::TS::LOG, "too little inliers (%d) vs expected %d\n", ninliers, min_ninliers); - ts->set_failed_test_info( cvtest::TS::FAIL_INVALID_TEST_DATA ); - return; - } - } - - string fname; - int min_ninliers; -}; - -TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80); test.safe_run(); } -TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80); test.safe_run(); } - -class FeatureDetectorUsingMaskTest : public cvtest::BaseTest -{ -public: - FeatureDetectorUsingMaskTest(const Ptr& featureDetector) : - featureDetector_(featureDetector) - { - CV_Assert(featureDetector_); - } - -protected: - - void run(int) - { - const int nStepX = 2; - const int nStepY = 2; - - const string imageFilename = string(ts->get_data_path()) + "/features2d/tsukuba.png"; - - Mat image = imread(imageFilename); - if(image.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - Mat mask(image.size(), CV_8U); - - const int stepX = image.size().width / nStepX; - const int stepY = image.size().height / nStepY; - - vector keyPoints; - vector points; - for(int i=0; idetect(image, keyPoints, mask); - KeyPoint::convert(keyPoints, points); - - for(size_t k=0; kprintf(cvtest::TS::LOG, "The feature point is outside of the mask."); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - } - } - - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector_; -}; - -TEST(Features2d_SIFT_using_mask, regression) -{ - FeatureDetectorUsingMaskTest test(Algorithm::create("Feature2D.SIFT")); - test.safe_run(); -} - -TEST(DISABLED_Features2d_SURF_using_mask, regression) -{ - FeatureDetectorUsingMaskTest test(Algorithm::create("Feature2D.SURF")); - test.safe_run(); -} diff --git a/modules/nonfree/test/test_keypoints.cpp b/modules/nonfree/test/test_keypoints.cpp deleted file mode 100644 index b046d7534c..0000000000 --- a/modules/nonfree/test/test_keypoints.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/highgui.hpp" - -using namespace std; -using namespace cv; - -const string FEATURES2D_DIR = "features2d"; -const string IMAGE_FILENAME = "tsukuba.png"; - -/****************************************************************************************\ -* Test for KeyPoint * -\****************************************************************************************/ - -class CV_FeatureDetectorKeypointsTest : public cvtest::BaseTest -{ -public: - CV_FeatureDetectorKeypointsTest(const Ptr& _detector) : - detector(_detector) {} - -protected: - virtual void run(int) - { - cv::initModule_features2d(); - CV_Assert(detector); - string imgFilename = string(ts->get_data_path()) + FEATURES2D_DIR + "/" + IMAGE_FILENAME; - - // Read the test image. - Mat image = imread(imgFilename); - if(image.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imgFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints; - detector->detect(image, keypoints); - - if(keypoints.empty()) - { - ts->printf(cvtest::TS::LOG, "Detector can't find keypoints in image.\n"); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - Rect r(0, 0, image.cols, image.rows); - for(size_t i = 0; i < keypoints.size(); i++) - { - const KeyPoint& kp = keypoints[i]; - - if(!r.contains(kp.pt)) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::pt is out of image (x=%f, y=%f).\n", kp.pt.x, kp.pt.y); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - if(kp.size <= 0.f) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::size is not positive (%f).\n", kp.size); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - if((kp.angle < 0.f && kp.angle != -1.f) || kp.angle >= 360.f) - { - ts->printf(cvtest::TS::LOG, "KeyPoint::angle is out of range [0, 360). It's %f.\n", kp.angle); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - } - ts->set_failed_test_info(cvtest::TS::OK); - } - - Ptr detector; -}; - - -// Registration of tests - -TEST(Features2d_Detector_Keypoints_SURF, validation) -{ - CV_FeatureDetectorKeypointsTest test(Algorithm::create("Feature2D.SURF")); - test.safe_run(); -} - -TEST(Features2d_Detector_Keypoints_SIFT, validation) -{ - CV_FeatureDetectorKeypointsTest test(FeatureDetector::create("SIFT")); - test.safe_run(); -} diff --git a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp b/modules/nonfree/test/test_rotation_and_scale_invariance.cpp deleted file mode 100644 index 47efc60eb8..0000000000 --- a/modules/nonfree/test/test_rotation_and_scale_invariance.cpp +++ /dev/null @@ -1,710 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of Intel Corporation may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" -#include "opencv2/highgui.hpp" - -using namespace std; -using namespace cv; - -const string IMAGE_TSUKUBA = "/features2d/tsukuba.png"; -const string IMAGE_BIKES = "/detectors_descriptors_evaluation/images_datasets/bikes/img1.png"; - -#define SHOW_DEBUG_LOG 0 - -static -Mat generateHomography(float angle) -{ - // angle - rotation around Oz in degrees - float angleRadian = static_cast(angle * CV_PI / 180); - Mat H = Mat::eye(3, 3, CV_32FC1); - H.at(0,0) = H.at(1,1) = std::cos(angleRadian); - H.at(0,1) = -std::sin(angleRadian); - H.at(1,0) = std::sin(angleRadian); - - return H; -} - -static -Mat rotateImage(const Mat& srcImage, float angle, Mat& dstImage, Mat& dstMask) -{ - // angle - rotation around Oz in degrees - float diag = std::sqrt(static_cast(srcImage.cols * srcImage.cols + srcImage.rows * srcImage.rows)); - Mat LUShift = Mat::eye(3, 3, CV_32FC1); // left up - LUShift.at(0,2) = static_cast(-srcImage.cols/2); - LUShift.at(1,2) = static_cast(-srcImage.rows/2); - Mat RDShift = Mat::eye(3, 3, CV_32FC1); // right down - RDShift.at(0,2) = diag/2; - RDShift.at(1,2) = diag/2; - Size sz(cvRound(diag), cvRound(diag)); - - Mat srcMask(srcImage.size(), CV_8UC1, Scalar(255)); - - Mat H = RDShift * generateHomography(angle) * LUShift; - warpPerspective(srcImage, dstImage, H, sz); - warpPerspective(srcMask, dstMask, H, sz); - - return H; -} - -void rotateKeyPoints(const vector& src, const Mat& H, float angle, vector& dst) -{ - // suppose that H is rotation given from rotateImage() and angle has value passed to rotateImage() - vector srcCenters, dstCenters; - KeyPoint::convert(src, srcCenters); - - perspectiveTransform(srcCenters, dstCenters, H); - - dst = src; - for(size_t i = 0; i < dst.size(); i++) - { - dst[i].pt = dstCenters[i]; - float dstAngle = src[i].angle + angle; - if(dstAngle >= 360.f) - dstAngle -= 360.f; - dst[i].angle = dstAngle; - } -} - -void scaleKeyPoints(const vector& src, vector& dst, float scale) -{ - dst.resize(src.size()); - for(size_t i = 0; i < src.size(); i++) - dst[i] = KeyPoint(src[i].pt.x * scale, src[i].pt.y * scale, src[i].size * scale, src[i].angle); -} - -static -float calcCirclesIntersectArea(const Point2f& p0, float r0, const Point2f& p1, float r1) -{ - float c = static_cast(norm(p0 - p1)), sqr_c = c * c; - - float sqr_r0 = r0 * r0; - float sqr_r1 = r1 * r1; - - if(r0 + r1 <= c) - return 0; - - float minR = std::min(r0, r1); - float maxR = std::max(r0, r1); - if(c + minR <= maxR) - return static_cast(CV_PI * minR * minR); - - float cos_halfA0 = (sqr_r0 + sqr_c - sqr_r1) / (2 * r0 * c); - float cos_halfA1 = (sqr_r1 + sqr_c - sqr_r0) / (2 * r1 * c); - - float A0 = 2 * acos(cos_halfA0); - float A1 = 2 * acos(cos_halfA1); - - return 0.5f * sqr_r0 * (A0 - sin(A0)) + - 0.5f * sqr_r1 * (A1 - sin(A1)); -} - -static -float calcIntersectRatio(const Point2f& p0, float r0, const Point2f& p1, float r1) -{ - float intersectArea = calcCirclesIntersectArea(p0, r0, p1, r1); - float unionArea = static_cast(CV_PI) * (r0 * r0 + r1 * r1) - intersectArea; - return intersectArea / unionArea; -} - -static -void matchKeyPoints(const vector& keypoints0, const Mat& H, - const vector& keypoints1, - vector& matches) -{ - vector points0; - KeyPoint::convert(keypoints0, points0); - Mat points0t; - if(H.empty()) - points0t = Mat(points0); - else - perspectiveTransform(Mat(points0), points0t, H); - - matches.clear(); - vector usedMask(keypoints1.size(), 0); - for(int i0 = 0; i0 < static_cast(keypoints0.size()); i0++) - { - int nearestPointIndex = -1; - float maxIntersectRatio = 0.f; - const float r0 = 0.5f * keypoints0[i0].size; - for(size_t i1 = 0; i1 < keypoints1.size(); i1++) - { - if(nearestPointIndex >= 0 && usedMask[i1]) - continue; - - float r1 = 0.5f * keypoints1[i1].size; - float intersectRatio = calcIntersectRatio(points0t.at(i0), r0, - keypoints1[i1].pt, r1); - if(intersectRatio > maxIntersectRatio) - { - maxIntersectRatio = intersectRatio; - nearestPointIndex = static_cast(i1); - } - } - - matches.push_back(DMatch(i0, nearestPointIndex, maxIntersectRatio)); - if(nearestPointIndex >= 0) - usedMask[nearestPointIndex] = 1; - } -} - -static void removeVerySmallKeypoints(vector& keypoints) -{ - size_t i, j = 0, n = keypoints.size(); - for( i = 0; i < n; i++ ) - { - if( (keypoints[i].octave & 128) != 0 ) - ; - else - keypoints[j++] = keypoints[i]; - } - keypoints.resize(j); -} - - -class DetectorRotationInvarianceTest : public cvtest::BaseTest -{ -public: - DetectorRotationInvarianceTest(const Ptr& _featureDetector, - float _minKeyPointMatchesRatio, - float _minAngleInliersRatio) : - featureDetector(_featureDetector), - minKeyPointMatchesRatio(_minKeyPointMatchesRatio), - minAngleInliersRatio(_minAngleInliersRatio) - { - CV_Assert(featureDetector); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_TSUKUBA; - - // Read test data - Mat image0 = imread(imageFilename), image1, mask1; - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - const int maxAngle = 360, angleStep = 15; - for(int angle = 0; angle < maxAngle; angle += angleStep) - { - Mat H = rotateImage(image0, static_cast(angle), image1, mask1); - - vector keypoints1; - featureDetector->detect(image1, keypoints1, mask1); - removeVerySmallKeypoints(keypoints1); - - vector matches; - matchKeyPoints(keypoints0, H, keypoints1, matches); - - int angleInliersCount = 0; - - const float minIntersectRatio = 0.5f; - int keyPointMatchesCount = 0; - for(size_t m = 0; m < matches.size(); m++) - { - if(matches[m].distance < minIntersectRatio) - continue; - - keyPointMatchesCount++; - - // Check does this inlier have consistent angles - const float maxAngleDiff = 15.f; // grad - float angle0 = keypoints0[matches[m].queryIdx].angle; - float angle1 = keypoints1[matches[m].trainIdx].angle; - if(angle0 == -1 || angle1 == -1) - CV_Error(Error::StsBadArg, "Given FeatureDetector is not rotation invariant, it can not be tested here.\n"); - CV_Assert(angle0 >= 0.f && angle0 < 360.f); - CV_Assert(angle1 >= 0.f && angle1 < 360.f); - - float rotAngle0 = angle0 + angle; - if(rotAngle0 >= 360.f) - rotAngle0 -= 360.f; - - float angleDiff = std::max(rotAngle0, angle1) - std::min(rotAngle0, angle1); - angleDiff = std::min(angleDiff, static_cast(360.f - angleDiff)); - CV_Assert(angleDiff >= 0.f); - bool isAngleCorrect = angleDiff < maxAngleDiff; - if(isAngleCorrect) - angleInliersCount++; - } - - float keyPointMatchesRatio = static_cast(keyPointMatchesCount) / keypoints0.size(); - if(keyPointMatchesRatio < minKeyPointMatchesRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect keyPointMatchesRatio: curr = %f, min = %f.\n", - keyPointMatchesRatio, minKeyPointMatchesRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - - if(keyPointMatchesCount) - { - float angleInliersRatio = static_cast(angleInliersCount) / keyPointMatchesCount; - if(angleInliersRatio < minAngleInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect angleInliersRatio: curr = %f, min = %f.\n", - angleInliersRatio, minAngleInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - } -#if SHOW_DEBUG_LOG - std::cout << "keyPointMatchesRatio - " << keyPointMatchesRatio - << " - angleInliersRatio " << static_cast(angleInliersCount) / keyPointMatchesCount << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - float minKeyPointMatchesRatio; - float minAngleInliersRatio; -}; - -class DescriptorRotationInvarianceTest : public cvtest::BaseTest -{ -public: - DescriptorRotationInvarianceTest(const Ptr& _featureDetector, - const Ptr& _descriptorExtractor, - int _normType, - float _minDescInliersRatio) : - featureDetector(_featureDetector), - descriptorExtractor(_descriptorExtractor), - normType(_normType), - minDescInliersRatio(_minDescInliersRatio) - { - CV_Assert(featureDetector); - CV_Assert(descriptorExtractor); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_TSUKUBA; - - // Read test data - Mat image0 = imread(imageFilename), image1, mask1; - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - Mat descriptors0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - descriptorExtractor->compute(image0, keypoints0, descriptors0); - - BFMatcher bfmatcher(normType); - - const float minIntersectRatio = 0.5f; - const int maxAngle = 360, angleStep = 15; - for(int angle = 0; angle < maxAngle; angle += angleStep) - { - Mat H = rotateImage(image0, static_cast(angle), image1, mask1); - - vector keypoints1; - rotateKeyPoints(keypoints0, H, static_cast(angle), keypoints1); - Mat descriptors1; - descriptorExtractor->compute(image1, keypoints1, descriptors1); - - vector descMatches; - bfmatcher.match(descriptors0, descriptors1, descMatches); - - int descInliersCount = 0; - for(size_t m = 0; m < descMatches.size(); m++) - { - const KeyPoint& transformed_p0 = keypoints1[descMatches[m].queryIdx]; - const KeyPoint& p1 = keypoints1[descMatches[m].trainIdx]; - if(calcIntersectRatio(transformed_p0.pt, 0.5f * transformed_p0.size, - p1.pt, 0.5f * p1.size) >= minIntersectRatio) - { - descInliersCount++; - } - } - - float descInliersRatio = static_cast(descInliersCount) / keypoints0.size(); - if(descInliersRatio < minDescInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect descInliersRatio: curr = %f, min = %f.\n", - descInliersRatio, minDescInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } -#if SHOW_DEBUG_LOG - std::cout << "descInliersRatio " << static_cast(descInliersCount) / keypoints0.size() << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - Ptr descriptorExtractor; - int normType; - float minDescInliersRatio; -}; - - -class DetectorScaleInvarianceTest : public cvtest::BaseTest -{ -public: - DetectorScaleInvarianceTest(const Ptr& _featureDetector, - float _minKeyPointMatchesRatio, - float _minScaleInliersRatio) : - featureDetector(_featureDetector), - minKeyPointMatchesRatio(_minKeyPointMatchesRatio), - minScaleInliersRatio(_minScaleInliersRatio) - { - CV_Assert(featureDetector); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_BIKES; - - // Read test data - Mat image0 = imread(imageFilename); - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - for(int scaleIdx = 1; scaleIdx <= 3; scaleIdx++) - { - float scale = 1.f + scaleIdx * 0.5f; - Mat image1; - resize(image0, image1, Size(), 1./scale, 1./scale); - - vector keypoints1, osiKeypoints1; // osi - original size image - featureDetector->detect(image1, keypoints1); - removeVerySmallKeypoints(keypoints1); - if(keypoints1.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - - if(keypoints1.size() > keypoints0.size()) - { - ts->printf(cvtest::TS::LOG, "Strange behavior of the detector. " - "It gives more points count in an image of the smaller size.\n" - "original size (%d, %d), keypoints count = %d\n" - "reduced size (%d, %d), keypoints count = %d\n", - image0.cols, image0.rows, keypoints0.size(), - image1.cols, image1.rows, keypoints1.size()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_OUTPUT); - return; - } - - scaleKeyPoints(keypoints1, osiKeypoints1, scale); - - vector matches; - // image1 is query image (it's reduced image0) - // image0 is train image - matchKeyPoints(osiKeypoints1, Mat(), keypoints0, matches); - - const float minIntersectRatio = 0.5f; - int keyPointMatchesCount = 0; - int scaleInliersCount = 0; - - for(size_t m = 0; m < matches.size(); m++) - { - if(matches[m].distance < minIntersectRatio) - continue; - - keyPointMatchesCount++; - - // Check does this inlier have consistent sizes - const float maxSizeDiff = 0.8f;//0.9f; // grad - float size0 = keypoints0[matches[m].trainIdx].size; - float size1 = osiKeypoints1[matches[m].queryIdx].size; - CV_Assert(size0 > 0 && size1 > 0); - if(std::min(size0, size1) > maxSizeDiff * std::max(size0, size1)) - scaleInliersCount++; - } - - float keyPointMatchesRatio = static_cast(keyPointMatchesCount) / keypoints1.size(); - if(keyPointMatchesRatio < minKeyPointMatchesRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect keyPointMatchesRatio: curr = %f, min = %f.\n", - keyPointMatchesRatio, minKeyPointMatchesRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - - if(keyPointMatchesCount) - { - float scaleInliersRatio = static_cast(scaleInliersCount) / keyPointMatchesCount; - if(scaleInliersRatio < minScaleInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect scaleInliersRatio: curr = %f, min = %f.\n", - scaleInliersRatio, minScaleInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } - } -#if SHOW_DEBUG_LOG - std::cout << "keyPointMatchesRatio - " << keyPointMatchesRatio - << " - scaleInliersRatio " << static_cast(scaleInliersCount) / keyPointMatchesCount << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - float minKeyPointMatchesRatio; - float minScaleInliersRatio; -}; - -class DescriptorScaleInvarianceTest : public cvtest::BaseTest -{ -public: - DescriptorScaleInvarianceTest(const Ptr& _featureDetector, - const Ptr& _descriptorExtractor, - int _normType, - float _minDescInliersRatio) : - featureDetector(_featureDetector), - descriptorExtractor(_descriptorExtractor), - normType(_normType), - minDescInliersRatio(_minDescInliersRatio) - { - CV_Assert(featureDetector); - CV_Assert(descriptorExtractor); - } - -protected: - - void run(int) - { - const string imageFilename = string(ts->get_data_path()) + IMAGE_BIKES; - - // Read test data - Mat image0 = imread(imageFilename); - if(image0.empty()) - { - ts->printf(cvtest::TS::LOG, "Image %s can not be read.\n", imageFilename.c_str()); - ts->set_failed_test_info(cvtest::TS::FAIL_INVALID_TEST_DATA); - return; - } - - vector keypoints0; - featureDetector->detect(image0, keypoints0); - removeVerySmallKeypoints(keypoints0); - if(keypoints0.size() < 15) - CV_Error(Error::StsAssert, "Detector gives too few points in a test image\n"); - Mat descriptors0; - descriptorExtractor->compute(image0, keypoints0, descriptors0); - - BFMatcher bfmatcher(normType); - for(int scaleIdx = 1; scaleIdx <= 3; scaleIdx++) - { - float scale = 1.f + scaleIdx * 0.5f; - - Mat image1; - resize(image0, image1, Size(), 1./scale, 1./scale); - - vector keypoints1; - scaleKeyPoints(keypoints0, keypoints1, 1.0f/scale); - Mat descriptors1; - descriptorExtractor->compute(image1, keypoints1, descriptors1); - - vector descMatches; - bfmatcher.match(descriptors0, descriptors1, descMatches); - - const float minIntersectRatio = 0.5f; - int descInliersCount = 0; - for(size_t m = 0; m < descMatches.size(); m++) - { - const KeyPoint& transformed_p0 = keypoints0[descMatches[m].queryIdx]; - const KeyPoint& p1 = keypoints0[descMatches[m].trainIdx]; - if(calcIntersectRatio(transformed_p0.pt, 0.5f * transformed_p0.size, - p1.pt, 0.5f * p1.size) >= minIntersectRatio) - { - descInliersCount++; - } - } - - float descInliersRatio = static_cast(descInliersCount) / keypoints0.size(); - if(descInliersRatio < minDescInliersRatio) - { - ts->printf(cvtest::TS::LOG, "Incorrect descInliersRatio: curr = %f, min = %f.\n", - descInliersRatio, minDescInliersRatio); - ts->set_failed_test_info(cvtest::TS::FAIL_BAD_ACCURACY); - return; - } -#if SHOW_DEBUG_LOG - std::cout << "descInliersRatio " << static_cast(descInliersCount) / keypoints0.size() << std::endl; -#endif - } - ts->set_failed_test_info( cvtest::TS::OK ); - } - - Ptr featureDetector; - Ptr descriptorExtractor; - int normType; - float minKeyPointMatchesRatio; - float minDescInliersRatio; -}; - -// Tests registration - -/* - * Detector's rotation invariance check - */ -TEST(Features2d_RotationInvariance_Detector_SURF, regression) -{ - DetectorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), - 0.44f, - 0.76f); - test.safe_run(); -} - -TEST(Features2d_RotationInvariance_Detector_SIFT, DISABLED_regression) -{ - DetectorRotationInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - 0.45f, - 0.70f); - test.safe_run(); -} - -/* - * Descriptors's rotation invariance check - */ -TEST(Features2d_RotationInvariance_Descriptor_SURF, regression) -{ - DescriptorRotationInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), - NORM_L1, - 0.83f); - test.safe_run(); -} - -TEST(Features2d_RotationInvariance_Descriptor_SIFT, regression) -{ - DescriptorRotationInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - Algorithm::create("Feature2D.SIFT"), - NORM_L1, - 0.98f); - test.safe_run(); -} - -/* - * Detector's scale invariance check - */ -TEST(Features2d_ScaleInvariance_Detector_SURF, regression) -{ - DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), - 0.64f, - 0.84f); - test.safe_run(); -} - -TEST(Features2d_ScaleInvariance_Detector_SIFT, regression) -{ - DetectorScaleInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - 0.69f, - 0.99f); - test.safe_run(); -} - -/* - * Descriptor's scale invariance check - */ -TEST(Features2d_ScaleInvariance_Descriptor_SURF, regression) -{ - DescriptorScaleInvarianceTest test(Algorithm::create("Feature2D.SURF"), - Algorithm::create("Feature2D.SURF"), - NORM_L1, - 0.61f); - test.safe_run(); -} - -TEST(Features2d_ScaleInvariance_Descriptor_SIFT, regression) -{ - DescriptorScaleInvarianceTest test(Algorithm::create("Feature2D.SIFT"), - Algorithm::create("Feature2D.SIFT"), - NORM_L1, - 0.78f); - test.safe_run(); -} - - -TEST(Features2d_RotationInvariance2_Detector_SURF, regression) -{ - Mat cross(100, 100, CV_8UC1, Scalar(255)); - line(cross, Point(30, 50), Point(69, 50), Scalar(100), 3); - line(cross, Point(50, 30), Point(50, 69), Scalar(100), 3); - - SURF surf(8000., 3, 4, true, false); - - vector keypoints; - - surf(cross, noArray(), keypoints); - - ASSERT_EQ(keypoints.size(), (vector::size_type) 5); - ASSERT_LT( fabs(keypoints[1].response - keypoints[2].response), 1e-6); - ASSERT_LT( fabs(keypoints[1].response - keypoints[3].response), 1e-6); - ASSERT_LT( fabs(keypoints[1].response - keypoints[4].response), 1e-6); -} diff --git a/modules/nonfree/test/test_surf.cuda.cpp b/modules/nonfree/test/test_surf.cuda.cpp deleted file mode 100644 index 4011f3cc3f..0000000000 --- a/modules/nonfree/test/test_surf.cuda.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" - -#ifdef HAVE_CUDA - -using namespace cvtest; - -///////////////////////////////////////////////////////////////////////////////////////////////// -// SURF - -#ifdef HAVE_OPENCV_CUDAARITHM - -namespace -{ - IMPLEMENT_PARAM_CLASS(SURF_HessianThreshold, double) - IMPLEMENT_PARAM_CLASS(SURF_Octaves, int) - IMPLEMENT_PARAM_CLASS(SURF_OctaveLayers, int) - IMPLEMENT_PARAM_CLASS(SURF_Extended, bool) - IMPLEMENT_PARAM_CLASS(SURF_Upright, bool) -} - -PARAM_TEST_CASE(SURF, SURF_HessianThreshold, SURF_Octaves, SURF_OctaveLayers, SURF_Extended, SURF_Upright) -{ - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - virtual void SetUp() - { - hessianThreshold = GET_PARAM(0); - nOctaves = GET_PARAM(1); - nOctaveLayers = GET_PARAM(2); - extended = GET_PARAM(3); - upright = GET_PARAM(4); - } -}; - -CUDA_TEST_P(SURF, Detector) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(loadMat(image), cv::cuda::GpuMat(), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, cv::noArray(), keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.95); -} - -CUDA_TEST_P(SURF, Detector_Masked) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::Mat mask(image.size(), CV_8UC1, cv::Scalar::all(1)); - mask(cv::Range(0, image.rows / 2), cv::Range(0, image.cols / 2)).setTo(cv::Scalar::all(0)); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(loadMat(image), loadMat(mask), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, mask, keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.95); -} - -CUDA_TEST_P(SURF, Descriptor) -{ - cv::Mat image = readImage("../gpu/features2d/aloe.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::cuda::SURF_CUDA surf; - surf.hessianThreshold = hessianThreshold; - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints; - surf_gold(image, cv::noArray(), keypoints); - - cv::cuda::GpuMat descriptors; - surf(loadMat(image), cv::cuda::GpuMat(), keypoints, descriptors, true); - - cv::Mat descriptors_gold; - surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); - - cv::BFMatcher matcher(surf.defaultNorm()); - std::vector matches; - matcher.match(descriptors_gold, cv::Mat(descriptors), matches); - - int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); - double matchedRatio = static_cast(matchedCount) / keypoints.size(); - - EXPECT_GT(matchedRatio, 0.6); -} - -INSTANTIATE_TEST_CASE_P(CUDA_Features2D, SURF, testing::Combine( - testing::Values(SURF_HessianThreshold(100.0), SURF_HessianThreshold(500.0), SURF_HessianThreshold(1000.0)), - testing::Values(SURF_Octaves(3), SURF_Octaves(4)), - testing::Values(SURF_OctaveLayers(2), SURF_OctaveLayers(3)), - testing::Values(SURF_Extended(false), SURF_Extended(true)), - testing::Values(SURF_Upright(false), SURF_Upright(true)))); - -#endif // HAVE_OPENCV_CUDAARITHM - -#endif // HAVE_CUDA diff --git a/modules/nonfree/test/test_surf.ocl.cpp b/modules/nonfree/test/test_surf.ocl.cpp deleted file mode 100644 index 217460a79d..0000000000 --- a/modules/nonfree/test/test_surf.ocl.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2010-2012, Multicoreware, Inc., all rights reserved. -// Copyright (C) 2010-2012, Advanced Micro Devices, Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// @Authors -// Peng Xiao, pengxiao@multicorewareinc.com -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#include "test_precomp.hpp" - -#ifdef HAVE_OPENCV_OCL - -using namespace std; -using std::tr1::get; - -static bool keyPointsEquals(const cv::KeyPoint& p1, const cv::KeyPoint& p2) -{ - const double maxPtDif = 0.1; - const double maxSizeDif = 0.1; - const double maxAngleDif = 0.1; - const double maxResponseDif = 0.01; - - double dist = cv::norm(p1.pt - p2.pt); - - if (dist < maxPtDif && - fabs(p1.size - p2.size) < maxSizeDif && - abs(p1.angle - p2.angle) < maxAngleDif && - abs(p1.response - p2.response) < maxResponseDif && - p1.octave == p2.octave && - p1.class_id == p2.class_id) - { - return true; - } - - return false; -} - -static int getMatchedPointsCount(std::vector& gold, std::vector& actual) -{ - std::sort(actual.begin(), actual.end(), perf::comparators::KeypointGreater()); - std::sort(gold.begin(), gold.end(), perf::comparators::KeypointGreater()); - - int validCount = 0; - - for (size_t i = 0; i < gold.size(); ++i) - { - const cv::KeyPoint& p1 = gold[i]; - const cv::KeyPoint& p2 = actual[i]; - - if (keyPointsEquals(p1, p2)) - ++validCount; - } - - return validCount; -} - -static int getMatchedPointsCount(const std::vector& keypoints1, const std::vector& keypoints2, const std::vector& matches) -{ - int validCount = 0; - - for (size_t i = 0; i < matches.size(); ++i) - { - const cv::DMatch& m = matches[i]; - - const cv::KeyPoint& p1 = keypoints1[m.queryIdx]; - const cv::KeyPoint& p2 = keypoints2[m.trainIdx]; - - if (keyPointsEquals(p1, p2)) - ++validCount; - } - - return validCount; -} - -IMPLEMENT_PARAM_CLASS(HessianThreshold, double) -IMPLEMENT_PARAM_CLASS(Octaves, int) -IMPLEMENT_PARAM_CLASS(OctaveLayers, int) -IMPLEMENT_PARAM_CLASS(Extended, bool) -IMPLEMENT_PARAM_CLASS(Upright, bool) - -PARAM_TEST_CASE(SURF, HessianThreshold, Octaves, OctaveLayers, Extended, Upright) -{ - double hessianThreshold; - int nOctaves; - int nOctaveLayers; - bool extended; - bool upright; - - virtual void SetUp() - { - hessianThreshold = get<0>(GetParam()); - nOctaves = get<1>(GetParam()); - nOctaveLayers = get<2>(GetParam()); - extended = get<3>(GetParam()); - upright = get<4>(GetParam()); - } -}; - -TEST_P(SURF, DISABLED_Detector) -{ - cv::Mat image = cv::imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/fruits.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::ocl::SURF_OCL surf; - surf.hessianThreshold = static_cast(hessianThreshold); - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - std::vector keypoints; - surf(cv::ocl::oclMat(image), cv::ocl::oclMat(), keypoints); - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints_gold; - surf_gold(image, cv::noArray(), keypoints_gold); - - ASSERT_EQ(keypoints_gold.size(), keypoints.size()); - int matchedCount = getMatchedPointsCount(keypoints_gold, keypoints); - double matchedRatio = static_cast(matchedCount) / keypoints_gold.size(); - - EXPECT_GT(matchedRatio, 0.99); -} - -TEST_P(SURF, DISABLED_Descriptor) -{ - cv::Mat image = cv::imread(string(cvtest::TS::ptr()->get_data_path()) + "shared/fruits.png", cv::IMREAD_GRAYSCALE); - ASSERT_FALSE(image.empty()); - - cv::ocl::SURF_OCL surf; - surf.hessianThreshold = static_cast(hessianThreshold); - surf.nOctaves = nOctaves; - surf.nOctaveLayers = nOctaveLayers; - surf.extended = extended; - surf.upright = upright; - surf.keypointsRatio = 0.05f; - - cv::SURF surf_gold; - surf_gold.hessianThreshold = hessianThreshold; - surf_gold.nOctaves = nOctaves; - surf_gold.nOctaveLayers = nOctaveLayers; - surf_gold.extended = extended; - surf_gold.upright = upright; - - std::vector keypoints; - surf_gold(image, cv::noArray(), keypoints); - - cv::ocl::oclMat descriptors; - surf(cv::ocl::oclMat(image), cv::ocl::oclMat(), keypoints, descriptors, true); - - cv::Mat descriptors_gold; - surf_gold(image, cv::noArray(), keypoints, descriptors_gold, true); - - cv::BFMatcher matcher(surf.defaultNorm()); - std::vector matches; - matcher.match(descriptors_gold, cv::Mat(descriptors), matches); - - int matchedCount = getMatchedPointsCount(keypoints, keypoints, matches); - double matchedRatio = static_cast(matchedCount) / keypoints.size(); - - EXPECT_GT(matchedRatio, 0.35); -} - -INSTANTIATE_TEST_CASE_P(OCL_Features2D, SURF, testing::Combine( - testing::Values(HessianThreshold(500.0), HessianThreshold(1000.0)), - testing::Values(Octaves(3), Octaves(4)), - testing::Values(OctaveLayers(2), OctaveLayers(3)), - testing::Values(Extended(false), Extended(true)), - testing::Values(Upright(false), Upright(true)))); - -#endif // HAVE_OPENCV_OCL diff --git a/modules/objdetect/doc/erfilter.rst b/modules/objdetect/doc/erfilter.rst deleted file mode 100644 index 85d6bcc7fe..0000000000 --- a/modules/objdetect/doc/erfilter.rst +++ /dev/null @@ -1,211 +0,0 @@ -Scene Text Detection -==================== - -.. highlight:: cpp - -Class-specific Extremal Regions for Scene Text Detection --------------------------------------------------------- - -The scene text detection algorithm described below has been initially proposed by Lukás Neumann & Jiri Matas [Neumann12]. The main idea behind Class-specific Extremal Regions is similar to the MSER in that suitable Extremal Regions (ERs) are selected from the whole component tree of the image. However, this technique differs from MSER in that selection of suitable ERs is done by a sequential classifier trained for character detection, i.e. dropping the stability requirement of MSERs and selecting class-specific (not necessarily stable) regions. - -The component tree of an image is constructed by thresholding by an increasing value step-by-step from 0 to 255 and then linking the obtained connected components from successive levels in a hierarchy by their inclusion relation: - -.. image:: pics/component_tree.png - :width: 100% - -The component tree may conatain a huge number of regions even for a very simple image as shown in the previous image. This number can easily reach the order of 1 x 10^6 regions for an average 1 Megapixel image. In order to efficiently select suitable regions among all the ERs the algorithm make use of a sequential classifier with two differentiated stages. - -In the first stage incrementally computable descriptors (area, perimeter, bounding box, and euler number) are computed (in O(1)) for each region r and used as features for a classifier which estimates the class-conditional probability p(r|character). Only the ERs which correspond to local maximum of the probability p(r|character) are selected (if their probability is above a global limit p_min and the difference between local maximum and local minimum is greater than a \delta_min value). - -In the second stage, the ERs that passed the first stage are classified into character and non-character classes using more informative but also more computationally expensive features. (Hole area ratio, convex hull ratio, and the number of outer boundary inflexion points). - -This ER filtering process is done in different single-channel projections of the input image in order to increase the character localization recall. - -After the ER filtering is done on each input channel, character candidates must be grouped in high-level text blocks (i.e. words, text lines, paragraphs, ...). The grouping algorithm used in this implementation has been proposed by Lluis Gomez and Dimosthenis Karatzas in [Gomez13] and basically consist in finding meaningful groups of regions using a perceptual organization based clustering analisys (see :ocv:func:`erGrouping`). - - -To see the text detector at work, have a look at the textdetection demo: https://github.com/Itseez/opencv/blob/master/samples/cpp/textdetection.cpp - - -.. [Neumann12] Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012. The paper is available online at http://cmp.felk.cvut.cz/~neumalu1/neumann-cvpr2012.pdf - -.. [Gomez13] Gomez L. and Karatzas D.: Multi-script Text Extraction from Natural Scenes, ICDAR 2013. The paper is available online at http://158.109.8.37/files/GoK2013.pdf - - -ERStat ------- -.. ocv:struct:: ERStat - -The ERStat structure represents a class-specific Extremal Region (ER). - -An ER is a 4-connected set of pixels with all its grey-level values smaller than the values in its outer boundary. A class-specific ER is selected (using a classifier) from all the ER's in the component tree of the image. :: - - struct CV_EXPORTS ERStat - { - public: - //! Constructor - explicit ERStat(int level = 256, int pixel = 0, int x = 0, int y = 0); - //! Destructor - ~ERStat() { } - - //! seed point and threshold (max grey-level value) - int pixel; - int level; - - //! incrementally computable features - int area; - int perimeter; - int euler; //!< euler number - Rect rect; //!< bounding box - double raw_moments[2]; //!< order 1 raw moments to derive the centroid - double central_moments[3]; //!< order 2 central moments to construct the covariance matrix - std::deque *crossings;//!< horizontal crossings - float med_crossings; //!< median of the crossings at three different height levels - - //! 2nd stage features - float hole_area_ratio; - float convex_hull_ratio; - float num_inflexion_points; - - //! probability that the ER belongs to the class we are looking for - double probability; - - //! pointers preserving the tree structure of the component tree - ERStat* parent; - ERStat* child; - ERStat* next; - ERStat* prev; - }; - -computeNMChannels ------------------ -Compute the different channels to be processed independently in the N&M algorithm [Neumann12]. - -.. ocv:function:: void computeNMChannels(InputArray _src, OutputArrayOfArrays _channels, int _mode = ERFILTER_NM_RGBLGrad) - - :param _src: Source image. Must be RGB ``CV_8UC3``. - :param _channels: Output vector where computed channels are stored. - :param _mode: Mode of operation. Currently the only available options are: **ERFILTER_NM_RGBLGrad** (used by default) and **ERFILTER_NM_IHSGrad**. - -In N&M algorithm, the combination of intensity (I), hue (H), saturation (S), and gradient magnitude channels (Grad) are used in order to obtain high localization recall. This implementation also provides an alternative combination of red (R), green (G), blue (B), lightness (L), and gradient magnitude (Grad). - - -ERFilter --------- -.. ocv:class:: ERFilter : public Algorithm - -Base class for 1st and 2nd stages of Neumann and Matas scene text detection algorithm [Neumann12]. :: - - class CV_EXPORTS ERFilter : public Algorithm - { - public: - - //! callback with the classifier is made a class. - //! By doing it we hide SVM, Boost etc. Developers can provide their own classifiers - class CV_EXPORTS Callback - { - public: - virtual ~Callback() { } - //! The classifier must return probability measure for the region. - virtual double eval(const ERStat& stat) = 0; - }; - - /*! - the key method. Takes image on input and returns the selected regions in a vector of ERStat - only distinctive ERs which correspond to characters are selected by a sequential classifier - */ - virtual void run( InputArray image, std::vector& regions ) = 0; - - (...) - - }; - - - -ERFilter::Callback ------------------- -Callback with the classifier is made a class. By doing it we hide SVM, Boost etc. Developers can provide their own classifiers to the ERFilter algorithm. - -.. ocv:class:: ERFilter::Callback - -ERFilter::Callback::eval ------------------------- -The classifier must return probability measure for the region. - -.. ocv:function:: double ERFilter::Callback::eval(const ERStat& stat) - - :param stat: The region to be classified - -ERFilter::run -------------- -The key method of ERFilter algorithm. Takes image on input and returns the selected regions in a vector of ERStat only distinctive ERs which correspond to characters are selected by a sequential classifier - -.. ocv:function:: void ERFilter::run( InputArray image, std::vector& regions ) - - :param image: Sinle channel image ``CV_8UC1`` - :param regions: Output for the 1st stage and Input/Output for the 2nd. The selected Extremal Regions are stored here. - -Extracts the component tree (if needed) and filter the extremal regions (ER's) by using a given classifier. - -createERFilterNM1 ------------------ -Create an Extremal Region Filter for the 1st stage classifier of N&M algorithm [Neumann12]. - -.. ocv:function:: Ptr createERFilterNM1( const Ptr& cb, int thresholdDelta = 1, float minArea = 0.00025, float maxArea = 0.13, float minProbability = 0.4, bool nonMaxSuppression = true, float minProbabilityDiff = 0.1 ) - - :param cb: Callback with the classifier. Default classifier can be implicitly load with function :ocv:func:`loadClassifierNM1`, e.g. from file in samples/cpp/trained_classifierNM1.xml - :param thresholdDelta: Threshold step in subsequent thresholds when extracting the component tree - :param minArea: The minimum area (% of image size) allowed for retreived ER's - :param minArea: The maximum area (% of image size) allowed for retreived ER's - :param minProbability: The minimum probability P(er|character) allowed for retreived ER's - :param nonMaxSuppression: Whenever non-maximum suppression is done over the branch probabilities - :param minProbability: The minimum probability difference between local maxima and local minima ERs - -The component tree of the image is extracted by a threshold increased step by step from 0 to 255, incrementally computable descriptors (aspect_ratio, compactness, number of holes, and number of horizontal crossings) are computed for each ER and used as features for a classifier which estimates the class-conditional probability P(er|character). The value of P(er|character) is tracked using the inclusion relation of ER across all thresholds and only the ERs which correspond to local maximum of the probability P(er|character) are selected (if the local maximum of the probability is above a global limit pmin and the difference between local maximum and local minimum is greater than minProbabilityDiff). - -createERFilterNM2 ------------------ -Create an Extremal Region Filter for the 2nd stage classifier of N&M algorithm [Neumann12]. - -.. ocv:function:: Ptr createERFilterNM2( const Ptr& cb, float minProbability = 0.3 ) - - :param cb: Callback with the classifier. Default classifier can be implicitly load with function :ocv:func:`loadClassifierNM2`, e.g. from file in samples/cpp/trained_classifierNM2.xml - :param minProbability: The minimum probability P(er|character) allowed for retreived ER's - -In the second stage, the ERs that passed the first stage are classified into character and non-character classes using more informative but also more computationally expensive features. The classifier uses all the features calculated in the first stage and the following additional features: hole area ratio, convex hull ratio, and number of outer inflexion points. - -loadClassifierNM1 ------------------ -Allow to implicitly load the default classifier when creating an ERFilter object. - -.. ocv:function:: Ptr loadClassifierNM1(const std::string& filename) - - :param filename: The XML or YAML file with the classifier model (e.g. trained_classifierNM1.xml) - -returns a pointer to ERFilter::Callback. - -loadClassifierNM2 ------------------ -Allow to implicitly load the default classifier when creating an ERFilter object. - -.. ocv:function:: Ptr loadClassifierNM2(const std::string& filename) - - :param filename: The XML or YAML file with the classifier model (e.g. trained_classifierNM2.xml) - -returns a pointer to ERFilter::Callback. - -erGrouping ----------- -Find groups of Extremal Regions that are organized as text blocks. - -.. ocv:function:: void erGrouping( InputArrayOfArrays src, std::vector > ®ions, const std::string& filename, float minProbablity, std::vector &groups) - - :param src: Vector of sinle channel images CV_8UC1 from wich the regions were extracted - :param regions: Vector of ER's retreived from the ERFilter algorithm from each channel - :param filename: The XML or YAML file with the classifier model (e.g. trained_classifier_erGrouping.xml) - :param minProbability: The minimum probability for accepting a group - :param groups: The output of the algorithm are stored in this parameter as list of rectangles. - -This function implements the grouping algorithm described in [Gomez13]. Notice that this implementation constrains the results to horizontally-aligned text and latin script (since ERFilter classifiers are trained only for latin script detection). - -The algorithm combines two different clustering techniques in a single parameter-free procedure to detect groups of regions organized as text. The maximally meaningful groups are fist detected in several feature spaces, where each feature space is a combination of proximity information (x,y coordinates) and a similarity measure (intensity, color, size, gradient magnitude, etc.), thus providing a set of hypotheses of text groups. Evidence Accumulation framework is used to combine all these hypotheses to get the final estimate. Each of the resulting groups are finally validated using a classifier in order to assess if they form a valid horizontally-aligned text block. diff --git a/modules/objdetect/doc/latent_svm.rst b/modules/objdetect/doc/latent_svm.rst deleted file mode 100644 index 4b4ff117fa..0000000000 --- a/modules/objdetect/doc/latent_svm.rst +++ /dev/null @@ -1,262 +0,0 @@ -Latent SVM -=============================================================== - -Discriminatively Trained Part Based Models for Object Detection ---------------------------------------------------------------- - -The object detector described below has been initially proposed by -P.F. Felzenszwalb in [Felzenszwalb2010]_. It is based on a -Dalal-Triggs detector that uses a single filter on histogram of -oriented gradients (HOG) features to represent an object category. -This detector uses a sliding window approach, where a filter is -applied at all positions and scales of an image. The first -innovation is enriching the Dalal-Triggs model using a -star-structured part-based model defined by a "root" filter -(analogous to the Dalal-Triggs filter) plus a set of parts filters -and associated deformation models. The score of one of star models -at a particular position and scale within an image is the score of -the root filter at the given location plus the sum over parts of the -maximum, over placements of that part, of the part filter score on -its location minus a deformation cost easuring the deviation of the -part from its ideal location relative to the root. Both root and -part filter scores are defined by the dot product between a filter -(a set of weights) and a subwindow of a feature pyramid computed -from the input image. Another improvement is a representation of the -class of models by a mixture of star models. The score of a mixture -model at a particular position and scale is the maximum over -components, of the score of that component model at the given -location. - -In OpenCV there are C implementation of Latent SVM and C++ wrapper of it. -C version is the structure :ocv:struct:`CvObjectDetection` and a set of functions -working with this structure (see :ocv:func:`cvLoadLatentSvmDetector`, -:ocv:func:`cvReleaseLatentSvmDetector`, :ocv:func:`cvLatentSvmDetectObjects`). -C++ version is the class :ocv:class:`LatentSvmDetector` and has slightly different -functionality in contrast with C version - it supports loading and detection -of several models. - -There are two examples of Latent SVM usage: ``samples/c/latentsvmdetect.cpp`` -and ``samples/cpp/latentsvm_multidetect.cpp``. - -.. highlight:: c - - -CvLSVMFilterPosition --------------------- -.. ocv:struct:: CvLSVMFilterPosition - - Structure describes the position of the filter in the feature pyramid. - - .. ocv:member:: unsigned int l - - level in the feature pyramid - - .. ocv:member:: unsigned int x - - x-coordinate in level l - - .. ocv:member:: unsigned int y - - y-coordinate in level l - - -CvLSVMFilterObject ------------------- -.. ocv:struct:: CvLSVMFilterObject - - Description of the filter, which corresponds to the part of the object. - - .. ocv:member:: CvLSVMFilterPosition V - - ideal (penalty = 0) position of the partial filter - from the root filter position (V_i in the paper) - - .. ocv:member:: float fineFunction[4] - - vector describes penalty function (d_i in the paper) - pf[0] * x + pf[1] * y + pf[2] * x^2 + pf[3] * y^2 - - .. ocv:member:: int sizeX - .. ocv:member:: int sizeY - - Rectangular map (sizeX x sizeY), - every cell stores feature vector (dimension = p) - - .. ocv:member:: int numFeatures - - number of features - - .. ocv:member:: float *H - - matrix of feature vectors to set and get - feature vectors (i,j) used formula H[(j * sizeX + i) * p + k], - where k - component of feature vector in cell (i, j) - -CvLatentSvmDetector -------------------- -.. ocv:struct:: CvLatentSvmDetector - - Structure contains internal representation of trained Latent SVM detector. - - .. ocv:member:: int num_filters - - total number of filters (root plus part) in model - - .. ocv:member:: int num_components - - number of components in model - - .. ocv:member:: int* num_part_filters - - array containing number of part filters for each component - - .. ocv:member:: CvLSVMFilterObject** filters - - root and part filters for all model components - - .. ocv:member:: float* b - - biases for all model components - - .. ocv:member:: float score_threshold - - confidence level threshold - - -CvObjectDetection ------------------ -.. ocv:struct:: CvObjectDetection - - Structure contains the bounding box and confidence level for detected object. - - .. ocv:member:: CvRect rect - - bounding box for a detected object - - .. ocv:member:: float score - - confidence level - - -cvLoadLatentSvmDetector ------------------------ -Loads trained detector from a file. - -.. ocv:function:: CvLatentSvmDetector* cvLoadLatentSvmDetector(const char* filename) - - :param filename: Name of the file containing the description of a trained detector - - -cvReleaseLatentSvmDetector --------------------------- -Release memory allocated for CvLatentSvmDetector structure. - -.. ocv:function:: void cvReleaseLatentSvmDetector(CvLatentSvmDetector** detector) - - :param detector: CvLatentSvmDetector structure to be released - - -cvLatentSvmDetectObjects ------------------------- -Find rectangular regions in the given image that are likely to contain objects -and corresponding confidence levels. - -.. ocv:function:: CvSeq* cvLatentSvmDetectObjects( IplImage* image, CvLatentSvmDetector* detector, CvMemStorage* storage, float overlap_threshold=0.5f, int numThreads=-1 ) - - :param image: image - :param detector: LatentSVM detector in internal representation - :param storage: Memory storage to store the resultant sequence of the object candidate rectangles - :param overlap_threshold: Threshold for the non-maximum suppression algorithm - :param numThreads: Number of threads used in parallel version of the algorithm - -.. highlight:: cpp - -LatentSvmDetector ------------------ -.. ocv:class:: LatentSvmDetector - -This is a C++ wrapping class of Latent SVM. It contains internal representation of several -trained Latent SVM detectors (models) and a set of methods to load the detectors and detect objects -using them. - -LatentSvmDetector::ObjectDetection ----------------------------------- -.. ocv:struct:: LatentSvmDetector::ObjectDetection - - Structure contains the detection information. - - .. ocv:member:: Rect rect - - bounding box for a detected object - - .. ocv:member:: float score - - confidence level - - .. ocv:member:: int classID - - class (model or detector) ID that detect an object - - -LatentSvmDetector::LatentSvmDetector ------------------------------------- -Two types of constructors. - -.. ocv:function:: LatentSvmDetector::LatentSvmDetector() - -.. ocv:function:: LatentSvmDetector::LatentSvmDetector(const vector& filenames, const vector& classNames=vector()) - - - - :param filenames: A set of filenames storing the trained detectors (models). Each file contains one model. See examples of such files here /opencv_extra/testdata/cv/latentsvmdetector/models_VOC2007/. - - :param classNames: A set of trained models names. If it's empty then the name of each model will be constructed from the name of file containing the model. E.g. the model stored in "/home/user/cat.xml" will get the name "cat". - -LatentSvmDetector::~LatentSvmDetector -------------------------------------- -Destructor. - -.. ocv:function:: LatentSvmDetector::~LatentSvmDetector() - -LatentSvmDetector::~clear -------------------------- -Clear all trained models and their names stored in an class object. - -.. ocv:function:: void LatentSvmDetector::clear() - -LatentSvmDetector::load ------------------------ -Load the trained models from given ``.xml`` files and return ``true`` if at least one model was loaded. - -.. ocv:function:: bool LatentSvmDetector::load( const vector& filenames, const vector& classNames=vector() ) - - :param filenames: A set of filenames storing the trained detectors (models). Each file contains one model. See examples of such files here /opencv_extra/testdata/cv/latentsvmdetector/models_VOC2007/. - - :param classNames: A set of trained models names. If it's empty then the name of each model will be constructed from the name of file containing the model. E.g. the model stored in "/home/user/cat.xml" will get the name "cat". - -LatentSvmDetector::detect -------------------------- -Find rectangular regions in the given image that are likely to contain objects of loaded classes (models) -and corresponding confidence levels. - -.. ocv:function:: void LatentSvmDetector::detect( const Mat& image, vector& objectDetections, float overlapThreshold=0.5f, int numThreads=-1 ) - - :param image: An image. - :param objectDetections: The detections: rectangulars, scores and class IDs. - :param overlapThreshold: Threshold for the non-maximum suppression algorithm. - :param numThreads: Number of threads used in parallel version of the algorithm. - -LatentSvmDetector::getClassNames --------------------------------- -Return the class (model) names that were passed in constructor or method ``load`` or extracted from models filenames in those methods. - -.. ocv:function:: const vector& LatentSvmDetector::getClassNames() const - -LatentSvmDetector::getClassCount --------------------------------- -Return a count of loaded models (classes). - -.. ocv:function:: size_t LatentSvmDetector::getClassCount() const - - -.. [Felzenszwalb2010] Felzenszwalb, P. F. and Girshick, R. B. and McAllester, D. and Ramanan, D. *Object Detection with Discriminatively Trained Part Based Models*. PAMI, vol. 32, no. 9, pp. 1627-1645, September 2010 diff --git a/modules/objdetect/doc/objdetect.rst b/modules/objdetect/doc/objdetect.rst index 0cd8cf3ef9..c00e64e59d 100644 --- a/modules/objdetect/doc/objdetect.rst +++ b/modules/objdetect/doc/objdetect.rst @@ -8,5 +8,3 @@ objdetect. Object Detection :maxdepth: 2 cascade_classification - latent_svm - erfilter diff --git a/modules/objdetect/doc/pics/component_tree.png b/modules/objdetect/doc/pics/component_tree.png deleted file mode 100644 index 7391e2de62..0000000000 Binary files a/modules/objdetect/doc/pics/component_tree.png and /dev/null differ diff --git a/modules/objdetect/include/opencv2/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect.hpp index 79e213ee39..4ccb810703 100644 --- a/modules/objdetect/include/opencv2/objdetect.hpp +++ b/modules/objdetect/include/opencv2/objdetect.hpp @@ -315,8 +315,6 @@ public: } -#include "opencv2/objdetect/linemod.hpp" -#include "opencv2/objdetect/erfilter.hpp" #include "opencv2/objdetect/detection_based_tracker.hpp" #endif diff --git a/modules/objdetect/include/opencv2/objdetect/erfilter.hpp b/modules/objdetect/include/opencv2/objdetect/erfilter.hpp deleted file mode 100644 index d7e07d80d8..0000000000 --- a/modules/objdetect/include/opencv2/objdetect/erfilter.hpp +++ /dev/null @@ -1,266 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#ifndef __OPENCV_OBJDETECT_ERFILTER_HPP__ -#define __OPENCV_OBJDETECT_ERFILTER_HPP__ - -#include "opencv2/core.hpp" -#include -#include -#include - -namespace cv -{ - -/*! - Extremal Region Stat structure - - The ERStat structure represents a class-specific Extremal Region (ER). - - An ER is a 4-connected set of pixels with all its grey-level values smaller than the values - in its outer boundary. A class-specific ER is selected (using a classifier) from all the ER's - in the component tree of the image. -*/ -struct CV_EXPORTS ERStat -{ -public: - //! Constructor - explicit ERStat(int level = 256, int pixel = 0, int x = 0, int y = 0); - //! Destructor - ~ERStat() { } - - //! seed point and the threshold (max grey-level value) - int pixel; - int level; - - //! incrementally computable features - int area; - int perimeter; - int euler; //!< euler number - Rect rect; - double raw_moments[2]; //!< order 1 raw moments to derive the centroid - double central_moments[3]; //!< order 2 central moments to construct the covariance matrix - std::deque *crossings;//!< horizontal crossings - float med_crossings; //!< median of the crossings at three different height levels - - //! 2nd stage features - float hole_area_ratio; - float convex_hull_ratio; - float num_inflexion_points; - - // TODO Other features can be added (average color, standard deviation, and such) - - - // TODO shall we include the pixel list whenever available (i.e. after 2nd stage) ? - std::vector *pixels; - - //! probability that the ER belongs to the class we are looking for - double probability; - - //! pointers preserving the tree structure of the component tree - ERStat* parent; - ERStat* child; - ERStat* next; - ERStat* prev; - - //! wenever the regions is a local maxima of the probability - bool local_maxima; - ERStat* max_probability_ancestor; - ERStat* min_probability_ancestor; -}; - -/*! - Base class for 1st and 2nd stages of Neumann and Matas scene text detection algorithms - Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 - - Extracts the component tree (if needed) and filter the extremal regions (ER's) by using a given classifier. -*/ -class CV_EXPORTS ERFilter : public Algorithm -{ -public: - - //! callback with the classifier is made a class. By doing it we hide SVM, Boost etc. - class CV_EXPORTS Callback - { - public: - virtual ~Callback() { } - //! The classifier must return probability measure for the region. - virtual double eval(const ERStat& stat) = 0; //const = 0; //TODO why cannot use const = 0 here? - }; - - /*! - the key method. Takes image on input and returns the selected regions in a vector of ERStat - only distinctive ERs which correspond to characters are selected by a sequential classifier - \param image is the input image - \param regions is output for the first stage, input/output for the second one. - */ - virtual void run( InputArray image, std::vector& regions ) = 0; - - - //! set/get methods to set the algorithm properties, - virtual void setCallback(const Ptr& cb) = 0; - virtual void setThresholdDelta(int thresholdDelta) = 0; - virtual void setMinArea(float minArea) = 0; - virtual void setMaxArea(float maxArea) = 0; - virtual void setMinProbability(float minProbability) = 0; - virtual void setMinProbabilityDiff(float minProbabilityDiff) = 0; - virtual void setNonMaxSuppression(bool nonMaxSuppression) = 0; - virtual int getNumRejected() = 0; -}; - - -/*! - Create an Extremal Region Filter for the 1st stage classifier of N&M algorithm - Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 - - The component tree of the image is extracted by a threshold increased step by step - from 0 to 255, incrementally computable descriptors (aspect_ratio, compactness, - number of holes, and number of horizontal crossings) are computed for each ER - and used as features for a classifier which estimates the class-conditional - probability P(er|character). The value of P(er|character) is tracked using the inclusion - relation of ER across all thresholds and only the ERs which correspond to local maximum - of the probability P(er|character) are selected (if the local maximum of the - probability is above a global limit pmin and the difference between local maximum and - local minimum is greater than minProbabilityDiff). - - \param cb Callback with the classifier. - default classifier can be implicitly load with function loadClassifierNM1() - from file in samples/cpp/trained_classifierNM1.xml - \param thresholdDelta Threshold step in subsequent thresholds when extracting the component tree - \param minArea The minimum area (% of image size) allowed for retreived ER's - \param minArea The maximum area (% of image size) allowed for retreived ER's - \param minProbability The minimum probability P(er|character) allowed for retreived ER's - \param nonMaxSuppression Whenever non-maximum suppression is done over the branch probabilities - \param minProbability The minimum probability difference between local maxima and local minima ERs -*/ -CV_EXPORTS Ptr createERFilterNM1(const Ptr& cb, - int thresholdDelta = 1, float minArea = 0.00025, - float maxArea = 0.13, float minProbability = 0.4, - bool nonMaxSuppression = true, - float minProbabilityDiff = 0.1); - -/*! - Create an Extremal Region Filter for the 2nd stage classifier of N&M algorithm - Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 - - In the second stage, the ERs that passed the first stage are classified into character - and non-character classes using more informative but also more computationally expensive - features. The classifier uses all the features calculated in the first stage and the following - additional features: hole area ratio, convex hull ratio, and number of outer inflexion points. - - \param cb Callback with the classifier - default classifier can be implicitly load with function loadClassifierNM2() - from file in samples/cpp/trained_classifierNM2.xml - \param minProbability The minimum probability P(er|character) allowed for retreived ER's -*/ -CV_EXPORTS Ptr createERFilterNM2(const Ptr& cb, - float minProbability = 0.3); - - -/*! - Allow to implicitly load the default classifier when creating an ERFilter object. - The function takes as parameter the XML or YAML file with the classifier model - (e.g. trained_classifierNM1.xml) returns a pointer to ERFilter::Callback. -*/ - -CV_EXPORTS Ptr loadClassifierNM1(const std::string& filename); - -/*! - Allow to implicitly load the default classifier when creating an ERFilter object. - The function takes as parameter the XML or YAML file with the classifier model - (e.g. trained_classifierNM1.xml) returns a pointer to ERFilter::Callback. -*/ - -CV_EXPORTS Ptr loadClassifierNM2(const std::string& filename); - - -// computeNMChannels operation modes -enum { ERFILTER_NM_RGBLGrad = 0, - ERFILTER_NM_IHSGrad = 1 - }; - -/*! - Compute the different channels to be processed independently in the N&M algorithm - Neumann L., Matas J.: Real-Time Scene Text Localization and Recognition, CVPR 2012 - - In N&M algorithm, the combination of intensity (I), hue (H), saturation (S), and gradient - magnitude channels (Grad) are used in order to obtain high localization recall. - This implementation also provides an alternative combination of red (R), green (G), blue (B), - lightness (L), and gradient magnitude (Grad). - - \param _src Source image. Must be RGB CV_8UC3. - \param _channels Output vector where computed channels are stored. - \param _mode Mode of operation. Currently the only available options are - ERFILTER_NM_RGBLGrad (by default) and ERFILTER_NM_IHSGrad. - -*/ -CV_EXPORTS void computeNMChannels(InputArray _src, OutputArrayOfArrays _channels, int _mode = ERFILTER_NM_RGBLGrad); - - -/*! - Find groups of Extremal Regions that are organized as text blocks. This function implements - the grouping algorithm described in: - Gomez L. and Karatzas D.: Multi-script Text Extraction from Natural Scenes, ICDAR 2013. - Notice that this implementation constrains the results to horizontally-aligned text and - latin script (since ERFilter classifiers are trained only for latin script detection). - - The algorithm combines two different clustering techniques in a single parameter-free procedure - to detect groups of regions organized as text. The maximally meaningful groups are fist detected - in several feature spaces, where each feature space is a combination of proximity information - (x,y coordinates) and a similarity measure (intensity, color, size, gradient magnitude, etc.), - thus providing a set of hypotheses of text groups. Evidence Accumulation framework is used to - combine all these hypotheses to get the final estimate. Each of the resulting groups are finally - validated using a classifier in order to assest if they form a valid horizontally-aligned text block. - - \param src Vector of sinle channel images CV_8UC1 from wich the regions were extracted. - \param regions Vector of ER's retreived from the ERFilter algorithm from each channel - \param filename The XML or YAML file with the classifier model (e.g. trained_classifier_erGrouping.xml) - \param minProbability The minimum probability for accepting a group - \param groups The output of the algorithm are stored in this parameter as list of rectangles. -*/ -CV_EXPORTS void erGrouping(InputArrayOfArrays src, std::vector > ®ions, - const std::string& filename, float minProbablity, - std::vector &groups); - -} -#endif // _OPENCV_ERFILTER_HPP_ diff --git a/modules/objdetect/include/opencv2/objdetect/linemod.hpp b/modules/objdetect/include/opencv2/objdetect/linemod.hpp deleted file mode 100644 index 46d869926f..0000000000 --- a/modules/objdetect/include/opencv2/objdetect/linemod.hpp +++ /dev/null @@ -1,455 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2009, Willow Garage Inc., all rights reserved. -// Copyright (C) 2013, OpenCV Foundation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's 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. -// -// * The name of the copyright holders may not 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 Intel Corporation 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. -// -//M*/ - -#ifndef __OPENCV_OBJDETECT_LINEMOD_HPP__ -#define __OPENCV_OBJDETECT_LINEMOD_HPP__ - -#include "opencv2/core.hpp" -#include - -/****************************************************************************************\ -* LINE-MOD * -\****************************************************************************************/ - -namespace cv { -namespace linemod { - -/// @todo Convert doxy comments to rst - -/** - * \brief Discriminant feature described by its location and label. - */ -struct CV_EXPORTS Feature -{ - int x; ///< x offset - int y; ///< y offset - int label; ///< Quantization - - Feature() : x(0), y(0), label(0) {} - Feature(int x, int y, int label); - - void read(const FileNode& fn); - void write(FileStorage& fs) const; -}; - -inline Feature::Feature(int _x, int _y, int _label) : x(_x), y(_y), label(_label) {} - -struct CV_EXPORTS Template -{ - int width; - int height; - int pyramid_level; - std::vector features; - - void read(const FileNode& fn); - void write(FileStorage& fs) const; -}; - -/** - * \brief Represents a modality operating over an image pyramid. - */ -class QuantizedPyramid -{ -public: - // Virtual destructor - virtual ~QuantizedPyramid() {} - - /** - * \brief Compute quantized image at current pyramid level for online detection. - * - * \param[out] dst The destination 8-bit image. For each pixel at most one bit is set, - * representing its classification. - */ - virtual void quantize(Mat& dst) const =0; - - /** - * \brief Extract most discriminant features at current pyramid level to form a new template. - * - * \param[out] templ The new template. - */ - virtual bool extractTemplate(Template& templ) const =0; - - /** - * \brief Go to the next pyramid level. - * - * \todo Allow pyramid scale factor other than 2 - */ - virtual void pyrDown() =0; - -protected: - /// Candidate feature with a score - struct Candidate - { - Candidate(int x, int y, int label, float score); - - /// Sort candidates with high score to the front - bool operator<(const Candidate& rhs) const - { - return score > rhs.score; - } - - Feature f; - float score; - }; - - /** - * \brief Choose candidate features so that they are not bunched together. - * - * \param[in] candidates Candidate features sorted by score. - * \param[out] features Destination vector of selected features. - * \param[in] num_features Number of candidates to select. - * \param[in] distance Hint for desired distance between features. - */ - static void selectScatteredFeatures(const std::vector& candidates, - std::vector& features, - size_t num_features, float distance); -}; - -inline QuantizedPyramid::Candidate::Candidate(int x, int y, int label, float _score) : f(x, y, label), score(_score) {} - -/** - * \brief Interface for modalities that plug into the LINE template matching representation. - * - * \todo Max response, to allow optimization of summing (255/MAX) features as uint8 - */ -class CV_EXPORTS Modality -{ -public: - // Virtual destructor - virtual ~Modality() {} - - /** - * \brief Form a quantized image pyramid from a source image. - * - * \param[in] src The source image. Type depends on the modality. - * \param[in] mask Optional mask. If not empty, unmasked pixels are set to zero - * in quantized image and cannot be extracted as features. - */ - Ptr process(const Mat& src, - const Mat& mask = Mat()) const - { - return processImpl(src, mask); - } - - virtual String name() const =0; - - virtual void read(const FileNode& fn) =0; - virtual void write(FileStorage& fs) const =0; - - /** - * \brief Create modality by name. - * - * The following modality types are supported: - * - "ColorGradient" - * - "DepthNormal" - */ - static Ptr create(const String& modality_type); - - /** - * \brief Load a modality from file. - */ - static Ptr create(const FileNode& fn); - -protected: - // Indirection is because process() has a default parameter. - virtual Ptr processImpl(const Mat& src, - const Mat& mask) const =0; -}; - -/** - * \brief Modality that computes quantized gradient orientations from a color image. - */ -class CV_EXPORTS ColorGradient : public Modality -{ -public: - /** - * \brief Default constructor. Uses reasonable default parameter values. - */ - ColorGradient(); - - /** - * \brief Constructor. - * - * \param weak_threshold When quantizing, discard gradients with magnitude less than this. - * \param num_features How many features a template must contain. - * \param strong_threshold Consider as candidate features only gradients whose norms are - * larger than this. - */ - ColorGradient(float weak_threshold, size_t num_features, float strong_threshold); - - virtual String name() const; - - virtual void read(const FileNode& fn); - virtual void write(FileStorage& fs) const; - - float weak_threshold; - size_t num_features; - float strong_threshold; - -protected: - virtual Ptr processImpl(const Mat& src, - const Mat& mask) const; -}; - -/** - * \brief Modality that computes quantized surface normals from a dense depth map. - */ -class CV_EXPORTS DepthNormal : public Modality -{ -public: - /** - * \brief Default constructor. Uses reasonable default parameter values. - */ - DepthNormal(); - - /** - * \brief Constructor. - * - * \param distance_threshold Ignore pixels beyond this distance. - * \param difference_threshold When computing normals, ignore contributions of pixels whose - * depth difference with the central pixel is above this threshold. - * \param num_features How many features a template must contain. - * \param extract_threshold Consider as candidate feature only if there are no differing - * orientations within a distance of extract_threshold. - */ - DepthNormal(int distance_threshold, int difference_threshold, size_t num_features, - int extract_threshold); - - virtual String name() const; - - virtual void read(const FileNode& fn); - virtual void write(FileStorage& fs) const; - - int distance_threshold; - int difference_threshold; - size_t num_features; - int extract_threshold; - -protected: - virtual Ptr processImpl(const Mat& src, - const Mat& mask) const; -}; - -/** - * \brief Debug function to colormap a quantized image for viewing. - */ -void colormap(const Mat& quantized, Mat& dst); - -/** - * \brief Represents a successful template match. - */ -struct CV_EXPORTS Match -{ - Match() - { - } - - Match(int x, int y, float similarity, const String& class_id, int template_id); - - /// Sort matches with high similarity to the front - bool operator<(const Match& rhs) const - { - // Secondarily sort on template_id for the sake of duplicate removal - if (similarity != rhs.similarity) - return similarity > rhs.similarity; - else - return template_id < rhs.template_id; - } - - bool operator==(const Match& rhs) const - { - return x == rhs.x && y == rhs.y && similarity == rhs.similarity && class_id == rhs.class_id; - } - - int x; - int y; - float similarity; - String class_id; - int template_id; -}; - -inline -Match::Match(int _x, int _y, float _similarity, const String& _class_id, int _template_id) - : x(_x), y(_y), similarity(_similarity), class_id(_class_id), template_id(_template_id) -{} - -/** - * \brief Object detector using the LINE template matching algorithm with any set of - * modalities. - */ -class CV_EXPORTS Detector -{ -public: - /** - * \brief Empty constructor, initialize with read(). - */ - Detector(); - - /** - * \brief Constructor. - * - * \param modalities Modalities to use (color gradients, depth normals, ...). - * \param T_pyramid Value of the sampling step T at each pyramid level. The - * number of pyramid levels is T_pyramid.size(). - */ - Detector(const std::vector< Ptr >& modalities, const std::vector& T_pyramid); - - /** - * \brief Detect objects by template matching. - * - * Matches globally at the lowest pyramid level, then refines locally stepping up the pyramid. - * - * \param sources Source images, one for each modality. - * \param threshold Similarity threshold, a percentage between 0 and 100. - * \param[out] matches Template matches, sorted by similarity score. - * \param class_ids If non-empty, only search for the desired object classes. - * \param[out] quantized_images Optionally return vector of quantized images. - * \param masks The masks for consideration during matching. The masks should be CV_8UC1 - * where 255 represents a valid pixel. If non-empty, the vector must be - * the same size as sources. Each element must be - * empty or the same size as its corresponding source. - */ - void match(const std::vector& sources, float threshold, std::vector& matches, - const std::vector& class_ids = std::vector(), - OutputArrayOfArrays quantized_images = noArray(), - const std::vector& masks = std::vector()) const; - - /** - * \brief Add new object template. - * - * \param sources Source images, one for each modality. - * \param class_id Object class ID. - * \param object_mask Mask separating object from background. - * \param[out] bounding_box Optionally return bounding box of the extracted features. - * - * \return Template ID, or -1 if failed to extract a valid template. - */ - int addTemplate(const std::vector& sources, const String& class_id, - const Mat& object_mask, Rect* bounding_box = NULL); - - /** - * \brief Add a new object template computed by external means. - */ - int addSyntheticTemplate(const std::vector